; MXO-MD30.ASM - Morrow Designs Micro Decision 3 (MD3) Overlay File 
; version 3.0 for MEX 1.14
; 1/17/87 by Carson Wilson. This file is for MD3's with Rev. 2 boards only. 
;
; You may edit this file to change various initial variables. Assemble
; with ASM or MAC, then use MLOAD to patch the changes into MEX:
;
;	ASM mxo-md30.aaz			;assemble the edited file
;	MLOAD newmex.com=mex114.obj,mxo-md30	;patch mex
;
; You will want to look this file over carefully. There are a number of
; options that you can use to configure the program to suit your taste.
; This file adapts the Morrow Micro Decision computer to the MEX pro-
; gram. While this computer has two serial ports, one is used for the
; CRT/keyboard and the other for the printer. Connect the modem in place of 
; the printer.
;
; The "SET" command may now be used to change the baudrate, parity, data 
; bits, and stopbits. For help, type "SET ?" from the MEX prompt. For current
; settings, type "SET". 
; Defaults are 1200 baud, 8 data bits, no parity, 1 stopbit.
; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
; 01/17/87 - Completely revamped file, made it MD3 specific. Removed extra
;	     code, added ability to set stop bits, parity, and data bits,
;            changed the default baud rate to 1200 bps, changed some options,
;	     added latest options to end of file, altered the initializing
;	     routine to run with the MD3, changed clear screen and clear to 
;	     end of screen to work with MT-70 terminal. Renamed file to 
;	     MXO-MD30.ASM for M(icro) D(ecision) version 3.0 - Carson Wilson
;
; 05/15/84 - converted from mdm7xx to mex10     - sandy berger
; 03/25/84 - revised for use with mdm730        - sandy berger
; 11/11/83 - renamed to m7md-1.asm, no changes	- irv hoff
; 07/21/83 - renamed for use with mdm712	- irv hoff
; 07/01/83 - revised for use with mdm711	- irv hoff
; 06/22/83 - revised for use with mdm710	- irv hoff
; 06/22/83 - altered mdm708dp for morrow
;	     micro decision computers using
;	     an external modem			- irv hoff
; 05/28/84 - altered for model md-3a            - alan bierbaum
;
; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
;
; Following line must be BIOS address of CONOUT.
;
conout	equ	0e4cbh	; This value now set for a 60k ZCPR3 installation 
			; for the MD3. If you use the standard Morrow 64k 
			; CP/M operating system with BIOS rev 3.1, you 
			; should change it to 0f4cbh.
;
bell	equ	07h	; bell
cr	equ	0dh	; carriage return
esc	equ	1bh	; escape
lf	equ	0ah	; linefeed
tab	equ	9	; tab
;
yes	equ	0ffh
no	equ	0
;
;------- MD3-Specific Port Addresses ------
;
s2data	equ	0feh	; Morrow MD3 serial printer/modem port
s2stat	equ	0ffh	; modem status port
modrcvb	equ	02h	; modem receive bit
modsndb	equ	01h	; modem send bit
ctcsel	equ	0f3h	; channel select port for CTC
ch2div	equ	0f2h	; port for setting baud rate of 2nd serial port
;
;------- MEX Built-in Routines --------
;
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	; set cmd table search: see cmdtbl comments
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
prntbl	equ	237	; print table
prid	equ	236	; print [MEX] id
onoff	equ	235	; parse on/off fm input strm a=0 or 1 (c=err)
print	equ	9	; simulated bdos function 9: print string
inbuf	equ	10	; input buffer, same structure as bdos 10
kstat	equ	11	; get keyboard status
kbdin	equ	01	; keyboard input
dconio	equ	6	; bdos direct console i/o function #
dconin	equ	0ffh	; bdos dconio flag for input
;
;------------------------------------------------------------
;	Actual start of MEX
;
		org	100h
;
		ds	3	;(for  "jmp   start" instruction)
;
pmmimodem:	db	no	;yes=pmmi s-100 modem			103h
smartmodem:	db	no	;yes=hayes smartmodem, no=non-pmmi	104h
touchpulse:	db	'T'	;T=touch, P=pulse (smartmodem-only)	105h
clock:		db	40	;clock speed in mhz x10, 25.5 mhz max.	106h
				;20=2 mhh, 37=3.68 mhz, 40=4 mhz, etc.
mspeed:		db	5	;0=110 1=300 2=450 3=600 4=710 5=1200	107h
				;6=2400 7=4800 8=9600 9=19200 default
