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]}; Home: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {dc.cd.class.CursorMove[dc.cd, 0, 0, FALSE]}; ScrollBack: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { oldLine: INT _ dc.cd.line; oldCol: INT _ dc.cd.col; dc.cd.class.CursorMove[cd: dc.cd, line: dc.cd.det.lines-1, col: 0]; dc.cd.class.Line[dc.cd, FALSE]; dc.cd.class.CursorMove[cd: dc.cd, line: 0, col: 0]; dc.cd.class.Line[dc.cd, TRUE]; dc.cd.class.CursorMove[cd: dc.cd, line: oldLine, col: oldCol]; }; ClearScreen: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { dc.cd.class.ClearAll[dc.cd]; dc.cd.class.CursorMove[dc.cd, 0, 0]; }; 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]; }; 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]}; 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}; $standout1On => {emph _ standout1; on _ TRUE}; $standout1Off => {emph _ standout1; on _ FALSE}; $standout2On => {emph _ standout2; on _ TRUE}; $standout2Off => {emph _ standout2; 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]; }; Flash: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = {dc.cd.class.Flash[dc.cd]}; Tab: PUBLIC PROC [dc: DisplayController, clientData: REF ANY] = { delta: INT _ (8 - (dc.cd.col MOD 8)) MOD 8; SELECT clientData FROM $blanken => { FOR i: INT IN [0 .. delta) DO dc.cd.class.TakeChar[dc.cd, Ascii.SP]; ENDLOOP; }; $dontTouch => dc.cd.class.CursorMove[dc.cd, 0, delta, TRUE]; ENDCASE => ERROR; }; }. `DisplayControllerStepsImpl.Mesa Last Edited by: Spreitzer, March 17, 1985 1:10:05 pm PST ΚΕ– "cedar" style˜Icode™J™8K˜KšΟk œA˜JK˜šΠbxœœ˜)Kšœ˜K˜Kšœœ,˜4K˜Kšœœ˜!Kšœœ˜K˜š Οnœœœ%œœ˜JKšœ%œœ˜4—K˜š Ÿœœœ%œœ˜@Kšœ%œ˜-—K˜š Ÿ œœœ%œœ˜HKšœ œ˜Kšœœ ˜K˜CKšœœ˜K˜3Kšœœ˜K˜>K˜—K˜š Ÿ œœœ%œœ˜IKšœ˜K˜$Kšœ˜—K˜š Ÿ œœœ%œœ˜FKšœ ˜ —K˜š Ÿ œœœ%œœ˜KKšœ(œ˜.Kšœ$œ˜*Kšœ˜—K˜š Ÿœœœ%œœ˜AKšœ˜šœ ˜K˜K˜Kšœœ˜—Kšœ#˜#—K˜š Ÿ œœœ%œœ˜FKšœœ˜šœ ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœœ˜—Kšœ+œ˜2—K˜š Ÿ œœœ%œœ˜FKšœœœ˜šœ ˜Kšœœ˜Kšœœ˜Kšœœ˜ Kšœœ˜—KšœCœ˜Z—K˜š Ÿœœœ%œœ˜Bšœœœ ˜%Kšœœ˜ Kšœœ˜Kšœœ˜—K˜!—K˜š Ÿœœœ%œœ˜EKšœ ˜ Kšœœ˜ šœ ˜Kšœ(œ˜.Kšœ)œ˜0Kšœ(œ˜.Kšœ)œ˜0Kšœ(œ˜.Kšœ)œ˜0Kšœœ˜—Kšœ&˜&—K˜š Ÿ œœœ%œœ˜IKšœœ˜Kšœœ ˜Kšœ"œœ˜,Kšœ%œ˜+K˜—K˜š Ÿœœœ%œœ˜AK˜—K˜š Ÿœœœ%œœ˜AKšœœœœ˜+šœ ˜˜ šœœœ˜Kšœ"œ˜&Kšœ˜—K˜—Kšœ6œ˜