M boot/boot.c => boot/boot.c +6 -4
@@ 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 == ' ')
M boot/boot.h => boot/boot.h +5 -1
@@ 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 */
M pc/devvga.c => pc/devvga.c +0 -10
@@ 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
M pc/kbd.c => pc/kbd.c +11 -9
@@ 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);