EmADM:
CEDAR
PROGRAM
IMPORTS DisplayControllers, DisplayControllerSteps, TermProgs
= {OPEN DisplayControllers, DisplayControllerSteps, TermProgs;
MakeADM3:
PROC
RETURNS [t: Term] = {
t ← NEW [TermRep ← [cp: NewControlProgram[] ]];
AddInstruction[t.cp, LIST["\000"], [Naught]];
AddInstruction[t.cp, LIST["\015"], [CarriageReturn]];
AddInstruction[t.cp, LIST["\012"], [SkipCursor, $down]];
AddInstruction[t.cp, LIST["\007"], [Flash]];
AddInstruction[t.cp, LIST["\010"], [SkipCursor, $left]];
AddInstruction[t.cp, LIST["\032"], [ClearScreen]];
};
MakeADM3a:
PROC
RETURNS [t: Term] = {
t ← MakeADM3[];
AddInstruction[t.cp, LIST["\000"], [Naught]];
AddInstruction[t.cp, LIST["\036"], [Home]];
AddInstruction[t.cp, LIST["\014"], [SkipCursor, $right]];
AddInstruction[t.cp, LIST["\013"], [SkipCursor, $up]];
AddInstruction[t.cp,
LIST[
"\033=",
NEW [DecodeRep ← [reg: line, base: NumChars, org: ' , len: 1]],
NEW [DecodeRep ← [reg: col, base: NumChars, org: ' , len: 1]]
],
[JumpCursor, $hv]];
};
RegTerm["adm3", MakeADM3[]];
RegTerm["adm3a", MakeADM3a[]];
}.