File:  [Synchronet] / sbbs / steve / rciolx.lst
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:37:52 2018 UTC (8 years, 3 months ago) by root
Branches: digitaldynamics, MAIN
CVS tags: v1_06a, HEAD
1.06a MS-DOS


Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-1


				;************************************************************************
				;*									*
				;*         rciol: direct 8250 communications interface for C		*
				;*									*
				;*    prototypes: int   rioini(int,int);     initialize com,irq		*
				;*		  int   setbaud(int);        set baud rate		*
				;*	*n/a	  int   rioctl(int);         remote i/o control		*
				;*		  void  dtr(char);           set/reset dtr		*
				;*		  int   outcom(int);         send character		*
				;*		  int   incom(void);         receive character		*
				;*	*n/a	  int   rioifc(int);         local i/o redirection	*
				;*									*
				;************************************************************************
				
				; this source file is lacking _rioctl and _rioifc
				
 0000				biosda	segment at 40h		;bios data area
 0000				biosda	ends
				
					setmod	%mm
				
				; 8259 interrupt controller register equates
				
 = 0020				icr1	equ	20h		;interrupt command register (master)
 = 0021				imr1	equ	21h		;interrupt mask register (master)
 = 0008				ivb1	equ	8		;vector base 0-7: cannot be read, assumed
 = 00A0				icr2	equ	0a0h		;interrupt command register (slave)
 = 00A1				imr2	equ	0a1h		;interrupt mask register (slave)
 = 0070				ivb2	equ	70h		;vector base 8-f: cannot be read, assumed
				
				; 8250 uart register equates
				
 = 0002				iir	equ	2		;interrupt identification register
 = 0001				ier	equ	1		;interrupt enable register
 = 000B				ierd	equ	0bh		;enable: rxd, thre, msr
				
 = 0006				msr	equ	6		;modem status register
 = 0004				mcr	equ	4		;modem control register
 = 000B				mcrd	equ	0bh		;irq enable, rts on, dtr on
				
 = 0005				lsr	equ	5		;line status register
 = 0003				lcr	equ	3		;line control register
 = 0003				lcrd	equ	3		;N,8,1 mode
				
				; buffer pointer structure
				
				dstruc	bufp,0
					dss	2,bcnt		;character count
					dss	2,bput		;next character to buffer
					dss	2,bget		;next character from buffer
					dss	1,ovfl		;overflow flag
					dss	1
					dss	2,bofst		;buffer offset
					dss	2,bsize		;buffer size
				dstruc	bufp

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-2


					.data
					public	_plst
				
					align 2
				
 0000  0001C200			brdd	dd	115200		;baud rate dividend
				
 0004  00000000			iv16h	dd	0		;saved interrupt vector for int 16h
 0008  00000000			iv29h	dd	0		;saved interrupt vector for int 29h
 000C  00000000			ivsio	dd	0		;saved serial i/o vector
				
 0010  0000			buart	dw	0		;uart base address
 0012  0000			lsrad	dw	0		;line status register port address
 0014  00			irqn	db	0		;interrupt request line
 0015  00			ircr	db	0		;saved interrupt controller mask
 0016  00			siovn	db	0		;serial i/o vector number
				
 = 0001				ic29h	equ	1		;int 29h is being intercepted
 = 0003				ic29d	equ	3		;int 29h is being diverted
 = 0010				ic16h	equ	10h		;int 16h is being intercepted
 0017  00			intcp	db	0		;intercepted interrupt code
				
 0018  00			opera	db	0		;operational (port defined, baud set)
				
 0019  00			mode	db	0		;function enable (incl pause/abort cycles)
 001A  00			state	db	0		;operational state (must follow mode)
 = 0002				hold	equ	2		;stop transmission
 = 0004				abort	equ	4		;aborting
 = 0010				ctsck	equ	10h		;check clear to send signal (mode only, fixed)
				
 001B  00			txintp	db	0		;transmit interrupt pending
 001C  00			status	db	0		;communications status
 = 0001				rxlost	equ	1		;received characters lost
				
 001D  00				align	2
 = 0400				txbmx	equ	1024		;receive buffer maximum size
 = 0400				rxbmx	equ	1024		;transmit buffer maximum size
				
 001E				_plst	label	word
				
				dv	rxbp	bufp,0		;receive buffer pointers
				dv	txbp	bufp,0		;transmit buffer pointers
				
				dv	rxb	rxbmx,0a8h	;receive buffer
				dv	txb	txbmx,0a8h	;transmit buffer
				
 0836  00			tst	db	0

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-3


					.code
					public	_rioini,_outcom,_incom,_dtr,_setbaud
				
 0000  FFFF			riods:	dw	-1		;remote i/o routine data segment value
				
				; initialize communications
				
				; clear buffers, data, program uart, enable interrupts
				
 0002				_rioini	proc
 0002  55				push	bp
 0003  8B EC				mov	bp,sp
 0005  56				push	si
 0006  57				push	di
				
 0007  8B 46 06				mov	ax,pb[bp]	;com port or uart address
 000A  0B C0				or	ax,ax
 000C  A1 0010 R			mov	ax,buart
 000F  75 07				jnz	@f		;initialize
 0011  0B C0				or	ax,ax
 0013  74 07				jz	cierr		;error, not initialized
 0015  E9 00C6 R			jmp	finis		;terminate
				
 0018  0B C0			@@:	or	ax,ax
 001A  74 06				jz	cinit		;continue, not yet initialized
 001C  B8 FFFF			cierr:	mov	ax,-1
 001F  E9 00F5 R			jmp	ciex		;return error
				
 0022  8C D8			cinit:	mov	ax,ds
 0024  2E: A3 0000 R			mov	cs:riods,ax		;save data segment
				
 0028  E8 010F R			call	ibfls			;clear input buffer
 002B  C7 44 08 0036 R			mov	bofst[si],os rxb	;set receive buffer address
 0030  E8 0117 R			call	obfls			;clear output buffer
 0033  C7 44 08 0436 R			mov	bofst[si],os txb	;set transmit buffer address
				
 0038  33 C0				xor	ax,ax
 003A  A3 0019 R			mov	mode,ax		;clear mode and state
 003D  A2 001B R			mov	txintp,al	;clear int pending
				
 0040  B8 ---- R			mov	ax,seg biosda
 0043  8E C0				mov	es,ax
 0045  8B 5E 06				mov	bx,pb[bp]	;com port or uart address
 0048  8B D3				mov	dx,bx
 004A  4B				dec	bx
 004B  83 FB 04				cmp	bx,4
 004E  73 0F				jnc	scport		;com port address specified
				
 0050  83 E3 03				and	bx,3		;com 0-3 for 1-4
 0053  03 DB				add	bx,bx		;offset (x 2)
 0055  26: 8B 17			mov	dx,es:[bx]
 0058  0B D2				or	dx,dx
 005A  75 03				jnz	scport		;port exists
 005C  E9 00E8 R			jmp	ciabt		;no such com port
				
 005F  89 16 0010 R		scport:	mov	buart,dx	;uart base address

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-4


 0063  83 C2 05				add	dx,lsr
 0066  89 16 0012 R			mov	lsrad,dx	;line status register
				
				;	mov	al,pb[bp+4]	;hardware flow control
				;	and	al,1
				;	jz	girq
				;	or	mode,ctsck	;check cts
				
 006A  8A 46 08			girq:	mov	al,pb[bp+2]	;irq line
 006D  24 07				and	al,7
 006F  75 04				jnz	irqv		;valid
 0071  24 01				and	al,1
 0073  04 03				add	al,3		;assume 4 for 1, 3 for 2
 0075  A2 0014 R		irqv:	mov	irqn,al
 0078  8A C8				mov	cl,al
 007A  B0 01				mov	al,1
 007C  D2 E0				shl	al,cl		;mask for current irq line
				;	mov	irqm,al
 007E  8A E0				mov	ah,al
 0080  50				push	ax		;save irq mask
 0081  E4 21				in	al,imr1
 0083  A2 0015 R			mov	ircr,al		;save prior enable mask
 0086  0A C4				or	al,ah
 0088  E6 21				out	imr1,al		;inhibit interrupts
 008A  8A C1				mov	al,cl		;irq number
 008C  04 08				add	al,ivb1		;add vector base
 008E  A2 0016 R			mov	siovn,al	;save sio vector
 0091  E8 00F9 R			call	gvect		;get prior vector in dx:bx
 0094  89 1E 000C R			mov	ivsio,bx
 0098  89 16 000E R			mov	ivsio+2,dx	;save prior vector
 009C  0E				push	cs
 009D  5A				pop	dx
 009E  BB 01C7 R			mov	bx,os sioisr
 00A1  E8 0102 R			call	svect		;set service routine vector in dx:bx
				
 00A4  8B 16 0010 R			mov	dx,buart
 00A8  ED				in	ax,dx		;clear%
 00A9  83 C2 04				add	dx,mcr
 00AC  B0 0B				mov	al,mcrd
 00AE  EE				out	dx,al		;modem control register
 00AF  4A				dec	dx
 00B0  B0 03				mov	al,lcrd
 00B2  EE				out	dx,al		;line control register
 00B3  4A				dec	dx
 00B4  4A				dec	dx
 00B5  B0 0B				mov	al,ierd
 00B7  EE				out	dx,al		;interrupt enable register
				
 00B8  58				pop	ax		;irq mask
 00B9  E4 21				in	al,imr1
 00BB  F6 D4				not	ah
 00BD  22 C4				and	al,ah
 00BF  E6 21				out	imr1,al		;enable interrupts
				
				;	mov	mw cs:mv2,1234h
				;	xor	ax,ax

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-5


				;	mov	si,os inims
				;	call	msout
				
 00C1  33 C0				xor	ax,ax		;return 0
 00C3  EB 30 90				jmp	ciex		;exit
				
				; terminate serial i/o operation
				
 00C6  8B 16 0010 R		finis:	mov	dx,buart
 00CA  83 C2 04				add	dx,mcr
 00CD  32 C0				xor	al,al
 00CF  EE				out	dx,al		;dtr off, release irq line
				
 00D0  A0 0016 R			mov	al,siovn	;serial i/o vector
 00D3  8B 1E 000C R			mov	bx,ivsio	;prior offset
 00D7  8B 16 000E R			mov	dx,ivsio+2	;prior segment
 00DB  E8 0102 R			call	svect		;replace original vector
				
 00DE  A0 0015 R			mov	al,ircr
 00E1  E6 21				out	imr1,al		;replace prior interrupt controller mask
 00E3  33 DB				xor	bx,bx
 00E5  EB 04 90				jmp	cterm		;return 0
				
 00E8  BB FFFF			ciabt:	mov	bx,-1
 00EB  33 C0			cterm:	xor	ax,ax
 00ED  A3 0010 R			mov	buart,ax	;not initialized
 00F0  A2 0018 R			mov	opera,al	;not operational
 00F3  8B C3				mov	ax,bx		;return code
 00F5  5F			ciex:	pop	di
 00F6  5E				pop	si
 00F7  5D				pop	bp
 00F8  CB				ret
				
 00F9				_rioini	endp
				
				
				; get interrupt vector al in dx:bx
				
 00F9  06			gvect:	push	es
 00FA  B4 35				mov	ah,35h
 00FC  CD 21				int	21h		;returns vector in es:bx
 00FE  06				push	es
 00FF  5A				pop	dx		;segment
 0100  07				pop	es
 0101  C3				ret
				
				; set interrupt vector al in dx:bx
				
 0102  1E			svect:	push	ds
 0103  52				push	dx
 0104  8E DA				mov	ds,dx		;segment
 0106  8B D3				mov	dx,bx		;offset
 0108  B4 25				mov	ah,25h
 010A  CD 21				int	21h		;takes vector in ds:dx
 010C  5A				pop	dx
 010D  1F				pop	ds

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-6


 010E  C3				ret
				
				
				; flush buffers
				
 010F  BE 001E R		ibfls:	mov	si,os rxbp	;address input buffer pointers
 0112  BB 0400				mov	bx,rxbmx	;set maximum size
 0115  EB 06				jmp	s xbfls
 0117  BE 002A R		obfls:	mov	si,os txbp	;address output buffer pointers
 011A  BB 0400				mov	bx,txbmx	;set maximum size
				
				; si -> bufp structure, bx = maximum size
				
 011D  B9 0004			xbfls:	mov	cx,os bofst/2	;pointer list length
 0120  9C				pushf
 0121  FA				cli
 0122  56				push	si
 0123  33 C0				xor	ax,ax
 0125  F3/ AB				rep	stosw		;clear pointers
 0127  5E				pop	si
 0128  89 5C 0A				mov	bsize[si],bx
 012B  9D				popf
 012C  C3				ret
				
				
				; get character from buffer, ds:si -> pointers, saves cx, dx
				
 012D  8B 04			bgetc:	mov	ax,bcnt[si]
 012F  0B C0				or	ax,ax
 0131  74 1B				jz	bgnc		;buffer empty
				
 0133  9C				pushf
 0134  FA				cli
 0135  8B 5C 08				mov	bx,bofst[si]	;buffer offset from segment
 0138  8B 7C 04				mov	di,bget[si]	;character offset from buffer
 013B  8A 01				mov	al,mb [bx+di]	;get character
 013D  47				inc	di		;advance pointer
 013E  3B 7C 0A				cmp	di,bsize[si]
 0141  72 02				jc	bggp		;pointer not past end of buffer
 0143  33 FF				xor	di,di		;reset to start
 0145  89 7C 04			bggp:	mov	bget[si],di
 0148  FF 0C				dec	bcnt[si]	;character count
 014A  9D				popf			;re-enable interrupts if disabled
 014B  0A C0				or	al,al		;character in al, clear carry
 014D  C3				ret
				
 014E  F9			bgnc:	stc
 014F  C3				ret
				
				
				; put character to buffer, ds:si -> pointers, al = char, saves ax, cx, dx
				
 0150  8B 1C			bputc:	mov	bx,bcnt[si]
 0152  3B 5C 0A			bputco:	cmp	bx,bsize[si]
 0155  73 F7				jnc	bgnc		;buffer full
				

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-7


 0157  9C				pushf
 0158  FA				cli
 0159  8B 5C 08				mov	bx,bofst[si]	;buffer offset from segment
 015C  8B 7C 02				mov	di,bput[si]	;character offset from buffer
 015F  88 01				mov	mb [bx+di],al	;put character
 0161  47				inc	di		;advance pointer
 0162  3B 7C 0A				cmp	di,bsize[si]
 0165  72 02				jc	bpgp		;pointer not past end of buffer
 0167  33 FF				xor	di,di		;reset to start
 0169  89 7C 02			bpgp:	mov	bput[si],di
 016C  FF 04				inc	bcnt[si]	;character count
 016E  9D				popf			;re-enable interrupts if disabled
 016F  F8				clc			;character in al, clear carry
 0170  C3				ret
				
				
				; sio input character
				
 0171				_incom	proc
 0171  56				push	si
 0172  57				push	di
				
 0173  BE 001E R			mov	si,os rxbp	;address receive buffer pointers
 0176  E8 012D R			call	bgetc		;get character from receive buffer
 0179  8A 26 001A R			mov	ah,state
 017D  73 05				jnc	icgc		;received character in al
 017F  80 CC 01				or	ah,1		;no character available
 0182  32 C0				xor	al,al
				
 0184  5F			icgc:	pop	di
 0185  5E				pop	si
 0186  CB				ret
 0187				_incom	endp
				
				
				; sio output character
				
 0187				_outcom	proc
 0187  32 C0				xor	al,al
 0189  8A 26 001A R			mov	ah,state
 018D  F6 C4 04				test	ah,abort
 0190  75 34				jnz	ocabt		;aborting
				
 0192  55				push	bp
 0193  8B EC				mov	bp,sp
 0195  56				push	si
 0196  57				push	di
				
 0197  8A 46 06				mov	al,pb[bp]
 019A  BE 002A R			mov	si,os txbp	;address transmit buffer pointers
				
 019D  8B 1C			ocrep:	mov	bx,bcnt[si]
 019F  0B DB				or	bx,bx
 01A1  75 19				jnz	ocbuf		;buffer not empty
				
 01A3  F6 C4 02				test	ah,hold

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-8


 01A6  75 14				jnz	ocbuf		;paused
				
 01A8  8B 16 0012 R			mov	dx,lsrad	;address line status register
 01AC  8A C8				mov	cl,al
 01AE  EC				in	al,dx
 01AF  24 20				and	al,20h		;transmit hold register empty
 01B1  8A C1				mov	al,cl
 01B3  74 07				jz	ocbuf		;interrupt pending
				
 01B5  8B 16 0010 R			mov	dx,buart	;uart base (r/w data port)
 01B9  EE				out	dx,al		;transmit character
 01BA  EB 07				jmp	s ocex		;exit
				
 01BC  E8 0152 R		ocbuf:	call	bputco		;put character to transmit buffer
 01BF  73 02				jnc	ocex		;done
				
					;check timer, exit if 2 min.
				
 01C1  EB DA				jmp	ocrep		;retry
				
 01C3  5F			ocex:	pop	di
 01C4  5E				pop	si
 01C5  5D				pop	bp
 01C6  CB			ocabt:	ret			;state in ah
 01C7				_outcom	endp
				
				
				; sio interrupt service routine
				
 01C7				sioisr	proc
 01C7  FA				cli
 01C8  50				push	ax
 01C9  53				push	bx
 01CA  51				push	cx
 01CB  52				push	dx
 01CC  56				push	si
 01CD  57				push	di
 01CE  1E				push	ds
				
 01CF  2E: A1 0000 R			mov	ax,cs:riods
 01D3  8E D8				mov	ds,ax		;i/o data segment
				
 01D5  8B 16 0012 R		isrep:	mov	dx,lsrad	;line status register
 01D9  ED				in	ax,dx		;lsr in al, msr in ah
 01DA  2E: A3 0498 R			mov	mw cs:mv2,ax	;%
 01DE  8B C8				mov	cx,ax		;save line status
 01E0  83 EA 05				sub	dx,lsr		;address r/w data port
 01E3  A8 01				test	al,1		;received data available
 01E5  74 4D				jz	txchk		;no character received
				
 01E7  A8 0C				test	al,0ch		;overrun/parity/framing error
 01E9  EC				in	al,dx		;read data
 01EA  75 48				jnz	txchk		;receive error, discard data
				
 01EC  8B 1E 0019 R			mov	bx,mode		;mode in bl, state in bh
 01F0  F6 C7 04				test	bh,abort

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-9


 01F3  75 5F				jnz	intex		;aborting
 01F5  F6 C3 04				test	bl,abort
 01F8  74 20				jz	rcpau		;not checking for abort
 01FA  3C 03				cmp	al,3		;^C
 01FC  75 1C				jnz	rcpau		;not abort character
				
 01FE  E8 010F R			call	ibfls		;flush input buffer
 0201  E8 0117 R			call	obfls		;flush output buffer
 0204  C6 06 001A R 04			mov	state,abort	;aborting
 0209  EB 49 90				jmp	intex
				
 020C  C6 06 001A R 02		rxccs:	mov	state,hold	;set pause flag
 0211  EB 21				jmp	s txchk
 0213  80 26 001A R FD		rxccq:	and	state,not hold	;clear pause flag
 0218  EB 1A				jmp	s txchk
				
 021A  F6 C3 02			rcpau:	test	bl,hold
 021D  74 08				jz	rxpch		;not checking pause
 021F  3C 13				cmp	al,13h		;^s
 0221  74 E9				jz	rxccs		;pause
 0223  3C 10				cmp	al,10h		;^q
 0225  74 EC				jz	rxccq		;resume
				
 0227  BE 001E R		rxpch:	mov	si,os rxbp	;address receive buffer
 022A  E8 0150 R			call	bputc		;put character in buffer
 022D  73 05				jnc	txchk		;done
 022F  80 0E 001C R 01			or	status,rxlost	;set receive characters lost flag
				
 0234  F6 C1 20			txchk:	test	cl,20h		;transmit hold register empty
 0237  74 1B				jz	intex		;not ready to transmit
				
 0239  BE 002A R			mov	si,os txbp	;address transmit buffer
 023C  E8 012D R			call	bgetc
 023F  72 13				jc	intex		;buffer empty
				
 0241  8B 1E 0019 R			mov	bx,mode		;mode in bl, state in bh
 0245  F6 D5				not	ch
 0247  22 EB				and	ch,bl		;mode and not msr
 0249  F6 C5 10				test	ch,ctsck	;cts checking and cts off
 024C  75 06				jnz	intex		;hardware flow off, interrupt will resume
				
 024E  F6 C7 02				test	bh,hold
 0251  75 01				jnz	intex		;paused
				
 0253  EE				out	dx,al		;transmit character
				
 0254  8B 16 0010 R		intex:	mov	dx,buart
 0258  83 C2 02				add	dx,iir
 025B  EC				in	al,dx		;reset int?
 025C  EC				in	al,dx
				;	and	al,1
				;	jnz	isrex		;more?
				;	jmp	isrep
				
 025D  2E: FF 06 0494 R			inc	mw cs:mv1
 0262  A1 001E R			mov	ax,rxbp.bcnt

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-10


 0265  2E: A3 049C R			mov	mw cs:mv3,ax
 0269  A1 002A R			mov	ax,txbp.bcnt
 026C  2E: A3 04A0 R			mov	mw cs:mv4,ax
 0270  B8 0320				mov	ax,800
 0273  BE 0285 R			mov	si,os intmsg
 0276  E8 0350 R			call	msout
				
 0279  1F			isrex:	pop	ds
 027A  5F				pop	di
 027B  5E				pop	si
 027C  5A				pop	dx
 027D  59				pop	cx
 027E  5B				pop	bx
 027F  B0 20				mov	al,20h
 0281  E6 20				out	icr1,al		;non-specific eoi
 0283  58				pop	ax
 0284  CF				iret
				
 0285  49 6E 74 65 72 72	intmsg:	db	'Interrupt �5, msr/lsr �4, rxbc �4, txbc �4    ',0
       75 70 74 20 E4 35	
       2C 20 6D 73 72 2F	
       6C 73 72 20 E8 34	
       2C 20 72 78 62 63	
       20 E8 34 2C 20 74	
       78 62 63 20 E8 34	
       20 20 20 20 00		
				
 02B4				sioisr	endp
				
				
				; set baud rate
				
 02B4				_setbaud proc
 02B4  8B 16 0010 R			mov	dx,buart	;base port address
 02B8  0B D2				or	dx,dx
 02BA  75 04				jnz	sbinit		;initialized
 02BC  33 C0				xor	ax,ax
 02BE  48				dec	ax		;-1
 02BF  CB				ret			;return error
				
 02C0  55			sbinit:	push	bp
 02C1  8B EC				mov	bp,sp
 02C3  56				push	si
 02C4  8B CA				mov	cx,dx	;%
 02C6  BE 0000 R			mov	si,os brdd	;address baud rate dividend
 02C9  8B 54 02				mov	dx,2[si]
 02CC  8B 04				mov	ax,[si]		;dividend in dx:ax
 02CE  F7 76 06				div	mw pb[bp]	;divide by parameter 1
 02D1  8B D1				mov	dx,cx	;%
 02D3  50				push	ax		;actual rate divisor for uart
 02D4  8B F2				mov	si,dx
 02D6  83 C2 03				add	dx,lcr		;address line control register
 02D9  EC				in	al,dx
 02DA  0C 80				or	al,80h
 02DC  EE				out	dx,al		;address baud rate divisor
 02DD  87 F2				xchg	si,dx

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-11


 02DF  58				pop	ax
 02E0  EF				out	dx,ax		;write baud rate divisor
 02E1  87 F2				xchg	si,dx
 02E3  EC				in	al,dx
 02E4  24 7F				and	al,7fh
 02E6  EE				out	dx,al		;address rx/tx registers, ier
 02E7  87 F2				xchg	si,dx
 02E9  ED				in	ax,dx		;clear%
				
 02EA  33 C0				xor	ax,ax		;no error
 02EC  5E				pop	si
 02ED  5D				pop	bp
 02EE  CB				ret
 02EF				_setbaud endp

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-12


				; drop dtr
				
				; n=0 (off), n=1 (on), or n>1 (off, wait n seconds for dcd off)
				
 02EF				_dtr	proc
				
 02EF  55				push	bp
 02F0  8B EC				mov	bp,sp
 02F2  B8 ---- R			mov	ax,seg biosda
 02F5  8E C0				mov	es,ax
				
 02F7  8B 16 0010 R			mov	dx,buart	;uart base port
 02FB  0B D2				or	dx,dx
 02FD  74 35				jz	dtrer		;not initialized
				
 02FF  83 C2 04				add	dx,4		;address mcr
 0302  EC				in	al,dx
 0303  24 FE				and	al,0feh		;clear dtr bit
 0305  8A 66 06				mov	ah,pb[bp]	;parameter
 0308  80 E4 0F				and	ah,0fh
 030B  80 FC 02				cmp	ah,2		;0 off, 1 on
 030E  73 07				jnc	wtdcd		;off, wait for dcd
 0310  0A C4				or	al,ah
 0312  EE				out	dx,al		;set as specified
 0313  32 C0				xor	al,al
 0315  EB 1F				jmp	s dtrck
				
 0317  EE			wtdcd:	out	dx,al		;dtr off
 0318  42				inc	dx
 0319  42				inc	dx		;address msr
				
 031A  B9 0012			twn:	mov	cx,18		;55ms/s
 031D  26: 8A 1E 006C		tws:	mov	bl,es:[6ch]	;55ms counter
 0322  EC			twt:	in	al,dx
 0323  24 80				and	al,80h		;dcd
 0325  74 0F				jz	dtrck		;done
 0327  26: 3A 1E 006C			cmp	bl,es:[6ch]	;55ms counter
 032C  74 F4				jz	twt		;wait 55ms
 032E  E2 ED				loop	tws		;wait 990ms
 0330  FE CC				dec	ah
 0332  75 E6				jnz	twn		;wait 2-x seconds
 0334  B0 FF			dtrer:	mov	al,-1		;timeout
				
 0336  8A E0			dtrck:	mov	ah,al
 0338  80 7E 06 01			cmp	mb pb[bp],1
 033C  74 10				jz	dtrex		;dtr was set
				
 033E  50				push	ax		;dtr was reset, clear state and buffers
 033F  E8 010F R			call	ibfls
 0342  E8 0117 R			call	obfls
 0345  32 C0				xor	al,al
 0347  A2 001A R			mov	state,al
 034A  A2 001C R			mov	status,al
 034D  58				pop	ax
				
 034E  5D			dtrex:	pop	bp

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-13


 034F  CB				ret
 0350				_dtr	endp
				
					include	mviow
			     C		.386P
			     C	
 = B000                      C	vseg	equ	0b000h	;video ram segment address
			     C	
			     C	;****************************************************************************
			     C	;*  									    *
			     C	;*  Procedure msout	On entry ds:si -> text, terminated with 0.	    *
			     C	;*  									    *
			     C	;*  Display message on standard output, convert parameters to hex ascii or  *
			     C	;*  decimal ascii for each �n, �n, �n in message where n=number of digits.  *
			     C	;*  Repeat character c for �nc, where n=(number of repetitions plus 30h).   *
			     C	;*  									    *
			     C	;****************************************************************************
			     C	
 = 00EA                      C	litsg	equ	'�'		;next character is to be output directly
 = 00E8                      C	hexsg	equ	'�'		;hexadecimal conversion signal
 = 00E4                      C	decsg	equ	'�'		;decimal conversion signal
 = 00E6                      C	decsgn	equ	'�'		;decimal conversion, leading spaces suppressed
 = 00E3                      C	decsgc	equ	'�'		;decimal conversion, use commas
 = 00E2                      C	repsg	equ	'�'		;repeat character signal
 = 00E0                      C	sgchk	equ	'�'		;all characters below this value are literals
			     C	
 0350                        C	msout	proc	near
 0350  66| 60                C		pushad
 0352  1E                    C		push	ds
 0353  06                    C		push	es
 0354  50                    C		push	ax
			     C	
 0355  8C C8                 C		mov	ax,cs
 0357  8E D8                 C		mov	ds,ax
 0359  8E C0                 C		mov	es,ax
 035B  BF 04B4 R             C		mov	di,os iobuf	;output buffer
 035E  BB 0494 R             C		mov	bx,os msval	;parameter list
 0361  FC                    C		cld
			     C	
 0362  AC                    C	msorc:	lodsb			;read character
 0363  3C E0                 C		cmp	al,sgchk
 0365  72 2A                 C		jc	short msowc	;not conversion character
			     C	
 0367  3C E8                 C		cmp	al,hexsg
 0369  74 44                 C		jz	short mscvh	;hex conversion character
 036B  32 F6                 C		xor	dh,dh		;decimal type flag
 036D  3C E4                 C		cmp	al,decsg
 036F  74 78                 C		jz	short mscvd	;decimal conversion
 0371  B6 40                 C		mov	dh,40h		;leading space suppress, bit 6
 0373  3C E6                 C		cmp	al,decsgn
 0375  74 72                 C		jz	short mscvd	;decimal, suppress leading spaces
 0377  D0 E6                 C		shl	dh,1		;include commas, bit 7
 0379  3C E3                 C		cmp	al,decsgc
 037B  74 6C                 C		jz	short mscvd	;decimal with commas
 037D  3C E2                 C		cmp	al,repsg
 037F  75 0B                 C		jnz	short msolc	;not repeat character

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-14


 0381  AC                    C		lodsb			;get number of repeats
 0382  2C 30                 C		sub	al,30h		;ascii zero based
 0384  0F B6 C8              C		movzx	cx,al		;count
 0387  AC                    C		lodsb			;character to repeat
 0388  F3/ AA                C		rep	stosb		;expand
 038A  EB D6                 C		jmp	short msorc
			     C	
 038C  3C EA                 C	msolc:	cmp	al,litsg
 038E  75 01                 C		jnz	short msowc	;not literal signal
 0390  AC                    C		lodsb			;no translation on character following
			     C	
 0391  AA                    C	msowc:	stosb			;write character to buffer
 0392  0A C0                 C		or	al,al
 0394  75 CC                 C		jnz	short msorc	;not at end
			     C	
 0396  BE 04B4 R             C		mov	si,os iobuf
 0399  2B FE                 C		sub	di,si		;length
 039B  4F                    C		dec	di
			     C					;	jz	msox		;what?
 039C  8B CF                 C		mov	cx,di
 039E  5F                    C		pop	di		;dest
			     C					;	mov	ah,40h
			     C					;	mov	bx,1		;stdout
			     C					;	int	21h		;write line
 039F  B8 B000               C		mov	ax,vseg
 03A2  8E C0                 C		mov	es,ax		;video segment
 03A4  B4 07                 C		mov	ah,7		;attr
 03A6  AC                    C	wrsc:	lodsb
 03A7  AB                    C		stosw
 03A8  E2 FC                 C		loop	wrsc		;write ms to screen
			     C	
 03AA  07                    C	msox:	pop	es
 03AB  1F                    C		pop	ds
 03AC  66| 61                C		popad
 03AE  C3                    C		ret
			     C	
			     C	
			     C	; Binary to Hex Ascii Conversion
			     C	
			     C	; ds:si->source text, es:di->output text, ds:bx->current binary parameter
			     C	
 03AF  AC                    C	mscvh:	lodsb			;read character after signal
 03B0  FE C8                 C		dec	al
 03B2  24 07                 C		and	al,7		;number of digits (0-7 for 1-8)
 03B4  C0 E0 02              C		shl	al,2		;times bits per digit
 03B7  0F B6 C8              C		movzx	cx,al		;number of bits minus 4
 03BA  66| 8B 07             C		mov	eax,[bx]	;get parameter
 03BD  83 C3 04              C		add	bx,4		;address next parameter
 03C0  66| D3 C8             C		ror	eax,cl		;bits 3-0 are ms digit
 03C3  C1 E9 02              C		shr	cx,2
 03C6  41                    C		inc	cx		;number of digits
			     C	
 03C7  8A F0                 C	mshxd:	mov	dh,al		;save 2 digits
 03C9  E8 03DF R             C		call	cvhn		;convert al{3:0}
 03CC  8A C6                 C		mov	al,dh		;restore 2 digits
 03CE  66| C1 C0 04          C		rol	eax,4		;pull up next digit

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-15


 03D2  E2 F3                 C		loop	mshxd
 03D4  EB 8C                 C		jmp	short msorc	;continue with text
			     C	
			     C	; Convert Binary in al to Hex Ascii at es:[di]+
			     C	;	Affects: ax, di
			     C	
 03D6  FC                    C	cvhb:	cld
 03D7  50                    C		push	ax		;save low digit
 03D8  C0 E8 04              C		shr	al,4
 03DB  E8 03DF R             C		call	cvhn		;convert high digit
 03DE  58                    C		pop	ax		;convert low digit
 03DF  24 0F                 C	cvhn:	and	al,0fh
 03E1  0C 90                 C		or	al,90h		;90-99, 9A-9F
 03E3  27                    C		daa			;90-99, 100-105
 03E4  14 40                 C		adc	al,40h		;D0-D9, 41-46
 03E6  27                    C		daa			;130-139, 41-46
 03E7  AA                    C		stosb			;store ascii 0-9, A-F
 03E8  C3                    C		ret
			     C	
			     C	
			     C	; Binary to Decimal Ascii Conversion
			     C	
			     C	; ds:si->source text, es:di->output text, ds:bx->current binary parameter
			     C	
			     C	; dh = 80h, include commas; dh = 40h, suppress leading spaces
			     C	
 03E9  AC                    C	mscvd:	lodsb			;read character after signal
 03EA  66| 33 C9             C		xor	ecx,ecx		;clear for use as index
 03ED  3C 77                 C		cmp	al,'w'
 03EF  74 07                 C		jz	short msdwp	;16-bit conversion
 03F1  3C 62                 C		cmp	al,'b'
 03F3  75 07                 C		jnz	short msdlp	;32-bit conversion
			     C	
 03F5  88 4F 01              C		mov	1[bx],cl	;8-bit conversion, zero high byte of low word
 03F8  89 4F 02              C	msdwp:	mov	2[bx],cx	;zero high word for 8/16-bit
 03FB  AC                    C		lodsb			;get next source character
			     C	
 03FC  FE C8                 C	msdlp:	dec	al
 03FE  24 0F                 C		and	al,0fh
 0400  8A C8                 C		mov	cl,al		;number of decimal digits (0-9 for 1-10)
 0402  66| 8B 2F             C		mov	ebp,[bx]	;get parameter
 0405  83 C3 04              C		add	bx,4		;update current parameter address
 0408  53                    C		push	bx
			     C	
 0409  2C 03                 C	msdsc:	sub	al,3
 040B  73 FC                 C		jnc	short msdsc	;reduce al mod 3
 040D  04 03                 C		add	al,3		;add remainder
 040F  8A D8                 C		mov	bl,al		;number of digits before first comma
 0411  56                    C		push	si		;save place in source text
			     C	
 0412  E3 49                 C		jcxz	msd1		;one digit only
 0414  67| 8D 348D 0000046C  C		lea	si,dcval[ecx*4]	;index into 10� list for number of digits
	R                    C	
			     C	
 041C  FD                    C	msdxd:	std			;count downward
 041D  66| AD                C		lodsd			;get 10� where n is current digit

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-16


 041F  FC                    C		cld			;count upward
			     C	
 0420  B2 2F                 C		mov	dl,2fh		;ascii count
 0422  FE C2                 C	msdxi:	inc	dl
 0424  78 05                 C		js	short msdov	;overflow
 0426  66| 2B E8             C		sub	ebp,eax		;subtract 10� from parameter value
 0429  73 F7                 C		jnc	short msdxi
 042B  66| 03 E8             C	msdov:	add	ebp,eax		;leave remainder
			     C	
 042E  80 FA 3A              C		cmp	dl,3ah
 0431  72 06                 C		jc	short msdno	;no overflow
 0433  F9                    C		stc
 0434  66| D1 DD             C		rcr	ebp,1		;make sure it propagates
 0437  B2 2A                 C		mov	dl,'*'		;overflow character
			     C	
 0439  0A F2                 C	msdno:	or	dh,dl		;bits 3-0 are zero if this is a leading zero
 043B  F6 C6 0F              C		test	dh,0fh		;check whether all zeros so far
 043E  8A C2                 C		mov	al,dl		;current digit
 0440  75 07                 C		jnz	short msdpc	;display non-leading-zero
 0442  B0 20                 C		mov	al,' '		;change leading zero to space
			     C	
 0444  F6 C6 40              C		test	dh,40h
 0447  75 12                 C		jnz	short msdx	;skip leading spaces and commas
			     C	
 0449  AA                    C	msdpc:	stosb			;write digit to output buffer
			     C	
 044A  0A F6                 C		or	dh,dh
 044C  79 0D                 C		jns	short msdx	;no commas
			     C	
 044E  FE CB                 C		dec	bl		;decrement comma counter
 0450  79 09                 C		jns	short msdx	;no action until zero
 0452  3C 20                 C		cmp	al,' '
 0454  74 02                 C		jz	short msdco	;leave leading space
 0456  B0 2C                 C		mov	al,','
 0458  AA                    C	msdco:	stosb			;write comma to output buffer
			     C	
 0459  B3 02                 C		mov	bl,2		;reload counter
 045B  E2 BF                 C	msdx:	loop	msdxd		;next digit
 045D  8B C5                 C	msd1:	mov	ax,bp		;last digit
 045F  3D 000A               C		cmp	ax,10
 0462  72 02                 C		jc	short msd1n	;no overflow
 0464  B0 1A                 C		mov	al,1ah		;display *
 0466  34 30                 C	msd1n:	xor	al,30h
 0468  AA                    C		stosb
			     C	
 0469  5E                    C		pop	si		;restore current index in source text
 046A  5B                    C		pop	bx		;restore current parameter index
 046B  E9 0362 R             C		jmp	msorc		;continue with text
			     C	
 046E  87 DB                 C		align	4
			     C	
 = 046C                      C	dcval	equ	$-4		;10� table
			     C	
 0470  0000000A 00000064     C		dd	10,100,1000,10000,100000,1000000
       000003E8 00002710     C	
       000186A0 000F4240     C	

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Page     1-17


 0488  00989680 05F5E100     C		dd	10000000,100000000,1000000000
       3B9ACA00              C	
			     C	
 0494                        C	msval:				;parameter list
 0494  00000000              C	mv1:	dd	0
 0498  00000000              C	mv2:	dd	0
 049C  00000000              C	mv3:	dd	0
 04A0  00000000              C	mv4:	dd	0
 04A4  00000000              C	mv5:	dd	0
 04A8  00000000              C	mv6:	dd	0
 04AC  00000000              C	mv7:	dd	0
 04B0  00000000              C	mv8:	dd	0
			     C	
 04B4  0200[                 C	iobuf:	db	512 dup (99h)	;output buffer
	   99                C	
			 ]   C	
			     C	
			     C	
 06B4                        C	msout	endp
					end


Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Symbols-1


