From 080ed4548fbd8d4cfab75c8d91a2664e27d69ed1 Mon Sep 17 00:00:00 2001 From: florian Date: Tue, 28 Dec 2004 15:30:04 +0000 Subject: [PATCH] * fixed raw mode for non i386 targets * fixed some alignment issues --- rtl/linux/termios.inc | 126 ++++++++++++++++++++++++++++++++++-------- rtl/objpas/typinfo.pp | 14 ++++- rtl/unix/video.pp | 10 +++- 3 files changed, 121 insertions(+), 29 deletions(-) diff --git a/rtl/linux/termios.inc b/rtl/linux/termios.inc index b602cf9adb..cfb00bb16a 100644 --- a/rtl/linux/termios.inc +++ b/rtl/linux/termios.inc @@ -84,7 +84,26 @@ Const TIOCPKT_START = $8; TIOCPKT_NOSTOP = $10; TIOCPKT_DOSTOP = $20; -{$endif} + +{c_cc characters} + VINTR = 0; + VQUIT = 1; + VERASE = 2; + VKILL = 3; + VEOF = 4; + VMIN = 5; + VEOL = 6; + VTIME = 7; + VEOL2 = 8; + VSWTC = 9; + VWERASE = 10; + VREPRINT = 11; + VSUSP = 12; + VSTART = 13; + VSTOP = 14; + VLNEXT = 15; + VDISCARD = 16; +{$endif cpupowerpc} {$ifdef cpui386} { For Terminal handling } @@ -154,6 +173,25 @@ Const TIOCPKT_START = 8; TIOCPKT_NOSTOP = 16; TIOCPKT_DOSTOP = 32; + +{c_cc characters} + VINTR = 0; + VQUIT = 1; + VERASE = 2; + VKILL = 3; + VEOF = 4; + VTIME = 5; + VMIN = 6; + VSWTC = 7; + VSTART = 8; + VSTOP = 9; + VSUSP = 10; + VEOL = 11; + VREPRINT = 12; + VDISCARD = 13; + VWERASE = 14; + VLNEXT = 15; + VEOL2 = 16; {$endif cpui386} {$ifdef cpusparc} @@ -224,6 +262,26 @@ Const TIOCPKT_START = $8; TIOCPKT_NOSTOP = $10; TIOCPKT_DOSTOP = $20; + +{c_cc characters} + VINTR = 0; + VQUIT = 1; + VERASE = 2; + VKILL = 3; + VEOF = 4; + VEOL = 5; + VEOL2 = 6; + VSWTC = 7; + VSTART = 8; + VSTOP = 9; + VSUSP = 10; + VDSUSP = 11; + VREPRINT = 12; + VDISCARD = 13; + VWERASE = 14; + VLNEXT = 15; + VMIN = 4; + VTIME = 5; {$endif cpusparc} {$ifdef cpux86_64} @@ -293,6 +351,25 @@ Const TIOCPKT_NOSTOP = 16; TIOCPKT_DOSTOP = 32; TIOCSER_TEMT = $01; + +{c_cc characters} + VINTR = 0; + VQUIT = 1; + VERASE = 2; + VKILL = 3; + VEOF = 4; + VTIME = 5; + VMIN = 6; + VSWTC = 7; + VSTART = 8; + VSTOP = 9; + VSUSP = 10; + VEOL = 11; + VREPRINT = 12; + VDISCARD = 13; + VWERASE = 14; + VLNEXT = 15; + VEOL2 = 16; {$endif cpux86_64} {$ifdef cpuarm} @@ -360,6 +437,25 @@ Const TIOCPKT_START = 8; TIOCPKT_NOSTOP = 16; TIOCPKT_DOSTOP = 32; + +{c_cc characters} + VINTR = 0; + VQUIT = 1; + VERASE = 2; + VKILL = 3; + VEOF = 4; + VTIME = 5; + VMIN = 6; + VSWTC = 7; + VSTART = 8; + VSTOP = 9; + VSUSP = 10; + VEOL = 11; + VREPRINT = 12; + VDISCARD = 13; + VWERASE = 14; + VLNEXT = 15; + VEOL2 = 16; {$endif cpuarm} Type @@ -385,29 +481,7 @@ Type TTermios=Termios; {$PACKRECORDS Default} -{const - InitCC:array[0..NCCS-1] of byte=(3,34,177,25,4,0,1,0,21,23,32,0,22,17,27,26,0,0,0);} - const -{c_cc characters} - VINTR = 0; - VQUIT = 1; - VERASE = 2; - VKILL = 3; - VEOF = 4; - VTIME = 5; - VMIN = 6; - VSWTC = 7; - VSTART = 8; - VSTOP = 9; - VSUSP = 10; - VEOL = 11; - VREPRINT = 12; - VDISCARD = 13; - VWERASE = 14; - VLNEXT = 15; - VEOL2 = 16; - {c_iflag bits} IGNBRK = $0000001; BRKINT = $0000002; @@ -547,7 +621,11 @@ const { $Log$ - Revision 1.11 2004-11-03 12:24:56 peter + Revision 1.12 2004-12-28 15:30:04 florian + * fixed raw mode for non i386 targets + * fixed some alignment issues + + Revision 1.11 2004/11/03 12:24:56 peter * remove comment level 2 warning Revision 1.10 2004/10/31 16:05:23 florian diff --git a/rtl/objpas/typinfo.pp b/rtl/objpas/typinfo.pp index d2e00a049e..e7d22fca76 100644 --- a/rtl/objpas/typinfo.pp +++ b/rtl/objpas/typinfo.pp @@ -75,8 +75,13 @@ unit typinfo; PTypeInfo = ^TTypeInfo; PPTypeInfo = ^PTypeInfo; +{$PACKRECORDS C} PTypeData = ^TTypeData; - TTypeData = packed record + TTypeData = +{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT} + packed +{$endif FPC_REQUIRES_PROPER_ALIGNMENT} + record case TTypeKind of tkUnKnown,tkLString,tkWString,tkAString,tkVariant: (); @@ -132,7 +137,6 @@ unit typinfo; ); end; -{$PACKRECORDS C} // unsed, just for completeness TPropData = {$ifndef FPC_REQUIRES_PROPER_ALIGNMENT} @@ -1492,7 +1496,11 @@ end; end. { $Log$ - Revision 1.32 2004-12-27 16:16:24 florian + Revision 1.33 2004-12-28 15:30:04 florian + * fixed raw mode for non i386 targets + * fixed some alignment issues + + Revision 1.32 2004/12/27 16:16:24 florian * another alignment fix Revision 1.31 2004/11/24 22:27:24 florian diff --git a/rtl/unix/video.pp b/rtl/unix/video.pp index 800ad24f39..8c7a2fe0fa 100644 --- a/rtl/unix/video.pp +++ b/rtl/unix/video.pp @@ -566,7 +566,9 @@ begin INLCR or IGNCR or ICRNL or IXON)); c_lflag := c_lflag and (not (ECHO or ECHONL or ICANON or ISIG or IEXTEN)); - end; + c_cc[VMIN]:=1; + c_cc[VTIME]:=0; + end; if outPutRaw then begin c_oflag := c_oflag and not(OPOST); @@ -900,7 +902,11 @@ initialization end. { $Log$ - Revision 1.26 2004-12-26 12:22:05 peter + Revision 1.27 2004-12-28 15:30:04 florian + * fixed raw mode for non i386 targets + * fixed some alignment issues + + Revision 1.26 2004/12/26 12:22:05 peter * cursorx,cursory 0 based, fixes 3468 Revision 1.25 2004/10/05 17:16:24 armin