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 ;
							 |