Macros:

		N a m e			Lines

.EOPG  . . . . . . . . . . . . .  	   2
.ILIST . . . . . . . . . . . . .  	   1
ASYN . . . . . . . . . . . . . .  	   0
DA . . . . . . . . . . . . . . .  	   4
DBL  . . . . . . . . . . . . . .  	   2
DSS  . . . . . . . . . . . . . .  	   4
DSTRUC . . . . . . . . . . . . .  	   8
DV . . . . . . . . . . . . . . .  	   5
SETMOD . . . . . . . . . . . . .  	   0

Segments and Groups:

                N a m e         	Size	Length	 Align	Combine Class

BIOSDA . . . . . . . . . . . . .  	32 Bit	0000	AT	0040	
DGROUP . . . . . . . . . . . . .  	GROUP
  _DATA  . . . . . . . . . . . .  	16 Bit	0837	WORD	PUBLIC	'DATA'
RCIOLX_TEXT  . . . . . . . . . .  	16 Bit	06B4	WORD	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

AA . . . . . . . . . . . . . . .  	TEXT  .model large		
ABORT  . . . . . . . . . . . . .  	NUMBER	0004	

BCNT . . . . . . . . . . . . . .  	L WORD	0000	
BGET . . . . . . . . . . . . . .  	L WORD	0004	
BGETC  . . . . . . . . . . . . .  	L NEAR	012D	RCIOLX_TEXT
BGGP . . . . . . . . . . . . . .  	L NEAR	0145	RCIOLX_TEXT
BGNC . . . . . . . . . . . . . .  	L NEAR	014E	RCIOLX_TEXT
BOFST  . . . . . . . . . . . . .  	L WORD	0008	
BPGP . . . . . . . . . . . . . .  	L NEAR	0169	RCIOLX_TEXT
BPUT . . . . . . . . . . . . . .  	L WORD	0002	
BPUTC  . . . . . . . . . . . . .  	L NEAR	0150	RCIOLX_TEXT
BPUTCO . . . . . . . . . . . . .  	L NEAR	0152	RCIOLX_TEXT
BRDD . . . . . . . . . . . . . .  	L DWORD	0000	_DATA
BSIZE  . . . . . . . . . . . . .  	L WORD	000A	
BUART  . . . . . . . . . . . . .  	L WORD	0010	_DATA
BUFP . . . . . . . . . . . . . .  	NUMBER	000C	

