[comp.terminals] Wyse-50 Escape Codes, Other Info

patrick@chinet.chi.il.us (Patrick A. Townson) (06/24/89)

I've had a few letters from people asking for information on the Wyse 50 
Escape Codes, but some of them did not tell me where to mail a copy of the
book, so I decided to post the most common codes here, plus some other
information. If you want a copy of the "Wyse 50 Quick Reference Guide"
send a note to me as follows --

Patrick Townson
60690-1570       If you want to include a couple postage stamps or something,
                 that will be fine. You will get back about a dozen xeroxed
                 pages. This includes the two or three people who did supply
                 me an address, since I seem to have lost them somehow.

All these begin with ESCAPE, then immediatly press the next key, as listed
below --

(space) Reports terminal ID to host. Sends '50 CR'

!  Writes all unprotected character positions with a specified attribute
   code. This has a format of:  ESC ! ATTR  where ATTR is the desired
   attribute code. (See later in this message for these).

"  Unlocks the keyboard. Has to be sent by the host, since keyboard is
   locked, obviously. You can unlock the keyboard from your end by
   pressing the SET UP key.

#  Locks the keyboard.

&  Turns the protect submode on, and prevents auto-scroll operation.

'  Turns the protect submode off, and allows auto-scroll operation.

(  Turns the write-protect submode off.

)  Turns the write-protect submode on.

*  Clears the screen to nulls.

+  Clears the screen to spaces.

,  Clears the screen to protected spaces. The protect sub-mode turns off.

-  Moves the cursor to a specified text segment. This s a multiple code
   sequence of:  ESC - nrc, where
      n = the text segment number, 0 or 1
      r = the row code
      c = the column code  (Row and column codes explained later).

.  Clears all unprotected charcter positions with a specified character
   code. This has a format of  ESC . CODE , where CODE = Ascii value.

/  Transmits the active text segment number and cursor address to host.

0  Clear all tab settings.

1  Set a tab stop on the line and at the column where the cursor is now.

2  Clear the tab stop at the place where the cursor is now.

4  Send all unprotected characters from start-of-row to host.

5  Send all unprotected characters from start-of-text to host.

6  Send all characters, protected or not from start-of-row to host.

7  Send all characters, protected or not from start-of-text to host.

8  Enter a start-of-message character (STX)

9  Enter an end-of-message character (ETX)

:  Clear all unprotected characters to nulls.

;  Clear all unprotected characters to spaces.

=  Move cursor to a specified row and column on 80 column screen. This
   has a format of:  ESC = rc where r and c are the row and column.
   (Row and column codes explained later).

?  Transmits the cursor address for the active text segment of an 80
   column screen only to the host. The format is:  rc  CR  where r and c
   are the row and column codes.

@  Send all unprotected characters from the start-of-text to the auxiliary
   port. Each row is terminated with  CR LF NULL

A  Sets a video attribute for a specific message field or the entire
   application display area. The format is:  ESC A n ATTR  where n is the
   field code and ATTR is the attribute. (Attributes described later). 

B  Places the terminal in block mode.

C  Places the terminal in conversation mode. 

D  Selects full duplex or half duplex conversation modes. The format for
   this is: ESC D x  where x = F for full duplex or H for half duplex.

E  Inserts a row of spaces from cursor to end of line.

F  Enters a message in the host message field. The format for this is:
   ESC F aaaa CR, where aaaa is a character string of up to 46 characters
   in 80 column mode or 100 characters in the 132 column mode.

G  Sets a video attribute within the application display area. The attribute
   occupies a space. The format for this is: ESC G ATTR where ATTR is the
   desired attriute.

H  Enters a graphic character at the cursor location. The format for this
   is: ESC H x where x is the graphic character code. (Explained later).

I  Move the cursor left to the previous tab stop.

J  Activates the alternate text segment, or window. 

K  Also activates the alternate text segment, or window.

L  Send all characters unformatted to the auxiliary port. Attribute codes
   are sent as spaces. Row-end sequences are not sent.

M  The terminal will send the character at the cursor position to the host.

N  Turns the no-scroll submode on.

O  Turns the no-scroll submode off.

P  Send all characters, protected or unprotected to the auxiliary port,
   regardless of the mode setting.

Q  Insert a character where the cusor is now. Hit ESC Q, then the character.
   You will see a message at the top saying  'INSERT MODE'

R  Delete the row from the cursor to the end of the row.

S  Send a message to the host, unprotected.

T  Erase all characters on the screen.

U  Turns the monitor submode on.

V  Sets a protected column.

W  Delete the character where the cursor is now.   Slide everything to
   the left by one column.

X  Turns the monitor submode off.

Y  Erase all characters from the cursor to the end of the active text
   segment, or window, and replace them with spaces.

]  Activate text segment, or window 0.

`  Set the screen features. The format for this is: ESC ` n  where n is
   the screen feature code. (Described later).

a  Same as ESC = to move cursor to specified row and column.

