L 1 ORG $B000 2 OBJ $800 3 ; 4 ; AUX (EXECUTE $B000) 5 ; ALL MUST JMP BACK!!!! 6 ; 7 NLS 8 ; 9 TEMP EQU $300 10 ; 11 CHTL EPZ $06 12 CHTH EPZ $07 13 HBASL EPZ $08 14 HBASH EPZ $09 15 ; 16 MEM/WH EPZ $0A 17 MEM/NM EPZ $0B 18 MEM/DR EPZ $0C 19 AUXMOV EQU $C311 20 ; 21 JMP MEMOVE 22 JMP PORT2C 23 JMP KEY/BR 24 JMP LG/PRT 25 JMP RAM 26 JMP RAM/DO 27 JMP MC 28 JMP MD 29 JMP ADJUST 30 NIX JMP NIX 31 ; 32 MD LDA #$05 33 BNE PATMC 34 MC LDA #$09 35 PATMC STA $C009 36 STA MEM/WH 37 LDA #$01 38 STA MEM/NM 39 LDA #$00 40 STA MEM/DR 41 STA REG/FG 42 LDY $9001 43 DEY 44 BNE SPMOVE 45 MEMOVE JSR SHIFT 46 STA $C009 47 JSR SHIFTB 48 LDY #$00 49 STY REG/FG 50 SPMOVE STY $3C 51 STY $42 52 LDY #$00 53 STY $C000 54 STY $3E 55 LDA MEM/WH 56 NT/BUK CMP #$02 57 BNE MEMREG 58 LDX MEM/NM 59 CPX #$07 60 BCC MEMREG 61 JMP MEM/GS 62 MEMREG ASL 63 ASL 64 TAX 65 MVQ LDA MEM/TB,X 66 STA TEMP,Y 67 INX 68 INY 69 CPY #$04 70 BNE MVQ 71 CLC 72 LDA TEMP+2 73 LDY MEM/NM 74 MVQ1 DEY 75 BEQ MVQ2 76 ADC TEMP 77 BNE MVQ1 78 MVQ2 STA TEMP+2 79 LDY #$01 80 LDA MEM/DR 81 BNE MVSK 82 INY 83 MVSK LDA TEMP,Y 84 STA $3D 85 CLC 86 ADC TEMP 87 STA $3F 88 LDA TEMP+1,Y 89 STA $43 90 DEC $3E 91 DEC $3F 92 JSR FIXADJ 93 LDA MEM/DR 94 ROR 95 LDA $C08B 96 LDA $C08B 97 JSR AUXMOV 98 STA $C008 99 LDA $C08A 100 JMP BACK 101 ; 102 MEM/TB HEX 01950295 103 HEX 01970897 104 HEX 10821082 105 HEX 10827082 106 HEX 10728072 107 HEX 10729072 108 HEX 1072A072 109 HEX 08820882 110 HEX 10207020 111 HEX 1072E072 112 ; 113 ADJUST JSR SHIFT 114 STA $C009 115 JSR SHIFTB 116 LDA #$80 117 STA REG/FG 118 LDY #$00 119 JMP SPMOVE 120 FIXADJ LDA REG/FG 121 BEQ FIX00 122 LDA MEM/DR 123 BEQ FIXTMN 124 FIXTAX CLC 125 LDA $00 126 STA $3C 127 ADC #$FF 128 STA $3E 129 LDA $01 130 STA $3D 131 ADC #$0F 132 STA $3F 133 RTS 134 FIXTMN LDA $00 135 STA $42 136 LDA $01 137 STA $43 138 FIX00 RTS 139 FIXGS LDA REG/FG 140 BEQ FIXGS0 141 LDA $00 142 STA GSX+1 143 STA GSC2+5 144 LDA $01 145 STA GSX+2 146 STA GSC2+6 147 FIXGS0 RTS 148 ; 149 ; 150 MEM/GS JSR SHIFT 151 STA $C008 152 JSR SHIFTB 153 LDA GST2,X 154 STA GSC1+2 155 STA GSC2+2 156 LDA GST3,X 157 STA GSC1+3 158 STA GSC2+3 159 LDA #$00 160 STA GSX+1 161 STA GSC2+5 162 LDA #$82 163 STA GSX+2 164 STA GSC2+6 165 JSR FIXGS 166 LDA MEM/DR 167 BEQ TOMAIN 168 TOAUX JSR GO_GS 169 HEX C230 170 LDX V0000 171 GSX HEX BF008200 172 GSC1 HEX 9F0040E0 173 INX 174 INX 175 CPX V1000 176 BNE GSX 177 GBACK HEX E230 178 LDA #$60 179 HEX 8FFF0100 180 STA $C003 181 STA $C005 182 HEX 5C 183 ADR *+3 184 HEX 00 185 LDA #$00 186 PHA 187 HEX AB 188 SEC 189 HEX FB 190 LDA #$FF 191 STA $3ED 192 LDA #$01 193 STA $3EE 194 CLV 195 CLC 196 JMP $C314 197 JMP BACK 198 ; 199 GO_GS CLC 200 HEX FB 201 HEX E230 202 HEX 5C 203 ADR *+3 204 HEX 01 205 LDA #$01 206 PHA 207 HEX AB 208 STA $C002 209 STA $C004 210 RTS 211 ; 212 TOMAIN JSR GO_GS 213 HEX C230 214 LDX V0000 215 GSC2 HEX BF0040E0 216 HEX 9F008200 217 INX 218 INX 219 CPX V1000 220 BNE GSC2 221 BEQ GBACK 222 V0000 HEX 0000 223 V1000 HEX 0010 224 GST2 HEX 00000000000000 225 HEX 60708090A0B0 226 HEX 405060708090A0B0 227 GST3 HEX 00000000000000 228 HEX E0E0E0E0E0E0 229 HEX E1E1E1E1E1E1E1E1 230 ; 231 SHIFT LDY #$4F 232 SHLP LDA $00,Y 233 STA $300,Y 234 DEY 235 BPL SHLP 236 RTS 237 SHIFTB LDY #$4F 238 SHBLP LDA $300,Y 239 STA $00,Y 240 DEY 241 BPL SHBLP 242 RTS 243 ; 244 V72 HEX 72 245 ; 246 ; 247 ; 248 PORT2C LDA $C09B 249 BEQ PORT2 250 STA $478 251 LDA $C09A 252 STA $479 253 PORT2 LDA $C0AB 254 BEQ PORT/F 255 STA $47C 256 LDA $C0AA 257 STA $47D 258 PORT/F JMP BACK 259 ; 260 ; 261 REG/FG HEX 00 262 ; 263 BCB HEX 00 264 BC1 HEX 00 265 BC2 HEX 00 266 BC3 HEX 00 267 UCFL HEX 00 268 CF HEX 00 269 ; 270 KEY/BR LDY #$00 271 STY BCB 272 STY BC3 273 DEY 274 BRL/KL STY CF 275 BRL/CL LDY #$F7 276 STY BC1 277 STY BC2 278 BRL/IL LDA $C000 279 BMI BRL/CF 280 JSR APPLES 281 INC BC1 282 BNE BRL/IL 283 INC BC2 284 BNE BRL/IL 285 LDY BC3 286 BEQ KEY/BR 287 LDY BCB 288 BEQ REAL/S 289 LDA BRL,Y 290 AND CF 291 BRL/FN LDX UCFL 292 BEQ NO/CAP 293 CMP #$60 294 BCC NO/CAP 295 SBC #$20 296 NO/CAP LDX UCFL 297 BMI RL/FNX 298 LDX #$00 299 STX UCFL 300 RL/FNX JMP BACK 301 REAL/S LDA #$20 302 BNE BRL/FN 303 BRL/CF INC BC3 304 LDX $C010 305 JSR APPLES 306 AND #$7F 307 CMP 'P 308 BEQ B/CAP 309 CMP 'Q 310 BEQ B/CAP 311 CMP #$20 312 BEQ BRL/SP 313 BCC BRL/FN 314 LDY #$15 315 CZ4 CMP BRTB2,Y 316 BEQ CZ3 317 DEY 318 BPL CZ4 319 JSR BEEP 320 JMP KEY/BR 321 CZ3 LDA BRTB3,Y 322 ORA BCB 323 STA BCB 324 JMP BRL/CL 325 BRL/SP LDY #$1F 326 JMP BRL/KL 327 B/CAP LDA UCFL 328 BNE B/C1 329 LDA #$20 330 B/C1 ASL 331 STA UCFL 332 JMP KEY/BR 333 APPLES PHA 334 LDA $C061 335 BPL CL/AP 336 LDA BCB 337 ORA #$18 338 STA BCB 339 CL/AP LDA $C062 340 BPL APP/0 341 LDA BCB 342 ORA #$03 343 STA BCB 344 APP/0 PLA 345 RTS 346 ; 347 BRTB3 HEX 00010204081020 348 HEX 010204081020 349 HEX 0000000000000000 350 HEX 00 351 BRTB2 ASC ' FDSJKL' 352 ASC 'MN;VBA' 353 ASC 'ZCX,./H8G' 354 ; 355 BEEP LDA #$40 356 JSR DELAY 357 LDY #$C0 358 BP LDA #$0C 359 JSR DELAY 360 LDA $C030 361 DEY 362 BNE BP 363 RTS 364 DELAY SEC 365 D1 PHA 366 D2 SBC #$01 367 BNE D2 368 PLA 369 SBC #$01 370 BNE D1 371 RTS 372 ; 373 ; 374 BACK PHA 375 LDA #$58 376 STA $3ED 377 LDA #$FF 378 STA $3EE 379 PLA 380 CLV 381 CLC 382 JMP $C314 383 ; 384 ; 385 BRL HEX 20613162276B326C 386 HEX 406369662F6D7370 387 HEX 22653368396F3672 388 HEX 5E646A673E6E7471 389 HEX 2C2A353C2D753876 390 HEX 2E255B242B782126 391 HEX 3B3A345C307A3728 392 HEX 5F3F775D2379293D 393 ; 394 ; 395 ; 396 ALLCON EQU $10C 397 SCR/TY EQU $10D 398 SCR/AX EQU $10E 399 DIRCOD EQU $10F 400 ; 401 PLACE EQU $320 402 ; 403 PSX EQU $140 404 PSY EQU PSX+1 405 PSL EQU PSX+2 406 XLIM EQU PSX+3 407 S/WID EQU PSX+8 408 S/LEN EQU PSX+9 409 S/FORM EQU PSX+10 410 S/INC EQU PSX+11 411 S/SZL EQU PSX+12 412 ; 413 SVPSY HEX 00 414 TLPCH HEX 00 415 TLPLM HEX 00 416 LPCH HEX 00 417 TPSX HEX 00 418 LEFT HEX 00 419 RIGHT HEX 00 420 ROW HEX 00 421 ROW/D HEX 00 422 TIM/VL HEX 09 423 ; 424 CLEAR& LDA #$00 425 STA $C054 426 STA $C057 427 STA $C050 428 STA $C052 429 CLEAR LDY #$00 430 STY PSX 431 STY PSY 432 STY PSL 433 STY HBASL 434 LDA #$20 435 STA HBASH 436 P11 LDA #$00 437 P1 STA (HBASL),Y 438 INY 439 BNE P1 440 INC HBASH 441 LDA HBASH 442 AND #$1F 443 BNE P11 444 RTS 445 ; 446 ; 447 YADD PHA 448 AND #$C0 449 STA HBASL 450 LSR 451 LSR 452 ORA HBASL 453 STA HBASL 454 PLA 455 STA HBASH 456 ASL 457 ASL 458 ASL 459 ROL HBASH 460 ASL 461 ROL HBASH 462 ASL 463 ROR HBASL 464 LDA HBASH 465 AND #$1F 466 ORA #$20 ;HR PAGE 1 467 STA HBASH 468 RTS 469 ; 470 ; 471 FDCHAR ASL 472 STA CHTL 473 LDA SCR/TY 474 AND #$01 475 ASL CHTL 476 ROL 477 ASL CHTL 478 ROL 479 TAX 480 LDA SCR/T3,X 481 STA CHTH 482 RTS 483 ; 484 CON/U LDX PSX 485 INX 486 CPX S/WID 487 BEQ CON/M 488 STX PSX 489 JMP BACK 490 ; 491 ; 492 LG/PRT STA $C001 493 JSR FREEZ 494 LDX $10F 495 STX DIRTY 496 AND #$7F 497 LDX ALLCON 498 BNE DOCHAR 499 CMP #$20 500 BCS DOCHAR 501 CMP #$0C 502 BEQ CON/L 503 CMP #$0D 504 BEQ CON/M 505 CMP #$08 506 BEQ CON/H 507 CMP #$07 508 BEQ CON/G 509 CMP #$15 510 BEQ CON/U 511 BNE ZILCH 512 DOCHAR JSR FDCHAR 513 JSR CHPLOT 514 INC PSX 515 LDA PSX 516 CMP S/WID 517 BEQ CON/M 518 ZILCH JMP BACK 519 CON/G JSR BEEP 520 JMP BACK 521 CON/L JSR CLEAR 522 JMP BACK 523 CON/M LDA #$00 524 STA PSX 525 INC PSL 526 CLC 527 LDA PSY 528 STA SVPSY 529 ADC S/INC 530 STA PSY 531 LDA PSL 532 CMP S/LEN 533 BCC CON/M0 534 DEC PSL 535 LDA SVPSY 536 STA PSY 537 JSR SCROLL 538 CON/M0 JMP BACK 539 ; 540 CON/H LDA PSX 541 BEQ CON/HX 542 DEC PSX 543 JMP BACK 544 CON/HX LDA PSY 545 BEQ CON/H0 546 LDX S/WID 547 DEX 548 STX PSX 549 SEC 550 SBC S/INC 551 STA PSY 552 DEC PSL 553 CON/H0 JMP BACK 554 ; 555 SOUND LDY #$0C 556 SLP LDA #$30 557 JSR $FCA8 558 LDA $C030 559 DEY 560 BPL SLP 561 RTS 562 ; 563 CHPLOT LDY #$00 564 ; 565 LEVEL1 STY LPCH 566 STY TLPCH 567 STY TLPLM 568 INC TLPLM 569 LDX PSX 570 STX TPSX 571 LDA (CHTL),Y 572 JSR SPLIT 573 ; 574 LEVEL2 LDA TLPCH 575 CMP TLPLM 576 BEQ CHLEV1 577 CLC 578 ADC PSY 579 JSR YADD 580 LDY TPSX 581 LDX #$00 582 ; 583 LEVEL3 LDA PLACE,X 584 DIRTY ORA (HBASL),Y 585 XOR SCR/AX 586 STA (HBASL),Y 587 INY 588 INX 589 CPX XLIM 590 BNE LEVEL3 591 ; 592 INC TLPCH 593 JMP LEVEL2 594 ; 595 CHLEV1 INC LPCH 596 LDY LPCH 597 CPY #$08 598 BNE LEVEL1 599 RTS 600 ; 601 SPLIT STA PLACE 602 LDX XLIM 603 DEX 604 BNE SPLIT2 605 RTS 606 SPLIT2 LDY #$00 607 JSR SPLITX 608 DEX 609 DEX 610 BNE SPLIT3 611 RTS 612 SPLIT3 LDY #$01 613 JSR SPLITX 614 CPX #$04 615 BNE SPLIT4 616 RTS 617 SPLIT4 LDY #$03 618 JSR SPLITX 619 RTS 620 ; 621 ; 622 SPLITX LDA PLACE,Y 623 JSR SHDO 624 TYA 625 ASL 626 TAX 627 LDA RIGHT 628 STA PLACE+1,X 629 LDA LEFT 630 STA PLACE,X 631 DEY 632 BPL SPLITX 633 ASL TPSX 634 ASL TLPCH 635 ASL TLPLM 636 LDX XLIM 637 RTS 638 ; 639 SHDO STA TEMP 640 LDX #$00 641 STX LEFT 642 STX RIGHT 643 AND #$7F 644 SH0 ASL 645 BCS SH2 646 JSR NBIT 647 JSR NBIT 648 JMP SH3 649 SH2 JSR PBIT 650 JSR PBIT 651 SH3 INX 652 CPX #$08 653 BNE SH0 654 LDA TEMP 655 BPL SH4 656 JSR NBIT 657 SH4 JSR NBIT 658 LSR LEFT 659 RTS 660 PBIT SEC 661 BCS NB1 662 NBIT CLC 663 NB1 ROL LEFT 664 ROL RIGHT 665 RTS 666 ; 667 SCR/T3 HEX BABBBCBDBABEBFBF 668 ; 669 ; 670 SCROLL LDA #$FF 671 STA ROW 672 CLC 673 ADC S/INC 674 STA ROW/D 675 LOOP INC ROW 676 INC ROW/D 677 LDA ROW/D 678 CMP #$C0 679 BEQ DONE 680 LDY #$0C 681 JSR DOROW 682 LDY #$0E 683 LDA ROW 684 JSR DOROW 685 LDY #$27 686 INLP LDA ($0C),Y 687 STA ($0E),Y 688 DEY 689 BPL INLP 690 BMI LOOP 691 DONE LDA ROW 692 LDY #$0E 693 JSR DOROW 694 LDY #$27 695 LDA #$00 696 ZRLP STA ($0E),Y 697 DEY 698 BPL ZRLP 699 INC ROW 700 LDA ROW 701 CMP #$C0 702 BNE DONE 703 LDX TIM/VL 704 TMLP CPX #$09 705 BEQ TIMDN 706 LDA #$A0 707 JSR DELAY 708 INX 709 BPL TMLP 710 TIMDN RTS 711 ; 712 ; 713 DOROW PHA 714 AND #$07 715 ASL 716 ASL 717 STA $01,Y 718 PLA 719 LSR 720 LSR 721 LSR 722 ASL 723 TAX 724 LDA TABLE,X 725 STA $00,Y 726 CLC 727 LDA TABLE+1,X 728 ADC $01,Y 729 STA $01,Y 730 RTS 731 ; 732 TABLE HEX 0020802000218021 733 HEX 0022802200238023 734 HEX 2820A8202821A821 735 HEX 2822A8222823A823 736 HEX 5020D0205021D021 737 HEX 5022D0225023D023 738 ; 739 ; 740 FREEZ PHA 741 LDX $C000 742 CPX #$93 743 BNE FREZ1 744 STX $C010 745 FREZ2 LDX $C000 746 BPL FREZ2 747 FREZ1 LDA $C061 748 BMI FREZ1 749 LDA $C062 750 BPL FREZ0 751 LDA #$A0 752 JSR DELAY 753 LDA $C000 754 ORA #$80 755 CMP #$B1 756 BCC FREZ0 757 CMP #$BA 758 BCS FREZ0 759 AND #$0F 760 STA TIM/VL 761 LDX $C010 762 FREZ0 PLA 763 RTS 764 ; 765 ; 766 DR/PER EQU $0362 767 LOWLOW HEX 00 768 LOW HEX 00 769 HIGH HEX 00 770 BANKS HEX 00 771 DR/TEM HEX 00 772 NOISE HEX 00 773 TB/VT HEX 000306090C0F121518 774 TBDRS HEX 00 775 HEX 000101010202 776 HEX 020303030404 777 HEX 040505050606 778 HEX 060707070808 779 ; 780 ; 781 RAM JSR GO_GS 782 LDA $FE 783 STA NOISE 784 LDA $FF 785 BMI RAM1 786 HEX AF011003 787 CMP #$11 788 BNE RAM1 789 HEX AF021003 790 CMP #$0F 791 BNE RAM1 792 JMP RAM/OK 793 RAM1 HEX E230 794 HEX 8B 795 LDX #$1C 796 RM2 HEX DAAB 797 INX 798 STX $300 799 DEX 800 DEX 801 CPX #$01 802 BNE RM2 803 LDX #$02 804 RM4 HEX DAAB 805 INX 806 CPX $300 807 BNE RM3 808 CPX #$1C 809 BNE RM4 810 RM3 HEX AB 811 DEX 812 DEX 813 DEX 814 STX BANKS 815 TXA 816 BEQ NORAM 817 LDA #$00 818 STA $00 819 LDA TBDRS,X 820 STA DR/PER 821 BEQ RAM/OK 822 LDA DR/PER 823 STA DR/TEM 824 CMP TBDRS-1,X 825 BEQ QK/LP 826 LDA #$80 827 STA $00 828 QK/LP JSR RAM/ST 829 LDA #$00 830 STA $00 831 DEC DR/TEM 832 BNE QK/LP 833 LDA DR/PER 834 HEX 8F041003 835 RAM/OK HEX AF041003 836 NORAM STA $00 837 JMP GBACK 838 ; 839 RAM/ST HEX 8B 840 LDX DR/TEM 841 LDA TB/VT,X 842 PHA 843 HEX AB 844 LDA #$00 845 STA $06 846 LDA #$10 847 STA $07 848 ST/ML LDY #$00 849 LDA #$00 850 ST/IL STA ($06),Y 851 INY 852 BNE ST/IL 853 LDY #$01 854 LDA #$11 855 STA ($06),Y 856 INY 857 LDA $07 858 SEC 859 SBC #$11 860 STA ($06),Y 861 INC $07 862 LDA $07 863 CMP #$20 864 BNE ST/ML 865 LDA #$00 866 STA $1101 867 STA $1102 868 LDA #$04 869 STA $1000 870 LDA #$11 871 STA $1001 872 LDA #$0F 873 STA $1002 874 LDA #$03 875 STA $1003 876 STX $1006 877 LDA #$7A 878 STA $1027 879 LDA #$FF 880 STA $1030 881 STA $1031 882 LDA #$32 883 STA $1034 884 LDA #$10 885 STA $1035 886 LDA #$01 887 STA $1037 888 LDX #$40 889 LDA #$FF 890 VTOC STA $1000,X 891 STA $1001,X 892 INX 893 INX 894 INX 895 INX 896 BNE VTOC 897 LDA #$00 898 STA $107C 899 STA $107D 900 LDA $00 901 BEQ NORMAL 902 LDX #$C0 903 LDA #$00 904 SP_CL STA $1000,X 905 INX 906 BNE SP_CL 907 NORMAL HEX AB 908 RTS 909 ; 910 CONTRL EQU $B9E0 911 C_DRIV EQU CONTRL+2 912 C_TRCK EQU CONTRL+4 913 C_SECT EQU CONTRL+5 914 C_COMM EQU CONTRL+12 915 C_BFL EQU CONTRL+8 916 C_BFH EQU CONTRL+9 917 ; 918 RM/ERR LDA #$FF 919 STA $00 920 LDA #$00 921 PHA 922 HEX AB ;PLB 923 LDA #$40 924 LDY #$0D 925 STA ($48),Y 926 JMP GBACK 927 ; 928 ; 929 RAM/DO JSR GO_GS 930 LDA NOISE 931 BPL QUIET 932 JSR RSOUN 933 QUIET HEX C230A91800A0 934 ADR CONTRL 935 LDX $48 936 HEX 540100E230 937 ;MOVE 24 $48 -> $01B9E0 938 LDA C_COMM 939 CMP #$04 940 BEQ RM/ERR 941 LDA C_DRIV 942 BEQ RM/ERR 943 HEX CF041003 944 BEQ RM/OK 945 BCS RM/ERR 946 RM/OK CLC 947 ADC C_DRIV 948 ADC C_DRIV 949 SEC 950 SBC #$01 951 PHA 952 LDA C_TRCK 953 STA LOW 954 LDA #$00 955 STA HIGH 956 JSR R_ROT 957 JSR R_ROT 958 JSR R_ROT 959 JSR R_ROT 960 PLA 961 CLC 962 ADC HIGH 963 STA HIGH 964 STA QR+2 965 STA QW+1 966 CLC 967 LDA LOW 968 ADC C_SECT 969 STA LOW 970 ; 971 HEX AFF70700 972 PHA 973 LDA C_COMM 974 CMP #$02 975 BEQ WRITE 976 READ LDA #$D2 977 HEX 8FF70700 978 HEX C230 979 HEX A9FF00 980 LDX LOWLOW 981 LDY C_BFL 982 QR HEX 540002 983 JMP R_DONE 984 WRITE LDA #$57 985 HEX 8FF70700 986 HEX C230 987 HEX A9FF00 988 LDX C_BFL 989 LDY LOWLOW 990 QW HEX 540200 991 ; 992 ; 993 R_DONE HEX E230 994 LDA #$01 995 PHA 996 HEX AB 997 PLA 998 HEX 8FF70700 999 LDA #$00 1000 STA $00 1001 JMP GBACK 1002 ; 1003 R_ROT ASL LOW 1004 ROL HIGH 1005 RTS 1006 RSOUN LDX #$E0 1007 S1 HEX AF30C000 1008 TXA 1009 TAY 1010 S2 INY 1011 NOP 1012 NOP 1013 NOP 1014 BNE S2 1015 INX 1016 BNE S1 1017 RTS 1018 ; 1019 XX HEX 00 1020 ; 1021 END !