*** /home/phil/min1.5ref/fs/glo.h	Wed Nov 14 00:05:54 1990
--- fs/glo.h	Thu Nov  1 14:26:17 1990
***************
*** 12,18 ****
  EXTERN int reviving;		/* number of pipe processes to be revived */
  EXTERN off_t rdahedpos;		/* position to read ahead */
  EXTERN struct inode *rdahed_inode;	/* pointer to inode to read ahead */
! EXTERN char fstack[FS_STACK_BYTES];	/* the File System's stack. */
  
  /* The parameters of the call are kept here. */
  EXTERN message m;		/* the input message itself */
--- 12,20 ----
  EXTERN int reviving;		/* number of pipe processes to be revived */
  EXTERN off_t rdahedpos;		/* position to read ahead */
  EXTERN struct inode *rdahed_inode;	/* pointer to inode to read ahead */
! #if (MACHINE != PC532)
! EXTERN char fstack[FS_STACK_BYTES];	/* the File System's stack. */
! #endif /*PC532*/
  
  /* The parameters of the call are kept here. */
  EXTERN message m;		/* the input message itself */
*** /home/phil/min1.5ref/fs/fproc.h	Wed Nov 14 00:05:54 1990
--- fs/fproc.h	Thu Nov  1 14:26:17 1990
***************
*** 20,25 ****
--- 20,26 ----
    char fp_suspended;		/* set to indicate process hanging */
    char fp_revived;		/* set to indicate process being revived */
    char fp_task;			/* which task is proc suspended on */
+   char fp_in_use;		/* added WBC set if slot in use */
    int fp_pid;			/* process id */
    int fp_pgrp;			/* process group */
  } fproc[NR_PROCS];
*** /home/phil/min1.5ref/fs/const.h	Wed Nov 14 00:05:54 1990
--- fs/const.h	Thu Nov  1 14:26:17 1990
***************
*** 5,13 ****
  #define I_MAP_SLOTS        8	/* max # of blocks in the inode bit map */
  #define ZMAP_SLOTS         8	/* max # of blocks in the zone bit map */
  #define NR_INODES         32	/* # slots in "in core" inode table */
! #define NR_SUPERS          5	/* # slots in super block table */
! 
! #define FS_STACK_BYTES  (272 * sizeof (char *)) /* size of file system stack */
  
  /* Miscellaneous constants */
  #define SUPER_MAGIC   0x137F	/* magic number contained in super-block */
--- 5,15 ----
  #define I_MAP_SLOTS        8	/* max # of blocks in the inode bit map */
  #define ZMAP_SLOTS         8	/* max # of blocks in the zone bit map */
  #define NR_INODES         32	/* # slots in "in core" inode table */
! #define NR_SUPERS         20	/* # slots in super block table */
! 
! #if (MACHINE != PC532)
! #define FS_STACK_BYTES  (272 * sizeof (char *)) /* size of file system stack */
! #endif /*PC532*/
  
  /* Miscellaneous constants */
  #define SUPER_MAGIC   0x137F	/* magic number contained in super-block */
***************
*** 54,57 ****
  #define PIPE_SIZE        (NR_DZONE_NUM*BLOCK_SIZE)   /* pipe size in bytes  */
  #define MAX_ZONES (NR_DZONE_NUM+NR_INDIRECTS+(long)NR_INDIRECTS*NR_INDIRECTS)
  						     /* max zones in a file */
! #define printf printk
--- 56,61 ----
  #define PIPE_SIZE        (NR_DZONE_NUM*BLOCK_SIZE)   /* pipe size in bytes  */
  #define MAX_ZONES (NR_DZONE_NUM+NR_INDIRECTS+(long)NR_INDIRECTS*NR_INDIRECTS)
  						     /* max zones in a file */
! #if (MACHINE == PC532)
! #define printf printk
! #endif /* PC532 */
*** /home/phil/min1.5ref/fs/cache.c	Wed Nov 14 00:05:55 1990
--- fs/cache.c	Thu Nov  1 14:26:17 1990
***************
*** 311,316 ****
--- 311,322 ----
  }
  
  
