| plan 9 kernel history: overview | file list | diff list |
1992/0812/ss/screen.c (diff list | history)
| 1992/0812/sys/src/9/ss/screen.c:20,27 – 1992/0813/sys/src/9/ss/screen.c:20,39 (short | long | prev | next) | ||
| 1990/1223 | int bwid; }out; | |
| 1992/0813 | static ulong rep(ulong, int); void (*kprofp)(ulong); | |
| 1990/1223 | ||
| 1992/0813 | /* Brooktree 458/451 */ typedef struct DAC DAC; struct DAC { uchar pad[16]; ulong dacaddr; /* DAC address register */ ulong daccolor; /* DAC color palette */ ulong daccntrl; /* DAC control register */ ulong dacovrl; /* DAC overlay palette */ }*dac; | |
| 1992/0810 | GBitmap gscreen; struct screens | |
| 1992/0812/sys/src/9/ss/screen.c:30,39 – 1992/0813/sys/src/9/ss/screen.c:42,52 | ||
| 1992/0810 | int x; int y; int ld; | |
| 1992/0813 | ulong dacaddr; | |
| 1992/0810 | }screens[] = { | |
| 1992/0812 |
| |
| 1992/0813 | { "bwtwo", 1152, 900, 0, 0x400000 }, { "cgsix", 1152, 900, 3, 0x400000 }, { "cgthree", 1152, 900, 3, 0x200000 }, | |
| 1990/1223 | 0 }; | |
| 1992/0812/sys/src/9/ss/screen.c:43,49 – 1992/0813/sys/src/9/ss/screen.c:56,64 | ||
| 1992/0812 | screeninit(char *str) | |
| 1990/1223 | { | |
| 1992/0810 | struct screens *s; | |
| 1992/0812 |
| |
| 1992/0813 | ulong n, r, g, b; int i; int havecol; | |
| 1992/0810 | for(s=screens; s->type; s++) | |
| 1992/0812 | if(strcmp(s->type, str) == 0) | |
| 1992/0812/sys/src/9/ss/screen.c:70,78 – 1992/0813/sys/src/9/ss/screen.c:85,144 | ||
| 1990/1223 | out.pos.x = MINX; out.pos.y = 0; out.bwid = defont0.info[' '].width; | |
| 1992/0813 | dac = (DAC*)kmappa(FRAMEBUF+s->dacaddr, PTENOCACHE|PTEIO); if(gscreen.ldepth == 3){ havecol = 0; if(havecol) { /* * For now, just use a fixed colormap, where pixel i is * regarded as 3 bits of red, 3 bits of green, and 2 bits of blue. * Intensities are inverted so that 0 means white, 255 means black. * Exception: pixels 85 and 170 are set to intermediate grey values * so that 2-bit grey scale images will look ok on this screen. */ for(i = 0; i<256; i++) { r = ~rep((i>>5) & 7, 3); g = ~rep((i>>2) & 7, 3); b = ~rep(i & 3, 2); setcolor(i, r, g, b); } setcolor(85, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA); setcolor(170, 0x55555555, 0x55555555, 0x55555555); } else { dac->dacaddr = 4; dac->daccntrl = 0xFF; dac->dacaddr = 5; dac->daccntrl = 0x00; dac->dacaddr = 6; dac->daccntrl = 0x40; dac->dacaddr = 7; dac->daccntrl = 0x00; dac->dacaddr = 0; for(i=0; i<252; i+=4) { dac->daccolor = ~rep(i,8); dac->daccolor = ~rep(i,8); dac->daccolor = ~rep(i,8); } /* for(i = 0; i<256; i++) setcolor(i, ~rep(i,8), ~rep(i,8), ~rep(i,8)); */ } } | |
| 1990/1223 | } void | |
| 1992/0813 | mapdump(void) { int i; dac->dacaddr = 0; for(i=0; i<100; i++) print("%lux ", dac->daccolor); } void | |
| 1991/1228 | screenputnl(void) { | |
| 1992/0807 | if(!conf.monitor) | |
| 1992/0812/sys/src/9/ss/screen.c:128,138 – 1992/0813/sys/src/9/ss/screen.c:194,205 | ||
| 1990/1223 | ||
| 1990/1231 | /* | |
| 1991/0112 | * Map is indexed by keyboard char, output is ASCII. | |
| 1992/0813 | * Plan 9-isms: * Return sends newline and Line Feed sends carriage return. | |
| 1991/0112 | * Delete and Backspace both send backspace. * Num Lock sends delete (rubout). * Alt Graph is VIEW (scroll). | |
| 1992/0813 | * Compose builds Unicode characters. | |
| 1990/1231 | */ uchar keymap[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ | |
| 1992/0812/sys/src/9/ss/screen.c:393,408 – 1992/0813/sys/src/9/ss/screen.c:460,486 | ||
| 1991/0707 | void getcolor(ulong p, ulong *pr, ulong *pg, ulong *pb) { | |
| 1992/0813 | uchar r, g, b; | |
| 1991/0707 | ulong ans; /* * The slc monochrome says 0 is white (max intensity) */ | |
| 1992/0813 | if(1 || gscreen.ldepth == 0) { if(p == 0) ans = ~0; else ans = 0; *pr = *pg = *pb = ans; } else { *(uchar *)&dac->dacaddr = p & 0xFF; r = *(uchar *)&dac->daccolor; g = *(uchar *)&dac->daccolor; b = *(uchar *)&dac->daccolor; *pr = (r<<24) | (r<<16) | (r<<8) | r; *pg = (g<<24) | (g<<16) | (g<<8) | g; *pb = (b<<24) | (b<<16) | (b<<8) | b; } | |
| 1991/0707 | } | |
| 1992/0812/sys/src/9/ss/screen.c:409,416 – 1992/0813/sys/src/9/ss/screen.c:487,504 | ||
| 1991/0707 | int setcolor(ulong p, ulong r, ulong g, ulong b) { | |
| 1992/0711 |
| |
| 1991/0707 |
| |
| 1992/0813 | if(1 || gscreen.ldepth == 0) return 0; /* can't change mono screen colormap */ else { /* perhaps not reliable unless done while vertical blanking ? */ *(uchar *)&dac->dacaddr = p & 0xFF; /* *(uchar *)&dac->daccolor = r >> 24; *(uchar *)&dac->daccolor = g >> 24; *(uchar *)&dac->daccolor = b >> 24; */ return 1; } | |
| 1991/0707 | } int | |
| 1992/0812/sys/src/9/ss/screen.c:431,434 – 1992/0813/sys/src/9/ss/screen.c:519,535 | ||
| 1991/0707 | mouseclock(void) /* called splhi */ { mouseupdate(1); | |
| 1992/0813 | } /* replicate (from top) value in v (n bits) until it fills a ulong */ static ulong rep(ulong v, int n) { int o; ulong rv; rv = 0; for(o = 32 - n; o >= 0; o -= n) rv |= (v << o); return rv; | |
| 1990/1223 | } | |