131 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			131 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2008 Doug Coleman. | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | USING: assocs alien.syntax kernel serial system unix ;
 | ||
|  | IN: serial.unix | ||
|  | 
 | ||
|  | : TCSANOW     0 ; inline
 | ||
|  | : TCSADRAIN   1 ; inline
 | ||
|  | : TCSAFLUSH   2 ; inline
 | ||
|  | 
 | ||
|  | : TCIFLUSH    0 ; inline
 | ||
|  | : TCOFLUSH    1 ; inline
 | ||
|  | : TCIOFLUSH   2 ; inline
 | ||
|  | 
 | ||
|  | : TCOOFF      0 ; inline
 | ||
|  | : TCOON       1 ; inline
 | ||
|  | : TCIOFF      2 ; inline
 | ||
|  | : TCION       3 ; inline
 | ||
|  | 
 | ||
|  | ! iflag | ||
|  | : IGNBRK  OCT: 0000001 ; inline
 | ||
|  | : BRKINT  OCT: 0000002 ; inline
 | ||
|  | : IGNPAR  OCT: 0000004 ; inline
 | ||
|  | : PARMRK  OCT: 0000010 ; inline
 | ||
|  | : INPCK   OCT: 0000020 ; inline
 | ||
|  | : ISTRIP  OCT: 0000040 ; inline
 | ||
|  | : INLCR   OCT: 0000100 ; inline
 | ||
|  | : IGNCR   OCT: 0000200 ; inline
 | ||
|  | : ICRNL   OCT: 0000400 ; inline
 | ||
|  | : IUCLC   OCT: 0001000 ; inline
 | ||
|  | : IXON    OCT: 0002000 ; inline
 | ||
|  | : IXANY   OCT: 0004000 ; inline
 | ||
|  | : IXOFF   OCT: 0010000 ; inline
 | ||
|  | : IMAXBEL OCT: 0020000 ; inline
 | ||
|  | : IUTF8   OCT: 0040000 ; inline
 | ||
|  | 
 | ||
|  | ! oflag | ||
|  | : OPOST   OCT: 0000001 ; inline
 | ||
|  | : OLCUC   OCT: 0000002 ; inline
 | ||
|  | : ONLCR   OCT: 0000004 ; inline
 | ||
|  | : OCRNL   OCT: 0000010 ; inline
 | ||
|  | : ONOCR   OCT: 0000020 ; inline
 | ||
|  | : ONLRET  OCT: 0000040 ; inline
 | ||
|  | : OFILL   OCT: 0000100 ; inline
 | ||
|  | : OFDEL   OCT: 0000200 ; inline
 | ||
|  | : NLDLY  OCT: 0000400 ; inline
 | ||
|  | :   NL0  OCT: 0000000 ; inline
 | ||
|  | :   NL1  OCT: 0000400 ; inline
 | ||
|  | : CRDLY  OCT: 0003000 ; inline
 | ||
|  | :   CR0  OCT: 0000000 ; inline
 | ||
|  | :   CR1  OCT: 0001000 ; inline
 | ||
|  | :   CR2  OCT: 0002000 ; inline
 | ||
|  | :   CR3  OCT: 0003000 ; inline
 | ||
|  | : TABDLY OCT: 0014000 ; inline
 | ||
|  | :   TAB0 OCT: 0000000 ; inline
 | ||
|  | :   TAB1 OCT: 0004000 ; inline
 | ||
|  | :   TAB2 OCT: 0010000 ; inline
 | ||
|  | :   TAB3 OCT: 0014000 ; inline
 | ||
|  | : BSDLY  OCT: 0020000 ; inline
 | ||
|  | :   BS0  OCT: 0000000 ; inline
 | ||
|  | :   BS1  OCT: 0020000 ; inline
 | ||
|  | : FFDLY  OCT: 0100000 ; inline
 | ||
|  | :   FF0  OCT: 0000000 ; inline
 | ||
|  | :   FF1  OCT: 0100000 ; inline
 | ||
|  | 
 | ||
|  | ! cflags | ||
|  | : CSIZE   OCT: 0000060 ; inline
 | ||
