| plan 9 kernel history: overview | file list | diff list |
1993/0907/carrera/screen.c (diff list | history)
| 1993/0906/sys/src/9/carrera/screen.c:43,48 – 1993/0907/sys/src/9/carrera/screen.c:43,62 (short | long | prev | next) | ||
| 1993/0906 | uchar graphics[9]; uchar attribute[0x15]; uchar special[12]; | |
| 1993/0907 | struct { uchar viden; uchar sr6; uchar sr7; uchar ar16; uchar ar17; uchar crt31; uchar crt32; uchar crt33; uchar crt34; uchar crt35; uchar crt36; uchar crt37; } tseng; | |
| 1993/0906 | }; void setmode(VGAmode*); | |
| 1993/0906/sys/src/9/carrera/screen.c:86,92 – 1993/0907/sys/src/9/carrera/screen.c:100,106 | ||
| 1993/0906 | GBitmap gscreen = { | |
| 1993/0907 | EISA(0xA0000), | |
| 1993/0906 | 0, (1024*(1<<3))/32, 3, | |
| 1993/0906/sys/src/9/carrera/screen.c:95,110 – 1993/0907/sys/src/9/carrera/screen.c:109,114 | ||
| 1993/0906 | 0 }; | |
| 1993/0906/sys/src/9/carrera/screen.c:121,129 – 1993/0907/sys/src/9/carrera/screen.c:125,130 | ||
| 1993/0906 | 0 }; | |
| 1993/0906/sys/src/9/carrera/screen.c:182,194 – 1993/0907/sys/src/9/carrera/screen.c:183,213 | ||
| 1993/0906 | void screeninit(void) { | |
| 1993/0907 | int i, j; uchar *scr; | |
| 1993/0906 | setmode(&dfltmode); memmove(&arrow, &fatarrow, sizeof(fatarrow)); | |
| 1993/0907 | scr = (uchar*)EISA(0xA0000); iprint("%lux\n", scr); *scr = 0xaa; i = *scr; iprint("%2.2ux\n", i); *scr = 0x55; i = *scr; iprint("%2.2ux\n", i); for(j = 0; j < 768; j++) for(i = 0; i < 1024; i++) *(scr+i+(j*1024)) = i; | |
| 1993/0906 | /* save space; let bitblt do the conversion work */ | |
| 1993/0907 | defont = &defont0; iprint("gbitblt\n"); | |
| 1993/0906 | gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0); | |
| 1993/0907 | iprint("done\n"); | |
| 1993/0906 | out.pos.x = MINX; out.pos.y = 0; out.bwid = defont0.info[' '].width; | |
| 1993/0906/sys/src/9/carrera/screen.c:363,368 – 1993/0907/sys/src/9/carrera/screen.c:382,393 | ||
| 1993/0906 | EISAOUTB(SR, val); } | |
| 1993/0907 | uchar srin(ushort i) { EISAOUTB(SRX, i); return EISAINB(SR); } | |
| 1993/0906 | void grout(int reg, int val) { | |
| 1993/0906/sys/src/9/carrera/screen.c:375,381 – 1993/0907/sys/src/9/carrera/screen.c:400,407 | ||
| 1993/0906 | { if(reg == 0) EISAOUTB(EMISCW, val); | |
| 1993/0907 | else if (reg == 1) | |
| 1993/0906 | EISAOUTB(EFCW, val); } | |
| 1993/0906/sys/src/9/carrera/screen.c:393,399 – 1993/0907/sys/src/9/carrera/screen.c:419,426 | ||
| 1993/0906 | junk = EISAINB(0x3DA); USED(junk); EISAOUTB(ARW, reg | 0x20); | |
| 1993/0907 | } else { | |
| 1993/0906 | EISAOUTB(ARW, reg | 0x20); EISAOUTB(ARW, val); } | |
| 1993/0906/sys/src/9/carrera/screen.c:414,419 – 1993/0907/sys/src/9/carrera/screen.c:441,452 | ||
| 1993/0906 | /* turn screen off (to avoid damage) */ srout(1, 0x21); | |
| 1993/0907 | EISAOUTB(0x3bf, 0x03); /* hercules compatibility reg */ EISAOUTB(0x3d8, 0xa0); /* display mode control register */ EISAOUTB(0x3cd, 0x00); /* segment select */ srout(0x00, srin(0x00) & 0xFD); /* synchronous reset*/ | |
| 1993/0906 | for(i = 0; i < sizeof(v->general); i++) genout(i, v->general[i]); | |
| 1993/0906/sys/src/9/carrera/screen.c:423,429 – 1993/0907/sys/src/9/carrera/screen.c:456,463 | ||
| 1993/0906 | else srout(i, v->sequencer[i]); | |
| 1993/0907 | /* allow writes to CRT registers 0-7 */ crout(Cvre, 0); | |
| 1993/0906 | for(i = 0; i < sizeof(v->crt); i++) crout(i, v->crt[i]); | |
| 1993/0906/sys/src/9/carrera/screen.c:432,437 – 1993/0907/sys/src/9/carrera/screen.c:466,491 | ||
| 1993/0906 | for(i = 0; i < sizeof(v->attribute); i++) arout(i, v->attribute[i]); | |
| 1993/0907 | EISAOUTB(0x3C6, 0xFF); /* pel mask */ EISAOUTB(0x3C8, 0x00); /* pel write address */ EISAOUTB(0x3bf, 0x03); /* hercules compatibility reg */ EISAOUTB(0x3d8, 0xa0); /* display mode control register */ srout(0x06, v->tseng.sr6); srout(0x07, v->tseng.sr7); i = EISAINB(0x3da); /* reset flip-flop. inp stat 1*/ USED(i); arout(0x16, v->tseng.ar16); /* misc */ arout(0x17, v->tseng.ar17); /* misc 1*/ crout(0x31, v->tseng.crt31); /* extended start. */ crout(0x32, v->tseng.crt32); /* extended start. */ crout(0x33, v->tseng.crt33); /* extended start. */ crout(0x34, v->tseng.crt34); /* stub: 46ee + other bits */ crout(0x35, v->tseng.crt35); /* overflow bits */ crout(0x36, v->tseng.crt36); /* overflow bits */ crout(0x37, v->tseng.crt37); /* overflow bits */ EISAOUTB(0x3c3, v->tseng.viden);/* video enable */ | |
| 1993/0906 | /* turn screen on */ srout(1, v->sequencer[1]); | |