Annotation of Examples/DriverKit/S3/S3_reloc.tproj/S3_928_Modes.c, revision 1.1

1.1     ! root        1: /* CONFIDENTIAL
        !             2:  * Copyright (c) 1993 by NeXT Computer, Inc as an unpublished work.
        !             3:  * All rights reserved.
        !             4:  *
        !             5:  * S3_928_Modes.c -- Modes for the S3 928.
        !             6:  *
        !             7:  * Author:  Derek B Clegg      21 May 1993
        !             8:  */
        !             9: #import "S3Modes.h"
        !            10: 
        !            11: /* Tables of register values for the supported modes. */
        !            12: 
        !            13: /* S3 928 800 x 600 x 15 (S3 mode 0x114 or 0x214).
        !            14:  */
        !            15: static const S3Mode S3_928_800x600x15 = {
        !            16:     "S3_928[800 x 600 x 15]", S3_928, TWO_MEGABYTES,
        !            17: 
        !            18:     /* Mode control. */
        !            19:     { 60, 0x02 },
        !            20: 
        !            21:     /* Advanced function control register (0x4AE8). */
        !            22:     0x07,
        !            23: 
        !            24:     /* Extra CRTC registers. */
        !            25:     {
        !            26:        0x31, 0x8D, 0x32, 0x10, 0x33, 0x20, 0x34, 0x00, 0x35, 0x00,
        !            27:        0x3A, 0x95, 0x3B, 0xF8, 0x3C, 0x19, 0x40, 0x50, 0x43, 0x00,
        !            28:        0x50, 0x10, 0x51, 0x50, 0x53, 0x00, 0x54, 0x00, 0x56, 0x00,
        !            29:        0x57, 0x00, 0x5C, 0x32, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00,
        !            30:        0x60, 0x2F, 0x61, 0x81, 0x62, 0x92, 0x63, 0x92,
        !            31:     },
        !            32: 
        !            33:     /* Standard VGA registers. */
        !            34:     {
        !            35:        0xEF,
        !            36:        0x00,
        !            37:        { 0x01, 0x01, 0x0F, 0x00, 0x0E },
        !            38:        {
        !            39:            0x3D, 0x31, 0x32, 0x82, 0x35, 0x1D, 0x74, 0xF0, 0x00, 0x60,
        !            40:            0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x58, 0x8C, 0x57, 0x00,
        !            41:            0x00, 0x57, 0x73, 0xE3, 0xFF,
        !            42:        },
        !            43:        {
        !            44:            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39,
        !            45:            0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x01, 0x00, 0x0F, 0x00,
        !            46:        },
        !            47:        {
        !            48:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF,
        !            49:        },
        !            50:     }
        !            51: };
        !            52: 
        !            53: /* S3 928 800 x 600 x 24 (S3 mode 0x221).
        !            54:  */
        !            55: static const S3Mode S3_928_800x600x24 = {
        !            56:     "S3_928[800 x 600 x 24]", S3_928, THREE_MEGABYTES,
        !            57: 
        !            58:     /* Mode control. */
        !            59:     { 60, 0x02 },
        !            60: 
        !            61:     /* Advanced function control register (0x4AE8). */
        !            62:     0x07,
        !            63: 
        !            64:     /* Extra CRTC registers. */
        !            65:     {
        !            66:        0x31, 0x8D, 0x32, 0x10, 0x33, 0x20, 0x34, 0x00, 0x35, 0x00,
        !            67:        0x3A, 0x95, 0x3B, 0x7C, 0x3C, 0x32, 0x40, 0x50, 0x43, 0x00,
        !            68:        0x50, 0x30, 0x51, 0x60, 0x53, 0x20, 0x54, 0x00, 0x56, 0x00,
        !            69:        0x57, 0x00, 0x5C, 0x32, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00,
        !            70:        0x60, 0x2F, 0x61, 0x81, 0x62, 0x92, 0x63, 0x92,
        !            71:     },
        !            72: 
        !            73:     /* Standard VGA registers. */
        !            74:     {
        !            75:        0xEF,
        !            76:        0x00,
        !            77:        { 0x01, 0x01, 0x0F, 0x00, 0x0E },
        !            78:        {
        !            79:            /* I had to add the `+1' to make this mode work. */
        !            80:            0x7F, 0x63 + 1, 0x64 + 1, 0x82, 0x6A, 0x1A, 0x72, 0xF0, 0x00, 0x60,
        !            81:            0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x59, 0x8D, 0x57, 0x00,
        !            82:            0x00, 0x59, 0x72, 0xE3, 0xFF,
        !            83:        },
        !            84:        {
        !            85:            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39,
        !            86:            0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x01, 0x00, 0x0F, 0x00,
        !            87:        },
        !            88:        {
        !            89:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF,
        !            90:        },
        !            91:     }
        !            92: };
        !            93: 
        !            94: /* S3 928 1024 x 768 x 8 (S3 mode 0x205).
        !            95:  */
        !            96: static const S3Mode S3_928_1024x768x8 = {
        !            97:     "S3_928[1024 x 768 x 8]", S3_928, ONE_MEGABYTE,
        !            98: 
        !            99:     /* Mode control. */
        !           100:     { 60, 0x0D, 70, 0x0E, 72, 0x05 },
        !           101: 
        !           102:     /* Advanced function control register (0x4AE8). */
        !           103:     0x07,
        !           104: 
        !           105:     /* Extra CRTC registers. */
        !           106:     {
        !           107:        0x31, 0x8D, 0x32, 0x10, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00,
        !           108:        0x3A, 0x95, 0x3B, 0x9D, 0x3C, 0x9F, 0x40, 0x51, 0x43, 0x00,
        !           109:        0x50, 0x00, 0x51, 0x00, 0x53, 0x00, 0x54, 0x08, 0x56, 0x00,
        !           110:        0x57, 0x00, 0x5C, 0x0D, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00,
        !           111:        0x60, 0x1F, 0x61, 0x81, 0x62, 0x00, 0x63, 0x00,
        !           112:     },
        !           113: 
        !           114:     /* Standard VGA registers. */
        !           115:     {
        !           116:        0x2F,
        !           117:        0x00,
        !           118:        { 0x01, 0x01, 0x0F, 0x00, 0x0E },
        !           119:        {
        !           120:            0xA3, 0x7F, 0x80, 0x86, 0x84, 0x95, 0x25, 0xF5, 0x00, 0x60,
        !           121:            0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x87, 0xFF, 0x80,
        !           122:            0x60, 0xFF, 0x21, 0xEB, 0xFF,
        !           123:        },
        !           124:        {
        !           125:            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39,
        !           126:            0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x01, 0x00, 0x0F, 0x00,
        !           127:        },
        !           128:        {
        !           129:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF,
        !           130:        },
        !           131:     }
        !           132: };
        !           133: 
        !           134: /* S3 928 1024 x 768 x 15 (S3 mode 0x117).
        !           135:  */
        !           136: static const S3Mode S3_928_1024x768x15 = {
        !           137:     "S3_928[1024 x 768 x 15]", S3_928, TWO_MEGABYTES,
        !           138: 
        !           139:     /* Mode control. */
        !           140:     { 60, 0x0D, 72, 0x05 },
        !           141: 
        !           142:     /* Advanced function control register (0x4AE8). */
        !           143:     0x07,
        !           144: 
        !           145:     /* Extra CRTC registers. */
        !           146:     {
        !           147:        0x31, 0x8D, 0x32, 0x10, 0x33, 0x20, 0x34, 0x00, 0x35, 0x00,
        !           148:        0x3A, 0x95, 0x3B, 0x4B, 0x3C, 0x20, 0x40, 0x50, 0x43, 0x00,
        !           149:        0x50, 0x10, 0x51, 0x50, 0x53, 0x00, 0x54, 0x00, 0x56, 0x00,
        !           150:        0x57, 0x00, 0x5C, 0x3D, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00,
        !           151:        0x60, 0x2F, 0x61, 0x82, 0x62, 0x00, 0x63, 0x00,
        !           152:     },
        !           153: 
        !           154:     /* Standard VGA registers. */
        !           155:     {
        !           156:        0xEF,
        !           157:        0x00,
        !           158:        { 0x01, 0x01, 0x0F, 0x00, 0x0E },
        !           159:        {
        !           160:            0x4F, 0x3F, 0x40, 0x12, 0x42, 0x0A, 0x24, 0xF5, 0x00, 0x60,
        !           161:            0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x88, 0xFF, 0x00,
        !           162:            0x00, 0xFF, 0x21, 0xE3, 0xFF,
        !           163:        },
        !           164:        {
        !           165:            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39,
        !           166:            0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x01, 0x00, 0x0F, 0x00,
        !           167:        },
        !           168:        {
        !           169:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF,
        !           170:        },
        !           171:     }
        !           172: };
        !           173: 
        !           174: /* S3 928 1024 x 768 x 24 (S3 mode 222).
        !           175:  * This mode doesn't quite work yet.
        !           176:  */
        !           177: static const S3Mode S3_928_1024x768x24 = {
        !           178:     "S3_928[1024 x 768 x 24]", S3_928, THREE_MEGABYTES,
        !           179: 
        !           180:     /* Mode control. */
        !           181:     { 60, 0x0D, 72, 0x05 },
        !           182: 
        !           183:     /* Advanced function control register (0x4AE8). */
        !           184:     0x07,
        !           185: 
        !           186:     /* Extra CRTC registers. */
        !           187:     {
        !           188:        0x31, 0x8D, 0x32, 0x10, 0x33, 0x20, 0x34, 0x00, 0x35, 0x00,
        !           189:        0x3A, 0x95, 0x3B, 0x9D, 0x3C, 0x40, 0x40, 0x50, 0x43, 0x00,
        !           190:        0x50, 0x30, 0x51, 0x60, 0x53, 0x20, 0x54, 0x08, 0x56, 0x00,
        !           191:        0x57, 0x00, 0x5C, 0x3D, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00,
        !           192:        0x60, 0x1F, 0x61, 0x81, 0x62, 0x00, 0x63, 0x00,
        !           193:     },
        !           194: 
        !           195:     /* Standard VGA registers. */
        !           196:     {
        !           197:        0x2F,
        !           198:        0x00,
        !           199:        { 0x01, 0x01, 0x0F, 0x00, 0x0E },
        !           200:        {
        !           201:            0xA3, 0x7F, 0x80, 0x86, 0x84, 0x95, 0x25, 0xF5, 0x00, 0x60,
        !           202:            0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x87, 0xFF, 0x00,
        !           203:            0x60, 0xFF, 0x21, 0xEB, 0xFF,
        !           204:        },
        !           205:        {
        !           206:            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39,
        !           207:            0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x01, 0x00, 0x0F, 0x00,
        !           208:        },
        !           209:        {
        !           210:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF,
        !           211:        },
        !           212:     }
        !           213: };
        !           214: 
        !           215: /* S3 928 1280 x 1024 x 8 (S3 mode 0x107).
        !           216:  */
        !           217: static const S3Mode S3_928_1280x1024x8 = {
        !           218:     "S3_928[1280 x 1024 x 8]", S3_928, TWO_MEGABYTES,
        !           219: 
        !           220:     /* Mode control. */
        !           221:     { 60, 0x0C },
        !           222: 
        !           223:     /* Advanced function control register (0x4AE8). */
        !           224:     0x07,
        !           225: 
        !           226:     /* Extra CRTC registers. */
        !           227:     {
        !           228:        0x31, 0x8D, 0x32, 0x10, 0x33, 0x20, 0x34, 0x00, 0x35, 0x00,
        !           229:        0x3A, 0x95, 0x3B, 0xBB, 0x3C, 0x14, 0x40, 0x50, 0x43, 0x00,
        !           230:        0x50, 0xC0, 0x51, 0x00, 0x53, 0x00, 0x54, 0x00, 0x56, 0x00,
        !           231:        0x57, 0x00, 0x5C, 0x3C, 0x5D, 0x00, 0x5E, 0x55, 0x5F, 0x00,
        !           232:        0x60, 0x2F, 0x61, 0x81, 0x62, 0x40, 0x63, 0x40,
        !           233:     },
        !           234: 
        !           235:     /* Standard VGA registers. */
        !           236:     {
        !           237:        0x2F,
        !           238:        0x00,
        !           239:        { 0x01, 0x01, 0x0F, 0x00, 0x0E },
        !           240:        {
        !           241:            /* I had to add the `-0xE' to make this work. */
        !           242:            0x30, 0x27, 0x27, 0x94, 0x29, 0x8E - 0xE, 0x37, 0x52, 0x00, 0x60,
        !           243:            0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x8C, 0xFF, 0xA0,
        !           244:            0x00, 0x00, 0x31, 0xA3, 0xFF,
        !           245:        },
        !           246:        {
        !           247:            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39,
        !           248:            0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x01, 0x00, 0x0F, 0x00,
        !           249:        },
        !           250:        {
        !           251:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF,
        !           252:        },
        !           253:     }
        !           254: };
        !           255: 
        !           256: /* S3 928 1280 x 1024 x 15 (S3 mode 0x21A)
        !           257:  */
        !           258: static const S3Mode S3_928_1280x1024x15 = {
        !           259:     "S3_928[1280 x 1024 x 15]", S3_928, FOUR_MEGABYTES,
        !           260: 
        !           261:     /* Mode control. */
        !           262:     { 60, 0x0C },
        !           263:     
        !           264:     /* Advanced function control register (0x4AE8). */
        !           265:     0x07,
        !           266: 
        !           267:     /* Extra CRTC registers. */
        !           268:     {
        !           269:        0x31, 0x8F, 0x32, 0x10, 0x33, 0x20, 0x34, 0x00, 0x35, 0x00,
        !           270:        0x3A, 0x95, 0x3B, 0x5D, 0x3C, 0x28, 0x40, 0x50, 0x43, 0x00,
        !           271:        0x50, 0x10, 0x51, 0x60, 0x53, 0x20, 0x54, 0x00, 0x56, 0x00,
        !           272:        0x57, 0x00, 0x5C, 0x3C, 0x5D, 0x00, 0x5E, 0x55, 0x5F, 0x00,
        !           273:        0x60, 0x2F, 0x61, 0x81, 0x62, 0x40, 0x63, 0x40,
        !           274:     },
        !           275: 
        !           276:     /* Standard VGA registers. */
        !           277:     {
        !           278:        0x2F,
        !           279:        0x00,
        !           280:        { 0x01, 0x01, 0x0F, 0x00, 0x0E },
        !           281:        {
        !           282:            /* I had to add the `+1' to get this to work. */
        !           283:            0x65, 0x4F + 1, 0x50 + 1, 0x89, 0x52, 0x9C, 0x37, 0x52, 0x00, 0x40,
        !           284:            0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x05, 0x8C, 0xFF, 0x00,
        !           285:            0x00, 0x00, 0x31, 0xE3, 0xFF,
        !           286:        },
        !           287:        {
        !           288:            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 0x38, 0x39,
        !           289:            0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x01, 0x00, 0x0F, 0x00,
        !           290:        },
        !           291:        {
        !           292:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF,
        !           293:        },
        !           294:     }
        !           295: };
        !           296: 
        !           297: const IODisplayInfo S3_928_ModeTable[] = {
        !           298:     {
        !           299:        /* S3 928; 800 x 600 x 15 @ 60Hz. */
        !           300:        800, 600, 1024, 2048, 60, 0, IO_15BitsPerPixel, 
        !           301:        IO_RGBColorSpace, "-RRRRRGGGGGBBBBB", 0, (void *)&S3_928_800x600x15,
        !           302:     },
        !           303:     {
        !           304:        /* S3 928; 800 x 600 x 24 @ 60Hz. */
        !           305:        800, 600, 1024, 4096, 60, 0, IO_24BitsPerPixel, 
        !           306:        IO_RGBColorSpace, "--------RRRRRRRRGGGGGGGGBBBBBBBB",
        !           307:        0, (void *)&S3_928_800x600x24,
        !           308:     },
        !           309:     {
        !           310:        /* S3 928; 1024 x 768 x 8 @ 60Hz. RGB */
        !           311:        1024, 768, 1024, 1024, 60, 0, IO_8BitsPerPixel,
        !           312:        IO_RGBColorSpace, "PPPPPPPP", 0, (void *)&S3_928_1024x768x8,
        !           313:     },
        !           314:     {
        !           315:        /* S3 928; 1024 x 768 x 8 @ 70Hz. RGB */
        !           316:        1024, 768, 1024, 1024, 70, 0, IO_8BitsPerPixel,
        !           317:        IO_RGBColorSpace, "PPPPPPPP", 0, (void *)&S3_928_1024x768x8,
        !           318:     },
        !           319:     {
        !           320:        /* S3 928; 1024 x 768 x 8 @ 72Hz. RGB */
        !           321:        1024, 768, 1024, 1024, 72, 0, IO_8BitsPerPixel,
        !           322:        IO_RGBColorSpace, "PPPPPPPP", 0, (void *)&S3_928_1024x768x8,
        !           323:     },
        !           324:     {
        !           325:        /* S3 928; 1024 x 768 x 8 @ 60Hz. */
        !           326:        1024, 768, 1024, 1024, 60, 0, IO_8BitsPerPixel,
        !           327:        IO_OneIsWhiteColorSpace, "WWWWWWWW", 0, (void *)&S3_928_1024x768x8,
        !           328:     },
        !           329:     {
        !           330:        /* S3 928; 1024 x 768 x 8 @ 70Hz. */
        !           331:        1024, 768, 1024, 1024, 70, 0, IO_8BitsPerPixel,
        !           332:        IO_OneIsWhiteColorSpace, "WWWWWWWW", 0, (void *)&S3_928_1024x768x8,
        !           333:     },
        !           334:     {
        !           335:        /* S3 928; 1024 x 768 x 8 @ 72Hz. */
        !           336:        1024, 768, 1024, 1024, 72, 0, IO_8BitsPerPixel,
        !           337:        IO_OneIsWhiteColorSpace, "WWWWWWWW", 0, (void *)&S3_928_1024x768x8,
        !           338:     },
        !           339:     {
        !           340:        /* S3 928; 1024 x 768 x 15 @ 60Hz. */
        !           341:        1024, 768, 1024, 2048, 60, 0, IO_15BitsPerPixel,
        !           342:        IO_RGBColorSpace, "-RRRRRGGGGGBBBBB", 0, (void *)&S3_928_1024x768x15,
        !           343:     },
        !           344:     {
        !           345:        /* S3 928; 1024 x 768 x 15 @ 72Hz. */
        !           346:        1024, 768, 1024, 2048, 72, 0, IO_15BitsPerPixel,
        !           347:        IO_RGBColorSpace, "-RRRRRGGGGGBBBBB", 0, (void *)&S3_928_1024x768x15,
        !           348:     },
        !           349:     {
        !           350:        /* S3 928; 1024 x 768 x 24 @ 60Hz. */
        !           351:        1024, 768, 1024, 4096, 60, 0, IO_24BitsPerPixel,
        !           352:        IO_RGBColorSpace, "--------RRRRRRRRGGGGGGGGBBBBBBBB",
        !           353:        0, (void *)&S3_928_1024x768x24,
        !           354:     },
        !           355:     {
        !           356:        /* S3 928; 1024 x 768 x 24 @ 72Hz. */
        !           357:        1024, 768, 1024, 4096, 72, 0, IO_24BitsPerPixel,
        !           358:        IO_RGBColorSpace, "--------RRRRRRRRGGGGGGGGBBBBBBBB",
        !           359:        0, (void *)&S3_928_1024x768x24,
        !           360:     },
        !           361:     {
        !           362:        /* S3 928; 1280 x 1024 x 8 @ 60Hz. */
        !           363:        1280, 1024, 1280, 1280, 60, 0, IO_8BitsPerPixel,
        !           364:        IO_OneIsWhiteColorSpace, "WWWWWWWW", 0, (void *)&S3_928_1280x1024x8,
        !           365:     },
        !           366:     {
        !           367:        /* S3 928; 1280 x 1024 x 8 @ 60Hz. RGB */
        !           368:        1280, 1024, 1280, 1280, 60, 0, IO_8BitsPerPixel,
        !           369:        IO_RGBColorSpace, "PPPPPPPP", 0, (void *)&S3_928_1280x1024x8,
        !           370:     },
        !           371:     {
        !           372:        /* S3 928; 1280 x 1024 x 15 @ 60Hz. */
        !           373:        1280, 1024, 2048, 4096, 60, 0, IO_15BitsPerPixel,
        !           374:        IO_RGBColorSpace, "-RRRRRGGGGGBBBBB", 0, (void *)&S3_928_1280x1024x15,
        !           375:     },
        !           376: };
        !           377: 
        !           378: const int S3_928_ModeTableCount =
        !           379:        (sizeof(S3_928_ModeTable) / sizeof(S3_928_ModeTable[0]));
        !           380: 
        !           381: const int S3_928_defaultMode = 2;

unix.superglobalmegacorp.com

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