Initial. Don't... just don't ask.

This commit is contained in:
Ryan McGrath 2011-02-24 00:22:00 -08:00
commit 00bae13bba
586 changed files with 129057 additions and 0 deletions

1
obsolete/et4000/0-README Normal file
View file

@ -0,0 +1 @@
Please read 'man 7 svgalib.et4000'

316
obsolete/et4000/cardex.w32 Normal file
View file

@ -0,0 +1,316 @@
/*
This is for a Cardex ET4000/W32, with a high-end monitor (it uses
58 kHz horizontal sync for 1024x768 non-int at 70 Hz).
--HH
*/
/*
( File generated by tseng3.exe )
tseng3 v1.2, Copyright (C) 1993 Tommy Frandsen, Harm Hanemaayer
and Hartmut Schirmer
Permission is granted to any individual or institution to use, copy, or
redistribute this executable so long as it is not modified and that it is
not sold for profit.
LIKE ANYTHING ELSE THAT'S FREE, TSENG3 IS PROVIDED AS IS AND COMES WITH
NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL
THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF
THIS SOFTWARE.
*/
/* Music 15/16/24 bit dac (AT&T compatible) detected */
#define DAC_TYPE 9
#define CLOCK_VALUES { \
/* 0 */ 50350, \
/* 1 */ 56644, \
/* 2 */ 65293, \
/* 3 */ 72364, \
/* 4 */ 80429, \
/* 5 */ 90155, \
/* 6 */ 63300, \
/* 7 */ 75379 \
}
/* VESA HiColor mode 0x10D -- 320x200x32K */
/* Video timing: Vertical frequency : 69.8Hz
Horizontal frequency : 31.3KHz */
static unsigned char g320x200x32K_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x41,0x00,0x00,
0x00,0x00,0x00,0x00,0x9C,0x8E,0x8F,0x50,0x60,0x96,0xB9,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x63,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xFC,0x00,0x00,
0x80
};
/* VESA HiColor mode 0x10E -- 320x200x64K */
#define g320x200x64K_regs g320x200x32K_regs
/* ET4000 TrueColor BIOS mode 0x13 -- 320x200x16M : NOT SUPPORTED */
#define g320x200x16M_regs DISABLE_MODE
/* VESA mode 0x101 -- 640x480x256 */
/* Video timing: Vertical frequency : 59.7Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x480x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEA,0x8C,0xDF,0x50,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xFC,0x00,0x00,
0x00
};
/* VESA HiColor mode 0x110 -- 640x480x32K */
/* Video timing: Vertical frequency : 59.7Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x480x32K_regs[73] = {
0xC3,0x9F,0xA1,0x85,0xA7,0x1F,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEA,0x8C,0xDF,0xA0,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x80
};
/* VESA HiColor mode 0x111 -- 640x480x64K */
#define g640x480x64K_regs g640x480x32K_regs
/* VESA TrueColor mode 0x112 -- 640x480x16M */
/* Video timing: Vertical frequency : 59.6Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x480x16M_regs[73] = {
0x27,0xEF,0xF2,0x88,0xF8,0x98,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEA,0x0C,0xDF,0xF0,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xEF,
0x1C,0x00,0x28,0x00,0x0A,0x00,0x2B,0x0F,0x01,0xBC,0x00,0x00,
0x80
};
/* VESA mode 0x102 -- 800x600x16 */
/* Video timing: Vertical frequency : 72.4Hz
Horizontal frequency : 48.2KHz */
static unsigned char g800x600x16_regs[73] = {
0x7D,0x63,0x63,0x81,0x6D,0x1C,0x98,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x7C,0x82,0x57,0x32,0x00,0x57,0x99,0xC3,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x0F,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x06,
0x23,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x00
};
/* VESA mode 0x103 -- 800x600x256 */
/* Video timing: Vertical frequency : 72.4Hz
Horizontal frequency : 48.2KHz */
static unsigned char g800x600x256_regs[73] = {
0x7D,0x63,0x64,0x80,0x6D,0x1C,0x98,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x7C,0x82,0x57,0x64,0x60,0x5D,0x93,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x23,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x00
};
/* VESA HiColor mode 0x113 -- 800x600x32K */
/* Video timing: Vertical frequency : 60.8Hz
Horizontal frequency : 38.5KHz */
static unsigned char g800x600x32K_regs[73] = {
0xFF,0xC7,0xC9,0x81,0xD1,0x11,0x77,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x5D,0x8F,0x57,0xC8,0x60,0x5B,0x74,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x1C,0x00,0x28,0x00,0x0A,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x80
};
/* VESA HiColor mode 0x114 -- 800x600x64K */
#define g800x600x64K_regs g800x600x32K_regs
/* ET4000 TrueColor BIOS mode 0x30 -- 800x600x16M : NOT SUPPORTED */
/* VESA mode 0x104 -- 1024x768x16 */
/* Video timing: Vertical frequency : 71.8Hz
Horizontal frequency : 57.8KHz */
static unsigned char g1024x768x16_regs[73] = {
0xA8,0x7F,0x7F,0x8C,0x87,0x98,0x24,0xF5,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x88,0xFF,0x40,0x00,0xFF,0x25,0xC3,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x0F,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x06,
0xE3,
0x1C,0x00,0x28,0x00,0x0A,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x00
};
/* VESA mode 0x105 -- 1024x768x256 */
/* Video timing: Vertical frequency : 71.8Hz
Horizontal frequency : 57.8KHz */
static unsigned char g1024x768x256_regs[73] = {
0xA8,0x7F,0x7F,0x8C,0x87,0x98,0x24,0xF5,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x88,0xFF,0x80,0x60,0xFF,0x25,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x1C,0x00,0x28,0x00,0x0A,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x38 -- 1024x768x32K : NOT SUPPORTED */
/* ET4000 HiColor BIOS mode 0x38 -- 1024x768x64K : NOT SUPPORTED */
/* ET4000 TrueColor BIOS mode 0x38 -- 1024x768x16M : NOT SUPPORTED */
/* VESA mode 0x106 -- 1280x1024x16 */
/* Video timing: Vertical frequency : 43.5Hz (interlaced)
Horizontal frequency : 48.1KHz */
static unsigned char g1280x1024x16_regs[73] = {
0xCB,0x9F,0xA0,0x8E,0xA9,0x04,0x4F,0x52,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x11,0x89,0xFF,0x50,0x00,0x09,0x46,0xC3,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x0F,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x06,
0x23,
0x1C,0x00,0x28,0x00,0x0A,0x9B,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x00
};
/* VESA mode 0x107 -- 1280x1024x256 : NOT SUPPORTED */
/* VESA HiColor mode 0x119 -- 1280x1024x32K : NOT SUPPORTED */
/* VESA HiColor mode 0x11A -- 1280x1024x64K : NOT SUPPORTED */
/* VESA TrueColor mode 0x11B -- 1280x1024x16M : NOT SUPPORTED */
/* --- ET4000 specific modes */
#ifdef _DYNAMIC_ONLY_
/* ET4000 BIOS mode 0x2D -- 640x350x256 */
/* Video timing: Vertical frequency : 69.8Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x350x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x83,0x85,0x5D,0x50,0x60,0x63,0xBA,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xA3,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xFC,0x00,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2D -- 640x350x32K */
/* Video timing: Vertical frequency : 69.8Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x350x32K_regs[73] = {
0xC3,0x9F,0xA1,0x85,0xA7,0x1F,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x83,0x85,0x5D,0xA0,0x60,0x63,0xBA,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xA3,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x80
};
/* ET4000 HiColor BIOS mode 0x2D -- 640x350x64K */
#define g640x350x64K_regs g640x350x32K_regs
/* ET4000 TrueColor BIOS mode 0x2D -- 640x350x16M */
/* Video timing: Vertical frequency : 69.6Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x350x16M_regs[73] = {
0x27,0xEF,0xF2,0x88,0xF8,0x98,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x83,0x05,0x5D,0xF0,0x60,0x63,0xBA,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xAF,
0x1C,0x00,0x28,0x00,0x0A,0x00,0x2B,0x0F,0x01,0xBC,0x00,0x00,
0x80
};
/* VESA mode 0x100 -- 640x400x256 */
/* Video timing: Vertical frequency : 69.8Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x400x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x9C,0x8E,0x8F,0x50,0x60,0x96,0xB9,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x63,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xFC,0x00,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2F -- 640x400x32K */
/* Video timing: Vertical frequency : 69.8Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x400x32K_regs[73] = {
0xC3,0x9F,0xA1,0x85,0xA7,0x1F,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x9C,0x8E,0x8F,0xA0,0x60,0x96,0xB9,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x63,
0x1C,0x00,0x28,0x00,0x08,0x00,0x2B,0x0F,0x00,0xBC,0x00,0x00,
0x80
};
/* ET4000 HiColor BIOS mode 0x2F -- 640x400x64K */
#define g640x400x64K_regs g640x400x32K_regs
/* ET4000 TrueColor BIOS mode 0x2F -- 640x400x16M */
/* Video timing: Vertical frequency : 69.6Hz
Horizontal frequency : 31.3KHz */
static unsigned char g640x400x16M_regs[73] = {
0x27,0xEF,0xF2,0x88,0xF8,0x98,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x9C,0x0E,0x8F,0xF0,0x60,0x96,0xB9,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x6F,
0x1C,0x00,0x28,0x00,0x0A,0x00,0x2B,0x0F,0x01,0xBC,0x00,0x00,
0x80
};
#endif /* defined(_DYNAMIC_ONLY_ALL_) */

View file

@ -0,0 +1,119 @@
/* ET4000 registers from SVGALIB 0.81 */
/* Define DAC_TYPE to force the DAC type used in the ET4000 driver. If it */
/* is not defined, the driver tries to autodetect the DAC type which may go */
/* wrong. */
/* Use the following values:
0: Ordinary DAC
1: Sierra SC11486 (32k)
3: Sierra 32k/64k
5: SS2410 15/24bit DAC
9: AT&T 20c491/2 (32k/64k/24bit)
17: Acumos ADAC (Cirrus Logic DAC)
33: Sierra 15025/6 24-bit DAC
*/
#define DAC_TYPE 0
/* unsupported modes */
#define g320x200x64K_regs DISABLE_MODE
#define g320x200x16M_regs DISABLE_MODE
#define g800x600x16_regs DISABLE_MODE
#define g1024x768x16_regs DISABLE_MODE
#define g1280x1024x16_regs DISABLE_MODE
/* Got this mode from someone's tseng3.exe dump. */
/* ET4000 HiColor BIOS mode 0x13 -- 320x200x32K */
/* Video timing: Vertical frequency : 70.3Hz
Horizontal frequency : 31.6KHz */
static unsigned char g320x200x32K_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x41,0x00,0x00,
0x00,0x00,0x00,0x00,0x9C,0x8E,0x8F,0x50,0x60,0x96,0xB9,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x63,
0x00,0x00,0x28,0x00,0x08,0x00,0x43,0x0F,0x00,0xFC,0x00,0x00,
0x00
};
/* ET4000 BIOS mode 2Eh - 640x480x256 */
static unsigned char g640x480x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEA,0x8C,0xDF,0x50,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x00,0x00,0x28,0x00,0x08,0x00,0x03,0x0F,0x00,0xFC,0x00,0x00,
0x00
};
/* ET4000 BIOS mode 30h - 800x600x256 */
static unsigned char g800x600x256_regs[73] = {
0x7F,0x63,0x64,0x02,0x6A,0x1D,0x77,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x5D,0x8F,0x57,0x64,0x60,0x5B,0x74,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x00,0x00,0x28,0x00,0x0A,0x00,0x03,0x0F,0x00,0xFC,0x00,0x00,
0x00
};
/* ET4000 BIOS mode 38h - 1024x768x256 */
static unsigned char g1024x768x256_regs[73] = {
0xA1,0x7F,0x80,0x04,0x89,0x99,0x26,0xFD,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x8A,0xFF,0x80,0x60,0x04,0x22,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xEB,
0x00,0x00,0x28,0x00,0x08,0x00,0x03,0x0F,0x00,0xBC,0x00,0x00,
0x00
};
static unsigned char g800x600x32K_regs[73] = {
0xF9,0xC7,0xC9,0x9B,0xCF,0x8F,0x78,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x5C,0x8E,0x57,0xC8,0x60,0x5B,0x75,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xEF,
0x00,0x00,0x28,0x00,0x08,0x00,0x03,0x0F,0x00,0xBC,0x00,0x00,
0x06
};
#define g800x600x64K_regs g800x600x32K_regs
static unsigned char g640x480x16M_regs[73] = {
0x27,0xEF,0xF2,0x88,0xF8,0x98,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEA,0x0C,0xDF,0xF0,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xEF,
0x00,0x00,0x28,0x00,0x0A,0x00,0x03,0x0F,0x01,0xBC,0x00,0x00,
0x00
};
static unsigned char g640x480x32K_regs[73] = {
0xC3,0x9F,0xA1,0x85,0xA7,0x1F,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEA,0x8C,0xDF,0xA0,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x00,0x00,0x28,0x00,0x08,0x00,0x03,0x0F,0x00,0xBC,0x00,0x00,
0x00
};
#define g640x480x64K_regs g640x480x32K_regs

212
obsolete/et4000/orchid.pdII Normal file
View file

