mac-rom/Drivers/Video/JMFBDepVideoEqu.a

512 lines
18 KiB
Plaintext
Raw Normal View History

;
; File: JMFBDepVideoEqu.a
;
; Contains: Hardware-specific equates for the 4<>8/8<>24 Cards.
;
; Written by: Casey King/Mike Puckett
;
; Copyright: <09> 1986-1993 by Apple Computer, Inc., all rights reserved.
;
; This file is used in these builds: Mac32
;
;
; Change History (most recent first):
;
; <SM2> 6/14/93 kc Roll in Ludwig.
; <LW2> 3/24/93 mal Removed block xfer equ's that are now in ROMEqu.a.
; <1> 1/7/92 RB first checked in
; =============== Terror History ========================
;
; <4> 4/4/91 jmp Cleaned up conditional assembly stuff (i.e., started using
; ForRom instead of PadForOverPatch).
; <3> 2/25/91 jmp Rolled in Casey<65>s latest version, and extracted out the
; TERROR-ROM only stuff (to be INCLUDE<44>d from ComVideoEqu.a).
; <2> 1/7/91 jmp Prior to my last full build and checking this file in, I somehow
; deleted the word <20>Version<6F> from <20>RAMVersion<6F> in this file
; causing the TERROR build to break. Oops. I guess I<>ll do builds
; AFTER I check things back in next time. Sorry BG.
; <1> 1/6/91 jmp Checked into TERROR ROM for first time.
; <0> 11/19/90 jmp Formatted for use with TERROR ROM (as opposed to a
; declaration ROM), removed duplicate equates, etc<74>.
;-------------------------------------------------------------------
;
; (c) Apple Computer, Inc. 1986-1990
; All rights reserved.
;
;-------------------------------------------------------------------
;
; File : ElmerRom.a
; Author : Casey KIng
;
; These are the configuration ROM equates that are specific only to
; the MegaDeth Video Card. This includes mode information such as
; resolution and physical rowbytes, as well as hardware control
; registers on the card itself.
;
;-------------------------------------------------------------------
; Mod History :
;
; Refer to Projetor change history for revision details
;-------------------------------------------------------------------
If ForROM Then
Include 'ComVideoEqu.a'
EndIf
;---------------------------------------------------
;
; Rowbytes and page count constants
;
; These constants are closely interrelated, so check them carefully.
;
;---------------------------------------------------
; Kong rowbytes as a f(mode)
OBM100RB EQU 144
TBM100RB EQU 288
FBM100RB EQU 576
EBM100RB EQU 1152
TFBM100RB EQU 0
; Portrait rowbytes as a f(mode)
OBM57RB EQU 80
TBM57RB EQU 160
FBM57RB EQU 320
EBM57RB EQU 640
TFBM57RB EQU 0
; Standard rowbytes as a f(mode)
OBM30RB EQU 80
TBM30RB EQU 160
FBM30RB EQU 320
EBM30RB EQU 640
TFBM30RB EQU 2560 ; 2560 for quickdraw, 1920 for JMFB
; Rubik rowbytes as a f(mode)
OBM16RB EQU 64
TBM16RB EQU 128
FBM16RB EQU 256
EBM16RB EQU 512
TFBM16RB EQU 2048
; Exact non convolved PAL overscan (768 x 576) rowbytes as a f(mode).
OBM14RB EQU 1024
TBM14RB EQU 1024
FBM14RB EQU 1024
EBM14RB EQU 0
TFBM14RB EQU 0
; Exact non convolved PAL underscan (616 x 518) rowbytes as a f(mode).
OBM14uRB EQU 1024 ; round 77 up to power of 2
TBM14uRB EQU 1024 ; round 154 up to power of 2
FBM14uRB EQU 1024 ; round 308 up to power of 2
EBM14uRB EQU 1024
TFBM14uRB EQU 2560 ; ** use the same value as rs170, because the exact value (2456) is incompatible
; ** with the size of the JMFB rowbytes register (long aligned).
; Convolution cases for PAL rowbytes as a f(mode)
OBM14CRB EQU 1024
TBM14CRB EQU 1024
FBM14CRB EQU 1024
EBM14CRB EQU 1024
TFBM14CRB EQU 0
; Exact NTSC rowbytes as a f(mode). These are not used.
OBM12RB EQU 80
TBM12RB EQU 160
FBM12RB EQU 320
EBM12RB EQU 640
TFBM12RB EQU 2560 ; 2560 for quickdraw, 1920 for JMFB
; NTSC rowbytes as a f(mode)
OBM12CRB EQU 1024
TBM12CRB EQU 1024
FBM12CRB EQU 1024
EBM12CRB EQU 1024
TFBM12CRB EQU 2560
; All page counts are now zero based!!! Only GetPage will return nonzero based counts!
; Kong page counts as a f(mode)
OBMPages100A EQU 3
OBMPages100B EQU 7
TBMPages100A EQU 1
TBMPages100B EQU 3
FBMPages100A EQU 0
FBMPages100B EQU 1
EBMPages100A EQU -1 ; not enough memory so its an invalid mode
EBMPages100B EQU 0
TFBMPages100A EQU -1 ; invalid mode so page count is invalid
TFBMPages100B EQU -1 ; invalid mode so page count is invalid
; Portrait page counts as a f(mode)
OBMPages57A EQU 6
OBMPages57B EQU 14
TBMPages57A EQU 2
TBMPages57B EQU 6
FBMPages57A EQU 0
FBMPages57B EQU 2
EBMPages57A EQU -1
EBMPages57B EQU 0
TFBMPages57A EQU -1
TFBMPages57B EQU -1
; Standard page counts as a f(mode)
OBMPages30A EQU 12
OBMPages30B EQU 26
TBMPages30A EQU 5
TBMPages30B EQU 12
FBMPages30A EQU 2
FBMPages30B EQU 5
EBMPages30A EQU 0
EBMPages30B EQU 2
TFBMPages30A EQU -1
TFBMPages30B EQU 0
; Rubik page counts as a f(mode)
OBMPages16A EQU 20
OBMPages16B EQU 41
TBMPages16A EQU 9
TBMPages16B EQU 20
FBMPages16A EQU 4
FBMPages16B EQU 9
EBMPages16A EQU 1
EBMPages16B EQU 4
TFBMPages16A EQU -1
TFBMPages16B EQU 0
; PAL page counts as a f(mode), u stands for underscan, otherwise overscan
OBMPages14A EQU 0
OBMPages14Au EQU 0
TBMPages14A EQU 0
TBMPages14Au EQU 0
FBMPages14A EQU 0
FBMPages14Au EQU 0
EBMPages14A EQU 0
EBMPages14Au EQU 0
TFBMPages14A EQU -1
TFBMPages14Au EQU -1
TFBMPages14Bu EQU 0 ; there is no overscan PAL 24 bpp!
; PAL Convolution page counts as a f(mode)
OBMPages14CB EQU 0
TBMPages14CB EQU 0
FBMPages14CB EQU 0
EBMPages14CB EQU 0
TFBMPages14CB EQU -1
; NTSC page counts as a f(mode)
OBMPages12A EQU 0 ; use same rowbytes as convolution
OBMPages12B EQU 1
TBMPages12A EQU 0
TBMPages12B EQU 1
FBMPages12A EQU 0
FBMPages12B EQU 1
EBMPages12A EQU 0
EBMPages12B EQU 1
TFBMPages12A EQU -1
TFBMPages12B EQU 0
; Convolution page counts as a f(mode)
OBMPages12CA EQU 0
OBMPages12CB EQU 1
TBMPages12CA EQU 0
TBMPages12CB EQU 1
FBMPages12CA EQU 0
FBMPages12CB EQU 1
EBMPages12CA EQU 0
EBMPages12CB EQU 1
TFBMPages12CA EQU -1
TFBMPages12CB EQU -1
; Invalid page count
InvalPageCnt EQU -1
; Gray Screen Patterns
OneBitGray EQU $AAAAAAAA
TwoBitGray EQU $CCCCCCCC
FourBitGray EQU $F0F0F0F0
EightBitGray EQU $FF00FF00
TwentyFourBitGray EQU $00000000 ; upper byte is padding and is not used
; note 24 bpp dither appears backwards, but it's not!
; Invalid sRsrc ID (used to build up spID for mode to be disabled in interlaced modes)
InvalidSRsrcID EQU $F0
; Flag bits for sResource ID
fSRsrcBigScrnBit EQU 0 ; indicates if Portrait or Kong monitor (bit0 = 1 if true)
fSRsrcRGBBit EQU 2 ; indicates if monitor is BW or RGB (significant for Big Screens only)
fSRsrcOscanBit EQU 3 ; indicates if in interlaced overscan mode (must be interlaced mode)
fSRsrc24Bit EQU 4 ; indicates whether the sRsrc is based on 24 bit address or 32
fSRsrcXMemBit EQU 5 ; indicates whether the sRsrc is extended memory or not
fSRsrcMSBBit EQU 7 ; simply the most significant bit of the 8 bit sResource ID
; Raw Sense Line IDs
RGBKong EQU 0 ; raw sense line combo for RGBKong
Kong EQU 3 ; reformated sense line for all Kongs (x11)
Portrait EQU 1 ; reformated sense line for all Portraits (x01)
Standard EQU 6
_NTSC_ EQU 4
Rubik EQU 2
NoSense EQU 7
Sarnoff EQU $14 ; breakout box xtnd sense = 010100
PAL EQU $00 ; breakout box PAL xtnd sense = 000000
PALmonitor EQU $30 ; PAL monitor xtnded sense code = 110000
; Reformatted Sense Line ID's
rRGBKong EQU 7
rPAL EQU 0
; monitor sense mask for sResource ID (low 3 bits)
monSenseMask EQU 7
; Value for b1:b0 in reformatted sense line ID to signify interlaced monitor connect (low 2 bits)
interlacedScreen EQU 0 ; (bits 0:1 = 0, refer to Karnaugh map in ERS)
; Mode IDs (zero based)
Mode1BPP EQU 0
Mode2BPP EQU 1
Mode4BPP EQU 2
Mode8BPP EQU 3
Mode24BPP EQU 4
; Mode Depth IDs
Depth1BPP EQU 1
Depth2BPP EQU 2
Depth4BPP EQU 4
Depth8BPP EQU 8
Depth24BPP EQU 16
; Miscellaneous
LongDelay EQU 1000 ; long delay used in pinit h/w setup due to natl clk setup
ShortDelay EQU 5 ; short delay used in drvr
sRsrcDisable EQU 1 ; used to tell the slot mgr to disable a sRsrc
readBC EQU 4 ; used in the xtended sense scheme (drive a hi, read b and c)
readAC EQU 2 ; used in the xtended sense scheme (drive b hi, read a and c)
readAB EQU 1 ; used in the xtended sense scheme (drive c hi, read a and b)
;---------------------------------------------------
;
; Screen configuration / Bounds information
;
;---------------------------------------------------
defmBounds_T100 EQU 0 ; top in 100MHz mode
defmBounds_L100 EQU 0 ; left in 100MHz mode
defmBounds_B100 EQU 870 ; bottom in 100MHz mode
defmBounds_R100 EQU 1152 ; right in 100MHz mode
defmBounds_T57 EQU 0 ; top in 58MHz mode
defmBounds_L57 EQU 0 ; left in 58MHz mode
defmBounds_B57 EQU 870 ; bottom in 58MHz mode
defmBounds_R57 EQU 640 ; right in 58MHz mode
defmBounds_T30 EQU 0 ; top in 30MHz mode
defmBounds_L30 EQU 0 ; left in 30MHz mode
defmBounds_B30 EQU 480 ; bottom in 30MHz mode
defmBounds_R30 EQU 640 ; right in 30MHz mode
defmBounds_T16 EQU 0 ; top in 16MHz mode
defmBounds_L16 EQU 0 ; left in 16MHz mode
defmBounds_B16 EQU 384 ; bottom in 16MHz mode
defmBounds_R16 EQU 512 ; right in 16MHz mode
defmBounds_T14 EQU 0 ; top in 14MHz mode
defmBounds_L14 EQU 0 ; left in 14MHz mode
defmBounds_B14 EQU 576 ; bottom in 14MHz mode
defmBounds_R14 EQU 768 ; right in 14MHz mode
defmBounds_T14u EQU 0 ; top in 14MHz mode
defmBounds_L14u EQU 0 ; left in 14MHz mode
defmBounds_B14u EQU 480 ; bottom in 14MHz mode
defmBounds_R14u EQU 640 ; right in 14MHz mode
defmBounds_T12 EQU 0 ; top in 12MHz mode
defmBounds_L12 EQU 0 ; left in 12MHz mode
defmBounds_B12 EQU 480 ; bottom in 12MHz mode
defmBounds_R12 EQU 640 ; right in 12MHz mode
defmBounds_T12u EQU 0 ; top in 12MHz mode
defmBounds_L12u EQU 0 ; left in 12MHz mode
defmBounds_B12u EQU 384 ; bottom in 12MHz mode
defmBounds_R12u EQU 512 ; right in 12MHz mode
defmBounds_T12C EQU 0 ; top in 12MHz mode
defmBounds_L12C EQU 0 ; left in 12MHz mode
defmBounds_B12C EQU 480 ; bottom in 12MHz mode
defmBounds_R12C EQU 640 ; right in 12MHz mode
defVersion EQU 0 ; Version = 0
; The format of the following fields is upper 16 bits = integer part, and lower 16 bits = fractional part
defmHRes12 EQU $480000 ; (72 dpi) Horizontal Pixels/inch
defmVRes12 EQU $480000 ; (72 dpi) Vertical pixels/inch
defmHRes14 EQU $480000 ; (72 dpi) Horizontal Pixels/inch
defmVRes14 EQU $480000 ; (72 dpi) Vertical pixels/inch
defmHRes16 EQU $480000 ; (72 dpi) Horizontal Pixels/inch
defmVRes16 EQU $480000 ; (72 dpi) Vertical pixels/inch
defmHRes30 EQU $480000 ; (72 dpi) Horizontal Pixels/inch
defmVRes30 EQU $480000 ; (72 dpi) Vertical pixels/inch
defmHRes57 EQU $500000 ; (80 dpi) Horizontal Pixels/inch for Portrait Display
defmVRes57 EQU $500000 ; (80 dpi) Vertical pixels/inch for Portrait Display
defmHRes100 EQU $4D0000 ; (77 dpi) Horizontal Pixels/inch for 2-Page Display
defmVRes100 EQU $4D0000 ; (77 dpi) Vertical pixels/inch for 2-Page Display
defPixelType EQU 0 ; pixeltype=chunky
chunkyDirect EQU 16 ; pixeltype=chunky direct
defCmpCount EQU 1 ; Number of components in pixel
defmPlaneBytes EQU 0 ; Offset from one plane to the next
defmVertRefRate EQU 75 ; Vert refresh rate
defmDevType EQU 0 ; 0 = CLUTType
;---------------------------------------------------
;
; Hardware Definitions
;
;---------------------------------------------------
defMinorBase EQU 0 ; Video RAM Offset is 0
defmBaseOffset EQU 2560 ; base offset for the little screens (12,14,16, and 30 MHz)
defmBaseOffset12 EQU $2000 ; Offset to base of vRAM for NTSC/PAL convolution only
convBOfix EQU $1400 ; Base offset correction for interlaced convolution
specBaseOffset12 EQU 2560 ; Special base offset for ntsc to be used in 24 bpp
defmBaseOffsetBS EQU $80 ; Offset to base of vRAM for the big screens (Kong and Portrait)
defMinorLengthA EQU $80000 ; Video RAM length on 512K card
defMinorLengthB EQU $100000 ; Video RAM length on 1024K card
ROMSize EQU $4000 ;16K byte ROM
JMFB EQU $200000 ; Offset to JMFB Control Registers
Stopwatch EQU $200100 ; Offset to Stopwatch Registers
CLUT EQU $200200 ; Offset to CLUT Registers
Endeavor EQU $200300 ; Offset to Endeavor Registers
JMFBCSR EQU $00 ; Offset to Control and Status Register
JMFBLSR EQU $04 ; Offset to Load/Sync Register
JMFBVideoBase EQU $08
JMFBRowWords EQU $0C
SWICReg EQU $3C ; Offset to Stopwatch Interrupt/Control Register
SWStatusReg EQU $C0 ; Offset to Stopwatch Status Registers (used to read Interrupt state)
SWClrVInt EQU $48 ; Offset to Stopwatch Clear Vertical Interrupt
; Special bits in the JMFBCSReg and Stopwatch. Refer to the parameter documentation and the
; software ERS for a description of these flags and their importance in the hardware
; initialization process.
REFEN EQU $8 ; Refresh enable bit in JMFBCSR word
VIDGO EQU $40 ; VideoTransfer Cycle Enable bit in JMFBCSR word
PIXSEL1 EQU $2000 ; Endeavor reset bit (in the Natl board it's used to select 100 MHz or Natl)
VRSTB EQU $8000 ; Master reset bit in JMFBCSR word
MaskSenseLine EQU $F1FF ; Masks off the 3 bit sense line in JMFB CSR
SRST EQU 0 ; soft reset for Stopwatch
ENVERTI EQU 1 ; enable vertical interrupts for Stopwatch
CLRNMRQ EQU 0 ; clear NMRQ~ interrupt for Stopwatch
; Offsets to the CLUT registers
CLUTAddrReg EQU $00 ; Offset to CLUT Address Register
CLUTDataReg EQU $04 ; Offset to CLUT Data Register
CLUTPBCR EQU $08 ; Offset to CLUT Pixel Bus Control Register
; Offsets to the Endeavor registers
EndeavorM EQU $00 ; Offset to Endeavor M register
EndeavorN EQU $04 ; Offset to Endeavor N register
EndeavorExtClkSel EQU $08 ; Offset to Endeavor External Clock Select
EndeavorReserved EQU $0C ; Endeavor Reserved
EndeavorID EQU $00
NationalID EQU $FFFF
ROM EQU $F0000
; RAM test locations
TestPos EQU 1002240 ; Right past 1152x870 first page
; Equates that are used in the driver for offsets to private storage which
; is stored in the dCtlStorage field of the DCE. It must be placed here
; since 2ndInit must patch the DCE if it is the startup screen and we
; would like to use the symbolic reference. The assembler does not do
; forward referencing tho.
saveMode EQU 0 ; the current mode setting
savePage EQU saveMode+2 ; the current page setting
saveBaseAddr EQU savePage+2 ; the current base address
saveSQElPtr EQU saveBaseAddr+4 ; the SQ element pointer (for _SIntRemove).
saveGammaPtr EQU saveSQElPtr+4 ; the pointer to the Gamma correction table
GFlags EQU saveGammaPtr+4 ; flags word
saveVidParms EQU GFlags+2 ; pointer to video configuration data
saveID EQU saveVidParms+4 ; saved sense value
saveHardBase EQU saveID+2 ; hardware base address
saveMonSense EQU saveHardBase+4 ; reformatted sense line combo from videoOpen
moreGFlags EQU saveMonSense+2
saveGammaPtrHead EQU moreGFlags+2
dCtlSize EQU saveGammaPtrHead+4 ; size of dCtlStorage
; Flags within GFlags word
GrayFlag EQU 15 ; luminance mapped if GFlags(GrayFlag) = 1
IntDisFlag EQU 14 ; interrupts disabled if GFlags(IntFlag) =1
RAM512KFlag EQU 13 ; 512K vidRAM if GFlags(RAM512K) = 1
MonoFlag EQU 12 ; true if monochrome monitor
Interlaced EQU 11 ; true if 12MHz NTSC mode
DirectModeFlag EQU 10 ; true if direct mode (24 BPP) otherwise indexed
BigScreen EQU 9 ; true if Kong or Portrait, false otherwise
sRsrc32Bit EQU 8 ; true if the spID indicates it's a 32 bit sRsrc
; Flags within moreGFlags word
UnderScanFlag EQU 15
ConvOnFlag EQU 14
PALFlag EQU 13
NationalFlag EQU 12
;
; Glue for slot manager and 32 BQD
;
UnImplTrapNum EQU $09F ; low 10 bits of trap number for NGetTrapAddress
UnNamedQD32Trap EQU $303 ; low 10 bits of trap number for NGetTrapAddress
; new IDs for NuBus Block Transfer capability
;sBlockTransferInfo EQU 20
;sMaxBlockTransferCount EQU 21 ; Trident doesn't use this one (board and video sRsrc level)
;mBlockTransferInfo EQU 5
;mMaxBlockTransferCount EQU 6 ; Trident doesn't use this one (parameter list level)
allSlaveBlockSizes EQU $0000800F ; has slave block and suports 16,8,4,2 long xfers
noSlaveBlockSizes EQU $00008000
savedMode EQU 2 ; VendorUse1 offset into sPRAM record
savedSRsrcID EQU 3 ; VendorUse2 offset into sPRAM record
savedRawSRsrcID EQU 4 ; VendorUse3 offset into sPRAM record
specialFlag EQU 5
savedClockType EQU 6
;
; card-specific ID's
;
NameMacIIResID EQU 512
NameUScanResID EQU 513
NameOScanResID EQU 514
NamePortraitResID EQU 515
NameKongResID EQU 516
NameRubikResID EQU 517
NamePALUScanResID EQU 518
NamePALOScanResID EQU 519
StdGammaResID EQU 1024
KongGammaResID EQU 1025
PortraitGammaResID EQU 1026
RubikGammaResID EQU 1027
NTSCGammaResID EQU 1028