

;	M7KP-x48.ASM --	Kaypro overlay file for MDM730.    7/30/84

; *********************************************************************
; 7/30/84    Allows optional assembly to facilitate 4800 baud
; M7KP-X48   direct Transfer of files to & from KAYPRO over 3 wires.
;            Assembles normally to M7KP2 if XFR48 is set to NO.
;
;	    Also, can be assembled to connect to either Serial Printer Port
;	    or to Modem Port, if you're using the -84 KP series
;	    that have separate port.  Advantage to using printer
;	    port, if it is not otherwise used, is that you do not
;	    have to switch plugs at your modem port for direct transfer
;	    and normal modem use.  NOTE:  If you're using an older KAYPRO, 
;	    i.e., one with only one serial port, set PRINTPORT to NO.
;
;           How to wire depends on the computer to/from which
;           you want to transfer files.  Try it and see - you can't
;           hurt anything.  If it does not work, reverse wires to
;           pins 2 and 3 on one of the RS-232 plugs.
;
;           Basically, you connect:
;               Pin 7 to Pin 7
;               Pin 2 to pin 3 (or maybe to pin 2)
;               Pin 3 to pin 2 (or maybe to pin 3)
;
;           I made up one RS-232 with a cross-over switch (DPDT), like
;           below, to make it easier to match other systems:
;			|    |          |
;			|    |          |
;			|    |          |
;			2    3          7
;			|    |          |
;		---------------------   |
;		|	|    |	    |	|
;		|	/    \	    |	|
;		|      /      \	    |	|
;		|     / o    o \    |   |    
;		|    / 	 \  /	\   |	|
;		|   /     \/     \  |	|
;		|  o      /\      o |	|
;		|        /  \       |	7
;		|       /    \      |	|
;		|      o      o     |	|
;		|      |      |     |	|	
;               |-------------------|	|
;		       |      |		|
;		       2      3		7
;		       |      |		|
; 		       |      |         |      	
;
; *********************************************************************
; KP7-X48 is based on M7KP-2.
; M7KP-2 was to written to handle a specific problem, to
; communicate with certain time sharing systems.  It should not be
; considered a replacement for M7KP-1.ASM.  It has been written not to
; exceed 896 bytes, a constraint documented in M7KP-1.ASM.  Because of
; this, some code was taken out, (SET baudrate other than 300 or 1200).
;
; 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 Kaypro II computer to the modem program.  Much of
; the information contained here is not in the MDM722.ASM file.
;
; Edit this file for your preferences then follow the "TO USE:", example
; shown below.
;
; Use the "SET" command to change the baudrate, word length, number of
; stop bits, and parity when desired.  It starts out at 300 baud, 8 bit
; word length 1 stop bit, and no parity when the program is first invoked.
;
; TO USE: First edit this file filling in answers for your own
;		equipment.  Then assemble with ASM.COM or equivalent
;		assembler.   Use DDT to overlay the results of this
;		program to the original .COM file:
;
;		A>DDT MDM7nn.COM
;		DDT VERS 2.2
;		NEXT  PC
;		4900 0100		(might be bigger -- be careful)
;		-IM7KP-X48.HEX		(note the "I" command)
;		-R			("R" loads in the .HEX file)
;		NEXT  PC
;		4900 0000		(or whatever)
;		-G0			(return	to CP/M)
;		A>SAVE 72 XFR48.COM	(you now have a modified .COM file
;			|		 saved in XFR48.COM)
;			|
;		   or whatever value
;		   may be appropriate - the 72 relates to 4900 as
;		   follows: Discard the last two digits from the
;		   4900 (or similar) value.  If they were NOT 00,
;		   use the first two digits as is.  If they were
;		   00, reduce the first two by one (e.g., 49 becomes 48).
;		   Now: 48 means 48 hex.  That is 4 16s, and 8 ones.
;		   		(4*16)+8=72
;    
;							E.O.Stork
;  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =
; 02/18/84 - Changed SET routine to change baudrate, word length,
; M7KP-2     number of stop bits, and parity.	- Bill Duerr
;
;  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =
;
;
YES:		EQU	0FFH
NO:		EQU	0
;******************************************************************************
PRINTPORT:	EQU	NO		;usually false, true only if you want 
					; to connect to serial printer port   
					;Set this to NO is using a KAYPRO with
					; only one serial port.

