INCLUDE z80a.inc
EXPORT z80mem_read8
EXPORT z80mem_write8
EXPORT mem_read16
EXPORT mem_write16
IMPORT z80core
AREA .text, CODE, READONLY
z8a_r7 dcd z80core + CPU_SIZE
z80mem_read8 ldr r2, z8a_r7
tst r0, #&8000
ldrne r3, [r2, #CPU_MEMBASE]
ldreq r3, [r2, #CPU_MEMREAD]
ldrb r0, [r3, r0]
mov pc, lr
z80mem_write8 ldr r2, z8a_r7
tst r0, #&8000
ldrne r3, [r2, #CPU_MEMBASE]
ldreq r3, [r2, #CPU_MEMWRITE]
strb r1, [r3, r0]
mov pc, lr
; ---- .Sから呼ばれる
mem_read16 tst r0, #&8000
ldrne r12, [r7, #CPU_MEMBASE]
ldreq r12, [r7, #CPU_MEMREAD]
tst r0, #1
bne _mr16a
ldrh r0, [r12, r0]
mov pc, lr
_mr16a add r2, r0, #1
ldrb r0, [r12, r0]
movs r3, r2, lsl #17
beq _mr16b
ldrb r1, [r12, r2]
orr r0, r0, r1, lsl #8
mov pc, lr
_mr16b tst r2, #&8000
ldrne r12, [r7, #CPU_MEMBASE]
ldreq r12, [r7, #CPU_MEMREAD]
bic r2, r2, #&10000
ldrb r1, [r12, r2]
orr r0, r0, r1, lsl #8
mov pc, lr
mem_write16 tst r0, #&8000
ldrne r12, [r7, #CPU_MEMBASE]
ldreq r12, [r7, #CPU_MEMWRITE]
tst r0, #1
bne _mw16a
strh r1, [r12, r0]
mov pc, lr
_mw16a add r2, r0, #1
strb r1, [r12, r0]
movs r3, r2, lsl #17
mov r1, r1, lsr #8
beq _mw16b
strb r1, [r12, r2]
mov pc, lr
_mw16b tst r2, #&8000
ldrne r12, [r7, #CPU_MEMBASE]
ldreq r12, [r7, #CPU_MEMWRITE]
bic r2, r2, #&10000
strb r1, [r12, r2]
mov pc, lr
END
RetroPC.NET-CVS <cvs@retropc.net>