1 cpu z88c00 2 page 0 3 include "regz8.inc" 4 5 6 adc r3,r5 ; 12 35 7 adc r3,@r5 ; 13 35 8 adc r3,64 ; 14 40 c3 9 adc 32,r5 ; 14 c5 20 10 adc 32,64 ; 14 40 20 11 adc r3,@64 ; 15 40 c3 12 adc 32,@r5 ; 15 c5 20 13 adc 32,@64 ; 15 40 20 14 adc r3,#64 ; 16 c3 40 15 adc 32,#64 ; 16 20 40 16 17 add r3,r5 ; 02 35 18 add r3,@r5 ; 03 35 19 add r3,64 ; 04 40 c3 20 add 32,r5 ; 04 c5 20 21 add 32,64 ; 04 40 20 22 add r3,@64 ; 05 40 c3 23 add 32,@r5 ; 05 c5 20 24 add 32,@64 ; 05 40 20 25 add r3,#64 ; 06 c3 40 26 add 32,#64 ; 06 20 40 27 28 and r3,r5 ; 52 35 29 and r3,@r5 ; 53 35 30 and r3,64 ; 54 40 c3 31 and 32,r5 ; 54 c5 20 32 and 32,64 ; 54 40 20 33 and r3,@64 ; 55 40 c3 34 and 32,@r5 ; 55 c5 20 35 and 32,@64 ; 55 40 20 36 and r3,#64 ; 56 c3 40 37 and 32,#64 ; 56 20 40 38 39 band r3,r5,#7 ; 67 3e c5 40 band r3,64,#7 ; 67 3e 40 41 band r3,#7,r5 ; 67 5f c3 42 band 32,#7,r5 ; 67 5f 20 43 44 bcp r3,r5,#7 ; 17 3e c5 45 bcp r3,64,#7 ; 17 3e 40 46 47 bitc r3,#7 ; 57 3e 48 49 bitr r3,#7 ; 77 3e 50 51 bits r3,#7 ; 77 3f 52 53 bor r3,r5,#7 ; 07 3e c5 54 bor r3,64,#7 ; 07 3e 40 55 bor r3,#7,r5 ; 07 5f c3 56 bor 32,#7,r5 ; 07 5f 20 57 58 btjrf $,r5,#7 ; 37 5e fd 59 btjrt $,r5,#7 ; 37 5f fd 60 61 bxor r3,r5,#7 ; 27 3e c5 62 bxor r3,64,#7 ; 27 3e 40 63 bxor r3,#7,r5 ; 27 5f c3 64 bxor 32,#7,r5 ; 27 5f 20 65 66 call #32 ; d4 20 ?? IA -> Imm 67 call @rr2 ; f4 c2 68 call @32 ; f4 20 69 call 64 ; f6 0040 70 71 ccf ; ef 72 73 clr r3 ; b0 c3 74 clr 32 ; b0 20 75 clr @r3 ; b1 c3 76 clr @32 ; b1 20 77 78 com r3 ; 60 c3 79 com 32 ; 60 20 80 com @r3 ; 61 c3 81 com @32 ; 61 20 82 83 cp r3,r5 ; a2 35 84 cp r3,@r5 ; a3 35 85 cp r3,64 ; a4 40 c3 86 cp 32,r5 ; a4 c5 20 87 cp 32,64 ; a4 40 20 88 cp r3,@64 ; a5 40 c3 89 cp 32,@r5 ; a5 c5 20 90 cp 32,@64 ; a5 40 20 91 cp r3,#64 ; a6 c3 40 92 cp 32,#64 ; a6 20 40 93 94 cpijne r3,@r5,$ ; d2 53 fd 95 96 cpije r3,@r5,$ ; c2 53 fd 97 98 da r3 ; 40 c3 99 da 32 ; 40 20 100 da @r3 ; 41 c3 101 da @32 ; 41 20 102 103 dec r3 ; 00 c3 104 dec 32 ; 00 20 105 dec @r3 ; 01 c3 106 dec @32 ; 01 20 107 108 decw rr2 ; 80 c2 109 decw 32 ; 80 20 110 decw @r3 ; 81 c3 111 decw @32 ; 81 20 112 113 di ; 8f 114 115 div rr2,r5 ; 94 c5 c2 116 div rr2,64 ; 94 40 c2 117 div 32,r5 ; 94 c5 20 118 div 32,64 ; 94 40 20 119 div rr2,@r5 ; 95 c5 c2 120 div rr2,@64 ; 95 40 c2 121 div 32,@r5 ; 95 c5 20 122 div 32,@64 ; 95 40 20 123 div rr2,#64 ; 96 40 c2 124 div 32,#64 ; 96 40 20 125 126 djnz r3,$ ; 3a fe 127 128 ei ; 9f 129 130 enter ; 1f 131 132 exit ; 2f 133 134 inc r3 ; 3e 135 inc 32 ; 20 20 136 inc @r3 ; 21 c3 137 inc @32 ; 21 20 138 139 incw rr2 ; a0 c2 140 incw 32 ; a0 20 141 incw @r3 ; a1 c3 142 incw @32 ; a1 20 143 144 iret ; bf 145 146 jp 1024 ; 8d 04 00 147 jp nz,1024 ; ed 04 00 148 jp @rr2 ; 30 c2 149 jp @32 ; 30 20 150 151 jr $ ; 8b fe 152 jr nz,$ ; eb fe 153 154 ld r3,#64 ; 3c 40 155 ld r3,r5 ; 38 c5 156 ld r3,64 ; 38 40 157 ld 32,r5 ; 59 20 158 ld r3,@r5 ; c7 35 159 ld @r3,r5 ; d7 35 160 ld 32,64 ; e4 40 20 161 ld r3,@r5 ; c7 35 162 ld r3,@64 ; e5 40 c3 163 ld 32,@r5 ; e5 c5 20 164 ld 32,@64 ; e5 40 20 165 ld r3,#64 ; 3c 40 166 ld 32,#64 ; e6 20 40 167 ld @r3,#64 ; d6 c3 40 168 ld @32,#64 ; d6 20 40 169 ld @r3,r5 ; d7 35 170 ld @r3,64 ; f5 40 c3 171 ld @32,r5 ; f5 c5 20 172 ld @32,64 ; f5 40 20 173 ld r3,64(r5) ; 87 35 40 174 ld 64(r3),r5 ; 97 53 40 175 176 ldb r3,r5,#7 ; 47 3e c5 177 ldb r3,64,#7 ; 47 3e 40 178 ldb r3,#7,r5 ; 47 5f c3 179 ldb 32,#7,r5 ; 47 5f 20 180 181 ldc r3,1024(rr4) ; a7 34 00 04 182 ldc r3,64(rr4) ; e7 34 40 183 ldc 1024(rr2),r5 ; b7 52 00 04 184 ldc 64(rr2),r5 ; f7 52 40 185 ldc 32,r5 ; b7 50 20 00 186 ldc r5,64 ; a7 50 40 00 187 ldc r3,@rr4 ; c3 34 188 ldc @rr2,r5 ; d3 52 189 190 ldcd r3,@rr4 ; e2 34 191 192 ldci r3,@rr4 ; e3 34 193 194 ldcpd @rr2,r5 ; f2 52 195 196 ldcpi @rr2,r5 ; f3 52 197 198 lde r3,1024(rr4) ; a7 35 00 04 199 lde r3,64(rr4) ; e7 35 40 200 lde 1024(rr2),r5 ; b7 53 00 04 201 lde 64(rr2),r5 ; f7 53 40 202 lde 32,r5 ; b7 51 20 00 203 lde r5,64 ; a7 51 40 00 204 lde r3,@rr4 ; c3 35 205 lde @rr2,r5 ; d3 53 206 207 lded r3,@rr4 ; e2 35 208 209 ldei r3,@rr4 ; e3 35 210 211 ldepd @rr2,r5 ; f2 53 212 213 ldepi @rr2,r5 ; f3 53 214 215 ldw rr2,rr4 ; c4 c4 c2 216 ldw rr2,64 ; c4 40 c2 217 ldw 32,rr4 ; c4 c4 20 218 ldw 32,64 ; c4 40 20 219 ldw rr2,@r4 ; c5 c4 c2 220 ldw rr2,@64 ; c5 40 c2 221 ldw 32,@r4 ; c5 c4 20 222 ldw 32,@64 ; c5 40 20 223 ldw rr2,#1024 ; c6 c2 04 00 224 ldw 32,#1024 ; c6 20 04 00 225 226 mult rr2,r5 ; 84 c5 c2 227 mult rr2,64 ; 84 40 c2 228 mult 32,r5 ; 84 c5 20 229 mult 32,64 ; 84 40 20 230 mult rr2,@r5 ; 85 c5 c2 231 mult rr2,@64 ; 85 40 c2 232 mult 32,@r5 ; 85 c5 20 233 mult 32,@64 ; 85 40 20 234 mult rr2,#64 ; 86 40 c2 235 mult 32,#64 ; 86 40 20 236 237 next ; 0f 238 239 nop ; ff 240 241 or r3,r5 ; 42 35 242 or r3,@r5 ; 43 35 243 or r3,64 ; 44 40 c3 244 or 32,r5 ; 44 c5 20 245 or 32,64 ; 44 40 20 246 or r3,@64 ; 45 40 c3 247 or 32,@r5 ; 45 c5 20 248 or 32,@64 ; 45 40 20 249 or r3,#64 ; 46 c3 40 250 or 32,#64 ; 46 20 40 251 252 pop r3 ; 50 c3 253 pop 32 ; 50 20 254 pop @r3 ; 51 c3 255 pop @32 ; 51 20 256 257 popud r3,@r5 ; 92 c5 c3 258 popud r3,@64 ; 92 40 c3 259 popud 32,@r5 ; 92 c5 20 260 popud 32,@64 ; 92 40 20 261 262 popui r3,@r5 ; 93 c5 c3 263 popui r3,@64 ; 93 40 c3 264 popui 32,@r5 ; 93 c5 20 265 popui 32,@64 ; 93 40 20 266 267 push r3 ; 70 c3 268 push 32 ; 70 20 269 push @r3 ; 71 c3 270 push @32 ; 71 20 271 272 pushud @r3,r5 ; 82 c3 c5 273 pushud @r3,64 ; 82 c3 40 274 pushud @32,r5 ; 82 20 c5 275 pushud @32,64 ; 82 20 40 276 277 pushui @r3,r5 ; 83 c3 c5 278 pushui @r3,64 ; 83 c3 40 279 pushui @32,r5 ; 83 20 c5 280 pushui @32,64 ; 83 20 40 281 282 rcf ; cf 283 284 rdr #0a5h ; d5 a5 285 286 ret ; af 287 288 rl r3 ; 90 c3 289 rl 32 ; 90 20 290 rl @r3 ; 91 c3 291 rl @32 ; 91 20 292 293 rlc r3 ; 10 c3 294 rlc 32 ; 10 20 295 rlc @r3 ; 11 c3 296 rlc @32 ; 11 20 297 298 rr r3 ; e0 c3 299 rr 32 ; e0 20 300 rr @r3 ; e1 c3 301 rr @32 ; e1 20 302 303 rrc r3 ; c0 c3 304 rrc 32 ; c0 20 305 rrc @r3 ; c1 c3 306 rrc @32 ; c1 20 307 308 sb0 ; 4f 309 310 sb1 ; 5f 311 312 sbc r3,r5 ; 32 35 313 sbc r3,@r5 ; 33 35 314 sbc r3,64 ; 34 40 c3 315 sbc 32,r5 ; 34 c5 20 316 sbc 32,64 ; 34 40 20 317 sbc r3,@64 ; 35 40 c3 318 sbc 32,@r5 ; 35 c5 20 319 sbc 32,@64 ; 35 40 20 320 sbc r3,#64 ; 36 c3 40 321 sbc 32,#64 ; 36 20 40 322 323 scf ; df 324 325 sra r3 ; d0 c3 326 sra 32 ; d0 20 327 sra @r3 ; d1 c3 328 sra @32 ; d1 20 329 330 srp #128 ; 31 80 331 srp1 #128 ; 31 81 332 srp0 #128+8 ; 31 8a 333 334 sub r3,r5 ; 22 35 335 sub r3,@r5 ; 23 35 336 sub r3,64 ; 24 40 c3 337 sub 32,r5 ; 24 c5 20 338 sub 32,64 ; 24 40 20 339 sub r3,@64 ; 25 40 c3 340 sub 32,@r5 ; 25 c5 20 341 sub 32,@64 ; 25 40 20 342 sub r3,#64 ; 26 c3 40 343 sub 32,#64 ; 26 20 40 344 345 swap r3 ; f0 c3 346 swap 32 ; f0 20 347 swap @r3 ; f1 c3 348 swap @32 ; f1 20 349 350 tcm r3,r5 ; 62 35 351 tcm r3,@r5 ; 63 35 352 tcm r3,64 ; 64 40 c3 353 tcm 32,r5 ; 64 c5 20 354 tcm 32,64 ; 64 40 20 355 tcm r3,@64 ; 65 40 c3 356 tcm 32,@r5 ; 65 c5 20 357 tcm 32,@64 ; 65 40 20 358 tcm r3,#64 ; 66 c3 40 359 tcm 32,#64 ; 66 20 40 360 361 tm r3,r5 ; 72 35 362 tm r3,@r5 ; 73 35 363 tm r3,64 ; 74 40 c3 364 tm 32,r5 ; 74 c5 20 365 tm 32,64 ; 74 40 20 366 tm r3,@64 ; 75 40 c3 367 tm 32,@r5 ; 75 c5 20 368 tm 32,@64 ; 75 40 20 369 tm r3,#64 ; 76 c3 40 370 tm 32,#64 ; 76 20 40 371 372 xor r3,r5 ; b2 35 373 xor r3,@r5 ; b3 35 374 xor r3,64 ; b4 40 c3 375 xor 32,r5 ; b4 c5 20 376 xor 32,64 ; b4 40 20 377 xor r3,@64 ; b5 40 c3 378 xor 32,@r5 ; b5 c5 20 379 xor 32,@64 ; b5 40 20 380 xor r3,#64 ; b6 c3 40 381 xor 32,#64 ; b6 20 40 382 383 wfi ; 3f 384 385 ; test for condition codes 386 387 jp f,128 ; 0d 00 80 388 jp z,128 ; 6d 00 80 389 jp nz,128 ; ed 00 80 390 jp eq,128 ; 6d 00 80 391 jp ne,128 ; ed 00 80 392 jp c,128 ; 7d 00 80 393 jp nc,128 ; fd 00 80 394 jp gt,128 ; ad 00 80 395 jp lt,128 ; 1d 00 80 396 jp ge,128 ; 9d 00 80 397 jp le,128 ; 2d 00 80 398 jp pl,128 ; dd 00 80 399 jp mi,128 ; 5d 00 80 400 jp nov,128 ; cd 00 80 401 jp ov,128 ; 4d 00 80 402 jp ugt,128 ; bd 00 80 403 jp ult,128 ; 7d 00 80 404 jp uge,128 ; fd 00 80 405 jp ule,128 ; 3d 00 80 406 407 ; defined register names 408 409 ld r3,sym ; 38 de 410 ld r3,imr ; 38 dd 411 ld r3,irr ; 38 dc 412 ldw rr2,ip ; c4 da c2 413 ld r3,ipl ; 38 db 414 ld r3,iph ; 38 da 415 ldw rr2,sp ; c4 d8 c2 416 ld r3,spl ; 38 d9 417 ld r3,sph ; 38 da 418 ld r3,rp1 ; 38 d7 419 ld r3,rp0 ; 38 d6 420 ld r3,flags ; 38 d5 421 ld r3,p4 ; 38 d4 422 ld r3,p3 ; 38 d3 423 ld r3,p2 ; 38 d2 424 ld r3,p1 ; 38 d1 425 ld r3,p0 ; 38 d0 426 427 ; Bank 0 Special Registers 428 429 ld r3,ipr ; 38 ff 430 ld r3,emt ; 38 fe 431 ld r3,p2bip ; 38 fd 432 ld r3,p2aip ; 38 fc 433 ld r3,p2dm ; 38 fb 434 ld r3,p2cm ; 38 fa 435 ld r3,p2bm ; 38 f9 436 ld r3,p2am ; 38 f8 437 ld r3,p4od ; 38 f7 438 ld r3,p4d ; 38 f6 439 ld r3,h1c ; 38 f5 440 ld r3,h0c ; 38 f4 441 ld r3,pm ; 38 f1 442 ld r3,p1 ; 38 d1 443 ld r3,p0m ; 38 f0 444 ld r3,uie ; 38 ed 445 ld r3,urc ; 38 ec 446 ld r3,utc ; 38 eb 447 if 0 448 ld r3,sio ; 38 ea 449 ld r3,sie ; 38 e9 450 ld r3,srcb ; 38 e8 451 ld r3,srca ; 38 e7 452 ld r3,stc ; 38 e6 453 endif 454 ldw rr2,c1c ; c4 e4 c2 455 ld r3,c1cl ; 38 e5 456 ld r3,c1ch ; 38 e4 457 ldw rr2,c0c ; c4 e2 c2 458 ld r3,c0cl ; 38 e3 459 ld r3,c0ch ; 38 e2 460 ld r3,c1ct ; 38 e1 461 ld r3,c0ct ; 38 e0 462 463 ; Bank 1 Special Registers 464 465 ld r3,wumsk ; 38 ff 466 ld r3,wumch ; 38 fe 467 ld r3,umb ; 38 fb 468 ld r3,uma ; 38 fa 469 ldw rr2,ubg ; c4 f8 c2 470 ld r3,ubgl ; 38 f9 471 ld r3,ubgh ; 38 f8 472 ldw rr2,dc ; c4 f0 c2 473 ld r3,dcl ; 38 f1 474 ld r3,dch ; 38 f0 475 if 0 476 ldw rr2,syn ; c4 ee c2 477 ld r3,synh ; 38 ef 478 ld r3,synl ; 38 ee 479 ld r3,smd ; 38 ed 480 ld r3,smc ; 38 ec 481 ld r3,smb ; 38 eb 482 ld r3,sma ; 38 ea 483 ldw rr2,sbg ; c4 e8 c2 484 ld r3,sbgl ; 38 e9 485 ld r3,sbgh ; 38 e8 486 endif 487 ldw rr2,c1tc ; c4 e4 c2 488 ld r3,c1tcl ; 38 e5 489 ld r3,c1tch ; 38 e4 490 ldw rr2,c0tc ; c4 e2 c2 491 ld r3,c0tcl ; 38 e3 492 ld r3,c0tch ; 38 e2 493 ld r3,c1m ; 38 e1 494 ld r3,c0m ; 38 e0 495 496 ; upper case test 497 498 ld r3,SYM ; 38 de 499 ld r3,IMR ; 38 dd 500 ld r3,IRR ; 38 dc 501 ldw rr2,IP ; c4 da c2 502 ld r3,IPL ; 38 db 503 ld r3,IPH ; 38 da 504 ldw rr2,SP ; c4 d8 c2 505 ld r3,SPL ; 38 d9 506 ld r3,SPH ; 38 d8 507 ld r3,RP1 ; 38 d7 508 ld r3,RP0 ; 38 d6 509 ld r3,FLAGS ; 38 d5 510 ld r3,P4 ; 38 d4 511 ld r3,P3 ; 38 d3 512 ld r3,P2 ; 38 d2 513 ld r3,P1 ; 38 d1 514 ld r3,P0 ; 38 d0 515 516 ; Bank 0 Special Registers 517 518 ld r3,IPR ; 38 ff 519 ld r3,P2BIP ; 38 fd 520 ld r3,P2AIP ; 38 fc 521 ld r3,P2DM ; 38 fb 522 ld r3,P2CM ; 38 fa 523 ld r3,P2BM ; 38 f9 524 ld r3,P2AM ; 38 f8 525 ld r3,P4OD ; 38 f7 526 ld r3,P4D ; 38 f6 527 ld r3,H1C ; 38 f5 528 ld r3,H0C ; 38 f4 529 ld r3,PM ; 38 f1 530 ld r3,P1 ; 38 d1 531 ld r3,P0M ; 38 f0 532 ld r3,UIE ; 38 ed 533 ld r3,URC ; 38 ec 534 ld r3,UTC ; 3S eb 535 if 0 536 ld r3,SIO ; 38 ea 537 ld r3,SIE ; 38 e9 538 ld r3,SRCB ; 38 e8 539 ld r3,SRCA ; 38 e7 540 ld r3,STC ; 38 e6 541 endif 542 ldw rr2,C1C ; c4 e4 c2 543 ld r3,C1CL ; 38 e5 544 ld r3,C1CH ; 38 e4 545 ldw rr2,C0C ; c4 e2 c2 546 ld r3,C0CL ; 38 e3 547 ld r3,C0CH ; 38 e2 548 ld r3,C1CT ; 38 e1 549 ld r3,C0CT ; 38 e0 550 551 ; Bank 1 Special Registers 552 553 ld r3,WUMSK ; 38 ff 554 ld r3,WUMCH ; 38 fe 555 ld r3,UMB ; 38 fb 556 ld r3,UMA ; 38 fa 557 ldw rr2,UBG ; c4 f0 c2 558 ld r3,UBGL ; 38 f9 559 ld r3,UBGH ; 38 f0 560 ldw rr2,DC ; c4 f0c 2 561 ld r3,DCL ; 38 f1 562 ld r3,DCH ; 38 f0 563 if 0 564 ldw rr2,SYN ; c4 ee c2 565 ld r3,SYNH ; 38 ef 566 ld r3,SYNL ; 38 ee 567 ld r3,SMD ; 38 ed 568 ld r3,SMC ; 38 ec 569 ld r3,SMB ; 38 eb 570 ld r3,SMA ; 38 ea 571 ldw rr2,SBG ; c4 e0 c2 572 ld r3,SBGL ; 38 e9 573 ld r3,SBGH ; 38 e0 574 endif 575 ldw rr2,C1TC ; c4 e4 c2 576 ld r3,C1TCL ; 38 e5 577 ld r3,C1TCH ; 38 e4 578 ldw rr2,C0TC ; c4 e2 c2 579 ld r3,C0TCL ; 38 e3 580 ld r3,C0TCH ; 38 e2 581 ld r3,C1M ; 38 e1 582 ld r3,C0M ; 38 e0 583 584 ; test for condition codes 585 586 jp f,128 ; 0d 00 80 587 588 jp z,128 ; 6d 00 80 589 jp nz,128 ; ed 00 80 590 jp eq,128 ; 6d 00 80 591 jp ne,128 ; ed 00 80 592 593 jp c,128 ; 7d 00 80 594 jp nc,128 ; fd 00 80 595 596 jp gt,128 ; ad 00 80 597 jp lt,128 ; 1d 00 80 598 jp ge,128 ; 9d 00 80 599 jp le,128 ; 2d 00 80 600 601 jp pl,128 ; dd 00 80 602 jp mi,128 ; 5d 00 80 603 604 jp nov,128 ; cd 00 80 605 jp ov,128 ; 4d 00 80 606 607 jp ugt,128 ; bd 00 80 608 jp ult,128 ; 7d 00 80 609 jp uge,128 ; fd 00 80 610 jp ule,128 ; 3d 00 80 611 612 ; symbolic bits 613 614 ldb r3,0feh,#6 ; 47 3c fe 615 ldb r3,emt,#6 ; 47 3c fe 616 ldb r3,slow ; 47 3c fe 617 618 band 0edh,#5,r3 ; 67 3b ed 619 band UIE,#5,r3 ; 67 3b ed 620 band UBRKIE,r3 ; 67 3b ed 621 622regbit defbit r3,4 623 bitc r3,#4 624 bitc regbit 625 btjrf $,r3,#4 626 btjrf $,regbit 627 628 ; register pointers 629 630 assume rp:20h ; sets RP0=20h, RP1=28h 631 ld 24h,#0aah ; translates to 'ld r4,...' 632 ld 2ch,#0aah ; translates to 'ld r12,...' 633 assume rp1:30h 634 ld 24h,#0aah ; translates to 'ld r4,...' 635 ld 2ch,#0aah ; no mapping to work register 636 ld 34h,#0aah ; translates to 'ld r12,...' 637 638 end 639