XFR48		EQU	YES		;If YES, disables SET Command	      *
					; Set to NO if you want to use this
					; overlay for normal operation 
;
	IF PRINTPORT
PORT:		EQU	0CH		;0Ch for Ser.Print Port
BAUDPORT	EQU	08h		;08h for Ser.Print port
	ENDIF ;printport
	IF NOT PRINTPORT
PORT:		EQU	04h		;04h modem data port
BAUDPORT	EQU	00h		;00h modem port	ENDIF
	ENDIF	;if not printer port
;******************************************************************************
;
BELL:		EQU	07H		;bell
CR:		EQU	0DH		;carriage return
ESC:		EQU	1BH		;escape
LF:		EQU	0AH		;linefeed
;
MODCTL1:	EQU	PORT+2		;Modem control port
MODDATP:	EQU	PORT		;Modem data port
MODCTL2:	EQU	PORT+2		;Modem control port
;
MODRCVB:EQU	01H	;Your bit to test for receive   .... ...1
MODRCVR:EQU	01H	;Your value when receive ready  .... ...1
;                       ;Int pending                    .... ..1.
MODSNDB:EQU	04H	;Your bit to test for send      .... .1..
MODSNDR:EQU	04H	;Your value when send ready     .... .1..
;DCT:   EQU     80H     ;data carier detect             .... 1...
;                       ;sync hunt                      ...1 ....
;                       ;Clear to Send                  ..1. ....
;                       ;Tx underrun                    .1.. ....
;                       ;Break/Abort                    1... ....
;
; The following are used in setting up the Z80 SIO.
;
;                       ;all sent                       .... ...1
;                       ;parity error                   ...1 ....
;                       ;overrun error                  ..10 ....
;                       ;framing error                  .1.. ....
;                       ;end of frame (SDLC)            1... ....
;WRREG0
;                       ;write to register              .... .xxx
;                       ;reset flags                    ..xx x...
RSTERR:	EQU	30H	;reset parity and overrun flags	..11 0...
RSTINS:	EQU	18H	;reset SIO - register 0         ..01 1...
WRREG1:	EQU	0	;no interrupts - register 1
;                       ;ext int enable                 .... ...1
;                       ;tx int enable                  .... ..1.
;                       ;rx int disable                 ...0 0...
;                       ;rx int on first character      ...0 1...
;                       ;int on all rx char/parity eff  ...1 0...
;                       ;int on all rx char             ...1 1...
;                       ;wait/ready on r/t              ..1. ....
;                       ;wait/ready function            .1.. ....
;                       ;wait/ready enable              1... ....
;
;			;register 3 equates
WRREG3:	EQU	0C1H	;8 Rx bits, Rx enable
RENABLE	EQU	1	;Rx enable -			.... ...1
;                       ;sync character load inhibit -  .... ..1.
;                       ;address serch mode (SDLC) -    .... .1..
;                       ;Rx CRC enabel -                .... 1...
;                       ;Enter hunt phase               ...1 ....
;                       ;Auto enables                   ..1. ....
MSKWD:	EQU	0C0H	;word length mask -		xx.. ....
;                       ;receive five bit work -        00.. ....
RSEVEN:	EQU	040H	;receive seven bit word	-	01.. ....
;                       ;receive six bit word -         10.. ....
REIGHT:	EQU	0C0H	;receive eight bit word	-	11.. ....
;
;			;register 4 equates
WRREG4:	EQU	44H	;16X baud rate,	1 stop bit, no parity
MSKPA:	EQU	03H	;mask for parity bits -		.... ..xx
NONE:	EQU	00H	;no parity -			.... ..00
ODD:	EQU	01H	;odd parity -			.... ..01
EVEN:	EQU	03H	;even parity -			.... ..11
MSKST:	EQU	0CH	;stop bit mask -		.... xx..
;                       ;sync modes enable -            .... 00..
ONE:	EQU	04H	;one stop bit  -		.... 01..
;      	       	       	;1.5 STOP BITS -		.... 10..
TWO:	EQU	0CH	;two stop bits -		.... 11..
;                       ;sync modes -                   ..xx ....
;CLK01: EQU     00H     ;1X clock mode -                00.. ....
CLK16:	EQU	40H	;16X clock mode -               01.. ....
;CLK32: EQU     80H     ;32X clock mode -               10.. ....
;CLK64: EQU     c0H     ;64X clock mode -               11.. ....
;			;register 5 equates
WRREG5:	EQU	0EAH	;8 Tx bits, Tx enable, RTS, DTR
;TXCRC  EQU     001H    ;Tx CRC enable                  .... ...1
;RTS    EQU     002H    ;Request to send                .... ..1.
;SLDC   EQU     004H    ;SDLC/CRC-16                    .... .1..
TENABLE:EQU	008H	;Tx enable			.... 1...
;BREAK  EQU     010H    ;Send break                     ...1 ....
;                       ;Transmit five bit word -       .00. ....
TSEVEN:	EQU	020H	;Transmit seven	bit word -	.01. ....
;                       ;Transmit six bit word -        .10. ....
TEIGHT:	EQU	060H	;Transmit eight	bit word -	.11. ....
;DTR    EQU     080H    ;Data terminal ready            1... ....
DTRON:	EQU	08AH	;Tx enable, RTS, DTR -		1... 1.1.
DTROFF:	EQU	000H	;DTR off, RTS off -		0... ..0.
;
		ORG	100H
