comparison 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
comparison
equal deleted inserted replaced
356:79e4b466e7d0 357:fa7ea48be9a9
131 jae z80_write_bank 131 jae z80_write_bank
132 cmp $0x6000, %r14w 132 cmp $0x6000, %r14w
133 jb z80_write_ym2612 133 jb z80_write_ym2612
134 cmp $0x6100, %r14w 134 cmp $0x6100, %r14w
135 jb z80_write_bank_reg 135 jb z80_write_bank_reg
136 /* TODO: YM-2612, PSG/VDP */ 136 cmp $0x7F00, %r14w
137 jae z80_write_vdp
137 ret 138 ret
138 z80_write_ram: 139 z80_write_ram:
139 and $0x1FFF, %r14 140 and $0x1FFF, %r14
140 mov %r13b, (%r11, %r14) 141 mov %r13b, (%r11, %r14)
141 mov %r14d, %r13d 142 mov %r14d, %r13d
148 mov %rax, %rsi 149 mov %rax, %rsi
149 call z80_load_context 150 call z80_load_context
150 not_code: 151 not_code:
151 ret 152 ret
152 z80_write_bank: 153 z80_write_bank:
153 and $0x7FFF, %r14
154 cmp $0, %r12
155 je slow_bank_write
156 /* 68K memory is byte swapped */
157 xor $1, %r14
158 mov %r13b, (%r12, %r14)
159 ret
160 slow_bank_write: 154 slow_bank_write:
161 /* TODO: Call into C to implement this */ 155 /* TODO: Call into C to implement this */
162 ret 156 ret
163 z80_write_ym2612: 157 z80_write_ym2612:
164 and $0x3, %r14w 158 and $0x3, %r14w
165 call z80_save_context 159 call z80_save_context
166 mov %r14w, %di 160 mov %r14w, %di
167 mov %r13b, %dl 161 mov %r13b, %dl
168 call z80_write_ym 162 call z80_write_ym
169 mov %rax, %rsi 163 mov %rax, %rsi
170 call z80_load_context 164 jmp z80_load_context
171 ret
172 z80_write_bank_reg: 165 z80_write_bank_reg:
173 and $1, %r13w 166 and $1, %r13w
174 shr %r15w 167 shr %r15w
175 shl $8, %r13w 168 shl $8, %r13w
176 xor %r12, %r12 169 xor %r12, %r12
182 update_bank_ptr: 175 update_bank_ptr:
183 mov %r15w, %r12w 176 mov %r15w, %r12w
184 shl $15, %r12 177 shl $15, %r12
185 add 80(%rsi), %r12 178 add 80(%rsi), %r12
186 ret 179 ret
180 z80_write_vdp:
181 and $0xFF, %r14w
182 call z80_save_context
183 mov %r14w, %di
184 mov %r13b, %dl
185 call z80_vdp_port_write
186 mov %rax, %rsi
187 jmp z80_load_context
187 188
188 .global z80_read_word 189 .global z80_read_word
189 z80_read_word: 190 z80_read_word:
190 call z_inccycles 191 call z_inccycles
191 push %r13 192 push %r13