DIRECTORY Ascii, CharDisplays, DisplayControllers, DisplayControllerSteps; DisplayControllerStepsImpl: CEDAR PROGRAM EXPORTS DisplayControllerSteps = {OPEN DisplayControllers, DisplayControllerSteps; Where: TYPE = CharDisplays.Where; Emph: TYPE = CharDisplays.Emph; CarriageReturn: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {dc.cd.class.CursorMove[dc.cd, 0, 0, FALSE, FALSE, TRUE]}; Home: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {dc.cd.class.CursorMove[dc.cd, 0, 0, FALSE, TRUE, TRUE]}; ScrollBack: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { oldLine: INT _ dc.cd.line; oldCol: INT _ dc.cd.col; dc.cd.class.CursorMove[dc.cd, dc.cd.det.lines-1, 0, FALSE, TRUE, TRUE]; dc.cd.class.Line[dc.cd, FALSE]; dc.cd.class.CursorMove[dc.cd, 0, 0, FALSE, TRUE, TRUE]; dc.cd.class.Line[dc.cd, TRUE]; dc.cd.class.CursorMove[dc.cd, oldLine, oldCol, FALSE, TRUE, TRUE]; }; ClearScreen: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { dc.cd.class.ClearAll[dc.cd]; dc.cd.class.CursorMove[dc.cd, 0, 0, FALSE, TRUE, TRUE]; }; DeleteChar: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {dc.cd.class.DeleteChar[dc.cd]}; UnderlineChar: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { dc.cd.class.Emphasize[dc.cd, underline, TRUE]; dc.cd.class.CursorMove[dc.cd, 0, 1, TRUE, TRUE, TRUE]; }; ClrTo: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {where: Where; SELECT clientData FROM $eos => where _ EndOfScreen; $eol => where _ EndOfLine; ENDCASE => ERROR; dc.cd.class.ClearTo[dc.cd, where]}; SkipCursor: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {dLine, dCol: INT _ 0; SELECT clientData FROM $down => dLine _ 1; $up => dLine _ -1; $right => dCol _ 1; $left => dCol _ -1; ENDCASE => ERROR; dc.cd.class.CursorMove[dc.cd, dLine, dCol, TRUE, TRUE, TRUE]}; JumpCursor: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {doLine, doCol: BOOL _ TRUE; SELECT clientData FROM $h => doLine _ FALSE; $v => doCol _ FALSE; $hv => NULL; ENDCASE => ERROR; dc.cd.class.CursorMove[dc.cd, dc.cps.regs[line], dc.cps.regs[col], FALSE, doLine, doCol]}; Line: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { insert: BOOL _ SELECT clientData FROM $ins => TRUE, $del => FALSE, ENDCASE => ERROR; dc.cd.class.Line[dc.cd, insert]}; SetEmph: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { emph: Emph; on: BOOL; SELECT clientData FROM $underlineOn => {emph _ underline; on _ TRUE}; $underlineOff => {emph _ underline; on _ FALSE}; $boldOn => {emph _ bold; on _ TRUE}; $boldOff => {emph _ bold; on _ FALSE}; $italicOn => {emph _ italic; on _ TRUE}; $italicOff => {emph _ italic; on _ FALSE}; $inverseOn => {emph _ inverse; on _ TRUE}; $inverseOff => {emph _ inverse; on _ FALSE}; ENDCASE => ERROR; dc.cd.class.SetEmph[dc.cd, emph, on]}; InsertSpace: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { line: INT _ dc.cd.line; col: INT _ dc.cd.col; dc.cd.class.TakeChar[dc.cd, Ascii.SP, TRUE]; dc.cd.class.CursorMove[dc.cd, 0, -1, TRUE, TRUE, TRUE]; }; Beep: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {dc.cd.class.Beep[dc.cd]}; Tab: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { delta: INT _ 8 - (((dc.cd.col MOD 8) + 8) MOD 8); SELECT clientData FROM $blanken => { FOR i: INT IN [0 .. delta) DO dc.cd.class.TakeChar[dc.cd, Ascii.SP, FALSE]; ENDLOOP; }; $dontTouch => dc.cd.class.CursorMove[dc.cd, 0, delta, TRUE, TRUE, TRUE]; ENDCASE => ERROR; }; }. bDisplayControllerStepsImpl.Mesa Last Edited by: Spreitzer, February 19, 1986 8:51:18 pm PST ΚK– "cedar" style˜Icode™J™;K˜KšΟk œA˜JK˜šΠbxœœ˜)Kšœ˜K˜Kšœœ,˜4K˜Kšœœ˜!Kšœœ˜K˜š Οnœœœ%œœ˜JKšœ%œœœ˜:—K˜š Ÿœœœ%œœ˜@Kšœ%œœœ˜9—K˜š Ÿ œœœ%œœ˜HKšœ œ˜Kšœœ ˜Kšœ4œœœ˜GKšœœ˜Kšœ$œœœ˜7Kšœœ˜Kšœ/œœœ˜BK˜—K˜š Ÿ œœœ%œœ˜IKšœ˜Kšœ$œœœ˜7Kšœ˜—K˜š Ÿ œœœ%œœ˜FKšœ ˜ —K˜š Ÿ œœœ%œœ˜KKšœ(œ˜.Kšœ$œœœ˜6Kšœ˜—K˜š Ÿœœœ%œœ˜AKšœ˜šœ ˜K˜K˜Kšœœ˜—Kšœ#˜#—K˜š Ÿ œœœ%œœ˜FKšœœ˜šœ ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœœ˜—Kšœ+œœœ˜>—K˜š Ÿ œœœ%œœ˜FKšœœœ˜šœ ˜Kšœœ˜Kšœœ˜Kšœœ˜ Kšœœ˜—KšœCœ˜Z—K˜š Ÿœœœ%œœ˜Bšœœœ ˜%Kšœœ˜ Kšœœ˜Kšœœ˜—K˜!—K˜š Ÿœœœ%œœ˜EKšœ ˜ Kšœœ˜ šœ ˜Kšœ(œ˜.Kšœ)œ˜0Kšœœ˜$Kšœœ˜&Kšœ"œ˜(Kšœ#œ˜*Kšœ$œ˜*Kšœ%œ˜,Kšœœ˜—Kšœ&˜&—K˜š Ÿ œœœ%œœ˜IKšœœ˜Kšœœ ˜Kšœ"œœ˜,Kšœ%œœœ˜7K˜—K˜š Ÿœœœ%œœ˜@K˜—K˜š Ÿœœœ%œœ˜AKšœœœ œ˜1šœ ˜˜ šœœœ˜Kšœ"œœ˜-Kšœ˜—K˜—Kšœ6œœœ˜HKšœœ˜—Kšœ˜—K˜K˜——…— Έe