Finding 4-color standard graphics mode 4h register values

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
User avatar
~
Member
Member
Posts: 1228
Joined: Tue Mar 06, 2007 11:17 am
Libera.chat IRC: ArcheFire

Finding 4-color standard graphics mode 4h register values

Post by ~ »

I need a place to find the actual register values for VGA so that I can manually set 320x200 4-color graphics mode (BIOS mode 4h).

So far, my kernel has the registers for:

- 80x25 16-color text mode.
- 640x480 16-color.
- 320x200 256 colors.
- 320x200 Mode X.

Also, is there some way or some tool to read all the VGA registers and save them while I'm running a given video mode?
Last edited by ~ on Sat Jul 22, 2017 8:40 am, edited 1 time in total.
Gigasoft
Member
Member
Posts: 856
Joined: Sat Nov 21, 2009 5:11 pm

Re: Finding 4-color standard graphics mode 3h register value

Post by Gigasoft »

Mode 3 is 80x25 text mode. You mean mode 4. The registers are set as follows:

Clocking mode: 09h
Map mask: 03h
Character map: 00h
Memory mode: 02h
Output register: 63h
CRTC registers: 2Dh, 27h, 28h, 90h, 2Ah, 80h, 0BFh, 1Fh, 0, 0C1h, 0, 0, 0, 0, 0, 0, 9Ch, 8Eh, 8Fh, 14h, 0, 96h, 0B9h, 0A2h, 0FFh
Attribute controller registers: 0, 13h, 15h, 17h, 2, 4, 6, 7, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 1, 0, 3, 0
Graphics registers: 0, 0, 0, 0, 0, 30h, 0fh, 0, 0ffh

You read the VGA registers like this:
- To read an attribute controller register, write the index normally and read the data from port 3C1h.
- To read the output register, read from port 3CCh.
- To read color registers, write the starting index to port 3C7h and read color triplets sequentially from port 3C9h.
- To read any other register, write the index normally and read the data from the corresponding data port.
Post Reply