@ -0,0 +1,212 @@
/*
This is for an Orchid Prodesigner II.
The 640x480 and 800x600 modes are low-end (hor. sync 35.5 kHz)
The 1024x768 modes are 60 Hz non-interlaced (hsync 48.3 kHz); be
sure to disable these if your monitor can't handle them.
(file provided by Kayvan Sylvan <kayvan@satyr.sylvan.com>)
*/
/*
( File generated by tseng3.exe )
tseng3 v1.2, Copyright (C) 1993 Tommy Frandsen, Harm Hanemaayer
and Hartmut Schirmer
Permission is granted to any individual or institution to use, copy, or
redistribute this executable so long as it is not modified and that it is
not sold for profit.
LIKE ANYTHING ELSE THAT'S FREE, TSENG3 IS PROVIDED AS IS AND COMES WITH
NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL
THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF
THIS SOFTWARE.
*/
/* Dac detection BIOS call returned an error */
#define CLOCK_VALUES { \
/* 0 */ 25175, \
/* 1 */ 28322, \
/* 2 */ 39999, \
/* 3 */ 36000, \
/* 4 */ 25177, \
/* 5 */ 28320, \
/* 6 */ 44899, \
/* 7 */ 62006 \
}
/* ET4000 HiColor BIOS mode 0x13 -- 320x200x32K : NOT SUPPORTED */
#define g320x200x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x13 -- 320x200x64K : NOT SUPPORTED */
#define g320x200x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x13 -- 320x200x16M : NOT SUPPORTED */
#define g320x200x16M_regs DISABLE_MODE
/* ET4000 BIOS mode 0x2E -- 640x480x256 */
/* Video timing: Vertical frequency : 59.9Hz
Horizontal frequency : 31.5KHz */
static unsigned char g640x480x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEA,0x8C,0xDF,0x50,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xE3,
0x00,0x00,0x08,0x00,0x08,0x00,0x43,0x1F,0x00,0xBC,0x00,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2E -- 640x480x32K : NOT SUPPORTED */
#define g640x480x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x2E -- 640x480x64K : NOT SUPPORTED */
#define g640x480x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x2E -- 640x480x16M : NOT SUPPORTED */
#define g640x480x16M_regs DISABLE_MODE
/* ET4000 BIOS mode 0x29 -- 800x600x16 */
/* Video timing: Vertical frequency : 55.9Hz
Horizontal frequency : 35.4KHz */
static unsigned char g800x600x16_regs[73] = {
0x7A,0x63,0x64,0x1D,0x68,0x9A,0x78,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x5C,0x8E,0x57,0x32,0x00,0x5B,0x75,0xC3,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x0F,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x06,
0xEF,
0x00,0x00,0x08,0x00,0x08,0x00,0x43,0x1F,0x00,0xBC,0x00,0x00,
0x00
};
/* ET4000 BIOS mode 0x30 -- 800x600x256 */
/* Video timing: Vertical frequency : 55.9Hz
Horizontal frequency : 35.4KHz */
static unsigned char g800x600x256_regs[73] = {
0x7A,0x63,0x64,0x1D,0x68,0x9A,0x78,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x5C,0x8E,0x57,0x64,0x60,0x5B,0x75,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xEF,
0x00,0x00,0x08,0x00,0x08,0x00,0x43,0x1F,0x00,0xBC,0x00,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x30 -- 800x600x32K : NOT SUPPORTED */
#define g800x600x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x30 -- 800x600x64K : NOT SUPPORTED */
#define g800x600x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x30 -- 800x600x16M : NOT SUPPORTED */
/* ET4000 BIOS mode 0x37 -- 1024x768x16 */
/* Video timing: Vertical frequency : 59.9Hz
Horizontal frequency : 48.4KHz */
static unsigned char g1024x768x16_regs[73] = {
0x9B,0x7F,0x7F,0x1F,0x85,0x1B,0x26,0xF5,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x06,0x88,0xFF,0x40,0x00,0xFF,0x27,0xC3,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x0F,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x06,
0x2F,
0x00,0x00,0x08,0x00,0x0A,0x00,0x43,0x1F,0x00,0xFC,0x00,0x00,
0x90
};
/* ET4000 BIOS mode 0x38 -- 1024x768x256 */
/* Video timing: Vertical frequency : 60.0Hz
Horizontal frequency : 48.4KHz */
static unsigned char g1024x768x256_regs[73] = {
0x9B,0x7F,0x7F,0x1F,0x85,0x1B,0x26,0xF5,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x06,0x88,0xFF,0x80,0x60,0xFF,0x27,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x2F,
0x00,0x00,0x08,0x00,0x0A,0x00,0x43,0x1F,0x00,0xFC,0x00,0x00,
0x90
};
/* ET4000 HiColor BIOS mode 0x38 -- 1024x768x32K : NOT SUPPORTED */
/* ET4000 HiColor BIOS mode 0x38 -- 1024x768x64K : NOT SUPPORTED */
/* ET4000 TrueColor BIOS mode 0x38 -- 1024x768x16M : NOT SUPPORTED */
/* ET4000 BIOS mode 0x3D -- 1280x1024x16 : NOT SUPPORTED */
#define g1280x1024x16_regs DISABLE_MODE
/* VESA mode 0x107 -- 1280x1024x256 : NOT SUPPORTED */
/* VESA HiColor mode 0x119 -- 1280x1024x32K : NOT SUPPORTED */
/* VESA HiColor mode 0x11A -- 1280x1024x64K : NOT SUPPORTED */
/* VESA TrueColor mode 0x11B -- 1280x1024x16M : NOT SUPPORTED */
/* --- ET4000 specific modes */
#ifdef _DYNAMIC_ONLY_
/* ET4000 BIOS mode 0x2D -- 640x350x256 */
/* Video timing: Vertical frequency : 70.1Hz
Horizontal frequency : 31.5KHz */
static unsigned char g640x350x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x83,0x85,0x5D,0x50,0x60,0x63,0xBA,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xA3,
0x00,0x00,0x08,0x00,0x08,0x00,0x43,0x1F,0x00,0xBC,0x00,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2D -- 640x350x32K : NOT SUPPORTED */
#define g640x350x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x2D -- 640x350x64K : NOT SUPPORTED */
#define g640x350x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x2D -- 640x350x16M : NOT SUPPORTED */
#define g640x350x16M_regs DISABLE_MODE
/* ET4000 BIOS mode 0x2F -- 640x400x256 */
/* Video timing: Vertical frequency : 70.1Hz
Horizontal frequency : 31.5KHz */
static unsigned char g640x400x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x9C,0x8E,0x8F,0x50,0x60,0x96,0xB9,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x63,
0x00,0x00,0x08,0x00,0x08,0x00,0x43,0x1F,0x00,0xBC,0x00,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2F -- 640x400x32K : NOT SUPPORTED */
#define g640x400x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x2F -- 640x400x64K : NOT SUPPORTED */
#define g640x400x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x2F -- 640x400x16M : NOT SUPPORTED */
#define g640x400x16M_regs DISABLE_MODE
#endif /* defined(_DYNAMIC_ONLY_ALL_) */

216
obsolete/et4000/speedstar+ Normal file
View file

@ -0,0 +1,216 @@
/*
Max hor. sync: 56 Hz (1024x768 NI at 70 Hz) --HH
*/
/*********************************************************
** These register value are from a SpeedSTAR Plus V4.23 **
** **
** Oscillator frequencies (from dmode.com) : **
** **
** 25.175 28.322 75.0 72.0 80.0 44.9 50.0 65.0 **
**********************************************************/
/*
( File generated by tseng3.exe )
tseng3 v1.2, Copyright (C) 1993 Tommy Frandsen, Harm Hanemaayer
and Hartmut Schirmer
Permission is granted to any individual or institution to use, copy, or
redistribute this executable so long as it is not modified and that it is
not sold for profit.
LIKE ANYTHING ELSE THAT'S FREE, TSENG3 IS PROVIDED AS IS AND COMES WITH
NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL
THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF
THIS SOFTWARE.
*/
/* Standard VGA dac detected */
#ifndef alt
#define DAC_TYPE 0
#define CLOCK_VALUES { \
/* 0 */ 25175, \
/* 1 */ 28322, \
/* 2 */ 50181, \
/* 3 */ 61231, \
/* 4 */ 67684, \
/* 5 */ 62300, \
/* 6 */ 51760, \
/* 7 */ 59149 \
}
/* ET4000 HiColor BIOS mode 0x13 -- 320x200x32K : NOT SUPPORTED */
#define g320x200x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x13 -- 320x200x64K : NOT SUPPORTED */
#define g320x200x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x13 -- 320x200x16M : NOT SUPPORTED */
#define g320x200x16M_regs DISABLE_MODE
/* ET4000 BIOS mode 0x2E -- 640x480x256 */
/* Video timing: Vertical frequency : 72.3Hz
Horizontal frequency : 38.0KHz */
static unsigned char g640x480x256_regs[73] = {
0x66,0x4F,0x50,0x89,0x58,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0xEC,0x8C,0xDF,0x50,0x60,0xE7,0x04,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xEF,
0x00,0x00,0x28,0x00,0x02,0x00,0x41,0x1F,0x00,0xFC,0x01,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2E -- 640x480x32K : NOT SUPPORTED */
#define g640x480x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x2E -- 640x480x64K : NOT SUPPORTED */
#define g640x480x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x2E -- 640x480x16M : NOT SUPPORTED */
#define g640x480x16M_regs DISABLE_MODE
/* ET4000 BIOS mode 0x29 -- 800x600x16 */
/* Video timing: Vertical frequency : 72.2Hz
Horizontal frequency : 48.1KHz */
static unsigned char g800x600x16_regs[73] = {
0x7D,0x63,0x64,0x01,0x6C,0x1A,0x98,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x69,0x80,0x57,0x32,0x00,0x59,0x7D,0xC3,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x0F,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x06,
0xAB,
0x00,0x00,0x28,0x00,0x02,0x00,0x41,0x0F,0x00,0xBC,0x01,0x00,
0x00
};
/* ET4000 BIOS mode 0x30 -- 800x600x256 */
/* Video timing: Vertical frequency : 72.2Hz
Horizontal frequency : 48.1KHz */
static unsigned char g800x600x256_regs[73] = {
0x7D,0x63,0x64,0x01,0x6C,0x1A,0x98,0xF0,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x69,0x80,0x57,0x64,0x60,0x59,0x7D,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xAB,
0x00,0x00,0x28,0x00,0x02,0x00,0x41,0x0F,0x00,0xBC,0x01,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x30 -- 800x600x32K : NOT SUPPORTED */
#define g800x600x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x30 -- 800x600x64K : NOT SUPPORTED */
#define g800x600x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x30 -- 800x600x16M : NOT SUPPORTED */
/* ET4000 BIOS mode 0x37 -- 1024x768x16 */
/* Video timing: Vertical frequency : 70.0Hz
Horizontal frequency : 56.5KHz */
static unsigned char g1024x768x16_regs[73] = {
0xA1,0x7F,0x80,0x04,0x84,0x94,0x24,0xFD,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x89,0xFF,0x40,0x00,0x01,0x24,0xC3,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x0F,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x06,
0x2B,
0x00,0x00,0x28,0x00,0x00,0x00,0x41,0x0F,0x00,0xBC,0x01,0x00,
0x00
};
/* ET4000 BIOS mode 0x38 -- 1024x768x256 */
/* Video timing: Vertical frequency : 70.0Hz
Horizontal frequency : 56.4KHz */
static unsigned char g1024x768x256_regs[73] = {
0xA1,0x7F,0x80,0x04,0x84,0x94,0x24,0xFD,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x89,0xFF,0x80,0x60,0x01,0x24,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x2B,
0x00,0x00,0x28,0x00,0x00,0x00,0x41,0x0F,0x00,0xBC,0x01,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x38 -- 1024x768x32K : NOT SUPPORTED */
/* ET4000 HiColor BIOS mode 0x38 -- 1024x768x64K : NOT SUPPORTED */
/* ET4000 TrueColor BIOS mode 0x38 -- 1024x768x16M : NOT SUPPORTED */
/* ET4000 BIOS mode 0x3D -- 1280x1024x16 : NOT SUPPORTED */
#define g1280x1024x16_regs DISABLE_MODE
/* VESA mode 0x107 -- 1280x1024x256 : NOT SUPPORTED */
/* VESA HiColor mode 0x119 -- 1280x1024x32K : NOT SUPPORTED */
/* VESA HiColor mode 0x11A -- 1280x1024x64K : NOT SUPPORTED */
/* VESA TrueColor mode 0x11B -- 1280x1024x16M : NOT SUPPORTED */
/* --- ET4000 specific modes */
#ifdef _DYNAMIC_ONLY_
/* ET4000 BIOS mode 0x2D -- 640x350x256 */
/* Video timing: Vertical frequency : 70.1Hz
Horizontal frequency : 31.5KHz */
static unsigned char g640x350x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x83,0x85,0x5D,0x50,0x60,0x63,0xBA,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0xA3,
0x00,0x00,0x28,0x00,0x00,0x00,0x41,0x0F,0x00,0xBC,0x01,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2D -- 640x350x32K : NOT SUPPORTED */
#define g640x350x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x2D -- 640x350x64K : NOT SUPPORTED */
#define g640x350x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x2D -- 640x350x16M : NOT SUPPORTED */
#define g640x350x16M_regs DISABLE_MODE
/* ET4000 BIOS mode 0x2F -- 640x400x256 */
/* Video timing: Vertical frequency : 70.1Hz
Horizontal frequency : 31.5KHz */
static unsigned char g640x400x256_regs[73] = {
0x5F,0x4F,0x50,0x82,0x54,0x80,0xBF,0x1F,0x00,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x9C,0x8E,0x8F,0x50,0x60,0x96,0xB9,0xAB,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x01,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,
0x03,0x01,0x0F,0x00,0x0E,
0x63,
0x00,0x00,0x28,0x00,0x00,0x00,0x41,0x0F,0x00,0xBC,0x01,0x00,
0x00
};
/* ET4000 HiColor BIOS mode 0x2F-- 640x400x32K : NOT SUPPORTED */
#define g640x400x32K_regs DISABLE_MODE
/* ET4000 HiColor BIOS mode 0x2F-- 640x400x64K : NOT SUPPORTED */
#define g640x400x64K_regs DISABLE_MODE
/* ET4000 TrueColor BIOS mode 0x2F-- 640x400x16M : NOT SUPPORTED */
#define g640x400x16M_regs DISABLE_MODE
#endif /* defined(_DYNAMIC_ONLY_ALL_) */

645
obsolete/et4000/tseng3.c Normal file
View file

@ -0,0 +1,645 @@
/*
** tseng3.c - get ET4000 graphics register values
** Copyright (C) 1993 Tommy Frandsen, Harm Hanemaayer, Hartmut Schirmer
**
** This program is free software;
**
** Permission is granted to any individual or institution to use, copy,
** or redistribute this executable so long as it is not modified and
** that it is not sold for profit.
**
** LIKE ANYTHING ELSE THAT'S FREE, TSENG3 IS PROVIDED AS IS AND
** COMEs WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED.
** IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES
** RESULTING FROM THE USE OF THIS SOFTWARE.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <stdarg.h>
/* VGA index register ports */
#define CRT_I 0x3D4 /* CRT Controller Index (mono: 0x3B4) */
#define ATT_IW 0x3C0 /* Attribute Controller Index & Data Write Register */
#define GRA_I 0x3CE /* Graphics Controller Index */
#define SEQ_I 0x3C4 /* Sequencer Index */
#define PEL_IW 0x3C8 /* PEL Write Index */
/* VGA data register ports */
#define CRT_D 0x3D5 /* CRT Controller Data Register (mono: 0x3B5) */
#define ATT_R 0x3C1 /* Attribute Controller Data Read Register */
#define GRA_D 0x3CF /* Graphics Controller Data Register */
#define SEQ_D 0x3C5 /* Sequencer Data Register */
#define MIS_R 0x3CC /* Misc Output Read Register */
#define MIS_W 0x3C2 /* Misc Output Write Register */
#define IS1_R 0x3DA /* Input Status Register 1 (mono: 0x3BA) */
#define PEL_D 0x3C9 /* PEL Data Register */
/* VGA indexes max counts */
#define CRT_C 24 /* 24 CRT Controller Registers */
#define ATT_C 21 /* 21 Attribute Controller Registers */
#define GRA_C 9 /* 9 Graphics Controller Registers */
#define SEQ_C 5 /* 5 Sequencer Registers */
#define MIS_C 1 /* 1 Misc Output Register */
#define EXT_C 17 /* 11 SVGA Extended Registers */
/* VGA registers saving indexes */
#define CRT 0 /* CRT Controller Registers start */
#define ATT CRT+CRT_C /* Attribute Controller Registers start */
#define GRA ATT+ATT_C /* Graphics Controller Registers start */
#define SEQ GRA+GRA_C /* Sequencer Registers */
#define MIS SEQ+SEQ_C /* General Registers */
#define EXT MIS+MIS_C /* SVGA Extended Registers */
#define TOTAL EXT+EXT_C /* # or registers values */
unsigned char vga_regs[TOTAL];
static int do_all = 0;
FILE *output = NULL;
static int save_extregs;
void port_out(unsigned char value, unsigned short port)
{
asm mov dx,port
asm mov al,value
asm out dx,al
}
unsigned char port_in(unsigned short port)
{
asm mov dx,port
asm in al,dx
return (_AL);
}
int dactype(void)
{
union REGS cpu_regs;
cpu_regs.x.ax=0x10F1;
cpu_regs.x.bx=0x2EFF;
int86(0x10, &cpu_regs, &cpu_regs);
if (cpu_regs.x.ax != 0x0010)
return (-1);
else
return (cpu_regs.h.bl);
}
int read_dac(int addr)
{
inp(0x3c8);
inp(0x3c6);
inp(0x3c6);
inp(0x3c6);
inp(0x3c6);
while (addr)
--addr,inp(0x3c6);
addr = inp(0x3c6);
return addr;
}
int write_dac(int addr,int value)
{
inp(0x3c8);
inp(0x3c6);
inp(0x3c6);
inp(0x3c6);
inp(0x3c6);
while (addr)
--addr,inp(0x3c6);
outp(0x3c6,value);
return read_dac(addr);
}
int read_ext_dac(int addr)
{
write_dac(1,addr);
write_dac(2,0);
return read_dac(3);
}
void puts2(char *s) {
if (output != NULL)
fprintf(output, "%s\n", s);
while (*s != '\0') {
if (*s == '\n') putch('\r');
putch (*(s++));
}
putch('\r'); putch('\n');
}
int printf2(char *fmt, ...)
{
va_list argptr;
char str[140], *s;
int cnt;
va_start( argptr, fmt );
if (output != NULL)
vfprintf(output, fmt, argptr);
cnt = vsprintf( str, fmt, argptr );
s = str;
while (*s) {
switch (*s) {
case '\n' : putch('\r');
break;
case '\t' : cprintf("%*s", 8-((wherex()-1)&7), "");
++s;
continue;
}
putch(*(s++));
}
va_end( argptr );
return( cnt );
}
void get_dac(void)
{
int dac;
dac = dactype();
switch (dac)
{
case -1:
printf2 ("/* Dac detection BIOS call returned an error */\n");
break;
case 0:
printf2 ("/* Standard VGA dac detected */\n");
printf2 ("#define DAC_TYPE 0\n");
break;
case 1:
printf2 ("/* Sierra SC1148x HiColor dac detected */\n");
printf2 ("#define DAC_TYPE 1\n");
break;
case 2:
printf2 ("/* Diamond Speedstar 24 24bit dac or Sierra Mark2/Mark3 dac detected */\n");
break;
case 3:
printf2 ("/* AT&T ATT20c491/2 15/16/24 bit dac detected */\n");
printf2 ("#define DAC_TYPE 9\n");
break;
case 4:
printf2 ("/* AcuMos ADAC1 15/16/24 bit dac detected */\n");
break;
case 8:
printf2 ("/* Music 15/16/24 bit dac (AT&T compatible) detected */\n");
printf2 ("#define DAC_TYPE 9\n");
break;
default: { /* use alternate method */
int cmd = read_dac(0);
write_dac(0,cmd | 0x10);
if (read_ext_dac(0) == 0x44) {
printf2 ("/* SGS-Thomson STG170x 15/16/24 dac detected */\n");
save_extregs = 1;
}
else
printf2 ("/* Unknown HiColor dac (%d) detected */\n", dac);
break;
}
}
}
#define TickTime (1.0/1193182.0)
#define init_timer() do { \
asm mov al, 034h; \
asm out 043h, al; \
asm xor al, al; \
asm out 040h, al; \
asm out 040h, al; \
} while(0)
#define ReadTimer(dst) do { \
asm { mov al, 4; \
out 43h, al; \
in al, 40h; \
mov bl, al; \
in al, 40h; \
mov ah, al; \
mov al, bl; \
not ax } \
(dst) = _AX; \
} while (0);
#define _wait_(ID,VAL) \
w_##ID##1: \
asm in al, dx; \
asm test al, VAL; \
asm jne w_##ID##1; \
w_##ID##2: \
asm in al, dx; \
asm test al, VAL; \
asm je w_##ID##2
#define wait_horizontal(ID,port) do { _DX=(port); _wait_(ID##ch,8);} while(0)
#define wait_vertical(ID,port) do { _DX=(port); _wait_(ID##cv,1);} while(0)
#define __loop__(ID,port,loops,msk) do { \
register int cnt = (loops); \
_DX=(port); \
do { \
_wait_(ID,msk); \
} while (--cnt > 0); \
} while(0)
#define loop_vertical(ID,port,loops) __loop__(ID##cv,(port),(loops),1)
int interlaced(void) {
return (vga_regs[EXT+5] & 0x80) ? 1 : 0;
}
int calc_vtotal(void) {
int total;
total = (vga_regs[EXT+5]&2) ? 1024 : 0;
switch (vga_regs[CRT+7]&0x21) {
case 0x01 : total += 256; break;
case 0x20 : total += 512; break;
case 0x21 : total += 768; break;
}
total += vga_regs[CRT+6];
return total + 2;
}
double measure_horizontal(void)
{
short start, stop;
long diff;
disable();
init_timer();
wait_horizontal(mv0,0x3da);
wait_vertical(mv0,0x3da);
ReadTimer(start);
loop_vertical(mv, 0x3da, 200);
ReadTimer(stop);
enable();
diff = stop-start;
if (diff < 0) diff += 65536L;
return 200/(TickTime*((double)diff));
}
#define ASK_CONT 0
#define ASK_SKIP 1
#define ASK_ALL 2
int ask(char *expl)
{
int ch;
cprintf("\r\n\n"
"ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\r\n"
"º WARNING: Improper use of this program may destroy your monitor º\r\n"
"ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\r\n\n"
"%s\r\n\n"
"Type SPACE to skip, ESC to cancel program, RETURN to continue ... ",
expl);
do {
ch = getch();
if (ch == 27) exit(1);
switch (ch) {
case 27 : exit(1);
case ' ' : return ASK_SKIP;
case 'A' : return ASK_ALL;
case '\r': return ASK_CONT;
}
} while (1);
}
void get_clocks(void)
{
union REGS cpu_regs;
unsigned char temp;
int i;
double clock[8], horzbase, baseosc;
if (!do_all)
switch (ask("Measure clock frequencies")) {
case ASK_SKIP : return;
case ASK_ALL : do_all = 1; break;
default : break;
}
cpu_regs.h.ah = 0x00;
cpu_regs.h.al = 0x13;
int86(0x10, &cpu_regs, &cpu_regs);
port_out(0x03, 0x3BF); /* Unprotect ET4000 registers */
port_out(0xA0, 0x3D8);
port_out(0x00, ATT_IW); /* disable video */
port_out(7, SEQ_I); /* devide by 4 */
temp = port_in(SEQ_D);
port_out(temp | 0x41, SEQ_D);
baseosc = 25175; /* Base frequency */
switch (temp & 0x41) {
case 0x41 : baseosc *= 4; break;
case 0x40 : baseosc *= 2; break;
}
clock[0] = baseosc;
clock[1] = baseosc * 28322.0 / 25175.0;
horzbase = measure_horizontal();
for (i=2; i < 8; ++i) {
temp = (port_in(MIS_R) & 0xF3) | ((i&3)<<2);
port_out(temp, MIS_W);
port_out(0x34, CRT_I);
temp = (port_in(CRT_D) & 0xFD) | ((i&4)>>1);
port_out(temp, CRT_D);
clock[i] = baseosc*measure_horizontal()/horzbase;
}
cpu_regs.h.ah = 0x00;
cpu_regs.h.al = 0x03;
int86(0x10, &cpu_regs, &cpu_regs);
printf2("\n#define CLOCK_VALUES {\t\\\n");
for (i = 0; i < 8; ++i)
printf2("\t/* %d */ %5.0f%s\t\\\n", i, clock[i],(i==7?"":","));
printf2("\t}\n");
}
void one_mode(int vesa_mode, int mode, int colbits, int funny_card)
{
union REGS cpu_regs;
int i, skip = 0, modeok = 0;
int x=0, y, col, size;
char resol[100], colors[100], *desc;
char *verttxt;
double vertical, horizontal;
switch (mode) {
case 0x13: x = 320; y = 200; break;
case 0x25: x = 640; y = 480; break;
case 0x29: x = 800; y = 600; break;
case 0x2d: x = 640; y = 350; break;
case 0x2e: x = 640; y = 480; break;
case 0x2f: x = 640; y = 400; break;
case 0x30: x = 800; y = 600; break;
case 0x37: x = 1024; y = 768; break;
case 0x38: x = 1024; y = 768; break;
case 0x3d: x = 1280; y = 1024; break;
default : switch (vesa_mode) {
case 0x107:
case 0x119:
case 0x11a:
case 0x11b: x = 1280; y = 1024; break;
default : return;
}
break;
}
col = (1<<colbits);
size = (int)((((unsigned long) x) * ((unsigned long) y)) >> 10);
if (col == 16) size >>= 2;
switch (colbits) {
case 15: size*=2; strcpy(colors, "32K"); desc = "HiColor "; break;
case 16: size*=2; strcpy(colors, "64K"); desc = "HiColor "; break;
case 24: size*=3; strcpy(colors, "16M"); desc = "TrueColor "; break;
default: sprintf(colors, "%d", col); desc = ""; break;
}
sprintf(resol, "%dx%dx%s", x, y, colors);
if (!do_all) {
char expl[100];
sprintf(expl, "BIOS mode 0x%2X : %s", mode, resol);
switch(ask(expl)) {
case ASK_SKIP : skip = 1; break;
case ASK_ALL : do_all = 1; break;
default : break;
}
}
if (!skip) {
/* First try VESA mode */
if (vesa_mode != 0) {
cpu_regs.x.ax = 0x4f02;
cpu_regs.x.bx = vesa_mode;
int86(0x10, &cpu_regs, &cpu_regs);
modeok = (cpu_regs.x.ax == 0x004f);
}
/* Try std ET4000 mode numbers if VESA failed */
if (!modeok && mode != 0) {
switch (colbits)
{
case 15:
case 16:
cpu_regs.x.ax=0x10F0;
cpu_regs.h.bl=mode;
break;
case 24:
switch (funny_card)
{
case 1:
cpu_regs.x.ax=0x10E0;
cpu_regs.h.bl=0x2e;
break;
case 2:
cpu_regs.x.ax=0x10f0;
cpu_regs.h.bl=0x3e;
break;
case 0:
default:
cpu_regs.x.ax=0x10F0;
cpu_regs.h.bh=mode;
cpu_regs.h.bl=0xFF;
break;
}
break;
case 0:
default:
cpu_regs.h.ah = 0x00;
cpu_regs.h.al = mode;
break;
}
int86(0x10, &cpu_regs, &cpu_regs);
modeok = !( (colbits > 8 && cpu_regs.x.ax != 0x0010)
||(colbits <=8 && cpu_regs.x.ax == mode ) );
vesa_mode = 0;
}
if (modeok) {
/* get VGA register values */
for (i = 0; i < CRT_C; i++) {
port_out(i, CRT_I);
vga_regs[CRT+i] = port_in(CRT_D);
}
for (i = 0; i < ATT_C; i++) {
if (col == 16 && i < 16)
vga_regs[ATT+i] = i;
else {
port_in(IS1_R);
port_out(i, ATT_IW);
vga_regs[ATT+i] = port_in(ATT_R);
}
}
for (i = 0; i < GRA_C; i++) {
if (i==1 && col == 16)
vga_regs[GRA+i] = 0x0F;
else {
port_out(i, GRA_I);
vga_regs[GRA+i] = port_in(GRA_D);
}
}
for (i = 0; i < SEQ_C; i++) {
port_out(i, SEQ_I);
vga_regs[SEQ+i] = port_in(SEQ_D);
}
vga_regs[MIS] = port_in(MIS_R);
/* get extended CRT registers */
for (i = 0; i < 8; i++) {
port_out(0x30+i, CRT_I);
vga_regs[EXT+i] = port_in(CRT_D);
}
port_out(0x3f , CRT_I);
vga_regs[EXT+8] = port_in(CRT_D);
/* get extended sequencer register */
port_out(7, SEQ_I);
vga_regs[EXT+9] = port_in(SEQ_D);
/* get some other ET4000 specific registers */
vga_regs[EXT+10] = port_in(0x3c3);
vga_regs[EXT+11] = port_in(0x3cd);
/* get extended attribute register */
port_in(IS1_R); /* reset flip flop */
port_out(0x16, ATT_IW);
vga_regs[EXT+12] = port_in(ATT_R);
if (save_extregs) { /* copy stg170x extended info */
vga_regs[EXT+13] = read_dac(0);
write_dac(0,vga_regs[EXT+13] | 0x10);
vga_regs[EXT+14] = read_ext_dac(3);
vga_regs[EXT+15] = read_ext_dac(4);
vga_regs[EXT+16] = read_ext_dac(5);
}
/* Measure video timing */
horizontal = measure_horizontal();
/* switch back to text mode */
cpu_regs.h.ah = 0x00;
cpu_regs.h.al = 0x03;
int86(0x10, &cpu_regs, &cpu_regs);
}
}
if (vesa_mode)
printf2("\n/* VESA %smode 0x%03X", desc, vesa_mode);
else
printf2("\n/* ET4000 %sBIOS mode 0x%02X", desc, mode);
printf2(" -- %s", resol);
if ( skip || !modeok) {
printf2(" : NOT SUPPORTED */\n");
if (size <= 1024)
printf2("#define g%s_regs DISABLE_MODE\n", resol);
return;
}
printf2(" */\n");
/* can't always treat 15 and 16 bit modes the same! */
if (colbits == 16 && !save_extregs) {
printf2("#define g%s_regs g%dx%dx32K_regs\n", resol, x, y);
return;
}
verttxt = interlaced() ? " (interlaced)" : "";
vertical = horizontal / calc_vtotal();
printf2("/* Video timing:\tVertical frequency : %4.1fHz%s\n",
vertical, verttxt);
printf2("\t\t\tHorizontal frequency : %4.1fKHz */\n", horizontal/1000.0);
printf2("static unsigned char g%s_regs[%d] = {\n ", resol, TOTAL);
for (i = 0; i < CRT_C; i++)
printf2("%s0x%02X,", (i==12?"\n ":""), vga_regs[CRT+i]);
printf2("\n ");
for (i = 0; i < ATT_C; i++)
printf2("%s0x%02X,", (i==12?"\n ":""), vga_regs[ATT+i]);
printf2("\n ");
for (i = 0; i < GRA_C; i++)
printf2("0x%02X,",vga_regs[GRA+i]);
printf2("\n ");
for (i = 0; i < SEQ_C; i++)
printf2("0x%02X,",vga_regs[SEQ+i]);
printf2("\n 0x%02X,",vga_regs[MIS]);
printf2("\n 0x%02X",vga_regs[EXT]);
for (i = 1; i < EXT_C; i++)
printf2(",%s0x%02X", (i==12?"\n ":""), vga_regs[i+EXT]);
printf2("\n};\n");
}
void usage(void) {
cputs("tseng3 <output_file> [SS24]");
exit(1);
}
void main(int argc, char* argv[])
{
int funny_card = 0;
if (argc >= 2)
output = fopen(argv[1], "w");
if (output != NULL)
fputs("/*\n ( File generated by tseng3.exe )\n\n", output);
puts2("tseng3 v1.2, Copyright (C) 1993 Tommy Frandsen, Harm Hanemaayer");
puts2("and Hartmut Schirmer\n");
puts2("Permission is granted to any individual or institution to use, copy, or");
puts2("redistribute this executable so long as it is not modified and that it is");
puts2("not sold for profit.\n");
puts2("LIKE ANYTHING ELSE THAT'S FREE, TSENG3 IS PROVIDED AS IS AND COMES WITH");
puts2("NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL");
puts2("THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF");
puts2("THIS SOFTWARE.");
if (output != NULL)
fputs("*/\n", output);
puts2("");
if (argc >= 2 && output == NULL)
usage();
if (argc>=3)
funny_card = (strcmp("SS24", argv[2]) == 0) ? 1 : 2;
get_dac();
get_clocks();
one_mode(0x10d, 0x13, 15, funny_card); /* 320x200x32K */
one_mode(0x10e, 0x13, 16, funny_card); /* 320x200x64K */
one_mode(0x10f, 0x13, 24, funny_card); /* 320x200x16M */
one_mode(0x101, 0x2e, 8, funny_card); /* 640x480x256 */
one_mode(0x110, 0x2e, 15, funny_card); /* 640x480x32K */
one_mode(0x111, 0x2e, 16, funny_card); /* 640x480x64K */
one_mode(0x112, 0x2e, 24, funny_card); /* 640x480x16M */
one_mode(0x102, 0x29, 4, funny_card); /* 800x600x16 */
one_mode(0x103, 0x30, 8, funny_card); /* 800x600x256 */
one_mode(0x113, 0x30, 15, funny_card); /* 800x600x32K */
one_mode(0x114, 0x30, 16, funny_card); /* 800x600x64K */
one_mode(0x115, 0x30, 24, funny_card); /* 800x600x16M */
one_mode(0x104, 0x37, 4, funny_card); /* 1024x768x16 */
one_mode(0x105, 0x38, 8, funny_card); /* 1024x768x256 */
one_mode(0x116, 0x38, 15, funny_card); /* 1024x768x32K */
one_mode(0x117, 0x38, 16, funny_card); /* 1024x768x64K */
one_mode(0x118, 0x38, 24, funny_card); /* 1024x768x16M */
one_mode(0x106, 0x3D, 4, funny_card); /* 1280x1024x16 */
one_mode(0x107, 0x00, 8, funny_card); /* 1280x1024x256 */
one_mode(0x119, 0x00, 15, funny_card); /* 1280x1024x32K */
one_mode(0x11a, 0x00, 16, funny_card); /* 1280x1024x64K */
one_mode(0x11b, 0x00, 24, funny_card); /* 1280x1024x16M */
puts2("\n/* --- ET4000 specific modes */\n#ifdef _DYNAMIC_ONLY_");
one_mode(0x000, 0x2d, 8, funny_card); /* 640x350x256 */
one_mode(0x000, 0x2d, 15, funny_card); /* 640x350x32K */
one_mode(0x000, 0x2d, 16, funny_card); /* 640x350x64K */
one_mode(0x000, 0x2d, 24, funny_card); /* 640x350x16M */
one_mode(0x100, 0x2f, 8, funny_card); /* 640x400x256 */
one_mode(0x000, 0x2f, 15, funny_card); /* 640x400x32K */
one_mode(0x000, 0x2f, 16, funny_card); /* 640x400x64K */
one_mode(0x000, 0x2f, 24, funny_card); /* 640x400x16M */
puts2("\n#endif /* defined(_DYNAMIC_ONLY_ALL_) */\n");
}

