mirror of
https://github.com/toyoshim/Applerm-II.git
synced 2024-05-31 15:41:29 +00:00
Implement op -0x4f
This commit is contained in:
parent
fb81353de3
commit
4c3a822893
157
6502.S
157
6502.S
|
@ -83,6 +83,18 @@
|
||||||
_ldb
|
_ldb
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro _popw
|
||||||
|
mov T0, SP
|
||||||
|
adds r0, T0, #1
|
||||||
|
_ldb
|
||||||
|
mov T1, r0
|
||||||
|
adds r0, T0, #2
|
||||||
|
mov SP, r0
|
||||||
|
_ldb
|
||||||
|
lsls r0, r0, #8
|
||||||
|
adds r0, r0, T1
|
||||||
|
.endm
|
||||||
|
|
||||||
.macro _decode
|
.macro _decode
|
||||||
bl dump
|
bl dump
|
||||||
mov r0, PC
|
mov r0, PC
|
||||||
|
@ -114,14 +126,14 @@
|
||||||
_ldb
|
_ldb
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro _fromImm8
|
.macro _fromImmb
|
||||||
adds PC, PC, #1
|
adds PC, PC, #1
|
||||||
mov r0, PC
|
mov r0, PC
|
||||||
_ldb
|
_ldb
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro _fromIndexedIndirect
|
.macro _fromIndexedIndirect
|
||||||
_fromImm8
|
_fromImmb
|
||||||
mov r1, RX
|
mov r1, RX
|
||||||
adds r0, r0, R1
|
adds r0, r0, R1
|
||||||
uxtb r0, r0
|
uxtb r0, r0
|
||||||
|
@ -138,7 +150,7 @@
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro _fromIndirectIndex
|
.macro _fromIndirectIndex
|
||||||
_fromImm8
|
_fromImmb
|
||||||
mov T0, r0
|
mov T0, r0
|
||||||
_ldb
|
_ldb
|
||||||
mov T1, r0
|
mov T1, r0
|
||||||
|
@ -158,14 +170,14 @@
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro _fromZero
|
.macro _fromZero
|
||||||
_fromImm8
|
_fromImmb
|
||||||
mov ADDR, r0
|
mov ADDR, r0
|
||||||
_ldb
|
_ldb
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
||||||
.macro _fromZeroIndex reg
|
.macro _fromZeroIndex reg
|
||||||
_fromImm8
|
_fromImmb
|
||||||
add r0, r0, \reg
|
add r0, r0, \reg
|
||||||
uxtb r0, r0
|
uxtb r0, r0
|
||||||
mov ADDR, r0
|
mov ADDR, r0
|
||||||
|
@ -183,7 +195,7 @@
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro _toZero
|
.macro _toZero
|
||||||
_fromImm8
|
_fromImmb
|
||||||
mov r1, T0
|
mov r1, T0
|
||||||
_stb
|
_stb
|
||||||
.endm
|
.endm
|
||||||
|
@ -260,11 +272,15 @@
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro _bxx
|
.macro _bxx
|
||||||
_fromImm8
|
_fromImmb
|
||||||
sxtb r0, r0
|
sxtb r0, r0
|
||||||
add PC, PC, r0
|
add PC, PC, r0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro _jmp
|
||||||
|
mov PC, r0
|
||||||
|
.endm
|
||||||
|
|
||||||
.macro _ld reg
|
.macro _ld reg
|
||||||
mov \reg, r0
|
mov \reg, r0
|
||||||
_flag_nz
|
_flag_nz
|
||||||
|
@ -279,6 +295,25 @@
|
||||||
adds PC, PC, #1
|
adds PC, PC, #1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro _lsr
|
||||||
|
__cl (FLAG_N | FLAG_Z | FLAG_C)
|
||||||
|
movs r1, #0x01
|
||||||
|
tst r0, r1
|
||||||
|
beq 1f
|
||||||
|
__se FLAG_C
|
||||||
|
1:
|
||||||
|
lsrs r0, r0, #1
|
||||||
|
bne 1f
|
||||||
|
__se FLAG_Z
|
||||||
|
1:
|
||||||
|
movs r1, #0x80
|
||||||
|
tst r0, r1
|
||||||
|
beq 1f
|
||||||
|
__se FLAG_N
|
||||||
|
1:
|
||||||
|
adds PC, PC, #1
|
||||||
|
.endm
|
||||||
|
|
||||||
.macro _nop
|
.macro _nop
|
||||||
adds PC, PC, #1
|
adds PC, PC, #1
|
||||||
.endm
|
.endm
|
||||||
|
@ -328,6 +363,13 @@
|
||||||
adds PC, PC, #1
|
adds PC, PC, #1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro _rti
|
||||||
|
_popb
|
||||||
|
mov SR, r0
|
||||||
|
_popw
|
||||||
|
mov PC, r0
|
||||||
|
.endm
|
||||||
|
|
||||||
.macro _resume
|
.macro _resume
|
||||||
ldr r0, =#r_pc
|
ldr r0, =#r_pc
|
||||||
ldr PC, [r0]
|
ldr PC, [r0]
|
||||||
|
@ -396,6 +438,12 @@ op3a:
|
||||||
op3b:
|
op3b:
|
||||||
op3c:
|
op3c:
|
||||||
op3f:
|
op3f:
|
||||||
|
op42:
|
||||||
|
op43:
|
||||||
|
op44:
|
||||||
|
op47:
|
||||||
|
op4b:
|
||||||
|
op4f:
|
||||||
_nop
|
_nop
|
||||||
_decode
|
_decode
|
||||||
|
|
||||||
|
@ -432,7 +480,7 @@ op08: // PHP
|
||||||
_decode
|
_decode
|
||||||
|
|
||||||
op09: // ORA - Immediate
|
op09: // ORA - Immediate
|
||||||
_fromImm8
|
_fromImmb
|
||||||
_lop orrs
|
_lop orrs
|
||||||
_decode
|
_decode
|
||||||
|
|
||||||
|
@ -533,7 +581,7 @@ op28: // PLP
|
||||||
_decode
|
_decode
|
||||||
|
|
||||||
op29: // AND - Immediate
|
op29: // AND - Immediate
|
||||||
_fromImm8
|
_fromImmb
|
||||||
_lop ands
|
_lop ands
|
||||||
_decode
|
_decode
|
||||||
|
|
||||||
|
@ -603,38 +651,59 @@ op3e: // ROL - Absolute, X
|
||||||
_toAddr
|
_toAddr
|
||||||
_decode
|
_decode
|
||||||
|
|
||||||
op40:
|
op40: // RTI
|
||||||
b quit
|
_rti
|
||||||
op41:
|
_decode
|
||||||
b quit
|
|
||||||
op42:
|
op41: // EOR - (Indirect), X
|
||||||
b quit
|
_fromIndexedIndirect
|
||||||
op43:
|
_lop eors
|
||||||
b quit
|
_decode
|
||||||
op44:
|
|
||||||
b quit
|
op45: // EOR - Zero Page
|
||||||
op45:
|
_fromZero
|
||||||
b quit
|
_lop eors
|
||||||
op46:
|
_decode
|
||||||
b quit
|
|
||||||
op47:
|
op46: // LSR - Zero Page
|
||||||
b quit
|
_fromZero
|
||||||
op48:
|
_lsr
|
||||||
b quit
|
_toAddr
|
||||||
op49:
|
_decode
|
||||||
b quit
|
|
||||||
op4a:
|
op48: // PHA
|
||||||
b quit
|
_pushb RA
|
||||||
op4b:
|
adds PC, PC, #1
|
||||||
b quit
|
_decode
|
||||||
op4c:
|
|
||||||
b quit
|
op49: // EOR - Immediate
|
||||||
op4d:
|
_fromImmb
|
||||||
b quit
|
_lop eors
|
||||||
op4e:
|
_decode
|
||||||
b quit
|
|
||||||
op4f:
|
op4a: // LSR - Accumulator
|
||||||
b quit
|
_fromReg RA
|
||||||
|
_lsr
|
||||||
|
_toReg RA
|
||||||
|
_decode
|
||||||
|
|
||||||
|
op4c: // JMP - Absolute
|
||||||
|
adds r0, PC, #1
|
||||||
|
_ldw
|
||||||
|
_jmp
|
||||||
|
_decode
|
||||||
|
|
||||||
|
op4d: // EOR - Absolute
|
||||||
|
_fromAbsb
|
||||||
|
_lop eors
|
||||||
|
_decode
|
||||||
|
|
||||||
|
op4e: // LSR - Absolute
|
||||||
|
_fromAbsb
|
||||||
|
_lsr
|
||||||
|
_toAddr
|
||||||
|
_decode
|
||||||
|
|
||||||
op50:
|
op50:
|
||||||
b quit
|
b quit
|
||||||
op51:
|
op51:
|
||||||
|
@ -801,13 +870,13 @@ op9e:
|
||||||
op9f:
|
op9f:
|
||||||
b quit
|
b quit
|
||||||
opa0: // LDY - Immediate
|
opa0: // LDY - Immediate
|
||||||
_fromImm8
|
_fromImmb
|
||||||
_ld RY
|
_ld RY
|
||||||
_decode
|
_decode
|
||||||
opa1:
|
opa1:
|
||||||
b quit
|
b quit
|
||||||
opa2: // LDX - Immediate
|
opa2: // LDX - Immediate
|
||||||
_fromImm8
|
_fromImmb
|
||||||
_ld RX
|
_ld RX
|
||||||
_decode
|
_decode
|
||||||
opa3:
|
opa3:
|
||||||
|
@ -823,7 +892,7 @@ opa7:
|
||||||
opa8:
|
opa8:
|
||||||
b quit
|
b quit
|
||||||
opa9: // LDA - Immediate
|
opa9: // LDA - Immediate
|
||||||
_fromImm8
|
_fromImmb
|
||||||
_ld RA
|
_ld RA
|
||||||
_decode
|
_decode
|
||||||
opaa:
|
opaa:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user