CIABT  . . . . . . . . . . . . .  	L NEAR	00E8	RCIOLX_TEXT
CIERR  . . . . . . . . . . . . .  	L NEAR	001C	RCIOLX_TEXT
CIEX . . . . . . . . . . . . . .  	L NEAR	00F5	RCIOLX_TEXT
CINIT  . . . . . . . . . . . . .  	L NEAR	0022	RCIOLX_TEXT
CTERM  . . . . . . . . . . . . .  	L NEAR	00EB	RCIOLX_TEXT
CTSCK  . . . . . . . . . . . . .  	NUMBER	0010	
CVHB . . . . . . . . . . . . . .  	L NEAR	03D6	RCIOLX_TEXT
CVHN . . . . . . . . . . . . . .  	L NEAR	03DF	RCIOLX_TEXT

DCVAL  . . . . . . . . . . . . .  	NEAR	046C	RCIOLX_TEXT

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Symbols-2


DECSG  . . . . . . . . . . . . .  	NUMBER	00E4	
DECSGC . . . . . . . . . . . . .  	NUMBER	00E3	
DECSGN . . . . . . . . . . . . .  	NUMBER	00E6	
DS1  . . . . . . . . . . . . . .  	TEXT  label byte		
DS2  . . . . . . . . . . . . . .  	TEXT  label word		
DS4  . . . . . . . . . . . . . .  	TEXT  label dword		
DS6  . . . . . . . . . . . . . .  	TEXT  label fword		
DS8  . . . . . . . . . . . . . .  	TEXT  label qword		
DSSAVE . . . . . . . . . . . . .  	NUMBER	0000	
DTRCK  . . . . . . . . . . . . .  	L NEAR	0336	RCIOLX_TEXT
DTRER  . . . . . . . . . . . . .  	L NEAR	0334	RCIOLX_TEXT
DTREX  . . . . . . . . . . . . .  	L NEAR	034E	RCIOLX_TEXT

