Implement op -0x8f

This commit is contained in:
Takashi Toyoshima 2014-12-07 01:20:36 +09:00
parent 34f60ed8b6
commit 4a3cf30de1

122
6502.S
View File

@ -17,6 +17,7 @@
#define RX r9 #define RX r9
#define RY r10 #define RY r10
#define SP r11 #define SP r11
#define TZ r12
#define ADDR r12 #define ADDR r12
#define FLAG_N (1 << 7) #define FLAG_N (1 << 7)
@ -184,12 +185,40 @@
_ldb _ldb
.endm .endm
.macro _toAbsb
adds r0, PC, #1
_ldw
mov r1, T0
_stb
adds PC, PC, #2
.endm
.macro _toAddr .macro _toAddr
mov r0, ADDR mov r0, ADDR
mov r1, T0 mov r1, T0
_stb _stb
.endm .endm
.macro _toIndexedIndirect
adds r0, PC, #1
mov r0, PC
_ldb
mov r1, RX
adds r0, r0, R1
uxtb r0, r0
mov T1, r0
_ldb
mov TZ, r0
adds r0, T1, #1
uxtb r0, r0
_ldb
lsls r0, r0, #8
add r0, r0, TZ
mov r1, T0
_stb
adds PC, PC, #2
.endm
.macro _toReg reg .macro _toReg reg
mov \reg, T0 mov \reg, T0
.endm .endm
@ -198,6 +227,7 @@
_fromImmb _fromImmb
mov r1, T0 mov r1, T0
_stb _stb
adds PC, PC, #1
.endm .endm
.macro __cl flag .macro __cl flag
@ -281,6 +311,14 @@
add PC, PC, r0 add PC, PC, r0
.endm .endm
.macro _dec
mov r0, RA
adds r0, r0, #1
mov RA, r0
_flag_nz
adds PC, PC, #1
.endm
.macro _jmp .macro _jmp
mov PC, r0 mov PC, r0
.endm .endm
@ -374,6 +412,13 @@
mov PC, r0 mov PC, r0
.endm .endm
.macro _t a b
mov r0, \a
mov \a, \b
mov \b, r0
adds PC, PC, #1
.endm
.macro _resume .macro _resume
ldr r0, =#r_pc ldr r0, =#r_pc
ldr PC, [r0] ldr PC, [r0]
@ -470,6 +515,13 @@ op7a:
op7b: op7b:
op7c: op7c:
op7f: op7f:
op80:
op82:
op83:
op87:
op89:
op8b:
op8f:
_nop _nop
_decode _decode
@ -874,41 +926,51 @@ op7e: // ROR - Absolute, X
_ror _ror
_decode _decode
op80: op81: // STA - (Indirect, X)
b quit mov T0, RA
op81: _toIndexedIndirect
b quit _decode
op82:
b quit
op83:
b quit
op84: // STY - Zero Page op84: // STY - Zero Page
mov T0, RY mov T0, RY
_toZero _toZero
_decode _decode
op85: op85: // STA - Zero Page
b quit mov T0, RA
op86: _toZero
b quit _decode
op87:
b quit op86: // STX - Zero Page
op88: mov T0, RX
b quit _toZero
op89: _decode
b quit
op8a: op88: // DEY
b quit _fromReg RY
op8b: _dec
b quit _toReg RY
op8c: _decode
b quit
op8d: op8a: // TXA
b quit _t RX, RA
op8e: _decode
b quit
op8f: op8c: // STY - Absolute
b quit mov T0, RY
_toAbsb
_decode
op8d: // STA - Absolute
mov T0, RA
_toAbsb
_decode
op8e: // STX - Absolute
mov T0, RX
_toAbsb
_decode
op90: op90:
b quit b quit
op91: op91: