1 ; _____________________________________________ 2 ; | | 3 ; | Project: APPLER | 4 ; | File: 65C02.ASM | 5 ; | Compiler: 16-bit TASM (2.5) | 6 ; | | 7 ; | Subject: 65C02 CPU Emulator | 8 ; | | 9 ; | Author: Alexander Patalenski | 10 ; |_____________________________________________| 11 12 include GLOBALS.INC 13 include INTERFAC.INC 14 15 UserMask = 0FC02h 16 17 Emulate segment common 18 assume CS:Emulate,DS:Apple,ES:Video,SS:Data 19 20 Immediate MACRO ; #$.. 21 lodsb 22 ENDM 23 24 Page0 MACRO ; $.. 25 lodsb 26 mov bh,bl 27 xlat 28 ENDM 29 30 Page0X MACRO ; $..,X 31 lodsb 32 add al,cl 33 mov bh,bl 34 xlat 35 ENDM 36 37 Page0Y MACRO ; $..,Y 38 lodsb 39 add ax,bp 40 mov bh,bl 41 xlat 42 ENDM 43 44 Direct MACRO ; $.... 45 lodsw 46 mov bh,ah 47 ENDM 48 49 DirectX MACRO ; $....,X 50 lodsw 51 add ax,cx 52 mov bh,ah 53 ENDM 54 55 DirectY MACRO ; $....,Y 56 lodsw 57 add ax,bp 58 mov bh,ah 59 ENDM 60 61 IndirectPage0 MACRO ; ($..) 62 lodsb 63 mov ah,bl 64 xchg bx,ax 65 xlat 66 inc bl 67 mov bh,[bx] 68 mov bl,ch 69 ENDM 70 71 IndirectPage0X MACRO ; ($..,X) 72 lodsb 73 mov bx,cx 74 add bl,al 75 mov al,[bx] 76 inc bl 77 mov bh,[bx] 78 mov bl,ch 79 ENDM 80 81 IndirectPage0Y MACRO ; ($..),Y 82 lodsb 83 mov ah,bl 84 xchg bx,ax 85 xlat 86 inc bl 87 mov ah,[bx] 88 add ax,bp 89 mov bh,ah 90 mov bl,ch 91 ENDM 92 93 ;------------------------------------------------------------------------------- 94 95 _LDA_ MACRO 96 mov dl,al 97 or dl,dl 98 ENDM 99 100 _LDX_ MACRO 101 mov cl,al 102 or cl,cl 103 ENDM 104 105 _LDY_ MACRO 106 mov ah,bl 107 mov bp,ax 108 or al,al 109 ENDM 110 111 _AND_ MACRO 112 and dl,al 113 ENDM 114 115 _ORA_ MACRO 116 or dl,al 117 ENDM 118 119 _EOR_ MACRO 120 xor dl,al 121 ENDM 122 123 ADCcounter = 0 124 _ADC_ MACRO 125 Local _ADC_10 126 ADCcounter = ADCcounter+1 127 rcr dh,1 128 adc al,dl 129 IRP n,<%ADCcounter> 130 ADC&&n Label byte 131 ENDM 132 cld ;; or 133 mov dl,al 134 mov dh,bl ;; 0 135 jno _ADC_10 136 mov dh,00100000b 137 _ADC_10: rcl dh,1 138 ENDM 139 140 SBCcounter = 0 141 _SBC_ MACRO 142 Local _SBC_10 143 SBCcounter = SBCcounter+1 144 rcr dh,1 145 cmc 146 sbb dl,al 147 mov al,dl 148 IRP n,<%SBCcounter> 149 SBC&&n Label byte 150 ENDM 151 cld ;; or 152 cmc 153 mov dl,al 154 mov dh,bl ;; 0 155 jno _SBC_10 156 mov dh,00100000b 157 _SBC_10: rcl dh,1 158 ENDM 159 160 _CMP_ MACRO 161 rcr dh,1 162 cmp dl,al 163 cmc 164 rcl dh,1 165 ENDM 166 167 _CPX_ MACRO 168 rcr dh,1 169 cmp cl,al 170 cmc 171 rcl dh,1 172 ENDM 173 174 _CPY_ MACRO 175 mov bx,bp 176 rcr dh,1 177 cmp bl,al 178 cmc 179 rcl dh,1 180 mov bl,bh 181 ENDM 182 183 _BIT_ MACRO 184 test dl,al 185 lahf 186 shl ax,1 187 ror ah,1 188 shl dh,2 189 shl al,1 190 rcr dh,1 191 shr dh,1 192 sahf 193 ENDM 194 195 196 DoInstr0 MACRO Inst,Adr 197 Adr 198 _&Inst&_ 199 DoNext 200 ENDM 201 202 DoInstr MACRO Inst,Adr 203 Local Inst_cont,Inst_C0XX 204 Adr 205 cmp bh,0C0h 206 je Inst_C0XX 207 xlat 208 Inst_cont: _&Inst&_ 209 DoNext 210 Inst_C0XX: mov bh,bl 211 mov bl,al 212 shl bx,1 213 mov di,offset Inst_cont 214 jmp SS:C0XXRead[bx] ; AL - Address 215 ENDM 216 217 218 219 MemPage = 0 220 REPT 100h 221 org MemPage*100h 222 jmp BadOpcode 223 MemPage = MemPage+1 224 ENDM 225 226 227 Opcode 0A9h ; LDA #$.. 228 AddTiming 2 229 DoInstr0 LDA,Immediate 230 CheckAddress 231 232 Opcode 0A5h ; LDA $.. 233 AddTiming 3 234 DoInstr0 LDA,Page0 235 CheckAddress 236 237 Opcode 0B5h ; LDA $..,X 238 AddTiming 4 239 DoInstr0 LDA,Page0X 240 CheckAddress 241 242 Opcode 0ADh ; LDA $.... 243 AddTiming 4 244 DoInstr LDA,Direct 245 CheckAddress 246 247 Opcode 0BDh ; LDA $....,X 248 AddTiming 4 249 DoInstr LDA,DirectX 250 CheckAddress 251 252 Opcode 0B9h ; LDA $....,Y 253 AddTiming 4 254 DoInstr LDA,DirectY 255 CheckAddress 256 257 Opcode 0B2h ; LDA ($..) **65C02** 258 AddTiming 5 259 DoInstr LDA,IndirectPage0 260 CheckAddress 261 262 Opcode 0A1h ; LDA ($..,X) 263 AddTiming 6 264 DoInstr LDA,IndirectPage0X 265 CheckAddress 266 267 Opcode 0B1h ; LDA ($..),Y 268 AddTiming 5 269 DoInstr LDA,IndirectPage0Y 270 CheckAddress 271 272 Opcode 0A2h ; LDX #$.. 273 AddTiming 2 274 DoInstr0 LDX,Immediate 275 CheckAddress 276 277 Opcode 0A6h ; LDX $.. 278 AddTiming 3 279 DoInstr0 LDX,Page0 280 CheckAddress 281 282 Opcode 0B6h ; LDX $..,Y 283 AddTiming 4 284 DoInstr0 LDX,Page0Y 285 CheckAddress 286 287 Opcode 0AEh ; LDX $.... 288 AddTiming 4 289 DoInstr LDX,Direct 290 CheckAddress 291 292 Opcode 0BEh ; LDX $....,Y 293 AddTiming 4 294 DoInstr LDX,DirectY 295 CheckAddress 296 297 Opcode 0A0h ; LDY #$.. 298 AddTiming 2 299 DoInstr0 LDY,Immediate 300 CheckAddress 301 302 Opcode 0A4h ; LDY $.. 303 AddTiming 3 304 DoInstr0 LDY,Page0 305 CheckAddress 306 307 Opcode 0B4h ; LDY $..,X 308 AddTiming 4 309 DoInstr0 LDY,Page0X 310 CheckAddress 311 312 Opcode 0ACh ; LDY $.... 313 AddTiming 4 314 DoInstr LDY,Direct 315 CheckAddress 316 317 Opcode 0BCh ; LDY $....,X 318 AddTiming 4 319 DoInstr LDY,DirectX 320 CheckAddress 321 322 Opcode 69h ; ADC #$.. 323 AddTiming 2 324 DoInstr0 ADC,Immediate 325 CheckAddress 326 327 Opcode 65h ; ADC $.. 328 AddTiming 3 329 DoInstr0 ADC,Page0 330 CheckAddress 331 332 Opcode 75h ; ADC $..,X 333 AddTiming 4 334 DoInstr0 ADC,Page0X 335 CheckAddress 336 337 Opcode 6Dh ; ADC $.... 338 AddTiming 4 339 DoInstr ADC,Direct 340 CheckAddress 341 342 Opcode 7Dh ; ADC $....,X 343 AddTiming 4 344 DoInstr ADC,DirectX 345 CheckAddress 346 347 Opcode 79h ; ADC $....,Y 348 AddTiming 4 349 DoInstr ADC,DirectY 350 CheckAddress 351 352 Opcode 72h ; ADC ($..) **65C02** 353 AddTiming 5 354 DoInstr ADC,IndirectPage0 355 CheckAddress 356 357 Opcode 61h ; ADC ($..,X) 358 AddTiming 6 359 DoInstr ADC,IndirectPage0X 360 CheckAddress 361 362 Opcode 71h ; ADC ($..),Y 363 AddTiming 5 364 DoInstr ADC,IndirectPage0Y 365 CheckAddress 366 367 Opcode 0E9h ; SBC #$.. 368 AddTiming 2 369 DoInstr0 SBC,Immediate 370 CheckAddress 371 372 Opcode 0E5h ; SBC $.. 373 AddTiming 3 374 DoInstr0 SBC,Page0 375 CheckAddress 376 377 Opcode 0F5h ; SBC $..,X 378 AddTiming 4 379 DoInstr0 SBC,Page0X 380 CheckAddress 381 382 Opcode 0EDh ; SBC $.... 383 AddTiming 4 384 DoInstr SBC,Direct 385 CheckAddress 386 387 Opcode 0FDh ; SBC $....,X 388 AddTiming 4 389 DoInstr SBC,DirectX 390 CheckAddress 391 392 Opcode 0F9h ; SBC $....,Y 393 AddTiming 4 394 DoInstr SBC,DirectY 395 CheckAddress 396 397 Opcode 0F2h ; SBC ($..) **65C02** 398 AddTiming 5 399 DoInstr SBC,IndirectPage0 400 CheckAddress 401 402 Opcode 0E1h ; SBC ($..,X) 403 AddTiming 6 404 DoInstr SBC,IndirectPage0X 405 CheckAddress 406 407 Opcode 0F1h ; SBC ($..),Y 408 AddTiming 5 409 DoInstr SBC,IndirectPage0Y 410 CheckAddress 411 412 Opcode 29h ; AND #$.. 413 AddTiming 2 414 DoInstr0 AND,Immediate 415 CheckAddress 416 417 Opcode 25h ; AND $.. 418 AddTiming 3 419 DoInstr0 AND,Page0 420 CheckAddress 421 422 Opcode 35h ; AND $..,X 423 AddTiming 4 424 DoInstr0 AND,Page0X 425 CheckAddress 426 427 Opcode 2Dh ; AND $.... 428 AddTiming 4 429 DoInstr AND,Direct 430 CheckAddress 431 432 Opcode 3Dh ; AND $....,X 433 AddTiming 4 434 DoInstr AND,DirectX 435 CheckAddress 436 437 Opcode 39h ; AND $....,Y 438 AddTiming 4 439 DoInstr AND,DirectY 440 CheckAddress 441 442 Opcode 32h ; AND ($..) **65C02** 443 AddTiming 5 444 DoInstr AND,IndirectPage0 445 CheckAddress 446 447 Opcode 21h ; AND ($..,X) 448 AddTiming 6 449 DoInstr AND,IndirectPage0X 450 CheckAddress 451 452 Opcode 31h ; AND ($..),Y 453 AddTiming 5 454 DoInstr AND,IndirectPage0Y 455 CheckAddress 456 457 Opcode 09h ; ORA #$.. 458 AddTiming 2 459 DoInstr0 ORA,Immediate 460 CheckAddress 461 462 Opcode 05h ; ORA $.. 463 AddTiming 3 464 DoInstr0 ORA,Page0 465 CheckAddress 466 467 Opcode 15h ; ORA $..,X 468 AddTiming 4 469 DoInstr0 ORA,Page0X 470 CheckAddress 471 472 Opcode 0Dh ; ORA $.... 473 AddTiming 4 474 DoInstr ORA,Direct 475 CheckAddress 476 477 Opcode 1Dh ; ORA $....,X 478 AddTiming 4 479 DoInstr ORA,DirectX 480 CheckAddress 481 482 Opcode 19h ; ORA $....,Y 483 AddTiming 4 484 DoInstr ORA,DirectY 485 CheckAddress 486 487 Opcode 12h ; ORA ($..) **65C02** 488 AddTiming 5 489 DoInstr ORA,IndirectPage0 490 CheckAddress 491 492 Opcode 01h ; ORA ($..,X) 493 AddTiming 6 494 DoInstr ORA,IndirectPage0X 495 CheckAddress 496 497 Opcode 11h ; ORA ($..),Y 498 AddTiming 5 499 DoInstr ORA,IndirectPage0Y 500 CheckAddress 501 502 Opcode 49h ; EOR #$.. 503 AddTiming 2 504 DoInstr0 EOR,Immediate 505 CheckAddress 506 507 Opcode 45h ; EOR $.. 508 AddTiming 3 509 DoInstr0 EOR,Page0 510 CheckAddress 511 512 Opcode 55h ; EOR $..,X 513 AddTiming 4 514 DoInstr0 EOR,Page0X 515 CheckAddress 516 517 Opcode 4Dh ; EOR $.... 518 AddTiming 4 519 DoInstr EOR,Direct 520 CheckAddress 521 522 Opcode 5Dh ; EOR $....,X 523 AddTiming 4 524 DoInstr EOR,DirectX 525 CheckAddress 526 527 Opcode 59h ; EOR $....,Y 528 AddTiming 4 529 DoInstr EOR,DirectY 530 CheckAddress 531 532 Opcode 52h ; EOR ($..) **65C02** 533 AddTiming 5 534 DoInstr EOR,IndirectPage0 535 CheckAddress 536 537 Opcode 41h ; EOR ($..,X) 538 AddTiming 6 539 DoInstr EOR,IndirectPage0X 540 CheckAddress 541 542 Opcode 51h ; EOR ($..),Y 543 AddTiming 5 544 DoInstr EOR,IndirectPage0Y 545 CheckAddress 546 547 Opcode 0C9h ; CMP #$.. 548 AddTiming 2 549 DoInstr0 CMP,Immediate 550 CheckAddress 551 552 Opcode 0C5h ; CMP $.. 553 AddTiming 3 554 DoInstr0 CMP,Page0 555 CheckAddress 556 557 Opcode 0D5h ; CMP $..,X 558 AddTiming 4 559 DoInstr0 CMP,Page0X 560 CheckAddress 561 562 Opcode 0CDh ; CMP $.... 563 AddTiming 4 564 DoInstr CMP,Direct 565 CheckAddress 566 567 Opcode 0DDh ; CMP $....,X 568 AddTiming 4 569 DoInstr CMP,DirectX 570 CheckAddress 571 572 Opcode 0D9h ; CMP $....,Y 573 AddTiming 4 574 DoInstr CMP,DirectY 575 CheckAddress 576 577 Opcode 0D2h ; CMP ($..) **65C02** 578 AddTiming 5 579 DoInstr CMP,IndirectPage0 580 CheckAddress 581 582 Opcode 0C1h ; CMP ($..,X) 583 AddTiming 6 584 DoInstr CMP,IndirectPage0X 585 CheckAddress 586 587 Opcode 0D1h ; CMP ($..),Y 588 AddTiming 5 589 DoInstr CMP,IndirectPage0Y 590 CheckAddress 591 592 Opcode 0E0h ; CPX #$.. 593 AddTiming 2 594 DoInstr0 CPX,Immediate 595 CheckAddress 596 597 Opcode 0E4h ; CPX $.. 598 AddTiming 3 599 DoInstr0 CPX,Page0 600 CheckAddress 601 602 Opcode 0ECh ; CPX $.... 603 AddTiming 4 604 DoInstr CPX,Direct 605 CheckAddress 606 607 Opcode 0C0h ; CPY #$.. 608 AddTiming 2 609 DoInstr0 CPY,Immediate 610 CheckAddress 611 612 Opcode 0C4h ; CPY $.. 613 AddTiming 3 614 DoInstr0 CPY,Page0 615 CheckAddress 616 617 Opcode 0CCh ; CPY $.... 618 AddTiming 4 619 DoInstr CPY,Direct 620 CheckAddress 621 622 Opcode 89h ; BIT #$.. **65C02** 623 AddTiming 2 624 DoInstr0 BIT,Immediate 625 CheckAddress 626 627 Opcode 24h ; BIT $.. 628 AddTiming 3 629 DoInstr0 BIT,Page0 630 CheckAddress 631 632 Opcode 34h ; BIT $..,X **65C02** 633 AddTiming 4 634 DoInstr0 BIT,Page0X 635 CheckAddress 636 637 Opcode 2Ch ; BIT $.... 638 AddTiming 4 639 DoInstr BIT,Direct 640 CheckAddress 641 642 Opcode 3Ch ; BIT $....,X **65C02** 643 AddTiming 4 644 DoInstr BIT,DirectX 645 CheckAddress 646 647 Opcode 85h ; STA $.. 648 AddTiming 3 649 lodsb 650 mov ah,bl 651 mov di,ax 652 mov [di],dl 653 DoNext 654 CheckAddress 655 656 Opcode 95h ; STA $..,X 657 AddTiming 4 658 lodsb 659 lahf 660 add al,cl 661 sahf 662 mov ah,bl 663 mov di,ax 664 mov [di],dl 665 DoNext 666 CheckAddress 667 668 Opcode 8Dh ; STA $.... 669 AddTiming 4 670 lodsw 671 mov di,ax 672 mov bh,dl 673 GoWrite 674 CheckAddress 675 676 Opcode 9Dh ; STA $....,X 677 AddTiming 5 678 lodsw 679 mov di,ax 680 lahf 681 add di,cx 682 sahf 683 mov ax,di 684 mov bh,dl 685 GoWrite 686 CheckAddress 687 688 Opcode 99h ; STA $....,Y 689 AddTiming 5 690 lodsw 691 mov di,ax 692 lea ax,[di+bp] 693 mov di,ax 694 mov bh,dl 695 GoWrite 696 CheckAddress 697 698 Opcode 92h ; STA ($..) **65C02** 699 AddTiming 6 700 lodsb 701 mov ah,bl 702 mov di,ax 703 lahf 704 inc al 705 jz STA_10 706 sahf 707 mov di,[di] 708 mov ax,di 709 mov bh,dl 710 GoWrite 711 STA_10: sahf 712 mov al,[di] 713 mov ah,DS:[0] 714 mov di,ax 715 mov bh,dl 716 GoWrite 717 CheckAddress 718 719 Opcode 81h ; STA ($..,X) 720 AddTiming 6 721 lodsb 722 lahf 723 add al,cl 724 mov di,ax 725 inc al 726 jz STA_20 727 and di,0FFh 728 sahf 729 mov di,[di] 730 mov ax,di 731 mov bh,dl 732 GoWrite 733 STA_20: sahf 734 mov al,DS:[0FFh] 735 mov ah,DS:[000h] 736 mov di,ax 737 mov bh,dl 738 GoWrite 739 CheckAddress 740 741 Opcode 91h ; STA ($..),Y 742 AddTiming 6 743 lodsb 744 mov ah,bl 745 mov di,ax 746 lahf 747 inc al 748 jz STA_30 749 mov di,[di] 750 add di,bp 751 sahf 752 mov ax,di 753 mov bh,dl 754 GoWrite 755 STA_30: mov bl,[di] 756 mov bh,DS:[0] 757 add bx,bp 758 sahf 759 mov ax,bx 760 mov di,bx 761 mov bl,ch 762 mov bh,dl 763 GoWrite 764 CheckAddress 765 766 Opcode 86h ; STX $.. 767 AddTiming 3 768 lodsb 769 mov ah,bl 770 mov di,ax 771 mov [di],cl 772 DoNext 773 CheckAddress 774 775 Opcode 96h ; STX $..,Y 776 AddTiming 4 777 lodsb 778 mov bx,bp 779 lahf 780 add bl,al 781 sahf 782 mov [bx],cl 783 mov bl,bh 784 DoNext 785 CheckAddress 786 787 Opcode 8Eh ; STX $.... 788 AddTiming 4 789 lodsw 790 mov di,ax 791 mov bh,cl 792 GoWrite 793 CheckAddress 794 795 Opcode 84h ; STY $.. 796 AddTiming 3 797 lodsb 798 mov ah,bl 799 mov di,ax 800 mov ax,bp 801 mov [di],al 802 DoNext 803 CheckAddress 804 805 Opcode 94h ; STY $..,X 806 AddTiming 4 807 lodsb 808 lahf 809 add al,cl 810 sahf 811 mov ah,bl 812 mov di,ax 813 mov ax,bp 814 mov [di],al 815 DoNext 816 CheckAddress 817 818 Opcode 8Ch ; STY $.... 819 AddTiming 4 820 mov ax,bp 821 mov bh,al 822 lodsw 823 mov di,ax 824 GoWrite 825 CheckAddress 826 827 Opcode 64h ; STZ $.. **65C02** 828 AddTiming 3 829 lodsb 830 mov ah,bl 831 mov di,ax 832 mov [di],bl 833 DoNext 834 CheckAddress 835 836 Opcode 74h ; STZ $..,X **65C02** 837 AddTiming 4 838 lodsb 839 lahf 840 add al,cl 841 sahf 842 mov ah,bl 843 mov di,ax 844 mov [di],bl 845 DoNext 846 CheckAddress 847 848 Opcode 9Ch ; STZ $.... **65C02** 849 AddTiming 4 850 lodsw 851 mov di,ax 852 mov bh,bl 853 GoWrite 854 CheckAddress 855 856 Opcode 9Eh ; STZ $....,X **65C02** 857 AddTiming 5 858 lodsw 859 mov di,ax 860 lahf 861 add di,cx 862 sahf 863 mov ax,di 864 mov bh,bl 865 GoWrite 866 CheckAddress 867 868 Opcode 0Ah ; ASL 869 AddTiming 2 870 rcr dh,1 871 shl dl,1 872 rcl dh,1 873 DoNext 874 CheckAddress 875 876 Opcode 06h ; ASL $.. 877 AddTiming 5 878 lodsb 879 mov ah,bl 880 mov di,ax 881 rcr dh,1 882 shl byte ptr [di],1 883 rcl dh,1 884 DoNext 885 CheckAddress 886 887 Opcode 16h ; ASL $..,X 888 AddTiming 6 889 lodsb 890 add al,cl 891 mov ah,bl 892 mov di,ax 893 rcr dh,1 894 shl byte ptr [di],1 895 rcl dh,1 896 DoNext 897 CheckAddress 898 899 Opcode 0Eh ; ASL $.... 900 AddTiming 6 901 lodsw 902 mov di,ax 903 mov bh,[di] 904 rcr dh,1 905 shl bh,1 906 rcl dh,1 907 GoWrite 908 CheckAddress 909 910 Opcode 1Eh ; ASL $....,X 911 AddTiming 7 912 lodsw 913 add ax,cx 914 mov di,ax 915 mov bh,[di] 916 rcr dh,1 917 shl bh,1 918 rcl dh,1 919 GoWrite 920 CheckAddress 921 922 Opcode 4Ah ; LSR 923 AddTiming 2 924 rcr dh,1 925 shr dl,1 926 rcl dh,1 927 DoNext 928 CheckAddress 929 930 Opcode 46h ; LSR $.. 931 AddTiming 5 932 lodsb 933 mov ah,bl 934 mov di,ax 935 rcr dh,1 936 shr byte ptr [di],1 937 rcl dh,1 938 DoNext 939 CheckAddress 940 941 Opcode 56h ; LSR $..,X 942 AddTiming 6 943 lodsb 944 add al,cl 945 mov ah,bl 946 mov di,ax 947 rcr dh,1 948 shr byte ptr [di],1 949 rcl dh,1 950 DoNext 951 CheckAddress 952 953 Opcode 4Eh ; LSR $.... 954 AddTiming 6 955 lodsw 956 mov di,ax 957 mov bh,[di] 958 rcr dh,1 959 shr bh,1 960 rcl dh,1 961 GoWrite 962 CheckAddress 963 964 Opcode 5Eh ; LSR $....,X 965 AddTiming 7 966 lodsw 967 add ax,cx 968 mov di,ax 969 mov bh,[di] 970 rcr dh,1 971 shr bh,1 972 rcl dh,1 973 GoWrite 974 CheckAddress 975 976 Opcode 2Ah ; ROL 977 AddTiming 2 978 rcr dh,1 979 rcl dx,1 980 or dl,dl 981 DoNext 982 CheckAddress 983 984 Opcode 26h ; ROL $.. 985 AddTiming 5 986 lodsb 987 mov ah,bl 988 mov di,ax 989 mov al,[di] 990 rcr dh,1 991 rcl al,1 992 rcl dh,1 993 or al,al 994 mov [di],al 995 DoNext 996 CheckAddress 997 998 Opcode 36h ; ROL $..,X 999 AddTiming 6 1000 lodsb 1001 add al,cl 1002 mov ah,bl 1003 mov di,ax 1004 mov al,[di] 1005 rcr dh,1 1006 rcl al,1 1007 rcl dh,1 1008 or al,al 1009 mov [di],al 1010 DoNext 1011 CheckAddress 1012 1013 Opcode 2Eh ; ROL $.... 1014 AddTiming 6 1015 lodsw 1016 mov di,ax 1017 mov bh,[di] 1018 rcr dh,1 1019 rcl bh,1 1020 rcl dh,1 1021 or bh,bh 1022 GoWrite 1023 CheckAddress 1024 1025 Opcode 3Eh ; ROL $....,X 1026 AddTiming 7 1027 lodsw 1028 add ax,cx 1029 mov di,ax 1030 mov bh,[di] 1031 rcr dh,1 1032 rcl bh,1 1033 rcl dh,1 1034 or bh,bh 1035 GoWrite 1036 CheckAddress 1037 1038 Opcode 6Ah ; ROR 1039 AddTiming 2 1040 rcr dx,1 1041 rcl dh,1 1042 or dl,dl 1043 DoNext 1044 CheckAddress 1045 1046 Opcode 66h ; ROR $.. 1047 AddTiming 5 1048 lodsb 1049 mov ah,bl 1050 mov di,ax 1051 mov al,[di] 1052 rcr dh,1 1053 rcr al,1 1054 rcl dh,1 1055 or al,al 1056 mov [di],al 1057 DoNext 1058 CheckAddress 1059 1060 Opcode 76h ; ROR $..,X 1061 AddTiming 6 1062 lodsb 1063 add al,cl 1064 mov ah,bl 1065 mov di,ax 1066 mov al,[di] 1067 rcr dh,1 1068 rcr al,1 1069 rcl dh,1 1070 or al,al 1071 mov [di],al 1072 DoNext 1073 CheckAddress 1074 1075 Opcode 6Eh ; ROR $.... 1076 AddTiming 6 1077 lodsw 1078 mov di,ax 1079 mov bh,[di] 1080 rcr dh,1 1081 rcr bh,1 1082 rcl dh,1 1083 or bh,bh 1084 GoWrite 1085 CheckAddress 1086 1087 Opcode 7Eh ; ROR $....,X 1088 AddTiming 7 1089 lodsw 1090 add ax,cx 1091 mov di,ax 1092 mov bh,[di] 1093 rcr dh,1 1094 rcr bh,1 1095 rcl dh,1 1096 or bh,bh 1097 GoWrite 1098 CheckAddress 1099 1100 Opcode 1Ah ; INC **65C02** 1101 AddTiming 2 1102 inc dl 1103 DoNext 1104 CheckAddress 1105 1106 Opcode 0E6h ; INC $.. 1107 AddTiming 5 1108 lodsb 1109 mov ah,bl 1110 mov di,ax 1111 inc byte ptr [di] 1112 DoNext 1113 CheckAddress 1114 1115 Opcode 0F6h ; INC $..,X 1116 AddTiming 6 1117 lodsb 1118 add al,cl 1119 mov ah,bl 1120 mov di,ax 1121 inc byte ptr [di] 1122 DoNext 1123 CheckAddress 1124 1125 Opcode 0EEh ; INC $.... 1126 AddTiming 6 1127 lodsw 1128 mov di,ax 1129 mov bh,[di] 1130 inc bh 1131 GoWrite 1132 CheckAddress 1133 1134 Opcode 0FEh ; INC $....,X 1135 AddTiming 7 1136 lodsw 1137 add ax,cx 1138 mov di,ax 1139 mov bh,[di] 1140 inc bh 1141 GoWrite 1142 CheckAddress 1143 1144 Opcode 3Ah ; DEC **65C02** 1145 AddTiming 2 1146 dec dl 1147 DoNext 1148 CheckAddress 1149 1150 Opcode 0C6h ; DEC $.. 1151 AddTiming 5 1152 lodsb 1153 mov ah,bl 1154 mov di,ax 1155 dec byte ptr [di] 1156 DoNext 1157 CheckAddress 1158 1159 Opcode 0D6h ; DEC $..,X 1160 AddTiming 6 1161 lodsb 1162 add al,cl 1163 mov ah,bl 1164 mov di,ax 1165 dec byte ptr [di] 1166 DoNext 1167 CheckAddress 1168 1169 Opcode 0CEh ; DEC $.... 1170 AddTiming 6 1171 lodsw 1172 mov di,ax 1173 mov bh,[di] 1174 dec bh 1175 GoWrite 1176 CheckAddress 1177 1178 Opcode 0DEh ; DEC $....,X 1179 AddTiming 7 1180 lodsw 1181 add ax,cx 1182 mov di,ax 1183 mov bh,[di] 1184 dec bh 1185 GoWrite 1186 CheckAddress 1187 1188 Opcode 14h ; TRB $.. **65C02** 1189 AddTiming 5 1190 lodsb 1191 mov ah,bl 1192 mov di,ax 1193 lahf 1194 mov al,[di] 1195 mov bh,al 1196 and bh,dl 1197 rcl ah,1 1198 lahf 1199 rcl ah,1 1200 ror ah,1 1201 xor al,bh 1202 mov [di],al 1203 sahf 1204 DoNext 1205 CheckAddress 1206 1207 Opcode 1Ch ; TRB $.... **65C02** 1208 AddTiming 6 1209 lodsw 1210 mov di,ax 1211 lahf 1212 mov al,[di] 1213 mov bh,al 1214 and bh,dl 1215 rcl ah,1 1216 lahf 1217 rcl ah,1 1218 ror ah,1 1219 xor bh,al 1220 sahf 1221 mov ax,di 1222 GoWrite 1223 CheckAddress 1224 1225 Opcode 04h ; TSB $.. **65C02** 1226 AddTiming 5 1227 lodsb 1228 mov ah,bl 1229 mov di,ax 1230 lahf 1231 or [di],dl 1232 or dl,dl 1233 mov al,ah 1234 lahf 1235 shl ax,1 1236 ror ah,1 1237 sahf 1238 DoNext 1239 CheckAddress 1240 1241 Opcode 0Ch ; TSB $.... **65C02** 1242 AddTiming 6 1243 lodsw 1244 mov di,ax 1245 mov bh,dl 1246 lahf 1247 or bh,[di] 1248 or dl,dl 1249 mov al,ah 1250 lahf 1251 shl ax,1 1252 ror ah,1 1253 sahf 1254 mov ax,di 1255 GoWrite 1256 CheckAddress 1257 1258 Opcode 80h ; BRA $.. **65C02** 1259 AddTiming 3 1260 lodsb 1261 cbw 1262 mov bx,ax 1263 lea si,[si+bx] 1264 mov bl,ch 1265 DoNext 1266 CheckAddress 1267 1268 Opcode 0D0h ; BNE $.. 1269 AddTiming 2 1270 lodsb 1271 je BNE_10 1272 cbw 1273 mov bx,ax 1274 lea si,[si+bx] 1275 mov bl,ch 1276 AddTiming 1 1277 BNE_10: DoNext 1278 CheckAddress 1279 1280 Opcode 0F0h ; BEQ $.. 1281 AddTiming 2 1282 lodsb 1283 jne BEQ_10 1284 cbw 1285 mov bx,ax 1286 lea si,[si+bx] 1287 mov bl,ch 1288 AddTiming 1 1289 BEQ_10: DoNext 1290 CheckAddress 1291 1292 Opcode 10h ; BPL $.. 1293 AddTiming 2 1294 lodsb 1295 js BPL_10 1296 cbw 1297 mov bx,ax 1298 lea si,[si+bx] 1299 mov bl,ch 1300 AddTiming 1 1301 BPL_10: DoNext 1302 CheckAddress 1303 1304 Opcode 30h ; BMI $.. 1305 AddTiming 2 1306 lodsb 1307 jns BMI_10 1308 cbw 1309 mov bx,ax 1310 lea si,[si+bx] 1311 mov bl,ch 1312 AddTiming 1 1313 BMI_10: DoNext 1314 CheckAddress 1315 1316 Opcode 90h ; BCC $.. 1317 AddTiming 2 1318 lodsb 1319 ror dh,1 1320 jc BCC_10 1321 cbw 1322 mov bx,ax 1323 lea si,[si+bx] 1324 mov bl,ch 1325 AddTiming 1 1326 BCC_10: rol dh,1 1327 DoNext 1328 CheckAddress 1329 1330 Opcode 0B0h ; BCS $.. 1331 AddTiming 2 1332 lodsb 1333 ror dh,1 1334 jnc BCS_10 1335 cbw 1336 mov bx,ax 1337 lea si,[si+bx] 1338 mov bl,ch 1339 AddTiming 1 1340 BCS_10: rol dh,1 1341 DoNext 1342 CheckAddress 1343 1344 Opcode 50h ; BVC $.. 1345 AddTiming 2 1346 lodsb 1347 rol dh,1 1348 jo BVC_10 1349 cbw 1350 mov bx,ax 1351 lea si,[si+bx] 1352 mov bl,ch 1353 AddTiming 1 1354 BVC_10: ror dh,1 1355 DoNext 1356 CheckAddress 1357 1358 Opcode 70h ; BVS $.. 1359 AddTiming 2 1360 lodsb 1361 rol dh,1 1362 jno BVS_10 1363 cbw 1364 mov bx,ax 1365 lea si,[si+bx] 1366 mov bl,ch 1367 AddTiming 1 1368 BVS_10: ror dh,1 1369 DoNext 1370 CheckAddress 1371 1372 Opcode 4Ch ; JMP $.... 1373 AddTiming 3 1374 mov si,[si] 1375 DoNext 1376 CheckAddress 1377 1378 Opcode 6Ch ; JMP ($....) 1379 AddTiming 5 1380 mov bx,[si] 1381 mov si,[bx] 1382 lahf 1383 inc bl 1384 jz JMP_10 1385 sahf 1386 mov bl,ch 1387 DoNext 1388 JMP_10: sahf 1389 mov ax,si 1390 mov ah,[bx] 1391 mov si,ax 1392 DoNext 1393 CheckAddress 1394 1395 Opcode 7Ch ; JMP ($....,X) **65C02** 1396 AddTiming 6 1397 mov bx,[si] 1398 lahf 1399 add bx,cx 1400 mov si,[bx] 1401 inc bl 1402 jz JMP_20 1403 sahf 1404 mov bl,ch 1405 DoNext 1406 JMP_20: sahf 1407 mov ax,si 1408 mov ah,[bx] 1409 mov si,ax 1410 DoNext 1411 CheckAddress 1412 1413 Opcode 20h ; JSR $.... 1414 AddTiming 6 1415 mov di,si 1416 mov si,[si] 1417 mov bx,AppleSP 1418 lahf 1419 inc di 1420 or bl,bl 1421 jz JSR_10 1422 dec bx 1423 mov [bx],di 1424 dec bl 1425 sahf 1426 mov AppleSP,bx 1427 mov bl,ch 1428 DoNext 1429 JSR_10: sahf 1430 mov ax,di 1431 mov DS:[StackPage*100h],ah 1432 mov DS:[StackPage*100h+0FFh],al 1433 mov byte ptr AppleSP,0FEh 1434 mov bl,ch 1435 DoNext 1436 CheckAddress 1437 1438 Opcode 60h ; RTS 1439 AddTiming 6 1440 call synchronize 1441 mov bx,AppleSP 1442 lahf 1443 inc bl 1444 mov si,[bx] 1445 inc bl 1446 mov AppleSP,bx 1447 jz RTS_10 1448 inc si 1449 sahf 1450 mov bl,ch 1451 DoNext 1452 RTS_10: mov bx,si 1453 mov bh,DS:[StackPage*100h] 1454 mov si,bx 1455 inc si 1456 sahf 1457 mov bl,ch 1458 DoNext 1459 CheckAddress 1460 1461 Opcode 00h ; BRK 1462 AddTiming 6 1463 lahf 1464 mov al,AppleFlags 1465 mov bl,al 1466 or al,00000100b 1467 mov AppleFlags,al 1468 mov al,ah 1469 and al,11000000b 1470 shl ax,1 1471 rol al,3 1472 ror ah,1 1473 rcr al,1 1474 or al,dh 1475 or al,bl 1476 mov bx,AppleSP 1477 inc si 1478 or bl,bl 1479 jz BRK_10 1480 dec bx 1481 mov [bx],si 1482 dec bl 1483 mov [bx],al 1484 dec bl 1485 sahf 1486 mov AppleSP,bx 1487 mov si,DS:[BRKvector] 1488 mov bl,ch 1489 DoNext 1490 BRK_10: sahf 1491 mov bx,si 1492 mov DS:[StackPage*100h],bh 1493 mov ah,bl 1494 mov DS:[StackPage*100h+0FEh],ax 1495 mov byte ptr AppleSP,0FDh 1496 mov si,DS:[BRKvector] 1497 mov bl,ch 1498 DoNext 1499 CheckAddress 1500 1501 Opcode 40h ; RTI 1502 AddTiming 6 1503 mov bx,AppleSP 1504 inc bl 1505 mov al,[bx] 1506 inc bl 1507 mov si,[bx] 1508 inc bl 1509 mov AppleSP,bx 1510 jz RTI_30 1511 RTI_05: mov dh,al 1512 and dh,01000001b 1513 mov bh,al 1514 cbw 1515 shr al,1 1516 ror ax,1 1517 ror ah,1 1518 mov al,AppleFlags 1519 mov bl,al 1520 and bx,0000110000110000b 1521 or bl,bh 1522 mov AppleFlags,bl 1523 xor al,bl 1524 test al,00001000b 1525 jnz RTI_10 1526 sahf 1527 mov bl,ch 1528 DoNext 1529 RTI_10: test bl,00001000b 1530 mov bl,ch 1531 jnz RTI_20 1532 jmp CLD_10 1533 RTI_20: jmp SED_10 1534 RTI_30: mov bx,si 1535 mov bh,DS:[StackPage*100h] 1536 mov si,bx 1537 jmp RTI_05 1538 CheckAddress 1539 1540 Opcode 48h ; PHA 1541 AddTiming 3 1542 mov bx,AppleSP 1543 mov [bx],dl 1544 lahf 1545 dec bl 1546 sahf 1547 mov AppleSP,bx 1548 mov bl,ch 1549 DoNext 1550 CheckAddress 1551 1552 Opcode 68h ; PLA 1553 AddTiming 6 1554 mov bx,AppleSP 1555 inc bl 1556 mov dl,[bx] 1557 mov AppleSP,bx 1558 or dl,dl 1559 mov bl,ch 1560 DoNext 1561 CheckAddress 1562 1563 Opcode 0DAh ; PHX **65C02** 1564 AddTiming 3 1565 mov bx,AppleSP 1566 mov [bx],cl 1567 lahf 1568 dec bl 1569 sahf 1570 mov AppleSP,bx 1571 mov bl,ch 1572 DoNext 1573 CheckAddress 1574 1575 Opcode 0FAh ; PLX **65C02** 1576 AddTiming 4 1577 mov bx,AppleSP 1578 inc bl 1579 mov cl,[bx] 1580 mov AppleSP,bx 1581 or cl,cl 1582 mov bl,ch 1583 DoNext 1584 CheckAddress 1585 1586 Opcode 5Ah ; PHY **65C02** 1587 AddTiming 3 1588 mov ax,bp 1589 mov bx,AppleSP 1590 mov [bx],al 1591 lahf 1592 dec bl 1593 sahf 1594 mov AppleSP,bx 1595 mov bl,ch 1596 DoNext 1597 CheckAddress 1598 1599 Opcode 7Ah ; PLY **65C02** 1600 AddTiming 4 1601 mov bx,AppleSP 1602 inc bl 1603 mov al,[bx] 1604 mov AppleSP,bx 1605 mov ah,ch 1606 mov bp,ax 1607 or al,al 1608 mov bl,ch 1609 DoNext 1610 CheckAddress 1611 1612 Opcode 08h ; PHP 1613 AddTiming 3 1614 lahf 1615 mov al,ah 1616 and al,11000000b 1617 shl ax,1 1618 rol al,3 1619 ror ah,1 1620 rcr al,1 1621 or al,dh 1622 or al,AppleFlags 1623 mov bx,AppleSP 1624 mov [bx],al 1625 dec bl 1626 sahf 1627 mov AppleSP,bx 1628 mov bl,ch 1629 DoNext 1630 CheckAddress 1631 1632 Opcode 28h ; PLP 1633 AddTiming 4 1634 mov bx,AppleSP 1635 inc bl 1636 mov al,[bx] 1637 mov AppleSP,bx 1638 mov dh,al 1639 and dh,01000001b 1640 mov bh,al 1641 cbw 1642 shr al,1 1643 ror ax,1 1644 ror ah,1 1645 mov al,AppleFlags 1646 mov bl,al 1647 and bx,0000110000110000b 1648 or bl,bh 1649 mov AppleFlags,bl 1650 xor al,bl 1651 test al,00001000b 1652 jnz PLP_10 1653 sahf 1654 mov bl,ch 1655 DoNext 1656 PLP_10: test bl,00001000b 1657 mov bl,ch 1658 jnz PLP_20 1659 jmp CLD_10 1660 PLP_20: jmp SED_10 1661 CheckAddress 1662 1663 Opcode 0E8h ; INX 1664 AddTiming 2 1665 inc cl 1666 DoNext 1667 CheckAddress 1668 1669 Opcode 0CAh ; DEX 1670 AddTiming 2 1671 dec cl 1672 DoNext 1673 CheckAddress 1674 1675 Opcode 0C8h ; INY 1676 AddTiming 2 1677 mov ax,bp 1678 inc al 1679 mov bp,ax 1680 DoNext 1681 CheckAddress 1682 1683 Opcode 88h ; DEY 1684 AddTiming 2 1685 mov ax,bp 1686 dec al 1687 mov bp,ax 1688 DoNext 1689 CheckAddress 1690 1691 Opcode 0AAh ; TAX 1692 AddTiming 2 1693 mov cl,dl 1694 or cl,cl 1695 DoNext 1696 CheckAddress 1697 1698 Opcode 0A8h ; TAY 1699 AddTiming 2 1700 mov ah,bl 1701 mov al,dl 1702 mov bp,ax 1703 or al,al 1704 DoNext 1705 CheckAddress 1706 1707 Opcode 8Ah ; TXA 1708 AddTiming 2 1709 mov dl,cl 1710 or dl,dl 1711 DoNext 1712 CheckAddress 1713 1714 Opcode 98h ; TYA 1715 AddTiming 2 1716 mov ax,bp 1717 mov dl,al 1718 or dl,dl 1719 DoNext 1720 CheckAddress 1721 1722 Opcode 0BAh ; TSX 1723 AddTiming 2 1724 mov cl,byte ptr AppleSP 1725 or cl,cl 1726 DoNext 1727 CheckAddress 1728 1729 Opcode 9Ah ; TXS 1730 AddTiming 2 1731 mov byte ptr AppleSP,cl 1732 DoNext 1733 CheckAddress 1734 1735 Opcode 18h ; CLC 1736 AddTiming 2 1737 rcr dh,1 1738 clc 1739 rcl dh,1 1740 DoNext 1741 CheckAddress 1742 1743 Opcode 38h ; SEC 1744 AddTiming 2 1745 rcr dh,1 1746 stc 1747 rcl dh,1 1748 DoNext 1749 CheckAddress 1750 1751 Opcode 0B8h ; CLV 1752 AddTiming 2 1753 rcr dh,1 1754 mov dh,bl 1755 rcl dh,1 1756 DoNext 1757 CheckAddress 1758 1759 Opcode 58h ; CLI 1760 AddTiming 2 1761 lahf 1762 and AppleFlags,11111011b 1763 sahf 1764 DoNext 1765 CheckAddress 1766 1767 Opcode 78h ; SEI 1768 AddTiming 2 1769 lahf 1770 or AppleFlags,00000100b 1771 sahf 1772 DoNext 1773 CheckAddress 1774 1775 Opcode 0D8h ; CLD 1776 AddTiming 2 1777 lahf 1778 and AppleFlags,11110111b 1779 CLD_10: sahf 1780 mov di,ds 1781 mov ax,cs 1782 mov ds,ax 1783 assume DS:Emulate 1784 mov al,0FCh ; 1785 Temp = 0 1786 REPT ADCcounter 1787 Temp = Temp+1 1788 IRP n,<%Temp> 1789 mov ADC&&n,al 1790 ENDM 1791 ENDM 1792 Temp = 0 1793 REPT SBCcounter 1794 Temp = Temp+1 1795 IRP n,<%Temp> 1796 mov SBC&&n,al 1797 ENDM 1798 ENDM 1799 mov ds,di 1800 assume DS:Apple 1801 DoNext 1802 CheckAddress 1803 1804 Opcode 0F8h ; SED 1805 AddTiming 2 1806 lahf 1807 or AppleFlags,00001000b 1808 SED_10: sahf 1809 mov di,ds 1810 mov ax,cs 1811 mov ds,ax 1812 assume DS:Emulate 1813 mov al,27h ; 1814 Temp = 0 1815 REPT ADCcounter 1816 Temp = Temp+1 1817 IRP n,<%Temp> 1818 mov ADC&&n,al 1819 ENDM 1820 ENDM 1821 mov al,2Fh ; 1822 Temp = 0 1823 REPT SBCcounter 1824 Temp = Temp+1 1825 IRP n,<%Temp> 1826 mov SBC&&n,al 1827 ENDM 1828 ENDM 1829 mov ds,di 1830 assume DS:Apple 1831 DoNext 1832 CheckAddress 1833 1834 Opcode 0EAh ; NOP 1835 AddTiming 2 1836 DoNext 1837 CheckAddress 1838 1839 ;------------------------------------------------------------------------------- 1840 1841 Opcode 02h ; ??? 1842 jmp RETapple 1843 BadOpcode: xchg bh,bl 1844 mov bl,SS:NotInstr[bx] 1845 lahf 1846 or bl,bl 1847 jns InvalidInst 1848 cmp word ptr [si],UserMask 1849 je JumpToUser 1850 and bl,7Fh 1851 InvalidInst: dec si 1852 add si,bx 1853 sahf 1854 mov bl,bh 1855 DoNext 1856 JumpToUser: add si,2 1857 lodsb 1858 mov bl,al 1859 shl bx,2 1860 sahf 1861 Save ds es 1862 pushf 1863 call SS:UserAdrs[bx] 1864 Restore ds es 1865 mov bl,0 1866 DoNext 1867 CheckAddress 1868 1869 Emulate ends 1870 1871 User segment public 1872 assume cs:User 1873 1874 BlankU: iret 1875 1876 DebugU: jmp far ptr RETapple 1877 1878 User ends 1879 1880 Data segment stack 'stack' 1881 1882 ; 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 1883 NotInstr db 0,0,2,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 00 00 - Debugger 1884 db 0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 10 8x - User 1885 db 0,0,4,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 20 1886 db 0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 30 1887 db 0,0,2,2,2,0,0,2,0,0,0,1,0,0,0,4 ; 40 1888 db 0,0,0,2,3,0,0,2,0,0,0,1,4,0,0,4 ; 50 1889 db 0,0,3,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 60 1890 db 0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 70 1891 db 0,0,3,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 80 1892 db 0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,4 ; 90 1893 db 0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,4 ; A0 1894 db 0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,4 ; B0 1895 db 0,0,2,2,0,0,0,2,0,0,0,1,0,0,0,4 ; C0 1896 db 0,0,0,2,2,0,0,2,0,0,0,1,3,0,0,4 ; D0 1897 db 0,0,2,2,0,0,0,2,0,0,0,1,0,0,0,4 ; E0 1898 db 0,0,0,2,3,0,0,2,0,0,0,1,3,0,0,84 ; F0 1899 1900 even 1901 UserAdrs dd DebugU,BlankU,BlankU,BlankU,BlankU,BlankU,BlankU,BlankU 1902 dd BlankU,BlankU,BlankU,BlankU,BlankU,BlankU,BlankU,BlankU 1903 dd 0F0h dup (BlankU) 1904 1905 Data ends 1906 1907 ;------------------------------------------------------------------------------- 1908 1909 WriteAllFreeSpace 1910 1911 End