comparison z80.cpu @ 1730:71f7827ff30a

Implemented remaining DD/FD prefixes for LD in new Z80 core
author Michael Pavone <pavone@retrodev.com>
date Sat, 02 Feb 2019 16:16:25 -0800
parents bd13d017f16f
children 366b65d91614
comparison
equal deleted inserted replaced
1729:bd13d017f16f 1730:71f7827ff30a
173 mov scratch1 main.R 173 mov scratch1 main.R
174 174
175 01DDDSSS ld_from_reg 175 01DDDSSS ld_from_reg
176 mov main.S main.D 176 mov main.S main.D
177 177
178 dd 01DDD100 ld_from_ixh
179 invalid D 6
180 lsr ix 8 main.D
181
182 dd 01100SSS ld_to_ixh
183 invalid S 6
184 local tmp 16
185 and 0xFF ix ix
186 lsl main.S 8 tmp
187 or tmp ix ix
188
189 dd 0110D10S ld_ixb_to_ixb
190
191 dd 01DDD101 ld_from_ixl
192 invalid D 6
193 mov ix main.D
194
195 dd 01101SSS ld_to_ixl
196 invalid S 6
197 and 0xFF00 ix ix
198 or main.S ix ix
199
200 dd 01100101 ld_ixl_to_ixh
201 local tmp 16
202 lsl ix 8 tmp
203 and 0xFF ix ix
204 or tmp ix ix
205
206 dd 01101100 ld_ixh_to_ixl
207 local tmp 16
208 lsr ix 8 tmp
209 and 0xFF00 ix ix
210 or tmp ix ix
211
212 fd 01DDD100 ld_from_iyh
213 invalid D 6
214 lsr iy 8 main.D
215
216 fd 01100SSS ld_to_iyh
217 invalid S 6
218 local tmp 16
219 and 0xFF iy iy
220 lsl main.S 8 tmp
221 or tmp iy iy
222
223 fd 0110D10S ld_iyb_to_iyb
224
225 fd 01DDD101 ld_from_iyl
226 invalid D 6
227 mov iy main.D
228
229 fd 01101SSS ld_to_iyl
230 invalid S 6
231 and 0xFF00 iy iy
232 or main.S iy iy
233
234 fd 01100101 ld_iyl_to_iyh
235 local tmp 16
236 lsl iy 8 tmp
237 and 0xFF iy iy
238 or tmp iy iy
239
240 fd 01101100 ld_iyh_to_iyl
241 local tmp 16
242 lsr iy 8 tmp
243 and 0xFF00 iy iy
244 or tmp iy iy
245
178 z80_calc_index 246 z80_calc_index
179 arg index 16 247 arg index 16
180 mov index wz 248 mov index wz
181 z80_fetch_immed 249 z80_fetch_immed
182 sext 16 scratch1 scratch1 250 sext 16 scratch1 scratch1
202 mov scratch1 main.R 270 mov scratch1 main.R
203 271
204 00RRR110 ld_immed 272 00RRR110 ld_immed
205 z80_fetch_immed 273 z80_fetch_immed
206 mov scratch1 main.R 274 mov scratch1 main.R
275
276 dd 00100110 ld_immed_ixh
277 z80_fetch_immed
278 lsl scratch1 8 scratch1
279 and 0xFF ix ix
280 or scratch1 ix ix
281
282 dd 00101110 ld_immed_ixl
283 z80_fetch_immed
284 and 0xFF00 ix ix
285 or scratch1 ix ix
286
287 fd 00100110 ld_immed_iyh
288 z80_fetch_immed
289 lsl scratch1 8 scratch1
290 and 0xFF iy iy
291 or scratch1 iy iy
292
293 fd 00101110 ld_immed_iyl
294 z80_fetch_immed
295 and 0xFF00 iy iy
296 or scratch1 iy iy
207 297
208 01110RRR ld_to_hl 298 01110RRR ld_to_hl
209 mov main.R scratch1 299 mov main.R scratch1
210 z80_store_hl 300 z80_store_hl
211 301
222 ocall write_8 312 ocall write_8
223 313
224 00110110 ld_to_hl_immed 314 00110110 ld_to_hl_immed
225 z80_fetch_immed 315 z80_fetch_immed
226 z80_store_hl 316 z80_store_hl
317
318 dd 00110110 ld_to_ixd_immed
319 z80_calc_index ix
320 z80_fetch_immed
321 cycles 2
322 mov wz scratch2
323 ocall write_8
324
325 fd 00110110 ld_to_iyd_immed
326 z80_calc_index iy
327 z80_fetch_immed
328 cycles 2
329 mov wz scratch2
330 ocall write_8
227 331
228 00001010 ld_a_from_bc 332 00001010 ld_a_from_bc
229 lsl b 8 wz 333 lsl b 8 wz
230 or c wz wz 334 or c wz wz
231 mov wz scratch1 335 mov wz scratch1
378 mov wz scratch2 482 mov wz scratch2
379 mov h scratch1 483 mov h scratch1
380 ocall write_8 484 ocall write_8
381 add 1 wz wz 485 add 1 wz wz
382 486
487 dd 00100010 ld_ix_to_immed
488 z80_fetch_immed16
489 mov wz scratch2
490 mov ix scratch1
491 ocall write_8
492 add 1 wz wz
493 mov wz scratch2
494 lsr ix 8 scratch1
495 ocall write_8
496 add 1 wz wz
497
498 fd 00100010 ld_iy_to_immed
499 z80_fetch_immed16
500 mov wz scratch2
501 mov iy scratch1
502 ocall write_8
503 add 1 wz wz
504 mov wz scratch2
505 lsr iy 8 scratch1
506 ocall write_8
507 add 1 wz wz
508
383 z80_regpair_to_immed 509 z80_regpair_to_immed
384 z80_fetch_immed16 510 z80_fetch_immed16
385 mov wz scratch2 511 mov wz scratch2
386 mov low scratch1 512 mov low scratch1
387 ocall write_8 513 ocall write_8
415 541
416 11111001 ld_sp_hl 542 11111001 ld_sp_hl
417 cycles 2 543 cycles 2
418 lsl h 8 sp 544 lsl h 8 sp
419 or l sp sp 545 or l sp sp
546
547 dd 11111001 ld_sp_ix
548 cycles 2
549 mov ix sp
550
551 fd 11111001 ld_sp_iy
552 cycles 2
553 mov iy sp
420 554
421 z80_push 555 z80_push
422 cycles 1 556 cycles 1
423 sub 1 sp sp 557 sub 1 sp sp
424 mov sp scratch2 558 mov sp scratch2