Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Address calculations in SC/MP still not working on page wrap #7

Open
ianrolfe opened this issue Jul 16, 2021 · 1 comment
Open

Address calculations in SC/MP still not working on page wrap #7

ianrolfe opened this issue Jul 16, 2021 · 1 comment

Comments

@ianrolfe
Copy link

I was pleased to see that you have made changes to the relative addressing on the SC/MP module, and I have been trying to re-assemble the MK14 SCIOS ROM from source.
I installed SBASM from sbasm-master.zip downloaded from here and the scios assembled without errors.
However,there seems to be a problem on negative offsets calculated from P3:

0052-                115        ;                          Tape Interface Routines.
0052-                116        ; ****************************************************************************
00D5-                117        Count   .EQ    0D5h
00D6-                118        Len     .EQ    0D6h
0052-                119        ; ****************************************************************************
0052-                120        ;                 Store to Tape. P1^Data,@Count is the bytes
0052-                121        ; ****************************************************************************
0052-C5 01           122 (  18) ToTape: ld      @1(1)                   ; E := (P1), increment P1
0054-01              123 (   7)         xae
0055-C4 01           124 (  10)         ldi     1                       ; A := 1 (the bit pattern)
0057-CB 00           125 (  18) Next1:  st      Count(3)                ; Save in Count (P3)
0059-C4 01           126 (  10)         ldi     1                       ; set F0 to 1
005B-07              127 (   6)         cas
005C-8F 08           128 ( 13+)         dly     8                       ; Delay 8 Cycles
005E-C3 00           129 (  18)         ld      Count(3)                ; A = Count & E
0060-50              130 (   6)         ane                             ; test if bit is set...
0061-98 07           131 (9/11)         jz      Zero
0063-8F 18           132 ( 13+)         dly     018h                    ; (bit is 1) Delay $18 cycles
0065-C4 00           133 (  10)         ldi     0                       ; set F0 to 0 again
0067-07              134 (   6)         cas
0068-90 05           135 (  11)         jmp     CDone
006A-C4 00           136 (  10) Zero:   ldi     0                       ; bit is zero (set F0 to 0)
006C-07              137 (   6)         cas
006D-8F 18           138 ( 13+)         dly     018h                    ; Delay $18 Cycles

The instruction "sta Count(3)" should generate CB D5 whereas it is generating CB 00.
I compared the output with a listing someone had done with TASM and verified that this was the case.
For your conveience I have attached the source for SCIOS in case it is useful.
scios.zip

@sbprojects
Copy link
Owner

sbprojects commented May 3, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants