From 77cf2832941726b400f8efc3ee9cd23ecb3d3f98 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 18 Dec 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-12-18 --- pc/devfloppy.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pc/devfloppy.c b/pc/devfloppy.c index d0b96073f60fdaf332e1ce64f8c12a29042cf3e1..d3dc12f5f09679e7a61d49df70b9e4e46bb9f558 100644 --- a/pc/devfloppy.c +++ b/pc/devfloppy.c @@ -245,14 +245,18 @@ floppyreset(void) Drive *dp; Type *t; uchar equip; + ulong maxtsize; /* * init dependent parameters */ + maxtsize = 0; for(t = floppytype; t < &floppytype[NTYPES]; t++){ t->cap = t->bytes * t->heads * t->sectors * t->tracks; t->bcode = b2c[t->bytes/128]; t->tsize = t->bytes * t->sectors; + if(maxtsize < t->tsize) + maxtsize = t->tsize; } /* @@ -277,7 +281,7 @@ floppyreset(void) dp->dt = T1440kb; setdef(dp); dp->cyl = -1; /* because we don't know */ - dp->cache = (uchar*)xspanalloc(dp->t->tsize, BY2PG, 64*1024); + dp->cache = (uchar*)xspanalloc(maxtsize, BY2PG, 64*1024); dp->ccyl = -1; dp->vers = 1; } @@ -612,6 +616,7 @@ floppyon(Drive *dp) tsleep(&dp->r, return0, 0, 750); /* clear any pending interrupts */ + setvec(Floppyvec, floppyintr); floppysense(); } @@ -780,8 +785,10 @@ static void floppywait(void) { tsleep(&fl.r, cmddone, 0, 5000); - if(!cmddone(0)) + if(!cmddone(0)){ floppyintr(0); + fl.confused = 1; + } } /* @@ -842,8 +849,9 @@ floppyrevive(void) fl.ncmd = 1; fl.cmd[0] = 0; outb(Pdor, 0); - delay(1); + delay(10); outb(Pdor, Fintena|Fena); + delay(10); spllo(); fl.motor = 0; fl.confused = 0;