Annotation of ntddk/src/video/miniport/cirrus/modeset.h, revision 1.1.1.1

1.1       root        1: /*++
                      2: 
                      3: Copyright (c) 1992  Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     Modeset.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     This module contains all the global data used by the Cirrus Logic
                     12:    CL-6410 and CL-6420 driver.
                     13: 
                     14: Environment:
                     15: 
                     16:     Kernel mode
                     17: 
                     18: Revision History:
                     19: 
                     20: --*/
                     21: //---------------------------------------------------------------------------
                     22: //
                     23: // only one banking variable must be defined
                     24: //
                     25: #if TWO_32K_BANKS
                     26: #if ONE_64K_BANK
                     27: #error !!ERROR: two types of banking defined!
                     28: #endif
                     29: #elif ONE_64K_BANK
                     30: #else
                     31: #error !!ERROR: banking type must be defined!
                     32: #endif
                     33: 
                     34: //---------------------------------------------------------------------------
                     35: 
                     36: #define INT10_MODE_SET
                     37: 
                     38: #ifndef INT10_MODE_SET
                     39: #error !!ERROR: int10_mode_set not defined!
                     40: #endif
                     41: 
                     42: #include "cmdcnst.h"
                     43: 
                     44: //---------------------------------------------------------------------------
                     45: //
                     46: //        The actual register values for the supported modes are in chipset-specific
                     47: //        include files:
                     48: //
                     49: //                mode64xx.h has values for CL6410 and CL6420
                     50: //                mode542x.h has values for CL5422, CL5424, and CL5426
                     51: //
                     52: #include "mode6410.h"
                     53: #include "mode6420.h"
                     54: #include "mode542x.h"
                     55: 
                     56: USHORT MODESET_1K_WIDE[] = {
                     57:     OW,                             // stretch scans to 1k
                     58:     CRTC_ADDRESS_PORT_COLOR,
                     59:     0x8013,
                     60: 
                     61:     EOD
                     62: };
                     63: 
                     64: //---------------------------------------------------------------------------
                     65: //
                     66: // Memory map table -
                     67: //
                     68: // These memory maps are used to save and restore the physical video buffer.
                     69: //
                     70: 
                     71: //
                     72: // Memory map table definition
                     73: //
                     74: 
                     75: typedef struct {
                     76:     ULONG   MaxSize;        // Maximum addressable size of memory
                     77:     ULONG   Start;          // Start address of display memory
                     78: } MEMORYMAPS;
                     79: 
                     80: MEMORYMAPS MemoryMaps[] = {
                     81: 
                     82: //               length      start
                     83: //               ------      -----
                     84:     {           0x08000,    0xB0000},   // all mono text modes (7)
                     85:     {           0x08000,    0xB8000},   // all color text modes (0, 1, 2, 3,
                     86:     {           0x20000,    0xA0000},   // all VGA graphics modes
                     87: };
                     88: 
                     89: //
                     90: // Video mode table - contains information and commands for initializing each
                     91: // mode. These entries must correspond with those in VIDEO_MODE_VGA. The first
                     92: // entry is commented; the rest follow the same format, but are not so
                     93: // heavily commented.
                     94: //
                     95: 
                     96: VIDEOMODE ModesVGA[] = {
                     97: 
                     98: // Mode index 0
                     99: // Color text mode 3, 720x400, 9x16 char cell (VGA).
                    100: //
                    101: {
                    102:   VIDEO_MODE_COLOR,  // flags that this mode is a color mode, but not graphics
                    103:   4,                 // four planes
                    104:   1,                 // one bit of colour per plane
                    105:   80, 25,            // 80x25 text resolution
                    106:   720, 400,          // 720x400 pixels on screen
                    107:   160, 0x10000,      // 160 bytes per scan line, 64K of CPU-addressable bitmap
                    108:   0, 0,              // only support one frequency, non-interlaced
                    109:   0,                 // montype is 'dont care' for text modes
                    110:   NoBanking,         // no banking supported or needed in this mode
                    111:   MemMap_CGA,        // the memory mapping is the standard CGA memory mapping
                    112:                      //  of 32K at B8000
                    113:   CL6410 | CL6420 | CL542x,
                    114:   crt | panel,
                    115:   FALSE,              // ModeValid default is always off
                    116:   { 3,3,3},          // int10 BIOS modes
                    117:   { CL6410_80x25Text_crt, CL6410_80x25Text_panel,
                    118:    CL6420_80x25Text_crt, CL6420_80x25Text_panel,
                    119:    CL542x_80x25Text, 0 },
                    120: },
                    121: 
                    122: //
                    123: // Mode index 1.
                    124: // Color text mode 3, 640x350, 8x14 char cell (EGA).
                    125: //
                    126: {  VIDEO_MODE_COLOR,  // flags that this mode is a color mode, but not graphics
                    127:   4,                 // four planes
                    128:   1,                 // one bit of colour per plane
                    129:   80, 25,            // 80x25 text resolution
                    130:   640, 350,          // 640x350 pixels on screen
                    131:   160, 0x10000,      // 160 bytes per scan line, 64K of CPU-addressable bitmap
                    132:   0, 0,              // only support one frequency, non-interlaced
                    133:   0,                 // montype is 'dont care' for text modes
                    134:   NoBanking,         // no banking supported or needed in this mode
                    135:   MemMap_CGA,        // the memory mapping is the standard CGA memory mapping
                    136:                      //  of 32K at B8000
                    137:    CL6410 | CL6420 | CL542x,
                    138:    crt | panel,
                    139:    FALSE,              // ModeValid default is always off
                    140:   { 3,3,3},             // int10 BIOS modes
                    141:    { CL6410_80x25_14_Text_crt, CL6410_80x25_14_Text_panel,
                    142:      CL6420_80x25_14_Text_crt, CL6420_80x25_14_Text_panel,
                    143:      CL542x_80x25_14_Text, 0 },
                    144: },
                    145: //
                    146: //
                    147: // Mode index 2
                    148: // Standard VGA Color graphics mode 0x12, 640x480 16 colors.
                    149: //
                    150: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 80, 30,
                    151:   640, 480, 80, 0x10000, 
                    152:   60, 0,              // 60hz, non-interlaced
                    153:   3,                  // montype 
                    154:   NoBanking, MemMap_VGA,
                    155:   CL6410 | CL6420 | CL542x,
                    156:   crt | panel,
                    157:   FALSE,                      // ModeValid default is always off
                    158:   { 0x12,0x12,0x12},          // int10 BIOS modes
                    159:   { CL6410_640x480_crt, CL6410_640x480_panel,
                    160:    CL6420_640x480_crt, CL6420_640x480_panel,
                    161:    CL542x_640x480, 0 },
                    162: },
                    163: 
                    164: // Mode index 2b
                    165: // Standard VGA Color graphics mode 0x12, 640x480 16 colors.
                    166: //
                    167: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 80, 30,
                    168:   640, 480, 80, 0x10000, 
                    169:   72, 0,              // 72hz, non-interlaced
                    170:   4,                  // montype 
                    171:   NoBanking, MemMap_VGA,
                    172:   CL542x,
                    173:   crt,
                    174:   FALSE,                      // ModeValid default is always off
                    175:   { 0,0,0x12},                // int10 BIOS modes
                    176:   { NULL, NULL,
                    177:    NULL, NULL,
                    178:    CL542x_640x480, 0 },
                    179: },
                    180: 
                    181: 
                    182: //
                    183: // Beginning of SVGA modes
                    184: //
                    185: 
                    186: //
                    187: // Mode index 3
                    188: // 800x600 16 colors.
                    189: //
                    190: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 100, 37,
                    191:   800, 600, 100, 0x10000, 
                    192:   56, 0,              // 56hz, non-interlaced
                    193:   3,                  // montype 
                    194:   NoBanking, MemMap_VGA,
                    195:   CL6410 | CL6420 | CL542x,
                    196:   crt,
                    197:   FALSE,                   // ModeValid default is always off
                    198:   { 0x6a,0x6a,0x6a},       // int10 BIOS modes
                    199:   { CL6410_800x600_crt, NULL,
                    200:    CL6420_800x600_crt, NULL,
                    201:    CL542x_800x600, 0 },
                    202: },
                    203: 
                    204: //
                    205: // Mode index 3b
                    206: // 800x600 16 colors.
                    207: //
                    208: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 100, 37,
                    209:   800, 600, 100, 0x10000, 
                    210:   60, 0,              // 60hz, non-interlaced
                    211:   4,                  // montype 
                    212:   NoBanking, MemMap_VGA,
                    213:   CL6420 | CL542x,
                    214:   crt,
                    215:   FALSE,                   // ModeValid default is always off
                    216:   { 0,0x6a,0x6a},          // int10 BIOS modes
                    217:   { NULL, NULL,
                    218:    CL6420_800x600_crt, NULL,
                    219:    CL542x_800x600, 0 },
                    220: },
                    221: 
                    222: //
                    223: // Mode index 3c
                    224: // 800x600 16 colors.
                    225: //
                    226: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 100, 37,
                    227:   800, 600, 100, 0x10000, 
                    228:   72, 0,              // 72hz, non-interlaced
                    229:   5,                  // montype 
                    230:   NoBanking, MemMap_VGA,
                    231:   CL542x,
                    232:   crt,
                    233:   FALSE,                   // ModeValid default is always off
                    234:   { 0,0,0x6a},             // int10 BIOS modes
                    235:   { NULL, NULL,
                    236:     NULL, NULL,
                    237:     CL542x_800x600, 0 },
                    238: },
                    239: 
                    240: //
                    241: // Mode index 4
                    242: // 1024x768 non-interlaced 16 colors.
                    243: // Assumes 512K.
                    244: //
                    245: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 128, 48,
                    246:   1024, 768, 128, 0x20000, 
                    247:   60, 0,              // 60hz, non-interlaced
                    248:   5,                  // montype 
                    249:   NormalBanking, MemMap_VGA,
                    250:   CL542x,
                    251:   crt,
                    252:   FALSE,                // ModeValid default is always off
                    253:   { 0,0,0x5d},          // int10 BIOS modes
                    254:   { NULL, NULL,
                    255:     NULL, NULL,
                    256:     CL542x_1024x768, 0 },
                    257: },
                    258: 
                    259: //
                    260: // Mode index 4b
                    261: // 1024x768 non-interlaced 16 colors.
                    262: // Assumes 512K.
                    263: //
                    264: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 128, 48,
                    265:   1024, 768, 128, 0x20000, 
                    266:   70, 0,              // 70hz, non-interlaced
                    267:   6,                  // montype 
                    268:   NormalBanking, MemMap_VGA,
                    269:   CL542x,
                    270:   crt,
                    271:   FALSE,                // ModeValid default is always off
                    272:   { 0,0,0x5d},          // int10 BIOS modes
                    273:   { NULL, NULL,
                    274:     NULL, NULL,
                    275:    CL542x_1024x768, 0 },
                    276: },
                    277: 
                    278: //
                    279: // Mode index 4c
                    280: // 1024x768 non-interlaced 16 colors.
                    281: // Assumes 512K.
                    282: //
                    283: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 128, 48,
                    284:   1024, 768, 128, 0x20000, 
                    285:   72, 0,              // 72hz, non-interlaced
                    286:   7,                  // montype 
                    287:   NormalBanking, MemMap_VGA,
                    288:   CL542x,
                    289:   crt,
                    290:   FALSE,                // ModeValid default is always off
                    291:   { 0,0,0x5d},          // int10 BIOS modes
                    292:   { NULL, NULL,
                    293:     NULL, NULL,
                    294:     CL542x_1024x768, 0 },
                    295: },
                    296: 
                    297: //
                    298: // Mode index 4d
                    299: // 1024x768 interlaced 16 colors.
                    300: // Assumes 512K.
                    301: //
                    302: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 128, 48,
                    303:   1024, 768, 128, 0x20000, 
                    304:   45, 1,              // 45hz, interlaced
                    305:   4,                  // montype 
                    306:   NormalBanking, MemMap_VGA,
                    307:   CL6420 | CL542x,
                    308:   crt,
                    309:   FALSE,                // ModeValid default is always off
                    310:   { 0,0x37,0x5d},       // int10 BIOS modes
                    311:   { NULL, NULL,
                    312:    CL6420_1024x768_crt, NULL,
                    313:    CL542x_1024x768, 0 },
                    314: },
                    315: 
                    316: //
                    317: // Mode index 5
                    318: // 1280x1024 interlaced 16 colors.
                    319: // Assumes 1meg required.
                    320: //
                    321: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 4, 1, 128, 48,
                    322:   1280, 1024, 160, 0x30000, 
                    323:   45, 1,              // 45Hz, interlaced
                    324:   5,                  // montype 
                    325:   NormalBanking, MemMap_VGA,
                    326:   CL542x,
                    327:   crt,
                    328:   FALSE,                // ModeValid default is always off
                    329:   { 0,0,0x6c},          // int10 BIOS modes
                    330:   { NULL, NULL,
                    331:     NULL, NULL,
                    332:     CL542x_1280x1024_I, 0},
                    333: },
                    334: 
                    335: //
                    336: //
                    337: // Mode index 6
                    338: // VGA Color graphics,        640x480 256 colors. 1K scan line
                    339: //
                    340: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 80, 30,
                    341:   640, 480, 1024, 0x80000, 
                    342:   60, 0,              // 60hz, non-interlaced
                    343:   3,                  // montype 
                    344:   PlanarHCBanking, MemMap_VGA,
                    345:   CL6420 | CL542x,
                    346:   crt | panel,
                    347:   FALSE,                // ModeValid default is always off
                    348:   { 0,0x2e,0x5f},       // int10 BIOS modes
                    349:   { NULL, NULL,
                    350:     CL6420_640x480_256color_crt, CL6420_640x480_256color_panel,
                    351:     CL542x_640x480_256, MODESET_1K_WIDE },
                    352: },
                    353: 
                    354: //
                    355: //
                    356: // Mode index 6b
                    357: // VGA Color graphics,        640x480 256 colors. 1K scan line
                    358: //
                    359: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 80, 30,
                    360:   640, 480, 1024, 0x80000, 
                    361:   72, 0,              // 72hz, non-interlaced
                    362:   4,                  // montype 
                    363:   PlanarHCBanking, MemMap_VGA,
                    364:   CL542x,
                    365:   crt,
                    366:   FALSE,                // ModeValid default is always off
                    367:   { 0,0,0x5f},          // int10 BIOS modes
                    368:   { NULL, NULL,
                    369:     NULL, NULL,
                    370:     CL542x_640x480_256, MODESET_1K_WIDE },
                    371: },
                    372: 
                    373: //
                    374: // Mode index 7
                    375: // 800x600 256 colors. 1K scan line requires 1 MEG
                    376: //
                    377: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 100, 37,
                    378:   800, 600, 1024, 0x100000, 
                    379:   56, 0,              // 56hz, non-interlaced
                    380:   3,                  // montype 
                    381:   PlanarHCBanking, MemMap_VGA,
                    382:   CL6420 | CL542x,
                    383:   crt,
                    384:   FALSE,                   // ModeValid default is always off
                    385:   { 0,0x30,0x5c},          // int10 BIOS modes
                    386:   { NULL, NULL,
                    387:     CL6420_800x600_256color_crt, NULL,
                    388:     CL542x_800x600_256, MODESET_1K_WIDE },
                    389: },
                    390: 
                    391: //
                    392: // Mode index 7b
                    393: // 800x600 256 colors. 1K scan line requires 1 MEG
                    394: //
                    395: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 100, 37,
                    396:   800, 600, 1024, 0x100000, 
                    397:   60, 0,              // 60hz, non-interlaced
                    398:   4,                  // montype 
                    399:   PlanarHCBanking, MemMap_VGA,
                    400:   CL6420 | CL542x,
                    401:   crt,
                    402:   FALSE,                   // ModeValid default is always off
                    403:   { 0,0x30,0x5c},          // int10 BIOS modes
                    404:   { NULL, NULL,
                    405:     CL6420_800x600_256color_crt, NULL,
                    406:     CL542x_800x600_256, MODESET_1K_WIDE },
                    407: },
                    408: 
                    409: //
                    410: // Mode index 7c
                    411: // 800x600 256 colors. 1K scan line requires 1 MEG
                    412: //
                    413: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 100, 37,
                    414:   800, 600, 1024, 0x100000, 
                    415:   72, 0,              // 72hz, non-interlaced
                    416:   5,                  // montype 
                    417:   PlanarHCBanking, MemMap_VGA,
                    418:   CL542x,
                    419:   crt,
                    420:   FALSE,                   // ModeValid default is always off
                    421:   { 0,0,0x5c},             // int10 BIOS modes
                    422:   { NULL, NULL,
                    423:     NULL, NULL,
                    424:     CL542x_800x600_256, MODESET_1K_WIDE },
                    425: },
                    426: //
                    427: // Mode index 8
                    428: // 1024x768 non-interlaced 256 colors.
                    429: // Assumes 1Meg.
                    430: //
                    431: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 128, 48,
                    432:   1024, 768, 1024, 0x100000, 
                    433:   60, 0,              // 60hz, non-interlaced
                    434:   5,                  // montype 
                    435:   PlanarHCBanking, MemMap_VGA,
                    436:   CL542x,
                    437:   crt,
                    438:   FALSE,                // ModeValid default is always off
                    439:   { 0,0,0x60},          // int10 BIOS modes
                    440:   { NULL, NULL,
                    441:     NULL, NULL,
                    442:     CL542x_1024x768_256, 0 },
                    443: },
                    444: 
                    445: //
                    446: // Mode index 8b
                    447: // 1024x768 non-interlaced 256 colors.
                    448: // Assumes 1Meg.
                    449: //
                    450: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 128, 48,
                    451:   1024, 768, 1024, 0x100000, 
                    452:   70, 0,              // 70hz, non-interlaced
                    453:   6,                  // montype 
                    454:   PlanarHCBanking, MemMap_VGA,
                    455:   CL542x,
                    456:   crt,
                    457:   FALSE,                // ModeValid default is always off
                    458:   { 0,0,0x60},          // int10 BIOS modes
                    459:   { NULL, NULL,
                    460:     NULL, NULL,
                    461:     CL542x_1024x768_256, 0 },
                    462: },
                    463: 
                    464: //
                    465: // Mode index 8
                    466: // 1024x768 non-interlaced 256 colors.
                    467: // Assumes 1Meg.
                    468: //
                    469: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 128, 48,
                    470:   1024, 768, 1024, 0x100000, 
                    471:   72, 0,              // 72hz, non-interlaced
                    472:   7,                  // montype 
                    473:   PlanarHCBanking, MemMap_VGA,
                    474:   CL542x,
                    475:   crt,
                    476:   FALSE,                // ModeValid default is always off
                    477:   { 0,0,0x60},          // int10 BIOS modes
                    478:   { NULL, NULL,
                    479:     NULL, NULL,
                    480:     CL542x_1024x768_256, 0 },
                    481: },
                    482: 
                    483: //
                    484: // Mode index 8
                    485: // 1024x768 interlaced 256 colors.
                    486: // Assumes 1Meg.
                    487: //
                    488: { VIDEO_MODE_COLOR+VIDEO_MODE_GRAPHICS, 1, 8, 128, 48,
                    489:   1024, 768, 1024, 0x100000, 
                    490:   45, 1,              // 45hz, interlaced
                    491:   4,                  // montype 
                    492:   PlanarHCBanking, MemMap_VGA,
                    493:   CL6420 | CL542x,
                    494:   crt,
                    495:   FALSE,                // ModeValid default is always off
                    496:   { 0,0x38,0x60},       // int10 BIOS modes
                    497:   { NULL, NULL,
                    498:     CL6420_1024x768_256color_crt, NULL,
                    499:     CL542x_1024x768_256, 0 },
                    500: },
                    501: 
                    502: };
                    503: 
                    504: 
                    505: ULONG NumVideoModes = sizeof(ModesVGA) / sizeof(VIDEOMODE);
                    506: 
                    507: 
                    508: //
                    509: //
                    510: // Data used to set the Graphics and Sequence Controllers to put the
                    511: // VGA into a planar state at A0000 for 64K, with plane 2 enabled for
                    512: // reads and writes, so that a font can be loaded, and to disable that mode.
                    513: //
                    514: 
                    515: // Settings to enable planar mode with plane 2 enabled.
                    516: //
                    517: 
                    518: USHORT EnableA000Data[] = {
                    519:     OWM,
                    520:     SEQ_ADDRESS_PORT,
                    521:     1,
                    522:     0x0100,
                    523: 
                    524:     OWM,
                    525:     GRAPH_ADDRESS_PORT,
                    526:     3,
                    527:     0x0204,     // Read Map = plane 2
                    528:     0x0005, // Graphics Mode = read mode 0, write mode 0
                    529:     0x0406, // Graphics Miscellaneous register = A0000 for 64K, not odd/even,
                    530:             //  graphics mode
                    531:     OWM,
                    532:     SEQ_ADDRESS_PORT,
                    533:     3,
                    534:     0x0402, // Map Mask = write to plane 2 only
                    535:     0x0404, // Memory Mode = not odd/even, not full memory, graphics mode
                    536:     0x0300,  // end sync reset
                    537:     EOD
                    538: };
                    539: 
                    540: //
                    541: // Settings to disable the font-loading planar mode.
                    542: //
                    543: 
                    544: USHORT DisableA000Color[] = {
                    545:     OWM,
                    546:     SEQ_ADDRESS_PORT,
                    547:     1,
                    548:     0x0100,
                    549: 
                    550:     OWM,
                    551:     GRAPH_ADDRESS_PORT,
                    552:     3,
                    553:     0x0004, 0x1005, 0x0E06,
                    554: 
                    555:     OWM,
                    556:     SEQ_ADDRESS_PORT,
                    557:     3,
                    558:     0x0302, 0x0204, 0x0300,  // end sync reset
                    559:     EOD
                    560: 
                    561: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.