Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
; ; ; 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
|