BIN
obsolete/et4000/tseng3.exe Normal file

Binary file not shown.

152
obsolete/jump/jump.funcs Normal file
View file

@ -0,0 +1,152 @@
00000000 T _vga_setchipset libvga vga
00000000 T _vga_setchipsetandfeatures libvga vga
00000000 T _vga_setpage libvga vga
00000000 T _vga_setreadpage libvga vga
00000000 T _vga_setwritepage libvga vga
00000000 T _vga_setmode libvga vga
00000000 T _vga_gettextfont libvga vga
00000000 T _vga_puttextfont libvga vga
00000000 T _vga_gettextmoderegs libvga vga
00000000 T _vga_settextmoderegs libvga vga
00000000 T _vga_getcurrentmode libvga vga
00000000 T _vga_getcurrentchipset libvga vga
00000000 T _vga_disabledriverreport libvga vga
00000000 T _vga_getmodeinfo libvga vga
00000000 T _vga_hasmode libvga vga
00000000 T _vga_lastmodenumber libvga vga
00000000 T _vga_setcolor libvga vga
00000000 T _vga_screenoff libvga vga
00000000 T _vga_screenon libvga vga
00000000 T _vga_getxdim libvga vga
00000000 T _vga_getydim libvga vga
00000000 T _vga_getcolors libvga vga
00000000 T _vga_white libvga vga
00000000 T _vga_claimvideomemory libvga vga
00000000 T _vga_getch libvga vga
00000000 T _vga_flip libvga vga
00000000 T _vga_setflipchar libvga vga
00000000 T _vga_setlogicalwidth libvga vga
00000000 T _vga_setdisplaystart libvga vga
00000000 T _vga_bitblt libvga vga
00000000 T _vga_imageblt libvga vga
00000000 T _vga_fillblt libvga vga
00000000 T _vga_hlinelistblt libvga vga
00000000 T _vga_drawscanline libvga vgadraw
00000000 T _vga_drawscansegment libvga vgadraw
00000000 T _vga_clear libvga vgaclear
00000000 T _vga_drawline libvga vgaline
00000000 T _vga_drawpixel libvga vgapix
00000000 T _vga_setpalette libvga vgapal
00000000 T _vga_getpalette libvga vgapal
00000000 T _vga_setpalvec libvga vgapal
00000000 T _vga_getpalvec libvga vgapal
00000000 T _vga_setrgbcolor libvga vgacol
00000000 T _vga_setegacolor libvga vgacol
00000000 T _vga_getmodenumber libvga vgamodesel
00000000 T _vga_getmodename libvga vgamodesel
00000000 T _vga_getdefaultmode libvga vgamodesel
00000000 T _vga_getgraphmem libvga vgamisc
00000000 T _vga_dumpregs libvga vgadump
00000000 T _vga_waitretrace libvga vgamisc
00000000 T _vga_init libvga vga
00000000 T _vga_getmousetype libvga vga
00000000 T _vga_getmonitortype libvga vga
00000000 T _vga_setmousesupport libvga vga
00000000 T _vga_setmodeX libvga vga
00000000 T _vga_lockvc libvga vga
00000000 T _vga_unlockvc libvga vga
00000000 T _vga_getkey libvga vgamisc
00000000 T _gl_setcontextvga libvgagl grlib
00000000 T _gl_setcontextvgavirtual libvgagl grlib
00000000 T _gl_setcontextvirtual libvgagl grlib
00000000 T _gl_setcontext libvgagl grlib
00000000 T _gl_getcontext libvgagl grlib
00000000 T _gl_freecontext libvgagl grlib
00000000 T _gl_setclippingwindow libvgagl grlib
00000000 T _gl_enableclipping libvgagl grlib
00000000 T _gl_disableclipping libvgagl grlib
00000000 T _gl_setpixel libvgagl grlib
00000000 T _gl_getpixel libvgagl grlib
00000000 T _gl_hline libvgagl grlib
00000000 T _gl_fillbox libvgagl grlib
00000000 T _gl_putboxpart libvgagl grlib
00000000 T _gl_putbox libvgagl grlib
00000000 T _gl_putboxmask libvgagl grlib
00000000 T _gl_getbox libvgagl grlib
00000000 T _gl_copybox libvgagl grlib
00000000 T _gl_clearscreen libvgagl grlib
00000000 T _gl_rgbcolor libvgagl grlib
00000000 T _gl_setpixelrgb libvgagl grlib
00000000 T _gl_getpixelrgb libvgagl grlib
00000000 T _gl_setdisplaystart libvgagl grlib
00000000 T _gl_copyscreen libvgagl grlib
00000000 T _gl_copyboxtocontext libvgagl grlib
00000000 T _gl_line libvgagl line
00000000 T _gl_circle libvgagl line
00000000 T _gl_getpalettecolor libvgagl palette
00000000 T _gl_setpalettecolor libvgagl palette
00000000 T _gl_setpalettecolors libvgagl palette
00000000 T _gl_getpalettecolors libvgagl palette
00000000 T _gl_getpalette libvgagl palette
00000000 T _gl_setpalette libvgagl palette
00000000 T _gl_setrgbpalette libvgagl palette
00000000 T _gl_scalebox libvgagl scale
00000000 T _gl_colorfont libvgagl text
00000000 T _gl_setfont libvgagl text
00000000 T _gl_setwritemode libvgagl text
00000000 T _gl_write libvgagl text
00000000 T _gl_writen libvgagl text
00000000 T _gl_expandfont libvgagl text
00000000 T _mouse_init libvga mouse/mouse
00000000 T _mouse_update libvga mouse/mouse
00000000 T _mouse_waitforupdate libvga mouse/mouse
00000000 T _mouse_seteventhandler libvga mouse/mouse
00000000 T _mouse_close libvga mouse/mouse
00000000 T _mouse_setdefaulteventhandler libvga mouse/mouse
00000000 T _mouse_setwrap libvga mouse/mouse
00000000 T _mouse_setposition libvga mouse/mouse
00000000 T _mouse_setxrange libvga mouse/mouse
00000000 T _mouse_setyrange libvga mouse/mouse
00000000 T _mouse_setscale libvga mouse/mouse
00000000 T _mouse_getx libvga mouse/mouse
00000000 T _mouse_gety libvga mouse/mouse
00000000 T _mouse_getbutton libvga mouse/mouse
00000000 T _gl_setcontextwidth libvgagl grlib
00000000 T _gl_setcontextheight libvgagl grlib
00000000 T _vga_runinbackground libvga vga
00000000 T _vga_oktowrite libvga vga
00000000 T _vga_copytoplanar256 libvga vgaconvplanar
00000000 T _vga_copytoplanar16 libvga vgaconvplanar
00000000 T _vga_setlinearaddressing libvga vgamisc
00000000 T _gl_setscreenoffset libvga vgamisc
00000000 T _vga_safety_fork libvga vgamisc
00000000 T _gl_enablepageflipping libvgagl grlib
00000000 T _gl_compileboxmask libvgagl cbitmap
00000000 T _gl_compiledboxmasksize libvgagl cbitmap
00000000 T _gl_putboxmaskcompiled libvgagl cbitmap
00000000 T _keyboard_init libvga keyboard/keyboard
00000000 T _keyboard_seteventhandler libvga keyboard/keyboard
00000000 T _keyboard_close libvga keyboard/keyboard
00000000 T _keyboard_update libvga keyboard/keyboard
00000000 T _keyboard_waitforupdate libvga keyboard/keyboard
00000000 T _keyboard_setdefaulteventhandler libvga keyboard/keyboard
00000000 T _keyboard_getstate libvga keyboard/keyboard
00000000 T _keyboard_clearstate libvga keyboard/keyboard
00000000 T _keyboard_translatekeys libvga keyboard/keyboard
00000000 T _keyboard_keypressed libvga keyboard/keyboard
00000000 T _gl_copyboxfromcontext libvgagl grlib
00000000 T _vga_copytoplane libvga vgaconvplanar
00000000 T _mouse_init_return_fd libvga mouse/mouse
00000000 T _keyboard_init_return_fd libvga keyboard/keyboard
00000000 T _vga_blitwait libvga vga
00000000 T _vga_ext_set libvga vga
00000000 T _vga_accel libvga vgamisc
00000000 T _vga_getpixel libvga vgamisc
00000000 T _gl_setfontcolors libvgagl text
00000000 T _gl_allocatecontext libvgagl grlib
00000000 T _vga_getscansegment libvga vgadraw
00000000 T _vga_waitevent libvga vgamisc
00000000 T _mouse_setposition_6d libvga vgamisc
00000000 T _mouse_setrange_6d libvga vgamisc
00000000 T _mouse_getposition_6d libvga vgamisc
00000000 T _vga_runinbackground_version libvga vga

