| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- MODULE T5;
- IMPORT termios, FIO, SYSTEM, STextIO, NumberIO;
- TYPE
- termiosType = RECORD
- c_iflag : BITSET;
- c_oflag : BITSET;
- c_cflag : BITSET;
- c_lflag : BITSET;
- c_line : SYSTEM.BITSET8;
- c_cc : SYSTEM.BITSET8;
- c_ispeed : BITSET;
- c_ospeed : BITSET;
- END;
- VAR
- thetermios : termios.TERMIOS;
- result : INTEGER;
- tempFlags : BITSET;
- iflag, c_oflag, cflag, lflag : BITSET;
- tt : termiosType;
- ttPointer : POINTER TO termiosType;
- size : CARDINAL;
- PROCEDURE PrintBitset( x : BITSET);
- VAR
- i : CARDINAL;
- BEGIN
- FOR i := 0 TO (SYSTEM.TSIZE(BITSET) * 8) -1 DO
- IF (i MOD 8) = 0 THEN
- STextIO.WriteString(" |")
- END;
- IF i IN x THEN
- STextIO.WriteString(" 1")
- ELSE
- STextIO.WriteString(" 0")
- END;
- END;
- END PrintBitset;
- BEGIN
- thetermios := termios.InitTermios();
- result := termios.tcgetattr(FIO.StdIn, thetermios);
- ttPointer := thetermios;
- (* PROCEDURE TBITSIZE (<type>) : CARDINAL ; *)
- size := SYSTEM.TSIZE(INTEGER);
- STextIO.WriteString(" taille de INTEGER ici : ");
- NumberIO.WriteCard(size,5);
- STextIO.WriteLn;
- size := SYSTEM.TSIZE(CARDINAL);
- STextIO.WriteString(" taille de CARDINAL ici : ");
- NumberIO.WriteCard(size,5);
- STextIO.WriteLn;
- size := SYSTEM.TSIZE(BITSET);
- STextIO.WriteString(" taille de BITSET ici : ");
- NumberIO.WriteCard(size,5);
- STextIO.WriteLn;
- STextIO.WriteString(" Valeur de licanon :");
- NumberIO.WriteInt(termios.licanon, 5);
- STextIO.WriteString(" Valeur de opost :");
- NumberIO.WriteInt(termios.opost, 5);
- STextIO.WriteLn;
- IF (CARDINAL(termios.licanon) MOD 8) IN ttPointer^.c_iflag THEN
- STextIO.WriteString("yes, it's here !!")
- ELSE
- STextIO.WriteString("no, it's not :( here !!")
- END;
- STextIO.WriteLn;
- NumberIO.WriteCard(INTEGER(ttPointer^.c_iflag),5);
- STextIO.WriteLn;
- PrintBitset(ttPointer^.c_iflag);
- STextIO.WriteLn;
- END T5.
|