OK, no i used the xroar trace to see what's happens:jedie wrote:Tried this:But gets strange behaviour in XRoar.Code: Select all
1010 DATA B6,50,00 ' LDA $5000 1020 DATA 8B,01 ' ADDA 1 1030 DATA 1F,A9 ' TFR CC,B 1040 DATA F7,50,01 ' STB $5001 1050 DATA B7,50,00 ' STA $5000 1060 DATA 39 ' RTS
Now i try to use STD
EDIT: It the 1030 DATA 1F,A9 ' TFR CC,B what brings XRoar into trouble. Maybe a but or my DATA code wrong?
Code: Select all
4000| b64500 LDA $4500 cc=a4 a=00 b=00 dp=00 x=4000 y=8497 u=0000 s=7f21
4003| 8b01 ADDA #$01 cc=80 a=01 b=00 dp=00 x=4000 y=8497 u=0000 s=7f21
4005| 1fa9 TFR CC,B cc=80 a=01 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4007| 0bfd DEC* <$fd cc=88 a=01 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4009| 45 LSRA* cc=85 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
400a| 0039 NEG <$39 cc=89 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
400c| 0000 NEG <$00 cc=89 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
400e| 0000 NEG <$00 cc=81 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4010| ffffff STU $ffff cc=85 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4013| ff0000 STU $0000 cc=85 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4016| 0000 NEG <$00 cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4018| ffffff STU $ffff cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
401b| ff0000 STU $0000 cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
401e| 0000 NEG <$00 cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4020| ffffff STU $ffff cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4023| ff0000 STU $0000 cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4026| 0000 NEG <$00 cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4028| ffffff STU $ffff cc=84 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
The last STU, STU, NEG is a never ending loop.
It's a inserted 0b that's brings everything out of sync:
I added a test output in the machine loader part:4005| 1fa9 TFR CC,B cc=80 a=01 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4007| 0bfd DEC* <$fd cc=88 a=01 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
4009| 45 LSRA* cc=85 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
400a| 0039 NEG <$39 cc=89 a=00 b=80 dp=00 x=4000 y=8497 u=0000 s=7f21
Code: Select all
65 V=VAL("&H"+HB$)
70 POKE PA,V ' POKE VALUE INTO MEMORY
75 PRINT "POKE $";HEX$(V);" AT $";HEX$(PA)
80 PA = PA + 1 ' INCREMENT POKE ADDRESS
The complete .bas:
Code: Select all
10 ' TEST CC REGISTERS
20 LA=&H4000 ' LOAD / EXECUTE ADDRESS
25 PRINT "POKE MACHINE CODE TO: $";HEX$(LA)
30 PA = LA ' START ADDRESS FOR POKE
50 READ HB$ ' HEX CONSTANTS
60 IF HB$="END" THEN 100
65 V=VAL("&H"+HB$)
70 POKE PA,V ' POKE VALUE INTO MEMORY
75 PRINT "POKE $";HEX$(V);" AT $";HEX$(PA)
80 PA = PA + 1 ' INCREMENT POKE ADDRESS
90 GOTO 50
100 PRINT "LOADED, END ADDRESS IS: $"; HEX$(PA-1)
110 PRINT
120 INPUT "INPUT 'A' VALUE (DEZ)";A
130 POKE &H4500,A ' SET START VALUE
150 PRINT "A=";A;" VALUE FROM $4500: ";PEEK(&H4500)
160 FOR I = 1 TO 14
170 EXEC LA
180 CC=PEEK(&H4501)
190 PRINT "A=";PEEK(&H4500);" CC=$";HEX$(CC)
200 NEXT I
500 GOTO 120
1000 ' MACHINE CODE IN HEX
1010 DATA B6,45,00 ' LDA $4500
1020 DATA 8B,01 ' ADDA 1
1030 DATA 1F,A9 ' TFR CC,B
1040 DATA FD,45,00 ' STD $4500 ; STORE A+B
1060 DATA 39 ' RTS
10000 DATA END