comparison z80.cpu @ 1727:9ea0b4cc8f02

Implemented BIT instruction in new Z80 core and fixed a bunch of WZ register calculations
author Michael Pavone <pavone@retrodev.com>
date Sat, 02 Feb 2019 15:10:18 -0800
parents 4f064b575e57
children b0e01e64d76d
comparison
equal deleted inserted replaced
1726:4f064b575e57 1727:9ea0b4cc8f02
224 00110110 ld_to_hl_immed 224 00110110 ld_to_hl_immed
225 z80_fetch_immed 225 z80_fetch_immed
226 z80_store_hl 226 z80_store_hl
227 227
228 00001010 ld_a_from_bc 228 00001010 ld_a_from_bc
229 lsl b 8 scratch1 229 lsl b 8 wz
230 or c scratch1 scratch1 230 or c wz wz
231 mov wz scratch1
232 add 1 wz wz
231 ocall read_8 233 ocall read_8
232 mov scratch1 a 234 mov scratch1 a
233 235
234 00011010 ld_a_from_de 236 00011010 ld_a_from_de
235 lsl d 8 scratch1 237 lsl d 8 wz
236 or e scratch1 scratch1 238 or e wz wz
239 mov wz scratch1
240 add 1 wz wz
237 ocall read_8 241 ocall read_8
238 mov scratch1 a 242 mov scratch1 a
239 243
240 00111010 ld_a_from_immed 244 00111010 ld_a_from_immed
241 z80_fetch_immed16 245 z80_fetch_immed16
242 mov wz scratch1 246 mov wz scratch1
247 add 1 wz wz
243 ocall read_8 248 ocall read_8
244 mov scratch1 a 249 mov scratch1 a
245 250
246 00000010 ld_a_to_bc 251 00000010 ld_a_to_bc
252 local tmp 8
247 lsl b 8 scratch2 253 lsl b 8 scratch2
248 or c scratch2 scratch2 254 or c scratch2 scratch2
249 mov a scratch1 255 mov a scratch1
256 add c 1 tmp
257 lsl a 8 wz
258 or tmp wz wz
250 ocall write_8 259 ocall write_8
251 260
252 00010010 ld_a_to_de 261 00010010 ld_a_to_de
262 local tmp 8
253 lsl d 8 scratch2 263 lsl d 8 scratch2
254 or e scratch2 scratch2 264 or e scratch2 scratch2
255 mov a scratch1 265 mov a scratch1
266 add e 1 tmp
267 lsl a 8 wz
268 or tmp wz wz
256 ocall write_8 269 ocall write_8
257 270
258 00110010 ld_a_to_immed 271 00110010 ld_a_to_immed
272 local tmp 16
259 z80_fetch_immed16 273 z80_fetch_immed16
260 mov wz scratch2 274 mov wz scratch2
261 mov a scratch1 275 mov a scratch1
276 add 1 wz wz
262 ocall write_8 277 ocall write_8
278 and 0xFF wz wz
279 lsl a 8 tmp
280 or tmp wz wz
263 281
264 ed 01000111 ld_i_a 282 ed 01000111 ld_i_a
265 mov a i 283 mov a i
266 cycles 1 284 cycles 1
267 285
303 mov scratch1 low 321 mov scratch1 low
304 add 1 wz wz 322 add 1 wz wz
305 mov wz scratch1 323 mov wz scratch1
306 ocall read_8 324 ocall read_8
307 mov scratch1 high 325 mov scratch1 high
326 add 1 wz wz
308 327
309 00101010 ld_hl_from_immed 328 00101010 ld_hl_from_immed
310 meta low l 329 meta low l
311 meta high h 330 meta high h
312 z80_fetch16_from_immed 331 z80_fetch16_from_immed
334 add 1 wz wz 353 add 1 wz wz
335 mov wz scratch1 354 mov wz scratch1
336 ocall read_8 355 ocall read_8
337 lsl scratch1 8 scratch1 356 lsl scratch1 8 scratch1
338 or scratch1 reg reg 357 or scratch1 reg reg
358 add 1 wz wz
339 359
340 ed 01111011 ld_sp_from_immed 360 ed 01111011 ld_sp_from_immed
341 meta reg sp 361 meta reg sp
342 z80_fetch_reg16_from_immed 362 z80_fetch_reg16_from_immed
343 363
356 ocall write_8 376 ocall write_8
357 add 1 wz wz 377 add 1 wz wz
358 mov wz scratch2 378 mov wz scratch2
359 mov h scratch1 379 mov h scratch1
360 ocall write_8 380 ocall write_8
381 add 1 wz wz
361 382
362 z80_regpair_to_immed 383 z80_regpair_to_immed
363 z80_fetch_immed16 384 z80_fetch_immed16
364 mov wz scratch2 385 mov wz scratch2
365 mov low scratch1 386 mov low scratch1
366 ocall write_8 387 ocall write_8
367 add 1 wz wz 388 add 1 wz wz
368 mov high scratch1 389 mov high scratch1
369 mov wz scratch2 390 mov wz scratch2
370 ocall write_8 391 ocall write_8
392 add 1 wz wz
371 393
372 ed 01000011 ld_bc_to_immed 394 ed 01000011 ld_bc_to_immed
373 meta low c 395 meta low c
374 meta high b 396 meta high b
375 z80_regpair_to_immed 397 z80_regpair_to_immed
393 415
394 11111001 ld_sp_hl 416 11111001 ld_sp_hl
395 cycles 2 417 cycles 2
396 lsl h 8 sp 418 lsl h 8 sp
397 or l sp sp 419 or l sp sp
398 mov wz scratch2
399 mov sp scratch1
400 ocall write_8
401 add 1 wz wz
402 lsr sp 8 scratch1
403 mov wz scratch2
404 ocall write_8
405 420
406 z80_push 421 z80_push
407 cycles 1 422 cycles 1
408 sub 1 sp sp 423 sub 1 sp sp
409 mov sp scratch2 424 mov sp scratch2
1698 local tmp 8 1713 local tmp 8
1699 z80_srl_index tmp 1714 z80_srl_index tmp
1700 1715
1701 fdcb 00111RRR srl_iyd_reg 1716 fdcb 00111RRR srl_iyd_reg
1702 z80_srl_index main.R 1717 z80_srl_index main.R
1718
1719 cb 01BBBRRR bit_reg
1720 local tmp 8
1721 lsl 1 B tmp
1722 mov main.R last_flag_result
1723 and main.R tmp tmp
1724 update_flags SZH1PN0
1725
1726 cb 01BBB110 bit_hl
1727 local tmp 8
1728 z80_fetch_hl
1729 lsl 1 B tmp
1730 lsr wz 8 last_flag_result
1731 and scratch1 tmp tmp
1732 update_flags SZH1PN0
1733
1734
1735 ddcb 01BBBRRR bit_ixd
1736 local tmp 8
1737 mov wz scratch1
1738 ocall read_8
1739 cycles 1
1740 lsl 1 B tmp
1741 lsr wz 8 last_flag_result
1742 and scratch1 tmp tmp
1743 update_flags SZH1PN0
1744
1745 fdcb 01BBBRRR bit_iyd
1746 local tmp 8
1747 mov wz scratch1
1748 ocall read_8
1749 cycles 1
1750 lsl 1 B tmp
1751 lsr wz 8 last_flag_result
1752 and scratch1 tmp tmp
1753 update_flags SZH1PN0