|
|
1.1 ! root 1: // Tables used by VGA bios ! 2: // ! 3: // Copyright (C) 2009 Kevin O'Connor <[email protected]> ! 4: // Copyright (C) 2001-2008 the LGPL VGABios developers Team ! 5: // ! 6: // This file may be distributed under the terms of the GNU LGPLv3 license. ! 7: ! 8: #include "vgatables.h" // struct VideoParamTableEntry_s ! 9: #include "biosvar.h" // GET_GLOBAL ! 10: ! 11: ! 12: /**************************************************************** ! 13: * Video parameter table ! 14: ****************************************************************/ ! 15: ! 16: struct VideoParam_s video_param_table[] VAR16 = { ! 17: // index=0x00 no mode defined ! 18: {}, ! 19: // index=0x01 no mode defined ! 20: {}, ! 21: // index=0x02 no mode defined ! 22: {}, ! 23: // index=0x03 no mode defined ! 24: {}, ! 25: // index=0x04 vga mode 0x04 ! 26: { 40, 24, 8, 0x0800, /* tw, th-1, ch, slength */ ! 27: { 0x09, 0x03, 0x00, 0x02 }, /* sequ_regs */ ! 28: 0x63, /* miscreg */ ! 29: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f, ! 30: 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 31: 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2, ! 32: 0xff }, /* crtc_regs */ ! 33: { 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07, ! 34: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, ! 35: 0x01, 0x00, 0x03, 0x00 }, /* actl_regs */ ! 36: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff }, /* grdc_regs */ ! 37: }, ! 38: /* index=0x05 vga mode 0x05 */ ! 39: { 40, 24, 8, 0x0800, /* tw, th-1, ch, slength */ ! 40: { 0x09, 0x03, 0x00, 0x02 }, /* sequ_regs */ ! 41: 0x63, /* miscreg */ ! 42: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f, ! 43: 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 44: 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2, ! 45: 0xff }, /* crtc_regs */ ! 46: { 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07, ! 47: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, ! 48: 0x01, 0x00, 0x03, 0x00 }, /* actl_regs */ ! 49: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff }, /* grdc_regs */ ! 50: }, ! 51: /* index=0x06 vga mode 0x06 */ ! 52: { 80, 24, 8, 0x1000, /* tw, th-1, ch, slength */ ! 53: { 0x01, 0x01, 0x00, 0x06 }, /* sequ_regs */ ! 54: 0x63, /* miscreg */ ! 55: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, ! 56: 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 57: 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2, ! 58: 0xff }, /* crtc_regs */ ! 59: { 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, ! 60: 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, ! 61: 0x01, 0x00, 0x01, 0x00 }, /* actl_regs */ ! 62: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0xff }, /* grdc_regs */ ! 63: }, ! 64: /* index=0x07 vga mode 0x07 */ ! 65: { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */ ! 66: { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */ ! 67: 0x66, /* miscreg */ ! 68: { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f, ! 69: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, ! 70: 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3, ! 71: 0xff }, /* crtc_regs */ ! 72: { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ! 73: 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ! 74: 0x0e, 0x00, 0x0f, 0x08 }, /* actl_regs */ ! 75: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff }, /* grdc_regs */ ! 76: }, ! 77: /* index=0x08 no mode defined */ ! 78: {}, ! 79: /* index=0x09 no mode defined */ ! 80: {}, ! 81: /* index=0x0a no mode defined */ ! 82: {}, ! 83: /* index=0x0b no mode defined */ ! 84: {}, ! 85: /* index=0x0c no mode defined */ ! 86: {}, ! 87: /* index=0x0d vga mode 0x0d */ ! 88: { 40, 24, 8, 0x2000, /* tw, th-1, ch, slength */ ! 89: { 0x09, 0x0f, 0x00, 0x06 }, /* sequ_regs */ ! 90: 0x63, /* miscreg */ ! 91: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f, ! 92: 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 93: 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3, ! 94: 0xff }, /* crtc_regs */ ! 95: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, ! 96: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, ! 97: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */ ! 98: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 99: }, ! 100: /* index=0x0e vga mode 0x0e */ ! 101: { 80, 24, 8, 0x4000, /* tw, th-1, ch, slength */ ! 102: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */ ! 103: 0x63, /* miscreg */ ! 104: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, ! 105: 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 106: 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3, ! 107: 0xff }, /* crtc_regs */ ! 108: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, ! 109: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, ! 110: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */ ! 111: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 112: }, ! 113: /* index=0x0f no mode defined */ ! 114: {}, ! 115: /* index=0x10 no mode defined */ ! 116: {}, ! 117: /* index=0x11 vga mode 0x0f */ ! 118: { 80, 24, 14, 0x8000, /* tw, th-1, ch, slength */ ! 119: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */ ! 120: 0xa3, /* miscreg */ ! 121: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, ! 122: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 123: 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3, ! 124: 0xff }, /* crtc_regs */ ! 125: { 0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, ! 126: 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, ! 127: 0x01, 0x00, 0x01, 0x00 }, /* actl_regs */ ! 128: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 129: }, ! 130: /* index=0x12 vga mode 0x10 */ ! 131: { 80, 24, 14, 0x8000, /* tw, th-1, ch, slength */ ! 132: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */ ! 133: 0xa3, /* miscreg */ ! 134: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, ! 135: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 136: 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3, ! 137: 0xff }, /* crtc_regs */ ! 138: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, ! 139: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 140: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */ ! 141: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 142: }, ! 143: /* index=0x13 no mode defined */ ! 144: {}, ! 145: /* index=0x14 no mode defined */ ! 146: {}, ! 147: /* index=0x15 no mode defined */ ! 148: {}, ! 149: /* index=0x16 no mode defined */ ! 150: {}, ! 151: /* index=0x17 vga mode 0x01 */ ! 152: { 40, 24, 16, 0x0800, /* tw, th-1, ch, slength */ ! 153: { 0x08, 0x03, 0x00, 0x02 }, /* sequ_regs */ ! 154: 0x67, /* miscreg */ ! 155: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f, ! 156: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, ! 157: 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3, ! 158: 0xff }, /* crtc_regs */ ! 159: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, ! 160: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 161: 0x0c, 0x00, 0x0f, 0x08 }, /* actl_regs */ ! 162: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff }, /* grdc_regs */ ! 163: }, ! 164: /* index=0x18 vga mode 0x03 */ ! 165: { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */ ! 166: { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */ ! 167: 0x67, /* miscreg */ ! 168: { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f, ! 169: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, ! 170: 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3, ! 171: 0xff }, /* crtc_regs */ ! 172: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, ! 173: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 174: 0x0c, 0x00, 0x0f, 0x08 }, /* actl_regs */ ! 175: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff }, /* grdc_regs */ ! 176: }, ! 177: /* index=0x19 vga mode 0x07 */ ! 178: { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */ ! 179: { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */ ! 180: 0x66, /* miscreg */ ! 181: { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f, ! 182: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, ! 183: 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3, ! 184: 0xff }, /* crtc_regs */ ! 185: { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ! 186: 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ! 187: 0x0e, 0x00, 0x0f, 0x08 }, /* actl_regs */ ! 188: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff }, /* grdc_regs */ ! 189: }, ! 190: /* index=0x1a vga mode 0x11 */ ! 191: { 80, 29, 16, 0x0000, /* tw, th-1, ch, slength */ ! 192: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */ ! 193: 0xe3, /* miscreg */ ! 194: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e, ! 195: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 196: 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3, ! 197: 0xff }, /* crtc_regs */ ! 198: { 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, ! 199: 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, ! 200: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */ ! 201: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 202: }, ! 203: /* index=0x1b vga mode 0x12 */ ! 204: { 80, 29, 16, 0x0000, /* tw, th-1, ch, slength */ ! 205: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */ ! 206: 0xe3, /* miscreg */ ! 207: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e, ! 208: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 209: 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3, ! 210: 0xff }, /* crtc_regs */ ! 211: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, ! 212: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 213: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */ ! 214: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 215: }, ! 216: /* index=0x1c vga mode 0x13 */ ! 217: { 40, 24, 8, 0x0000, /* tw, th-1, ch, slength */ ! 218: { 0x01, 0x0f, 0x00, 0x0e }, /* sequ_regs */ ! 219: 0x63, /* miscreg */ ! 220: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, ! 221: 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 222: 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3, ! 223: 0xff }, /* crtc_regs */ ! 224: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, ! 225: 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, ! 226: 0x41, 0x00, 0x0f, 0x00 }, /* actl_regs */ ! 227: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 228: }, ! 229: /* index=0x1d vga mode 0x6a */ ! 230: { 100, 36, 16, 0x0000, /* tw, th-1, ch, slength */ ! 231: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */ ! 232: 0xe3, /* miscreg */ ! 233: { 0x7f, 0x63, 0x63, 0x83, 0x6b, 0x1b, 0x72, 0xf0, ! 234: 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ! 235: 0x59, 0x8d, 0x57, 0x32, 0x00, 0x57, 0x73, 0xe3, ! 236: 0xff }, /* crtc_regs */ ! 237: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, ! 238: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, ! 239: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */ ! 240: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */ ! 241: }, ! 242: }; ! 243: ! 244: ! 245: /**************************************************************** ! 246: * Palette definitions ! 247: ****************************************************************/ ! 248: ! 249: /* Mono */ ! 250: static u8 palette0[] VAR16 = { ! 251: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, ! 252: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, ! 253: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 254: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 255: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 256: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 257: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, ! 258: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, ! 259: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, ! 260: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, ! 261: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 262: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 263: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 264: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, ! 265: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, ! 266: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f ! 267: }; ! 268: ! 269: static u8 palette1[] VAR16 = { ! 270: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, ! 271: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, ! 272: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, ! 273: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, ! 274: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, ! 275: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, ! 276: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, ! 277: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, ! 278: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, ! 279: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, ! 280: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, ! 281: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, ! 282: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, ! 283: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, ! 284: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, ! 285: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f ! 286: }; ! 287: ! 288: static u8 palette2[] VAR16 = { ! 289: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, ! 290: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x2a,0x00, 0x2a,0x2a,0x2a, ! 291: 0x00,0x00,0x15, 0x00,0x00,0x3f, 0x00,0x2a,0x15, 0x00,0x2a,0x3f, ! 292: 0x2a,0x00,0x15, 0x2a,0x00,0x3f, 0x2a,0x2a,0x15, 0x2a,0x2a,0x3f, ! 293: 0x00,0x15,0x00, 0x00,0x15,0x2a, 0x00,0x3f,0x00, 0x00,0x3f,0x2a, ! 294: 0x2a,0x15,0x00, 0x2a,0x15,0x2a, 0x2a,0x3f,0x00, 0x2a,0x3f,0x2a, ! 295: 0x00,0x15,0x15, 0x00,0x15,0x3f, 0x00,0x3f,0x15, 0x00,0x3f,0x3f, ! 296: 0x2a,0x15,0x15, 0x2a,0x15,0x3f, 0x2a,0x3f,0x15, 0x2a,0x3f,0x3f, ! 297: 0x15,0x00,0x00, 0x15,0x00,0x2a, 0x15,0x2a,0x00, 0x15,0x2a,0x2a, ! 298: 0x3f,0x00,0x00, 0x3f,0x00,0x2a, 0x3f,0x2a,0x00, 0x3f,0x2a,0x2a, ! 299: 0x15,0x00,0x15, 0x15,0x00,0x3f, 0x15,0x2a,0x15, 0x15,0x2a,0x3f, ! 300: 0x3f,0x00,0x15, 0x3f,0x00,0x3f, 0x3f,0x2a,0x15, 0x3f,0x2a,0x3f, ! 301: 0x15,0x15,0x00, 0x15,0x15,0x2a, 0x15,0x3f,0x00, 0x15,0x3f,0x2a, ! 302: 0x3f,0x15,0x00, 0x3f,0x15,0x2a, 0x3f,0x3f,0x00, 0x3f,0x3f,0x2a, ! 303: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, ! 304: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f ! 305: }; ! 306: ! 307: static u8 palette3[] VAR16 = { ! 308: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, ! 309: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, ! 310: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, ! 311: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, ! 312: 0x00,0x00,0x00, 0x05,0x05,0x05, 0x08,0x08,0x08, 0x0b,0x0b,0x0b, ! 313: 0x0e,0x0e,0x0e, 0x11,0x11,0x11, 0x14,0x14,0x14, 0x18,0x18,0x18, ! 314: 0x1c,0x1c,0x1c, 0x20,0x20,0x20, 0x24,0x24,0x24, 0x28,0x28,0x28, ! 315: 0x2d,0x2d,0x2d, 0x32,0x32,0x32, 0x38,0x38,0x38, 0x3f,0x3f,0x3f, ! 316: 0x00,0x00,0x3f, 0x10,0x00,0x3f, 0x1f,0x00,0x3f, 0x2f,0x00,0x3f, ! 317: 0x3f,0x00,0x3f, 0x3f,0x00,0x2f, 0x3f,0x00,0x1f, 0x3f,0x00,0x10, ! 318: 0x3f,0x00,0x00, 0x3f,0x10,0x00, 0x3f,0x1f,0x00, 0x3f,0x2f,0x00, ! 319: 0x3f,0x3f,0x00, 0x2f,0x3f,0x00, 0x1f,0x3f,0x00, 0x10,0x3f,0x00, ! 320: 0x00,0x3f,0x00, 0x00,0x3f,0x10, 0x00,0x3f,0x1f, 0x00,0x3f,0x2f, ! 321: 0x00,0x3f,0x3f, 0x00,0x2f,0x3f, 0x00,0x1f,0x3f, 0x00,0x10,0x3f, ! 322: 0x1f,0x1f,0x3f, 0x27,0x1f,0x3f, 0x2f,0x1f,0x3f, 0x37,0x1f,0x3f, ! 323: 0x3f,0x1f,0x3f, 0x3f,0x1f,0x37, 0x3f,0x1f,0x2f, 0x3f,0x1f,0x27, ! 324: ! 325: 0x3f,0x1f,0x1f, 0x3f,0x27,0x1f, 0x3f,0x2f,0x1f, 0x3f,0x37,0x1f, ! 326: 0x3f,0x3f,0x1f, 0x37,0x3f,0x1f, 0x2f,0x3f,0x1f, 0x27,0x3f,0x1f, ! 327: 0x1f,0x3f,0x1f, 0x1f,0x3f,0x27, 0x1f,0x3f,0x2f, 0x1f,0x3f,0x37, ! 328: 0x1f,0x3f,0x3f, 0x1f,0x37,0x3f, 0x1f,0x2f,0x3f, 0x1f,0x27,0x3f, ! 329: 0x2d,0x2d,0x3f, 0x31,0x2d,0x3f, 0x36,0x2d,0x3f, 0x3a,0x2d,0x3f, ! 330: 0x3f,0x2d,0x3f, 0x3f,0x2d,0x3a, 0x3f,0x2d,0x36, 0x3f,0x2d,0x31, ! 331: 0x3f,0x2d,0x2d, 0x3f,0x31,0x2d, 0x3f,0x36,0x2d, 0x3f,0x3a,0x2d, ! 332: 0x3f,0x3f,0x2d, 0x3a,0x3f,0x2d, 0x36,0x3f,0x2d, 0x31,0x3f,0x2d, ! 333: 0x2d,0x3f,0x2d, 0x2d,0x3f,0x31, 0x2d,0x3f,0x36, 0x2d,0x3f,0x3a, ! 334: 0x2d,0x3f,0x3f, 0x2d,0x3a,0x3f, 0x2d,0x36,0x3f, 0x2d,0x31,0x3f, ! 335: 0x00,0x00,0x1c, 0x07,0x00,0x1c, 0x0e,0x00,0x1c, 0x15,0x00,0x1c, ! 336: 0x1c,0x00,0x1c, 0x1c,0x00,0x15, 0x1c,0x00,0x0e, 0x1c,0x00,0x07, ! 337: 0x1c,0x00,0x00, 0x1c,0x07,0x00, 0x1c,0x0e,0x00, 0x1c,0x15,0x00, ! 338: 0x1c,0x1c,0x00, 0x15,0x1c,0x00, 0x0e,0x1c,0x00, 0x07,0x1c,0x00, ! 339: 0x00,0x1c,0x00, 0x00,0x1c,0x07, 0x00,0x1c,0x0e, 0x00,0x1c,0x15, ! 340: 0x00,0x1c,0x1c, 0x00,0x15,0x1c, 0x00,0x0e,0x1c, 0x00,0x07,0x1c, ! 341: ! 342: 0x0e,0x0e,0x1c, 0x11,0x0e,0x1c, 0x15,0x0e,0x1c, 0x18,0x0e,0x1c, ! 343: 0x1c,0x0e,0x1c, 0x1c,0x0e,0x18, 0x1c,0x0e,0x15, 0x1c,0x0e,0x11, ! 344: 0x1c,0x0e,0x0e, 0x1c,0x11,0x0e, 0x1c,0x15,0x0e, 0x1c,0x18,0x0e, ! 345: 0x1c,0x1c,0x0e, 0x18,0x1c,0x0e, 0x15,0x1c,0x0e, 0x11,0x1c,0x0e, ! 346: 0x0e,0x1c,0x0e, 0x0e,0x1c,0x11, 0x0e,0x1c,0x15, 0x0e,0x1c,0x18, ! 347: 0x0e,0x1c,0x1c, 0x0e,0x18,0x1c, 0x0e,0x15,0x1c, 0x0e,0x11,0x1c, ! 348: 0x14,0x14,0x1c, 0x16,0x14,0x1c, 0x18,0x14,0x1c, 0x1a,0x14,0x1c, ! 349: 0x1c,0x14,0x1c, 0x1c,0x14,0x1a, 0x1c,0x14,0x18, 0x1c,0x14,0x16, ! 350: 0x1c,0x14,0x14, 0x1c,0x16,0x14, 0x1c,0x18,0x14, 0x1c,0x1a,0x14, ! 351: 0x1c,0x1c,0x14, 0x1a,0x1c,0x14, 0x18,0x1c,0x14, 0x16,0x1c,0x14, ! 352: 0x14,0x1c,0x14, 0x14,0x1c,0x16, 0x14,0x1c,0x18, 0x14,0x1c,0x1a, ! 353: 0x14,0x1c,0x1c, 0x14,0x1a,0x1c, 0x14,0x18,0x1c, 0x14,0x16,0x1c, ! 354: 0x00,0x00,0x10, 0x04,0x00,0x10, 0x08,0x00,0x10, 0x0c,0x00,0x10, ! 355: 0x10,0x00,0x10, 0x10,0x00,0x0c, 0x10,0x00,0x08, 0x10,0x00,0x04, ! 356: 0x10,0x00,0x00, 0x10,0x04,0x00, 0x10,0x08,0x00, 0x10,0x0c,0x00, ! 357: 0x10,0x10,0x00, 0x0c,0x10,0x00, 0x08,0x10,0x00, 0x04,0x10,0x00, ! 358: ! 359: 0x00,0x10,0x00, 0x00,0x10,0x04, 0x00,0x10,0x08, 0x00,0x10,0x0c, ! 360: 0x00,0x10,0x10, 0x00,0x0c,0x10, 0x00,0x08,0x10, 0x00,0x04,0x10, ! 361: 0x08,0x08,0x10, 0x0a,0x08,0x10, 0x0c,0x08,0x10, 0x0e,0x08,0x10, ! 362: 0x10,0x08,0x10, 0x10,0x08,0x0e, 0x10,0x08,0x0c, 0x10,0x08,0x0a, ! 363: 0x10,0x08,0x08, 0x10,0x0a,0x08, 0x10,0x0c,0x08, 0x10,0x0e,0x08, ! 364: 0x10,0x10,0x08, 0x0e,0x10,0x08, 0x0c,0x10,0x08, 0x0a,0x10,0x08, ! 365: 0x08,0x10,0x08, 0x08,0x10,0x0a, 0x08,0x10,0x0c, 0x08,0x10,0x0e, ! 366: 0x08,0x10,0x10, 0x08,0x0e,0x10, 0x08,0x0c,0x10, 0x08,0x0a,0x10, ! 367: 0x0b,0x0b,0x10, 0x0c,0x0b,0x10, 0x0d,0x0b,0x10, 0x0f,0x0b,0x10, ! 368: 0x10,0x0b,0x10, 0x10,0x0b,0x0f, 0x10,0x0b,0x0d, 0x10,0x0b,0x0c, ! 369: 0x10,0x0b,0x0b, 0x10,0x0c,0x0b, 0x10,0x0d,0x0b, 0x10,0x0f,0x0b, ! 370: 0x10,0x10,0x0b, 0x0f,0x10,0x0b, 0x0d,0x10,0x0b, 0x0c,0x10,0x0b, ! 371: 0x0b,0x10,0x0b, 0x0b,0x10,0x0c, 0x0b,0x10,0x0d, 0x0b,0x10,0x0f, ! 372: 0x0b,0x10,0x10, 0x0b,0x0f,0x10, 0x0b,0x0d,0x10, 0x0b,0x0c,0x10, ! 373: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, ! 374: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00 ! 375: }; ! 376: ! 377: ! 378: /**************************************************************** ! 379: * Video mode list ! 380: ****************************************************************/ ! 381: ! 382: #define PAL(x) x, sizeof(x) ! 383: #define VPARAM(x) &video_param_table[x] ! 384: ! 385: static struct vgamode_s vga_modes[] VAR16 = { ! 386: //mode vparam model bits sstart pelm dac ! 387: {0x00, VPARAM(0x17), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, ! 388: {0x01, VPARAM(0x17), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, ! 389: {0x02, VPARAM(0x18), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, ! 390: {0x03, VPARAM(0x18), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)}, ! 391: {0x04, VPARAM(0x04), CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)}, ! 392: {0x05, VPARAM(0x05), CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)}, ! 393: {0x06, VPARAM(0x06), CGA, 1, SEG_CTEXT, 0xFF, PAL(palette1)}, ! 394: {0x07, VPARAM(0x07), MTEXT, 4, SEG_MTEXT, 0xFF, PAL(palette0)}, ! 395: {0x0D, VPARAM(0x0d), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)}, ! 396: {0x0E, VPARAM(0x0e), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)}, ! 397: {0x0F, VPARAM(0x11), PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette0)}, ! 398: {0x10, VPARAM(0x12), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, ! 399: {0x11, VPARAM(0x1a), PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette2)}, ! 400: {0x12, VPARAM(0x1b), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, ! 401: {0x13, VPARAM(0x1c), LINEAR8, 8, SEG_GRAPH, 0xFF, PAL(palette3)}, ! 402: {0x6A, VPARAM(0x1d), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)}, ! 403: }; ! 404: ! 405: struct vgamode_s * ! 406: find_vga_entry(u8 mode) ! 407: { ! 408: int i; ! 409: for (i = 0; i < ARRAY_SIZE(vga_modes); i++) { ! 410: struct vgamode_s *vmode_g = &vga_modes[i]; ! 411: if (GET_GLOBAL(vmode_g->svgamode) == mode) ! 412: return vmode_g; ! 413: } ! 414: return NULL; ! 415: } ! 416: ! 417: u16 video_save_pointer_table[14] VAR16; ! 418: ! 419: ! 420: /**************************************************************** ! 421: * Static functionality table ! 422: ****************************************************************/ ! 423: ! 424: u8 static_functionality[0x10] VAR16 = { ! 425: /* 0 */ 0xff, // All modes supported #1 ! 426: /* 1 */ 0xe0, // All modes supported #2 ! 427: /* 2 */ 0x0f, // All modes supported #3 ! 428: /* 3 */ 0x00, 0x00, 0x00, 0x00, // reserved ! 429: /* 7 */ 0x07, // 200, 350, 400 scan lines ! 430: /* 8 */ 0x02, // mamimum number of visible charsets in text mode ! 431: /* 9 */ 0x08, // total number of charset blocks in text mode ! 432: /* a */ 0xe7, // Change to add new functions ! 433: /* b */ 0x0c, // Change to add new functions ! 434: /* c */ 0x00, // reserved ! 435: /* d */ 0x00, // reserved ! 436: /* e */ 0x00, // Change to add new functions ! 437: /* f */ 0x00 // reserved ! 438: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.