! "W N =    @ #D  D ҃** ^ B ы e@W 0 ,& 7    ` " ɋ -ɋ e- ɋ ?*p ȋB@E A Ze   "@    7@ eErun] Pdmr/run]V Sdmr/rk.c^iOken/runi]= o\conf/conf.c]8 ߍrm -f low.o mch.o conf.o lib1 lib2 chdir ken cc -c *.c sh run rm *.o chdir ../dmr cc -c *.c sh run rm *.o chdir .. cc -c conf/conf.c mv conf/conf.o conf.o as conf/low.s mv a.out low.o as conf/mch.s mv a.out mch.o ld -x low.o mch.o conf.o lib1 lib2 ar r ../lib2 bio.o ar r ../lib2 tty.o ar r ../lib2 malloc.o ar r ../lib2 pipe.o ar r ../lib2 cat.o ar r ../lib2 dc.o ar r ../lib2 dn.o ar r ../lib2 dc.o ar r ../lib2 dn.o ar r ../lib2 dp.o ar r ../lib2 kl.o ar r ../lib2 mem.o ar r ../lib2 pc.o ar r ../lib2 rf.o ar r ../lib2 rk.o ar r ../lib2 tc.o ar r ../lib2 tm.o ar r ../lib2 vs.o ar r ../lib2 vt.o ar r ../lib2 partab.o ar r ../lib2 rp.o ar r ../lib2 lp.o ar r ../lib2 dhdm.o ar r ../lib2 dh.o ar r ../lib2 dhfdm.o # /* * Copyright 1973 Bell Telephone Laboratories Inc */ /* * RK disk driver */ #include "../param.h" #include "../buf.h" #include "../conf.h" #include "../user.h" #define RKADDR 0177400 #define NRK 4 #define NRKBLK 4872 #define RESET 0 #define GO 01 #define DRESET 014 #define IENABLE 0100 #define DRY 0200 #define ARDY 0100 #define WLO 020000 #define CTLRDY 0200 struct { int rkds; int rker; int rkcs; int rkwc; int rkba; int rkda; }; struct devtab rktab; struct buf rrkbuf; rkstrategy(abp) struct buf *abp; { register struct buf *bp; register *qc, *ql; int d; bp = abp; d = bp->b_dev.d_minor-7; if(d <= 0) d = 1; if (bp->b_blkno >= NRKBLK*d) { bp->b_flags =| B_ERROR; iodone(bp); return; } bp->av_forw = 0; spl5(); if (rktab.d_actf==0) rktab.d_actf = bp; else rktab.d_actl->av_forw = bp; rktab.d_actl = bp; if (rktab.d_active==0) rkstart(); spl0(); } rkaddr(bp) struct buf *bp; { register struct buf *p; register int b; int d, m; p = bp; b = p->b_blkno; m = p->b_dev.d_minor - 7; if(m <= 0) d = p->b_dev.d_minor; else { d = lrem(b, m); b = ldiv(b, m); } return(d<<13 | (b/12)<<4 | b%12); } rkstart() { register struct buf *bp; if ((bp = rktab.d_actf) == 0) return; rktab.d_active++; devstart(bp, &RKADDR->rkda, rkaddr(bp), 0); } rkintr() { register struct buf *bp; if (rktab.d_active == 0) return; bp = rktab.d_actf; rktab.d_active = 0; if (RKADDR->rkcs < 0) { /* error bit */ RKADDR->rkcs = RESET|GO; while((RKADDR->rkcs&CTLRDY) == 0) ; if (++rktab.d_errcnt <= 10) { rkstart(); return; } bp->b_flags =| B_ERROR; } rktab.d_errcnt = 0; rktab.d_actf = bp->av_forw; iodone(bp); rkstart(); } rkread(dev) { physio(rkstrategy, &rrkbuf, dev, B_READ); } rkwrite(dev) { physio(rkstrategy, &rrkbuf, dev, B_WRITE); } kintr() { register struct buf *bp; if (rktab.d_active == 0) return; bp = rktab.d_actf; rktab.d_active = 0; if (RKADDR->rkcs < 0) { /* error bit */ RKADDR->rkcs = RESET|GO; while((RKADDR->rkcs&CTLRDY) == 0) ; if (++ar r ../lib1 main.o ar r ../lib1 alloc.o ar r ../lib1 iget.o ar r ../lib1 prf.o ar r ../lib1 rdwri.o ar r ../lib1 slp.o ar r ../lib1 subr.o ar r ../lib1 text.o ar r ../lib1 trap.o ar r ../lib1 sig.o ar r ../lib1 sysent.o ar r ../lib1 sys1.o ar r ../lib1 sys2.o ar r ../lib1 sys3.o ar r ../lib1 sys4.o ar r ../lib1 nami.o ar r ../lib1 fio.o ar r ../lib1 clock.o rktab.d_actf; rktab.d_active = 0; if (RKADDR->rkcs < 0) { /* error bit */ RKADDR->rkcs = RESET|GO; while((RKADDR->rkcs&CTLRDY) == 0) ; if (++/* * Copyright 1974 Bell Telephone Laboratories Inc */ int (*bdevsw[])() { &nulldev, &nulldev, &rkstrategy, &rktab, &nulldev, &tcclose, &tcstrategy, &tctab, &tmopen, &tmclose, &tmstrategy, &tmtab, 0 }; int (*cdevsw[])() { &klopen, &klclose, &klread, &klwrite, &klsgtty, &nulldev, &nulldev, &mmread, &mmwrite, &nodev, &nulldev, &nulldev, &rkread, &rkwrite, &nodev, &tmopen, &tmclose, &tmread, &tmwrite, &nodev, &dhopen, &dhclose, &dhread, &dhwrite, &dhsgtty, &pcopen, &pcclose, &pcread, &pcwrite, &nodev, 0 }; int rootdev {(0<<8)|0}; int swapdev {(0<<8)|0}; int swplo 4000; int nswap 872; &tcstrategy, &tctab, &tmopen, &tmclose, &tmstrategy, &tmtab, 0 }; int (*cdevsw[])() { &klopen, &klclose, &klread, &klwrite, &klsgtty, &nulldev, &nulldev, &mmread, &mmwrite, &nodev, &nulldev, &nulldev, &rkread, &rkwrite, &nodev, &tmopen, &tmclose, &tmread, &tmwrite, &nodev, &dhopen, &dhclose, &dhread, &dhwrite, &dhsgtty,