home *** CD-ROM | disk | FTP | other *** search
- #
- /*
- */
-
- /*
- * Memory special file
- * minor device 0 is physical memory
- * minor device 1 is kernel memory
- * minor device 2 is EOF/RATHOLE
- */
-
- #include "../h/param.h"
- #include "../h/dir.h"
- #include "../h/user.h"
- #include "../h/conf.h"
- #include "../h/seg.h"
-
- mmread(dev)
- {
- register c, bn, on;
- int a, d;
-
- if(minor(dev) == 2)
- return;
- do {
- bn = u.u_offset >> 6;
- on = u.u_offset & 077;
- a = UISA->r[0];
- d = UISD->r[0];
- spl7();
- UISA->r[0] = bn;
- UISD->r[0] = 077406;
- if(minor(dev) == 1)
- UISA->r[0] = (ka6-6)->r[(bn>>7)&07] + (bn & 0177);
- if ((c = fuibyte((caddr_t)on)) < 0)
- u.u_error = ENXIO;
- UISA->r[0] = a;
- UISD->r[0] = d;
- spl0();
- } while(u.u_error==0 && passc(c)>=0);
- }
-
- mmwrite(dev)
- {
- register c, bn, on;
- int a, d;
-
- if(minor(dev) == 2) {
- u.u_count = 0;
- return;
- }
- for(;;) {
- bn = u.u_offset >> 6;
- on = u.u_offset & 077;
- if ((c=cpass())<0 || u.u_error!=0)
- break;
- a = UISA->r[0];
- d = UISD->r[0];
- spl7();
- UISA->r[0] = bn;
- UISD->r[0] = 077406;
- if(minor(dev) == 1)
- UISA->r[0] = (ka6-6)->r[(bn>>7)&07] + (bn & 0177);
- if (suibyte((caddr_t)on, c) < 0)
- u.u_error = ENXIO;
- UISA->r[0] = a;
- UISD->r[0] = d;
- spl0();
- }
- }
-