File:  [RetroPC.NET] / xmil / z80awce / z80mem.s
Revision 1.1: download - view: text, annotated - select for diffs
Fri Feb 4 16:45:39 2005 JST (20 years, 8 months ago) by yui
Branches: MAIN
CVS tags: HEAD
add Z80core ARM9 version (T.Yui)


	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>