+ #if (MACHINE == PC532)
+   /* Let driver peep at this directly */
+   struct iorequest_s iovec[NR_BUFS];  /* static so it isn't on stack */
+ #else
+ #endif /* PC532 */
+ 
  /*===========================================================================*
   *				rw_scattered				     *
   *===========================================================================*/
***************
*** 328,334 ****
  
  #if HAVE_SCATTERED_IO
    register struct iorequest_s *iop;
!   static struct iorequest_s iovec[NR_BUFS];  /* static so it isn't on stack */
  #endif
  
    int j;
--- 334,343 ----
  
  #if HAVE_SCATTERED_IO
    register struct iorequest_s *iop;
! #if (MACHINE == PC532)
! #else
!   static struct iorequest_s iovec[NR_BUFS];  /* static so it isn't on stack */
! #endif /* PC532 */
  #endif
  
    int j;
*** /home/phil/min1.5ref/fs/device.c	Wed Nov 14 00:05:55 1990
--- fs/device.c	Mon Dec 17 19:57:38 1990
***************
*** 22,28 ****
  #include "param.h"
  
  PRIVATE message dev_mess;
! PRIVATE major, minor, task;
  
  FORWARD void find_dev();
  
--- 22,28 ----
  #include "param.h"
  
  PRIVATE message dev_mess;
! PRIVATE int major, minor, task;
  
  FORWARD void find_dev();
  
***************
*** 121,126 ****
--- 121,127 ----
    dev_mess.TTY_REQUEST = m.TTY_REQUEST;
    dev_mess.TTY_SPEK = m.TTY_SPEK;
    dev_mess.TTY_FLAGS = m.TTY_FLAGS;
+ 
    /* Call the task. */
    (*dmap[major].dmap_rw)(task, &dev_mess);
  
*** /home/phil/min1.5ref/fs/link.c	Wed Nov 14 00:05:55 1990
--- fs/link.c	Wed Nov 21 17:24:55 1990
***************
*** 19,24 ****
--- 19,28 ----
  #include "inode.h"
  #include "param.h"
  
+ #if (MACHINE == PC532)
+ #define dot2 linkdot2
+ #endif /* PC532 */
+ 
  #define SAME 1000
  PRIVATE char dot2[NAME_MAX] =  "..\0\0\0\0\0\0\0\0\0\0\0";
  
***************
*** 218,225 ****
  
    /* If it is ok, check for a variety of possible errors. */
    if (r == OK) {
! 	/* The old path must not be a prefix of the new one. */
! 	if (strncmp(old_name, user_path, strlen(old_name)) == 0) r = EINVAL;
  
  	/* The old path must not be . or .. */
  	if (strcmp(old_name, ".")==0 || strcmp(old_name, "..")==0) r = EINVAL;
--- 222,230 ----
  
    /* If it is ok, check for a variety of possible errors. */
    if (r == OK) {
! 	/* The old path must not be a directory prefix of the new one. */
! 	if ((strncmp(old_name, user_path, strlen(old_name)) == 0)
! 	    && (user_path[strlen(old_name)] == '/')) r = EINVAL;
  
  	/* The old path must not be . or .. */
  	if (strcmp(old_name, ".")==0 || strcmp(old_name, "..")==0) r = EINVAL;
*** /home/phil/min1.5ref/fs/main.c	Wed Nov 14 00:05:56 1990
--- fs/main.c	Thu Nov  1 14:26:18 1990
***************
*** 68,73 ****
--- 68,78 ----
  	super_user = (fp->fp_effuid == SU_UID ? TRUE : FALSE);   /* su? */
  	dont_reply = FALSE;	/* in other words, do reply is default */
  
+ #if (MACHINE == PC532)
+ 	/* do nothing if proc has exitted */
+ 	if (who >= 0 && !fp->fp_in_use) continue;
+ #endif /* PC532 */
+ 
  	/* Call the internal function that does the work. */
  	if (fs_call < 0 || fs_call >= NCALLS)
  		error = EBADCALL;
***************
*** 146,152 ****
    dev_t d;			/* device to fetch the superblock from */
  
    buf_pool();			/* initialize buffer pool */
!   get_boot_parameters();
    d = load_ram();		/* init RAM disk, load if it is root */
    load_super(d);		/* Load super block for root device */
  
--- 151,159 ----
    dev_t d;			/* device to fetch the superblock from */
  
    buf_pool();			/* initialize buffer pool */
! #if (MACHINE != PC532)
!   get_boot_parameters();
! #endif /* PC532 */
    d = load_ram();		/* init RAM disk, load if it is root */
    load_super(d);		/* Load super block for root device */
  
***************
*** 162,167 ****
--- 169,175 ----
  	fp->fp_realgid = (gid_t) SYS_GID;
  	fp->fp_effgid = (gid_t) SYS_GID;
  	fp->fp_umask = ~0;
+ 	fp->fp_in_use = 1;	/* pc532 accept messages */
    }
  
    /* Certain relations must hold for the file system to work at all. */
***************
*** 186,193 ****
   */
    register struct buf *bp;
  
!   vir_bytes low_off, high_off;		/* only used on INTEL chips */
!   phys_bytes org;
  
    bufs_in_use = 0;
    front = &buf[0];
--- 194,203 ----
   */
    register struct buf *bp;
  
! #if (CHIP == INTEL)
!   vir_bytes low_off, high_off;		/* only used on INTEL chips */
!   phys_bytes org;
! #endif
  
    bufs_in_use = 0;
    front = &buf[0];
***************
*** 238,249 ****
--- 248,261 ----
    block_nr i, b;
    dev_t root_device;		/* really the root image device */
    dev_t super_dev;		/* device to get superblock from */
+ #if (MACHINE != PC532)
    phys_clicks ram_clicks, init_org, init_text_clicks, init_data_clicks;
  
    /* Get size of INIT by reading block on diskette where 'build' put it. */
    init_org = data_org[INFO];
    init_text_clicks = data_org[INFO + 1];
    init_data_clicks = data_org[INFO + 2];
+ #endif /* PC532 */
  
    /* Print ATARI copyright message. */
  #if (MACHINE == ATARI)
***************
*** 291,296 ****
--- 303,309 ----
  
  got_root_dev:
    if (count > MAX_RAM) panic("RAM disk is too big. # blocks = ", count);
+ #if (MACHINE != PC532)
    ram_clicks = count * (BLOCK_SIZE/CLICK_SIZE);
  
    /* Tell MM the origin and size of INIT, and the amount of memory used for the
***************
*** 316,321 ****
--- 329,335 ----
    m1.DEVICE = RAM_DEV;
    m1.COUNT = count;
    if (sendrec(MEM, &m1) != OK) panic("Can't report size to MEM", NO_NUM);
+ #endif /* PC532 */
  
  #if (CHIP == INTEL)
    /* Say if we are running in real mode or protected mode.
***************
*** 522,527 ****
--- 536,542 ----
  }
  #endif /* FASTLOAD */
  
+ #if (MACHINE != PC532)
  /*===========================================================================*
   *				get_boot_parameters			     *
   *===========================================================================*/
***************
*** 542,547 ****
--- 557,563 ----
    if (sendrec(SYSTASK, &m1) == OK && m1.m_type == OK)
  	boot_parameters = temp_parameters;
  }
+ #endif /* PC532 */
  
  #if (CHIP == INTEL)
  /*===========================================================================*
*** /home/phil/min1.5ref/fs/misc.c	Wed Nov 14 00:05:56 1990
--- fs/misc.c	Thu Nov  1 14:26:18 1990
***************
*** 166,175 ****
--- 166,180 ----
    if (who != MM_PROC_NR) return(ERROR);
  
    /* Copy the parent's fproc struct to the child. */