FINIS  . . . . . . . . . . . . .  	L NEAR	00C6	RCIOLX_TEXT

GIRQ . . . . . . . . . . . . . .  	L NEAR	006A	RCIOLX_TEXT
GVECT  . . . . . . . . . . . . .  	L NEAR	00F9	RCIOLX_TEXT

HEXSG  . . . . . . . . . . . . .  	NUMBER	00E8	
HOLD . . . . . . . . . . . . . .  	NUMBER	0002	

IBFLS  . . . . . . . . . . . . .  	L NEAR	010F	RCIOLX_TEXT
IC16H  . . . . . . . . . . . . .  	NUMBER	0010	
IC29D  . . . . . . . . . . . . .  	NUMBER	0003	
IC29H  . . . . . . . . . . . . .  	NUMBER	0001	
ICGC . . . . . . . . . . . . . .  	L NEAR	0184	RCIOLX_TEXT
ICR1 . . . . . . . . . . . . . .  	NUMBER	0020	
ICR2 . . . . . . . . . . . . . .  	NUMBER	00A0	
IER  . . . . . . . . . . . . . .  	NUMBER	0001	
IERD . . . . . . . . . . . . . .  	NUMBER	000B	
IIR  . . . . . . . . . . . . . .  	NUMBER	0002	
IMR1 . . . . . . . . . . . . . .  	NUMBER	0021	
IMR2 . . . . . . . . . . . . . .  	NUMBER	00A1	
INTCP  . . . . . . . . . . . . .  	L BYTE	0017	_DATA
INTEX  . . . . . . . . . . . . .  	L NEAR	0254	RCIOLX_TEXT
INTMSG . . . . . . . . . . . . .  	L NEAR	0285	RCIOLX_TEXT
IOBUF  . . . . . . . . . . . . .  	L NEAR	04B4	RCIOLX_TEXT
IRCR . . . . . . . . . . . . . .  	L BYTE	0015	_DATA
IRQN . . . . . . . . . . . . . .  	L BYTE	0014	_DATA
IRQV . . . . . . . . . . . . . .  	L NEAR	0075	RCIOLX_TEXT
ISREP  . . . . . . . . . . . . .  	L NEAR	01D5	RCIOLX_TEXT
ISREX  . . . . . . . . . . . . .  	L NEAR	0279	RCIOLX_TEXT
IV16H  . . . . . . . . . . . . .  	L DWORD	0004	_DATA
IV29H  . . . . . . . . . . . . .  	L DWORD	0008	_DATA
IVB1 . . . . . . . . . . . . . .  	NUMBER	0008	
IVB2 . . . . . . . . . . . . . .  	NUMBER	0070	
IVSIO  . . . . . . . . . . . . .  	L DWORD	000C	_DATA

