home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / TURBOM2 / TELE.LBR / TELE.MZD / TELE.MOD
Text File  |  2000-06-30  |  4KB  |  173 lines

  1. IMPLEMENTATION MODULE Tele;
  2.  
  3. (* Some graphics functions for the Televideo 955 terminal *)
  4. (* Glenn Brooke 6/18/87 *)
  5.  
  6. FROM Terminal IMPORT GotoXY;
  7.  
  8. PROCEDURE GraphicModeOn;
  9. (* turns on graphics characters *)
  10. BEGIN
  11.   WRITE(CHR(27),"$")
  12. END GraphicModeOn;
  13.  
  14. PROCEDURE GraphicModeOff;
  15. (* back to ASCII characters *)
  16. BEGIN
  17.   WRITE(CHR(27),"%")
  18. END GraphicModeOff;
  19.  
  20. PROCEDURE Bell;
  21. BEGIN
  22.   WRITE(CHR(7))
  23. END Bell;
  24.  
  25. PROCEDURE LockKeyboard;
  26. (* prevents keyboard use *)
  27. BEGIN
  28.   WRITE(CHR(27),"#")
  29. END LockKeyboard;
  30.  
  31. PROCEDURE UnlockKeyboard;
  32. (* releases keyboard to user *)
  33. BEGIN
  34.   WRITE(CHR(27),'"')
  35. END UnlockKeyboard;
  36.  
  37. PROCEDURE Columns(x : CARDINAL);
  38. (* select 80 or 132 columns *)
  39. BEGIN
  40.   IF x = 132 THEN
  41.     WRITE(CHR(27),"[","=","3","h")
  42.   ELSE WRITE(CHR(27),"[","=","3","l")  (* default is 80 columns *)
  43.   END
  44. END Columns;
  45.  
  46. PROCEDURE EraseToEndOfPage;
  47. (* erases screen from cursor position to end of screen *)
  48. BEGIN
  49.   WRITE(CHR(27),"y")
  50. END EraseToEndOfPage;
  51.  
  52.  
  53. PROCEDURE HalfIntensity;
  54. BEGIN
  55.     WRITE(CHR(27),"[","=","5","h")
  56. END HalfIntensity;
  57.  
  58. PROCEDURE FullIntensity;
  59. BEGIN
  60.     WRITE(CHR(27),"[","=","5","l")
  61. END FullIntensity;
  62.  
  63. PROCEDURE CharAttribOff;
  64.   (* terminal attributes set to not take up a character space *)
  65. BEGIN
  66.   WRITE(CHR(27),"F","1")
  67. END CharAttribOff;
  68.  
  69. PROCEDURE CharAttribOn;
  70. BEGIN
  71.   WRITE(CHR(27),"F","0")
  72. END CharAttribOn;
  73.  
  74. PROCEDURE LightBackground;
  75. BEGIN
  76.   WRITE(CHR(27),"b")
  77. END LightBackground;
  78.  
  79. PROCEDURE DarkBackground;
  80. BEGIN
  81.   WRITE(CHR(27),"d")
  82. END DarkBackground;
  83.  
  84. PROCEDURE CursorAttrib(p : CARDINAL);
  85. (*  sets cursor style
  86.        p = 0   cursor not displayed
  87.            1   blinking block cursor
  88.            2   steady block cursor
  89.            3   blinking underscore cursor
  90.            4   steady underscore cursor      *)
  91. BEGIN
  92.    WRITE(CHR(27),".");
  93.    CASE p Of
  94.       0 : WRITE("0") |
  95.       1 : WRITE("1") |
  96.       2 : WRITE("2") |
  97.       3 : WRITE("3") |
  98.       4 : WRITE("4") |
  99.    ELSE WRITE("2")       (* the default *)
  100.    END
  101. END CursorAttrib;
  102.  
  103. PROCEDURE ReverseBackground;
  104. BEGIN
  105.    WRITE(CHR(27),"G","4")
  106. END ReverseBackground;
  107.  
  108.  
  109. PROCEDURE Underline;
  110. BEGIN
  111.    WRITE(CHR(27),"G","8")
  112. END Underline;
  113.  
  114.  
  115. PROCEDURE ReverseUnderline;
  116. BEGIN
  117.    WRITE(CHR(27),"G","<")
  118. END ReverseUnderline;
  119.  
  120.  
  121. PROCEDURE ReverseBlink;
  122. BEGIN
  123.    WRITE(CHR(27),"G","6")
  124. END ReverseBlink;
  125.  
  126.  
  127. PROCEDURE Invisible;
  128. BEGIN
  129.    WRITE(CHR(27),"G","1")
  130. END Invisible;
  131.  
  132.  
  133. PROCEDURE BoxScreen(Heavy:Boolean;Bright : Boolean);
  134. (* draws heavy or light, half-intensity or full-intensity
  135.    box around entire screen *)
  136. (*  --- suggest you call ClearScreen first! *)
  137. VAR i : CARDINAL;
  138. BEGIN
  139.    CharAttribOff;
  140.    GraphicModeOn;
  141.    IF Bright THEN FullIntensity ELSE HalfIntensity END;
  142.   (* draw box around screen *)
  143.   GotoXY(1,1);
  144.   FOR i := 1 TO 78 DO  (* top line *)
  145.       IF Heavy THEN WRITE("_") ELSE WRITE("p") END;
  146.   END;
  147.   GotoXY(1,23);
  148.   FOR i := 1 TO 78 DO (* bottom line *)
  149.       IF Heavy THEN WRITE("_") ELSE WRITE("q") END;
  150.   END;
  151.   FOR i := 1 TO 23 DO  (* left and right sides *)
  152.      GotoXY(1,i); IF Heavy THEN WRITE("_") ELSE WRITE("j") END;
  153.      GotoXY(78,i); IF Heavy THEN WRITE("_") ELSE WRITE("j") END;
  154.   END; (* for *)
  155.   GraphicModeOff;
  156.   IF NOT(Bright) THEN FullIntensity END;
  157.   CharAttribOn
  158. END BoxScreen;
  159.  
  160. PROCEDURE WriteReversed(s : ARRAY OF CHAR);
  161. (* write string s in reversed mode of background -- good for error msgs *)
  162. BEGIN
  163.   CharAttribOff;
  164.   ReverseBackground;
  165.   WRITE(s);
  166.   ReverseBackground;
  167.   CharAttribOn
  168. END WriteReversed;
  169.  
  170.  
  171. END Tele.
  172.  
  173.