-- TSJaM.mesa
-- Typescript - JaM
-- Written by Werner Winiger, August, 1981.
-- last edited by Paxton, 13-Aug-81 10:21:44
DIRECTORY
JaMIODefs USING [DirectUserOutput, ResetCommand, AppendUserLine, UserInput],
JaMControlDefs USING [Announce, InterpreteCommand],
ViewerMenus USING [Close],
Rope USING [Ref],
TypeScript USING [Typescript, TSLineProc, CreateTypescript, ClientPutChar, ClientPutRope];
TSJaM: PROGRAM
IMPORTS JaMIODefs, JaMControlDefs, ViewerMenus, TypeScript = {
JaMTS: TypeScript.Typescript;
-- the output procedure's to be called from JaM:
PutChar: PROC[ch: CHARACTER] = {TypeScript.ClientPutChar[JaMTS, ch]};
PutRope: PROC [r: Rope.Ref] = {TypeScript.ClientPutRope[JaMTS, r]};
-- the input procedure to be called from the typescript:
TakeLine: TypeScript.TSLineProc = {
balanced: BOOLEAN ← JaMIODefs.AppendUserLine[line];
IF balanced THEN {
quitted: BOOLEAN ← JaMControlDefs.InterpreteCommand[JaMIODefs.UserInput[]];
IF quitted THEN ViewerMenus.Close[JaMTS];
JaMIODefs.ResetCommand[];
};
};
-- main code --
JaMIODefs.DirectUserOutput[PutChar,PutRope];
JaMTS ← TypeScript.CreateTypescript[line: TakeLine, name: "*J*a*M*", iconic: TRUE, fork: TRUE];
JaMControlDefs.Announce;
}.