(FILECREATED "30-Jan-85 22:35:29" {ERIS}<LISPCORE>SOURCES>VANILLADISK.;2 4364
changes to: (FNS \VANILLADISKINIT \VANILLAHOSTNAMEP \VANILLAEVENTFN \GETPSEUDODSK)
(VARS VANILLADISKCOMS)
previous date: "15-Jan-85 12:29:28" {ERIS}<LISPCORE>SOURCES>VANILLADISK.;1)
(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT VANILLADISKCOMS)
(RPAQQ VANILLADISKCOMS ((FNS \VANILLADISKINIT \VANILLAHOSTNAMEP \VANILLAEVENTFN)
(INITVARS (\PSEUDODSK))
(GLOBALVARS \PSEUDODSK \DISKNAMECASEARRAY)
(DECLARE: DONTEVAL@LOAD (P (\VANILLADISKINIT)))
(LOCALVARS . T)))
(DEFINEQ
(\VANILLADISKINIT
[LAMBDA NIL (* 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 \MAXCHAR 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) (* 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 (QUOTE DSK)) (* Not interested in any other names)
NIL)
((AND (GETD (QUOTE \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 (QUOTE PSEUDO-DSK))
(SETQ \PSEUDODSK (\GETDEVICEFROMNAME (QUOTE PSEUDO-DSK)))
(replace (FDEV EVENTFN) of \PSEUDODSK with (FUNCTION \VANILLAEVENTFN]
(\DEFINEDEVICE (QUOTE DSK)
\PSEUDODSK)
\PSEUDODSK)))
((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 (QUOTE DSK)))
NIL])
)
(RPAQ? \PSEUDODSK )
(DECLARE: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS \PSEUDODSK \DISKNAMECASEARRAY)
)
(DECLARE: DONTEVAL@LOAD
(\VANILLADISKINIT)
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(LOCALVARS)
)
(PUTPROPS VANILLADISK COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
(FILEMAP (NIL (622 4082 (\VANILLADISKINIT 632 . 2487) (\VANILLAHOSTNAMEP 2489 . 3698) (\VANILLAEVENTFN
3700 . 4080)))))
STOP