1 cpu mb90500 2 page 0 3 4;---------------------------------------------------------------- 5; some preliminaries to keep the source code in acceptable size 6; you didn't see this - you didn't see this - ignore it 7 8#define R8MODES r0,r1,r2,r3,r4,r5,r6,r7 9#define R16MODES rw0,rw1,rw2,rw3,rw4,rw5,rw6,rw7 10#define R32MODES rl0,(rl0),rl1,(rl1),rl2,(rl2),rl3,(rl3) 11#define MEM1MODES @rw0,@rw1,@rw2,@rw3 12#define MEM1AMODES @rw0+,@rw1+,@rw2+,@rw3+ 13#define MEM2MODES @rw0+10,@rw1-10,@rw2+20,@rw3-30,@rw4+40,@rw5-50,@rw6+60,@rw7-70,@rw0+1000,@rw1-1000,@rw2+2000,@rw3-3000,@rw0+rw7,@rw1+rw7,@pc+5,1234h 14 15enum8_x macro memo 16 irp var,R8MODES 17 memo var 18 endm 19 irp var,MEM1MODES,MEM1AMODES 20 memo var 21 endm 22 irp var,MEM2MODES 23 memo var 24 endm 25 endm 26 27enum16_x macro memo 28 irp var,R16MODES 29 memo var 30 endm 31 irp var,MEM1MODES,MEM1AMODES 32 memo var 33 endm 34 irp var,MEM2MODES 35 memo var 36 endm 37 endm 38 39enum32_x macro memo 40 irp var,R32MODES 41 memo var 42 endm 43 irp var,MEM1MODES,MEM1AMODES 44 memo var 45 endm 46 irp var,MEM2MODES 47 memo var 48 endm 49 endm 50 51enum8_px macro memo,par 52 irp var,R8MODES 53 memo par,var 54 endm 55 irp var,MEM1MODES,MEM1AMODES 56 memo par,var 57 endm 58 irp var,MEM2MODES 59 memo par,var 60 endm 61 endm 62 63enum16_px macro memo,par 64 irp var,R16MODES 65 memo par,var 66 endm 67 irp var,MEM1MODES,MEM1AMODES 68 memo par,var 69 endm 70 irp var,MEM2MODES 71 memo par,var 72 endm 73 endm 74 75enum32_px macro memo,par 76 irp var,R32MODES 77 memo par,var 78 endm 79 irp var,MEM1MODES,MEM1AMODES 80 memo par,var 81 endm 82 irp var,MEM2MODES 83 memo par,var 84 endm 85 endm 86 87enum8_xp macro memo,par 88 irp var,R8MODES 89 memo var,par 90 endm 91 irp var,MEM1MODES,MEM1AMODES 92 memo var,par 93 endm 94 irp var,MEM2MODES 95 memo var,par 96 endm 97 endm 98 99enum16_xp macro memo,par 100 irp var,R16MODES 101 memo var,par 102 endm 103 irp var,MEM1MODES,MEM1AMODES 104 memo var,par 105 endm 106 irp var,MEM2MODES 107 memo var,par 108 endm 109 endm 110 111enum32_xp macro memo,par 112 irp var,R32MODES 113 memo var,par 114 endm 115 irp var,MEM1MODES,MEM1AMODES 116 memo var,par 117 endm 118 irp var,MEM2MODES 119 memo var,par 120 endm 121 endm 122 123enum8_xpp macro memo,par1,par2 124 irp var,R8MODES 125 memo var,par1,par2 126 endm 127 irp var,MEM1MODES 128 memo var,par1,par2 129 endm 130 irp var,MEM2MODES 131 memo var,par1,par2 132 endm 133 endm 134 135enum16_xpp macro memo,par1,par2 136 irp var,R16MODES 137 memo var,par1,par2 138 endm 139 irp var,MEM1MODES 140 memo var,par1,par2 141 endm 142 irp var,MEM2MODES 143 memo var,par1,par2 144 endm 145 endm 146 147enumseg macro memo 148 irp var,pcb,dtb,adb,spb 149 memo var 150 endm 151 endm 152 153;---------------------------------------------------------------- 154; let's go... 155 156 add a,#12h 157 add a,123h 158 enum8_px add,a 159 enum8_xp add,a 160 161 addc a 162 enum8_px addc,a 163 164 enum16_px addcw,a 165 166 adddc a 167 168 addl a,#12345678h 169 enum32_px addl,a 170 171 addsp #20 172 addsp #-20 173 addsp #200 174 addsp #-200 175 176 addw a 177 addw a,#1234h 178 enum16_px addw,a 179 enum16_xp addw,a 180 181 and a,#12h 182 and a,123h ; translates to 16 bit! 183 enum8_px and,a 184 enum8_px and,a 185 and ccr,#12h 186 187 enum32_px andl,a 188 189 andw a 190 andw a,#1234h 191 enum16_px andw,a 192 enum16_xp andw,a 193 194 asr a,r0 195 asrl a,r0 196 asrw a 197 asrw a,r0 198 199 bbc 80h:4,$+2 200 bbc 180h:4,$+2 201 bbc 280h:4,$+2 202 203 bbs 80h:4,$+2 204 bbs 180h:4,$+2 205 bbs 280h:4,$+2 206 207 bz $+2 208 beq $+2 209 bnz $+2 210 bne $+2 211 bc $+2 212 blo $+2 213 bnc $+2 214 bhs $+2 215 bn $+2 216 bp $+2 217 bv $+2 218 bnv $+2 219 bt $+2 220 bnt $+2 221 blt $+2 222 bge $+2 223 ble $+2 224 bgt $+2 225 bls $+2 226 bhi $+2 227 bra $+2 228 229 call 0ff1234h 230 call @rw0 231 call @rw1 232 call @rw2 233 call @rw3 234 call @rw4 235 call @rw5 236 call @rw6 237 call @rw7 238 call @@rw0 239 call @@rw1 240 call @@rw2 241 call @@rw3 242 call @@rw0+ 243 call @@rw1+ 244 call @@rw2+ 245 call @@rw3+ 246 call @@rw0+10 247 call @@rw1-10 248 call @@rw2+20 249 call @@rw3-30 250 call @@rw4+40 251 call @@rw5-50 252 call @@rw6+60 253 call @@rw7-70 254 call @@rw0+1000 255 call @@rw1-1000 256 call @@rw2+2000 257 call @@rw3-3000 258 call @@rw0+rw7 259 call @@rw1+rw7 260 call @@pc+5 261 call @1234h 262 263 callp 0123456h 264 callp @rl0 265 callp @(rl0) 266 callp @rl1 267 callp @(rl1) 268 callp @rl2 269 callp @(rl2) 270 callp @rl3 271 callp @(rl3) 272 callp @@rw0 273 callp @@rw1 274 callp @@rw2 275 callp @@rw3 276 callp @@rw0+ 277 callp @@rw1+ 278 callp @@rw2+ 279 callp @@rw3+ 280 callp @@rw0+10 281 callp @@rw1-10 282 callp @@rw2+20 283 callp @@rw3-30 284 callp @@rw4+40 285 callp @@rw5-50 286 callp @@rw6+60 287 callp @@rw7-70 288 callp @@rw0+1000 289 callp @@rw1-1000 290 callp @@rw2+2000 291 callp @@rw3-3000 292 callp @@rw0+rw7 293 callp @@rw1+rw7 294 callp @@pc+5 295 callp @1234h 296 297 callv #10 298 299 cbne a,#12,$ 300 enum8_xpp cbne,#12,$ 301 302 clrb 80h:4 303 clrb 180h:4 304 clrb 280h:4 305 306 cmp a 307 cmp a,#12h 308 enum8_px cmp,a 309 310 cmpl a,#12345678h 311 enum32_px cmpl,a 312 313 cmpw a 314 cmpw a,#1234h 315 enum16_px cmpw,a 316 317 cmr 318 319 cwbne a,#1234,$ 320 enum16_xpp cwbne,#1234,$ 321 322 enum8_xp dbnz,$ 323 324 enum8_x dec 325 326 enum32_x decl 327 328 enum16_x decw 329 330 div a 331 enum8_px div,a 332 333 enum16_px divw,a 334 335 divu a 336 enum8_px divu,a 337 338 enum16_px divuw,a 339 340 enum16_xp dwbnz,$ 341 342 ext 343 extw 344 345 enum8_x inc 346 347 enum32_x incl 348 349 enum16_x incw 350 351 enumseg fils 352 enumseg filsi 353 enumseg filsw 354 enumseg filswi 355 356 int 0ff1234h 357 int #11 358 359 int9 360 361 intp 123456h 362 363 jctx @a 364 365 jmp @a 366 jmp 0ff1234h 367 jmp @rw0 368 jmp @rw1 369 jmp @rw2 370 jmp @rw3 371 jmp @rw4 372 jmp @rw5 373 jmp @rw6 374 jmp @rw7 375 jmp @@rw0 376 jmp @@rw1 377 jmp @@rw2 378 jmp @@rw3 379 jmp @@rw0+ 380 jmp @@rw1+ 381 jmp @@rw2+ 382 jmp @@rw3+ 383 jmp @@rw0+10 384 jmp @@rw1-10 385 jmp @@rw2+20 386 jmp @@rw3-30 387 jmp @@rw4+40 388 jmp @@rw5-50 389 jmp @@rw6+60 390 jmp @@rw7-70 391 jmp @@rw0+1000 392 jmp @@rw1-1000 393 jmp @@rw2+2000 394 jmp @@rw3-3000 395 jmp @@rw0+rw7 396 jmp @@rw1+rw7 397 jmp @@pc+5 398 jmp @1234h 399 400 jmpp 0123456h 401 jmpp @rl0 402 jmpp @(rl0) 403 jmpp @rl1 404 jmpp @(rl1) 405 jmpp @rl2 406 jmpp @(rl2) 407 jmpp @rl3 408 jmpp @(rl3) 409 jmpp @@rw0 410 jmpp @@rw1 411 jmpp @@rw2 412 jmpp @@rw3 413 jmpp @@rw0+ 414 jmpp @@rw1+ 415 jmpp @@rw2+ 416 jmpp @@rw3+ 417 jmpp @@rw0+10 418 jmpp @@rw1-10 419 jmpp @@rw2+20 420 jmpp @@rw3-30 421 jmpp @@rw4+40 422 jmpp @@rw5-50 423 jmpp @@rw6+60 424 jmpp @@rw7-70 425 jmpp @@rw0+1000 426 jmpp @@rw1-1000 427 jmpp @@rw2+2000 428 jmpp @@rw3-3000 429 jmpp @@rw0+rw7 430 jmpp @@rw1+rw7 431 jmpp @@pc+5 432 jmpp @1234h 433 434 link #10 435 436 lsl a,r0 437 lsll a,r0 438 lslw a 439 lslw a,r0 440 441 lsr a,r0 442 lsrl a,r0 443 lsrw a 444 lsrw a,r0 445 446 mov a,#123 447 mov a,@a 448 mov a,@rl0+10 449 mov a,@rl1-20 450 mov a,@rl2+30 451 mov a,@rl3-40 452 mov a,12h 453 mov a,123h 454 mov a,dtb 455 mov a,adb 456 mov a,ssb 457 mov a,usb 458 mov a,dpr 459 mov a,pcb 460 enum8_px mov,a 461 mov 123h,a 462 mov @rl0+10,a 463 mov @rl1-20,a 464 mov @rl2+30,a 465 mov @rl3-40,a 466 mov 12h,a 467 mov dtb,a 468 mov adb,a 469 mov ssb,a 470 mov usb,a 471 mov dpr,a 472 enum8_xp mov,a 473 mov rp,#12 474 mov ilm,#12 475 mov 123h,#12 476 mov 23h,#12 477 enum8_xp mov,#12 478 enum8_px mov,r2 479 enum8_xp mov,r2 480 mov @a,t 481 mov @al,ah 482 483 movb a,123h:4 484 movb a,23h:4 485 movb a,1234h:4 486 movb 123h:4,a 487 movb 23h:4,a 488 movb 1234h:4,a 489 490 enum16_px movea,a 491 enum16_px movea,rw2 492 493 movl a,#12345678h 494 enum32_px movl,a 495 enum32_xp movl,a 496 497 movn a,#4 498 499 irp reg2,pcb,dtb,adb,spb 500 irp reg1,pcb,dtb,adb,spb 501 movs reg1,reg2 502 movsi reg1,reg2 503 movsd reg1,reg2 504 movsw reg1,reg2 505 movswi reg1,reg2 506 movswd reg1,reg2 507 endm 508 endm 509 510 movw a,#1234h 511 movw a,@a 512 movw a,sp 513 movw a,@rl0+10 514 movw a,@rl1-20 515 movw a,@rl2+30 516 movw a,@rl3-40 517 movw a,23h 518 movw a,123h 519 enum16_px movw,a 520 movw @rl0+10,a 521 movw @rl1-20,a 522 movw @rl2+30,a 523 movw @rl3-40,a 524 movw sp,a 525 movw 23h,a 526 movw 123h,a 527 enum16_xp movw,a 528 enum16_xp movw,#1234h 529 enum16_px movw,rw2 530 enum16_xp movw,rw2 531 movw 23h,#1234h 532 movw @a,t 533 movw @al,ah 534 535 movx a,#12h 536 movx a,@a 537 movx a,@rl0+10 538 movx a,@rl1-20 539 movx a,@rl2+30 540 movx a,@rl3-40 541 movx a,23h 542 movx a,123h 543 enum8_px movx,a 544 545 mul a 546 enum8_px mul,a 547 548 mulw a 549 enum16_px mulw,a 550 551 mulu a 552 enum8_px mulu,a 553 554 muluw a 555 enum16_px muluw,a 556 557 ncc 558 559 neg a 560 enum8_x neg 561 562 negw a 563 enum16_x negw 564 565 nop 566 567 not a 568 enum8_x not 569 570 notw a 571 enum16_x notw 572 573 nrml a,r0 574 575 or a,#12h 576 or a,123h ; translates to 16 bit! 577 enum8_px or,a 578 enum8_xp or,a 579 or ccr,#12h 580 581 enum32_px orl,a 582 583 orw a 584 orw a,#1234h 585 enum16_px orw,a 586 enum16_xp orw,a 587 588 popw a 589 popw ah 590 popw ps 591 popw rw4 592 popw rw4,rw6 593 popw rw1,rw3-rw4 594 popw rw6-rw2,rw4 595 596 pushw a 597 pushw ah 598 pushw ps 599 pushw rw4 600 pushw rw4,rw6 601 pushw rw1,rw3-rw4 602 pushw rw6-rw2,rw4 603 604 ret 605 reti 606 retp 607 608 rolc a 609 enum8_x rolc 610 611 rorc a 612 enum8_x rorc 613 614 sbbs 1234h:4,$ 615 616 enumseg sceqd 617 enumseg sceqi 618 enumseg scweqd 619 enumseg scweqi 620 621 setb 80h:4 622 setb 180h:4 623 setb 280h:4 624 625 sub a,#12h 626 sub a,123h 627 enum8_px sub,a 628 enum8_xp sub,a 629 630 subc a 631 enum8_px subc,a 632 633 enum16_px subcw,a 634 635 subdc a 636 637 subl a,#12345678h 638 enum32_px subl,a 639 640 subw a 641 subw a,#1234h 642 enum16_px subw,a 643 enum16_xp subw,a 644 645 swap 646 swapw 647 648 unlink 649 650 wbtc 34h:7 651 652 wbts 34h:7 653 654 enum8_px xch,a 655 enum8_xp xch,a 656 enum8_px xch,r2 657 enum8_xp xch,r2 658 659 enum16_px xchw,a 660 enum16_xp xchw,a 661 enum16_px xchw,rw2 662 enum16_xp xchw,rw2 663 664 xor a,#12h 665 xor a,123h ; translates to 16 bit! 666 enum8_px xor,a 667 enum8_xp xor,a 668 669 enum8_px xorl,a 670 671 xorw a 672 xorw a,#1234h 673 enum16_px xorw,a 674 enum16_xp xorw,a 675 676 zext 677 zextw 678 679;------------------------------------------------------------------------- 680; automatic extension 681 682 mov 1234h,r4 ; normal 683 mov 123h,r4 ; extend dir->abs 684 mov 12h,r4 ; extend io->abs 685 686 movw 1234h,rw4 ; normal 687 movw 123h,rw4 ; extend dir->abs 688 movw 12h,rw4 ; extend io->abs 689 690 movw 1234h,#5678h ; normal 691 movw 123h,#5678h ; extend dir->abs 692 movw 12h,#5678h ; normal, exception! 693 694;------------------------------------------------------------------------- 695; check banking 696 697 assume pcb:0 698 assume dtb:1 699 assume adb:2 700 assume usb:3 701 assume ssb:4 702 703 pcb 704 mov a,02000h 705 mov a,12000h 706 adb 707 mov a,22000h 708 spb 709 mov a,32000h 710 supmode on 711 spb 712 mov a,42000h 713