Mercurial > repos > blastem
comparison runtime.S @ 85:1db2a0b655d1
Fix Z80 BUSREQ/RESET implementation.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 26 Dec 2012 17:50:24 -0800 |
parents | 2d1ae596db7a |
children | 3d3966c254b2 |
comparison
equal
deleted
inserted
replaced
84:2d1ae596db7a | 85:1db2a0b655d1 |
---|---|
121 mov 136(%rsi), %cx | 121 mov 136(%rsi), %cx |
122 ret | 122 ret |
123 | 123 |
124 do_io_write: | 124 do_io_write: |
125 call m68k_save_context | 125 call m68k_save_context |
126 and $0x3FF, %edi | 126 and $0x1FFF, %edi |
127 mov %ecx, %edx | 127 mov %ecx, %edx |
128 call io_write | 128 call io_write |
129 mov %rax, %rsi | 129 mov %rax, %rsi |
130 call m68k_load_context | 130 call m68k_load_context |
131 ret | 131 ret |
132 do_io_read: | 132 do_io_read: |
133 mov %ecx, %edi | 133 mov %ecx, %edi |
134 and $0x3FF, %edi | 134 and $0x1FFF, %edi |
135 call m68k_save_context | 135 call m68k_save_context |
136 call io_read | 136 call io_read |
137 mov %rax, %rsi | 137 mov %rax, %rsi |
138 call m68k_load_context | 138 call m68k_load_context |
139 mov 136(%rsi), %cl | 139 mov 136(%rsi), %cl |
140 ret | 140 ret |
141 | 141 |
142 do_io_write_w: | 142 do_io_write_w: |
143 call m68k_save_context | 143 call m68k_save_context |
144 and $0x3FF, %edi | 144 and $0x1FFF, %edi |
145 mov %ecx, %edx | 145 mov %ecx, %edx |
146 call io_write_w | 146 call io_write_w |
147 mov %rax, %rsi | 147 mov %rax, %rsi |
148 call m68k_load_context | 148 call m68k_load_context |
149 ret | 149 ret |
150 do_io_read_w: | 150 do_io_read_w: |
151 mov %ecx, %edi | 151 mov %ecx, %edi |
152 and $0x3FF, %edi | 152 and $0x1FFF, %edi |
153 call m68k_save_context | 153 call m68k_save_context |
154 call io_read_w | 154 call io_read_w |
155 mov %rax, %rsi | 155 mov %rax, %rsi |
156 call m68k_load_context | 156 call m68k_load_context |
157 mov 136(%rsi), %cx | 157 mov 136(%rsi), %cx |
169 jle cart_w | 169 jle cart_w |
170 cmp $0xE00000, %edi | 170 cmp $0xE00000, %edi |
171 jge workram_w | 171 jge workram_w |
172 cmp $0xC00000, %edi | 172 cmp $0xC00000, %edi |
173 jge vdp_psg_w | 173 jge vdp_psg_w |
174 cmp $0xA10000, %edi | |
175 jl not_io_w | |
176 cmp $0xA12000, %edi | |
177 jge not_io_w | |
178 jmp do_io_write_w | |
179 not_io_w: | |
174 ret | 180 ret |
175 workram_w: | 181 workram_w: |
176 and $0xFFFF, %rdi | 182 and $0xFFFF, %rdi |
177 mov %cx, (%r9, %rdi) | 183 mov %cx, (%r9, %rdi) |
178 ret | 184 ret |
232 jge workram_wb | 238 jge workram_wb |
233 cmp $0xC00000, %edi | 239 cmp $0xC00000, %edi |
234 jge vdp_psg_wb | 240 jge vdp_psg_wb |
235 cmp $0xA10000, %edi | 241 cmp $0xA10000, %edi |
236 jl not_io_wb | 242 jl not_io_wb |
237 cmp $0xA10300, %edi | 243 cmp $0xA12000, %edi |
238 jge not_io_wb | 244 jge not_io_wb |
239 jmp do_io_write | 245 jmp do_io_write |
240 not_io_wb: | 246 not_io_wb: |
241 ret | 247 ret |
242 workram_wb: | 248 workram_wb: |
303 jge workram | 309 jge workram |
304 cmp $0xC00000, %ecx | 310 cmp $0xC00000, %ecx |
305 jge vdp_psg | 311 jge vdp_psg |
306 cmp $0xA10000, %ecx | 312 cmp $0xA10000, %ecx |
307 jl not_io | 313 jl not_io |
308 cmp $0xA10300, %ecx | 314 cmp $0xA12000, %ecx |
309 jge not_io | 315 jge not_io |
310 call do_io_read_w | 316 call do_io_read_w |
311 ret | 317 ret |
312 not_io: | 318 not_io: |
313 xor %cx, %cx | 319 xor %cx, %cx |
349 jle cart_b | 355 jle cart_b |
350 cmp $0xE00000, %ecx | 356 cmp $0xE00000, %ecx |
351 jge workram_b | 357 jge workram_b |
352 cmp $0xA10000, %ecx | 358 cmp $0xA10000, %ecx |
353 jl not_io_b | 359 jl not_io_b |
354 cmp $0xA10300, %ecx | 360 cmp $0xA12000, %ecx |
355 jge not_io_b | 361 jge not_io_b |
356 jmp do_io_read | 362 jmp do_io_read |
357 not_io_b: | 363 not_io_b: |
358 xor %cl, %cl | 364 xor %cl, %cl |
359 dec %cl | 365 dec %cl |