294
obsolete/jump/jump.ignore Normal file
View file

@ -0,0 +1,294 @@
00000000 D ___svgalib_infotable libvga vga
00000000 D ___svgalib_cur_mode libvga vga
00000000 D ___svgalib_chipset libvga vga
00000000 D ___svgalib_driver_report libvga vga
00000000 D ___svgalib_videomemoryused libvga vga
00000000 D ___svgalib_modeX libvga vga
00000000 D ___svgalib_modeflags libvga vga
00000000 D ___svgalib_critical libvga vga
00000000 D ___svgalib_screenon libvga vga
00000000 D ___svgalib_horizsync libvga vga
00000000 D ___svgalib_vertrefresh libvga vga
00000000 D ___svgalib_grayscale libvga vga
00000000 D ___svgalib_modeinfo_linearset libvga vga
00000000 K ___svgalib_max_modes libvga vga
00000000 D ___svgalib_mem_fd libvga vga
00000000 D ___svgalib_tty_fd libvga vga
00000000 D ___svgalib_oktowrite libvga vga
00000000 D ___svgalib_flipchar libvga vga
00000000 D ___svgalib_driverspecs libvga vga
00000000 D ___svgalib_driverspecslist libvga vga
00000000 T ___svgalib_waitvtactive libvga vga
00000000 T ___svgalib_open_devconsole libvga vga
00000000 T ___svgalib_get_perm libvga vga
00000000 T ___svgalib_delay libvga vga
00000000 T ___svgalib_saveregs libvga vga
00000000 T ___svgalib_setregs libvga vga
00000000 T ___svgalib_getchipset libvga vga
00000000 T ___svgalib_map_virtual_screen libvga vga
00000000 T ___svgalib_addmode libvga vga
00000000 T ___svgalib_flip_status libvga vga
00000000 T ___svgalib_flipaway libvga vga
00000000 T ___svgalib_flipback libvga vga
00000000 T ___svgalib_read_options libvga vga
00000000 T ___svgalib_give_graph_red libvga vga
00000000 T ___svgalib_give_graph_green libvga vga
00000000 T ___svgalib_give_graph_blue libvga vga
00000000 C ___svgalib_CRT_I libvga vga
00000000 C ___svgalib_CRT_D libvga vga
00000000 C ___svgalib_IS1_R libvga vga
00000000 C ___svgalib_cur_info libvga vga
00000000 C ___svgalib_cur_color libvga vga
00000000 C ___svgalib_graph_mem libvga vga
00000000 C ___svgalib_currentpage libvga vga
00000000 C ___svgalib_setpage libvga vga
00000000 C ___svgalib_setrdpage libvga vga
00000000 C ___svgalib_setwrpage libvga vga
00000000 T ___svgalib_fast_drawpixel libvga vgapix
00000000 T ___svgalib_fast_getpixel libvga vgapix
00000000 C ___svgalib_green_backup libvga vgapal
00000000 T ___svgalib_name2number libvga vgamodesel
00000000 T ___svgalib_physmem libvga vgamisc
00000000 T ___svgalib_dumpregs libvga vgadump
00000000 D ___svgalib_standard_timings libvga timing
00000000 T ___svgalib_addusertiming libvga timing
00000000 T ___svgalib_getmodetiming libvga timing
00000000 T ___svgalib_setup_VGA_registers libvga vgaregs
00000000 T ___svgalib_outGR libvga vgaregs
00000000 T ___svgalib_outbGR libvga vgaregs
00000000 T ___svgalib_outCR libvga vgaregs
00000000 T ___svgalib_outbCR libvga vgaregs
00000000 T ___svgalib_outSR libvga vgaregs
00000000 T ___svgalib_outbSR libvga vgaregs
00000000 T ___svgalib_inGR libvga vgaregs
00000000 T ___svgalib_inCR libvga vgaregs
00000000 T ___svgalib_inSR libvga vgaregs
00000000 T ___svgalib_createModeInfoStructureForSvgalibMode libvga interface
00000000 T ___svgalib_colorbits_to_colormode libvga interface
00000000 T ___svgalib_clear_accelspecs libvga interface
00000000 T ___svgalib_InitializeAcceleratorInterface libvga accel
00000000 C ___svgalib_accel_screenpitch libvga accel
00000000 C ___svgalib_accel_bytesperpixel libvga accel
00000000 C ___svgalib_accel_screenpitchinbytes libvga accel
00000000 C ___svgalib_accel_mode libvga accel
00000000 C ___svgalib_accel_bitmaptransparency libvga accel
00000000 T ___svgalib_fast_setpage libvga vgabgpage
00000000 T ___svgalib_setpage_fg libvga vgabgpage
00000000 T ___svgalib_setpage_bg libvga vgabgpage
00000000 D ___svgalib_ignore_vt_switching libvga vgabgvt
00000000 D ___svgalib_go_to_background libvga vgabgvt
00000000 D ___svgalib_come_from_background libvga vgabgvt
00000000 T ___svgalib_dont_switch_vt_yet libvga vgabgvt
00000000 T ___svgalib_is_vt_switching_needed libvga vgabgvt
00000000 T ___svgalib_takevtcontrol libvga vgabgvt
00000000 D ___svgalib_mouse_fd libvga mouse/mouse
00000000 D ___svgalib_kbd_fd libvga keyboard/keyboard
00000000 T ___svgalib_probeDacs libvga ramdac/ramdac
00000000 T ___svgalib_setDacSpeed libvga ramdac/ramdac
00000000 D ___svgalib_all_dacs libvga ramdac/ramdac
00000000 D ___svgalib_normal_dac_methods libvga ramdac/normal
00000000 T ___svgalib_att20c490_map_clock libvga ramdac/attdacs
00000000 T ___svgalib_att20c490_map_horizontal_crtc libvga ramdac/attdacs
00000000 D ___svgalib_ATT20C490_methods libvga ramdac/attdacs
00000000 D ___svgalib_ATT20C498_methods libvga ramdac/attdacs
00000000 T ___svgalib_Sierra_32K_savestate libvga ramdac/sierra
00000000 T ___svgalib_Sierra_32K_restorestate libvga ramdac/sierra
00000000 D ___svgalib_Sierra_32K_methods libvga ramdac/sierra
00000000 D ___svgalib_SC15025_methods libvga ramdac/sierra
00000000 D ___svgalib_SC1148X_methods libvga ramdac/sierra
00000000 D ___svgalib_ICW_methods libvga ramdac/icw
00000000 D ___svgalib_S3_SDAC_methods libvga ramdac/s3dacs
00000000 D ___svgalib_S3_GENDAC_methods libvga ramdac/s3dacs
00000000 D ___svgalib_Trio64_methods libvga ramdac/s3dacs
00000000 D ___svgalib_IBMRGB52x_methods libvga ramdac/IBMRGB52x
00000000 D ___svgalib_I2061A_clockchip_methods libvga clockchip/icd2061a
00000000 D ___svgalib_vga_driverspecs libvga vgadrv
00000000 T ___svgalib_readmodes libvga regextr
00000000 T ___svgalib_mode_in_table libvga modetab
00000000 D ___svgalib_et4000_driverspecs libvga et4000
00000000 T ___svgalib_hicolor libvga vgahico
00000000 T ___svgalib_cirrus_inlinearmode libvga cirrus
00000000 D ___svgalib_cirrus_driverspecs libvga cirrus
00000000 T ___svgalib_cirrusaccel_init libvga cirrus
00000000 T ___svgalib_cirrusaccel_FillBox libvga cirrus
00000000 T ___svgalib_cirrusaccel_mmio_FillBox libvga cirrus
00000000 T ___svgalib_cirrusaccel_ScreenCopy libvga cirrus
00000000 T ___svgalib_cirrusaccel_mmio_ScreenCopy libvga cirrus
00000000 T ___svgalib_cirrusaccel_SetFGColor libvga cirrus
00000000 T ___svgalib_cirrusaccel_mmio_SetFGColor libvga cirrus
00000000 T ___svgalib_cirrusaccel_SetRasterOp libvga cirrus
00000000 T ___svgalib_cirrusaccel_mmio_SetRasterOp libvga cirrus
00000000 T ___svgalib_cirrusaccel_SetTransparency libvga cirrus
00000000 K ___svgalib_cirrusaccel_Sync libvga cirrus
00000000 T ___svgalib_cirrusaccel_mmio_Sync libvga cirrus
00000000 D ___svgalib_tvga8900_driverspecs libvga tvga8900
00000000 D ___svgalib_oak_driverspecs libvga oak
00000000 D ___svgalib_ega_driverspecs libvga egadrv
00000000 D ___svgalib_mach32_driverspecs libvga mach32
00000000 D ___svgalib_s3_driverspecs libvga s3
00000000 D ___svgalib_et3000_driverspecs libvga et3000
00000000 D ___svgalib_gvga6400_driverspecs libvga gvga6400
00000000 D ___svgalib_ark_driverspecs libvga ark
00000000 T ___svgalib_arkaccel_FillBox libvga ark
00000000 T ___svgalib_arkaccel_coords_FillBox libvga ark
00000000 T ___svgalib_arkaccel_ScreenCopy libvga ark
00000000 T ___svgalib_arkaccel_coords_ScreenCopy libvga ark
00000000 T ___svgalib_arkaccel_DrawHLineList libvga ark
00000000 T ___svgalib_arkaccel_coords_DrawHLineList libvga ark
00000000 T ___svgalib_arkaccel_SetFGColor libvga ark
00000000 T ___svgalib_arkaccel_SetBGColor libvga ark
00000000 T ___svgalib_arkaccel_PutBitmap libvga ark
00000000 T ___svgalib_arkaccel_SetRasterOp libvga ark
00000000 K ___svgalib_arkaccel_Sync libvga ark
00000000 D ___svgalib_ati_driverspecs libvga ati
00000000 D ___svgalib_ali_driverspecs libvga ali
00000000 D ___svgalib_mach64_driverspecs libvga mach64
00000000 D ___svgalib_ctPanelType libvga chips
00000000 D ___svgalib_ctMMIOBase libvga chips
00000000 D ___svgalib_ctMMIOPage libvga chips
00000000 D ___svgalib_CHIPS_LinearBase libvga chips
00000000 D ___svgalib_ctBltDataWindow libvga chips
00000000 D ___svgalib_byte_reversed libvga chips
00000000 D ___svgalib_XRregs libvga chips
00000000 D ___svgalib_HiQVXRregs libvga chips
00000000 D ___svgalib_HiQVCRregs libvga chips
00000000 D ___svgalib_HiQVFRregs libvga chips
00000000 D ___svgalib_chips_driverspecs libvga chips
00000000 T ___svgalib_CHIPS_FillBox libvga chips
00000000 T ___svgalib_CHIPS_mmio_FillBox libvga chips
00000000 T ___svgalib_CHIPS_hiqv_FillBox libvga chips
00000000 T ___svgalib_CHIPS_FillBox24 libvga chips
00000000 T ___svgalib_CHIPS_mmio_FillBox24 libvga chips
00000000 T ___svgalib_CHIPS_PutBitmap libvga chips
00000000 T ___svgalib_CHIPS_mmio_PutBitmap libvga chips
00000000 T ___svgalib_CHIPS_hiqv_PutBitmap libvga chips
00000000 T ___svgalib_CHIPS_SetFGColor libvga chips
00000000 T ___svgalib_CHIPS_SetBGColor libvga chips
00000000 T ___svgalib_CHIPS_SetRasterOp libvga chips
00000000 T ___svgalib_CHIPS_SetTransparency libvga chips
00000000 C ___svgalib_ctSize libvga chips
00000000 T ___svgalib_driver8_setpixel libvga driver
00000000 T ___svgalib_driver8p_setpixel libvga driver
00000000 T ___svgalib_driver8_getpixel libvga driver
00000000 T ___svgalib_driver8p_getpixel libvga driver
00000000 T ___svgalib_driver8_hline libvga driver
00000000 T ___svgalib_driver8p_hline libvga driver
00000000 T ___svgalib_driver8_fillbox libvga driver
00000000 T ___svgalib_driver8a_fillbox libvga driver
00000000 T ___svgalib_driver8p_fillbox libvga driver
00000000 T ___svgalib_driver8_putbox libvga driver
00000000 T ___svgalib_driver8p_putbox libvga driver
00000000 T ___svgalib_driver8_getbox libvga driver
00000000 T ___svgalib_driver8p_getbox libvga driver
00000000 T ___svgalib_driver8_putboxmask libvga driver
00000000 T ___svgalib_driver8_putboxpart libvga driver
00000000 T ___svgalib_driver8p_putboxpart libvga driver
00000000 T ___svgalib_driver8_getboxpart libvga driver
00000000 T ___svgalib_driver8p_getboxpart libvga driver
00000000 T ___svgalib_driver8_copybox libvga driver
00000000 T ___svgalib_driver8a_copybox libvga driver
00000000 T ___svgalib_driver16_setpixel libvga driver
00000000 T ___svgalib_driver16p_setpixel libvga driver
00000000 T ___svgalib_driver16_getpixel libvga driver
00000000 T ___svgalib_driver16p_getpixel libvga driver
00000000 T ___svgalib_driver16_hline libvga driver
00000000 T ___svgalib_driver16p_hline libvga driver
00000000 T ___svgalib_driver16_fillbox libvga driver
00000000 T ___svgalib_driver16p_fillbox libvga driver
00000000 T ___svgalib_driver16_putbox libvga driver
00000000 T ___svgalib_driver16p_putbox libvga driver
00000000 T ___svgalib_driver16_getbox libvga driver
00000000 T ___svgalib_driver16p_getbox libvga driver
00000000 T ___svgalib_driver16_putboxmask libvga driver
00000000 T ___svgalib_driver16_putboxpart libvga driver
00000000 T ___svgalib_driver16p_putboxpart libvga driver
00000000 T ___svgalib_driver16_getboxpart libvga driver
00000000 T ___svgalib_driver16p_getboxpart libvga driver
00000000 T ___svgalib_driver16_copybox libvga driver
00000000 T ___svgalib_driver16a_copybox libvga driver
00000000 T ___svgalib_driver24_setpixel libvga driver
00000000 T ___svgalib_driver24p_setpixel libvga driver
00000000 T ___svgalib_driver24_getpixel libvga driver
00000000 T ___svgalib_driver24p_getpixel libvga driver
00000000 T ___svgalib_driver24_hline libvga driver
00000000 T ___svgalib_driver24p_hline libvga driver
00000000 T ___svgalib_driver24_fillbox libvga driver
00000000 T ___svgalib_driver24p_fillbox libvga driver
00000000 T ___svgalib_driver24_putbox libvga driver
00000000 T ___svgalib_driver24p_putbox libvga driver
00000000 T ___svgalib_driver24_putbox32 libvga driver
00000000 T ___svgalib_driver24_getbox libvga driver
00000000 T ___svgalib_driver24p_getbox libvga driver
00000000 T ___svgalib_driver24_putboxmask libvga driver
00000000 T ___svgalib_driver24_putboxpart libvga driver
00000000 T ___svgalib_driver24p_putboxpart libvga driver
00000000 T ___svgalib_driver24_getboxpart libvga driver
00000000 T ___svgalib_driver24p_getboxpart libvga driver
00000000 T ___svgalib_driver24_copybox libvga driver
00000000 T ___svgalib_driver24a_copybox libvga driver
00000000 T ___svgalib_driver32_setpixel libvga driver
00000000 T ___svgalib_driver32p_setpixel libvga driver
00000000 T ___svgalib_driver32_getpixel libvga driver
00000000 T ___svgalib_driver32p_getpixel libvga driver
00000000 T ___svgalib_driver32_hline libvga driver
00000000 T ___svgalib_driver32p_hline libvga driver
00000000 T ___svgalib_driver32_fillbox libvga driver
00000000 T ___svgalib_driver32p_fillbox libvga driver
00000000 T ___svgalib_driver32_putbox libvga driver
00000000 T ___svgalib_driver32p_putbox libvga driver
00000000 T ___svgalib_driver32_getbox libvga driver
00000000 T ___svgalib_driver32p_getbox libvga driver
00000000 T ___svgalib_driver32_putboxmask libvga driver
00000000 T ___svgalib_driver32_putboxpart libvga driver
00000000 T ___svgalib_driver32p_putboxpart libvga driver
00000000 T ___svgalib_driver32_getboxpart libvga driver
00000000 T ___svgalib_driver32p_getboxpart libvga driver
00000000 T ___svgalib_driver32_copybox libvga driver
00000000 T ___svgalib_driverplanar256_nothing libvga driver
00000000 T ___svgalib_driverplanar256_putbox libvga driver
00000000 T ___svgalib_driverplanar16_nothing libvga driver
00000000 T ___svgalib_driver_setread libvga driver
00000000 T ___svgalib_driver_setwrite libvga driver
00000000 T ___svgalib_driver8p_putboxmask libvga driver
00000000 T ___svgalib_driver8p_copybox libvga driver
00000000 T ___svgalib_driver16p_putboxmask libvga driver
00000000 T ___svgalib_driver16p_copybox libvga driver
00000000 T ___svgalib_driver24p_putboxmask libvga driver
00000000 T ___svgalib_driver24p_copybox libvga driver
00000000 T ___svgalib_driver32p_putboxmask libvga driver
00000000 T ___svgalib_driver32p_copybox libvga driver
00000000 T ___svgalib_memcpy4to3 libvga mem
00000000 T ___svgalib_memcpy32shift8 libvga mem
00000000 C ___svgalib_oldvtmode libvga vga
00000000 C ___svgalib_runinbackground libvga vga
00000000 C ___svgalib_graph_mem_linear_orginal libvga vga
00000000 C ___svgalib_graph_mem_linear_check libvga vga
00000000 C ___svgalib_linear_memory_size libvga vga
00000000 C ___svgalib_linearframebuffer libvga vgamisc
00000000 C ___svgalib_nonaccel_fillbox libvga grlib
00000000 D ___svgalib_apm_driverspecs libvga apm
00000000 D ___svgalib_default_mode libvga vga
00000000 D ___svgalib_nosigint libvga vga
00000000 D ___svgalib_m_ignore_dx libvga mouse/mouse
00000000 D ___svgalib_m_ignore_dy libvga mouse/mouse
00000000 D ___svgalib_m_ignore_dz libvga mouse/mouse
00000000 C ___svgalib_mouse_eventhandler libvga mouse/mouse
00000000 D ___svgalib_graph_base libvga vga
00000000 D ___svgalib_novga libvga vga
00000000 D ___svgalib_secondary libvga vga
00000000 T ___svgalib_pci_find_vendor_vga libvga vgapci
00000000 D ___svgalib_nv3_driverspecs libvga nv3
00000000 D ___svgalib_et6000_driverspecs libvga et6000
00000000 C ___svgalib_keyboard_eventhandler libvga keyboard/keyboard
00000000 D ___svgalib_vesa_driverspecs libvga vesa
00000000 T ___svgalib_vm86old libvga lrmi
00000000 T ___svgalib_LRMI_alloc_real libvga lrmi
00000000 T ___svgalib_LRMI_free_real libvga lrmi
00000000 K ___svgalib_LRMI__inline_asm libvga lrmi
00000000 T ___svgalib_LRMI_init libvga lrmi
00000000 T ___svgalib_LRMI_call libvga lrmi
00000000 T ___svgalib_LRMI_int libvga lrmi
00000000 D ___svgalib_textprog libvga vga
00000000 C ___svgalib_TextProg_argv libvga vga
00000000 C ___svgalib_TextProg libvga vga
00000000 D ___svgalib_mx_driverspecs libvga mx

