home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / BBSING / PBBS / PSTAT453.LBR / PSTAT453.MZC / PSTAT453.MAC
Text File  |  2000-06-30  |  54KB  |  2,734 lines

  1.   TITLE        PSTAT45.MAC                    89/01/03
  2.  
  3. ; Filename    PSTAT45
  4. ; Author    Terry Pinto
  5. ; Language     Microsoft MACRO-80
  6. ; Last Update     
  7. ; By        Terry Pinto
  8. ; Reason    Version 4.5
  9.  
  10. ; The instructions below show how to assemble and link using two of the more
  11. ; popular assemblers. Be sure to set the appropriate equate in PBBSEQU.HDR.
  12.  
  13. ; Assembly/Link - Using M80/L80
  14. ;    M80 =PSTATnn/N
  15. ;    L80 /P:100,PSTATnn,PBBSUBS/S,PSTATnn/N/E
  16. ;
  17. ;                 Using SLR180
  18. ;     SLR PSTATnn
  19. ;    SLRNKP PSTATnn,/A:100,PSTATnn,PBBSUBS/S,/E 
  20. ;
  21. ;      Where nn represents the version number in both cases above.
  22.  
  23. ;              Revision history
  24. ; Version 1.00
  25. ;    Original Release
  26. ;
  27. ; Version 1.01
  28. ;    (1)  MSGST.LIB - Fixed bugs in display of the message reply and
  29. ;    the forward and reverse links.
  30. ;    (01/17/89)
  31. ;    (2)  MSGST.LIB - Fixed bug in GOTO function. User unable to use
  32. ;    goto to position to one of last two messages.
  33. ;    (01/17/89)
  34. ;    (3)  SFILE.LIB - Fixed cosmetic flaw in display.
  35. ;    (01/19/89)
  36. ;    (4)  IDX.LIB   - Added space padding routines to help align the
  37. ;    display of the INDEX.PBS information.
  38. ;    (01/20/89)
  39. ;    (5)  BITMP.LIB - Added support for additional bitmaps. Complete
  40. ;     support for all new access levels when implemented. Will show a
  41. ;    list of bitmaps for all user levels.
  42. ;    (01/20/89)
  43. ;
  44. ; Version 1.02
  45. ;    (1)  BITMP.LIB - Reworked bitmap display. Now displays levels 2
  46. ;    through 14. Levels 0 and 1 were unecessary and level 15 is left
  47. ;    as restricted and not shown. TAB's removed to allow the display
  48. ;    to function with more terminals. Submitted by Ian Cottrell
  49. ;    (02/06/89)
  50. ;    (2)  ACCTAB.LIB- Modified to allow display of access levels the
  51. ;    same as the BITMAP above. TAB's removed to allow the display to
  52. ;    function with more terminals. Submitted by Ian Cottrell
  53. ;    (02/06/89)
  54. ;    (3)  IDX.LIB   - TAB's removed to allow the display to function
  55. ;    with more terminals. Submitted by Ian Cottrell
  56. ;    (02/06/89)
  57. ;
  58. ; Version 1.03
  59. ;    (1)  First Public Release - Incorporated all modules. Added the
  60. ;    ZCPR segment to conditionally support ZCPR3 systems with a menu
  61. ;    selection.  Modified ZCPR system equates to accomidate new PBBS 
  62. ;    headers.  The program is now compatible with PBBS versions 4.15 
  63. ;    or higher.  Added support for multiple DOS entry.
  64. ;    (03/04/89)
  65. ;
  66. ; Version 1.04
  67. ;    (1)  Fixed SYSENV, ZDRV, MAXDRV printouts when not running with 
  68. ;    ZCPR3. Cleaned up some of the displays. Added support to enable 
  69. ;    the display of the folder name in the message index section. We
  70. ;    have also made the display of the terminal name under TCAP, and
  71. ;    the multiple command line buffer, conditional. Submitted by Ian
  72. ;    Cottrell.  (03/17/89)
  73. ;
  74. ; Version 1.05
  75. ;    (1)  Fixed problem with the reading and proper display of  JUNK
  76. ;    setting in low memory. Fixed Display of number of folders shown
  77. ;    in display. 
  78. ;    (2)  Fixed problem with MSGINDEX routines. Display crashed when
  79. ;    the TO, FROM or SUBJECT field was filled. Changed the call used
  80. ;     from PRINTM to PRINTL. Submitted by Ian Cottrell  (03/26/89)
  81. ;    (3)  Added support for new function in PBBS to allow support of
  82. ;    multiple areas of support and multiple FOR and NEW files. Added
  83. ;    conditional display of MSGTHD equate and the proposed data from
  84. ;     the MSGINDEX.PBS file.  (03/26/89)
  85. ;
  86. ; Version 4.50
  87. ;    (1)  Fixed code to conform with latest release of PBBS. Changed
  88. ;    references to MDOS drive/user from EQU to DB. With this release
  89. ;    the version numbering has also been changed to reflect the PBBS
  90. ;     and PBSUBS.REL files being used. This should make it easier for
  91. ;    users of PSTAT to keep up to date with the proper version.
  92. ;
  93. ; Version 4.51
  94. ;    (1)  Fixed code relating to max drive and max user reporting.
  95. ;    (2)  Made selection of MSGTHD conditional.  Release versions of
  96. ;    PBBS do not allow for message threading as of yet.
  97. ;     (3)  Fixed undefined label of CPMDU for PBBS45 release.
  98. ;
  99. ; Version 4.52
  100. ;    (1)  Changed code to maintain M80 compatibility. M80 does not
  101. ;    like lower case in an include statement and it does not like it
  102. ;    when you follow the label with a ':' in an equate statement. 
  103. ;    include pbbsequ.hdr --> INCLUDE PBBSEQU.HDR
  104. ;    STACK: EQU $ --> STACK EQU $  
  105. ;    
  106. ; Version 4.53
  107. ;    (1)  Changed code in the Z option to correctly display the
  108. ;    address of the wheel byte and the path, and not the address
  109. ;    in the environment where the addresses are stored.
  110. ;    Thank you to George Allen for pointing this one out.     
  111. ;
  112. ; NOTE: PSTAT reads and displays all of the information set or provided
  113. ;    bye your PBBS system. PSTAT obtains needed information from the
  114. ;    INDEX.PBS file, the MSGINDEX.PBS file, low memory, PBBSEQU.HDR,
  115. ;    or the PBBSDB.HDR files. You may select the section you wish to 
  116. ;    observe by specifing the appropriate option on the command line
  117. ;    or use the menu subsystem by not providing an option. 
  118. ;
  119. ;    SYNTAX:  PSTAT       Menu Sub-System
  120. ;         PSTAT /o    Run PSTAT option
  121. ;
  122. ;        Options: A - Access Table Settings
  123. ;             B - Bitmaps (Drive/User)
  124. ;             D - DU: selections
  125. ;             E - Entry/Welcome Files
  126. ;             F - Folders Selected
  127. ;             I - INDEX.PBS Information
  128. ;             L - Low Memory Settings
  129. ;             M - Message Statistics
  130. ;                        O - Operating System and PBBS
  131. ;             P - PBBS Internal Settings
  132. ;                        R - Restrictions
  133. ;             S - System Files
  134. ;             V - Version Number
  135. ;             Z - Z-System     (Only IF ZCPR3 running)
  136. ;            ? or / - Display Help Screen
  137. ;
  138. ; ------------------------------------------------------------------------- 
  139. ;        PBBS Statistics
  140. ;        Author: Terry Pinto
  141. ;            14385 SW Walker Rd. B3
  142. ;            Beaverton, OR  97006
  143. ;            Access Programming RAS
  144. ;            (503) 644-0900 (300/1200/2400) 
  145. ;            PC Pursuit  ORPOR
  146. ; -------------------------------------------------------------------------
  147. ;        The Public Bulletin Board System
  148. ;        Author: Ian Cottrell
  149. ;            44 Lindhurst Cres
  150. ;            Ottawa, ON, Canada
  151. ;            K2G 0T7
  152. ;            The Information Centre RCP/M
  153. ;            (613) 952-2289 (300/1200/2400)
  154. ;-------------------------------------------------------------------------;
  155. ; NOTE: This file MUST be linked to PBBSUBS.REL.                          ;
  156. ;-------------------------------------------------------------------------;
  157.  
  158. NO    EQU    0
  159. YES    EQU    not no
  160.  
  161. ; MTHD is used to beta test the message threading routines. Leave this
  162. ; equate set to NO for general release programs. Setting to YES will
  163. ; cause assembly errors until a release of PBBS that supports message
  164. ; threading.
  165.  
  166. MTHD    EQU    yes
  167.  
  168. ; -------------------------------------------------------------------------
  169.  
  170.     INCLUDE    PBBSEQU.HDR    ; PBBS configuration equates
  171.  
  172.      IF    ZCPR3        ; ZCPR3
  173. ZPTH    EQU    Z3ENV+9        ; location of ZCPR3 path address
  174. ZWHL     EQU    Z3ENV+41    ; ZCPR3 wheel byte
  175. ZDRV    EQU    Z3ENV+44    ; ZCPR3 maximum user
  176. ZUSR    EQU    Z3ENV+45    ; ZCPR3 maximum drive
  177.      ENDIF            ; ZCPR3
  178.  
  179.      IF    M80        ; m80
  180.     .Z80            ; Needed for M80
  181.     ASEG            ;
  182.     ORG    100H        ;
  183.      ENDIF            ; m80
  184.  
  185.     JP    START        ; Jump around header and data
  186.  
  187. Z3IDEN:    DB    'Z3ENV'        ; Z3 identifier
  188. Z3TYPE:    DB    1        ; Z3 environment (external)
  189. Z3EADR:    DW    0000        ; Z3 environment (address)
  190. Z3LOAD:    DW    0000        ; Z3 load addresse
  191.  
  192. ; Version name, date and levels
  193.  
  194. VNAME::    DB    CR,LF,'PSTAT '  ; Name
  195.  
  196. VERDAT::DB    '89/'        ; Year
  197.     DB    '08/'        ; Month
  198.     DB    '06 '        ; Day
  199.     DB    ' v ',0        ; Status
  200.  
  201. VER::    DB    4        ; Version
  202. VERR::    DB    53        ; Revision
  203.  
  204. AUTHOR::DB    '  by:  Terry Pinto',CR,LF,0
  205.  
  206.     INCLUDE    PBBSDB.HDR
  207.  
  208. ; Define your terminals clear screen sequence here. You have up to ten
  209. ; bytes including a 0 terminator at the end of the sequence.
  210.  
  211. CLS:    DB    ESC,'*',0,0,0    ; Clear screen sequence
  212.     DB    0,0,0,0,0    ;  you have up to ten bytes 
  213.     DB    0        ; Terminator - DO NOT CHANGE!
  214.  
  215.     INCLUDE    BDOSHDR.MAC    ; Time and date conversions
  216.  
  217. ; Preserve CPM stack, initialize new one for this program
  218.  
  219. START:    LD    (CCPSTK),SP    ; Save the return address
  220.     LD    SP,STACK    ; Install our stack
  221.  
  222. ; Save current drive/user
  223.  
  224.     LD    E,0FFH
  225.     LD    C,32
  226.     CALL    BDOS        ; Get current user
  227.     LD    (OLDUSR),A    ; Save it
  228.     LD    C,25
  229.     CALL    BDOS        ; Get current drive
  230.     LD    (OLDDRV),A    ; Save it
  231.     LD    E,SYSDRV     
  232.     LD    C,14
  233.     CALL    BDOS        ; Log to system drive
  234.     LD    E,SYSUSR
  235.     LD    C,32
  236.     CALL    BDOS        ; Log to system user
  237.  
  238. ; Check for BYE presence
  239.  
  240.     LD    E,241
  241.     LD    C,BEXIST    
  242.     CALL    BDOS        ; See IF BYE5 is active
  243.     CP    77
  244.     JR    Z,BEGIN        ; Yes, proceed
  245.     CALL    PRINT        ; Else, abort
  246.     DB    CR,LF,'BYE5 not available, aborting...',CR,LF,0
  247.     JP    EXIT        ; Restore D/U and exit
  248.  
  249. ; Everything ok, let's begin
  250.  
  251. BEGIN:    LD    HL,CLS
  252.     CALL    PRINTM
  253.     LD    A,(MFLG)
  254.     CP    0
  255.     JP    NZ,PSE
  256.  
  257.     CALL    PVER
  258.      IF    CREDITS
  259.     LD    HL,AUTHOR
  260.     CALL    PRINTM
  261.      ELSE
  262.     CALL    PCRLF
  263.      ENDIF            ; credits
  264.  
  265. ; Parse the command line
  266.  
  267. PSE:    CALL    GETTIM
  268. PARSE:    LD    HL,80H        ; Point to CP/M command line buffer
  269.     LD    A,(HL)        ; Get length of command tail
  270.     CP    0        ; Is command terminated here?
  271.     JP    Z,MENU        ; If yes - goto menu operation
  272. GCHR:    INC    HL        ; Point to first character in command tail
  273.     LD    A,(HL)        ; Get character
  274.     CP     '/'        ; Do we have an option delimeter?
  275.     JR    NZ,GCHR        ; If not - loop until we get one
  276.     INC    HL        ; Point to option
  277.     LD    A,(HL)        ; Get option
  278.     
  279. ; Got the option, now act on it 
  280.  
  281. OPTION:    CP    '/'        ; ZCPR style help request
  282.     JP    Z,HELP
  283.     CP    '?'        ; CP/M stype help request
  284.     JP    Z,HELP
  285.  
  286.     CALL    CAPS
  287.     CP    'A'         ; Access table
  288.     JP    Z,ACCTAB
  289.     CP    'B'        ; Bitmaps
  290.     JP    Z,BITMP
  291.     CP    'D'        ; DU selections
  292.     JP    Z,DU
  293.     CP    'E'        ; Entry Files
  294.     JP    Z,ENTER
  295.     CP    'F'        ; Folders
  296.     JP    Z,FLDR
  297.     CP    'I'        ; INDEX.PBS
  298.     JP    Z,IDX 
  299.     CP    'L'        ; Low memory
  300.     JP    Z,LOWMEM
  301.     CP    'M'        ; Message Statistics
  302.     JP    Z,MSGST
  303.     CP     'O'        ; Operating System
  304.     JP    Z,PBS
  305.     CP    'P'        ; PBBS settings
  306.     JP    Z,PSET
  307.     CP    'R'        ; Restrictions
  308.     JP    Z,PSET1
  309.     CP    'S'        ; System files
  310.     JP    Z,SFILE
  311.     CP    'V'         ; Display Version Information
  312.     JP    Z,VERS
  313.     CP    'X'        ; Exit from menu
  314.     JP    Z,EXIT
  315.      IF ZCPR3        ;                    [tlp]
  316.     CP    'Z'        ; Z-System                [tlp]
  317.     JP    Z,ZSYS        ;                    [tlp]
  318.      ENDIF            ;                    [tlp]
  319.     LD    A,(MFLG)
  320.     CP    0
  321.     JP    NZ,MENU        ; In menu - rewrite menu
  322.     JP    HELP        ; Unknown option - give user help
  323.  
  324. ; Access table information
  325.  
  326. ACCTAB:    CALL    PRINT
  327.     DB    'PBBS Access Table Settings',CR,LF,LF
  328.     DB    '           '
  329.     DB    'Max Drive   Max User   Min Online   Retention   U/D Ratio'
  330.     DB    CR,LF,LF,0    ;                    [tlp]
  331.  
  332. GETLV:    LD    B,13        ; Counter for user level        [icc]
  333.     LD    HL,ACC2        ; Point to access table            [icc]
  334.     LD    (MAPSAV),HL    ; Save pointer                [icc]
  335.     LD    A,1        ; Set user level            [icc]
  336.     LD    (LVL),A        ;  and save it                [icc]
  337. GETLV1:    PUSH    BC        ; Save counter                [icc]
  338.     CALL    PRINT        ;                    [icc]
  339.     DB    'Level ',0    ;                    [icc]
  340.     LD    A,(LVL)        ; Get previous level            [icc]
  341.     INC    A        ;  and increment to current level    [icc]
  342.     LD    (LVL),A        ; Save it again                [icc]
  343.     CALL    PA2ASC        ; Print current level            [icc]
  344.     LD    B,6        ; 6 spaces                [icc]
  345.      CALL    PAD        ;                    [icc]
  346.     LD    HL,(MAPSAV)    ; Restore access table pointer        [icc]
  347.  
  348. DSPLV:    LD    A,(HL)        ; Get max drive
  349.     INC    HL        ; Point to max user            [icc]
  350.     PUSH    HL        ; Save pointer                [icc]
  351.     OR    A        ; Is max drive zero (unused)?        [icc]
  352.     JR    NZ,DSPLV1    ; If not, skip next            [icc]
  353.     LD    A,-17        ; Else, prepare to print 0        [icc]
  354. DSPLV1:    ADD    A,41H        ; Make it an ASCII letter (or zero)    [icc]
  355.     CALL    ECHO        ; Print it                [icc]
  356.     LD    B,11        ; 11 spaces                [icc]
  357.     CALL    PAD        ;                    [icc]
  358.     POP    HL        ; Restore pointer            [icc]
  359.     LD    A,(HL)        ; Get max user
  360.     INC    HL        ; Point to time allowed            [icc]
  361.     PUSH    HL        ; Save pointer                [icc]
  362.     OR    A        ; Is max user zero (unused)?        [icc]
  363.     JR    Z,DSPLV2    ; If yes, don't decrement        [icc]
  364.     DEC    A        ; Adjust to print actual user area
  365. DSPLV2:    CALL    PA2ASC        ; Print with leading zero IF necessary    [icc]
  366.     LD    B,8        ; 8 spaces                [icc]
  367.     CALL    PAD        ;                    [icc]
  368.     POP    HL        ; Restore pointer            [icc]
  369.     LD    A,(HL)        ; Get time on system
  370.     PUSH    HL        ; Save pointer                [icc]
  371.     CP    0        ; Unlimited?
  372.     JR    NZ,DMIN        ; If not, go print max time allowed
  373.     CALL    PRINT        ; Else, say unlimited
  374.     DB    BS,'Unlimited     ',0    ;                [icc]
  375.     JR    DMIN1
  376.  
  377. DMIN:    CALL    PADC
  378.     CALL    PRINT
  379.     DB    ' Min     ',0
  380.  
  381. DMIN1:    POP    HL        ; Restore pointer
  382.     INC    HL        ; Point to days to deletion
  383.     LD    A,(HL)        ; Get days to deletion
  384.     PUSH    HL        ; Save pointer                [icc]
  385.     CP    0
  386.     JR    NZ,DDAY
  387.     CALL    PRINT
  388.     DB    BS,BS,'Unlimited     ',0
  389.     JR    DDAY1
  390.  
  391. DDAY:    CALL    PADC
  392.     CALL    PRINT
  393.     DB    ' Days     ',0    ;                    [icc]
  394.  
  395. DDAY1:    POP    HL        ; Restore pointer
  396.     INC    HL        ; Point to u/d ratio
  397.     LD    A,(HL)        ; Get u/d ratio
  398.     PUSH    HL        ; Save pointer                [icc]
  399.     CP    0
  400.     JR    NZ,DUDR
  401.     CALL    PRINT
  402.     DB    BS,BS,'Unlimited',CR,LF,0    ;            [icc]
  403.     JR    DUDR1
  404.  
  405. DUDR:    CALL    PADC
  406.     CALL    PRINT
  407.     DB    ':1',CR,LF,0
  408. DUDR1:    POP    HL
  409.     LD    DE,ACTBLEN    ; Get length of one table entry        [icc]
  410.     LD    HL,(MAPSAV)    ; Restore pointer            [icc]
  411.     ADD    HL,DE        ; Point to max drive for next level    [icc]
  412.     LD    (MAPSAV),HL    ; Save that                [icc]
  413.     POP    BC        ; Restore counter            [icc]
  414.     DEC    B        ; Decrement counter            [icc]
  415.     JP    NZ,GETLV1    ; Loop til done                [icc]
  416.     JP    CHKMNU        ;                    [icc]
  417.  
  418. PAD:    LD    HL,PADSTR    ; Point to spaces (in PBBSDB.HDR)    [icc]
  419.     CALL    PRINTL        ; Print 'B' of them            [icc]
  420.     RET            ;                    [icc]
  421.  
  422.  
  423. ; Display drive and user bitmaps for all user levels
  424.  
  425. BITMP:    CALL    PRINT
  426.     DB    'PBBS Drive/User Bitmaps',CR,LF,LF
  427.     DB    '          Drive Maps        User Maps',CR,LF,LF
  428.     DB    '          PONMLKJIHGFEDCBA  FEDCBA9876543210',CR,LF,LF,0
  429.     
  430.     LD    B,13        ; Get counter for user levels        [icc]
  431.     LD    HL,USMP2    ; Point to drive/user maps        [icc]
  432.     LD    (MAPSAV),HL    ; Save this address            [icc]
  433.     LD    A,1        ; Set beginning user level-1        [icc]
  434.     LD    (LVL),A        ;  and store it                [icc]
  435. DM2:    PUSH    BC        ; Save counter                [icc]
  436.     CALL    PRINT        ;                     [icc]
  437.     DB    'Level ',0    ;                    [icc]
  438.     LD    A,(LVL)        ; Get previous level            [icc]
  439.     INC    A        ; Make it current level            [icc]
  440.     LD    (LVL),A        ;  and save it                [icc]
  441.     CALL    PA2ASC        ; Print current level            [icc]
  442.     CALL    PRINT        ;  followed by some spaces        [icc]
  443.     DB    '  ',0        ;                     [icc]
  444.     LD    HL,(MAPSAV)    ; Get pointer to current user map    [icc]
  445.     PUSH    HL        ; Save it on stack            [icc]
  446.     INC    HL        ; Point to current            [icc]
  447.     INC    HL        ;  drive map                [icc]
  448.     LD    E,(HL)        ; Get current                [icc]
  449.     INC    HL        ;  drive map                [icc]
  450.     LD    D,(HL)        ;   into DE                [icc]
  451.     INC    HL        ; Point to next user map        [icc]
  452.     LD    (MAPSAV),HL    ; Save it                [icc]
  453.     EX    DE,HL        ; Current drive map to HL        [icc]
  454.     CALL    TBIT        ; Display it                [icc]
  455.     CALL    PRINT        ; Some more spaces            [icc]
  456.     DB    '  ',0        ;                     [icc]
  457.     POP    HL        ; Restore pointer to current user map    [icc]
  458.     LD    E,(HL)        ; Get current                [icc]
  459.     INC    HL        ;  user map                [icc]
  460.     LD    D,(HL)        ;   into                [icc]
  461.     EX    DE,HL        ;    HL                    [icc]
  462.     CALL    TBIT        ; Display it                [icc]
  463.     CALL    PRINT        ; New line                [icc]
  464.     DB    CR,LF,0        ;                     [icc]
  465.     POP    BC        ; Restore counter            [icc]
  466.     DJNZ    DM2        ; Loop until done            [icc]
  467.  
  468.     JP    CHKMNU
  469.  
  470. LVL:    DS    1
  471. MAPSAV:    DS    2
  472.  
  473. ; Display the entry/welcome files used
  474.  
  475. ENTER:    CALL    PRINT
  476.     DB    'PBBS Entry/Welcome Files',CR,LF,LF,0
  477.     
  478.      IF NOT ENTY
  479.     CALL    PRINT        
  480.     DB    CR,LF,'Standard Entry ........: ',0
  481.     LD    HL,ENTRY+1
  482.     CALL    PRINTM
  483.     CALL    PRINT
  484.     DB    '.COM',0
  485.  
  486.     CALL    PRINT
  487.     DB    CR,LF,'New User Entry ........: ',0
  488.     LD    hl,nentry+1
  489.     CALL    PRINTM
  490.     CALL    PRINT
  491.     DB    '.COM',0
  492.  
  493.      IF SPON
  494.     CALL    PRINT
  495.     DB    CR,LF,'Special User Entry ....: ',0
  496.     LD    HL,SPENTRY+1
  497.     CALL    PRINTM
  498.     CALL    PRINT
  499.     DB    '.COM',0
  500.      ENDIF
  501.      ELSE
  502.     CALL    PRINT
  503.     DB    CR,LF,'Entry Files ...........: ENTR1.COM - ENTRF.COM',0
  504.      ENDIF
  505.  
  506.      IF ALTON
  507.     CALL    PRINT
  508.     DB    CR,LF,'Alternate Entry .......: ',0
  509.     LD    HL,ALTFILE+1
  510.     CALL    PRINTM
  511.     CALL    PRINT
  512.     DB    '.COM',0
  513.      ENDIF
  514.  
  515.      IF PRVATE AND PRVCOM
  516.     CALL    PRINT
  517.     DB    CR,LF,'Private Entry .........: ',0
  518.     LD    HL,PRVTCM+1
  519.     CALL    PRINTM
  520.     CALL    PRINT
  521.     DB    '.COM',0
  522.      ENDIF
  523.  
  524.     CALL    PRINT
  525.     DB    CR,LF,'Error File ............: ',0
  526.     LD    HL,ERRFIL+1
  527.     CALL    PRINTM
  528.     CALL    PRINT
  529.     DB    '.COM',0
  530.  
  531.      IF WELON
  532.      IF NOT WELCUM
  533.     CALL    PRINT
  534.     DB    CR,LF,'Welcome File ..........: ',0
  535.     LD    HL,WELCOM
  536.     CALL    PRINTM
  537.      ELSE
  538.     CALL    PRINT
  539.     DB    CR,LF,'Welcome Files .........: WELCOM1.PBS - WELCOMF.PBS',0
  540.      ENDIF
  541.      ENDIF
  542.  
  543.     CALL    PRINT
  544.     DB    CR,LF,LF,0
  545.  
  546.     JP    CHKMNU
  547.  
  548. ; Display folders selected within PBBS
  549.  
  550. FLDR:    CALL    PRINT
  551.     DB    'PBBS File Folders',CR,LF,LF,0
  552.  
  553.     LD    hl,fnames
  554.     CALL    PRINTM
  555.  
  556.      IF NMFLDRS GT 0
  557.     CALL    PRINT
  558.     DB    CR,LF,'1.  ',0
  559.     LD    HL,FNAME1
  560.     LD    B,11
  561.     CALL    PRINTL
  562.      ENDIF
  563.      IF NMFLDRS GT 1
  564.     CALL    PRINT
  565.     DB    CR,LF,'2.  ',0
  566.     LD    HL,FNAME2
  567.     LD    B,11
  568.     CALL    PRINTL
  569.      ENDIF
  570.      IF NMFLDRS GT 2
  571.     CALL    PRINT
  572.     DB    CR,LF,'3.  ',0
  573.     LD    HL,FNAME3
  574.     LD    B,11
  575.     CALL    PRINTL
  576.      ENDIF
  577.      IF NMFLDRS GT 3
  578.     CALL    PRINT
  579.     DB    CR,LF,'4.  ',0
  580.     LD    HL,FNAME4
  581.     LD    B,11
  582.     CALL    PRINTL
  583.      ENDIF
  584.      IF NMFLDRS GT 4
  585.     CALL    PRINT
  586.     DB    CR,LF,'5.  ',0
  587.     LD    HL,FNAME5
  588.     LD    B,11
  589.     CALL    PRINTL
  590.      ENDIF
  591.      IF NMFLDRS GT 5
  592.     CALL    PRINT
  593.     DB    CR,LF,'6.  ',0
  594.     LD    HL,FNAME6
  595.     LD    B,11
  596.     CALL    PRINTL
  597.      ENDIF
  598.      IF NMFLDRS GT 6
  599.     CALL    PRINT
  600.     DB    CR,LF,'7.  ',0
  601.     LD    HL,FNAME7
  602.     LD    B,11
  603.     CALL    PRINTL
  604.      ENDIF
  605.      IF NMFLDRS GT 7
  606.     CALL    PRINT
  607.     DB    CR,LF,'8.  ',0
  608.     LD    HL,FNAME8
  609.     LD    B,11
  610.     CALL    PRINTL
  611.      ENDIF
  612.      IF NMFLDRS GT 8
  613.     CALL    PRINT
  614.     DB    CR,LF,'9.  ',0
  615.     LD    HL,FNAME9
  616.     LD    B,11
  617.     CALL    PRINTL
  618.      ENDIF
  619.  
  620.     CALL    PRINT
  621.     DB    CR,LF,LF,'Minimum User Access to Folders: ',CR,LF,LF,0
  622.     
  623.     CALL    PRINT
  624.     DB    'Mail Folder Number:    ',0
  625.     LD    B,NMFLDRS
  626.     LD    A,'0'
  627. FNUMB:    CALL    ECHO
  628.     INC    A
  629.     PUSH    AF
  630.     PUSH    BC
  631.     CALL    PRINT
  632.     DB    '  ',0
  633.     POP    BC 
  634.     POP    AF
  635.     DJNZ    FNUMB
  636.  
  637.     CALL    PRINT
  638.     DB    CR,LF,'Minimum Access Level:  2  2  ',0
  639.     LD    HL,MAILTBL
  640.     LD    B,NMFLDRS-2
  641. FACC:    LD    A,(HL)
  642.     CP    0AH
  643.     JR    C,DEC
  644.     ADD    A,7
  645. DEC:    ADD    A,30H
  646.     CALL    ECHO
  647.     INC    HL
  648.     PUSH    HL
  649.     PUSH    BC
  650.     CALL    PRINT
  651.     DB    '  ',0
  652.     POP    BC
  653.     POP    HL
  654.     DJNZ    FACC
  655.     CALL    PRINT
  656.     DB    CR,LF,0
  657.  
  658.     JP    CHKMNU
  659.  
  660. ; Display stats from INDEX.PBS 
  661.  
  662. IDX:    CALL    IOPEN
  663.     LD    HL,0
  664.     CALL    GET        ; Get current index record
  665.     LD    HL,IDATEF
  666.     LD    DE,IDATE
  667.     LD    BC,NDXLEN
  668.     LDIR
  669.     LD    HL,1
  670.     CALL    GET        ; Get backup index record
  671.     LD    HL,IDATEF
  672.     LD    DE,BIDATE
  673.     LD    BC,NDXLEN
  674.     LDIR
  675.     CALL    CLOSE
  676.  
  677.     CALL    PRINT
  678.     DB    'INDEX.PBS Statistics     Current     Backup',CR,LF,0
  679.  
  680.     CALL    PRINT
  681.     DB    CR,LF,'Current Date......:    ',0    ;        [icc]
  682.     LD    IX,IDATE
  683.     CALL    FULDAT        ;                    [icc]
  684.     CALL    PRINT
  685.     DB    '    (',0    ;                    [icc]
  686.     LD    IX,BIDATE
  687.     CALL    FULDAT        ;                    [icc]
  688.     CALL    PRINT
  689.     DB    ')',0
  690.  
  691.     CALL    PRINT
  692.     DB    CR,LF,'Next Msg Record...:        ',0
  693.     LD    HL,(IMRNM)
  694.     CALL    PHLDC
  695.     CALL    PRINT
  696.     DB    '    (',0     ;                    [icc]
  697.     LD    HL,(BIMRNM)
  698.     CALL    PB2ASC
  699.     CALL    PRINT
  700.     DB    ')',0
  701.  
  702.     CALL    PRINT
  703.     DB    CR,LF,'Next Msg Number...:        ',0
  704.     LD    HL,(IMNXT)
  705.     CALL    PHLDC
  706.     CALL    PRINT
  707.     DB    '    (',0    ;                    [icc]
  708.     LD    HL,(BIMNXT)
  709.     CALL    PB2ASC
  710.     CALL    PRINT
  711.     DB    ')',0
  712.  
  713.     CALL    PRINT
  714.     DB    CR,LF,'Rcds Msg Index....:        ',0
  715.     LD    HL,(IMNDX)
  716.     CALL    PHLDC
  717.     CALL    PRINT
  718.     DB    '    (',0    ;                    [icc]
  719.     LD    HL,(BIMNDX)
  720.     CALL    PB2ASC
  721.     CALL    PRINT
  722.     DB    ')',0
  723.  
  724.     CALL    PRINT
  725.     DB    CR,LF,'# System Callers..:        ',0    ;        [icc]
  726.     LD    HL,(ICALL)
  727.     CALL    PHLDC
  728.     CALL    PRINT
  729.     DB    '    (',0    ;                    [icc]
  730.     LD    HL,(BICALL)
  731.     CALL    PB2ASC
  732.     CALL    PRINT
  733.     DB    ')',0
  734.  
  735.     CALL    PRINT
  736.     DB    CR,LF,'# System  Users...:        ',0
  737.     LD    HL,(IUSER)
  738.     CALL    PHLDC
  739.     CALL    PRINT
  740.     DB    '    (',0    ;                    [icc]
  741.     LD    HL,(BIUSER)
  742.     CALL    PB2ASC
  743.     CALL    PRINT
  744.     DB    ')',0
  745.  
  746.     CALL    PRINT
  747.     DB    CR,LF,'Rcds User File....:        ',0
  748.     LD    HL,(IUSRC)
  749.     CALL    PHLDC
  750.     CALL    PRINT
  751.     DB    '    (',0    ;                    [icc]
  752.     LD    HL,(BIUSRC)
  753.     CALL    PB2ASC
  754.     CALL    PRINT
  755.     DB    ')',0
  756.  
  757.     CALL    PRINT
  758.     DB    CR,LF,'Hard Cpy Log Sw...:     ',0    ;        [icc]
  759.     LD    A,(HRDLOG)
  760.     CP    0
  761.     JR    Z,HOFF
  762.     CALL    PRINT
  763.     DB    '      ON',0
  764.     JR    HON
  765. HOFF:    CALL    PRINT
  766.     DB    '     OFF',0
  767.  
  768. HON:    LD    A,(BHRDLOG)
  769.     CP    0
  770.     JR    Z,BHOFF
  771.     CALL    PRINT
  772.     DB    '    (ON)',0    ;                    [icc]
  773.     JR    BHON
  774. BHOFF:    CALL    PRINT
  775.     DB    '    (OFF)',0    ;                    [icc]
  776.  
  777. BHON:    CALL    PRINT
  778.     DB    CR,LF,'User File Maint'
  779.     DB    CR,LF,'           Date...:    ',0    ;        [icc]
  780.     LD    IX,MUSRD
  781.     CALL    FULDAT        ;                    [icc]
  782.     CALL    PRINT
  783.     DB    '    (',0    ;                    [icc]
  784.     LD    IX,BMUSRD
  785.     CALL    FULDAT        ;                    [icc]
  786.     CALL    PRINT
  787.     DB    ')',0
  788.  
  789.     CALL    PRINT
  790.     DB    CR,LF,'           Time...:     ',0    ;        [icc]
  791.     LD    IX,MUSRT
  792.     CALL    PTIME
  793.     CALL    PRINT
  794.     DB    '    (',0    ;                    [icc]
  795.     LD    IX,BMUSRT
  796.     CALL    PTIME
  797.     CALL    PRINT    
  798.     DB    ')',0
  799.  
  800.     CALL    PRINT
  801.     DB    CR,LF,'Msg File Maint'
  802.     DB    CR,LF,'           Date...:    ',0    ;        [icc]
  803.     LD    IX,MMSGD
  804.     CALL    FULDAT        ;                    [icc]
  805.     CALL    PRINT
  806.     DB    '    (',0    ;                    [icc]
  807.     LD    IX,BMMSGD
  808.     CALL    FULDAT        ;                    [icc]
  809.     CALL    PRINT
  810.     DB    ')',0
  811.  
  812.     CALL    PRINT
  813.     DB    CR,LF,'           Time...:     ',0    ;        [icc]
  814.     LD    IX,MMSGT
  815.     CALL    PTIME
  816.     CALL    PRINT
  817.     DB    '    (',0    ;                    [icc]
  818.     LD    IX,BMMSGT
  819.     CALL    PTIME    
  820.     CALL    PRINT
  821.     DB    ')',0
  822.  
  823.     CALL    PRINT
  824.     DB    CR,LF,'Daily Minutes.....:        ',0
  825.     LD    HL,(SYACU)
  826.     CALL    PHLDC
  827.     CALL    PRINT
  828.     DB    '    (',0    ;                    [icc]
  829.     LD    HL,(BSYACU)
  830.     CALL    PB2ASC
  831.     CALL    PRINT
  832.     DB    ')',0
  833.  
  834.     CALL    PRINT
  835.     DB    CR,LF,'Daily Calls.......:          ',0
  836.     LD    A,(SYDCC)
  837.     CALL    PADC
  838.     CALL    PRINT
  839.     DB    '    (',0    ;                    [icc]
  840.     LD    A,(BSYDCC)
  841.     CALL    PA2ASC
  842.     CALL    PRINT
  843.     DB    ')',0
  844.  
  845.     CALL    PRINT
  846.     DB    CR,LF,'Current Usage.....:         ',0
  847.     LD    A,(SYCRP)
  848.     CALL    PADC
  849.     CALL    PRINT
  850.     DB    '%',0
  851.     CALL    PRINT
  852.     DB    '    (',0    ;                    [icc]
  853.     LD    A,(BSYCRP)
  854.     CALL    PA2ASC
  855.     CALL    PRINT
  856.     DB    '%)',0
  857.  
  858.     CALL    PRINT
  859.     DB    CR,LF,'Previous Usage....:         ',0
  860.     LD    A,(SYPVP)
  861.     CALL    PADC
  862.     CALL    PRINT
  863.     DB    '%',0
  864.     CALL    PRINT
  865.     DB    '    (',0    ;                    [icc]
  866.     LD    A,(BSYPVP)
  867.     CALL    PA2ASC
  868.     CALL    PRINT
  869.     DB    '%)',CR,LF,0
  870.  
  871.     JP    CHKMNU
  872.  
  873. ; Display low memory addresses
  874.  
  875. LOWMEM:    CALL    PRINT
  876.     DB    'PBBS Low Memory Statistics',CR,LF,0
  877.     LD    A,(REENTR)
  878.     CP    0
  879.     JR    NZ,LMEM
  880.     CALL    PRINT
  881.     DB    CR,LF,'Low Memory function requires PBBS to be active',CR,LF,0
  882.     JP    CHKMNU
  883.  
  884. LMEM:    CALL    PRINT
  885.     DB    CR,LF,'Re-Entry Byte.............: ',0
  886.     LD    HL,REENTR
  887.     CALL    CHKAD
  888.     JR    NZ,PTH
  889.     LD    A,(HL)
  890.     CP    0
  891.     JR    NZ,REON
  892.     CALL    PRINT
  893.     DB    'OFF',0
  894.     JR    PTH
  895. REON:    CALL    PRINT
  896.     DB    'ON',0
  897.  
  898. PTH:    CALL    PRINT
  899.     DB    CR,LF,'Path......................: ',0
  900.      IF    ZCPR3            ;                [tlp]
  901.     LD    HL,(ZPTH)        ;                [tlp]
  902.        ELSE                ;                [tlp]
  903.     LD    HL,PATH            ;                [tlp]
  904.      ENDIF                ;                [tlp]
  905.     CALL    CHKAD
  906.     JP    NZ,TMID
  907. PTH1:    LD    A,(HL)
  908.     CP     0
  909.     JR    Z,TMID
  910.     CP    '$'
  911.     JR    Z,PDRV
  912.     ADD    A,40H
  913. PDRV:    CALL    ECHO
  914.     INC    HL
  915.     PUSH    HL
  916.     LD    A,(HL)
  917.     CP    '$'
  918.     JR    NZ,PUSR
  919.     CALL    ECHO
  920.     JR    PUSR1
  921. PUSR:    CALL    PA2ASC    
  922. PUSR1:    CALL    PRINT
  923.     DB    ': ',0
  924.     POP    HL
  925.     INC    HL
  926.     JR    PTH1
  927.  
  928. TMID:
  929.      IF    TCAP
  930.     CALL    PRINT
  931.     DB    CR,LF,'Terminal Id Code..........: ',0
  932.     LD    HL,TRMCD
  933.     CALL    CHKAD
  934.     JR    NZ,URECA
  935.     LD    A,(HL)
  936.     CALL    PA2ASC
  937.     CALL    PRINT
  938.     DB    ' - ',0
  939.      IF    ZCPR3            ;                [tlp]
  940.     LD    HL,Z3ENV+80H        ;                [tlp]
  941.      ELSE                ;                [tlp]
  942.     LD    HL,SYSENV+80H        ;                [tlp]
  943.      ENDIF                ; ZCPR3                [tlp]
  944.     LD    A,(HL)
  945.     CP    ' '
  946.     CALL    Z,URECA
  947.     LD    B,16
  948. PTERM:    LD    A,(HL)
  949.     CALL    ECHO
  950.     INC    HL
  951.     DJNZ    PTERM
  952.      ENDIF                ; TCAP
  953.  
  954. URECA:    CALL    PRINT
  955.     DB    CR,LF,'User Record Address.......: ',0
  956.     LD    HL,USREC
  957.     CALL    CHKAD
  958.     LD    HL,(USREC)
  959.     CALL    Z,PB2ASC
  960.  
  961. ALCK:    CALL    PRINT
  962.     DB    CR,LF,'Address of Lock (Access)..: ',0
  963.     LD    HL,LOCK
  964.     CALL    CHKAD
  965.     JR    NZ,UMAP
  966.     LD    A,(HL)
  967.     CP    09
  968.     JR    C,ADEC
  969.     ADD    A,7
  970. ADEC:    ADD    A,30H
  971.     CALL    ECHO
  972.  
  973. UMAP:    CALL    PRINT
  974.     DB    CR,LF,'User Map..................: ',0
  975.     LD    HL,USRMAP
  976.     CALL    CHKAD
  977.     JR    NZ,DMAP
  978.     LD    HL,(USRMAP)
  979.     CALL    TBIT
  980.  
  981. DMAP:    CALL    PRINT
  982.     DB    CR,LF,'Drive Map.................: ',0
  983.     LD    HL,DRVMAP
  984.     CALL    CHKAD
  985.     JR    NZ,DLOG
  986.     LD    HL,(DRVMAP)
  987.     CALL    TBIT
  988.  
  989. DLOG:    CALL    PRINT
  990.     DB    CR,LF,'Disk Log..................: ',0
  991.      IF DSKLOG
  992.     LD    HL,DSKFLG
  993.     CALL    CHKAD
  994.     JR    NZ,MSPD
  995.     CALL    PRINT
  996.     DB    'ON',0
  997.      ELSE
  998.     CALL    PRINT
  999.     DB    '     OFF',0
  1000.      ENDIF
  1001.  
  1002. MSPD:    CALL    PRINT
  1003.     DB    CR,LF,'Modem Speed Indicator.....: ',0
  1004.     LD    HL,BSPEED
  1005.     CALL    CHKAD
  1006.     JP    NZ,MDRV 
  1007.     LD    A,(HL)
  1008. B110:    CP    0
  1009.     JR    NZ,B300
  1010.     CALL    PRINT
  1011.     DB    '110 baud',0
  1012.     JP    MDRV
  1013. B300:    CP    1
  1014.     JR    NZ,B450
  1015.     CALL    PRINT
  1016.     DB    '300 baud',0
  1017.     JP    MDRV
  1018. B450:    CP    2
  1019.     JR    NZ,B600
  1020.     CALL    PRINT
  1021.     DB    '450 baud',0
  1022.     JP    MDRV
  1023. B600:    CP    3
  1024.     JR    NZ,B710
  1025.     CALL    PRINT
  1026.     DB    '600 baud',0
  1027.     JP    MDRV
  1028. B710:    CP    4
  1029.     JR    NZ,B1200
  1030.     CALL    PRINT
  1031.     DB    '710 baud',0
  1032.     JP    MDRV
  1033. B1200:    CP    5
  1034.     JR    NZ,B2400
  1035.     CALL    PRINT
  1036.     DB    '1200 baud',0
  1037.     JP    MDRV
  1038. B2400:    CP    6
  1039.     JR    NZ,B4800
  1040.     CALL    PRINT
  1041.     DB    '2400 baud',0
  1042.     JP    MDRV
  1043. B4800:    CP    7
  1044.     JR    NZ,B9600
  1045.     CALL    PRINT
  1046.     DB    '4800 baud',0
  1047.     JP    MDRV
  1048. B9600:    CP    8
  1049.     JR    NZ,B19200
  1050.     CALL    PRINT
  1051.     DB    '9600 baud',0
  1052.     JP    MDRV
  1053. B19200:    CP     9
  1054.     JR    NZ,BLOCAL
  1055.     CALL    PRINT
  1056.     DB    '19.2k baud',0
  1057.     JP    MDRV
  1058. BLOCAL:    CALL    PRINT
  1059.     DB    'Local',0
  1060.  
  1061. MDRV:    CALL    PRINT
  1062.     DB    CR,LF,'Maximum Drive.............: ',0
  1063.      IF zcpr3            ;                [tlp]
  1064.     LD    HL,ZDRV            ;                [tlp]
  1065.      ELSE                ;                [tlp]
  1066.     LD    HL,MXDRV        ;                [tlp]
  1067.      ENDIF                ; ZCPR3                [tlp]
  1068.     PUSH    HL
  1069.     CALL    phl4hc
  1070.     CALL    PRINT
  1071.     DB    'H  ',0
  1072.     POP    HL
  1073.     LD    A,(HL)
  1074.     ADD    A,40H
  1075.     CALL    ECHO
  1076.  
  1077. MUSR:    CALL    PRINT
  1078.     DB    CR,LF,'Maximum User..............: ',0
  1079.      IF ZCPR3            ;                [tlp]
  1080.     LD    HL,ZUSR            ;                [tlp]
  1081.      ELSE                ;                [tlp]
  1082.     LD    HL,MXUSR        ;                [tlp]
  1083.      ENDIF                ; ZCPR3                [tlp]
  1084.     LD    A,(HL)
  1085.     LD    (TMPUSR),A
  1086.     CALL    PHL4HC
  1087.     CALL    PRINT
  1088.     DB    'H  ',0
  1089.     LD    A,(TMPUSR)
  1090.     CALL    Z,PA2ASC
  1091.  
  1092.     CALL    PRINT
  1093.     DB    CR,LF,'Wheel Byte................: ',0
  1094.      IF ZCPR3            ;                [tlp]
  1095.     LD    HL,(ZWHL)        ;                [tlp]
  1096.      ELSE                ;                [tlp]
  1097.     LD    HL,WHEEL        ;                [tlp]
  1098.      ENDIF                ; ZCPR3                [tlp]
  1099.     CALL    CHKAD
  1100.     JR    NZ,LOGTM
  1101.     LD    A,(HL)
  1102.     CP    0
  1103.     JR    Z,WOFF
  1104.     CALL    PRINT
  1105.     DB    'ON',0
  1106.     JR    LOGTM
  1107. WOFF:    CALL    PRINT
  1108.     DB    'OFF',0
  1109.  
  1110. LOGTM:    CALL    PRINT
  1111.     DB    CR,LF,'Logon-Time (ASCII)........: ',0
  1112.     LD    HL,LOGSTR
  1113.     CALL    CHKAD
  1114.     JR    NZ,UPL
  1115.     LD    b,8
  1116. GTM:    LD    A,(HL)
  1117.     CALL    ECHO
  1118.     INC    HL
  1119.     DJNZ    GTM
  1120.  
  1121. UPL:    CALL    PRINT
  1122.     DB    CR,LF,'Upload Count..............: ',0
  1123.     LD    HL,UPLOADS
  1124.     CALL    CHKAD
  1125.     LD    A,(HL)
  1126.     CALL    Z,PA2ASC
  1127.  
  1128.     CALL    PRINT
  1129.     DB    CR,LF,'Download Count............: ',0
  1130.     LD    HL,DNLOADS
  1131.     CALL    CHKAD
  1132.     LD    A,(HL)
  1133.     CALL    Z,PA2ASC
  1134.  
  1135.     CALL    PRINT
  1136.     DB    CR,LF,'Access in ASCII...........: ',0
  1137.     LD    HL,ASCACC
  1138.     CALL    CHKAD
  1139.     LD    A,(HL)
  1140.     CALL    NZ,PA2ASC
  1141.  
  1142.     CALL    PRINT
  1143.     DB    CR,LF,0
  1144.  
  1145.     JP    CHKMNU
  1146.  
  1147. CHKAD:    PUSH    HL
  1148.     LD    DE,JUNK
  1149.     LD    B,2
  1150.     CALL    MATCH
  1151.     JR    Z,NOTU
  1152. PTAD:    CALL    PHL4HC
  1153.     CALL    PRINT
  1154.     DB    'H  ',0
  1155.     JR    CHKEX
  1156. NOTU:    CALL    PRINT
  1157.     DB    'Not Used',0
  1158. CHKEX:    POP    HL
  1159.     RET
  1160.  
  1161. TBIT:    PUSH    HL
  1162.     LD    C,H
  1163.     CALL    PBBITS
  1164.     POP    HL
  1165.     LD    C,L
  1166.     CALL    PBBITS
  1167.     RET
  1168.  
  1169. PBBITS:    LD    B,8
  1170. PBB1:    LD    A,'0'    
  1171.     BIT    7,C
  1172.     JR    Z,PBB2
  1173.     INC    A
  1174.  
  1175. PBB2:    CALL    ECHO
  1176.     SLA    C
  1177.     DJNZ    PBB1
  1178.     RET
  1179.  
  1180. ; Display message statistics
  1181.  
  1182. MSGST:
  1183.  
  1184. ; Open INDEX.PBS file
  1185.  
  1186.     CALL    IOPEN        ; Point to INDEX.PBS
  1187.     LD    HL,0        ; Message number
  1188.     CALL    GET        ; Get message
  1189.     LD    HL,IDATEF    ; Point to source buffer
  1190.     LD    DE,IDATE    ; Point to destination buffer
  1191.     LD    BC,NDXLEN    ; Length of buffer
  1192.     LDIR            ; Move to buffer
  1193.     CALL    CLOSE        ; Close file
  1194.  
  1195. ; Open MSGINDEX.PBS file
  1196.  
  1197.     LD    HL,MSGINDEX    ; Point to MSGINDEX.PBS
  1198.     CALL    OPEN        ; Open file
  1199.     LD    HL,MNDXLEN    ; Get length of index record
  1200.     LD    (RRSZ),HL    ; Save in RRSZ for later
  1201.     LD    HL,0        ; Starting record number
  1202.     LD    (MSGREC),HL
  1203.     CALL    GET
  1204.     
  1205. DSPREC:    LD    HL,CLS
  1206.     CALL    PRINTM
  1207.  
  1208.     CALL    PRINT
  1209.     DB    'PBBS Message Statistics',CR,LF,0
  1210.  
  1211.     CALL    PRINT
  1212.     DB    CR,LF,'Record number (MSG)...: ',0
  1213.     LD    HL,(MSGREC)
  1214.     INC    HL
  1215.     CALL    PB2ASC
  1216.     CALL    PRINT
  1217.     DB    ' (',0
  1218.     LD    HL,(MNUMF)
  1219.     CALL    PB2ASC
  1220.     CALL    PRINT
  1221.     DB    ')',0
  1222.     CALL    PRINT
  1223.     DB    CR,LF,'Message FROM: ........: ',0
  1224.     LD    HL,MFROMF
  1225.     LD    B,30
  1226.     CALL    PRINTL
  1227.     CALL    PRINT
  1228.     DB    CR,LF,'Message TO: ..........: ',0
  1229.     LD    HL,MTOF
  1230.     LD    B,30
  1231.     CALL    PRINTL
  1232.     CALL    PRINT
  1233.     DB    CR,LF,'Message SUBJECT: .....: ',0
  1234.     LD    HL,MSUBF
  1235.     LD    B,26
  1236.     CALL    PRINTL
  1237.     CALL    PRINT
  1238.     DB    CR,LF,'Time left ............: ',0
  1239.     LD    IX,MTIMEF
  1240.     CALL    PTIME
  1241.     CALL    PRINT
  1242.     DB    CR,LF,'Date left ............: ',0
  1243.     LD    IX,MDATF
  1244.     CALL    PDATE
  1245.     CALL    PRINT
  1246.     DB    CR,LF,'Block Count ..........: ',0
  1247.     LD    A,(MBLKF)
  1248.     CALL    PA2ASC
  1249.     CALL    PRINT
  1250.     DB    CR,LF,'Starting block .......: ',0
  1251.     LD    HL,(MSTRF)
  1252.     CALL    PB2ASC
  1253.     CALL    PRINT
  1254.     DB    CR,LF,'Index record number ..: ',0    
  1255.     LD    HL,(MRECF)
  1256.     CALL    PB2ASC
  1257.     CALL    PRINT
  1258.     DB    CR,LF,'Public/Private .......: ',0
  1259.     LD    A,(MPUBF)
  1260.     CP    0
  1261.     JR    NZ,PRVT
  1262.     CALL    PRINT
  1263.     DB    '(Public)',0
  1264.     JR    RPDNE
  1265. PRVT:    CALL    PRINT
  1266.     DB    '(Private)',0
  1267. RPDNE:    CALL    PRINT
  1268.     DB    CR,LF,'Folder number ........: ',0
  1269.     LD    A,(MFNUMF)
  1270.     CALL    PA2ASC
  1271.     CALL    PRINT
  1272.     DB    ' - ',0
  1273.     LD    A,(MFNUMF)
  1274.     CP    0
  1275.     JR    NZ,FLD1
  1276.     LD    HL,FNAMES
  1277.     LD    B,11
  1278.     CALL    PRINTL
  1279.     JP    FLDNE
  1280. FLD1:    CP    1
  1281.     JR    NZ,FLD2
  1282.     LD    HL,FNAME1
  1283.     LD    B,11
  1284.     CALL    PRINTL
  1285.     JP    FLDNE
  1286. FLD2:    CP    2
  1287.     JR    NZ,FLD3
  1288.     LD    HL,FNAME2
  1289.     LD    B,11
  1290.     CALL    PRINTL
  1291.     JP    FLDNE
  1292. FLD3:    CP    3
  1293.     JR    NZ,FLD4
  1294.     LD    HL,FNAME3
  1295.     LD    B,11
  1296.     CALL    PRINTL
  1297.     JP    FLDNE
  1298. FLD4:    CP    4
  1299.     JR    NZ,FLD5
  1300.     LD    HL,FNAME4
  1301.     LD    B,11
  1302.     CALL    PRINTL
  1303.     JP    FLDNE
  1304. FLD5:    CP    5
  1305.     JR    NZ,FLD6
  1306.     LD    HL,FNAME5
  1307.     LD    B,11
  1308.     CALL    PRINTL
  1309.     JP    FLDNE
  1310. FLD6:    CP    6
  1311.     JR    NZ,FLD7
  1312.     LD    HL,FNAME6
  1313.     LD    B,11
  1314.     CALL    PRINTL
  1315.     JP    FLDNE
  1316. FLD7:    CP    7
  1317.     JR    NZ,FLD8
  1318.     LD    HL,FNAME7
  1319.     LD    B,11
  1320.     CALL    PRINTL
  1321.     JP    FLDNE
  1322. FLD8:    CP    8
  1323.     JR    NZ,FLD9
  1324.     LD    HL,FNAME8
  1325.     LD    B,11
  1326.     CALL    PRINTL
  1327.     JP    FLDNE
  1328. FLD9:    LD    HL,FNAME9
  1329.     LD    B,11
  1330.     CALL    PRINTL
  1331.  
  1332. FLDNE:    CALL    PRINT
  1333.     DB    CR,LF,'Read/Delete ..........: ',0
  1334.     LD    A,(MREAD)
  1335.     CP    0
  1336.     JR    NZ,MRD
  1337.     CALL    PRINT
  1338.     DB    '( )',0
  1339.     JR    MDNE
  1340. MRD:    CP    1
  1341.     JR    NZ,MDLT
  1342.     CALL    PRINT
  1343.     DB    '(R)',0
  1344.     JR    MDNE
  1345. MDLT:    CP    0FFH
  1346.     JR    NZ,MDNE
  1347.     CALL    PRINT
  1348.     DB    '(D)',0
  1349. MDNE:
  1350.      IF     MTHD
  1351.      IF     MSGTHD
  1352.     CALL    PRINT
  1353.     DB    CR,LF,'Message retention ....: ',0 
  1354.     LD    A,(MRETEN)
  1355.     CALL    PA2ASC
  1356.     CALL    PRINT
  1357.     DB    CR,LF,'Forward link .........: ',0
  1358.     LD    HL,(MFLNK)
  1359.     CALL    PB2ASC
  1360.     CALL    PRINT
  1361.     DB    CR,LF,'Reverse link .........: ',0
  1362.     LD    HL,(MRLNK)
  1363.     CALL    PB2ASC
  1364.     CALL    PRINT
  1365.     DB    CR,LF,'Reply to message .....: ',0
  1366.     LD    HL,(MREPLY)
  1367.     CALL    PB2ASC
  1368.      ENDIF            ; MSGTHD
  1369.      ENDIF            ; MTHD
  1370.  
  1371.     CALL    PRINT
  1372.     DB    CR,LF,LF,'N)ext   P)revious   G)oto   Q)uit   '
  1373.     DB    'Enter Selection: ',0
  1374. GCH:    CALL    GETCH
  1375.     CALL    CAPS
  1376.     CALL    ECHO
  1377.     CP    'N'        ; Next message index record
  1378.     JP    Z,NEXT
  1379.     CP    'P'        ; Previous message index record
  1380.     JP    Z,PREV
  1381.     CP    'G'        ; Goto specific index record
  1382.     JP    Z,GOTO
  1383.     CP    'Q'         ; Quit
  1384.     JP    Z,QUIT
  1385.     CALL    PRINT        ; Entered unknown character
  1386.     DB    BS,' ',BS,0    ; Erase the previous character
  1387.     JR    GCH        ;  and get new one
  1388.     RET
  1389.  
  1390. NEXT:    LD    HL,(MSGREC)
  1391.     OR    A
  1392.     LD    DE,(IMNDX)
  1393.     SBC    HL,DE
  1394.     JP    Z,DSPREC
  1395.     LD    HL,(MSGREC)
  1396.     INC    HL
  1397.     LD    (MSGREC),HL
  1398.     CALL    GET
  1399.     JP    DSPREC
  1400.  
  1401. PREV:    LD    HL,(MSGREC)
  1402.     LD    A,L
  1403.     OR    H
  1404.     JP    Z,DSPREC
  1405.     DEC    HL
  1406.     LD    (MSGREC),HL
  1407.     CALL    GET
  1408.     JP    DSPREC
  1409.  
  1410. GOTO:    CALL    PRINT
  1411.     DB    BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS
  1412.     DB    '                  '
  1413.     DB    BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS
  1414.     DB    'Record Number: ',0
  1415.     LD    C,0        ; Do not force upper case
  1416.     LD    B,5        ; Maximum length of input string
  1417.     LD    D,0        ; No word wrap
  1418.     LD    A,0        ; Echo input to console
  1419.     CALL    INPUT        ; Get input from user
  1420.     LD    (CNVRT0+1),A    ; Place length of input string in buffer
  1421.     PUSH    HL
  1422.     POP    IX
  1423.     CALL    CNVRT0        ; Convert ASCII string to BINARY in HL
  1424.     LD    (OLDMSG),HL    ; Save message number in temp
  1425.     LD    A,L        ; Check message number to see IF less than 0
  1426.     OR    H
  1427.     JP    Z,DSPREC    ; If less than 0 - just redisplay record
  1428.     LD    HL,(OLDMSG)    ; Get current message number (TEMP)
  1429.     OR    A        ; Reset flags
  1430.     LD    DE,(IMNDX)    ; Get maximum message number
  1431.     INC    DE
  1432.     INC    DE
  1433.     SBC    HL,DE        ; Check to see IF current>largest
  1434.     JP    NC,DSPREC    ; If larger - just redisplay record
  1435.     LD    HL,(OLDMSG)
  1436.     DEC    HL        ; Account for record 1 actually being 0
  1437.     LD    (MSGREC),HL    ; Save current record number
  1438.     CALL    GET        ; HL has record number to get
  1439.     JP    DSPREC        ; Display record
  1440.  
  1441. QUIT:    CALL    CLOSE        ; Close MSGINDEX.PBS
  1442.     LD    A,(MFLG)
  1443.     CP    0
  1444.     JP    NZ,MENU
  1445.     JP    EXIT
  1446.  
  1447. ; PBBS Runtime Options
  1448.  
  1449. PSET:    CALL    PRINT
  1450.     DB    'PBBS Runtime Options',CR,LF,0
  1451.  
  1452.     CALL    PRINT
  1453.     DB    CR,LF,'Show Authors Name on Signon ..... (CREDITS) ',0
  1454.     LD    A,CREDITS
  1455.     CALL    CYN
  1456.  
  1457.     CALL    PRINT
  1458.     DB    CR,LF,'Display Version Number on Signon  (VERSION) ',0
  1459.     LD    A,VERSION
  1460.     CALL    CYN
  1461.  
  1462.     CALL    PRINT
  1463.     DB    CR,LF,'Show Bulletin File at Signon ..... (BULTIN) ',0
  1464.     LD    A,BULTIN
  1465.     CALL    CYN
  1466.  
  1467.     CALL    PRINT
  1468.     DB    CR,LF,'Bump User Level Automatically .....(DOBUMP) ',0
  1469.     LD    A,DOBUMP
  1470.     CALL    CYN
  1471.  
  1472.      IF DOBUMP
  1473.     CALL    PRINT
  1474.     DB    'From 2-',0
  1475.     LD    A,BUMPHI
  1476.     ADD    A,30H
  1477.     CALL    ECHO
  1478.      ENDIF            ; DOBUMP
  1479.  
  1480.     CALL    PRINT
  1481.     DB    CR,LF,'PBYE Shows List of Last Callers ...(DSPCLR) ',0
  1482.     LD    A,DSPCLR
  1483.     CALL    CYN
  1484.      IF DSPCLR
  1485.     LD    A,(DSPNUM)
  1486.     CALL    PA2ASC
  1487.     CALL    PRINT
  1488.     DB    ' Callers Shown',0
  1489.      ENDIF            ; DSPCLR
  1490.  
  1491.     CALL    PRINT
  1492.     DB    CR,LF,'Maintain System Statistics ....... (MSTATS) ',0
  1493.     LD    A,MSTATS
  1494.     CALL    CYN
  1495.  
  1496.     CALL    PRINT
  1497.     DB    CR,LF,'Display System Statistics at Logon (DSTATS) ',0
  1498.     LD    A,DSTATS
  1499.     CALL    CYN
  1500.  
  1501.     CALL    PRINT
  1502.     DB    CR,LF,'Allow Sysop to Signon with SYSOP .. (SYSOK) ',0
  1503.     LD    A,SYSOK
  1504.     CALL    CYN
  1505.  
  1506.     CALL    PRINT
  1507.     DB    CR,LF,'Supports Message Threading ....... (MSGTHD) ',0
  1508.     LD    A,MSGTHD
  1509.     CALL    CYN
  1510.  
  1511.     CALL    PRINT
  1512.     DB    CR,LF,'Display Message Body After Header  (SKPHDR) ',0
  1513.     LD    A,SKPHDR
  1514.         CALL    CYN
  1515.  
  1516.     CALL    PRINT
  1517.     DB    CR,LF,'Number of Lines in Message ....... (MSGLIN) ',0
  1518.     LD    A,MSGLIN
  1519.     CALL    PA2ASC
  1520.     CALL    PRINT
  1521.     DB    '   Buf Size - ',0
  1522.     LD    HL,MSGBUF
  1523.     CALL    PB2ASC
  1524.     CALL    PRINT
  1525.     DB    'k',0
  1526.  
  1527.     CALL    PRINT
  1528.     DB    CR,LF,'Display Welcome Message at Logon .. (WELON) ',0
  1529.     LD    A,WELON
  1530.     CALL    CYN
  1531.  
  1532.     CALL    PRINT
  1533.     DB    CR,LF,'Support Multiple Welcome Files ... (WELCUM) ',0
  1534.     LD    A,WELCUM
  1535.     CALL    CYN
  1536.  
  1537.     CALL    PRINT
  1538.     DB    CR,LF,'Number of Tries to Signon ......... (TRIES) ',0
  1539.     LD    A,TRIES
  1540.     CALL    PA2ASC
  1541.  
  1542.     CALL    PRINT
  1543.     DB    CR,LF,'System was Originaly OXGATE System (OXGATE) ',0
  1544.     LD    A,OXGATE
  1545.     CALL    CYN
  1546.  
  1547.     CALL    PRINT
  1548.     DB    CR,LF,'Maximum Number of Users on System .. (MAXU) ',0
  1549.     LD    HL,MAXU
  1550.     CALL    PB2ASC
  1551.  
  1552.     CALL    PRINT
  1553.     DB    CR,LF,'Is System Setup for One Menu ..... (ONEMNU) ',0
  1554.     LD    A,ONEMNU
  1555.     CALL    CYN
  1556.     
  1557.     CALL    PRINT
  1558.     DB    CR,LF,'Skip Asking User to Delete Msgs ... (NODEL) ',0
  1559.     LD    A,NODEL
  1560.     CALL    CYN
  1561.  
  1562.     CALL    PRINT
  1563.     DB    CR,LF,'Number of File Folders .......... (NMFLDRS) ',0
  1564.     LD    A,NMFLDRS
  1565.     CALL    PA2ASC
  1566.  
  1567.     CALL    PRINT
  1568.     DB    CR,LF,'Use Terminals 25th Line ........... (SET25) ',0
  1569.     LD    A,SET25
  1570.     CALL    CYN
  1571.  
  1572.     CALL    PRINT
  1573.     DB    CR,LF,0
  1574.  
  1575.     JP    CHKMNU
  1576.  
  1577. CYN:    CP    YES
  1578.     JP    NZ,DNO
  1579.     CALL    PRINT
  1580.     DB    'YES  ',0
  1581.     RET
  1582.  
  1583. DNO:    CALL    PRINT
  1584.     DB    'NO   ',0
  1585.     RET
  1586.  
  1587. DHX:    CALL    PRINT
  1588.     DB    'H',0
  1589.     RET
  1590.  
  1591. ; Display PBBS system files
  1592.  
  1593. SFILE:    CALL    PRINT
  1594.     DB    'PBBS System Files',CR,LF,0
  1595.  
  1596.     CALL    PRINT
  1597.     DB    CR,LF,'Bulletin File .........: ',0
  1598.     LD    HL,BULLETIN
  1599.     CALL    PRINTM
  1600.  
  1601.     CALL    PRINT
  1602.     DB    CR,LF,'Callers File ..........: ',0
  1603.     LD    HL,CALLRS
  1604.     CALL    PRINTM
  1605.  
  1606.     CALL    PRINT
  1607.     DB    CR,LF,'Comments File .........: ',0
  1608.     LD    HL,COMMENTS
  1609.     CALL    PRINTM
  1610.  
  1611.     CALL    PRINT
  1612.     DB    CR,LF,'Index File ............: ',0
  1613.     LD    HL,INDEX
  1614.     CALL    PRINTM
  1615.  
  1616.     CALL    PRINT
  1617.     DB    CR,LF,'Last Caller File ......: ',0
  1618.     LD    HL,LASTCAL
  1619.     CALL    PRINTM
  1620.  
  1621.     CALL    PRINT
  1622.     DB    CR,LF,'Message File ..........: ',0
  1623.     LD    HL,MESSAGES
  1624.     CALL    PRINTM
  1625.  
  1626.     CALL    PRINT
  1627.     DB    CR,LF,'Message Index File ....: ',0
  1628.     LD    HL,MSGINDEX
  1629.     CALL    PRINTM
  1630.  
  1631.     CALL    PRINT
  1632.     DB    CR,LF,'News Files ............: ',0
  1633.     LD    HL,NEWS
  1634.     CALL    PRINTM
  1635.  
  1636.     CALL    PRINT
  1637.     DB    CR,LF,'News Error File .......: ',0
  1638.     LD    HL,NEWSERR
  1639.     CALL    PRINTM
  1640.  
  1641.      IF ONEMNU
  1642.     CALL    PRINT
  1643.     DB    CR,LF,'Menu File .............: ',0
  1644.     LD    HL,ONEMENU
  1645.     CALL    PRINTM
  1646.      ELSE
  1647.     CALL    PRINT
  1648.     DB    CR,LF,'Main Menu .............: ',0
  1649.     LD    HL,MAILMENU
  1650.     CALL    PRINTM
  1651.     CALL    PRINT
  1652.     DB    CR,LF,'PBBS menu .............: ',0
  1653.     LD    HL,PBBSMENU
  1654.     CALL    PRINTM
  1655.      ENDIF
  1656.  
  1657.      IF prvate and prvtxt
  1658.     CALL    PRINT
  1659.     DB    CR,LF,'Private System File ...: ',0
  1660.     LD    HL,PRVTFIL
  1661.     CALL    PRINTM
  1662.      ENDIF
  1663.  
  1664.      IF TCAP
  1665.     CALL    PRINT
  1666.     DB    CR,LF,'TCAP File .............: ',0
  1667.     LD    HL,TCPNAM
  1668.     CALL    PRINTM
  1669.      ENDIF
  1670.  
  1671.     CALL    PRINT
  1672.     DB    CR,LF,'Users File ............: ',0
  1673.     LD    HL,USERS
  1674.     CALL    PRINTM
  1675.  
  1676.     CALL    PRINT
  1677.     DB    CR,LF,'Welcome File ..........: ',0
  1678.     LD    HL,WELCOM
  1679.     CALL    PRINTM
  1680.  
  1681.     CALL    PRINT
  1682.     DB    CR,LF,'ZMD/KMD Descriptions ..: ',0
  1683.     LD    HL,WHATSFOR
  1684.     CALL    PRINTM
  1685.  
  1686.     CALL    PRINT
  1687.     DB    CR,LF,'ZMD/KMD Uploads .......: ',0
  1688.     LD    HL,XMODEM
  1689.     CALL    PRINTM
  1690.  
  1691.     CALL    PRINT
  1692.     DB    CR,LF,0
  1693.  
  1694.     JP    CHKMNU
  1695.  
  1696. ; Display PBBS settings
  1697.  
  1698. PBS:    CALL    PRINT
  1699.     DB    'PBBS and the Operating System',CR,LF,0
  1700.  
  1701.     CALL    PRINT
  1702.     DB    CR,LF,'Console Command Processor ...........',0
  1703.     LD    A,(CPLUS)
  1704.     CP    0
  1705.     JR    Z,DEXTCL
  1706.     CALL    PRINT
  1707.     DB    ' (CPLUS) '
  1708.     DB    'CPM+',0
  1709.     JP    DCCPL
  1710. DEXTCL:    LD    A,(EXTCL)
  1711.     CP    0
  1712.     JR    Z,DSTCCP
  1713.     CALL    PRINT
  1714.     DB    ' (EXTCL) '
  1715.     DB    'ZCPRx - Ext Cmd Line',0
  1716.     JP    DCCPL
  1717. DSTCCP:    LD    A,(SETCCP)
  1718.     CP    0
  1719.     JR    Z,DZCMD
  1720.     CALL    PRINT
  1721.     DB    '(SETCCP) '
  1722.     DB    'Hard Coded CCP Address',0
  1723.     JP    DCCPL
  1724. DZCMD:    LD    A,(ZCMD)
  1725.     CP    0
  1726.     JR    Z,DCPM
  1727.     CALL    PRINT
  1728.     DB    '. (ZCMD) '
  1729.     DB    'ZCPRx - Int Cmd Line',0
  1730.     JP    DCCPL
  1731. DCPM:    CALL    PRINT
  1732.     DB    '. (CP/M) '
  1733.     DB    'Standard CP/M',0
  1734.  
  1735. DCCPL:    CALL    PRINT
  1736.     DB    CR,LF,'Console Command Processor Location . (CCPLOC) ',0
  1737.     LD    A,(SETCCP)
  1738.     CP    0 
  1739.     JR    Z,NOCCP
  1740.     LD    HL,CCPLOC
  1741.     CALL    PHL4HC
  1742.     CALL    PRINT
  1743.     DB    'H  ',0
  1744.     JR    DMCLB
  1745. NOCCP:    CALL    PRINT
  1746.     DB    'Calculated from BIOS',0
  1747.  
  1748. DMCLB:    CALL    PRINT
  1749.     DB    CR,LF,'Multiple Command Line Buffer ....... (MCLBUF) ',0
  1750.      IF ZCPR3
  1751.     LD    HL,MCLBUF
  1752.     LD    A,H
  1753.     OR    L
  1754.     JR    Z,NOBUF
  1755.      ELSE
  1756.     LD    HL,(CCPLOC+8)
  1757.     LD    A,H
  1758.     OR    L
  1759.     JR    Z,NOBUF
  1760.      ENDIF
  1761.     CALL    PHL4HC
  1762.     CALL    PRINT            
  1763.     DB    'H  ',0
  1764.  
  1765. NOBUF:    CALL    PRINT
  1766.     DB    CR,LF,'System Environment Loaded at ....... '
  1767.      IF ZCPR3
  1768.     DB    ' (Z3ENV) ',0
  1769.     LD    HL,Z3ENV
  1770.        ELSE
  1771.     DB    '(SYSENV) ',0
  1772.     LD    HL,SYSENV
  1773.      ENDIF
  1774.     CALL    PHL4HC
  1775.     CALL    PRINT
  1776.     DB    'H',0
  1777.      IF ZCPR3
  1778.     CALL    PRINT
  1779.     DB    ' (Use Z option)',0
  1780.      ENDIF
  1781.  
  1782.     CALL    PRINT
  1783.     DB    CR,LF,'Set Different Path for SYSOP ...... (SETPATH) ',0
  1784.     LD    A,SETPATH
  1785.     CALL    CYN
  1786.  
  1787.     CALL    PRINT
  1788.     DB    CR,LF,'Maximum Drive ......................'
  1789.      IF ZCPR3
  1790.     DB    '.. (ZDRV) ',0
  1791.     LD    HL,ZDRV
  1792.      ELSE
  1793.     DB    '. (MXDRV) ',0
  1794.     LD    HL,MXDRV
  1795.       ENDIF
  1796.     CALL    PHL4HC
  1797.     CALL    PRINT
  1798.     DB    'H',0
  1799.  
  1800.     CALL    PRINT
  1801.     DB    CR,LF,'Maximum User .......................'
  1802.      IF ZCPR3
  1803.     DB    '.. (ZUSR) ',0
  1804.     LD    HL,ZUSR
  1805.      ELSE
  1806.     DB    '. (MXUSR) ',0
  1807.     LD    HL,MXUSR
  1808.      ENDIF
  1809.     CALL    PHL4HC
  1810.     CALL    PRINT
  1811.     DB    'H',0
  1812.  
  1813.     CALL    PRINT
  1814.     DB    CR,LF,'Wheel Byte .........................'
  1815.      IF ZCPR3
  1816.     DB    '.. (ZWHL) ',0
  1817.     LD    HL,ZWHL
  1818.      ELSE
  1819.     DB    ' (WHEEL) ',0
  1820.     LD    HL,WHEEL
  1821.      ENDIF
  1822.     CALL    PHL4HC
  1823.     CALL    PRINT
  1824.     DB    'H ',0
  1825.  
  1826.     CALL    PRINT
  1827.     DB    CR,LF,'Using BYE5xx Disk Log Feature ...... (DSKLOG) ',0
  1828.     LD    A,DSKLOG
  1829.     CALL    CYN
  1830.  
  1831.     CALL    PRINT
  1832.     DB    CR,LF,'Run Special File on CP/M Entry ....... (SPON) ',0
  1833.      LD    A,SPON
  1834.     CALL    CYN
  1835.  
  1836.     CALL    PRINT
  1837.     DB    CR,LF,'Run Alternate File on Re-Entry ...... (ALTON) ',0
  1838.     LD    A,ALTON
  1839.     CALL    CYN
  1840.  
  1841.     CALL    PRINT
  1842.     DB    CR,LF,'Activate Total Time per Day ........... (TOT) ',0
  1843.     LD    A,TOT
  1844.     CALL     CYN
  1845.  
  1846.     CALL    PRINT
  1847.     DB    CR,LF,'Date Format ......................... (EDATE) ',0
  1848.     LD    A,EDATE
  1849.     CALL    CYN
  1850.     CALL    PRINT
  1851.      IF EDATE
  1852.     DB    ' (Fmt DD/MM/YY)',0
  1853.      ELSE
  1854.     DB    ' (Fmt MM/DD/YY)',0
  1855.      ENDIF
  1856.  
  1857.     CALL    PRINT
  1858.     DB    CR,LF,'Allow Comments to SYSOP at Logoff ... (EXCMT) ',0
  1859.     LD    A,EXCMT
  1860.     CALL    CYN
  1861.     
  1862.     CALL    PRINT
  1863.     DB    CR,LF,'Allow Support for Multiple OS ........ (MDOS) ',0
  1864.     LD    A,MDOS
  1865.     CALL    CYN
  1866.      IF MDOS
  1867.     CALL    PRINT
  1868.     DB    CR,LF,'Number of Support Areas Allowed ..... (NMDOS) ',0
  1869.     LD    A,NMDOS
  1870.     CALL    PA2ASC
  1871.     CALL    PRINT
  1872.     DB    '    (Use D option)',0
  1873.      ENDIF
  1874.  
  1875.     CALL    PRINT
  1876.     DB    CR,LF,'Run EXIT File for Each User Level .... (ENTY) ',0
  1877.     LD    A,ENTY
  1878.     CALL    CYN
  1879.  
  1880.     CALL    PRINT
  1881.     DB    CR,LF,0
  1882.  
  1883.     JP    CHKMNU
  1884.  
  1885. ; System Restrictions
  1886.  
  1887. PSET1:    CALL    PRINT
  1888.     DB    'System Restrictions',CR,LF,0
  1889.  
  1890.     CALL    PRINT
  1891.     DB    CR,LF,'Minimum Access For Public Msgs  (ALLLV) ',0
  1892.     LD    A,ALLLV
  1893.     CALL    PA2ASC
  1894.  
  1895.     CALL    PRINT
  1896.     DB    CR,LF,'Minimum Access To Post Message (POSTLV) ',0
  1897.     LD    A,POSTLV
  1898.     CALL    PA2ASC
  1899.  
  1900.     CALL    PRINT
  1901.     DB    CR,LF,'Restrict NEW Users From CP/M   (RSTKON) ',0
  1902.     LD    A,RSTKON
  1903.     CALL    CYN
  1904.      IF RSTKON
  1905.     CALL    PRINT
  1906.     DB    CR,LF,'Minimum Level To Enter CP/M .. (RSTKLV) ',0
  1907.     LD    A,RSTKLV
  1908.     CALL    PA2ASC
  1909.      ENDIF
  1910.  
  1911.     CALL    PRINT
  1912.     DB    CR,LF,'Ask CP/M Knowledge Question ...(KNOWON) ',0
  1913.     LD    A,KNOWON
  1914.     CALL    CYN
  1915.      IF KNOWON
  1916.     CALL    PRINT
  1917.     DB    CR,LF,'Levels Below This Get Question (KNOKLV) ',0
  1918.     LD    A,KNOKLV
  1919.     CALL    PA2ASC
  1920.      ENDIF
  1921.  
  1922.     CALL    PRINT
  1923.     DB    CR,LF,'Private System Running ........(PRVATE) ',0
  1924.     LD    A,PRVATE
  1925.     CALL    CYN
  1926.  
  1927.      IF prvate
  1928.     CALL    PRINT
  1929.     DB    CR,LF,'Add NEW User to User File ... (PLOGUSR) ',0
  1930.     LD    A,PLOGUSR
  1931.     CALL    CYN
  1932.  
  1933.     CALL    PRINT
  1934.     DB    CR,LF,'Display Private Text File .... (PRVTXT) ',0
  1935.         LD    A,PRVTXT
  1936.     CALL    CYN
  1937.  
  1938.     CALL    PRINT
  1939.     DB    CR,LF,'Runs .COM File Before Log Off  (PRVCOM) ',0
  1940.     LD    A,PRVCOM
  1941.     CALL    CYN
  1942.      ENDIF            ; PRVATE
  1943.  
  1944.     CALL    PRINT
  1945.     DB    CR,LF,'Use BELL Flag To Allow CHAT .. (CHTBYE) ',0
  1946.     LD    A,CHTBYE
  1947.     CALL    CYN
  1948.  
  1949.     CALL    PRINT
  1950.     DB    CR,LF,'Number Of Rings ............... (ALRET) ',0
  1951.     LD    A,ALERT
  1952.     CALL    PA2ASC
  1953.  
  1954.     CALL    PRINT
  1955.     DB    '  >>>  CHAT Hours ',0
  1956.     LD    A,CHAT0
  1957.     CALL    PA2ASC
  1958.     CALL    PRINT
  1959.     DB    ':00-',0
  1960.     LD    A,CHAT1
  1961.     CALL    PA2ASC
  1962.     CALL    PRINT
  1963.     DB    ':00',0
  1964.  
  1965.     CALL    PRINT
  1966.     DB    CR,LF,'Offset To ACESS byte in BYE .. (BYEACC) ',0
  1967.     LD    A,BYEACC
  1968.     CALL    PA2ASC
  1969.  
  1970.     CALL    PRINT
  1971.     DB    CR,LF,'Set Level For ZMD/KMD Use ..... (XMACC) ',0
  1972.     LD    A,XMACC
  1973.     CALL    CYN
  1974.  
  1975.     CALL    PRINT
  1976.     DB    CR,LF,'Level To Use ZMD/KMD .......... (XMLVL) ',0
  1977.     LD    A,XMLVL
  1978.     CALL    PA2ASC
  1979.      CALL    PRINT
  1980.     DB    '   ',0
  1981.  
  1982.     CALL    PRINT
  1983.     DB    CR,LF,'Allow PMSG Uploads ............ (XMMSG) ',0
  1984.     LD    A,XMMSG
  1985.     CALL    CYN
  1986.  
  1987.     CALL    PRINT
  1988.      DB    CR,LF,'Tell BYE ZMD/PMSG Upload OK... (ENTMSG) ',0
  1989.     LD    A,ENTMSG
  1990.     CALL    PA2ASC
  1991.  
  1992.     CALL    PRINT
  1993.     DB    '  XMNO - ',0
  1994.     LD    A,XMNO
  1995.     OR    ENTMSG
  1996.     CALL    PA2ASC
  1997.  
  1998.     CALL    PRINT
  1999.     DB    '  XMOK - ',0
  2000.     LD    A,XMOK
  2001.     OR    ENTMSG
  2002.     CALL    PA2ASC
  2003.     CALL    PRINT
  2004.     DB    '   ',0
  2005.  
  2006.     CALL    PRINT
  2007.     DB    CR,LF,0
  2008.  
  2009.     JP    CHKMNU
  2010.  
  2011. ; PBBS drive/user definitions
  2012.  
  2013. DU:    CALL    PRINT
  2014.     DB    'PBBS Drive/User Definitions',CR,LF,0
  2015.  
  2016.      IF ZCPR3
  2017.     CALL    PRINT
  2018.     DB    CR,LF,'ZCPR Max Drive/User .....: ',0
  2019.     LD    A,(ZDRV)
  2020.     ADD    A,40H
  2021.     CALL    ECHO
  2022.     LD    A,(ZUSR)
  2023.     CALL    PA2ASC
  2024.     CALL    PRINT
  2025.     DB    ':',0
  2026.      ELSE
  2027.     CALL    PRINT
  2028.     DB    CR,LF,'SYSTEM Max Drive/User ...: ',0
  2029.     LD    A,(MXDRV)
  2030.     ADD    A,40H
  2031.     CALL    ECHO
  2032.     LD    A,(MXUSR)
  2033.     CALL    PA2ASC
  2034.     CALL    PRINT
  2035.     DB    ':',0
  2036.      ENDIF                ; ZCPR3
  2037.  
  2038.     CALL    PRINT
  2039.     DB    CR,LF,'PBBS System DU: .........: ',0
  2040.     LD    A,SYSDRV
  2041.     ADD    A,41H
  2042.     CALL    ECHO
  2043.     LD    A,SYSUSR
  2044.     CALL    PA2ASC
  2045.     CALL    PRINT
  2046.     DB    ':',0
  2047.  
  2048.      IF TCAP
  2049.     CALL    PRINT
  2050.     DB    CR,LF,'Terminal Cap. DU: .......: ',0
  2051.     LD    A,TCPDRV
  2052.     ADD    A,41H
  2053.     CALL    ECHO
  2054.     LD    A,TCPUSR
  2055.     CALL    PA2ASC
  2056.     CALL    PRINT
  2057.     DB    ':',0
  2058.     LD    HL,TCPNAM
  2059.     CALL    PRINTM
  2060.      ENDIF                ; TCAP
  2061.  
  2062.      IF NOT MDOS
  2063.     CALL    PRINT
  2064.     DB    CR,LF,'CP/M Drive/User .........: ',0
  2065.     LD    A,DU0        ;                    [tlp]
  2066. ;    LD    A,CPMDU        ;                    [tlp]
  2067.     LD    (DRV),A
  2068.     LD    A,0
  2069.     LD    (USR),A
  2070.     CALL    PDU
  2071.      ENDIF            ; NOT MDOS
  2072.  
  2073.     CALL    PRINT
  2074.     DB    CR,LF,'Multiple DOS Support ....: ',0
  2075.     LD    A,MDOS
  2076.     CALL    CYN
  2077.     CALL    PCRLF
  2078.  
  2079.      IF MDOS
  2080.     LD    HL,DU0
  2081.     LD    A,(DRV0)
  2082.     LD    (DRV),A
  2083.     LD    A,(USR0)
  2084.     LD    (USR),A
  2085.     CALL    PDUL
  2086.  
  2087.     LD    HL,DU1
  2088.     LD    A,(DRV1)
  2089.     LD    (DRV),A
  2090.     LD    A,(USR1)
  2091.     LD    (USR),A
  2092.     CALL    PDUL
  2093.  
  2094.     LD    HL,DU2
  2095.     LD    A,(DRV2)
  2096.     LD    (DRV),A
  2097.     LD    A,(USR2)
  2098.     LD    (USR),A
  2099.     CALL    PDUL
  2100.  
  2101.     LD    HL,DU3
  2102.     LD    A,(DRV3)
  2103.     LD    (DRV),A
  2104.     LD    A,(USR3)
  2105.     LD    (USR),A
  2106.     CALL    PDUL
  2107.  
  2108.     LD    HL,DU4
  2109.     LD    A,(DRV4)
  2110.     LD    (DRV),A
  2111.     LD    A,(USR4)
  2112.     LD    (USR),A
  2113.     CALL    PDUL
  2114.  
  2115.     LD    HL,DU5
  2116.     LD    A,(DRV5)
  2117.     LD    (DRV),A
  2118.     LD    A,(USR5)
  2119.     LD    (USR),A
  2120.     CALL    PDUL
  2121.  
  2122.     LD    HL,DU6
  2123.     LD    A,(DRV6)
  2124.     LD    (DRV),A
  2125.     LD    A,(USR6)
  2126.     LD    (USR),A
  2127.     CALL    PDUL
  2128.  
  2129.     LD    HL,DU7
  2130.     LD    A,(DRV7)
  2131.     LD    (DRV),A
  2132.     LD    A,(USR7)
  2133.     LD    (USR),A
  2134.     CALL    PDUL
  2135.  
  2136.     LD    HL,DU8
  2137.     LD    A,(DRV8)
  2138.     LD    (DRV),A
  2139.     LD    A,(USR8)
  2140.     LD    (USR),A
  2141.     CALL    PDUL
  2142.  
  2143.     LD    HL,DU9
  2144.     LD    A,(DRV9) 
  2145.     LD    (DRV),A
  2146.     LD    A,(USR9)
  2147.     LD    (USR),A
  2148.     CALL    PDUL
  2149.  
  2150.     LD    HL,DU10
  2151.     LD    A,(DRV10)
  2152.     LD    (DRV),A
  2153.     LD    A,(USR10)
  2154.     LD    (USR),A
  2155.     CALL    PDUL
  2156.  
  2157.     LD    HL,DU11
  2158.     LD    A,(DRV11)
  2159.     LD    (DRV),A
  2160.     LD    A,(USR11)
  2161.     LD    (USR),A
  2162.     CALL    PDUL
  2163.  
  2164.     LD    HL,DU12
  2165.     LD    A,(DRV12)
  2166.     LD    (DRV),A
  2167.     LD    A,(USR12)
  2168.     LD    (USR),A
  2169.     CALL    PDUL
  2170.  
  2171.     LD    HL,DU13
  2172.     LD    A,(DRV13) 
  2173.     LD    (DRV),A
  2174.     LD    A,(USR13)
  2175.     LD    (USR),A
  2176.     CALL    PDUL
  2177.  
  2178.     LD    HL,DU14
  2179.     LD    A,(DRV14)
  2180.     LD    (DRV),A
  2181.     LD    A,(USR14)
  2182.     LD    (USR),A
  2183.     CALL    PDUL
  2184.  
  2185.     LD    HL,DU15
  2186.     LD    A,(DRV15)
  2187.     LD    (DRV),A
  2188.     LD    A,(USR15)
  2189.     LD    (USR),A
  2190.     CALL    PDUL
  2191.  
  2192.      ENDIF            ; MDOS
  2193.  
  2194.     JP    CHKMNU
  2195.  
  2196. PDU:    LD    A,(DRV)    
  2197.     CALL    ECHO
  2198.     LD    A,(USR)
  2199.     CALL    PA2ASC
  2200.     CALL    PRINT
  2201.     DB    ':',0
  2202.     RET
  2203.  
  2204.      IF ZCPR3        ;                    [tlp]
  2205. ; Z System File Settings
  2206.  
  2207. ZSYS:    CALL    PRINT
  2208.     DB     'ZCPR System Settings',CR,LF,0
  2209.  
  2210.     CALL    PRINT
  2211.     DB    CR,LF,'ZCPR3 Wheel Byte .......(WHEEL) : ',0
  2212.     LD    HL,(ZWHL)
  2213.     PUSH    HL
  2214.     CALL    PHL4HC
  2215.     CALL    PRINT
  2216.     DB    'H  ',0
  2217.     POP    HL
  2218.     LD    A,(HL)
  2219.     CP    0
  2220.     JP    Z,ZOF
  2221.     CALL    PRINT
  2222.     DB    'ON  ',0
  2223.     JR    ZMDRV
  2224. ZOF:    CALL    PRINT
  2225.     DB    'OFF ',0
  2226.  
  2227. ZMDRV:    CALL    PRINT
  2228.     DB    CR,LF,'ZCPR3 Maximum Drive ....(MXDRV) : ',0
  2229.     LD    HL,ZDRV            ;                [tlp]
  2230.     PUSH    HL
  2231.     CALL    PHL4HC
  2232.     CALL    PRINT
  2233.     DB    'H  ',0
  2234.     POP    HL
  2235.     LD    A,(HL)
  2236.     ADD    A,40H
  2237.     CALL    ECHO
  2238.  
  2239. ZMUSR:    CALL    PRINT
  2240.     DB    CR,LF,'ZCPR3 Maximum User .....(MXUSR) : ',0
  2241.     LD    HL,ZUSR            ;                [tlp]
  2242.     PUSH    HL
  2243.     CALL    PHL4HC
  2244.     CALL    PRINT
  2245.     DB    'H  ',0
  2246.     POP    HL
  2247.     LD    A,(HL)
  2248.     CALL    Z,PA2ASC
  2249.  
  2250.     CALL    PRINT
  2251.     DB    CR,LF,LF,'ZCPR3 Env Address ......(Z3ENV) : ',0
  2252.     LD    HL,Z3ENV
  2253.     CALL    PHL4HC
  2254.     CALL    PRINT
  2255.     DB    'H',0
  2256.  
  2257.     CALL    PRINT
  2258.     DB    CR,LF,'CCP Location ..........(CCPLOC) : ',0
  2259.     LD    A,(SETCCP)
  2260.     CP    0
  2261.     JR    Z,ZNOCCP
  2262.     LD    HL,CCPLOC
  2263.     CALL    PHL4HC
  2264.     CALL    PRINT
  2265.     DB    'H',0
  2266.     JR    ZSUSR
  2267. ZNOCCP:    CALL    PRINT
  2268.     DB    'AUTO ',0
  2269.  
  2270. ZSUSR:    CALL    PRINT
  2271.     DB    CR,LF,'Mtpl Cmd Line Buffer ..(MCLBUF) : ',0
  2272.     LD    A,(ZCMD)
  2273.     CP    0
  2274.     JR    Z,ZMBUF
  2275.     LD    HL,(CCPLOC+8)
  2276.     JR    ZCCPP
  2277. ZMBUF:    LD    HL,MCLBUF
  2278. ZCCPP:    CALL    PHL4HC
  2279.     CALL    PRINT
  2280.     DB    'H  ',0
  2281.     LD    HL,MCLBUF+4
  2282. PCL:    LD    A,(HL)
  2283.     CP    0
  2284.     JR    Z,ZTCP
  2285.     CALL    ECHO
  2286.     INC    HL
  2287.     JR    PCL
  2288.  
  2289. ZTCP:
  2290.      IF TCAP
  2291.     CALL    PRINT
  2292.     DB    CR,LF,LF,'ZCPR3 Terminal Cap ......(TCAP) : ',0
  2293.     LD    HL,Z3ENV+80H
  2294.     CALL    PHL4HC
  2295.     CALL    PRINT
  2296.     DB    'H  ',0
  2297.     LD    A,TCPDRV
  2298.     ADD    A,41H
  2299.     CALL    ECHO
  2300.     LD    A,TCPUSR
  2301.     CALL    PA2ASC
  2302.     CALL    PRINT
  2303.     DB    ':',0
  2304.     LD    HL,TCPNAM
  2305.     CALL    PRINTM
  2306.      ENDIF                ; TCAP
  2307.  
  2308. ZPH:    CALL    PRINT
  2309.     DB    CR,LF,'ZCPR3 Path Address ......(PATH) : ',0
  2310.     LD    HL,(ZPTH)
  2311.     CALL    PHL4HC
  2312.     CALL    PRINT
  2313.     DB    'H  ',0
  2314.     LD    HL,(ZPTH)        ;                [tlp]
  2315. ZPTH1:    LD    A,(HL)
  2316.     CP     0
  2317.     JP    Z,DPTH
  2318.     CP    '$'
  2319.     JR    z,zpdrv
  2320.     ADD    A,40H
  2321. ZPDRV:    CALL    ECHO
  2322.     INC    HL
  2323.     PUSH    HL
  2324.     LD    A,(HL)
  2325.     CP    '$'
  2326.     JR    NZ,ZPUSR
  2327.     CALL    ECHO
  2328.     JR    ZPUSR1
  2329. ZPUSR:    CALL    PA2ASC
  2330. ZPUSR1:    CALL    PRINT
  2331.     DB    ': ',0
  2332.     POP    HL
  2333.     INC    HL
  2334.     JR    ZPTH1
  2335.  
  2336. DPTH:    CALL    PRINT
  2337.     DB    CR,LF,0
  2338.  
  2339.     JP    CHKMNU
  2340.      ENDIF            ; ZCPR3                    [tlp]
  2341.  
  2342. ; User has requested the menu option. Show system menu and 
  2343. ; present all options.
  2344.  
  2345. MENU:    LD    A,0FFH        ; User has requested menu option
  2346.     LD    (MFLG),A    ; Save menu flag
  2347.  
  2348.     LD    HL,CLS        ; Clear screen and display menu
  2349.     CALL    PRINTM
  2350.  
  2351.     CALL    PRINT
  2352.     DB    CR,LF,LF
  2353.     DB    '      PBBS Statistics Menu',CR,LF,LF
  2354.     DB    '  A)  Access Table Information',CR,LF
  2355.     DB    '  B)  Drive/User Bitmaps',CR,LF
  2356.     DB    '  D)  Drive/User Settings',CR,LF    ;        [tlp]
  2357.     DB    '  E)  Entry/Welcome Files',CR,LF
  2358.     DB    '  F)  Mail Folders and Access',CR,LF
  2359.     DB    '  I)  INDEX.PBS Information',CR,LF
  2360.     DB    '  L)  Low Memory Addresses',CR,LF
  2361.     DB    '  M)  MSGINDEX.PBS Information',CR,LF
  2362.     DB    '  O)  Operating System',CR,LF         ;        [tlp]
  2363.     DB    '  P)  Internal PBBS Settings',CR,LF
  2364.     DB    '  R)  System Restrictions',CR,LF    ;        [tlp]
  2365.     DB    '  S)  System Files',CR,LF
  2366.     DB    '  V)  Version Number',CR,LF
  2367.      IF ZCPR3                    ;        [tlp]
  2368.     DB    '  Z)  Z-System',CR,LF            ;        [tlp]
  2369.      ENDIF                        ;        [tlp]
  2370.     DB    '?-/)  Help Screen',CR,LF
  2371.     DB    '  X)  Exit',CR,LF,LF
  2372.     DB    '      Enter Selection: ',0
  2373.  
  2374.     CALL    GETCH        ; Get option from user
  2375.     PUSH    AF        ; Push option on stack
  2376.     LD    HL,CLS        ; Clear screen for option display
  2377.     CALL    PRINTM
  2378.     POP    AF        ; Restore option
  2379.     JP    OPTION
  2380.  
  2381. ; Display the built-in help menu.
  2382.  
  2383. HELP:    CALL    PRINT
  2384.     DB    CR,LF,'PBBS Statistics for ',0
  2385.     LD    HL,LOCSTR
  2386.     CALL    PRINTM
  2387.     LD    A,(REENTR)
  2388.     CP    0
  2389.     JR    Z,NDATH
  2390.     CALL    PRINT
  2391.     DB    'as of ',0
  2392.     LD    IX,BDATE
  2393.     CALL    PDATE
  2394. NDATH:    CALL    PRINT
  2395.     DB    CR,LF,'Sysop: ',0
  2396.     LD    HL,SYSOP
  2397.     CALL    PRINTM
  2398.     CALL    PRINT        
  2399.     DB    CR,LF,LF
  2400.     DB    '     Usage:   PSTAT               Menu Sub-System',CR,LF
  2401.     DB    '              PSTAT /o            PSTAT Options',CR,LF,LF
  2402.     DB    '     Options  A - Access Table    (User Access)',CR,LF
  2403.     DB    '              B - Bitmaps         (PBBSDB.HDR)',CR,LF
  2404.     DB    '              D - DU: Selections  (PBBSEQU.HDR)',CR,LF
  2405.     DB    '              E - Entry/Welcome   (PBBSDB.HDR)',CR,LF
  2406.     DB    '              F - Folders         (PBBSDB.HDR)',CR,LF
  2407.     DB    '              I - System Stats    (INDEX.PBS)',CR,LF
  2408.     DB    '              L - System Flags    (Low Memory)',CR,LF
  2409.     DB    '              M - Message Stats   (MSGINDEX.PBS)',CR,LF
  2410.     DB    '              O - Operating System(PBBS EQU/DB)',CR,LF
  2411.     DB    '              P - PBBS Settings   (PBBS EQU/DB)',CR,LF
  2412.     DB    '              R - Restrictions    (PBBSEQU.HDR)',CR,LF
  2413.     DB    '              S - System Files    (PBBSDB.HDR)',CR,LF
  2414.     DB    '              V - Version Number',CR,LF
  2415.      IF ZCPR3                    ;        [tlp]
  2416.     DB    '              Z - Z-System',CR,LF    ;        [tlp]
  2417.      ENDIF                        ;        [tlp]
  2418.     DB    '         ? or / - Help Screen',CR,LF,0
  2419.     
  2420.     JP    CHKMNU
  2421.  
  2422. ; Restore original DU: status and stack. Then exit
  2423.  
  2424. EXIT:    LD    A,(OLDDRV)    
  2425.     LD    E,A
  2426.     LD    C,LOGDRV
  2427.     CALL    BDOS        ; Restore original drive
  2428.     LD    A,(OLDUSR)
  2429.     LD    E,A
  2430.     LD    C,LOGUSR
  2431.     CALL    BDOS        ; Restore original user
  2432.     LD    HL,(CCPSTK)
  2433.     LD    SP,HL        ; Restore original stack
  2434.     RET            ; And exit
  2435.  
  2436. CHKMNU:    LD    A,(MFLG)
  2437.     CP    0
  2438.     JP    Z,EXIT
  2439.     CALL    PRINT
  2440.     DB    CR,LF,'Press Any Key ... ',0
  2441.     CALL    GETCH
  2442.     JP    MENU
  2443.  
  2444. VERS:    LD    HL,CLS
  2445.     CALL    PRINTM
  2446.     CALL    PVER
  2447.      IF CREDITS
  2448.     LD    HL,AUTHOR
  2449.     CALL    PRINTM
  2450.      ENDIF
  2451.     CALL    PRINT
  2452.     DB    CR,LF,'Statistics for ',0
  2453.     LD    HL,LOCSTR
  2454.     CALL    PRINTM
  2455.     LD    A,(REENTR)
  2456.     CP    0
  2457.     JR    Z,NDATV
  2458.     CALL    PRINT
  2459.     DB    'as of ',0
  2460.     LD    IX,BDATE
  2461.     CALL    PDATE
  2462. NDATV:    CALL    PRINT
  2463.     DB    CR,LF,'SYSOP: ',0
  2464.     LD    HL,SYSOP
  2465.     CALL    PRINTM
  2466.     CALL    PRINT
  2467.     DB    CR,LF,0
  2468.     JP    CHKMNU
  2469.  
  2470. ; Subroutines 
  2471.  
  2472. IOPEN:    LD    HL,INDEX    ; Point to INDEX.PBS filename
  2473.     CALL    OPEN        ; Open file
  2474.     LD    HL,NDXLEN    ; Get length of INDEX.PBS record
  2475.     LD    (RRSZ),HL    ; Save in buffer
  2476.     RET
  2477.  
  2478. ;PCRLF1:    CALL    PRINT        ; Two lines
  2479. ;    DB    CR,LF,0
  2480. ;PCRLF:    CALL    PRINT        ; One line
  2481. ;    DB    CR,LF,0
  2482. ;    RET
  2483.  
  2484. PDUL:    LD    A,(HL)
  2485.     CP     0
  2486.     RET    Z
  2487.     PUSH    HL
  2488.     CALL    PRINT
  2489.     DB    '                           ',0
  2490.     LD    A,(DRV)
  2491.     CALL    ECHO
  2492.     LD    A,(USR)
  2493.     CALL    PA2ASC
  2494.     CALL    PRINT
  2495.     DB    ': - ',0
  2496.     POP    HL
  2497.     CALL    PRINTM
  2498.     CALL    PCRLF
  2499.     RET
  2500.  
  2501. ; SYSLIB Module Name:  SPADC
  2502. ; Author:  Richard Conn
  2503. ; SYSLIB Version Number:  3.6
  2504. ; Module Version Number:  1.2
  2505.  
  2506. ;  PADC --
  2507. ;    PRINT REG A AS DECIMAL CHARACTERS W/LEADING <SP> IN 3-CHAR FIELD
  2508.  
  2509. PADC:    PUSH    BC        ; Save regs
  2510.     PUSH    DE
  2511.     PUSH    AF        ; Save A
  2512.     LD    D,1        ; Turn on leading <sp> flag
  2513.  
  2514. ;  PRINT ROUTINE
  2515.  
  2516. PADC1:    LD    B,100        ; Print hundreds
  2517.     CALL    PAC        ; Print a character
  2518.     LD    B,10        ; Print tens
  2519.     CALL    PAC
  2520.     ADD    A,'0'        ; Convert to ASCII
  2521.     CALL    ECHO        ; Print
  2522.     POP    AF        ; Restore A
  2523.     POP    DE        ; Restore regs
  2524.     POP    BC
  2525.     RET
  2526.  
  2527. ;  PRINT RESULT OF DIVISION OF A BY B W/LEADING <SP> (INTEGER DIVISION)
  2528.  
  2529. PAC:    LD    C,0        ; Set count
  2530. PACL:    SUB    B        ; Compute count
  2531.     JP    C,PACD
  2532.     INC    C        ; Increment count
  2533.     JP    PACL
  2534. PACD:    ADD    A,B        ; Add B back in
  2535.     LD    E,A        ; Save A
  2536.     LD    A,C        ; Get count
  2537.     OR    A        ; zero?
  2538.     JP    NZ,PACD1
  2539.     OR    D        ; 0 for no leading <sp> (A=0, A OR D=0 IF D=0)
  2540.     JP    Z,PACD1
  2541.     LD    A,' '        ; Print <sp>
  2542.     CALL    ECHO
  2543.     LD    A,E        ; Restore A
  2544.     RET
  2545. PACD1:    LD    D,0        ; D=0 for no leading <sp>
  2546.     LD    A,C        ; Get count
  2547.     ADD    A,'0'        ; Convert to decimal
  2548.     CALL    ECHO        ; Print it
  2549.     LD    A,E        ; Restore A
  2550.     RET
  2551.  
  2552. ; SYSLIB Module Name:  SPHL5DC
  2553. ; Author:  Richard Conn
  2554. ; SYSLIB Version Number:  3.6
  2555. ; Module Version Number:  1.2
  2556.  
  2557. PUTRG    MACRO
  2558.     PUSH    BC    ; Save BC, DE, HL
  2559.     PUSH    DE
  2560.     PUSH    HL
  2561.     ENDM
  2562.  
  2563. GETRG    MACRO
  2564.     POP    HL    ; Restore HL, DE, BC
  2565.     POP    DE
  2566.     POP    BC
  2567.     ENDM
  2568.  
  2569. ;  PHL5DC --
  2570. ;    PRINT HL AS 5 DECIMAL CHARACTERS
  2571.  
  2572. PHL5DC:    PUSH    AF    ; Save all regs
  2573.     PUTRG
  2574.     LD    B,0    ; B=0 for no leading <sp>
  2575.     JP    PHDC
  2576.  
  2577. ;  PHLDC --
  2578. ;    PRINT HL AS DECIMAL CHARACTERS W/LEADING SPACES IN 5-CHAR FIELD
  2579.  
  2580. PHLDC:    PUSH    AF    ; Save all regs
  2581.     PUTRG
  2582.     LD    B,1    ; A=1 for leading <sp>
  2583.  
  2584. ;  PRINT HL USING LEADING <SP> FLAG IN B
  2585.  
  2586. PHDC:    LD    DE,10000    ; Print 10000'S
  2587.     CALL    PHDC1
  2588.     LD    DE,1000    ; Print 1000'S
  2589.     CALL    PHDC1
  2590.     LD    DE,100    ; Print 100'S
  2591.     CALL    PHDC1
  2592.     LD    DE,10    ; Print 10'S
  2593.     CALL    PHDC1
  2594.     LD    A,L    ; Print 1'S
  2595.     ADD    A,'0'    ; Convert to ASCII
  2596.     CALL    ECHO
  2597.     GETRG        ; Restore all regs
  2598.     POP    AF
  2599.     RET
  2600.  
  2601. ;  DIVIDE HL BY DE AND PRINT QUOTIENT WITH LEADING <SP>S
  2602.  
  2603. PHDC1:    LD    C,0    ; Set count
  2604. PHDC2:    LD    A,L    ; Sub E from L
  2605.     SUB    E
  2606.     LD    L,A     ; Result in L
  2607.     LD    A,H    ; Sub D from H w/borrow
  2608.     SBC    A,D
  2609.     LD    H,A    ; Result in H
  2610.     JP    C,PHDC3    ; Done IF carry set (further borrow)
  2611.     INC    C    ; Increment count
  2612.     JP    PHDC2
  2613. PHDC3:    LD    A,L    ; Add E to L
  2614.     ADD    A,E
  2615.     LD    L,A    ; Result in L
  2616.     LD    A,H    ; Add D to H w/carry
  2617.     ADC    A,D
  2618.     LD    H,A    ; Result in H
  2619.     LD    A,C    ; Get result
  2620.     OR    A    ; Check for zero
  2621.     JP    NZ,PHDC4
  2622.     OR    B    ; 0 = no leading <sp> (A=0, A or B = 0 IF B=0)
  2623.     JP    Z,PHDC4
  2624.     LD    A,' '    ; Print <sp>
  2625.     JP    ECHO
  2626. PHDC4:    LD    B,0    ; Turn off leading <sp>
  2627.     LD    A,C    ; Get value
  2628.     ADD    A,'0'    ; Convert to ASCII
  2629.     JP    ECHO
  2630.  
  2631. ; SYSLIB Module Name:  SPHL4HC
  2632. ; Author:  Richard Conn
  2633. ; SYSLIB Version Number:  3.6
  2634. ; Module Version Number:  1.2
  2635.  
  2636. ;
  2637. ;  PHL4HC -- Print HL as 4 Hex Characters
  2638. ;    No Registers are to be affected.
  2639. ;
  2640.  
  2641. PHL4HC:    PUSH    AF    ; Save A
  2642.     LD    A,H    ; Print H
  2643.     CALL    PA2HC
  2644.     LD    A,L    ; Print L
  2645.     CALL    PA2HC
  2646.     POP    AF    ; Restore A
  2647.     RET
  2648.  
  2649. ; SYSLIB Module Name:  SPA2HC
  2650. ; Author:  Richard Conn
  2651. ; SYSLIB Version Number:  3.6
  2652. ; Module Version Number:  1.2
  2653.  
  2654. ;
  2655. ;  PA2HC --
  2656. ;    PRINT REG A AS 2 HEXADECIMAL CHARACTERS ON CON:
  2657. ;
  2658.  
  2659. PA2HC:    PUSH    AF    ; Save A
  2660.     PUSH    AF
  2661.     RRCA        ; Exchange nybbles
  2662.     RRCA
  2663.     RRCA
  2664.     RRCA
  2665.     CALL    PAHC    ; Print low-order nybble as hex
  2666.     POP    AF    ; Get A
  2667.     CALL    PAHC    ; Print low-order nybble as hex
  2668.     POP    AF    ; Restore A
  2669.     RET
  2670. PAHC:    AND    0FH    ; Mask for low nybble
  2671.     CP    10    ; Letter or digit?
  2672.     JP    C,PADIG    ; Digit IF carry
  2673.     ADD    A,'A'-10 ; Convert to 'A'-'F'
  2674.     JP    ECHO    ; Print
  2675. PADIG:    ADD    A,'0'    ; Convert to '0'-'9'
  2676.     JP    ECHO    ; Print
  2677.  
  2678. ; Data section
  2679.  
  2680. ; Backup INDEX.PBS record
  2681.  
  2682. BIDATE:    DB    0,0,0        ; Current date
  2683. BIMRNM:    DB    0,0        ; Next message record
  2684. BIMNXT:    DB    0,0        ; Next message number
  2685. BIMNDX:    DB    0,0        ; # records in message index
  2686. BICALL:    DB    0,0        ; # callers to system
  2687. BIUSER:    DB    0,0        ; # users on system
  2688. BIUSRC:    DB    0,0        ; # records in users file (reaches USRS max)
  2689. BSPARE:    DB    0        ; Spare byte for future
  2690. BHRDLOG:db    0        ; Hard-copy log switch
  2691. BMUSRD:    DB    0,0,0        ; Last date user file maintained
  2692. BMUSRT:    DB    0,0,0        ; Last time user file maintained
  2693. BMMSGD:    DB    0,0,0        ; Last date messages maintained
  2694. BMMSGT:    DB    0,0,0        ; Last time messages maintained
  2695. BSYACU:    DB    0,0        ; Total daily minutes
  2696. BSYDCC:    DB    0        ; Total daily calls
  2697. BSYCRP:    DB    0        ; Current usage (%)
  2698. BSYPVP:    DB    0        ; Previous usage (%)
  2699. BSYDAY:    DB    0            
  2700. BIXTRA:    DS    syslen-(bsyday+1-bidate); Extra storage for expansion
  2701.  
  2702. ; MSGINDEX.PBS record 
  2703.  
  2704. MTO:    DS    30        ; Message TO:
  2705. MNUM:    DS    2        ; Message number
  2706. MDAT:    DS    3        ; Date message left
  2707. MBLK:    DS    1        ; Message block count
  2708. MSTR:    DS    2        ; Message starting block number
  2709. MREC:    DS    2        ; Actual index record number
  2710. MSUB:    DS    26        ; Message SUBJ:
  2711. MFROM:    DS    30        ; Message FROM:
  2712. MPUB:    DS    1        ; Public/Private switch  (00=public)
  2713. MFNUM:    DS    1        ; Message folder number
  2714. MREADF:    DS    1        ; Read/Deleted flag  (FF=deleted)
  2715. MRETENF:DS    1        ; Message retention
  2716. MTIME:    DS    3        ; Time message was left
  2717. MFLNKF:    DS    2        ; Forward link
  2718. MRLNKF:    DS    2        ; Reverse link
  2719. MREPLYf:DS    2        ; Reply to (unecessary)
  2720.  
  2721. DRV:    DS    1        ; Drive ID storage
  2722. USR:    DS    1        ; User ID storage
  2723. MSGREC:    DS    2        ; Message record number storage
  2724. OLDMSG:    DS    2        ; Temporary message number storage
  2725. TMPUSR:    DB    0        ; Temproary user number storage
  2726. OLDDRV:    DB    0        ; Original drive
  2727. OLDUSR:    DB    0        ; Original user
  2728. MFLG:    DB    0        ; Menu Flag
  2729. CCPSTK:    DW    0        ; Original stack
  2730.     DS    64
  2731. STACK    EQU    $        ; Program stack
  2732.  
  2733.     END
  2734.