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