home *** CD-ROM | disk | FTP | other *** search
/ ftp.gamers.org / ftp.gamers.org.zip / ftp.gamers.org / pub / games / uwp-uml / game-dev / docs / rgp-ibm < prev   
Text File  |  1993-06-08  |  29KB  |  635 lines

  1. --------------------------------------------------------------------------------
  2. REC.GAMES.PROGRAMMER     IBM FAQ     Contents
  3. --------------------------------------------------------------------------------
  4. LEGAL
  5.  
  6. This document is FREE! (so are dumb looks) It is for your self
  7. enlightenment.  No warranty is provided for this information.
  8. The accuracy of the information contained herein is subject to
  9. conjecture.  Therefore the editors and contributers will take NO
  10. liability for improper use, misuse, or abuse of this information,
  11. and any damage to ANYTHING or ANYONE whether physical, financial,
  12. etc. in no way, shape, or form can be attributed to this document.
  13. Use this information at you OWN risk.
  14.  
  15. The above statement is to keep those who contributed and the
  16. editor free from personal injury for being nice.
  17.  
  18. Special thanks to:
  19. Email: D91-SJD@TEKN.HJ.SE
  20. jas37876@uxa.cso.uiuc.edu (John A. Slagel)
  21.  
  22. If you wish to contribute CODE be sure it's something you DO NOT
  23. wish to COPYRIGHT!
  24.  
  25. All contributions and suggestions should be sent to me at:
  26. Cyberman@toz.buffalo.ny.us
  27. place in subject header
  28.  
  29. RGP.FAQ.*
  30. where * is any of the following
  31.     SUGGESTION      - to suggest Adding an area (I recommend that
  32.                         you send the information if you want it
  33.                         added)
  34.     ADD             - an addition (ie TBA's [see KEY for what TBA
  35.                         means])
  36.     EDIT            - for a correction somewhere (it is suggested
  37.                         contributers do there own editing)
  38.     FLAME           - complaints - I'll read these but be sure to
  39.                         be tasteful in you commentary.  You may or
  40.                         may NOT get a reply.
  41.  
  42. For now I'm going to use my personal mail account.  So please be
  43. careful.
  44.  
  45. Format:
  46. There are several categories and each category contains it's
  47. relevant questions as suggested.
  48.  
  49. Key:
  50. TBA - To Be Added
  51. [Frequently Asked Questions about VGA]
  52. Q1.1    How do I program in mode xxx on my XXX?
  53. Q1.2    What is modeX?
  54. Q1.3    How do I program the VGA?
  55. [Frequently Asked Questions about Sound Cards]
  56. Q2.1    How do I program my XXX?
  57.  
  58. --------------------------------------------------------------------------------
  59. REC.GAMES.PROGRAMMER     IBM FAQ        VGA
  60. --------------------------------------------------------------------------------
  61. Q1.1    How do I program in mode xxx on my XXX?
  62.  
  63.     Perhaps the most frustrating thing that has ever been done is
  64.     the plithera of extended VGA modes.  Unfortunately on the VGA
  65.     is general enough for this FAQ to cover.  There is much too
  66.     much to know about other mode other than those supported by
  67.     VGA, that can be covered in such a SMALL amount of FAQ room.
  68.  
  69. Q1.2    What is modeX?
  70.  
  71.      The VGA card has 256K of memory built into it.  It uses the 64K 
  72.      segment located at segment A000 for a "frame" into the 256K of
  73.      memory.  In other words, when you write to A000, the VGA card 
  74.      wakes up, grabs the data, and puts it somewhere in its 256K of
  75.      memory. 
  76.  
  77.      In VGA's mode 13H, the pixels are stored in planes like this:
  78.      (x,y) = 1 byte of pixel data for location x,y
  79.  
  80.                           ---------------------
  81.       Plane 3           | 3,0 | 7,0 | 11,0 | ...
  82.                        ---------------------
  83.       Plane 2        | 2,0 | 6,0 | 10,0 | ...
  84.                    --------------------
  85.       Plane 1    | 1,0 | 5,0 | 9,0 | ...
  86.                 --------------------
  87.       Plane 0   | 0,0 | 4,0 | 8,0 | ...
  88.                 | 0,1 | 4,1 | 8,1 | ...
  89.         .
  90.         .
  91.      
  92.       In mode 13h, you access a pixel by using a 16-bit offset into
  93.       the video frame.  The VGA card takes the lower 2 bits and uses this
  94.       to select the plane that the byte will go to.  The other 14 bits
  95.       are used as the offset into the plane. This is what is called
  96.       "chain 4" mode.
  97.  
  98.       ModeX is identical to mode 13h, but "chain 4" mode is turned
  99.       off so that now when you access the VGA card with a 16-bit offset
  100.       into the video frame, it uses the "Map Mask" register value to 
  101.       determine what plane to write to and then uses your 16-bit offset
  102.       to offset into the plane.  In other words, you now have an 18-bit
  103.       address by using a 16-bit pointer and a 2-bit out.  This allows you
  104.       to then access all 256K of the VGA memory, at the expense of having
  105.       to do an OUT for every pixel.
  106.  
  107.       But remember, internally, the data is stored *IDENTICALLY*.
  108.  
  109.       You just have to choose between a "slow" 18-bit pointer or
  110.       a "fast" 16-bit pointer to decide whether to use ModeX or not.
  111.  
  112. Q1.3    How do I program the VGA?
  113.  
  114.     Well the following should help, there are several books on
  115.     programing the VGA chipset.  If the following appears
  116.     complicated, sorry such is the nature of VGA!
  117.  
  118. Documentation over the I/O registers for standard VGA-cards
  119.  
  120. Documentated by Shaggy of The Yellow One.
  121.  
  122. Email: D91-SJD@TEKN.HJ.SE
  123.  
  124. Feel free to spread this to who ever wants it.....
  125. ------------------------------------------------------------
  126. Port-Index:  -               Port: Write/03c2h Read/03cch
  127. usage:       d7   Vertical sync polarity
  128.              d6   Horizontal sunc polarity
  129.              d5   Odd /even page
  130.              d4   Disable video
  131.              d3   Clock select 1
  132.              d2   Clock select 0
  133.              d1   Enable/Disable display RAM
  134.              d0   I/O address select
  135. Description: Sync polarity: Bits are set as below for VGA displays
  136.              that use sync polarity to determine screen resolution.
  137.              Many newer multiple frequency displays are insensitive
  138.              to sync polarity
  139.  
  140.              d7 d6      Resolution
  141.              0  0       Invalid
  142.              0  1       400 lines
  143.              1  0       350 lines
  144.              1  1       480 lines
  145.  
  146.              I/o address select: When set to zero, selects the
  147.              monochrome I/O address space (3bx). When set to one,
  148.              it selects the color I/O address space (3dx)
  149.  
  150. ------------------------------------------------------------
  151. Port-Index: -                Port: 03c2h ; read only
  152. usage:      d7    Vertical Retrace Interrupt pendling
  153.             d6    Feature connector bit 1
  154.             d5    Feature connector bit 0
  155.             d4    Switch sense
  156.             d0-d3 Unused
  157.  
  158. Description: d7 uses IRQ2
  159.  
  160. ------------------------------------------------------------
  161. Port-Index: -                Port: 03bah,03dah ; read only
  162. usage:      d3  Vertical retrace
  163.             d0  Horizontal retrace
  164.  
  165. ------------------------------------------------------------
  166. Port-Index: -                Port: 03c3h,46e8h
  167. usage:      d7-d1  Reserved
  168.             d0     VGA enable/disable (03c3h only)
  169.  
  170. Description: Disables access to display memmory and the other
  171.              VGA's ports
  172.  
  173. ------------------------------------------------------------
  174. Port-Index: 00h              Port: 03d4h, 03b4h
  175. usage:      Horizontal total
  176. Description: Total number of characters in horizontal scan minus
  177.              five ( including blanked and border characters)
  178.  
  179. ------------------------------------------------------------
  180. Port-Index: 01h              Port: 03d4h, 03b4h
  181. usage:      Horizontal display enable
  182. Description: Total number of characters displayed in horizontal
  183.              scan minus one.
  184. ------------------------------------------------------------
  185. Port-Index: 02h              Port: 03d4h, 03b4h
  186. usage:      Start horizontal blanking
  187. Description: Character at which blanking starts
  188.  
  189. ------------------------------------------------------------
  190. Port-Index: 03h              Port: 03d4h, 03b4h
  191. usage:      End horizontal blanking
  192.             d7    Test
  193.             d6    Skew control
  194.             d5    Skew control
  195.             d0-d4 End blanking
  196. Description: End blanking: is five LSB bits of six-bit value,
  197.              which define the character at which blanking stops.
  198.              The MSB bit of this value is in register index 5.
  199.  
  200. ------------------------------------------------------------
  201. Port-Index: 04h              Port: 03d4h, 03b4h
  202. usage:      Start horizontal retrace
  203. Description: Character at which horizontal retrace starts
  204.  
  205. ------------------------------------------------------------
  206. Port-Index: 05h              Port: 03d4h, 03b4h
  207. usage:      End horizontal retrace
  208.             d7    End horizontal blanking bit 5
  209.             d6    Horizontal retrace delay
  210.             d5    Horizontal retrace delay
  211.             d0-d4 End horizontal retrace
  212. Description: End horizontal retrace: defines the character at
  213.              which horizontal retrace ends
  214.  
  215. ------------------------------------------------------------
  216. Port-Index: 06h              Port: 03d4h, 03b4h
  217. usage:      Vertical total
  218. Description: Total number of horizontal scan lines minus two
  219.              (including blanked and border characters). MSB bits
  220.              of this value are in register index 7
  221.  
  222. ------------------------------------------------------------
  223. Port-Index: 07h              Port: 03d4h, 03b4h
  224. usage:      Overflow register
  225.             d7  Vertical retrace start (bit 9)
  226.             d6  Vertical display enable end (bit 9)
  227.             d5  Vertical total (bit 9)
  228.             d4  Line compare (bit 8)
  229.             d3  Start vertical blank (bit 8)
  230.             d2  Vertical retrace start (bit 8)
  231.             d1  Vertical display enable end (bit 8)
  232.             d0  Vertical total (bit 8)
  233. ------------------------------------------------------------
  234. Port-Index: 08h              Port: 03d4h, 03b4h
  235. usage:      Preset row scan
  236.             d7    Unused
  237.             d6    Byte panning control
  238.             d5    Byte panning control
  239.             d0-d4 Preset row scan
  240. Description: Byte panning control: is used to control byte
  241.              panning. This register together with attribute
  242.              controller register 13h allows for up to 31 pixels of
  243.              panning in double word modes
  244.              Preset row scan: Which character scan line is the
  245.              first to be displayed
  246. ------------------------------------------------------------
  247. Port-Index: 09h              Port: 03d4h, 03b4h
  248. usage:      Maximum scan line/Character height
  249.             d7    double scan
  250.             d6    bit d9 of line compare register
  251.             d5    bit d9 of start vertical blank register
  252.             d0-d4 Maximum scan line
  253. Description: d0-d5=Character height-1,  only in textmodes
  254. ------------------------------------------------------------
  255. Port-Index: 0ah              Port: 03d4h, 03b4h
  256. usage:      Cursor start
  257.             d7,d6 Reserved (0)
  258.             d5    Cursor off
  259.             d4-d0 Cursor start
  260. Description:
  261. ------------------------------------------------------------
  262. Port-Index: 0bh              Port: 03d4h, 03b4h
  263. usage:      Cursor end
  264.             d7    reserved
  265.             d6,d5 Cursor skew
  266.             d4-d0 Cursor end
  267. Description:
  268. ------------------------------------------------------------
  269. Port-Index: 0ch              Port: 03d4h, 03b4h
  270. usage:      Start address high
  271. ------------------------------------------------------------
  272. Port-Index: 0dh              Port: 03d4h, 03b4h
  273. usage:      Start address low
  274. Description: Determine the offset in display memory to be
  275.              displayed on the upper-left corner on the screen
  276. ------------------------------------------------------------
  277. Port-Index: 0eh              Port: 03d4h, 03b4h
  278. usage:      Cursor location (high byte)
  279. ------------------------------------------------------------
  280. Port-Index: 0fh              Port: 03d4h, 03b4h
  281. usage:      Cursor location (low byte)
  282. Description: Where the cursor is displayed on screen
  283. ------------------------------------------------------------
  284. Port-Index: 10h              Port: 03d4h, 03b4h
  285. usage:      Vertical retrace start
  286. Description: 8 bits out of 10
  287. ------------------------------------------------------------
  288. Port-Index: 11h              Port: 03d4h, 03b4h
  289. usage:      Vertical retrace end
  290.             d7    Write protect CRTC register 0 to 7
  291.             d6    refresh cycle select
  292.             d5    enable vertical interrupt (when 0)
  293.             d4    Clear vertical interrupt (when 0)
  294.             d0-d3 Vertical retrace end
  295. ------------------------------------------------------------
  296. Port-Index: 12h              Port: 03d4h, 03b4h
  297. usage:      Vertical display enable end
  298. Description: eight LSB bits out of ten-bit value which define
  299.              scan line minus one at which the display ends.
  300.              The other two are in CRTC register index 7
  301. ------------------------------------------------------------
  302. Port-Index: 13h              Port: 03d4h, 03b4h
  303. usage:      Offset / Logical screen width
  304. Description: Logical screen width between successive scan lines
  305. ------------------------------------------------------------
  306. Port-Index: 14h              Port: 03d4h, 03b4h
  307. usage:      Underline location register
  308.             d7    Reserved
  309.             d6    Double word mode
  310.             d5    count by 4
  311.             d0-d4 Underline location
  312. Description: Underline location: Monochrome textmode only
  313. ------------------------------------------------------------
  314. Port-Index: 15h              Port: 03d4h, 03b4h
  315. usage:      Start vertical blanking
  316. Description: eight LSB bits of ten-bit value minus one which
  317.              define at which scan line the vertical blanking
  318.              starts. The other two bits are in CRTC registers
  319.              index 7 and 9
  320. ------------------------------------------------------------
  321. Port-Index: 16h              Port: 03d4h, 03b4h
  322. usage:      End vertical blanking
  323. Description: eight LSB bits of a value which determine the scan
  324.              line after which vertical blanking ends.
  325. ------------------------------------------------------------
  326. Port-Index: 17h              Port: 03d4h, 03b4h
  327. usage:      Mode control register
  328.             d7  Enable vertical and hoizontal retrace
  329.             d6  Byte mode (1), word mode (0)
  330.             d5  Address wrap
  331.             d4  Reserved
  332.             d3  count by 2
  333.             d2  multiple vertical by 2 (use half in
  334.                 CRTC (8,10,12,14,18)
  335.             d1  Select row scan counter (not used)
  336.             d0  compatibilty mode support (enable interleave)
  337. ------------------------------------------------------------
  338. Port-Index: 18h              Port: 03d4h, 03b4h
  339. usage:      Line compare register
  340. Description: Split screen,  8 bit value out of a ten-bit value
  341. ------------------------------------------------------------
  342. Port-Index: 00h              Port: 03c4h
  343. usage:      Reset register
  344.             d7-d2 Reserved
  345.             d1    Synchronous reset
  346.             d0    Asynchronous reset
  347. Description: Synchr. when set to zero, will halt and reset
  348.              the sequencer at the end of its current cycle
  349.              Asyncht. when set to zero, will immediatly halt
  350.              and reset the sequencer. Data can be loss.
  351. ------------------------------------------------------------
  352. Port-Index: 01h              Port: 03c4h
  353. usage:      Clock mode register
  354.             d7,d6 Reserved
  355.             d5    display off
  356.             d4    Allow 32-bit Fetch (not used in standard modes)
  357.             d3    Divide dot clock by 2 (used in some 320*200 modes)
  358.             d2    Allow 16-bit fetch (used in mon graphics modes)
  359.             d1    Reserved
  360.             d0    Enable (0) 9 dot characters (mono text and 400-line)
  361. Description: Display off: Will blank screen and give the cpu
  362.              uninterrupted access the display memory.
  363. ------------------------------------------------------------
  364. Port-Index: 02h              Port: 03c4h
  365. usage:      Color plane write enable register
  366.             d7,d6 Reserved
  367.             d3    Plane 3 Write enable
  368.             d2    Plane 2 Write enable
  369.             d1    Plane 1 Write enable
  370.             d0    Plane 0 Write enable
  371. Description:
  372. ------------------------------------------------------------
  373. Port-Index: 03h              Port: 03c4h
  374. usage:      Character generator select register
  375.             d7,d6 Reserved
  376.             d5    Character generator table select A (MSB)
  377.             d4    Character generator table select B (MSB)
  378.             d3,d2 Character generator table select A
  379.             d1,d0 Character generator table select B
  380. Description: This register is only of interest if your software
  381.              will be using multiple character sets. Either one
  382.              or two character sets can be active. Table A selects
  383.              the charcater with attribute d3 set to zero and
  384.              Table B is the one with d3 set to one.
  385. ------------------------------------------------------------
  386. Port-Index: 04h              Port: 03c4h
  387. usage:      Memory mode register
  388.             d4-d7 Reserved
  389.             d3    Chain 4 (address bits 0&1 to select plan, mode 13h)
  390.             d2    Odd/even (address bit 0 to select plane 0&2 or   
  391.                   1&3 text modes)
  392.             d1    Extended memory (disable 64k modes)
  393.             d0    Reserved
  394. Description:
  395. ------------------------------------------------------------
  396. Port-Index: 00h              Port: 03ceh
  397. usage:      Set / Reset register
  398.             d7-d4 Reserved (0)
  399.             d3    Fill data for plane 3
  400.             d2    Fill data for plane 2
  401.             d1    Fill data for plane 1
  402.             d0    Fill data for plane 0
  403. ------------------------------------------------------------
  404. Port-Index: 01h              Port: 03ceh
  405. usage:      Set / Reset enable register
  406.             d7-d4 Reserved (0)
  407.             d3    enable set/reset for plane 3 (1 = enable)
  408.             d2    enable set/reset for plane 2 (1 = enable)
  409.             d1    enable set/reset for plane 1 (1 = enable)
  410.             d0    enable set/reset for plane 0 (1 = enable)
  411. Description: Set/Reset enable defines which memory planes will
  412.              receive fill data from set/reset register. Any plane
  413.              that is disable for set/reset will be written with
  414.              normal processor output data
  415. ------------------------------------------------------------
  416. Port-Index: 02h              Port: 03ceh
  417. usage:      Color compare register
  418.             d7-d4 Reserved
  419.             d3    Color compare value for plane 3
  420.             d2    Color compare value for plane 2
  421.             d1    Color compare value for plane 1
  422.             d0    Color compare value for plane 0
  423. Description: one indicate that color is the same
  424. ------------------------------------------------------------
  425. Port-Index: 03h              Port: 03ceh
  426. usage:      Data rotate / Function select register
  427.             d7-d5 Resrved (0)
  428.             d4,d3 Function select
  429.             d2-d0 Rotate count
  430.  
  431.             d4 d3  Function
  432.             0  0   Write data unmodified
  433.             0  1   Write data ANDed with processor latches
  434.             1  0   Write data ORed with processor latches
  435.             1  1   Write data XORed with processor latches
  436. Description: Rotation is made before writing data
  437. ------------------------------------------------------------
  438. Port-Index: 04h              Port: 03ceh
  439. usage:      Read plane select register
  440.             d7-d2 Reserved (0)
  441.             d1,d0 Defines color plane for reading (0-3)
  442. Description: Doesnt matter in color compare mode
  443. ------------------------------------------------------------
  444. Port-Index: 05h              Port: 03ceh
  445. usage:      Mode register
  446.             d7    Reserved (0)
  447.             d6    256-colour mode
  448.             d5    Shift register mode
  449.             d4    Odd / Even mode
  450.             d3    Color compare mode enable (1 = enable)
  451.             d2    Reserved (0)
  452.             d1,d0 Write mode
  453.  
  454.             d1 d0 Write mode
  455.             0  0  Direct write (data rotate, set/reset may apply)
  456.             0  1  Use processor latches as write data
  457.             1  0  Color plane n (0-3) is filled with the value of
  458.                   bit n in the write data
  459.             1  1  Use (rotated) write data ANDed with Bit mask as
  460.                   bit mask. Use set/reset as if set/reset was
  461.                   enable for all planes
  462. Description:
  463. ------------------------------------------------------------
  464. Port-Index: 06h              Port: 03ceh
  465. usage:      Miscellaneous register
  466.             d7-d4 Reserved
  467.             d3-d2 Memory map
  468.                   00 = A000h for 128k
  469.                   01 = A000h for 64k
  470.                   10 = B000h for 32k
  471.                   11 = B800h for 32k
  472.             d1    Odd/even enable (used in text modes)
  473.             d0    Graphics mode enable
  474. Description: Memory map defines the location and size of the
  475.              host window
  476. ------------------------------------------------------------
  477. Port-Index: 07h              Port: 03ceh
  478. usage:      Color don't care register
  479.             d7-d4 Reserved (0)
  480.             d3    Plane 3 don't care
  481.             d2    Plane 2 don't care
  482.             d1    Plane 1 don't care
  483.             d0    Plane 0 don't care
  484. Description: Color don't care is used in conjunction with color
  485.              compare mode. This register masks particular planes
  486.              from being tested during color compare cycles.
  487. ------------------------------------------------------------
  488. Port-Index: 08h              Port: 03ceh
  489. usage:      Bitmask register
  490. Description: The bitmask register is used to mask certain bit
  491.              positons from being modified.
  492. ------------------------------------------------------------
  493. Port-Index: -                 Port: 03c0h both index and data
  494. usage:      d7,d6 Reserved
  495.             d5    Palette address source
  496.                   0 = palette can be modified, screen is blanked
  497.                   1 = screen is enable, palette cannot be modified
  498.             d4-d0 Palette register address
  499. Description: Palette register address selects which register of
  500.              the attributes controller will be addres,sed by the
  501.              next I/O write cycle
  502. ------------------------------------------------------------
  503. Port-Index: 00h-0fh          Port: 03c0h
  504. usage:      Color palette register
  505.             d6,d7 Reserved
  506.             d5-d0 Color value
  507. Description: not used in 256 color modes
  508. ------------------------------------------------------------
  509. Port-Index: 10h              Port: 03c0h
  510. usage:      Mode control register
  511.             d7  p4,p5 source select
  512.             d6  pixel width
  513.             d5  Horizontal panning compatibility
  514.             d4  Reserved
  515.             d3  Background intensify / enable blinking
  516.             d2  Line graphics enable (text modes only)
  517.             d1  display type
  518.             d0  graphics / text mode
  519. Description: p4,p5 source select: selects the source fZGZdeo
  520.               outputs p4 and p5 to the DACs. If set to zero, p4
  521.               and p5 are driven from the palette registers (normal
  522.               operation). If set to one, p4 and p5 video outputs
  523.               come from bits 0 and 1 of the color select register.
  524.              pixel width: is set to one in mode 13h (256-color mode)
  525.              horizontal panning compatibility: enhances the
  526.               operation of the line compare register of the CRT
  527.               controller, which allows one section of the screen
  528.               to be scrolled while another section remains stationary.
  529.               When this bit is set to one, the stationary
  530.               section of the screen will also be immune to horizontal
  531.               panning.
  532. ------------------------------------------------------------
  533. Port-Index: 11h              Port: 03c0h
  534. usage:      Screen border color
  535. Description: In text modes, the screen border color register
  536.              selects the color of the border that sorrounds the
  537.              text display area on the screen. This is also referred
  538.              to by IBM as overscan. Unfortunately, this feature
  539.              does not work properly on EGA displays in 350-line
  540.              modes.
  541. ------------------------------------------------------------
  542. Port-Index: 12h              Port: 03c0h
  543. usage:      Color plane enable register
  544.             d7,d6 Reserved
  545.             d5,d4 Video status mux
  546.             d3    Enable color plane 3
  547.             d2    Enable color plane 2
  548.             d1    Enable color plane 1
  549.             d0    Enable color plane 0
  550. Description:  The video status mux bits can be used in conjunction
  551.              with the diagnostic bits of input status register 1
  552.              to read palette registers. For the EGA, this is the
  553.              only means available for reading the palette registers.
  554.               Enable color planes can be used to enable or disable
  555.              color planes at the input to the color lockup table.
  556.              A zero in any of these bit positions will mask the
  557.              data from that color plane. The effect on the display
  558.              will be the same as if that color plane were cleared
  559.              to all zeros.
  560. ------------------------------------------------------------
  561. Port-Index: 13h              Port: 03c0h
  562. usage:      Horizontal panning register
  563.             d7-d4 reserved
  564.             d3-d0 Horizontal pan
  565. Description: Horizontal pan allows the display to be shifted
  566.              horizontally one pixel at a time.
  567.  
  568.              d3-d0      Number of pixels shifted to the left
  569.                         0+,1+,2+     13h     Other modes
  570.                         3+,7,7+
  571.              0          1            0       0
  572.              1          2            1       -
  573.              2          3            2       1
  574.              3          4            3       -
  575.              4          5            4       2
  576.              5          6            5       -
  577.              6          7            6       3
  578.              7          8            7       -
  579.              8          9            -       -
  580. ------------------------------------------------------------
  581. Port-Index: 14h              Port: 03c0h
  582. usage:      Color select register
  583.             d7-d4 Reserved
  584.             d3    color 7
  585.             d2    color 6
  586.             d1    color 5
  587.             d0    color 4
  588. Description:  Color 7 and color 6: are normally used as the high
  589.              order bits of the eight-bit video color data from the
  590.              attribute controller to the DACs. The only exceptions
  591.              are 256-color modes
  592.               Color 5 and color 4: can be used in place of the p5
  593.              and p6 outputs from the palette registers (see mode
  594.              control register - index 10h). In 16-color modes, the
  595.              color select register can be used to rapidly cycle
  596.              between sets of colors in the video DAC.
  597. ------------------------------------------------------------
  598. Port-Index: -                Port: 03c6h
  599. usage:      Pixel mask register
  600. Description: ???
  601. ------------------------------------------------------------
  602. Port-Index: -                Port: 03c7h
  603. usage:      DAC state register (read-only)
  604. Description: if d0 and d1 is set to zero it indicates that
  605.              the lookup table is in a write mode
  606. ------------------------------------------------------------
  607. Port-Index: -                Port: 03c7h
  608. usage:      Lookup table read index register (Write only)
  609. Description: Used when you want to read the palette (set color
  610.              number)
  611. ------------------------------------------------------------
  612. Port-Index: -                Port: 03c8h
  613. usage:      Lookup table write index register
  614. Description: Used when you want to change palette (set color
  615.              number)
  616. ------------------------------------------------------------
  617. Port-Index: -                Port: 03c9h
  618. usage:      Lookup table data register
  619. Description: Read color value (Red-Green-Blue) or write same data.
  620.  
  621. --------------------------------------------------------------------------------
  622. REC.GAMES.PROGRAMMER     IBM FAQ        Sound Cards
  623. --------------------------------------------------------------------------------
  624. Q2.1    How do I program my XXX?
  625.  
  626.     This question is asked a lot, there is information available
  627.     for the adlib, but for many of the NEWER cards this is a
  628.     problem.  The suggestion of rec.games.programmers is to read
  629.     the pc sound card group or the pc demos group.  Why?  Too
  630.     many cards unless someone else wishes to get the information
  631.     and make YAF! (yet another FAQ)
  632.  
  633. --------------------------------------------------------------------------------
  634. END OF FAQ
  635.