LCR  . . . . . . . . . . . . . .  	NUMBER	0003	
LCRD . . . . . . . . . . . . . .  	NUMBER	0003	
LITSG  . . . . . . . . . . . . .  	NUMBER	00EA	
LSR  . . . . . . . . . . . . . .  	NUMBER	0005	
LSRAD  . . . . . . . . . . . . .  	L WORD	0012	_DATA

MB . . . . . . . . . . . . . . .  	TEXT  byte ptr		
MCR  . . . . . . . . . . . . . .  	NUMBER	0004	

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Symbols-3


MCRD . . . . . . . . . . . . . .  	NUMBER	000B	
MDLC . . . . . . . . . . . . . .  	TEXT  compact		
MDLH . . . . . . . . . . . . . .  	TEXT  huge		
MDLL . . . . . . . . . . . . . .  	TEXT  large		
MDLM . . . . . . . . . . . . . .  	TEXT  medium		
MDLS . . . . . . . . . . . . . .  	TEXT  small		
ML . . . . . . . . . . . . . . .  	TEXT  dword ptr		
MM . . . . . . . . . . . . . . .  	TEXT  l		
MODE . . . . . . . . . . . . . .  	L BYTE	0019	_DATA
MSCVD  . . . . . . . . . . . . .  	L NEAR	03E9	RCIOLX_TEXT
MSCVH  . . . . . . . . . . . . .  	L NEAR	03AF	RCIOLX_TEXT
MSD1 . . . . . . . . . . . . . .  	L NEAR	045D	RCIOLX_TEXT
MSD1N  . . . . . . . . . . . . .  	L NEAR	0466	RCIOLX_TEXT
MSDCO  . . . . . . . . . . . . .  	L NEAR	0458	RCIOLX_TEXT
MSDLP  . . . . . . . . . . . . .  	L NEAR	03FC	RCIOLX_TEXT
MSDNO  . . . . . . . . . . . . .  	L NEAR	0439	RCIOLX_TEXT
MSDOV  . . . . . . . . . . . . .  	L NEAR	042B	RCIOLX_TEXT
MSDPC  . . . . . . . . . . . . .  	L NEAR	0449	RCIOLX_TEXT
MSDSC  . . . . . . . . . . . . .  	L NEAR	0409	RCIOLX_TEXT
MSDWP  . . . . . . . . . . . . .  	L NEAR	03F8	RCIOLX_TEXT
MSDX . . . . . . . . . . . . . .  	L NEAR	045B	RCIOLX_TEXT
MSDXD  . . . . . . . . . . . . .  	L NEAR	041C	RCIOLX_TEXT
MSDXI  . . . . . . . . . . . . .  	L NEAR	0422	RCIOLX_TEXT
MSHXD  . . . . . . . . . . . . .  	L NEAR	03C7	RCIOLX_TEXT
MSOLC  . . . . . . . . . . . . .  	L NEAR	038C	RCIOLX_TEXT
MSORC  . . . . . . . . . . . . .  	L NEAR	0362	RCIOLX_TEXT
MSOUT  . . . . . . . . . . . . .  	N PROC	0350	RCIOLX_TEXT	Length = 0364
MSOWC  . . . . . . . . . . . . .  	L NEAR	0391	RCIOLX_TEXT
MSOX . . . . . . . . . . . . . .  	L NEAR	03AA	RCIOLX_TEXT
MSR  . . . . . . . . . . . . . .  	NUMBER	0006	
MSVAL  . . . . . . . . . . . . .  	L NEAR	0494	RCIOLX_TEXT
MV1  . . . . . . . . . . . . . .  	L NEAR	0494	RCIOLX_TEXT
MV2  . . . . . . . . . . . . . .  	L NEAR	0498	RCIOLX_TEXT
MV3  . . . . . . . . . . . . . .  	L NEAR	049C	RCIOLX_TEXT
MV4  . . . . . . . . . . . . . .  	L NEAR	04A0	RCIOLX_TEXT
MV5  . . . . . . . . . . . . . .  	L NEAR	04A4	RCIOLX_TEXT
MV6  . . . . . . . . . . . . . .  	L NEAR	04A8	RCIOLX_TEXT
MV7  . . . . . . . . . . . . . .  	L NEAR	04AC	RCIOLX_TEXT
MV8  . . . . . . . . . . . . . .  	L NEAR	04B0	RCIOLX_TEXT
MW . . . . . . . . . . . . . . .  	TEXT  word ptr		

