-- TSJaM.mesa; Typescript for JaM
-- Written by Werner Winiger, August, 1981.
-- last edited by Paxton, 15-Sep-81 11:40:13
DIRECTORY
JaMIODefs USING [DirectUserOutput, AppendUserLine],
JaMControlDefs USING [RunJaM],
ViewerMenus USING [Destroy, Grow, Close],
Menus USING [Menu, CreateMenu, InsertMenuEntry, MenuProc],
Process USING [Detach],
Rope USING [Ref],
TypeScript USING [Typescript, TSLineProc, CreateTypescript, ClientPutChar];
TSJaM: PROGRAM
IMPORTS JaMIODefs, JaMControlDefs, ViewerMenus, Menus, Process, TypeScript = {
JaMtypescript: TypeScript.Typescript;
-- the output procedure to be called from JaM:
PutChar: PROC[ch: CHARACTER] = {IF ~TSdestroyed THEN
TypeScript.ClientPutChar[JaMtypescript, ch]};
-- the input procedure to be called from the typescript:
TakeLine: PROC [ts: TypeScript.Typescript, line: Rope.Ref] = {
JaMIODefs.AppendUserLine[line] };
TSdestroyed: BOOLEAN ← FALSE;
WatchedDestroy: Menus.MenuProc = {
TSdestroyed ← TRUE;
ViewerMenus.Destroy[info];
};
JaMmenu: Menus.Menu ← Menus.CreateMenu[];
-- main code --
Start: PROC = {
JaMIODefs.DirectUserOutput[PutChar];
JaMtypescript ← TypeScript.CreateTypescript[
line: TakeLine, name: "*JaM*", iconic: TRUE, fork: FALSE];
Menus.InsertMenuEntry[JaMmenu, "Destroy", WatchedDestroy, TRUE];
Menus.InsertMenuEntry[JaMmenu, "Grow", ViewerMenus.Grow];
Menus.InsertMenuEntry[JaMmenu, "Close", ViewerMenus.Close];
JaMtypescript.menu ← JaMmenu;
Process.Detach[FORK JaMControlDefs.RunJaM[]] };
Start;
}.
Paxton 15-Sep-81 11:13:14
changed to fork RunJaM and pass lines directly to jam io