MODULE editor2; (* based on the kilo editor building course*) (* Step 6 *) IMPORT IO, termios, FIO, libc ; VAR c : CHAR; theTermios : termios.TERMIOS; TCSAFLUSH : INTEGER; PROCEDURE disablerawMode() : INTEGER; VAR result : INTEGER; BEGIN IO.BufferedMode(0,TRUE); IO.BufferedMode(1,TRUE); result := termios.tcsetattr(FIO.StdIn, TCSAFLUSH, theTermios); IF result = -1 THEN theTermios := termios.KillTermios(theTermios); HALT ELSE RETURN result END; END disablerawMode; PROCEDURE enablerawMode; BEGIN libc.atexit(disablerawMode); theTermios := termios.InitTermios(); IF termios.tcgetattr(FIO.StdIn, theTermios) = -1 THEN HALT END; IO.UnBufferedMode(0,TRUE); IO.UnBufferedMode(1,TRUE); END enablerawMode; BEGIN TCSAFLUSH := termios.tcsflush (); enablerawMode; LOOP IO.Read(c); IF c = "q" THEN EXIT END; END; END editor2.