Files
RomWBW/Source/Images/d_bp/u15/TCCHECK.MAC
2020-01-03 20:42:06 -08:00

281 lines
5.0 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
; ZCPR3 TCAP Facility (Z3TCAP)
; Program Name: TCCHECK
; Author: Richard Conn
; Version: 1.0
; Date: 10 Mar 84
version equ 10
;
; TCCHECK checks the indicated (or implied) Z3TCAP.TCP file
; and displays statistics about it.
;
;
; Basic Equates
;
z3env SET 0f400h ;ZCPR3 Environment Descriptor
fcb equ 5ch
tbuff equ 80h
ctrlc equ 'C'-'@'
cr equ 0dh
lf equ 0ah
;
; ZCPR3 and SYSLIB References
;
ext z3init,qprint,z3log
ext codend,moveb
ext print,pfn1,cout,phldc
ext initfcb,pfind,f$open,f$read,f$close
;
; 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
;
call z3init ;initialize the ZCPR3 Env and the VLIB Env
;
; Print Banner
;
call qprint
db 'TCCHECK, Version '
db (version/10)+'0','.',(version mod 10)+'0'
db 0
;
; Check for Entry in FCB
;
lda fcb+1 ;get first char
cpi '/' ;none if slash
jnz start1
;
; Print Help Info
;
help:
call print
db 'TCCHECK - Select Entry from Z3TCAP.TCP'
db cr,lf,'Syntax:'
db cr,lf,' TCCHECK infile -or- TCCHECK infile.typ'
db cr,lf
db cr,lf,'where "infile" is the file to be checked by'
db cr,lf,'the execution of TCCHECK. If no file type is'
db cr,lf,'given, a file type of TCP is the default.'
db cr,lf
db cr,lf,'Syntax:'
db cr,lf,' TCCHECK'
db cr,lf
db cr,lf,'where this alternate form may be used to check'
db cr,lf,'the Z3TCAP.TCP file.'
db 0
ret
;
; Resume Processing
;
start1:
;
; Set Default File if None
;
lxi d,fcb+1 ;pt to file name
lxi h,deffile ;pt to default file
mvi b,11 ;11 bytes
ldax d ;get first char
cpi ' ' ;none if space
cz moveb ;set default file
;
; Set Default File Type if None
;
lxi d,fcb+9 ;pt to file type
lxi h,deftyp ;pt to default file type
mvi b,3 ;3 bytes
ldax d ;get first char
cpi ' ' ;none if space
cz moveb ;set default file type
;
; Begin Reading Z3TCAP.TCP
;
lxi d,fcb ;try to open Z3TCAP.TCP
call initfcb ;init FCB
mvi a,0ffh ;search current also
call pfind ;look for file
jnz start2 ;file found
;
; File Z3TCAP.TCP Not Found
;
fnferr:
call print
db ' File ',0
lxi d,fcb+1 ;print file name
call pfn1
call print
db ' Not Found - Aborting',0
ret
;
; Extract Z3TCAP Index
;
start2:
lxi d,fcb ;pt to FCB
call f$open ;open file
jnz fnferr
call codend ;read file into buffer
;
; Load Z3TCAP Index
;
loadi:
lxi d,fcb ;pt to FCB
call f$read ;read next block
jnz rerr1 ;read error
lxi d,tbuff ;copy from TBUFF
push h ;save ptr to this block
xchg
mvi b,128 ;128 bytes
call moveb
pop h ;pt to this block
lxi d,16 ;every 16
mvi b,8 ;8 entries possible
;
; Check for End of Index
;
loadi1:
mov a,m ;end of index if space
cpi ' '
jz loadi2
dad d ;pt to next
dcr b ;count down
jnz loadi1
jmp loadi ;HL pts to next block to load
;
; Error in Reading File
;
rerr1:
call print
db cr,lf,'File Read Error During Read of Index',0
ret
;
; Reached End of Index
;
loadi2:
shld z3tcver ;save ptr to version number
;
; Read Each Block of File
;
lxi h,0 ;set count
shld tcount
call codend ;pt to first element
check:
mov a,m ;see if done
cpi ' ' ;space if so
jz done
lxi d,fcb ;pt to FCB
call f$read ;read next record
jnz rerr
push h ;save ptr
lhld tcount ;increment count
inx h
shld tcount
pop h ;get ptr
lxi d,tbuff ;pt to name in buffer
mvi b,16 ;check 16 chars
check1:
ldax d ;compare
cmp m
jnz tnerror
inx h ;pt to next
inx d
dcr b ;count down
jnz check1
jmp check
;
; Read Error
;
rerr:
call print
db cr,lf,'Premature End of File after ',0
lhld tcount ;get count
call phldc
call print
db ' Terminals Checked',0
ret
;
; Terminal Name Error
;
tnerror:
call print
db cr,lf,'Terminal Names are Inconsistent at Terminal ',0
push h ;save ptr
lhld tcount ;get count
call phldc
pop h ;get ptr
tne1:
inx h ;advance to next
dcr b
jnz tne1
jmp check
;
; Check Complete
;
done:
lxi d,fcb ;close file
call f$close
call print
db cr,lf,'Z3TCAP File Check of ',0
lxi d,fcb+1
call pfn1
call print
db ' Version ',0
lhld z3tcver
inx h ;pt to version number
done1:
mov a,m ;print it
call cout
inx h
cpi ' '
jnz done1
call print
db cr,lf,' File Checks with ',0
lhld tcount ;print entry count
call phldc
call print
db ' Terminals Defined',0
ret
;
; Buffers
;
deffile:
db 'Z3TCAP ' ;default file name
deftyp:
db 'TCP' ;default file type
tcount:
ds 2 ;terminal count
z3tcver:
ds 2 ;ptr to ZCPR3 TCAP Version Number
end