+ #if (MACHINE == PC532)
+   /* Note: this sets fp_in_use for child */
+   fproc[child] = fproc[parent];
+ #else
    sptr = (char *) &fproc[parent];	/* pointer to parent's 'fproc' struct */
    dptr = (char *) &fproc[child];	/* pointer to child's 'fproc' struct */
    i = sizeof(struct fproc);		/* how many bytes to copy */
    while (i--) *dptr++ = *sptr++;	/* fproc[child] = fproc[parent] */
+ #endif /* PC532 */
  
    /* Increase the counters in the 'filp' table. */
    cp = &fproc[child];
***************
*** 227,233 ****
    put_inode(fp->fp_workdir);
    fp->fp_rootdir = NIL_INODE;
    fp->fp_workdir = NIL_INODE;
! 
    return(OK);
  }
  
--- 232,241 ----
    put_inode(fp->fp_workdir);
    fp->fp_rootdir = NIL_INODE;
    fp->fp_workdir = NIL_INODE;
! #if (MACHINE == PC532)
!   /* except no further calls from proc */
!   fp->fp_in_use = 0;
! #endif /* PC532 */
    return(OK);
  }
  
*** /home/phil/min1.5ref/fs/open.c	Wed Nov 14 00:05:56 1990
--- fs/open.c	Thu Nov  1 14:26:19 1990
***************
*** 55,61 ****
    if (fetch_name(name1, name1_length, M1) != OK) return(err_code);
    bits = (mode & I_TYPE) | (mode & ALL_MODES & fp->fp_umask);
    size = (unsigned int) name2;
!   put_inode(new_node(user_path, bits, (zone_nr) addr), (off_t)size*BLOCK_SIZE);
    return(err_code);
  }
  
--- 55,61 ----
    if (fetch_name(name1, name1_length, M1) != OK) return(err_code);
    bits = (mode & I_TYPE) | (mode & ALL_MODES & fp->fp_umask);
    size = (unsigned int) name2;
!   put_inode(new_node(user_path, bits, (zone_nr) addr, (off_t)size*BLOCK_SIZE));
    return(err_code);
  }
  
*** /home/phil/min1.5ref/fs/pipe.c	Wed Nov 14 00:05:57 1990
--- fs/pipe.c	Mon Feb 11 22:52:06 1991
***************
*** 255,263 ****
  		mess.m_type = CANCEL;
  		(*dmap[(dev >> MAJOR) & BYTE].dmap_rw)(task, &mess);
  	}
! 	rfp->fp_suspended = NOT_SUSPENDED;
! 	reply(proc_nr, EINTR);	/* signal interrupted call */
!   }
  
    return(OK);
  }
--- 255,264 ----
  		mess.m_type = CANCEL;
  		(*dmap[(dev >> MAJOR) & BYTE].dmap_rw)(task, &mess);
  	}
!   }
! 
!   rfp->fp_suspended = NOT_SUSPENDED;
!   reply(proc_nr, EINTR);	/* signal interrupted call */
  
    return(OK);
  }
*** /home/phil/min1.5ref/fs/read.c	Wed Nov 14 00:05:57 1990
--- fs/read.c	Thu Nov  1 14:26:20 1990
***************
*** 50,66 ****
    register unsigned off, cum_io;
    register int oflags;
    off_t position;
!   int r, chunk, mode_word, usr, seg, block_spec, char_spec, regular;
    struct filp *wf;
  
    /* MM loads segments by putting funny things in upper 10 bits of 'fd'. */
    if (who == MM_PROC_NR && (fd & (~BYTE)) ) {
  	usr = (fd >> 8) & BYTE;
! 	seg = (fd >> 6) & 03;
  	fd &= FD_MASK;		/* get rid of user and segment bits */
    } else {
  	usr = who;		/* normal case */
! 	seg = D;
    }
  
    /* If the file descriptor is valid, get the inode, size and mode. */
--- 50,74 ----
    register unsigned off, cum_io;
    register int oflags;
    off_t position;
