OSDev.org
https://forum.osdev.org/

Register values for VGA mode 320x400 256-color
https://forum.osdev.org/viewtopic.php?f=1&t=33658
Page 1 of 1

Author:  ~ [ Wed Apr 24, 2019 3:49 pm ]
Post subject:  Register values for VGA mode 320x400 256-color

Code:
;Version 2019-05-04 (Sat)
;;

align wideword_sz
MCGA_g320x400x256__from13hGen__Regs:

MCGA_g320x400x256__from13hGen__MiscOutputReg:
;General Register, Miscellaneous Output (W; 0x3C2):
;;
;
;  Bits:
;      0 -- I/O Address select
;           Color Emulation  (1) or Monochrome Emulation   (0)
;
;      1 -- Enable RAM
;           Enable video RAM (1) or Disable address decode (0)
;
;    2,3 -- Clock Select - ??? - I currently don't know where is the CS2 bit
;                                so I don't know what configuration is selected here
;           CS2  CS1  CS0  Clock
;           ---  ---  ---  -----
;            0    0    0   25.175 MHz    ;<--this one!!!!!!!
;            0    0    1   28.322 MHz
;         -------------------------------Below this line, consider Oak-specific values
;            0    1    0   65 MHz (external clock per true VGA standard)
;            0    1    1   44.9 MHz (undefined per true VGA standard)
;            1    0    0   14.161 MHz (derived from 28.322 MHz)
;            1    0    1   18 MHz (derived from 36 MHz)
;            1    1    0   40 MHz
;            1    1    1   36 MHz
;
;      4 -- Reserved
;            (0)
;
;      5 -- Page bit for odd/even
;           High 64K         (1) or Low 64K                (0) page of memory
;
;      6 -- Horizontal Sync Polarity
;           Negative         (1) or Posite Vertic. Retrace (0)
;
;      7 -- Vertical Sync Polarity
;           Positive         (0) or Negative Vert. Retrace (0)
;
;      Bits 7-6
;      --------
;            00 -- reserved
;            01 -- 400 lines     ;<-- This one!
;            10 -- 350 lines
;            11 -- 480 lines
;
;
;
;
;
;;
  db 01100011b       ;0x63










MCGA_g320x400x256__from13hGen__FeatureControlReg:
;General Register, Feature Control (RW; 0x3DA color; 0x3BA mono):
;;
;
;
;
;  Bits:
;      3 -- Vertical Sync Select
;           Normal (0) or Logical OR of Vertical Sync End/Vertical Display Enable (1)
;
;      All other bits are Reserved
;
;;
  db 00000000b       ;0x00




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;





MCGA_g320x400x256__from13hSequencerRegs:
;Sequencer Register, Index 0, Reset Register (RW; 0x3C4=0; 0x3C5):
;;
;
;  Bits:
;      0 -- Asynchronous Reset
;           Operating  (1) or Reset   (0)
;
;      1 -- Synchronous Reset
;           Operating  (1) or Reset   (0)
;
;      All other bits are reserved
;;
  db 00000011b       ;0x03










;Sequencer Register, Index 1, Clocking Mode Register (RW; 0x3C4=1; 0x3C5):
;;
;
;  Bits:
;      0 -- 8/9 dot clocks
;           Eight dots (1) or Nine Clocks (0)
;
;      1 -- Reserved
;
;      2 -- Shift Load
;           If bit 4 is 0:
;           Reload serializers each char clock (0) or on every other (1)
;
;      3 -- Dot clock
;           Normal clock (0) or divide clock by 2 (1)
;
;      4 -- Shift 4
;           Reload serializers each char clock (0) or on each fourth (1)
;
;      5 -- Screen off
;           Video screen off and max mem bandwidth to CPU (1) or Normal operation (0)
;
;    6-7 -- Reserved
;;
  db 00000001b       ;0x01










;Sequencer Register, Index 2, Map Mask Register (RW; 0x3C4=2; 0x3C5):
;;
;
;  Bits:
;    0-3 -- Map mask
;           Enable (1) or disable writes (0) to the corresponding map, 0-3, with bits 0-3
;
;    All other bits are reserved.
;;
  db 00001111b       ;0x0F










