md.inc
来自「Dos6.0」· INC 代码 · 共 383 行 · 第 1/2 页
INC
383 行
LONGDELAY EQU 18 ; 1000 msecs = 1000/55.5 = 18 clock ticks.
;
; These are the values that are written into the divisor latch for the
; various baud rates. They are obtained by dividing the clock rate
; (1.8432 MHz) by 16x the desired baud rate.
;
DIV_50 EQU 900h
DIV_75 EQU 600h
DIV_110 EQU 417h
DIV_150 EQU 300h
DIV_300 EQU 180h
DIV_600 EQU 0C0h
DIV_1200 EQU 060h
DIV_1800 EQU 040h
DIV_2000 EQU 03Ah
DIV_2400 EQU 030h
DIV_3600 EQU 020h
DIV_4800 EQU 018h
DIV_7200 EQU 010h
DIV_9600 EQU 00Ch
;
;** Interrupt enable masks
;
IE_RX EQU 00000001b ; read data available
IE_TX EQU 00000010b ; transmit buffer empty
IE_LX EQU 00000100b ; line status change
IE_MX EQU 00001000b ; modem status change
;
;** Line control masks
;
LC_BMASK EQU 00000011b ; data bits mask
LC_BITS5 EQU 00000000b ; 5 data bits
LC_BITS6 EQU 00000001b ; 6 data bits
LC_BITS7 EQU 00000010b ; 7 data bits
LC_BITS8 EQU 00000011b ; 8 data bits
LC_SMASK EQU 00000100b ; stop bits mask
LC_STOP1 EQU 00000000b ; 1 stop bit
LC_STOP2 EQU 00000100b ; 2 stop bits (1.5 if 5 data bits)
LC_PMASK EQU 00111000b ; parity mask
LC_PNONE EQU 00000000b ; none parity
LC_PODD EQU 00001000b ; odd parity
LC_PEVEN EQU 00011000b ; even parity
LC_PMARK EQU 00101000b ; mark parity
LC_PSPACE EQU 00111000b ; space parity
LC_BREAK EQU 01000000b ; transmit break
LC_DLAB EQU 10000000b ; divisor latch access bit
LC_MASK EQU 01111111b ; documented line control register bits
;
;** Modem control register masks
;
MC_DTR EQU 00000001b ; data terminal ready
MC_RTS EQU 00000010b ; request to send
MC_OUT1 EQU 00000100b ; output 1
MC_OUT2 EQU 00001000b ; output 2
MC_LOOP EQU 00010000b ; loopback mode
;
;** Line status register masks
;
LS_DR EQU 00000001b ; data ready
LS_OERR EQU 00000010b ; overrun error
LS_PERR EQU 00000100b ; parity error
LS_FERR EQU 00001000b ; framing error
LS_BI EQU 00010000b ; break interrupt
LS_THRE EQU 00100000b ; TX holding register empty
LS_TSRE EQU 01000000b ; TX shift register empty
;
;** Modem status register definitions:
;
MS_DCTS EQU 00000001b ; delta clear to send
MS_DDSR EQU 00000010b ; delta data set ready
MS_TERI EQU 00000100b ; trailing edge of ring indicator
MS_DDCD EQU 00001000b ; delta receiver line signal detect
MS_CTS EQU 00010000b ; clear to send
MS_DSR EQU 00100000b ; data set ready
MS_RI EQU 01000000b ; ring indicator
MS_DCD EQU 10000000b ; receiver line signal detect
;************************************************************************
; 8 2 5 9 A D E F I N I T I O N S *
;************************************************************************
MASTER_MASK_ADDR EQU 021h ; Master's mask register addr.
SLAVE_MASK_ADDR EQU 0A1h ; Slave's mask register addr.
IRQS_PER_8259 EQU 8 ; # IRQs on each 8259A.
SELECT_IRR EQU 0Ah ; Selects int request register.
SELECT_ISR EQU 0Bh ; Selects in service register.
;****************************************************************
; P S / 2 D E F I N I T I O N S *
;****************************************************************
PS2_IRQ EQU 0Ch ; Always IRQ 12 for PS/2 mouse.
PS2_IRQ_MASK EQU 00010000b ; Bit mask for IRQ 12.
PS2_PACKETSIZE EQU 3 ; Bytes in a packet of data.
DX_SIGN EQU 00010000b ; Bit 4 is dx sign bit in status byte
DY_SIGN EQU 00100000b ; Bit 5 is dy sign bit in status byte
PS2_25PPI EQU 0 ; Value to set resolution to 25 ppi.
PS2_50PPI EQU 1 ; Value to set resolution to 50 ppi.
PS2_100PPI EQU 2 ; Value to set resolution to 100 ppi.
PS2_200PPI EQU 3 ; Value to set resolution to 200 ppi.
MCMD_RESET EQU 0FFh ; Reset mouse command
MCMD_RESEND EQU 0FEh ; Resend data to mouse
MCMD_DIAG_ERR EQU 0FCh ; Error on mouse diagnostics
MCMD_ACK EQU 0FAh ; Acknowledge
MCMD_DEFAULT EQU 0F6h
MCMD_DISABLE EQU 0F5h ; Disable Mouse command
MCMD_ENABLE EQU 0F4h ; Enable Mouse command
MCMD_RATE EQU 0F3h ; Set sampling rate
MCMD_READ_TYPE EQU 0F2h ; Read device type
MCMD_REMOTE EQU 0F0h ; Set remote mode
MCMD_ECHO EQU 0EEh ; Set wrap mode
MCMD_KILL_ECHO EQU 0ECh ; reset wrap mode
MCMD_READDATA EQU 0EBh ; Read mouse data
MCMD_STREAM EQU 0EAh ; Set stream mode
MCMD_STATUS EQU 0E9h ; Status Request
MCMD_RESOLUTION EQU 0E8h ; Set Resolution
MCMD_SCALE_2_1 EQU 0E7h ; Set scaling 2 to 1
MCMD_SCALE_1_1 EQU 0E6h ; Set scaling 1 to 1
MCMD_DIAG_OK EQU 0AAh ; Diagnostics ok
MCMD_DIAG_ID EQU 000h ; Diagnostic ID number
;
; The following codes are specific to the Microsoft PS/2 mouse
;
MCMD_MS_VERS EQU 052h ; Read current firmware version number
MCMD_MS_INPORT EQU 056h ; Read raw InPort data
MCDM_MS_DIAG EQU 059h ; enter MS diagnostices mode
MCMD_MS_READRAM EQU 05Bh ; read ram byte
;****************************************************************
; 8 0 4 2 D E F I N I T I O N S *
;****************************************************************
;
; 8042 port definitions.
;
DATA_8042 EQU 60h ; Port where data is sent to/from 8042.
CONTROL_8042 EQU 64h ; Port where commands are sent to 8042.
STATUS_8042 EQU 64h ; Port where status is read from 8042.
CRT_DATA_SEG EQU 40H ; ROM BIOS CRT Data Segment Address
;
; Status register bit definitions.
;
O_FULL EQU 01h ; 8042's output buffer is full.
I_FULL EQU 02h ; 8042's input buffer is full.
A_FULL EQU 20h ; 8042's aux output buffer is full.
;
; Command byte bit definitions.
;
AUX_DISABLED EQU 20h ; Auxiliary interface is disabled.
AUX_INT_ENABLE EQU 02h ; Auxiliary interrupts are enabled.
;
; 8042 commands.
;
CMD8042_READ_CMD EQU 020h ; Read command byte.
CMD8042_WRITE_CMD EQU 060h ; Write command byte.
CMD8042_DISABLE_AUX EQU 0A7h ; Disable auxiliary interface.
CMD8042_ENABLE_AUX EQU 0A8h ; Enable auxiliary interface.
CMD8042_TEST_AUX EQU 0A9h ; Test auxiliary interface.
CMD8042_DISABLE_KBD EQU 0ADh ; Disable keyboard.
CMD8042_ENABLE_KBD EQU 0AEh ; Enable keyboard.
CMD8042_WRITE_AUX EQU 0D4h ; Send data to auxiliary device.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?