Mercurial > repos > blastem
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 |