- hptab.b_active++;
- if (((struct mba_regs *)MBA0)->mba_bcr) {
- i = bp->b_blkno%(NSECT*NTRAC);
- i = ((i/NSECT)<<8)+(i%NSECT);
- i = NSECT*(i>>8) + (i&0377) + b + 1;
- if (i >= NSECT*NTRAC) {
- i -= NSECT*NTRAC;
- rp->hpdc = bp->b_cylin + 1;
- } else
- rp->hpdc = bp->b_cylin;
- rp->hpda = ((i/NSECT)<<8) + (i%NSECT);
- rp->hpcs1 = DCLR|GO;
- ((struct mba_regs *)MBA0)->mba_sr = -1;
- ((struct mba_regs *)MBA0)->mba_var =
- ((map+1)<<9)|((int)bp->b_un.b_addr&0x1ff);
- rp->hpcs1 = RCOM|GO;
- return(1);
- } else
- return(0);
-}
-
-short
-piget(pad)
-{
- register b, savemap;
- register short s;
-
- savemap = (int)mmap;
- b = (pad>>9)&0x7fffff;
- *(int *)mmap = b|(PG_V|PG_KR);
- mtpr(TBIS, vmmap);
- s = *(short *)&vmmap[pad&0x1ff];
- *(int *)mmap = savemap;
- mtpr(TBIS, vmmap);
- return(s);
-}
-
-piput(pad, val)
-{
- register b, savemap;
- register short *p;
-
- savemap = (int)mmap;
- b = (pad>>9)&0x7fffff;
- *(int *)mmap = b|(PG_V|PG_KW);
- mtpr(TBIS, vmmap);
- p = (short *)&vmmap[pad&0x1ff];
- *p = val;
- *(int *)mmap = savemap;
- mtpr(TBIS, vmmap);
+ cn = bp->b_cylin;
+ sn = bn%(ns*nt) + npf + 1;
+ tn = sn/ns;
+ sn %= ns;
+ cn += tn/nt;
+ tn %= nt;
+ rp->hpdc = cn;
+ rp->hpda = (tn<<8) + sn;
+ mbp->mba_sr = -1;
+ mbp->mba_var = (int)ptob(reg+1) + o;
+ rp->hpcs1 = RCOM|GO;
+ return (1);