summaryrefslogblamecommitdiffstats
path: root/private/mvdm/sim16/sim16.inc
blob: 6c1e33ff80177c6325280fbb81d6015a581720a5 (plain) (tree)














































































































































                                                                             
;
;
;   Serial driver for COM1 to be used by Sim16 layer.
;
;
CharDev     EQU     8000h
StatusError EQU     8000h
StatusBusy  EQU     0200h
StatusDone  EQU     0100h
ErrorGenF   EQU     12

;
;   PIC Addresses
;

PIC	    EQU     20h
PIC_IntEnable EQU   21h
EOI	    EQU     20h

;
;   UART Port Addresses
;

SERIALPORT  EQU     3F8h	; default serial port to be used, change this
				; to 2F8h if you want to use COM2.

RxBuf	    EQU     0F8h	; base address
Baud1	    EQU     RxBuf+1	; baud divisor high byte
IER	    EQU     RxBuf+1	; int. enable register
IIR	    EQU     RxBuf+2	; int. identification register
LCR	    EQU     RxBuf+3	;
MCR	    EQU     RxBuf+4	;
LSR	    EQU     RxBuf+5	;
MSR	    EQU     RxBuf+6	;

;   UART Interrupt Identification Register Equates

IntPending  EQU     00000001b	; interrupt is pending

;   UART Line Control Register Equates

DLAB	    EQU     10000000b	; divisor latch access bit
SetBrk	    EQU     01000000b	; send break control bit
StkParity   EQU     00100000b	; stick parity control bit
EvenParity  EQU     00010000b	; even parity bit
GenParity   EQU     00001000b	; generate parity bit
XStopBit    EQU     00000100b	; extra stop bit
WordLen8    EQU     00000011b	; word len = 8
WordLen7    EQU     00000010b	; word len = 7
WordLen6    EQU     00000001b	; word len = 6

;   UART Line Status Register Equates

TransShReg  EQU     01000000b	; tranmit shift register empty
TransHReg   EQU     00100000b	; transmit holding register empty
BrkRcv	    EQU     00010000b	; break received
FrameErr    EQU     00001000b	; framing error
ParityErr   EQU     00000100b	; parity error
OverRunErr  EQU     00000010b	; overrun error
RcvData     EQU     00000001b	; received data ready

RcvError    EQU     BrkRcv+FrameErr+ParityErr+OverRunErr

;   UART Modem Control Register Equates

OUT1	    EQU     00000100b	;
OUT2	    EQU     00001000b	; allow 8250 ints in
SetRTS	    EQU     00000010b	; set RTS
SetDTR	    EQU     00000001b	; set DTR


;   UART Modem Status Register Equates

CD	    EQU     10000000b	; carrier detect
RI	    EQU     01000000b	; ring indicator
DSR	    EQU     00100000b	; data set ready
CTS	    EQU     00010000b	; CTS
CDC	    EQU     00001000b	; carrier dectect change
RIC	    EQU     00000100b	; ring indicator change
DSRC	    EQU     00000010b	; DSR change
CTSC	    EQU     00000001b	; CTS change

;   UART Interrupt Enable Register Equates

RxInt	    EQU     00000001b	; receive interrupt
TxInt	    EQU     00000010b	; transmit interrupt
LSInt	    EQU     00000100b	; line status interrupt
MSInt	    EQU     00001000b	; modem status interrupt
AllInt	    EQU     RxInt+LSInt+MSInt

CR	    EQU     0dh
LF	    EQU     0ah
EOM	    EQU     '$'


INT21	    =	21h
DISPLAY_FUNCTION    =	9h
DOS_OPEN    =	3Dh
DOS_CLOSE   =	3Eh
DOS_DONE    =	0100h
DOS_SUCCESS =	0h
DOS_ERROR   =	8000h
DOS_GENFAIL =	0Ch
EXPR_TYPE_SEG		equ	0001b	    ; address type segment:offset
OPEN_FLAG   = 40h

InitLCR     EQU      03h		    ; initial LCR settings
InitMCR     EQU      OUT2+SetRTS+SetDTR     ; initial MCR settings
BaudRate    EQU     12			    ; set it to 9600 BPS

SOH	    EQU     1			   ; start of header
EOT	    EQU     4			   ; end of transmission
ToWOW32     EQU     1
GETMEM	    EQU     2
SETMEM	    EQU     3
WAKEUP	    EQU     4
RESP	    EQU     5
ACK	    EQU     6
NAK	    EQU     7
PSZ	    EQU     8

MAXCOUNT    EQU     10

Packet1 STRUC
    Start   DB	    ?
    Command DB	    ?
    Len     DW	    ?
    ToWOW32_OFF DW  ?
    ToWOW32_SEL DW  ?
Packet1 ENDS

Packet2 STRUC
	    DD	    ?
    MEM_OFF DW	    ?
    MEM_SEL DW	    ?
    MEM_LENGTH DW   ?
    DataM   DB	    ?
Packet2 ENDS

junk1	STRUC
    _off    DW	?
    _sel    DW	?
junk1	ENDS