~kris/9p

9hist

83f21cb3570dc19419239af2fb68ddbbdf745546 — David du Colombier 35 years ago a93e2ac
Plan 9 from Bell Labs 1991-07-13
2 files changed, 17 insertions(+), 32 deletions(-)

M ss/screen.c
M ss/trap.c
M ss/screen.c => ss/screen.c +11 -26
@@ 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{

M ss/trap.c => ss/trap.c +6 -6
@@ 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;