Implement op -0x0f

This commit is contained in:
Takashi Toyoshima 2014-12-06 21:22:12 +09:00
parent ef36502777
commit e12f4260f3

68
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 ADDR r12
#define FLAG_N (1 << 7) #define FLAG_N (1 << 7)
#define FLAG_V (1 << 6) #define FLAG_V (1 << 6)
@ -79,6 +80,14 @@
b decode b decode
.endm .endm
.macro _fromAbsb
adds PC, PC, #1
mov r0, PC
_ldw
mov ADDR, r0
_ldb
.endm
.macro _fromImm8 .macro _fromImm8
adds PC, PC, #1 adds PC, PC, #1
mov r0, PC mov r0, PC
@ -98,14 +107,30 @@
_ldb _ldb
lsls r0, r0, #8 lsls r0, r0, #8
adds r0, r0, T1 adds r0, r0, T1
mov ADDR, r0
_ldb _ldb
.endm .endm
.macro _fromReg reg
mov r0, \reg
.endm
.macro _fromZero .macro _fromZero
_fromImm8 _fromImm8
mov ADDR, r0
_ldb _ldb
.endm .endm
.macro _toAddr
mov r0, ADDR
mov r1, T0
_stb
.endm
.macro _toReg reg
mov \reg, T0
.endm
.macro _toZero .macro _toZero
_fromImm8 _fromImm8
mov r1, T0 mov r1, T0
@ -232,6 +257,9 @@ op02:
op03: op03:
op04: op04:
op07: op07:
op0b:
op0c:
op0f:
_nop _nop
_decode _decode
@ -259,7 +287,7 @@ op05: // ORA - Zero Page
op06: // ASL - Zero Page op06: // ASL - Zero Page
_fromZero _fromZero
_asl _asl
_toZero _toAddr
_decode _decode
op08: // PHP op08: // PHP
@ -267,20 +295,29 @@ op08: // PHP
adds PC, PC, #1 adds PC, PC, #1
_decode _decode
op09: op09: // ORA - Immediate
b quit _fromImm8
op0a: _lop orrs
b quit _decode
op0b:
b quit op0a: // ASL - Accumulator
op0c: _fromReg RA
b quit _asl
op0d: _toReg RA
b quit _decode
op0e:
b quit op0d: // ORA - Absolute
op0f: _fromAbsb
b quit _lop orrs
_toAddr
_decode
op0e: // ASL - Absolute
_fromAbsb
_asl
_toAddr
_decode
op10: op10:
b quit b quit
op11: op11:
@ -526,6 +563,7 @@ op84: // STY - Zero Page
mov T0, RY mov T0, RY
_toZero _toZero
_decode _decode
op85: op85:
b quit b quit
op86: op86: