T16.mod 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. MODULE T16;
  2. IMPORT IO, Strings, ASCII, NumberIO, termios, FIO;
  3. VAR
  4. cursorposStr : ARRAY [0..15] OF CHAR;
  5. resultStr : ARRAY [0..15] OF CHAR;
  6. tmpString : ARRAY[0..10] OF CHAR;
  7. tmpString1: ARRAY[0..5] OF CHAR;
  8. tmpString2: Strings.String1;
  9. x,y : CARDINAL;
  10. i : CARDINAL;
  11. theTermios : termios.TERMIOS;
  12. TCSAFLUSH : INTEGER;
  13. PROCEDURE Card2Str ( x : CARDINAL; VAR str : ARRAY OF CHAR);
  14. BEGIN
  15. IF x < 10 THEN
  16. NumberIO.CardToStr(x,1,str);
  17. ELSIF x < 100 THEN
  18. NumberIO.CardToStr(x,2,str);
  19. ELSE
  20. NumberIO.CardToStr(x,3,str);
  21. END;
  22. END Card2Str;
  23. BEGIN
  24. TCSAFLUSH := termios.tcsflush ();
  25. theTermios := termios.InitTermios();
  26. IF termios.tcgetattr(FIO.StdIn, theTermios) = -1 THEN
  27. HALT
  28. END;
  29. IO.UnBufferedMode(0,TRUE);
  30. IO.UnBufferedMode(1,TRUE);
  31. x := 30;
  32. y := 30;
  33. cursorposStr := "";
  34. Strings.Concat(cursorposStr, ASCII.esc,cursorposStr);
  35. Strings.Concat(cursorposStr, "[",cursorposStr);
  36. tmpString := "";
  37. Strings.Concat(tmpString,cursorposStr, tmpString);
  38. tmpString1 := "";
  39. Card2Str(y,tmpString1);
  40. Strings.Concat(tmpString,tmpString1, tmpString);
  41. tmpString2[0] := ";";
  42. Strings.Concat(tmpString, tmpString2,tmpString);
  43. tmpString1 := "";
  44. Card2Str(x,tmpString1);
  45. Strings.Concat(tmpString,tmpString1, tmpString);
  46. tmpString2[0] := "H";
  47. Strings.Concat(tmpString, tmpString2,tmpString);
  48. FOR i := 0 TO Strings.Length(tmpString) DO
  49. IO.Write(tmpString[i])
  50. END;
  51. IO.BufferedMode(0,TRUE);
  52. IO.BufferedMode(1,TRUE);
  53. IF termios.tcsetattr(FIO.StdIn, TCSAFLUSH, theTermios) = -1 THEN
  54. HALT
  55. END;
  56. END T16.