OBFLS  . . . . . . . . . . . . .  	L NEAR	0117	RCIOLX_TEXT
OCABT  . . . . . . . . . . . . .  	L NEAR	01C6	RCIOLX_TEXT
OCBUF  . . . . . . . . . . . . .  	L NEAR	01BC	RCIOLX_TEXT
OCEX . . . . . . . . . . . . . .  	L NEAR	01C3	RCIOLX_TEXT
OCREP  . . . . . . . . . . . . .  	L NEAR	019D	RCIOLX_TEXT
OPERA  . . . . . . . . . . . . .  	L BYTE	0018	_DATA
OS . . . . . . . . . . . . . . .  	TEXT  offset		
OVFL . . . . . . . . . . . . . .  	L BYTE	0006	

PB . . . . . . . . . . . . . . .  	NUMBER	0006	

RCPAU  . . . . . . . . . . . . .  	L NEAR	021A	RCIOLX_TEXT
REPSG  . . . . . . . . . . . . .  	NUMBER	00E2	
RIODS  . . . . . . . . . . . . .  	L NEAR	0000	RCIOLX_TEXT
RXB  . . . . . . . . . . . . . .  	L BYTE	0036	_DATA	Length = 0400

Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11

rciolx                                                      Symbols-4


RXBMX  . . . . . . . . . . . . .  	NUMBER	0400	
RXBP . . . . . . . . . . . . . .  	L BYTE	001E	_DATA	Length = 000C
RXCCQ  . . . . . . . . . . . . .  	L NEAR	0213	RCIOLX_TEXT
RXCCS  . . . . . . . . . . . . .  	L NEAR	020C	RCIOLX_TEXT
RXLOST . . . . . . . . . . . . .  	NUMBER	0001	
RXPCH  . . . . . . . . . . . . .  	L NEAR	0227	RCIOLX_TEXT

