T5.mod 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. MODULE T5;
  2. IMPORT termios, FIO, SYSTEM, STextIO, NumberIO;
  3. TYPE
  4. termiosType = RECORD
  5. c_iflag : BITSET;
  6. c_oflag : BITSET;
  7. c_cflag : BITSET;
  8. c_lflag : BITSET;
  9. c_line : SYSTEM.BITSET8;
  10. c_cc : SYSTEM.BITSET8;
  11. c_ispeed : BITSET;
  12. c_ospeed : BITSET;
  13. END;
  14. VAR
  15. thetermios : termios.TERMIOS;
  16. result : INTEGER;
  17. tempFlags : BITSET;
  18. iflag, c_oflag, cflag, lflag : BITSET;
  19. tt : termiosType;
  20. ttPointer : POINTER TO termiosType;
  21. size : CARDINAL;
  22. PROCEDURE PrintBitset( x : BITSET);
  23. VAR
  24. i : CARDINAL;
  25. BEGIN
  26. FOR i := 0 TO (SYSTEM.TSIZE(BITSET) * 8) -1 DO
  27. IF (i MOD 8) = 0 THEN
  28. STextIO.WriteString(" |")
  29. END;
  30. IF i IN x THEN
  31. STextIO.WriteString(" 1")
  32. ELSE
  33. STextIO.WriteString(" 0")
  34. END;
  35. END;
  36. END PrintBitset;
  37. BEGIN
  38. thetermios := termios.InitTermios();
  39. result := termios.tcgetattr(FIO.StdIn, thetermios);
  40. ttPointer := thetermios;
  41. (* PROCEDURE TBITSIZE (<type>) : CARDINAL ; *)
  42. size := SYSTEM.TSIZE(INTEGER);
  43. STextIO.WriteString(" taille de INTEGER ici : ");
  44. NumberIO.WriteCard(size,5);
  45. STextIO.WriteLn;
  46. size := SYSTEM.TSIZE(CARDINAL);
  47. STextIO.WriteString(" taille de CARDINAL ici : ");
  48. NumberIO.WriteCard(size,5);
  49. STextIO.WriteLn;
  50. size := SYSTEM.TSIZE(BITSET);
  51. STextIO.WriteString(" taille de BITSET ici : ");
  52. NumberIO.WriteCard(size,5);
  53. STextIO.WriteLn;
  54. STextIO.WriteString(" Valeur de licanon :");
  55. NumberIO.WriteInt(termios.licanon, 5);
  56. STextIO.WriteString(" Valeur de opost :");
  57. NumberIO.WriteInt(termios.opost, 5);
  58. STextIO.WriteLn;
  59. IF (CARDINAL(termios.licanon) MOD 8) IN ttPointer^.c_iflag THEN
  60. STextIO.WriteString("yes, it's here !!")
  61. ELSE
  62. STextIO.WriteString("no, it's not :( here !!")
  63. END;
  64. STextIO.WriteLn;
  65. NumberIO.WriteCard(INTEGER(ttPointer^.c_iflag),5);
  66. STextIO.WriteLn;
  67. PrintBitset(ttPointer^.c_iflag);
  68. STextIO.WriteLn;
  69. END T5.