bytdly:		db	5	;0=0 delay  1=10ms  5=50 ms - 9=90 ms	108h
				;default time to send character in ter-
				;minal mode file transfer for slow bbs.
crdly:		db	5	;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109h
				;default time for extra wait after crlf
				;in terminal mode file transfer
noofcol:	db	5	;number of dir columns shown		10ah
setuptst:	db	yes	;yes=user-added setup routine		10bh
scrntest:	db	yes	;cursor control routine 		10ch
retry:		db	yes	;yes=ask user to reset error count	10dh
				;after 10 consecutive errors
				;no=abort after 10 consecutive errors
bakupbyte:	db	no	;yes=change any file same name to .bak	10eh
crcdflt:	db	yes	;yes=default to crc checking		10fh
togglecrc:	db	yes	;yes=allow toggling of crc to checksum	110h
convrub:	db	no	;yes=convert backspace to rub 		111h
togglerub:	db	yes	;yes=allow toggling of bksp to rub	112h
addlf:		db	no	;no=no lf after cr to send file in	113h
				;terminal mode (added by remote echo)
togglelf:	db	yes	;yes=allow toggling of lf after cr	114h
tranlogon:	db	no	;yes=allow transmission of logon	115h
				;write logon sequence at location logon
savccp:		db	yes	;yes=do not overwrite ccp		116h
loconextchr:	db	yes	;yes=local command if extchr precedes	117h
				;no=external command if extchr precedes
toggleloc:	db	yes	;yes=allow toggling of loconextchr	118h
lsttst:		db	yes	;no=using modem on printer port		119h

; NOTE - if either of the next two are "yes", then MEX will NOT
; ask for delays when sending a file in terminal mode.
xofftst:	db	no	;yes=checks for xoff from remote while	11ah
				;sending a file in terminal mode
xonwait:	db	no	;yes=wait for xon after cr while	11bh
				;sending a file in terminal mode
;
togxoff:	db	yes	;yes=allow toggling of xoff checking	11ch
ignorctl:	db	no	;yes=ctl-chars above ^m not displayed	11dh
extra1:		db	0	;for future expansion			11eh
extra2:		db	0	;for future expansion			11fh
brkchr:		db	'\'-40h	;^\ = send 50 ms. break tone		120h
noconnct:	db	'N'-40h	;^N = disconnect from phone line	121h
logchr:		db	'L'-40h	;^L = send logon			122h
lstchr:		db	'P'-40h	;^P = toggle printer			123h
unsave:		db	'R'-40h	;^R = close input text buffer		124h
tranchr:	db	'T'-40h ;^T = transmit file to remote		125h
savechr:	db	'Y'-40h	;^Y = open input text buffer		126h
extchr:		db	']'-40h	;^] = send next character		127h
;
		ds	2		;				128h
;
in$s2stat:	in	s2stat ! ret	;in modem control port		12ah
		ds	7
out$s2data:	out	s2data ! ret	;out modem data port		134h
		ds	7
in$s2data:	in	s2data ! ret	;in modem data port		13eh
		ds	7
ani$modrcvb:	ani	modrcvb ! ret	;bit to test for receive ready
cpi$modrcvb:	cpi	modrcvb ! ret	;value of receive bit when ready
ani$modsndb:	ani	modsndb ! ret	;bit to test for send ready
cpi$modsndb:	cpi	modsndb ! ret	;value of send bit when ready
		ds	12
;
logonptr:	dw	logon		;for user message.		160h
		ds	3		;				162h
jmp$disconnt:	jmp	goodbye		;				165h
jmp$goodbye:	ret ! nop ! nop		;				168h
jmp$initmod:	jmp	initmod		;go to user written routine	16bh
jmp$newbaud:	jmp	newbaud		;sets baud rate associated with#16eh
		ret  !	nop  !	nop	;(by-passes pmmi routine)	171h
		ret  !	nop  !	nop	;(by-passes pmmi routine)	174h
