You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

130 lines
2.9 KiB

page
; Library: RCPPROT for Z34RCP
; Author: Carson Wilson
; Version: 1.1
; Date: August 12, 1989
; Changes: Now responds dynamically to QUIET flag, eliminating "noise."
; Author: Carson Wilson
; Version: 1.0
; Date: June 15, 1988
;
; Command: PROT
; Function: To set the attributes of a file (R/O, SYS, and ARC)
; Form: PROT afn RSAI
; Comments: If R, S, or A are omitted, the file is made R/W, DIR, or
; modified, respectively. R, S, A, and I may be in any order.
; If I is present, Inspection is enabled.
att:
call retsave
call dirchek ; Test bad directory
xor a ; Set no inspect
ld (inspect),a
ld hl,0 ; Set r/o and sys attributes off
ld c,0 ; Set Arc attribute off
ld de,fcb2+1 ; Pt to attributes
ld b,4 ; 4 chars max
att1:
ld a,(de) ; Get char
inc de ; Pt to next
cp 'I' ; Inspect?
jr z,atti
cp 'R' ; Set r/o?
jr z,attr
cp 'S' ; Set sys?
jr z,atts
cp 'A'
jr z,atta
att2:
djnz att1
jr att3
atti:
ld (inspect),a ; Set flag
jr att2
attr:
ld h,a ; Save R/O flag
jr att2
atts:
ld l,a ; Save SYS flag
jr att2
atta:
ld c,a ; Save ARC
jr att2
att3:
ld (fatt2),hl ; Save file attributes
ld a,c
ld (fatt1),a ; Save Arc attribute
ld a,1 ; Select dir and sys files
call getdir ; Load directory
jp z,noflerr ; Tell error handler no file
jr att5
att4:
ld hl,(nxtfile) ; Pt to next file
ld a,(hl) ; End of list?
or a
jp z,exit
call crlf ; New line
att5: call break ; Check for possible abort
call qplug ; Turn off output if quiet
push hl ; Save ptr to current file
call prfn ; Print its name
ld (nxtfile),hl ; Save ptr to next file
call print
db ' Set to R','/'+80h
ld hl,(fatt2) ; Get attributes
ld c,'W' ; Assume r/w
ld a,h ; Get r/o bit
or a
jr z,att6
ld c,'O' ; Set r/o
att6: ld a,c ; Get char
call conout
ld a,l ; Get sys flag
or a ; Set flag
jr z,att7
call print
db ', SY','S'+80h
att7: ld a,(fatt1)
or a
jr z,att7a
call print
db ', AR','C'+80h
att7a: call unplug ; Turn output on
inspect equ $+1 ; Ptr for in-the-code modification
ld a,0 ; Get inspect flag
or a ; Z=no
pop hl ; Get ptr to current file
jr z,att8
call eraq1 ; Ask for y/n
jr nz,att4 ; Advance to next file if not y
att8: ld de,fcb1+1 ; Copy into fcb1
ld b,11 ; 11 bytes
call blkmov
ex de,hl
dec hl ; Pt to archive byte
fatt1 equ $+1
ld a,0
call attset
dec hl ; Pt to sys byte
fatt2 equ $+1 ; Ptr for in-the-code modification
ld de,0 ; Get attributes
ld a,e ; Get sys flag
call attset ; Set attribute correctly
dec hl ; Pt to r/o byte
ld a,d ; Get r/o flag
call attset
ld de,fcb1 ; Pt to fcb
ld c,30 ; Set attributes
call bdos
jp att4
attset:
res 7,(hl) ; Clear attribute
or a
ret z ; 0=clear attribute
set 7,(hl) ; Set attribute
ret
; End RCPPROT.LIB