(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)

(FILECREATED "24-Aug-2025 11:50:09" 
|{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>VANILLADISK.;3| 5267   

      :EDIT-BY |rmk|

      :CHANGES-TO (FNS \\VANILLADISKINIT)

      :PREVIOUS-DATE "17-May-90 16:13:16" 
|{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>VANILLADISK.;2|)


(PRETTYCOMPRINT VANILLADISKCOMS)

(RPAQQ VANILLADISKCOMS ((FNS \\VANILLADISKINIT \\VANILLAHOSTNAMEP \\VANILLAEVENTFN)
                        (INITVARS (\\PSEUDODSK))
                        (GLOBALVARS \\PSEUDODSK \\DISKNAMECASEARRAY)
                        (DECLARE\: DONTEVAL@LOAD (P (\\VANILLADISKINIT)))
                        (LOCALVARS . T)))
(DEFINEQ

(\\VANILLADISKINIT
  (LAMBDA NIL                                               (* \; "Edited 24-Aug-2025 11:49 by rmk")
                                                             (* |bvm:| "30-Jan-85 21:43")
    (PROG ((ARR (COPYARRAY UPPERCASEARRAY)))

         (* * |Set| |up| |array| |that| |maps| |illegal| |filename| |chars| |to| 0 |and| 
         |synonymous| |characters| |to| \a |canonical| |char|)

          (|for| I |from| 0 |to| (SUB1 (CHARCODE 0)) |do| (SETCASEARRAY ARR I 0))
                                                             (* |Non-printing| |characters| 
                                                             |verboten|)
          (|for| I |from| (ADD1 (CHARCODE 9)) |to| (SUB1 (CHARCODE A))
             |do| (SETCASEARRAY ARR I 0))
          (|for| I |from| (ADD1 (CHARCODE Z)) |to| (SUB1 (CHARCODE \a))
             |do| (SETCASEARRAY ARR I 0))
          (|for| I |from| (ADD1 (CHARCODE \z)) |to| \\MAXTHINCHAR |do| (SETCASEARRAY ARR I 0))
          (SETCASEARRAY ARR (CHARCODE \;)
                 (CHARCODE \;))
          (SETCASEARRAY ARR (CHARCODE !)
                 (CHARCODE \;))
          (SETCASEARRAY ARR (CHARCODE *)
                 (CHARCODE *))
          (SETCASEARRAY ARR (CHARCODE ESCAPE)
                 (CHARCODE *))
          (SETCASEARRAY ARR (CHARCODE ?)
                 (CHARCODE \#))
          (SETCASEARRAY ARR (CHARCODE \.)
                 (CHARCODE \.))
          (SETCASEARRAY ARR (CHARCODE -)
                 (CHARCODE -))
          (SETCASEARRAY ARR (CHARCODE +)
                 (CHARCODE +))
          (SETCASEARRAY ARR (CHARCODE $)
                 (CHARCODE $))
          (SETQ \\DISKNAMECASEARRAY ARR))

         (* * |Define| \a |device| |whose| |sole| |purpose| |is| |to| |select| |the| 
         |appropriate| DSK |device| |depending| |on| |which| |machine| |you're| |on|)

    (\\DEFINEDEVICE NIL (|create| FDEV
                               DEVICENAME _ "VANILLADISK"
                               EVENTFN _ (FUNCTION NILL)
                               HOSTNAMEP _ (FUNCTION \\VANILLAHOSTNAMEP)))))

(\\vanillahostnamep
  (lambda (name)                                     (* \; "Edited  7-Apr-88 17:20 by masinter")
                                                             (* |bvm:| "30-Jan-85 21:57")
(* |;;;| "Fires up the appropriate file system for the machine you're running on")

    (selectq (machinetype)
        ((dandelion dove) 
(* |;;;| "If there is a valid Lisp directory on the disk, use that;  otherwise use the pseudo-disk coredevice")

             (cond
                ((neq name 'dsk)                             (* \; 
                                                           "Not interested in any other names")
                 nil)
                ((and (getd '|\\LFOpenDevice|)
                      (|\\LFOpenDevice|)))
                (t 
(* |;;;| "Define the PSEUDO-DSK device, if it hasn't been defined yet, and make DSK synonymous with it.  On LOGOUT, the name DSK is disassociated with this device, but the device remains")

                   (cond
                      ((not \\pseudodsk)
                       (coredevice 'pseudo-dsk)
                       (setq \\pseudodsk (\\getdevicefromname 'pseudo-dsk))
                       (|replace| (fdev eventfn) |of| \\pseudodsk
                          |with| (function \\vanillaeventfn))))
                   (\\definedevice 'dsk \\pseudodsk)
                   \\pseudodsk)))
        (maiko (selectq name
                   (unix (|\\UFSOpenDevice|))
                   (dsk (|\\DSKOpenDevice|))
                   nil))
        ((dolphin dorado) 
             (\\m44hostnamep name))
        nil)))

(\\vanillaeventfn
  (lambda (fdev event)                                   (* |bvm:| "30-Jan-85 21:54")
          (* * |Disassociates| |the| |name| dsk |from| |the| |pseudo| |disk,| |in| 
        |case| |there's| \a |real| |disk| |on| |the| |machine| |now|)
    (selectq event
        ((afterlogout aftersysout aftermakesys aftersavevm) 
             (\\removedevice.names fdev 'dsk))
        nil)))
)

(RPAQ? \\PSEUDODSK )
(DECLARE\: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS \\PSEUDODSK \\DISKNAMECASEARRAY)
)
(DECLARE\: DONTEVAL@LOAD 

(\\VANILLADISKINIT)
)
(DECLARE\: DOEVAL@COMPILE DONTCOPY

(LOCALVARS . T)
)
(DECLARE\: DONTCOPY
  (FILEMAP (NIL (736 5028 (\\VANILLADISKINIT 746 . 2959) (\\VANILLAHOSTNAMEP 2961 . 4605) (
\\VANILLAEVENTFN 4607 . 5026)))))
STOP