! #if (MACHINE == PC532)
!   int r, chunk, mode_word, usr, block_spec, char_spec, regular;
! #else
!   int r, chunk, mode_word, usr, seg, block_spec, char_spec, regular;
! #endif /* PC532 */
    struct filp *wf;
  
    /* MM loads segments by putting funny things in upper 10 bits of 'fd'. */
    if (who == MM_PROC_NR && (fd & (~BYTE)) ) {
  	usr = (fd >> 8) & BYTE;
! #if (MACHINE != PC532)
! 	seg = (fd >> 6) & 03;
! #endif /* PC532 */
  	fd &= FD_MASK;		/* get rid of user and segment bits */
    } else {
  	usr = who;		/* normal case */
! #if (MACHINE != PC532)
! 	seg = D;
! #endif /* PC532 */
    }
  
    /* If the file descriptor is valid, get the inode, size and mode. */
***************
*** 131,137 ****
  
  		/* Read or write 'chunk' bytes. */
  		r = rw_chunk(rip, position, off, chunk, nbytes, rw_flag,
! 							     buffer, seg, usr);
  		if (r != OK) break;	/* EOF reached */
  		if (rdwt_err < 0) break;
  
--- 139,149 ----
  
  		/* Read or write 'chunk' bytes. */
  		r = rw_chunk(rip, position, off, chunk, nbytes, rw_flag,
! #if (MACHINE == PC532)
! 							     buffer, usr);
! #else
! 							     buffer, seg, usr);
! #endif /* PC532 */
  		if (r != OK) break;	/* EOF reached */
  		if (rdwt_err < 0) break;
  
***************
*** 177,183 ****
  /*===========================================================================*
   *				rw_chunk				     *
   *===========================================================================*/
! PRIVATE int rw_chunk(rip, position, off, chunk, left, rw_flag, buff, seg, usr)
  register struct inode *rip;	/* pointer to inode for file to be rd/wr */
  off_t position;			/* position within file to read or write */
  unsigned off;			/* off within the current block */
--- 189,200 ----
  /*===========================================================================*
   *				rw_chunk				     *
   *===========================================================================*/
! #if (MACHINE == PC532)
! PRIVATE int rw_chunk(rip, position, off, chunk, left, rw_flag, buff, usr)
! #else
! PRIVATE int rw_chunk(rip, position, off, chunk, left, rw_flag, buff, seg, usr)
! int seg;			/* T or D segment in user space */
! #endif /* PC532 */
  register struct inode *rip;	/* pointer to inode for file to be rd/wr */
  off_t position;			/* position within file to read or write */
  unsigned off;			/* off within the current block */
***************
*** 185,191 ****
  unsigned left;			/* max number of bytes wanted after position */
  int rw_flag;			/* READING or WRITING */
  char *buff;			/* virtual address of the user buffer */
- int seg;			/* T or D segment in user space */
  int usr;			/* which user process */
  {
  /* Read or write (part of) a block. */
--- 202,207 ----
***************
*** 231,238 ****
    if (rw_flag == WRITING && chunk != BLOCK_SIZE && !block_spec &&
  					position >= rip->i_size && off == 0)
  	zero_block(bp);
!   dir = (rw_flag == READING ? TO_USER : FROM_USER);
!   r = rw_user(seg, usr, (vir_bytes)buff, (vir_bytes)chunk, bp->b_data+off, dir);
    if (rw_flag == WRITING) bp->b_dirt = DIRTY;
    n = (off + chunk == BLOCK_SIZE ? FULL_DATA_BLOCK : PARTIAL_DATA_BLOCK);
    put_block(bp, n);
--- 247,260 ----
    if (rw_flag == WRITING && chunk != BLOCK_SIZE && !block_spec &&
  					position >= rip->i_size && off == 0)
  	zero_block(bp);
! #if (MACHINE == PC532)
!   dir = (rw_flag == READING ? TO_USER : FROM_USER) |
!     (fs_who == MM_PROC_NR ? MM_BEHALF : 0);
!   r = rw_user(usr, (vir_bytes) buff, bp->b_data + off, (vir_bytes) chunk, dir);
! #else
!   dir = (rw_flag == READING ? TO_USER : FROM_USER);
!   r = rw_user(seg, usr, (vir_bytes)buff, (vir_bytes)chunk, bp->b_data+off, dir);
! #endif /* PC532 */
    if (rw_flag == WRITING) bp->b_dirt = DIRTY;
    n = (off + chunk == BLOCK_SIZE ? FULL_DATA_BLOCK : PARTIAL_DATA_BLOCK);
    put_block(bp, n);
***************
*** 298,303 ****
--- 320,326 ----
  }
  
  