;Sequencer Register, Index 3, Character Map Select Register (RW; 0x3C4=3; 0x3C5):
;;
;
;  Bits:
;    4,1,0 -- Character Map Select B
;             000
;             1st 8K of Map 2
;
;    5,3,0 -- Character Map Select A
;             000
;             1st 8K of Map 2
;             NOTE: The value of Character Map Select A == Character Map Select B,
;                   so we will ignore Character Map Select A and use
;                   Character Map Select B configuration.
;
;    All other bits are reserved.
;;
  db 00000000b       ;0x00










;Sequencer Register, Index 4, Memory Mode Register (RW; 0x3C4=4; 0x3C5):
;;
;
;  Bits:
;      0 -- Reserved
;
;      1 -- Extended Memory (1)
;           0 -- No extended memory present (less than 64K)
;           1 -- Extended memory present (more than 64K; use 256K;
;                also enables the Character Map Select feature)
;
;      2 -- Odd/Even (1) turn off, be sequential, for 320x400x256
;           0 -- Direct even addresses to maps 0 and 2 and odd addresses
;                to maps 1 and 3.
;           1 -- If bit 3 is 0: make the CPU access data sequentially
;                within a bit map.
;
;      3 -- Chain-4 (0) turn off for 320x400x256
;           0 -- If bit 2 is 1, make the CPU access data sequentially within
;                a bit map by the Map Mask Register.
;           1 -- Make the two lower address bits to select the map that will
;                be accessed.
;
;
;    4-7 -- Reserved
;;
  db 00000110b       ; -- 320x400x256




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;










