From e4eb7d6e802323dc1887ec551bd3921344b9a72b Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 17 Mar 1994 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1994-03-17 --- boot/boot.c | 10 ++++++---- boot/boot.h | 6 +++++- pc/devvga.c | 10 ---------- pc/kbd.c | 20 +++++++++++--------- 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/boot/boot.c b/boot/boot.c index a3d832da028b99b801da7d0ac839d7e56ea40686..a577012f2c9ba9026fa01163b1808f3c78ae4a72 100644 --- a/boot/boot.c +++ b/boot/boot.c @@ -13,7 +13,7 @@ char sys[2*NAMELEN]; char username[NAMELEN]; char bootfile[3*NAMELEN]; char conffile[NAMELEN]; -char reply[64]; +char reply[256]; int printcol; int mflag; int fflag; @@ -21,11 +21,13 @@ int kflag; int aflag; int pflag; int afd = -1; + +char *bargv[Nbarg]; +int bargc; + static void swapproc(void); static void recover(Method*); static Method *rootserver(char*); -char *bargv[6]; -int bargc; void boot(int argc, char *argv[]) @@ -213,7 +215,7 @@ rootserver(char *arg) outin(prompt, reply, sizeof(reply)); mp = findmethod(reply); if(mp){ - for(cp = reply; *cp; cp++){ + for(cp = reply; bargc < Nbarg-1 && *cp; cp++){ while(*cp && *cp != ' ') cp++; while(*cp == ' ') diff --git a/boot/boot.h b/boot/boot.h index 2ed10df4f0c1c973a217a3b98389f852951d199d..6f62bd81d8558a7140887b21bb41665f90f244c7 100644 --- a/boot/boot.h +++ b/boot/boot.h @@ -22,8 +22,12 @@ extern char terminal[]; extern char username[NAMELEN]; extern char bootfile[]; extern char conffile[]; +enum +{ + Nbarg= 16, +}; extern int bargc; -extern char *bargv[]; +extern char *bargv[Nbarg]; extern int afd; /* libc equivalent */ diff --git a/pc/devvga.c b/pc/devvga.c index 2a3bbb3b78f74db04e16e3c21e175ba6984563ec..fbcfd039eed0607e434bded6cc94d240789e2cc0 100644 --- a/pc/devvga.c +++ b/pc/devvga.c @@ -968,7 +968,6 @@ parapage(int page) static void s3page(int page) { -#ifdef notdef uchar crt51; /* @@ -984,15 +983,6 @@ s3page(int page) outb(CRX, 0x51); crt51 = (0xF3 & inb(CR))|((page & 0x30)>>2); outb(CR, crt51); -{ -uchar crt35; -outb(CRX, 0x35); -crt35 = inb(CR); -print("page #%ux, crt51=#%ux, crt35=#%ux\n", page, crt51, crt35); -} -#else - crout(0x35, (page<<2) & 0x0f); -#endif /* notdef } void diff --git a/pc/kbd.c b/pc/kbd.c index 0133cd1e34ee54d02507673146978f2b00e652d5..6c7c5ad047abf8d940c58a93f5e455ba3e7a86aa 100644 --- a/pc/kbd.c +++ b/pc/kbd.c @@ -236,7 +236,7 @@ i8042reset(void) static void serialmouse(int port, char *type, int setspeed) { - if(mousetype) + if(mousetype == Mouseserial) error(Emouseset); if(port >= 2 || port < 0) @@ -505,18 +505,17 @@ kbdintr(Ureg *ur, void *arg) * set up a ps2 mouse */ static void -ps2mouse(void) +ps2mouse(int frominit) { int x; - if(mousetype) - error(Emouseset); + if(mousetype == MousePS2) + return; if(ct82c710() == 0) return; /* enable kbd/mouse xfers and interrupts */ - setvec(Mousevec, kbdintr, 0); x = splhi(); ccc &= ~Cmousedis; ccc |= Cmouseint; @@ -529,10 +528,13 @@ ps2mouse(void) if(outready() < 0) print("mouse init failed\n"); outb(Cmd, 0xA8); - if(outready() < 0) - print("mouse init failed\n"); + if(outready() < 0){ + splx(x); + return; + } /* make mouse streaming, enabled */ + setvec(Mousevec, kbdintr, 0); mousecmd(0xEA); mousecmd(0xF4); splx(x); @@ -564,7 +566,7 @@ mousectl(char *arg) break; } } else if(strcmp(field[0], "ps2") == 0){ - ps2mouse(); + ps2mouse(0); } else if(strcmp(field[0], "accelerated") == 0){ switch(mousetype){ case MousePS2: @@ -622,7 +624,7 @@ kbdinit(void) /* enable kbd xfers and interrupts */ ccc &= ~Ckbddis; - ccc |= Csf | Ckbdint | Cscs1; + ccc |= Csf | Ckbdint | Cscs1 | Cmousedis; if(outready() < 0) print("kbd init failed\n"); outb(Cmd, 0x60);