3
obsolete/jump/jump.vars Normal file
View file

@ -0,0 +1,3 @@
00000004 C _graph_mem libvga vga
0000005C C _currentcontext libvgagl grlib
00000004 D _gl_font8x8 libvgagl font8x8

1
obsolete/mach/0-README Normal file
View file

@ -0,0 +1 @@
Please read 'man 7 svgalib.mach32'

View file

@ -0,0 +1,74 @@
Mach64 driver changes log:
--------------------------
April 11, 1998 (Michael Weller)
VGA Emulation should be used to avoid MACH64 code in get_lut
(and elsewhere?)
March 17, 1996 (Asad Hanif)
NON FUNCTIONAL DRIVER sent for inclusion in 1.2.10
It doesn't seem to quite work. Its hardcoded to 640x480x256@60hz for
a WINTURBO 2mbVRAM and 68860 ramdac - with the 18818 clock.
The screen has vertical bars thru it... each 64k chunk is a little offset
and its full of crap. I can't seem to track the problem down. I checked
the CRTC registers, and dac programming. They are similar to what I got
from ATI and based on what I yanked from XFree86.
Help.
Added dac handling code to vgapal.c.
Didn't work so I stripped it clean. Removed clock programming...
fixed the dac to 68860 and clock to 8 - the default clock setting.
Based code on combination of ATI's SDK and the mach64 x server.
Went from a.out to elf.
Discovered a hell of a lof of segfaults. Due to my attempts to be nice
and unmap and free any mapped/allocated ram... uncommented worked fine.
Nov 18, 1995 (Asad Hanif)
Re-synced to pre 1.2.9 from 1.2.7
Sept 25, 1995 (Asad Hanif)
So I'm lazy (actually busy)
Well... I got the updated SDK from ATI. Updated the autodetect function
to reflect the SDK recommendations. I'm gonna avoid using the Extended
vga registers to try and maintain compatability with the CT/ET. So all
work will be done with the Mach64 controller thingy.
It now downloads all the necessary data from the rom.
Sept 2, 1995 (Asad Hanif)
Stuck in a register dumper so I know what I see.
It's still a vga driver.
Aug 30, 1995 (Asad Hanif)
This files was created to log all the changes made to svgalib-1.2.7 in
order to incorporate an ATI Mach 64 driver.
libvga.h: The Mach64 has 32 bit registers. The libvga.h doesn't
have code for inl and outl. These were added.
vga.h: Well.. gotta tell it there's a new driver.
Mach64 = 13 ooohh.. lucky number. But its actually
the 14th driver-- if you count from 0. :)
vga.c: Added the driver to the list.
config.h: Added some INCLUDE_MACH64_...
driver.h: Added the extern driver specs thingy.
Makefile.aout: stuck a line in their about mach64.c
mach64.regs: Named register list.
mach64.h: Header file.
mach64.c: Driver.
mach64.CHANGES: You're look at it.
Genesis

4
obsolete/mach/Makefile Normal file
View file

@ -0,0 +1,4 @@
mach32info: mach32info.c
cc -Wall -O2 -s mach32info.c -o mach32info
clean:
rm -f mach32info *.o

View file

