📄 vcd.inc
字号:
;******************************************************************************
;
; (C) Copyright MICROSOFT Corp., 1989-1992
;
; Title: VCD.inc -
;
; Version: 2.00
;
; Date: 3-May-1989
;
; Author: RAP
;
;------------------------------------------------------------------------------
;
; Change log:
;
; DATE REV DESCRIPTION
; ----------- --- -----------------------------------------------------------
; 3-May-1989 RAP
; 28-Apr-1992 RAP added VCD_Acquire_Port and VCD_Free_Port services
;
;==============================================================================
Begin_Service_Table VCD
VCD_Service VCD_Get_Version, LOCAL
VCD_Service VCD_Set_Port_Global, LOCAL
VCD_Service VCD_Get_Focus, LOCAL
VCD_Service VCD_Virtualize_Port, LOCAL
; New for WFW 3.10
VCD_Service VCD_Acquire_Port, LOCAL
VCD_Service VCD_Free_Port, LOCAL
; New for WFW 3.11
VCD_Service VCD_Acquire_Port_Windows_Style,LOCAL
VCD_Service VCD_Free_Port_Windows_Style,LOCAL
VCD_Service VCD_Steal_Port_Windows_Style,LOCAL
; New For Chicago
VCD_Service VCD_Find_COM_Index,LOCAL
VCD_Service VCD_Set_Port_Global_Special,LOCAL
VCD_Service VCD_Virtualize_Port_Dynamic, LOCAL
VCD_Service VCD_Unvirtualize_Port_Dynamic, LOCAL
End_Service_Table VCD
;***********
; PM API Services
;
VCD_PM_API_Get_Version equ 0
VCD_PM_API_Get_Port_Array equ 1
VCD_PM_API_Get_Port_Behavior equ 2
VCD_PM_API_Set_Port_Behavior equ 3
VCD_PM_API_Acquire_Port equ 4
VCD_PM_API_Free_Port equ 5
VCD_PM_API_Steal_Port equ 6
ifdef NEC_98
;***********
; Command Equates
;
CMD_TXE equ 01h ; Send Enable
CMD_DTR equ 02h ; Data Terminal Ready
CMD_RXE equ 04h ; Receive Enable
CMD_RTS equ 20h ; Request to Send
;***********
; Status Equates
;
STAT_TXR equ 01h ; Send Enable
STAT_RXR equ 02h ; Receive Enable
STAT_TXE equ 04h ; Send buffer empty
STAT_INT equ 07h ; Interrupt Enable
STAT_OE equ 10h ; Overrun Error
;***********
; Interrupt Request Equates
;
IR_TXR equ 01h ; Send Enable
IR_RXR equ 04h ; Receive Enable
IR_TXE equ 01h ; Send buffer empty
;***********
; Mask Equates
;
MSK_RXR_E equ 00000001b ; 01h
MSK_TXE_E equ 00000010b ; 02h
MSK_TXR_E equ 00000100b ; 04h
MSK_INT_E equ 00000111b ; 07h
; Counter Control Word
MSK_CONT_RL equ 00110000b ; Read/Write Mask for Timer counter
COUNT_LSB_CHECK equ 00010000b
COUNT_MSB_CHECK equ 00100000b
; II
; I+------- RL0
; +-------- RL1
;
;***********
; CCU Type
;
; If you want to add CCU type, Shift CCU_RESERVE's number
; and name CCU_RESERVE's number as CCU that you want
;
CCU_16550 equ 0
CCU_8251 equ 1
CCU_8251F equ 2
CCU_8251F_IDX equ 3
CCU_RESERVE equ 4
endif
;***********
; UART ports and offsets
;
UART_PORTS equ 7 ; # of ports for UART
UART_REG_MASK equ 7
UART_BAUD_LSB equ 0 ; Least Signif. Byte of BAUD divisor
UART_BAUD_MSB equ 1 ; Most Signif. Byte of BAUD divisor
UART_RBR equ 0 ; Receive buffer register
UART_THR equ 0 ; Transmit holding register
UART_IER equ 1 ; Interrupt enble register
UART_IIR equ 2 ; Interrupt identity register
UART_LCR equ 3 ; Line control register
UART_MCR equ 4 ; Modem control register
UART_LSR equ 5 ; Line status register
UART_MSR equ 6 ; Modem status register
;***********
; Interrupt Enable Register Equates
;
IER_MS equ 08h ; Modem Status
IER_LS equ 04h ; Line Status
IER_THRE equ 02h ; Transmit Holding Register Empty
IER_DR equ 01h ; Data Ready
;***********
; Interrupt Identity Register Equates
;
IIR_NONE equ 01h ; No interrupt pending
IIR_LS equ 06h ; Line Status Interrupt
IIR_DR equ 04h ; Data Ready Interrupt
IIR_THRE equ 02h ; Transmit Holding Register Empty
IIR_MS equ 00h ; Modem Status Interrupt
;***********
; Line Control Register Equates
;
LCR_DLAB equ 80h ; Divisor Latch Access
;***********
; Modem Control Register Equates
;
MCR_INTEN equ 08h ; Interrupt Enable
MCR_RTS equ 02h ; Request to Send
MCR_DTR equ 01h ; Data Terminal Ready
MCR_Loopback equ 10h ; Enable Internal Loopback
;***********
; Line Status Register Equates
;
LSR_THRE equ 20h ; Transmit Holding Register Empty
LSR_DR equ 01h ; Data Ready
LSR_OE equ 02h ; Overrun Error
LSR_PE equ 04h ; Parity Error
LSR_FE equ 08h ; Frame Error
LSR_BI equ 10h ; Break Detected
LSR_ERRBITS equ 1Eh ; All the error bits
LSR_TXBITS equ 60h ; THRE and TEMT
;***********
; Modem Status Register Equates
;
MSR_DELTA equ 0Fh ; Modem Status DELTA bits
MSR_DCTS equ 01h ; Delta Clear to Send
MSR_DDSR equ 02h ; Delta Data Set Ready
MSR_TERI equ 04h ; Trailing Edge Ring Indicator
MSR_DRLSD equ 08h ; Delta Receive Line Signal Detect
MSR_CTS equ 10h ; Clear to Send
MSR_DSR equ 20h ; Data Set Ready
MSR_RING equ 40h ; Ring Indicator
MSR_RLSD equ 80h ; Receive Line Signal Detect
;***********
; Masks for read status flags
;
VCD_Read_LSR_Mask equ 01h ; Read Line Status Register
VCD_Read_MSR_Mask equ 02h ; Read Modem Status Register
;***********
; Flag bits for VCD_COM_Struc.VCD_Flags
;
VCD_global_port equ 00000001b
VCD_global_port_Bit equ 0
VCD_not_sharable_IRQ equ 00000010b ; Set if IRQ is not sharable
VCD_not_sharable_IRQ_Bit equ 1
VCD_IRQ_Init equ 00000100b ; Set if COM attempted to virt IRQ
VCD_IRQ_Init_Bit equ 2
VCD_Owns_IRQ equ 00001000b ; Set if COM DID virtualize IRQ
VCD_Owns_IRQ_Bit equ 3
VCD_Windows_30Drvr equ 00010000b ; Set if Windows 3.0 com driver
VCD_Windows_30Drvr_Bit equ 4
VCD_SetOwner_Event equ 00100000b ; Set if event scheduled to set owner
VCD_SetOwner_Event_Bit equ 5
VCD_Windows_Port equ 01000000b ; Set if Windows has control of this port
VCD_Windows_Port_Bit equ 6
VCD_Virtualized equ 10000000b ; Set if VCD_Virtualize_Port was called
VCD_Virtualized_Bit equ 7
VCD_Mouse_Port equ 100000000b
VCD_Mouse_Port_Bit equ 8
VCD_1st_on_IRQ equ 1000000000b ; Set if first to virtualize IRQ
VCD_1st_on_IRQ_Bit equ 9
VCD_Global_IRQ equ 10000000000b
VCD_Global_IRQ_Bit equ 10 ; Set if IRQ was unmasked when VCD
; tried to virtualize it for the 1st
; time.
VCD_AltOwnerActive equ 100000000000b
VCD_AltOwnerActiveBit equ 11 ; set if an alternate owner is waiting
; to own the port. Basically we have
; two possible (VxD/COMM.DRV) owners
; and a DOS VM as the owner.
VCD_Dynamic_Port equ 1000000000000b
VCD_Dynamic_Port_Bit equ 12 ; set if the port "arrives" after
; device Init.
;***********
; Flag bits for VCD_CB_Struc.VCD_CB_Flags
;
VCD_Contended equ 00000001b ; set if VM contended for port and lost
VCD_Contended_Bit equ 0
VCD_Assign_Failed equ 00000010b ; set if VCD_Assign failed because port
VCD_Assign_Failed_Bit equ 1 ; was owned by a VxD and a msg has
; been displayed
VCD_CB_Windows_30Drvr equ 00010000b ; Set if Windows 3.0 com driver
VCD_CB_Windows_30Drvr_Bit equ 4
VCD_CB_Windows_Port equ 01000000b ; Set if Windows has control of this port
VCD_CB_Windows_Port_Bit equ 6
VCD_Touched equ 10000000b
VCD_Touched_Bit equ 7
VCD_CB_Mouse_Port equ 100000000b
VCD_CB_Mouse_Port_Bit equ 8
VCD_CB_Initialized equ 1000000000b
VCD_CB_Initialized_Bit equ 9
VCD_PowerOn equ 10000000000b
VCD_PowerOn_Bit equ 10
.errnz VCD_CB_Windows_Port_Bit - VCD_Windows_Port_Bit
.errnz VCD_CB_Windows_30Drvr_Bit - VCD_Windows_30Drvr_Bit
.errnz VCD_CB_Mouse_Port_Bit - VCD_Mouse_Port_Bit
VCD_CB_Windows_Bits equ VCD_CB_Windows_30Drvr OR VCD_CB_Windows_Port OR VCD_CB_Mouse_Port
;******************************************************************************
; D A T A S T R U C T U R E S
;******************************************************************************
;***********
;
; Per-VM structure
;
VCD_CB_Struc STRUC
VCD_BAUD_LSB db ? ; LSB of virtual BAUD
VCD_BAUD_MSB db ? ; MSB of virtual BAUD
VCD_IER db ? ; Virtual Int Enable Reg
VCD_LCR db ? ; Virtual Line Ctrl Reg
VCD_MCR db ? ; Virtual Modem Ctrl Reg
VCD_Read_Stat db ? ; Status of LSR & MSR reads
VCD_CB_Flags dw ?
dd 4 DUP(?); reserved
ifdef NEC_98
VCD_Set_Mask db ? ; for PC-98
VCD_Set_Mode db ? ; for PC-98
VCD_Set_Command db ? ; for PC-98
VCD_Write_Data db ? ; for PC-98
VCD_Read_Data db ? ; for PC-98
VCD_Read_Status db ? ; for PC-98
VCD_Read_Signal db ? ; for PC-98
Count db 0 ; for PC-98
VCD_COM_Touched db ? ; True if COM I/O touched
db ? ; PAD TO DWORD ALIGN
dw ? ; reserved
dd 2 DUP(?); reserved
endif ; Not NEC_98
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -