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