@ -0,0 +1,64 @@
# These are the definitions for the standard modes that the driver uses
# as they are allowed in the EEPROM. If one mode is slightly shifted
# on your screen, you can take the info here and slightly adjust sync
# timing for correct alignment.
# 640x480 31.406kHz 59.82Hz
define 640x480x256 640x480x32K 640x480x64K 640x480x16M 640x480x16M32
:20 640 664 675 800 480 491 493 524 -hsync -vsync
# 640x480 37.736kHz 72.57Hz
define 640x480x256 640x480x32K 640x480x64K 640x480x16M 640x480x16M32
:9 640 664 668 848 480 489 491 519 -hsync -vsync
# 800x600 31.492kHz 89.72Hz Interlaced
define 800x600x256 800x600x32K 800x600x64K 800x600x16M 800x600x16M32
:31 800 888 903 1064 600 611 629 704 interlace +hsync -vsync
# 800x600 33.835kHz 96.39Hz Interlaced
define 800x600x256 800x600x32K 800x600x64K 800x600x16M 800x600x16M32
:3 800 880 895 1064 600 611 629 704 interlace +hsync +vsync
# 800x600 35.156kHz 56.25Hz
define 800x600x256 800x600x32K 800x600x64K 800x600x16M 800x600x16M32
:3 800 824 832 1024 600 601 603 624 -hsync +vsync
# 800x600 37.879kHz 60.32Hz
define 800x600x256 800x600x32K 800x600x64K 800x600x16M 800x600x16M32
:12 800 840 855 1056 600 604 606 627 +hsync +vsync
# 800x600 44.544kHz 70.04Hz
define 800x600x256 800x600x32K 800x600x64K 800x600x16M 800x600x16M32
:7 800 808 825 1008 600 609 611 635 -hsync -vsync
# 800x600 48.044kHz 72.14Hz
define 800x600x256 800x600x32K 800x600x64K 800x600x16M 800x600x16M32
:4 800 856 870 1048 600 637 639 665 +hsync +vsync
# 1024x768 35.522kHz 86.64Hz Interlaced
define 1024x768x256 1024x768x32K 1024x768x64K 1024x768x16M 1024x768x16M32
:7 1024 1040 1061 1264 768 769 787 820 interlace +hsync +vsync
# 1024x768 48.363kHz 60.00Hz
define 1024x768x256 1024x768x32K 1024x768x64K 1024x768x16M 1024x768x16M32
:15 1024 1048 1064 1344 768 771 773 805 -hsync -vsync
# 1024x768 56.476kHz 70.07Hz
define 1024x768x256 1024x768x32K 1024x768x64K 1024x768x16M 1024x768x16M32
:14 1024 1072 1093 1392 768 776 778 815 -hsync +vsync
# 1024x768 58.230kHz 72.245Hz
define 1024x768x256 1024x768x32K 1024x768x64K 1024x768x16M 1024x768x16M32
:14 1024 1056 1072 1328 768 771 773 805 -hsync -vsync
# 1024x768 53.879kHz 66.03Hz
define 1024x768x256 1024x768x32K 1024x768x64K 1024x768x16M 1024x768x16M32
:14 1024 1048 1064 1288 768 771 773 805 -hsync -vsync
# 1280x1024 50.000kHz 87.03Hz Interlaced
define 1280x1024x256 1280x1024x32K 1280x1024x64K 1280x1024x16M 1280x1024x16M32
:11 1280 1360 1369 1600 1024 1074 1092 1148 interlace +hsync +vsync
# 1280x1024 50.000kHz 94.97Hz Interlaced
define 1280x1024x256 1280x1024x32K 1280x1024x64K 1280x1024x16M 1280x1024x16M32
:11 1280 1360 1369 1600 1024 1034 1052 1052 interlace +hsync +vsync

1122
obsolete/mach/mach32info.c Normal file

File diff suppressed because it is too large Load diff

1091
obsolete/mach/mach64.c Normal file

File diff suppressed because it is too large Load diff

481
obsolete/mach/mach64.h Normal file
View file

@ -0,0 +1,481 @@
/* ATI Mach64 Driver for SVGALIB - (Driver (C) 1996 Asad F. Hanif)
Ye olde defines
*/
/* Mach64 io and memory mapped registers */
/* ripped from ati sdk */
/* NON-GUI IO MAPPED Registers */
#define ioCRTC_H_TOTAL_DISP 0x02EC
#define ioCRTC_H_SYNC_STRT_WID 0x06EC
#define ioCRTC_V_TOTAL_DISP 0x0AEC
#define ioCRTC_V_SYNC_STRT_WID 0x0EEC
#define ioCRTC_VLINE_CRNT_VLINE 0x12EC
#define ioCRTC_OFF_PITCH 0x16EC
#define ioCRTC_INT_CNTL 0x1AEC
#define ioCRTC_GEN_CNTL 0x1EEC
#define ioOVR_CLR 0x22EC
#define ioOVR_WID_LEFT_RIGHT 0x26EC
#define ioOVR_WID_TOP_BOTTOM 0x2AEC
#define ioCUR_CLR0 0x2EEC
#define ioCUR_CLR1 0x32EC
#define ioCUR_OFFSET 0x36EC
#define ioCUR_HORZ_VERT_POSN 0x3AEC
#define ioCUR_HORZ_VERT_OFF 0x3EEC
#define ioSCRATCH_REG0 0x42EC
#define ioSCRATCH_REG1 0x46EC
#define ioCLOCK_SEL_CNTL 0x4AEC
#define ioBUS_CNTL 0x4EEC
#define ioMEM_CNTL 0x52EC
#define ioMEM_VGA_WP_SEL 0x56EC
#define ioMEM_VGA_RP_SEL 0x5AEC
#define ioDAC_REGS 0x5EEC
#define ioDAC_CNTL 0x62EC
#define ioGEN_TEST_CNTL 0x66EC
#define ioCONFIG_CNTL 0x6AEC
#define ioCONFIG_CHIP_ID 0x6EEC
#define ioCONFIG_STAT0 0x72EC
#define ioCONFIG_STAT1 0x76EC
/* NON-GUI MEMORY MAPPED Registers - expressed in BYTE offsets */
#define mCRTC_H_TOTAL_DISP 0x0000
#define mCRTC_H_SYNC_STRT_WID 0x0004
#define mCRTC_V_TOTAL_DISP 0x0008
#define mCRTC_V_SYNC_STRT_WID 0x000C
#define mCRTC_VLINE_CRNT_VLINE 0x0010
#define mCRTC_OFF_PITCH 0x0014
#define mCRTC_INT_CNTL 0x0018
#define mCRTC_GEN_CNTL 0x001C
#define mOVR_CLR 0x0040
#define mOVR_WID_LEFT_RIGHT 0x0044
#define mOVR_WID_TOP_BOTTOM 0x0048
#define mCUR_CLR0 0x0060
#define mCUR_CLR1 0x0064
#define mCUR_OFFSET 0x0068
#define mCUR_HORZ_VERT_POSN 0x006C
#define mCUR_HORZ_VERT_OFF 0x0070
#define mSCRATCH_REG0 0x0080
#define mSCRATCH_REG1 0x0084
#define mCLOCK_SEL_CNTL 0x0090
#define mBUS_CNTL 0x00A0
#define mMEM_CNTL 0x00B0
#define mMEM_VGA_WP_SEL 0x00B4
#define mMEM_VGA_RP_SEL 0x00B8
#define mDAC_REGS 0x00C0
#define mDAC_CNTL 0x00C4
#define mGEN_TEST_CNTL 0x00D0
#define mCONFIG_CHIP_ID 0x00E0
#define mCONFIG_STAT0 0x00E4
#define mCONFIG_STAT1 0x00E8
/* GUI MEMORY MAPPED Registers */
#define mDST_OFF_PITCH 0x0100
#define mDST_X 0x0104
#define mDST_Y 0x0108
#define mDST_Y_X 0x010C
#define mDST_WIDTH 0x0110
#define mDST_HEIGHT 0x0114
#define mDST_HEIGHT_WIDTH 0x0118
#define mDST_X_WIDTH 0x011C
#define mDST_BRES_LNTH 0x0120
#define mDST_BRES_ERR 0x0124
#define mDST_BRES_INC 0x0128
#define mDST_BRES_DEC 0x012C
#define mDST_CNTL 0x0130
#define mSRC_OFF_PITCH 0x0180
#define mSRC_X 0x0184
#define mSRC_Y 0x0188
#define mSRC_Y_X 0x018C
#define mSRC_WIDTH1 0x0190
#define mSRC_HEIGHT1 0x0194
#define mSRC_HEIGHT1_WIDTH1 0x0198
#define mSRC_X_START 0x019C
#define mSRC_Y_START 0x01A0
#define mSRC_Y_X_START 0x01A4
#define mSRC_WIDTH2 0x01A8
#define mSRC_HEIGHT2 0x01AC
#define mSRC_HEIGHT2_WIDTH2 0x01B0
#define mSRC_CNTL 0x01B4
#define mHOST_DATA0 0x0200
#define mHOST_DATA1 0x0204
#define mHOST_DATA2 0x0208
#define mHOST_DATA3 0x020C
#define mHOST_DATA4 0x0210
#define mHOST_DATA5 0x0214
#define mHOST_DATA6 0x0218
#define mHOST_DATA7 0x021C
#define mHOST_DATA8 0x0220
#define mHOST_DATA9 0x0224
#define mHOST_DATAA 0x0228
#define mHOST_DATAB 0x022C
#define mHOST_DATAC 0x0230
#define mHOST_DATAD 0x0234
#define mHOST_DATAE 0x0238
#define mHOST_DATAF 0x023C
#define mHOST_CNTL 0x0240
#define mPAT_REG0 0x0280
#define mPAT_REG1 0x0284
#define mPAT_CNTL 0x0288
#define mSC_LEFT 0x02A0
#define mSC_RIGHT 0x02A4
#define mSC_LEFT_RIGHT 0x02A8
#define mSC_TOP 0x02AC
#define mSC_BOTTOM 0x02B0
#define mSC_TOP_BOTTOM 0x02B4
#define mDP_BKGD_CLR 0x02C0
#define mDP_FRGD_CLR 0x02C4
#define mDP_WRITE_MASK 0x02C8
#define mDP_CHAIN_MASK 0x02CC
#define mDP_PIX_WIDTH 0x02D0
#define mDP_MIX 0x02D4
#define mDP_SRC 0x02D8
#define mCLR_CMP_CLR 0x0300
#define mCLR_CMP_MASK 0x0304
#define mCLR_CMP_CNTL 0x0308
#define mFIFO_STAT 0x0310
#define mCONTEXT_MASK 0x0320
#define mCONTEXT_LOAD_CNTL 0x0324
#define mGUI_TRAJ_CNTL 0x0330
#define mGUI_STAT 0x0338
/*
Shortened register names
*/
#define IOBASE_ADDRESS 0x02ec
#define IOB IOBASE_ADDRESS
#define CRTC_H_TOTAL ( IOB + 0x0000 )
#define CRTC_H_DISP ( IOB + 0x0002 )
#define CRTC_H_SYNC_STRT ( IOB + 0x0400 )
#define CRTC_H_SYNC_DLY ( IOB + 0x0401 )
#define CRTC_H_SYNC_WID ( IOB + 0x0402 )
#define CRTC_V_TOTAL ( IOB + 0x0800 )
#define CRTC_V_DISP ( IOB + 0x0802 )
#define CRTC_V_SYNC_STRT ( IOB + 0x0c00 )
#define CRTC_V_SYNC_WID ( IOB + 0x0c02 )
#define CRTC_OFFSET ( IOB + 0x1400 )
#define CRTC_PITCH ( IOB + 0x1402 )
#define CRTC_INT_CNTL ( IOB + 0x1800 )
#define CRTC_GEN_CNTL ( IOB + 0x1c00 )
#define CRTC_DBL_SCAN_EN 0x01
#define CRTC_INTERLACE_EN 0x02
#define CRTC_HSYNC_DIS 0x04
#define CRTC_VSYNC_DIS 0x08
#define CRTC_CSYNC_EN 0x10
#define CRTC_PIX_BY_2_EN 0x20
#define CRTC_BLANK 0x40
#define CRTC_PIX_WIDTH ( IOB + 0x1c01 )
#define PIX_WIDTH8 0x02
#define CRTC_FIFO ( IOB + 0x1c02 )
#define CRTC_EXT_DISP ( IOB + 0x1c03 )
#define CRTC_EXT_DISP_EN 0x01
#define CRTC_EXT_EN 0x02
#define OVR_CLR_8 ( IOB + 0x2000 )
#define OVR_CLR_B ( IOB + 0x2001 )
#define OVR_CLR_G ( IOB + 0x2002 )
#define OVR_CLR_R ( IOB + 0x2003 )
#define OVR_WID_LEFT ( IOB + 0x2400 )
#define OVR_WID_RIGHT ( IOB + 0x2402 )
#define OVR_WID_TOP ( IOB + 0x2800 )
#define OVR_WID_BOTTOM ( IOB + 0x2802 )
#define SCRATCH_REG0 ( IOB + 0x4000 )
#define TEST_MEM_ADDR ( IOB + 0x4000 )
#define SCRATCH_REG1 ( IOB + 0x4400 )
#define TEST_MEM_DATA ( IOB + 0x4400 )
#define CLOCK_CNTL ( IOB + 0x4800 )
#define FS2_bit 0x04
#define FS3_bit 0x08
#define CLOCK_SEL 0x0f
#define CLOCK_DIV 0x30
#define CLOCK_DIV1 0x00
#define CLOCK_DIV2 0x10
#define CLOCK_DIV4 0x20
#define CLOCK_STROBE 0x40
#define CLOCK_SERIAL_DATA 0x80
#define BUS_CNTL1_16 ( IOB + 0x4c00 )
#define BUS_CNTL2_16 ( IOB + 0x4c02 )
#define MEM_CNTL8 ( IOB + 0x5000 )
#define MEM_VGA_WP_SEL ( IOB + 0x5400 )
#define MEM_VGA_RP_SEL ( IOB + 0x5800 )
#define MEM_BNDRY ( IOB + 0x5002 )
#define MEM_BNDRY_256K 0x01
#define MEM_BNDRY_512K 0x02
#define MEM_BNDRY_1M 0x03
#define MEM_BNDRY_EN 0x04
#define DAC_W_INDEX ( IOB + 0x5c00 )
#define DAC_DATA ( IOB + 0x5c01 )
#define DAC_MASK ( IOB + 0x5c02 )
#define DAC_R_INDEX ( IOB + 0x5c03 )
#define DAC8_W_INDEX ( DAC_W_INDEX & 0xff )
#define DAC8_DATA ( DAC_DATA & 0xff )
#define DAC8_MASK ( DAC_MASK & 0xff )
#define DAC8_R_INDEX ( DAC_R_INDEX & 0xff )
#define DAC_CNTL1 ( IOB + 0x6000 )
#define DAC_EXT_SEL_RS2 0x01
#define DAC_EXT_SEL_RS3 0x02
#define DAC_CNTL2 ( IOB + 0x6001 )
#define DAC_8BIT_EN 0x01
#define DAC_PIX_DLY_MASK 0x06
#define DAC_PIX_DLY_0NS 0x00
#define DAC_PIX_DLY_2NS 0x02
#define DAC_PIX_DLY_4NS 0x04
#define DAC_BLANK_ADJ_MASK 0x18
#define DAC_BLANK_ADJ_0 0x00
#define DAC_BLANK_ADJ_1 0x08
#define DAC_BLANK_ADJ_2 0x10
#define DAC_TYPE_ ( IOB + 0x6002 )
#define GEN_TEST_CNTL ( IOB + 0x6400 )
#define CONFIG_CNTL ( IOB + 0x6800 )
#define CONFIG_CHIP_ID ( IOB + 0x6c00 )
#define CONFIG_STAT ( IOB + 0x7000 )
#define GEN_TEST_CNTL ( IOB + 0x6400 )
#define GEN_TEST_CNTL2 ( IOB + 0x6402 )
#define PIXEL_DELAY_ON 0x0800
#define PITCH_INFO (SCRATCH_REG1 + 2)
#define DAC_VGA_MODE 0x80
#define SET_VGA_MODE 0x02
#define PITCH_INFO_PSIZE 0xc0
#define PITCH_INFO_DAC 0x10
#define PITCH_INFO_MUX2 0x20
#define PITCH_INFO_TIOCLK 0x08
#define PITCH_INFO_DAC0 0x01
#define VGA_MODE 1
#define ACCELERATOR_MODE 0
#define DOTCLK_TOLERANCE 25
#define REPORT
#define DEBUG
#define BAILOUT
#define TRUE 1
#define FALSE 0
#define ATIPORT 0x1ce
#define ATIOFF 0x80
#define ATISEL(reg) (ATIOFF+reg)
#define M64_BIOS_SIZE 0x8000
#define M64_CLOCK_MAX 0x0f
#define BPP_4 1
#define BPP_8 2
#define BPP_15 3
#define BPP_16 4
#define BPP_24 5
#define BPP_32 6
#define VRAM_MASK 0x66
#define C_ISC2595 1
#define C_STG1703 2
#define C_CH8398 3
#define C_BEDROCK 4
#define C_ATT20C408 5
#define C_RGB514 6
#define D_ATI68860 5
#define SAY(x) fprintf(stderr,#x"\n");fflush(stderr);
#define DUMP(x) for (DUMPINDEX=0;DUMPINDEX<32;DUMPINDEX++) \
DUMPOUT[31-DUMPINDEX]=(((x)>>DUMPINDEX)&0x1)? \
'1':'0'; \
DUMPOUT[32]='\0'; \
printf("%s\n",DUMPOUT);
typedef unsigned char UB;
typedef unsigned short US;
typedef unsigned long UL;
typedef struct {
UB h_disp; /* horizontal res in chars */
UB dacmask; /* supported dacs */
UB ram_req; /* ram required */
UB max_dot_clk; /* max dot clock */
UB color_depth; /* mac color depth */
UB FILLER; /* make even #bytes */
} M64_MaxColorDepth;
typedef struct {
UB ClockType; /* clock type */
US MinFreq; /* min clock freq */
US MaxFreq; /* max clock freq */
US RefFreq; /* reference freq */
US RefDivdr; /* reference freq divider */
US N_adj; /* adjust */
US Dram_Mem_Clk;
US Vram_Mem_Clk;
US Coproc_Mem_Clk;
UB CX_Clk;
UB VGA_Clk;
UB Mem_Clk_Entry;
UB SClk_Entry;
US ClkFreqTable[M64_CLOCK_MAX*2]; /* clock frequency table */
UB DefaultDivdr;
UB DefaultFS2;
UB CX_DMcycle;
UB VGA_DMcycle;
UB CX_VMcycle;
UB VGA_VMcycle;
} M64_ClockInfo;
typedef struct {
US Chip_Type; /* ASIC Chip type */
UB Chip_Class; /* ASIC Chip class */
UB Chip_Rev; /* ASIC Chip Revision */
UB Chip_ID_Index; /* Name offset */
UB Cfg_Bus_type; /* Bus type */
UB Cfg_Ram_type; /* Ram type */
UB Mem_Size; /* Memory installed */
UB Dac_Type; /* Dac type */
UB Dac_Subtype; /* Dac sub type */
} M64_StartUpInfo;
static UB *M64_Chip_Name[]={"GX-C","GX-D","GX-E","GX-F","GX-?",
"CX","CX-?",
"CT","ET",
"?"};
static UB *M64_Bus_Name[]={"ISA","EISA","","","","","VLB","PCI"};
static UB *M64_Dac_Name[]={"","TVP3020, RGB514","ATI68875","BT476/BT478",
"BT481, ATT490, ATT491","ATI68860/ATI68880",
"STG1700","SC15021, STF1702"};
static UB *M64_Ram_Name[]={"DRAM (256Kx4)","VRAM (256x4,x8,x16)",
"VRAM (256Kx16 short shift register)",
"DRAM (256Kx16)","Graphics DRAM (256Kx16)",
"Enhanced VRAM (256Kx4,x8,x16)",
"Enhanced VRAM (256Kx16 short shift register)",
""};
static US M64_Mem_Size[]={512,1024,2048,4096,6144,8192,0,0};
static UB *M64_Clock_Name[]={"","ISC2595","STG1703","CH8398",
"BEDROCK","ATT20C408","RGB514"};
static UB M64_BPP[]={-1,4,8,15,16,24,32,-1};
/*
Some misc. structures
*/
typedef struct {
US VRes;
US HRes;
UB max_cdepth;
UB req_cdepth;
US fifo_vl;
US pdot_clock;
UB refresh_mask;
UB vmode;
US misc;
UB h_total;
UB h_disp;
UB h_sync_strt;
UB h_sync_wid;
US v_total;
US v_disp;
US v_sync_strt;
UB v_sync_wid;
UB clock_cntl;
US dot_clock;
UB h_overscan_a;
UB h_overscan_b;
UB v_overscan_a;
UB v_overscan_b;
UB overscan_8;
UB overscan_B;
UB overscan_G;
UB overscan_R;
} CRTC_Table;
#define MAX_CRTC_TABLE 1
static CRTC_Table CRTC_tinfo[MAX_CRTC_TABLE]={
/* 640x480 60 Hz NI */
{ 0, 0, 0, 0, 0,
0, 60, 0x12, PIXEL_DELAY_ON,
/* 0x63, 0x4f, 0x52, 0x2c,
0x020c, 0x01df, 0x01ea, 0x22,
*/ 0x64, 0x50, 0x53, 0x02,
0x20d, 0x1e0, 0x1eb, 0x02,
0x00, 2518,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
}
};

