AH = 1Ch
AL = 00h return state buffer size
Return: BX = number of 64-byte blocks needed
01h save video state
ES:BX -> buffer
02h restore video state
ES:BX -> buffer containing previously saved state
CX = requested states
bit 0 video hardware
1 BIOS data areas
2 color registers and DAC state
3-15 reserved
Return: AL = 1Ch if function supported
Notes:  many BIOSes corrupt the video registers when saving the state, so a
program should restore the state immediately after saving it (the
saved data is uncorrupted)
the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h

Format of video hardware state:
Offset  Size    Description
00h    BYTE    sequencer index register
01h    BYTE    CRTC index register
02h    BYTE    graphics controller index register
03h    BYTE    attribute controller index register
04h    BYTE    feature controller register
05h  4 BYTEs   sequencer registers
09h    BYTE    sequencer register 0
0Ah 25 BYTEs   CRTC registers 0-8
23h 16 BYTEs   palette registers 00h-0Fh
33h  4 BYTEs   attribute registers 10h-13h
37h  9 BYTEs   graphics controller registers 0-8
40h    BYTE    CRTC base address (low)
41h    BYTE    CRTC base address (high)
42h    BYTE    plane 0 latch
43h    BYTE    plane 1 latch
44h    BYTE    plane 2 latch
45h    BYTE    plane 3 latch

Format of DAC state:
Offset  Size    Description
00h    BYTE    read/write mode DAC
01h    BYTE    pixel address
02h    BYTE    pixel mask
03h 768 BYTEs  color data (256 triples)
303h    BYTE    color select register