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
/
MEX
/
MXO-SX10.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-06-30
|
29KB
|
823 lines
;
;
;
;
REV EQU 10 ;overlay revision level
;
; MEX STARPLEX OVERLAY VERSION 1.0: written 07/16/84 by Bill Meahan
; 1951 S. Globe
; Westland, MI 48185
; I can also be contacted through MICROLINK-820 at:
; (313)487-0070 (24 hrs 300/1200 baud)
;
;
; This is a MEX overlay file for the National Semiconductor STARPLEX.
; Derived from the PMMI overlay by Ronald G. Fowler.
;
; This overlay should also work (except for the serial printer support) with
; systems based on the following single-board computers:
; Intel National
; SBC80/20 BLC80/204
; SBC80/20-4 BLC80/24
; SBC80/24 BLC80/316
; SBC80/30
;
; Intel development systems may have different addresses for the ports, but
; use the same arrangement of 8253 baud rate generators and 8251 USART's so
; this overlay should be EASILY adaptible to those systems as well.
;
;------------------------------------------------------------
;
; Misc equates
;
NO EQU 0
YES EQU 0FFH
TPA EQU 100H
CR EQU 13
LF EQU 10
TAB EQU 9
XON EQU 011H
XOFF EQU 013H
;
; STARPLEX port definitions (serial port 1)
;
PORT EQU 0ECH ;STARPLEX base port (data or status)
MODCT1 EQU PORT+1 ;modem control port
MODDAT EQU PORT ;modem data port
MODCT2 EQU PORT+1 ;modem status port
BAUDRP EQU 0DDH ;modem baud rate port
BAUDMD EQU 0DFH ;modem baud rate mode control port
;
; STARPLEX bit definitions
;
MDRCVB EQU 02H ;modem receive bit (DAV)
MDRCVR EQU 02H ;modem receive ready
MDSNDB EQU 01H ;modem send bit
MDSNDR EQU 01H ;modem send ready bit
;
;
CTSMSK EQU 4 ;mask for CTS bit
BRKMSK EQU 8 ;mask to set break
PARMSK EQU 0CFH ;mask to remove parity bits
OPARIT EQU 10H ;odd-parity bits
EPARIT EQU 30H ;even-parity bits
NPARIT EQU 00H ;no-parity bits
PARTST EQU 10H ;mask to test parity enabled bit
EVNTST EQU 20H ;mask to test even parity bit
MODEMK EQU 06EH ;mode mask
MODEGO EQU 027H ;default control command
RSTCTL EQU 040H ;reset USART command
BITS7 EQU 08H ;mask for 7 bit characters
BITS8 EQU 0CH ;mask for 8 bit characters
BITS8T EQU 04H ;mask to test for 8 bit characters
STBIT1 EQU 040H ;mask to set 1 stop bit
STBI15 EQU 080H ;mask to set 1.5 stop bits
STBIT2 EQU 0C0H ;mask to set 2 stop bits
;
;
; MEX service processor stuff ... MEX supports an overlay service
; processor, located at 0D00H (and maintained at this address from
; version to version). If your overlay needs to call BDOS for any
; reason, it should call MEX instead; function calls below about
; 240 are simply passed on to the BDOS (console and list I/O calls
; are specially handled to allow modem port queueing, which is why
; you should call MEX instead of BDOS). MEX uses function calls
; above about 244 for special overlay services (described below).
;
; Some sophisticated overlays may need to do file I/O; if so, use
; the PARSFN MEX call with a pointer to the FCB in DE to parse out
; the name. This FCB should support a spare byte immediately pre-
; ceeding the actual FCB (to contain user # information). If you've
; used MEX-10 for input instead of BDOS-10 (or you're parsing part
; of a SET command line that's already been input), then MEX will
; take care of DU specs, and set up the FCB accordingly. There-
; after all file I/O calls done through the MEX service processor
; will handle drive and user with no further effort necessary on
; the part of the programmer.
;
MEX EQU 0D00H ;address of the service processor
INMDM EQU 255 ;get char from port to A, CY=no more in 100 ms
TIMER EQU 254 ;delay 100ms * reg B
TMDINP EQU 253 ;B=# secs to wait for char, cy=no char
CHEKCC EQU 252 ;check for ^C from KBD, Z=present
SNDRDY EQU 251 ;test for modem-send ready
RCVRDY EQU 250 ;test for modem-receive ready
SNDCHR EQU 249 ;send a character to the modem (after sndrdy)
RCVCHR EQU 248 ;recv a char from modem (after rcvrdy)
LOOKUP EQU 247 ;table search: see CMDTBL comments for info
PARSFN EQU 246 ;parse filename from input stream
BDPARS EQU 245 ;parse baud-rate from input stream
SBLANK EQU 244 ;scan input stream to next non-blank
EVALA EQU 243 ;evaluate numeric from input stream
LKAHED EQU 242 ;get nxt char w/o removing from input
GNC EQU 241 ;get char from input, cy=1 if none
ILP EQU 240 ;inline print
DECOUT EQU 239 ;decimal output
PRBAUD EQU 238 ;print baud rate
;
;
CONOUT EQU 2 ;simulated BDOS function 2: console char out
PRINT EQU 9 ;simulated BDOS function 9: print string
INBUF EQU 10 ;input buffer, same structure as BDOS 10
;
ORG TPA ;we begin
;
;
DS 3 ;MEX has a JMP START here
;
; The following variables are located at the beginning of the program
; to facilitate modification without the need of re-assembly. They will
; be moved in MEX 2.0.
;
STRPLX: DB YES ;yes=STARPLEX modem \ / These 2 locations are not
SMODEM: DB NO ;yes=Smartmodem / \ referenced by MEX
DB 0 ;spare
CLOCK: DB 38 ;clock speed x .1, up to 25.5 mhz.
MSPEED: DB 1 ;sets display time for sending a file
;0=110 1=300 2=450 3=600 4=710
;5=1200 6=2400 7=4800 8=9600 9=19200
BYTDLY: DB 5 ;default time to send character in
;terminal mode file transfer (0-9)
;0=0 delay, 1=10 ms, 5=50 ms, 9=90 ms
CRDLY: DB 5 ;end-of-line delay after CRLF in terminal
;mode file transfer for slow BBS systems
;0=0 delay, 1=100 ms, 5=500 ms, 9=900 ms
COLUMS: DB 5 ;number of directory columns
SETFL: DB YES ;yes=user-defined SET command
SCRTST: DB YES ;yes=if home cursor and clear screen
;routine at CLRSCRN
DB 0 ;was once ACKNAK, now spare
BAKFLG: DB NO ;yes=make .BAK file
CRCDFL: DB YES ;yes=default to CRC checking
;no=default to Checksum checking
TOGCRC: DB YES ;yes=allow toggling of Checksum to CRC
CVTBS: DB NO ;yes=convert backspace to rub
TOGLBK: DB YES ;yes=allow toggling of bksp to rub
ADDLF: DB NO ;no=no LF after CR to send file in
;terminal mode (added by remote echo)
TOGLF: DB YES ;yes=allow toggling of LF after CR
TRNLOG: DB NO ;yes=allow transmission of logon
;write logon sequence at location LOGON
SAVCCP: DB YES ;yes=do not overwrite CCP
LOCNXT: DB NO ;yes=local cmd if EXTCHR precedes
;no=not local cmd if EXTCHR precedes
TOGLOC: DB YES ;yes=allow toggling of LOCNXTCHR
LSTTST: DB YES ;yes=allow toggling of printer on/off
;in terminal mode. Set to no if using
;the printer port for the modem
XOFTST: DB NO ;yes=allow testing of XOFF from remote
;while sending a file in terminal mode
XONWT: DB NO ;yes=wait for XON after sending CR while
;transmitting a file in terminal mode
TOGXOF: DB YES ;yes=allow toggling of XOFF testing
IGNCTL: DB NO ;yes=do not send control characters
;above CTL-M to CRT in terminal mode
;no=send any incoming CTL-char to CRT
EXTRA1: DB 0 ;for future expansion
EXTRA2: DB 0 ;for future expansion
BRKCHR: DB '@'-40H ;^@ = Send a 300 ms. break tone
NOCONN: DB 'N'-40H ;^N = Disconnect from phone line
LOGCHR: DB 'L'-40H ;^L = Send logon
LSTCHR: DB 'P'-40H ;^P = Toggle printer
UNSVCH: DB 'R'-40H ;^R = Close input text buffer
TRNCHR: DB 'T'-40H ;^T = Transmit file to remote
SAVCHR: DB 'Y'-40H ;^Y = Open input text buffer
EXTCHR: DB '^'-40H ;^^ = Send next character
;
; Equates used only by STARPLEX routines grouped together here.
;
DB 0 ;not used
DB 0 ;not used
;
; Low-level modem I/O routines: this will be replaced with
; a jump table in MEX 2.0 (you can insert jumps here to longer
; routines if you'd like ... I'd recommend NOT putting part of
; a routine in this area, then jumping to the rest of the routine
; in the non-fixed area; that will complicate the 2.0 conversion)
;
INCTL1: IN MODCT1 ;in modem control port
RET
DB 0,0,0,0,0,0,0 ;spares if needed for non-STARPLEX
;
OTDATA: OUT MODDAT ;out modem data port
RET
DB 0,0,0,0,0,0,0 ;spares if needed for non=STARPLEX
;
INPORT: IN MODDAT ;in modem data port
RET
DB 0,0,0,0,0,0,0 ;spares if needed for non-STARPLEX
;
; Bit-test routines. These will be merged with the above
; routines in MEX 2.0 to provide a more reasonable format
;
MASKR: ANI MDRCVB ! RET ;bit to test for receive ready
TESTR: CPI MDRCVR ! RET ;value of receive bit when ready
MASKS: ANI MDSNDB ! RET ;bit to test for send ready
TESTS: CPI MDSNDR ! RET ;value of send bit when ready
;
;
; Unused area: was once used for special STARPLEX functions,
; Now used only to retain compatibility with MDM overlays.
; You may use this area for any miscellaneous storage you'd
; like but the length of the area *must* be 12 bytes.
;
DS 12
;
; Special modem function jump table:
;
LOGON: DS 2 ;needed for MDM compat, not ref'd by MEX
DIALV: DS 3 ;dial digit in A (see info at PDIAL)
DISCV: DS 3 ;disconnect the modem
GOODBV: JMP DUMMY ;called before exit to CP/M
INMODV: JMP NITMOD ;initialization. Called at cold-start
NEWBDV: JMP PBAUD ;set baud rate
NOPARV: JMP DUMMY ;set modem for no-parity
PARITV: JMP DUMMY ;set modem parity
SETUPV: JMP SETCMD ;SET cmd: jump to a RET if you don't write SET
SPMENV: DS 3 ;not used with MEX
VERSNV: JMP SYSVER ;Overlay's voice in the sign-on message
BREAKV: JMP PBREAK ;send a break
;
; The following jump vector provides the overlay with access to special
; routines in the main program (retained and supported in the main pro-
; gram for MDM overlay compatibility). These should not be modified by
; the overlay.
;
; Note that for MEX 2.0 compatibility, you should not try to use these
; routines, since this table will go away with MEX 2.0 (use the MEX
; service call processor instead).
;
ILPRTV: DS 3 ;replace with MEX function 9
INBUFV: DS 3 ;replace with MEX function 10
ILCMPV: DS 3 ;replace with table lookup funct. 247
INMDMV: DS 3 ;replace with MEX function 255
NXSCRV: DS 3 ;not supported by MEX (returns w/no action)
TIMERV: DS 3 ;replace with MEX function 254
;
;
; Clear/screen and clear/end-of-screen. Each routine must use the
; full 9 bytes alloted (may be padded with nulls).
;
; These routines (and other screen routines that MEX 2.0 will sup-
; port) will be accessed through a jump table in 2.0, and will be
; located in an area that won't tie the screen functions to the
; modem overlay (as the MDM format does).
;
CLREOS: LXI D,EOSMSG
MVI C,PRINT
CALL MEX
RET
;
;
CLS: LXI D,CLSMSG ;null unless patched
MVI C,PRINT
CALL MEX
RET
;
;------------------------------------------------------------
;
; *** END OF FIXED FORMAT AREA ***
;
;------------------------------------------------------------
;
; Modem initialization.
;
NITMOD:
MVI A,1 ;default to 300 baud on start-up
CALL PBAUD
LDA MODMOD ;default mode command in A
ALTINI: ;alternate entry point for mode change routines
PUSH PSW ;save mode command on stack
XRA A ;force 8251 USART to look for reset command
OUT MODCT2
OUT MODCT2
OUT MODCT2
MVI A,RSTCTL ;reset USART
OUT MODCT2
POP PSW ;retreive mode command
STA MODMOD ;save copy for future use
OUT MODCT2 ;set USART mode
MVI A,MODEGO ;enable transmitter and receiver
OUT MODCT2
RET
;
; STARPLEX send-break routine
;
PBREAK: LDA MODCTB ;get the last modem control byte
ORI BRKMSK ;set the transmit break bit low
OUT MODCT2 ;send it to the modem
LXI B,02FEH ;B=2, C=254
CALL MEX ;send a space tone for 200 ms.
LDA MODCTB ;get the last modem control byte
OUT MODCT2 ;restore to normal
;
; exit routine
;
DUMMY: RET ;we don't need one
;
;
;
; Set baud-rate code in A
;
PBAUD: PUSH H ;don't alter anybody
PUSH D
PUSH B
STA MSPEED
ADD A ;double value to get word address
MOV E,A ;code to DE
MVI D,0
LXI H,BAUDTB ;offset into table
DAD D
MOV C,M ;fetch code
INX H
MOV B,M
MVI A,076H
OUT BAUDMD ;control counter
MOV A,C
OUT BAUDRP
MOV A,B
OUT BAUDRP ;good rate, set it
PBEXIT: POP B ;all done
POP D
POP H
RET
;
; table of baud rate divisors for supported rates
;
BAUDTB: DW 1048,384,256,192,162 ;110,300,450,610,710
DW 96,48,24,12,6 ;1200,2400,4800,9600,19200
;
; Sign-on message
;
SYSVER: LXI D,SOMESG
MVI C,PRINT
CALL MEX
RET
;
SOMESG: DB 'STARPLEX overlay By Bill Meahan V. '
DB REV/10+'0'
DB '.'
DB REV MOD 10+'0'
DB ': $'
;
;
;
;
; Newline on console
;
CRLF: MVI A,CR
CALL TYPE
MVI A,LF ;fall into TYPE
;
; type char in A on console
;
TYPE: PUSH H ;save 'em
PUSH D
PUSH B
MOV E,A ;align output character
MVI C,CONOUT ;print via MEX
CALL MEX
POP B
POP D
POP H
RET
;
; strings to clear-to-end-of-screen, and clear-screen
;
EOSMSG: DB 09BH,'$' ;clear to end-of-screen
CLSMSG: DB 09AH,'$' ;clear whole screen
;
; Data area
;
ERRFLG: DB 0 ;connection error code
MODMOD DB MODEMK ;uart-control byte image
BAUDSV: DB 01 ;current baud rate (dflt 300)
MODCTB: DB MODEGO ;modem control byte
;
;------------------------------------------------------------
;
; The remainder of this overlay implements a very versatile
; SET command --
;
;
; Control is passed here after MEX parses a SET command.
;
SETCMD: MVI C,SBLANK ;any arguments?
CALL MEX
JC SETSHO ;if not, go print out values
LXI D,CMDTBL ;parse command
CALL TSRCH ;from table
PUSH H ;any address on stack
RNC ;if we have one, execute it
POP H ;nope, fix stack
SETERR: LXI D,SETEMS ;print error
MVI C,PRINT
CALL MEX
RET
;
SETEMS: DB CR,LF,'SET command error',CR,LF,'$'
;
; SET command table ... note that tables are constructed of command-
; name (terminated by high bit=1) followed by word-data-value returned
; in HL by MEX service processor LOOKUP. Table must be terminated by
; a binary zero.
;
; Note that LOOKUP attempts to find the next item in the input stream
; in the table passed to it in HL ... if found, the table data item is
; returned in HL; if not found, LOOKUP returns carry set.
;
CMDTBL: DB '?'+80H ;"set ?"
DW STHELP
DB 'BAU','D'+80H ;"set baud"
DW STBAUD
DB 'PARIT','Y'+80H ;"set parity"
DW SETPAR
DB 'BIT','S'+80H ;"set bits"
DW SETBIT
DB 'STO','P'+80H ;"set stop"
DW SETSTO
;
DB 0 ;<<=== table terminator
;
; SET <no-args>: print current statistics
;
SETSHO:
LXI H,SHOTBL ;get table of SHOW subroutines
SETSLP: MOV E,M ;get table address
INX H
MOV D,M
INX H
MOV A,D ;end of table?
ORA E
RZ ;exit if so
PUSH H ;save table pointer
XCHG ;adrs to HL
CALL GOHL ;do it
CALL CRLF ;print newline
MVI C,CHEKCC ;check for console abort
CALL MEX
POP H ;it's done
JNZ SETSLP ;continue if no abort
RET
;
GOHL: PCHL
;
; table of SHOW subroutines
;
SHOTBL: DW BDSHOW
DW PARSHO
DW BITSHO
DW STOSHO
DW 0 ;<<== table terminator
;
; SET ? processor
;
STHELP: LXI D,HLPMSG
MVI C,PRINT
CALL MEX
RET
;
; The help message
;
HLPMSG: DB CR,LF,'SET command, STARPLEX version:',CR,LF,LF
DB CR,LF,'SET BAUD 150 <or> 300 <or> 600 <or> 1200 <or> 2400'
DB CR,LF,' <or> 4800 <or> 9600'
DB CR,LF,'SET PARITY ODD <or> EVEN <or> OFF'
DB CR,LF,'SET BITS 7 <or> 8'
DB CR,LF,'SET STOP 1 <or> 1.5 <or> 2'
DB CR,LF,'$'
;
; SET BAUD processor
;
STBAUD: MVI C,BDPARS ;function code
CALL MEX ;let MEX look up code
JC SETERR ;invalid code
CALL PBAUD ;no, try to set it
JC SETERR ;not-supported code
BDSHOW: CALL ILPRT ;display baud
DB 'Baud rate:',TAB,' ',0
LDA MSPEED
MVI C,PRBAUD ;use MEX routine
CALL MEX
RET
;
; SET PARITY processor
;
SETPAR:
LXI D,PARTBL ;point to argument table
CALL TSRCH ;look for match with allowed arguments
JC SETERR ;process error if found
LDA MODMOD ;get current mode byte
ANI PARMSK ;mask away current parity bits
ORA L ;add new parity bits
CALL ALTINI
PARSHO:
CALL ILPRT ;show current status
DB 'Parity:',TAB,' ',0
LDA MODMOD ;get current mode word
ANI PARTST ;test for parity enabled
JNZ PAR ;skip if it is
CALL ILPRT
DB 'Off',0
RET
PAR:
LDA MODMOD
ANI EVNTST ;test mode byte for even parity
JNZ PAREVN ;skip if it is
CALL ILPRT
DB 'Odd',0
RET
PAREVN:
CALL ILPRT
DB 'Even',0
RET
;
;PARITY argument table
;
PARTBL: DB 'OD','D'+80H
DB OPARIT,0
DB 'EVE','N'+80H
DB EPARIT,0
DB 'OF','F'+80H
DB NPARIT,0
DB 0
;
;SET BITS processor
;
SETBIT:
LXI D,BITTBL ;point to argument table
CALL TSRCH ;look for match with allowed arguments
JC SETERR ;process error if found
LDA MODMOD ;get current mode command
ANI (NOT BITS8) AND 255 ;mask away current bits
ORA L ;set new bits
CALL ALTINI ;change mode
BITSHO:
CALL ILPRT ;show current status
DB 'Bits:',TAB,' ',0
LDA MODMOD ;get current mode word
ANI BITS8 ;test for number of bits
JZ SETERR
ANI BITS8T
JNZ B8 ;skip if it is
CALL ILPRT
DB '7',0
RET
B8:
CALL ILPRT
DB '8',0
RET
;
;BITS argument table
;
BITTBL: DB '8'+80H
DB BITS8,0
DB '7'+80H
DB BITS7,0
DB 0
;
;SET STOP processor
;
SETSTO:
LXI D,STPTBL ;point to argument table
CALL TSRCH ;look for match with allowed arguments
JC SETERR ;process error if found
LDA MODMOD ;get current mode command
ANI (NOT STBIT2) AND 255 ;mask away current bits
ORA L ;set new bits
CALL ALTINI ;change mode
STOSHO:
CALL ILPRT ;show current status
DB 'Stop Bits:',TAB,' ',0
LDA MODMOD ;get current mode word
ANI STBIT2 ;test for number of bits
JZ SETERR
RLC
RLC
ADD A ;form word table index
LXI H,STJTBL ;get address of jump table
ADD L ;point to address of proper routine
MOV L,A
MVI A,0
ADC H
MOV H,A
MOV A,M ;get address of proper routine
INX H
MOV H,M
MOV L,A
PCHL ;branch to proper routine
PRT1:
CALL ILPRT
DB '1',0
RET
PRT2:
CALL ILPRT
DB '2',0
RET
PRT15:
CALL ILPRT
DB '1.5',0
RET
;
STJTBL: ;jump table for stop bit show routines
DW SETERR
DW PRT1
DW PRT15
DW PRT2
;
;STOP argument table
;
STPTBL: DB '1'+80H
DB STBIT1,0
DB '1.','5'+80H
DB STBI15,0
DB '2'+80H
DB STBIT2,0
DB 0
;
; Compare next input-stream item in table @DE; CY=1
; if not found, else HL=matched data item
;
TSRCH: MVI C,LOOKUP ;get function code
JMP MEX ;pass to MEX processor
;
; Print in-line message ... blows away C register
;
ILPRT: MVI C,ILP ;get function code
JMP MEX ;go do it
;------------------------------------------------------------------------------
;
;The following routines are provided to support a printer
;on the second serial port of the STARPLEX II which is not
;supported (except for USART initialization at 1200 baud)
;by the STARPLEX CP/M BIOS. The routine here also implements
;XON-XOFF support which is provided by many printers.
;(e.g. LA100, TI820, etc.)
;
;At my installation, there is no need to change baud rates, parity, etc
;but if you need to do so, just duplicate the appropriate routines
;from the SET command. I'd suggest then using SET PRINTER BAUD or equal
;to go to the proper routines. The baud rate counter for port 2 is
;counter 2 of the 8253 rather than counter 1. (Code 0B6H instead of 076H
;in PBAUD). Port addresses shown below.
;
;You do not need anything from here to the END statement UNLESS you DO want
;to support a serial printer on port 2 of a STARPLEX II. For systems other
;than STARPLEX II, (i.e. one built upon one of the SBC or BLC series boards)
;delete this stuff!
;
PTRSTP EQU 0EFH ;USART status port address
PTRDTP EQU 0EEH ; " data " "
PTROKP EQU 001H ;mask for transmit busy status bit
PTRINC EQU 002H ;mask for receiver ready status bit
;
OKPRNT: DB 0FFH ;OK to PRiNT flag. OK=0FFH Hold=0
;
PTRTST: ;printer status routine
PUSH B ;save b-c registers for MEX
IN PTRSTP ;get USART status
MOV B,A ;save a copy in b register
ANI PTRINC ;character in?
JZ TSTPST ;just skip and test status if not
IN PTRDTP ;get character
CPI XON ;XON character
JNZ ISXOFF ;skip if not
MVI A,0FFH ;set OK flag
STA OKPRNT
JMP PSTTST ;skip to status test
ISXOFF: CPI XOFF ;XOFF character?
JNZ TSTPST ;skip to status test if not (ignore)
XRA A ;reset flag
STA OKPRNT
JMP PSEXIT ;then exit- a is already zero indicating hold
TSTPST:
LDA OKPRNT ;get hold flag
PSTTST:
ORA A ;test for hold
JZ PSEXIT ;exit if OK flag false (0)
MOV A,B ;test actual USART transmitter status
ANI PTROKP
JZ PSEXIT ;exit if not ready
MVI A,0FFH ;MEX wants to see an FF if ok to print
PSEXIT: POP B ;restore saved registers
RET ;return to MEX
;
PTROUT: OUT PTRDTP ;shove character out to printer
RET
;
;
; Patches to MEX for STARPLEX system. (primarily adds vectors for serial
; printer support)
;
ORG 0D00H ;location of patch variables
;
;
;
; The following line defines the MEX service call entry point, and
; is not meant to be changed by the user
;
DS 3 ;MEX service call processor
DS 3 ;reserved
DS 1 ;reserved
;
; The following line contains the initial free-memory pointer for
; MEX. Sophisticated modem overlays requiring additional space may change
; this pointer (ie, move it higher), and thus "protect" an area of RAM.
;
DS 2 ;first free memory pointer
;
; Following are the lowest-level vectors for console and list I/O used
; by MEX. These normally point to routines that save the registers and
; vector to the appropriate BIOS routines. Complex applications may
; need to intercept (or even replace) these routines. If you do this,
; be sure to preserve DE, HL and BC.
;
DS 2 ;console status vector
DS 2 ;console input vector
DS 2 ;console output vector
DW PTROUT ;list output vector (points to local routine)
DW PTRTST ;list status vector (points to local routine)
;
; The following line defines the location of the default MEX prompt.
; If you'd like to provide your own initial prompt, add a DW statement
; pointing to a prompt buffer structured as follows:
;
; DB <max size of buffer>
; DB <length of actual prompt>
; DB <prompt string>
;
; <maxsize> and <length> may be equal (especially if you disable the
; ID command by setting CHGPMT, below to 0); the ID command will, if
; left enabled, be limited to the <max size> value.
;
DS 2 ;prompt location
DS 1 ;reserved
DB 24 ;for TYPE command: # lines/screen
DB 1 ;for TYPE cmd: 1=pause 0=no pause
DB ';' ;multiple command-line separator
;
; following five for SENDOUT command
;
DB 4 ;# seconds waiting for a sendout echo
DB 8 ;# seconds waiting for initial reply
DB '>' ;sendout trigger char from remote
DB 'U'-64 ;sendout char to cancel line to remote
DB 6 ;sendout # retries
;
;
DB 0 ;hex/decimal mode
DB 01BH ;terminal mode escape char (01BH = ESC)
DB 0 ;set to 1 to disable bell
;
; Buffer variables. See BUFFERS.DOC for setup information
;
DB 2 ;default=2k
DB 255 ;"big" capture buffer
DB 16 ;16K transfer buffer
DB 1 ;1k for 85 batch files
DB 40 ;maximum length of PREFIX string
DB 40 ;maximum length of SUFFIX string
;
; Misc. stuff
;
DB 0 ;non-zero for CDOS
DB 0 ;non-zero sets "wait-for-echo"
DW 400 ;size of keystring area, in bytes
DB 1 ;non-zero allows CIS file transfers
DB 1 ;non zero allows STAT CIS ON or OFF
DB 1 ;non-zero allows ID (prompt chg) command
DB 1 ;non-zero prints ID msg in err msgs
;
; by setting the following DB to 0, you can disable the HELP
; command, freeing up space used by the help file index.
;
DB 1 ;non-zero allows HELP command
DB 0 ;user \/ alternate area for READ,LOAD,INI.MEX
DB 0 ;drive/\ & HELP.MEX (if SEARCH <>0)
DB 0 ;debugging in term-mode if non-zero
DB 1 ;non-0 excludes $SYS from batchsend, dir
DB 0 ;non-zero runs INI.MEX (if present) at startup
DB 1 ;receiver wait: # seconds [Plouff patch]
DW 150 ;size of the modem-port queue
DB 30 ;phone library size (# entries)
DB 0FFH ;0=silence multi-line & READ cmd echo
DB 255 ;alert-bell count on CALL complete
DB 0 ;non-zero: unknown commands goto READ processor
DB 0 ;non-zero: splits phonelib printout, shows baud
DB 0 ;search mode 0,1,2,3
;
; Following is the GLOBAL secondary options table. To
; set an option to global, change its ASCII character to a 0.
;
DB 'BDLQRSTVX'
;
;
;
;------------------------------------------------------------
;
; End of STARPLEX MEX modem overlay and patches
;
;------------------------------------------------------------
;
END