diff --git a/sources/FILEIO b/sources/FILEIO
index 0ff8a793..f2452134 100644
--- a/sources/FILEIO
+++ b/sources/FILEIO
@@ -1,12 +1,11 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
-(FILECREATED "25-Sep-2021 21:02:29" 
-{DSK}<Users>kaplan>Local>medley3.5>git-medley>sources>FILEIO.;99 162362 
 
-      changes to%:  (VARS FILEIOCOMS)
-                    (RECORDS FDEV)
+(FILECREATED "14-Dec-2021 16:10:18" {DSK}<Users>kaplan>Local>medley3.5>my-medley>sources>FILEIO.;102 160392 
 
-      previous date%: "25-Sep-2021 17:25:04" 
-{DSK}<Users>kaplan>Local>medley3.5>git-medley>sources>FILEIO.;98)
+      :CHANGES-TO (FNS \DO.PARAMS.AT.OPEN)
+
+      :PREVIOUS-DATE "13-Dec-2021 15:20:15" 
+{DSK}<Users>kaplan>Local>medley3.5>my-medley>sources>FILEIO.;101)
 
 
 (* ; "
@@ -44,7 +43,7 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
                     (DECLARE%: DONTEVAL@LOAD DOCOPY (P (DEFPRINT 'STREAM (FUNCTION \STREAM.DEFPRINT))
                                                        (DEFPRINT 'FDEV (FUNCTION \FDEV.DEFPRINT]
               (COMS                                          (* ; 
-                                                          "Needed because of STREAM initialization")
+                                                            "Needed because of STREAM initialization")
                     (INITVARS (FILELINELENGTH 102)
                            (\STREAM.DEFAULT.MAXBUFFERS 3)))
               (FNS \GETACCESS \SETACCESS)
@@ -211,58 +210,58 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
 (ADDTOVAR SYSTEMRECLST
 
 (DATATYPE STREAM ((COFFSET WORD)
-                      (CBUFSIZE WORD)
-                      (PEEKEDCHARP FLAG)
-                      (ACCESSBITS BITS 3)
-                      (CBUFPTR POINTER)
-                      (BYTESIZE BYTE)
-                      (CHARSET BYTE)
-                      (PEEKEDCHAR WORD)
-                      (CHARPOSITION WORD)
-                      (CBUFMAXSIZE WORD)
-                      (NONDEFAULTDATEFLG FLAG)
-                      (REVALIDATEFLG FLAG)
-                      (MULTIBUFFERHINT FLAG)
-                      (USERCLOSEABLE FLAG)
-                      (FULLFILENAME POINTER)
-                      (BINABLE FLAG)
-                      (BOUTABLE FLAG)
-                      (EXTENDABLE FLAG)
-                      (CBUFDIRTY FLAG)
-                      (DEVICE POINTER)
-                      (USERVISIBLE FLAG)
-                      (EOLCONVENTION BITS 2)
-                      (NIL FLAG)
-                      (VALIDATION POINTER)
-                      (CPAGE POINTER)
-                      (EPAGE POINTER)
-                      (EOFFSET WORD)
-                      (LINELENGTH WORD)
-                      (F1 POINTER)
-                      (F2 POINTER)
-                      (F3 POINTER)
-                      (F4 POINTER)
-                      (F5 POINTER)
-                      (FW6 WORD)
-                      (FW7 WORD)
-                      (FW8 WORD)
-                      (FW9 WORD)
-                      (F10 POINTER)
-                      (STRMBINFN POINTER)
-                      (STRMBOUTFN POINTER)
-                      (OUTCHARFN POINTER)
-                      (ENDOFSTREAMOP POINTER)
-                      (OTHERPROPS POINTER)
-                      (IMAGEOPS POINTER)
-                      (IMAGEDATA POINTER)
-                      (BUFFS POINTER)
-                      (MAXBUFFERS WORD)
-                      (LASTCCODE WORD)
-                      (EXTRASTREAMOP POINTER)
-                      (INCCODEFN POINTER)
-                      (PEEKCCODEFN POINTER)
-                      (BACKCCODEFN POINTER)
-                      (EXTERNALFORMAT POINTER)))
+                  (CBUFSIZE WORD)
+                  (PEEKEDCHARP FLAG)
+                  (ACCESSBITS BITS 3)
+                  (CBUFPTR POINTER)
+                  (BYTESIZE BYTE)
+                  (CHARSET BYTE)
+                  (PEEKEDCHAR WORD)
+                  (CHARPOSITION WORD)
+                  (CBUFMAXSIZE WORD)
+                  (NONDEFAULTDATEFLG FLAG)
+                  (REVALIDATEFLG FLAG)
+                  (MULTIBUFFERHINT FLAG)
+                  (USERCLOSEABLE FLAG)
+                  (FULLFILENAME POINTER)
+                  (BINABLE FLAG)
+                  (BOUTABLE FLAG)
+                  (EXTENDABLE FLAG)
+                  (CBUFDIRTY FLAG)
+                  (DEVICE POINTER)
+                  (USERVISIBLE FLAG)
+                  (EOLCONVENTION BITS 2)
+                  (NIL FLAG)
+                  (VALIDATION POINTER)
+                  (CPAGE POINTER)
+                  (EPAGE POINTER)
+                  (EOFFSET WORD)
+                  (LINELENGTH WORD)
+                  (F1 POINTER)
+                  (F2 POINTER)
+                  (F3 POINTER)
+                  (F4 POINTER)
+                  (F5 POINTER)
+                  (FW6 WORD)
+                  (FW7 WORD)
+                  (FW8 WORD)
+                  (FW9 WORD)
+                  (F10 POINTER)
+                  (STRMBINFN POINTER)
+                  (STRMBOUTFN POINTER)
+                  (OUTCHARFN POINTER)
+                  (ENDOFSTREAMOP POINTER)
+                  (OTHERPROPS POINTER)
+                  (IMAGEOPS POINTER)
+                  (IMAGEDATA POINTER)
+                  (BUFFS POINTER)
+                  (MAXBUFFERS WORD)
+                  (LASTCCODE WORD)
+                  (EXTRASTREAMOP POINTER)
+                  (INCCODEFN POINTER)
+                  (PEEKCCODEFN POINTER)
+                  (BACKCCODEFN POINTER)
+                  (EXTERNALFORMAT POINTER)))
 )
 (DECLARE%: DONTCOPY 
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE
@@ -272,51 +271,51 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
            (* ;; "First 8 words are fixed for BIN, BOUT opcodes.  Used to require length of whole datatype be multiple of 4, but Dolphin dead now.")
 
            (COFFSET WORD)                                    (* ; 
-                                                           "Offset in CPPTR of next bin or bout")
+                                                             "Offset in CPPTR of next bin or bout")
            (CBUFSIZE WORD)                                   (* ; 
-                                                           "Offset past last byte in that buffer")
+                                                             "Offset past last byte in that buffer")
            (PEEKEDCHARP FLAG)                                (* ; 
-                                 "if true, PEEKEDCHAR contains value of recent call to unread-char")
+                                   "if true, PEEKEDCHAR contains value of recent call to unread-char")
            (ACCESSBITS BITS 3)                               (* ; 
-                                       "What kind of access file is open for (read, write, append)")
+                                         "What kind of access file is open for (read, write, append)")
            (CBUFPTR POINTER)                                 (* ; "Pointer to current buffer")
            (BYTESIZE BYTE)                                   (* ; 
-                                                           "Byte size of stream, always 8 for now")
+                                                             "Byte size of stream, always 8 for now")
            (CHARSET BYTE)                                    (* ; "the current character set for this stream.  If 255, stream is not runcoded, so read-char consumes two bytes every time")
            (PEEKEDCHAR WORD)                                 (* ; "value of unread-char call")
            (CHARPOSITION WORD)                               (* ; "Used by POSITION etc.")
            (CBUFMAXSIZE WORD)                                (* ; 
-                             "on output, the size of the physical buffer--can't extend beyond this")
+                               "on output, the size of the physical buffer--can't extend beyond this")
 
            (* ;; "-------- Above fields (8 words) potentially known to microcode.  --------")
 
            (NONDEFAULTDATEFLG FLAG)
            (REVALIDATEFLG FLAG)
            (MULTIBUFFERHINT FLAG)                            (* ; 
-                            "True if stream likes to read and write more than one buffer at a time")
+                              "True if stream likes to read and write more than one buffer at a time")
            (USERCLOSEABLE FLAG)                              (* ; 
-                                           "Can be closed by CLOSEF;  NIL for terminal, dribble...")
+                                             "Can be closed by CLOSEF;  NIL for terminal, dribble...")
            (FULLFILENAME POINTER)                            (* ; 
-                                                           "Name by which file is known to user")
+                                                             "Name by which file is known to user")
            (BINABLE FLAG)                                    (* ; "BIN punts unless this bit on")
            (BOUTABLE FLAG)                                   (* ; "BOUT punts unless this bit on")
            (EXTENDABLE FLAG)                                 (* ; 
-                      "BOUT punts when COFFSET ge CBUFFSIZE unless this bit set and COFFSET lt 512")
+                        "BOUT punts when COFFSET ge CBUFFSIZE unless this bit set and COFFSET lt 512")
            (CBUFDIRTY FLAG)                                  (* ; 
-                                                      "true if BOUT has sullied the current buffer")
+                                                        "true if BOUT has sullied the current buffer")
            (DEVICE POINTER)                                  (* ; "FDEV of this guy")
            (USERVISIBLE FLAG)                                (* ; 
-                                                  "Listed by OPENP;  NIL for terminal, dribble ...")
+                                                    "Listed by OPENP;  NIL for terminal, dribble ...")
            (EOLCONVENTION BITS 2)                            (* ; "End-of-line convention")
            (NIL FLAG)                                        (* ; "Was NOTXCCS.")
            (VALIDATION POINTER)                              (* ; 
-          "A number somehow identifying file, used to determine if file has changed in our absence")
+            "A number somehow identifying file, used to determine if file has changed in our absence")
            (CPAGE POINTER)                                   (* ; 
-                      "CPAGE,,COFFSET constitutes current file pointer for most randaccess streams")
+                        "CPAGE,,COFFSET constitutes current file pointer for most randaccess streams")
            (EPAGE POINTER)
            (EOFFSET WORD)                                    (* ; "Page, byte offset of eof")
            (LINELENGTH WORD)                                 (* ; 
-                                                   "LINELENGTH of stream, or -1 for no line length")
+                                                     "LINELENGTH of stream, or -1 for no line length")
 
            (* ;; "----Following are device-specific fields----")
 
