comparison zruntime.S @ 290:171f97e70d85

Implement writes from Z80 to YM-2612
author Mike Pavone <pavone@retrodev.com>
date Mon, 06 May 2013 00:54:58 -0700
parents 021aeb6df19b
children 14a937097c2b
comparison
equal deleted inserted replaced
289:1cc0850ab6bc 290:171f97e70d85
88 z80_read_byte_noinc: 88 z80_read_byte_noinc:
89 cmp $0x4000, %r13w 89 cmp $0x4000, %r13w
90 jb z80_read_ram 90 jb z80_read_ram
91 cmp $0x8000, %r13w 91 cmp $0x8000, %r13w
92 jae z80_read_bank 92 jae z80_read_bank
93 cmp $0x6000, %r13w
94 jb z80_read_ym2612
93 /* TODO: Bank reg, YM-2612, PSG/VDP */ 95 /* TODO: Bank reg, YM-2612, PSG/VDP */
94 mov $0xFF, %r13b 96 mov $0xFF, %r13b
95 ret 97 ret
96 z80_read_ram: 98 z80_read_ram:
97 and $0x1FFF, %r13 99 and $0x1FFF, %r13
106 mov (%r12, %r13), %r13b 108 mov (%r12, %r13), %r13b
107 ret 109 ret
108 slow_bank_read: 110 slow_bank_read:
109 /* TODO: Call into C to implement this */ 111 /* TODO: Call into C to implement this */
110 ret 112 ret
113 z80_read_ym2612:
114 call z80_save_context
115 mov %r13w, %di
116 push %rsi
117 call z80_read_ym
118 pop %rsi
119 mov %al, %r13b
120 call z80_load_context
121 ret
111 122
112 .global z80_write_byte 123 .global z80_write_byte
113 z80_write_byte: 124 z80_write_byte:
114 call z_inccycles 125 call z_inccycles
115 z80_write_byte_noinc: 126 z80_write_byte_noinc:
116 cmp $0x4000, %r14w 127 cmp $0x4000, %r14w
117 jb z80_write_ram 128 jb z80_write_ram
118 cmp $0x8000, %r14w 129 cmp $0x8000, %r14w
119 jae z80_write_bank 130 jae z80_write_bank
120 cmp $0x6000, %r14w 131 cmp $0x6000, %r14w
121 je z80_write_bank_reg 132 jb z80_write_ym2612
133 cmp $0x6100, %r14w
134 jb z80_write_bank_reg
122 /* TODO: YM-2612, PSG/VDP */ 135 /* TODO: YM-2612, PSG/VDP */
123 ret 136 ret
124 z80_write_ram: 137 z80_write_ram:
125 and $0x1FFF, %r14 138 and $0x1FFF, %r14
126 mov %r13b, (%r11, %r14) 139 mov %r13b, (%r11, %r14)
143 xor $1, %r14 156 xor $1, %r14
144 mov %r13b, (%r12, %r14) 157 mov %r13b, (%r12, %r14)
145 ret 158 ret
146 slow_bank_write: 159 slow_bank_write:
147 /* TODO: Call into C to implement this */ 160 /* TODO: Call into C to implement this */
161 ret
162 z80_write_ym2612:
163 and $0x3, %r14w
164 call z80_save_context
165 mov %r14w, %di
166 mov %r13b, %dl
167 call z80_write_ym
168 mov %rax, %rsi
169 call z80_load_context
148 ret 170 ret
149 z80_write_bank_reg: 171 z80_write_bank_reg:
150 and $1, %r13w 172 and $1, %r13w
151 shr %r15w 173 shr %r15w
152 shl $8, %r13w 174 shl $8, %r13w