S  . . . . . . . . . . . . . . .  	TEXT  short		
SBINIT . . . . . . . . . . . . .  	L NEAR	02C0	RCIOLX_TEXT
SCPORT . . . . . . . . . . . . .  	L NEAR	005F	RCIOLX_TEXT
SGCHK  . . . . . . . . . . . . .  	NUMBER	00E0	
SIOISR . . . . . . . . . . . . .  	F PROC	01C7	RCIOLX_TEXT	Length = 00ED
SIOVN  . . . . . . . . . . . . .  	L BYTE	0016	_DATA
STATE  . . . . . . . . . . . . .  	L BYTE	001A	_DATA
STATUS . . . . . . . . . . . . .  	L BYTE	001C	_DATA
SVECT  . . . . . . . . . . . . .  	L NEAR	0102	RCIOLX_TEXT

TST  . . . . . . . . . . . . . .  	L BYTE	0836	_DATA
TWN  . . . . . . . . . . . . . .  	L NEAR	031A	RCIOLX_TEXT
TWS  . . . . . . . . . . . . . .  	L NEAR	031D	RCIOLX_TEXT
TWT  . . . . . . . . . . . . . .  	L NEAR	0322	RCIOLX_TEXT
TXB  . . . . . . . . . . . . . .  	L BYTE	0436	_DATA	Length = 0400
TXBMX  . . . . . . . . . . . . .  	NUMBER	0400	
TXBP . . . . . . . . . . . . . .  	L BYTE	002A	_DATA	Length = 000C
TXCHK  . . . . . . . . . . . . .  	L NEAR	0234	RCIOLX_TEXT
TXINTP . . . . . . . . . . . . .  	L BYTE	001B	_DATA

