LOAD REPLACE.ASM BLOAD REPLACE.ASM,A$1800 !L 1 ORG $7200 2 OBJ $800 3 ; 4 ;----------->>> MOD3 5 ; 6 NLS 7 ; 8 Z1A EPZ $1A 9 Z1C EPZ $1C 10 Z1E EPZ $1E 11 TAB EPZ $4A 12 ; 13 ; 14 VOC/FG EQU $1E02 15 VOC/TY EQU $1E09 16 SHOWCC EQU $1E13 17 SCR/TY EQU $1E08 18 KEY/UC EQU $1E1A 19 MODE^ EQU $1E11 20 LET/MD EQU $1E0D 21 ADVANC EQU $1E41 22 ABLOC EQU $1E4E 23 BTINIT EQU $E03 24 ; 25 ; 26 PRCR EQU $FD8E 27 BUF EQU $8200 28 DIR EQU $9500 29 HIBUF EQU $2000 30 ; 31 JMP START 32 SIZE HEX 0000 33 JMP CSTART 34 JMP LOAD1 35 JMP LOAD2 36 JMP SAVE 37 RPCT HEX 00 38 CT1 HEX 00 39 CT2 HEX 00 40 LOCFLG HEX 00 41 SEP HEX 00 42 LET HEX 00 43 ONLEV HEX 00 44 LOGL1 HEX 00 45 LOGL2 HEX 00 46 LEN1 HEX 00 47 LEN2 HEX 00 48 OFF/FG HEX 00 49 SAV/FG HEX 00 50 PAGEN HEX FF 51 SV/Z1C HEX 0000 52 CASEPT HEX 00 53 SVTAB HEX 0000 54 NUM\F HEX 00 55 NUM\T HEX 00 56 NUM\L HEX 00 57 NUM\FF HEX 00 58 LOCK HEX 00 59 DIF HEX 0000 60 ; 61 ; 62 OUT RTS 63 ; 64 ; 65 START INC PAGEN 66 JSR CL/TAB 67 LDY #$00 68 LDA (TAB),Y 69 STA SEP 70 JSR INC06 71 LDA (TAB),Y 72 CMP SEP 73 BNE BIG/LP 74 JMP DO/LOG 75 BIG/LP LDY #$00 76 LDA (TAB),Y 77 CMP SEP 78 BEQ OUT 79 ; 80 JSR GT/FRM 81 LDA NUM\F 82 STA NUM\FF 83 JSR GT/TO 84 ; 85 JSR CL/CUR 86 SML/LP JSR SEARCH 87 BNE MISS 88 JSR REPLAC 89 LDA DIF+1 90 BPL PLACE 91 LDA DIF 92 JSR ADD/1C 93 ; 94 MISS JSR ADV/1 95 PLACE JSR ABORT 96 LDY #$00 97 LDA (Z1C),Y 98 BMI BIG/LP 99 BPL SML/LP 100 ; 101 ;/\/\/\/\/\/\/\/\/\/\/\/\/\ 102 ; 103 DO/LOG JSR INC06 104 JSR GT/ON 105 JSR GT/OFF 106 LDA PAGEN 107 BNE ST/LOG 108 LDA #$00 109 STA OFF/FG 110 LDA ON 111 CMP SEP 112 BEQ ST/LOG 113 LDA #$80 114 STA OFF/FG 115 ; 116 ST/LOG LDA OFF/FG 117 STA SAV/FG 118 BG/LOG JSR GT/FRM 119 JSR GT/LOG 120 JSR LOG/CK 121 BCC L/OUT 122 LDA $8200 123 BMI L/OUT 124 LDA FROM 125 CMP SEP 126 BNE AM/LOG 127 LDA LOGIC 128 CMP SEP 129 BEQ L/OUT 130 AM/LOG JSR GT/TO 131 JSR CL/CUR 132 LDA SAV/FG 133 STA OFF/FG 134 BNE ON/LP 135 ; 136 SM/LOG JSR CH/OFF 137 BEQ ON/LPP 138 ; 139 JSR LOG/SR 140 BNE MS/LOG 141 JSR LOG/RP 142 LDA DIF+1 143 BPL PL/LOG 144 LDA DIF 145 JSR ADD/1C 146 MS/LOG JSR ADV/1 147 PL/LOG JSR ABORT 148 LDY #$00 149 LDA (Z1C),Y 150 BMI BG/LOG 151 BPL SM/LOG 152 ; 153 ON/LP JSR CH/ON 154 BNE ON/LPP 155 TYA 156 JSR ADD/1C 157 LDA #$00 158 STA OFF/FG 159 JMP PL/LOG 160 ON/LPP JSR ADV/1 161 LDA #$80 162 STA OFF/FG 163 LDY #$00 164 LDA (Z1C),Y 165 BPL ON/LP 166 BMI BG/LOG 167 ; 168 ; 169 ; 170 CL/CUR LDA #BUF 171 STA Z1C 172 LDA /BUF 173 STA Z1C+1 174 L/OUT RTS 175 CL/TAB LDA #BUFFER 176 STA TAB 177 LDA /BUFFER 178 STA TAB+1 179 LDA LOCFLG 180 BEQ SET1X 181 LDA #HIBUF 182 STA TAB 183 LDA /HIBUF 184 STA TAB+1 185 SET1X RTS 186 ; 187 GT/FRM LDY #$FF 188 GTF INY 189 LDA (TAB),Y 190 STA FROM,Y 191 CMP SEP 192 BNE GTF 193 STY NUM\F 194 JSR INC06 195 RTS 196 ; 197 GT/TO LDY #$FF 198 GTT INY 199 LDA (TAB),Y 200 STA TO,Y 201 CMP SEP 202 BNE GTT 203 STY NUM\T 204 JSR INC06 205 SEC 206 LDA NUM\T 207 SBC NUM\FF 208 STA DIF 209 ROR DIF+1 210 BMI GTX 211 LDA DIF 212 EOR #$FF 213 TAX 214 INX 215 STX DIF 216 GTX RTS 217 ; 218 GT/LOG LDY #$FF 219 GTL INY 220 LDA (TAB),Y 221 STA LOGIC,Y 222 CMP SEP 223 BNE GTL 224 STY NUM\L 225 JSR INC06 226 RTS 227 ; 228 GT/ON LDY #$FF 229 GTON INY 230 LDA (TAB),Y 231 STA ON,Y 232 CMP SEP 233 BNE GTON 234 JMP INC06 235 ; 236 GT/OFF LDY #$FF 237 GTOFF INY 238 LDA (TAB),Y 239 STA OFF,Y 240 CMP SEP 241 BNE GTOFF 242 JMP INC06 243 ; 244 LOG/SR LDA LOGIC 245 CMP SEP 246 BEQ SEARCH 247 LDY #$FF 248 LOGSR INY 249 LDA LOGIC,Y 250 CMP SEP 251 BEQ LOGSRX 252 JSR DOIT 253 BEQ LOGSR 254 LOGSRX STY CASEPT 255 RTS 256 ; 257 SEARCH LDY #$FF 258 SR1 INY 259 LDA FROM,Y 260 CMP SEP 261 BEQ SR/FIN 262 CMP (Z1C),Y 263 BEQ SR1 264 SR/FIN STY CASEPT 265 RTS 266 ; 267 CH/ON LDA ON 268 CMP SEP 269 BEQ NIX/CH 270 LDY #$FF 271 CHON INY 272 LDA ON,Y 273 CMP SEP 274 BEQ CHONX 275 CMP (Z1C),Y 276 BEQ CHON 277 CHONX RTS 278 ; 279 CH/OFF LDA OFF 280 CMP SEP 281 BEQ NIX/CH 282 LDY #$FF 283 CHOFF INY 284 LDA OFF,Y 285 CMP SEP 286 BEQ CHOFFX 287 CMP (Z1C),Y 288 BEQ CHOFF 289 CHOFFX RTS 290 NIX/CH LDY #$7F 291 RTS 292 ; 293 DOIT AND #$1F 294 ASL 295 TAX 296 LDA #$00 297 STA CASEB,Y 298 LDA LGADD+1,X 299 PHA 300 LDA LGADD,X 301 PHA 302 LDA (Z1C),Y 303 JSR TYPE 304 RTS 305 ; 306 LGADD ADR X@-1 307 ADR A-1 308 ADR B-1 309 ADR C-1 310 ADR D-1 311 ADR E-1 312 ADR F-1 313 ADR G-1 314 ADR H-1 315 ADR I-1 316 ADR J-1 317 ADR K-1 318 ADR L-1 319 ADR M-1 320 ADR N-1 321 ADR O-1 322 ADR P-1 323 ADR Q-1 324 ADR R-1 325 ADR S-1 326 ADR T-1 327 ADR U-1 328 ADR V-1 329 ADR W-1 330 ADR X-1 331 ADR Y-1 332 ADR Z-1 333 ADR X\\-1 334 ADR X<-1 335 ADR X=-1 336 ADR X>-1 337 ADR X_-1 338 ; 339 X@ HEX 00 340 F HEX 00 341 G HEX 00 342 H HEX 00 343 J HEX 00 344 K HEX 00 345 M HEX 00 346 R HEX 00 347 T HEX 00 348 V HEX 00 349 X\\ HEX 00 350 X= HEX 00 351 X_ HEX 00 352 ; 353 O CPX #$FF 354 BEQ OREV 355 CMP FROM,Y 356 OREV JMP REV 357 X CMP FROM,Y 358 RTS 359 I XOR FROM,Y 360 AND #$DF 361 RTS 362 S CPX #$01 363 RTS 364 L CPX #$01 365 BEQ UX 366 U CPX #$02 367 UX RTS 368 Y CPX #$02 369 BEQ UX 370 CPX #$01 371 YY BNE UX 372 LDA #$20 373 STA CASEB,Y 374 LDX #$00 375 RTS 376 Z CPX #$01 377 BEQ UX 378 CPX #$02 379 JMP YY 380 A JSR L 381 BEQ UX 382 N CPX #$03 383 RTS 384 D CMP #$0D 385 BEQ BX 386 B CMP #$20 387 BX RTS 388 Q JSR D 389 BEQ PX 390 P CPX #$04 391 PX RTS 392 C CPX #$05 393 RTS 394 W JSR X> 395 JMP REV 396 E JSR X> 397 BEQ REVX 398 JSR D 399 REV BEQ REVX 400 LDX #$00 401 RTS 402 REVX LDX #$01 403 RTS 404 X< LDA Z1C 405 BNE X CPX #$FF 410 RTS 411 ; 412 ; 413 LOG/RP LDA Z1C 414 STA SV/Z1C 415 LDA Z1C+1 416 STA SV/Z1C+1 417 LDY #$00 418 CASE/C CPY CASEPT 419 BEQ LOG/RR 420 LDA (Z1C),Y 421 XOR CASEB,Y 422 STA (Z1C),Y 423 INY 424 BNE CASE/C 425 LOG/RR LDX LOGL2 426 INX 427 TXA 428 CLC 429 ADC Z1C 430 STA Z1C 431 BCC REP/RG 432 INC Z1C+1 433 REP/RG JSR REPLAC 434 LDA SV/Z1C 435 STA Z1C 436 LDA SV/Z1C+1 437 STA Z1C+1 438 RTS 439 ; 440 REPLAC JSR SHIFT 441 LDY $C030 442 INC CT1 443 BNE HZ 444 INC CT2 445 HZ LDY #$00 446 PUT2 LDA TO,Y 447 CMP SEP 448 BEQ REP/Q 449 STA (Z1C),Y 450 INY 451 BNE PUT2 452 REP/Q RTS 453 ; 454 ADV/1 INC Z1C 455 BNE ADV 456 INC Z1C+1 457 ADV RTS 458 ; 459 ADD/1C CLC 460 ADC Z1C 461 STA Z1C 462 BCC ADDX 463 INC Z1C+1 464 ADDX RTS 465 ; 466 SHIFT LDA DIF 467 BEQ SHF/X 468 CLC 469 LDA SIZE 470 ADC #BUF 471 STA Z1A 472 LDA SIZE+1 473 ADC /BUF 474 STA Z1A+1 475 LDA DIF+1 476 BPL SHIFTB 477 SHIFTF LDY #$00 478 LDA (Z1A),Y 479 LDY DIF 480 STA (Z1A),Y 481 LDA Z1A 482 BNE SHF2 483 DEC Z1A+1 484 SHF2 DEC Z1A 485 LDA Z1A 486 CMP Z1C 487 BNE SHIFTF 488 LDA Z1A+1 489 CMP Z1C+1 490 BNE SHIFTF 491 LDY #$00 492 LDA (Z1A),Y 493 LDY DIF 494 STA (Z1A),Y 495 CLC 496 LDA SIZE 497 ADC DIF 498 STA SIZE 499 BCC SHF5 500 INC SIZE+1 501 SHF5 LDA SIZE+1 502 CMP #$10 503 BNE SHF/X 504 JMP SOUND 505 SHF/X RTS 506 SHIFTB LDA Z1C 507 STA Z1E 508 LDA Z1C+1 509 STA Z1E+1 510 SHB1 LDY DIF 511 LDA (Z1E),Y 512 LDY #$00 513 STA (Z1E),Y 514 INC Z1E 515 BNE SHB2 516 INC Z1E+1 517 SHB2 LDA Z1E 518 CMP Z1A 519 BNE SHB1 520 LDA Z1E+1 521 CMP Z1A+1 522 BNE SHB1 523 SEC 524 LDA SIZE 525 SBC DIF 526 STA SIZE 527 LDA SIZE+1 528 SBC #$00 529 STA SIZE+1 530 RTS 531 SOUND TXA 532 LDY #$06 533 INNER ROL 534 PHA 535 BCC SKSH 536 TYA 537 JSR $FCA8 538 LDA $C030 539 SKSH PLA 540 INY 541 CPY #$0E 542 BNE INNER 543 INX 544 BNE SOUND 545 LDA $C000 546 BPL SOUND 547 PLA 548 PLA 549 JMP ABC 550 ; 551 ABORT LDA $C000 552 BMI AB2 553 AB3 RTS 554 AB2 CMP #$9B 555 BNE AB3 556 ABC STA ABLOC 557 LDX $C010 558 PLA 559 PLA 560 RTS 561 ; 562 ; 563 ; 564 ; 565 ; 566 PRMON ORA #$80 567 JMP $FDED 568 CSTART LDA #$00 569 STA CT1 570 STA CT2 571 STA RPCT 572 LDA LOCFLG 573 BNE FILE 574 JSR I/O 575 GETTB LDX #$00 576 JSR LITCR 577 JSR CHARIN 578 AND #$7F 579 CMP #$08 580 BNE GETON 581 STA LOCK 582 LDX #$03 583 JSR LITCR 584 JMP GETTB 585 GETON STA SEP 586 JSR PRMXX 587 JSR CL/TAB 588 LDA SEP 589 LDY #$00 590 STA (TAB),Y 591 JSR INC06 592 CS3 LDX #$01 593 JSR LITCR 594 JSR STRING 595 CPY #$00 596 BEQ INFIN 597 LDX #$02 598 JSR LITCR 599 JSR STRING 600 INC RPCT 601 JMP CS3 602 INFIN LDA ADVANC 603 BEQ LOG/FN 604 LDA RPCT 605 BEQ LOG/BG 606 LOG/FN SEC 607 LDA TAB 608 SBC #BUFFER 609 STA LEN1 610 LDA TAB+1 611 SBC /BUFFER 612 STA LEN2 613 FIN RTS 614 FILE LDA #$01 615 STA RPCT 616 RTS 617 ; 618 LOG/BG LDX #$04 619 JSR LITCR 620 LDX #$06 621 JSR LITCR 622 JSR STRING 623 LDX #$07 624 JSR LITCR 625 JSR STRING 626 LOG/GT LDA TAB 627 STA SVTAB 628 LDA TAB+1 629 STA SVTAB+1 630 LDX #$01 631 JSR LITCR 632 JSR STRING 633 STY NUM\F 634 LDX #$05 635 JSR LITCR 636 JSR STRING 637 STY NUM\L 638 CLC 639 TYA 640 ADC NUM\F 641 BEQ LOG/FN 642 JSR LOG/CK 643 BCC LOG/GT 644 LDX #$02 645 JSR LITCR 646 JSR STRING 647 INC RPCT 648 LDA RPCT 649 AND #$01 650 BNE LOG/GT 651 LDA #$0C 652 JSR PRMON 653 JMP LOG/GT 654 ; 655 LOG/CK LDA #$FF 656 STA LOGL2 657 LDA NUM\F 658 STA NUM\FF 659 LDY NUM\L 660 BEQ LOG/OK 661 LCK1 DEY 662 BMI LOG/NT 663 LDA LOGIC,Y 664 LDX #ENDTAB-LOGTB+1 665 LCK3 CMP LOGTB,X 666 BEQ LCK1 667 DEX 668 BPL LCK3 669 CMP '^ 670 BNE LOG/PB 671 STY LOGL2 672 BPL LCK1 673 LOG/PB LDX #$08 674 LOG/P2 JSR LITCR 675 LDA SVTAB 676 STA TAB 677 LDA SVTAB+1 678 STA TAB+1 679 CLC 680 RTS 681 LOG/OK SEC 682 RTS 683 NEW/PB LDX #$0A 684 BNE LOG/P2 685 LOG/NT LDA LOGL2 686 BPL CARET 687 LDY NUM\L 688 BEQ LOG/OK 689 NT1 DEY 690 BMI NEW/PB 691 LDA LOGIC,Y 692 JSR TYPE 693 CPX #$01 694 BNE NT1 695 STY LOGL1 696 NT2 DEY 697 STY LOGL2 698 BMI TRAP 699 LDA LOGIC,Y 700 JSR TYPE 701 CPX #$01 702 BEQ NT2 703 NT3 DEY 704 BMI TRAP 705 LDA LOGIC,Y 706 JSR TYPE 707 CPX #$01 708 BNE NT3 709 BEQ LOG/PB 710 ; 711 CARET LDX NUM\L 712 DEX 713 CPX NUM\F 714 BNE ERR9 715 STX NUM\L 716 LDA #$00 717 STA NUM\FF 718 LDY LOGL2 719 CAR/LP LDA LOGIC+1,Y 720 STA LOGIC,Y 721 INY 722 CMP SEP 723 BNE CAR/LP 724 DEC LOGL2 725 SEC 726 RTS 727 ; 728 TRAP SEC 729 LDA LOGL1 730 SBC LOGL2 731 STA NUM\FF 732 LDA NUM\F 733 CMP NUM\L 734 BEQ LOG/OK 735 ERR9 LDX #$09 736 JMP LOG/P2 737 ; 738 ; 739 STRING LDY #$7F 740 STRX LDA #$20 741 STA (TAB),Y 742 DEY 743 BPL STRX 744 LDY #$FF 745 HJ1 INY 746 JSR CHARIN 747 AND #$7F 748 LDX LOCK 749 BNE HJX 750 CMP #$08 751 BEQ CONH 752 CMP #$15 753 BEQ CONU 754 HJX JSR PRMXX 755 AND #$7F 756 STA (TAB),Y 757 STA LOGIC,Y 758 CPY #$64 759 BEQ HJ3 760 CMP SEP 761 BNE HJ1 762 HJ3 LDA SEP 763 STA (TAB),Y 764 INC06 SEC 765 TYA 766 ADC TAB 767 STA TAB 768 BCC HJ2 769 INC TAB+1 770 HJ2 RTS 771 CONH CPY #$00 772 BEQ STRING 773 DEY 774 DEY 775 CONU JSR PRMON 776 JMP HJ1 777 I/O LDA #$00 778 STA KEY/UC 779 LDA SCR/TY 780 CMP #$06 781 BCS SCRX 782 LDA VOC/FG 783 BEQ SCRQ 784 LDA VOC/TY 785 CMP #$01 786 BEQ SCRX 787 SCRQ LDA #$06 788 STA SCR/TY 789 SCRX JMP BTINIT 790 ; 791 LOAD1 LDA #$00 792 STA $3C 793 STA $42 794 LDA /BUF 795 STA $3D 796 LDA /HIBUF 797 STA $43 798 LDA DIR+4 799 STA $3E 800 CLC 801 LDA DIR+5 802 ADC /BUF 803 STA $3F 804 LDY #$00 805 JMP $FE2C 806 ; 807 LOAD2 LDA #$00 808 STA $3C 809 LDA /BUF 810 STA $3D 811 LDA DIR+4 812 STA $42 813 CLC 814 LDA DIR+5 815 ADC /HIBUF 816 STA $43 817 LDA DIR+7 818 STA $3E 819 CLC 820 LDA DIR+8 821 ADC /BUF 822 STA $3F 823 LDY #$00 824 JMP $FE2C 825 ; 826 SAVE LDA #$01 827 STA DIR 828 STA DIR+3 829 LDA LEN1 830 STA DIR+4 831 LDA LEN2 832 STA DIR+5 833 CLC 834 LDA #BUFFER 835 STA $3C 836 ADC LEN1 837 STA $3E 838 LDA /BUFFER 839 STA $3D 840 ADC LEN2 841 STA $3F 842 LDA #$00 843 STA $42 844 LDA /BUF 845 STA $43 846 LDY #$00 847 JMP $FE2C 848 ; 849 ; 850 PRMXX ORA #$80 851 LDX #$80 852 STX LET/MD 853 STX SHOWCC 854 LDX #$00 855 STX MODE^ 856 JSR $FDED 857 LDX #$00 858 STX LET/MD 859 STX SHOWCC 860 LDX #$01 861 STX MODE^ 862 RTS 863 ; 864 CHARIN JSR $FD18 865 AND #$7F 866 RTS 867 ; 868 ; 869 TYPE PHA 870 CMP #$FF 871 BEQ FF/PAT 872 AND #$7F 873 TAX 874 LDA TTYPE,X 875 FF/PAT TAX 876 PLA 877 RTS 878 TTYPE HEX 0505050505050505 879 HEX 0505050505050505 880 HEX 0505050505050505 881 HEX 0505050505050505 882 HEX 0004040404040404 883 HEX 0404040404040404 884 HEX 0303030303030303 885 HEX 0303040404040404 886 HEX 0402020202020202 887 HEX 0202020202020202 888 HEX 0202020202020202 889 HEX 0202020404040404 890 HEX 0401010101010101 891 HEX 0101010101010101 892 HEX 0101010101010101 893 HEX 0101010404040405 894 ; 895 LITCR JSR PRCR 896 LITOUT LDA LTB,X 897 CLC 898 ADC #LIT1 899 STA Z1E 900 LDA #$00 901 ADC /LIT1 902 STA Z1E+1 903 LDY #$00 904 LO1 LDA (Z1E),Y 905 BEQ LO2 906 JSR PRMON 907 INY 908 BNE LO1 909 LO2 LDA #$00 910 STA $AA52 911 RTS 912 LTB BYT LIT1-LIT1 913 BYT LIT2-LIT1 914 BYT LIT3-LIT1 915 BYT LIT4-LIT1 916 BYT LIT5-LIT1 917 BYT LIT6-LIT1 918 BYT LIT7-LIT1 919 BYT LIT8-LIT1 920 BYT LIT9-LIT1 921 BYT LIT10-LIT1 922 BYT LIT11-LIT1 923 ; 924 ; 925 LIT1 ASC 'Enter terminator:^' 926 HEX 00 927 LIT2 ASC ' Find:^' 928 HEX 00 929 LIT6 ASC ' Pattern:^' 930 HEX 00 931 LIT3 ASC 'Change to:^' 932 HEX 00 933 LIT4 ASC 'Warning: arrow keys used as data' 934 HEX 00 935 LIT5 HEX 8D 936 ASC 'Contextual Replace' 937 HEX 8D00 938 LIT7 ASC 'On string:^' 939 HEX 00 940 LIT8 ASC 'Off string:^' 941 HEX 00 942 LIT9 ASC 'Illegal character' 943 LITPP ASC ' in Pattern String' 944 HEX 878700 945 LIT10 ASC 'Character counts are not equal' 946 HEX 878700 947 LIT11 ASC 'Pattern string needs' 948 LITQQ ASC ' one departing' 949 HEX 8D 950 LITXX ASC 'character or caret' 951 HEX 878700 952 LOGTB ASC 'ABCDEILNOPQSUWX' 953 ASC '<>YZ' 954 ASC 'abcdeilnopqsuwx' 955 ENDTAB HEX 00 956 ; 957 XX HEX 00 958 ; 959 ; 960 FROM DFS $64 961 TO DFS $64 962 LOGIC DFS $64 963 ON DFS $64 964 OFF DFS $64 965 CASEB DFS $64 966 BUFFER HEX 00 967 END !