10 *| $ Directory replace source code 20 *| (c) H.S.Williams 04/08/92 30 *| Hi Daniel! 40 FOR PASS%=0TO3 STEP3 50 P%=&900 60 [OPT PASS% 70 .start 80 LDA &FFF8 90 STA &F8 100 LDA &FFF9 110 STA &F9 120 LDY #0 130 LDA (&F8),Y 140 STA clioldvector+1 150 INY 160 LDA (&F8),Y 170 STA clioldvector+2 180 LDA #climain DIV &100 190 STA (&F8),Y 200 DEY 210 LDA #climain MOD &100 220 STA (&F8),Y 230 RTS 240 .climain 250 STX &F8:STY &F9 260 LDY #&FF 270 .cliloop1 280 INY:LDA (&F8),Y 290 CMP #ASC("*"):BEQ cliloop1 300 CMP #ASC(" "):BEQ cliloop1 310 CMP #ASC("H"):BNE check 320 INY:LDA (&F8),Y 330 CMP #ASC("."):BNE clirep 340 JMP helptext 350 .check 360 CMP #ASC("Z"):BNE clirep 370 INY:LDA (&F8),Y 380 CMP #ASC("L"):BEQ dlock 390 CMP #ASC("C"):BEQ dchange 400 CMP #ASC("A"):BEQ dactive 410 CMP #ASC("I"):BEQ dinactive 420 .clirep 430 LDA dstatus:BEQ cliexit 440 LDY #&FF:LDX #&FF 450 .cliloop2 460 INY:LDA (&F8),Y 470 CMP #ASC("$"):BEQ replace 480 INX:STA newtext,X 490 CMP #&0D:BNE cliloop2 500 JMP cliexit 510 .replace 520 TYA:PHA:LDY #&FF 530 .reploop 540 INY:LDA dirtext,Y:CMP #&0D:BEQ repover 550 INX:STA newtext,X:JMP reploop 560 .repover 570 PLA:TAY 580 .finalloop 590 INY:LDA (&F8),Y 600 INX:STA newtext,X 610 CMP #&0D:BNE finalloop 620 LDA #newtext MOD &100 630 STA &F8 640 LDA #newtext DIV &100 650 STA &F9 660 .cliexit 670 LDX &F8:LDY &F9 680 .clioldvector 690 JMP &FFFF 700 .dlock 710 LDX #&01 720 .dlockloop 730 INY:LDA (&F8),Y 740 CMP #ASC(" "):BEQ dlockloop 750 INX:STA dirtext,X 760 CMP #&0D:BNE dlockloop 770 LDA #1:STA dstatus:STA tstatus 780 RTS 790 .dchange 800 LDA dstatus:EOR #1:STA dstatus:RTS 810 .dactive 820 LDA #1:STA dstatus:RTS 830 .dinactive 840 LDA #0:STA dstatus:RTS 850 RTS 860 .helptext 870 LDA &F8:PHA:LDA &F9:PHA 880 LDA #message MOD &100:STA &F8 890 LDA #message DIV &100:STA &F9 900 JSR printroutine 910 LDA dstatus 920 BNE help2 930 LDA #inactive MOD &100:STA &F8 940 LDA #inactive DIV &100:STA &F9 950 JSR printroutine 960 JMP strmess 970 .help2 980 LDA #active MOD &100:STA &F8 990 LDA #active DIV &100:STA &F9 1000 JSR printroutine 1010 .strmess 1020 LDA tstatus:BEQ nostr 1030 LDA #string MOD &100:STA &F8 1040 LDA #string DIV &100:STA &F9 1050 JSR printroutine 1060 LDA #dirtext MOD &100:STA &F8 1070 LDA #dirtext DIV &100:STA &F9 1080 JMP helpexit 1090 .nostr 1100 LDA #nostring MOD &100:STA &F8 1110 LDA #nostring DIV &100:STA &F9 1120 .helpexit 1130 JSR printroutine 1140 PLA:STA &F9:PLA:STA &F8 1150 JMP cliexit 1160 .printroutine 1170 LDY #&FF 1180 .printloop 1190 INY:LDA (&F8),Y:JSR &FFE3 1200 CMP #&0D:BNE printloop 1210 RTS 1220 .dstatus 1230 EQUB 0 1240 .tstatus 1250 EQUB 0 1260 .message 1270 EQUS "Directory Lock (c) 1992 H.S.W." 1280 EQUB &0D 1290 .active 1300 EQUS " Active" 1310 EQUB &0D 1320 .inactive 1330 EQUS " Inactive" 1340 EQUB &0D 1350 .string 1360 EQUS " $. Directory replaced by :" 1370 EQUB &0D 1380 .nostring 1390 EQUS " No replace string" 1400 EQUB &0D 1410 .dirtext 1420 EQUS "$.(c) Hugh S Williams 1992" 1430 EQUB &0D 1440 .newtext 1450 EQUS "Thanks to Daniel Shimmin and Duncan Webster for putting up with me" 1460 ]:NEXT PASS% 1470 *SAVE DIRlock 900 +200