home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol098 / szgpins.mac < prev    next >
Encoding:
Text File  |  1984-04-29  |  3.1 KB  |  141 lines

  1. ;
  2. ;  SYSLIB Module Name:  SZGPIN
  3. ;  Author:  Richard Conn
  4. ;  SYSLIB Version Number:  2.2
  5. ;  Module Version Number:  1.0
  6. ;  Module Entry Points:
  7. ;    ZGPINS
  8. ;  Module External References:
  9. ;    ZINIMC        ZINIEXT        ZINIDMA        ZINICI
  10. ;    ZFNINIT        MOVEB
  11. ;
  12.  
  13. ;
  14. ;    This SYSLIB subroutine is used to properly initialize all of
  15. ; the ZCPR2-specific routines based on the ZCPR2 Utility Standard
  16. ; General-Purpose Installation Format.
  17. ;
  18.  
  19. ;
  20. ;    The following equates define the relative addresses of
  21. ; the Installation Format Variables.
  22. ;
  23. base    equ    100H    ; beginning of variable area
  24. epavail    equ    base+3    ; external path available flag
  25. epadr    equ    base+4    ; address of external path
  26.  
  27. intpath    equ    base+6    ; address of beginning of 8-elt internal path
  28.  
  29. mcavail    equ    base+17H    ; multiple command line buffer available flag
  30. mcadr    equ    base+18H    ; address of multiple command line buffer
  31.  
  32. cindic    equ    base+48H    ; current user/disk indicator
  33.  
  34. dmadr    equ    base+49H    ; default DMA address
  35.  
  36. ndradr    equ    base+4BH    ; address of memory-resident dir name buffer
  37. ndnames    equ    base+4DH    ; max number of directory names
  38. dnfile    equ    base+4EH    ; name of named directory file
  39.  
  40. ;
  41. ;  Requirements Flags
  42. ;
  43. epreqd    equ    base+59h    ; external path
  44. mcreqd    equ    base+5Ah    ; multiple commands
  45. cdreqd    equ    base+5Eh    ; current indic and dma
  46. ndreqd    equ    base+5Fh    ; named directories?
  47.  
  48. ;
  49. ;  Internal Buffers for the Init
  50. ;
  51. dnfcb:
  52.     ds    12    ; disk name fcb (12 BYTES)
  53.  
  54. ;
  55. ;  EXTERNALS
  56. ;
  57.     EXT    MOVEB    ; COPY ROUTINE
  58.     EXT    ZINIMC    ; MULTIPLE COMMAND LINE BUFFER INIT
  59.     EXT    ZINIEXT    ; EXTERNAL PATH INIT
  60.     EXT    ZINIDMA    ; DMA ADDRESS
  61.     EXT    ZINICI    ; CURRENT USER/DISK FLAG
  62.     EXT    ZFNINIT    ; NAMES.DIR AND MAX DIR COUNT INIT
  63.  
  64. ;
  65. ;  Beginning of init routine
  66. ;
  67. ZGPINS::
  68.     PUSH    H    ; SAVE REGS
  69.     PUSH    D
  70.     PUSH    B
  71.     PUSH    PSW
  72.  
  73. ;
  74. ;  INIT NAMES.DIR FILE NAME AND MAX NUMBER OF ENTRIES
  75. ;
  76.     LDA    NDREQD        ; NAMED DIRECTORY DATA REQUIRED?
  77.     ORA    A        ; 0=NO
  78.     JZ    ZINI1
  79.     LXI    H,DNFILE    ; SET UP DISK NAME FCB
  80.     LXI    D,DNFCB+1    ; FN AND FT COPIED
  81.     MVI    B,11        ; 11 BYTES
  82.     CALL    MOVEB
  83.     XRA    A        ; ZERO FIRST BYTE
  84.     DCX    D        ; PT TO FIRST BYTE OF DNFCB
  85.     STAX    D        ; STORE LEADING ZERO
  86.     LDA    NDNAMES        ; GET NUMBER OF NAMES ALLOWED
  87.     MOV    C,A        ; ... IN C
  88.     LHLD    NDRADR        ; ADDRESS OF MEMORY-RESIDENT BUFFER
  89.     MVI    A,0FFH        ; SET EVERYTHING
  90.     CALL    ZFNINIT        ; DO INIT --
  91.                 ;   HL=ADDRESS OF MEMORY-RESIDENT BUFFER
  92.                 ;   DE=ADDRESS OF NAMES.DIR FCB
  93.                 ;   C =NUMBER OF NAMES ALLOWED
  94. ;
  95. ;  INIT CURRENT USER/DISK INDICATOR AND DMA ADDRESS
  96. ;
  97. ZINI1:
  98.     LDA    CDREQD        ; CURRENT INDICATOR/DMA REQUIRED?
  99.     ORA    A        ; 0=NO
  100.     JZ    ZINI2
  101.     LDA    CINDIC        ; GET INDICATOR
  102.     CALL    ZINICI
  103.     LHLD    DMADR        ; GET DMA ADDRESS
  104.     CALL    ZINIDMA
  105.  
  106. ;
  107. ;  INIT EXTERNAL PATH ADDRESS
  108. ;
  109. ZINI2:
  110.     LDA    EPREQD        ; EXTERNAL PATH REQUIRED?
  111.     ORA    A        ; 0=NO
  112.     JZ    ZINI3
  113.     LHLD    EPADR        ; PREP TO DECLARE EXTERNAL PATH
  114.     LDA    EPADR        ; GET FLAG
  115.     ORA    A        ; NZ = EXTERNAL PATH OK
  116.     JNZ    ZINI2A        ; DO INIT
  117.     LXI    H,INTPATH    ; PT TO INTERNAL PATH OTHERWISE
  118. ZINI2A:
  119.     CALL    ZINIEXT        ; INIT EXTERNAL PATH
  120.  
  121. ;
  122. ;  INIT MULTIPLE COMMAND LINE BUFFER PTRS
  123. ;
  124. ZINI3:
  125.     LDA    MCREQD        ; MULTIPLE COMMANDS REQUIRED?
  126.     ORA    A        ; 0=NO
  127.     JZ    ZINI4
  128.     LDA    MCAVAIL        ; GET FLAG
  129.     LHLD    MCADR        ; GET ADDRESS
  130.     ORA    A        ; SET FLAGS (0=NO)
  131.     CNZ    ZINIMC        ; INIT MC LINE BUFFER IF DESIRED
  132.  
  133. ZINI4:
  134.     POP    PSW        ; RESTORE REGS
  135.     POP    B
  136.     POP    D
  137.     POP    H
  138.     RET
  139.  
  140.     END
  141.