10 REM DirWipe
20 MODE7
30 PROCvars
40 PROCass
50 PROCsave
60 END
70
80 DEFPROCvars
90 oswrch%=&FFEE:osasci%=&FFE3
100 osfile%=&FFDD:osgbpb%=&FFD1
110 osargs%=&FFDA:osrdch%=&FFE0
120 oscli%=&FFF7:osnewl%=&FFE7
130 work%=&86:argblk%=&88:indptr%=&8C
140 indptr2%=&8E:temp%=&C00:temp2%=&C80
150 version$="1.00"
160 ENDPROC
170
180 DEFPROCass
190 DIM code% &400
200 FOR pass%=4 TO 6 STEP 2
210 P%=&900:O%=code%
220 [OPT pass%
230 LDA#1:LDX#argblk%:LDY#0:JSRosargs%
240 LDX#(temp2%+5)MOD256:STXtemp2%+1
250 LDY#(temp2%+5)DIV256:STYtemp2%+2
260 LDX#temp2%MOD256:LDY#temp2%DIV256:LDA#6:JSRosgbpb%
270 LDAtemp2%+7:TAY:LDA#&D:INY:STAtemp2%+7,Y
280 LDX#nametext%MOD256:LDY#nametext%DIV256:JSRptext%:JSRosnewl%
290 LDX#ctext%MOD256:LDY#ctext%DIV256:JSRptext%:JSRosnewl%:JSRosnewl%
300 LDA#dirtext%MOD256:STAindptr%
310 LDA#dirtext%DIV256:STAindptr%+1
320 LDX#temp%MOD256:LDY#temp%DIV256:JSRcopytext%
330 LDAargblk%:STAindptr%
340 LDAargblk%+1:STAindptr%+1
350 LDX indptr2%:LDY indptr2%+1
360 JSRcopytext%
370 LDA#&D:STA(indptr2%),Y
380 LDX#temp%MOD256:LDY#temp%DIV256
390 JSRoscli%
400 \ **** OK UP TO HERE ****
410
420 LDA#space%MOD256:STAwork%
430 LDA#space%DIV256:STAwork%+1
440 JSRrec_del%
450 LDA#dirtext%MOD256:STAindptr%
460 LDA#dirtext%DIV256:STAindptr%+1
470 LDX#temp%MOD256:LDY#temp%DIV256:JSRcopytext%
480 LDX#(temp2%+8)MOD256:STXindptr%
490 LDA#(temp2%+8)DIV256:STAindptr%+1
500 LDXindptr2%:LDYindptr2%+1:JSRcopytext%
510 LDX#temp%MOD256:LDY#temp%DIV256:JSRoscli%
520 LDX#deltext%MOD256:LDY#deltext%DIV256:JSRptext%
530 LDXargblk%:LDYargblk%+1:JSRptext%:JSRosnewl%
540 LDXargblk%:STXtemp%:LDYargblk%+1
550 STYtemp%+1:LDX#temp%MOD256
560 LDY#temp%DIV256:LDA#3:STAtemp%+&E
570 LDA#4:JSRosfile%:LDA#6:JMPosfile%
580
590 .rec_del%
600 PHP:PHA:TXA:PHA:TYA:PHA
610 LDY#0:TYA:.blankloop%
620 STA (work%),Y:INY:CPY#25
630 BNE blankloop%
640
650 .readnext% LDY#1
660 LDAwork%:CLC:ADC#13:STA(work%),Y:STAindptr%
670 INY:LDAwork%+1:ADC#0:STA(work%),Y:STAindptr%+1
680 INY:INY:INY:LDA#1:STA(work%),Y:INY:INY:INY:INY:LDA#0:STA(work%),Y
690 LDX work%:LDY work%+1:LDA#8
700 JSRosgbpb%:BCC gettype%:JMP lastfile%
710
720 .gettype%
730 LDY#0:LDA(indptr%),Y:TAY:LDA#&D:INY:STA(indptr%),Y
740 LDAindptr%:STAtemp%:LDAindptr%+1:STAtemp%+1
750 INCtemp%:BNEgtover1%:INCtemp%+1:.gtover1%
760 LDA#5:LDX#temp%MOD256:LDY#temp%DIV256:JSRosfile%
770 CMP#2:BNE deleteit%
780
790 LDAtemp%:STAindptr%
800 LDAtemp%+1:STAindptr%+1
810 LDX#(temp%+4)MOD256:LDY#(temp%+4)DIV256
820 JSRcopytext%
830 LDY#0:LDA#&D:STA(indptr2%),Y
840 LDA#dirtext%MOD256:STAindptr%
850 LDA#dirtext%DIV256:STAindptr%+1
860 LDX#temp%MOD256:LDY#temp%DIV256
870 JSRcopytext%
880 LDX#temp%MOD256:LDY#temp%DIV256:JSRoscli%
890
900 LDA work%:PHA:LDA work%+1:PHA
910 LDA work%:CLC:ADC#25:STA work%
920 LDA work%+1:ADC#0:STA work%+1
930 JSR rec_del%
940 PLA:STAwork%+1:PLA:STAwork%
950 LDA#dirtext%MOD256:STAindptr%
960 LDA#dirtext%DIV256:STAindptr%+1
970 LDX#temp%MOD256:LDY#temp%DIV256
980 JSRcopytext%
990 LDY#0:LDA#ASC"^":STA(indptr2%),Y
1000 INY:LDA#&D:STA(indptr2%),Y
1010 LDX#temp%MOD256:LDY#temp%DIV256:JSRoscli%
1020
1030 .deleteit%
1040 LDAwork%:CLC:ADC#14:STAtemp%
1050 LDAwork%+1:ADC#0:STAtemp%+1
1060 LDX#deltext%MOD256:LDY#deltext%DIV256:JSRptext%
1070 LDXtemp%:LDYtemp%+1:JSRptext%:JSRosnewl%
1080 LDA#3:STAtemp%+&E:LDX#temp%MOD256
1090 LDY#temp%DIV256:LDA#4:JSRosfile%
1100
1110 LDA#6:JSRosfile% \DELETE file
1120
1130 JMP readnext%
1140
1150 .lastfile%
1160 PLA:TAY:PLA:TAX:PLA:PLP
1170 RTS
1180
1190 .copytext%
1200 STX indptr2%:STY indptr2%+1
1210 LDY#0
1220 .copyloop%
1230 LDA (indptr%),Y:CMP#&D:BEQ clend%
1240 STA (indptr2%),Y
1250 INC indptr2%:BNE cl1% INCindptr2%+1
1260 .cl1%
1270 INC indptr%:BNE cl2%:INC indptr%+1
1280 .cl2%
1290 JMP copyloop%
1300 .clend% RTS
1310
1320 .ptext% STX indptr%:STY indptr%+1
1330 LDY#0:.ptloop% LDA(indptr%),Y
1340 CMP#&D:BEQ ptend%:JSRoswrch%
1350 INY:JMP ptloop%
1360 .ptend% LDY#0:RTS
1370
1380 .dirtext% EQUS"DIR ":EQUB&D
1390 .deltext% EQUS"Deleting ":EQUB&D
1400 .nametext% EQUS"DirWipe "+version$:EQUB&D
1410 .ctext% EQUS"(C) Copyright HeadFirst PD/G Boden 1993":EQUB&D
1420
1430 .space%
1440 ]
1450 NEXT
1460 ENDPROC
1470
1480 DEFPROCsave
1490 PRINT"Start address: &";~code%
1500 PRINT"End address: &";~O%
1510 OSCLI"Save DirWipe "+STR$~code%+" "+STR$~O%+" 900 900"
1520 ENDPROC