jmp$setpro:	jmp	setpro		;process SET commands		177h
jmp$spclmenu:	jmp	spclmenu	;				17ah
jmp$sysver:	jmp	sysver		;				17dh
jmp$break:	jmp	sendbrk		;				180h
;
; do not change the following six lines.
;
jmp$ilprt:	ds	3		;				183h
jmp$inbuf	ds	3		;				186h
jmp$inlncomp:	ds	3		;				189h
jmp$inmodem	ds	3		;				18ch
jmp$nxtscrn:	ds	3		;				18fh
jmp$timer:	ds	3		;				192h
;
; Clear sequences -- clreos is clear to end of screen, clrscrn is clear
; entire screen. Last entry must be 0.  Any other 0's act as nop's.
; The scrntst option must be set "yes" for these to work.  These are now
; set for the Morrow MT-70 terminal.
;
clreos:	mvi	c,ilp		; clear to end of screen routine 
	call	mex
	db	esc,'Y',0	; fill out to required 9 bytes
	ret
;
clrscrn:mvi	c,ilp		; clear whole screen routine
	call	mex
	db	1ah,0,0		; fill out to required 9 bytes	
	ret
;
;------------------------------------------------------------
; End of fixed area.  Above here, be very careful of changing
; the length of things.  Below here, total length just needs
; to be under 0B00, to leave room for external modem overlay.
;------------------------------------------------------------
logon:	db	'logon goes here',cr,0
;
milp:	mvi	c,ilp		; mex inline print string
	jmp	mex
;
crlf:	call	milp		; print return and linefeed
	db	cr,lf,0
	ret
;
sysver:	call	milp
	db	'*** Morrow Designs MD3 Version 3.0 ***',cr,lf,0
	ret
;
; This routine allows a 300 ms. break tone to be sent to reset some
; time-share computers.
;
sendbrk:mvi	a,1fh		;send break tone
	jmp	goodbye1
;
; This routine sends a 300 ms. break tone and sets dtr low for the same
; length of time to disconnect some modems such as the Bell 212a, etc.
;
goodbye:
	mvi	a,15h		;send break, turn off DTR
;
goodbye1:
	out	s2stat		;send to status port
	mvi	b,3		;wait 300 ms.
	mvi	c,timer
	call	mex
	mvi	a,27h		;normal send/receive with dtr
	out	s2stat		;send to status port
	ret
;
initmod:mvi	a,087h		;ensure out of mode
	out	s2stat		;modem status port
	out	s2stat		;slight extra delay
	mvi	a,40h		; initialize usart for mode word
	out	s2stat		; modem status port
	lda	modereg		; load current defaults
	out	s2stat		; allows cloning with different
				; data bits, stop bits, & parity
	lda	cmdreg		; use command word to reset 
				; xmt, dtr, rcv, and rts 
	out	s2stat		;modem status port
	in	s2data		;clear data port
	call	loadbd		; set baud rate - allows cloning
	ret
;
;============== SETPRO - Process SET Commands ========================
;
; 	Main SET Command Table
;
cmdtbl:	db	'BAU','D'+80h
	dw	setbaud
	db	'PARIT','Y'+80h
	dw	setpar
	db	'LENGT','H'+80h
	dw	setlen
	db	'STOPBIT','S'+80h
	dw	setstp
	db	'?'+80h			; SET help
	dw	sethelp
	db	0
;
setpro:	mvi	c,sblank	;any arguments?
	call	mex
	jc	tell		;if not, go display current settings
	lxi	d,cmdtbl
	mvi	c,lookup
	call	mex		;parse argument
	push	h		;save any parsed argument adrs on stack
	rnc			;if we have one, return to it
	pop	h		; command not found in table
				; so fall thru to print error msg.
;
seterr:	lda	errid		; print MEX id with error msgs?
	ora	a
	jz	noid		; no
	mvi	c,prid		; print mex id
	call	mex
noid:	call	milp
	db	bell,'++ SET error'	; ring bell, if on
	db	' ++',cr,lf,0
	ret
;
tell:	call	shbaud		; display current settings
	call	shprty
	call	shbits
	call	shstop
	ret 
;
; "SET ?" processor
;
sethelp:
	call	milp
	db	'BAUD <n>',tab,'300 or 1200',cr,lf
	db	'LENGTH <n>',tab,'7 or 8',cr,lf
	db	'PARITY <mode>',tab,'NONE, EVEN or ODD',cr,lf
	db	'STOPBITS <n>',tab,'1 or 2',cr,lf,0
	ret
;
; ---------- modem registers -------------- 
; These registers are used to set the 8251 UART for the Morrow's 
; second serial port. For an excellent explanation of this process, 
; see Ed Berne's article "How to Modify Output Ports," in Morrow
; Owners' Review vol. 1, #4, October 1984, pp. 44-5.
;
modereg:db	01101110b	; Contains the default "mode word" for 
				; output to the 8251 UART. 
				; 01101110b = no parity, 8 databits,
				; 1 stopbit. This register changes with 
				; calls to SET routines.

