Mercurial > repos > blastem
diff zruntime.S @ 357:fa7ea48be9a9
Allow VDP/PSG writes from Z80
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 24 May 2013 00:26:27 -0700 |
parents | 14a937097c2b |
children | 134ffb72d7a1 |
line wrap: on
line diff
--- a/zruntime.S Thu May 23 23:55:42 2013 -0700 +++ b/zruntime.S Fri May 24 00:26:27 2013 -0700 @@ -133,7 +133,8 @@ jb z80_write_ym2612 cmp $0x6100, %r14w jb z80_write_bank_reg - /* TODO: YM-2612, PSG/VDP */ + cmp $0x7F00, %r14w + jae z80_write_vdp ret z80_write_ram: and $0x1FFF, %r14 @@ -150,13 +151,6 @@ not_code: ret z80_write_bank: - and $0x7FFF, %r14 - cmp $0, %r12 - je slow_bank_write - /* 68K memory is byte swapped */ - xor $1, %r14 - mov %r13b, (%r12, %r14) - ret slow_bank_write: /* TODO: Call into C to implement this */ ret @@ -167,8 +161,7 @@ mov %r13b, %dl call z80_write_ym mov %rax, %rsi - call z80_load_context - ret + jmp z80_load_context z80_write_bank_reg: and $1, %r13w shr %r15w @@ -184,6 +177,14 @@ shl $15, %r12 add 80(%rsi), %r12 ret +z80_write_vdp: + and $0xFF, %r14w + call z80_save_context + mov %r14w, %di + mov %r13b, %dl + call z80_vdp_port_write + mov %rax, %rsi + jmp z80_load_context .global z80_read_word z80_read_word: