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.
372 lines
12 KiB
372 lines
12 KiB
;++
|
|
;
|
|
; Copyright (c) 1989 Microsoft Corporation
|
|
;
|
|
; Module Name:
|
|
;
|
|
; video.inc
|
|
;
|
|
; Abstract:
|
|
;
|
|
; This module implements the assembley definitions necessary to determine
|
|
; display adapter type.
|
|
;
|
|
; Author:
|
|
;
|
|
; Shie-Lin Tzong (shielint) 15-July-1991.
|
|
; Most of the stuff is extracted from win31 setup code.
|
|
;
|
|
; Environment:
|
|
;
|
|
; 80x86 Real Mode.
|
|
;
|
|
; Revision History:
|
|
;
|
|
;
|
|
;--
|
|
|
|
;
|
|
; Display type definitions.
|
|
; BIT 16-31 Defines video adapter type
|
|
; bit 0 0 - color; 1 - mono
|
|
; bit 1-7 Reserved
|
|
; bit 8-15 Adapter specific information.
|
|
;
|
|
|
|
VD_UNKNOWN EQU 0
|
|
VD_COLOR EQU 0
|
|
VD_MONO EQU 1
|
|
VD_VGA EQU 10000h
|
|
VD_COMPAQ_AVGA EQU 20000H
|
|
VD_COMPAQ_QVIS EQU 30000H
|
|
VD_8514 EQU 40000H
|
|
VD_GENOA_VGA EQU 50000H
|
|
VD_VIDEO7_VGA EQU 60000H
|
|
VD_TRIDENT_VGA EQU 70000H
|
|
VD_PARADISE_VGA EQU 80000H
|
|
VD_ATI_VGA EQU 90000H
|
|
VD_TSENGLAB_VGA EQU 0A0000H
|
|
VD_CIRRUS_VGA EQU 0B0000H
|
|
VD_DELL_DGX EQU 0C0000H
|
|
VD_S3 EQU 0D0000H
|
|
VD_NCR_77C22 EQU 0E0000H
|
|
VD_WD_90C EQU 0F0000H
|
|
VD_XGA EQU 100000H
|
|
IFDEF NEC_98
|
|
VD_PC9801 EQU 010000h
|
|
ENDIF ; NEC_98
|
|
|
|
;
|
|
; Monitor type for 8514
|
|
; NOte, 0 is not used.
|
|
;
|
|
|
|
VF_MONITOR_VGA EQU 100h ; Stand VGA
|
|
VF_MONITOR_MONO_8503 EQU 200h ; mono 8503
|
|
VF_MONITOR_GAD_8514 EQU 300h ; 8514 type monitor
|
|
|
|
;
|
|
; Video 7 VGA specific flags
|
|
;
|
|
|
|
VF_V7_VRAM EQU 100H
|
|
VF_V7_DRAM EQU 200H
|
|
|
|
;
|
|
; NCR 77C2x specific flags
|
|
;
|
|
|
|
VF_NCR_77C22E EQU 100H
|
|
|
|
;
|
|
; WD90Cxx specific flags
|
|
;
|
|
|
|
VF_WD_00 EQU 100H
|
|
VF_WD_30 EQU 200H
|
|
VF_WD_31 EQU 300H
|
|
|
|
;
|
|
; Trident VGA specific flags
|
|
;
|
|
|
|
VF_TVGA_9100 EQU 100h
|
|
|
|
;
|
|
; Paradise VGA specific flags
|
|
;
|
|
|
|
VF_PVGA_PROM EQU 100h ; with Paradise ROM
|
|
VF_PVGA_CHIP_1F EQU 200h ; with 1F chip
|
|
|
|
;
|
|
; ATI VGA specific flags
|
|
;
|
|
|
|
VF_ATIVGA_WONDDER3 EQU 100h
|
|
|
|
;
|
|
; Tseng Lab VGA specific flags
|
|
;
|
|
|
|
VF_TLVGA_ET3000 EQU 0
|
|
VF_TLVGA_ET4000 EQU 100h
|
|
|
|
;
|
|
; Cirrus Logic VGA specific definitions
|
|
;
|
|
|
|
VF_CLVGA_REVC EQU 100h ; 610/620 rev C
|
|
;
|
|
; 070193 - adrianc
|
|
; Added the Cirrus chip detection for COMPAQ servers.
|
|
;
|
|
VF_CLVGA_5420r0 EQU 200h ; COMPAQ Cirrus implementations
|
|
VF_CLVGA_5420r1 EQU 300h
|
|
VF_CLVGA_5428 EQU 400h
|
|
VF_CLVGA_542x EQU 500h
|
|
|
|
;
|
|
; Equates for 8514 register ports.
|
|
;
|
|
|
|
ERR_TERM equ 92e8h ; 8514 error term register.
|
|
SUBSYS_STAT equ 42e8h ; 8514 Subsystem status register.
|
|
|
|
;
|
|
; Video display register equates
|
|
; ...Colr are for CGA and EGA color modes
|
|
; ...Mono are for EGA/VGA monochrome modes
|
|
;
|
|
;NAMING CONVENTIONS
|
|
; pXXXXX is a I/O port definition
|
|
; fXXXXX is a bit mask
|
|
; bXXXXX is a bit number
|
|
; mXXXXX is a bit mask (multiple fXXXX)
|
|
; vXXXXX is a value to output/input to/from a port
|
|
; xXXXXX is a specific index
|
|
|
|
;
|
|
; CRT registers
|
|
;
|
|
|
|
pCRTCIndxColr EQU 3D4h ; CRTC index register
|
|
pCRTCIndxMono EQU 3B4h
|
|
|
|
pCRTCDataColr EQU 3D5h ; CRTC data register
|
|
pCRTCDataMono EQU 3B5h
|
|
|
|
; Status register
|
|
;
|
|
|
|
pStatColr EQU 3DAh ; Status register
|
|
pStatMono EQU 3BAh
|
|
fStatEna EQU 00000001b ; Video RAM access OK for processor
|
|
fStatLPTr EQU 00000010b ; Light pen triggered
|
|
fStatLPSw EQU 00000100b ; Light pen switch is "on"
|
|
fStatVRTC EQU 00001000b ; Vertical retrace in progress
|
|
mStat_IVal EQU fStatEna+fStatVRTC ; Initial value for pseudo status
|
|
|
|
;
|
|
; Feature control
|
|
;
|
|
|
|
pFeatColr EQU pStatColr ; Feature control
|
|
pFeatMono EQU pStatMono
|
|
pFeatVGAIn EQU 3CAh ; VGA feature control read
|
|
fFeatFC0 EQU 00000001b ; FC0
|
|
fFeatFC1 EQU 00000010b ; FC1
|
|
|
|
;
|
|
; Light pen
|
|
;
|
|
|
|
pLPen1Colr EQU 3DBh ; Light pen latch clear
|
|
pLPen1Mono EQU 3BBh
|
|
pLPen2Colr EQU 3DCh ; Light pen latch set
|
|
pLPen2Mono EQU 3BCh
|
|
|
|
;
|
|
; Misc input/output
|
|
;
|
|
|
|
pMisc EQU 3C2h ; Miscellaneous output
|
|
pMiscIn EQU 3CCh ; VGA read Misc. output
|
|
fMiscPNum EQU 00000001b ; 3Dx port numbers(vs. 3Bx)
|
|
fMiscREna EQU 00000010b ; Ram enable
|
|
fMiscDot EQU 00001100b ; Dot clock select
|
|
fMiscOSrc EQU 00010000b ; Output source
|
|
fMiscPage EQU 00100000b ; Page bit for odd/even mode
|
|
fMiscHPol EQU 01000000b ; Horizontal retrace polarity
|
|
fMiscVPol EQU 10000000b ; Vertical retrace polarity
|
|
mMiscCRTC EQU fMiscREna+fMiscPage ; Mask for CRTC bits
|
|
mMiscMemC EQU 0FFh - mMiscCRTC ; Mask for MemC bits
|
|
|
|
;
|
|
; Misc. status
|
|
;
|
|
|
|
pStt0EGA EQU pMisc ; Miscellaneous status
|
|
fStt0Swit EQU 00010000b ; Switch sense(addr'd by dot clk sel)
|
|
fStt0FCI0 EQU 00100000b ; Feature card input 0
|
|
fStt0FCI1 EQU 01000000b ; Feature card input 1
|
|
fStt0VRTC EQU 10000000b ; VRTC
|
|
|
|
;
|
|
; Attribute control
|
|
;
|
|
|
|
pAttr EQU 3C0h ; Attribute(palette) address/data
|
|
fVAI_Indx EQU 10000000b ; sign bit of Attribute index is
|
|
bVAI_Indx EQU 7 ; flag indicating port is index
|
|
fVAI_ScOn EQU 00100000b ; Indicates screen is on
|
|
bVAI_ScOn EQU 5
|
|
|
|
;
|
|
; Sequencer
|
|
;
|
|
|
|
pSeqIndx EQU 3C4h ; Sequencer address
|
|
pSeqData EQU 3C5h ; Sequencer data
|
|
fSeq0ARst EQU 00000001b ; 0:Async reset
|
|
fSeq0SRst EQU 00000010b ; 0:Sync reset
|
|
fSeq1DPCh EQU 00000001b ; 1:Dots per character
|
|
fSeq1BWid EQU 00000010b ; 1:Band Width
|
|
fSeq1ShLd EQU 00000100b ; 1:Shift load(0=every char, 1=skip)
|
|
fSeq1DClk EQU 00001000b ; 1:Dot clock(=1 if halved)
|
|
mSeq2WMsk EQU 00001111b ; 2:Write mask
|
|
mSeq3ChrB EQU 00000011b ; 3:Char map B select(attr bit 3 = 0)
|
|
mSeq3ChrA EQU 00001100b ; 3:Char map A select(attr bit 3 = 1)
|
|
fSeq4Alph EQU 00000001b ; 4:Alpha mode(char gen enabled)
|
|
fSeq4ExtM EQU 00000010b ; 4:Extended memory installed
|
|
fSeq4SqAd EQU 00000100b ; 4:Seq'l mem addr'ing(vs. odd/even)
|
|
fSeq4Chain4 EQU 00001000b ; 4:Chain 4 (double odd/even) for
|
|
; 256 color (mode 13)
|
|
|
|
fSeqF9extpgsel EQU 00000001b ;V7F9:Extended page select
|
|
fSeqFCext256m EQU 00000010b ;V7FC:Extended 256 color mode
|
|
fSeqFCext256e EQU 00000100b ;V7FC:Extended 256 color enable
|
|
fSeqFCseqChain4 EQU 00100000b ;V7FC:Sequential Chain 4
|
|
|
|
;
|
|
; Graphic controller
|
|
;
|
|
|
|
pGrp1Pos EQU 3CCh ; Graphics posn 1(=0)
|
|
pGrp2Pos EQU 3CAh ; Graphics posn 2(=1)
|
|
pGrpIndx EQU 3CEh ; Graphics controller address
|
|
pGrpData EQU 3CFh ; Graphics controller data
|
|
fGrp0StV0 EQU 00000001b ; 0:Value for plane 0 if enabled
|
|
fGrp0StV1 EQU 00000010b ; 0:Value for plane 1 if enabled
|
|
fGrp0StV2 EQU 00000100b ; 0:Value for plane 2 if enabled
|
|
fGrp0StV3 EQU 00001000b ; 0:Value for plane 3 if enabled
|
|
fGrp1Ena0 EQU 00000001b ; 1:Enable for plane 0
|
|
fGrp1Ena1 EQU 00000010b ; 1:Enable for plane 1
|
|
fGrp1Ena2 EQU 00000100b ; 1:Enable for plane 2
|
|
fGrp1Ena3 EQU 00001000b ; 1:Enable for plane 3
|
|
mGrp2Colr EQU 00001111b ; 2:Color compare value
|
|
mGrp3RCnt EQU 00000111b ; 3:Rotate left count for mode 0
|
|
mGrp3Func EQU 00011000b ; 3:Function for modes 0 and 2
|
|
mGrp4RMsk EQU 00000111b ; 4:Read map select
|
|
mGrp5WMod EQU 00000011b ; 5:Write mode
|
|
fGrp5Test EQU 00000100b ; 5:Test condition
|
|
fGrp5RMod EQU 00001000b ; 5:Read mode(0=plane,1=compare)
|
|
fGrp5SqAd EQU 00010000b ; 5:Seq'l mem addr'ing(vs. odd/even)
|
|
fGrp5CGA EQU 00100000b ; 5:CGA 4 color mode addressing
|
|
fGrp6Char EQU 00000001b ; 6:Char or graphics
|
|
fGrp6Chain EQU 00000010b ; 6:Chain odd maps after even
|
|
mGrp6Addr EQU 00001100b ; 6:Processor view of VRAM start addr
|
|
; 00=A000 for 128kb
|
|
; 01=A000 for 64kb
|
|
; 10=B000 for 32kb
|
|
; 11=B800 for 32kb
|
|
bGrp6Addr EQU 2 ; First of 2 bits for start addr
|
|
mGrp7Colr EQU 00001111b ; 7:Color don't care for read compare
|
|
; 8:Mask: use latch value vs. data
|
|
|
|
;
|
|
; VGA subsystem enable
|
|
;
|
|
|
|
pVGAEna EQU 3C3h ; VGA enable register
|
|
fVGAEna EQU 00000001b ; Enable access to VGA
|
|
|
|
;
|
|
; VGA DAC
|
|
;
|
|
|
|
pDACWindx EQU 3C8h ; DAC Write index(R/W)
|
|
pDACRindx EQU 3C7h ; DAC Read index(RO)
|
|
pDACState EQU pDACRindx ; DAC state
|
|
pDACData EQU 3C9h ; DAC data(3 successive accesses)
|
|
pDACMask EQU 3CAh ; DAC mask
|
|
|
|
;
|
|
; VGA read access to write only registers
|
|
;
|
|
|
|
pMiscRead EQU 3CCh ; Port to read Misc output register
|
|
pFeatRead EQU 3CAh ; Port to read Feature output register
|
|
|
|
;
|
|
; 8514 DAC
|
|
;
|
|
|
|
p8514DACWindx EQU 2ECh ; DAC Write index(R/W)
|
|
p8514DACRindx EQU 2EBh ; DAC Read index(RO)
|
|
p8514DACState EQU pDACRindx ; DAC state
|
|
p8514DACData EQU 2EDh ; DAC data(3 successive accesses)
|
|
|
|
;
|
|
; values returned from reads of port pDACState:
|
|
;
|
|
|
|
vDAC_Read_Mode EQU 0
|
|
vDAC_Write_Mode EQU 3
|
|
|
|
|
|
xC_CTMiscRead EQU 0Fh ; CHIPS Misc output read index
|
|
xC_CTFeatRead EQU 0Eh ; CHIPS Feat output read index
|
|
xC_CT400 EQU 0F9h ; CHIPS 400 line reg index
|
|
xC_CTTempFE EQU 0FEh ; CHIPS CRTC temp reg FEh
|
|
xG_CTCtl EQU 0F7h ; CHIPS control reg index
|
|
|
|
;
|
|
|
|
pCMode EQU 3C6h ; Control mode(Compaq specific)
|
|
|
|
ATiVGA_extended_reg EQU 01ceh
|
|
|
|
TVGA_3C5_B_WrMode equ 0
|
|
TVGA_3C5_B_RdMode equ 1
|
|
|
|
;
|
|
; Definition for IBM XGA video adapter Id.
|
|
;
|
|
|
|
IBM_XGA_ID_LOW EQU 8FD8h
|
|
IBM_XGA_ID_HIGH EQU 8FDBh
|
|
MCA_POS_DATA_SIZE EQU 6
|
|
|
|
;
|
|
; Misc. V7 VRAM definitions
|
|
;
|
|
|
|
VRAM2_ROM_ID_1 EQU 108h
|
|
VRAM2_ROM_ID_2 EQU 208h
|
|
VRAM2ERGO_ROM_ID EQU 308h
|
|
V7_ID_OFFSET EQU 86h ; The offset to V7VGA ROM id
|
|
|
|
;
|
|
; WD extended registers
|
|
;
|
|
|
|
WD_EXT_IO_PORT EQU 23C0h
|
|
|
|
;
|
|
; Misc. definitions
|
|
;
|
|
|
|
FONT_POINTERS EQU 700h ; physical addr to store font pointers
|
|
; This is also the DOS loaded area
|
|
VIDEO_SEG EQU 0C000h ; Video memory segment
|