cmdreg:	db	00100111b	; Contains the "command word" for output
				; to 8251 UART. 
;
; MODEOFF and MODEON are used to set parity, stopbits, and databits 
; by turning off or on the bits specified in register b. The most recent
; combination is temporarily stored in modereg.  

; MODEON - turn on bit(s) on modem mode register.
; On entry, reg. b has ones in positions to turn on
 
modeon:	push	psw
	mvi	a,40h	; tell 8251 that the next byte will be a 
	out	s2stat	; "mode word"
	lda	modereg	; get the mode register
	ora	b	; add the bits which are on in b to a
	sta	modereg	; save the result back in modereg
	out	s2stat	; send modereg to UART
	lda	cmdreg
	out	s2stat	; reset the UART
	pop	psw
	ret
; 
; MODEOFF - turn off bit(s) on modem mode register.
; On entry, reg. b has ones in positions to turn off.
;
modeoff:push	psw
	mvi	a,40h	; tell 8251 that the next byte will be a 
	out	s2stat	; "mode word"
	mov	a,b	; get bits to turn off in a
	cma		; reverse off to on, on to off
	mov	b,a	; and store the result back in b
	lda	modereg	; get the "mode register"
	ana	b	; turn off all bits in a which are off in b
	sta	modereg	; save the result back in modereg
	out	s2stat	; send modereg to UART
	lda	cmdreg
	out	s2stat	; reset the UART
	pop	psw
	ret
;
;------------ Set Baud Rate -------------
;
;	Set Baud Command Table
;
baudtbl:db	'30','0'+80h
	dw	set300
	db	'120','0'+80h
	dw	set1200
	db	0
;
setbaud:mvi	c,sblank	;any arguments?
	call	mex	
	jc	shbaud		;if not, go display baud
	lxi	d,baudtbl
	mvi	c,lookup
	call	mex		;parse argument
	push	h		;save any parsed argument adrs on stack
	rnc			;if we have one, return to it
	pop	h		;input not found in table
	jmp	seterr
;
set300:	mvi	a,1		;mspeed 300 baud value
	jmp	savebd
;
set1200:mvi	a,5		; mspeed 1200 baud value
;	
savebd:	sta	mspeed		; change time-to-send to match baudrate
	call	loadbd		; and load and show baud separately so that
	jmp	shbaud		; baud rate won't show at startup
;
loadbd:	mvi	a,0beh		;select ctc channel 2
	out	ctcsel
	lxi	d,417		;load divisor for 300 baud
	lda	mspeed		;flag: 1=300, 5=1200 baud
	dcr	a		
	jz	loadit		;if it was 1, set 300
	lxi	d,104		;else load divisor for 1200 baud
loadit:	mov	a,e
	out	ch2div		;set baud rate using rate port
	mov	a,d
	out	ch2div
	ora	a
	ret
;
shbaud:	call	milp		; display current baud rate
	db	'BAUD RATE',tab,0
	lda	mspeed
	mvi	c,prbaud
	call	mex
	call	crlf
	ret
;
newbaud:cpi	1
	jz	set300
	cpi	5
	jz	set1200
	ret
;
;-------- Set Parity --------------
;
;	Set Parity Command Table
;
partbl:	db	'NON','E'+80h
	dw	soff
	db	'EVE','N'+80h
	dw	seven
	db	'OD','D'+80h
	dw	sodd
	db	0		; <<== end of parity table
;
setpar:	mvi	c,sblank	; set parity - any arguments?
	call	mex
	jc	shprty		;if not, go display parity
	lxi	d,partbl
	mvi	c,lookup
	call	mex		; parse argument
	push	h		; save any parsed argument adrs on stack
	rnc			; if we have one, return to it
	pop	h		; input not found in table
	jmp	seterr
;
soff:	mvi	b,10h		;set parity to off
	call	modeoff
	jmp	shprty
sodd:	mvi	b,10h		;set parity to odd 
	call	modeon
	mvi	b,20h
	call	modeoff
	jmp	shprty
seven:	mvi	b,10h		;set parity to even
	call	modeon
	mvi	b,20h
	call	modeon	
				; and fall thru to shprty
