-- N.Wirth June 1, 1977
-- S.Andler August 24, 1977 10:59 PM
DIRECTORY
TeleSilMain: FROM "TeleSilMain",
-- TeleSil modules
TeleSilPup: FROM "TeleSilPup",
TeleSilIO: FROM "TeleSilIO",
TeleSilDisplay: FROM "TeleSilDisplay",
TeleSilResident: FROM "TeleSilResident",

ControlDefs: FROM "ControlDefs",
-- Mesa modules
ImageDefs: FROM "ImageDefs",
RectangleDefs: FROM "RectangleDefs";

TeleSilLoad: PROGRAM=
BEGIN
-- External Procedures --
-- From unknown! package --
SetBindingEntry: EXTERNAL PROCEDURE[frame, entry: ControlDefs.GlobalFrameHandle];
LockCode: EXTERNAL PROCEDURE[UNSPECIFIED];

-- Modules
main, pup, io, display, resident: POINTER;
typeScriptDCB: RectangleDefs.DCBptr ← MEMORY[420B];

RectangleDefs.DisplayOff[white]; -- This will free 6 pages in low core,
-- where TeleSilResident will be locked in, as well as the big bitmap
resident ← NEW TeleSilResident[typeScriptDCB]; LockCode[resident];
display ← NEW TeleSilDisplay;
io ← NEW TeleSilIO; pup ← NEW TeleSilPup; main ← NEW TeleSilMain;

SetBindingEntry[resident, main]; SetBindingEntry[display, main];
SetBindingEntry[io, main]; SetBindingEntry[pup, main];
BIND resident; START resident;
BIND display; START display;
BIND io; BIND pup; BIND main;

RectangleDefs.DisplayOn;
MEMORY[420B] ← RectangleDefs.DCBnil; -- Make display come up white
ImageDefs.MakeImage["TeleSil.image", FALSE];

RectangleDefs.DisplayOff[white];
START main; -- it never RETURNs/STOPs
END.