Annotation of os2sdk/demos/apps/mandel/ega.inc, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.