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
Wrap
Text File
|
2000-06-30
|
54KB
|
2,734 lines
TITLE PSTAT45.MAC 89/01/03
; Filename PSTAT45
; Author Terry Pinto
; Language Microsoft MACRO-80
; Last Update
; By Terry Pinto
; Reason Version 4.5
; The instructions below show how to assemble and link using two of the more
; popular assemblers. Be sure to set the appropriate equate in PBBSEQU.HDR.
; Assembly/Link - Using M80/L80
; M80 =PSTATnn/N
; L80 /P:100,PSTATnn,PBBSUBS/S,PSTATnn/N/E
;
; Using SLR180
; SLR PSTATnn
; SLRNKP PSTATnn,/A:100,PSTATnn,PBBSUBS/S,/E
;
; Where nn represents the version number in both cases above.
; Revision history
; Version 1.00
; Original Release
;
; Version 1.01
; (1) MSGST.LIB - Fixed bugs in display of the message reply and
; the forward and reverse links.
; (01/17/89)
; (2) MSGST.LIB - Fixed bug in GOTO function. User unable to use
; goto to position to one of last two messages.
; (01/17/89)
; (3) SFILE.LIB - Fixed cosmetic flaw in display.
; (01/19/89)
; (4) IDX.LIB - Added space padding routines to help align the
; display of the INDEX.PBS information.
; (01/20/89)
; (5) BITMP.LIB - Added support for additional bitmaps. Complete
; support for all new access levels when implemented. Will show a
; list of bitmaps for all user levels.
; (01/20/89)
;
; Version 1.02
; (1) BITMP.LIB - Reworked bitmap display. Now displays levels 2
; through 14. Levels 0 and 1 were unecessary and level 15 is left
; as restricted and not shown. TAB's removed to allow the display
; to function with more terminals. Submitted by Ian Cottrell
; (02/06/89)
; (2) ACCTAB.LIB- Modified to allow display of access levels the
; same as the BITMAP above. TAB's removed to allow the display to
; function with more terminals. Submitted by Ian Cottrell
; (02/06/89)
; (3) IDX.LIB - TAB's removed to allow the display to function
; with more terminals. Submitted by Ian Cottrell
; (02/06/89)
;
; Version 1.03
; (1) First Public Release - Incorporated all modules. Added the
; ZCPR segment to conditionally support ZCPR3 systems with a menu
; selection. Modified ZCPR system equates to accomidate new PBBS
; headers. The program is now compatible with PBBS versions 4.15
; or higher. Added support for multiple DOS entry.
; (03/04/89)
;
; Version 1.04
; (1) Fixed SYSENV, ZDRV, MAXDRV printouts when not running with
; ZCPR3. Cleaned up some of the displays. Added support to enable
; the display of the folder name in the message index section. We
; have also made the display of the terminal name under TCAP, and
; the multiple command line buffer, conditional. Submitted by Ian
; Cottrell. (03/17/89)
;
; Version 1.05
; (1) Fixed problem with the reading and proper display of JUNK
; setting in low memory. Fixed Display of number of folders shown
; in display.
; (2) Fixed problem with MSGINDEX routines. Display crashed when
; the TO, FROM or SUBJECT field was filled. Changed the call used
; from PRINTM to PRINTL. Submitted by Ian Cottrell (03/26/89)
; (3) Added support for new function in PBBS to allow support of
; multiple areas of support and multiple FOR and NEW files. Added
; conditional display of MSGTHD equate and the proposed data from
; the MSGINDEX.PBS file. (03/26/89)
;
; Version 4.50
; (1) Fixed code to conform with latest release of PBBS. Changed
; references to MDOS drive/user from EQU to DB. With this release
; the version numbering has also been changed to reflect the PBBS
; and PBSUBS.REL files being used. This should make it easier for
; users of PSTAT to keep up to date with the proper version.
;
; Version 4.51
; (1) Fixed code relating to max drive and max user reporting.
; (2) Made selection of MSGTHD conditional. Release versions of
; PBBS do not allow for message threading as of yet.
; (3) Fixed undefined label of CPMDU for PBBS45 release.
;
; Version 4.52
; (1) Changed code to maintain M80 compatibility. M80 does not
; like lower case in an include statement and it does not like it
; when you follow the label with a ':' in an equate statement.
; include pbbsequ.hdr --> INCLUDE PBBSEQU.HDR
; STACK: EQU $ --> STACK EQU $
;
; Version 4.53
; (1) Changed code in the Z option to correctly display the
; address of the wheel byte and the path, and not the address
; in the environment where the addresses are stored.
; Thank you to George Allen for pointing this one out.
;
; NOTE: PSTAT reads and displays all of the information set or provided
; bye your PBBS system. PSTAT obtains needed information from the
; INDEX.PBS file, the MSGINDEX.PBS file, low memory, PBBSEQU.HDR,
; or the PBBSDB.HDR files. You may select the section you wish to
; observe by specifing the appropriate option on the command line
; or use the menu subsystem by not providing an option.
;
; SYNTAX: PSTAT Menu Sub-System
; PSTAT /o Run PSTAT option
;
; Options: A - Access Table Settings
; B - Bitmaps (Drive/User)
; D - DU: selections
; E - Entry/Welcome Files
; F - Folders Selected
; I - INDEX.PBS Information
; L - Low Memory Settings
; M - Message Statistics
; O - Operating System and PBBS
; P - PBBS Internal Settings
; R - Restrictions
; S - System Files
; V - Version Number
; Z - Z-System (Only IF ZCPR3 running)
; ? or / - Display Help Screen
;
; -------------------------------------------------------------------------
; PBBS Statistics
; Author: Terry Pinto
; 14385 SW Walker Rd. B3
; Beaverton, OR 97006
; Access Programming RAS
; (503) 644-0900 (300/1200/2400)
; PC Pursuit ORPOR
; -------------------------------------------------------------------------
; The Public Bulletin Board System
; Author: Ian Cottrell
; 44 Lindhurst Cres
; Ottawa, ON, Canada
; K2G 0T7
; The Information Centre RCP/M
; (613) 952-2289 (300/1200/2400)
;-------------------------------------------------------------------------;
; NOTE: This file MUST be linked to PBBSUBS.REL. ;
;-------------------------------------------------------------------------;
NO EQU 0
YES EQU not no
; MTHD is used to beta test the message threading routines. Leave this
; equate set to NO for general release programs. Setting to YES will
; cause assembly errors until a release of PBBS that supports message
; threading.
MTHD EQU yes
; -------------------------------------------------------------------------
INCLUDE PBBSEQU.HDR ; PBBS configuration equates
IF ZCPR3 ; ZCPR3
ZPTH EQU Z3ENV+9 ; location of ZCPR3 path address
ZWHL EQU Z3ENV+41 ; ZCPR3 wheel byte
ZDRV EQU Z3ENV+44 ; ZCPR3 maximum user
ZUSR EQU Z3ENV+45 ; ZCPR3 maximum drive
ENDIF ; ZCPR3
IF M80 ; m80
.Z80 ; Needed for M80
ASEG ;
ORG 100H ;
ENDIF ; m80
JP START ; Jump around header and data
Z3IDEN: DB 'Z3ENV' ; Z3 identifier
Z3TYPE: DB 1 ; Z3 environment (external)
Z3EADR: DW 0000 ; Z3 environment (address)
Z3LOAD: DW 0000 ; Z3 load addresse
; Version name, date and levels
VNAME:: DB CR,LF,'PSTAT ' ; Name
VERDAT::DB '89/' ; Year
DB '08/' ; Month
DB '06 ' ; Day
DB ' v ',0 ; Status
VER:: DB 4 ; Version
VERR:: DB 53 ; Revision
AUTHOR::DB ' by: Terry Pinto',CR,LF,0
INCLUDE PBBSDB.HDR
; Define your terminals clear screen sequence here. You have up to ten
; bytes including a 0 terminator at the end of the sequence.
CLS: DB ESC,'*',0,0,0 ; Clear screen sequence
DB 0,0,0,0,0 ; you have up to ten bytes
DB 0 ; Terminator - DO NOT CHANGE!
INCLUDE BDOSHDR.MAC ; Time and date conversions
; Preserve CPM stack, initialize new one for this program
START: LD (CCPSTK),SP ; Save the return address
LD SP,STACK ; Install our stack
; Save current drive/user
LD E,0FFH
LD C,32
CALL BDOS ; Get current user
LD (OLDUSR),A ; Save it
LD C,25
CALL BDOS ; Get current drive
LD (OLDDRV),A ; Save it
LD E,SYSDRV
LD C,14
CALL BDOS ; Log to system drive
LD E,SYSUSR
LD C,32
CALL BDOS ; Log to system user
; Check for BYE presence
LD E,241
LD C,BEXIST
CALL BDOS ; See IF BYE5 is active
CP 77
JR Z,BEGIN ; Yes, proceed
CALL PRINT ; Else, abort
DB CR,LF,'BYE5 not available, aborting...',CR,LF,0
JP EXIT ; Restore D/U and exit
; Everything ok, let's begin
BEGIN: LD HL,CLS
CALL PRINTM
LD A,(MFLG)
CP 0
JP NZ,PSE
CALL PVER
IF CREDITS
LD HL,AUTHOR
CALL PRINTM
ELSE
CALL PCRLF
ENDIF ; credits
; Parse the command line
PSE: CALL GETTIM
PARSE: LD HL,80H ; Point to CP/M command line buffer
LD A,(HL) ; Get length of command tail
CP 0 ; Is command terminated here?
JP Z,MENU ; If yes - goto menu operation
GCHR: INC HL ; Point to first character in command tail
LD A,(HL) ; Get character
CP '/' ; Do we have an option delimeter?
JR NZ,GCHR ; If not - loop until we get one
INC HL ; Point to option
LD A,(HL) ; Get option
; Got the option, now act on it
OPTION: CP '/' ; ZCPR style help request
JP Z,HELP
CP '?' ; CP/M stype help request
JP Z,HELP
CALL CAPS
CP 'A' ; Access table
JP Z,ACCTAB
CP 'B' ; Bitmaps
JP Z,BITMP
CP 'D' ; DU selections
JP Z,DU
CP 'E' ; Entry Files
JP Z,ENTER
CP 'F' ; Folders
JP Z,FLDR
CP 'I' ; INDEX.PBS
JP Z,IDX
CP 'L' ; Low memory
JP Z,LOWMEM
CP 'M' ; Message Statistics
JP Z,MSGST
CP 'O' ; Operating System
JP Z,PBS
CP 'P' ; PBBS settings
JP Z,PSET
CP 'R' ; Restrictions
JP Z,PSET1
CP 'S' ; System files
JP Z,SFILE
CP 'V' ; Display Version Information
JP Z,VERS
CP 'X' ; Exit from menu
JP Z,EXIT
IF ZCPR3 ; [tlp]
CP 'Z' ; Z-System [tlp]
JP Z,ZSYS ; [tlp]
ENDIF ; [tlp]
LD A,(MFLG)
CP 0
JP NZ,MENU ; In menu - rewrite menu
JP HELP ; Unknown option - give user help
; Access table information
ACCTAB: CALL PRINT
DB 'PBBS Access Table Settings',CR,LF,LF
DB ' '
DB 'Max Drive Max User Min Online Retention U/D Ratio'
DB CR,LF,LF,0 ; [tlp]
GETLV: LD B,13 ; Counter for user level [icc]
LD HL,ACC2 ; Point to access table [icc]
LD (MAPSAV),HL ; Save pointer [icc]
LD A,1 ; Set user level [icc]
LD (LVL),A ; and save it [icc]
GETLV1: PUSH BC ; Save counter [icc]
CALL PRINT ; [icc]
DB 'Level ',0 ; [icc]
LD A,(LVL) ; Get previous level [icc]
INC A ; and increment to current level [icc]
LD (LVL),A ; Save it again [icc]
CALL PA2ASC ; Print current level [icc]
LD B,6 ; 6 spaces [icc]
CALL PAD ; [icc]
LD HL,(MAPSAV) ; Restore access table pointer [icc]
DSPLV: LD A,(HL) ; Get max drive
INC HL ; Point to max user [icc]
PUSH HL ; Save pointer [icc]
OR A ; Is max drive zero (unused)? [icc]
JR NZ,DSPLV1 ; If not, skip next [icc]
LD A,-17 ; Else, prepare to print 0 [icc]
DSPLV1: ADD A,41H ; Make it an ASCII letter (or zero) [icc]
CALL ECHO ; Print it [icc]
LD B,11 ; 11 spaces [icc]
CALL PAD ; [icc]
POP HL ; Restore pointer [icc]
LD A,(HL) ; Get max user
INC HL ; Point to time allowed [icc]
PUSH HL ; Save pointer [icc]
OR A ; Is max user zero (unused)? [icc]
JR Z,DSPLV2 ; If yes, don't decrement [icc]
DEC A ; Adjust to print actual user area
DSPLV2: CALL PA2ASC ; Print with leading zero IF necessary [icc]
LD B,8 ; 8 spaces [icc]
CALL PAD ; [icc]
POP HL ; Restore pointer [icc]
LD A,(HL) ; Get time on system
PUSH HL ; Save pointer [icc]
CP 0 ; Unlimited?
JR NZ,DMIN ; If not, go print max time allowed
CALL PRINT ; Else, say unlimited
DB BS,'Unlimited ',0 ; [icc]
JR DMIN1
DMIN: CALL PADC
CALL PRINT
DB ' Min ',0
DMIN1: POP HL ; Restore pointer
INC HL ; Point to days to deletion
LD A,(HL) ; Get days to deletion
PUSH HL ; Save pointer [icc]
CP 0
JR NZ,DDAY
CALL PRINT
DB BS,BS,'Unlimited ',0
JR DDAY1
DDAY: CALL PADC
CALL PRINT
DB ' Days ',0 ; [icc]
DDAY1: POP HL ; Restore pointer
INC HL ; Point to u/d ratio
LD A,(HL) ; Get u/d ratio
PUSH HL ; Save pointer [icc]
CP 0
JR NZ,DUDR
CALL PRINT
DB BS,BS,'Unlimited',CR,LF,0 ; [icc]
JR DUDR1
DUDR: CALL PADC
CALL PRINT
DB ':1',CR,LF,0
DUDR1: POP HL
LD DE,ACTBLEN ; Get length of one table entry [icc]
LD HL,(MAPSAV) ; Restore pointer [icc]
ADD HL,DE ; Point to max drive for next level [icc]
LD (MAPSAV),HL ; Save that [icc]
POP BC ; Restore counter [icc]
DEC B ; Decrement counter [icc]
JP NZ,GETLV1 ; Loop til done [icc]
JP CHKMNU ; [icc]
PAD: LD HL,PADSTR ; Point to spaces (in PBBSDB.HDR) [icc]
CALL PRINTL ; Print 'B' of them [icc]
RET ; [icc]
; Display drive and user bitmaps for all user levels
BITMP: CALL PRINT
DB 'PBBS Drive/User Bitmaps',CR,LF,LF
DB ' Drive Maps User Maps',CR,LF,LF
DB ' PONMLKJIHGFEDCBA FEDCBA9876543210',CR,LF,LF,0
LD B,13 ; Get counter for user levels [icc]
LD HL,USMP2 ; Point to drive/user maps [icc]
LD (MAPSAV),HL ; Save this address [icc]
LD A,1 ; Set beginning user level-1 [icc]
LD (LVL),A ; and store it [icc]
DM2: PUSH BC ; Save counter [icc]
CALL PRINT ; [icc]
DB 'Level ',0 ; [icc]
LD A,(LVL) ; Get previous level [icc]
INC A ; Make it current level [icc]
LD (LVL),A ; and save it [icc]
CALL PA2ASC ; Print current level [icc]
CALL PRINT ; followed by some spaces [icc]
DB ' ',0 ; [icc]
LD HL,(MAPSAV) ; Get pointer to current user map [icc]
PUSH HL ; Save it on stack [icc]
INC HL ; Point to current [icc]
INC HL ; drive map [icc]
LD E,(HL) ; Get current [icc]
INC HL ; drive map [icc]
LD D,(HL) ; into DE [icc]
INC HL ; Point to next user map [icc]
LD (MAPSAV),HL ; Save it [icc]
EX DE,HL ; Current drive map to HL [icc]
CALL TBIT ; Display it [icc]
CALL PRINT ; Some more spaces [icc]
DB ' ',0 ; [icc]
POP HL ; Restore pointer to current user map [icc]
LD E,(HL) ; Get current [icc]
INC HL ; user map [icc]
LD D,(HL) ; into [icc]
EX DE,HL ; HL [icc]
CALL TBIT ; Display it [icc]
CALL PRINT ; New line [icc]
DB CR,LF,0 ; [icc]
POP BC ; Restore counter [icc]
DJNZ DM2 ; Loop until done [icc]
JP CHKMNU
LVL: DS 1
MAPSAV: DS 2
; Display the entry/welcome files used
ENTER: CALL PRINT
DB 'PBBS Entry/Welcome Files',CR,LF,LF,0
IF NOT ENTY
CALL PRINT
DB CR,LF,'Standard Entry ........: ',0
LD HL,ENTRY+1
CALL PRINTM
CALL PRINT
DB '.COM',0
CALL PRINT
DB CR,LF,'New User Entry ........: ',0
LD hl,nentry+1
CALL PRINTM
CALL PRINT
DB '.COM',0
IF SPON
CALL PRINT
DB CR,LF,'Special User Entry ....: ',0
LD HL,SPENTRY+1
CALL PRINTM
CALL PRINT
DB '.COM',0
ENDIF
ELSE
CALL PRINT
DB CR,LF,'Entry Files ...........: ENTR1.COM - ENTRF.COM',0
ENDIF
IF ALTON
CALL PRINT
DB CR,LF,'Alternate Entry .......: ',0
LD HL,ALTFILE+1
CALL PRINTM
CALL PRINT
DB '.COM',0
ENDIF
IF PRVATE AND PRVCOM
CALL PRINT
DB CR,LF,'Private Entry .........: ',0
LD HL,PRVTCM+1
CALL PRINTM
CALL PRINT
DB '.COM',0
ENDIF
CALL PRINT
DB CR,LF,'Error File ............: ',0
LD HL,ERRFIL+1
CALL PRINTM
CALL PRINT
DB '.COM',0
IF WELON
IF NOT WELCUM
CALL PRINT
DB CR,LF,'Welcome File ..........: ',0
LD HL,WELCOM
CALL PRINTM
ELSE
CALL PRINT
DB CR,LF,'Welcome Files .........: WELCOM1.PBS - WELCOMF.PBS',0
ENDIF
ENDIF
CALL PRINT
DB CR,LF,LF,0
JP CHKMNU
; Display folders selected within PBBS
FLDR: CALL PRINT
DB 'PBBS File Folders',CR,LF,LF,0
LD hl,fnames
CALL PRINTM
IF NMFLDRS GT 0
CALL PRINT
DB CR,LF,'1. ',0
LD HL,FNAME1
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 1
CALL PRINT
DB CR,LF,'2. ',0
LD HL,FNAME2
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 2
CALL PRINT
DB CR,LF,'3. ',0
LD HL,FNAME3
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 3
CALL PRINT
DB CR,LF,'4. ',0
LD HL,FNAME4
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 4
CALL PRINT
DB CR,LF,'5. ',0
LD HL,FNAME5
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 5
CALL PRINT
DB CR,LF,'6. ',0
LD HL,FNAME6
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 6
CALL PRINT
DB CR,LF,'7. ',0
LD HL,FNAME7
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 7
CALL PRINT
DB CR,LF,'8. ',0
LD HL,FNAME8
LD B,11
CALL PRINTL
ENDIF
IF NMFLDRS GT 8
CALL PRINT
DB CR,LF,'9. ',0
LD HL,FNAME9
LD B,11
CALL PRINTL
ENDIF
CALL PRINT
DB CR,LF,LF,'Minimum User Access to Folders: ',CR,LF,LF,0
CALL PRINT
DB 'Mail Folder Number: ',0
LD B,NMFLDRS
LD A,'0'
FNUMB: CALL ECHO
INC A
PUSH AF
PUSH BC
CALL PRINT
DB ' ',0
POP BC
POP AF
DJNZ FNUMB
CALL PRINT
DB CR,LF,'Minimum Access Level: 2 2 ',0
LD HL,MAILTBL
LD B,NMFLDRS-2
FACC: LD A,(HL)
CP 0AH
JR C,DEC
ADD A,7
DEC: ADD A,30H
CALL ECHO
INC HL
PUSH HL
PUSH BC
CALL PRINT
DB ' ',0
POP BC
POP HL
DJNZ FACC
CALL PRINT
DB CR,LF,0
JP CHKMNU
; Display stats from INDEX.PBS
IDX: CALL IOPEN
LD HL,0
CALL GET ; Get current index record
LD HL,IDATEF
LD DE,IDATE
LD BC,NDXLEN
LDIR
LD HL,1
CALL GET ; Get backup index record
LD HL,IDATEF
LD DE,BIDATE
LD BC,NDXLEN
LDIR
CALL CLOSE
CALL PRINT
DB 'INDEX.PBS Statistics Current Backup',CR,LF,0
CALL PRINT
DB CR,LF,'Current Date......: ',0 ; [icc]
LD IX,IDATE
CALL FULDAT ; [icc]
CALL PRINT
DB ' (',0 ; [icc]
LD IX,BIDATE
CALL FULDAT ; [icc]
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Next Msg Record...: ',0
LD HL,(IMRNM)
CALL PHLDC
CALL PRINT
DB ' (',0 ; [icc]
LD HL,(BIMRNM)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Next Msg Number...: ',0
LD HL,(IMNXT)
CALL PHLDC
CALL PRINT
DB ' (',0 ; [icc]
LD HL,(BIMNXT)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Rcds Msg Index....: ',0
LD HL,(IMNDX)
CALL PHLDC
CALL PRINT
DB ' (',0 ; [icc]
LD HL,(BIMNDX)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'# System Callers..: ',0 ; [icc]
LD HL,(ICALL)
CALL PHLDC
CALL PRINT
DB ' (',0 ; [icc]
LD HL,(BICALL)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'# System Users...: ',0
LD HL,(IUSER)
CALL PHLDC
CALL PRINT
DB ' (',0 ; [icc]
LD HL,(BIUSER)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Rcds User File....: ',0
LD HL,(IUSRC)
CALL PHLDC
CALL PRINT
DB ' (',0 ; [icc]
LD HL,(BIUSRC)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Hard Cpy Log Sw...: ',0 ; [icc]
LD A,(HRDLOG)
CP 0
JR Z,HOFF
CALL PRINT
DB ' ON',0
JR HON
HOFF: CALL PRINT
DB ' OFF',0
HON: LD A,(BHRDLOG)
CP 0
JR Z,BHOFF
CALL PRINT
DB ' (ON)',0 ; [icc]
JR BHON
BHOFF: CALL PRINT
DB ' (OFF)',0 ; [icc]
BHON: CALL PRINT
DB CR,LF,'User File Maint'
DB CR,LF,' Date...: ',0 ; [icc]
LD IX,MUSRD
CALL FULDAT ; [icc]
CALL PRINT
DB ' (',0 ; [icc]
LD IX,BMUSRD
CALL FULDAT ; [icc]
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,' Time...: ',0 ; [icc]
LD IX,MUSRT
CALL PTIME
CALL PRINT
DB ' (',0 ; [icc]
LD IX,BMUSRT
CALL PTIME
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Msg File Maint'
DB CR,LF,' Date...: ',0 ; [icc]
LD IX,MMSGD
CALL FULDAT ; [icc]
CALL PRINT
DB ' (',0 ; [icc]
LD IX,BMMSGD
CALL FULDAT ; [icc]
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,' Time...: ',0 ; [icc]
LD IX,MMSGT
CALL PTIME
CALL PRINT
DB ' (',0 ; [icc]
LD IX,BMMSGT
CALL PTIME
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Daily Minutes.....: ',0
LD HL,(SYACU)
CALL PHLDC
CALL PRINT
DB ' (',0 ; [icc]
LD HL,(BSYACU)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Daily Calls.......: ',0
LD A,(SYDCC)
CALL PADC
CALL PRINT
DB ' (',0 ; [icc]
LD A,(BSYDCC)
CALL PA2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Current Usage.....: ',0
LD A,(SYCRP)
CALL PADC
CALL PRINT
DB '%',0
CALL PRINT
DB ' (',0 ; [icc]
LD A,(BSYCRP)
CALL PA2ASC
CALL PRINT
DB '%)',0
CALL PRINT
DB CR,LF,'Previous Usage....: ',0
LD A,(SYPVP)
CALL PADC
CALL PRINT
DB '%',0
CALL PRINT
DB ' (',0 ; [icc]
LD A,(BSYPVP)
CALL PA2ASC
CALL PRINT
DB '%)',CR,LF,0
JP CHKMNU
; Display low memory addresses
LOWMEM: CALL PRINT
DB 'PBBS Low Memory Statistics',CR,LF,0
LD A,(REENTR)
CP 0
JR NZ,LMEM
CALL PRINT
DB CR,LF,'Low Memory function requires PBBS to be active',CR,LF,0
JP CHKMNU
LMEM: CALL PRINT
DB CR,LF,'Re-Entry Byte.............: ',0
LD HL,REENTR
CALL CHKAD
JR NZ,PTH
LD A,(HL)
CP 0
JR NZ,REON
CALL PRINT
DB 'OFF',0
JR PTH
REON: CALL PRINT
DB 'ON',0
PTH: CALL PRINT
DB CR,LF,'Path......................: ',0
IF ZCPR3 ; [tlp]
LD HL,(ZPTH) ; [tlp]
ELSE ; [tlp]
LD HL,PATH ; [tlp]
ENDIF ; [tlp]
CALL CHKAD
JP NZ,TMID
PTH1: LD A,(HL)
CP 0
JR Z,TMID
CP '$'
JR Z,PDRV
ADD A,40H
PDRV: CALL ECHO
INC HL
PUSH HL
LD A,(HL)
CP '$'
JR NZ,PUSR
CALL ECHO
JR PUSR1
PUSR: CALL PA2ASC
PUSR1: CALL PRINT
DB ': ',0
POP HL
INC HL
JR PTH1
TMID:
IF TCAP
CALL PRINT
DB CR,LF,'Terminal Id Code..........: ',0
LD HL,TRMCD
CALL CHKAD
JR NZ,URECA
LD A,(HL)
CALL PA2ASC
CALL PRINT
DB ' - ',0
IF ZCPR3 ; [tlp]
LD HL,Z3ENV+80H ; [tlp]
ELSE ; [tlp]
LD HL,SYSENV+80H ; [tlp]
ENDIF ; ZCPR3 [tlp]
LD A,(HL)
CP ' '
CALL Z,URECA
LD B,16
PTERM: LD A,(HL)
CALL ECHO
INC HL
DJNZ PTERM
ENDIF ; TCAP
URECA: CALL PRINT
DB CR,LF,'User Record Address.......: ',0
LD HL,USREC
CALL CHKAD
LD HL,(USREC)
CALL Z,PB2ASC
ALCK: CALL PRINT
DB CR,LF,'Address of Lock (Access)..: ',0
LD HL,LOCK
CALL CHKAD
JR NZ,UMAP
LD A,(HL)
CP 09
JR C,ADEC
ADD A,7
ADEC: ADD A,30H
CALL ECHO
UMAP: CALL PRINT
DB CR,LF,'User Map..................: ',0
LD HL,USRMAP
CALL CHKAD
JR NZ,DMAP
LD HL,(USRMAP)
CALL TBIT
DMAP: CALL PRINT
DB CR,LF,'Drive Map.................: ',0
LD HL,DRVMAP
CALL CHKAD
JR NZ,DLOG
LD HL,(DRVMAP)
CALL TBIT
DLOG: CALL PRINT
DB CR,LF,'Disk Log..................: ',0
IF DSKLOG
LD HL,DSKFLG
CALL CHKAD
JR NZ,MSPD
CALL PRINT
DB 'ON',0
ELSE
CALL PRINT
DB ' OFF',0
ENDIF
MSPD: CALL PRINT
DB CR,LF,'Modem Speed Indicator.....: ',0
LD HL,BSPEED
CALL CHKAD
JP NZ,MDRV
LD A,(HL)
B110: CP 0
JR NZ,B300
CALL PRINT
DB '110 baud',0
JP MDRV
B300: CP 1
JR NZ,B450
CALL PRINT
DB '300 baud',0
JP MDRV
B450: CP 2
JR NZ,B600
CALL PRINT
DB '450 baud',0
JP MDRV
B600: CP 3
JR NZ,B710
CALL PRINT
DB '600 baud',0
JP MDRV
B710: CP 4
JR NZ,B1200
CALL PRINT
DB '710 baud',0
JP MDRV
B1200: CP 5
JR NZ,B2400
CALL PRINT
DB '1200 baud',0
JP MDRV
B2400: CP 6
JR NZ,B4800
CALL PRINT
DB '2400 baud',0
JP MDRV
B4800: CP 7
JR NZ,B9600
CALL PRINT
DB '4800 baud',0
JP MDRV
B9600: CP 8
JR NZ,B19200
CALL PRINT
DB '9600 baud',0
JP MDRV
B19200: CP 9
JR NZ,BLOCAL
CALL PRINT
DB '19.2k baud',0
JP MDRV
BLOCAL: CALL PRINT
DB 'Local',0
MDRV: CALL PRINT
DB CR,LF,'Maximum Drive.............: ',0
IF zcpr3 ; [tlp]
LD HL,ZDRV ; [tlp]
ELSE ; [tlp]
LD HL,MXDRV ; [tlp]
ENDIF ; ZCPR3 [tlp]
PUSH HL
CALL phl4hc
CALL PRINT
DB 'H ',0
POP HL
LD A,(HL)
ADD A,40H
CALL ECHO
MUSR: CALL PRINT
DB CR,LF,'Maximum User..............: ',0
IF ZCPR3 ; [tlp]
LD HL,ZUSR ; [tlp]
ELSE ; [tlp]
LD HL,MXUSR ; [tlp]
ENDIF ; ZCPR3 [tlp]
LD A,(HL)
LD (TMPUSR),A
CALL PHL4HC
CALL PRINT
DB 'H ',0
LD A,(TMPUSR)
CALL Z,PA2ASC
CALL PRINT
DB CR,LF,'Wheel Byte................: ',0
IF ZCPR3 ; [tlp]
LD HL,(ZWHL) ; [tlp]
ELSE ; [tlp]
LD HL,WHEEL ; [tlp]
ENDIF ; ZCPR3 [tlp]
CALL CHKAD
JR NZ,LOGTM
LD A,(HL)
CP 0
JR Z,WOFF
CALL PRINT
DB 'ON',0
JR LOGTM
WOFF: CALL PRINT
DB 'OFF',0
LOGTM: CALL PRINT
DB CR,LF,'Logon-Time (ASCII)........: ',0
LD HL,LOGSTR
CALL CHKAD
JR NZ,UPL
LD b,8
GTM: LD A,(HL)
CALL ECHO
INC HL
DJNZ GTM
UPL: CALL PRINT
DB CR,LF,'Upload Count..............: ',0
LD HL,UPLOADS
CALL CHKAD
LD A,(HL)
CALL Z,PA2ASC
CALL PRINT
DB CR,LF,'Download Count............: ',0
LD HL,DNLOADS
CALL CHKAD
LD A,(HL)
CALL Z,PA2ASC
CALL PRINT
DB CR,LF,'Access in ASCII...........: ',0
LD HL,ASCACC
CALL CHKAD
LD A,(HL)
CALL NZ,PA2ASC
CALL PRINT
DB CR,LF,0
JP CHKMNU
CHKAD: PUSH HL
LD DE,JUNK
LD B,2
CALL MATCH
JR Z,NOTU
PTAD: CALL PHL4HC
CALL PRINT
DB 'H ',0
JR CHKEX
NOTU: CALL PRINT
DB 'Not Used',0
CHKEX: POP HL
RET
TBIT: PUSH HL
LD C,H
CALL PBBITS
POP HL
LD C,L
CALL PBBITS
RET
PBBITS: LD B,8
PBB1: LD A,'0'
BIT 7,C
JR Z,PBB2
INC A
PBB2: CALL ECHO
SLA C
DJNZ PBB1
RET
; Display message statistics
MSGST:
; Open INDEX.PBS file
CALL IOPEN ; Point to INDEX.PBS
LD HL,0 ; Message number
CALL GET ; Get message
LD HL,IDATEF ; Point to source buffer
LD DE,IDATE ; Point to destination buffer
LD BC,NDXLEN ; Length of buffer
LDIR ; Move to buffer
CALL CLOSE ; Close file
; Open MSGINDEX.PBS file
LD HL,MSGINDEX ; Point to MSGINDEX.PBS
CALL OPEN ; Open file
LD HL,MNDXLEN ; Get length of index record
LD (RRSZ),HL ; Save in RRSZ for later
LD HL,0 ; Starting record number
LD (MSGREC),HL
CALL GET
DSPREC: LD HL,CLS
CALL PRINTM
CALL PRINT
DB 'PBBS Message Statistics',CR,LF,0
CALL PRINT
DB CR,LF,'Record number (MSG)...: ',0
LD HL,(MSGREC)
INC HL
CALL PB2ASC
CALL PRINT
DB ' (',0
LD HL,(MNUMF)
CALL PB2ASC
CALL PRINT
DB ')',0
CALL PRINT
DB CR,LF,'Message FROM: ........: ',0
LD HL,MFROMF
LD B,30
CALL PRINTL
CALL PRINT
DB CR,LF,'Message TO: ..........: ',0
LD HL,MTOF
LD B,30
CALL PRINTL
CALL PRINT
DB CR,LF,'Message SUBJECT: .....: ',0
LD HL,MSUBF
LD B,26
CALL PRINTL
CALL PRINT
DB CR,LF,'Time left ............: ',0
LD IX,MTIMEF
CALL PTIME
CALL PRINT
DB CR,LF,'Date left ............: ',0
LD IX,MDATF
CALL PDATE
CALL PRINT
DB CR,LF,'Block Count ..........: ',0
LD A,(MBLKF)
CALL PA2ASC
CALL PRINT
DB CR,LF,'Starting block .......: ',0
LD HL,(MSTRF)
CALL PB2ASC
CALL PRINT
DB CR,LF,'Index record number ..: ',0
LD HL,(MRECF)
CALL PB2ASC
CALL PRINT
DB CR,LF,'Public/Private .......: ',0
LD A,(MPUBF)
CP 0
JR NZ,PRVT
CALL PRINT
DB '(Public)',0
JR RPDNE
PRVT: CALL PRINT
DB '(Private)',0
RPDNE: CALL PRINT
DB CR,LF,'Folder number ........: ',0
LD A,(MFNUMF)
CALL PA2ASC
CALL PRINT
DB ' - ',0
LD A,(MFNUMF)
CP 0
JR NZ,FLD1
LD HL,FNAMES
LD B,11
CALL PRINTL
JP FLDNE
FLD1: CP 1
JR NZ,FLD2
LD HL,FNAME1
LD B,11
CALL PRINTL
JP FLDNE
FLD2: CP 2
JR NZ,FLD3
LD HL,FNAME2
LD B,11
CALL PRINTL
JP FLDNE
FLD3: CP 3
JR NZ,FLD4
LD HL,FNAME3
LD B,11
CALL PRINTL
JP FLDNE
FLD4: CP 4
JR NZ,FLD5
LD HL,FNAME4
LD B,11
CALL PRINTL
JP FLDNE
FLD5: CP 5
JR NZ,FLD6
LD HL,FNAME5
LD B,11
CALL PRINTL
JP FLDNE
FLD6: CP 6
JR NZ,FLD7
LD HL,FNAME6
LD B,11
CALL PRINTL
JP FLDNE
FLD7: CP 7
JR NZ,FLD8
LD HL,FNAME7
LD B,11
CALL PRINTL
JP FLDNE
FLD8: CP 8
JR NZ,FLD9
LD HL,FNAME8
LD B,11
CALL PRINTL
JP FLDNE
FLD9: LD HL,FNAME9
LD B,11
CALL PRINTL
FLDNE: CALL PRINT
DB CR,LF,'Read/Delete ..........: ',0
LD A,(MREAD)
CP 0
JR NZ,MRD
CALL PRINT
DB '( )',0
JR MDNE
MRD: CP 1
JR NZ,MDLT
CALL PRINT
DB '(R)',0
JR MDNE
MDLT: CP 0FFH
JR NZ,MDNE
CALL PRINT
DB '(D)',0
MDNE:
IF MTHD
IF MSGTHD
CALL PRINT
DB CR,LF,'Message retention ....: ',0
LD A,(MRETEN)
CALL PA2ASC
CALL PRINT
DB CR,LF,'Forward link .........: ',0
LD HL,(MFLNK)
CALL PB2ASC
CALL PRINT
DB CR,LF,'Reverse link .........: ',0
LD HL,(MRLNK)
CALL PB2ASC
CALL PRINT
DB CR,LF,'Reply to message .....: ',0
LD HL,(MREPLY)
CALL PB2ASC
ENDIF ; MSGTHD
ENDIF ; MTHD
CALL PRINT
DB CR,LF,LF,'N)ext P)revious G)oto Q)uit '
DB 'Enter Selection: ',0
GCH: CALL GETCH
CALL CAPS
CALL ECHO
CP 'N' ; Next message index record
JP Z,NEXT
CP 'P' ; Previous message index record
JP Z,PREV
CP 'G' ; Goto specific index record
JP Z,GOTO
CP 'Q' ; Quit
JP Z,QUIT
CALL PRINT ; Entered unknown character
DB BS,' ',BS,0 ; Erase the previous character
JR GCH ; and get new one
RET
NEXT: LD HL,(MSGREC)
OR A
LD DE,(IMNDX)
SBC HL,DE
JP Z,DSPREC
LD HL,(MSGREC)
INC HL
LD (MSGREC),HL
CALL GET
JP DSPREC
PREV: LD HL,(MSGREC)
LD A,L
OR H
JP Z,DSPREC
DEC HL
LD (MSGREC),HL
CALL GET
JP DSPREC
GOTO: CALL PRINT
DB BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS
DB ' '
DB BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS,BS
DB 'Record Number: ',0
LD C,0 ; Do not force upper case
LD B,5 ; Maximum length of input string
LD D,0 ; No word wrap
LD A,0 ; Echo input to console
CALL INPUT ; Get input from user
LD (CNVRT0+1),A ; Place length of input string in buffer
PUSH HL
POP IX
CALL CNVRT0 ; Convert ASCII string to BINARY in HL
LD (OLDMSG),HL ; Save message number in temp
LD A,L ; Check message number to see IF less than 0
OR H
JP Z,DSPREC ; If less than 0 - just redisplay record
LD HL,(OLDMSG) ; Get current message number (TEMP)
OR A ; Reset flags
LD DE,(IMNDX) ; Get maximum message number
INC DE
INC DE
SBC HL,DE ; Check to see IF current>largest
JP NC,DSPREC ; If larger - just redisplay record
LD HL,(OLDMSG)
DEC HL ; Account for record 1 actually being 0
LD (MSGREC),HL ; Save current record number
CALL GET ; HL has record number to get
JP DSPREC ; Display record
QUIT: CALL CLOSE ; Close MSGINDEX.PBS
LD A,(MFLG)
CP 0
JP NZ,MENU
JP EXIT
; PBBS Runtime Options
PSET: CALL PRINT
DB 'PBBS Runtime Options',CR,LF,0
CALL PRINT
DB CR,LF,'Show Authors Name on Signon ..... (CREDITS) ',0
LD A,CREDITS
CALL CYN
CALL PRINT
DB CR,LF,'Display Version Number on Signon (VERSION) ',0
LD A,VERSION
CALL CYN
CALL PRINT
DB CR,LF,'Show Bulletin File at Signon ..... (BULTIN) ',0
LD A,BULTIN
CALL CYN
CALL PRINT
DB CR,LF,'Bump User Level Automatically .....(DOBUMP) ',0
LD A,DOBUMP
CALL CYN
IF DOBUMP
CALL PRINT
DB 'From 2-',0
LD A,BUMPHI
ADD A,30H
CALL ECHO
ENDIF ; DOBUMP
CALL PRINT
DB CR,LF,'PBYE Shows List of Last Callers ...(DSPCLR) ',0
LD A,DSPCLR
CALL CYN
IF DSPCLR
LD A,(DSPNUM)
CALL PA2ASC
CALL PRINT
DB ' Callers Shown',0
ENDIF ; DSPCLR
CALL PRINT
DB CR,LF,'Maintain System Statistics ....... (MSTATS) ',0
LD A,MSTATS
CALL CYN
CALL PRINT
DB CR,LF,'Display System Statistics at Logon (DSTATS) ',0
LD A,DSTATS
CALL CYN
CALL PRINT
DB CR,LF,'Allow Sysop to Signon with SYSOP .. (SYSOK) ',0
LD A,SYSOK
CALL CYN
CALL PRINT
DB CR,LF,'Supports Message Threading ....... (MSGTHD) ',0
LD A,MSGTHD
CALL CYN
CALL PRINT
DB CR,LF,'Display Message Body After Header (SKPHDR) ',0
LD A,SKPHDR
CALL CYN
CALL PRINT
DB CR,LF,'Number of Lines in Message ....... (MSGLIN) ',0
LD A,MSGLIN
CALL PA2ASC
CALL PRINT
DB ' Buf Size - ',0
LD HL,MSGBUF
CALL PB2ASC
CALL PRINT
DB 'k',0
CALL PRINT
DB CR,LF,'Display Welcome Message at Logon .. (WELON) ',0
LD A,WELON
CALL CYN
CALL PRINT
DB CR,LF,'Support Multiple Welcome Files ... (WELCUM) ',0
LD A,WELCUM
CALL CYN
CALL PRINT
DB CR,LF,'Number of Tries to Signon ......... (TRIES) ',0
LD A,TRIES
CALL PA2ASC
CALL PRINT
DB CR,LF,'System was Originaly OXGATE System (OXGATE) ',0
LD A,OXGATE
CALL CYN
CALL PRINT
DB CR,LF,'Maximum Number of Users on System .. (MAXU) ',0
LD HL,MAXU
CALL PB2ASC
CALL PRINT
DB CR,LF,'Is System Setup for One Menu ..... (ONEMNU) ',0
LD A,ONEMNU
CALL CYN
CALL PRINT
DB CR,LF,'Skip Asking User to Delete Msgs ... (NODEL) ',0
LD A,NODEL
CALL CYN
CALL PRINT
DB CR,LF,'Number of File Folders .......... (NMFLDRS) ',0
LD A,NMFLDRS
CALL PA2ASC
CALL PRINT
DB CR,LF,'Use Terminals 25th Line ........... (SET25) ',0
LD A,SET25
CALL CYN
CALL PRINT
DB CR,LF,0
JP CHKMNU
CYN: CP YES
JP NZ,DNO
CALL PRINT
DB 'YES ',0
RET
DNO: CALL PRINT
DB 'NO ',0
RET
DHX: CALL PRINT
DB 'H',0
RET
; Display PBBS system files
SFILE: CALL PRINT
DB 'PBBS System Files',CR,LF,0
CALL PRINT
DB CR,LF,'Bulletin File .........: ',0
LD HL,BULLETIN
CALL PRINTM
CALL PRINT
DB CR,LF,'Callers File ..........: ',0
LD HL,CALLRS
CALL PRINTM
CALL PRINT
DB CR,LF,'Comments File .........: ',0
LD HL,COMMENTS
CALL PRINTM
CALL PRINT
DB CR,LF,'Index File ............: ',0
LD HL,INDEX
CALL PRINTM
CALL PRINT
DB CR,LF,'Last Caller File ......: ',0
LD HL,LASTCAL
CALL PRINTM
CALL PRINT
DB CR,LF,'Message File ..........: ',0
LD HL,MESSAGES
CALL PRINTM
CALL PRINT
DB CR,LF,'Message Index File ....: ',0
LD HL,MSGINDEX
CALL PRINTM
CALL PRINT
DB CR,LF,'News Files ............: ',0
LD HL,NEWS
CALL PRINTM
CALL PRINT
DB CR,LF,'News Error File .......: ',0
LD HL,NEWSERR
CALL PRINTM
IF ONEMNU
CALL PRINT
DB CR,LF,'Menu File .............: ',0
LD HL,ONEMENU
CALL PRINTM
ELSE
CALL PRINT
DB CR,LF,'Main Menu .............: ',0
LD HL,MAILMENU
CALL PRINTM
CALL PRINT
DB CR,LF,'PBBS menu .............: ',0
LD HL,PBBSMENU
CALL PRINTM
ENDIF
IF prvate and prvtxt
CALL PRINT
DB CR,LF,'Private System File ...: ',0
LD HL,PRVTFIL
CALL PRINTM
ENDIF
IF TCAP
CALL PRINT
DB CR,LF,'TCAP File .............: ',0
LD HL,TCPNAM
CALL PRINTM
ENDIF
CALL PRINT
DB CR,LF,'Users File ............: ',0
LD HL,USERS
CALL PRINTM
CALL PRINT
DB CR,LF,'Welcome File ..........: ',0
LD HL,WELCOM
CALL PRINTM
CALL PRINT
DB CR,LF,'ZMD/KMD Descriptions ..: ',0
LD HL,WHATSFOR
CALL PRINTM
CALL PRINT
DB CR,LF,'ZMD/KMD Uploads .......: ',0
LD HL,XMODEM
CALL PRINTM
CALL PRINT
DB CR,LF,0
JP CHKMNU
; Display PBBS settings
PBS: CALL PRINT
DB 'PBBS and the Operating System',CR,LF,0
CALL PRINT
DB CR,LF,'Console Command Processor ...........',0
LD A,(CPLUS)
CP 0
JR Z,DEXTCL
CALL PRINT
DB ' (CPLUS) '
DB 'CPM+',0
JP DCCPL
DEXTCL: LD A,(EXTCL)
CP 0
JR Z,DSTCCP
CALL PRINT
DB ' (EXTCL) '
DB 'ZCPRx - Ext Cmd Line',0
JP DCCPL
DSTCCP: LD A,(SETCCP)
CP 0
JR Z,DZCMD
CALL PRINT
DB '(SETCCP) '
DB 'Hard Coded CCP Address',0
JP DCCPL
DZCMD: LD A,(ZCMD)
CP 0
JR Z,DCPM
CALL PRINT
DB '. (ZCMD) '
DB 'ZCPRx - Int Cmd Line',0
JP DCCPL
DCPM: CALL PRINT
DB '. (CP/M) '
DB 'Standard CP/M',0
DCCPL: CALL PRINT
DB CR,LF,'Console Command Processor Location . (CCPLOC) ',0
LD A,(SETCCP)
CP 0
JR Z,NOCCP
LD HL,CCPLOC
CALL PHL4HC
CALL PRINT
DB 'H ',0
JR DMCLB
NOCCP: CALL PRINT
DB 'Calculated from BIOS',0
DMCLB: CALL PRINT
DB CR,LF,'Multiple Command Line Buffer ....... (MCLBUF) ',0
IF ZCPR3
LD HL,MCLBUF
LD A,H
OR L
JR Z,NOBUF
ELSE
LD HL,(CCPLOC+8)
LD A,H
OR L
JR Z,NOBUF
ENDIF
CALL PHL4HC
CALL PRINT
DB 'H ',0
NOBUF: CALL PRINT
DB CR,LF,'System Environment Loaded at ....... '
IF ZCPR3
DB ' (Z3ENV) ',0
LD HL,Z3ENV
ELSE
DB '(SYSENV) ',0
LD HL,SYSENV
ENDIF
CALL PHL4HC
CALL PRINT
DB 'H',0
IF ZCPR3
CALL PRINT
DB ' (Use Z option)',0
ENDIF
CALL PRINT
DB CR,LF,'Set Different Path for SYSOP ...... (SETPATH) ',0
LD A,SETPATH
CALL CYN
CALL PRINT
DB CR,LF,'Maximum Drive ......................'
IF ZCPR3
DB '.. (ZDRV) ',0
LD HL,ZDRV
ELSE
DB '. (MXDRV) ',0
LD HL,MXDRV
ENDIF
CALL PHL4HC
CALL PRINT
DB 'H',0
CALL PRINT
DB CR,LF,'Maximum User .......................'
IF ZCPR3
DB '.. (ZUSR) ',0
LD HL,ZUSR
ELSE
DB '. (MXUSR) ',0
LD HL,MXUSR
ENDIF
CALL PHL4HC
CALL PRINT
DB 'H',0
CALL PRINT
DB CR,LF,'Wheel Byte .........................'
IF ZCPR3
DB '.. (ZWHL) ',0
LD HL,ZWHL
ELSE
DB ' (WHEEL) ',0
LD HL,WHEEL
ENDIF
CALL PHL4HC
CALL PRINT
DB 'H ',0
CALL PRINT
DB CR,LF,'Using BYE5xx Disk Log Feature ...... (DSKLOG) ',0
LD A,DSKLOG
CALL CYN
CALL PRINT
DB CR,LF,'Run Special File on CP/M Entry ....... (SPON) ',0
LD A,SPON
CALL CYN
CALL PRINT
DB CR,LF,'Run Alternate File on Re-Entry ...... (ALTON) ',0
LD A,ALTON
CALL CYN
CALL PRINT
DB CR,LF,'Activate Total Time per Day ........... (TOT) ',0
LD A,TOT
CALL CYN
CALL PRINT
DB CR,LF,'Date Format ......................... (EDATE) ',0
LD A,EDATE
CALL CYN
CALL PRINT
IF EDATE
DB ' (Fmt DD/MM/YY)',0
ELSE
DB ' (Fmt MM/DD/YY)',0
ENDIF
CALL PRINT
DB CR,LF,'Allow Comments to SYSOP at Logoff ... (EXCMT) ',0
LD A,EXCMT
CALL CYN
CALL PRINT
DB CR,LF,'Allow Support for Multiple OS ........ (MDOS) ',0
LD A,MDOS
CALL CYN
IF MDOS
CALL PRINT
DB CR,LF,'Number of Support Areas Allowed ..... (NMDOS) ',0
LD A,NMDOS
CALL PA2ASC
CALL PRINT
DB ' (Use D option)',0
ENDIF
CALL PRINT
DB CR,LF,'Run EXIT File for Each User Level .... (ENTY) ',0
LD A,ENTY
CALL CYN
CALL PRINT
DB CR,LF,0
JP CHKMNU
; System Restrictions
PSET1: CALL PRINT
DB 'System Restrictions',CR,LF,0
CALL PRINT
DB CR,LF,'Minimum Access For Public Msgs (ALLLV) ',0
LD A,ALLLV
CALL PA2ASC
CALL PRINT
DB CR,LF,'Minimum Access To Post Message (POSTLV) ',0
LD A,POSTLV
CALL PA2ASC
CALL PRINT
DB CR,LF,'Restrict NEW Users From CP/M (RSTKON) ',0
LD A,RSTKON
CALL CYN
IF RSTKON
CALL PRINT
DB CR,LF,'Minimum Level To Enter CP/M .. (RSTKLV) ',0
LD A,RSTKLV
CALL PA2ASC
ENDIF
CALL PRINT
DB CR,LF,'Ask CP/M Knowledge Question ...(KNOWON) ',0
LD A,KNOWON
CALL CYN
IF KNOWON
CALL PRINT
DB CR,LF,'Levels Below This Get Question (KNOKLV) ',0
LD A,KNOKLV
CALL PA2ASC
ENDIF
CALL PRINT
DB CR,LF,'Private System Running ........(PRVATE) ',0
LD A,PRVATE
CALL CYN
IF prvate
CALL PRINT
DB CR,LF,'Add NEW User to User File ... (PLOGUSR) ',0
LD A,PLOGUSR
CALL CYN
CALL PRINT
DB CR,LF,'Display Private Text File .... (PRVTXT) ',0
LD A,PRVTXT
CALL CYN
CALL PRINT
DB CR,LF,'Runs .COM File Before Log Off (PRVCOM) ',0
LD A,PRVCOM
CALL CYN
ENDIF ; PRVATE
CALL PRINT
DB CR,LF,'Use BELL Flag To Allow CHAT .. (CHTBYE) ',0
LD A,CHTBYE
CALL CYN
CALL PRINT
DB CR,LF,'Number Of Rings ............... (ALRET) ',0
LD A,ALERT
CALL PA2ASC
CALL PRINT
DB ' >>> CHAT Hours ',0
LD A,CHAT0
CALL PA2ASC
CALL PRINT
DB ':00-',0
LD A,CHAT1
CALL PA2ASC
CALL PRINT
DB ':00',0
CALL PRINT
DB CR,LF,'Offset To ACESS byte in BYE .. (BYEACC) ',0
LD A,BYEACC
CALL PA2ASC
CALL PRINT
DB CR,LF,'Set Level For ZMD/KMD Use ..... (XMACC) ',0
LD A,XMACC
CALL CYN
CALL PRINT
DB CR,LF,'Level To Use ZMD/KMD .......... (XMLVL) ',0
LD A,XMLVL
CALL PA2ASC
CALL PRINT
DB ' ',0
CALL PRINT
DB CR,LF,'Allow PMSG Uploads ............ (XMMSG) ',0
LD A,XMMSG
CALL CYN
CALL PRINT
DB CR,LF,'Tell BYE ZMD/PMSG Upload OK... (ENTMSG) ',0
LD A,ENTMSG
CALL PA2ASC
CALL PRINT
DB ' XMNO - ',0
LD A,XMNO
OR ENTMSG
CALL PA2ASC
CALL PRINT
DB ' XMOK - ',0
LD A,XMOK
OR ENTMSG
CALL PA2ASC
CALL PRINT
DB ' ',0
CALL PRINT
DB CR,LF,0
JP CHKMNU
; PBBS drive/user definitions
DU: CALL PRINT
DB 'PBBS Drive/User Definitions',CR,LF,0
IF ZCPR3
CALL PRINT
DB CR,LF,'ZCPR Max Drive/User .....: ',0
LD A,(ZDRV)
ADD A,40H
CALL ECHO
LD A,(ZUSR)
CALL PA2ASC
CALL PRINT
DB ':',0
ELSE
CALL PRINT
DB CR,LF,'SYSTEM Max Drive/User ...: ',0
LD A,(MXDRV)
ADD A,40H
CALL ECHO
LD A,(MXUSR)
CALL PA2ASC
CALL PRINT
DB ':',0
ENDIF ; ZCPR3
CALL PRINT
DB CR,LF,'PBBS System DU: .........: ',0
LD A,SYSDRV
ADD A,41H
CALL ECHO
LD A,SYSUSR
CALL PA2ASC
CALL PRINT
DB ':',0
IF TCAP
CALL PRINT
DB CR,LF,'Terminal Cap. DU: .......: ',0
LD A,TCPDRV
ADD A,41H
CALL ECHO
LD A,TCPUSR
CALL PA2ASC
CALL PRINT
DB ':',0
LD HL,TCPNAM
CALL PRINTM
ENDIF ; TCAP
IF NOT MDOS
CALL PRINT
DB CR,LF,'CP/M Drive/User .........: ',0
LD A,DU0 ; [tlp]
; LD A,CPMDU ; [tlp]
LD (DRV),A
LD A,0
LD (USR),A
CALL PDU
ENDIF ; NOT MDOS
CALL PRINT
DB CR,LF,'Multiple DOS Support ....: ',0
LD A,MDOS
CALL CYN
CALL PCRLF
IF MDOS
LD HL,DU0
LD A,(DRV0)
LD (DRV),A
LD A,(USR0)
LD (USR),A
CALL PDUL
LD HL,DU1
LD A,(DRV1)
LD (DRV),A
LD A,(USR1)
LD (USR),A
CALL PDUL
LD HL,DU2
LD A,(DRV2)
LD (DRV),A
LD A,(USR2)
LD (USR),A
CALL PDUL
LD HL,DU3
LD A,(DRV3)
LD (DRV),A
LD A,(USR3)
LD (USR),A
CALL PDUL
LD HL,DU4
LD A,(DRV4)
LD (DRV),A
LD A,(USR4)
LD (USR),A
CALL PDUL
LD HL,DU5
LD A,(DRV5)
LD (DRV),A
LD A,(USR5)
LD (USR),A
CALL PDUL
LD HL,DU6
LD A,(DRV6)
LD (DRV),A
LD A,(USR6)
LD (USR),A
CALL PDUL
LD HL,DU7
LD A,(DRV7)
LD (DRV),A
LD A,(USR7)
LD (USR),A
CALL PDUL
LD HL,DU8
LD A,(DRV8)
LD (DRV),A
LD A,(USR8)
LD (USR),A
CALL PDUL
LD HL,DU9
LD A,(DRV9)
LD (DRV),A
LD A,(USR9)
LD (USR),A
CALL PDUL
LD HL,DU10
LD A,(DRV10)
LD (DRV),A
LD A,(USR10)
LD (USR),A
CALL PDUL
LD HL,DU11
LD A,(DRV11)
LD (DRV),A
LD A,(USR11)
LD (USR),A
CALL PDUL
LD HL,DU12
LD A,(DRV12)
LD (DRV),A
LD A,(USR12)
LD (USR),A
CALL PDUL
LD HL,DU13
LD A,(DRV13)
LD (DRV),A
LD A,(USR13)
LD (USR),A
CALL PDUL
LD HL,DU14
LD A,(DRV14)
LD (DRV),A
LD A,(USR14)
LD (USR),A
CALL PDUL
LD HL,DU15
LD A,(DRV15)
LD (DRV),A
LD A,(USR15)
LD (USR),A
CALL PDUL
ENDIF ; MDOS
JP CHKMNU
PDU: LD A,(DRV)
CALL ECHO
LD A,(USR)
CALL PA2ASC
CALL PRINT
DB ':',0
RET
IF ZCPR3 ; [tlp]
; Z System File Settings
ZSYS: CALL PRINT
DB 'ZCPR System Settings',CR,LF,0
CALL PRINT
DB CR,LF,'ZCPR3 Wheel Byte .......(WHEEL) : ',0
LD HL,(ZWHL)
PUSH HL
CALL PHL4HC
CALL PRINT
DB 'H ',0
POP HL
LD A,(HL)
CP 0
JP Z,ZOF
CALL PRINT
DB 'ON ',0
JR ZMDRV
ZOF: CALL PRINT
DB 'OFF ',0
ZMDRV: CALL PRINT
DB CR,LF,'ZCPR3 Maximum Drive ....(MXDRV) : ',0
LD HL,ZDRV ; [tlp]
PUSH HL
CALL PHL4HC
CALL PRINT
DB 'H ',0
POP HL
LD A,(HL)
ADD A,40H
CALL ECHO
ZMUSR: CALL PRINT
DB CR,LF,'ZCPR3 Maximum User .....(MXUSR) : ',0
LD HL,ZUSR ; [tlp]
PUSH HL
CALL PHL4HC
CALL PRINT
DB 'H ',0
POP HL
LD A,(HL)
CALL Z,PA2ASC
CALL PRINT
DB CR,LF,LF,'ZCPR3 Env Address ......(Z3ENV) : ',0
LD HL,Z3ENV
CALL PHL4HC
CALL PRINT
DB 'H',0
CALL PRINT
DB CR,LF,'CCP Location ..........(CCPLOC) : ',0
LD A,(SETCCP)
CP 0
JR Z,ZNOCCP
LD HL,CCPLOC
CALL PHL4HC
CALL PRINT
DB 'H',0
JR ZSUSR
ZNOCCP: CALL PRINT
DB 'AUTO ',0
ZSUSR: CALL PRINT
DB CR,LF,'Mtpl Cmd Line Buffer ..(MCLBUF) : ',0
LD A,(ZCMD)
CP 0
JR Z,ZMBUF
LD HL,(CCPLOC+8)
JR ZCCPP
ZMBUF: LD HL,MCLBUF
ZCCPP: CALL PHL4HC
CALL PRINT
DB 'H ',0
LD HL,MCLBUF+4
PCL: LD A,(HL)
CP 0
JR Z,ZTCP
CALL ECHO
INC HL
JR PCL
ZTCP:
IF TCAP
CALL PRINT
DB CR,LF,LF,'ZCPR3 Terminal Cap ......(TCAP) : ',0
LD HL,Z3ENV+80H
CALL PHL4HC
CALL PRINT
DB 'H ',0
LD A,TCPDRV
ADD A,41H
CALL ECHO
LD A,TCPUSR
CALL PA2ASC
CALL PRINT
DB ':',0
LD HL,TCPNAM
CALL PRINTM
ENDIF ; TCAP
ZPH: CALL PRINT
DB CR,LF,'ZCPR3 Path Address ......(PATH) : ',0
LD HL,(ZPTH)
CALL PHL4HC
CALL PRINT
DB 'H ',0
LD HL,(ZPTH) ; [tlp]
ZPTH1: LD A,(HL)
CP 0
JP Z,DPTH
CP '$'
JR z,zpdrv
ADD A,40H
ZPDRV: CALL ECHO
INC HL
PUSH HL
LD A,(HL)
CP '$'
JR NZ,ZPUSR
CALL ECHO
JR ZPUSR1
ZPUSR: CALL PA2ASC
ZPUSR1: CALL PRINT
DB ': ',0
POP HL
INC HL
JR ZPTH1
DPTH: CALL PRINT
DB CR,LF,0
JP CHKMNU
ENDIF ; ZCPR3 [tlp]
; User has requested the menu option. Show system menu and
; present all options.
MENU: LD A,0FFH ; User has requested menu option
LD (MFLG),A ; Save menu flag
LD HL,CLS ; Clear screen and display menu
CALL PRINTM
CALL PRINT
DB CR,LF,LF
DB ' PBBS Statistics Menu',CR,LF,LF
DB ' A) Access Table Information',CR,LF
DB ' B) Drive/User Bitmaps',CR,LF
DB ' D) Drive/User Settings',CR,LF ; [tlp]
DB ' E) Entry/Welcome Files',CR,LF
DB ' F) Mail Folders and Access',CR,LF
DB ' I) INDEX.PBS Information',CR,LF
DB ' L) Low Memory Addresses',CR,LF
DB ' M) MSGINDEX.PBS Information',CR,LF
DB ' O) Operating System',CR,LF ; [tlp]
DB ' P) Internal PBBS Settings',CR,LF
DB ' R) System Restrictions',CR,LF ; [tlp]
DB ' S) System Files',CR,LF
DB ' V) Version Number',CR,LF
IF ZCPR3 ; [tlp]
DB ' Z) Z-System',CR,LF ; [tlp]
ENDIF ; [tlp]
DB '?-/) Help Screen',CR,LF
DB ' X) Exit',CR,LF,LF
DB ' Enter Selection: ',0
CALL GETCH ; Get option from user
PUSH AF ; Push option on stack
LD HL,CLS ; Clear screen for option display
CALL PRINTM
POP AF ; Restore option
JP OPTION
; Display the built-in help menu.
HELP: CALL PRINT
DB CR,LF,'PBBS Statistics for ',0
LD HL,LOCSTR
CALL PRINTM
LD A,(REENTR)
CP 0
JR Z,NDATH
CALL PRINT
DB 'as of ',0
LD IX,BDATE
CALL PDATE
NDATH: CALL PRINT
DB CR,LF,'Sysop: ',0
LD HL,SYSOP
CALL PRINTM
CALL PRINT
DB CR,LF,LF
DB ' Usage: PSTAT Menu Sub-System',CR,LF
DB ' PSTAT /o PSTAT Options',CR,LF,LF
DB ' Options A - Access Table (User Access)',CR,LF
DB ' B - Bitmaps (PBBSDB.HDR)',CR,LF
DB ' D - DU: Selections (PBBSEQU.HDR)',CR,LF
DB ' E - Entry/Welcome (PBBSDB.HDR)',CR,LF
DB ' F - Folders (PBBSDB.HDR)',CR,LF
DB ' I - System Stats (INDEX.PBS)',CR,LF
DB ' L - System Flags (Low Memory)',CR,LF
DB ' M - Message Stats (MSGINDEX.PBS)',CR,LF
DB ' O - Operating System(PBBS EQU/DB)',CR,LF
DB ' P - PBBS Settings (PBBS EQU/DB)',CR,LF
DB ' R - Restrictions (PBBSEQU.HDR)',CR,LF
DB ' S - System Files (PBBSDB.HDR)',CR,LF
DB ' V - Version Number',CR,LF
IF ZCPR3 ; [tlp]
DB ' Z - Z-System',CR,LF ; [tlp]
ENDIF ; [tlp]
DB ' ? or / - Help Screen',CR,LF,0
JP CHKMNU
; Restore original DU: status and stack. Then exit
EXIT: LD A,(OLDDRV)
LD E,A
LD C,LOGDRV
CALL BDOS ; Restore original drive
LD A,(OLDUSR)
LD E,A
LD C,LOGUSR
CALL BDOS ; Restore original user
LD HL,(CCPSTK)
LD SP,HL ; Restore original stack
RET ; And exit
CHKMNU: LD A,(MFLG)
CP 0
JP Z,EXIT
CALL PRINT
DB CR,LF,'Press Any Key ... ',0
CALL GETCH
JP MENU
VERS: LD HL,CLS
CALL PRINTM
CALL PVER
IF CREDITS
LD HL,AUTHOR
CALL PRINTM
ENDIF
CALL PRINT
DB CR,LF,'Statistics for ',0
LD HL,LOCSTR
CALL PRINTM
LD A,(REENTR)
CP 0
JR Z,NDATV
CALL PRINT
DB 'as of ',0
LD IX,BDATE
CALL PDATE
NDATV: CALL PRINT
DB CR,LF,'SYSOP: ',0
LD HL,SYSOP
CALL PRINTM
CALL PRINT
DB CR,LF,0
JP CHKMNU
; Subroutines
IOPEN: LD HL,INDEX ; Point to INDEX.PBS filename
CALL OPEN ; Open file
LD HL,NDXLEN ; Get length of INDEX.PBS record
LD (RRSZ),HL ; Save in buffer
RET
;PCRLF1: CALL PRINT ; Two lines
; DB CR,LF,0
;PCRLF: CALL PRINT ; One line
; DB CR,LF,0
; RET
PDUL: LD A,(HL)
CP 0
RET Z
PUSH HL
CALL PRINT
DB ' ',0
LD A,(DRV)
CALL ECHO
LD A,(USR)
CALL PA2ASC
CALL PRINT
DB ': - ',0
POP HL
CALL PRINTM
CALL PCRLF
RET
; SYSLIB Module Name: SPADC
; Author: Richard Conn
; SYSLIB Version Number: 3.6
; Module Version Number: 1.2
; PADC --
; PRINT REG A AS DECIMAL CHARACTERS W/LEADING <SP> IN 3-CHAR FIELD
PADC: PUSH BC ; Save regs
PUSH DE
PUSH AF ; Save A
LD D,1 ; Turn on leading <sp> flag
; PRINT ROUTINE
PADC1: LD B,100 ; Print hundreds
CALL PAC ; Print a character
LD B,10 ; Print tens
CALL PAC
ADD A,'0' ; Convert to ASCII
CALL ECHO ; Print
POP AF ; Restore A
POP DE ; Restore regs
POP BC
RET
; PRINT RESULT OF DIVISION OF A BY B W/LEADING <SP> (INTEGER DIVISION)
PAC: LD C,0 ; Set count
PACL: SUB B ; Compute count
JP C,PACD
INC C ; Increment count
JP PACL
PACD: ADD A,B ; Add B back in
LD E,A ; Save A
LD A,C ; Get count
OR A ; zero?
JP NZ,PACD1
OR D ; 0 for no leading <sp> (A=0, A OR D=0 IF D=0)
JP Z,PACD1
LD A,' ' ; Print <sp>
CALL ECHO
LD A,E ; Restore A
RET
PACD1: LD D,0 ; D=0 for no leading <sp>
LD A,C ; Get count
ADD A,'0' ; Convert to decimal
CALL ECHO ; Print it
LD A,E ; Restore A
RET
; SYSLIB Module Name: SPHL5DC
; Author: Richard Conn
; SYSLIB Version Number: 3.6
; Module Version Number: 1.2
PUTRG MACRO
PUSH BC ; Save BC, DE, HL
PUSH DE
PUSH HL
ENDM
GETRG MACRO
POP HL ; Restore HL, DE, BC
POP DE
POP BC
ENDM
; PHL5DC --
; PRINT HL AS 5 DECIMAL CHARACTERS
PHL5DC: PUSH AF ; Save all regs
PUTRG
LD B,0 ; B=0 for no leading <sp>
JP PHDC
; PHLDC --
; PRINT HL AS DECIMAL CHARACTERS W/LEADING SPACES IN 5-CHAR FIELD
PHLDC: PUSH AF ; Save all regs
PUTRG
LD B,1 ; A=1 for leading <sp>
; PRINT HL USING LEADING <SP> FLAG IN B
PHDC: LD DE,10000 ; Print 10000'S
CALL PHDC1
LD DE,1000 ; Print 1000'S
CALL PHDC1
LD DE,100 ; Print 100'S
CALL PHDC1
LD DE,10 ; Print 10'S
CALL PHDC1
LD A,L ; Print 1'S
ADD A,'0' ; Convert to ASCII
CALL ECHO
GETRG ; Restore all regs
POP AF
RET
; DIVIDE HL BY DE AND PRINT QUOTIENT WITH LEADING <SP>S
PHDC1: LD C,0 ; Set count
PHDC2: LD A,L ; Sub E from L
SUB E
LD L,A ; Result in L
LD A,H ; Sub D from H w/borrow
SBC A,D
LD H,A ; Result in H
JP C,PHDC3 ; Done IF carry set (further borrow)
INC C ; Increment count
JP PHDC2
PHDC3: LD A,L ; Add E to L
ADD A,E
LD L,A ; Result in L
LD A,H ; Add D to H w/carry
ADC A,D
LD H,A ; Result in H
LD A,C ; Get result
OR A ; Check for zero
JP NZ,PHDC4
OR B ; 0 = no leading <sp> (A=0, A or B = 0 IF B=0)
JP Z,PHDC4
LD A,' ' ; Print <sp>
JP ECHO
PHDC4: LD B,0 ; Turn off leading <sp>
LD A,C ; Get value
ADD A,'0' ; Convert to ASCII
JP ECHO
; SYSLIB Module Name: SPHL4HC
; Author: Richard Conn
; SYSLIB Version Number: 3.6
; Module Version Number: 1.2
;
; PHL4HC -- Print HL as 4 Hex Characters
; No Registers are to be affected.
;
PHL4HC: PUSH AF ; Save A
LD A,H ; Print H
CALL PA2HC
LD A,L ; Print L
CALL PA2HC
POP AF ; Restore A
RET
; SYSLIB Module Name: SPA2HC
; Author: Richard Conn
; SYSLIB Version Number: 3.6
; Module Version Number: 1.2
;
; PA2HC --
; PRINT REG A AS 2 HEXADECIMAL CHARACTERS ON CON:
;
PA2HC: PUSH AF ; Save A
PUSH AF
RRCA ; Exchange nybbles
RRCA
RRCA
RRCA
CALL PAHC ; Print low-order nybble as hex
POP AF ; Get A
CALL PAHC ; Print low-order nybble as hex
POP AF ; Restore A
RET
PAHC: AND 0FH ; Mask for low nybble
CP 10 ; Letter or digit?
JP C,PADIG ; Digit IF carry
ADD A,'A'-10 ; Convert to 'A'-'F'
JP ECHO ; Print
PADIG: ADD A,'0' ; Convert to '0'-'9'
JP ECHO ; Print
; Data section
; Backup INDEX.PBS record
BIDATE: DB 0,0,0 ; Current date
BIMRNM: DB 0,0 ; Next message record
BIMNXT: DB 0,0 ; Next message number
BIMNDX: DB 0,0 ; # records in message index
BICALL: DB 0,0 ; # callers to system
BIUSER: DB 0,0 ; # users on system
BIUSRC: DB 0,0 ; # records in users file (reaches USRS max)
BSPARE: DB 0 ; Spare byte for future
BHRDLOG:db 0 ; Hard-copy log switch
BMUSRD: DB 0,0,0 ; Last date user file maintained
BMUSRT: DB 0,0,0 ; Last time user file maintained
BMMSGD: DB 0,0,0 ; Last date messages maintained
BMMSGT: DB 0,0,0 ; Last time messages maintained
BSYACU: DB 0,0 ; Total daily minutes
BSYDCC: DB 0 ; Total daily calls
BSYCRP: DB 0 ; Current usage (%)
BSYPVP: DB 0 ; Previous usage (%)
BSYDAY: DB 0
BIXTRA: DS syslen-(bsyday+1-bidate); Extra storage for expansion
; MSGINDEX.PBS record
MTO: DS 30 ; Message TO:
MNUM: DS 2 ; Message number
MDAT: DS 3 ; Date message left
MBLK: DS 1 ; Message block count
MSTR: DS 2 ; Message starting block number
MREC: DS 2 ; Actual index record number
MSUB: DS 26 ; Message SUBJ:
MFROM: DS 30 ; Message FROM:
MPUB: DS 1 ; Public/Private switch (00=public)
MFNUM: DS 1 ; Message folder number
MREADF: DS 1 ; Read/Deleted flag (FF=deleted)
MRETENF:DS 1 ; Message retention
MTIME: DS 3 ; Time message was left
MFLNKF: DS 2 ; Forward link
MRLNKF: DS 2 ; Reverse link
MREPLYf:DS 2 ; Reply to (unecessary)
DRV: DS 1 ; Drive ID storage
USR: DS 1 ; User ID storage
MSGREC: DS 2 ; Message record number storage
OLDMSG: DS 2 ; Temporary message number storage
TMPUSR: DB 0 ; Temproary user number storage
OLDDRV: DB 0 ; Original drive
OLDUSR: DB 0 ; Original user
MFLG: DB 0 ; Menu Flag
CCPSTK: DW 0 ; Original stack
DS 64
STACK EQU $ ; Program stack
END