home *** CD-ROM | disk | FTP | other *** search
- ;
- ; SYSLIB Module Name: SZGPIN
- ; Author: Richard Conn
- ; SYSLIB Version Number: 2.2
- ; Module Version Number: 1.0
- ; Module Entry Points:
- ; ZGPINS
- ; Module External References:
- ; ZINIMC ZINIEXT ZINIDMA ZINICI
- ; ZFNINIT MOVEB
- ;
-
- ;
- ; This SYSLIB subroutine is used to properly initialize all of
- ; the ZCPR2-specific routines based on the ZCPR2 Utility Standard
- ; General-Purpose Installation Format.
- ;
-
- ;
- ; The following equates define the relative addresses of
- ; the Installation Format Variables.
- ;
- base equ 100H ; beginning of variable area
- epavail equ base+3 ; external path available flag
- epadr equ base+4 ; address of external path
-
- intpath equ base+6 ; address of beginning of 8-elt internal path
-
- mcavail equ base+17H ; multiple command line buffer available flag
- mcadr equ base+18H ; address of multiple command line buffer
-
- cindic equ base+48H ; current user/disk indicator
-
- dmadr equ base+49H ; default DMA address
-
- ndradr equ base+4BH ; address of memory-resident dir name buffer
- ndnames equ base+4DH ; max number of directory names
- dnfile equ base+4EH ; name of named directory file
-
- ;
- ; Requirements Flags
- ;
- epreqd equ base+59h ; external path
- mcreqd equ base+5Ah ; multiple commands
- cdreqd equ base+5Eh ; current indic and dma
- ndreqd equ base+5Fh ; named directories?
-
- ;
- ; Internal Buffers for the Init
- ;
- dnfcb:
- ds 12 ; disk name fcb (12 BYTES)
-
- ;
- ; EXTERNALS
- ;
- EXT MOVEB ; COPY ROUTINE
- EXT ZINIMC ; MULTIPLE COMMAND LINE BUFFER INIT
- EXT ZINIEXT ; EXTERNAL PATH INIT
- EXT ZINIDMA ; DMA ADDRESS
- EXT ZINICI ; CURRENT USER/DISK FLAG
- EXT ZFNINIT ; NAMES.DIR AND MAX DIR COUNT INIT
-
- ;
- ; Beginning of init routine
- ;
- ZGPINS::
- PUSH H ; SAVE REGS
- PUSH D
- PUSH B
- PUSH PSW
-
- ;
- ; INIT NAMES.DIR FILE NAME AND MAX NUMBER OF ENTRIES
- ;
- LDA NDREQD ; NAMED DIRECTORY DATA REQUIRED?
- ORA A ; 0=NO
- JZ ZINI1
- LXI H,DNFILE ; SET UP DISK NAME FCB
- LXI D,DNFCB+1 ; FN AND FT COPIED
- MVI B,11 ; 11 BYTES
- CALL MOVEB
- XRA A ; ZERO FIRST BYTE
- DCX D ; PT TO FIRST BYTE OF DNFCB
- STAX D ; STORE LEADING ZERO
- LDA NDNAMES ; GET NUMBER OF NAMES ALLOWED
- MOV C,A ; ... IN C
- LHLD NDRADR ; ADDRESS OF MEMORY-RESIDENT BUFFER
- MVI A,0FFH ; SET EVERYTHING
- CALL ZFNINIT ; DO INIT --
- ; HL=ADDRESS OF MEMORY-RESIDENT BUFFER
- ; DE=ADDRESS OF NAMES.DIR FCB
- ; C =NUMBER OF NAMES ALLOWED
- ;
- ; INIT CURRENT USER/DISK INDICATOR AND DMA ADDRESS
- ;
- ZINI1:
- LDA CDREQD ; CURRENT INDICATOR/DMA REQUIRED?
- ORA A ; 0=NO
- JZ ZINI2
- LDA CINDIC ; GET INDICATOR
- CALL ZINICI
- LHLD DMADR ; GET DMA ADDRESS
- CALL ZINIDMA
-
- ;
- ; INIT EXTERNAL PATH ADDRESS
- ;
- ZINI2:
- LDA EPREQD ; EXTERNAL PATH REQUIRED?
- ORA A ; 0=NO
- JZ ZINI3
- LHLD EPADR ; PREP TO DECLARE EXTERNAL PATH
- LDA EPADR ; GET FLAG
- ORA A ; NZ = EXTERNAL PATH OK
- JNZ ZINI2A ; DO INIT
- LXI H,INTPATH ; PT TO INTERNAL PATH OTHERWISE
- ZINI2A:
- CALL ZINIEXT ; INIT EXTERNAL PATH
-
- ;
- ; INIT MULTIPLE COMMAND LINE BUFFER PTRS
- ;
- ZINI3:
- LDA MCREQD ; MULTIPLE COMMANDS REQUIRED?
- ORA A ; 0=NO
- JZ ZINI4
- LDA MCAVAIL ; GET FLAG
- LHLD MCADR ; GET ADDRESS
- ORA A ; SET FLAGS (0=NO)
- CNZ ZINIMC ; INIT MC LINE BUFFER IF DESIRED
-
- ZINI4:
- POP PSW ; RESTORE REGS
- POP B
- POP D
- POP H
- RET
-
- END
-