131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								! Copyright (C) 2008 Doug Coleman.
							 | 
						||
| 
								 | 
							
								! See http://factorcode.org/license.txt for BSD license.
							 | 
						||
| 
								 | 
							
								USING: assocs alien.syntax kernel io.serial system unix ;
							 | 
						||
| 
								 | 
							
								IN: io.serial.unix
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CONSTANT: TCSANOW     0
							 | 
						||
| 
								 | 
							
								CONSTANT: TCSADRAIN   1
							 | 
						||
| 
								 | 
							
								CONSTANT: TCSAFLUSH   2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CONSTANT: TCIFLUSH    0
							 | 
						||
| 
								 | 
							
								CONSTANT: TCOFLUSH    1
							 | 
						||
| 
								 | 
							
								CONSTANT: TCIOFLUSH   2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CONSTANT: TCOOFF      0
							 | 
						||
| 
								 | 
							
								CONSTANT: TCOON       1
							 | 
						||
| 
								 | 
							
								CONSTANT: TCIOFF      2
							 | 
						||
| 
								 | 
							
								CONSTANT: TCION       3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! iflag
							 | 
						||
| 
								 | 
							
								CONSTANT: IGNBRK  OCT: 0000001
							 | 
						||
| 
								 | 
							
								CONSTANT: BRKINT  OCT: 0000002
							 | 
						||
| 
								 | 
							
								CONSTANT: IGNPAR  OCT: 0000004
							 | 
						||
| 
								 | 
							
								CONSTANT: PARMRK  OCT: 0000010
							 | 
						||
| 
								 | 
							
								CONSTANT: INPCK   OCT: 0000020
							 | 
						||
| 
								 | 
							
								CONSTANT: ISTRIP  OCT: 0000040
							 | 
						||
| 
								 | 
							
								CONSTANT: INLCR   OCT: 0000100
							 | 
						||
| 
								 | 
							
								CONSTANT: IGNCR   OCT: 0000200
							 | 
						||
| 
								 | 
							
								CONSTANT: ICRNL   OCT: 0000400
							 | 
						||
| 
								 | 
							
								CONSTANT: IUCLC   OCT: 0001000
							 | 
						||
| 
								 | 
							
								CONSTANT: IXON    OCT: 0002000
							 | 
						||
| 
								 | 
							
								CONSTANT: IXANY   OCT: 0004000
							 | 
						||
| 
								 | 
							
								CONSTANT: IXOFF   OCT: 0010000
							 | 
						||
| 
								 | 
							
								CONSTANT: IMAXBEL OCT: 0020000
							 | 
						||
| 
								 | 
							
								CONSTANT: IUTF8   OCT: 0040000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! oflag
							 | 
						||
| 
								 | 
							
								CONSTANT: OPOST   OCT: 0000001
							 | 
						||
| 
								 | 
							
								CONSTANT: OLCUC   OCT: 0000002
							 | 
						||
| 
								 | 
							
								CONSTANT: ONLCR   OCT: 0000004
							 | 
						||
| 
								 | 
							
								CONSTANT: OCRNL   OCT: 0000010
							 | 
						||
| 
								 | 
							
								CONSTANT: ONOCR   OCT: 0000020
							 | 
						||
| 
								 | 
							
								CONSTANT: ONLRET  OCT: 0000040
							 | 
						||
| 
								 | 
							
								CONSTANT: OFILL   OCT: 0000100
							 | 
						||
| 
								 | 
							
								CONSTANT: OFDEL   OCT: 0000200
							 | 
						||
| 
								 | 
							
								CONSTANT: NLDLY  OCT: 0000400
							 | 
						||
| 
								 | 
							
								CONSTANT:   NL0  OCT: 0000000
							 | 
						||
| 
								 | 
							
								CONSTANT:   NL1  OCT: 0000400
							 | 
						||
| 
								 | 
							
								CONSTANT: CRDLY  OCT: 0003000
							 | 
						||
| 
								 | 
							
								CONSTANT:   CR0  OCT: 0000000
							 | 
						||
| 
								 | 
							
								CONSTANT:   CR1  OCT: 0001000
							 | 
						||
| 
								 | 
							
								CONSTANT:   CR2  OCT: 0002000
							 | 
						||
