home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / vga.doc < prev    next >
Text File  |  1990-01-04  |  44KB  |  1,064 lines

  1.                             Chapter  5
  2.  
  3.                               VGA
  4.                             -------
  5.  
  6.                  ****************************************
  7.                  *                                      *
  8.                  ******       INTRODUCTION       ********
  9.                  *                                      *
  10.                  ****************************************
  11.  
  12.  
  13.  
  14.                  A. VIDEO MODE :
  15.                     1. Text mode
  16.                     2. Graphics mode
  17.  
  18.              
  19.                  B. DISPLAY MEMORY ORGANIZATION
  20.  
  21.              
  22.                  C. CHARACTER GENERATOR
  23.  
  24.              
  25.                  D. COLOR PALETTE AND COLOR REGISTER
  26.  
  27.              
  28.                  E. GRAPHICS READ AND WRITE MODES
  29.                     1. Write modes : 0-3
  30.                     2. Read modes  : 0-1
  31.              
  32.                  F. VGA REGISTER
  33.                     1. General or External registers
  34.                     2. Sequencer registers
  35.                     3. CRTC registers
  36.                     4. Graphics registers
  37.                     5. Attribute registers
  38.              
  39.                  G. VGA BIOS DATA AREA
  40.  
  41.              
  42.                  H. VIDEO POST SEQUENCE
  43.  
  44.         
  45.                  I. VIDEO BIOS SERVICE ROUTINES
  46.      
  47.  
  48.  
  49.  
  50.                   ************************************
  51.                   *                                  *
  52.                   *******     TEXT  MODES      *******
  53.                   *                                  *
  54.                   ************************************
  55.  
  56.  ┌────────────────────────────────────────────────────────────────────┐
  57.  │ Mode       #chars            Display   page   Resolution    Buffer │
  58.  │           (X/Y)   Char Box   Format    no.      in Pixels          │
  59.  ├────────────────────────────────────────────────────────────────────│
  60.  │ 0,1       40/25     8 x 8    16/256K   8        320 x 200   B8000  │
  61.  ├────────────────────────────────────────────────────────────────────│
  62.  │ 0*,1*     40/25     8 x 14   16/256K   8        320 x 350   B8000  │
  63.  ├────────────────────────────────────────────────────────────────────│     
  64.  │ 0+,1+     40/25     8 x 16   16/256K   8        320 x 400   B8000  │
  65.  ├────────────────────────────────────────────────────────────────────│  
  66.  │ 2,3       80/25     8 x 8    16/256K   8        640 x 200   B8000  │
  67.  ├────────────────────────────────────────────────────────────────────│ 
  68.  │ 2*,3*     80/25     8 x 14   16/256K   8        640 x 350   B8000  │
  69.  ├────────────────────────────────────────────────────────────────────│ 
  70.  │ 2+,3+     80/25     8 x 16   16/256K   8        640 x 400   B8000  │
  71.  ├────────────────────────────────────────────────────────────────────│ 
  72.  │ 7         80/25     9 x 14   bw        8        720 x 350   B0000  │
  73.  ├────────────────────────────────────────────────────────────────────│  
  74.  │ 7+        80/25     9 x 16   bw        8        720 x 400   B0000  │
  75.  └────────────────────────────────────────────────────────────────────┘ 
  76.  
  77. Note:
  78.    1. The asterisk (*) in the display mode indicates that VGA is in a text
  79.    mode with 350 vertical lines.
  80.  
  81.    2. The plus (+) in the display mode indicates that VGA is in a text mode
  82.    with 400 vertical lines.
  83.  
  84.    3. Display modes 0 through 6 emulate the Color Graphics Adapter(CGA).
  85.    Mode 7 emulates the IBM Monochrome MDA or Hercules Monochrome graphics.
  86.  
  87.    4. The code "bw" stands for black and white or synonymously monochrome.
  88.  
  89.  
  90.  
  91.  
  92.  
  93.                   ************************************
  94.                   *                                  *
  95.                   *******    GRAPHICS MODES    *******
  96.                   *                                  *
  97.                   ************************************
  98.  
  99.   ┌────────────────────────────────────────────────────────────────────┐
  100.   │   Mode    #chars            Display   page     Resolution  Buffer  │
  101.   │  (Hex)    (X/Y)   Char Box  Format    no.      in Pixels           │
  102.   ├────────────────────────────────────────────────────────────────────│  
  103.   │  4,5      40/25     8 x 8   4/256K    1        320 x 200   B8000   │
  104.   ├────────────────────────────────────────────────────────────────────│
  105.   │  6        80/25     8 x 8   2/256K    1        640 x 350   B8000   │
  106.   ├────────────────────────────────────────────────────────────────────│
  107.   │  D        40/25     8 x 8   16/256K   8        320 x 200   A0000   │
  108.   ├────────────────────────────────────────────────────────────────────│
  109.   │  E        80/25     8 x 8   16/256K   4        640 x 200   A0000   │
  110.   ├────────────────────────────────────────────────────────────────────│
  111.   │  F        80/25     8 x 14  bw        2        640 x 350   A0000   │
  112.   ├────────────────────────────────────────────────────────────────────│
  113.   │ 10        80/25     8 x 14  16/256K   2        640 x 350   A0000   │
  114.   ├────────────────────────────────────────────────────────────────────│
  115.   │ 11        80/30     8 x 16  2/256K    1        640 x 480   A0000   │
  116.   ├─────────────────────────────────────────────────────────────────── │
  117.   │ 12        80/30     8 x 16  16/256K   1        640 x 480   A0000   │
  118.   ├────────────────────────────────────────────────────────────────────┤
  119.   │ 13        40/25     8 x 8   256/256K  1        320 x 200   A0000   │
  120.   └────────────────────────────────────────────────────────────────────┘
  121.  
  122.  
  123.  
  124. ┌────────────────────────────────────────────────────────────────────────┐
  125. │  MODE                                                                  │
  126. │  (Hex)     # of Colors    # Bits per Plane  Bit Planes Affected  Notes │
  127. ├────────────────────────────────────────────────────────────────────────┤
  128. │   4,5          4           2                 0,1                  1    │
  129. ├────────────────────────────────────────────────────────────────────────│
  130. │   6            2           1                 0                    2    │
  131. ├────────────────────────────────────────────────────────────────────────│
  132. │   D           16           1                 0,1,2,3              3    │
  133. ├────────────────────────────────────────────────────────────────────────│
  134. │   E           16           1                 0,1,2,3              3    │
  135. ├────────────────────────────────────────────────────────────────────────│
  136. │   F            4           1                 0,2                  4    │
  137. ├────────────────────────────────────────────────────────────────────────│
  138. │   10          16           1                 0,1,2,3              3    │
  139. ├────────────────────────────────────────────────────────────────────────│
  140. │   11           2           1                 0                    2    │
  141. ├────────────────────────────────────────────────────────────────────────│
  142. │   12          16           1                 0,1,2,3              3    │
  143. ├────────────────────────────────────────────────────────────────────────┤
  144. │   13         256           8                 0,1,2 or 3           5    │
  145. └────────────────────────────────────────────────────────────────────────┘
  146.  
  147.    Notes:
  148.    1.In modes 4 and 5, alternate bytes of data, each containing four
  149.      pixels, are stored in bit plane 0 and bit plane 1. Bit plane 0
  150.      contributes the low-order bit, and bit plane 1 contributes the
  151.      high-order bit of the two-bit pixel.
  152.  
  153.    2.In modes 6 and 11 hex, each pixel consists of one bit in bit plane 0.
  154.  
  155.    3.In mode D,E,10,12 hex, each pixel corresponds to one bit in each of
  156.      the four bit planes. Bit plane 0 contributes the low-order bit,
  157.      followed by bit plane 1, and bit plane 2. Bit plane 3 contributes the
  158.      high-order bit of the four bit pixel.
  159.  
  160.    4.In mode F hex, bit plane 0 contributes the low-order bit and bit plane
  161.      2 contributes the high-order bit of the two bit pixel.
  162.  
  163.    5.In mode 13 hex, all four bit planes are chained together and each
  164.      pixel consists of eight bits. The plane in which a pixel resides
  165.      depends on the position of the pixel on the display. Each plane holds
  166.      one-quarter of the pixels.
  167.  
  168.  
  169.                   ************************************
  170.                   *                                  *
  171.                   *******   CHARACTER  FONTS   *******
  172.                   *                                  *
  173.                   ************************************
  174.  
  175.  
  176.   There are 5 character fonts set supported:
  177.   8 by 8 ,8 by 14, 8 by 16, 9 by 14, and 9 by 16.
  178.  
  179.  
  180.  
  181.   ASCII_8X8       db    00H,00H,00H,00H,00H,00H,00H,00H         ;ASCII 0
  182.                   db    07EH,081H,0A5H,081H,0BDH,099H,081H,7EH  ;ASCII 1
  183.                   db    07CH,0FEH,0D6H,0FEH,0C6H,0FEH,07CH,00H  ;ASCII 2
  184.                   db    06CH,0FEH,0FEH,0FEH,07CH,038H,010H,00H  ;ASCII 3
  185.                   db    010H,038H,07CH,0FEH,07CH,038H,010H,00H  ;ASCII 4
  186.                   db    010H,038H,054H,0FEH,054H,010H,07CH,00H  ;ASCII 5
  187.                   .
  188.                   .
  189.                   .
  190.   ASCII_8X8_1     db    07CH,0C0H,0C6H,07CH,018H,0CH,078H,00H   ;ASCII 128
  191.                   db    06CH,00H,0CCH,0CCH,0CCH,0CCH,076H,00H   ;ASCII 129
  192.                   db    0CH,018H,03CH,066H,07EH,060H,03EH,00H   ;ASCII 131
  193.                   db    038H,044H,078H,0CH,07CH,0CCH,076H,00H   ;ASCII 132
  194.                   db    06CH,00H,078H,0CH,07CH,0CCH,076H,00H    ;ASCII 133
  195.                   db    030H,018H,078H,0CH,07CH,0CCH,076H,00H   ;ASCII 134
  196.                   db    038H,044H,078H,0CH,07CH,0CCH,076H,00H   ;ASCII 135
  197.                   .
  198.                   .
  199.                   .
  200.   ASCII_8X14      db    00H,00H,00H,00H,00H,00H,00H,00H,00H
  201.                   db    00H,00H,00H,00H,00H                     ;ASCII 0
  202.                   db    00H,00H,07EH,081H,0A5H,081H,081H,0BDH   
  203.                   db    099H,081H,07EH,00H,00H,00H              ;ASCII 1
  204.                   db    0H,00H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H    
  205.                   db    0E7H,0FFH,07EH,00H,00H,00H              ;ASCII 2
  206.                   db    00H,00H,00H,06CH,0FEH,0FEH,0FEH,0FEH    
  207.                   db    07CH,038H,010H,00H,00H,00H              ;ASCII 3
  208.                   db    00H,00H,00H,010H,038H,07CH,0FEH,07CH
  209.                   db    038H,010H,00H,00H,00H,00H               ;ASCII 4
  210.                   .
  211.                   .
  212.                   .
  213.  
  214.  
  215.  
  216.   ASCII_8X16      db    00H,00H,00H,00H,00H,00H,00H
  217.                   db    00H,00H,00H,00H,00H,00H,00H,00H,00H     ;ASCII 0
  218.                   db    00H,00H,07EH,081H,0A5H
  219.                   db    081H,081H,0BDH,099H,081H,081H
  220.                   db    07EH,00H,00H,00H,00H                    ;ASCII 1
  221.                   db    00H,00H,07EH,0FFH,0FFH
  222.                   db    0DBH,0FFH,0FFH,0C3H,0E7H
  223.                   db    0FFH,07EH,00H,00H,00H,00H               ;ASCII 2
  224.                   db    00H,00H,00H,00H,06CH,0FEH
  225.                   db    0FEH,0FEH,0FEH,07CH,038H
  226.                   db    010H,00H,00H,00H,00H                    ;ASCII 3
  227.                   .
  228.                   .
  229.                   .
  230. ;
  231. ;       12 additional character of 8X14
  232. ;
  233. ASCII_9X14   db      1dh,0H,00H,00H,00H,024H,066H,0FFH
  234.              db      066H,024H,00H,00H,00H,00H,00H           ;code 1dh
  235.              db      4dh,00H,00H,0C3H,0E7H,0FFH,0DBH
  236.              db      0C3H,0C3H,0C3H,0C3H,0C3H,00H,00H,00H    ;code 4dh
  237.              db      54h,00H,00H,0FFH,0DBH,099H,018H,018H
  238.              db      018H,018H,018H,03CH,00H,00H,00H         ;code 54h
  239.              db      56h,00H,00H,0C3H,0C3H,0C3H,0C3H
  240.               .
  241.               .
  242.               .
  243.  
  244. ASCII_9X16   db      1dh,00H,00H,00H,00H,00H,024H,066H
  245.              db      0FFH,066H,024H,00H,00H,00H,00H,00H,00H   ;code 1dh
  246.              db      4dh,00H,00H,0C3H,0E7H,0FFH,0DBH,0C3H
  247.              db      0C3H,0C3H,0C3H,0C3H,0C3H,00H,00H,00H,00H ;code 4dh
  248.              db      54h,00H,00H,0FFH,0DBH,099H,018H,018H,018H
  249.              db      018H,018H,018H,03CH,00H,00H,00H,00H      ;code 54h
  250.              db      56h,00H,00H,0C3H,0C3H,0C3H,0C3H,0C3H,0C3H
  251.              db      0C3H,066H,03CH,018H,00H,00H,00H,00H      ;code 56h
  252.              db      57h,00H,00H,0C3H,0C3H,0C3H,0C3H,0C3H,0DBH
  253.              db      0DBH,0DBH,0FFH,066H,00H,00H,00H,00H      ;code 57h
  254.               .
  255.               .
  256.               .
  257.  
  258.   The 9 by 14 and 9 by 16 character font are referred to as the supplement
  259.   character set. It is called supplemental because not all of the 256
  260.   characters are provided. Typical characters that are included in the 
  261.   supplement are quotation marks ("),the plus sign (+),the minus sign (-),
  262.   M,T,V,W,X,Y,Z,m,v,w,and line-drawing symbols.
  263.  
  264.         
  265.                   ************************************
  266.                   *                                  *
  267.                   ****     CHARACTER ATTRIBUTE    ****
  268.                   *                                  *
  269.                   ************************************
  270.  
  271.                         A. MONOCHROME MODE
  272.                   
  273.  
  274.                      Mode 7: Monochrome Attributes
  275.  ──────────────────────────────────────────────────────────────────────
  276.     Background            Forground              Attribute
  277.     (bit3 6-4)            (bits 2-0)
  278.  ──────────────────────────────────────────────────────────────────────
  279.     0                     0                      Black
  280.     0                     1                      Underline
  281.     0                     7                      Normal(white on black)
  282.     7                     0                      Reversed(black on white)
  283.     7                     7                      White
  284.  
  285.  
  286.  
  287.                Mode 7: Examples of Monochrome Attributes
  288.  
  289.  ────────────────────────────────────────────────────────────────────────
  290.    Blink    Background   Intens   Forground    Code
  291.    (Bit 7)  (bits 6-4)   (Bit 3)  (Bit 2-0)    (Hex)   Attribute
  292.  ────────────────────────────────────────────────────────────────────────
  293.    0        0            0        1            1       Underline
  294.    0        0            1        1            9       Intense Underline
  295.    0        7            0        0            70      Reversed
  296.    0        7            1        0            74      Intense Reversed
  297.    1        7            0        0            F0      Blinking Reversed
  298.    1        7            1        0            F1      Intense Blinking
  299.                                                        Reserved
  300.  
  301.  
  302.                      Mode 7: Palette Registers
  303.  ───────────────────────────────────────────────────────────────────────
  304.    Register #      Register Value       Register #       Register Value
  305.  ───────────────────────────────────────────────────────────────────────
  306.    0               00                   8                10
  307.    1               08                   9                18
  308.    2               08                   A                18
  309.    3               08                   B                18
  310.    4               08                   C                18
  311.    5               08                   D                18
  312.    6               08                   E                18
  313.    7               08                   F                18
  314.  
  315.   
  316.  
  317.  
  318.  
  319.                    B. SIXTEEN-COLOR MODE
  320.  
  321.              Default Colors for a 16-color Palette
  322.        ────────────────────────────────────────────────
  323.          Palette Register (Hex)               Color
  324.        ────────────────────────────────────────────────
  325.                0                              Black
  326.                1                              Blue
  327.                2                              Green
  328.                3                              Cyan
  329.                4                              Red
  330.                5                              Magenta
  331.                6                              Brown
  332.                7                              White
  333.                8                              Gray
  334.                9                              Light Blue
  335.                A                              Light Green
  336.                B                              Light cyan
  337.                C                              Light red
  338.                D                              Light Magenta
  339.                E                              Light Brown (yellow)
  340.                F                              Bright White
  341.  
  342.  
  343.  
  344.      
  345.                    C. ATTRIBUTE BYTE IN THE 16-COLOR MODE
  346.  
  347.  
  348.  
  349.  
  350.               7     6     5     4     3     2     1     0
  351.             ┌──────────────────────┬──────────────────────┐
  352.             │                      │                      │
  353.             └──────────────────────┴──────────────────────┘
  354.                  Background             Forground
  355.  
  356.  
  357.  
  358.              7     6     5     4     3     2     1     0
  359.             ┌──────────────────────┬────┬─────────────────┐
  360.             │                      │    │                 │
  361.             └──────────────────────┴─┼──┴─────────────────┘
  362.                 Background           │    Forground
  363.                                      Font #
  364.  
  365.  
  366.              7     6     5     4     3     2     1     0
  367.             ┌───┬──────────────────┬──────────────────────┐
  368.             │   │                  │                      │
  369.             └─┼─┴──────────────────┴──────────────────────┘
  370.               │    Background           Forground
  371.              Blinking
  372.  
  373.  
  374.  
  375.              7     6     5     4     3     2     1     0
  376.             ┌───┬──────────────────┬───┬──────────────────┐
  377.             │   │                  │   │                  │
  378.             └─┼─┴──────────────────┴─┼─┴──────────────────┘
  379.               │     Background       │      Forground
  380.             Blinking                Font #
  381.  
  382.  
  383.  
  384.  
  385.  
  386. Note:
  387. 1.  The character attribute byte is used to determine the character color,
  388.     to determine the blinking status, and to select from one of the two
  389.     character sets.
  390.  
  391.     Bit 3 of the character attribute byte is used either to select one of
  392.     16 forground colors for the associated character or to choose from one
  393.     of two resident character sets.
  394.  
  395.     Bit 7 is selected to have dual function of either being part of the
  396.     background color code or being a switch for the blinking feature.
  397.  
  398. 2.  The default alphanumeric characters are defined by the bit patterns
  399.     in the first table in MAP 2, regardless of the value of bit 3 of the
  400.     attribute bytes of the characters displayed.
  401.  
  402.     Changing the value in the Character Map Select register, changes the
  403.     character definition tables associated with bit 3 of attribute bytes.
  404.  
  405.     If two different values appear in the bit fields in the Character Map 
  406.     Select register, the value of bit 3 designates one of two different
  407.     character definition tables.
  408.  
  409.  
  410.  
  411.                   ************************************
  412.                   *                                  *
  413.                   *******    VGA REGISTERS      ******
  414.                   *                                  *
  415.                   ************************************
  416.  
  417.                      General or External Registers
  418. ──────────────────────────────────────────────────────────────────────────                
  419.                Name                 Write (Hex)     Read (Hex)
  420.                Misc. Output         3C2             3CC
  421.                Feature Control      3DA/3BA         3CA
  422.                Input Status #0                      3C2
  423.                Input Status #1                      3DA/3BA
  424. ──────────────────────────────────────────────────────────────────────────              
  425.  
  426.  
  427.  
  428.                      Sequencer Registers
  429. ─────────────────────────────────────────────────────────────────────────              
  430.                Name               Index        R/W Port(Hex)
  431.                Address                x        3C4
  432.                Reset                  0        3C5
  433.                Clocking Mode          1        3C5
  434.                Map Mask               2        3C5
  435.                Character Map Select   3        3C5
  436.                Memory Mode            4        3C5
  437. ─────────────────────────────────────────────────────────────────────────              
  438.  
  439.  
  440.                     Attribute Controller Registers
  441. ─────────────────────────────────────────────────────────────────────────                  
  442.                Name                  Index        R/W Port(Hex)
  443.                Address                   x        3C0
  444.                Palette                 0-F        3C1
  445.                Mode Control             10        3C1
  446.                Overscan Color           11        3C1
  447.                Color Plane Enable       12        3C1
  448.                Horizontal Pixel Panning 13        3C1
  449.                Color Select             14        3C1
  450. ─────────────────────────────────────────────────────────────────────────                  
  451.  
  452.  
  453.                      Graphics Control Registers:
  454. ─────────────────────────────────────────────────────────────────────────                  
  455.                Name               Index        R/W Port(Hex)
  456.                Graphics Address       x           3CE
  457.                Set/Reset              0           3CF
  458.                Enable Set/Reset       1           3CF
  459.                Color Compare          2           3CF
  460.                Data Rotate            3           3CF
  461.                Read Map Select        4           3CF
  462.                Mode                   5           3CF
  463.                Miscellaneous          6           3CF
  464.                Color Don't Care       7           3CF
  465.                Bit Mask               8           3CF
  466. ────────────────────────────────────────────────────────────────────────                   
  467.  
  468.  
  469.  
  470.                      CRT Controller Registers
  471. ────────────────────────────────────────────────────────────────────────                   
  472.                Name               Index        R/W Port(Hex)
  473.         Address                       x        3D4/3B4
  474.         Horizontal Total              0        3D5/3B5
  475.         Horizontal Display End        1        3D5/3B5
  476.         Start Horizontal Blank        2        3D5/3B5
  477.         End Horizontal Blank          3        3D5/3B5
  478.         Start Horizontal Retrace      4        3D5/3B5
  479.         End Horizontal Retrace        5        3D5/3B5
  480.         Vertical Total                6        3D5/3B5
  481.         Overflow                      7        3D5/3B5
  482.         Preset Row Scan               8        3D5/3B5
  483.         Max Scan Line                 9        3D5/3B5
  484.         Cursor Start                  A        3D5/3B5
  485.         Cursor End                    B        3D5/3B5
  486.         Start Address High            C        3D5/3B5
  487.         Start Address Low             D        3D5/3B5
  488.         Cursor Location High          E        3D5/3B5
  489.         Cursor Location Low           F        3D5/3B5
  490.         Vertical Retrace Start       10        3D5/3B5
  491.         Vertical Retrace Low         11        3D5/3B5
  492.         Vertical Display End         12        3D5/3B5
  493.         Offset                       13        3D5/3B5
  494.         Underline Location           14        3D5/3B5
  495.         Start Vertical Blank         15        3D5/3B5
  496.         End Vertical Blank           16        3D5/3B5
  497.         Mode Control                 17        3D5/3B5
  498.         Line Compare                 18        3D5/3B5
  499. ────────────────────────────────────────────────────────────────────────                   
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.                   ************************************
  508.                   *                                  *
  509.                   *******    MEMORY MAPPING     ******
  510.                   *                                  *
  511.                   ************************************
  512.  
  513.  
  514.  
  515.  
  516.  
  517.    The video buffer can be configured as the following :
  518.  
  519.     1). A000:0 -------  128K for mode D,E,F,10,11,12 and 13
  520.  
  521.     2). A000:0 -------   64K for character generator for text modes
  522.  
  523.     3). B000:0 -------   32k for mode 7 and 7+
  524.  
  525.     4). B800:0 -------   32K for text mode 0,1,2,3 and graphics modes 4,5,6
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.                   ************************************
  535.                   *                                  *
  536.                   *******  CHARACTER GENERATOR  ******
  537.                   *                                  *
  538.                   ************************************
  539.  
  540.  
  541.  
  542.  
  543.      The character generator consists of the dot patterns that represent
  544.  each character in the character set.
  545.  
  546.  
  547.      The character dot patterns are stored in character boxes, each of
  548.  which is 32 bytes long.
  549.  
  550.  
  551.      Bits set to 1 in the character font will be displayed in the
  552.  forground color, and bits reset to 0 will be displayed in the
  553.  background color.
  554.  
  555.  
  556.      The display memory consists of four display planes called bit planes,
  557.  each being 64K bytes long.
  558.  
  559.  
  560.      VGA supports eight font tables. Each table consists of 256 32-byte bit
  561.  patterns, so the character box height is 32 scan lines. When the displayed
  562.  character box contains fewer than 32 lines, the character generator
  563.  ignored the extra bytes in each character definition.
  564.  
  565.  
  566.  
  567.  
  568.  
  569.       The character generator has 8 blocks illustrated in the following:
  570.  
  571.  
  572.  
  573.   A000:0   ╔═════════╗            ┌────────────────────┐  
  574.            ║ Font 0 ─╫───────── 0 │         0          │
  575.     2000   ╟─────────║            ├────────────────────│
  576.            ║ Font 4  ║          1 │         1          │                            
  577.     4000   ╠═════════╣            ├────────────────────│   character 0
  578.            ║ Font 1  ║            │         .          │
  579.     6000   ╟─────────║            │         .          │
  580.            ║ Font 5  ║            │         .          │
  581.     8000   ╠═════════╣            ├────────────────────│
  582.            ║ Font 2  ║         31 │        31          │
  583.     A000   ╟─────────║       ─────┼────────────────────┼─────────
  584.            ║ Font 6  ║         32 │         0          │
  585.     C000   ╠═════════╣            ├────────────────────│         
  586.            ║ Font 3  ║         33 │         1          │
  587.     E000   ╟─────────║            ├────────────────────│
  588.            ║ Font 7  ║            │         .          │
  589.            ╚═════════╝            │         .          │    character 1 
  590.                                   │         .          │
  591.                                   │────────────────────│                  
  592.                                63 │        31          │   
  593.                              ─────┼────────────────────┼─────────
  594.                                64 │         .          │        .
  595.                                   │         .          │        .
  596.                                   │         .          │        .
  597.                               ────┼────────────────────┼──────────
  598.                                   │         0          │
  599.                                   ├────────────────────│
  600.                                   │                    │
  601.                                   │                    │     character 255
  602.                                   ├────────────────────┤
  603.                              8191 │        31          │
  604.                                   └────────────────────┘ 
  605.  
  606.  
  607.  
  608.  
  609.                   ***************************************************
  610.                   *                                                 *
  611.                   *******   GRAPHICS MODES PIXEL PROGRAMMING   ******
  612.                   *                                                 *
  613.                   ***************************************************
  614.  
  615.                   A. Relative Registers Accessed:
  616.  
  617.                      Graphics Control Registers:
  618.                     
  619.                      Name               Index        R/W Port(Hex)
  620.                      Graphics Address       x           3CE
  621.                      Set/Reset              0           3CF
  622.                      Enable Set/Reset       1           3CF
  623.                      Color Compare          2           3CF
  624.                      Data Rotate            3           3CF
  625.                      Read Map Select        4           3CF
  626.                      Mode                   5           3CF
  627.                      Miscellaneous          6           3CF
  628.                      Color Don't Care       7           3CF
  629.                      Bit Mask               8           3CF
  630.  
  631.                  B. Read/Write Mode
  632.                     1. Write Mode 0 (EGA/VGA)
  633.                     2. Write Mode 1 (EGA/VGA)
  634.                     3. Write Mode 2 (EGA/VGA)
  635.                     4. Write Mode 3 (VGA Only)
  636.  
  637.                     5. Read Mode 0 (EGA/VGA)
  638.                     6. Read Mode 1 (EGA/VGA)
  639.  
  640.  
  641.  
  642.  
  643.  
  644.                   ***************************************
  645.                   *                                     *
  646.                   *******  PALETTE/COLOR REGISTER  ******
  647.                   *                                     *
  648.                   ***************************************
  649.  
  650.                
  651.                           Palette Utilization
  652.    ───────────────────────────────────────────────────────────────────────
  653.     Display Mode (hex)     Number of Colors     Palette Register Affected
  654.      0,1                      16                     0-15
  655.      2,3                      16                     0-15
  656.      4,5                       4                     0,1,2,3
  657.      6                         2                     0,1
  658.      7                         4                     0,1,4,5
  659.      D                        16                     0-15
  660.      E                        16                     0-15
  661.      F                         4                     0,1,4,5
  662.      10                       16                     0-15
  663.      11                        2                     0,1
  664.      12                       16                     0-15
  665.      13                      256                     0-15
  666.  
  667.  
  668.  
  669.  
  670.                        Mode 7 Palette Defult Values
  671.      ──────────────────────────────────────────────────────────
  672.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  673.      Value     0  8  8  8  8  8  8  8  10 18 18 18 18 18 18 18
  674.      ───────────────────────────────────────────────────────────
  675.  
  676.  
  677.  
  678.  
  679.                        Mode F Palette Default Values
  680.      ──────────────────────────────────────────────────────────
  681.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  682.      Value     0  8  -  -  18 18 -  -  -  -  -  -  -  -  -  - 
  683.      ───────────────────────────────────────────────────────────
  684.  
  685.  
  686.  
  687.  
  688.          Mode 0,1,2,3 Palette Default Values ( 200 scan line)
  689.      ──────────────────────────────────────────────────────────
  690.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  691.      Value     0  1  2  3  4  5  14 7  38 39 3A 3B 3C 3D 3E 3F
  692.      ───────────────────────────────────────────────────────────
  693.  
  694.  
  695.  
  696.  
  697.      Mode 0*,1*,2*,3*  Palette Default Values ( 350, 400 )
  698.      ──────────────────────────────────────────────────────────
  699.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  700.      Value     0  1  2  3  4  5  6  7  10 11 12 13 14 15 16 17
  701.      ───────────────────────────────────────────────────────────
  702.  
  703.  
  704.  
  705.  
  706.                        CGA-compatible Color Selection
  707.      ────────────────────────────────────────────────────────────────
  708.      ATR 1    ATR 0   Set 1         Set 0        VGA Palette Register
  709.      0        0       Background    Background    0
  710.      0        1       Cyan          Green         1
  711.      1        0       Magenta       Red           2
  712.      1        1       White         Brown         3
  713.  
  714.  
  715.  
  716.  
  717.                        Mode 6 Palette Default Values
  718.      ──────────────────────────────────────────────────────────
  719.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  720.      Value     0  17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 
  721.      ───────────────────────────────────────────────────────────
  722.  
  723.  
  724.  
  725.  
  726.                        Mode 11 Palette Default Values
  727.      ──────────────────────────────────────────────────────────
  728.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  729.      Value     0  37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 
  730.      ───────────────────────────────────────────────────────────
  731.  
  732.  
  733.  
  734.  
  735.                    Mode D,E,10 and 12 Palette Default Values
  736.      ──────────────────────────────────────────────────────────
  737.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  738.      Value     0  1  2  3  4  5  14 7  38 39 3A 3B 3C 3D 3E 3F
  739.      ───────────────────────────────────────────────────────────
  740.  
  741.  
  742.  
  743.                        Mode 13 Palette Default Values
  744.      ──────────────────────────────────────────────────────────
  745.      Register  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  746.      Value     0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  747.      ───────────────────────────────────────────────────────────
  748.  
  749.  
  750.      . COLOR REGISTERS
  751.  
  752.      The VGA is equipped with 256 Color Registers. A pixel or character in 
  753.      display memory consists of from one to eight bits of data. This data
  754.      is used to address the 16 palette registers. The output of these
  755.      palette registers is used in conjunction with the data in display
  756.      memory to address the color registers. The color registers contain 
  757.      the color codes that are output to the digital-to-analog converters
  758.      (DAC). The output of the DAC are sent to the monitor. Each of the
  759.      color registers consists of a red,green,and blue component. Each of
  760.      these color components is six bits wide.
  761.      
  762.  
  763.                    
  764.      . COLOR REGISTERS ADDRESSING
  765.  
  766.  
  767.      . COLOR REGISTER ORGANIZATION
  768.  
  769.        1. Four banks of 64 color registers
  770.        2. Sixteen banks of 16 color registers
  771.       
  772.  
  773.      . ACCESSING THE COLOR REGISTERS
  774.  
  775.        1. Modifying color registers through BIOS
  776.        2. Modifying color registers directly
  777.  
  778.           Relative registers:
  779.  
  780.           ────────────────────────────────────────────────────
  781.           Address       Read/Write    Function
  782.  
  783.               3C7       Write only    PEL address during read
  784.               3C7       Read only     DAC state
  785.               3C8       Read/Write    PEL address during write
  786.               3C9       Read/Write    PEL data register
  787.               3C6       Read/Write    PEL mask
  788.           ────────────────────────────────────────────────────
  789.  
  790.  
  791.  
  792.  
  793.    . COLOR CONVERSION
  794.  
  795.     1. Gray Scale
  796.  
  797.        Gray shades are composed of equal amounts of red, green, and blue.
  798.        White is the maximum gray scale value, and black is the minimum
  799.        value. 
  800.        The VGA allocates six bits per color which provides 64 possible
  801.        gray scales. These 64 levels of gray scale are achived using the
  802.        six-bit color fields within the color registers.
  803.  
  804.  
  805.                         Gray scale using the color registers
  806.                 ────────────────────────────────────────────────────
  807.       
  808.                    Color Register Value            Gray Scale
  809.                  ────────────────────────                                  
  810.                     Red   Green   Blue
  811.                     0        0       0             0% saturation
  812.                     1        1       1           1.6% saturation
  813.                     2        2       2           3.2% saturation
  814.                     .        .       .           .
  815.                     .        .       .           .
  816.                     .        .       .           .
  817.                    63       63      63           100% saturation
  818.       
  819.  
  820.  
  821.  
  822.     2. Summing Colors to Gray Scale
  823.  
  824.              GRAY SCALE = (0.30 X RED) + (0.59 X GREEN) + (0.11 X BLUE)
  825.  
  826.     3. Relative BIOS Calls
  827.  
  828.     ────────────────────────────────────────────────────────────────────
  829.      AH      Subfunction (Hex)                 Function
  830.  
  831.      10       AL = 1B          Sum color values immediately to gray scale
  832.      12       BL = 33          Enable/Disable summing to gray scale at
  833.                                mode set
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.                   ************************************
  842.                   *                                  *
  843.                   *******    VGA BIOS CALLS     ******
  844.                   *                                  *
  845.                   ************************************
  846.  
  847.  
  848.  
  849.                               CONTROL
  850.        ───────────────────────────────────────────────────────────
  851.  
  852.        Mode Set
  853.        Select Active Display Page
  854.        Select Alternate Print Screen Routine
  855.        Video Enable/Disable
  856.        Display Switch
  857.        Video Screen On/Off
  858.  
  859.  
  860.  
  861.                           RETURN STATE
  862.        ───────────────────────────────────────────────────────────
  863.        Return Curren Video State
  864.        Return Video Information
  865.        Read/Write Display Combination Code
  866.        Return Functionality/State Information
  867.        Save/Restore Video State
  868.  
  869.  
  870.  
  871.  
  872.                          INTERACTIVE
  873.        ───────────────────────────────────────────────────────────
  874.        Set Cursor Type
  875.        Set Cursor Position
  876.        Read Cursor Position
  877.        Cursor Emulation
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.                          TEXT
  887.        ───────────────────────────────────────────────────────────
  888.        Scroll Active Page Up
  889.        Scroll Active Page Down
  890.        Read Character/Attribute
  891.        Write Character/Attribute
  892.        Write Character Only
  893.        Write Teletypewriter to Active Page
  894.        Select Scan Lines for Text Modes
  895.        Write String
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.                         GRAPHICS
  904.        ───────────────────────────────────────────────────────────
  905.  
  906.        Write Dot
  907.        Read Dot
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.                            PALETTE
  916.        ───────────────────────────────────────────────────────────
  917.        Set Color Palette
  918.        Set Individual Palette Register
  919.        Set Overscan (Boarder) Register
  920.        Set All Palette Registers and Overscan
  921.        Toggle Intensity/Blinking Bit
  922.        Read Individual Palette Register
  923.        Read Overscan Resister
  924.        Read all Palette Registers and Overscan
  925.        Default Palette Loading During Mode Set
  926.  
  927.  
  928.  
  929.  
  930.  
  931.                        COLOR REGISTERS
  932.        ───────────────────────────────────────────────────────────
  933.        Set Individual Color Register
  934.        Set block of Color Registers
  935.        Select Color Page
  936.        Read Individual Color Register
  937.        Read Block of Color Registers
  938.        Read Current Color Page Number
  939.        Sum Color Values to Gray Scale
  940.        Default Palette Loading During Mode Set
  941.        Summing to Gray Scales
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.                     CHARACTER GENERATOR 
  952.        ───────────────────────────────────────────────────────────
  953.        User text Load with Reset
  954.        ROM Monochrome Set with Reset
  955.        ROM 8x8 Character Set Load with Reset
  956.        Set Block Specifier           
  957.        ROM 8x16 Character Set Load with Reset
  958.        User Alpha Load
  959.        ROM Monochrome Set
  960.        ROM 8x8 Character Set Load 
  961.        ROM 8x16 Character Set Load
  962.        User Graphics Characters INT 1FH (8x8)
  963.        User Graphics Characters
  964.        Graphics Mode ROM 8x14 Character Set Load
  965.        Graphics Mode ROM 8x8 Character Set Load 
  966.        Graphics Mode ROM 8x16 Character Set Load
  967.        Return Character Generator Information
  968.  
  969.  
  970.  
  971.                ******************************************
  972.                *                                        *        
  973.                ***   VGA POST (DIAGNOSTIC) SEQUENCE   ***
  974.                *                                        *
  975.                ******************************************
  976.  
  977.  
  978.            ┌─────────────────────┐
  979.            │      Disable        │
  980.            │        VGA     1*   │
  981.            └─────────┬───────────┘     ┌────────────────┐
  982.                      │                 │                │
  983.                      │                 │                │
  984.            ┌─────────┴───────────┐     │      ┌─────────┴───────────┐
  985.            │   Check Other       │     │      │     Dual Monitor    │
  986.            │  Display Card Exit? │     │      │        Test    7*   │
  987.            │                2*   │     │      └─────────┬───────────┘
  988.            └─────────┬───────────┘     │                │
  989.                      │                 │                │
  990.                      │                 │      ┌─────────┴───────────┐
  991.            ┌─────────┴───────────┐     │      │     Set Mode        │
  992.            │       Enable        │     │      │                8*   │
  993.            │        VGA     3*   │     │      └─────────┬───────────┘
  994.            └─────────┬───────────┘     │                │
  995.                      │                 │                │
  996.                      │                 │      ┌─────────┴───────────┐
  997.            ┌─────────┴───────────┐     │      │   Test Vertical     │
  998.            │   Set Corresponding │     │      │   Retrace Signal 9* │
  999.            │   Video Interrupt   │     │      └─────────┬───────────┘
  1000.            │   Vectors      4*   │     │                │
  1001.            └─────────┬───────────┘     │                │
  1002.                      │                 │      ┌─────────┴───────────┐
  1003.                      │                 │      │      Show ACER      │
  1004.            ┌─────────┴───────────┐     │      │      Copyright      │
  1005.            │     Test Video      │     │      └─────────────────────┘
  1006.            │       Buffer   5*   │     │
  1007.            └─────────┬───────────┘     │
  1008.                      │                 │
  1009.                      │                 │
  1010.            ┌─────────┴───────────┐     │
  1011.            │     Sense Monitor   │     │
  1012.            │        Type    6*   │     │
  1013.            └─────────┬───────────┘     │
  1014.                      │                 │
  1015.                      │                 │
  1016.                      └─────────────────┘
  1017.                     
  1018.  
  1019. Note 1:
  1020.     Wake up VGA chip by programming port 46E8 hex bit 4 to 1.
  1021.     Program port 102 hex bit 0 to 1.
  1022.     Program port 46E8 hex bit 3 to 0 (disable the accessing of VGA
  1023.     memory and I/O) for the sake of testing other display cards' presence.
  1024.  
  1025. Note 2:
  1026.     By writing 4 words to VRAM (B000h & B800h)
  1027.     read back
  1028.     If VRAM R/W O.K then set the correct equip_flag (40:10) value.
  1029.  
  1030.  
  1031. Note 3:
  1032.     Program port 46E8 hex bit 3 to 1 (enable the accessing of VGA memory
  1033.     and I/O).
  1034.  
  1035. Note 4:
  1036.        INT 10h  : service routine entry
  1037.        INT 1Fh  : 2nd 128 8x8 ascii code
  1038.        INT 43h  : 1st 128 8x8 ascii code
  1039.        INT 1Dh  : point to the CGA compatible table
  1040.        INT 6dh  : keep the same value as INT 10h vector
  1041.        INT 42h  : IBM (CGA,MDA,MGA) original INT 10 vector (F000:F065) 
  1042.  
  1043. Note 5:
  1044.        By writing pattern to VRAM then read back.
  1045.        If error occurs, sound 1 long 2 short error beep.
  1046.  
  1047. Note 6:
  1048.        R G B -- 12h,12h,12h  If port 3C2h bit 4 on, color monitor
  1049.        R G B --   4,12h,4    If port 3C2h bit 4 on, mono monitor
  1050.        else, no monitor attached.
  1051.  
  1052. Note 7:
  1053.        Set corresponding values to BIOS data area.
  1054.  
  1055. Note 8:
  1056.        Set CRT mode according to the current flags setting.
  1057.  
  1058. Note 9:
  1059.        Read input status register (3DA/3BA), if error occures, sound 
  1060.        1 long 3 short error beep.
  1061.  
  1062.  
  1063.  
  1064.