home *** CD-ROM | disk | FTP | other *** search
- ;
- title 'Quick Set - File Attribute Bit Set Program'
- ;
- ; 7Jan84 by Mike Griswold, Ft. Worth, TX
- ;
- ; This program allows for setting the three system
- ; attribute bits, t1', t2', t3', to the control R/O,
- ; SYS and Archive features. Usage is:
- ; QS file.typ {options}
- ;
- ; where options are:
- ; R for R/O
- ; S for SYS
- ; A for Archive
- ;
- ; All other option letters are ignored. Only the
- ; first three letters in the option field are
- ; used, all others are ignored. To turn off an
- ; attribute use QS without the option letter.
- ;
- ;
- ;
- ; aseg ; for RMAC
- ;
- org 0100h
- start: lxi sp,0100h
- lda 05dh ; see if file specified
- cpi ' '
- jz no$file ; give usage message
- xra a
- sta ro ; initialize attribute flags
- sta sys
- sta arch
- lda 06dh ; first option field
- call get$opt ; decode it
- lda 06eh ; next
- call get$opt
- lda 06fh ; last
- call get$opt
- lxi d,05ch ; point to FCB
- mvi c,30 ; set attribute function
- call 5
- call signoff ; tell what happened
- jmp 0 ; exit
- ;
- ; Check byte in A for legal options and set
- ; attribute flag if found.
- ;
- get$opt:
- cpi 'R'
- jnz get1
- sta ro
- lda 065h ; t1
- ori 80h ; set t1'
- sta 065h
- get1: cpi 'S'
- jnz get2
- sta sys
- lda 066h
- ori 80h
- sta 066h ; set t2'
- get2: cpi 'A'
- jnz get3
- sta arch
- lda 067h
- ori 80h
- sta 067h ; set t3'
- get3: ret
- ;
- ; Display file's new attributes.
- ;
- signoff:
- push psw ; save error code
- mvi a,'$'
- sta 068h ; set end of string
- lxi h,05ch
- call sout
- pop psw ; retrieve error
- ora a
- jz sign0 ; no error
- lxi h,mess0 ; else file not found
- call sout
- ret
- sign0: lxi h,mess1
- call sout
- lxi h,dirmess
- lda sys
- ora a
- jz sign1
- lxi h,sysmess
- sign1: call sout
- lxi h,rwmess
- lda ro
- ora a
- jz sign2
- lxi h,romess
- sign2: call sout
- lxi h,armess
- lda arch
- ora a
- cnz sout
- ret
- ;
- ; Output string from HL until '$'.
- ;
- sout: xchg ; DE points to string
- mvi c,09
- call 5
- ret
- ;
- ; Print usage string if no file was given.
- ;
- no$file:
- lxi h,usage
- call sout
- jmp 0 ; abort
- ;
- ; Message strings
- ;
- mess0: db ' not found.',0dh,0ah,'$'
- mess1: db ' set to: $'
- dirmess:db 'DIR $'
- sysmess:db 'SYS $'
- rwmess: db 'RW $'
- romess: db 'RO $'
- armess: db 'Archive$'
- ;
- usage: db 0dh,0ah,'QS usage is: QS filename options'
- db 0dh,0ah,0ah,'where legal options are:'
- db 0dh,0ah,0ah,09h,'R - Sets RO attribute'
- db 0dh,0ah,09h,'S - Sets SYS attribute'
- db 0dh,0ah,09h,'A - Sets Archive attribute$'
- ;
- ; Local storage
- ;
- ro: ds 1 ; RO flag
- sys: ds 1 ; SYS flag
- arch: ds 1 ; Archive flag
- ;
- end 0100h