;
; Change the clock speed as needed for your system.
;
		DS	3	;(for  "JMP   START" instruction)
;
PMMIMODEM:	DB	NO	;yes=PMMI S-100	Modem			103H
SMARTMODEM:	DB	YES	;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	7	;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
ACKNAK:		DB	YES	;yes=resend a record after any non-ACK	10DH
				;no=resend a record after a valid NAK
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
CONVBKSP:	DB	YES	;yes=convert backspace to rub		111H
TOGGLEBK:	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	NO	;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	;yes=printer available on printer port	119H
XOFFTST:	DB	NO	;yes=chcks 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 a 300 ms. break tone		120H
NOCXNNCT:	DB	'N'-40H	;^N = Disconnect from the 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
PULSERATE:	DS	1	;                                       128H
CHGBAUD		DS	1	;        				129H
;
IN$MODCTL1:	MVI	A,10H		;channel 0, reset interrupts.	12AH
		OUT	MODCTL1
		IN	MODCTL1		;get the status	bits
		RET
		DB	0,0,0
;
OUT$MODDATP:	OUT	MODDATP	! RET	;out modem data	port		134H
		DB	0,0,0,0,0,0,0
IN$MODDATP:	IN	MODDATP	! RET	;in modem data port		13EH
		DB	0,0,0,0,0,0,0