23
obsolete/support/0-README Normal file
View file

@ -0,0 +1,23 @@
This contains the source for a Borland C++ program that allows you to dump
the register contents for any BIOS video mode. 'vga.exe' should work with
any VGA/SVGA adapter. It takes a hexadecimal mode number as argument and
writes the (VGA) register contents to the console.
These printout can be used to write a new driver. Please read also 'man 7
svgalib.et4000' about the tseng3.exe program.
trap-out.asm / .com is a DOS program which traces all I/O calls made when a
given video mode is set by the BIOS. It was used for the TVGA driver and should
be useful for other drivers too, esp. if no documentation is available.
It spits out a long list of "T DX/I AX/L" strings where T is "I" for IN or
"O" for OUT, DX/I is the value of DX or the immediate given value for
ports <256, and AX/L is the value of AX or AL before the call to IN or OUT
(yeah, the value of AX is pretty worthless before a call to IN, but oh
well)
This output is very very easily parsed into a simple C routine that calls
port_in and port_out many many times, but will set the same mode the BIOS
did.
The trap-out program is courtesy of Ryan Rubley <rubleyr@river.it.gvsu.edu>

View file

@ -0,0 +1,344 @@
; TRAPOUT2.ASM v2.0 by ARK (ark@lhq.com, root@ark.dyn.ml.org) 11-28-97
; Traps IN and OUT instructions in INT 10h and displays DX and AX/AL values.
;
; In the header "T DX/I AX/L", T is the Type of instruction (I=IN, O=OUT),
; DX/I is the value of DX or the Immediate value if port<256, and AX/L
; is the value of AX or AL depending on if an 8 or 16 bit value is listed.
; AX/L is meaningless for IN's since it is the value if AX/L *before* the
; call to IN.
;
; This is very useful to find information about how your video card works.
; I wrote this to get register dumps for my Trident TVGA9440AGi card so
; that I could use it under Linux.
;
; NOTE: Pipe the output or you won't see anything!
; (ex: TRAP-OUT 4F02 0101 > 640x480.256)
;
; New in v2.0:
; * Traces into INT 10 calls that are called from inside INT 10!
; * Allows AX and BX values to be specified!
; * Command line accepts trailing spaces now.
; x Code to trap INT's also! (T column='N', DX/I=INT ##, AX/L=AX value)
; (Its commented out - but you can recompile with it if you want)
;
; How to assemble with Borland:
; tasm /ml /zd ncr.asm (case sensitive, line number debug info only)
; tlink /x /t ncr.obj (no map, make com file)
;
.model tiny ; Tiny memory model, all segments point to the same 64K
.286 ; This code will run on a 286... actually, it
.code ; Everything is in the code segment(cs) will probably
.startup ; Startup run on anything
jmp Start ; Go to beginning of progam
realINT1 dd 52411A3Eh ; Address of original INT 01h routine offset
realINT10 dd 3C1B214Bh ; Memory for [es:bx] of the real INT 10h
; (defaults are '>-ARK!-<' just for looks in the .COM)
; strings
no_command_line db 'Use: TRAPOUT2 [AX] [BX]',13,10
db ' Traces all IN/OUT calls inside INT 10h',13,10,36
tracing db 'Tracing INT 10h with AX:',36
bx_msg db ' BX:',36
header db 13,10,'T DX/I AX/L',13,10,36
INT1 proc ; Interrupt Service Routine for Single Step Debugging
push ax ; save registers
push dx
push es
push di
push bp
mov bp,sp ; set bp to the stack
push word ptr cs:[bp+12] ; put the real cs
pop es ; into es
push word ptr cs:[bp+10] ; put the real ip
pop di ; into di
mov al,byte ptr es:[di] ; set al to the next instruction that will
; be executed after this INT 01 is done.
; This code will trap INT's also...
; cmp al,0CDh ; If al is not CD (INT) keep going
; jne not_int ; If it is, display some stuff...
;; This will skip doing the INT's...
;; add word ptr cs:[bp+10],2 ; Add 2 to the real ip, to skip the INT
; mov dl,4Eh ; Display an N
; mov ah,02h ; The immediate value/DX is the INT ##
; int 21h ; that is called. AX is the value before
; mov dl,20h ; Display a space
; mov ah,02h ;
; int 21h ; Display the immediate value which is
; jmp is_imm ; reallly the interrupt number called.
not_int:
and al,0F4h ; If al is E4-E7 or EC-EF (all IN/OUT's)
cmp al,0E4h ; Then we display our stuff
jne not_io ; Otherwise, do nothing
; note: 1 more byte of code after this
; jmp will make it out of range...
mov al,byte ptr es:[di] ; Set al to next instruction
test al,02h ; If bit 1 is set then we have an OUT
jz is_in ; If bit 1 is 0, we have an IN
mov dl,4Fh ; Display an O
mov ah,02h
int 21h
jmp dx_or_imd
is_in: ; Display an I
mov dl,49h
mov ah,02h
int 21h
dx_or_imd: ; Display a space
mov dl,20h
mov ah,02h
int 21h
mov al,byte ptr es:[di] ; Set al to next instruction
test al,08h ; If bit 3 is set then we are using DX
jz is_imm ; If bit 3 is 0, we are using an immediate
mov ax,[bp+6] ; restore dx to ax
call ShowHex ; Display dx
call ShowHex
call ShowHex
call ShowHex
jmp ax_or_al
is_imm:
mov dl,20h ; Display 2 spaces
mov ah,02h
int 21h
mov dl,20h
mov ah,02h
int 21h
mov ah,byte ptr es:[di+1] ; Set ah to byte after the next instruction
call ShowHex ; Display the immediate value
call ShowHex
ax_or_al:
mov dl,2Ch ; Display a comma
mov ah,02h
int 21h
mov al,byte ptr es:[di] ; Set al to next instruction
test al,01h ; If bit 0 is set then we are using AX
jz is_al ; If bit 0 is 0, we are using AL
mov ax,[bp+8] ; Restore ax
call ShowHex ; Display ax
call ShowHex
call ShowHex
call ShowHex
jmp print_next_line
is_al:
mov ah,[bp+8] ; Restore al to ah
call ShowHex ; Display al
call ShowHex
print_next_line:
mov dl,0Dh ; print a newline
mov ah,02h
int 21h
mov dl,0Ah
mov ah,02h
int 21h
not_io:
pop bp ; restore registers
pop di
pop es
pop dx
pop ax
iret ; end interrupt
INT1 endp
; INT 10h that fakes the real INT 10 and sets the trap flag.
INT10 proc ; Interrupt Service Routine for Tracing INT 10h
push ax ; Save AX
pushf ; Put flags on the stack
pop ax ; Then into AX
or ax,0100h ; Set the trap flag
push ax ; Trap Flag calls INT 01h between every instruction
popf ; Stuff new flags back into the flags register
pop ax ; Restore AX
cli ; Fake INT call: clear interrupt flag, skip clearing
pushf ; trap flag, push flags, call to location.
call cs:[realINT10] ; This call to INT 10h is be trapped for
; IN/OUT/INT Normal INT calls would clear
; the trap flag and then INT 01h would never
; be called.
iret ; end interrupt
INT10 endp
; function that prints the highest 4 bits of ax as text {0-9,A-F} to stdout
; ax will be shifted left 4 bits on return.
ShowHex proc
push ax ; save registers
push dx
shr ax,0Ch ; move the highest 4 bits to the lowest 4
and al,0Fh ; limit to lowest 4 bits
or al,30h ; change range to 30h-3Fh {0-9:;<=>?}
cmp al,39h ; if it is 30h-39h
jbe is_0_thru_9 ; then its already set
add al,07h ; otherwise change :;<=>? to A-F
is_0_thru_9:
mov dl,al
mov ah,02h
int 21h
pop dx ; restore dx
pop ax ; restore ax
shl ax,4 ; set up ax for next call
ret ; return
ShowHex endp
Start: ; Program begins here
mov si,0080h ; CS:0080h is the command line
cmp byte ptr [si],10 ; I want it to be at least 10 bytes long
jae process_command_line ; if not, abort
mov dx,offset no_command_line ; ds is preset
mov ah,09h ; Dos function 09h
int 21h ; Display no command line string
ret ; Exit program
process_command_line:
inc si ; move si to start of actual string
mov ax,[si+1] ; copy first 2 chrs to ax, skipping the space
mov bx,[si+3] ; copy 2nd two characters to bx
sub al,30h ; subtract 30h so chrs 0-9 have value 0-9
cmp al,09h ; if its 0-9, its ok.
jbe al_is_ok ; if its not, its probably A-F or a-f
sub al,07h ; so subtract 7 more
and al,0Fh ; and limit to 0-F
al_is_ok:
sub ah,30h ; do the same to ah
cmp ah,09h
jbe ah_is_ok
sub ah,07h
and ah,0Fh
ah_is_ok:
sub bl,30h ; do the same to bl
cmp bl,09h
jbe bl_is_ok
sub bl,07h
and bl,0Fh
bl_is_ok:
sub bh,30h ; do the same to bh
cmp bh,09h
jbe bh_is_ok
sub bh,07h
and bh,0Fh
bh_is_ok:
shl al,04h ; Combine the values so that AL-AH-BL-BH
or ah,al ; Goes into --AH- --AL-
mov al,bl ; <----AX--->
shl al,04h
or al,bh
mov word ptr [si],ax ; store the value over the string
mov ax,[si+6] ; copy 3rd 2 chrs to ax, skip the 2nd space
mov bx,[si+8] ; copy 4th two characters to bx
sub al,30h ; subtract 30h so chrs 0-9 have value 0-9
cmp al,09h ; if its 0-9, its ok.
jbe al_is_ok2 ; if its not, its probably A-F or a-f
sub al,07h ; so subtract 7 more
and al,0Fh ; and limit to 0-F
al_is_ok2:
sub ah,30h ; do the same to ah
cmp ah,09h
jbe ah_is_ok2
sub ah,07h
and ah,0Fh
ah_is_ok2:
sub bl,30h ; do the same to bl
cmp bl,09h
jbe bl_is_ok2
sub bl,07h
and bl,0Fh
bl_is_ok2:
sub bh,30h ; do the same to bh
cmp bh,09h
jbe bh_is_ok2
sub bh,07h
and bh,0Fh
bh_is_ok2:
shl al,04h ; Combine the values so that AL-AH-BL-BH
or ah,al ; Goes into --AH- --AL-
mov al,bl ; <----AX--->
shl al,04h
or al,bh
mov word ptr [si+2],ax ; store the value over the string
; Now [si] contains the real values of AX and BX
mov dx,offset tracing ; ds is preset
mov ah,09h ; Dos function 09h
int 21h ; Display tracing string
mov ax,word ptr [si] ; Restore ax
call ShowHex ; Display command line
call ShowHex ; ax value back to user
call ShowHex ; by placing it in ax
call ShowHex ; and calling ShowHex
mov dx,offset bx_msg ; ds is preset
mov ah,09h ; Dos function 09h
int 21h ; Display bx message
mov ax,word ptr [si+2] ; Restore bx into ax
call ShowHex ; Display command line
call ShowHex ; bx value back to user
call ShowHex ; by placing it in ax
call ShowHex ; and calling ShowHex
mov dx,offset header ; ds is preset
mov ah,09h ; Dos function 09h
int 21h ; Display header to output
mov ax,3501h ; Dos function 35h, Get vector of INT 01h
int 21h ; Store it in es:bx
mov word ptr [realINT1],bx ; Store address of original INT 01h
mov word ptr [realINT1+2],es ; into realINT1
mov ax,3510h ; Dos function 35h, Get vector of INT 10h
int 21h ; Store it in es:bx
mov word ptr [realINT10],bx ; Store address of original INT 10h
mov word ptr [realINT10+2],es ; into realINT10 so we can fake an INT
mov ax,2501h ; Dos function 25h, Store DS:DX to INT 01h
mov dx,offset INT1 ; ds is preset, dx is the handler's offset
int 21h ; Set new Single Step handler
mov ax,2510h ; Dos function 25h, Store DS:DX to INT 10h
mov dx,offset INT10 ; ds is preset, dx is the handler's offset
int 21h ; Set new Video Interrupt
mov ax,word ptr [si] ; We will use the command line ax/bx
mov bx,word ptr [si+2] ; values for the fake int call
int 10h ; Call my int 10 which fakes the
; real int 10 and traps it.
mov ax,2501h ; Dos function 25h, Store DS:DX to INT 01h
mov dx,word ptr [realINT1] ; ds/dx are in realINT1
push ds ; Save old ds
push word ptr [realINT1+2] ; Put segment on stack
pop ds ; Set ds to the segment
int 21h ; Reset old Single Step handler
pop ds ; Restore old ds
mov ax,2510h ; Dos function 25h, Store DS:DX to INT 10h
mov dx,word ptr [realINT10] ; ds/dx are in realINT10
push ds ; Save old ds
push word ptr [realINT10+2] ; Put segment on stack
pop ds ; Set ds to the segment
int 21h ; Reset old Video Interrupt
pop ds ; Restore old ds
mov ax,0003h ; Set ax to 3
int 10h ; Set 80x25 Text mode
ret ; End of program
end ; End of file

Binary file not shown.

146
obsolete/support/vga.c Normal file
View file

@ -0,0 +1,146 @@
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
/* January 1995, Scott Heavner (sdh@po.cwru.edu)
* Changes to allow anyone to compile vga.c under the go32 Linux->dos cross compiler.
* It should also work with DJGPP (the gcc port to msdos). The cross compiler is
* available at ftp://sunsite.unc.edu/pub/Linux/devel/msdos/go32crs.tar.gz.
*
* I compiled it with:
*
* go32gcc vga.c -lpc
* cat /usr/local/go32/bin/go32.exe a.out > vga.exe
*/
#ifdef GO32
#include <pc.h>
#endif
/* VGA index register ports */
#define CRT_I 0x3D4 /* CRT Controller Index (mono: 0x3B4) */
#define ATT_IW 0x3C0 /* Attribute Controller Index & Data Write Register */
#define GRA_I 0x3CE /* Graphics Controller Index */
#define SEQ_I 0x3C4 /* Sequencer Index */
#define PEL_IW 0x3C8 /* PEL Write Index */
/* VGA data register ports */
#define CRT_D 0x3D5 /* CRT Controller Data Register (mono: 0x3B5) */
#define ATT_R 0x3C1 /* Attribute Controller Data Read Register */
#define GRA_D 0x3CF /* Graphics Controller Data Register */
#define SEQ_D 0x3C5 /* Sequencer Data Register */
#define MIS_R 0x3CC /* Misc Output Read Register */
#define MIS_W 0x3C2 /* Misc Output Write Register */
#define IS1_R 0x3DA /* Input Status Register 1 (mono: 0x3BA) */
#define PEL_D 0x3C9 /* PEL Data Register */
/* VGA indexes max counts */
#define CRT_C 24 /* 24 CRT Controller Registers */
#define ATT_C 21 /* 21 Attribute Controller Registers */
#define GRA_C 9 /* 9 Graphics Controller Registers */
#define SEQ_C 5 /* 5 Sequencer Registers */
#define MIS_C 1 /* 1 Misc Output Register */
/* VGA registers saving indexes */
#define CRT 0 /* CRT Controller Registers start */
#define ATT CRT+CRT_C /* Attribute Controller Registers start */
#define GRA ATT+ATT_C /* Graphics Controller Registers start */
#define SEQ GRA+GRA_C /* Sequencer Registers */
#define MIS SEQ+SEQ_C /* General Registers */
#define END MIS+MIS_C /* last */
unsigned char vga_regs[60];
#ifdef GO32
#define port_out(v,p) outportb(p,v)
#define port_in(p) inportb(p)
#else
void port_out(unsigned char value, unsigned short port)
{
asm
{
mov dx, port
mov al, value
out dx, al
}
} unsigned char port_in(unsigned short port)
{
asm
{
mov dx, port
in al, dx
} return (_AL);
}
#endif
main(int argc, char *argv[])
{
union REGS cpu_regs;
int i;
unsigned char mode;
if (argc != 2) {
printf("Usage: getregs mode (mode must be hexadecimal)\n");
exit(-1);
}
if (!sscanf(argv[1], "%x", &mode)) {
printf("Usage: getregs mode (mode must be hexadecimal)\n");
exit(-1);
}
cpu_regs.h.ah = 0x00;
cpu_regs.h.al = mode;
int86(0x10, &cpu_regs, &cpu_regs);
/* get VGA register values */
for (i = 0; i < CRT_C; i++) {
port_out(i, CRT_I);
vga_regs[CRT + i] = port_in(CRT_D);
}
for (i = 0; i < ATT_C; i++) {
port_in(IS1_R);
port_out(i, ATT_IW);
vga_regs[ATT + i] = port_in(ATT_R);
}
for (i = 0; i < GRA_C; i++) {
port_out(i, GRA_I);
vga_regs[GRA + i] = port_in(GRA_D);
}
for (i = 0; i < SEQ_C; i++) {
port_out(i, SEQ_I);
vga_regs[SEQ + i] = port_in(SEQ_D);
}
vga_regs[MIS] = port_in(MIS_R);
cpu_regs.h.ah = 0x00;
cpu_regs.h.al = 0x03;
int86(0x10, &cpu_regs, &cpu_regs);
printf("/* BIOS mode 0x%02X */\n", mode);
printf("static char regs[60] = {\n ");
for (i = 0; i < 12; i++)
printf("0x%02X,", vga_regs[CRT + i]);
printf("\n ");
for (i = 12; i < CRT_C; i++)
printf("0x%02X,", vga_regs[CRT + i]);
printf("\n ");
for (i = 0; i < 12; i++)
printf("0x%02X,", vga_regs[ATT + i]);
printf("\n ");
for (i = 12; i < ATT_C; i++)
printf("0x%02X,", vga_regs[ATT + i]);
printf("\n ");
for (i = 0; i < GRA_C; i++)
printf("0x%02X,", vga_regs[GRA + i]);
printf("\n ");
for (i = 0; i < SEQ_C; i++)
printf("0x%02X,", vga_regs[SEQ + i]);
printf("\n ");
printf("0x%02X", vga_regs[MIS]);
printf("\n};\n");
}

253
obsolete/svpmi/parse.c Normal file
View file

@ -0,0 +1,253 @@
/*
* This is a quickly hacked program to convert an SVPMI (Super VGA Protected
* Mode Interface) data file to an svgalib driver. Feedback is
* very welcome.
*
* Initial version (Mar 94 HH). Doesn't do much yet.
* Assumes textmode is last defined mode.
* End with ctrl-c. Correct resulting files by hand.
* (add "}" to modetable.svpmi)
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void parse ();
void
main ()
{
parse ();
}
/* Return pointer to line red from stdin, end marked by CR or CR/LF.
* Initial spaces are removed. */
char *
getline ()
{
static char linebuf[128];
int i, length, spaces;
i = 0;
for (;;)
{
int c;
c = fgetc (stdin);
if (feof (stdin))
return NULL;
if (c == 13)
continue; /* Skip. */
if (c == 10)
break;
linebuf[i] = c;
i++;
}
length = i;
linebuf[i] = 0;
/* Remove initial spaces. */
spaces = 0;
i = 0;
while (i < length)
{
if (linebuf[i] != ' ')
break;
i++;
spaces++;
}
return linebuf + spaces;
}
/* Skip lines until left side of line matches string s. */
char *
getthisline (char *s)
{
char buf[128];
int n;
n = strlen (s);
for (;;)
{
char *line;
line = getline ();
if (strncmp (line, s, n) == 0)
return line;
}
}
/* Get the (n + 1)th word delimited by ' ' and ';' in string s. */
char *
getword (char *s, int n)
{
int i;
char *word;
int mode, wcount;
word = s;
mode = 0; /* Whitespace. */
wcount = 0;
i = 0;
for (i = 0; s[i] != 0; i++)
{
if (s[i] == ' ' || s[i] == ';')
if (mode == 0)
continue;
else
{
s[i] = 0;
if (wcount == n)
return word;
wcount++;
mode = 0;
}
else if (mode == 1)
continue;
else
{
word = &s[i];
mode = 1;
}
}
return NULL;
}
/* Write lines to file until left part matches string s. */
void
writetofileuntilthisline (char *s, FILE * f)
{
int n;
n = strlen (s);
for (;;)
{
char *line;
line = getline ();
if (strncmp (line, s, n) == 0)
break;
fprintf (f, "%s\n", line);
}
}
void
writetofileuntilend (FILE * f)
{
for (;;)
{
char *line;
line = getline ();
if (line == NULL)
return;
fprintf (f, "%s\n", line);
}
}
void
parse ()
{
char *line;
char s[128];
char modename[40];
int modenumber;
FILE *f, *g;
printf ("SVPMI to svgalib driver converter.\n\n");
/* Read header. */
getthisline ("[ADAPTER]");
line = getline ();
printf ("Graphics Adapter string: %s\n", line);
/* Read modes. */
modenumber = 0;
g = fopen ("modetable.svpmi", "wb");
f = fopen ("modes.svpmi", "wb");
fprintf (g, "/* svgalib SVPMI mode table. */\n\n");
fprintf (g, "static svpmi_modeentry svpmi_modes[] = {\n");
for (;;)
{
int XResolution; /* SVPMI modeinfo fields. */
int YResolution;
int BitsPerPixel;
int BytesPerScanline;
int WinAGranularity;
int WinASize;
int WinABase;
int ModeAttributes;
getthisline ("[MODEINFO]");
line = getthisline ("ModeAttributes");
ModeAttributes = atoi (getword (line, 2));
line = getthisline ("WinAGranularity");
WinAGranularity = atoi (getword (line, 2));
line = getthisline ("WinASize");
WinASize = atoi (getword (line, 2));
line = getthisline ("WinABase");
WinABase = atoi (getword (line, 2));
#if 0
if (WinABase != 0xa0000)
{
printf ("Window is not at 0xa0000.\n");
exit (-1);
}
#endif
line = getthisline ("BytesPerScanline");
BytesPerScanline = atoi (getword (line, 2));
line = getthisline ("XResolution");
XResolution = atoi (getword (line, 2));
line = getthisline ("YResolution");
YResolution = atoi (getword (line, 2));
line = getthisline ("BitsPerPixel");
BitsPerPixel = atoi (getword (line, 2));
if (ModeAttributes == 0x07)
{
/* Text mode. */
printf ("Textmode found.\n");
getthisline ("[SETMODE]");
fprintf (f, "static void svpmi_setmode_text() {\n");
writetofileuntilend (f);
fprintf (f, "}\n\n\n");
fprintf (g, "}\n");
fclose (f);
fclose (g);
exit (0);
}
printf ("Mode found: %d x %d, %dbpp %d bpl gran A %d\n",
XResolution, YResolution, BitsPerPixel,
BytesPerScanline, WinAGranularity);
sprintf (modename, "%dx%dx%d", XResolution, YResolution,
1 << BitsPerPixel);
getthisline ("[SETMODE]");
fprintf (f, "static void svpmi_setmode_%s() {\n", modename);
writetofileuntilthisline ("[SETCOLOR]", f);
fprintf (f, "}\n\n\n");
getthisline ("[SETWINDOW]");
fprintf (f, "static void svpmi_setwindow_%s( int r0 ) {\n", modename);
writetofileuntilthisline ("[MODE]", f);
fprintf (f, "}\n\n\n");
fprintf (g, "{ %d, %d, %d, %d, %d, svpmi_setmode_%s, svpmi_setwindow_%s },\n",
XResolution, YResolution, BitsPerPixel,
BytesPerScanline, WinAGranularity, modename, modename);
fflush (f);
fflush (g);
modenumber++;
}
fprintf (g, "}\n");
fclose (f);
fclose (g);
}

185
obsolete/svpmi/svpmi.c Normal file
View file

@ -0,0 +1,185 @@
/* This library is free software; you can redistribute it and/or */
/* modify it without any restrictions. This library is distributed */
/* in the hope that it will be useful, but without any warranty. */
/* Copyright (C) 1994 Harm Hanemaayer */
/*
Basic initial untested SVPMI skeleton driver.
Includes computer-generated mode setting/bank switching
routines and mode information table.
Untested, may not be finished.
A better way to do this would be to have a seperate svpmi server
program set modes. This way there would be no need to recompile
the shared library. For performance it would be nice to move the
bank-switching over to svgalib. I imagine one way to do this would
be to encode the SVPMI procedure code (simple as it is, just a few
outs and a few basic bit operations) and have the svgalib driver
interpret that. This could also be used for mode setting.
*/
#include <stdio.h>
#include "../vga.h"
#include "../libvga.h"
#include "../driver.h"
#include "svpmi.h"
#include "modes.svpmi"
#include "modetable.svpmi"
static svpmi_currentmode = NULL;
static svpmi_modeentry *
svpmi_lookupmode (int w, int h, int colors)
{
int i;
for (i = 0; i < sizeof (svpmi_modes); i++)
if (w == svpmi_modes[i].width && h == svpmi_modes[i].height &&
colors = (1 << svpmi_mode[i].bitsperpixel))
return &svpmi_modes[i];
return NULL;
}
static int
svpmi_getmodeinfo (int mode, vga_modeinfo * modeinfo)
{
modeinfo->maxlogicalwidth = modeinfo->width;
modeinfo->startaddressrange = 0;
modeinfo->haveblit = 0;
modeinfo->flags &= ~HAVE_RWPAGE;
return 0;
}
/* Return non-zero if mode is available */
static int
svpmi_modeavailable (int mode)
{
struct info *info;
svpmi_modeentry *sm;
if (mode < 10)
return vga_chipsetfunctions[CHIPSET_MODEAVAILABLE] (mode);
if (mode == 32)
return 0;
sm = svpmi_lookupmode (modeinfo->width, modeinfo->height,
modeinfo->colors);
return (sm != NULL)
}
/* Set a mode */
static int
svpmi_setmode (int mode, int prv_mode)
{
svpmi_modeentry *sm;
if (mode == TEXT)
{
svpmi_setmode_text ();
return 0;
}
if (!SVGAMODE (mode))
/* Let the standard VGA driver set standard VGA modes. */
return vga_chipsetfunctions[CHIPSET_SETMODE] (mode);
sm = svpmi_lookupmode (infotable[mode].width, infotable[mode].height,
infotable[mode].colors);
if (sm == NULL)
return 1; /* No match. */
sm->setmode (); /* Call the SVPMI mode setting code. */
svpmi_currentmode = sm;
/* Hack similar to what the ATI mach32 driver does for some */
/* truecolor modes. I think S3 uses only a few fixed scanline */
/* widths (e.g. 1024, 1280) so may happen a lot. */
infotable[mode].xbytes = sm->bytesperscanline;
}
/* Indentify chipset; return non-zero if detected */
static int
svpmi_test ()
{
/* Detection with environment variable -- better change into */
/* config file option. */
if (getenv ("SVGALIB_SVPMI"))
return 1;
return 0;
}
/* Bank switching function - set 64K bank number */
static void
svpmi_setpage (int page)
{
svpmi_currentmode->setwindow (page *
(64 / svpmi_currentmode->windowgranularity));
}
/* Set display start address (not for 16 color modes) */
static int
svpmi_setdisplaystart (int address)
{
}
/* Set logical scanline length (usually multiple of 8) */
/* Multiples of 8 to 2040 */
static int
svpmi_setlogicalwidth (int width)
{
outw (0x3d4, 0x13 + (width >> 3) * 256); /* lw3-lw11 */
return 0;
}
static int
nothing ()
{
}
/* Function table (exported) */
int (*svpmi_chipsetfunctions[]) () =
{
(int (*)()) nothing, /* saveregs */
(int (*)()) nothing, /* setregs */
(int (*)()) nothing, /* unlock */
(int (*)()) nothing, /* lock */
svpmi_test,
svpmi_init,
(int (*)()) svpmi_setpage,
(int (*)()) nothing,
(int (*)()) nothing,
svpmi_setmode,
svpmi_modeavailable,
nothing, /* setdisplaystart */
svmi_setlogicalwidth,
svpmi_getmodeinfo
};
/* Initialize chipset (called after detection) */
static int
svpmi_init (int force, int par1, int par2)
{
/* Not required. */
}

40
obsolete/svpmi/svpmi.h Normal file
View file

@ -0,0 +1,40 @@
typdef struct
{
int width;
int height;
int bitsperpixel;
int bytesperscanline;
int windowgranularity;
void *setmode ();
void *setwindow (int);
}
svpmi_modeentry;
static void
wait (int x)
{
int i;
for (i = 0; i < 10; i++);
}
static unsigned char r0, r1, r2, r3, r4, r5, r6, r7;
static unsigned char r8, r9, r10, r11, r12, r13, r14, r15;
static unsigned char r16, r17, r18, r19, r20, r21, r22, r23;
static unsigned char r24, r25, r26, r27, r28, r29, r30, r31;
#define boutb(n, p1, p2) __boutb(0, n, p1 p2)
#define __boutp(i, n, p1, p2) \
#if n != 0 \
outb(p1, i); outb(p2, r##i); \
boutb((i + 1), (n - 1), p1, p2); \
#endif
#define inb(r, p) port_in(p)
#define and(r, v) r &= v;
#define or(r, v) r |= v;
#define xor(r, v) r ^= v;
#define shr(r, v) r >>= v;
#define shl(r, v) r <<= v;