TITLE ERQ SUBTTL Selective file erase .Z80 BDOS EQU 5 TFCB EQU 5CH CR EQU 13 LF EQU 10 ESC EQU 27 ERQ: LD DE,TFCB LD C,17 ;Search first CALL BDOS CP 255 JR NZ,FILFND LD DE,NFMSG OUTBUF: LD C,9 ;Print string JP BDOS FILFND: LD HL,NAMBUF PUSH HL NXTFIL: RRCA RRCA RRCA AND 01100000B OR 10000001B LD L,A LD H,0 POP DE LD BC,11 LDIR PUSH DE LD C,18 ;Search next CALL BDOS CP 255 JR NZ,NXTFIL POP HL LD (HL),80H ;End of list indicator LD HL,NAMBUF DELCHK: LD (NBPOS),HL ;Output name LD B,8 NXTCR2: LD A,(HL) AND 7FH CP " " JR Z,ENDNAM ;End of name PUSH HL PUSH BC CALL CONOUT POP BC POP HL INC HL DJNZ NXTCR2 ENDNAM: LD E,B LD D,0 ADD HL,DE PUSH HL LD A,(HL) AND 7FH CP " " JR Z,ENDTYP ;No filetype LD A,"." CALL CONOUT ;Output type LD B,3 POP HL PUSH HL NXTCR3: LD A,(HL) AND 7FH CP " " JR Z,ENDTYP ;End of type PUSH HL PUSH BC CALL CONOUT POP BC POP HL INC HL DJNZ NXTCR3 ENDTYP: LD DE,DFMSG1 ;Output rest of the message CALL OUTBUF POP HL BIT 7,(HL) JR Z,NOTR.O ;Check for file R/O LD DE,DFMSG2 CALL OUTBUF NOTR.O: LD DE,DFMSG3 CALL OUTBUF LD C,1 ;Console input CALL BDOS CP ESC RET Z AND 5FH ;Convert lowercase to uppercase CP "Y" JR NZ,NXTCHK LD HL,(NBPOS) LD DE,TFCB+1 LD BC,11 LDIR LD HL,TFCB+9 BIT 7,(HL) JR Z,NTR.O RES 7,(HL) LD DE,TFCB LD C,30 ;Set file attributes CALL BDOS NTR.O: LD DE,TFCB LD C,19 ;Delete file CALL BDOS NXTCHK: LD A,CR CALL CONOUT LD A,LF CALL CONOUT LD HL,(NBPOS) LD BC,11 ADD HL,BC LD A,(HL) OR A RET M JP DELCHK CONOUT: LD E,A LD C,2 ;Console output JP BDOS NFMSG: DEFB "File(s) not found$" DFMSG1: DEFB " exists$" DFMSG2: DEFB " and is R/O$" DFMSG3: DEFB ". Do you want it deleted?$" NBPOS: DEFS 2 NAMBUF: END ERQ