|
|
1.1 ! root 1: ;*************************************************************************** ! 2: ; * ! 3: ; Copyright (C) 1984-1986 by Microsoft Inc. * ! 4: ; * ! 5: ;*************************************************************************** ! 6: ! 7: ! 8: ! 9: ; EGA Register Definitions. ! 10: ; ! 11: ; The following definitions are the EGA registers and values ! 12: ; used by this driver. All other registers are set up by ! 13: ; the BIOS and never altered (except the palette registers ! 14: ; which are set with a BIOS call). ! 15: ; ! 16: ; After careful examination of the Initial EGA registers for ! 17: ; the two modes supported by the driver (640x200 8 color and ! 18: ; 640x350 8 color with at least 128K RAM), all unspecified ! 19: ; bits in the following registers were found to be 0. ! 20: ! 21: ! 22: ! 23: ; Sequencer Registers Used ! 24: ! 25: rSequencer equ 03C4h ;Sequencer Address Register ! 26: ! 27: rMapMask equ 02h ;Plane Write Enable Mask ! 28: C0 equ 00000001b ;Plane C0 ! 29: C1 equ 00000010b ;Plane C1 ! 30: C2 equ 00000100b ;Plane C2 ! 31: C3 equ 00001000b ;Plane C3 ! 32: ! 33: rMisc equ 03c2h ;Misc Output Register ! 34: rCrtc equ 03d4h ;CRTC controller register ! 35: rSahr equ 0ch ;start address high register ! 36: rSalr equ 0dh ;start address low register ! 37: ! 38: rAttread equ 03dah ;Attribute read register ! 39: mDEnable equ 1 ;display enable ! 40: mLPStrobe equ 2 ;light pen strobe ! 41: mLPSwitch equ 4 ;light pen switch ! 42: mVRetrace equ 8 ;vertical retrace ! 43: ! 44: ! 45: rAttwrite equ 03c0h ;Attribute write register ! 46: rGraphics1 equ 03cch ;Graphics register 1 ! 47: rGraphics2 equ 03cah ;Graphics register 2 ! 48: ! 49: ! 50: ; Graphics Controller Registers Used ! 51: ! 52: rGraphics equ 03CEh ;Graphics Controller Address Register ! 53: ! 54: rEnableSR equ 01h ;Set/Reset Enable ! 55: ! 56: rColorComp equ 02h ;Color Compare Register ! 57: ccColor equ 00000111b ; Color goes in these three bits ! 58: ! 59: rDataRotate equ 03h ;Data Rotate Register ! 60: drRotCnt equ 00000111b ; Data Rotate Count ! 61: drSET equ 00000000b ; Data Unmodified ! 62: drAND equ 00001000b ; Data ANDed with latches ! 63: drOR equ 00010000b ; Data ORed with latches ! 64: drXOR equ 00011000b ; Data XORed with latches ! 65: ! 66: rReadMap equ 04h ;Read Map Select Register ! 67: rmC0 equ 00000000b ! 68: rmC1 equ 00000001b ! 69: rmC2 equ 00000010b ! 70: rmC3 equ 00000011b ! 71: ; rmRed equ 00000000b ; Read red plane ! 72: ; rmGreen equ 00000001b ; Read green plane ! 73: ; rmBlue equ 00000010b ; Read blue plane ! 74: ! 75: rMode equ 05h ;Mode Register ! 76: mProcWrite equ 00000000b ; Write processor data rotated ! 77: mLatchWrite equ 00000001b ; Write latched data ! 78: mColorWrite equ 00000010b ; Write processor data as color ! 79: mDataRead equ 00000000b ; Read selected plane ! 80: mColorRead equ 00001000b ; Read color compare ! 81: ! 82: rColorDontCare equ 07h ;Color Don't Care Register ! 83: ! 84: ! 85: ; Note that the Bit Mask Register works by writting 0 bits ! 86: ; in the Bit Mask Register with the data in the processor ! 87: ; latches. This will require some critical section code ! 88: ; to prevent the cursor from destroying the latched data. ! 89: ! 90: rBitMask equ 08h ;Bit Mask Register ! 91: ! 92: ! 93: ! 94: ! 95: ! 96: ! 97: ; The EGA Flags are used to indiate to the cursor code what ! 98: ; information is valid in the shadow registers: ! 99: ; ! 100: ; All - All shadow registers need to be restored ! 101: ; ! 102: ; Most - All but the MapMask needs to be restored. The ! 103: ; cursor code leaves the MapMask set for all three ! 104: ; planes on exit if this is set. ! 105: ; ! 106: ; Some - The MapMask and BitMask Register don't need to be ! 107: ; restored. The MapMask will be set for all three ! 108: ; planes, and the BitMask will be set for all bits ! 109: ; enabled for write. ! 110: ; ! 111: ; None - Registers don't have to be restored ! 112: ! 113: ! 114: EGAAll equ 4 ! 115: EGAMost equ 3 ! 116: EGASome equ 2 ! 117: EGANone equ 0 ! 118: ! 119: ! 120: ! 121: ! 122: ! 123: ; EGA specific flags for cursor coordination ! 124: ; ! 125: ; The structure is set up so a loop can be performed ! 126: ; getting the values to output and outputting them. ! 127: ; The flag values are set up to be the index of the ! 128: ; number of registers that need to be output. Some ! 129: ; routines which leave the map mask as 111b can indicate ! 130: ; that that register needn't be restored by the cursor ! 131: ; code. Since the cursor code always uses the MapMask ! 132: ; set to 111b, this saves a little time. ! 133: ! 134: ! 135: EGADef struc ! 136: ! 137: dw rGraphics ;Data Rotate Register ! 138: DataRotate dw drSet*256+rDataRotate ! 139: ! 140: dw rGraphics ;Mode Register ! 141: Mode dw (mProcWrite+mDataRead)*256+rMode ! 142: ! 143: dw rGraphics ;Bit Mask Register ! 144: Bitmask dw 0FF00h+rBitMask ! 145: ! 146: dw rSequencer ;Plane Write Enable Mask ! 147: MapMask dw (C0+C1+C2)*256+rmapMask ! 148: ! 149: ! 150: EGAFlags db EGANone ;Controlling flags ! 151: db 0 ; (msb of flags is always zero) ! 152: ! 153: EGADef ends
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.