;
; Show Parity Selected.
;
shprty:	call	milp		; display parity
	db	'PARITY',tab,tab,0
	lda	modereg
	ani	030h		; extract bits 4,5
	cpi	010h		; if bits 4,5 = 1,0 then parity odd
	jnz	shprt1
	call	milp
	db	'ODD',cr,lf,0
	ret
;
shprt1: cpi	30h		; if bits 4,5 = 1,1 then parity even
	jnz	shprt2		; else parity off
	call	milp
	db	'EVEN',cr,lf,0
	ret
;
shprt2:	call	milp
	db	'NONE',cr,lf,0
	ret
;
;--------- Set Length ---------------
;
;	Set Length Command Table
;
lentbl:	db	'7'+80h		; "set length 7"
	dw	set7
	db	'8'+80h		; "set length 8"
	dw	set8
	db	0		; <<== end of data-bits table
;
setlen:	mvi	c,sblank	;any arguments?
	call	mex
	jc	shbits		;if not, go display databits
	lxi	d,lentbl
	mvi	c,lookup
	call	mex		;parse argument
	push	h		;save any parsed argument adrs on stack
	rnc			;if we have one, return to it
	pop	h		;input not found in table
	jmp	seterr
;
set7:  	mvi	b,04h		;set to 7 
	call	modeoff
	jmp	shbits
set8:	mvi	b,04h		;set to 8
	call	modeon
;				and fall through to shbits
;
; Show Current Bits per Character
;
shbits:	call	milp
	db	'LENGTH',tab,tab,0
	lda	modereg
	ani	0ch		; extract bits 2, 3 for examination
	ora	a		; if bits 2,3 = 0,0 then 5 bpc
	jnz	shbts1		; nope, go try others.
	call	milp
	db	'5',0
	jmp	shbtsx
;
shbts1:	cpi	04h		; test bits 2, 3 = 1, 0
	jnz	shbts2		; if not, go try others.
	call	milp		; if so, 6 bits.
	db	'6',0
	jmp	shbtsx
;
shbts2:	cpi	08h		; test bits 2, 3 = 0, 1
	jnz	shbts3		; if not, must be 8 bits
	call	milp		; yup, 7 bits
	db	'7',0
	jmp	shbtsx
;
shbts3:	call	milp		; 8 bits per char
	db	'8',0
;
shbtsx:	call	milp
	db	' bits',cr,lf,0
	ret
;
;------- Set Stop Bits ----------------
;	
;	Set Stop Bits Command Table
;
stptbl:	db	'1'+80h		; "set stopbits 1"
	dw	stop01
	db	'2'+80h		; "set stopbits 2"
	dw	stop02
	db	0		; <<== end of stop-bits table
;
setstp:	mvi	c,sblank	; set stopbits - any arguments?
	call	mex
	jc	shstop		; if not, go display stopbits
	lxi	d,stptbl
	mvi	c,lookup
	call	mex		; parse argument
	push	h		; save any parsed argument adrs on stack
	rnc			; if we have one, return to it
	pop	h		; input not found in table
	jmp	seterr
; 
stop01:	mvi	b,80h		; set to 1
	call	modeoff
	jmp	shstop
;
stop02:	mvi	b,80h		; set to 2
	call	modeon
;
; Show Current Stop Bits
;
shstop:	call	milp		; display stop-bits
	db	'STOPBITS',tab,0
	lda	modereg
	ani	0c0h		; extract bits 6, 7 for examination
	cpi	040h		; if 6 on, 7 off, one stop
	jnz	shst15		; no, go check for 1.5 or 2
	call	milp
	db	'1',0
	jmp	shstxt
shst15:	cpi	080h		; if 7 on, 6 off, 1.5 stops
	jnz	shst20		; nope, go do 2.
	call	milp
	db	'1.5',0
	jmp	shstxt
shst20:	call	milp		; must be 2 stop bits
	db	'2',0
shstxt:	call	crlf
	ret
;
;	     (end of initmod and setup routines)
;=======================================================================
;
; These routines can be used for your equipment, be sure to end with ret
;
spclmenu: ret
;
; Special mex code for Morrow BIOS to not trap certain escape sequences.
; The address of the following line must be substituted at location
; outvec for certain terminals to work properly with
; certain hosts. If you replace the address then all control
; codes sent to the terminal will have their high order bit set so that
; the Morrow will send them through properly and not trap them.
;
slbtyp:	mov	a,c
	cpi	20h
	jp	slbt2		; in Z80 opcode, that's
				; "jp	p,stbt2" (jump if sign flag set) 
	ori	80h
