From 97fad7eb09213f348d44109f2a41806131046378 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 3 Nov 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-11-03 --- pc/devhard.c | 16 +++++++++++++--- pc/main.c | 2 +- port/devproc.c | 6 +++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pc/devhard.c b/pc/devhard.c index cdcfa877af63f2e10e45b4a143c4a10aa6fdce23..ede02e079a5fcba25e9e6cc769cc8f333561783d 100644 --- a/pc/devhard.c +++ b/pc/devhard.c @@ -167,10 +167,20 @@ hardreset(void) Drive *dp; Controller *cp; int drive; + uchar equip; hard = xalloc(conf.nhard * sizeof(Drive)); hardc = xalloc(((conf.nhard+1)/2) * sizeof(Controller)); + /* + * read nvram for number of hard drives (2 max) + */ + equip = nvramread(0x12); + if(conf.nhard > 0 && (equip>>4) == 0) + conf.nhard = 0; + if(conf.nhard > 1 && (equip&0xf) == 0) + conf.nhard = 1; + for(drive = 0; drive < conf.nhard; drive++){ dp = &hard[drive]; cp = &hardc[drive/2]; @@ -457,7 +467,7 @@ hardxfer(Drive *dp, Partition *pp, int cmd, long start, long len, char *buf) len = pp->end - lblk; cyl = lblk/(dp->sectors*dp->heads); sec = (lblk % dp->sectors) + 1; - head = (dp->drive<<4) | ((lblk/dp->sectors) % dp->heads); + head = ((lblk/dp->sectors) % dp->heads); cp = dp->cp; qlock(cp); @@ -481,7 +491,7 @@ hardxfer(Drive *dp, Partition *pp, int cmd, long start, long len, char *buf) cp->status = 0; outb(cp->pbase+Pcount, cp->nsecs); outb(cp->pbase+Psector, sec); - outb(cp->pbase+Pdh, 0x20 | head); + outb(cp->pbase+Pdh, 0x20 | (dp->drive<<4) | head); outb(cp->pbase+Pcyllsb, cyl); outb(cp->pbase+Pcylmsb, cyl>>8); outb(cp->pbase+Pcmd, cmd); @@ -685,7 +695,7 @@ hardprobe(Drive *dp, int cyl, int sec, int head) outb(cp->pbase+Pcount, 1); outb(cp->pbase+Psector, sec+1); - outb(cp->pbase+Pdh, 0x20 | head); + outb(cp->pbase+Pdh, 0x20 | head | (dp->drive<<4)); outb(cp->pbase+Pcyllsb, cyl); outb(cp->pbase+Pcylmsb, cyl>>8); outb(cp->pbase+Pcmd, Cread); diff --git a/pc/main.c b/pc/main.c index 42ef236ae1828334e904e68ad7f916ff9e7cb226..2591beb3077a89b018ffff049496dd9e4b9fb718 100644 --- a/pc/main.c +++ b/pc/main.c @@ -294,7 +294,7 @@ confinit(void) conf.arp = 32; conf.frag = 32; conf.nfloppy = 2; - conf.nhard = 1; + conf.nhard = 2; } char *mathmsg[] = diff --git a/port/devproc.c b/port/devproc.c index 1eae4646cf905fce81cbdc3b336c303bfbcec379..dc16b0eaffa175a7231866802d92c1c89c535aa3 100644 --- a/port/devproc.c +++ b/port/devproc.c @@ -344,7 +344,11 @@ procread(Chan *c, void *va, long n, ulong offset) sps = p->psstate; if(sps == 0) sps = statename[p->state]; - j = sprint(statbuf, "%-27s %-27s %-11s ", p->text, p->user, sps); + memset(statbuf, ' ', sizeof statbuf); + memmove(statbuf+0*NAMELEN, p->text, strlen(p->text)); + memmove(statbuf+1*NAMELEN, p->user, strlen(p->user)); + memmove(statbuf+2*NAMELEN, sps, strlen(sps)); + j = 2*NAMELEN + 12; for(i = 0; i < 6; i++) { l = p->time[i];