| plan 9 kernel history: overview | file list | diff list |
1992/1115/pc/vga.c (diff list | history)
| 1992/1114/sys/src/9/pc/vga.c:148,158 – 1992/1115/sys/src/9/pc/vga.c:148,164 (short | long | prev | next) | ||
| 1991/1112 | { | |
| 1991/1113 | int i; | |
| 1991/1112 | ||
| 1992/1115 | /* turn screen off (to avoid damage) */ srout(1, 0x21); | |
| 1991/1113 | for(i = 0; i < sizeof(v->general); i++) genout(i, v->general[i]); | |
| 1991/0928 | ||
| 1991/1113 | for(i = 0; i < sizeof(v->sequencer); i++) | |
| 1992/1115 | if(i == 1) srout(i, v->sequencer[i]|0x20); /* avoid enabling screen */ else srout(i, v->sequencer[i]); | |
| 1991/0928 | ||
| 1991/1113 | crout(Cvre, 0); /* allow writes to CRT registers 0-7 */ for(i = 0; i < sizeof(v->crt); i++) | |
| 1992/1114/sys/src/9/pc/vga.c:163,168 – 1992/1115/sys/src/9/pc/vga.c:169,177 | ||
| 1991/1109 | ||
| 1991/1113 | for(i = 0; i < sizeof(v->attribute); i++) arout(i, v->attribute[i]); | |
| 1992/1115 | /* turn screen on */ srout(1, v->sequencer[1]); | |
| 1991/0928 | } | |
| 1991/0727 | void | |
| 1992/1114/sys/src/9/pc/vga.c:276,290 – 1992/1115/sys/src/9/pc/vga.c:285,291 | ||
| 1992/1113 | vgascreen.r.max = Pt(maxx, vgamaxy); | |
| 1992/1112 | vgascreen.clipr = vgascreen.r; | |
| 1992/1113 | memset(vgascreen.base, 0xff, vgascreen.width * BY2WD * vgamaxy); | |
| 1992/1114 |
| |
| 1992/1106 | ||
| 1992/1114 |
| |
| 1992/1106 | /* | |
| 1992/1109 | * setup new soft screen, free memory for old screen | |
| 1992/1106 | */ | |
| 1992/1114/sys/src/9/pc/vga.c:340,347 – 1992/1115/sys/src/9/pc/vga.c:341,348 | ||
| 1991/0727 | /* | |
| 1992/1106 | * arrow is defined as a big endian | |
| 1991/0801 | */ | |
| 1992/1106 |
| |
| 1992/1115 | pixreverse(arrow.set, 2*16, 0); pixreverse(arrow.clr, 2*16, 0); | |
| 1992/1106 | /* * swizzle the font longs. we do both byte and bit swizzling | |
| 1992/1114/sys/src/9/pc/vga.c:351,358 – 1992/1115/sys/src/9/pc/vga.c:352,359 | ||
| 1991/0801 | l = defont->bits->base; for(i = defont->bits->width*Dy(defont->bits->r); i > 0; i--, l++) *l = (*l<<24) | ((*l>>8)&0x0000ff00) | ((*l<<8)&0x00ff0000) | (*l>>24); | |
| 1992/1106 |
| |
| 1992/1115 | pixreverse((uchar*)defont->bits->base, defont->bits->width*BY2WD*Dy(defont->bits->r), 0); | |
| 1992/1106 | /* * set up 'soft' and hard screens | |
| 1992/1114/sys/src/9/pc/vga.c:544,551 – 1992/1115/sys/src/9/pc/vga.c:545,552 | ||
| 1991/1228 | Rune r; int i; char buf[4]; | |
| 1992/1115 | Rectangle rect; | |
| 1991/1228 | ||
| 1992/1114 |
| |
| 1991/1228 | while(n > 0){ i = chartorune(&r, s); if(i == 0){ | |
| 1992/1114/sys/src/9/pc/vga.c:568,579 – 1992/1115/sys/src/9/pc/vga.c:569,584 | ||
| 1991/1228 | out.pos.x -= out.bwid; | |
| 1992/0208 | gsubfstring(&gscreen, out.pos, defont, " ", flipD[S]); | |
| 1991/1228 | } | |
| 1992/1114 |
| |
| 1992/1115 | rect.min = Pt(out.pos.x, out.pos.y); rect.max = Pt(out.pos.x+out.bwid, out.pos.y+defont0.height); mbbrect(rect); | |
| 1991/1228 | }else{ if(out.pos.x >= gscreen.r.max.x-out.bwid) screenputnl(); | |
| 1992/1115 | rect.min = Pt(out.pos.x, out.pos.y); rect.max = Pt(out.pos.x+out.bwid, out.pos.y+defont0.height); | |
| 1992/0208 | out.pos = gsubfstring(&gscreen, out.pos, defont, buf, flipD[S]); | |
| 1992/1114 |
| |
| 1992/1115 | mbbrect(rect); | |
| 1991/1228 | } } | |
| 1992/1113 | vgaupdate(); | |
| 1992/1114/sys/src/9/pc/vga.c:599,613 – 1992/1115/sys/src/9/pc/vga.c:604,614 | ||
| 1991/0730 | int setcolor(ulong p, ulong r, ulong g, ulong b) { | |
| 1992/1114 |
| |
| 1992/1112 | p &= (1<<(1<<gscreen.ldepth))-1; | |
| 1992/1113 | lock(&vgalock); colormap[p][0] = r; colormap[p][1] = g; colormap[p][2] = b; | |
| 1992/1114 |
| |
| 1992/1112 | outb(CMWX, p); outb(CM, r>>(32-6)); outb(CM, g>>(32-6)); | |
| 1992/1114/sys/src/9/pc/vga.c:660,667 – 1992/1115/sys/src/9/pc/vga.c:661,668 | ||
| 1991/1113 | bigcursor(void) { memmove(&arrow, &fatarrow, sizeof(fatarrow)); | |
| 1992/1106 |
| |
| 1992/1115 | pixreverse(arrow.set, 2*16, 0); pixreverse(arrow.clr, 2*16, 0); | |
| 1991/0730 | } | |
| 1992/1108 | /* | |
| 1992/1114/sys/src/9/pc/vga.c:672,678 – 1992/1115/sys/src/9/pc/vga.c:673,679 | ||
| 1992/1108 | * if the bits in uchar x are labeled * 76543210 * then l1revsep[x] yields a ushort with bits | |
| 1992/1111 |
| |
| 1992/1115 | * ________1357________0246 | |
| 1992/1108 | * where _ represents a bit whose value is 0. * * This table is used by l1update() in l.s. l1update is implemented | |
| 1992/1114/sys/src/9/pc/vga.c:679,718 – 1992/1115/sys/src/9/pc/vga.c:680,718 | ||
| 1992/1111 | * in assembler for speed. | |
| 1992/1108 | * */ | |
| 1992/1111 |
| |
| 1992/1115 | ulong l1revsep[] = { 0x00000, 0x00008, 0x80000, 0x80008, 0x00004, 0x0000c, 0x80004, 0x8000c, 0x40000, 0x40008, 0xc0000, 0xc0008, 0x40004, 0x4000c, 0xc0004, 0xc000c, 0x00002, 0x0000a, 0x80002, 0x8000a, 0x00006, 0x0000e, 0x80006, 0x8000e, 0x40002, 0x4000a, 0xc0002, 0xc000a, 0x40006, 0x4000e, 0xc0006, 0xc000e, 0x20000, 0x20008, 0xa0000, 0xa0008, 0x20004, 0x2000c, 0xa0004, 0xa000c, 0x60000, 0x60008, 0xe0000, 0xe0008, 0x60004, 0x6000c, 0xe0004, 0xe000c, 0x20002, 0x2000a, 0xa0002, 0xa000a, 0x20006, 0x2000e, 0xa0006, 0xa000e, 0x60002, 0x6000a, 0xe0002, 0xe000a, 0x60006, 0x6000e, 0xe0006, 0xe000e, 0x00001, 0x00009, 0x80001, 0x80009, 0x00005, 0x0000d, 0x80005, 0x8000d, 0x40001, 0x40009, 0xc0001, 0xc0009, 0x40005, 0x4000d, 0xc0005, 0xc000d, 0x00003, 0x0000b, 0x80003, 0x8000b, 0x00007, 0x0000f, 0x80007, 0x8000f, 0x40003, 0x4000b, 0xc0003, 0xc000b, 0x40007, 0x4000f, 0xc0007, 0xc000f, 0x20001, 0x20009, 0xa0001, 0xa0009, 0x20005, 0x2000d, 0xa0005, 0xa000d, 0x60001, 0x60009, 0xe0001, 0xe0009, 0x60005, 0x6000d, 0xe0005, 0xe000d, 0x20003, 0x2000b, 0xa0003, 0xa000b, 0x20007, 0x2000f, 0xa0007, 0xa000f, 0x60003, 0x6000b, 0xe0003, 0xe000b, 0x60007, 0x6000f, 0xe0007, 0xe000f, 0x10000, 0x10008, 0x90000, 0x90008, 0x10004, 0x1000c, 0x90004, 0x9000c, 0x50000, 0x50008, 0xd0000, 0xd0008, 0x50004, 0x5000c, 0xd0004, 0xd000c, 0x10002, 0x1000a, 0x90002, 0x9000a, 0x10006, 0x1000e, 0x90006, 0x9000e, 0x50002, 0x5000a, 0xd0002, 0xd000a, 0x50006, 0x5000e, 0xd0006, 0xd000e, 0x30000, 0x30008, 0xb0000, 0xb0008, 0x30004, 0x3000c, 0xb0004, 0xb000c, 0x70000, 0x70008, 0xf0000, 0xf0008, 0x70004, 0x7000c, 0xf0004, 0xf000c, 0x30002, 0x3000a, 0xb0002, 0xb000a, 0x30006, 0x3000e, 0xb0006, 0xb000e, 0x70002, 0x7000a, 0xf0002, 0xf000a, 0x70006, 0x7000e, 0xf0006, 0xf000e, 0x10001, 0x10009, 0x90001, 0x90009, 0x10005, 0x1000d, 0x90005, 0x9000d, 0x50001, 0x50009, 0xd0001, 0xd0009, 0x50005, 0x5000d, 0xd0005, 0xd000d, 0x10003, 0x1000b, 0x90003, 0x9000b, 0x10007, 0x1000f, 0x90007, 0x9000f, 0x50003, 0x5000b, 0xd0003, 0xd000b, 0x50007, 0x5000f, 0xd0007, 0xd000f, 0x30001, 0x30009, 0xb0001, 0xb0009, 0x30005, 0x3000d, 0xb0005, 0xb000d, 0x70001, 0x70009, 0xf0001, 0xf0009, 0x70005, 0x7000d, 0xf0005, 0xf000d, 0x30003, 0x3000b, 0xb0003, 0xb000b, 0x30007, 0x3000f, 0xb0007, 0xb000f, 0x70003, 0x7000b, 0xf0003, 0xf000b, 0x70007, 0x7000f, 0xf0007, 0xf000f, | |
| 1992/1111 | }; /* | |
| 1992/1114/sys/src/9/pc/vga.c:723,729 – 1992/1115/sys/src/9/pc/vga.c:723,729 | ||
| 1992/1111 | * if the bits in uchar x are labeled * 76543210 * then l1revsep[x] yields a ushort with bits | |
| 1992/1115 | * ______37______26______15______04 | |
| 1992/1111 | * where _ represents a bit whose value is 0. * * This table is used by l2update() in l.s. l2update is implemented | |
| 1992/1114/sys/src/9/pc/vga.c:730,767 – 1992/1115/sys/src/9/pc/vga.c:730,766 | ||
| 1992/1111 | * in assembler for speed. * */ | |
| 1992/1115 | ulong l2revsep[] = { 0x0000000, 0x0000002, 0x0000200, 0x0000202, 0x0020000, 0x0020002, 0x0020200, 0x0020202, 0x2000000, 0x2000002, 0x2000200, 0x2000202, 0x2020000, 0x2020002, 0x2020200, 0x2020202, 0x0000001, 0x0000003, 0x0000201, 0x0000203, 0x0020001, 0x0020003, 0x0020201, 0x0020203, 0x2000001, 0x2000003, 0x2000201, 0x2000203, 0x2020001, 0x2020003, 0x2020201, 0x2020203, 0x0000100, 0x0000102, 0x0000300, 0x0000302, 0x0020100, 0x0020102, 0x0020300, 0x0020302, 0x2000100, 0x2000102, 0x2000300, 0x2000302, 0x2020100, 0x2020102, 0x2020300, 0x2020302, 0x0000101, 0x0000103, 0x0000301, 0x0000303, 0x0020101, 0x0020103, 0x0020301, 0x0020303, 0x2000101, 0x2000103, 0x2000301, 0x2000303, 0x2020101, 0x2020103, 0x2020301, 0x2020303, 0x0010000, 0x0010002, 0x0010200, 0x0010202, 0x0030000, 0x0030002, 0x0030200, 0x0030202, 0x2010000, 0x2010002, 0x2010200, 0x2010202, 0x2030000, 0x2030002, 0x2030200, 0x2030202, 0x0010001, 0x0010003, 0x0010201, 0x0010203, 0x0030001, 0x0030003, 0x0030201, 0x0030203, 0x2010001, 0x2010003, 0x2010201, 0x2010203, 0x2030001, 0x2030003, 0x2030201, 0x2030203, 0x0010100, 0x0010102, 0x0010300, 0x0010302, 0x0030100, 0x0030102, 0x0030300, 0x0030302, 0x2010100, 0x2010102, 0x2010300, 0x2010302, 0x2030100, 0x2030102, 0x2030300, 0x2030302, 0x0010101, 0x0010103, 0x0010301, 0x0010303, 0x0030101, 0x0030103, 0x0030301, 0x0030303, 0x2010101, 0x2010103, 0x2010301, 0x2010303, 0x2030101, 0x2030103, 0x2030301, 0x2030303, 0x1000000, 0x1000002, 0x1000200, 0x1000202, 0x1020000, 0x1020002, 0x1020200, 0x1020202, 0x3000000, 0x3000002, 0x3000200, 0x3000202, 0x3020000, 0x3020002, 0x3020200, 0x3020202, 0x1000001, 0x1000003, 0x1000201, 0x1000203, 0x1020001, 0x1020003, 0x1020201, 0x1020203, 0x3000001, 0x3000003, 0x3000201, 0x3000203, 0x3020001, 0x3020003, 0x3020201, 0x3020203, 0x1000100, 0x1000102, 0x1000300, 0x1000302, 0x1020100, 0x1020102, 0x1020300, 0x1020302, 0x3000100, 0x3000102, 0x3000300, 0x3000302, 0x3020100, 0x3020102, 0x3020300, 0x3020302, 0x1000101, 0x1000103, 0x1000301, 0x1000303, 0x1020101, 0x1020103, 0x1020301, 0x1020303, 0x3000101, 0x3000103, 0x3000301, 0x3000303, 0x3020101, 0x3020103, 0x3020301, 0x3020303, 0x1010000, 0x1010002, 0x1010200, 0x1010202, 0x1030000, 0x1030002, 0x1030200, 0x1030202, 0x3010000, 0x3010002, 0x3010200, 0x3010202, 0x3030000, 0x3030002, 0x3030200, 0x3030202, 0x1010001, 0x1010003, 0x1010201, 0x1010203, 0x1030001, 0x1030003, 0x1030201, 0x1030203, 0x3010001, 0x3010003, 0x3010201, 0x3010203, 0x3030001, 0x3030003, 0x3030201, 0x3030203, 0x1010100, 0x1010102, 0x1010300, 0x1010302, 0x1030100, 0x1030102, 0x1030300, 0x1030302, 0x3010100, 0x3010102, 0x3010300, 0x3010302, 0x3030100, 0x3030102, 0x3030300, 0x3030302, 0x1010101, 0x1010103, 0x1010301, 0x1010303, 0x1030101, 0x1030103, 0x1030301, 0x1030303, 0x3010101, 0x3010103, 0x3010301, 0x3010303, 0x3030101, 0x3030103, 0x3030301, 0x3030303, | |
| 1992/1108 | }; | |