@@ -336,25 +335,22 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
            (* ;; "----Following only filled in for open streams----")
 
            (STRMBINFN POINTER)                               (* ; 
-                                                       "Either the BIN fn from the FDEV, or a trap")
+                                                         "Either the BIN fn from the FDEV, or a trap")
            (STRMBOUTFN POINTER)                              (* ; 
-                                                       "Either the BIN fn from the FDEV, or a trap")
+                                                         "Either the BIN fn from the FDEV, or a trap")
            (OUTCHARFN POINTER)                               (* ; 
-                                                "Called by \OUTCHAR, the normal character printer.")
-           (ENDOFSTREAMOP POINTER)                           (* ; 
-                                                           "Called if EOF and we try to read.")
-           (OTHERPROPS POINTER)                              (* ; 
-                                                           "PROP LIST for holding other info.")
+                                                  "Called by \OUTCHAR, the normal character printer.")
+           (ENDOFSTREAMOP POINTER)                           (* ; "Called if EOF and we try to read.")
+           (OTHERPROPS POINTER)                              (* ; "PROP LIST for holding other info.")
            (IMAGEOPS POINTER)                                (* ; "Image operations vector")
            (IMAGEDATA POINTER)                               (* ; 
-                                       "Image instance variables--format depends on IMAGEOPS value")
-           (BUFFS POINTER)                                   (* ; 
-                                                           "Buffer chain for pmapped streams")
+                                         "Image instance variables--format depends on IMAGEOPS value")
+           (BUFFS POINTER)                                   (* ; "Buffer chain for pmapped streams")
            (MAXBUFFERS WORD)                                 (* ; 
-                                                       "Max # of buffers the system will allocate.")
+                                                         "Max # of buffers the system will allocate.")
            (LASTCCODE WORD)                                  (* ; "After READ, RATOM, etc, the charcode that will be returned (as a character) by LASTC.  If there is none, this field is 65535.")
            (EXTRASTREAMOP POINTER)                           (* ; 
-                                                    "For use of applications programs, not devices")
+                                                      "For use of applications programs, not devices")
            (INCCODEFN POINTER)                               (* ; "Set by \EXTERNALFORMAT")
            (PEEKCCODEFN POINTER)
            (BACKCCODEFN POINTER)