slbt2:	mov	c,a
	jmp	conout		; value from top of this file
;
; Special initial prompt for the Morrow MT-70 terminal 
; (may be changed with the ID command)
;
myprom:	db	28		; Max. size of buffer
	db 	10		; Length of actual prompt
	db 	1BH,'G4MEX:'	; Prompt string displays
	db	1BH,'G0'	; in reverse video with Morrow MT-70
				; terminal.
;
;=======================================================================
;
; NOTE:  Must terminate prior to 0b00h (with smartmodem)
;				 0d00h (without smartmodem).
;
; The order of the patch variables supported here will not change from
; version to version (i.e., new items will be added on to the end).
;
	org	0d00h		;location of patch variables
;
lf	equ	10		;define ASCII linefeed code
;
;
; The following line defines the mex service call entry point, and
; is not meant to be changed by the user
;
mex:	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.
;
memry:	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.
;
stsvec:	ds	2		;console status vector
invec:	ds	2		;console input vector
outvec:	dw	slbtyp		;console output vector
lvec:	ds	2		;list output vector
lstvec:	ds	2		;list status vector
;
; 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.
;
prompt:	dw	myprom		;prompt location
	ds	1		;reserved
typlin:	db	22		;for type command: # lines/screen
pausfl:	db	1		;for type cmd: 1=pause 0=no pause
sepchr:	db	','		;multiple command-line separator
				;changed from ';', which conflicts with
				;ZCPR's MCL separator 
;
; Following five for SENDOUT command
;
sowait:	db	4		;# seconds waiting for a sendout echo
sorepl:	db	8		;# seconds waiting for initial reply
sotrig:	db	'@'-64		;sendout trigger char from remote
canchr:	db	'X'-64		;sendout char to cancel line to remote
sortry:	db	2		;sendout # retries
;
hexflg:	db	0		;hex/decimal mode
escchr:	db	'T'-64		;terminal mode escape char 		d1fh
nobell:	db	0		;set to 0ffh to disable bell, 0 = bell	d20h
;
; Buffer variables.  see buffers.doc for setup information
;
psize:	db	2		;default=2k				d21h
asize:	db	255		;"big" capture buffer			d22h
xsize:	db	16		;16k transfer buffer. 			d23h
nsize:	db	1		;1k for 85 batch files			d24h
prelen:	db	40		;maximum length of prefix string	d25h
suflen:	db	40		;maximum length of suffix string
;
; Misc. stuff
;
cdosfl:	db	0		;non-zero for cdos
wtecho:	db	1		;non-zero sets "wait-for-echo"
kysize:	dw	400		;size of keystring area, in bytes
cisflg:	db	1		;non-zero allows cis file transfers
cisok:	db	1		;non zero allows stat cis on or off
chgpmt:	db	1		;non-zero allows id (prompt chg) command
errid:	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.
;
helpok:	db	1		;non-zero allows help command
mexdu:	db	0		;user \/  alternate area for read,load,ini.mex
	db	0		;drive/\  & help.mex (if search <>0)
debug:	db	0		;debugging in term-mode if non-zero
exclsy:	db	1		;non-0 excludes $sys from batchsend, dir
inimex:	db	0		;non-zero runs ini.mex (if present) at startup
rtimer:	db	1		;receiver wait: # seconds [plouff patch]
pqsize:	dw	150		;size of the modem-port queue
phsize:	db	30		;phone library size (# entries)
silent:	db	0		;0=silence multi-line & read cmd echo
alert:	db	255		;alert-bell count on call complete
extend:	db	1		;non-zero: unknown commands goto read processor
split:	db	1		;non-zero: splits phonelib printout, shows baud
search:	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.
;
restt:	db	'ABDELQRSTVX'
	ds	8		;room for option expansion
;
; added on release 1.10:
;
queue:	db	1		;1=allow queueing, 0=no
timbas:	dw	208		;timing constant 
mode:	db	0		;mode of modem i/o
sminit:	ds	2		;smartmodem init routine adrs
ssetv:	ds	2		;sset command: defaulted off
smexit:	ds	2		;smartmodem exit routine adrs
	ds	4		;internal to mex
sodflg:	db	0		;1=tie sendout to time delay if no wtecho
autosv:	db	1		;0=initial term mode, save off
tabflg:	db	0ffh		;non-zero=expand tabs within mex
;
;
	end
lay if no wtecho
autosv:	db	1		;0=initial term mode, save off
tabflg:	db	0