ANI$MODRCVB:	ANI	MODRCVB	! RET	;bit to	test for receive ready	148H
CPI$MODRCVR:	CPI	MODRCVR	! RET	;value of receive bit when rdy	14BH
ANI$MODSNDB:	ANI	MODSNDB	! RET	;bit to	test for send ready	14EH
CPI$MODSNDR:	CPI	MODSNDR	! RET	;value of send bit when	ready	151H
IN$BAUDRP:	DS	3		;IN baudrate port               154H
OUT$BAUDRP:	DS	3		;OUT baudrate port              157H
OUT$MODCTL1:	OUT	MODCTL1	! RET	;out modem control port		15AH
OUT$MODCTL2:	OUT	MODCTL2	! RET	;out modem status port		15DH
;
LOGONPTR:	DW	LOGON		;for user message.		160H
JMP$DAIL:	DS	3		;Use routine in	main program	162H
JMP$DISCONNT:	DS	3		;Use routine in	main program	165H
JMP$GOODBYE:	JMP	GOODBYE		;Routine in this overlay	168H
JMP$INITMOD:	JMP	INITMOD		;Initialization	in this	overlay	16BH
JMP$NEWBAUD:	RET  !	NOP  !	NOP	;Bypass	PMMI routine		16EH
JMP$NOPARITY:	RET  !	NOP  !	NOP	;Bypass	PMMI routine		171H
JMP$PARITY:	RET  !	NOP  !	NOP	;Bypass	PMMI routine		174H
JMP$SETUPR:	JMP	SETUPR		;Set command in	this overlay	177H
JMP$SPCLMENU:	RET  !	NOP  !	NOP	;Bypass	special	menu routine	17AH
JMP$SYSVER:	JMP	SYSVER		;Version message in this overlay17DH
JMP$BREAK:	JMP	SENDBRK		;Break	routine	in this	overlay	180H
;
;
; Do not change	the following six lines, the routine are in main program.
;
JMP$ILPRT:	DS	3		;Inline	print routine		183H
JMP$INBUF	DS	3		;Input buffer routine		186H
JMP$INLNCOMP:	DS	3		;Inline	compare	routine		189H
JMP$INMODEM	DS	3		;				18CH
JMP$NXTSCRN:	DS	3		;				18FH
JMP$TIMER:	DS	3		;Timer routine			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.
;
CLREOS:		CALL	JMP$ILPRT	;				195H
		DB	017H,0,0,0,0	;				198H
		RET			;				19DH
;
CLRSCRN:	CALL	JMP$ILPRT	;				19EH
		DB	01AH,0,0,0,0	;				1A1H
		RET			;				1A6H
;
;
SYSVER:		CALL	JMP$ILPRT	;				1A7H
IF NOT XFR48
		DB	'M7KP-2 for Kaypro'	;	1AAH
ENDIF	;if not XFR48
IF	XFR48
		DB	'M7XFR48 for Kaypro'
ENDIF   ; if xfr48

IF PRINTPORT
		DB	' Printer Serial Port',0
ENDIF
IF NOT	PRINTPORT
		DB	' Serial Modem Port',0
ENDIF

		RET
;
; NOTE:	 You can change	the SYSVER message to be longer	or shorter.  The
;	 end of	your last routine should terminate by 0380H (390 bytes
;	 available after start of SYSVER) if using the Hayes Smartmodem
;	 or by address 0B80H (2521 bytes) otherwise.
;
; You can put in a message at this location which can be called	up with
; CTL-L	if TRANLOGON has been set YES.	You can	put in several lines if
; desired.  End	with a 0.
;
LOGON:	  DB	'LOGON',CR,LF,0
;
;
; This routine allows a	300 ms.	break tone to be sent to reset some
; time-share computers.
;
SENDBRK:  MVI	A,5		;select	register 5
	  OUT	MODCTL1
	  MVI	A,0F8H		;send a	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,5		;select	register 5
	  OUT	MODCTL1		;send to the status port
	  MVI	A,DTROFF	;turn off dtr
;
GOODBYE1: OUT	MODCTL1
	  MVI	B,3		;delay 300 ms.
	  CALL	JMP$TIMER
	  MVI	A,5		;select	register 5
	  OUT	MODCTL1
	  LDA	REG5+1		;has been set to word length, etc.
	  OUT	MODCTL1
	  RET