| 
								 | 
							
								CONSTANT:   CR3  OCT: 0003000
							 | 
						||
| 
								 | 
							
								CONSTANT: TABDLY OCT: 0014000
							 | 
						||
| 
								 | 
							
								CONSTANT:   TAB0 OCT: 0000000
							 | 
						||
| 
								 | 
							
								CONSTANT:   TAB1 OCT: 0004000
							 | 
						||
| 
								 | 
							
								CONSTANT:   TAB2 OCT: 0010000
							 | 
						||
| 
								 | 
							
								CONSTANT:   TAB3 OCT: 0014000
							 | 
						||
| 
								 | 
							
								CONSTANT: BSDLY  OCT: 0020000
							 | 
						||
| 
								 | 
							
								CONSTANT:   BS0  OCT: 0000000
							 | 
						||
| 
								 | 
							
								CONSTANT:   BS1  OCT: 0020000
							 | 
						||
| 
								 | 
							
								CONSTANT: FFDLY  OCT: 0100000
							 | 
						||
| 
								 | 
							
								CONSTANT:   FF0  OCT: 0000000
							 | 
						||
| 
								 | 
							
								CONSTANT:   FF1  OCT: 0100000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! cflags
							 | 
						||
| 
								 | 
							
								CONSTANT: CSIZE   OCT: 0000060
							 | 
						||
| 
								 | 
							
								CONSTANT:   CS5   OCT: 0000000
							 | 
						||
| 
								 | 
							
								CONSTANT:   CS6   OCT: 0000020
							 | 
						||
| 
								 | 
							
								CONSTANT:   CS7   OCT: 0000040
							 | 
						||
| 
								 | 
							
								CONSTANT:   CS8   OCT: 0000060
							 | 
						||
| 
								 | 
							
								CONSTANT: CSTOPB  OCT: 0000100
							 | 
						||
| 
								 | 
							
								CONSTANT: CREAD   OCT: 0000200
							 | 
						||
| 
								 | 
							
								CONSTANT: PARENB  OCT: 0000400
							 | 
						||
| 
								 | 
							
								CONSTANT: PARODD  OCT: 0001000
							 | 
						||
| 
								 | 
							
								CONSTANT: HUPCL   OCT: 0002000
							 | 
						||
| 
								 | 
							
								CONSTANT: CLOCAL  OCT: 0004000
							 | 
						||
| 
								 | 
							
								CONSTANT: CIBAUD  OCT: 002003600000
							 | 
						||
| 
								 | 
							
								CONSTANT: CRTSCTS OCT: 020000000000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! lflags
							 | 
						||
| 
								 | 
							
								CONSTANT: ISIG    OCT: 0000001
							 | 
						||
| 
								 | 
							
								CONSTANT: ICANON  OCT: 0000002
							 | 
						||
| 
								 | 
							
								CONSTANT: XCASE  OCT: 0000004
							 | 
						||
| 
								 | 
							
								CONSTANT: ECHO    OCT: 0000010
							 | 
						||
| 
								 | 
							
								CONSTANT: ECHOE   OCT: 0000020
							 | 
						||
| 
								 | 
							
								CONSTANT: ECHOK   OCT: 0000040
							 | 
						||
| 
								 | 
							
								CONSTANT: ECHONL  OCT: 0000100
							 | 
						||
| 
								 | 
							
								CONSTANT: NOFLSH  OCT: 0000200
							 | 
						||
| 
								 | 
							
								CONSTANT: TOSTOP  OCT: 0000400
							 | 
						||
| 
								 | 
							
								CONSTANT: ECHOCTL OCT: 0001000
							 | 
						||
| 
								 | 
							
								CONSTANT: ECHOPRT OCT: 0002000
							 | 
						||
| 
								 | 
							
								CONSTANT: ECHOKE  OCT: 0004000
							 | 
						||
| 
								 | 
							
								CONSTANT: FLUSHO  OCT: 0010000
							 | 
						||
| 
								 | 
							
								CONSTANT: PENDIN  OCT: 0040000
							 | 
						||
| 
								 | 
							
								CONSTANT: IEXTEN  OCT: 0100000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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 [ invalid-baud ] unless ;
							 |