| plan 9 kernel history: overview | file list | diff list |
1993/0908/carrera/screen.c (diff list | history)
| 1993/0907/sys/src/9/carrera/screen.c:180,185 – 1993/0908/sys/src/9/carrera/screen.c:180,189 (short | long | prev | next) | ||
| 1993/0906 | hwcurs = 0; } | |
| 1993/0908 | void getvmode(VGAmode *v); void writeregisters(VGAmode *v); VGAmode x; | |
| 1993/0906 | void screeninit(void) { | |
| 1993/0907/sys/src/9/carrera/screen.c:187,196 – 1993/0908/sys/src/9/carrera/screen.c:191,202 | ||
| 1993/0907 | uchar *scr; | |
| 1993/0906 | setmode(&dfltmode); | |
| 1993/0908 | getvmode(&x); writeregisters(&x); return; | |
| 1993/0906 | memmove(&arrow, &fatarrow, sizeof(fatarrow)); | |
| 1993/0907 |
| |
| 1993/0908 | scr = (uchar*)EISA(0xC0000); | |
| 1993/0907 | iprint("%lux\n", scr); *scr = 0xaa; i = *scr; | |
| 1993/0907/sys/src/9/carrera/screen.c:383,389 – 1993/0908/sys/src/9/carrera/screen.c:389,396 | ||
| 1993/0906 | } | |
| 1993/0907 | uchar | |
| 1993/0908 | srin(ushort i) { | |
| 1993/0907 | EISAOUTB(SRX, i); return EISAINB(SR); } | |
| 1993/0907/sys/src/9/carrera/screen.c:438,443 – 1993/0908/sys/src/9/carrera/screen.c:445,453 | ||
| 1993/0906 | { int i; | |
| 1993/0908 | for(i = 0; i < sizeof(v->general); i++) genout(i, v->general[i]); | |
| 1993/0906 | /* turn screen off (to avoid damage) */ srout(1, 0x21); | |
| 1993/0907/sys/src/9/carrera/screen.c:447,455 – 1993/0908/sys/src/9/carrera/screen.c:457,462 | ||
| 1993/0907 | srout(0x00, srin(0x00) & 0xFD); /* synchronous reset*/ | |
| 1993/0906 |
| |
| 1993/0907/sys/src/9/carrera/screen.c:489,492 – 1993/0908/sys/src/9/carrera/screen.c:496,595 | ||
| 1993/0906 | /* turn screen on */ srout(1, v->sequencer[1]); | |
| 1993/0908 | } uchar grin(ushort i) { EISAOUTB(GRX, i); return EISAINB(GR); } uchar arin(ushort i) { uchar junk; junk = EISAINB(0x3DA); USED(junk); EISAOUTB(ARW, i | 0x20); return EISAINB(ARR); } uchar crin(ushort i) { EISAOUTB(CRX, i); return EISAINB(CR); } void getvmode(VGAmode *v) { int i; v->general[0] = EISAINB(EMISCR); /* misc output */ v->general[1] = EISAINB(EFCR); /* feature control */ for(i = 0; i < sizeof(v->sequencer); i++) v->sequencer[i] = srin(i); for(i = 0; i < sizeof(v->crt); i++) v->crt[i] = crin(i); for(i = 0; i < sizeof(v->graphics); i++) v->graphics[i] = grin(i); for(i = 0; i < sizeof(v->attribute); i++) v->attribute[i] = arin(i); v->tseng.viden = EISAINB(0x3c3); v->tseng.sr6 = srin(6); v->tseng.sr7 = srin(7); v->tseng.ar16 = arin(0x16); v->tseng.ar17 = arin(0x17); v->tseng.crt31= crin(0x31); v->tseng.crt32= crin(0x32); v->tseng.crt33= crin(0x33); v->tseng.crt34= crin(0x34); v->tseng.crt35= crin(0x35); v->tseng.crt36= crin(0x36); v->tseng.crt37= crin(0x37); } void writeregisters(VGAmode *v) { int i; print("\t/* general */\n\t"); for (i=0; i<sizeof(v->general); i++) print("0x%.2x, ", v->general[i]); print("\n\t/* sequence */\n\t"); for (i=0; i<sizeof(v->sequencer); i++) { if (i>0 && i%8 == 0) print("\n\t"); print("0x%.2x, ", v->sequencer[i]); } print("\n\t/* crt */\n\t"); for (i=0; i<sizeof(v->crt); i++) { if (i>0 && i%8 == 0) print("\n\t"); print("0x%.2x, ", v->crt[i]); } print("\n\t/* graphics */\n\t"); for (i=0; i<sizeof(v->graphics); i++) { if (i>0 && i%8 == 0) print("\n\t"); print("0x%.2x, ", v->graphics[i]); } print("\n\t/* attribute */\n\t"); for (i=0; i<sizeof(v->attribute); i++) { if (i>0 && i%8 == 0) print("\n\t"); print("0x%.2x, ", v->attribute[i]); } print("\n"); print("\t/* special */\n"); for (i=0; i<12; i++) { if (i%8 == 0) print("\n\t"); print("0x%.2x, ", ((uchar*)(&v->tseng))[i]); } print("\n"); | |
| 1993/0906 | } | |