+ #if (MACHINE != PC532)
  /*===========================================================================*
   *				rw_user					     *
   *===========================================================================*/
***************
*** 336,342 ****
    sys_copy(&umess);
    return(umess.m_type);
  }
! 
  
  /*===========================================================================*
   *				read_ahead				     *
--- 359,365 ----
    sys_copy(&umess);
    return(umess.m_type);
  }
! #endif /* PC532 */
  
  /*===========================================================================*
   *				read_ahead				     *
***************
*** 407,413 ****
  #if (MACHINE == ATARI)
  	dev_size =  80L * 2 * 9 * 512;	/* can be 80L*1*9*512 as well */
  #else
! 	dev_size =  80L * 2 * 15 * 512;	/* change to your usual floppy size */
  #endif
    if (dev_size == 0)
  	blocks_per_track = 17;	/* hard disk (17 * nr_heads / 2 is too many) */
--- 430,440 ----
  #if (MACHINE == ATARI)
  	dev_size =  80L * 2 * 9 * 512;	/* can be 80L*1*9*512 as well */
  #else
! #if (MACHINE == PC532)
! 	dev_size =  40L * 2 * 9 * 512;	/* change to your usual floppy size */
! #else
! 	dev_size =  80L * 2 * 15 * 512;	/* change to your usual floppy size */
! #endif /* PC532 */
  #endif
    if (dev_size == 0)
  	blocks_per_track = 17;	/* hard disk (17 * nr_heads / 2 is too many) */
*** /home/phil/min1.5ref/fs/stadir.c	Wed Nov 14 00:05:57 1990
--- fs/stadir.c	Thu Nov  1 14:26:20 1990
***************
*** 169,174 ****
  
    /* Copy the struct to user space. */
    v = (vir_bytes) user_addr;
!   r = rw_user(D, who, v, (vir_bytes) sizeof statbuf, (char *) stp, TO_USER);
!   return(r);
! }
--- 169,178 ----
  
    /* Copy the struct to user space. */
    v = (vir_bytes) user_addr;
! #if (MACHINE == PC532)
!   r = rw_user(who, v, (char *) stp, (vir_bytes) sizeof statbuf, TO_USER);
! #else
!   r = rw_user(D, who, v, (vir_bytes) sizeof statbuf, (char *) stp, TO_USER);
! #endif /* PC532 */
!   return(r);
! }
*** /home/phil/min1.5ref/fs/table.c	Wed Nov 14 00:05:58 1990
--- fs/table.c	Thu Nov  1 14:26:20 1990
***************
*** 16,22 ****
  #include "inode.h"
  #include "super.h"
  