|  | :   CS5   OCT: 0000000 ; inline
 | ||
|  | :   CS6   OCT: 0000020 ; inline
 | ||
|  | :   CS7   OCT: 0000040 ; inline
 | ||
|  | :   CS8   OCT: 0000060 ; inline
 | ||
|  | : CSTOPB  OCT: 0000100 ; inline
 | ||
|  | : CREAD   OCT: 0000200 ; inline
 | ||
|  | : PARENB  OCT: 0000400 ; inline
 | ||
|  | : PARODD  OCT: 0001000 ; inline
 | ||
|  | : HUPCL   OCT: 0002000 ; inline
 | ||
|  | : CLOCAL  OCT: 0004000 ; inline
 | ||
|  | : CIBAUD  OCT: 002003600000 ; inline
 | ||
|  | : CRTSCTS OCT: 020000000000 ; inline
 | ||
|  | 
 | ||
|  | ! lflags | ||
|  | : ISIG    OCT: 0000001 ; inline
 | ||
|  | : ICANON  OCT: 0000002 ; inline
 | ||
|  | : XCASE  OCT: 0000004 ; inline
 | ||
|  | : ECHO    OCT: 0000010 ; inline
 | ||
|  | : ECHOE   OCT: 0000020 ; inline
 | ||
|  | : ECHOK   OCT: 0000040 ; inline
 | ||
|  | : ECHONL  OCT: 0000100 ; inline
 | ||
|  | : NOFLSH  OCT: 0000200 ; inline
 | ||
|  | : TOSTOP  OCT: 0000400 ; inline
 | ||
|  | : ECHOCTL OCT: 0001000 ; inline
 | ||
|  | : ECHOPRT OCT: 0002000 ; inline
 | ||
|  | : ECHOKE  OCT: 0004000 ; inline
 | ||
|  | : FLUSHO  OCT: 0010000 ; inline
 | ||
|  | : PENDIN  OCT: 0040000 ; inline
 | ||
|  | : IEXTEN  OCT: 0100000 ; inline
 | ||
|  | 
 | ||
|  | M: linux lookup-baud ( n -- n )
 | ||
|  |     dup H{ | ||
|  |         { 0 OCT: 0000000 } | ||
|  |         { 50    OCT: 0000001 } | ||
|  |         { 75    OCT: 0000002 } | ||
|  |         { 110   OCT: 0000003 } | ||
|  |         { 134   OCT: 0000004 } | ||
|  |         { 150   OCT: 0000005 } | ||
|  |         { 200   OCT: 0000006 } | ||
|  |         { 300   OCT: 0000007 } | ||
|  |         { 600   OCT: 0000010 } | ||
|  |         { 1200  OCT: 0000011 } | ||
|  |         { 1800  OCT: 0000012 } | ||
|  |         { 2400  OCT: 0000013 } | ||
|  |         { 4800  OCT: 0000014 } | ||
|  |         { 9600  OCT: 0000015 } | ||
|  |         { 19200 OCT: 0000016 } | ||
|  |         { 38400 OCT: 0000017 } | ||
|  |         { 57600   OCT: 0010001 } | ||
|  |         { 115200  OCT: 0010002 } | ||
|  |         { 230400  OCT: 0010003 } | ||
|  |         { 460800  OCT: 0010004 } | ||
|  |         { 500000  OCT: 0010005 } | ||
|  |         { 576000  OCT: 0010006 } | ||
|  |         { 921600  OCT: 0010007 } | ||
|  |         { 1000000 OCT: 0010010 } | ||
|  |         { 1152000 OCT: 0010011 } | ||
|  |         { 1500000 OCT: 0010012 } | ||
|  |         { 2000000 OCT: 0010013 } | ||
|  |         { 2500000 OCT: 0010014 } | ||
|  |         { 3000000 OCT: 0010015 } | ||
|  |         { 3500000 OCT: 0010016 } | ||
|  |         { 4000000 OCT: 0010017 } | ||
|  |     } at* [ nip ] [ drop invalid-baud ] if ;
 |