;
; Kaypro II initialization -- resets the SIO, sets the interrupt
; mode, the receive and transmit mode.
; Sets the baud rate to BAUDPORT (00 for dataport, 08 for printer port)
;
INITMOD:MVI	A,0		;select	register 0
	OUT	MODCTL1
	MVI	A,RSTINS	;reset SIO - 18h
	OUT	MODCTL1
;
	MVI	A,1		;select	register 1
	OUT	MODCTL1
	MVI	A,WRREG1	;no interrupts
	OUT	MODCTL1
;
	MVI	A,3		;select	register 3 - receive
	OUT	MODCTL1
REG3:	MVI	A,WRREG3	;8 Rx bits, Rx enable
	OUT	MODCTL1
;
	MVI	A,4		;select	register 4
	OUT	MODCTL1
	MVI	A,CLK16		;16X baud rate
PARIT:	ORI	NONE		;type of parity
STPLN:	ORI	ONE		;number of stop bits
	OUT	MODCTL1
;
	MVI	A,5		;select	register 5 - transmit
	OUT	MODCTL1
REG5:	MVI	A,WRREG5	;8 Tx bits, Tx enable, no RTS, no DTR
	OUT	MODCTL1
;
SETBD:	
  IF XFR48		;set to 4800 baud if for direct transfer
	MVI	A,0CH		; 0Ch for 4800
  ENDIF	;xfr48
  IF NOT XFR48
	MVI	A,05H		; 05h for 300 bps,07h for 1200 baud
  ENDIF ;not xfr48
	OUT	BAUDPORT	;00 for data port, 08 for printer port
	RET
;
; The following routine changes the baud rate, word length, stop bits
; and parity on the Z80 SIO from the command level.  Note the routine
; MUST modify the parameters used by the INITMOD routine.
;
	IF	XFR48	;do not support SET command in XFR48
SETUPR:	
	CALL	JMP$ILPRT
	DB	9,7,'SET Command not supported in XFR48',0dh,0ah,0
	RET
	ENDIF ; xfr48

	IF NOT XFR48
SETUPR:	PUSH	H
AGAIN:	LXI	D,BAUDBUF	;point to input	buffer for JMP$INLNCOMP
	CALL	JMP$ILPRT
	DB	1AH,'Baud Rate (300, 1200): ',0
	CALL	JMP$INBUF
	LXI	H,BAUDTB
BAUDLP:	MOV	A,M		;first character to check
	ORA	A		;is it null
	JZ	NOTOK		;no matches found
	STA	BAUDCP		;store in compare area
	INX	H		;point to next character
	MOV	A,M		;second character to check or null
	STA	BAUDCP+1	;store in comparea area
	INX	H		;point to MSPEED constant
	LXI	D,BAUDBUF+2	;compare baudbuf and baudcp
	CALL	JMP$INLNCOMP	;was valid baud specified
BAUDCP:	DB	0,0,0		;baudrate from table gets stored here
	JNC	OK		;match, go save it
	INX	H		;skip MSPEED
	INX	H		;and CTC constant
	JMP	BAUDLP		;and check next entry
NOTOK:	CALL	WRONG		;tell messed up
	JNC	AGAIN2		;null line entered bypass baud change
	JMP	AGAIN		;try again
;
OK:	MOV	A,M		;get MSPEED
	STA	MSPEED		;change	time-to-send to	match baudrate
	INX	H		;point to CTC constant
	MOV	A,M		;and get it
	STA	SETBD+1		;store in INITMOD routine
;
AGAIN2:	LXI	D,BAUDBUF	;point to input	buffer
	CALL	JMP$ILPRT
	DB	'Word Length (7, 8): ',0
	CALL	JMP$INBUF
	LXI	D,BAUDBUF+2
	CALL	JMP$INLNCOMP	;was eight bits	requested
	DB	'8',0
	MVI	A,REIGHT+RENABLE;receive eight bits  -  C1h
	MVI	B,TEIGHT+DTRON	;transmit eight	bits -  EAh
	JNC	OK2
	CALL	JMP$INLNCOMP	;was seven bits requested
	DB	'7',0
	MVI	A,RSEVEN+RENABLE;receive seven bits  - 41h
	MVI	B,TSEVEN+DTRON	;transmit seven	bits - AAh
	JNC	OK2
	CALL	WRONG
	JNC	AGAIN3		;bypass word length change
	JMP	AGAIN2