MCGA_g320x400x256__from13hCRTCRegs:
;CRTC Controller, Index 0, Horizontal Total (RW; 0x3D4=0 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- Number of horizontal characters MINUS 5
;;
  db 95              ;0x5F










;CRTC Controller, Index 1, Horizontal Display-Enable End (RW; 0x3D4=1 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- Number of total displayed characters MINUS 1
;;
  db 79              ;0x4F










;CRTC Controller, Index 2, Start Horizontal Blanking Register (RW; 0x3D4=2 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- Number of total displayed characters MINUS 1
;;
  db 01010000b       ;0x50










;CRTC Controller, Index 3, End Horizontal Blanking Register (RW; 0x3D4=3 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-4 -- End Horizontal Blanking (2 here)
;
;      5,6 -- Display Enable Skew Control (0 here)
;
;        7 -- Test bit; must be 1
;;
  db 10000010b       ;0x82










;CRTC Controller, Index 4, Start Horizontal Retrace Pulse (RW; 0x3D4=4 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- Start Horizontal Retrace Pulse (84 here)
;;
  db 01010100b       ;0x54










;CRTC Controller, Index 5, End Horizontal Retrace Pulse (RW; 0x3D4=5 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-4 -- End Horizontal Retrace
;      5-6 -- Horizontal Retrace Delay
;        7 -- End Horizontal Blanking, Bit 5
;;
  db 10000000b       ;0x80










;CRTC Controller, Index 6, Vertical Total (RW; 0x3D4=6 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- 8 lower bits of number of horizontal raster scans MINUS 2
;;
  db 10111111b       ;0xBF










;CRTC Controller, Index 7, Overflow (RW; 0x3D4=7 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0 -- bit 8 of vertical total, reg idx 0x06
;      1 -- bit 8 of vertical total, reg idx 0x12
;      2 -- bit 8 of vertical total, reg idx 0x10
;      3 -- bit 8 of vertical total, reg idx 0x15
;      4 -- bit 8 of vertical total, reg idx 0x18
;      5 -- bit 9 of vertical total, reg idx 0x06
;      6 -- bit 9 of vertical total, reg idx 0x12
;      7 -- bit 9 of vertical total, reg idx 0x10
;;
  db 00011111b       ;0x1F










;CRTC Controller, Index 8, Preset Row Scan (RW; 0x3D4=8 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-4 -- preset row scan
;      5-6 -- byte panning control
;      7 -- reserved
;;
  db 00000000b       ;0x00










;CRTC Controller, Index 9, Maximum Scan Line (RW; 0x3D4=9 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-4 -- maximum scan line
;        5 -- start vertical blank
;        6 -- line compare
;        7 -- 200 to 400 line conversion
;;
  db 01000000b       ;  bit 7 should be 0 to display 400 vertical lines, for 320x400x256
;db 01000001b       ;0x41
;db 11100000b       ;0x41
;db 00011111b       ;0x41











;CRTC Controller, Index 10, Cursor Start (RW; 0x3D4=0x0A color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-4 -- cursor start
;        5 -- cursor off
;      6-7 -- reserved
;;
  db 00000000b       ;0x00










;CRTC Controller, Index 11, Cursor End (RW; 0x3D4=0x0B color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-4 -- cursor end
;      5-6 -- cursor skew
;        7 -- reserved
;;
  db 00000000b       ;0x00










;CRTC Controller, Index 12, Start Address High (RW; 0x3D4=0x0C color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- start address high
;;
  db 00000000b       ;0x00










;CRTC Controller, Index 13, Start Address Low (RW; 0x3D4=0x0D color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- start address low
;;
  db 00000000b       ;0x00










;CRTC Controller, Index 14, Cursor Location High (RW; 0x3D4=0x0E color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- cursor high
;;
  db 00000011b       ;0x03










;CRTC Controller, Index 15, Cursor Location Low (RW; 0x3D4=0x0F color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- cursor low
;;
  db 11000000b       ;0xC0










;CRTC Controller, Index 16, Vertical Retrace Start (W; 0x3D4=0x10 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 - lower 8 bits of vertical retrace pulse start position
;;
  db 156             ;0x9C










;CRTC Controller, Index 17, Vertical Retrace End (W; 0x3D4=0x11 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-3 -- vertical retrace end
;        4 -- clear vertical interrupt
;        5 -- enable vertical interrupt
;        6 -- select 5 refresh cycles
;        7 -- protect registers 0 to 7 enabled (0) or disabled (1)
;;
  db 10001110b       ;0x8E










;CRTC Controller, Index 18, Vertical Display Enable End (RW; 0x3D4=0x12 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- vertical display enable end
;;
  db 143             ;0x8F










;CRTC Controller, Index 19, Offset (RW; 0x3D4=0x13 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- offset
;;
  db 40              ;0x28










;CRTC Controller, Index 20, Underline Location (RW; 0x3D4=0x14 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-4 -- underline location
;        5 -- count by 4
;        6 -- double word mode, turn of for 320x400x256
;        7 -- reserved
;;
  ;db 01000000b       ;0x40
  db 00000000b      ;0x00 -- disable double word mode for 320x400x256










;CRTC Controller, Index 21, Start Vertical Blanking (RW; 0x3D4=0x15 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- start vertical blank -- lower 8 bits of 10-bit register
;;
  db 150             ;0x96










;CRTC Controller, Index 22, End Vertical Blanking (RW; 0x3D4=0x16 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- end vertical blank
;;
  db 185             ;0xB9










;CRTC Controller, Index 23, CRTC Mode Control (RW; 0x3D4=0x17 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0 -- compatibility mode support
;      1 -- select row scan counter
;      2 -- horizontal retrace select
;      3 -- count by two
;      4 -- reserved
;      5 -- address wrap
;      6 -- byte mode (1) or word mode (0), for 320x400x256 must be 1
;      7 -- hardware reset
;;
;db 10100011b       ;0xA3
  db 11100011b       ;enable byte mode for 320x400x256










;CRTC Controller, Index 24, Line Compare (RW; 0x3D4=0x18 color; 0x3B4 mono; 0x3D5 color; 0x3B5 mono):
;;
;
;
;
;  Bits:
;      0-7 -- lower 8 bits of compare target.
;             Bit 8 is in Overflow register index 7.
;             Bit 9 is in Maximum Scan Line register index 9.
;;
  db 11111111b       ;0xFF




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;





MCGA_g320x400x256__from13hGraphicsRegs:
;Graphics Controller Register, Index 0, Set/Reset (RW; 0x3CE=0; 0x3CF):
;;
;
;  Bits:
;      0-3 -- Set/Reset
;
;      All other bits are reserved. Set to 0; undefined on read.
;;
  db 00000000b       ;0x00










;Graphics Controller Register, Index 1, Enable Set/Reset (RW; 0x3CE=1; 0x3CF):
;;
;
;
;
;  Bits:
;      0-3 -- Enable Set/Reset
;             1 -- If write mode is 0, and the bit for the map is 1 here,
;                  write memory address with the value of the Set/Reset register.
;
;             0 -- If write mode is 0, and the bit for the map is 0 here,
;                  write memory address with the value of system CPU.
;
;      All other bits are reserved. Set to 0; undefined on read.
;;
  db 00000000b       ;0x00










;Graphics Controller Register, Index 2, Color Compare (RW; 0x3CE=2; 0x3CF):
;;
;
;
;
;  Bits:
;      0-3 -- Color compare
;             Color Compare Map n, where n is the bit position
;
;      All other bits are reserved. Set to 0; undefined on read.
;;
  db 00000000b       ;0x00










;Graphics Controller Register, Index 3, Data Rotate (RW; 0x3CE=3; 0x3CF):
;;
;
;
;
;  Bits:
;      0-2 -- Data rotate
;             Number of bits to right-rotate CPU data (0 here)
;
;      3,4 -- Function select
;             00 -- unmodified   <-- this one!!!!!!
;             01 -- AND data with latch
;             10 -- OR data with latch
;             11 -- XOR data with latch
;
;      All other bits are reserved. Set to 0; undefined on read.
;;
  db 00000000b       ;0x0










;Graphics Controller Register, Index 4, Read Map Select (RW; 0x3CE=4; 0x3CF):
;;
;
;
;
;  Bits:
;      0-1 -- Read Map Select
;             Select maps 0 to 3 for system read operations (map 0 here)
;
;
;      All other bits are reserved. Set to 0; undefined on read.
;;
  db 00000000b       ;0x00










;Graphics Controller Register, Index 5, Graphics Mode (RW; 0x3CE=5; 0x3CF):
;;
;
;
;
;  Bits:
;      0-1 -- Write Mode
;             Select write mode 0 to 3 (0 here)
;
;        2 -- Reserved, undefined on read
;
;        3 -- Read Type
;
;        4 -- Odd/Even, disable (0), or work as CGA (1), disable for 320x400x256, ALREADY DISABLED!
;
;        5 -- Shift Register
;
;        6 -- 256 Color Mode (1) or ???????
;
;        7 -- Reserved
;;
  db 01000000b       ;










;Graphics Controller Register, Index 6, Miscellaneous (RW; 0x3CE=6; 0x3CF):
;;
;
;
;
;  Bits:
;        0 -- Graphics Mode
;             Graphics Mode (1) or Text Mode (0)
;
;        1 -- Odd/Even (0), disable for 320x400x256, already disabled!
;
;      2,3 -- Memory Map (1 here)
;                    Map 0 -- 0xA0000-0xBFFFF
;                    Map 1 -- 0xA0000-0xAFFFF
;                    Map 2 -- 0xB0000-0xBFFFF
;                    Map 3 -- 0xB8000-0xBFFFF
;
;      4-7 -- Reserved
;;
  db 00000101b       ;shouldn't be map 0 here for more than 64K in 320x400x256










;Graphics Controller Register, Index 7, Color Don't Care (RW; 0x3CE=7; 0x3CF):
;;
;
;
;
;  Bits:
;      0-3 -- For each bit, if 0, don't participate in color
;             compare cycle; if 1 participate in it for that map.
;;
  db 00001111b       ;0x0F










;Graphics Controller Register, Index 8, Bit Mask (RW; 0x3CE=8; 0x3CF):
;;
;
;
;
;  Bits:
;      0-7 -- Bit mask
;;
  db 11111111b       ;0xFF




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;










MCGA_g320x400x256__from13hAttributeRegs:
;Attribute Controller Register, Index 0, Palette 0 (RW; 0x3C0=0; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 0               ;0x00










;Attribute Controller Register, Index 1, Palette 1 (RW; 0x3C0=1; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 1               ;0x01










;Attribute Controller Register, Index 2, Palette 2 (RW; 0x3C0=2; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 2               ;0x02










;Attribute Controller Register, Index 3, Palette 3 (RW; 0x3C0=3; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 3               ;0x03










;Attribute Controller Register, Index 4, Palette 4 (RW; 0x3C0=4; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 4               ;0x04










;Attribute Controller Register, Index 5, Palette 5 (RW; 0x3C0=5; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 5               ;0x05










;Attribute Controller Register, Index 6, Palette 6 (RW; 0x3C0=6; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 6               ;0x06










;Attribute Controller Register, Index 7, Palette 7 (RW; 0x3C0=7; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 7               ;0x07










;Attribute Controller Register, Index 8, Palette 8 (RW; 0x3C0=8; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 8               ;0x08










;Attribute Controller Register, Index 9, Palette 9 (RW; 0x3C0=9; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 9               ;0x09










;Attribute Controller Register, Index 10, Palette 10 (RW; 0x3C0=0x0A; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 10              ;0x0A










;Attribute Controller Register, Index 11, Palette 11 (RW; 0x3C0=0x0B; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 11              ;0x0B










;Attribute Controller Register, Index 12, Palette 12 (RW; 0x3C0=0x0C; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 12              ;0x0C










;Attribute Controller Register, Index 13, Palette 13 (RW; 0x3C0=0x0D; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 13              ;0x0D










;Attribute Controller Register, Index 14, Palette 14 (RW; 0x3C0=0x0E; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 14              ;0x0E










;Attribute Controller Register, Index 15, Palette 15 (RW; 0x3C0=0x0F; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-5 -- 0 to 64 color value
;
;      All other bits are reserved
;;
  db 15              ;0x0F










;Attribute Controller, Index 16, Attribute Mode Control (RW; 0x3C0=0x10; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0 -- graphics/alphanumeric
;      1 -- mono emulation
;      2 -- enable line graphics character codes
;      3 -- enable blink/select background intensity
;      4 -- reserved
;      5 -- PEL panning compatibility
;      6 -- PEL width
;      7 -- P5, P4 select
;
;;
  db 01000001b       ;0x41










;Attribute Controller, Index 17, Overscan Color (RW; 0x3C0=0x11; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-7 -- overscan color
;
;;
  db 00000000b       ;0x00 or black










;Attribute Controller, Index 18, Color Plane Enable (RW; 0x3C0=0x12; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-3 -- enable color plane
;      4-5 -- video status MUX
;      6-7 -- reserved
;
;;
  db 00001111b       ;0x0F










;Attribute Controller, Index 19, Horizontal PEL Panning (RW; 0x3C0=0x13; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-3 -- horizontal PEL panning
;      4-7 -- reserved
;
;;
  db 00000000b       ;0x00










;Attribute Controller, Index 20, Color Select (RW; 0x3C0=0x14; write 0x3C0; read 0x3C1):
;;
;
;
;
;  Bits:
;      0-1 -- SC5,SC4
;      2-3 -- SC6,SC7
;      4-7 -- Reserved
;
;;
  db 00000000b       ;0x00

I need to find the register values for VGA graphics mode 320x400@256 colors.

I already have the values for mode 3h, 4h, 12h and 13h.

I see that values for practically all usable text and graphics modes are found in the file TAURON30.ZIP

Author:  alexfru [ Wed Apr 24, 2019 4:45 pm ]
Post subject:  Re: Register values for VGA mode 320x400 256-color

~ wrote:
I need to find the register values for VGA graphics mode 320x400@256 colors.


PCGPE tells how to do 320x240 and years ago it worked. Perhaps, some poking around can give you 400 lines.

That page also mentions articles/book by Michael Abrash on the subject (e.g.).

Author:  matja [ Sun Apr 28, 2019 10:30 am ]
Post subject:  Re: Register values for VGA mode 320x400 256-color

If you already have BIOS mode 13h then you can tweak that slightly to get 320x200 planar mode ("Mode-X") and then increase the lines to 400 :
Code:
void vga_set_mode_320x200_planar(void) {
   vga_set_bios_mode(0x13);
   vga_write_seq(0x04, 0x06); // disable chain-4
   vga_write_crtc(0x14, 0x00); // disable double word mode
   vga_write_crtc(0x17, 0xe3); // enable byte mode
}

void vga_set_mode_320x400_planar(void) {
   vga_set_mode_320x200_planar();
   vga_write_crtc(0x09, 0x40); // 400 lines
}

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/