projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
no swplo
[unix-history]
/
usr
/
src
/
sys
/
vax
/
mba
/
hp.c
diff --git
a/usr/src/sys/vax/mba/hp.c
b/usr/src/sys/vax/mba/hp.c
index
a7f438c
..
8e999b8
100644
(file)
--- a/
usr/src/sys/vax/mba/hp.c
+++ b/
usr/src/sys/vax/mba/hp.c
@@
-1,4
+1,4
@@
-/* hp.c 3.
3 %H
% */
+/* hp.c 3.
5 %G
% */
/*
* RP04/RP06/RM03 disk driver
/*
* RP04/RP06/RM03 disk driver
@@
-6,6
+6,7
@@
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
+#include "../h/dk.h"
#include "../h/buf.h"
#include "../h/conf.h"
#include "../h/dir.h"
#include "../h/buf.h"
#include "../h/conf.h"
#include "../h/dir.h"
@@
-45,8
+46,13
@@
struct device
#define NTRAC 19
#define NRMSECT 32
#define NRMTRAC 5
#define NTRAC 19
#define NRMSECT 32
#define NRMTRAC 5
-#define SDIST 2
-#define RDIST 6
+
+#define _hpSDIST 3
+#define _hpRDIST 6
+
+int hpSDIST = _hpSDIST;
+int hpRDIST = _hpRDIST;
+int hpseek;
struct size
{
struct size
{
@@
-104,6
+110,7
@@
char hp_type[NHP]; /* drive type */
#define PRESET 020
#define RTC 016
#define OFFSET 014
#define PRESET 020
#define RTC 016
#define OFFSET 014
+#define SEEK 04
#define SEARCH 030
#define RECAL 06
#define DCLR 010
#define SEARCH 030
#define RECAL 06
#define DCLR 010
@@
-208,24
+215,30
@@
register unit;
cn = bp->b_cylin;
if(hp_type[unit] == RM) {
sn = bn%(NRMSECT*NRMTRAC);
cn = bp->b_cylin;
if(hp_type[unit] == RM) {
sn = bn%(NRMSECT*NRMTRAC);
- sn = (sn+NRMSECT-SDIST)%NRMSECT;
+ sn = (sn+NRMSECT-
hp
SDIST)%NRMSECT;
} else {
sn = bn%(NSECT*NTRAC);
} else {
sn = bn%(NSECT*NTRAC);
- sn = (sn+NSECT-SDIST)%NSECT;
+ sn = (sn+NSECT-
hp
SDIST)%NSECT;
}
if(cn - (hpaddr->hpdc & 0xffff))
goto search;
}
if(cn - (hpaddr->hpdc & 0xffff))
goto search;
- csn = ((hpaddr->hpla & 0xffff)>>6) - sn + SDIST - 1;
+ else if (hpseek)
+ goto done;
+ csn = ((hpaddr->hpla & 0xffff)>>6) - sn + 1;
if(csn < 0)
csn += NSECT;
if(csn < 0)
csn += NSECT;
- if(csn > NSECT-RDIST)
+ if(csn > NSECT-
hp
RDIST)
goto done;
search:
hpaddr->hpdc = cn;
goto done;
search:
hpaddr->hpdc = cn;
- hpaddr->hpda = sn;
- hpaddr->hpcs1 = SEARCH|GO;
+ if (hpseek)
+ hpaddr->hpcs1 = SEEK|GO;
+ else {
+ hpaddr->hpda = sn;
+ hpaddr->hpcs1 = SEARCH|GO;
+ }
/*
unit += DK_N;
dk_busy |= 1<<unit;
/*
unit += DK_N;
dk_busy |= 1<<unit;