3 <NEWSTRUC TTY-DESC VECTOR
10 TD-PRIMOPS <VECTOR [REST <OR FALSE TTY-OP>]>>
12 <NEWSTRUC TTY-OUT VECTOR
13 TO-STRING <OR STRING TTY-ELT>
16 <NEWTYPE TTY-ELT VECTOR '<<PRIMTYPE VECTOR> [REST <OR FIX STRING>]>>
18 <COND (<==? <TYPEPRIM FIX> FIX>
20 '<OR STRING TTY-ELT TTY-OUT
21 <VECTOR [REST <OR TTY-ELT STRING TTY-OUT>]>>>)
24 '<OR STRING TTY-ELT TTY-OUT
25 <VECTOR [REST <OR STRING TTY-ELT TTY-OUT>]>>>)>
27 "TTY-CHANNELs contain buffers and channel/specific modes. They point to
28 TTYs, which contain the rest of the dynamic tty information (cursor pos,
29 special characters, speed, etc. A TTY points to a TTY-DESC, which contains
30 static tty information (type, height, width, padding, escape sequences)."
31 <NEWSTRUC TTY-CHANNEL VECTOR
32 TC-IJFN FIX ; "Input descriptor (STDIN)"
33 TC-DEV <OR ATOM STRING FALSE> ; "Device name (/dev/tty)"
34 TC-SNM <OR ATOM STRING FALSE> ; "directory"
35 TC-NM1 <OR STRING FALSE>
36 TC-NM2 <OR STRING FALSE>
37 TC-DSN <OR STRING FALSE>
40 TC-IBUF <OR STRING FALSE> ; "input buffer"
41 TC-TIBUF <OR STRING FALSE> ; "top of input buffer"
42 TC-IBC FIX ; "# chars in input buffer"
43 TC-OBUF <OR STRING FALSE> ; "output buffer"
44 TC-TOBUF <OR STRING FALSE> ; "top of output buffer"
45 TC-OBC FIX ; "# chars in output buffer"
46 TC-QUEUE <OR STRING CHARACTER FALSE>
49 TC-SMODE FIX ; "Mode information for TTY"
50 TC-TTY <OR TTY FALSE> ; "TTY information">
52 ; "Bits in TC-MODE and TC-SMODE"
53 <MSETG TM-ECHO 1> ; "Defaultly on"
54 <MSETG TM-IMAGE 2> ; "Defaultly off"
55 <MSETG TM-PAGE 4> ; "Defaultly on--do something at end of page"
56 <MSETG TM-WRAP 8> ; "Defaultly on--wrap at end of page"
57 <MSETG TM-ITS 16> ; "Defaultly on--do --more-- instead of ^S/^Q"
58 <MSETG TM-BADPOS 32> ; "On until we know what the cursor position is"
60 <SETG TM-DEFAULT <CHTYPE <ORB ,TM-ECHO ,TM-PAGE ,TM-WRAP ,TM-ITS> FIX>>
62 ; "Offsets in TT-SPEC-CHARS"
63 <MSETG TS-REPRINT 1> ; "ctrl-R"
64 <MSETG TS-WORD 2> ; "ctrl-W"
65 <MSETG TS-QUOTE 3> ; "ctrl-V"
66 <MSETG TS-RUBOUT 4> ; "rubout"
67 <MSETG TS-KILL 5> ; "ctrl-U"
69 TT-OSTATE TTSTATE ; "Saved state of tty, to win when quit"
70 TT-NSTATE TTSTATE ; "Current state of tty, to win when continue"
71 TT-SCREWED <OR ATOM FALSE> ; "True when in funny mode"
72 TT-SPEC-CHARS STRING ; "User's definitions of editing chars"
73 TT-OSPEED FIX ; "Output speed, for padding"
74 TT-X FIX ; "Current column"
75 TT-Y FIX ; "Current line"
76 TT-SAV-X <OR FIX FALSE> ; "Saved X position"
77 TT-SAV-Y <OR FIX FALSE> ; "Saved Y position"
78 TT-LAST-IN <OR FIX FALSE> ; "Last line input happened on"
79 TT-LAST-MORE FIX ; "Set to 0 when more happens"
81 TT-MORE-LINES <OR FIX FALSE>>
83 <NEWSTRUC TTSTATE VECTOR
85 TST-BITS <UVECTOR FIX>
92 ; "Test the mode word of the channel"
93 <DEFMAC TEST-MODE ('MD 'MODE "ARGS" FOO)
94 <COND (<NOT <EMPTY? .FOO>>
95 <FORM NOT <FORM 0? <FORM ANDB .MD
96 <FORM + .MODE !.FOO>>>>)
97 (<FORM NOT <FORM 0? <FORM ANDB .MODE .MD>>>)>>
99 <DEFMAC TEST-TC-MODE ('TC 'MODE "ARGS" FOO)
100 <FORM TEST-MODE <FORM TC-MODE .TC> .MODE !.FOO>>
102 <DEFMAC ECHO-ON? ('MD)
103 <FORM AND <FORM TEST-MODE .MD ,TM-ECHO>
104 <FORM NOT <FORM TEST-MODE .MD ,TM-IMAGE>>>>
106 ; "Update the mud-chan, to account for cursor motion"
107 <DEFMAC UPDATE-MC ('CH 'X "OPTIONAL" 'Y "AUX" (L ()))
108 <COND (<AND <ASSIGNED? X> .X <OR <NOT <STRUCTURED? .X>>
110 <SET L (<COND (<TYPE? .X LIST>
111 <FORM MC-HPOS '.SU <FORM + <FORM MC-HPOS '.SU>
113 (<FORM MC-HPOS '.SU .X>)>)>)>
114 <COND (<AND <ASSIGNED? Y> .Y <OR <NOT <STRUCTURED? .Y>>
116 <SET L (<COND (<TYPE? .Y LIST>
117 <FORM MC-VPOS '.SU <FORM + <FORM MC-VPOS '.SU>
119 (<FORM MC-VPOS '.SU .Y>)> !.L)>)>
120 <COND (<NOT <EMPTY? .L>>
121 <FORM BIND ((SU <FORM CHANNEL-USER .CH>))
122 <FORM COND (<FORM TYPE? '.SU MUD-CHAN> !.L)>>)>>
124 <DEFMAC DO-TTY-PARM ('TC OPER "OPTIONAL" 'NEW "AUX" (TTY <FORM TC-TTY .TC>)
125 (TD <FORM TT-DESC .TTY>))
126 <COND (<==? .OPER PAGE-WIDTH>
127 <COND (<ASSIGNED? NEW>
128 <FORM TD-WIDTH .TD .NEW>)
130 <FORM - <FORM TD-WIDTH .TD> 1>)>)
131 (<==? .OPER PAGE-HEIGHT>
132 <COND (<ASSIGNED? NEW>
133 <FORM TD-HEIGHT .TD .NEW>)
135 <FORM TD-HEIGHT .TD>)>)
137 <COND (<ASSIGNED? NEW>
138 <COND (<AND <TYPE? .NEW FIX>
140 <FORM TT-X .TTY .NEW>)
142 <FORM BIND ((RTTY .TTY) (TD <FORM TT-DESC '.RTTY>)
143 (RNEW <FORM MIN <FORM ABS .NEW>
144 <FORM - <FORM TD-WIDTH '.TD>
146 <FORM TT-X '.RTTY '.RNEW>>)>)
150 <COND (<ASSIGNED? NEW>
151 <COND (<AND <TYPE? .NEW FIX>
153 <FORM TT-Y .TTY .NEW>)
155 <FORM BIND ((RTTY .TTY) (TD <FORM TT-DESC '.RTTY>)
156 (RNEW <FORM MIN <FORM ABS .NEW>
157 <FORM - <FORM TD-HEIGHT '.TD>
159 <FORM TT-Y '.RTTY '.RNEW>>)>)
161 <FORM TT-Y .TTY>)>)>>