b  Transmit the cursor address to the host for the  current window. Much
   the same as ESC ?

   Note: Both ESC a and ESC b use a different format, and can be used for
   132 column screen as well as 80 column, unlike ESC ?.
   The format for both is:

   ESC a rr R ccc C   (or ESC b rr R ccc C)

   rr = the ASCII encoded decimal value of the row.
   R  = the actual letter 'R' for row.
   ccc= the ASCII encoded decimal value of the column.
   C  = the actual letter 'C' for column.

i  Move the cursor to the next tab stop to the right. 

j  Move the cursor up one row, and causes scrol to begin at top row.

k  Turns local edit submode on.

l  (lower case L) Turns duplex edit submode on.

p  Same as ESC L, sending all characters unformatted to auxiliary port.

q  Turns insert submode on.

r  Turns insert submode off.

s  Sends a message to host.  (Note: ESC S sends message to host unprotected)

t  Same as ESC T, by erasing to end of row, but replaces with nulls.

u  Same as ESC X. Turns monitor submode off.

x  Change screen display format for one window or two. The format is:
   ESC x 0 for a full screen 24 rows by (80 or 132) columns.
   ESC x 1 HSR for a horizontal split screen. HSR is the row code for
   the row number 2 to 24 on which the lower text segment, or bottom
   window starts. 

   ESC ] then activates top segement or window.
   ESC } then activates lower segment or window. 
   ESC { moves the cursor to the home position of whatever window is
   current. If in full screen mode, then ESC { goes to traditional
   home position.

y  Much like ESC Y, except after erasing from cursor to end of active
   window or text segment, replace them with nulls. (ESC Y gives spaces).

z  Enters a message into a selected function key label field or programs
   a user-defined sequence for a function key. There is a maximum of
   eight label fields, shiftable to 16 for an 80 column screen; and a
   maximum of 16 label fields, shiftable to 32 for a 132 column screen.
   In either case, this is the very bottom line, or 'status line' on
   the screen, sometimes known as line 25. 

   The message format is:
   ESC z n aaaa CR  where n is the field code and aaaa is a 7 character
   string.
   ESC z n CR clears a particular function key label field. 
   ESC z DEL turns off the shifted function key labeling line.

   The function key prograqm format is:
   ESC z value SEQ DEL where value = the default value code and SEQ =
   the program sequence up to eight bytes. However there is a maximum
   of 256 bytes to be shared by all function keys; how you partition
   it (max 8 per key) is up to you.

SCREEN FEATURE CODES:

Send ESC ` n to set an option for a screen feature per the table below:

0 Cursor display off             8 Screen display off 
1 Cursor display on  *           9 Screen display on  *
2 Steady block cursor            : 80 column screen  *
3 Blinking underline cursor      < Smooth scroll @ 1 row per second
4 Steady underline cursor        = Smooth scroll @ 2 rows per second
5 Blinking block cursor  *       > Smooth scrool @ 4 rows per second
A Normal protect character       ? Smooth scroll @ 8 rows per second
6 Reverse protect character      @ Jump scroll   *
7 Dim protect character  *

* indicates default, power up settings unless changed via the set up screen.

Note: When switching from an 80 to a 132 column screen or vice versa, a 
delay of 100 milliseconds is required, to avoid loss of data. Blank the
shifted and unshifted function key labeling lines when making the change,
then re-establish them. After the change, you must move the cursor to 
the desired location.

CURSOR ADDRESSING CODES

Both the row and the column are addressed by ASCII characters. The offset
is 31 characters *above* the desired value.

For example, row 1 is known as the <space> key, which is ASCII 32.
             row 2 is known as the ! key, which is ASC 33.
             row 3 is known as the " key, which is ASC 34.....

and so forth.....up to row 24, known as '7', which is ASC 56

The columns are known the same way, beginning with ASC 32 (space)
and continuing for 79 more columns, through ASC 112, which is an 'o'.

To get an address for 132 columns requires a different approach, and
one that will work as an alternate for 80 columns as well --

Instead of ESC = followed by the offsetting ASCII symbols above, we can
use ESC a, followed by the *actual ASCII encoded decimal value relative
to home, one or two digits, followed by R, then one, two or three digits
followed by C.

Examples: ESC a 1 R 1 C would position the cursor at true home.
          ESC a 10 R 10 C would position the cursor at row ten, column ten.
          ESC a 24 R 132 C would put the cursor in the lower right corner.

DISPLAY ATTRIBUTES

An attribute is written into the current cursor location and occupies a
space. 

Send ESC A n ATTR to set the display attribute for a message field, and
send ESC G ATTR to set a display attribute for individual data. 

n = 
0 Application Display Area         1 Function Key Labeling Line
2 Local Message Field              3 Host Mesage Field

"Application display" is the main body of the screen.
"Function Key Line" is line 25 at the bottom, entire line.
"Local Message Field" is line 0 at the top, the leftmost 30 characters.
"Host Message Field" is line 0 at the top, the rightmost 50/102 characters.

Attributes Table:

(space) Space code  (Hex 20, decimal 32)
0  Normal
1  Blank (no display)
2  Blink
3  Blank
4  Reverse
5  Reverse and blank
6  Reverse and blink
7  Reverse, blink and blank
8  Underscore
9  Underscore and blank
:  Underscore and blink
;  Underscore, blink and blank
<  Underscore and reverse
=  Underscore, reverse and blank
>  Underscore, reverse and blink
?  Underscore, reverse, blink and blank
p  Dim
q  Dim and blank
r  Dim and blink
s  Dim, blank and blink
t  Dim and reverse
u  Dim, reverse and blank
v  Dim, reverse and blink
w  Dim, reverse, blink and blank
x  Dim and underscore
y  Dim, underscore and blank
z  Dim, underscore, and blink
{  Dim, underscore, blink and blank
|  Dim, underscore and reverse
}  Dim, underscore, reverse and blank
~  Dim, underscore, reverse and blink

CONTROL CODES

Press control with desired key using table below:

@, A,B,C,D   No action
E  Returns ACK if not busy
F  No action
G  Sounds the beeper (displays 'visual bell' if that function is turned on)
H  Backspaces the cursor (same as BACK SPACE)  Left arrow does not erase
I  Tabs the cursor (same as TAB)
J  Moves the cursor down     (The up/down/left/right arrows move the cursor 
K  Moves the cursor up        also, but without erasing or spacing or 
L  Moves the cursor right     causing line feeds and carriage returns)
     Note: YOU use the arrow keys. Host sends control codes to
     accomplish the same thing. Backspace and return are not the same
     thing. They cause erasure and new lines, etc. The arrows do not.

M  Moves the cursor to the far left position on the row. (Same as RETURN)

     Note: Whether the RETURN key sends only CR or sends LF/CR is
     detirmined by the configuration in the set up window.
     The 'enter' key on the numeric keypad *generally* functions like
     'return' but there are some exceptions to this.

N  Unlock the keyboard. Must be sent by host. Can't do it from keyboard.
O  Locks the keyboard.
P  No action.
Q  Enables the transmitter; restarts flow (XON, etc) after a Control S.
R  Turns on Auxiliary Print; data displays.
S  Stops transmission to host.  Restart with Control Q
T  Turn off Auxiliary Print.
U,V,W,X,Y  No action
Z  Clears all unprotected characters to spaces. (Like Control L in some
   places, clears screen, homes cursor).
{ or [  Initiates an ESCAPE sequence. Host uses this to start them. You
   could simply use the ESC key.
} or ]  No action.
| or \  No action.
^ or ~  Move the cursor to home position.
_ or DEL  Move the cursor down one row to the far left position. Do not
   actually do a LF/CR, just put the cursor there. 

Notes:

The cursor movement applies only to the active text segment or window.
If the protect submode is on, the cursor skips over/around those characters.
Except when the no scroll submode is on, if the cursor movement would
result in the cursor leaving the active text segment, or window, then the
text automatically scrolls up.


GRAPHIC CHARACTERS

Send ESC H x to display a graphic character. There are fifteen such
characters, impossible to duplicate reliably in this message. The 'x'
is a single digit from 0 through 9, or one of these other keys:

    0,1,2,3,4,5,6,7,8,9   or : ; < = > ?

That will put a graphics character where the cursor is located. The
ESC H x takes up a space. Outputting to the printer will produce
unpredictable results where the graphics characters are concerned.


MISCELLANEOUS NOTES

I have only typed in that part of the manual which deals with the WYSE 50
mode. There are many other pages of entries for the ADDS-VP, TVI 910-920-925
modes, and Hazeltine 1500 modes. Many of the above escape sequences are
common to all these modes, but there are some other codes unique to the
particular mode.

Enter shift and 'set up' to get the setup window. Hitting 'set up' without
the shift will usually unlock the terminal if it gets locked by accident.

"Break" sends a break; but shift/break causes terminal to switch from
conversation to block mode, or reverse.

The 'print/send' key transmits out the Auxiliary port. 'Print' sends only
the current screen window to the printer, then turns itself off. 'Send'
starts feeding the auxiliary port and continues to do so until Control T
is entered to close the auxiliary port.

If you are operating in two window mode (per above ESC sequence for same)
then the PAGE key flips between text segments. 

Finally:  shift/spacebar turns the key clicker on or off. At least it is
supposed to. 

Control/shift/1  turns on monitor mode also. In monitor mode, control
characters are printed on the screen rather than being acted on.

The '1' is the digit by that name on the *keypad* -- not the main keyboard.

============================================

I hope this basic outline of the terminal will help WYSE 50 owners without
manuals figure out what to do.  I will xerox the whole book if you give
me a good reason to: i.e. postage to mail it back to you, etc.



     
-- 
Patrick Townson 
  patrick@chinet.chi.il.us / ptownson@bu-cs.bu.edu / US Mail: 60690-1570 
  FIDO: 115/743 / AT&T Mail: 529-6378 (!ptownson) /  MCI Mail: 222-4956