"Routines to create and reset tty channels--OPEN and RESET operations" ) (MODE "") (BSZ "") OBUF? IBUF? "AUX" OJFN IJFN ERR VAL (TBUF <>) TC) #DECL ((OJFN IJFN ERR) (TC) TTY-CHANNEL) > ) ()>)> > ) ()>)> ) ()> <> <> <> ,BS-ASCII> .OJFN >)> .TBUF 0 >) (>)> .TBUF 0 <> 0 ,TM-DEFAULT ,TM-DEFAULT <>] TTY-CHANNEL>> ,TERMNAME> .TC) (.TC)>> > ; "NEW? arg is true when muddle is starting up (after save, for example)." ) "AUX" TN CH TD DATA TT TCHARS LTCHARS SGTTY LMODE JFN OSPEED SPEC-CHARS OSTATE NSTATE FLAGS L) #DECL ((CHANNEL) (NEW?) (TN) STRING (TD) TTY-DESC (DATA) TTY-CHANNEL (TT) TTY (JFN) FIX (TT) TTY (TCHARS LTCHARS SGTTY) STRING (LMODE) UVECTOR (OSPEED) FIX (OSTATE NSTATE) TTSTATE (SPEC-CHARS) STRING (FLAGS) FIX) >) ()> > ,TTY-LIST>>> >)> >>> ; "Read in descriptor file for this terminal" ,TERMNAME> ) ( .TR>)> "READ" "ASCII">> >) (T 80 0 0 []] TTY-DESC>>)> ) TS) #DECL ((ESTR) ) > > 1>>)> > > >)>)>>)> ; "Get speed &c" >> > > > > ; "Get normal tty state from kernel, if it knows; otherwise from system" > <>>)> )> > >> > ] TTSTATE>> ; "Get editing chars, as defined by loser" >> ; "Lookup speed" >>>> ; "Change interrupt and quit chars in new state" ;"Char Bell"> ;"Char Cntl-A"> ;"Char Cntl-Q"> ;"Char Cntl-S"> ; "Get flags out of SGTTY" > 8> >> ; "Turn on CBREAK, turn off ECHO." % FIX>>> ; "Make sure the system doesn't screw around with tabs" FIX>>> ; "Stuff flags back into SGTTY" CHARACTER>> CHARACTER>> ; "Turn off output processing in local mode" <1 .LMODE ,LLITOUT>> ; "Build the TTY object" > .SPEC-CHARS .OSPEED 0 0 <> <> 0 0 .TD ,MORE-TYPE-LIMIT] TTY>> > )> .TT !,TTY-LIST)> ) (T > )> ; "Mung the state of the world" > .NSTATE> )> .TT) (T ; "If not new, just make sure system knows about us" >> > > T>)> ; "Normal reset stuff--clear buffers, set modes to normal muddle stuff." > STRING> >>) (>)> > > ,TM-BADPOS>>)> 0> .CHANNEL> )> >> > >> )> <- >>> >>> ) (TTY ) (OS ) (NS ) (SPEC-CHARS ) (LTCHARS ) (JFN ) (TCHARS ) (SGTTY ) DEFSTR RSTR) #DECL ((CHAN) (WHICH) ATOM (CHAR) (TC) TTY-CHANNEL (DEFSTR RSTR SPEC-CHARS LTCHARS TCHARS SGTTY) STRING (OS NS) TTSTATE (OFFS) FIX) ) ( ) ( ) (T .ACT>)> >> >) (T >) ( >)> > ) (<==? .WHICH CHAR-LINE-ERASE> ) (<==? .WHICH CHAR-WORD-ERASE> ) (<==? .WHICH CHAR-LITERAL-NEXT> )> >)>)> .OLD> ) (TTY ) (NS ) (OS ) (ST )) #DECL ((CHAN) CHANNEL (ON?) (TC) TTY-CHANNEL) ;"Char Cntl-Q"> ;"Char Cntl-S">) (T > >)> .NS <>> .ON?> ) (TTY )) #DECL ((CHAN) CHANNEL (TC) TTY-CHANNEL (TTY) TTY) > >)>> )) #DECL ((CHAN) CHANNEL (TC) TTY-CHANNEL) >> ) (TTY )) #DECL ((CHAN) CHANNEL (TC) TTY-CHANNEL (TTY) TTY) > > >)>> ) (TTY )) #DECL ((CHAN) CHANNEL (TC) TTY-CHANNEL (TTY) TTY) > > T)>> )) #DECL ((JFN) FIX (TTSTATE) TTSTATE) > > > >> "Interfaces for reading and writing--FILL-READ-BUFFER, WRITE-BUFFER, WRITE-BYTE, READ-BYTE, BUFOUT, BUFLEN" )) #DECL ((CHANNEL) CHANNEL (TC) TTY-CHANNEL (NEW) FIX) .NEW) (T )>> )) #DECL ((CHANNEL) CHANNEL (TC) TTY-CHANNEL (NEW) STRING) .NEW) (T )>> ) "TUPLE" MORE "AUX" (TC )) #DECL ((CHANNEL) CHANNEL (CHRS) (LENGTH) (TC) TTY-CHANNEL (MORE) ]>) ) ( >)> >) (T >)>> .MORE>> )) #DECL ((CHANNEL) CHANNEL (CHAR) CHARACTER (DATA) TTY-CHANNEL) .CHAR> ) CHR (IB ) (IC ) TMP MODE) #DECL ((CHANNEL) CHANNEL (DATA) TTY-CHANNEL (IB) (IC) FIX (TMP) (MODE) FIX) > > > > .CHR)>) (> > )> .MODE> <1 ,BUF1>)>> FIX>) >> ,BUF1 1>> > >) (> <==? <1 .TEMP> 4>> ; "Handle interrupted system call" )>>)> .CHR> ) CHR CT) #DECL ((TC) TTY-CHANNEL (Q) (CT) FIX) >> <>) ( > > > .CHR) (T > .Q)>> ) NQ CT) #DECL ((TC) TTY-CHANNEL (CHAR) CHARACTER (Q) (CT) FIX) ) ( > <1 .NQ .Q> <2 .NQ .CHAR> ) (<==? > > > .Q> > > .CHAR> ) (T .NQ> > .CHAR> )>) (T > .CHAR> )>> ) (QUEUE? T) "AUX" (TC ) (ECHO? >) (CHR <>) VAL) #DECL ((CHANNEL) CHANNEL (NOWAIT? QUEUE? ECHO?) (TC) TTY-CHANNEL (VAL) FIX>) >> ,FIONREAD ,UV1> 0>>> ,BUF1 1>> > >) (> <==? <1 .VAL> 4>> )>>)>> )> .CHR)>> ) VAL) #DECL ((CHANNEL) CHANNEL (TC) TTY-CHANNEL (VAL) ) <1 ,UV1 0> ,FIONREAD ,UV1>> >> 0> .VAL)>)>> > > ;"Char Alt">> ) END (NOMORE <>) "AUX" (TC ) (TTY ) (BB ) (BBUF ) CT (PROMPT <>) TS) #DECL ((CHANNEL) CHANNEL (CONT) FIX (RBUF) (END) (NOMORE) (TC) TTY-CHANNEL (BB BBUF) STRING (CT) FIX) > > STRING>> ) (T )>)> >) (<0? > > > .BBUF>)>)>) ()> STRING>> )> .PROMPT> )> > <==? .CT >> 320>>> > >> .BBUF > > )>> )> .CT> ) (JFN ) (BC ) (BUF )) #DECL ((CHANNEL) CHANNEL (TC) TTY-CHANNEL (JFN) (BC) FIX (BUF) (FORCE?) ) > )> ; "Doesn't seem to be any way to force output" T)>> )) #DECL ((CHANNEL) CHANNEL (BYTE) CHARACTER (TC) TTY-CHANNEL) ) ()>> ) "AUX" (TC )) #DECL ((CHANNEL) CHANNEL (BYTES) STRING (LEN) FIX (TC) TTY-CHANNEL) ) ()>> "Miscellaneous operations" )) #DECL ((CHANNEL) CHANNEL (BIT) FIX (DATA) TTY-CHANNEL) T)>)>> ) (OPS >>)) #DECL ((CHANNEL) CHANNEL (TC) TTY-CHANNEL (OPS) VECTOR) ,TTY-MOV> >> )) #DECL ((CHANNEL) CHANNEL (DATA) TTY-CHANNEL) >>> )) #DECL ((CHANNEL) CHANNEL (AMT) FIX (TC) TTY-CHANNEL) > .AMT>> )) #DECL ((CHANNEL) CHANNEL (ON?) (TC) TTY-CHANNEL) ,TM-IMAGE>) (T % FIX>>)>>> )) #DECL ((CHANNEL) CHANNEL (ON?) (TC) TTY-CHANNEL) ,TM-ECHO>) (T % FIX>>)>>> > ) TS) #DECL ((CHANNEL) CHANNEL (TC) TTY-CHANNEL (TS) ) ,STDIN> ) (T >)> >>>)> > >> > >)> > >> > >)> >