--LTScriptImpl.mesa
--limited tool to write prometheus script
--Created by
-- JFung.PASA 22-May-84 13:16:54
--last edited by
-- JFung.PASA 6-Sep-84 10:19:48
DIRECTORY
Cursor,
EventTypes,
Exec,
File,
Format,
FormSW,
Heap,
LispToolOps,
MFile,
MStream,
Process,
Profile,
Put,
Runtime,
Stream,
String,
StringLookUp,
Supervisor,
Time,
Token,
Tool,
ToolDriver,
ToolWindow,
UserInput,
Version,
Volume,
Window;
LTScriptImpl: PROGRAM
IMPORTS
Cursor, FormSW, Heap, LispToolOps, MFile, MStream, Process, Put,
Runtime, Stream, String, Time, Tool, ToolDriver, Window
EXPORTS LispToolOps =
BEGIN OPEN ILT: LispToolOps;
SA1000Size: LONG CARDINAL = 16188;
SA4000Size: LONG CARDINAL = 44797;
Q2040Size: LONG CARDINAL = 65274;
DiskType: TYPE = {SA1000, SA4000, Q2040};
DataHandle: TYPE = LONG POINTER TO Data;
Data: TYPE = MACHINE DEPENDENT RECORD [
-- Message subwindow stuff
msgSW(0): Window.Handle ← NIL,
-- File subwindow stuff
fileSW(2): Window.Handle ← NIL,
-- Form subwindow stuff
-- Note: enumerateds and booleans must be word boundary
-- aligned as addresses for them must be generated
--formSW: Window.Handle ← NIL,
paramSW(4): Window.Handle ← NIL,
commandSW(6): Window.Handle ← NIL,
busy(8): BOOLEAN ← FALSE, -- command is running
vol1Name(9): LONG STRING ← NIL,
vol2Name(11): LONG STRING ← NIL,
vol3Name(13): LONG STRING ← NIL,
vol4Name(15): LONG STRING ← NIL,
vol5Name(17): LONG STRING ← NIL,
vol6Name(19): LONG STRING ← NIL,
vol1Size(21): CARDINAL ← 3500,
vol2Size(22): LONG CARDINAL ← 0,
vol3Size(24): LONG CARDINAL ← 0,
vol4Size(26): LONG CARDINAL ← 0,
vol5Size(28): LONG CARDINAL ← 0,
vol6Size(30): LONG CARDINAL ← 0,
vol7Name(32): LONG STRING ← NIL,
vol8Name(34): LONG STRING ← NIL,
vol9Name(36): LONG STRING ← NIL,
vol10Name(38): LONG STRING ← NIL,
vol7Size(40): LONG CARDINAL ← 0,
vol8Size(42): LONG CARDINAL ← 0,
vol9Size(44): LONG CARDINAL ← 0,
vol10Size(46): LONG CARDINAL ← 0,
driveSize(48): LONG CARDINAL ← Q2040Size,
freePages(50): LONG CARDINAL ← Q2040Size - 3500,
diskType(52): DiskType ← Q2040];
active: BOOLEAN ← FALSE;
debug: BOOLEAN ← FALSE;
diagName: LONG STRING ← "SystemTools"L;
formDisplay: ToolWindow.DisplayProcType ← NIL;
myFile: MFile.Handle ← NIL;
nVols: INTEGER ← 1;
scriptWH: Window.Handle ← NIL;
toolData: DataHandle ← NIL;
<<
ClearFileSubwindow: PROCEDURE =
BEGIN
item: FormSW.ItemHandle;
FOR i: CARDINAL ← 0, i + 1 UNTIL
(item ← FormSW.FindItem[toolData.fileSW, i]) = NIL DO
item.flags.invisible ← TRUE ENDLOOP;
FormSW.Display[toolData.fileSW];
formDisplay ← Window.GetDisplayProc[toolData.fileSW];
END;
>>
ClearMsgSubwindow: PROCEDURE =
BEGIN
item: FormSW.ItemHandle;
FOR i: CARDINAL ← 0, i + 1 UNTIL
(item ← FormSW.FindItem[toolData.msgSW, i]) = NIL DO
item.flags.invisible ← TRUE ENDLOOP;
FormSW.Display[toolData.msgSW];
formDisplay ← Window.GetDisplayProc[toolData.msgSW];
END;
ClearSubWindows: PROCEDURE =
BEGIN
--ClearFileSubwindow;
ClearMsgSubwindow;
END;
<< ClientTransition: ToolWindow.TransitionProcType =
-- This procedure is called whenever the system determines that this
-- Tool's state is undergoing a user invoked transition.
-- In this Example we demonstrate a technique that minimizes the memory
-- requirements for a Tool that is inactive.
BEGIN
SELECT TRUE FROM
old = inactive =>
BEGIN
IF toolData = NIL THEN
toolData ← Heap.systemZone.NEW[Data ← []];
active ← TRUE;
END;
new = inactive =>
BEGIN
<<Supervisor.RemoveDependency[
client: agent, implementor: Event.toolWindow];
>>
IF toolData # NIL THEN
BEGIN
FormSW.Destroy[toolData.paramSW];
FormSW.Destroy[toolData.commandSW];
Heap.systemZone.FREE[@toolData];
END;
--ToolDriver.RemoveSWs[tool: "LispTool"L];
active ← FALSE;
END;
ENDCASE
END; --ClientTransition
>>
DataChanged: FormSW.ProcType =
BEGIN
END;
NumberChanged: FormSW.LongNumberNotifyProcType =
BEGIN
END;
FormSWMakeScript: FormSW.ProcType =
BEGIN
floppyFileName: LONG STRING ← "Prometheus.script"L;
toolData.busy ← TRUE;
ClearSubWindows;
Put.Line[
toolData.fileSW,
"WARNING: will DESTROY your old file, confirm to continue"L];
IF ILT.Confirm[] THEN {
Put.Line[
toolData.fileSW,
"Insert ""Installation Utility"" floppy, confirm when ready"L];
IF ILT.Confirm[] THEN
IF ILT.FloppyDelete[floppyFileName] THEN
IF WriteUserScript[] THEN {
ILT.FloppyWrite[floppyFileName];
Put.Line[toolData.fileSW, " Done"L];
};
};
toolData.busy ← FALSE;
END;
FormSWQuit: FormSW.ProcType =
BEGIN
--[] ← ToolWindow.Deactivate[scriptWH];
IF toolData # NIL THEN
BEGIN
--Put.Line[toolData.fileSW, "Tool.Destroy"L];
--Process.Pause[Process.SecondsToTicks[5]];
Tool.Destroy[scriptWH];
--Put.Line[toolData.fileSW, "Heap.systemZone.FREE"L];
--Process.Pause[Process.SecondsToTicks[5]];
Heap.systemZone.FREE[@toolData];
END;
END;
MakeCommands: FormSW.ClientItemsProcType =
BEGIN OPEN FormSW;
tabs: ARRAY [0..3) OF CARDINAL ← [0, 30, 60];
nItems: CARDINAL = 2;
items ← AllocateItemDescriptor[nItems];
items[0] ← CommandItem[tag: "Make Script"L, proc: FormSWMakeScript,
place: newLine];
items[1] ← CommandItem[tag: "Quit"L, proc: FormSWQuit];
SetTagPlaces[items, DESCRIPTOR[tabs], FALSE];
RETURN[items, TRUE];
END; --MakeCommands
MakeParams: FormSW.ClientItemsProcType =
BEGIN OPEN FormSW;
tabs: ARRAY [0..7) OF CARDINAL ← [0, 28, 52, 56, 60, 68, 75];
nItems: CARDINAL = 23;
diskForm: ARRAY [0..3) OF Enumerated ← [
["10Mb"L, DiskType[SA1000]], ["29Mb"L, DiskType[SA4000]], [
"42Mb"L, DiskType[Q2040]]];
items ← AllocateItemDescriptor[nItems];
items[0] ← EnumeratedItem[
tag: "DiskType"L, place: newLine, z: Heap.systemZone, feedback: all,
value: @toolData.diskType, copyChoices: TRUE,
proc: ServerNotifyProc, choices: DESCRIPTOR[diskForm]];
-- note: compiler does not check if this is a "short"NumberItem
items[1] ← LongNumberItem[
tag: "Drive Size"L, value: @toolData.driveSize, readOnly: TRUE];
items[2] ← LongNumberItem[
tag: "Free Pages"L, value: @toolData.freePages];
items[3] ← StringItem[
tag: "Volume1"L, string: @toolData.vol1Name,
inHeap: TRUE, readOnly: TRUE, place: newLine];
items[4] ← NumberItem[
tag: "Volume1 Size"L, value: @toolData.vol1Size, readOnly: TRUE];
items[5] ← StringItem[
tag: "Volume2"L, string: @toolData.vol2Name, inHeap: TRUE,
place: newLine, filterProc: StringChanged];
items[6] ← LongNumberItem[
tag: "Volume2 Size"L, value: @toolData.vol2Size];
items[7] ← StringItem[
tag: "Volume3"L, string: @toolData.vol3Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[8] ← LongNumberItem[
tag: "Volume3 Size"L, value: @toolData.vol3Size];
items[9] ← StringItem[
tag: "Volume4"L, string: @toolData.vol4Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[10] ← LongNumberItem[
tag: "Volume4 Size"L,
--proc: NumberChanged,
value: @toolData.vol4Size
];
items[11] ← StringItem[
tag: "Volume5"L, string: @toolData.vol5Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[12] ← LongNumberItem[
tag: "Volume5 Size"L, value: @toolData.vol5Size, proc: NumberChanged];
items[13] ← StringItem[
tag: "Volume6"L, string: @toolData.vol6Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[14] ← LongNumberItem[
tag: "Volume6 Size"L, value: @toolData.vol6Size, proc: NumberChanged];
items[15] ← StringItem[
tag: "Volume7"L, string: @toolData.vol7Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[16] ← LongNumberItem[
tag: "Volume7 Size"L, value: @toolData.vol7Size, proc: NumberChanged];
items[17] ← StringItem[
tag: "Volume8"L, string: @toolData.vol8Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[18] ← LongNumberItem[
tag: "Volume8 Size"L, value: @toolData.vol8Size, proc: NumberChanged];
items[19] ← StringItem[
tag: "Volume9"L, string: @toolData.vol9Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[20] ← LongNumberItem[
tag: "Volume9 Size"L, value: @toolData.vol9Size, proc: NumberChanged];
items[21] ← StringItem[
tag: "Volume10"L, string: @toolData.vol10Name, inHeap: TRUE,
filterProc: StringChanged, place: newLine];
items[22] ← LongNumberItem[
tag: "Volume10 Size"L, value: @toolData.vol10Size, proc: NumberChanged];
SetTagPlaces[items, DESCRIPTOR[tabs], FALSE];
RETURN[items, TRUE]
END; --MakeParams
MakeScript: PUBLIC PROCEDURE[] =
BEGIN
IF toolData = NIL THEN toolData ← Heap.systemZone.NEW[Data ← []];
scriptWH ← MakeTool[];
-- Display diag. vol name
toolData.vol1Name ← String.CopyToNewString[
s: diagName, z: Heap.systemZone];
FormSW.DisplayItem[toolData.paramSW, 3];
-- Display drive size info
FormSW.DisplayItem[toolData.paramSW, 1];
toolData.freePages ← toolData.driveSize - toolData.vol1Size;
-- display free pages
FormSW.DisplayItem[toolData.paramSW, 2];
END;
MakeSWs: Tool.MakeSWsProc =
BEGIN
logName: STRING ← [40];
addresses: ARRAY [0..4) OF ToolDriver.Address;
Tool.UnusedLogName[unused: logName, root: "MakeScript.log"L];
toolData.msgSW ← Tool.MakeMsgSW[window: window, lines: 1];
toolData.paramSW ← Tool.MakeFormSW[window: window, formProc: MakeParams];
toolData.commandSW ← Tool.MakeFormSW[
window: window, formProc: MakeCommands];
toolData.fileSW ← Tool.MakeFileSW[window: window, name: logName];
--FormSW.SetModifyNotificationProc[toolData.paramSW, DataChanged];
-- do the ToolDriver stuff
addresses ← [
[name: "msgSW"L, sw: toolData.msgSW], [
name: "ParamSW"L, sw: toolData.paramSW], [
name: "CmdSW"L, sw: toolData.commandSW], [
name: "fileSW"L, sw: toolData.fileSW]];
ToolDriver.NoteSWs[
tool: "MakeScript"L, subwindows: DESCRIPTOR[addresses]];
END;
MakeTool: PROCEDURE RETURNS [wh: Window.Handle] =
BEGIN
heraldName: STRING ← [80];
String.AppendString[heraldName, "AISBU System Tools: Make Script Option "L];
String.AppendString[heraldName, " of "L];
Time.Append[heraldName, Time.Unpack[Runtime.GetBcdTime[]]];
heraldName.length ← heraldName.length - 3;
--String.AppendString[heraldName, " on Pilot Version "L];
--Version.Append[heraldName];
RETURN[
Tool.Create[
makeSWsProc: MakeSWs, initialState: default,
--clientTransition: ClientTransition,
name: heraldName,
initialBox: [[512, 0], [512, 400]],
--x, y, width, height
tinyName1: "Make"L, tinyName2: "Script"L]];
END;
ServerNotifyProc: FormSW.EnumeratedNotifyProcType =
BEGIN
IF debug THEN {
Put.Line[toolData.fileSW, "ServerNotifyProc...."L];
Process.Pause[Process.SecondsToTicks[5]];
};
IF toolData.diskType = SA1000 THEN toolData.driveSize ← SA1000Size
ELSE
IF toolData.diskType = SA4000 THEN toolData.driveSize ← SA4000Size
ELSE toolData.driveSize ← Q2040Size;
toolData.freePages ← toolData.driveSize - toolData.vol1Size;
FormSW.DisplayItem[toolData.paramSW, 1];
FormSW.DisplayItem[toolData.paramSW, 2];
END; --ServerNotifyProc
StringChanged: FormSW.FilterProcType =
BEGIN
-- Display free pages info
IF debug THEN {
Put.Line[toolData.fileSW, "StringChanged..."L];
Put.Text[toolData.fileSW, "vol2Size: "L];
Put.LongDecimal[toolData.fileSW, toolData.vol2Size];
Process.Pause[Process.SecondsToTicks[5]];
};
nVols ← 1;
toolData.freePages ← toolData.driveSize - toolData.vol1Size;
IF toolData.vol2Size > 0 OR toolData.vol2Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol2Size;
};
IF toolData.vol3Size > 0 OR toolData.vol3Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol3Size;
};
IF toolData.vol4Size > 0 OR toolData.vol4Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol4Size;
};
IF toolData.vol5Size > 0 OR toolData.vol5Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol5Size;
};
IF toolData.vol6Size > 0 OR toolData.vol6Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol6Size;
};
IF toolData.vol7Size > 0 OR toolData.vol7Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol7Size;
};
IF toolData.vol8Size > 0 OR toolData.vol8Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol4Size;
};
IF toolData.vol9Size > 0 OR toolData.vol9Name # NIL THEN {
nVols ← nVols + 1;
toolData.freePages ← toolData.freePages - toolData.vol9Size;
};
IF toolData.vol10Name # NIL THEN {
nVols ← nVols + 1;
toolData.vol10Size ← toolData.freePages;
FormSW.DisplayItem[toolData.paramSW, 22];
toolData.freePages ← toolData.freePages - toolData.vol10Size;
};
FormSW.DisplayItem[toolData.paramSW, 2];
FormSW.StringEditProc[sw, item, insert, string];
END; -- StringChanged
WriteUserScript: PROCEDURE[] RETURNS [BOOLEAN] =
BEGIN
name: LONG STRING ← "Prometheus.script"L;
writeS: MStream.Handle ← NIL;
--tempString: LONG STRING ← [80];
tempString: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString1: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString2: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString3: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString4: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString5: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString6: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString7: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString8: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString9: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
tempString10: LONG STRING ← Heap.systemZone.NEW[StringBody [80]];
z: UNCOUNTED ZONE ← Heap.systemZone;
--StringChanged[];
IF ~MFile.ValidFilename[name] THEN {
Put.Line[toolData.msgSW, "Invalid file name"L]; RETURN[FALSE]; };
myFile ← MFile.Acquire[
name, anchor, MFile.dontRelease !
MFile.Error => {myFile ← NIL; CONTINUE}];
Cursor.Set[hourGlass];
--IF myFile # NIL THEN MFile.Release[myFile];
BEGIN
ENABLE MFile.Error => GOTO problem;
--ENABLE MFile.Error => {MFile.Release[myFile]; CONTINUE;};
IF myFile # NIL THEN
BEGIN
IF debug THEN {
Put.Line[toolData.fileSW, "SetAccess..."L];
Process.Pause[Process.SecondsToTicks[5]];
};
MFile.SetAccess[myFile, readWrite];
END
ELSE
BEGIN
IF debug THEN {
Put.Line[toolData.fileSW, "ReadWrite..."L];
Process.Pause[Process.SecondsToTicks[5]];
};
myFile ← MFile.ReadWrite[name, MFile.dontRelease, text];
END;
--myFile ← MFile.ReadWrite[name, MFile.dontRelease, text];
-- myFile is ReadWrite so can Copy handle with read later
writeS ← MStream.Create[myFile, []];
MStream.SetLength[writeS, 0];
writeS.PutString["\\Partition disk according to user definition\n"L];
writeS.PutString[
"Comment WARNING - PARTITIONING A DISK DESTROYS ALL ITS CONTENTS\n"L];
writeS.PutString["Confirm Continue?\n"L];
--tempString ← String.CopyToNewString[
-- s: "Create Rd0 YLisp "L, z: Heap.systemZone];
String.AppendString[tempString1, "Create Rd0 YLisp "L];
String.AppendDecimal[tempString1, nVols];
String.AppendString[tempString1, "\n"L];
IF debug THEN {
Put.Text[toolData.fileSW, "tempString1"L];
Put.Line[toolData.fileSW, tempString1];
Process.Pause[Process.SecondsToTicks[5]];
Put.Line[toolData.fileSW, "Append decimal"];
Put.Decimal[toolData.fileSW, nVols];
Process.Pause[Process.SecondsToTicks[5]];
Put.Line[toolData.fileSW, "AppendDecimal"L];
Put.Line[toolData.fileSW, tempString1];
Process.Pause[Process.SecondsToTicks[5]];
};
writeS.PutString[tempString1];
writeS.PutString["SystemTools 3500 normal\n"L];
IF ~String.Empty[toolData.vol2Name] AND toolData.vol2Size > 0 THEN {
String.AppendString[tempString2, toolData.vol2Name];
String.AppendString[tempString2, " "L];
String.AppendLongDecimal[tempString2, toolData.vol2Size];
String.AppendString[tempString2, " normal\n"L];
writeS.PutString[tempString2];
IF debug THEN {
Put.Line[toolData.fileSW, tempString2];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol3Name] AND toolData.vol3Size > 0 THEN {
String.AppendString[tempString3, toolData.vol3Name];
String.AppendString[tempString3, " "L];
String.AppendLongDecimal[tempString3, toolData.vol3Size];
String.AppendString[tempString3, " normal\n"L];
writeS.PutString[tempString3];
IF debug THEN {
Put.Line[toolData.fileSW, tempString3];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol4Name] AND toolData.vol4Size > 0 THEN {
String.AppendString[tempString4, toolData.vol4Name];
String.AppendString[tempString4, " "L];
String.AppendLongDecimal[tempString4, toolData.vol4Size];
String.AppendString[tempString4, " normal\n"L];
writeS.PutString[tempString4];
IF debug THEN {
Put.Line[toolData.fileSW, tempString4];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol5Name] AND toolData.vol5Size > 0 THEN {
String.AppendString[tempString5, toolData.vol5Name];
String.AppendString[tempString5, " "L];
String.AppendLongDecimal[tempString5, toolData.vol5Size];
String.AppendString[tempString5, " normal\n"L];
writeS.PutString[tempString5];
IF debug THEN {
Put.Line[toolData.fileSW, tempString4];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol6Name] AND toolData.vol6Size > 0 THEN {
String.AppendString[tempString6, toolData.vol6Name];
String.AppendString[tempString6, " "L];
String.AppendLongDecimal[tempString6, toolData.vol6Size];
String.AppendString[tempString6, " normal\n"L];
writeS.PutString[tempString6];
IF debug THEN {
Put.Line[toolData.fileSW, tempString6];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol7Name] AND toolData.vol7Size > 0 THEN {
String.AppendString[tempString7, toolData.vol7Name];
String.AppendString[tempString7, " "L];
String.AppendLongDecimal[tempString7, toolData.vol7Size];
String.AppendString[tempString7, " normal\n"L];
writeS.PutString[tempString7];
IF debug THEN {
Put.Line[toolData.fileSW, tempString7];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol8Name] AND toolData.vol8Size > 0 THEN {
String.AppendString[tempString8, toolData.vol8Name];
String.AppendString[tempString8, " "L];
String.AppendLongDecimal[tempString8, toolData.vol8Size];
String.AppendString[tempString8, " normal\n"L];
writeS.PutString[tempString8];
IF debug THEN {
Put.Line[toolData.fileSW, tempString8];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol9Name] AND toolData.vol9Size > 0 THEN {
String.AppendString[tempString9, toolData.vol9Name];
String.AppendString[tempString9, " "L];
String.AppendLongDecimal[tempString9, toolData.vol9Size];
String.AppendString[tempString9, " normal\n"L];
writeS.PutString[tempString9];
IF debug THEN {
Put.Line[toolData.fileSW, tempString9];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
IF ~String.Empty[toolData.vol10Name] AND toolData.vol10Size > 0 THEN {
String.AppendString[tempString10, toolData.vol10Name];
String.AppendString[tempString10, " "L];
String.AppendLongDecimal[tempString10, toolData.vol10Size];
String.AppendString[tempString10, " normal\n"L];
writeS.PutString[tempString10];
IF debug THEN {
Put.Line[toolData.fileSW, tempString10];
Put.Text[toolData.fileSW, "tempString"L];
Process.Pause[Process.SecondsToTicks[5]];
};
};
writeS.PutString["Check RD0\n"L];
writeS.PutString["Comment Disk partitioned for Interlisp-D\n"L];
EXITS
problem => {
Put.Line[toolData.fileSW, "Error in auquiring file..."L];
IF myFile # NIL THEN MFile.Release[myFile];
RETURN[FALSE];
}
END;
writeS.SendNow;
ILT.WriteScriptA[myFile, writeS]; -- write part a first
ILT.WriteScriptB[myFile, writeS]; -- write more
IF debug THEN {
Put.Text[toolData.fileSW, "SendNow..."L];
Process.Pause[Process.SecondsToTicks[5]];
};
writeS.SendNow;
IF debug THEN {
Put.Text[toolData.fileSW, "CopyFileHandle..."L];
Process.Pause[Process.SecondsToTicks[5]];
};
myFile ← MFile.CopyFileHandle[
MStream.GetFile[writeS], MFile.dontRelease, readOnly];
IF debug THEN {
Put.Line[toolData.fileSW, "Delete..."L];
Process.Pause[Process.SecondsToTicks[5]];
};
writeS.Delete;
IF myFile # NIL THEN MFile.Release[myFile];
Cursor.Set[textPointer];
--Process.Pause[Process.SecondsToTicks[5]];
RETURN[TRUE];
END;
END...