2025-07-08 19:13:35 +08:00
.syntax unified
.cpu cortex- m 4
.fpu softvfp
.thumb
.include " 6 5 0 2 mac_ g c c . S "
.extern NES_RAM
.extern NES_SRAM
.extern spr_ram
.extern debug_6502 / / <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
.global cpunmi / / cpu<EFBFBD> ж ϱ <EFBFBD> ־
.global cpuirq / / cpu<EFBFBD> ж ϱ <EFBFBD> ־
.global clocks / / apuҪ <EFBFBD> <EFBFBD> c p u ʱ <EFBFBD> <EFBFBD>
.global cpu_data / / <EFBFBD> <EFBFBD> ַ cart. s
.global NMI6502
.global CPU_reset
.global run6502
.global op_table
.equ IRQ_ V E C T O R , 0 x f f f e / / I R Q / B R K <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
.equ RES_ V E C T O R , 0 x f f f c / / <EFBFBD> <EFBFBD> λ <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
.equ NMI_ V E C T O R , 0 x f f f a / / N M I <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
.section .text
/ / BRK
_00 :
ldr r0 ,[ g l o b a l p t r ,#l a s t b a n k ] / / 6502 P C <EFBFBD> <EFBFBD> R O M <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
sub r1 ,m 6 5 0 2 _ p c ,r0
add r0 ,r1 ,#1
push1 6 / / s a v e P C
encodeP ( B + R ) / / s a v e P
ldr r12 ,=IRQ_VECTOR
bl V e c C o n t
fetch 7
@ LTORG // <20> ѳ<EFBFBD> <D1B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_01 : / / ORA ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opORA
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_05 : / / ORA $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opORA
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_06 : / / ASL $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opASL
fetch_ c 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_08 : / / PHP
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
encodeP ( B + R )
push8 r0
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_09 : / / ORA #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opORA
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_0A : / / ASL
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adds m 6 5 0 2 _ a ,m 6 5 0 2 _ a ,m 6 5 0 2 _ a
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ a ,a s r #24 / / N Z
orr c y c l e s ,c y c l e s ,#C Y C _ C / / P r e p a r e C
fetch_ c 2 / / a l s o s u b s c a r r y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_0D : / / ORA $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opORA
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_0E : / / ASL $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opASL
fetch_ c 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_10 : / / BPL *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst m 6 5 0 2 _ n z ,#0x80000000
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT E Q
2025-07-08 19:13:35 +08:00
addeq m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subeq c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_11 : / / ORA ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opORA
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_15 : / / ORA $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opORA
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_16 : / / ASL $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opASL
fetch_ c 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_18 : / / CLC
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bic c y c l e s ,c y c l e s ,#C Y C _ C
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_19 : / / ORA $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opORA
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_1D : / / ORA $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opORA
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_1E : / / ASL $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opASL
fetch_ c 7
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_20 : / / JSR $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ldrb r2 ,[ m 6 5 0 2 _ p c ] ,#1
ldr r1 ,[ g l o b a l p t r ,#l a s t b a n k ]
sub r0 ,m 6 5 0 2 _ p c ,r1
ldrb r1 ,[ m 6 5 0 2 _ p c ]
orr m 6 5 0 2 _ p c ,r2 ,r1 ,l s l #8
push1 6
encodePC
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_21 : / / AND ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opAND
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_24 : / / BIT $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opBIT
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_25 : / / AND $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opAND
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_26 : / / ROL $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opROL
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_28 : / / PLP
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pop8 r0
decodeP
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_29 : / / AND #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opAND
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_2A : / / ROL
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
movs c y c l e s ,c y c l e s ,l s r #1 / / g e t C
IT C S
orrcs m 6 5 0 2 _ a ,m 6 5 0 2 _ a ,#0x00800000
adds m 6 5 0 2 _ a ,m 6 5 0 2 _ a ,m 6 5 0 2 _ a
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ a ,a s r #24 / / N Z
adc c y c l e s ,c y c l e s ,c y c l e s / / S e t C
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_2C : / / BIT $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opBIT
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_2D : / / AND $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opAND
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_2E : / / ROL $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opROL
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_30 : / / BMI *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst m 6 5 0 2 _ n z ,#0x80000000
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT N E
2025-07-08 19:13:35 +08:00
addne m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subne c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_31 : / / AND ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opAND
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_35 : / / AND $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opAND
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_36 : / / ROL $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opROL
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_38 : / / SEC
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
orr c y c l e s ,c y c l e s ,#C Y C _ C
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_39 : / / AND $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opAND
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_3D : / / AND $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opAND
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_3E : / / ROL $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opROL
fetch 7
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_40 : / / RTI
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pop8 r0 / / p o p 6 5 0 2 f l a g s a n d d e c o d e
decodeP
pop1 6 / / p o p t h e r e t u r n a d d r e s s
encodePC
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_41 : / / EOR ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opEOR
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_45 : / / EOR $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opEOR
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_46 : / / LSR $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opLSR
fetch_ c 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_48 : / / PHA
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mov r0 ,m 6 5 0 2 _ a ,l s r #24
push8 r0
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_49 : / / EOR #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opEOR
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_4A : / / LSR
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
movs m 6 5 0 2 _ n z ,m 6 5 0 2 _ a ,l s r #25 / / Z , N =0
mov m 6 5 0 2 _ a ,m 6 5 0 2 _ n z ,l s l #24 / / r e s u l t w i t h o u t g a r b a g e
orr c y c l e s ,c y c l e s ,#C Y C _ C / / P r e p a r e C
fetch_ c 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_4C : / / JMP $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ldrb r0 ,[ m 6 5 0 2 _ p c ] ,#1
ldrb r1 ,[ m 6 5 0 2 _ p c ]
orr m 6 5 0 2 _ p c ,r0 ,r1 ,l s l #8
encodePC
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_4D : / / EOR $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opEOR
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_4E : / / LSR $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opLSR
fetch_ c 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_50 : / / BVC *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst c y c l e s ,#C Y C _ V
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT E Q
2025-07-08 19:13:35 +08:00
addeq m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subeq c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_51 : / / EOR ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opEOR
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_55 : / / EOR $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opEOR
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_56 : / / LSR $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opLSR
fetch_ c 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_58 : / / CLI
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bic c y c l e s ,c y c l e s ,#C Y C _ I
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_59 : / / EOR $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opEOR
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_5D : / / EOR $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opEOR
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_5E : / / LSR $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opLSR
fetch_ c 7
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_60 : / / RTS
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pop1 6
add m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,#1
encodePC
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_61 : / / ADC ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opADC
fetch_ c 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_65 : / / ADC $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opADC
fetch_ c 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_66 : / / ROR $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opROR
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_68 : / / PLA
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pop8 m 6 5 0 2 _ n z
mov m 6 5 0 2 _ a ,m 6 5 0 2 _ n z ,l s l #24
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_69 : / / ADC #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opADC
fetch_ c 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_6A : / / ROR
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
movs c y c l e s ,c y c l e s ,l s r #1 / / g e t C
mov m 6 5 0 2 _ a ,m 6 5 0 2 _ a ,r r x
movs m 6 5 0 2 _ n z ,m 6 5 0 2 _ a ,a s r #24 / / N Z
and m 6 5 0 2 _ a ,m 6 5 0 2 _ a ,#0xff000000
adc c y c l e s ,c y c l e s ,c y c l e s / / S e t C
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_6C : / / JMP ( $ n n n n ) J M P ( $ d a t a16 ) <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ѱ ַ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
2025-07-09 00:55:12 +08:00
add r1 , g l o b a l p t r ,#m e m m a p _ t b l
2025-07-08 19:13:35 +08:00
and r2 ,a d d y ,#0xE000 / /
/ / ldr r1 ,[ r1 ,r2 ,l s r #11 ] / / > > 1 1 a d d r & 0 x7 F F
lsr r0 ,r2 ,#11
ldr r1 ,[ r1 ,r0 ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݴ <EFBFBD> <EFBFBD> <EFBFBD> ֮ ǰ ,<EFBFBD> <EFBFBD> ƫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӵ <EFBFBD> R n <EFBFBD> <EFBFBD> ,<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݵ Ĵ 洢 <EFBFBD> <EFBFBD> ַ
ldrb m 6 5 0 2 _ p c ,[ r1 ,a d d y ] / / / / <EFBFBD> <EFBFBD> ʹ <EFBFBD> ú <EFBFBD> " ! " ,<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> д <EFBFBD> ص <EFBFBD> R n <EFBFBD> <EFBFBD>
add r1 ,r1 ,a d d y
ldrb r0 ,[ r1 ,#1 ]
orr m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0 ,l s l #8 / / m 6 5 0 2 _ p c =r9ʹ <EFBFBD> <EFBFBD> O R R ָ <EFBFBD> <EFBFBD> <EFBFBD> R 9 <EFBFBD> ĸ <EFBFBD> 8 λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 뵽 R 0 <EFBFBD> <EFBFBD> 8 λ
encodePC
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_6D : / / ADC $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opADC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_6E : / / ROR $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opROR
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_70 : / / BVS *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst c y c l e s ,#C Y C _ V
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT N E
2025-07-08 19:13:35 +08:00
addne m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subne c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_71 : / / ADC ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opADC
fetch_ c 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_75 : / / ADC $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opADC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_76 : / / ROR $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opROR
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_78 : / / SEI
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
orr c y c l e s ,c y c l e s ,#C Y C _ I
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_79 : / / ADC $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opADC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_7D : / / ADC $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opADC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_7E : / / ROR $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opROR
fetch 7
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_81 : / / STA ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opSTORE m 6 5 0 2 _ a
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_84 : / / STY $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opSTORE m 6 5 0 2 _ y
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_85 : / / STA $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opSTORE m 6 5 0 2 _ a
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_86 : / / STX $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opSTORE m 6 5 0 2 _ x
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_88 : / / DEY
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sub m 6 5 0 2 _ y ,m 6 5 0 2 _ y ,#0x01000000
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ y ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_8A : / / TXA
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mov m 6 5 0 2 _ a ,m 6 5 0 2 _ x
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ x ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_8C : / / STY $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opSTORE m 6 5 0 2 _ y
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_8D : / / STA $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opSTORE m 6 5 0 2 _ a
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_8E : / / STX $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opSTORE m 6 5 0 2 _ x
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_90 : / / BCC *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst c y c l e s ,#C Y C _ C / / T e s t C a r r y
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT E Q
2025-07-08 19:13:35 +08:00
addeq m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subeq c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_91 : / / STA ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opSTORE m 6 5 0 2 _ a
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_94 : / / STY $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opSTORE m 6 5 0 2 _ y
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_95 : / / STA $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opSTORE m 6 5 0 2 _ a
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_96 : / / STX $ n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIYf
opSTORE m 6 5 0 2 _ x
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_98 : / / TYA
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mov m 6 5 0 2 _ a ,m 6 5 0 2 _ y
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ y ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_99 : / / STA $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opSTORE m 6 5 0 2 _ a
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_9A : / / TXS
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mov r0 ,m 6 5 0 2 _ x ,l s r #24
strb r0 ,[ g l o b a l p t r ,#m 6502 _ s ]
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_9D : / / STA $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opSTORE m 6 5 0 2 _ a
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A0 : / / LDY #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opLOAD m 6 5 0 2 _ y
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A1 : / / LDA ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opLOAD m 6 5 0 2 _ a
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A2 : / / LDX #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opLOAD m 6 5 0 2 _ x
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A4 : / / LDY $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opLOAD m 6 5 0 2 _ y
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A5 : / / LDA $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opLOAD m 6 5 0 2 _ a
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A6 : / / LDX $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opLOAD m 6 5 0 2 _ x
fetch 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A8 : / / TAY
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mov m 6 5 0 2 _ y ,m 6 5 0 2 _ a
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ y ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_A9 : / / LDA #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opLOAD m 6 5 0 2 _ a
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_AA : / / TAX
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mov m 6 5 0 2 _ x ,m 6 5 0 2 _ a
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ x ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_AC : / / LDY $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opLOAD m 6 5 0 2 _ y
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_AD : / / LDA $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opLOAD m 6 5 0 2 _ a
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_AE : / / LDX $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opLOAD m 6 5 0 2 _ x
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_B0 : / / BCS *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst c y c l e s ,#C Y C _ C / / T e s t C a r r y
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT N E
2025-07-08 19:13:35 +08:00
addne m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subne c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_B1 : / / LDA ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opLOAD m 6 5 0 2 _ a
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_B4 : / / LDY $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIX
opLOAD m 6 5 0 2 _ y
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_B5 : / / LDA $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIX
opLOAD m 6 5 0 2 _ a
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_B6 : / / LDX $ n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIY
opLOAD m 6 5 0 2 _ x
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_B8 : / / CLV
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bic c y c l e s ,c y c l e s ,#C Y C _ V
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_B9 : / / LDA $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opLOAD m 6 5 0 2 _ a
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_BA : / / TSX
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ldrb m 6 5 0 2 _ x ,[ g l o b a l p t r ,#m 6502 _ s ]
mov m 6 5 0 2 _ x ,m 6 5 0 2 _ x ,l s l #24
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ x ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_BC : / / LDY $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opLOAD m 6 5 0 2 _ y
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_BD : / / LDA $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opLOAD m 6 5 0 2 _ a
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_BE : / / LDX $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opLOAD m 6 5 0 2 _ x
fetch 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_C0 : / / CPY #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opCOMP m 6 5 0 2 _ y
fetch_ c 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_C1 : / / CMP ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opCOMP m 6 5 0 2 _ a
fetch_ c 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_C4 : / / CPY $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opCOMP m 6 5 0 2 _ y
fetch_ c 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_C5 : / / CMP $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opCOMP m 6 5 0 2 _ a
fetch_ c 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_C6 : / / DEC $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opDEC
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_C8 : / / INY
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
add m 6 5 0 2 _ y ,m 6 5 0 2 _ y ,#0x01000000
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ y ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_C9 : / / CMP #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opCOMP m 6 5 0 2 _ a
fetch_ c 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_CA : / / DEX
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sub m 6 5 0 2 _ x ,m 6 5 0 2 _ x ,#0x01000000
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ x ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_CC : / / CPY $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opCOMP m 6 5 0 2 _ y
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_CD : / / CMP $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opCOMP m 6 5 0 2 _ a
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_CE : / / DEC $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opDEC
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_D0 : / / BNE *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst m 6 5 0 2 _ n z ,#0xff
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT N E
2025-07-08 19:13:35 +08:00
addne m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subne c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_D1 : / / CMP ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opCOMP m 6 5 0 2 _ a
fetch_ c 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_D5 : / / CMP $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opCOMP m 6 5 0 2 _ a
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_D6 : / / DEC $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opDEC
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_D8 : / / CLD
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bic c y c l e s ,c y c l e s ,#C Y C _ D
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_D9 : / / CMP $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opCOMP m 6 5 0 2 _ a
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_DD : / / CMP $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opCOMP m 6 5 0 2 _ a
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_DE : / / DEC $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opDEC
fetch 7
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_E0 : / / CPX #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opCOMP m 6 5 0 2 _ x
fetch_ c 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_E1 : / / SBC ( $ n n ,X )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX
opSBC
fetch_ c 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_E4 : / / CPX $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opCOMP m 6 5 0 2 _ x
fetch_ c 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_E5 : / / SBC $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opSBC
fetch_ c 3
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_E6 : / / INC $ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ
opINC
fetch 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_E8 : / / INX
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
add m 6 5 0 2 _ x ,m 6 5 0 2 _ x ,#0x01000000
mov m 6 5 0 2 _ n z ,m 6 5 0 2 _ x ,a s r #24
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_E9 : / / SBC #$ n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIMM
opSBC
fetch_ c 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_EA : / / NOP
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_EC : / / CPX $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opCOMP m 6 5 0 2 _ x
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_ED : / / SBC $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opSBC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_EE : / / INC $ n n n n
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doABS
opINC
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_F0 : / / BEQ *
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tst m 6 5 0 2 _ n z ,#0xff
ldrsb r0 ,[ m 6 5 0 2 _ p c ] ,#1
2025-07-09 00:55:12 +08:00
ITT E Q
2025-07-08 19:13:35 +08:00
addeq m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r0
subeq c y c l e s ,c y c l e s ,#256
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_F1 : / / SBC ( $ n n ) ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIY
opSBC
fetch_ c 5
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_F5 : / / SBC $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opSBC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_F6 : / / INC $ n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZIXf
opINC
fetch 6
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_F8 : / / SED
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
orr c y c l e s ,c y c l e s ,#C Y C _ D
fetch 2
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_F9 : / / SBC $ n n n n ,Y
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY
opSBC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FD : / / SBC $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opSBC
fetch_ c 4
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FE : / / INC $ n n n n ,X
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX
opINC
fetch 7
/ / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ Щ HACK<EFBFBD> <EFBFBD> Ϸ <EFBFBD> <EFBFBD> Ҫ * * * * * * * * * * * * * * * * * *
_FF : / / ISB $ ? ? ? ? ,X <EFBFBD> ӵ ģ <EFBFBD> <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߴ <EFBFBD> 2 <EFBFBD> <EFBFBD> H A C K <EFBFBD> <EFBFBD> Ҫ
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIX / / M R _ A X ( ) / /
opSBC / / I S B ( ) / /
/ / MW_ E A ( ) / / #d e f i n e M W _ E A ( ) W R 6502 ( E A ,D T ) / / E A . . . . E F F E C T I V E A D D R E S S
fetch 5 / / A D D _ C Y C L E ( 5 ) / / / / D T . . . . D A T A
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FB : / / ISB $ ? ? ? ? ,X <EFBFBD> ӵ ģ <EFBFBD> <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߴ <EFBFBD> 2 <EFBFBD> <EFBFBD> H A C K <EFBFBD> <EFBFBD> Ҫ
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doAIY / / M R _ A Y ( ) / /
opSBC / / I S B ( ) / /
/ / MW_ E A ( ) / /
fetch 5 / / A D D _ C Y C L E ( 5 ) / /
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_14 : / / <EFBFBD> ӵ ģ <EFBFBD> <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߴ <EFBFBD> 2 <EFBFBD> <EFBFBD> HACK<EFBFBD> <EFBFBD> Ҫ
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
add m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,#1 / / R . P C + + / /
fetch 4 / / A D D _ C Y C L E ( 4 ) / /
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_67 : / / / / RRA $ ? ? <EFBFBD> ۹ <EFBFBD> ս <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> H A C K <EFBFBD> <EFBFBD> Ҫ
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ / / M R _ Z P ( ) / /
opADC / / R R A ( ) / /
/ / MW_ Z P ( ) / /
fetch 5 / / A D D _ C Y C L E ( 5 ) / /
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_03 : / / / / SLO ( $ ? ? ,X ) <EFBFBD> ۹ <EFBFBD> ս <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> H A C K <EFBFBD> <EFBFBD> Ҫ
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doIIX / / M R _ I X ( ) / /
/ / SLO( ) / /
/ / MW_ E A ( ) / /
fetch 8 / / / / A D D _ C Y C L E ( 8 ) / /
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_07 : / / / / SLO $ ? ?
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
doZ / / M R _ Z P ( ) / /
/ / SLO( ) / /
/ / MW_ Z P ( ) / /
fetch 5 / / A D D _ C Y C L E ( 5 ) / /
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_xx : / / ? ? ? / / invalid o p c o d e <EFBFBD> <EFBFBD> Ч <EFBFBD> IJ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mov r1 ,#1 / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> d e b u g <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֱ <EFBFBD> <EFBFBD> ע <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bl d e b u g _ 6 5 0 2
fetch 2
@ .thumb_func
run6502 :
stmfd s p ! ,{ r4 - r11 ,l r } / / <EFBFBD> <EFBFBD> <EFBFBD> ⼸ <EFBFBD> <EFBFBD> <EFBFBD> Ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> 浽 <EFBFBD> <EFBFBD> ջ <EFBFBD> <EFBFBD>
ldr g l o b a l p t r ,=cpu_data / / r10 w r a m _ g l o b a l s : <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> ַ
ldr c p u _ z p a g e ,=NES_RAM / / r11
ldr c p u _ z p a g e ,[ c p u _ z p a g e ] / / N E S _ R A M <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
2025-07-09 00:55:12 +08:00
add r1 , g l o b a l p t r ,#c p u r e g s
2025-07-08 19:13:35 +08:00
ldmia r1 ,{ m 6 5 0 2 _ n z - m 6 5 0 2 _ p c } / / r e s t o r e 6 5 0 2 s t a t e <EFBFBD> ָ <EFBFBD> 6 5 0 2 ״ ̬ r3 - r9
add c y c l e s ,c y c l e s ,r0
ldrb r0 ,[ g l o b a l p t r ,#c p u i r q f ] / / c p u <EFBFBD> ж ϱ <EFBFBD> ־
cmp r0 ,#0x01
beq C h e c k I / / E Q <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( E Q u a l ) i r q65 0 2 ;
fetch 0 / / <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 벢 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
exit_run :
ldrb r0 ,[ g l o b a l p t r ,#c p u n m i f ] / / c p u <EFBFBD> ж ϱ <EFBFBD> ־
cmp r0 ,#0x01 ;
beq N M I 6 5 0 2 / / E Q <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( E Q u a l )
exit_nmi :
2025-07-09 00:55:12 +08:00
add r0 , g l o b a l p t r ,#c p u r e g s
2025-07-08 19:13:35 +08:00
stmia r0 ,{ m 6 5 0 2 _ n z - m 6 5 0 2 _ p c } / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 6 5 0 2 ״ ̬ r3 - r9
ldmfd s p ! ,{ r4 - r11 ,p c } / / e x i t
@ .end
@ .thumb_func
NMI6502 :
mov r0 ,#0
str r0 ,[ g l o b a l p t r ,#c p u n m i f ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> c p u <EFBFBD> ж ϱ <EFBFBD> ־
ldr r12 ,=NMI_VECTOR / / N M I ? a d d y
bl V e c65 0 2
sub c y c l e s ,c y c l e s ,#7 * 2 5 6 / / C Y C L E =256 6 5 0 2 <EFBFBD> <EFBFBD> <EFBFBD> ж <EFBFBD> DZ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> ( 7 ) <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
/ / <EFBFBD> <EFBFBD> ; <20> <> Ҳ<EFBFBD> <D2B2> <EFBFBD> <EFBFBD> ˵<EFBFBD> <CBB5> Ҫ<EFBFBD> <D2AA> Ҫ<EFBFBD> <D2AA> (7) <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƴ<EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> ж<EFBFBD>
b e x i t _ n m i / / r e t u r n
@ .end
default_scanlinehook :
fetch 0
CheckI :
/ / Check I n t e r r u p t D i s a b l e <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ж Ͻ <EFBFBD> <EFBFBD> <EFBFBD>
tst c y c l e s ,#C Y C _ I
bne d e f a u l t _ s c a n l i n e h o o k / / w e d o n t w a n t n o s t i n k i n i r q s <EFBFBD> <EFBFBD> <EFBFBD> Dz <EFBFBD> <EFBFBD> <EFBFBD> Ҫ û <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> I R Q
irq6502 :
mov r0 ,#0
str r0 ,[ g l o b a l p t r ,#c p u i r q f ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> c p u <EFBFBD> ж ϱ <EFBFBD> ־
ldr r12 ,=IRQ_VECTOR
bl V e c65 0 2
fetch 7
Vec6502 :
ldr r0 ,[ g l o b a l p t r ,l a s t b a n k ]
sub r0 ,m 6 5 0 2 _ p c ,r0
push1 6 / / s a v e P C
encodeP ( R ) / / s a v e P
VecCont :
push8 r0
orr c y c l e s ,c y c l e s ,#C Y C _ I / / d i s a b l e I R Q <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> I R Q
ldr r0 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 28 ] / / 7 * 4
/ / ldrb m 6 5 0 2 _ p c ,[ r0 ,r12 ] !
ldrb m 6 5 0 2 _ p c ,[ r0 ,r12 ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݴ <EFBFBD> <EFBFBD> <EFBFBD> ֮ ǰ ,<EFBFBD> <EFBFBD> ƫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӵ <EFBFBD> R n <EFBFBD> <EFBFBD> ,<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݵ Ĵ 洢 <EFBFBD> <EFBFBD> ַ
/ / <EFBFBD> <EFBFBD> ʹ <EFBFBD> ú <EFBFBD> " ! " , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> д <EFBFBD> ص <EFBFBD> Rn<EFBFBD> <EFBFBD>
add r0 ,r0 ,r12 / / R 1 2 =0xfffc <EFBFBD> <EFBFBD> λ <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
ldrb r2 ,[ r0 ,#1 ]
orr m 6 5 0 2 _ p c ,m 6 5 0 2 _ p c ,r2 ,l s l #8
encodePC / / g e t I R Q v e c t o r <EFBFBD> õ <EFBFBD> 6 5 0 2 P C R O M <EFBFBD> <EFBFBD> ƫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bx l r
@ .thumb_func
CPU_reset : / / called b y l o a d c a r t ( r0 - r9 a r e f r e e t o u s e )
str l r ,[ s p ,#- 4 ] !
mov m 6 5 0 2 _ a ,#0
mov m 6 5 0 2 _ x ,#0
mov m 6 5 0 2 _ y ,#0
mov m 6 5 0 2 _ n z ,#0
2025-07-09 00:55:12 +08:00
add m 6 5 0 2 _ r m e m , g l o b a l p t r ,#r e a d m e m _ t b l / / <EFBFBD> <EFBFBD> r e a d m e m _ t b l <EFBFBD> ĵ <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> ص <EFBFBD> m 6502 _ r m e m
2025-07-08 19:13:35 +08:00
/ / ldr r0 ,=NES_RAM + 0 x10 0 / / 2 5 6
ldr r0 ,=NES_RAM / / N E S _ R A M <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
ldr r0 ,[ r0 ]
add r0 ,#0x100
str r0 ,[ g l o b a l p t r ,#m 6502 _ s ] / / S =0xFD ( 0 x10 0 - 3 ) <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> Ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ִ 洢 <EFBFBD> <EFBFBD> <EFBFBD> 洢 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
mov r0 ,#0
str r0 ,[ g l o b a l p t r ,#c p u n m i f ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> c p u <EFBFBD> ж ϱ <EFBFBD> ־
str r0 ,[ g l o b a l p t r ,#c p u i r q f ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> c p u <EFBFBD> ж ϱ <EFBFBD> ־
mov c y c l e s ,#0 / / D =0 , C =0 , V =0 , I =1 d i s a b l e I R Q .
ldr r12 ,=RES_VECTOR / / <EFBFBD> <EFBFBD> λ <EFBFBD> ж <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
bl V e c65 0 2
2025-07-09 00:55:12 +08:00
add r0 , g l o b a l p t r ,#c p u r e g s / / <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> ַ
2025-07-08 19:13:35 +08:00
stmia r0 ,{ m 6 5 0 2 _ n z - m 6 5 0 2 _ p c } / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 6 5 0 2 ״ ̬
ldr r1 ,=exit_run
str r1 ,[ g l o b a l p t r ,#n e x t t i m e o u t ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> ִ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> P C <EFBFBD> <EFBFBD> ַ
ldr p c ,[ s p ] ,#4
@ .end
empty_R : / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ read b a d a d d r e s s ( e r r o r )
mov r0 ,r12
mov r1 ,#2
bl d e b u g _ 6 5 0 2
mov r0 ,#0
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
@ .thumb_func
void : / / - - - - - - - - - <EFBFBD> պ <EFBFBD> <EFBFBD> <EFBFBD>
mov r0 ,#0
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
@ .end
ram_R : / / ram r e a d ( $ 0 0 0 0 - $ 1 F F F )
bic a d d y ,a d d y ,#0x1f800 / / o n l y 0 x07 F F i s R A M
ldrb r0 ,[ c p u _ z p a g e ,a d d y ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
ram_W : / / ram w r i t e ( $ 0 0 0 0 - $ 1 F F F )
bic a d d y ,a d d y ,#0x1f800 / / o n l y 0 x07 F F i s R A M
strb r0 ,[ c p u _ z p a g e ,a d d y ] / / c p u _ z p a g e R N r11 ;=CPU_RAM
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
sram_R : / / sram r e a d ( $ 6 0 0 0 - $ 7 F F F )
sub r1 ,a d d y ,#0x6000
ldr r2 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 12 ]
ldrb r0 ,[ r2 ,r1 ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
sram_W : / / sram w r i t e ( $ 6 0 0 0 - $ 7 F F F )
sub a d d y ,a d d y ,#0x6000
ldr r1 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 12 ]
strb r0 ,[ r1 ,a d d y ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
rom_R60 : / / rom r e a d ( $ 6 0 0 0 - $ 7 F F F )
ldr r1 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 12 ]
ldrb r0 ,[ r1 ,a d d y ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
rom_R80 : / / rom r e a d ( $ 8 0 0 0 - $ 9 F F F )
ldr r1 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 16 ]
ldrb r0 ,[ r1 ,a d d y ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
rom_RA0 : / / rom r e a d ( $ A 0 0 0 - $ B F F F )
ldr r1 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 20 ]
ldrb r0 ,[ r1 ,a d d y ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
rom_RC0 : / / rom r e a d ( $ C 0 0 0 - $ D F F F )
ldr r1 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 24 ]
ldrb r0 ,[ r1 ,a d d y ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
rom_RE0 : / / ;rom read ($E000-$FFFF)
ldr r1 ,[ g l o b a l p t r ,#m e m m a p _ t b l + 28 ]
ldrb r0 ,[ r1 ,a d d y ]
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
IO_R : / / I/ O r e a d
mov r2 ,#0x4018 / / $ 4 0 1 8 - $ 6 0 0 0
cmp r12 ,r2
bhi R e a d _ L o w / / H I <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> C = =1 & & Z = =0
sub r1 ,r12 ,#0x4000 / / a d d y =r12
subs r1 ,r1 ,#0x15
bmi e m p t y _ R / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ M I <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( M I n u s ) N = =1
cmp r1 ,#3
ldr r2 ,=io_read_tbl / / <EFBFBD> Ĺ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 3 <EFBFBD> <EFBFBD>
add r2 ,r2 ,r1 ,l s l #2 / / < < 2
IT M I
ldrmi p c ,[ r2 ]
b e m p t y _ R / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ
io_read_tbl :
.word apu_4015R / / void_ 4 0 1 5 r ;4015 (sound)
.word joy0_R / / 4016 : controller 1
.word joy1_R / / 4017 : controller 2
IO_W : / / I/ O w r i t e
mov r2 ,#0x4018 / / $ 4 0 1 8 - $ 6 0 0 0
cmp r12 ,r2
bhi W r i t e _ L o w / / H I <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> C = =1 & & Z = =0
sub r1 ,r12 ,#0x4000 / / a d d y =r12
cmp r1 ,#0x18
ldr r2 ,=io_write_tbl / / <EFBFBD> Ĺ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 3 <EFBFBD> <EFBFBD>
add r2 ,r2 ,r1 ,l s l #2 / / < < 2
IT M I
ldrmi p c ,[ r2 ] / / ֱ <EFBFBD> Ӳ <EFBFBD> <EFBFBD> <EFBFBD> p c ̫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Σ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
b e m p t y _ R / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ
io_write_tbl :
.word apu_w / / void_ 4 0 0 0 w
.word apu_w / / _ 4 0 0 1 w
.word apu_w / / _ 4 0 0 2 w
.word apu_w / / _ 4 0 0 3 w
.word apu_w / / _ 4 0 0 4 w
.word apu_w / / _ 4 0 0 5 w
.word apu_w / / _ 4 0 0 6 w
.word apu_w / / _ 4 0 0 7 w
.word apu_w / / _ 4 0 0 8 w
.word apu_w / / void
.word apu_w / / _ 4 0 0 aw
.word apu_w / / void_ 4 0 0 b w
.word apu_w / / void_ 4 0 0 c w
.word apu_w / / void
.word apu_w / / void_ 4 0 0 e w
.word apu_w / / void_ 4 0 0 f w
.word apu_w / / void_ 4 0 1 0 w
.word apu_w / / void_ 4 0 1 1 w
.word apu_w / / void_ 4 0 1 2 w
.word apu_w / / void_ 4 0 1 3 w
.word dma_W / / $ 4014 : Sprite D M A t r a n s f e r
.word apu_4015w / / void_ 4 0 1 5 w <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͨ <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD>
.word joy0_W / / $ 4016 : Joypad 0 w r i t e j o y p a d _ w r i t e _ p t r
.word void / / joy1 _ W $ 4 0 1 7 :
.extern asm_Mapper_ReadLow
@ .thumb_func
Read_Low : / / $ 5 0 0 0 - $ 6 0 0 0 mapper- > M e m o r y R e a d L o w ( a d d r ) ;
stmfd s p ! ,{ r3 ,l r } / / L R <EFBFBD> Ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ջ
mov r0 ,r12
bl a s m _ M a p p e r _ R e a d L o w
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
@ .end
.extern asm_Mapper_WriteLow
@ .thumb_func
Write_Low : / / $ 5 0 0 0 - $ 6 0 0 0 mapper- > M e m o r y W r i t e L o w ( d a t a , a d d r ) ;
stmfd s p ! ,{ r3 ,l r } / / L R <EFBFBD> Ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ջ
mov r1 ,r12
bl a s m _ M a p p e r _ W r i t e L o w
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
@ .end
.extern Apu_Write
.extern Apu_Write4015
apu_w : / / 0 x4 0 0 0 - - 0 x40 1 3
stmfd s p ! ,{ r3 ,l r } / / L R <EFBFBD> Ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ջ
bl A p u _ W r i t e
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
apu_4015w :
stmfd s p ! ,{ r3 ,l r }
bl A p u _ W r i t e 4 0 1 5
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01
bx l r
.extern Apu_Read4015
apu_4015R :
stmfd s p ! ,{ r3 ,l r }
add r0 ,r1 ,#0x15
bl A p u _ R e a d40 1 5
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01
bx l r
dma_W : / / ( 4 0 1 4 ) sprite D M A t r a n s f e r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> D M A <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> D M A <EFBFBD> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> R A M <EFBFBD> <EFBFBD>
/ / ͨ <EFBFBD> <EFBFBD> д һ <EFBFBD> <EFBFBD> ֵ xx<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˿ ڣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> C P U <EFBFBD> ڴ <EFBFBD> <EFBFBD> <EFBFBD> ַ Ϊ $ x x00 <EFBFBD> <EFBFBD> $ x x F F <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڴ <EFBFBD>
sub c y c l e s ,c y c l e s ,#512 * 2 5 6
stmfd s p ! ,{ r3 ,l r }
and r1 ,r0 ,#0xe0
2025-07-09 00:55:12 +08:00
add r2 , g l o b a l p t r ,#m e m m a p _ t b l
2025-07-08 19:13:35 +08:00
lsr r1 ,r1 ,#3
ldr r2 ,[ r2 ,r1 ]
and r0 ,r0 ,#0xff
add r2 ,r2 ,r0 ,l s l #8 / / a d d y r2 =DMA s o u r c e Դ
ldr r1 ,=spr_ram / / r1 D M A <EFBFBD> <EFBFBD> Ŀ <EFBFBD> ĵ <EFBFBD> p p u . c
ldr r1 ,[ r1 ] / / s p r _ r a m <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
mov r0 ,#64 / / 2 5 6 / 4 / 8
copy_ :
subs r0 ,r0 ,#1 / / - 1
ldr r3 ,[ r2 ,r0 ,l s l #2 ]
str r3 ,[ r1 ,r0 ,l s l #2 ] / / < < 2 * 4
bne c o p y _
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01
bx l r
.extern PADdata
.extern PADdata1
joy0_W : / / 4 0 1 6 <EFBFBD> ֱ <EFBFBD> 1 <EFBFBD> <EFBFBD> ֵ [ 7 : 0 ] <EFBFBD> <EFBFBD> 7 <EFBFBD> <EFBFBD> 6 <EFBFBD> <EFBFBD> 5 <EFBFBD> <EFBFBD> 4 Start3 S e l e c t 2 B 1 A 0 )
tst r0 ,#1 / / 0 <EFBFBD> <EFBFBD> д <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
IT N E
bxne l r / / N E <EFBFBD> <EFBFBD> <EFBFBD> ȣ <EFBFBD> N o t E q u a l <EFBFBD> <EFBFBD>
ldr r1 ,=PADdata ; // <20> ֱ<EFBFBD> 1<EFBFBD> <31> ֵ
ldr r1 ,[ r1 ]
str r1 ,[ g l o b a l p t r ,#j o y 0 d a t a ]
ldr r1 ,=PADdata1 ; // <20> ֱ<EFBFBD> 1<EFBFBD> <31> ֵ
ldr r1 ,[ r1 ]
str r1 ,[ g l o b a l p t r ,#j o y 1 d a t a ]
bx l r
/ / <EFBFBD> <EFBFBD> <EFBFBD> ֱ <EFBFBD> 0 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֱ <EFBFBD> 1 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȡ <EFBFBD> ˣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD>
joy1_W : / / 4 0 1 7 <EFBFBD> ֱ <EFBFBD> 1 <EFBFBD> <EFBFBD> ֵ [ 7 : 0 ] <EFBFBD> <EFBFBD> 7 <EFBFBD> <EFBFBD> 6 <EFBFBD> <EFBFBD> 5 <EFBFBD> <EFBFBD> 4 Start3 S e l e c t 2 B 1 A 0 )
/ / tst r0 ,#1 ; 0<> <30> ??<3F> <> 1<EFBFBD> <31> <EFBFBD> <EFBFBD>
/ / orr l r ,#0x01 ;lr<6C> <72> <EFBFBD> <EFBFBD> λ<EFBFBD> <CEBB> 1<EFBFBD> <31> ֹ<EFBFBD> <D6B9> <EFBFBD> <EFBFBD> arm״̬
/ / bxne l r ;NE <20> <> <EFBFBD> ȣ <EFBFBD> NotEqual<61> <6C>
bx l r
joy0_R :
/ / 4 0 1 6
ldr r0 ,[ g l o b a l p t r ,#j o y 0 d a t a ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ <EFBFBD> <EFBFBD> ȡ λ ;joy0data<74> Ǽ<EFBFBD> ֵ
mov r1 ,r0 ,l s r #1 / / > > 1
str r1 ,[ g l o b a l p t r ,#j o y 0 d a t a ]
and r0 ,r0 ,#1 / / & 1
orr r0 ,r0 ,#0x40 / / | 0 x40
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
joy1_R :
/ / 4 0 1 7
ldr r0 ,[ g l o b a l p t r ,#j o y 1 d a t a ] / / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ <EFBFBD> <EFBFBD> ȡ λ ;joy0data<74> Ǽ<EFBFBD> ֵ
mov r1 ,r0 ,l s r #1 / / > > 1
str r1 ,[ g l o b a l p t r ,#j o y 1 d a t a ]
and r0 ,r0 ,#1 / / & 1
orr r0 ,r0 ,#0x40 / / | 0 x80 <EFBFBD> <EFBFBD> 0 x f8 ?
orr l r ,#0x01 / / l r <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> 1 <EFBFBD> <EFBFBD> ֹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> a r m ״ ̬
bx l r
.global K6502_Read
@ .thumb_func
K6502_Read :
/ / apu R e n d e r i n g D P C M c h a n n e l #5 r0 =APU - > A p u C 5 A d d r e s s <EFBFBD> <EFBFBD> ȷ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷ *
stmfd s p ! ,{ l r }
mov r1 ,r0 ,l s r #13 / / > > 1 3 = & 0 x e 0 0 0
ldr r2 ,=CPU_RAM / / <EFBFBD> 洢 <EFBFBD> <EFBFBD> ӳ <EFBFBD> <EFBFBD> r a m + r o m
ldr r1 ,[ r2 ,r1 ,l s l #2 ] / / l o o k u p r o m p t r . . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> p t r
bic r0 ,r0 ,#0xe000 / / a n d r0 ,#0x1fff & 0 x1 f f f
ldrb r0 ,[ r1 ,r0 ]
ldmfd s p ! ,{ l r }
bx l r
@ .end
.extern PPU_WriteToPort
.extern PPU_ReadFromPort
PPU_W :
stmfd s p ! ,{ r3 ,l r }
mov r1 ,r12
bl P P U _ W r i t e T o P o r t
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01
bx l r
PPU_R :
stmfd s p ! ,{ r3 ,l r }
mov r0 ,r12
bl P P U _ R e a d F r o m P o r t
ldmfd s p ! ,{ r3 ,l r }
orr l r ,#0x01
bx l r
op_table :
.word _ 0 0 , _ 0 1 , _ xx,_ 0 3 ,_ x x ,_ 0 5 ,_ 0 6 ,_ 0 7 ,_ 0 8 ,_ 0 9 ,_ 0 A ,_ x x ,_ x x ,_ 0 D ,_ 0 E ,_ x x
.word _ 1 0 , _ 1 1 , _ xx,_ x x ,_ 1 4 ,_ 1 5 ,_ 1 6 ,_ x x ,_ 1 8 ,_ 1 9 ,_ x x ,_ x x ,_ x x ,_ 1 D ,_ 1 E ,_ x x
.word _ 2 0 , _ 2 1 , _ xx,_ x x ,_ 2 4 ,_ 2 5 ,_ 2 6 ,_ x x ,_ 2 8 ,_ 2 9 ,_ 2 A ,_ x x ,_ 2 C ,_ 2 D ,_ 2 E ,_ x x
.word _ 3 0 , _ 3 1 , _ xx,_ x x ,_ x x ,_ 3 5 ,_ 3 6 ,_ x x ,_ 3 8 ,_ 3 9 ,_ x x ,_ x x ,_ x x ,_ 3 D ,_ 3 E ,_ x x
.word _ 4 0 , _ 4 1 , _ xx,_ x x ,_ x x ,_ 4 5 ,_ 4 6 ,_ x x ,_ 4 8 ,_ 4 9 ,_ 4 A ,_ x x ,_ 4 C ,_ 4 D ,_ 4 E ,_ x x
.word _ 5 0 , _ 5 1 , _ xx,_ x x ,_ x x ,_ 5 5 ,_ 5 6 ,_ x x ,_ 5 8 ,_ 5 9 ,_ x x ,_ x x ,_ x x ,_ 5 D ,_ 5 E ,_ x x
.word _ 6 0 , _ 6 1 , _ xx,_ x x ,_ x x ,_ 6 5 ,_ 6 6 ,_ 6 7 ,_ 6 8 ,_ 6 9 ,_ 6 A ,_ x x ,_ 6 C ,_ 6 D ,_ 6 E ,_ x x
.word _ 7 0 , _ 7 1 , _ xx,_ x x ,_ x x ,_ 7 5 ,_ 7 6 ,_ x x ,_ 7 8 ,_ 7 9 ,_ x x ,_ x x ,_ x x ,_ 7 D ,_ 7 E ,_ x x
.word _ xx,_ 8 1 ,_ x x ,_ x x ,_ 8 4 ,_ 8 5 ,_ 8 6 ,_ x x ,_ 8 8 ,_ x x ,_ 8 A ,_ x x ,_ 8 C ,_ 8 D ,_ 8 E ,_ x x
.word _ 9 0 , _ 9 1 , _ xx,_ x x ,_ 9 4 ,_ 9 5 ,_ 9 6 ,_ x x ,_ 9 8 ,_ 9 9 ,_ 9 A ,_ x x ,_ x x ,_ 9 D ,_ x x ,_ x x
.word _ A0 ,_ A 1 ,_ A 2 ,_ x x ,_ A 4 ,_ A 5 ,_ A 6 ,_ x x ,_ A 8 ,_ A 9 ,_ A A ,_ x x ,_ A C ,_ A D ,_ A E ,_ x x
.word _ B0 ,_ B 1 ,_ x x ,_ x x ,_ B 4 ,_ B 5 ,_ B 6 ,_ x x ,_ B 8 ,_ B 9 ,_ B A ,_ x x ,_ B C ,_ B D ,_ B E ,_ x x
.word _ C0 ,_ C 1 ,_ x x ,_ x x ,_ C 4 ,_ C 5 ,_ C 6 ,_ x x ,_ C 8 ,_ C 9 ,_ C A ,_ x x ,_ C C ,_ C D ,_ C E ,_ x x
.word _ D0 ,_ D 1 ,_ x x ,_ x x ,_ x x ,_ D 5 ,_ D 6 ,_ x x ,_ D 8 ,_ D 9 ,_ x x ,_ x x ,_ x x ,_ D D ,_ D E ,_ x x
.word _ E0 ,_ E 1 ,_ x x ,_ x x ,_ E 4 ,_ E 5 ,_ E 6 ,_ x x ,_ E 8 ,_ E 9 ,_ E A ,_ x x ,_ E C ,_ E D ,_ E E ,_ x x
.word _ F0 ,_ F 1 ,_ x x ,_ x x ,_ x x ,_ F 5 ,_ F 6 ,_ x x ,_ F 8 ,_ F 9 ,_ x x ,_ F B ,_ x x ,_ F D ,_ F E ,_ F F
.section .data
.type cpu_ d a t a , % o b j e c t
cpu_data :
.word 0 / / opz # 4 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
/ / readmem_ t b l
.word ram_R / / $ 0 0 0 0
.word PPU_R / / $ 2 0 0 0
.word IO_R / / $ 4 0 0 0
.word sram_R / / $ 6 0 0 0
.word rom_R80 / / $ 8 0 0 0
.word rom_RA0 / / $ A0 0 0
.word rom_RC0 / / $ C0 0 0
.word rom_RE0 / / $ E0 0 0
/ / writemem_ t b l
.word ram_W / / $ 0 0 0 0
.word PPU_W / / $ 2 0 0 0 r0 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
.word IO_W / / $ 4 0 0 0
.word sram_W / / $ 6 0 0 0
.word void / / $ 8 0 0 0
.word void / / $ A0 0 0
.word void / / $ C0 0 0
.word void / / $ E0 0 0
CPU_RAM : / / memmap_ t b l <EFBFBD> 洢 <EFBFBD> <EFBFBD> ӳ <EFBFBD> <EFBFBD>
.word NES_RAM / / $ 0 0 0 0 0 0 0 0 - 7 fff k e e p $ 4 0 0 b y t e a l i g n e d f o r 6 5 0 2 s t a c k s h i t
.word NES_RAM / / $ 2 0 0 0 should <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 1 0 2 4 <EFBFBD> ֽ ڶ <EFBFBD> <EFBFBD> <EFBFBD>
.word NES_RAM / / $ 4 0 0 0 never
.word NES_SRAM / / NES_ R A M - 0 x58 0 0 ;$6000 change<67> ı <EFBFBD>
rommap :
.space 4 * 4 / / $ 8 0 0 0 - FFFF m e m m a p _ t b l + 1 6
cpustate :
/ / group t h e s e t o g e t h e r f o r s a v e / l o a d s t a t e
.space 7 * 4 / / cpuregs ( n z ,c ,a ,x ,y ,c y c l e s ,p c )
.word 0 / / m6502_s :
.word 0 / / lastbank : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> MEMMAP<EFBFBD> <EFBFBD> <EFBFBD> ӵ <EFBFBD> P C <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڼ <EFBFBD> <EFBFBD> 㵱 ǰ <EFBFBD> <EFBFBD> P C <EFBFBD> <EFBFBD>
.word 0 / / nexttimeout : jump h e r e w h e n c y c l e s r u n s o u t <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
.word 0 / / rombase # 4 ;//ROM<4F> <4D> ʼ <EFBFBD> <CABC> ַ
.word 0 / / romnumber # 4 ;//
.word 0 / / rommask # 4 ;//ROM<4F> <4D> Ĥ rommask=romsize-1
.word 0 / / joy0 d a t a # 4 ;//<2F> ֱ<EFBFBD> 1<EFBFBD> <31> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
.word 0 / / joy1 d a t a # 4 ;//<2F> ֱ<EFBFBD> 2<EFBFBD> <32> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
clocks :
.word 0 / / clocksh # 4 ;//ִ<> е <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> apu<70> <75>
cpunmi :
.word 0 / / cpunmif # 4 ;cpu<70> жϱ <D0B6> ־
cpuirq :
.word 0 / / cpuirqf # 4 ;cpu<70> жϱ <D0B6> ־