mirror of https://github.com/wwarthen/RomWBW.git
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.
108 lines
2.0 KiB
108 lines
2.0 KiB
;
|
|
; Program: SETFILE
|
|
; Author: Richard Conn
|
|
; Version: 1.0
|
|
; Date: 5 Mar 84
|
|
;
|
|
version equ 10
|
|
|
|
;
|
|
; SETFILE defines the name of a ZCPR3 File Name or displays it.
|
|
;
|
|
|
|
;
|
|
; Equates for Key Values
|
|
;
|
|
z3env SET 0f400h ;address of ZCPR3 environment
|
|
fnum equ 5ch+1 ;file number in 1st FCB
|
|
fcb equ 6ch ;2nd FCB
|
|
cr equ 0dh
|
|
lf equ 0ah
|
|
|
|
;
|
|
; External Z3LIB and SYSLIB Routines
|
|
;
|
|
ext z3init,getfn1,print,pfn1,moveb,qprint,cout
|
|
|
|
;
|
|
; Environment Definition
|
|
;
|
|
if z3env ne 0
|
|
;
|
|
; External ZCPR3 Environment Descriptor
|
|
;
|
|
jmp start
|
|
db 'Z3ENV' ;This is a ZCPR3 Utility
|
|
db 1 ;External Environment Descriptor
|
|
z3eadr:
|
|
dw z3env
|
|
start:
|
|
lhld z3eadr ;pt to ZCPR3 environment
|
|
;
|
|
else
|
|
;
|
|
; Internal ZCPR3 Environment Descriptor
|
|
;
|
|
MACLIB Z3BASE.LIB
|
|
MACLIB SYSENV.LIB
|
|
z3eadr:
|
|
jmp start
|
|
SYSENV
|
|
start:
|
|
lxi h,z3eadr ;pt to ZCPR3 environment
|
|
endif
|
|
|
|
;
|
|
; Start of Program -- Initialize ZCPR3 Environment and Print Banner
|
|
;
|
|
call z3init ;initialize the ZCPR3 Environment
|
|
call qprint
|
|
db 'SETFILE, Version '
|
|
db (version/10)+'0','.',(version mod 10)+'0',cr,lf,0
|
|
;
|
|
; Check Number of File
|
|
;
|
|
lxi h,0 ;init count
|
|
lxi d,11 ;size of each file name
|
|
lda fnum ;get number
|
|
sui '0' ;convert to binary
|
|
jc error
|
|
jz error
|
|
cpi 5 ;range?
|
|
jc selfile
|
|
;
|
|
; Print Error Message
|
|
;
|
|
error:
|
|
call print
|
|
db ' Invalid File Name Number (not 1-4)',0
|
|
ret
|
|
;
|
|
; Set Name of File
|
|
;
|
|
selfile:
|
|
dad d ;compute offset from file name 1
|
|
dcr a ;count down
|
|
jnz selfile
|
|
xchg ;DE contains offset
|
|
call getfn1 ;get ptr to shell file name
|
|
dad d ;get ptr to file name selected
|
|
lxi d,fcb+1 ;pt to name in FCB
|
|
xchg ;copy from FCB
|
|
mvi b,11 ;11 bytes
|
|
mov a,m ;get first char
|
|
cpi ' ' ;don't define if no name
|
|
cnz moveb ;define name if name given
|
|
;
|
|
; Print Name of Shell Variable File
|
|
;
|
|
call print
|
|
db ' File Name ',0
|
|
lda fnum ;get number
|
|
call cout ;print it
|
|
call print
|
|
db ' is ',0
|
|
jmp pfn1
|
|
|
|
end
|
|
|