From 83f21cb3570dc19419239af2fb68ddbbdf745546 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 13 Jul 1991 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1991-07-13 --- ss/screen.c | 37 +++++++++++-------------------------- ss/trap.c | 12 ++++++------ 2 files changed, 17 insertions(+), 32 deletions(-) diff --git a/ss/screen.c b/ss/screen.c index 7f1ef80eefe5a11a6507f73988f3c6ba66bfbadc..3f36d044c5b9b1c8450f8970f65b04bb28cca88b 100644 --- a/ss/screen.c +++ b/ss/screen.c @@ -382,20 +382,15 @@ kbdstate(IOQ *q, int c) { static shift = 0x00; static caps = 0; - static repeatc = -1; static long startclick; + static int repeatc; static int kbdstate, k1, k2; int tc; tc = kbdmap[shift][c&0x7F]; -/* - if(c==0xFFFF && repeatc!=-1 && clicks>startclick+40 && (clicks-startclick)%3==0){ - kbdc = repeatc; - return; - } -*/ if(c==0x7F){ /* all keys up */ - repeatc = -1; + norepeat: + kbdrepeat(0); return; } if(tc == 0xFF) /* shouldn't happen; ignore */ @@ -403,43 +398,33 @@ kbdstate(IOQ *q, int c) if(c & 0x80){ /* key went up */ if(tc == 0xF0){ /* control */ shift &= ~2; - repeatc =- 1; - return; + goto norepeat; } if(tc == 0xF1){ /* shift */ shift &= ~1; - repeatc = -1; - return; + goto norepeat; } if(tc == 0xF2){ /* caps */ - repeatc = -1; - return; + goto norepeat; } - if(tc == repeatc) - repeatc = -1; - return; + goto norepeat; } if(tc == 0xF0){ /* control */ shift |= 2; - repeatc = -1; - return; + goto norepeat; } if(tc==0xF1){ /* shift */ shift |= 1; - repeatc = -1; - return; + goto norepeat; } if(tc==0xF2){ /* caps */ caps ^= 1; - repeatc =- 1; - return; + goto norepeat; } if(caps && 'a'<=tc && tc<='z') tc |= ' '; repeatc = tc; -/* - startclick = clicks; -*/ + kbdrepeat(1); if(tc == 0xB6) /* Compose */ kbdstate = 1; else{ diff --git a/ss/trap.c b/ss/trap.c index 5b2067c9c7c31e838aa349e60d00387124507a7e..bb7702e15d9a14a85933af14adafb0f2e88e88f8 100644 --- a/ss/trap.c +++ b/ss/trap.c @@ -357,13 +357,13 @@ syscall(Ureg *aur) msg = "sys: odd stack"; goto Bad; } - if(((ulong*)ur->pc)[-2] != 0x82206004){ /* new calling convention: look for ADD $-4, SP */ - pprint("new system call linkage\n"); - sp -= BY2WD; + if(((ulong*)ur->pc)[-2] == 0x82206004){ /* new calling convention: look for ADD $-4, SP */ + pprint("old system call linkage\n"); + sp += BY2WD; } - if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-(2+MAXSYSARG)*BY2WD)) - validaddr(sp, ((2+MAXSYSARG)*BY2WD), 0); - ret = (*systab[r7])((ulong*)(sp+2*BY2WD)); + if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-(1+MAXSYSARG)*BY2WD)) + validaddr(sp, ((1+MAXSYSARG)*BY2WD), 0); + ret = (*systab[r7])((ulong*)(sp+1*BY2WD)); poperror(); } ur->pc += 4;