You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

233 lines
6.9 KiB

;
TITLE ZFORS.Z80 - 09/29/88 - ZMD Sysop Description Utility
; Copyrighted (c) 1987, 1988
; Robert W. Kramer III
PAGE
;- -;
; Update History ;
; ;
; Date Release Comments ;
; -------- ------- ---------------------------------------------- ;
; ;
; 09/29/88 v1.50 - Added trivial routines to display the user's ;
; prompt selections to screen. ;
; 03/13/88 v1.49 - No changes made to this file ;
; 03/13/88 v1.48 - Had a small problem with TPA fix which has been ;
; corrected. CHKTPA was calculating the total ;
; number of bytes available for DBUF, but wasn't ;
; clearing register L (forcing an even amount of ;
; sectors before initializing OUTSIZ buffer limit ;
; comparison word). This may have introduced ;
; minimal garbage to your FOR file if your FOR ;
; file is large enough to fill available TPA with ;
; ZMD, ZFORS or to the log file if running ZMDEL. ;
; - Rewrote OUTCHR routine in ZMDSUBS. ;
; - Redefined buffer table at end of programs. STACK;
; and filename buffers now EQUated with offsets ;
; from the last switch/toggle in program instead ;
; of with DS directive. ;
; - Some systems which do NOT have an interrupt ;
; driven keyboard may have noticed problems when ;
; an invalid key was entered in the ZNEWP, ZFORP ;
; and ZMDEL programs. In ZNEWP and ZFORP, if a ;
; CR was entered to pause the output, output was ;
; limited to one line at a time per key pressed. ;
; If an invalid key was hit, output would have ;
; remained in a paused state until one of the ;
; abort keys were pressed. This was difficult to ;
; find since my keyboard is interrupt driven and ;
; I could not duplicate the problem on my own ;
; system. ;
; 02/25/88 v1.47 - No change(s) made to this file
; 01/27/88 v1.46 - Set MODE to 255 so ZMDSUBS knows we might be ;
; running in local mode and not to worry if BYE ;
; is running or not when CHKENV checks to see ;
; which clock features are valid. ;
; 01/17/88 v1.45 - First public release ;
; 12/06/87 v1.02 - Fixed numerous trivial bugs. ;
;- -;
;-------------------------------------------------------------------------;
; EXTERNAL Declarations: |
;-------------------------------------------------------------------------;
EXTRN CLRLIN,DECOUT,DSCFLG,ERXIT,EXIT,FILCNT,GETDAT
EXTRN GETDSC,GETFN,GETKIND,ILPRTB,INPUT,NEWNAM,OLDDRV
EXTRN OLDUSR,OPNFOR,PRINTV,RECAR1,SHOCAT,STACK,TYPE
EXTRN UCASE,NOFOR,MODE
;
;-------------------------------------------------------------------------;
; Program Starts Here |
;-------------------------------------------------------------------------;
.Z80
ASEG
ORG 100H ; Program starts
JP BEGIN ; Jump around configuration table
INCLUDE ZMDHDR.Z80 ; Include the ZMD header overlay
.REQUEST ZMDSUBS ; Include the ZMD subroutines
;
;
; Save CP/M stack, initialize new one for this program
;
BEGIN: LD (STACK),SP ; Save return address to CCP
LD SP,STACK ; Initialize new one for this program
;
; Save current drive/user
;
LD A,255 ; Get current user
CALL RECAR1
LD (OLDUSR),A ; Store it
LD C,CURDRV ; Get current drive
CALL BDOS
LD (OLDDRV),A ; Store it
;
; Disable sleepy caller timeout and set description routines for up to
; 50 new entries
;
XOR A
LD (DESWAIT),A ; Disable sleepy caller timer
LD A,50
LD (FILCNT),A ; Allow up to 50 descriptions
LD A,255
LD (MODE),A ; Tell ZMDSUBS we're a sysop utility
;
; Display program name and version
;
BEGIN1: LD HL,SYSFOR ; Point to name of this program
CALL PRINTV ; Display it
LD A,(DESCRIB) ; Regular FOR descriptions?
OR A
JP NZ,MAKDESC ; Yes, skip next
LD A,(MSGDESC) ; BBS message base descriptions?
OR A
JP Z,NOFOR ; No, descriptions disabled
LD A,1
LD (DSCFLG),A ; Set flag to show message base descriptions
LD A,(PRUSR) ; Get the private user
LD (USER),A ; FOR destination
LD A,(PRDRV) ; Get the private drive
LD (DRIVE),A ; FOR destination
JP MAKFN ; Skip date stuff
;
; Get the date of the upload if suppose to.
;
MAKDESC:LD A,(DSTAMP) ; Datestamping description header?
OR A
JP Z,MAKFN ; No, go get filename
CALL ILPRTB
DB 'Date of upload: ',0
CALL GETDAT ; Get the date
;
; Get the filename (no spaces with '.' filename seperator)
;
MAKFN: CALL ILPRTB
DB CR,LF
DB ' Name of file: ',0
CALL GETFN ; Get filename
CALL CLRLIN ; Clear current line
LD A,B ; Get filename bytes remaining count in A
CP 11 ; Anything entered?
JP NZ,GOTNM1 ; Yes, skip this
;
; No filename was entered, check for save or abort, else continue
;
CALL ILPRTB
DB 'Save, Continue, Abort: ',0
CALL INPUT ; Get character
CALL UCASE ; Convert to uppercase
CP 'S' ; Save changes?
JP Z,OPNFOR ; Yes, write current buffer to FOR file
CP 'A' ; Abort program?
JP NZ,BEGIN1 ; No, get next character
CALL ILPRTB
DB CR
DB 'Abort with NO changes? ',0
CALL INPUT
CALL UCASE
CP 'Y'
JP NZ,BEGIN1
JP EXIT ; Then abort
;
; Display file descriptor/upload areas and get choice
;
GOTNM1: CALL GETKIND ; Get file category for description header
;
; Show the drive/user
;
LD A,(MSGDESC) ; Using BBS message base for descriptions?
OR A
JP NZ,SHOWDU ; Yes, show drive/user of uploaded file
LD A,(INCLDU) ; Include du in description header?
OR A
JP Z,SHOWFN ; No, then skip this stuff
SHOWDU: LD A,(DRV) ; Get upload drive
CALL TYPE ; Output to console
LD A,(USR) ; Get upload user area
LD H,0
LD L,A ; In A
CALL DECOUT ; Decimal output routine
LD A,':' ; Output colon
CALL TYPE
;
; Show the filename
;
SHOWFN: LD HL,NEWNAM
SHONM1: LD A,(HL)
CP LF
JP Z,SHOWCT
CALL TYPE
INC HL
JP SHONM1
;
; Show the file descriptor/upload area
;
SHOWCT: LD A,(ASKIND) ; Supposed to be showing file descriptor?
OR A
JP Z,MKENTRY ; No, get the description
CALL ILPRTB
DB ' - ',0
CALL SHOCAT ; If so, show it
;
; Get up to 7 lines for description
;
MKENTRY:CALL GETDSC ; Get up to 7 lines for description
JP NZ,BEGIN1 ; If none entered, or incorrect, skip next
LD IY,FILCNT ; Else point to maximum entries left
DEC (IY) ; One less to go
JP BEGIN1 ; Get next one
;
; These next are dummy routines to satisfy ZMDSUBS external requests.
; They do nothing, but leave them alone.
;
DONE:: JP EXIT ; Exit routine can take care of us
TIME:: RET
END