--ILTEraseImpl.mesa --Created by -- JFung.PASA 19-Sep-83 17:06:11 --last edited by -- JFung.PASA 19-Dec-83 16:54:33 DIRECTORY Cursor USING [Set], LispToolOps USING [Data, DataHandle, toolData, GetVolumeID], PhysicalVolume USING [EraseLogicalVolume], Process USING [Pause, SecondsToTicks], Put USING [CR, Line, LongString, Text], SpecialVolume USING [OpenVolume], String USING [EquivalentString], Volume USING [ GetLabelString, GetNext, GetType, ID, maxNameLength, NeedsScavenging, nullID, systemID, Type, TypeSet]; ILTEraseImpl: PROGRAM IMPORTS Cursor, LispToolOps, PhysicalVolume, Process, Put, SpecialVolume, String, Volume EXPORTS LispToolOps = BEGIN OPEN ILT: LispToolOps; debug: BOOLEAN ← FALSE; EraseProc: PUBLIC PROCEDURE [vName: LONG STRING] = BEGIN volumeID: Volume.ID ← Volume.nullID; IF debug THEN { Put.Line[ILT.toolData.fileSW, "Enter EraseProc..."L]; --Process.Pause[Process.SecondsToTicks[5]]; Put.LongString[ILT.toolData.fileSW, vName]; Put.CR[ILT.toolData.fileSW]; }; [volumeID, ] ← ILT.GetVolumeID[vName]; IF debug THEN Put.Text[ILT.toolData.fileSW, "Volume = "L]; IF volumeID = Volume.nullID THEN BEGIN IF debug THEN Put.Line[ILT.toolData.fileSW, "Null ID"L]; RETURN; END; Put.Text[ILT.toolData.fileSW, " Erasing... "L]; Cursor.Set[hourGlass]; PhysicalVolume.EraseLogicalVolume[volumeID]; Cursor.Set[textPointer]; Put.Line[ILT.toolData.fileSW, " Done"L]; END; GetVolumeID: PUBLIC PROCEDURE [volumeName: LONG STRING] RETURNS [volumeID: Volume.ID ← Volume.nullID, volumeOpen: BOOLEAN] = BEGIN OPEN Volume; myType: Volume.Type = Volume.GetType[Volume.systemID]; all: Volume.TypeSet ← [ normal: TRUE, debugger: myType = debugger OR myType = debuggerDebugger, debuggerDebugger: myType = debuggerDebugger]; name: STRING = [maxNameLength]; IF debug THEN { Put.Line[ILT.toolData.fileSW, "Enter GetVolume..."L]; --Process.Pause[Process.SecondsToTicks[10]]; Put.LongString[ILT.toolData.fileSW, volumeName]; Put.CR[ILT.toolData.fileSW]; }; volumeOpen ← FALSE; FOR volumeID ← GetNext[nullID, all], GetNext[volumeID, all] UNTIL volumeID = nullID DO name.length ← 0; Volume.GetLabelString[volumeID, name]; IF String.EquivalentString[name, volumeName] THEN EXIT; ENDLOOP; SELECT volumeID FROM nullID => BEGIN Put.LongString[ILT.toolData.msgSW, volumeName]; --Process.Pause[Process.SecondsToTicks[5]]; Put.Line[ILT.toolData.msgSW, "Volume not found!"L]; --Process.Pause[Process.SecondsToTicks[5]]; RETURN; END; Volume.systemID => BEGIN Put.LongString[ILT.toolData.fileSW, volumeName]; Put.Line[ILT.toolData.fileSW, " is your system volume!"L]; --Process.Pause[Process.SecondsToTicks[5]]; --RETURN; END; ENDCASE; SpecialVolume.OpenVolume[ volume: volumeID, access: readWrite ! Volume.NeedsScavenging => GOTO BadVolume]; volumeOpen ← TRUE; IF debug THEN { Put.Line[ILT.toolData.fileSW, "volume opened!"L]; --Process.Pause[Process.SecondsToTicks[5]]; }; RETURN[volumeID, volumeOpen]; EXITS BadVolume => BEGIN Put.Line[ILT.toolData.msgSW, "Can not open volume "L]; Put.LongString[ILT.toolData.fileSW, volumeName]; Put.Line[ILT.toolData.fileSW, " needs scavenging."L]; Process.Pause[Process.SecondsToTicks[10]]; END; END; END...