From fb8c4a8b284ca8e85df7f05fcb189ac78334d629 Mon Sep 17 00:00:00 2001 From: marco Date: Tue, 10 Oct 2000 12:02:35 +0000 Subject: [PATCH] * Terminal stuff of Linux moved to separate file. I think it is too much to do with ifdefs. --- rtl/linux/termios.inc | 268 +++++++++++++++++++++++++++++++++++++++++ rtl/unix/linux.pp | 269 +----------------------------------------- 2 files changed, 274 insertions(+), 263 deletions(-) create mode 100644 rtl/linux/termios.inc diff --git a/rtl/linux/termios.inc b/rtl/linux/termios.inc new file mode 100644 index 0000000000..052416d52a --- /dev/null +++ b/rtl/linux/termios.inc @@ -0,0 +1,268 @@ +{******************** + IOCtl(TermIOS) +********************} + +Const + { Amount of Control Chars } + NCCS = 19; + NCC = 8; + +{$Ifndef BSD} + { For Terminal handling } + TCGETS = $5401; + TCSETS = $5402; + TCSETSW = $5403; + TCSETSF = $5404; + TCGETA = $5405; + TCSETA = $5406; + TCSETAW = $5407; + TCSETAF = $5408; + TCSBRK = $5409; + TCXONC = $540A; + TCFLSH = $540B; + TIOCEXCL = $540C; + TIOCNXCL = $540D; + TIOCSCTTY = $540E; + TIOCGPGRP = $540F; + TIOCSPGRP = $5410; + TIOCOUTQ = $5411; + TIOCSTI = $5412; + TIOCGWINSZ = $5413; + TIOCSWINSZ = $5414; + TIOCMGET = $5415; + TIOCMBIS = $5416; + TIOCMBIC = $5417; + TIOCMSET = $5418; + TIOCGSOFTCAR = $5419; + TIOCSSOFTCAR = $541A; + FIONREAD = $541B; + TIOCINQ = FIONREAD; + TIOCLINUX = $541C; + TIOCCONS = $541D; + TIOCGSERIAL = $541E; + TIOCSSERIAL = $541F; + TIOCPKT = $5420; + FIONBIO = $5421; + TIOCNOTTY = $5422; + TIOCSETD = $5423; + TIOCGETD = $5424; + TCSBRKP = $5425; + TIOCTTYGSTRUCT = $5426; + FIONCLEX = $5450; + FIOCLEX = $5451; + FIOASYNC = $5452; + TIOCSERCONFIG = $5453; + TIOCSERGWILD = $5454; + TIOCSERSWILD = $5455; + TIOCGLCKTRMIOS = $5456; + TIOCSLCKTRMIOS = $5457; + TIOCSERGSTRUCT = $5458; + TIOCSERGETLSR = $5459; + TIOCSERGETMULTI = $545A; + TIOCSERSETMULTI = $545B; + + TIOCMIWAIT = $545C; + TIOCGICOUNT = $545D; + TIOCPKT_DATA = 0; + TIOCPKT_FLUSHREAD = 1; + TIOCPKT_FLUSHWRITE = 2; + TIOCPKT_STOP = 4; + TIOCPKT_START = 8; + TIOCPKT_NOSTOP = 16; + TIOCPKT_DOSTOP = 32; +{$else} + +{$endif} +Type + winsize = packed record + ws_row, + ws_col, + ws_xpixel, + ws_ypixel : word; + end; + TWinSize=winsize; + + Termio = packed record + c_iflag, { input mode flags } + c_oflag, { output mode flags } + c_cflag, { control mode flags } + c_lflag : Word; { local mode flags } + c_line : Word; { line discipline - careful, only High byte in use} + c_cc : array [0..NCC-1] of char;{ control characters } + end; + TTermio=Termio; + + Termios = packed record + c_iflag, + c_oflag, + c_cflag, + c_lflag : longint; + c_line : char; + c_cc : array[0..NCCS-1] of byte; + {$IFDEF BSD} + c_ispeed, + c_ospeed : longint; + {$endif} + end; + TTermios=Termios; + +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; + IGNPAR = $0000004; + PARMRK = $0000008; + INPCK = $0000010; + ISTRIP = $0000020; + INLCR = $0000040; + IGNCR = $0000080; + ICRNL = $0000100; + IUCLC = $0000200; + IXON = $0000400; + IXANY = $0000800; + IXOFF = $0001000; + IMAXBEL = $0002000; + +{c_oflag bits} + OPOST = $0000001; + OLCUC = $0000002; + ONLCR = $0000004; + OCRNL = $0000008; + ONOCR = $0000010; + ONLRET = $0000020; + OFILL = $0000040; + OFDEL = $0000080; + NLDLY = $0000100; + NL0 = $0000000; + NL1 = $0000100; + CRDLY = $0000600; + CR0 = $0000000; + CR1 = $0000200; + CR2 = $0000400; + CR3 = $0000600; + TABDLY = $0001800; + TAB0 = $0000000; + TAB1 = $0000800; + TAB2 = $0001000; + TAB3 = $0001800; + XTABS = $0001800; + BSDLY = $0002000; + BS0 = $0000000; + BS1 = $0002000; + VTDLY = $0004000; + VT0 = $0000000; + VT1 = $0004000; + FFDLY = $0008000; + FF0 = $0000000; + FF1 = $0008000; + +{c_cflag bits} + CBAUD = $000100F; + B0 = $0000000; + B50 = $0000001; + B75 = $0000002; + B110 = $0000003; + B134 = $0000004; + B150 = $0000005; + B200 = $0000006; + B300 = $0000007; + B600 = $0000008; + B1200 = $0000009; + B1800 = $000000A; + B2400 = $000000B; + B4800 = $000000C; + B9600 = $000000D; + B19200 = $000000E; + B38400 = $000000F; + EXTA = B19200; + EXTB = B38400; + CSIZE = $0000030; + CS5 = $0000000; + CS6 = $0000010; + CS7 = $0000020; + CS8 = $0000030; + CSTOPB = $0000040; + CREAD = $0000080; + PARENB = $0000100; + PARODD = $0000200; + HUPCL = $0000400; + CLOCAL = $0000800; + CBAUDEX = $0001000; + B57600 = $0001001; + B115200 = $0001002; + B230400 = $0001003; + B460800 = $0001004; + CIBAUD = $100F0000; + CMSPAR = $40000000; + CRTSCTS = $80000000; + +{c_lflag bits} + ISIG = $0000001; + ICANON = $0000002; + XCASE = $0000004; + ECHO = $0000008; + ECHOE = $0000010; + ECHOK = $0000020; + ECHONL = $0000040; + NOFLSH = $0000080; + TOSTOP = $0000100; + ECHOCTL = $0000200; + ECHOPRT = $0000400; + ECHOKE = $0000800; + FLUSHO = $0001000; + PENDIN = $0004000; + IEXTEN = $0008000; + +{c_line bits} + TIOCM_LE = $001; + TIOCM_DTR = $002; + TIOCM_RTS = $004; + TIOCM_ST = $008; + TIOCM_SR = $010; + TIOCM_CTS = $020; + TIOCM_CAR = $040; + TIOCM_RNG = $080; + TIOCM_DSR = $100; + TIOCM_CD = TIOCM_CAR; + TIOCM_RI = TIOCM_RNG; + TIOCM_OUT1 = $2000; + TIOCM_OUT2 = $4000; + +{TCSetAttr} + TCSANOW = 0; + TCSADRAIN = 1; + TCSAFLUSH = 2; + +{TCFlow} + TCOOFF = 0; + TCOON = 1; + TCIOFF = 2; + TCION = 3; + +{TCFlush} + TCIFLUSH = 0; + TCOFLUSH = 1; + TCIOFLUSH = 2; + diff --git a/rtl/unix/linux.pp b/rtl/unix/linux.pp index 0fe49e121f..bca18de3f2 100644 --- a/rtl/unix/linux.pp +++ b/rtl/unix/linux.pp @@ -104,268 +104,7 @@ const F_GetOwn = 8; F_SetOwn = 9; -{******************** - IOCtl(TermIOS) -********************} - -Const - { Amount of Control Chars } - NCCS = 19; - NCC = 8; - - { For Terminal handling } - TCGETS = $5401; - TCSETS = $5402; - TCSETSW = $5403; - TCSETSF = $5404; - TCGETA = $5405; - TCSETA = $5406; - TCSETAW = $5407; - TCSETAF = $5408; - TCSBRK = $5409; - TCXONC = $540A; - TCFLSH = $540B; - TIOCEXCL = $540C; - TIOCNXCL = $540D; - TIOCSCTTY = $540E; - TIOCGPGRP = $540F; - TIOCSPGRP = $5410; - TIOCOUTQ = $5411; - TIOCSTI = $5412; - TIOCGWINSZ = $5413; - TIOCSWINSZ = $5414; - TIOCMGET = $5415; - TIOCMBIS = $5416; - TIOCMBIC = $5417; - TIOCMSET = $5418; - TIOCGSOFTCAR = $5419; - TIOCSSOFTCAR = $541A; - FIONREAD = $541B; - TIOCINQ = FIONREAD; - TIOCLINUX = $541C; - TIOCCONS = $541D; - TIOCGSERIAL = $541E; - TIOCSSERIAL = $541F; - TIOCPKT = $5420; - FIONBIO = $5421; - TIOCNOTTY = $5422; - TIOCSETD = $5423; - TIOCGETD = $5424; - TCSBRKP = $5425; - TIOCTTYGSTRUCT = $5426; - FIONCLEX = $5450; - FIOCLEX = $5451; - FIOASYNC = $5452; - TIOCSERCONFIG = $5453; - TIOCSERGWILD = $5454; - TIOCSERSWILD = $5455; - TIOCGLCKTRMIOS = $5456; - TIOCSLCKTRMIOS = $5457; - TIOCSERGSTRUCT = $5458; - TIOCSERGETLSR = $5459; - TIOCSERGETMULTI = $545A; - TIOCSERSETMULTI = $545B; - - TIOCMIWAIT = $545C; - TIOCGICOUNT = $545D; - TIOCPKT_DATA = 0; - TIOCPKT_FLUSHREAD = 1; - TIOCPKT_FLUSHWRITE = 2; - TIOCPKT_STOP = 4; - TIOCPKT_START = 8; - TIOCPKT_NOSTOP = 16; - TIOCPKT_DOSTOP = 32; - - -Type - winsize = packed record - ws_row, - ws_col, - ws_xpixel, - ws_ypixel : word; - end; - TWinSize=winsize; - - Termio = packed record - c_iflag, { input mode flags } - c_oflag, { output mode flags } - c_cflag, { control mode flags } - c_lflag : Word; { local mode flags } - c_line : Word; { line discipline - careful, only High byte in use} - c_cc : array [0..NCC-1] of char;{ control characters } - end; - TTermio=Termio; - - Termios = packed record - c_iflag, - c_oflag, - c_cflag, - c_lflag : longint; - c_line : char; - c_cc : array[0..NCCS-1] of byte; - end; - TTermios=Termios; - -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; - IGNPAR = $0000004; - PARMRK = $0000008; - INPCK = $0000010; - ISTRIP = $0000020; - INLCR = $0000040; - IGNCR = $0000080; - ICRNL = $0000100; - IUCLC = $0000200; - IXON = $0000400; - IXANY = $0000800; - IXOFF = $0001000; - IMAXBEL = $0002000; - -{c_oflag bits} - OPOST = $0000001; - OLCUC = $0000002; - ONLCR = $0000004; - OCRNL = $0000008; - ONOCR = $0000010; - ONLRET = $0000020; - OFILL = $0000040; - OFDEL = $0000080; - NLDLY = $0000100; - NL0 = $0000000; - NL1 = $0000100; - CRDLY = $0000600; - CR0 = $0000000; - CR1 = $0000200; - CR2 = $0000400; - CR3 = $0000600; - TABDLY = $0001800; - TAB0 = $0000000; - TAB1 = $0000800; - TAB2 = $0001000; - TAB3 = $0001800; - XTABS = $0001800; - BSDLY = $0002000; - BS0 = $0000000; - BS1 = $0002000; - VTDLY = $0004000; - VT0 = $0000000; - VT1 = $0004000; - FFDLY = $0008000; - FF0 = $0000000; - FF1 = $0008000; - -{c_cflag bits} - CBAUD = $000100F; - B0 = $0000000; - B50 = $0000001; - B75 = $0000002; - B110 = $0000003; - B134 = $0000004; - B150 = $0000005; - B200 = $0000006; - B300 = $0000007; - B600 = $0000008; - B1200 = $0000009; - B1800 = $000000A; - B2400 = $000000B; - B4800 = $000000C; - B9600 = $000000D; - B19200 = $000000E; - B38400 = $000000F; - EXTA = B19200; - EXTB = B38400; - CSIZE = $0000030; - CS5 = $0000000; - CS6 = $0000010; - CS7 = $0000020; - CS8 = $0000030; - CSTOPB = $0000040; - CREAD = $0000080; - PARENB = $0000100; - PARODD = $0000200; - HUPCL = $0000400; - CLOCAL = $0000800; - CBAUDEX = $0001000; - B57600 = $0001001; - B115200 = $0001002; - B230400 = $0001003; - B460800 = $0001004; - CIBAUD = $100F0000; - CMSPAR = $40000000; - CRTSCTS = $80000000; - -{c_lflag bits} - ISIG = $0000001; - ICANON = $0000002; - XCASE = $0000004; - ECHO = $0000008; - ECHOE = $0000010; - ECHOK = $0000020; - ECHONL = $0000040; - NOFLSH = $0000080; - TOSTOP = $0000100; - ECHOCTL = $0000200; - ECHOPRT = $0000400; - ECHOKE = $0000800; - FLUSHO = $0001000; - PENDIN = $0004000; - IEXTEN = $0008000; - -{c_line bits} - TIOCM_LE = $001; - TIOCM_DTR = $002; - TIOCM_RTS = $004; - TIOCM_ST = $008; - TIOCM_SR = $010; - TIOCM_CTS = $020; - TIOCM_CAR = $040; - TIOCM_RNG = $080; - TIOCM_DSR = $100; - TIOCM_CD = TIOCM_CAR; - TIOCM_RI = TIOCM_RNG; - TIOCM_OUT1 = $2000; - TIOCM_OUT2 = $4000; - -{TCSetAttr} - TCSANOW = 0; - TCSADRAIN = 1; - TCSAFLUSH = 2; - -{TCFlow} - TCOOFF = 0; - TCOON = 1; - TCIOFF = 2; - TCION = 3; - -{TCFlush} - TCIFLUSH = 0; - TCOFLUSH = 1; - TCIOFLUSH = 2; - +{$I termios.inc} {******************** Info @@ -2799,7 +2538,11 @@ End. { $Log$ - Revision 1.2 2000-09-18 13:14:50 marco + Revision 1.3 2000-10-10 12:02:35 marco + * Terminal stuff of Linux moved to separate file. I think it is too + much to do with ifdefs. + + Revision 1.2 2000/09/18 13:14:50 marco * Global Linux +bsd to (rtl/freebsd rtl/unix rtl/linux structure) Revision 1.7 2000/09/12 08:51:43 marco