(FILECREATED "22-Nov-85 00:37:07" {ERIS}<LISPCORE>DOVE>VMEMSIZEPATCH.;9 6522
changes to: (VARS VMEMSIZEPATCHCOMS)
(FNS \Dove.FixVMemSize)
previous date: "18-Nov-85 17:08:04" {ERIS}<LISPCORE>DOVE>VMEMSIZEPATCH.;8)
(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT VMEMSIZEPATCHCOMS)
(RPAQQ VMEMSIZEPATCHCOMS [(DECLARE: DONTCOPY (FILES (LOADCOMP)
<LISPCORE>SOURCES>LOCALFILE
<LISPCORE>DOVE>LISPOTHELLO)
(MACROS \PV.SubVolumeDescFromVol#))
(GLOBALVARS \LispOthello.PhysicalVolumeRootPage
\LispOthello.FileDescriptor \LispOthello.Label)
(FNS \Dove.FixVMemSize \Dove.GetBootFileDescriptor
\PV.DiskFileIDOfBootFile \PV.LVDescFromDiskAddress
\PV.ReadPVRootPage \PV.DiskPageNumber \PV.MapSubVolumes
\Dove.GetVMemSize VMemSizePatchEventFN)
(DECLARE: DONTEVAL@LOAD DOCOPY [INITVARS (
\LispOthello.PhysicalVolumeRootPage (NCREATE (QUOTE VMEMPAGEP)))
(\LispOthello.FileDescriptor
(NCREATE (QUOTE FileDescriptor)
))
(\LispOthello.Label
(NCREATE (QUOTE VMEMPAGEP]
(P (\Dove.FixVMemSize))
(ADDVARS (AROUNDEXITFNS VMemSizePatchEventFN])
(DECLARE: DONTCOPY
(FILESLOAD (LOADCOMP)
<LISPCORE>SOURCES>LOCALFILE <LISPCORE>DOVE>LISPOTHELLO)
(DECLARE: EVAL@COMPILE
[DEFMACRO \PV.SubVolumeDescFromVol# (vol#)
(BQUOTE (\ADDBASE (fetch (PhysicalVolumeDescriptor subVolumes)
of \LispOthello.PhysicalVolumeRootPage)
(TIMES , vol# (MESASIZE SubVolumeDesc]
)
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS \LispOthello.PhysicalVolumeRootPage \LispOthello.FileDescriptor \LispOthello.Label)
)
(DEFINEQ
(\Dove.FixVMemSize
[LAMBDA NIL (* bvm: "22-Nov-85 00:33")
(COND
((EQ (MACHINETYPE)
(QUOTE DOVE))
(replace (IFPAGE DLLastVmemPage) of \InterfacePage with (SETQ \LASTVMEMFILEPAGE
(IDIFFERENCE (
\Dove.GetVMemSize)
2])
(\Dove.GetBootFileDescriptor
[LAMBDA (BootFileType) (* edited: " 5-Nov-85 18:13")
(* * Find the logical volume of the boot file of type BootFileType. Return the leader page for that file)
(LET* [(DiskFileID (\PV.DiskFileIDOfBootFile BootFileType))
(FileID (\GETBASE DiskFileID 0))
(PilotDiskAddress (fetch (DiskFileID da) of DiskFileID))
[LVDesc (COND
((NEQ PilotDiskAddress 0)
(\PV.LVDescFromDiskAddress PilotDiskAddress]
(vol# (COND
(LVDesc (GETHASH LVDesc \DFSLogicalVolumeHash]
(COND
(vol# (replace (FileDescriptor fileID) of \LispOthello.FileDescriptor with FileID)
(replace (FileDescriptor volNum) of \LispOthello.FileDescriptor with vol#)
(replace (FileDescriptor type) of \LispOthello.FileDescriptor with
tDiagnosticMicrocode)
\LispOthello.FileDescriptor])
(\PV.DiskFileIDOfBootFile
[LAMBDA (N) (* ejs: "10-Sep-85 01:16")
(\ADDBASE (fetch (PhysicalVolumeDescriptor bootingInfo) of
\LispOthello.PhysicalVolumeRootPage)
(ITIMES N (MESASIZE DiskFileID])
(\PV.LVDescFromDiskAddress
[LAMBDA (PilotDiskAddress) (* ejs: " 9-Sep-85 23:38")
(LET ((DiskPageNumber (\PV.DiskPageNumber PilotDiskAddress)))
(\PV.MapSubVolumes (FUNCTION (LAMBDA (SVDesc LVDesc)
(LET* [(FirstPage (fetch (SubVolumeDesc pvPage) of SVDesc))
(LastPage (IPLUS FirstPage (fetch (SubVolumeDesc nPages)
of SVDesc]
(COND
((AND (IGEQ DiskPageNumber FirstPage)
(ILEQ DiskPageNumber LastPage))
(RETFROM (QUOTE \PV.LVDescFromDiskAddress)
LVDesc])
(\PV.ReadPVRootPage
[LAMBDA NIL (* ejs: "10-Sep-85 23:49")
(\PFTransferPage 0 \LispOthello.PhysicalVolumeRootPage (QUOTE VRR)
\LispOthello.Label)
(COND
((NEQ (fetch (PhysicalVolumeDescriptor seal) of \LispOthello.PhysicalVolumeRootPage)
\PV.RootSeal)
(ERROR "Physical volume root page seal is invalid!" (fetch (PhysicalVolumeDescriptor
seal)
of
\LispOthello.PhysicalVolumeRootPage)))
(T \LispOthello.PhysicalVolumeRootPage])
(\PV.DiskPageNumber
[LAMBDA (PilotDiskAddress) (* ejs: " 9-Sep-85 23:03")
(* * Returns the disk page number for the Pilot disk address)
(IPLUS (ITIMES (fetch (PilotDiskAddress Cylinder) of PilotDiskAddress)
\DLDISKSHAPE.SECTORSPERCYLINDER)
(ITIMES (fetch (PilotDiskAddress Head) of PilotDiskAddress)
\DLDISKSHAPE.SECTORSPERHEAD)
(fetch (PilotDiskAddress Sector) of PilotDiskAddress])
(\PV.MapSubVolumes
[LAMBDA (FUNCTION) (* ejs: "10-Sep-85 17:32")
(bind SVDesc for SVIndex from 0 to (SUB1 (fetch (PhysicalVolumeDescriptor
subVolumeCount)
of \LispOthello.PhysicalVolumeRootPage))
eachtime (SETQ SVDesc (\PV.SubVolumeDescFromVol# SVIndex)) do (APPLY* FUNCTION SVDesc
(ELT
\DFSLogicalVolumes
SVIndex)
SVIndex])
(\Dove.GetVMemSize
[LAMBDA NIL (* edited: " 5-Nov-85 19:03")
(\PV.ReadPVRootPage)
(\PFFindFileSize (\Dove.GetBootFileDescriptor 2])
(VMemSizePatchEventFN
[LAMBDA (EVENT) (* amd "18-Nov-85 17:07")
(SELECTQ EVENT
((AFTERSYSOUT AFTERLOGOUT AFTERSAVEVM AFTERMAKESYS)
(\PFEnsureInitialized)
(\Dove.FixVMemSize))
NIL])
)
(DECLARE: DONTEVAL@LOAD DOCOPY
(RPAQ? \LispOthello.PhysicalVolumeRootPage (NCREATE (QUOTE VMEMPAGEP)))
(RPAQ? \LispOthello.FileDescriptor (NCREATE (QUOTE FileDescriptor)))
(RPAQ? \LispOthello.Label (NCREATE (QUOTE VMEMPAGEP)))
(\Dove.FixVMemSize)
(ADDTOVAR AROUNDEXITFNS VMemSizePatchEventFN)
)
(PUTPROPS VMEMSIZEPATCH COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1722 6120 (\Dove.FixVMemSize 1732 . 2100) (\Dove.GetBootFileDescriptor 2102 . 3088) (
\PV.DiskFileIDOfBootFile 3090 . 3376) (\PV.LVDescFromDiskAddress 3378 . 4011) (\PV.ReadPVRootPage 4013
. 4600) (\PV.DiskPageNumber 4602 . 5114) (\PV.MapSubVolumes 5116 . 5635) (\Dove.GetVMemSize 5637 .
5845) (VMemSizePatchEventFN 5847 . 6118)))))
STOP