[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Need a really good ram unit test program



With a few extra lines of code, I was able to log an active session of Prince of Persia and spit out the last successful 100 lines of code run before a BRK software interrupt occurred.  At first, the handling of the interrupt looks OK.  But it becomes very obvious right away that the RTI is not going where it is supposed to go.  So either the BRK is supposed to reset softswitches or I didn't implement the RTI for BRK correctly.  The last two lines BBR1 and ??? are both indicative of opcodes not supported in the 65SC02 used in a //e.

Also, d83c: JMP $00b1 looks really suspicious too.  Jordan used the aux zero page for variables, and I know that $b1 was an unlikely spot for code to exist.  Did I just grab a lousy cracked copy of this game or something??

 A  X  Y  SP    Status   PC    Disassembly
15 FF 09 01E9 N.R..I.C  59f3 : LDA $4b
12 FF 09 01E9 ..R..I.C  59f5 : STA $a6
12 FF 09 01E9 ..R..I.C  59f7 : LDA $63
56 FF 09 01E9 ..R..I.C  59f9 : CMP #$56
56 FF 09 01E9 ..R..IZC  59fb : BEQ $59df
56 FF 09 01E9 ..R..IZC  59df : RTS 
56 FF 09 01EB ..R..IZC  226f : JSR $24d3
56 FF 09 01E9 ..R..IZC  24d3 : LDA $a6
12 FF 09 01E9 ..R..I.C  24d5 : BEQ $24d2
12 FF 09 01E9 ..R..I.C  24d7 : CMP $cb
12 FF 09 01E9 ..R..I.C  24d9 : BEQ $24d2
12 FF 09 01E9 ..R..I.C  24db : LDA $a6
12 FF 09 01E9 ..R..I.C  24dd : STA $cb
12 FF 09 01E9 ..R..I.C  24df : CMP #$05
12 FF 09 01E9 ..R..I.C  24e1 : BNE $24ed
12 FF 09 01E9 ..R..I.C  24ed : LDA #$01
01 FF 09 01E9 ..R..I.C  24ef : STA $a3
01 FF 09 01E9 ..R..I.C  24f1 : JSR $d02a
01 FF 09 01E7 ..R..I.C  d02a : JMP $d174
01 FF 09 01E7 ..R..I.C  d174 : LDA $cb
12 FF 09 01E7 ..R..I.C  d176 : JSR $d150
12 FF 09 01E5 ..R..I.C  d150 : BEQ $d14f
12 FF 09 01E5 ..R..I.C  d152 : ASL_A 
24 FF 09 01E5 ..R..I..  d153 : ASL_A 
48 FF 09 01E5 ..R..I..  d154 : TAX 
48 48 09 01E5 ..R..I..  d155 : LDA $be9c,X
0E 48 09 01E5 ..R..I..  d158 : RTS 
0E 48 09 01E7 ..R..I..  d179 : STA $31
0E 48 09 01E7 ..R..I..  d17b : LDA $cb
12 48 09 01E7 ..R..I..  d17d : JSR $d159
12 48 09 01E5 ..R..I..  d159 : BEQ $d158
12 48 09 01E5 ..R..I..  d15b : ASL_A 
24 48 09 01E5 ..R..I..  d15c : ASL_A 
48 48 09 01E5 ..R..I..  d15d : TAX 
48 48 09 01E5 ..R..I..  d15e : LDA $be9d,X
00 48 09 01E5 ..R..IZ.  d161 : RTS 
00 48 09 01E7 ..R..IZ.  d180 : STA $32
00 48 09 01E7 ..R..IZ.  d182 : LDA $cb
12 48 09 01E7 ..R..I..  d184 : JSR $d162
12 48 09 01E5 ..R..I..  d162 : BEQ $d158
12 48 09 01E5 ..R..I..  d164 : ASL_A 
24 48 09 01E5 ..R..I..  d165 : ASL_A 
48 48 09 01E5 ..R..I..  d166 : TAX 
48 48 09 01E5 ..R..I..  d167 : LDA $be9e,X
0F 48 09 01E5 ..R..I..  d16a : RTS 
0F 48 09 01E7 ..R..I..  d187 : STA $33
0F 48 09 01E7 ..R..I..  d189 : LDA $cb
12 48 09 01E7 ..R..I..  d18b : JSR $d16b
12 48 09 01E5 ..R..I..  d16b : BEQ $d158
12 48 09 01E5 ..R..I..  d16d : ASL_A 
24 48 09 01E5 ..R..I..  d16e : ASL_A 
48 48 09 01E5 ..R..I..  d16f : TAX 
48 48 09 01E5 ..R..I..  d170 : LDA $be9f,X
11 48 09 01E5 ..R..I..  d173 : RTS 
11 48 09 01E7 ..R..I..  d18e : STA $34
11 48 09 01E7 ..R..I..  d190 : LDA $34
11 48 09 01E7 ..R..I..  d192 : JSR $d150
11 48 09 01E5 ..R..I..  d150 : BEQ $d14f
11 48 09 01E5 ..R..I..  d152 : ASL_A 
22 48 09 01E5 ..R..I..  d153 : ASL_A 
44 48 09 01E5 ..R..I..  d154 : TAX 
44 44 09 01E5 ..R..I..  d155 : LDA $be9c,X
0D 44 09 01E5 ..R..I..  d158 : RTS 
0D 44 09 01E7 ..R..I..  d195 : STA $35
0D 44 09 01E7 ..R..I..  d197 : LDA $34
11 44 09 01E7 ..R..I..  d199 : JSR $d159
11 44 09 01E5 ..R..I..  d159 : BEQ $d158
11 44 09 01E5 ..R..I..  d15b : ASL_A 
22 44 09 01E5 ..R..I..  d15c : ASL_A 
44 44 09 01E5 ..R..I..  d15d : TAX 
44 44 09 01E5 ..R..I..  d15e : LDA $be9d,X
00 44 09 01E5 ..R..IZ.  d161 : RTS 
00 44 09 01E7 ..R..IZ.  d19c : STA $38
00 44 09 01E7 ..R..IZ.  d19e : LDA $33
0F 44 09 01E7 ..R..I..  d1a0 : JSR $d150
0F 44 09 01E5 ..R..I..  d150 : BEQ $d14f
0F 44 09 01E5 ..R..I..  d152 : ASL_A 
1E 44 09 01E5 ..R..I..  d153 : ASL_A 
3C 44 09 01E5 ..R..I..  d154 : TAX 
3C 3C 09 01E5 ..R..I..  d155 : LDA $be9c,X
00 3C 09 01E5 ..R..IZ.  d158 : RTS 
00 3C 09 01E7 ..R..IZ.  d1a3 : STA $36
00 3C 09 01E7 ..R..IZ.  d1a5 : LDA $33
0F 3C 09 01E7 ..R..I..  d1a7 : JSR $d159
0F 3C 09 01E5 ..R..I..  d159 : BEQ $d158
0F 3C 09 01E5 ..R..I..  d15b : ASL_A 
1E 3C 09 01E5 ..R..I..  d15c : ASL_A 
3C 3C 09 01E5 ..R..I..  d15d : TAX 
3C 3C 09 01E5 ..R..I..  d15e : LDA $be9d,X
10 3C 09 01E5 ..R..I..  d161 : RTS 
10 3C 09 01E7 ..R..I..  d1aa : STA $37
10 3C 09 01E7 ..R..I..  d1ac : RTS 
10 3C 09 01E9 ..R..I..  24f4 : JSR $d05a
10 3C 09 01E7 ..R..I..  d05a : JMP $d835
10 3C 09 01E7 ..R..I..  d835 : LDX #$0f
10 0F 09 01E7 ..R..I..  d837 : LDA $50,X
FF 0F 09 01E7 N.R..I..  d839 : STA $40,X
FF 0F 09 01E7 N.R..I..  d83b : DEX 
FF 0E 09 01E7 ..R..I..  d83c : JMP $00b1
FF 0E 09 01E7 ..R..I..  b1 : BRK #$00
--------------------------------------------------------
Interrupt generated, setting PC to (fffe) = 4f0
FF 0E 09 01E4 ..RB....  4f0 : JMP $0d31
FF 0E 09 01E4 ..RB....  d31 : BIT $c019
FF 0E 09 01E4 N.RB....  d34 : STA $c079
FF 0E 09 01E4 N.RB....  d37 : STA $c05b
FF 0E 09 01E4 N.RB....  d3a : STA $c078
FF 0E 09 01E4 N.RB....  d3d : SEC 
FF 0E 09 01E4 N.RB...C  d3e : ROR $0d12
FF 0E 09 01E4 N.RB....  d41 : RTI 
FF 0E 09 01E7 ..RB....  b3 : BRK #$0e
--------------------------------------------------------
Interrupt generated, setting PC to (fffe) = 4f0
FF 0E 09 01E4 ..RB....  4f0 : JMP $0d31
FF 0E 09 01E4 ..RB....  d31 : BIT $c019
FF 0E 09 01E4 N.RB....  d34 : STA $c079
FF 0E 09 01E4 N.RB....  d37 : STA $c05b
FF 0E 09 01E4 N.RB....  d3a : STA $c078
FF 0E 09 01E4 N.RB....  d3d : SEC 
FF 0E 09 01E4 N.RB...C  d3e : ROR $0d12
FF 0E 09 01E4 N.RB....  d41 : RTI
FF 0E 09 01E7 ..RB....  b5 : BBR1 $00,$R
FF 0E 09 01E7 ..RB....  b7 : ???