! PUBLIC char *stackpt = &fstack[FS_STACK_BYTES];	/* initial stack pointer */
  
  PUBLIC int (*call_vector[NCALLS])() = {
  	no_sys,		/*  0 = unused	*/
--- 16,24 ----
  #include "inode.h"
  #include "super.h"
  
! #if (MACHINE != PC532)
! PUBLIC char *stackpt = &fstack[FS_STACK_BYTES];	/* initial stack pointer */
! #endif /* PC532 */
  
  PUBLIC int (*call_vector[NCALLS])() = {
  	no_sys,		/*  0 = unused	*/
***************
*** 106,116 ****
--- 108,124 ----
      ----       ----------   -----       -------     ------  ----      */
      0,         0,           0,          0,           /* 0 = not used  */
      no_call,   rw_dev,      no_call,    MEM,         /* 1 = /dev/mem  */
+ #if (MACHINE == PC532)
+     no_call,   rw_dev,      no_call,    SCSI,        /* 2 = /dev/hd0  */
+     tty_open,  rw_dev,      no_call,    TTY,         /* 3 = /dev/tty0 */
+     no_call,   rw_dev2,     no_call,    TTY,         /* 4 = /dev/tty  */
+ #else
      no_call,   rw_dev,      no_call,    FLOPPY,      /* 2 = /dev/fd0  */
      no_call,   rw_dev,      no_call,    WINCHESTER,  /* 3 = /dev/hd0  */
      tty_open,  rw_dev,      no_call,    TTY,         /* 4 = /dev/tty0 */
      no_call,   rw_dev2,     no_call,    TTY,         /* 5 = /dev/tty  */
      no_call,   rw_dev,      no_call,    PRINTER,     /* 6 = /dev/lp   */
+ #endif /* PC532 */
  };
  
  PUBLIC int max_major = sizeof(dmap)/sizeof(struct dmap);
*** /home/phil/min1.5ref/fs/utility.c	Wed Nov 14 00:05:58 1990
--- fs/utility.c	Thu Nov  1 14:26:20 1990
***************
*** 19,25 ****
  #include "super.h"
  
  PRIVATE int panicking;		/* inhibits recursive panics during sync */
! PRIVATE message clock_mess;
  
  /*===========================================================================*
   *				clock_time				     *
--- 19,27 ----
  #include "super.h"
  
  PRIVATE int panicking;		/* inhibits recursive panics during sync */
! #if (MACHINE != PC532)
! PRIVATE message clock_mess;
! #endif /* PC532 */
  
  /*===========================================================================*
   *				clock_time				     *
***************
*** 31,50 ****
   * rate and that such things as leap seconds do not exist.
   */
  
!   register int k;
!   register struct super_block *sp;
! 
!   clock_mess.m_type = GET_TIME;
!   if ( (k = sendrec(CLOCK, &clock_mess)) != OK) panic("clock_time err", k);
  
    /* Since we now have the time, update the super block.  It is almost free. */
    sp = get_super(ROOT_DEV);
    if (sp) {
! 	sp->s_time = clock_mess.NEW_TIME;	/* update super block time */
  	if (sp->s_rd_only == FALSE) sp->s_dirt = DIRTY;
    }
  
!   return (time_t) clock_mess.NEW_TIME;
  }
  
  
--- 33,68 ----
   * rate and that such things as leap seconds do not exist.
   */
  
! #if (MACHINE == PC532)
!   time_t t, direct_get_time();
!   register struct super_block *sp;
! 
!   t = direct_get_time();
  
    /* Since we now have the time, update the super block.  It is almost free. */
    sp = get_super(ROOT_DEV);
    if (sp) {
! 	sp->s_time = t;				/* update super block time */
  	if (sp->s_rd_only == FALSE) sp->s_dirt = DIRTY;
    }
  
!   return (time_t) t;
! #else
!   register int k;
!   register struct super_block *sp;
! 
!   clock_mess.m_type = GET_TIME;
!   if ( (k = sendrec(CLOCK, &clock_mess)) != OK) panic("clock_time err", k);
! 
!   /* Since we now have the time, update the super block.  It is almost free. */
!   sp = get_super(ROOT_DEV);
!   if (sp) {
! 	sp->s_time = clock_mess.NEW_TIME;	/* update super block time */
! 	if (sp->s_rd_only == FALSE) sp->s_dirt = DIRTY;
!   }
! 
!   return (time_t) clock_mess.NEW_TIME;
! #endif /* PC532 */
  }
  
  
***************
*** 123,129 ****
  	return(ERROR);
    }
    vpath = (vir_bytes) path;
!   err_code = rw_user(D, who, vpath, (vir_bytes) len, user_path, FROM_USER);
    return(err_code);
  }
  
--- 141,151 ----
  	return(ERROR);
    }
    vpath = (vir_bytes) path;
! #if (MACHINE == PC532)
!   err_code = rw_user(who, vpath, user_path, (vir_bytes) len, FROM_USER);
! #else
!   err_code = rw_user(D, who, vpath, (vir_bytes) len, user_path, FROM_USER);
! #endif /* PC532 */
    return(err_code);
  }
  
