home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol096
/
erq.a86
< prev
next >
Wrap
Text File
|
1984-04-29
|
2KB
|
139 lines
title 'ERQ - Selective file erase'
CR EQU 13
LF EQU 10
ESC EQU 27
TFCB EQU 5CH
org 100h
erq: mov dx,TFCB
mov cl,17 ;Search first
CALL BDOS
cmp al,255
jnz FILFND
mov dx,offset NFMSG
call OUTBUF
mov cl,0
jmp BDOS
OUTBUF: mov cl,9 ;Print string
jmp BDOS
FILFND: mov bx,offset NAMBUF
PUSH bx
NXTFIL:
mov cl,5
shl al,cl
add al,81h
mov ah,0
mov si,ax
POP di
mov cx,11
rep movs al,al
PUSH di
mov cl,18 ;Search next
mov dx,tfcb
CALL BDOS
cmp al,255
jnz NXTFIL
POP bx
mov byte ptr [bx],80H ;End of list indicator
mov bx,offset NAMBUF
DELCHK: mov NBPOS,bx
;Output name
mov cx,8
NXTCR2: mov al,[bx]
AND al,7FH
cmp al,' '
jz ENDNAM ;End of name
PUSH bx
PUSH cx
CALL CONOUT
POP cx
POP bx
INC bx
loop NXTCR2
ENDNAM: mov ch,0
ADD bx,cx
PUSH bx
mov al,[bx]
AND al,7FH
cmp al,' '
jz ENDTYP ;No filetype
mov al,'.'
CALL CONOUT
;Output type
mov cx,3
POP bx
PUSH bx
NXTCR3: mov al,[bx]
AND al,7FH
cmp al,' '
jz ENDTYP ;End of type
PUSH bx
PUSH cx
CALL CONOUT
POP cx
POP bx
INC bx
loop NXTCR3
ENDTYP: mov dx,offset DFMSG1 ;Output rest of the message
CALL OUTBUF
POP bx
test byte ptr [bx],80h
jz NOTR_O ;Check for file R/O
mov dx,offset DFMSG2
CALL OUTBUF
NOTR_O: mov dx,offset DFMSG3
CALL OUTBUF
mov cl,1 ;Console input
CALL BDOS
cmp al,ESC
jnz $+3
RET
AND al,5FH ;Convert lowercase to uppercase
cmp al,'Y'
jnz NXTCHK
mov si,NBPOS
mov di,TFCB+1
mov cx,11
rep movs al,al
mov bx,TFCB+9
test byte ptr [bx],80h
jz NTR_O
and byte ptr [bx],7fh
mov dx,TFCB
mov cl,30 ;Set file attributes
CALL BDOS
NTR_O: mov dx,TFCB
mov cl,19 ;Delete file
CALL BDOS
NXTCHK: mov al,CR
CALL CONOUT
mov al,LF
CALL CONOUT
mov bx,NBPOS
add bx,11
test byte ptr [bx],80h
mov cl,0
jnz bdos
jmp DELCHK
CONOUT: mov dl,al
mov cl,2 ;Console output
BDOS:
push es
int 224
pop es
ret
NFMSG db 'File(s) not found$'
DFMSG1 db ' exists$'
DFMSG2 db ' and is R/O$'
DFMSG3 db '. Do you want it deleted?$'
NBPOS dw 0
NAMBUF rs 11*64
db 0
END