;
OK2:	STA	REG3+1		;store in MVI instruction
	MOV	A,B		;get transmit word length
	STA	REG5+1		;store in MVI instruction
;
AGAIN3:	LXI	D,BAUDBUF	;point to input	buffer for JMP$INLNCOMP
	CALL	JMP$ILPRT
	DB	'Stop Bits (1, 2): ',0
	CALL	JMP$INBUF
	LXI	D,BAUDBUF+2
	CALL	JMP$INLNCOMP	;was 1 stop bit	requested
	DB	'1',0
	MVI	A,ONE		;1 stop	bit - 04h
	JNC	OK3
	CALL	JMP$INLNCOMP	;was 2 stop bits requested
	DB	'2',0
	MVI	A,TWO		;2 stop	bits - 0Ch
	JNC	OK3
	CALL	WRONG
	JNC	AGAIN4		;bypass stop bit mod
	JMP	AGAIN3		;go ask again
;
OK3:	STA	STPLN+1		;save stop bits	in MVI
;
AGAIN4:	LXI	D,BAUDBUF	;point to input	buffer for JMP$INLNCOMP
	CALL	JMP$ILPRT
	DB	'Parity (None, Even, Odd): ',0
	CALL	JMP$INBUF
	LXI	D,BAUDBUF+2
	CALL	JMP$INLNCOMP	;was no	parity requested
	DB	'N',0		;just check first character
	MVI	A,NONE		;no parity - 00h
	JNC	OK4		;go if got match
	CALL	JMP$INLNCOMP	;was even parity requested
	DB	'E',0
	MVI	A,EVEN		;even parity - 03h
	JNC	OK4
	CALL	JMP$INLNCOMP	;was odd parity	requested
	DB	'O',0
	MVI	A,ODD		;odd parity - 01h
	JNC	OK4
	CALL	WRONG		;no matches
	JNC	GOSET		;bypass parity changes
	JMP	AGAIN4		;try again
;
OK4:	STA	PARIT+1		;save in MVI
;
; now go modify the init routine to initialize the Kaypro to the values
; requested.
;
GOSET:	POP	H		;restore HL register
	JMP	INITMOD		;reset Z80 SIO (and return)
;
WRONG:	CALL	JMP$INLNCOMP	;was null string entered
	DB	' ',0
	RNC			;all is ok
	CALL	JMP$ILPRT	;all matches failed - tell operator
	DB	' Wrong!',CR,LF,BELL,0
	STC			;Set carry flag
	RET
;
; Due to space constraints some baud rates have been commented out
;
BAUDTB:	EQU	$		;Valid baud rates
;                               ;BAUD  MSPEED   CTC
;BD110:	DB	'11',0,2	; 110    0      02
BD300:	DB	'3',0,1,5	; 300    1      05
;BD600:	DB	'6',0,3,6	; 600    3      06
BD1200:	DB	'12',5,7	;1200    5      07
;BD2400:DB	'24',6,10	;2400    6      0A
;BD4800:DB	'48',7,12	;4800    7      0C
;BD9600:DB	'96',8,14	;9600    8      0E
;BD192:	DB	'19',8,15	;19.2    9      0F
	DB	0
;
	ENDIF	;not XFR48

BAUDBUF:
	DB	10,0
	DS	10
;
;---------------------------------------------------------------------
;
;
; NOTE:  MUST TERMINATE PRIOR TO 0380H (with Smartmodem)
;				 0B80H (without Smartmodem)
;
;---------------------------------------------------------------------
	END
