home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 11 Util
/
11-Util.zip
/
gendacs3.zip
/
svgadata.s3
< prev
next >
Wrap
Text File
|
1994-12-08
|
47KB
|
2,032 lines
/*
* OS/2 V3 SVGA PMI-File Generator
*/
[PMIVersion]
2.15
[AdapterType]
S3
[ChipSet]
S386C80X
#includecode "IBMGPMI.DLL";
[Hardware]
BusType = ISA
OEMString = "S386C80X GENERIC, S3 Incorporated"
Version = "S3 Incorporated. 86C801/805 "
/*
* HI-COLOR DAC
*/
DACString = "HICOLOR_RGB Generic"
TotalMemory = 1048576
MemoryIOAddress = 0x00000000
Endian = LITTLE
[IdentifyAdapter]
call pfnPMIIdentifyAdapter;
/*
* Unlock Extended Registers
*/
[UnLock]
inb(r0, 0x3d4);
outb(0x3d4, 0x38);
inb(r2, 0x3d5);
outb(0x3d5, 0x48);
outb(0x3d4, 0x39);
inb(r4, 0x3d5);
outb(0x3d5, 0xa5);
outb(0x3d4, 0x40);
inb(r6, 0x3d5);
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x01);
outb(0x3d4, r0);
/*
* Lock Extended Registers
*/
/*
* This section locks adapter and chip
* AS MUCH as BIOS does and NOT MORE!
* In other words, it restores the NORMAL lock state.
*/
[Lock]
r6 = 0x00000058;
r4 = 0x0000005a;
r2 = 0x00000096;
inb(r0, 0x3d4);
outb(0x3d4, 0x40);
outb(0x3d5, r6);
outb(0x3d4, 0x39);
outb(0x3d5, r4);
outb(0x3d4, 0x38);
outb(0x3d5, r2);
outb(0x3d4, r0);
[Cleanup]
outw(0x4ae8, 0x0002);
rmwbi(0x3d4, 0x3d5, 0x31, 0xf7, 0x00);
rmwbi(0x3d4, 0x3d5, 0x34, 0x00, 0x00);
rmwbi(0x3d4, 0x3d5, 0x3a, 0xef, 0x00);
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x00);
rmwbi(0x3d4, 0x3d5, 0x45, 0xfe, 0x00);
rmwbi(0x3d4, 0x3d5, 0x51, 0xf3, 0x00);
rmwbi(0x3d4, 0x3d5, 0x58, 0xec, 0x00);
rmwbi(0x3d4, 0x3d5, 0x59, 0x00, 0x0a);
rmwbi(0x3d4, 0x3d5, 0x5a, 0x00, 0x00);
rmwbi(0x3d4, 0x3d5, 0x60, 0x00, 0x07);
rmwbi(0x3d4, 0x3d5, 0x61, 0x00, 0x80);
rmwbi(0x3d4, 0x3d5, 0x62, 0x00, 0xa1);
r0 = 0x00000000;
rmwbi(0x3d4, 0x3d5, 0x55, 0xfe, 0x01);
inb(r255, 0x3c7);
inb(r255, 0x3c8);
inb(r255, 0x3c6);
inb(r255, 0x3c6);
inb(r255, 0x3c6);
inb(r255, 0x3c6);
rmwbi(0x3d4, 0x3d5, 0x55, 0xfd, 0x00);
outb(0x3c6, r0);
rmwbi(0x3d4, 0x3d5, 0x55, 0xfe, 0x00);
inb(r255, 0x3c7);
inb(r255, 0x3c8);
outb(0x3c6, 0xff);
[ProgramDAC]
rmwbi(0x3d4, 0x3d5, 0x55, 0xfe, 0x01);
inb(r255, 0x3c7);
inb(r255, 0x3c8);
inb(r255, 0x3c6);
inb(r255, 0x3c6);
inb(r255, 0x3c6);
inb(r255, 0x3c6);
rmwbi(0x3d4, 0x3d5, 0x55, 0xfd, 0x00);
outb(0x3c6, r0);
rmwbi(0x3d4, 0x3d5, 0x55, 0xfe, 0x00);
inb(r255, 0x3c7);
inb(r255, 0x3c8);
outb(0x3c6, 0xff);
[SetBankLinear]
r0 = 0x00000000;
inb(r1, 0x3d4);
rmwbi(0x3d4, 0x3d5, 0x31, 0xf6, 0x09);
rmwbi(0x3d4, 0x3d5, 0x40, 0xf7, 0x08);
rmwbi(0x3d4, 0x3d5, 0x58, 0xff, 0x00);
outb(0x3d4, 0x35);
inb(r2, 0x3d5);
r2 &= 0x000000f0;
r3 = r0 & 0x0000000f;
r3 |= r2;
outb(0x3d5, r3);
outb(0x3d4, 0x51);
inb(r2, 0x3d5);
r2 &= 0x000000f3;
r3 = r0 & 0x00000030;
r3 >>= 0x00000002;
r3 |= r2;
outb(0x3d5, r3);
outb(0x3d4, r1);
[GetBankLinear]
inb(r1, 0x3d4);
outb(0x3d4, 0x35);
inb(r0, 0x3d5);
r0 &= 0x0000000f;
outb(0x3d4, 0x51);
inb(r2, 0x3d5);
r2 &= 0x00000004;
r2 <<= 0x00000002;
r0 |= r2;
outb(0x3d4, r1);
[TrapRegs]
BYTE_IOPORT 0x03c2;
BYTE_IOPORT 0x03c4;
BYTE_IOPORT 0x03c5, 0x00-0x04;
BYTE_IOPORT 0x03d4;
BYTE_IOPORT 0x03d5, 0x00-0x18, 0x31-0x35, 0x3a-0x3c, 0x40-0x40, 0x42-0x43, 0x45-0x49, 0x4c-0x5a, 0x5c-0x5e, 0x60-0x62;
BYTE_IOPORT 0x03c0;
BYTE_IOPORT 0x03c1, 0x00-0x14;
BYTE_IOPORT 0x03ce;
BYTE_IOPORT 0x03cf, 0x00-0x08;
WORD_IOPORT 0x9ae8;
WORD_IOPORT 0x4ae8;
WORD_IOPORT 0xbee8;
WORD_IOPORT 0x96e8;
WORD_IOPORT 0x86e8;
WORD_IOPORT 0x82e8;
BYTE_IOPORT 0x03c6;
BYTE_IOPORT 0x03c7;
BYTE_IOPORT 0x03c8;
[comment]
Graphics Mode: 640 x 480 x 16 colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 80
XResolution = 640
YResolution = 480
TextRows = 30
BitsPerPixel = 4
NumberOfPlanes = 4
PageLength = 38400
SaveSize = 153600
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x012
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0xe3);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x06;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x5f; r1 = 0x4f; r2 = 0x50; r3 = 0x82; r4 = 0x54;
r5 = 0x80; r6 = 0x0b; r7 = 0x3e; r8 = 0x00; r9 = 0x40;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0x00;
r15 = 0x00; r16 = 0xea; r17 = 0x8c; r18 = 0xdf; r19 = 0x28;
r20 = 0x00; r21 = 0xe7; r22 = 0x04; r23 = 0xe3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x38;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x88; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x00; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x07; r97 = 0x80; r98 = 0xa1;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x85; r50 = 0x40; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x85; r59 = 0x5a; r60 = 0x10;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x59;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x04;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x01; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x00; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x01);
/*
* Set Enhanced Command Registers
*/
outw(0x4ae8, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x00);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 640 x 480 x 256 colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 80
XResolution = 640
YResolution = 480
TextRows = 30
BitsPerPixel = 8
NumberOfPlanes = 1
PageLength = 307200
SaveSize = 307200
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x101
[MonitorModeInfo]
VerticalRefresh = 72
[MonitorModeInfo]
VerticalRefresh = 60
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0xef);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x0e;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x63; r1 = 0x4f; r2 = 0x50; r3 = 0x86; r4 = 0x53;
r5 = 0x98; r6 = 0x07; r7 = 0x3e; r8 = 0x00; r9 = 0x40;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0xe8; r17 = 0x8b; r18 = 0xdf; r19 = 0x50;
r20 = 0x60; r21 = 0xdf; r22 = 0x07; r23 = 0xab; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x00;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x18; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x0b; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x07; r97 = 0x80; r98 = 0xa1;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x8d; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x95; r59 = 0x5e; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x0b;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x06; r7 = 0x07; r8 = 0x10; r9 = 0x11;
r10 = 0x12; r11 = 0x13; r12 = 0x14; r13 = 0x15; r14 = 0x16;
r15 = 0x17; r16 = 0x41; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x40; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
outw(0x4ae8, 0x0001);
outw(0xbee8, 0x1000);
outw(0xbee8, 0x33ff);
outw(0xbee8, 0x2000);
outw(0xbee8, 0x43ff);
outw(0xbee8, 0xa000);
outw(0xbee8, 0x03ff);
outw(0x96e8, 0x03ff);
outw(0x86e8, 0x0000);
outw(0x82e8, 0x0000);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 640 x 480 x 64K colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 80
XResolution = 640
YResolution = 480
TextRows = 30
BitsPerPixel = 16
NumberOfPlanes = 1
PageLength = 614400
SaveSize = 614400
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x111
[MonitorModeInfo]
VerticalRefresh = 72
[MonitorModeInfo]
VerticalRefresh = 60
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0xef);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x0e;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0xc1; r1 = 0x9f; r2 = 0xa2; r3 = 0x82; r4 = 0xa4;
r5 = 0x1c; r6 = 0x0c; r7 = 0x3e; r8 = 0x00; r9 = 0x40;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0xea; r17 = 0x8c; r18 = 0xdf; r19 = 0xa0;
r20 = 0x60; r21 = 0xe7; r22 = 0x05; r23 = 0xab; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x50; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x48;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x18; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x04; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x2f; r97 = 0x81; r98 = 0x40;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x8d; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x95; r59 = 0xbe; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x04;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x06; r7 = 0x07; r8 = 0x10; r9 = 0x11;
r10 = 0x12; r11 = 0x13; r12 = 0x14; r13 = 0x15; r14 = 0x16;
r15 = 0x17; r16 = 0x41; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x40; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
outw(0x4ae8, 0x0001);
outw(0xbee8, 0x1000);
outw(0xbee8, 0x33ff);
outw(0xbee8, 0x2000);
outw(0xbee8, 0x43ff);
outw(0xbee8, 0xa000);
outw(0xbee8, 0x03ff);
outw(0x96e8, 0x03ff);
outw(0x86e8, 0x0000);
outw(0x82e8, 0x0000);
/*
* Set DAC Registers
*/
r0 = 0x000000c0;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 640 x 480 x 16M colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 80
XResolution = 640
YResolution = 480
TextRows = 30
BitsPerPixel = 24
NumberOfPlanes = 1
PageLength = 921600
SaveSize = 921600
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x112
[MonitorModeInfo]
VerticalRefresh = 72
[MonitorModeInfo]
VerticalRefresh = 60
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0xef);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x0e;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x90; r1 = 0x77; r2 = 0x78; r3 = 0x91; r4 = 0x7b;
r5 = 0x0e; r6 = 0x0a; r7 = 0x3e; r8 = 0x00; r9 = 0x40;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0xea; r17 = 0x8c; r18 = 0xdf; r19 = 0x00;
r20 = 0x60; r21 = 0xe7; r22 = 0x03; r23 = 0xab; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x40; r81 = 0x10; r82 = 0xff; r83 = 0x00; r84 = 0x18;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x18; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x0e; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x2f; r97 = 0x81; r98 = 0xe0;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x8f; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x95; r59 = 0x92; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x80;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x80; r70 = 0x80; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x0e;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x06; r7 = 0x07; r8 = 0x10; r9 = 0x11;
r10 = 0x12; r11 = 0x13; r12 = 0x14; r13 = 0x15; r14 = 0x16;
r15 = 0x17; r16 = 0x41; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x40; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
outw(0x4ae8, 0x0001);
outw(0xbee8, 0x1000);
outw(0xbee8, 0x33ff);
outw(0xbee8, 0x2000);
outw(0xbee8, 0x43ff);
outw(0xbee8, 0xa000);
outw(0xbee8, 0x03ff);
outw(0x96e8, 0x03ff);
outw(0x86e8, 0x0000);
outw(0x82e8, 0x0000);
/*
* Set DAC Registers
*/
r0 = 0x000000e0;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 800 x 600 x 16 colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 100
XResolution = 800
YResolution = 600
TextRows = 37
BitsPerPixel = 4
NumberOfPlanes = 4
PageLength = 60000
SaveSize = 240000
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x102
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0x2f);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x06;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x7d; r1 = 0x63; r2 = 0x64; r3 = 0x80; r4 = 0x6c;
r5 = 0x1b; r6 = 0x98; r7 = 0xf0; r8 = 0x00; r9 = 0x60;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0x7c; r17 = 0xa2; r18 = 0x57; r19 = 0x32;
r20 = 0x00; r21 = 0x57; r22 = 0x98; r23 = 0xe3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x48;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x08; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x04; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x2f; r97 = 0x80; r98 = 0xa1;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x85; r50 = 0x00; r51 = 0x00; r52 = 0x02; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x85; r59 = 0x78; r60 = 0x10;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x04;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x01; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x00; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x01);
/*
* Set Enhanced Command Registers
*/
outw(0x4ae8, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x00);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 800 x 600 x 256 colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 100
XResolution = 800
YResolution = 600
TextRows = 37
BitsPerPixel = 8
NumberOfPlanes = 1
PageLength = 480000
SaveSize = 480000
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x103
[MonitorModeInfo]
VerticalRefresh = 72
[MonitorModeInfo]
VerticalRefresh = 60
[MonitorModeInfo]
VerticalRefresh = 56
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0x2f);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x0e;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x7d; r1 = 0x63; r2 = 0x64; r3 = 0x80; r4 = 0x6c;
r5 = 0x1b; r6 = 0x98; r7 = 0xf0; r8 = 0x00; r9 = 0x60;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0x7c; r17 = 0xa2; r18 = 0x57; r19 = 0x64;
r20 = 0x00; r21 = 0x57; r22 = 0x98; r23 = 0xe3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x48;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x18; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x04; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x2f; r97 = 0x80; r98 = 0xc9;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x8d; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x95; r59 = 0x78; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x04;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x01; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x00; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
outw(0x4ae8, 0x0001);
outw(0xbee8, 0x1000);
outw(0xbee8, 0x33ff);
outw(0xbee8, 0x2000);
outw(0xbee8, 0x43ff);
outw(0xbee8, 0xa000);
outw(0xbee8, 0x03ff);
outw(0x96e8, 0x03ff);
outw(0x86e8, 0x0000);
outw(0x82e8, 0x0000);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 800 x 600 x 64K colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 100
XResolution = 800
YResolution = 600
TextRows = 37
BitsPerPixel = 16
NumberOfPlanes = 1
PageLength = 960000
SaveSize = 960000
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x114
[MonitorModeInfo]
VerticalRefresh = 72
[MonitorModeInfo]
VerticalRefresh = 60
[MonitorModeInfo]
VerticalRefresh = 56
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0x2f);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x0e;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0xff; r1 = 0xc7; r2 = 0xc7; r3 = 0x82; r4 = 0xcc;
r5 = 0x00; r6 = 0x8e; r7 = 0xf0; r8 = 0x00; r9 = 0x60;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0x66; r17 = 0x8c; r18 = 0x57; r19 = 0xc8;
r20 = 0x00; r21 = 0x63; r22 = 0x80; r23 = 0xa3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x90; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x18;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x18; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x0a; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x2f; r97 = 0x81; r98 = 0x92;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x8d; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x95; r59 = 0xf8; r60 = 0x00;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x0a;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x01; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x00; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
outw(0x4ae8, 0x0001);
outw(0xbee8, 0x1000);
outw(0xbee8, 0x33ff);
outw(0xbee8, 0x2000);
outw(0xbee8, 0x43ff);
outw(0xbee8, 0xa000);
outw(0xbee8, 0x03ff);
outw(0x96e8, 0x03ff);
outw(0x86e8, 0x0000);
outw(0x82e8, 0x0000);
/*
* Set DAC Registers
*/
r0 = 0x000000c0;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 1024 x 768 x 16 colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 128
XResolution = 1024
YResolution = 768
TextRows = 48
BitsPerPixel = 4
NumberOfPlanes = 4
PageLength = 98304
SaveSize = 393216
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x104
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0xef);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x06;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0xa1; r1 = 0x7f; r2 = 0x80; r3 = 0x84; r4 = 0x84;
r5 = 0x95; r6 = 0x24; r7 = 0xf5; r8 = 0x00; r9 = 0x60;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0x02; r17 = 0x88; r18 = 0xff; r19 = 0x40;
r20 = 0x00; r21 = 0xff; r22 = 0x24; r23 = 0xe3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x48;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x08; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x0e; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x2f; r97 = 0x80; r98 = 0x80;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x85; r50 = 0x00; r51 = 0x00; r52 = 0x02; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x85; r59 = 0x9d; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x0e;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x01; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x00; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
outw(0x4ae8, 0x0007);
outw(0xbee8, 0x1000);
outw(0xbee8, 0x33ff);
outw(0xbee8, 0x2000);
outw(0xbee8, 0x43ff);
outw(0xbee8, 0xa000);
outw(0xbee8, 0x03ff);
outw(0x96e8, 0x03ff);
outw(0x86e8, 0x0000);
outw(0x82e8, 0x0000);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Graphics Mode: 1024 x 768 x 256 colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 128
XResolution = 1024
YResolution = 768
TextRows = 48
BitsPerPixel = 8
NumberOfPlanes = 1
PageLength = 786432
SaveSize = 786432
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
Int10ModeSet = 0x105
[MonitorModeInfo]
VerticalRefresh = 72
[MonitorModeInfo]
VerticalRefresh = 70
[MonitorModeInfo]
VerticalRefresh = 60
[MonitorModeInfo]
VerticalRefresh = 43
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0xef);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x0f; r3 = 0x00; r4 = 0x0e;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0xa1; r1 = 0x7f; r2 = 0x80; r3 = 0x84; r4 = 0x84;
r5 = 0x95; r6 = 0x24; r7 = 0xf5; r8 = 0x00; r9 = 0x60;
r10 = 0x00; r11 = 0x00; r12 = 0x00; r13 = 0x00; r14 = 0xff;
r15 = 0x00; r16 = 0x02; r17 = 0x88; r18 = 0xff; r19 = 0x80;
r20 = 0x00; r21 = 0xff; r22 = 0x24; r23 = 0xe3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x48;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x18; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x0e; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x2f; r97 = 0x81; r98 = 0x00;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x8d; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x95; r59 = 0x9b; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x51;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x0e;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x01; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x00; r6 = 0x05; r7 = 0x0f; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
outw(0x4ae8, 0x0007);
outw(0xbee8, 0x1000);
outw(0xbee8, 0x33ff);
outw(0xbee8, 0x2000);
outw(0xbee8, 0x43ff);
outw(0xbee8, 0xa000);
outw(0xbee8, 0x03ff);
outw(0x96e8, 0x03ff);
outw(0x86e8, 0x0000);
outw(0x82e8, 0x0000);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Text Mode: 40 cols, 25 rows.
[ModeInfo]
ModeAttributes = 0x08
BytesPerScanLine = 40
XResolution = 360
YResolution = 400
XCharSize = 9
YCharSize = 16
TextRows = 25
BitsPerPixel = 4
NumberOfPlanes = 1
PageLength = 4000
SaveSize = 4000
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000b8000
ApertureSize = 0x00008000
Int10ModeSet = 0x001
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0x67);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x08; r2 = 0x03; r3 = 0x00; r4 = 0x02;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x2d; r1 = 0x27; r2 = 0x28; r3 = 0x90; r4 = 0x2b;
r5 = 0xa0; r6 = 0xbf; r7 = 0x1f; r8 = 0x00; r9 = 0x4f;
r10 = 0x0d; r11 = 0x0e; r12 = 0x00; r13 = 0x00; r14 = 0x00;
r15 = 0x00; r16 = 0x9c; r17 = 0x8e; r18 = 0x8f; r19 = 0x14;
r20 = 0x1f; r21 = 0x96; r22 = 0xb9; r23 = 0xa3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x38;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x88; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x01; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x07; r97 = 0x80; r98 = 0xa1;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x85; r50 = 0x40; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x85; r59 = 0x5a; r60 = 0x10;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x59;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x0e;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x0c; r17 = 0x00; r18 = 0x0f; r19 = 0x08;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x10; r6 = 0x0e; r7 = 0x00; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x01);
/*
* Set Enhanced Command Registers
*/
outw(0x4ae8, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x00);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Text Mode: 80 cols, 25 rows.
[ModeInfo]
ModeAttributes = 0x08
BytesPerScanLine = 80
XResolution = 720
YResolution = 400
XCharSize = 9
YCharSize = 16
TextRows = 25
BitsPerPixel = 4
NumberOfPlanes = 1
PageLength = 4000
SaveSize = 4000
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000b8000
ApertureSize = 0x00008000
Int10ModeSet = 0x003
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0x67);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x03; r3 = 0x00; r4 = 0x02;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x5f; r1 = 0x4f; r2 = 0x50; r3 = 0x82; r4 = 0x55;
r5 = 0x81; r6 = 0xbf; r7 = 0x1f; r8 = 0x00; r9 = 0x4f;
r10 = 0x0d; r11 = 0x0e; r12 = 0x00; r13 = 0x00; r14 = 0x00;
r15 = 0x00; r16 = 0x9c; r17 = 0x8e; r18 = 0x8f; r19 = 0x28;
r20 = 0x1f; r21 = 0x96; r22 = 0xb9; r23 = 0xa3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x38;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x88; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x01; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x07; r97 = 0x80; r98 = 0xa1;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x85; r50 = 0x40; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x85; r59 = 0x5a; r60 = 0x10;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x59;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x0e;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x0c; r17 = 0x00; r18 = 0x0f; r19 = 0x08;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x10; r6 = 0x0e; r7 = 0x00; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x01);
/*
* Set Enhanced Command Registers
*/
outw(0x4ae8, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x00);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Text Mode: 132 cols, 25 rows.
[ModeInfo]
ModeAttributes = 0x08
BytesPerScanLine = 132
XResolution = 1056
YResolution = 400
XCharSize = 8
YCharSize = 16
TextRows = 25
BitsPerPixel = 4
NumberOfPlanes = 1
PageLength = 6600
SaveSize = 6600
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000b8000
ApertureSize = 0x00008000
Int10ModeSet = 0x109
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0x6f);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x03; r3 = 0x00; r4 = 0x02;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x9a; r1 = 0x83; r2 = 0x86; r3 = 0x9d; r4 = 0x87;
r5 = 0x1b; r6 = 0xbf; r7 = 0x1f; r8 = 0x00; r9 = 0x4f;
r10 = 0x0d; r11 = 0x0e; r12 = 0x00; r13 = 0x00; r14 = 0x03;
r15 = 0x9c; r16 = 0x9c; r17 = 0x8e; r18 = 0x8f; r19 = 0x42;
r20 = 0x1f; r21 = 0x96; r22 = 0xb9; r23 = 0xa3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x08;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x08; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x02; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x0f; r97 = 0x80; r98 = 0x85;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x85; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x85; r59 = 0x99; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x59;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x02;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x0c; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x10; r6 = 0x0e; r7 = 0x00; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x01);
/*
* Set Enhanced Command Registers
*/
outw(0x4ae8, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x00);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);
[comment]
Text Mode: 132 cols, 43 rows.
[ModeInfo]
ModeAttributes = 0x08
BytesPerScanLine = 132
XResolution = 1056
YResolution = 387
XCharSize = 8
YCharSize = 9
TextRows = 43
BitsPerPixel = 4
NumberOfPlanes = 1
PageLength = 11352
SaveSize = 11352
TotalMemory = 1048576
InterlaceMode = 1
BufferAddress = 0x000b8000
ApertureSize = 0x00008000
Int10ModeSet = 0x10a
[SetBank]
SetBankLinear;
[GetBank]
GetBankLinear;
[SetMode]
outb(0x3d4, 0x42);
outb(0x3d5, 0x00);
rmwbi(0x3d4, 0x3d5, 0x11, 0x7f, 0x00);
outb(0x3d4, 0x00);
outb(0x3d5, 0x5F);
/*
* Set Miscellaneous Output Register
*/
outb(0x3c2, 0x6f);
/*
* Set Sequencer Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x03; r3 = 0x00; r4 = 0x02;
boutb(5, 0x00, 0x3c4, 0x3c5);
outw(0x3c4, 0x0300);
/*
* Set CRT Registers
*/
outb(0x3d4, 0x11);
outb(0x3d5, 0x0e);
r0 = 0x9a; r1 = 0x83; r2 = 0x84; r3 = 0x9d; r4 = 0x87;
r5 = 0x1b; r6 = 0xbf; r7 = 0x1f; r8 = 0x00; r9 = 0x48;
r10 = 0x07; r11 = 0x08; r12 = 0x00; r13 = 0x00; r14 = 0x15;
r15 = 0xa8; r16 = 0x98; r17 = 0x8a; r18 = 0x82; r19 = 0x42;
r20 = 0x1f; r21 = 0x8b; r22 = 0xb8; r23 = 0xa3; r24 = 0xff;
boutb(25, 0x00, 0x3d4, 0x3d5);
r80 = 0x00; r81 = 0x00; r82 = 0xff; r83 = 0x00; r84 = 0x08;
r85 = 0x00; r86 = 0x00; r87 = 0x00; r88 = 0x08; r89 = 0x00;
r90 = 0x0a;
boutb(11, 0x50, 0x3d4, 0x3d5);
r92 = 0x02; r93 = 0x00; r94 = 0x00;
boutb(3, 0x5c, 0x3d4, 0x3d5);
r96 = 0x0f; r97 = 0x80; r98 = 0x85;
boutb(3, 0x60, 0x3d4, 0x3d5);
r49 = 0x85; r50 = 0x00; r51 = 0x00; r52 = 0x00; r53 = 0x00;
boutb(5, 0x31, 0x3d4, 0x3d5);
r58 = 0x85; r59 = 0x99; r60 = 0x40;
boutb(3, 0x3a, 0x3d4, 0x3d5);
r64 = 0x59;
boutb(1, 0x40, 0x3d4, 0x3d5);
r67 = 0x00;
boutb(1, 0x43, 0x3d4, 0x3d5);
r69 = 0x00; r70 = 0x00; r71 = 0xff; r72 = 0xfc; r73 = 0xff;
boutb(5, 0x45, 0x3d4, 0x3d5);
r76 = 0xff; r77 = 0xff; r78 = 0xff; r79 = 0xdf;
boutb(4, 0x4c, 0x3d4, 0x3d5);
r66 = 0x02;
boutb(1, 0x42, 0x3d4, 0x3d5);
/*
* Set Other Registers
*/
call pfnPMISetMonitorTimings;
/*
* Set Attribute Registers
*/
r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; r4 = 0x04;
r5 = 0x05; r6 = 0x14; r7 = 0x07; r8 = 0x38; r9 = 0x39;
r10 = 0x3a; r11 = 0x3b; r12 = 0x3c; r13 = 0x3d; r14 = 0x3e;
r15 = 0x3f; r16 = 0x0c; r17 = 0x00; r18 = 0x0f; r19 = 0x00;
r20 = 0x00;
boutb(21, 0x00, 0x3c0, 0x3c1);
/*
* Set GDC Registers
*/
r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00; r4 = 0x00;
r5 = 0x10; r6 = 0x0e; r7 = 0x00; r8 = 0xff;
boutb(9, 0x00, 0x3ce, 0x3cf);
/*
* Set Enhanced Command Registers
*/
waitw(0x9ae8, 0x0200, 0x0064, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x01);
/*
* Set Enhanced Command Registers
*/
outw(0x4ae8, 0x0000);
/*
* Set CRT Registers
*/
rmwbi(0x3d4, 0x3d5, 0x40, 0xfe, 0x00);
/*
* Set DAC Registers
*/
r0 = 0x00000000;
ProgramDAC;
inb(r0, 0x3da);
outb(0x3c0, 0x20);