@@ -365,22 +361,21 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
                                (* ;; "respecification of access bits:")
 
                                (RANDOMWRITEABLE FLAG)        (* ; 
-                                                   "File open for output (access = OUTPUT or BOTH)")
+                                                     "File open for output (access = OUTPUT or BOTH)")
                                (APPENDABLE FLAG)             (* ; 
-                                                  "File open for append (OUTPUT or APPEND or BOTH)")
-                               (READABLE FLAG)               (* ; 
-                                                           "File open for read (READ or BOTH)")
+                                                    "File open for append (OUTPUT or APPEND or BOTH)")
+                               (READABLE FLAG)               (* ; "File open for read (READ or BOTH)")
                                (NIL POINTER)))
           (BLOCKRECORD STREAM ((NIL 4 WORD)
                                (NIL BITS 14)
 
                                (* ;; 
-                             "JIS character encoding format specific, overrides CHARSET field.")
+                               "JIS character encoding format specific, overrides CHARSET field.")
 
                                (IN.KANJIIN FLAG)             (* ; 
-                                                        "True if input stream is in Kanji-in mode.")
+                                                          "True if input stream is in Kanji-in mode.")
                                (OUT.KANJIIN FLAG)            (* ; 
-                                                       "True if output stream is in Kanji-in mode.")
+                                                         "True if output stream is in Kanji-in mode.")
                                ))
           [ACCESSFNS STREAM ((ACCESS \GETACCESS \SETACCESS)
                              (FULLNAME (OR (fetch (STREAM FULLFILENAME) of DATUM)
@@ -391,7 +386,7 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
           USERCLOSEABLE _ T USERVISIBLE _ T ACCESSBITS _ NoBits CPAGE _ 0 EPAGE _ 0 BUFFS _ NIL 
           BYTESIZE _ 8 CBUFPTR _ NIL MAXBUFFERS _ (LET NIL (DECLARE (GLOBALVARS 
                                                                            \STREAM.DEFAULT.MAXBUFFERS
-                                                                               ))
+                                                                           ))
                                                        \STREAM.DEFAULT.MAXBUFFERS)
           CHARPOSITION _ 0 LINELENGTH _ (LET NIL (DECLARE (GLOBALVARS FILELINELENGTH))
                                              FILELINELENGTH)
@@ -464,16 +459,15 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
        '64)
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS STREAMOP MACRO [ARGS (CONS 'SPREADAPPLY*
-                                             (CONS (COND
-                                                      ((EQ (CAR (LISTP (CAR ARGS)))
-                                                           'QUOTE)
-                                                       (LIST 'fetch (CADAR ARGS)
-                                                             'of
-                                                             (CADR ARGS)))
-                                                      (T (HELP "STREAMOP - OPNAME not quoted:" ARGS))
-                                                      )
-                                                   (CDDR ARGS])
+(PUTPROPS STREAMOP MACRO [ARGS (CONS 'SPREADAPPLY* (CONS (COND
+                                                            ((EQ (CAR (LISTP (CAR ARGS)))
+                                                                 'QUOTE)
+                                                             (LIST 'fetch (CADAR ARGS)
+                                                                   'of
+                                                                   (CADR ARGS)))
+                                                            (T (HELP "STREAMOP - OPNAME not quoted:"
+                                                                     ARGS)))
+                                                         (CDDR ARGS])
 )
 (DECLARE%: EVAL@COMPILE 
 
@@ -496,47 +490,47 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
 (DECLARE%: EVAL@COMPILE 
 
 (PUTPROPS TestMasked MACRO ((BITS MASK)
-                                    (NEQ (LOGAND BITS MASK)
-                                         0)))
+                            (NEQ (LOGAND BITS MASK)
+                                 0)))
 
 (PUTPROPS APPENDABLE MACRO ((STREAM)
-                                    (TestMasked (fetch ACCESSBITS of STREAM)
-                                           AppendBit)))
+                            (TestMasked (fetch ACCESSBITS of STREAM)
+                                   AppendBit)))
 
 (PUTPROPS APPENDONLY MACRO ((STREAM)
-                                    (EQ (fetch ACCESSBITS of STREAM)
-                                        AppendBit)))
+                            (EQ (fetch ACCESSBITS of STREAM)
+                                AppendBit)))
 
 (PUTPROPS DIRTYABLE MACRO [(STREAM)
-                                   (TestMasked (fetch ACCESSBITS of STREAM)
-                                          (CONSTANT (LOGOR AppendBit WriteBit])
+                           (TestMasked (fetch ACCESSBITS of STREAM)
+                                  (CONSTANT (LOGOR AppendBit WriteBit])
 
 (PUTPROPS OPENED MACRO ((STREAM)
-                                (NEQ (fetch ACCESSBITS of STREAM)
-                                     NoBits)))
+                        (NEQ (fetch ACCESSBITS of STREAM)
+                             NoBits)))
 
 (PUTPROPS OVERWRITEABLE MACRO ((STREAM)
-                                       (TestMasked (fetch ACCESSBITS of STREAM)
-                                              WriteBit)))
+                               (TestMasked (fetch ACCESSBITS of STREAM)
+                                      WriteBit)))
 
 (PUTPROPS READABLE MACRO ((STREAM)
-                                  (TestMasked (fetch ACCESSBITS of STREAM)
-                                         ReadBit)))
+                          (TestMasked (fetch ACCESSBITS of STREAM)
+                                 ReadBit)))
 
 (PUTPROPS READONLY MACRO ((STREAM)
-                                  (EQ (fetch ACCESSBITS of STREAM)
-                                      ReadBit)))
+                          (EQ (fetch ACCESSBITS of STREAM)
+                              ReadBit)))
 
 (PUTPROPS WRITEABLE MACRO [(STREAM)
-                                   (OR (OVERWRITEABLE STREAM)
-                                       (AND (APPENDABLE STREAM)
-                                            (\EOFP STREAM])
+                           (OR (OVERWRITEABLE STREAM)
+                               (AND (APPENDABLE STREAM)
+                                    (\EOFP STREAM])
 )
 
 (RPAQQ EOLCONVENTIONS ((CR.EOLC 0)
-                           (LF.EOLC 1)
-                           (CRLF.EOLC 2)
-                           (ANY.EOLC 3)))
+                       (LF.EOLC 1)
+                       (CRLF.EOLC 2)
+                       (ANY.EOLC 3)))
 (DECLARE%: EVAL@COMPILE 
 
 (RPAQQ CR.EOLC 0)
@@ -773,178 +767,173 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE 
 
 (PUTPROPS FDEVOP DMACRO [ARGS (LET ((OPNAME (CAR ARGS))
-                                            (METHOD-DEVICE (CADR ARGS))
-                                            (TAIL (CDDR ARGS)))
-                                           (COND
-                                              [(AND (LISTP OPNAME)
-                                                    (EQ (CAR OPNAME)
-                                                        'QUOTE))
-                                               `(SPREADAPPLY* (fetch (FDEV ,(CADR OPNAME))
-                                                                 of ,METHOD-DEVICE)
-                                                       ,@TAIL]
-                                              (T (ERROR "OPNAME not quoted: " OPNAME])
+                                    (METHOD-DEVICE (CADR ARGS))
+                                    (TAIL (CDDR ARGS)))
+                                   (COND
+                                      [(AND (LISTP OPNAME)
+                                            (EQ (CAR OPNAME)
+                                                'QUOTE))
+                                       `(SPREADAPPLY* (fetch (FDEV ,(CADR OPNAME))
+                                                         of ,METHOD-DEVICE)
+                                               ,@TAIL]
+                                      (T (ERROR "OPNAME not quoted: " OPNAME])
 
 (PUTPROPS \RECOGNIZE-HACK DMACRO [ARGS (LET ((NAME (CAR ARGS))
-                                                     (RECOG (CADR ARGS))
-                                                     (DEVICE (CADDR ARGS)))
-                                                    `(if (type? STREAM ,NAME)
-                                                         then ,NAME
-                                                       else (FDEVOP 'GETFILENAME ,DEVICE
-                                                                       ,NAME
-                                                                       ,RECOG
-                                                                       ,DEVICE])
+                                             (RECOG (CADR ARGS))
+                                             (DEVICE (CADDR ARGS)))
+                                            `(if (type? STREAM ,NAME)
+                                                 then ,NAME
+                                               else (FDEVOP 'GETFILENAME ,DEVICE ,NAME ,RECOG
+                                                           ,DEVICE])
 )
 (DECLARE%: EVAL@COMPILE
 
-(DATATYPE FDEV ((RESETABLE FLAG)                         (* ; "Obsolete")
-                    (RANDOMACCESSP FLAG)
-                    (NODIRECTORIES FLAG)
-                    (PAGEMAPPED FLAG)                        (* ; 
-                                                           "True if i/o handled by pmap routines")
-                    (FDBINABLE FLAG)                         (* ; 
-                               "Copied as a microcode flag for INPUT streams formed on this device")
-                    (FDBOUTABLE FLAG)
-                    (FDEXTENDABLE FLAG)
-                    (BUFFERED FLAG)                          (* ; "True implies that the device supports the BIN & BOUT uCode conventions, and implements the GETNEXTBUFFER method")
-                    (DEVICENAME POINTER)                     (* ; "Identifying name somehow")
-                    (REMOTEP FLAG)                           (* ; 
-                                                           "true if device not local to machine")
-                    (SUBDIRECTORIES FLAG)                    (* ; 
-                                                           "true if device has real subdirectories")
-                    (INPUT-INDIRECTED FLAG)                  (* ; 
-                "True for devices that indirect their input stream.  Method INPUTSTREAM fetches it")
-                    (OUTPUT-INDIRECTED FLAG)                 (* ; 
-              "True for devices that indirect their output stream.  Method OUTPUTSTREAM fetches it")
-                    (DEVICEINFO POINTER)                     (* ; 
-                                                       "arbitrary device-specific info stored here")
-                    (OPENFILELST POINTER)                    (* ; 
-                                        "Default place to keep list of streams open on this device")
+(DATATYPE FDEV ((RESETABLE FLAG)                             (* ; "Obsolete")
+                (RANDOMACCESSP FLAG)
+                (NODIRECTORIES FLAG)
+                (PAGEMAPPED FLAG)                            (* ; 
+                                                             "True if i/o handled by pmap routines")
+                (FDBINABLE FLAG)                             (* ; 
+                                 "Copied as a microcode flag for INPUT streams formed on this device")
+                (FDBOUTABLE FLAG)
+                (FDEXTENDABLE FLAG)
+                (BUFFERED FLAG)                              (* ; "True implies that the device supports the BIN & BOUT uCode conventions, and implements the GETNEXTBUFFER method")
+                (DEVICENAME POINTER)                         (* ; "Identifying name somehow")
+                (REMOTEP FLAG)                               (* ; 
+                                                             "true if device not local to machine")
+                (SUBDIRECTORIES FLAG)                        (* ; 
+                                                             "true if device has real subdirectories")
+                (INPUT-INDIRECTED FLAG)                      (* ; 
+                  "True for devices that indirect their input stream.  Method INPUTSTREAM fetches it")
+                (OUTPUT-INDIRECTED FLAG)                     (* ; 
+                "True for devices that indirect their output stream.  Method OUTPUTSTREAM fetches it")
+                (DEVICEINFO POINTER)                         (* ; 
+                                                         "arbitrary device-specific info stored here")
+                (OPENFILELST POINTER)                        (* ; 
+                                          "Default place to keep list of streams open on this device")
 
-                    (* ;; "-----Rest of record consists of device %"methods%"-----")
+                (* ;; "-----Rest of record consists of device %"methods%"-----")
 
-                    (* ;; "-----Following fields required of all devices-----")
+                (* ;; "-----Following fields required of all devices-----")
 
-                    (HOSTNAMEP POINTER)                      (* ; "(hostname {device}) => T if hostname is valid.  If device is given, return a FDEV for this {new} host, or T to use existing device")
-                    (EVENTFN POINTER)                        (* ; 
-                                      "(device event), called before/after logout, sysout, makesys")
+                (HOSTNAMEP POINTER)                          (* ; "(hostname {device}) => T if hostname is valid.  If device is given, return a FDEV for this {new} host, or T to use existing device")
+                (EVENTFN POINTER)                            (* ; 
+                                        "(device event), called before/after logout, sysout, makesys")
 
-                    (* ;; 
-             "-----Following fields required of all named devices, e.g., ones that open files-----")
+                (* ;; 
+               "-----Following fields required of all named devices, e.g., ones that open files-----")
 
-                    (DIRECTORYNAMEP POINTER)                 (* ; 
-                                                   "(host/dir) => true if directory exists on host")
-                    (OPENFILE POINTER)                       (* ; 
- "(name access recog otherinfo device) => new stream open on this device, or NIL if name not found")
-                    (CLOSEFILE POINTER)                      (* ; 
-                                                           "(stream) => closes stream, returns it")
-                    (REOPENFILE POINTER)                     (* ; "(name access recog otherinfo device stream) like openfile, but called after logout to revalidate file, so optionally uses info in old stream to keep this opening like the previous")
-                    (GETFILENAME POINTER)                    (* ; 
-                                                           "(name recog device) => full file name")
-                    (DELETEFILE POINTER)                     (* ; 
-                "(name) => deletes file so named, returning name, or NIL on failure.  RECOG=OLDEST")
-                    (GENERATEFILES POINTER)                  (* ; "(device pattern) => generator object for files matching pattern.  Car of object is generator function, cdr is arbitrary state.  Generator fn returns next file, or NIL when finished")
-                    (RENAMEFILE POINTER)                     (* ; "(olddevice oldfile newdevice newfile) to rename file on this (olddevice) to a potentially different device.")
-                    (OPENP POINTER)                          (* ; 
-        "(name access dev) => stream if name is open for access, or all open streams if name = NIL")
-                    (REGISTERFILE POINTER)                   (* ; 
-                                                   "(stream dev) => registers stream on its device")
-                    (UNREGISTERFILE POINTER)                 (* ; 
-                                             "(stream dev) => unregisters a stream from its device")
-                    (FREEPAGECOUNT POINTER)                  (* ; 
-                                                    "(host/dir dev) => # of free pages on host/dir")
-                    (MAKEDIRECTORY POINTER)                  (* ; "(host/dir dev)")
-                    (CHECKFILENAME POINTER)                  (* ; 
-                                        "(name dev) => name if it is well-formed file name for dev")
-                    (HOSTALIVEP POINTER)                     (* ; 
-          "(host dev) => true if host is alive, i.e., responsive;  only defined if REMOTEP is true")
-                    (BREAKCONNECTION POINTER)                (* ; 
-                                                   "(host fastp dev) => closes connections to host")
+                (DIRECTORYNAMEP POINTER)                     (* ; 
+                                                     "(host/dir) => true if directory exists on host")
+                (OPENFILE POINTER)                           (* ; 
+   "(name access recog otherinfo device) => new stream open on this device, or NIL if name not found")
+                (CLOSEFILE POINTER)                          (* ; 
+                                                             "(stream) => closes stream, returns it")
+                (REOPENFILE POINTER)                         (* ; "(name access recog otherinfo device stream) like openfile, but called after logout to revalidate file, so optionally uses info in old stream to keep this opening like the previous")
+                (GETFILENAME POINTER)                        (* ; 
+                                                             "(name recog device) => full file name")
+                (DELETEFILE POINTER)                         (* ; 
+                  "(name) => deletes file so named, returning name, or NIL on failure.  RECOG=OLDEST")
+                (GENERATEFILES POINTER)                      (* ; "(device pattern) => generator object for files matching pattern.  Car of object is generator function, cdr is arbitrary state.  Generator fn returns next file, or NIL when finished")
+                (RENAMEFILE POINTER)                         (* ; "(olddevice oldfile newdevice newfile) to rename file on this (olddevice) to a potentially different device.")
+                (OPENP POINTER)                              (* ; 
+          "(name access dev) => stream if name is open for access, or all open streams if name = NIL")
+                (REGISTERFILE POINTER)                       (* ; 
+                                                     "(stream dev) => registers stream on its device")
+                (UNREGISTERFILE POINTER)                     (* ; 
+                                               "(stream dev) => unregisters a stream from its device")
+                (FREEPAGECOUNT POINTER)                      (* ; 
+                                                      "(host/dir dev) => # of free pages on host/dir")
+                (MAKEDIRECTORY POINTER)                      (* ; "(host/dir dev)")
+                (CHECKFILENAME POINTER)                      (* ; 
+                                          "(name dev) => name if it is well-formed file name for dev")
+                (HOSTALIVEP POINTER)                         (* ; 
+            "(host dev) => true if host is alive, i.e., responsive;  only defined if REMOTEP is true")
+                (BREAKCONNECTION POINTER)                    (* ; 
+                                                     "(host fastp dev) => closes connections to host")
 
-                    (* ;; 
-                  "-----The following are required methods for operating on open streams-----")
+                (* ;; "-----The following are required methods for operating on open streams-----")
 
-                    (BIN POINTER)                            (* ; "(stream) => next byte of input")
-                    (BOUT POINTER)                           (* ; 
-                                                           "(stream byte) output byte to stream")
-                    (PEEKBIN POINTER)                        (* ; 
-                                       "(stream) => next byte without advancing position in stream")
-                    (NIL POINTER)                            (* ; 
-                                                           "Was READCHAR, replaced by READCHARCODE")
-                    (NIL POINTER)                            (* ; 
-                                             "Was WRITECHAR (stream char) => writes char to stream")
-                    (NIL POINTER)                            (* ; "Was PEEKCHAR")
-                    (NIL POINTER)                            (* ; "Was UNREADCHAR")
-                    (READP POINTER)                          (* ; 
-                             "(stream flag) => T if there is input available from stream right now")
-                    (EOFP POINTER)                           (* ; 
-                                                           "(stream) => T if BIN would signal eof.")
-                    (BLOCKIN POINTER)                        (* ; 
-                                                           "(stream buffer byteoffset nbytes)")
-                    (BLOCKOUT POINTER)                       (* ; 
-                                                           "(stream buffer byteoffset nbytes)")
-                    (FORCEOUTPUT POINTER)                    (* ; 
-     "(stream waitForFinish) flushes out to device anything that is buffered awaiting transmission")
-                    (GETFILEINFO POINTER)                    (* ; 
-      "(stream/name attribute device) => value of attribute for open stream or name of closed file")
-                    (SETFILEINFO POINTER)                    (* ; 
-"(stream/name attribute newvalue device) sets attribute of open stream or closed file of given name")
-                    (CHARSETFN POINTER)                      (* ; "(stream charset) => access function for the charset slot, for benefit of indirect streams.  See IMCHARSET for changing it on a file.")
-                    (INPUTSTREAM POINTER)                    (* ; 
-                                                           "(stream) => indirected input stream")
-                    (OUTPUTSTREAM POINTER)                   (* ; 
-                                                           "(stream) => indirected output stream")
+                (BIN POINTER)                                (* ; "(stream) => next byte of input")
+                (BOUT POINTER)                               (* ; 
+                                                             "(stream byte) output byte to stream")
+                (PEEKBIN POINTER)                            (* ; 
+                                         "(stream) => next byte without advancing position in stream")
+                (NIL POINTER)                                (* ; 
+                                                             "Was READCHAR, replaced by READCHARCODE")
+                (NIL POINTER)                                (* ; 
+                                               "Was WRITECHAR (stream char) => writes char to stream")
+                (NIL POINTER)                                (* ; "Was PEEKCHAR")
+                (NIL POINTER)                                (* ; "Was UNREADCHAR")
+                (READP POINTER)                              (* ; 
+                               "(stream flag) => T if there is input available from stream right now")
+                (EOFP POINTER)                               (* ; 
+                                                             "(stream) => T if BIN would signal eof.")
+                (BLOCKIN POINTER)                            (* ; "(stream buffer byteoffset nbytes)")
+                (BLOCKOUT POINTER)                           (* ; "(stream buffer byteoffset nbytes)")
+                (FORCEOUTPUT POINTER)                        (* ; 
+       "(stream waitForFinish) flushes out to device anything that is buffered awaiting transmission")
+                (GETFILEINFO POINTER)                        (* ; 
+        "(stream/name attribute device) => value of attribute for open stream or name of closed file")
+                (SETFILEINFO POINTER)                        (* ; 
+ "(stream/name attribute newvalue device) sets attribute of open stream or closed file of given name")
+                (CHARSETFN POINTER)                          (* ; "(stream charset) => access function for the charset slot, for benefit of indirect streams.  See IMCHARSET for changing it on a file.")
+                (INPUTSTREAM POINTER)                        (* ; 
+                                                             "(stream) => indirected input stream")
+                (OUTPUTSTREAM POINTER)                       (* ; 
+                                                             "(stream) => indirected output stream")
 
-                    (* ;; "-----Following are required of random-access streams-----")
+                (* ;; "-----Following are required of random-access streams-----")
 
-                    (GETFILEPTR POINTER)
-                    (GETEOFPTR POINTER)
-                    (SETFILEPTR POINTER)
-                    (BACKFILEPTR POINTER)                    (* ; "(stream) backs up `fileptr' by one.  Stream is only required to be able to do this once, i.e.  one-character buffer suffices")
-                    (SETEOFPTR POINTER)                      (* ; 
-                             "(stream length) => truncates or lengthens stream to indicated length")
-                    (LASTC POINTER)                          (* ; 
-                                                         "Should be possible only if RANDOMACCESSP")
+                (GETFILEPTR POINTER)
+                (GETEOFPTR POINTER)
+                (SETFILEPTR POINTER)
+                (BACKFILEPTR POINTER)                        (* ; "(stream) backs up `fileptr' by one.  Stream is only required to be able to do this once, i.e.  one-character buffer suffices")
+                (SETEOFPTR POINTER)                          (* ; 
+                               "(stream length) => truncates or lengthens stream to indicated length")
+                (LASTC POINTER)                              (* ; 
+                                                           "Should be possible only if RANDOMACCESSP")
 
-                    (* ;; "-----Following used for buffered streams-----")
+                (* ;; "-----Following used for buffered streams-----")
 
-                    (GETNEXTBUFFER POINTER)                  (* ; "(stream whatfor noerrorflg) => Disposes of current buffer and optionally reads next.  whatfor is READ or WRITE.  Can cause EOF error unless noerrorflg")
-                    (RELEASEBUFFER POINTER)                  (* ; 
-                                   "(stream) => Does whatever appropriate when CBUFPTR is released")
+                (GETNEXTBUFFER POINTER)                      (* ; "(stream whatfor noerrorflg) => Disposes of current buffer and optionally reads next.  whatfor is READ or WRITE.  Can cause EOF error unless noerrorflg")
+                (RELEASEBUFFER POINTER)                      (* ; 
+                                     "(stream) => Does whatever appropriate when CBUFPTR is released")
 
-                    (* ;; "-----Following used for pagemapped streams-----")
+                (* ;; "-----Following used for pagemapped streams-----")
 
-                    (READPAGES POINTER)                      (* ; "(stream firstpage# buflist) => # of bytes read, starting at firstpage#, reading into buflist, a list of buffers or a single buffer (the usual case)")
-                    (WRITEPAGES POINTER)                     (* ; 
-       "(stream firstpage# buflist) writes from buflist to stream starting at firstpage# of stream")
-                    (TRUNCATEFILE POINTER)                   (* ; 
-           "(stream page offset) make stream's eof be at page,offset, discarding anything after it")
+                (READPAGES POINTER)                          (* ; "(stream firstpage# buflist) => # of bytes read, starting at firstpage#, reading into buflist, a list of buffers or a single buffer (the usual case)")
+                (WRITEPAGES POINTER)                         (* ; 
+         "(stream firstpage# buflist) writes from buflist to stream starting at firstpage# of stream")
+                (TRUNCATEFILE POINTER)                       (* ; 
+             "(stream page offset) make stream's eof be at page,offset, discarding anything after it")
 
-                    (* ;; "-----For window system, argh-----")
+                (* ;; "-----For window system, argh-----")
 
-                    (WINDOWOPS POINTER)                      (* ; "window system operations")
-                    (WINDOWDATA POINTER)                     (* ; "data for window systems")
+                (WINDOWOPS POINTER)                          (* ; "window system operations")
+                (WINDOWDATA POINTER)                         (* ; "data for window systems")
 
-                    (* ;; "-----For any stream (here to not recompile everything)-----")
+                (* ;; "-----For any stream (here to not recompile everything)-----")
 
-                    (DEFAULTEXTERNALFORMAT POINTER)          (* ; 
-                      "Was READCHARCODE. Read a character code from the stream (cf BIN for bytes).")
-                    )
-                   DIRECTORYNAMEP _ (FUNCTION NILL)
-                   HOSTNAMEP _ (FUNCTION NILL)
-                   READP _ (FUNCTION \GENERIC.READP)
-                   SETFILEPTR _ (FUNCTION \IS.NO.RANDACCESSP)
-                   GETFILEPTR _ (FUNCTION \ILLEGAL.DEVICEOP)
-                   GETEOFPTR _ (FUNCTION \IS.NOT.RANDACCESSP)
-                   EOFP _ (FUNCTION \ILLEGAL.DEVICEOP)
-                   BLOCKIN _ (FUNCTION \GENERIC.BINS)
-                   BLOCKOUT _ (FUNCTION \GENERIC.BOUTS)
-                   RENAMEFILE _ (FUNCTION \GENERIC.RENAMEFILE)
-                   FORCEOUTPUT _ (FUNCTION NILL)
-                   REGISTERFILE _ (FUNCTION NILL)
-                   OPENP _ (FUNCTION NILL)
-                   UNREGISTERFILE _ (FUNCTION NILL)
-                   CHARSETFN _ (FUNCTION \GENERIC.CHARSET)
-                   BREAKCONNECTION _ (FUNCTION NILL))
+                (DEFAULTEXTERNALFORMAT POINTER)              (* ; 
+                        "Was READCHARCODE. Read a character code from the stream (cf BIN for bytes).")
+                )
+               DIRECTORYNAMEP _ (FUNCTION NILL)
+               HOSTNAMEP _ (FUNCTION NILL)
+               READP _ (FUNCTION \GENERIC.READP)
+               SETFILEPTR _ (FUNCTION \IS.NO.RANDACCESSP)
+               GETFILEPTR _ (FUNCTION \ILLEGAL.DEVICEOP)
+               GETEOFPTR _ (FUNCTION \IS.NOT.RANDACCESSP)
+               EOFP _ (FUNCTION \ILLEGAL.DEVICEOP)
+               BLOCKIN _ (FUNCTION \GENERIC.BINS)
+               BLOCKOUT _ (FUNCTION \GENERIC.BOUTS)
+               RENAMEFILE _ (FUNCTION \GENERIC.RENAMEFILE)
+               FORCEOUTPUT _ (FUNCTION NILL)
+               REGISTERFILE _ (FUNCTION NILL)
+               OPENP _ (FUNCTION NILL)
+               UNREGISTERFILE _ (FUNCTION NILL)
+               CHARSETFN _ (FUNCTION \GENERIC.CHARSET)
+               BREAKCONNECTION _ (FUNCTION NILL))
 
 (RECORD FILEGENOBJ (NEXTFILEFN FILEINFOFN . GENFILESTATE))
 )
@@ -1101,69 +1090,69 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
 (ADDTOVAR SYSTEMRECLST
 
 (DATATYPE FDEV ((RESETABLE FLAG)
-                    (RANDOMACCESSP FLAG)
-                    (NODIRECTORIES FLAG)
-                    (PAGEMAPPED FLAG)
-                    (FDBINABLE FLAG)
-                    (FDBOUTABLE FLAG)
-                    (FDEXTENDABLE FLAG)
-                    (BUFFERED FLAG)
-                    (DEVICENAME POINTER)
-                    (REMOTEP FLAG)
-                    (SUBDIRECTORIES FLAG)
-                    (INPUT-INDIRECTED FLAG)
-                    (OUTPUT-INDIRECTED FLAG)
-                    (DEVICEINFO POINTER)
-                    (OPENFILELST POINTER)
-                    (HOSTNAMEP POINTER)
-                    (EVENTFN POINTER)
-                    (DIRECTORYNAMEP POINTER)
-                    (OPENFILE POINTER)
-                    (CLOSEFILE POINTER)
-                    (REOPENFILE POINTER)
-                    (GETFILENAME POINTER)
-                    (DELETEFILE POINTER)
-                    (GENERATEFILES POINTER)
-                    (RENAMEFILE POINTER)
-                    (OPENP POINTER)
-                    (REGISTERFILE POINTER)
-                    (UNREGISTERFILE POINTER)
-                    (FREEPAGECOUNT POINTER)
-                    (MAKEDIRECTORY POINTER)
-                    (CHECKFILENAME POINTER)
-                    (HOSTALIVEP POINTER)
-                    (BREAKCONNECTION POINTER)
-                    (BIN POINTER)
-                    (BOUT POINTER)
-                    (PEEKBIN POINTER)
-                    (NIL POINTER)
-                    (NIL POINTER)
-                    (NIL POINTER)
-                    (NIL POINTER)
-                    (READP POINTER)
-                    (EOFP POINTER)
-                    (BLOCKIN POINTER)
-                    (BLOCKOUT POINTER)
-                    (FORCEOUTPUT POINTER)
-                    (GETFILEINFO POINTER)
-                    (SETFILEINFO POINTER)
-                    (CHARSETFN POINTER)
-                    (INPUTSTREAM POINTER)
-                    (OUTPUTSTREAM POINTER)
-                    (GETFILEPTR POINTER)
-                    (GETEOFPTR POINTER)
-                    (SETFILEPTR POINTER)
-                    (BACKFILEPTR POINTER)
-                    (SETEOFPTR POINTER)
-                    (LASTC POINTER)
-                    (GETNEXTBUFFER POINTER)
-                    (RELEASEBUFFER POINTER)
-                    (READPAGES POINTER)
-                    (WRITEPAGES POINTER)
-                    (TRUNCATEFILE POINTER)
-                    (WINDOWOPS POINTER)
-                    (WINDOWDATA POINTER)
-                    (DEFAULTEXTERNALFORMAT POINTER)))
+                (RANDOMACCESSP FLAG)
+                (NODIRECTORIES FLAG)
+                (PAGEMAPPED FLAG)
+                (FDBINABLE FLAG)
+                (FDBOUTABLE FLAG)
+                (FDEXTENDABLE FLAG)
+                (BUFFERED FLAG)
+                (DEVICENAME POINTER)
+                (REMOTEP FLAG)
+                (SUBDIRECTORIES FLAG)
+                (INPUT-INDIRECTED FLAG)
+                (OUTPUT-INDIRECTED FLAG)
+                (DEVICEINFO POINTER)
+                (OPENFILELST POINTER)
+                (HOSTNAMEP POINTER)
+                (EVENTFN POINTER)
+                (DIRECTORYNAMEP POINTER)
+                (OPENFILE POINTER)
+                (CLOSEFILE POINTER)
+                (REOPENFILE POINTER)
+                (GETFILENAME POINTER)
+                (DELETEFILE POINTER)
+                (GENERATEFILES POINTER)
+                (RENAMEFILE POINTER)
+                (OPENP POINTER)
+                (REGISTERFILE POINTER)
+                (UNREGISTERFILE POINTER)
+                (FREEPAGECOUNT POINTER)
+                (MAKEDIRECTORY POINTER)
+                (CHECKFILENAME POINTER)
+                (HOSTALIVEP POINTER)
+                (BREAKCONNECTION POINTER)
+                (BIN POINTER)
+                (BOUT POINTER)
+                (PEEKBIN POINTER)
+                (NIL POINTER)
+                (NIL POINTER)
+                (NIL POINTER)
+                (NIL POINTER)
+                (READP POINTER)
+                (EOFP POINTER)
+                (BLOCKIN POINTER)
+                (BLOCKOUT POINTER)
+                (FORCEOUTPUT POINTER)
+                (GETFILEINFO POINTER)
+                (SETFILEINFO POINTER)
+                (CHARSETFN POINTER)
+                (INPUTSTREAM POINTER)
+                (OUTPUTSTREAM POINTER)
+                (GETFILEPTR POINTER)
+                (GETEOFPTR POINTER)
+                (SETFILEPTR POINTER)
+                (BACKFILEPTR POINTER)
+                (SETEOFPTR POINTER)
+                (LASTC POINTER)
+                (GETNEXTBUFFER POINTER)
+                (RELEASEBUFFER POINTER)
+                (READPAGES POINTER)
+                (WRITEPAGES POINTER)
+                (TRUNCATEFILE POINTER)
+                (WINDOWOPS POINTER)
+                (WINDOWDATA POINTER)
+                (DEFAULTEXTERNALFORMAT POINTER)))
 )
 
 
@@ -1423,40 +1412,47 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation.
                 (GO RETRY])
 
 (\DO.PARAMS.AT.OPEN
-  [LAMBDA (STREAM ACCESS PARAMETERS)                    (* ; "Edited 29-Jun-2021 17:07 by rmk:")
-                                                             (* ; "Edited  5-Oct-92 13:45 by jds")
+  [LAMBDA (STREAM ACCESS PARAMETERS)                         (* ; "Edited 14-Dec-2021 16:10 by rmk")
+                                                             (* ; "Edited 13-Dec-2021 15:20 by rmk")
+                                                             (* ; "Edited 29-Jun-2021 17:07 by rmk:")
+                                                             (* ; "Edited  5-Oct-92 13:45 by jds")
 
-    (* ;; "Does generic parameters when a file/stream is open.  Called by \OPENFILE and OPENSTREAM")
+    (* ;; "Does generic parameters when a file/stream is open.  Called by \OPENFILE and OPENSTREAM")
 
-    (* ;; "RMK  July 2020:  Make sure that \EXTERNALFORMAT is always called, so that it can implement per-device defaults.")
+    (* ;; "RMK  July 2020:  Make sure that \EXTERNALFORMAT is always called, so that it can implement per-device defaults.")
 
-    (* ;; 
-  "RMK August 2020:  Added hook for user STREAM-AFTER-OPEN-FNS, not global so can be rebound.")
+    (* ;; 
+    "RMK August 2020:  Added hook for user STREAM-AFTER-OPEN-FNS, not global so can be rebound.")
 
     (DECLARE (USEDFREE STREAM-AFTER-OPEN-FNS))
-    (\EXTERNALFORMAT STREAM :DEFAULT)
-    (for X ATTR VAL in PARAMETERS do (COND
-                                                    [(LISTP X)
-                                                     (SETQ ATTR (CAR X))
-                                                     (SETQ VAL (CAR (LISTP (CDR X]
-                                                    (T (SETQ ATTR X)
-                                                       (SETQ VAL T)))
-                                                (SELECTQ ATTR
-                                                    (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL))
-                                                    (ENDOFSTREAMOP (SETFILEINFO STREAM
-                                                                          'ENDOFSTREAMOP VAL))
-                                                    (CHARSET (CHARSET STREAM VAL))
-                                                    ((FORMAT EXTERNALFORMAT) 
-                                                         (\EXTERNALFORMAT STREAM VAL))
-                                                    (CONVHANKAKU (CONVHANKAKU STREAM VAL))
-                                                    ((EOL EOLCONVENTION EOLC) 
-                                                         (replace EOLCONVENTION of STREAM
-                                                            with (SELECTQ VAL
-                                                                         (CR CR.EOLC)
-                                                                         (LF LF.EOLC)
-                                                                         (CRLF CRLF.EOLC)
-                                                                         (\ILLEGAL.ARG VAL))))
-                                                    NIL))
+    (\EXTERNALFORMAT STREAM :DEFAULT)
+    (for X ATTR VAL in PARAMETERS
+       do (COND
+             [(LISTP X)
+              (SETQ ATTR (CAR X))
+              (SETQ VAL (CAR (LISTP (CDR X]
+             (T (SETQ ATTR X)
+                (SETQ VAL T)))
+          (SELECTQ ATTR
+              (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL))
+              (ENDOFSTREAMOP (SETFILEINFO STREAM 'ENDOFSTREAMOP VAL))
+              (CHARSET (CHARSET STREAM VAL))
+              ((FORMAT EXTERNALFORMAT) 
+                   (\EXTERNALFORMAT STREAM VAL))
+              (CONVHANKAKU (CONVHANKAKU STREAM VAL))
+              ((EOL EOLCONVENTION EOLC) 
+                   (replace EOLCONVENTION of STREAM with (SELECTQ VAL
+                                                             (CR CR.EOLC)
+                                                             (LF LF.EOLC)
+                                                             (CRLF CRLF.EOLC)
+                                                             (ANY (CL:WHEN (\GETSTREAM STREAM
+                                                                                  'OUTPUT T)
+                                                                         (ERROR 
+                                                  "EOL convention ANY not allowed for output streams"
+                                                                                STREAM))
+                                                                  ANY.EOLC)
+                                                             (\ILLEGAL.ARG VAL))))
+              NIL))
     (FOR FN IN STREAM-AFTER-OPEN-FNS DO (APPLY* FN STREAM ACCESS PARAMETERS])
 
 (\RENAMEFILE
@@ -1865,21 +1861,18 @@ update the map")
 (DECLARE%: EVAL@COMPILE 
 
 (PUTPROPS \INHERITFDEVOP.D MACRO [X (SUBPAIR '(NEWARGS OPNAME . ARGS)
-                                                   (CONS (SUBST '(fetch DEVICEINFO of FDEV)
-                                                                'FDEV
-                                                                (CDR X))
-                                                         X)
-                                                   '(FUNCTION (LAMBDA ARGS
-                                                                (FDEVOP 'OPNAME (fetch DEVICEINFO
-                                                                                   of FDEV)
-                                                                                           . NEWARGS])
+                                           (CONS (SUBST '(fetch DEVICEINFO of FDEV)
+                                                        'FDEV
+                                                        (CDR X))
+                                                 X)
+                                           '(FUNCTION (LAMBDA ARGS
+                                                        (FDEVOP 'OPNAME (fetch DEVICEINFO
+                                                                           of FDEV) . NEWARGS])
 
 (PUTPROPS \INHERITFDEVOP.S MACRO [(OPNAME . ARGS)
-                                          (FUNCTION (LAMBDA ARGS
-                                                      (FDEVOP 'OPNAME (fetch DEVICEINFO
-                                                                         of (fetch DEVICE
-                                                                                   of STREAM))
-                                                                                              . ARGS])
+                                  (FUNCTION (LAMBDA ARGS
+                                              (FDEVOP 'OPNAME (fetch DEVICEINFO
+                                                                 of (fetch DEVICE of STREAM)) . ARGS])
 )
 
 (RPAQ? LOGINHOST/DIR '{DSK})
@@ -2633,13 +2626,13 @@ update the map")
 )
 
 (RPAQQ FILING.TYPES ((BINARY 0)
-                         (DIRECTORY 1)
-                         (TEXT 2)
-                         (SERIALIZED 3)
-                         (INTERPRESS 4361)
-                         (TEDIT 6056)
-                         (FASL 6057)
-                         (LAFITE 6058)))
+                     (DIRECTORY 1)
+                     (TEXT 2)
+                     (SERIALIZED 3)
+                     (INTERPRESS 4361)
+                     (TEDIT 6056)
+                     (FASL 6057)
+                     (LAFITE 6058)))
 (DECLARE%: DOEVAL@COMPILE DONTCOPY
 
 (GLOBALVARS FILING.TYPES)
@@ -2648,24 +2641,24 @@ update the map")
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE 
 
 (PUTPROPS \DEVICE-OPEN-STREAMS MACRO [ARGS (LET ((DEVICE (CAR ARGS)))
-                                                        `(FDEVOP 'OPENP ,DEVICE NIL NIL ,DEVICE])
+                                                `(FDEVOP 'OPENP ,DEVICE NIL NIL ,DEVICE])
 
 (PUTPROPS \CONVERT-PATHNAME DMACRO (OPENLAMBDA (PATHNAME?)
 
-                                             (* ;; 
-      "Coerce pathnames to Interlisp strings, for the benefit of antediluvian Interlisp-D file fns")
+                                     (* ;; 
+        "Coerce pathnames to Interlisp strings, for the benefit of antediluvian Interlisp-D file fns")
 
-                                             (CL:TYPECASE PATHNAME?
-                                                 (PATHNAME (INTERLISP-NAMESTRING PATHNAME?))
-                                                 (T PATHNAME?))))
+                                     (CL:TYPECASE PATHNAME?
+                                         (PATHNAME (INTERLISP-NAMESTRING PATHNAME?))
+                                         (T PATHNAME?))))
 )
 
 (DEFOPTIMIZER ACCESS-CHARSET (STREAM &OPTIONAL NEWVALUE)
-                                 `((OPENLAMBDA (STRM)
-                                     (FDEVOP 'CHARSETFN (fetch (STREAM DEVICE) of STRM)
-                                            STRM
-                                            ,NEWVALUE))
-                                   ,STREAM))
+                             `((OPENLAMBDA (STRM)
+                                 (FDEVOP 'CHARSETFN (fetch (STREAM DEVICE) of STRM)
+                                        STRM
+                                        ,NEWVALUE))
+                               ,STREAM))
 
 (* "END EXPORTED DEFINITIONS")
 
@@ -2779,51 +2772,51 @@ update the map")
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE 
 
 (PUTPROPS \DECFILEPTR MACRO ((STREAM X)
-                                     (\INCFILEPTR STREAM (IMINUS X))))
+                             (\INCFILEPTR STREAM (IMINUS X))))
 
 (PUTPROPS \GETFILEPTR MACRO (OPENLAMBDA (STRM)
-                                      (FDEVOP 'GETFILEPTR (fetch DEVICE of STRM)
-                                             STRM)))
+                              (FDEVOP 'GETFILEPTR (fetch DEVICE of STRM)
+                                     STRM)))
 
 (PUTPROPS \SIGNEDWIN MACRO ((STREAM)
-                                    (SIGNED (\WIN STREAM)
-                                           BITSPERWORD)))
+                            (SIGNED (\WIN STREAM)
+                                   BITSPERWORD)))
 
 (PUTPROPS \SIGNEDWOUT MACRO ((STREAM N)
-                                     (\WOUT STREAM (UNSIGNED N BITSPERWORD))))
+                             (\WOUT STREAM (UNSIGNED N BITSPERWORD))))
 
 (PUTPROPS \WIN MACRO (OPENLAMBDA (STREAM)
-                               (create WORD
-                                      HIBYTE _ (\BIN STREAM)
-                                      LOBYTE _ (\BIN STREAM))))
+                       (create WORD
+                              HIBYTE _ (\BIN STREAM)
+                              LOBYTE _ (\BIN STREAM))))
 
 (PUTPROPS \WOUT MACRO (OPENLAMBDA (STREAM W)
-                                (\BOUT STREAM (fetch HIBYTE of W))
-                                (\BOUT STREAM (fetch LOBYTE of W))))
+                        (\BOUT STREAM (fetch HIBYTE of W))
+                        (\BOUT STREAM (fetch LOBYTE of W))))
 
 (PUTPROPS \BINS BYTEMACRO (OPENLAMBDA (STRM BASE OFF NBYTES)
-                                    (FDEVOP 'BLOCKIN (fetch (STREAM DEVICE) of STRM)
-                                           STRM BASE OFF NBYTES)))
+                            (FDEVOP 'BLOCKIN (fetch (STREAM DEVICE) of STRM)
+                                   STRM BASE OFF NBYTES)))
 
 (PUTPROPS \BOUTS BYTEMACRO (OPENLAMBDA (STRM BASE OFF NBYTES)
-                                     (FDEVOP 'BLOCKOUT (fetch (STREAM DEVICE) of STRM)
-                                            STRM BASE OFF NBYTES)))
+                             (FDEVOP 'BLOCKOUT (fetch (STREAM DEVICE) of STRM)
+                                    STRM BASE OFF NBYTES)))
 
 (PUTPROPS \EOFP BYTEMACRO (OPENLAMBDA (STRM)
-                                    (FDEVOP 'EOFP (fetch (STREAM DEVICE) of STRM)
-                                           STRM)))
+                            (FDEVOP 'EOFP (fetch (STREAM DEVICE) of STRM)
+                                   STRM)))
 
 (PUTPROPS SIZE.FROM.LENGTH MACRO [LAMBDA (LEN)
-                                           (DECLARE (LOCALVARS LEN))
-                                           (AND LEN (FOLDHI LEN BYTESPERPAGE])
+                                   (DECLARE (LOCALVARS LEN))
+                                   (AND LEN (FOLDHI LEN BYTESPERPAGE])
 )
 (DECLARE%: EVAL@COMPILE 
 
 (RPAQQ BitsPerByte 8)
 
 (RPAQ ByteOffsetSize (SELECTQ (SYSTEMTYPE)
-                                (VAX 10)
-                                9))
+                            (VAX 10)
+                            9))
 
 (RPAQQ WordsPerPage 256)
 
@@ -2843,12 +2836,12 @@ update the map")
 (DECLARE%: EVAL@COMPILE
 
 (ACCESSFNS BYTEPTR ((PAGE (FOLDLO DATUM BYTESPERPAGE))
-                        (OFFSET (MOD DATUM BYTESPERPAGE)))
-                       (TYPE? (AND (FIXP DATUM)
-                                       (IGEQ DATUM 0)
-                                       (ILEQ DATUM \MAXFILEPTR)))
-                       (CREATE (IPLUS (UNFOLD PAGE BYTESPERPAGE)
-                                          OFFSET)))
+                    (OFFSET (MOD DATUM BYTESPERPAGE)))
+                   (TYPE? (AND (FIXP DATUM)
+                               (IGEQ DATUM 0)
+                               (ILEQ DATUM \MAXFILEPTR)))
+                   (CREATE (IPLUS (UNFOLD PAGE BYTESPERPAGE)
+                                  OFFSET)))
 )
 
 (* "END EXPORTED DEFINITIONS")
@@ -3100,40 +3093,40 @@ update the map")
 (PUTPROPS FILEIO COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 
 1990 1991 1992 1993 1999 2020 2021))
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (27462 30940 (STREAMPROP 27472 . 27906) (GETSTREAMPROP 27908 . 28377) (PUTSTREAMPROP 
-28379 . 30788) (STREAMP 30790 . 30938)) (30983 33502 (\DEFPRINT.BY.NAME 30993 . 32145) (
-\STREAM.DEFPRINT 32147 . 33195) (\FDEV.DEFPRINT 33197 . 33500)) (33760 38801 (\GETACCESS 33770 . 34224
-) (\SETACCESS 34226 . 38799)) (59682 65651 (\DEFINEDEVICE 59692 . 62008) (\GETDEVICEFROMNAME 62010 . 
-62483) (\GETDEVICEFROMHOSTNAME 62485 . 63529) (\REMOVEDEVICE 63531 . 64654) (\REMOVEDEVICE.NAMES 64656
- . 65649)) (65691 90351 (\CLOSEFILE 65701 . 66526) (\DELETEFILE 66528 . 66822) (\DEVICEEVENT 66824 . 
-68594) (\GENERATEFILES 68596 . 69074) (\GENERATENEXTFILE 69076 . 69727) (\GENERATEFILEINFO 69729 . 
-70190) (\GETFILENAME 70192 . 70581) (\GENERIC.OUTFILEP 70583 . 71053) (\OPENFILE 71055 . 73633) (
-\DO.PARAMS.AT.OPEN 73635 . 76188) (\RENAMEFILE 76190 . 76614) (\REVALIDATEFILE 76616 . 79218) (
-\PAGED.REVALIDATEFILELST 79220 . 80778) (\PAGED.REVALIDATEFILES 80780 . 82499) (\PAGED.REVALIDATEFILE 
-82501 . 84784) (\BUFFERED.REVALIDATEFILE 84786 . 87072) (\BUFFERED.REVALIDATEFILELST 87074 . 88258) (
-\PRINT-REVALIDATION-RESULT 88260 . 88675) (\TRUNCATEFILE 88677 . 89068) (\FILE-CONFLICT 89070 . 90349)
-) (90387 95050 (\GENERATENOFILES 90397 . 92493) (\NULLFILEGENERATOR 92495 . 92739) (\NOFILESNEXTFILEFN
- 92741 . 94732) (\NOFILESINFOFN 94734 . 95048)) (95169 97077 (\FILE.NOT.OPEN 95179 . 95692) (
-\FILE.WONT.OPEN 95694 . 96022) (\ILLEGAL.DEVICEOP 96024 . 96306) (\IS.NOT.RANDACCESSP 96308 . 96754) (
-\STREAM.NOT.OPEN 96756 . 97075)) (97212 99510 (\FDEVINSTANCE 97222 . 99508)) (101060 108434 (CNDIR 
-101070 . 102375) (DIRECTORYNAME 102377 . 106560) (DIRECTORYNAMEP 106562 . 107178) (HOSTNAMEP 107180 . 
-107987) (\ADD.CONNECTED.DIR 107989 . 108432)) (108479 135866 (\BACKFILEPTR 108489 . 108677) (
-\BACKPEEKBIN 108679 . 109040) (\BACKBIN 109042 . 109393) (BIN 109395 . 109612) (\BIN 109614 . 109891) 
-(\BINS 109893 . 110179) (BOUT 110181 . 110543) (\BOUT 110545 . 110860) (\BOUTS 110862 . 111173) (
-COPYBYTES 111175 . 114507) (COPYCHARS 114509 . 118175) (COPYFILE 118177 . 118974) (\COPYOPENFILE 
-118976 . 122049) (\INFER.FILE.TYPE 122051 . 123005) (EOFP 123007 . 123304) (FORCEOUTPUT 123306 . 
-123553) (\FLUSH.OPEN.STREAMS 123555 . 123911) (CHARSET 123913 . 125577) (ACCESS-CHARSET 125579 . 
-125796) (GETEOFPTR 125798 . 126048) (GETFILEINFO 126050 . 129243) (\TYPE.FROM.FILETYPE 129245 . 129715
-) (\FILETYPE.FROM.TYPE 129717 . 129896) (GETFILEPTR 129898 . 130150) (SETFILEINFO 130152 . 133765) (
-SETFILEPTR 133767 . 135486) (BOUT16 135488 . 135673) (BIN16 135675 . 135864)) (135969 141174 (
-\GENERIC.BINS 135979 . 136259) (\GENERIC.BOUTS 136261 . 136526) (\GENERIC.RENAMEFILE 136528 . 138359) 
-(\GENERIC.OPENP 138361 . 139676) (\GENERIC.READP 139678 . 140719) (\GENERIC.CHARSET 140721 . 141172)) 
-(141175 141514 (\MAP-OPEN-STREAMS 141185 . 141512)) (143384 145464 (\EOF.ACTION 143394 . 143645) (
-\EOSERROR 143647 . 143840) (\GETEOFPTR 143842 . 144024) (\INCFILEPTR 144026 . 144376) (\PEEKBIN 144378
- . 144569) (\SETCLOSEDFILELENGTH 144571 . 144905) (\SETEOFPTR 144907 . 145095) (\SETFILEPTR 145097 . 
-145462)) (145465 146007 (\FIXPOUT 145475 . 145775) (\FIXPIN 145777 . 146005)) (146008 146574 (\BOUTEOL
- 146018 . 146572)) (149666 159530 (\BUFFERED.BIN 149676 . 150528) (\BUFFERED.PEEKBIN 150530 . 151312) 
-(\BUFFERED.BOUT 151314 . 152174) (\BUFFERED.BINS 152176 . 155861) (\BUFFERED.BOUTS 155863 . 157664) (
-\BUFFERED.COPYBYTES 157666 . 159528)) (159559 161911 (\NULLDEVICE 159569 . 161587) (\NULL.OPENFILE 
-161589 . 161909)))))
+  (FILEMAP (NIL (26864 30342 (STREAMPROP 26874 . 27308) (GETSTREAMPROP 27310 . 27779) (PUTSTREAMPROP 
+27781 . 30190) (STREAMP 30192 . 30340)) (30385 32904 (\DEFPRINT.BY.NAME 30395 . 31547) (
+\STREAM.DEFPRINT 31549 . 32597) (\FDEV.DEFPRINT 32599 . 32902)) (33162 38203 (\GETACCESS 33172 . 33626
+) (\SETACCESS 33628 . 38201)) (58356 64325 (\DEFINEDEVICE 58366 . 60682) (\GETDEVICEFROMNAME 60684 . 
+61157) (\GETDEVICEFROMHOSTNAME 61159 . 62203) (\REMOVEDEVICE 62205 . 63328) (\REMOVEDEVICE.NAMES 63330
+ . 64323)) (64365 89011 (\CLOSEFILE 64375 . 65200) (\DELETEFILE 65202 . 65496) (\DEVICEEVENT 65498 . 
+67268) (\GENERATEFILES 67270 . 67748) (\GENERATENEXTFILE 67750 . 68401) (\GENERATEFILEINFO 68403 . 
+68864) (\GETFILENAME 68866 . 69255) (\GENERIC.OUTFILEP 69257 . 69727) (\OPENFILE 69729 . 72307) (
+\DO.PARAMS.AT.OPEN 72309 . 74848) (\RENAMEFILE 74850 . 75274) (\REVALIDATEFILE 75276 . 77878) (
+\PAGED.REVALIDATEFILELST 77880 . 79438) (\PAGED.REVALIDATEFILES 79440 . 81159) (\PAGED.REVALIDATEFILE 
+81161 . 83444) (\BUFFERED.REVALIDATEFILE 83446 . 85732) (\BUFFERED.REVALIDATEFILELST 85734 . 86918) (
+\PRINT-REVALIDATION-RESULT 86920 . 87335) (\TRUNCATEFILE 87337 . 87728) (\FILE-CONFLICT 87730 . 89009)
+) (89047 93710 (\GENERATENOFILES 89057 . 91153) (\NULLFILEGENERATOR 91155 . 91399) (\NOFILESNEXTFILEFN
+ 91401 . 93392) (\NOFILESINFOFN 93394 . 93708)) (93829 95737 (\FILE.NOT.OPEN 93839 . 94352) (
+\FILE.WONT.OPEN 94354 . 94682) (\ILLEGAL.DEVICEOP 94684 . 94966) (\IS.NOT.RANDACCESSP 94968 . 95414) (
+\STREAM.NOT.OPEN 95416 . 95735)) (95872 98170 (\FDEVINSTANCE 95882 . 98168)) (99372 106746 (CNDIR 
+99382 . 100687) (DIRECTORYNAME 100689 . 104872) (DIRECTORYNAMEP 104874 . 105490) (HOSTNAMEP 105492 . 
+106299) (\ADD.CONNECTED.DIR 106301 . 106744)) (106791 134178 (\BACKFILEPTR 106801 . 106989) (
+\BACKPEEKBIN 106991 . 107352) (\BACKBIN 107354 . 107705) (BIN 107707 . 107924) (\BIN 107926 . 108203) 
+(\BINS 108205 . 108491) (BOUT 108493 . 108855) (\BOUT 108857 . 109172) (\BOUTS 109174 . 109485) (
+COPYBYTES 109487 . 112819) (COPYCHARS 112821 . 116487) (COPYFILE 116489 . 117286) (\COPYOPENFILE 
+117288 . 120361) (\INFER.FILE.TYPE 120363 . 121317) (EOFP 121319 . 121616) (FORCEOUTPUT 121618 . 
+121865) (\FLUSH.OPEN.STREAMS 121867 . 122223) (CHARSET 122225 . 123889) (ACCESS-CHARSET 123891 . 
+124108) (GETEOFPTR 124110 . 124360) (GETFILEINFO 124362 . 127555) (\TYPE.FROM.FILETYPE 127557 . 128027
+) (\FILETYPE.FROM.TYPE 128029 . 128208) (GETFILEPTR 128210 . 128462) (SETFILEINFO 128464 . 132077) (
+SETFILEPTR 132079 . 133798) (BOUT16 133800 . 133985) (BIN16 133987 . 134176)) (134281 139486 (
+\GENERIC.BINS 134291 . 134571) (\GENERIC.BOUTS 134573 . 134838) (\GENERIC.RENAMEFILE 134840 . 136671) 
+(\GENERIC.OPENP 136673 . 137988) (\GENERIC.READP 137990 . 139031) (\GENERIC.CHARSET 139033 . 139484)) 
+(139487 139826 (\MAP-OPEN-STREAMS 139497 . 139824)) (141610 143690 (\EOF.ACTION 141620 . 141871) (
+\EOSERROR 141873 . 142066) (\GETEOFPTR 142068 . 142250) (\INCFILEPTR 142252 . 142602) (\PEEKBIN 142604
+ . 142795) (\SETCLOSEDFILELENGTH 142797 . 143131) (\SETEOFPTR 143133 . 143321) (\SETFILEPTR 143323 . 
+143688)) (143691 144233 (\FIXPOUT 143701 . 144001) (\FIXPIN 144003 . 144231)) (144234 144800 (\BOUTEOL
+ 144244 . 144798)) (147696 157560 (\BUFFERED.BIN 147706 . 148558) (\BUFFERED.PEEKBIN 148560 . 149342) 
+(\BUFFERED.BOUT 149344 . 150204) (\BUFFERED.BINS 150206 . 153891) (\BUFFERED.BOUTS 153893 . 155694) (
+\BUFFERED.COPYBYTES 155696 . 157558)) (157589 159941 (\NULLDEVICE 157599 . 159617) (\NULL.OPENFILE 
+159619 . 159939)))))
 STOP
diff --git a/sources/FILEIO.LCOM b/sources/FILEIO.LCOM
index 053ba1b6..826ac790 100644
Binary files a/sources/FILEIO.LCOM and b/sources/FILEIO.LCOM differ