VSEG . . . . . . . . . . . . . .  	NUMBER	B000	

WRSC . . . . . . . . . . . . . .  	L NEAR	03A6	RCIOLX_TEXT
WTDCD  . . . . . . . . . . . . .  	L NEAR	0317	RCIOLX_TEXT

XBFLS  . . . . . . . . . . . . .  	L NEAR	011D	RCIOLX_TEXT

@0 . . . . . . . . . . . . . . .  	L NEAR	0018	RCIOLX_TEXT
@CODE  . . . . . . . . . . . . .  	TEXT  rciolx_TEXT		
@CODESIZE  . . . . . . . . . . .  	TEXT  1		
@CPU . . . . . . . . . . . . . .  	TEXT  3471		
@DATASIZE  . . . . . . . . . . .  	TEXT  1		
@FILENAME  . . . . . . . . . . .  	TEXT  rciolx		
@VERSION . . . . . . . . . . . .  	TEXT  510		
_dtr . . . . . . . . . . . . . .  	F PROC	02EF	RCIOLX_TEXT	Global	Length = 0061
_incom . . . . . . . . . . . . .  	F PROC	0171	RCIOLX_TEXT	Global	Length = 0016
_outcom  . . . . . . . . . . . .  	F PROC	0187	RCIOLX_TEXT	Global	Length = 0040
_plst  . . . . . . . . . . . . .  	L WORD	001E	_DATA	Global
_rioini  . . . . . . . . . . . .  	F PROC	0002	RCIOLX_TEXT	Global	Length = 00F7
_setbaud . . . . . . . . . . . .  	F PROC	02B4	RCIOLX_TEXT	Global	Length = 003B


Microsoft Macro Assembler  Version 5.10                    6/5/91 16:05:11


rciolx                                                      Symbols-5






    970 Source  Lines
   1055 Total   Lines
    191 Symbols

  46990 + 355212 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.