| plan 9 kernel history: overview | file list | diff list |
1992/0111/ss/screen.c (diff list | history)
| 1990/1223/sys/src/9/ss/screen.c:28,38 – 1990/1226/sys/src/9/ss/screen.c:28,38 (short | long) | ||
| 1990/1223 | GBitmap gscreen = { | |
| 1990/1226 | (ulong*)SCREENSEGM, | |
| 1990/1223 | 0, | |
| 1990/1226 | 1160/32, | |
| 1990/1223 | 0, | |
| 1990/1226 | {0, 0, 1160, 900}, | |
| 1990/1223 | 0 }; | |
| 1990/1223/sys/src/9/ss/screen.c:39,51 – 1990/1226/sys/src/9/ss/screen.c:39,46 | ||
| 1990/1223 | void screeninit(void) { | |
| 1990/1226 | /* duartinit(); /**/ defont = &defont0; | |
| 1990/1223 | gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0); out.pos.x = MINX; out.pos.y = 0; | |
| 1990/1223/sys/src/9/ss/screen.c:80,86 – 1990/1226/sys/src/9/ss/screen.c:75,81 | ||
| 1990/1223 | screenputc('\n'); buf[0] = c&0x7F; buf[1] = 0; | |
| 1990/1226 | out.pos = gstring(&gscreen, out.pos, defont, buf, S); | |
| 1990/1223 | } } | |
| 1990/1226/sys/src/9/ss/screen.c:20,30 – 1990/1231/sys/src/9/ss/screen.c:20,30 (short | long) | ||
| 1990/1223 | int bwid; }out; | |
| 1990/1231 | void kbdstate(int); | |
| 1990/1223 | GBitmap gscreen = { | |
| 1990/1226/sys/src/9/ss/screen.c:39,45 – 1990/1231/sys/src/9/ss/screen.c:39,44 | ||
| 1990/1223 | void screeninit(void) { | |
| 1990/1226 |
| |
| 1990/1223 | gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0); out.pos.x = MINX; | |
| 1990/1226/sys/src/9/ss/screen.c:80,402 – 1990/1231/sys/src/9/ss/screen.c:79,511 | ||
| 1990/1223 | } /* | |
| 1990/1231 | * Driver for the Z8530. | |
| 1990/1223 | */ | |
| 1990/1231 | enum { /* wr 0 */ ResExtPend= 2<<3, ResTxPend= 5<<3, ResErr= 6<<3, | |
| 1990/1223 |
| |
| 1990/1231 | /* wr 1 */ TxIntEna= 1<<1, RxIntDis= 0<<3, RxIntFirstEna= 1<<3, RxIntAllEna= 2<<3, | |
| 1990/1223 |
| |
| 1990/1231 | /* wr 3 */ RxEna= 1, Rx5bits= 0<<6, Rx7bits= 1<<6, Rx6bits= 2<<6, Rx8bits= 3<<6, | |
| 1990/1223 |
| |
| 1990/1231 | /* wr 4 */ SyncMode= 0<<2, Rx1stop= 1<<2, Rx1hstop= 2<<2, Rx2stop= 3<<2, X16= 1<<6, | |
| 1990/1223 |
| |
| 1990/1231 | /* wr 5 */ TxRTS= 1<<1, TxEna= 1<<3, TxBreak= 1<<4, TxDTR= 1<<7, Tx5bits= 0<<5, Tx7bits= 1<<5, Tx6bits= 2<<5, Tx8bits= 3<<5, | |
| 1990/1223 |
| |
| 1990/1231 | /* wr 9 */ IntEna= 1<<3, ResetB= 1<<6, ResetA= 2<<6, HardReset= 3<<6, | |
| 1990/1223 |
| |
| 1990/1231 | /* wr 11 */ TRxCOutBR= 2, TxClockBR= 2<<3, RxClockBR= 2<<5, TRxCOI= 1<<2, | |
| 1990/1223 |
| |
| 1990/1231 | /* wr 14 */ BREna= 1, BRSource= 2, | |
| 1990/1223 |
| |
| 1990/1231 | /* rr 0 */ RxReady= 1, TxReady= 1<<2, RxDCD= 1<<3, RxCTS= 1<<5, RxBreak= 1<<7, | |
| 1990/1223 |
| |
| 1990/1231 | /* rr 3 */ ExtPendB= 1, TxPendB= 1<<1, RxPendB= 1<<2, ExtPendA= 1<<3, TxPendA= 1<<4, RxPendA= 1<<5, }; typedef struct Z8530 Z8530; struct Z8530 | |
| 1990/1223 | { | |
| 1990/1231 | uchar ptrb; uchar dummy1; uchar datab; uchar dummy2; uchar ptra; uchar dummy3; uchar dataa; uchar dummy4; }; #define NDELIM 5 typedef struct Duart Duart; struct Duart | |
| 1990/1223 | { | |
| 1990/1231 | QLock; ushort sticky[16]; /* sticky write register values */ uchar *ptr; /* command/pointer register in Z8530 */ uchar *data; /* data register in Z8530 */ }; Duart duart[2]; | |
| 1990/1223 |
| |
| 1990/1231 | #define PRINTING 0x4 #define MASK 0x1 | |
| 1990/1223 | ||
| 1990/1231 | /* * Access registers using the pointer in register 0. */ | |
| 1990/1223 | void | |
| 1990/1231 | duartwrreg(Duart *dp, int addr, int value) | |
| 1990/1223 | { | |
| 1990/1231 | *dp->ptr = addr; *dp->ptr = dp->sticky[addr] | value; | |
| 1990/1223 | } | |
| 1990/1231 | ushort duartrdreg(Duart *dp, int addr) | |
| 1990/1223 | { | |
| 1990/1231 | *dp->ptr = addr; return *dp->ptr; | |
| 1990/1223 | } | |
| 1990/1231 | /* * set the baud rate by calculating and setting the baudrate * generator constant. This will work with fairly non-standard * baud rates. */ | |
| 1990/1223 | void | |
| 1990/1231 | duartsetbaud(Duart *dp, int rate) | |
| 1990/1223 | { | |
| 1990/1231 | int brconst; | |
| 1990/1223 |
| |
| 1990/1231 | brconst = 10000000/(16*2*rate) - 2; duartwrreg(dp, 12, brconst & 0xff); duartwrreg(dp, 13, (brconst>>8) & 0xff); | |
| 1990/1223 | } | |
| 1990/1231 | /* * Initialize just keyboard and mouse for now */ | |
| 1990/1223 | void | |
| 1990/1231 | duartinit(void) | |
| 1990/1223 | { | |
| 1990/1231 | Duart *dp; Z8530 *zp; KMap *k; | |
| 1990/1223 |
| |
| 1990/1231 | k = kmappa(KMDUART, PTEIO|PTENOCACHE); zp = (Z8530*)k->va; | |
| 1990/1223 |
| |
| 1990/1231 | /* * get port addresses */ duart[0].ptr = &zp->ptra; duart[0].data = &zp->dataa; duart[1].ptr = &zp->ptrb; duart[1].data = &zp->datab; | |
| 1990/1223 |
| |
| 1990/1231 | for(dp=duart; dp < &duart[2]; dp++){ memset(dp->sticky, 0, sizeof(dp->sticky)); | |
| 1990/1223 |
| |
| 1990/1231 | /* * enable I/O, 8 bits/character */ dp->sticky[3] = RxEna | Rx8bits; duartwrreg(dp, 3, 0); dp->sticky[5] = TxEna | Tx8bits; duartwrreg(dp, 5, 0); /* * turn on interrupts */ dp->sticky[1] |= TxIntEna | RxIntAllEna; duartwrreg(dp, 1, 0); dp->sticky[9] |= IntEna; duartwrreg(dp, 9, 0); } /* * turn on DTR and RTS */ dp = &duart[1]; dp->sticky[5] |= TxRTS | TxDTR; duartwrreg(dp, 5, 0); | |
| 1990/1223 | } void | |
| 1990/1231 | duartintr(void) | |
| 1990/1223 | { | |
| 1990/1231 | char ch; int cause; Duart *dp; | |
| 1990/1223 |
| |
| 1990/1231 | cause = duartrdreg(&duart[0], 3); | |
| 1990/1223 | /* | |
| 1990/1231 | * Keyboard | |
| 1990/1223 | */ | |
| 1990/1231 | dp = &duart[0]; if(cause & ExtPendA) duartwrreg(dp, 0, ResExtPend); if(cause & RxPendA){ ch = *dp->data; kbdstate(ch); } if(cause & TxPendA) duartwrreg(dp, 0, ResTxPend); | |
| 1990/1223 | /* | |
| 1990/1231 | * Mouse | |
| 1990/1223 | */ | |
| 1990/1231 | dp = &duart[1]; if(cause & ExtPendB) duartwrreg(dp, 0, ResExtPend); if(cause & RxPendB){ ch = *dp->data; mousechar(ch); } if(cause & TxPendB) duartwrreg(dp, 0, ResTxPend); } /* * Map is indexed by keyboard char, output is ASCII */ uchar keymap[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, /* F3 09 F4 0b F5 0d F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0xFF, 0x87, 0xFF, /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ 0xFF, 0x8f, 0x90, 0xFF, 0xFF, 0x1b, '1', '2', /* 3 4 5 6 7 8 9 0 */ '3', '4', '5', '6', '7', '8', '9', '0', /* - = ` bs 2c R4 R5 R6 */ '-', '=', '`', '\b', 0xFF, 0x91, 0x92, 0x93, /* 30 L5 L6 33 34 tab q w */ 0xFF, 0x94, 0x95, 0xFF, 0xFF, '\t', 'q', 'w', /* e r t y u i o p */ 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', /* [ ] del 43 R7 R8 R9 47 */ '[', ']', 0x7F, 0xFF, 0x96, 0x97, 0x98, 0xFF, /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 'a', 's', 'd', /* f g h j k l ; ' */ 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', /* \ ret 5a R10 R11 R12 5e L9 */ '\\', '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, /* 60 L10 62 shift z x c v */ 0xFF, 0x9f, 0xFF, 0xF1, 'z', 'x', 'c', 'v', /* b n m , . / shift lf */ 'b', 'n', 'm', ',', '.', '/', 0xF1, '\r', /* R13 R14 R15 73 74 75 76 caps */ 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, /* left 79 right 7b 7c 7d 7e 7f */ 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; uchar keymapshift[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, /* F3 09 F4 0b F5 0d F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0xFF, 0x87, 0xFF, /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ 0xFF, 0x8f, 0x90, 0xFF, 0xFF, 0x1b, '!', '@', /* 3 4 5 6 7 8 9 0 */ '#', '$', '%', '^', '&', '*', '(', ')', /* - = ` bs 2c R4 R5 R6 */ '_', '+', '~', '\b', 0xFF, 0x91, 0x92, 0x93, /* 30 L5 L6 33 34 tab q w */ 0xFF, 0x94, 0x95, 0xFF, 0xFF, '\t', 'Q', 'W', /* e r t y u i o p */ 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', /* [ ] del 43 R7 R8 R9 47 */ '{', '}', 0x7F, 0xFF, 0x96, 0x97, 0x98, 0xFF, /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 'A', 'S', 'D', /* f g h j k l ; ' */ 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', /* \ ret 5a R10 R11 R12 5e L9 */ '|', '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, /* 60 L10 62 shift z x c v */ 0xFF, 0x9f, 0xFF, 0xF1, 'Z', 'X', 'C', 'V', /* b n m , . / shift lf */ 'B', 'N', 'M', '<', '>', '?', 0xF1, '\r', /* R13 R14 R15 73 74 75 76 caps */ 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, /* left 79 right 7b 7c 7d 7e 7f */ 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; uchar keymapctrl[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, /* F3 09 F4 0b F5 0d F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0xFF, 0x87, 0xFF, /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ 0xFF, 0x8f, 0x90, 0xFF, 0xFF, 0x1b, '!', '@', /* 3 4 5 6 7 8 9 0 */ '#', '$', '%', '^', '&', '*', '(', ')', /* - = ` bs 2c R4 R5 R6 */ '_', '+', '~', '\b', 0xFF, 0x91, 0x92, 0x93, /* 30 L5 L6 33 34 tab q w */ 0xFF, 0x94, 0x95, 0xFF, 0xFF, '\t', 0x11, 0x17, /* e r t y u i o p */ 0x05, 0x12, 0x14, 0x19, 0x15, 0x09, 0x0F, 0x10, /* [ ] del 43 R7 R8 R9 47 */ 0x1B, 0x1D, 0x7F, 0xFF, 0x96, 0x97, 0x98, 0xFF, /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 0x01, 0x13, 0x04, /* f g h j k l ; ' */ 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C,':', '"', /* \ ret 5a R10 R11 R12 5e L9 */ 0x1C, '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, /* 60 L10 62 shift z x c v */ 0xFF, 0x9f, 0xFF, 0xF1, 0x1A, 0x18, 0x03, 0x16, /* b n m , . / shift lf */ 0x02, 0x0E, 0x0D, '<', '>', '?', 0xF1, '\r', /* R13 R14 R15 73 74 75 76 caps */ 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, /* left 79 right 7b 7c 7d 7e 7f */ 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; uchar keymapshiftctrl[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, /* F3 09 F4 0b F5 0d F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0xFF, 0x87, 0xFF, /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ 0xFF, 0x8f, 0x90, 0xFF, 0xFF, 0x1b, '!', 0x00, /* 3 4 5 6 7 8 9 0 */ '#', '$', '%', 0x1E, '&', '*', '(', ')', /* - = ` bs 2c R4 R5 R6 */ 0x1F, '+', '~', '\b', 0xFF, 0x91, 0x92, 0x93, /* 30 L5 L6 33 34 tab q w */ 0xFF, 0x94, 0x95, 0xFF, 0xFF, '\t', 0x11, 0x17, /* e r t y u i o p */ 0x05, 0x12, 0x14, 0x19, 0x15, 0x09, 0x0F, 0x10, /* [ ] del 43 R7 R8 R9 47 */ 0x1B, 0x1D, 0x7F, 0xFF, 0x96, 0x97, 0x98, 0xFF, /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 0x01, 0x13, 0x04, /* f g h j k l ; ' */ 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C,':', '"', /* \ ret 5a R10 R11 R12 5e L9 */ 0x1C, '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, /* 60 L10 62 shift z x c v */ 0xFF, 0x9f, 0xFF, 0xF1, 0x1A, 0x18, 0x03, 0x16, /* b n m , . / shift lf */ 0x02, 0x0E, 0x0D, '<', '>', '?', 0xF1, '\r', /* R13 R14 R15 73 74 75 76 caps */ 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, /* left 79 right 7b 7c 7d 7e 7f */ 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; static uchar *kbdmap[4] = { keymap, keymapshift, keymapctrl, keymapshiftctrl }; void kbdstate(int c) { static shift = 0x00; static caps = 0; static repeatc = -1; static long startclick; int tc; tc = kbdmap[shift][c&0x7F]; /* if(c==0xFFFF && repeatc!=-1 && clicks>startclick+40 && (clicks-startclick)%3==0){ kbdc = repeatc; | |
| 1990/1223 | return; } | |
| 1990/1231 | */ if(c==0x7F){ /* all keys up */ repeatc = -1; return; } if(tc == 0xFF) /* shouldn't happen; ignore */ return; if(c & 0x80){ /* key went up */ if(tc == 0xF0){ /* control */ shift &= ~2; repeatc =- 1; return; | |
| 1990/1223 | } | |
| 1990/1231 | if(tc == 0xF1){ /* shift */ shift &= ~1; repeatc = -1; return; } if(tc == 0xF2){ /* caps */ repeatc = -1; return; } if(tc == repeatc) repeatc = -1; return; | |
| 1990/1223 | } | |
| 1990/1231 | if(tc == 0xF0){ /* control */ shift |= 2; repeatc = -1; return; | |
| 1990/1223 | } | |
| 1990/1231 | if(tc==0xF1){ /* shift */ shift |= 1; repeatc = -1; return; } if(tc==0xF2){ /* caps */ caps ^= 1; repeatc =- 1; return; } if(caps && 'a'<=tc && tc<='z') tc |= ' '; repeatc = tc; /* startclick = clicks; */ if(tc == 0x10) /* ctrl-p */ reset(); kbdchar(tc); | |
| 1990/1223 | } | |
| 1990/1231/sys/src/9/ss/screen.c:266,271 – 1991/0110/sys/src/9/ss/screen.c:266,272 (short | long) | ||
| 1990/1231 | Duart *dp; | |
| 1990/1223 | ||
| 1990/1231 | cause = duartrdreg(&duart[0], 3); | |
| 1991/0110 | ||
| 1990/1223 | /* | |
| 1990/1231 | * Keyboard | |
| 1990/1223 | */ | |
| 1990/1231/sys/src/9/ss/screen.c:290,295 – 1991/0110/sys/src/9/ss/screen.c:291,297 | ||
| 1990/1231 | } if(cause & TxPendB) duartwrreg(dp, 0, ResTxPend); | |
| 1991/0110 | cause = duartrdreg(&duart[0], 3); | |
| 1990/1231 | } /* | |
| 1991/0110/sys/src/9/ss/screen.c:30,38 – 1991/0112/sys/src/9/ss/screen.c:30,38 (short | long) | ||
| 1990/1223 | { | |
| 1990/1226 | (ulong*)SCREENSEGM, | |
| 1990/1223 | 0, | |
| 1990/1226 |
| |
| 1991/0112 | 1152/32, | |
| 1990/1223 | 0, | |
| 1990/1226 |
| |
| 1991/0112 | {0, 0, 1152, 900}, | |
| 1990/1223 | 0 }; | |
| 1991/0110/sys/src/9/ss/screen.c:295,307 – 1991/0112/sys/src/9/ss/screen.c:295,312 | ||
| 1990/1231 | } /* | |
| 1991/0112 | * Map is indexed by keyboard char, output is ASCII. * Gnotisms: Return sends newline and Line Feed sends carriage return. * Delete and Backspace both send backspace. * Num Lock sends delete (rubout). * Alt Graph is VIEW (scroll). * Compose builds Latin-1 characters. | |
| 1990/1231 | */ uchar keymap[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, | |
| 1991/0112 | /* F3 09 F4 0b F5 altgr F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0x80, 0x87, 0xFF, | |
| 1990/1231 | /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ | |
| 1991/0110/sys/src/9/ss/screen.c:310,334 – 1991/0112/sys/src/9/ss/screen.c:315,339 | ||
| 1990/1231 | '3', '4', '5', '6', '7', '8', '9', '0', /* - = ` bs 2c R4 R5 R6 */ '-', '=', '`', '\b', 0xFF, 0x91, 0x92, 0x93, | |
| 1991/0112 | /* 30 L5 del L6 34 tab q w */ 0xFF, 0x94, 0xFF, 0x95, 0xFF, '\t', 'q', 'w', | |
| 1990/1231 | /* e r t y u i o p */ 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', | |
| 1991/0112 | /* [ ] dele comp R7 R8 R9 r - */ '[', ']', '\b', 0xB6, 0x96, 0x97, 0x98, 0xFF, | |
| 1990/1231 | /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 'a', 's', 'd', /* f g h j k l ; ' */ 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', | |
| 1991/0112 | /* \ ret enter R10 R11 R12 ins L9 */ | |
| 1990/1231 | '\\', '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, | |
| 1991/0112 | /* 60 L10 numlk shift z x c v */ 0xFF, 0x9f, 0x7F, 0xF1, 'z', 'x', 'c', 'v', | |
| 1990/1231 | /* b n m , . / shift lf */ 'b', 'n', 'm', ',', '.', '/', 0xF1, '\r', | |
| 1991/0112 | /* R13 R14 R15 73 74 75 help caps */ | |
| 1990/1231 | 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, | |
| 1991/0112 | /* lloz 79 rloz 7b 7c r + 7e 7f */ | |
| 1990/1231 | 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; | |
| 1991/0110/sys/src/9/ss/screen.c:335,342 – 1991/0112/sys/src/9/ss/screen.c:340,347 | ||
| 1990/1231 | uchar keymapshift[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, | |
| 1991/0112 | /* F3 09 F4 0b F5 altgr F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0x80, 0x87, 0xFF, | |
| 1990/1231 | /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ | |
| 1991/0110/sys/src/9/ss/screen.c:345,369 – 1991/0112/sys/src/9/ss/screen.c:350,374 | ||
| 1990/1231 | '#', '$', '%', '^', '&', '*', '(', ')', /* - = ` bs 2c R4 R5 R6 */ '_', '+', '~', '\b', 0xFF, 0x91, 0x92, 0x93, | |
| 1991/0112 | /* 30 L5 del L6 34 tab q w */ 0xFF, 0x94, 0xFF, 0x95, 0xFF, '\t', 'Q', 'W', | |
| 1990/1231 | /* e r t y u i o p */ 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', | |
| 1991/0112 | /* [ ] dele comp R7 R8 R9 r - */ '{', '}', '\b', 0xB6, 0x96, 0x97, 0x98, 0xFF, | |
| 1990/1231 | /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 'A', 'S', 'D', /* f g h j k l ; ' */ 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', | |
| 1991/0112 | /* \ ret enter R10 R11 R12 ins L9 */ | |
| 1990/1231 | '|', '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, | |
| 1991/0112 | /* 60 L10 numlk shift z x c v */ 0xFF, 0x9f, 0x7F, 0xF1, 'Z', 'X', 'C', 'V', | |
| 1990/1231 | /* b n m , . / shift lf */ 'B', 'N', 'M', '<', '>', '?', 0xF1, '\r', | |
| 1991/0112 | /* R13 R14 R15 73 74 75 help caps */ | |
| 1990/1231 | 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, | |
| 1991/0112 | /* lloz 79 rloz 7b 7c r + 7e 7f */ | |
| 1990/1231 | 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; | |
| 1991/0110/sys/src/9/ss/screen.c:370,377 – 1991/0112/sys/src/9/ss/screen.c:375,382 | ||
| 1990/1231 | uchar keymapctrl[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, | |
| 1991/0112 | /* F3 09 F4 0b F5 altgr F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0x80, 0x87, 0xFF, | |
| 1990/1231 | /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ | |
| 1991/0110/sys/src/9/ss/screen.c:380,404 – 1991/0112/sys/src/9/ss/screen.c:385,409 | ||
| 1990/1231 | '#', '$', '%', '^', '&', '*', '(', ')', /* - = ` bs 2c R4 R5 R6 */ '_', '+', '~', '\b', 0xFF, 0x91, 0x92, 0x93, | |
| 1991/0112 | /* 30 L5 del L6 34 tab q w */ 0xFF, 0x94, 0xFF, 0x95, 0xFF, '\t', 0x11, 0x17, | |
| 1990/1231 | /* e r t y u i o p */ 0x05, 0x12, 0x14, 0x19, 0x15, 0x09, 0x0F, 0x10, | |
| 1991/0112 | /* [ ] dele comp R7 R8 R9 r - */ 0x1B, 0x1D, '\b', 0xB6, 0x96, 0x97, 0x98, 0xFF, | |
| 1990/1231 | /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 0x01, 0x13, 0x04, /* f g h j k l ; ' */ 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C,':', '"', | |
| 1991/0112 | /* \ ret enter R10 R11 R12 ins L9 */ | |
| 1990/1231 | 0x1C, '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, | |
| 1991/0112 | /* 60 L10 numlk shift z x c v */ 0xFF, 0x9f, 0x7F, 0xF1, 0x1A, 0x18, 0x03, 0x16, | |
| 1990/1231 | /* b n m , . / shift lf */ 0x02, 0x0E, 0x0D, '<', '>', '?', 0xF1, '\r', | |
| 1991/0112 | /* R13 R14 R15 73 74 75 help caps */ | |
| 1990/1231 | 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, | |
| 1991/0112 | /* lloz 79 rloz 7b 7c r + 7e 7f */ | |
| 1990/1231 | 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; | |
| 1991/0110/sys/src/9/ss/screen.c:405,412 – 1991/0112/sys/src/9/ss/screen.c:410,417 | ||
| 1990/1231 | uchar keymapshiftctrl[128] = { /* 00 L1 02 L2 04 F1 F2 07 */ 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x82, 0x83, 0xFF, | |
| 1991/0112 | /* F3 09 F4 0b F5 altgr F6 0f */ 0x84, 0xFF, 0x85, 0xFF, 0x86, 0x80, 0x87, 0xFF, | |
| 1990/1231 | /* F7 F8 F9 Alt 14 R1 R2 R3 */ 0x88, 0x89, 0x8a, 0x8b, 0xFF, 0x8c, 0x8d, 0x8e, /* 18 L3 L4 1b 1c Esc 1 2 */ | |
| 1991/0110/sys/src/9/ss/screen.c:415,439 – 1991/0112/sys/src/9/ss/screen.c:420,444 | ||
| 1990/1231 | '#', '$', '%', 0x1E, '&', '*', '(', ')', /* - = ` bs 2c R4 R5 R6 */ 0x1F, '+', '~', '\b', 0xFF, 0x91, 0x92, 0x93, | |
| 1991/0112 | /* 30 L5 del L6 34 tab q w */ 0xFF, 0x94, 0xFF, 0x95, 0xFF, '\t', 0x11, 0x17, | |
| 1990/1231 | /* e r t y u i o p */ 0x05, 0x12, 0x14, 0x19, 0x15, 0x09, 0x0F, 0x10, | |
| 1991/0112 | /* [ ] dele comp R7 R8 R9 r - */ 0x1B, 0x1D, '\b', 0xB6, 0x96, 0x97, 0x98, 0xFF, | |
| 1990/1231 | /* L7 L8 4a 4b ctrl a s d */ 0x99, 0x9a, 0xFF, 0xFF, 0xF0, 0x01, 0x13, 0x04, /* f g h j k l ; ' */ 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C,':', '"', | |
| 1991/0112 | /* \ ret enter R10 R11 R12 ins L9 */ 0x1C, '\n', 0xFF, 0x9b, 0x9c, 0x9d, 0xFF, 0x9e, /* 60 L10 numlk shift z x c v */ 0xFF, 0x9f, 0x7F, 0xF1, 0x1A, 0x18, 0x03, 0x16, | |
| 1990/1231 | /* b n m , . / shift lf */ 0x02, 0x0E, 0x0D, '<', '>', '?', 0xF1, '\r', | |
| 1991/0112 | /* R13 R14 R15 73 74 75 help caps */ | |
| 1990/1231 | 0xA0, 0xA1, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, | |
| 1991/0112 | /* lloz 79 rloz 7b 7c r + 7e 7f */ | |
| 1990/1231 | 0xA3, ' ', 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; | |
| 1991/0110/sys/src/9/ss/screen.c:444,449 – 1991/0112/sys/src/9/ss/screen.c:449,594 | ||
| 1990/1231 | keymapshiftctrl }; | |
| 1991/0112 | struct latin { uchar l; char c[2]; }latintab[] = { '€', "!!", /* spanish initial ! */ '€', "c|", /* cent */ '€', "c$", /* cent */ '€', "l$", /* pound sterling */ '€', "g$", /* general currency */ '€', "y$", /* yen */ '€', "j$", /* yen */ '€', "||", /* broken vertical bar */ '€', "SS", /* section symbol */ '€', "\"\"", /* dieresis */ '€', "cr", /* copyright */ '€', "cO", /* copyright */ '€', "sa", /* super a, feminine ordinal */ '€', "<<", /* left angle quotation */ '€', "no", /* not sign, hooked overbar */ '€', "--", /* soft hyphen */ '€', "rg", /* registered trademark */ '€', "__", /* macron */ '€', "s0", /* degree (sup o) */ '€', "+-", /* plus-minus */ '€', "s2", /* sup 2 */ '€', "s3", /* sup 3 */ '€', "''", /* grave accent */ '€', "mu", /* mu */ '€', "pg", /* paragraph (pilcrow) */ '€', "..", /* centered . */ '€', ",,", /* cedilla */ '€', "s1", /* sup 1 */ '€', "so", /* sup o */ '€', ">>", /* right angle quotation */ '€', "14", /* 1/4 */ '€', "12", /* 1/2 */ '€', "34", /* 3/4 */ '€', "??", /* spanish initial ? */ '€', "A`", /* A grave */ '€', "A'", /* A acute */ '€', "A^", /* A circumflex */ '€', "A~", /* A tilde */ '€', "A\"", /* A dieresis */ '€', "A:", /* A dieresis */ '€', "Ao", /* A circle */ '€', "AO", /* A circle */ '€', "Ae", /* AE ligature */ '€', "AE", /* AE ligature */ '€', "C,", /* C cedilla */ '€', "E`", /* E grave */ '€', "E'", /* E acute */ '€', "E^", /* E circumflex */ '€', "E\"", /* E dieresis */ '€', "E:", /* E dieresis */ '€', "I`", /* I grave */ '€', "I'", /* I acute */ '€', "I^", /* I circumflex */ '€', "I\"", /* I dieresis */ '€', "I:", /* I dieresis */ '€', "D-", /* Eth */ '€', "N~", /* N tilde */ '€', "O`", /* O grave */ '€', "O'", /* O acute */ '€', "O^", /* O circumflex */ '€', "O~", /* O tilde */ '€', "O\"", /* O dieresis */ '€', "O:", /* O dieresis */ '€', "OE", /* O dieresis */ '€', "Oe", /* O dieresis */ '€', "xx", /* times sign */ '€', "O/", /* O slash */ '€', "U`", /* U grave */ '€', "U'", /* U acute */ '€', "U^", /* U circumflex */ '€', "U\"", /* U dieresis */ '€', "U:", /* U dieresis */ '€', "UE", /* U dieresis */ '€', "Ue", /* U dieresis */ '€', "Y'", /* Y acute */ '€', "P|", /* Thorn */ '€', "Th", /* Thorn */ '€', "TH", /* Thorn */ '€', "ss", /* sharp s */ '€', "a`", /* a grave */ '€', "a'", /* a acute */ '€', "a^", /* a circumflex */ '€', "a~", /* a tilde */ '€', "a\"", /* a dieresis */ '€', "a:", /* a dieresis */ '€', "ao", /* a circle */ '€', "ae", /* ae ligature */ '€', "c,", /* c cedilla */ '€', "e`", /* e grave */ '€', "e'", /* e acute */ '€', "e^", /* e circumflex */ '€', "e\"", /* e dieresis */ '€', "e:", /* e dieresis */ '€', "i`", /* i grave */ '€', "i'", /* i acute */ '€', "i^", /* i circumflex */ '€', "i\"", /* i dieresis */ '€', "i:", /* i dieresis */ '€', "d-", /* eth */ '€', "n~", /* n tilde */ '€', "o`", /* o grave */ '€', "o'", /* o acute */ '€', "o^", /* o circumflex */ '€', "o~", /* o tilde */ '€', "o\"", /* o dieresis */ '€', "o:", /* o dieresis */ '€', "oe", /* o dieresis */ '€', "-:", /* divide sign */ '€', "o/", /* o slash */ '€', "u`", /* u grave */ '€', "u'", /* u acute */ '€', "u^", /* u circumflex */ '€', "u\"", /* u dieresis */ '€', "u:", /* u dieresis */ '€', "ue", /* u dieresis */ '€', "y'", /* y acute */ '€', "th", /* thorn */ '€', "p|", /* thorn */ '€', "y\"", /* y dieresis */ '€', "y:", /* y dieresis */ 0, 0, }; int latin1(int k1, int k2) { int i; struct latin *l; for(l=latintab; l->l; l++) if(k1==l->c[0] && k2==l->c[1]) return l->l; return 0; } | |
| 1990/1231 | void kbdstate(int c) { | |
| 1991/0110/sys/src/9/ss/screen.c:451,460 – 1991/0112/sys/src/9/ss/screen.c:596,605 | ||
| 1990/1231 | static caps = 0; static repeatc = -1; static long startclick; | |
| 1991/0112 | static int kbdstate, k1, k2; | |
| 1990/1231 | int tc; tc = kbdmap[shift][c&0x7F]; | |
| 1991/0110/sys/src/9/ss/screen.c:507,513 – 1991/0112/sys/src/9/ss/screen.c:652,676 | ||
| 1990/1231 | /* startclick = clicks; */ | |
| 1991/0112 | if(tc == 0xB6) /* Compose */ kbdstate = 1; else{ switch(kbdstate){ case 1: k1 = tc; kbdstate = 2; break; case 2: k2 = tc; tc = latin1(k1, k2); if(c == 0){ kbdchar(k1); tc = k2; } /* fall through */ default: kbdstate = 0; kbdchar(tc); } } | |
| 1990/1223 | } | |
| 1991/0112/sys/src/9/ss/screen.c:20,30 – 1991/0604/sys/src/9/ss/screen.c:20,26 (short | long) | ||
| 1990/1223 | int bwid; }out; | |
| 1990/1231 |
| |
| 1990/1223 | GBitmap gscreen = { | |
| 1991/0112/sys/src/9/ss/screen.c:78,300 – 1991/0604/sys/src/9/ss/screen.c:74,87 | ||
| 1990/1223 | } } | |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | void | |
| 1990/1231 |
| |
| 1991/0604 | screenputs(char *s, int n) | |
| 1990/1223 | { | |
| 1990/1231 |
| |
| 1991/0604 | while(n-- > 0) screenputc(*s++); | |
| 1990/1223 | } | |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 | /* | |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 | ||
| 1990/1231 |
| |
| 1991/0110 | ||
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1991/0110 |
| |
| 1990/1231 |
| |
| 1991/0112 | * Map is indexed by keyboard char, output is ASCII. * Gnotisms: Return sends newline and Line Feed sends carriage return. * Delete and Backspace both send backspace. | |
| 1991/0112/sys/src/9/ss/screen.c:589,596 – 1991/0604/sys/src/9/ss/screen.c:376,383 | ||
| 1991/0112 | return 0; } | |
| 1990/1231 |
| |
| 1991/0604 | int kbdstate(IOQ *q, int c) | |
| 1990/1231 | { static shift = 0x00; static caps = 0; | |
| 1991/0112/sys/src/9/ss/screen.c:664,676 – 1991/0604/sys/src/9/ss/screen.c:451,473 | ||
| 1991/0112 | k2 = tc; tc = latin1(k1, k2); if(c == 0){ | |
| 1991/0604 | kbdputc(&kbdq, k1); | |
| 1991/0112 | tc = k2; } /* fall through */ default: kbdstate = 0; | |
| 1991/0604 | kbdputc(&kbdq, tc); | |
| 1991/0112 | } } | |
| 1991/0604 | } void buzz(int freq, int dur) { } void lights(int mask) { | |
| 1990/1223 | } | |
| 1991/0604/sys/src/9/ss/screen.c:9,14 – 1991/0707/sys/src/9/ss/screen.c:9,15 (short | long) | ||
| 1990/1223 | #include <libg.h> #include <gnot.h> | |
| 1991/0707 | #include "mouse.h" | |
| 1990/1223 | #define MINX 8 | |
| 1991/0604/sys/src/9/ss/screen.c:470,473 – 1991/0707/sys/src/9/ss/screen.c:471,520 | ||
| 1991/0604 | void lights(int mask) { | |
| 1991/0707 | } int screenbits(void) { return 1; /* bits per pixel */ } void getcolor(ulong p, ulong *pr, ulong *pg, ulong *pb) { ulong ans; /* * The slc monochrome says 0 is white (max intensity) */ if(p == 0) ans = ~0; else ans = 0; *pr = *pg = *pb = ans; } int setcolor(ulong p, ulong r, ulong g, ulong b) { return 0; /* can't change mono screen colormap */ } int hwcursset(uchar *s, uchar *c, int ox, int oy) { return 0; } int hwcursmove(int x, int y) { return 0; } void mouseclock(void) /* called splhi */ { mouseupdate(1); | |
| 1990/1223 | } | |
| 1991/0707/sys/src/9/ss/screen.c:9,15 – 1991/0708/sys/src/9/ss/screen.c:9,15 (short | long) | ||
| 1990/1223 | #include <libg.h> #include <gnot.h> | |
| 1991/0707 |
| |
| 1991/0708 | #include "screen.h" | |
| 1990/1223 | #define MINX 8 | |
| 1991/0708/sys/src/9/ss/screen.c:382,401 – 1991/0713/sys/src/9/ss/screen.c:382,396 (short | long) | ||
| 1990/1231 | { static shift = 0x00; static caps = 0; | |
| 1991/0713 | static int repeatc; | |
| 1991/0112 | static int kbdstate, k1, k2; | |
| 1990/1231 | int tc; tc = kbdmap[shift][c&0x7F]; | |
| 1990/1223 |
| |
| 1990/1231 |
| |
| 1991/0713 | norepeat: kbdrepeat(0); | |
| 1990/1231 | return; } if(tc == 0xFF) /* shouldn't happen; ignore */ | |
| 1991/0708/sys/src/9/ss/screen.c:403,445 – 1991/0713/sys/src/9/ss/screen.c:398,430 | ||
| 1990/1231 | if(c & 0x80){ /* key went up */ if(tc == 0xF0){ /* control */ shift &= ~2; | |
| 1991/0713 | goto norepeat; | |
| 1990/1223 | } | |
| 1990/1231 | if(tc == 0xF1){ /* shift */ shift &= ~1; | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } if(tc == 0xF2){ /* caps */ | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } | |
| 1991/0713 | goto norepeat; | |
| 1990/1223 | } | |
| 1990/1231 | if(tc == 0xF0){ /* control */ shift |= 2; | |
| 1991/0713 | goto norepeat; | |
| 1990/1223 | } | |
| 1990/1231 | if(tc==0xF1){ /* shift */ shift |= 1; | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } if(tc==0xF2){ /* caps */ caps ^= 1; | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } if(caps && 'a'<=tc && tc<='z') tc |= ' '; repeatc = tc; | |
| 1991/0713 | kbdrepeat(1); | |
| 1991/0112 | if(tc == 0xB6) /* Compose */ kbdstate = 1; else{ | |
| 1991/0713/sys/src/9/ss/screen.c:237,382 – 1991/1108/sys/src/9/ss/screen.c:237,242 (short | long) | ||
| 1990/1231 | keymapshiftctrl }; | |
| 1991/0112 |
| |
| 1991/0604 | int kbdstate(IOQ *q, int c) | |
| 1990/1231 | { | |
| 1991/1108/sys/src/9/ss/screen.c:244,309 – 1991/1211/sys/src/9/ss/screen.c:244,327 (short | long) | ||
| 1990/1231 | static caps = 0; static long startclick; | |
| 1991/0713 | static int repeatc; | |
| 1991/0112 |
| |
| 1990/1231 |
| |
| 1991/1211 | static int lstate; static uchar kc[4]; uchar ch, code; int i, nk; | |
| 1990/1231 |
| |
| 1991/1211 | ch = kbdmap[shift][c&0x7F]; | |
| 1990/1231 | if(c==0x7F){ /* all keys up */ | |
| 1991/0713 | norepeat: kbdrepeat(0); | |
| 1990/1231 | return; } | |
| 1991/1211 | if(ch == 0xFF) /* shouldn't happen; ignore */ | |
| 1990/1231 | return; if(c & 0x80){ /* key went up */ | |
| 1991/1211 | if(ch == 0xF0){ /* control */ | |
| 1990/1231 | shift &= ~2; | |
| 1991/0713 | goto norepeat; | |
| 1990/1223 | } | |
| 1990/1231 |
| |
| 1991/1211 | if(ch == 0xF1){ /* shift */ | |
| 1990/1231 | shift &= ~1; | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } | |
| 1991/1211 | if(ch == 0xF2){ /* caps */ | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } | |
| 1991/0713 | goto norepeat; | |
| 1990/1223 | } | |
| 1990/1231 |
| |
| 1991/1211 | if(ch == 0xF0){ /* control */ | |
| 1990/1231 | shift |= 2; | |
| 1991/0713 | goto norepeat; | |
| 1990/1223 | } | |
| 1990/1231 |
| |
| 1991/1211 | if(ch==0xF1){ /* shift */ | |
| 1990/1231 | shift |= 1; | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } | |
| 1991/1211 | if(ch==0xF2){ /* caps */ | |
| 1990/1231 | caps ^= 1; | |
| 1991/0713 | goto norepeat; | |
| 1990/1231 | } | |
| 1991/1211 | if(caps && 'a'<=ch && ch<='z') ch |= ' '; repeatc = ch; | |
| 1991/0713 | kbdrepeat(1); | |
| 1991/0112 |
| |
| 1991/1211 | if(ch == 0xB6) /* Compose */ lstate = 1; | |
| 1991/0112 | else{ | |
| 1991/1211 | switch(lstate){ | |
| 1991/0112 | case 1: | |
| 1991/1211 | kc[0] = ch; lstate = 2; if(ch == 'X') lstate = 3; | |
| 1991/0112 | break; case 2: | |
| 1991/0604 |
| |
| 1991/0112 |
| |
| 1991/1211 | kc[1] = ch; c = latin1(kc); nk = 2; putit: lstate = 0; if(c != -1) kbdputc(&kbdq, c); else for(i=0; i<nk; i++) kbdputc(&kbdq, kc[i]); break; case 3: case 4: case 5: kc[lstate-2] = ch; lstate++; break; case 6: kc[4] = ch; c = unicode(kc); nk = 5; goto putit; | |
| 1991/0112 | default: | |
| 1991/0604 |
| |
| 1991/1211 | kbdputc(&kbdq, ch); break; | |
| 1991/0112 | } } | |
| 1991/0604 | } | |
| 1991/1211/sys/src/9/ss/screen.c:78,85 – 1991/1223/sys/src/9/ss/screen.c:78,121 (short | long) | ||
| 1990/1223 | void | |
| 1991/0604 | screenputs(char *s, int n) | |
| 1990/1223 | { | |
| 1991/0604 |
| |
| 1991/1223 | Rune r; int i; char buf[4]; while(n > 0){ i = chartorune(&r, s); if(i == 0){ s++; --n; continue; } memmove(buf, s, i); buf[i] = 0; n -= i; s += i; if(r == '\n'){ out.pos.x = MINX; out.pos.y += defont0.height; if(out.pos.y > gscreen.r.max.y-defont0.height) out.pos.y = gscreen.r.min.y; gbitblt(&gscreen, Pt(0, out.pos.y), &gscreen, Rect(0, out.pos.y, gscreen.r.max.x, out.pos.y+2*defont0.height), 0); }else if(r == '\t'){ out.pos.x += (8-((out.pos.x-MINX)/out.bwid&7))*out.bwid; if(out.pos.x >= gscreen.r.max.x) screenputs("\n", 1); }else if(r == '\b'){ if(out.pos.x >= out.bwid+MINX){ out.pos.x -= out.bwid; screenputs(" ", 1); out.pos.x -= out.bwid; } }else{ if(out.pos.x >= gscreen.r.max.x-out.bwid) screenputs("\n", 1); out.pos = gstring(&gscreen, out.pos, defont, buf, S); } } | |
| 1990/1223 | } | |
| 1990/1231 | /* | |
| 1991/1223/sys/src/9/ss/screen.c:44,81 – 1991/1225/sys/src/9/ss/screen.c:44,49 (short | long) | ||
| 1990/1223 | } void | |
| 1990/1226 |
| |
| 1990/1223 |
| |
| 1991/0604 | screenputs(char *s, int n) | |
| 1990/1223 | { | |
| 1991/1223 | Rune r; | |
| 1991/1225/sys/src/9/ss/screen.c:33,38 – 1991/1228/sys/src/9/ss/screen.c:33,40 (short | long) | ||
| 1990/1223 | 0 }; | |
| 1991/1228 | Lock screenlock; | |
| 1990/1223 | void screeninit(void) { | |
| 1991/1225/sys/src/9/ss/screen.c:44,49 – 1991/1228/sys/src/9/ss/screen.c:46,62 | ||
| 1990/1223 | } void | |
| 1991/1228 | screenputnl(void) { out.pos.x = MINX; out.pos.y += defont0.height; if(out.pos.y > gscreen.r.max.y-defont0.height) out.pos.y = gscreen.r.min.y; gbitblt(&gscreen, Pt(0, out.pos.y), &gscreen, Rect(0, out.pos.y, gscreen.r.max.x, out.pos.y+2*defont0.height), 0); } void | |
| 1991/0604 | screenputs(char *s, int n) | |
| 1990/1223 | { | |
| 1991/1223 | Rune r; | |
| 1991/1225/sys/src/9/ss/screen.c:50,55 – 1991/1228/sys/src/9/ss/screen.c:63,69 | ||
| 1991/1223 | int i; char buf[4]; | |
| 1991/1228 | lock(&screenlock); | |
| 1991/1223 | while(n > 0){ i = chartorune(&r, s); if(i == 0){ | |
| 1991/1225/sys/src/9/ss/screen.c:61,89 – 1991/1228/sys/src/9/ss/screen.c:75,98 | ||
| 1991/1223 | buf[i] = 0; n -= i; s += i; | |
| 1991/1228 | if(r == '\n') screenputnl(); else if(r == '\t'){ | |
| 1991/1223 | out.pos.x += (8-((out.pos.x-MINX)/out.bwid&7))*out.bwid; if(out.pos.x >= gscreen.r.max.x) | |
| 1991/1228 | screenputnl(); | |
| 1991/1223 | }else if(r == '\b'){ if(out.pos.x >= out.bwid+MINX){ out.pos.x -= out.bwid; | |
| 1991/1228 | gstring(&gscreen, out.pos, defont, " ", S); | |
| 1991/1223 | } }else{ if(out.pos.x >= gscreen.r.max.x-out.bwid) | |
| 1991/1228 | screenputnl(); | |
| 1991/1223 | out.pos = gstring(&gscreen, out.pos, defont, buf, S); } } | |
| 1991/1228 | unlock(&screenlock); | |
| 1990/1223 | } | |
| 1990/1231 | /* | |
| 1991/1228/sys/src/9/ss/screen.c:5,11 – 1992/0111/sys/src/9/ss/screen.c:5,11 (short | long) | ||
| 1990/1223 | #include "fns.h" #include "io.h" #include "ureg.h" | |
| 1992/0111 | #include "../port/error.h" | |
| 1990/1223 | #include <libg.h> #include <gnot.h> | |
| 1992/0111/sys/src/9/ss/screen.c:4,10 – 1992/0120/sys/src/9/ss/screen.c:4,9 (short | long) | ||
| 1990/1223 | #include "dat.h" #include "fns.h" #include "io.h" | |
| 1992/0111 | #include "../port/error.h" | |
| 1990/1223 | #include <libg.h> | |
| 1992/0120/sys/src/9/ss/screen.c:12,19 – 1992/0208/sys/src/9/ss/screen.c:12,19 (short | long) | ||
| 1990/1223 | #define MINX 8 | |
| 1992/0208 | extern GSubfont defont0; GSubfont *defont; | |
| 1990/1223 | struct{ Point pos; | |
| 1992/0120/sys/src/9/ss/screen.c:83,94 – 1992/0208/sys/src/9/ss/screen.c:83,94 | ||
| 1991/1223 | }else if(r == '\b'){ if(out.pos.x >= out.bwid+MINX){ out.pos.x -= out.bwid; | |
| 1991/1228 |
| |
| 1992/0208 | gsubfstring(&gscreen, out.pos, defont, " ", S); | |
| 1991/1223 | } }else{ if(out.pos.x >= gscreen.r.max.x-out.bwid) | |
| 1991/1228 | screenputnl(); | |
| 1991/1223 |
| |
| 1992/0208 | out.pos = gsubfstring(&gscreen, out.pos, defont, buf, S); | |
| 1991/1223 | } } | |
| 1991/1228 | unlock(&screenlock); | |
| 1992/0208/sys/src/9/ss/screen.c:6,12 – 1992/0209/sys/src/9/ss/screen.c:6,12 (short | long) | ||
| 1990/1223 | #include "io.h" | |
| 1992/0111 | #include "../port/error.h" | |
| 1990/1223 |
| |
| 1992/0209 | #include <libng.h> | |
| 1990/1223 | #include <gnot.h> | |
| 1991/0708 | #include "screen.h" | |
| 1990/1223 | ||
| 1992/0209/sys/src/9/ss/screen.c:6,12 – 1992/0211/sys/src/9/ss/screen.c:6,12 (short | long) | ||
| 1990/1223 | #include "io.h" | |
| 1992/0111 | #include "../port/error.h" | |
| 1990/1223 | ||
| 1992/0209 |
| |
| 1992/0211 | #include <libg.h> | |
| 1990/1223 | #include <gnot.h> | |
| 1991/0708 | #include "screen.h" | |
| 1990/1223 | ||
| 1992/0211/sys/src/9/ss/screen.c:1,5 – 1992/0321/sys/src/9/ss/screen.c:1,5 (short | long) | ||
| 1990/1223 | #include "u.h" | |
| 1992/0321 | #include "../port/lib.h" | |
| 1990/1223 | #include "mem.h" #include "dat.h" #include "fns.h" | |
| 1992/0321/sys/src/9/ss/screen.c:29,34 – 1992/0604/sys/src/9/ss/screen.c:29,35 (short | long) | ||
| 1991/0112 | 1152/32, | |
| 1990/1223 | 0, | |
| 1991/0112 | {0, 0, 1152, 900}, | |
| 1992/0604 | {0, 0, 1152, 900}, | |
| 1990/1223 | 0 }; | |
| 1992/0604/sys/src/9/ss/screen.c:342,352 – 1992/0703/sys/src/9/ss/screen.c:342,354 (short | long) | ||
| 1991/0604 | void buzz(int freq, int dur) { | |
| 1992/0703 | USED(freq, dur); | |
| 1991/0604 | } void lights(int mask) { | |
| 1992/0703 | USED(mask); | |
| 1991/0707 | } int | |
| 1992/0703/sys/src/9/ss/screen.c:259,275 – 1992/0711/sys/src/9/ss/screen.c:259,276 (short | long) | ||
| 1991/0713 | static int repeatc; | |
| 1991/1211 | static int lstate; static uchar kc[4]; | |
| 1992/0711 | uchar ch; | |
| 1991/1211 | int i, nk; | |
| 1990/1231 | ||
| 1992/0711 | USED(q); | |
| 1991/1211 | ch = kbdmap[shift][c&0x7F]; | |
| 1990/1231 | if(c==0x7F){ /* all keys up */ | |
| 1991/0713 | norepeat: kbdrepeat(0); | |
| 1990/1231 |
| |
| 1992/0711 | return 0; | |
| 1990/1231 | } | |
| 1991/1211 | if(ch == 0xFF) /* shouldn't happen; ignore */ | |
| 1990/1231 |
| |
| 1992/0711 | return 0; | |
| 1990/1231 | if(c & 0x80){ /* key went up */ | |
| 1991/1211 | if(ch == 0xF0){ /* control */ | |
| 1990/1231 | shift &= ~2; | |
| 1992/0703/sys/src/9/ss/screen.c:337,342 – 1992/0711/sys/src/9/ss/screen.c:338,344 | ||
| 1991/1211 | break; | |
| 1991/0112 | } } | |
| 1992/0711 | return 0; | |
| 1991/0604 | } void | |
| 1992/0703/sys/src/9/ss/screen.c:376,381 – 1992/0711/sys/src/9/ss/screen.c:378,384 | ||
| 1991/0707 | int setcolor(ulong p, ulong r, ulong g, ulong b) { | |
| 1992/0711 | USED(p, r, g, b); | |
| 1991/0707 | return 0; /* can't change mono screen colormap */ } | |
| 1992/0703/sys/src/9/ss/screen.c:382,387 – 1992/0711/sys/src/9/ss/screen.c:385,391 | ||
| 1991/0707 | int hwcursset(uchar *s, uchar *c, int ox, int oy) { | |
| 1992/0711 | USED(s, c, ox, oy); | |
| 1991/0707 | return 0; } | |
| 1992/0703/sys/src/9/ss/screen.c:388,393 – 1992/0711/sys/src/9/ss/screen.c:392,398 | ||
| 1991/0707 | int hwcursmove(int x, int y) { | |
| 1992/0711 | USED(x, y); | |
| 1991/0707 | return 0; } | |
| 1992/0711/sys/src/9/ss/screen.c:38,43 – 1992/0807/sys/src/9/ss/screen.c:38,45 (short | long) | ||
|
Created.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1990/1223 | void screeninit(void) { | |
| 1992/0807 | if(!conf.monitor) return; | |
| 1990/1226 | defont = &defont0; | |
| 1990/1223 | gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0); out.pos.x = MINX; | |
| 1992/0711/sys/src/9/ss/screen.c:48,53 – 1992/0807/sys/src/9/ss/screen.c:50,57 | ||
| 1990/1223 | void | |
| 1991/1228 | screenputnl(void) { | |
| 1992/0807 | if(!conf.monitor) return; | |
| 1991/1228 | out.pos.x = MINX; out.pos.y += defont0.height; if(out.pos.y > gscreen.r.max.y-defont0.height) | |
| 1992/0711/sys/src/9/ss/screen.c:63,68 – 1992/0807/sys/src/9/ss/screen.c:67,74 | ||
| 1991/1223 | int i; char buf[4]; | |
| 1992/0807 | if(!conf.monitor) return; | |
| 1991/1228 | lock(&screenlock); | |
| 1991/1223 | while(n > 0){ i = chartorune(&r, s); | |
| 1992/0807/sys/src/9/ss/screen.c:22,35 – 1992/0810/sys/src/9/ss/screen.c:22,37 (short | long) | ||
| 1990/1223 | void (*kprofp)(ulong); | |
| 1992/0810 | GBitmap gscreen; struct screens | |
| 1990/1223 | { | |
| 1990/1226 |
| |
| 1990/1223 |
| |
| 1991/0112 |
| |
| 1990/1223 |
| |
| 1991/0112 |
| |
| 1992/0604 |
| |
| 1992/0810 | ulong type; int x; int y; int ld; }screens[] = { { 0xFE010104, 1152, 900, 0 }, | |
| 1990/1223 | 0 }; | |
| 1992/0807/sys/src/9/ss/screen.c:38,45 – 1992/0810/sys/src/9/ss/screen.c:40,66 | ||
| 1990/1223 | void screeninit(void) { | |
| 1992/0807 |
| |
| 1992/0810 | struct screens *s; for(s=screens; s->type; s++) if(s->type == conf.monitor) goto found; /* default is 0th element of table */ if(conf.monitor){ s = screens; goto found; ] conf.monitor = 0; return; found: gscreen.base = (ulong*)SCREENSEGM; gscreen.zero = 0; gscreen.width = (s->x<<s->ld)/32; gscreen.ldepth = s->ld; gscreen.r = Rect(0, 0, s->x, s->y); gscreen.clipr = gscreen.r; gscreen.cache = 0; | |
| 1990/1226 | defont = &defont0; | |
| 1990/1223 | gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0); out.pos.x = MINX; | |
| 1992/0810/sys/src/9/ss/screen.c:49,55 – 1992/0811/sys/src/9/ss/screen.c:49,55 (short | long) | ||
| 1992/0810 | if(conf.monitor){ s = screens; goto found; | |
| 1992/0811 | } | |
| 1992/0810 | conf.monitor = 0; return; | |
| Too many diffs (26 > 25). Stopping. | ||