diff options
| -rw-r--r-- | CHANGES | 11 | ||||
| -rw-r--r-- | Makefile | 65 | ||||
| -rw-r--r-- | NOTES | 31 | ||||
| -rw-r--r-- | TODO | 13 | ||||
| -rw-r--r-- | ansicode.txt | 779 | ||||
| -rw-r--r-- | array.h | 91 | ||||
| -rw-r--r-- | buffer-poll.c | 57 | ||||
| -rw-r--r-- | buffer.c | 181 | ||||
| -rw-r--r-- | command.c | 165 | ||||
| -rw-r--r-- | input.c | 825 | ||||
| -rw-r--r-- | local.c | 690 | ||||
| -rw-r--r-- | log.c | 218 | ||||
| -rw-r--r-- | screen.c | 827 | ||||
| -rw-r--r-- | server.c | 999 | ||||
| -rw-r--r-- | session.c | 189 | ||||
| -rw-r--r-- | tmux.c | 514 | ||||
| -rw-r--r-- | tmux.h | 583 | ||||
| -rw-r--r-- | window.c | 317 | ||||
| -rw-r--r-- | xmalloc.c | 243 |
19 files changed, 6798 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES new file mode 100644 index 00000000..236836bf --- /dev/null +++ b/CHANGES @@ -0,0 +1,11 @@ +09 July 2007 + +* Initial import to CVS. Basic functions are working, albeit with a couple of + showstopper memory bugs and many missing features. Detaching, reattaching, + creating new sessions, listing sessions work acceptably for using with shells. + Simple curses programs (top, systat, tetris) and more complicated ones (mutt, + emacs) that don't require scrolling regions (ESC[r) mostly work fine + (including mutt, emacs). No status bar yet and no key remapping or other + customisation. + + diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..60f38ac3 --- /dev/null +++ b/Makefile @@ -0,0 +1,65 @@ +# $Id: Makefile,v 1.1.1.1 2007-07-09 19:03:33 nicm Exp $ + +.SUFFIXES: .c .o .y .l .h +.PHONY: clean + +PROG= tmux +VERSION= 0.1 + +OS!= uname +REL!= uname -r +DATE!= date +%Y%m%d-%H%M + +SRCS= tmux.c server.c buffer.c buffer-poll.c xmalloc.c input.c screen.c \ + window.c session.c local.c log.c command.c +HDRS= tmux.h + +LEX= lex +YACC= yacc -d + +CC= cc +INCDIRS+= -I. -I- -I/usr/local/include +CFLAGS+= -DBUILD="\"$(VERSION) ($(DATE))\"" +CFLAGS+= -g -ggdb -DDEBUG +#CFLAGS+= -pedantic -std=c99 +#CFLAGS+= -Wredundant-decls -Wdisabled-optimization -Wendif-labels +CFLAGS+= -Wno-long-long -Wall -W -Wnested-externs -Wformat=2 +CFLAGS+= -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations +CFLAGS+= -Wwrite-strings -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare +CFLAGS+= -Wundef -Wshadow -Wbad-function-cast -Winline -Wcast-align + +PREFIX?= /usr/local +INSTALLBIN= install -g bin -o root -m 555 +INSTALLMAN= install -g bin -o root -m 444 + +LDFLAGS+= -L/usr/local/lib +LIBS+= -lutil -lncurses + +OBJS= ${SRCS:S/.c/.o/:S/.y/.o/:S/.l/.o/} + +CLEANFILES= ${PROG} *.o .depend *~ ${PROG}.core *.log + +.c.o: + ${CC} ${CFLAGS} ${INCDIRS} -c ${.IMPSRC} -o ${.TARGET} + +.l.o: + ${LEX} ${.IMPSRC} + ${CC} ${CFLAGS} ${INCDIRS} -c lex.yy.c -o ${.TARGET} + +.y.o: + ${YACC} ${.IMPSRC} + ${CC} ${CFLAGS} ${INCDIRS} -c y.tab.c -o ${.TARGET} + +all: .depend ${PROG} + +${PROG}: ${OBJS} + ${CC} ${LDFLAGS} -o ${PROG} ${LIBS} ${OBJS} + +.depend: ${HDRS} + -mkdep ${CFLAGS} ${INCDIRS} ${SRCS:M*.c} + +depend: + mkdep ${CFLAGS} ${INCDIRS} ${SRCS:M*.c} + +clean: + rm -f ${CLEANFILES} @@ -0,0 +1,31 @@ +Command prefix is C-b. + +Commands: d detach + c create new terminal + n next terminal + p previous terminal + r refresh screen + t set window name + 0-9 select window + +There is one default server process per user which puts its socket in +/tmp/tmux-UID. It is created the first time tmux is run and subsequent +invocations will connect to the same server. The server holds multiple +sessions, call tmux with "-n <session name>" to create a session or attach to +an existing session. All the sessions may be listed with -l, or the windows of +a single session with "-ln <session name>". Sessions are destroyed when no +windows remain attached to them. + +Another server process can be used by specifying an alternative socket path with +"-s <path>" but it shouldn't normally be required. + +You can set the window title (listed in -l), using the \e] escape sequence. For +example: + + $ echo -n \\033]0;My Title\\007 + +There is currently no method for setting the window name (what will eventually +be shown in the status bar). + +You might get message "couldn't find server" after a crash, in this case you +must remove the /tmp/tmux-`id -u` file manually. @@ -0,0 +1,13 @@ +- key remapping +- decide if TIOCPKT is necessary and either handle it or remove the code +- it would be nice if there wasn't so much copying buffers about, audit uses +- window names +- status bar +- useful env vars like WINDOW +- lots of scripting love: add, remove, move around windows, status bar +- sort out who controls the buffers in local.c a bit +- better checking/emulation for missing term requirements +- alt charset, borders etc (terminfo(5)/Line Graphics) +- use default shell rather than fixed +- wrap windows with forward/back +- new window command prompt diff --git a/ansicode.txt b/ansicode.txt new file mode 100644 index 00000000..8767b9e7 --- /dev/null +++ b/ansicode.txt @@ -0,0 +1,779 @@ +Summary of ANSI standards for ASCII terminals Joe Smith, 18-May-84 + +Contents: + 1. Overview and Definitions + 2. General rules for interpreting an ESCape Sequence + 3. General rules for interpreting a Control Sequence + 4. C0 and C1 control codes in numeric order + 5. Two and three-character ESCape Sequences in numeric order + 6. Control Sequences in numeric order + 7. VT100 emulation requirements + +The VT100 USER GUIDE and ANSI standard X3.64-1979 both list the ANSI ESCape +sequences in alphabetic order by mnemonic, but do not have a have a cross +reference in order by ASCII code. This paper lists the combination of all +definitions from the three ANSI standards in numeric order. For a description +of the advantages of using these standards, see the article "Toward +Standardized Video Terminals" in the April-1984 issue of BYTE magazine. + +ANSI X3.4-1977 defines the 7-bit ASCII character set (C0 and G0). It was +written in 1968, revised in 1977, and explains the decisions made in laying out +the ASCII code. In particular, it explains why ANSI chose to make ASCII +incompatible with EBCDIC in order to make it self-consistant. + +ANSI X3.41-1974 introduces the idea of an 8-bit ASCII character set (C1 and G1 +in addition to the existing C0 and G0). It describes how to use the 8-bit +features in a 7-bit environment. X3.41 defines the format of all ESCape +sequences, but defines only the 3-character ones with a parameter character +in the middle. These instruct the terminal how to interpret the C0, G0, C1, +and G1 characters (such as by selecting different character-set ROMs). + + Note: NAPLPS does videotex graphics by redefining the C1 set and + selecting alternate G0, G1, G2, and G3 sets. + See the February 1983 issue of BYTE magazine for details. + +ANSI X3.64-1979 defines the remaining ESCape sequences. It defines all the C1 +control characters, and specifies that certain two-character ESCape sequences +in the 7-bit environment are to act exactly like the 8-bit C1 control set. +X3.64 introduces the idea of a Control-Sequence, which starts with CSI +character, has an indefinite length, and is terminated by an alphabetic +character. The VT100 was one of the first terminals to implement this +standard. + +Definitions: + + Control Character - A single character with an ASCII code with the range + of 000 to 037 and 200 to 237 octal, 00 to 1F and 80 to 9F hex. + + Escape Sequence - A two or three character string staring with ESCape. + (Four or more character strings are allowed but not defined.) + + Control Sequence - A string starting with CSI (233 octal, 9B hex) or + with ESCape Left-Bracket, and terminated by an alphabetic character. + Any number of parameter characters (digits 0 to 9, semicolon, and + question mark) may appear within the Control Sequence. The terminating + character may be preceded by an intermediate character (such as space). +Character classifications: + +C0 Control 000-037 octal, 00-1F hex (G0 is 041-176 octal, 21-7E hex) +SPACE 040+240 octal, 20+A0 hex Always and everywhere a blank space +Intermediate 040-057 octal, 20-2F hex !"#$%&'()*+,-./ +Parameters 060-077 octal, 30-3F hex 0123456789:;<=>? +Uppercase 100-137 octal, 40-5F hex @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ +Lowercase 140-176 octal, 60-7E hex `abcdefghijlkmnopqrstuvwxyz{|}~ +Alphabetic 100-176 octal, 40-7E hex (all of upper and lower case) +Delete 177 octal, 7F hex Always and everywhere ignored +C1 Control 200-237 octal, 80-9F hex 32 additional control characters +G1 Displayable 241-376 octal, A1-FE hex 94 additional displayable characters +Special 240+377 octal, A0+FF hex Same as SPACE and DELETE + +Note that in this paper, the terms uppercase, lowercase, and alphabetics +include more characters than just A to Z. + +------------------------------------------------------------------------------ + +General rules for interpreting an ESCape Sequence: + + An ESCape Sequence starts with the ESC character (033 octal, 1B hex). +The length of the ESCape Sequence depends on the character that immediately +follows the ESCape. + +If the next character is + C0 control: Interpret it first, then resume processing ESCape sequence. + Example: CR, LF, XON, and XOFF work as normal within an ESCape sequence. + Intermediate: Expect zero or more intermediates, a parameter terminates + a private function, an alphabetic terminates a standard sequence. + Example: ESC ( A defines standard character set, ESC ( 0 a DEC set. + Parameter: End of a private 2-character escape sequence. + Example: ESC = sets special keypad mode, ESC > clears it. + Uppercase: Translate it into a C1 control character and act on it. + Example: ESC D does indexes down, ESC M indexes up. (CSI is special) + Lowercase: End of a standard 2-character escape sequence. + Example: ESC c resets the terminal. + Delete: Ignore it, and continue interpreting the ESCape sequence + C1 and G1: Treat the same as their 7-bit counterparts + + Note that CSI is the two-character sequence ESCape left-bracket or the 8-bit +C1 code of 233 octal, 9B hex. CSI introduces a Control Sequence, which +continues until an alphabetic character is received. + +General rules for interpreting a Control Sequence: + +1) It starts with CSI, the Control Sequence Introducer. +2) It contains any number of parameter characters (0123456789:;<=>?). +3) It terminates with an alphabetic character. +4) Intermediate characters (if any) immediately precede the terminator. + +If the first character after CSI is one of "<=>?" (074-077 octal, 3C-3F hex), +then Control Sequence is to be interpreted according to private standards (such +as setting and resetting modes not defined by ANSI). The terminal should +expect any number of numeric parameters, separated by semicolons (073 octal, +3B hex). Only after the terminating alphabetic character is received should +the terminal act on the Control Sequence. + +============================================================================= + C0 set of 7-bit control characters (from ANSI X3.4-1977). + +Oct Hex Name * (* marks function used in DEC VT series or LA series terminals) +--- -- - --- - -------------------------------------------------------------- +000 00 @ NUL * Null filler, terminal should ignore this character +001 01 A SOH Start of Header +002 02 B STX Start of Text, implied end of header +003 03 C ETX End of Text, causes some terminal to respond with ACK or NAK +004 04 D EOT End of Transmission +005 05 E ENQ * Enquiry, causes terminal to send ANSWER-BACK ID +006 06 F ACK Acknowledge, usually sent by terminal in response to ETX +007 07 G BEL * Bell, triggers the bell, buzzer, or beeper on the terminal +010 08 H BS * Backspace, can be used to define overstruck characters +011 09 I HT * Horizontal Tabulation, move to next predetermined position +012 0A J LF * Linefeed, move to same position on next line (see also NL) +013 0B K VT * Vertical Tabulation, move to next predetermined line +014 0C L FF * Form Feed, move to next form or page +015 0D M CR * Carriage Return, move to first character of current line +016 0E N SO * Shift Out, switch to G1 (other half of character set) +017 0F O SI * Shift In, switch to G0 (normal half of character set) +020 10 P DLE Data Link Escape, interpret next control character specially +021 11 Q XON * (DC1) Terminal is allowed to resume transmitting +022 12 R DC2 Device Control 2, causes ASR-33 to activate paper-tape reader +023 13 S XOFF* (DC2) Terminal must pause and refrain from transmitting +024 14 T DC4 Device Control 4, causes ASR-33 to deactivate paper-tape reader +025 15 U NAK Negative Acknowledge, used sometimes with ETX and ACK +026 16 V SYN Synchronous Idle, used to maintain timing in Sync communication +027 17 W ETB End of Transmission block +030 18 X CAN * Cancel (makes VT100 abort current escape sequence if any) +031 19 Y EM End of Medium +032 1A Z SUB * Substitute (VT100 uses this to display parity errors) +033 1B [ ESC * Prefix to an ESCape sequence +034 1C \ FS File Separator +035 1D ] GS Group Separator +036 1E ^ RS * Record Separator (sent by VT132 in block-transfer mode) +037 1F _ US Unit Separator + +040 20 SP * Space (should never be defined to be otherwise) +177 7F DEL * Delete, should be ignored by terminal + +============================================================================== + C1 set of 8-bit control characters (from ANSI X3.64-1979) + +Oct Hex Name * (* marks function used in DEC VT series or LA series terminals) +--- -- - --- - -------------------------------------------------------------- +200 80 @ Reserved for future standardization +201 81 A Reserved +202 82 B Reserved +203 83 C Reserved +204 84 D IND * Index, moves down one line same column regardless of NL +205 85 E NEL * NEw Line, moves done one line and to first column (CR+LF) +206 86 F SSA Start of Selected Area to be sent to auxiliary output device +207 87 G ESA End of Selected Area to be sent to auxiliary output device +210 88 H HTS * Horizontal Tabulation Set at current position +211 89 I HTJ Hor Tab Justify, moves string to next tab position +212 8A J VTS Vertical Tabulation Set at current line +213 8B K PLD Partial Line Down (subscript) +214 8C L PLU Partial Line Up (superscript) +215 8D M RI * Reverse Index, go up one line, reverse scroll if necessary +216 8E N SS2 * Single Shift to G2 +217 8F O SS3 * Single Shift to G3 (VT100 uses this for sending PF keys) +220 90 P DCS * Device Control String, terminated by ST (VT125 enters graphics) +221 91 Q PU1 Private Use 1 +222 92 R PU2 Private Use 2 +223 93 S STS Set Transmit State +224 94 T CCH Cancel CHaracter, ignore previous character +225 95 U MW Message Waiting, turns on an indicator on the terminal +226 96 V SPA Start of Protected Area +227 97 W EPA End of Protected Area +230 98 X Reserved for for future standard +231 99 Y Reserved +232 9A Z * Reserved, but causes DEC terminals to respond with DA codes +233 9B [ CSI * Control Sequence Introducer (described in a seperate table) +234 9C \ ST * String Terminator (VT125 exits graphics) +235 9D ] OSC Operating System Command (reprograms intelligent terminal) +236 9E ^ PM Privacy Message (password verification), terminated by ST +237 9F _ APC Application Program Command (to word processor), term by ST + +============================================================================== + Character set selection sequences (from ANSI X3.41-1974) + All are 3 characters long (including the ESCape). Alphabetic characters + as 3rd character are defined by ANSI, parameter characters as 3rd character + may be interpreted differently by each terminal manufacturer. + +Oct Hex * (* marks function used in DEC VT series or LA series terminals) +--- -- -- - ------------------------------------------------------------------ +040 20 ANNOUNCER - Determines whether to use 7-bit or 8-bit ASCII + A G0 only will be used. Ignore SI, SO, and G1. + B G0 and G1 used internally. SI and SO affect G0, G1 is ignored. + C G0 and G1 in an 8-bit only environment. SI and SO are ignored. + D G0 and G1 are used, SI and SO affect G0. + E + F * 7-bit transmission, VT240/PRO350 sends CSI as two characters ESC [ + G * 8-bit transmission, VT240/PRO350 sends CSI as single 8-bit character +041 21 ! Select C0 control set (choice of 63 standard, 16 private) +042 22 " Select C1 control set (choice of 63 standard, 16 private) +043 23 # Translate next character to a special single character + #3 * DECDHL1 - Double height line, top half + #4 * DECDHL2 - Double height line, bottom half + #5 * DECSWL - Single width line + #6 * DECDWL - Double width line + #7 * DECHCP - Make a hardcopy of the graphics screen (GIGI,VT125,VT241) + #8 * DECALN - Alignment display, fill screen with "E" to adjust focus +044 24 $ MULTIBYTE CHARACTERS - Displayable characters require 2-bytes each +045 25 % SPECIAL INTERPRETATION - Such as 9-bit data +046 26 & Reserved for future standardization +047 27 ' Reserved for future standardization +050 28 ( * SCS - Select G0 character set (choice of 63 standard, 16 private) + (0 * DEC VT100 line drawing set (affects lowercase characters) + (1 * DEC Alternate character ROM set (RAM set on GIGI and VT220) + (2 * DEC Alternate character ROM set with line drawing + (5 * DEC Finnish on LA100 + (6 * DEC Norwegian/Danish on LA100 + (7 * DEC Swedish on LA100 + (9 * DEC French Canadian + (< * DEC supplemental graphics (everything not in USASCII) + (A * UKASCII (British pound sign) + (B * USASCII (American pound sign) + (C * ISO Finnish on LA120 + (E * ISO Norwegian/Danish on LA120 + (H * ISO Swedish on LA120 + (K * ISO German on LA100,LA120 + (R * ISO French on LA100,LA120 + (Y * ISO Italian on LA100 + (Z * ISO Spanish on LA100 +051 29 ) * SCS - Select G1 character set (choice of 63 standard, 16 private) + * (same character sets as listed under G0) +052 2A * * SCS - Select G2 character set + * (same character sets as listed under G0) +053 2B + * SCS - Select G3 character set + * (same character sets as listed under G0) +054 2C , SCS - Select G0 character set (additional 63+16 sets) +055 2D - SCS - Select G1 character set (additional 63+16 sets) +056 2E . SCS - Select G2 character set +057 2F / SCS - Select G3 character set + +============================================================================== + Private two-character escape sequences (allowed by ANSI X3.41-1974) + These can be defined differently by each terminal manufacturer. + +Oct Hex * (* marks function used in DEC VT series or LA series terminals) +--- -- - - ------------------------------------------------------------------ +060 30 0 +061 31 1 DECGON graphics on for VT105, DECHTS horiz tab set for LA34/LA120 +062 32 2 DECGOFF graphics off VT105, DECCAHT clear all horz tabs LA34/LA120 +063 33 3 DECVTS - set vertical tab for LA34/LA120 +064 34 4 DECCAVT - clear all vertical tabs for LA34/LA120 +065 35 5 * DECXMT - Host requests that VT132 transmit as if ENTER were pressed +066 36 6 +067 37 7 * DECSC - Save cursor position and character attributes +070 38 8 * DECRC - Restore cursor and attributes to previously saved position +071 39 9 +072 3A : +073 3B ; +074 3C < * DECANSI - Switch from VT52 mode to VT100 mode +075 3D = * DECKPAM - Set keypad to applications mode (ESCape instead of digits) +076 3E > * DECKPNM - Set keypad to numeric mode (digits intead of ESCape seq) +077 3F ? + + DCS Device Control Strings used by DEC terminals (ends with ST) + +Pp = Start ReGIS graphics (VT125, GIGI, VT240, PRO350) +Pq = Start SIXEL graphics (screen dump to LA34, LA100, screen load to VT125) +Pr = SET-UP data for GIGI, $PrVC0$\ disables both visible cursors. +Ps = Reprogram keys on the GIGI, $P0sDIR<CR>$\ makes keypad 0 send "DIR<CR>" + 0-9=digits on keypad, 10=ENTER, 11=minus, 12=comma, 13=period, + 14-17=PF1-PF4, 18-21=cursor keys. Enabled by $[?23h (PK1). +Pt = Start VT105 graphics on a VT125 + +============================================================================== + + Standard two-character escape sequences (defined by ANSI X3.64-1979) + +100 40 @ See description of C1 control characters + An ESCape followed by one of these uppercase characters is translated + to an 8-bit C1 control character before being interpreted. +220 90 P DCS - Device Control String, terminated by ST - see table above. +133 5B [ CSI - Control Sequence Introducer - see table below. +137 5F _ See description of C1 control characters + +============================================================================== + + Indepenent control functions (from Appendix E of X3.64-1977). + These four controls have the same meaning regardless of the current + definition of the C0 and C1 control sets. Each control is a two-character + ESCape sequence, the 2nd character is lowercase. + +Oct Hex * (* marks function used in DEC VT series or LA series terminals) +--- -- - - -------------------------------------------------------------------- +140 60 ` DMI - Disable Manual Input +141 61 a INT - INTerrupt the terminal and do special action +142 62 b EMI - Enable Manual Input +143 63 c * RIS - Reset to Initial State (VT100 does a power-on reset) + ... The remaining lowercase characters are reserved by ANSI. +153 6B k NAPLPS lock-shift G1 to GR +154 6C l NAPLPS lock-shift G2 to GR +155 6D m NAPLPS lock-shift G3 to GR +156 6E n * LS2 - Shift G2 to GL (extension of SI) VT240,NAPLPS +157 6F o * LS3 - Shift G3 to GL (extension of SO) VT240,NAPLPS + ... The remaining lowercase characters are reserved by ANSI. +174 7C | * LS3R - VT240 lock-shift G3 to GR +175 7D } * LS2R - VT240 lock-shift G2 to GR +176 7E ~ * LS1R - VT240 lock-shift G1 to GR + +============================================================================== + Control Sequences (defined by ANSI X3.64-1979) + +Control Sequences are started by either ESC [ or CSI and are terminated by an +"alphabetic" character (100 to 176 octal, 40 to 7E hex). Intermediate +characters are space through slash (40 to 57 octal, 20 to 2F hex) and parameter +characters are zero through question mark (60 to 77 octal, 30 to 3F hex, +including digits and semicolon). Parameters consist of zero or more decimal +numbers separated by semicolons. Leading zeros are optional, leading blanks +are not allowed. If no digits precede the final character, the default +parameter is used. Many functions treat a parameter of 0 as if it were 1. + +Oct Hex * (* marks function used in DEC VT series or LA series terminals) +--- -- - - -------------------------------------------------------------------- +100 40 @ ICH - Insert CHaracter + [10@ = Make room for 10 characters at current position +101 41 A * CUU - CUrsor Up + * [A = Move up one line, stop at top of screen, [9A = move up 9 +102 42 B * CUD - CUrsor Down + * [B = Move down one line, stop at bottom of screen +103 43 C * CUF - CUrsor Forward + * [C = Move forward one position, stop at right edge of screen +104 44 D * CUB - CUrsor Backward + * [D = Same as BackSpace, stop at left edge of screen +105 45 E CNL - Cursor to Next Line + [5E = Move to first position of 5th line down +106 46 F CPL - Cursor to Previous Line + [5F = Move to first position of 5th line previous +107 47 G CHA - Cursor Horizontal position Absolute + [40G = Move to column 40 of current line +110 48 H * CUP - CUrsor Position + * [H = Home, [24;80H = Row 24, Column 80 +111 49 I CHT - Cursor Horizontal Tabulation + [I = Same as HT (Control-I), [3I = Go forward 3 tabs +112 4A J * ED - Erase in Display (cursor does not move) + * [J = [0J = Erase from current position to end (inclusive) + * [1J = Erase from beginning to current position (inclusive) + * [2J = Erase entire display + * [?0J = Selective erase in display ([?1J, [?2J similar) +113 4B K * EL - Erase in Line (cursor does not move) + * [K = [0K = Erase from current position to end (inclusive) + * [1K = Erase from beginning to current position + * [2K = Erase entire current line + * [?0K = Selective erase to end of line ([?1K, [?2K similar) +114 4C L * IL - Insert Line, current line moves down (VT102 series) + [3L = Insert 3 lines if currently in scrolling region +115 4D M * DL - Delete Line, lines below current move up (VT102 series) + [2M = Delete 2 lines if currently in scrolling region +116 4E N EF - Erase in Field (as bounded by protected fields) + [0N, [1N, [2N act like [L but within currend field +117 4F O EA - Erase in qualified Area (defined by DAQ) + [0O, [1O, [2O act like [J but within current area +120 50 P * DCH - Delete Character, from current position to end of field + [4P = Delete 4 characters, VT102 series +121 51 Q SEM - Set Editing extent Mode (limits ICH and DCH) + [0Q = [Q = Insert/delete character affects rest of display + [1Q = ICH/DCH affect the current line only + [2Q = ICH/DCH affect current field (between tab stops) only + [3Q = ICH/DCH affect qualified area (between protected fields) +122 52 R * CPR - Cursor Position Report (from terminal to host) + * [24;80R = Cursor is positioned at line 24 column 80 +123 53 S SU - Scroll up, entire display is moved up, new lines at bottom + [3S = Move everything up 3 lines, bring in 3 new lines +124 54 T SD - Scroll down, new lines inserted at top of screen + [4T = Scroll down 4, bring previous lines back into view +125 55 U NP - Next Page (if terminal has more than 1 page of memory) + [2U = Scroll forward 2 pages +126 56 V PP - Previous Page (if terminal remembers lines scrolled off top) + [1V = Scroll backward 1 page +127 57 W CTC - Cursor Tabulation Control + [0W = Set horizontal tab for current line at current position + [1W = Set vertical tab stop for current line of current page + [2W = Clear horiz tab stop at current position of current line + [3W = Clear vert tab stop at current line of current page + [4W = Clear all horiz tab stops on current line only + [5W = Clear all horiz tab stops for the entire terminal + [6W = Clear all vert tabs stops for the entire terminal +130 58 X ECH - Erase CHaracter + [4X = Change next 4 characters to "erased" state +131 59 Y CVT - Cursor Vertical Tab + [2Y = Move forward to 2nd following vertical tab stop +132 5A Z CBT - Cursor Back Tab + [3Z = Move backwards to 3rd previous horizontal tab stop +133 5B [ Reserved for future standardization left bracket +134 5C \ Reserved reverse slant +135 5D ] Reserved right bracket +136 5E ^ Reserved circumflex +137 5F _ Reserved underscore +140 60 ` * HPA - Horizontal Position Absolute (depends on PUM) + [720` = Move to 720 decipoints (1 inch) from left margin + * [80` = Move to column 80 on LA120 +141 61 a * HPR - Horizontal Position Relative (depends on PUM) + [360a = Move 360 decipoints (1/2 inch) from current position + * [40a = Move 40 columns to right of current position on LA120 +142 62 b REP - REPeat previous displayable character + [80b = Repeat character 80 times +143 63 c * DA - Device Attributes + * [c = Terminal will identify itself + * [?1;2c = Terminal is saying it is a VT100 with AVO + * [>0c = Secondary DA request (distinguishes VT240 from VT220) +144 64 d * VPA - Vertical Position Absolute (depends on PUM) + [90d = Move to 90 decipoints (1/8 inch) from top margin + * [10d = Move to line 10 if before that else line 10 next page +145 65 e * VPR - Vertical Position Relative (depends on PUM) + [720e = Move 720 decipoints (1 inch) down from current position + * [6e = Advance 6 lines forward on LA120 +146 66 f * HVP - Horizontal and Vertical Position (depends on PUM) + [720,1440f = Move to 1 inch down and 2 inches over (decipoints) + * [24;80f = Move to row 24 column 80 if PUM is set to character +147 67 g * TBC - Tabulation Clear + * [0g = Clear horizontal tab stop at current position + * [1g = Clear vertical tab stop at current line (LA120) + * [2g = Clear all horizontal tab stops on current line only LA120 + * [3g = Clear all horizontal tab stops in the terminal +150 68 h * SM - Set Mode (. means permanently set on VT100) + [0h = Error, this command is ignored + * [1h = GATM - Guarded Area Transmit Mode, send all (VT132) + [2h = KAM - Keyboard Action Mode, disable keyboard input + [3h = CRM - Control Representation Mode, show all control chars + * [4h = IRM - Insertion/Replacement Mode, set insert mode (VT102) + [5h = SRTM - Status Report Transfer Mode, report after DCS + * [6h = ERM - ERasure Mode, erase protected and unprotected + [7h = VEM - Vertical Editing Mode, IL/DL affect previous lines + [8h, [9h are reserved + [10h = HEM - Horizontal Editing mode, ICH/DCH/IRM go backwards + [11h = PUM - Positioning Unit Mode, use decipoints for HVP/etc + . [12h = SRM - Send Receive Mode, transmit without local echo + [13h = FEAM - Format Effector Action Mode, FE's are stored + [14h = FETM - Format Effector Transfer Mode, send only if stored + [15h = MATM - Multiple Area Transfer Mode, send all areas + * [16h = TTM - Transmit Termination Mode, send scrolling region + [17h = SATM - Send Area Transmit Mode, send entire buffer + [18h = TSM - Tabulation Stop Mode, lines are independent + [19h = EBM - Editing Boundry Mode, all of memory affected + * [20h = LNM - Linefeed Newline Mode, LF interpreted as CR LF + * [?1h = DECCKM - Cursor Keys Mode, send ESC O A for cursor up + * [?2h = DECANM - ANSI Mode, use ESC < to switch VT52 to ANSI + * [?3h = DECCOLM - COLumn mode, 132 characters per line + * [?4h = DECSCLM - SCrolL Mode, smooth scrolling + * [?5h = DECSCNM - SCreeN Mode, black on white background + * [?6h = DECOM - Origin Mode, line 1 is relative to scroll region + * [?7h = DECAWM - AutoWrap Mode, start newline after column 80 + * [?8h = DECARM - Auto Repeat Mode, key will autorepeat + * [?9h = DECINLM - INterLace Mode, interlaced for taking photos + * [?10h = DECEDM - EDit Mode, VT132 is in EDIT mode + * [?11h = DECLTM - Line Transmit Mode, ignore TTM, send line + [?12h = ? + * [?13h = DECSCFDM - Space Compression/Field Delimiting on, + * [?14h = DECTEM - Transmit Execution Mode, transmit on ENTER + [?15h = ? + * [?16h = DECEKEM - Edit Key Execution Mode, EDIT key is local + [?17h = ? + * [?18h = DECPFF - Print FormFeed mode, send FF after printscreen + * [?19h = DECPEXT - Print Extent mode, print entire screen + * [?20h = OV1 - Overstrike, overlay characters on GIGI + * [?21h = BA1 - Local BASIC, GIGI to keyboard and screen + * [?22h = BA2 - Host BASIC, GIGI to host computer + * [?23h = PK1 - GIGI numeric keypad sends reprogrammable sequences + * [?24h = AH1 - Autohardcopy before erasing or rolling GIGI screen + * [?29h = - Use only the proper pitch for the LA100 font + * [?38h = DECTEK - TEKtronix mode graphics +151 69 i * MC - Media Copy (printer port on VT102) + * [0i = Send contents of text screen to printer + [1i = Fill screen from auxiliary input (printer's keyboard) + [2i = Send screen to secondary output device + [3i = Fill screen from secondary input device + * [4i = Turn on copying received data to primary output (VT125) + * [4i = Received data goes to VT102 screen, not to its printer + * [5i = Turn off copying received data to primary output (VT125) + * [5i = Received data goes to VT102's printer, not its screen + * [6i = Turn off copying received data to secondary output (VT125) + * [7i = Turn on copying received data to secondary output (VT125) + * [?0i = Graphics screen dump goes to graphics printer VT125,VT240 + * [?1i = Print cursor line, terminated by CR LF + * [?2i = Graphics screen dump goes to host computer VT125,VT240 + * [?4i = Disable auto print + * [?5i = Auto print, send a line at a time when linefeed received +152 6A j Reserved for future standardization +153 6B k Reserved for future standardization +154 6C l * RM - Reset Mode (. means permanently reset on VT100) + * [1l = GATM - Transmit only unprotected characters (VT132) + . [2l = KAM - Enable input from keyboard + . [3l = CRM - Control characters are not displayable characters + * [4l = IRM - Reset to replacement mode (VT102) + . [5l = SRTM - Report only on command (DSR) + * [6l = ERM - Erase only unprotected fields + . [7l = VEM - IL/DL affect lines after current line + [8l, [9l are reserved + . [10l = HEM - ICH and IRM shove characters forward, DCH pulls + . [11l = PUM - Use character positions for HPA/HPR/VPA/VPR/HVP + [12l = SRM - Local echo - input from keyboard sent to screen + . [13l = FEAM - HPA/VPA/SGR/etc are acted upon when received + . [14l = FETM - Format Effectors are sent to the printer + [15l = MATM - Send only current area if SATM is reset + * [16l = TTM - Transmit partial page, up to cursor position + [17l = SATM - Transmit areas bounded by SSA/ESA/DAQ + . [18l = TSM - Setting a tab stop on one line affects all lines + . [19l = EBM - Insert does not overflow to next page + * [20l = LNM - Linefeed does not change horizontal position + * [?1l = DECCKM - Cursor keys send ANSI cursor position commands + * [?2l = DECANM - Use VT52 emulation instead of ANSI mode + * [?3l = DECCOLM - 80 characters per line (erases screen) + * [?4l = DECSCLM - Jump scrolling + * [?5l = DECSCNM - Normal screen (white on black background) + * [?6l = DECOM - Line numbers are independent of scrolling region + * [?7l = DECAWM - Cursor remains at end of line after column 80 + * [?8l = DECARM - Keys do not repeat when held down + * [?9l = DECINLM - Display is not interlaced to avoid flicker + * [?10l = DECEDM - VT132 transmits all key presses + * [?11l = DECLTM - Send page or partial page depending on TTM + [?12l = ? + * [?13l = DECSCFDM - Don't suppress trailing spaces on transmit + * [?14l = DECTEM - ENTER sends ESC S (STS) a request to send + [?15l = ? + * [?16l = DECEKEM - EDIT key transmits either $[10h or $[10l + [?17l = ? + * [?18l = DECPFF - Don't send a formfeed after printing screen + * [?19l = DECPEXT - Print only the lines within the scroll region + * [?20l = OV0 - Space is destructive, replace not overstrike, GIGI + * [?21l = BA0 - No BASIC, GIGI is On-Line or Local + * [?22l = BA0 - No BASIC, GIGI is On-Line or Local + * [?23l = PK0 - Ignore reprogramming on GIGI keypad and cursors + * [?24l = AH0 - No auto-hardcopy when GIGI screen erased + * [?29l = Allow all character pitches on the LA100 + * [?38l = DECTEK - Ignore TEKtronix graphics commands +155 6D m * SGR - Set Graphics Rendition (affects character attributes) + * [0m = Clear all special attributes + * [1m = Bold or increased intensity + * [2m = Dim or secondary color on GIGI (superscript on XXXXXX) + [3m = Italic (subscript on XXXXXX) + * [4m = Underscore, [0;4m = Clear, then set underline only + * [5m = Slow blink + [6m = Fast blink (overscore on XXXXXX) + * [7m = Negative image, [0;1;7m = Bold + Inverse + [8m = Concealed (do not display character echoed locally) + [9m = Reserved for future standardization + * [10m = Select primary font (LA100) + * [11m - [19m = Selete alternate font (LA100 has 11 thru 14) + [20m = FRAKTUR (whatever that means) + * [22m = Cancel bold or dim attribute only (VT220) + * [24m = Cancel underline attribute only (VT220) + * [25m = Cancel fast or slow blink attribute only (VT220) + * [27m = Cancel negative image attribute only (VT220) + * [30m = Write with black, [40m = Set background to black (GIGI) + * [31m = Write with red, [41m = Set background to red + * [32m = Write with green, [42m = Set background to green + * [33m = Write with yellow, [43m = Set background to yellow + * [34m = Write with blue, [44m = Set background to blue + * [35m = Write with magenta, [45m = Set background to magenta + * [36m = Write with cyan, [46m = Set background to cyan + * [37m = Write with white, [47m = Set background to white + [38m, [39m, [48m, [49m are reserved +156 6E n * DSR - Device Status Report + * [0n = Terminal is ready, no malfunctions detected + [1n = Terminal is busy, retry later + [2n = Terminal is busy, it will send DSR when ready + * [3n = Malfunction, please try again + [4n = Malfunction, terminal will send DSR when ready + * [5n = Command to terminal to report its status + * [6n = Command to terminal requesting cursor position (CPR) + * [?15n = Command to terminal requesting printer status, returns + [?10n = OK, [?11n = not OK, [?13n = no printer. + * [?25n = "Are User Defined Keys Locked?" (VT220) +157 6F o DAQ - Define Area Qualification starting at current position + [0o = Accept all input, transmit on request + [1o = Protected and guarded, accept no input, do not transmit + [2o = Accept any printing character in this field + [3o = Numeric only field + [4o = Alphabetic (A-Z and a-z) only + [5o = Right justify in area + [3;6o = Zero fill in area + [7o = Set horizontal tab stop, this is the start of the field + [8o = Protected and unguarded, accept no input, do transmit + [9o = Space fill in area + +============================================================================== + + Private Control Sequences (allowed by ANSI X3.41-1974). + These take parameter strings and terminate with the last half of lowercase. + +Oct Hex * (* marks function used in DEC VT series or LA series terminals) +--- -- - - -------------------------------------------------------------------- +160 70 p * DECSTR - Soft Terminal Reset + [!p = Soft Terminal Reset +161 71 q * DECLL - Load LEDs + [0q = Turn off all, [?1;4q turns on L1 and L4, etc |