CHAPTER 13 TERMINAL EMULATION Large computer systems are often accessed by users through individual terminals. This lets several users share the system. If you want to use your computer to access the system, you would have to emulate the characteristics of the particular terminal used. This program will let your system emulate any one of several common intelligent terminals. With this emulation feature, you can use your system as a directly-connected terminal or, with a modem, as a remote terminal. Most terminals produce special video functions when certain control codes are sent from the host computer to the terminal. The computer sends a control code or sequence of codes to the terminal when it wants the terminal to execute a special video function. Some of the special video functions include erasing portions of the screen, moving the cursor to another screen location, or scrolling the display up or down. With suitable emulation, your system will generate video functions which are identical to those generated by the terminal when the same control codes are received. This allows your system to become an equivalent replacement for the terminal. Many terminals have special function keys which will send special codes to the computer. Since the Apple keyboard does not have the function keys, the terminal emulation will not be a complete emulation. However, the programmable function keys supported by this program can be used to provide emulation of up to nine function keys. For most tasks, nine keys are adequate. For DEC VT220, VT102, or VT100 emulation, skip to the section on VT220/VT100 EMULATION. For emulation of other terminals, the following steps are required: 1) The desired emulation file must be loaded. 2) Emulation must be enabled. You can load the desired emulation file by using the N command in the terminal mode. The program will ask you for the name of the emulation file. All emulation files have the suffix ". EMU". Enter the first part of the file name excluding the ". EMU" suffix. All DOS 3.3 emulation files must be on the work disk. If you always use the same emulation file, you can have that file automatically loaded whenever you boot MODEM MGR by naming the emulation file DEFAULT.EMU and placing the file on your work disk. You can enable or disable emulation by using the E command in the terminal comm and mode. When you enable emulation, a xxxx EMULATION message will be displayed, where xxxx refers to the type of emulation . When you disable emulation, a NO EMULATION message will be displayed. You can check the emulation status by using the L command in the terminal command mode. The status displayed will show whether emulation is ON (enabled) or OFF (disabled). This program provides emulation disk files for some popular terminals. To use any one of the DOS 3.3 emulation files, you must move the desired file to your work disk. There is also a program called MAKE. EMULATION on the utility disk which will allow you to generate your own emulation file or customize an existing file. Terminals which use a single control character or a lead-in control character followed by a displayable character can be emulated. The only control sequence longer than two characters that can be emulated is the GOTOXY sequence which commonly uses four characters. Terminals which make frequent use of sequences longer than two characters cannot be emulated by this program. For VT220/VT100 terminals, see the last part of this chapter. MAKING YOUR OWN EMULATION FILE If this software package does not include an emulation file for the terminal you wish to emulate, you can prepare your own emulation file by using the MAKE.EMULATION program on the utility disk. This program lets you match the control codes of the terminal with the associated video functions on your system. You can also define certain characteristics which are associated with the terminal. You can execute the MAKE.EMULATION program with 40-or 80-column video. Execute this program by entering RUN MAKE.EMULATION. Be sure to use the utility disk with the same operating system (DOS 3.3 or ProD OS) you are using. When you execute this program, the menu shown below will be displayed. This menu provides five commands which are described below. If you wish to return at any time to this command menu, press the [ESC] key. [ESC] to return to this menu 1) Load Emulation File 2) Control Character Functions 3) Clear Functions 4) Save Emulation File 5) Quit Enter (1-5) --> Emulation Menu LOAD EMULATION FILE This command lets you load an existing emulation file. When you execute this command, the program will ask you to insert the disk with the emulation file and enter the filename or full pathname. Do not enter the ". EMU" suffix which is part of all emulation file names. This program will not accept commas in disk file names, so you cannot use the D# and S# options. While the file is being loaded, you will see a "Loading file" message. CONTROL CHARACTER FUNCTIONS This command lets you define the control codes and defaults for the various video functions. There are three video function menus which can be toggled by pressing the [0] key followed by [RETURN]. The function s displayed in the three menus are listed below. 1) Clear screen: 2) Home: 3) Clear to end of screen: 4) Clear to end of line: 5) Cursor down: 6) Cursor up: 7) Cursor forward: 8) Cursor left: 9) Tab: 10) Reverse LF: 11) Send ID (Answerback): 12) Read screen: 13) Send cursor position: 14) Newline: 15) CR: 16) LF: 17) Roll enable: 18) Roll disable: 19) Hilight: 20) Lowlight: 21) Inverse: 22) Normal: 23) Bell: 24) GOTOXY: 25) GOTOXY offset: 26) GOTOXY order: 27) Lead-in char: 28) Tab spacing: 29) Vertical wrap: 30) Horizontal wrap: 31) Display wrap: 32) Scroll: 33) Emulation name: 34) Send cursor lead-in: 35) Send cursor offset: 36) Send cursor order: 37) ID (Answerback): Although this is a long list, many of the functions are not used by most terminals being emulated. To generate an emulation file for a particular terminal, you must determine which control code the terminal uses for a given video function. Assign that same control code to the corresponding video function in your system. Repeat this for all of the video functions supported by the terminal. The instruction manual for the terminal usually lists the control codes for all video functions. Some control codes consist of a single control character, while other codes may require a sequence of several characters. Often the sequence is preceded by a character called the lead-in character. To assign a control code to a video function in your system, toggle between the three menus until the desired video function is shown. Enter the associated menu number to select that function (followed by [RETURN]) and enter the control code for that function (followed by [RETURN]). For example, let us define a lead-in character. Toggle through the three menus until you see the menu which lists "27) Lead-in char:". You may see a hexadecimal control code number already assigned to this function . Enter 27 which is the menu number for this function followed by [RETURN]. You will see the current control code value (if any) displayed again and the following prompt: Enter new value --> S The "$" means the control code entered must be entered as a hexadecimal number. Suppose the terminal we want to emulate uses an escape character (ascii $1B) as the lead-in character. Enter 1B (followed by [RETURN]) to assign the new value. If you make a mistake while entering the value, use the backspace key and correct the mistake before entering [RETURN]. Check the menu again and verify the value $1B has been assigned as the lead-in character. Let us now define a character to clear the screen. Toggle through the three menus until you see the entry "1) Clear screen:". Suppose we want to enter a control code value of $0C for this function. Enter 1 followed by [RETURN] and enter 0C (or just C alone) followed by [RETURN]. This will assign a $0C control code to the clear-screen function. If a function requires a control sequence preceded by the lead-in character, enter an asterisk (*) first before the hexadecimal ascii number. The asterisk will represent the lead-in character. For example, suppose we are trying to emulate a terminal which responds to the escape lead-in character followed by the letter v (ascii hexadecimal $76) to clear the screen. Remember we have already defined escape (ascii $1B) as the lead-in character. Enter 1 to define the clear-screen function and enter *76 as the control sequence. The screen prompt will automatically insert a "$" character after the "*" so the above entry will appear as *$76 on your video screen. If you make a mistake, use the backspace key and correct the mistake before entering [RETURN]. You may enter more than one control code or lead-in sequence for any video function. For example, the clear-screen video function can be assigned the 2value $0C as well as the lead-in sequence of escape followed by the letter v. This allows several control codes to generate the same video function. All of the control codes assigned to a given video function will appear on the menu. However, you can use any particular control character only once for a video function. A given control code must generate one and only one video function. If you re-assign a specified control code for one video function to another video function, this program will automatically remove it from assignment to the previous video function. For example, if you had assigned the control code $0C to the clear-screen function and you re-assign it to the home function, this program will remove it from the clear-screen function. You can delete a control character by entering an X (followed by [RETURN]). The following prompt will be displayed: Enter hex value to delete --> $ Enter the hexadecimal ascii value of the control code to be deleted. Do not enter the menu number of the associated video function. If a lead-in sequence is being deleted, enter an asterisk (*) followed by the hexadecimal value of the following character. For example, if the control code sequence of escape followed by the letter v is assigned to the clear-screen function (menu number 1), enter X to delete, and then enter *76. Do not enter 1, which is the menu number assigned to the clear-screen function, or you will delete the control code $01 (if it is assigned to a function). CLEAR FUNCTIONS This command will remove most of the control codes presently assigned to video functions. This command is usually used before creating a new emulation file to clear out most of the existing codes. The following common control code default assignments will remain as defaults: Cursor Left $08 LF $OA CR $0D The clear command will also establish the following default values for emulation: Vertical wrap OFF Horizontal wrap OFF Display wrap ON Scroll ON Emulation name "No" When you execute this command, you will see a "Functions cleared" message and a "Press any key" message. Press any key to return to the main menu. SAVE EMULATION FILE This command lets you save the emulation file you have created or edited. When you execute this command, this program will ask you to insert your work disk and enter the filename or full pathname. A suffix of ". EMU" will automatically be appended to the file name you specify. Do not enter the ".EMU" suffix. While the file is being saved, this program will display a "Saving Emulation file" message. After the file has been saved to disk, a "Press any key" message will be displa yed. Press any key to return to the main menu. QUIT This command will let you quit the MAKE. EMULATION program. This program will prompt you to verify that you want to quit. Enter Y (for Yes) if you want to quit and enter N (for No) if you don't want to quit. If you are using ProDOS, you will be returned to BASIC when you quit. DESCRIPTION OF VIDEO FUNCTIONS Each of the video functions which can be emulated by this program are described below. Most terminals will have just a few of these functions. Any unused functions can be made inoperative by removing any control codes associated with it. (Assigning the value $00 to a function will not make it inoperative.) 1) CLEAR SCREEN This video function will clear (erase) the entire video screen and place the cursor at the top left corner. In the split-screen mode, only the upper screen will be cleared. If the clock display is enabled, the time display will remain on the screen. 2) HOME This function will place the cursor at the top left corner of the screen (first column of first line). 3) CLEAR TO END OF SCREEN This function will clear (erase) everything from the current cursor location to the end of the screen. The cursor will remain in its current position. In the split-screen mode, the bottom screen will not be erased. If the clock display is enabled, the time display will remain on the screen. 4) CLEAR TO END OF LINE This function will clear everything from the current cursor location to the en d of the line. The cursor will remain in its current position. 5) CURSOR DOWN This function will move the cursor down one line. The cursor will remain in the same column. If the cursor is on the bottom line and vertical wrap is off, the cursor will remain in the same position. If the cursor is on the bottom line and vertical wrap is on, the cursor will move to the same column of the top line. Do not confuse this function with the line feed (LF) function which is slightly different. For most terminal emulations, the cursor down function is not used. Instead, the LF function is used by assigning it a value (usually $0A). 6) CURSOR UP This function will move the cursor up one line. The cursor will remain in the same column. If the cursor is on the top line and vertical wrap is on, the cursor will move to the bottom line. If the cursor is on the top line and vertical wrap is off, the cursor will remain on the top line. 7) CURSOR FORWARD This function will move the cursor one character position to the right. If the cursor is in the extreme right column and horizontal wrap is off, the cursor will remain where it is. If the cursor is in the extreme right column and horizontal wrap is on, a newline function (described in function 14) will occur. 8) CURSOR LEFT This function will move the cursor one character position to the left. If the cursor is in the extreme left column and horizontal wrap is off, the cursor will remain where it is. If the cursor is in the extreme left column and horizontal wrap is on, the cursor will move to the extreme right column of the next upper line. If the cursor is in the first column of the top line and horizontal wrap is on, the cursor will move to the last column of the bottom line. 9) TAB This function will move the cursor to the next tab setting. If there are no further tab settings on the line, the cursor will move to the last column in the line. You can set the tab spacing by using function 28. 10) REVERSE LF The reverse LF function will move the cursor up one line in the same column. Th is function is similar to the cursor-up function with a slight difference. If the cursor is on the top line and screen roll is enabled, the screen will scroll down one line and the cursor position will be on the new cleared top line. If the cursor is on the top line and screen roll is disabled, the cursor will remain in the same position and there will be no scrolling. 11) SEND ID This function will send a terminal ID or answerback string which has been defined by function 37. 12) READ SCREEN This function will transmit the character which appears on the screen at the current cursor position. 13) SEND CURSOR POSITION This function will transmit the current position of the cursor. A lead-in (defined by function 34) will be sent first and the format of the position coordinates are defined by functions 35 and 36. 14) NEWLINE The newline function will move the cursor to the first column of the next lower line. If the cursor is on the bottom line and screen roll is enabled, the screen will scroll up one line, and the cursor will move to the first column of the new cleared bottom line. If the cursor is on the bottom line and screen roll is disabled, the cursor will move to the first column of the top line. 15) CR The CR (carriage return) function will move the cursor to the first column of the present line. This is usually assigned the control code $0D. 16) LF The LF (line feed) function will move the cursor down one line. The cursor will remain in the same column. If the cursor is on the bottom line and screen roll is enabled, the screen will scroll up one line, and the cursor will be on the new cleared bottom line. If the cursor is on the bottom line and screen roll is disabled, the cursor will move to the same column of the top line. This function is usually assigned the control code $0A. 17) ROLL ENABLE This function enables the scrolling of the screen. When screen roll is enabled, the screen will scroll when a LF, newline, reverse LF, or cursor-forward command tends to move the cursor outside of the current screen. 18) ROLL DISABLE This function disables the scrolling of the screen. When screen roll is disabled, the screen will never scroll up or down. Refer to the individual cursor position function descriptions to determine the cursor limits when roll is disabled. 19) HILIGHT If your video card allows hilight (bright) characters, this function will enable hilighting of all subsequent received characters. 20) LOLIGHT If your video card allows lolight (dim) characters, this function will enable lolighting of all subsequent received characters. 21) INVERSE If your video card allows inverse characters, this function will enable the inverse display of all subsequent received characters. 22) NORMAL If your video card allows normal characters, this function will enable the normal display of all subsequent received characters. 23) BELL This function will beep your speaker. It is usually assigned the control code $ 07. 24) GOTOXY This function will direct your cursor to a specified row and column on your video display. The format of the command codes are described in functions 25 and 26. The following video functions are user-defined values or settings and are not affected by any received control codes, unless otherwise stated. Once set, the values assigned to these functions remain unchanged. 25) GOTOXY OFFSET This value is the numerical offset between the GOTOXY row and column coordinates and the actual coordinates. This numerical value is subtracted from the row and column coordinates received to determine the actual row and column where the cursor will be placed. For example, if the offset is hexadecimal $20 and the row coordinate is $20 and the column coordinate is $21, the cursor will be placed in row 0, column 1. The offset can be set anywhere from $00 to $FF hexadecimal. 26) GOTOXY ORDER This function defines whether the GOTOXY row coordinate appears before the column coordinate, or vice versa. If the terminal being emulated expects to receive the column coordinate before the row coordinate, use XY as the GOTOXY order. If the row coordinate is sent before the column coordinate, use YX. 27) LEAD-IN CHARACTER This defines the lead-in character. If the terminal being emulated uses a lead-in character for some of the control code sequences, the ascii hexadecimal value of that lead-in character should be entered here. The value can be in the range of $00 through $1F. 28) TAB SPACING This function defines the spacing between tabs. A hexadecimal value of $00 through $FF can be entered. For example, if $08 is entered, the tabs will be set at every eight columns. 29) VERTICAL WRAP This function enables or disables the screen vertical wrap-around. When vertical wrap is on, the cursor will wrap around between the top and bottom lines whenever a cursor-down or cursor-up command tends to move the cursor off-screen. When vertical wrap is off, the cursor will never be wrapped on a cursor-down or cursor-up command. 30) HORIZONTAL WRAP This function will enable or disable line wrap-around caused by a cursor move. When horizontal wrap is on, the cursor will wrap around to the next line whenever a cursor-forward or cursor-left command tends to move the cursor past the left or right margin. When horizontal wrap is off, the cursor will never wrap around to the next line on a cursor-forward or cursor-left command. 31) DISPLAY WRAP This function enables or disables display wrap-around caused by display of a long line. When display wrap is on, any long line of characters which would normally extend beyond the right margin will be wrapped around to the next lower line so all characters are displayed. When display wrap is off, any characters on a long line which extend beyond the right margin will not be displayed. 32) SCROLL This function enables or disables the display scrolling. If scroll is on, the display will scroll up or down in response to the video functions previously described. If scroll is off, the screen will not scroll. This function can be changed if the control code assigned to roll enable or roll disable is received. 33) EMULATION NAME This defines an abbreviated name for the emulation file. You may enter up to four characters to identify the emulation. The default is "No". 34) SEND CURSOR LEAD-IN This function defines the lead-in character to be sent before the cursor coordinates are transmitted. The ascii hexadecimal value must be in the range of $00 to $lF. 35) SEND CURSOR OFFSET This value is the numerical offset between the transmitted cursor row and column coordinates and the actual coordinates. This numerical value is added to the cursor and row column coordinates before they are sent. The offset can be set anywhere from $00 to $FF hexa decimal. 36) SEND CURSOR ORDER This function defines whether the cursor row coordinate is sent before the column coordinate, or vice versa. If the terminal being emulated sends the column coordinate before the row coordinate, use XY as the order. If the row coordinate is sent before the column coordinate, use YX. 37) -ID (ANSWERBACK) This defines the character string to be transmitted when a terminal ID or answerback is requested. The string can contain displayable and control characters and must be 16 characters or less. You may enter the string as characters or in hexadecimal values. If you select character entry, enter the string directly from the keyboard. You may enter upper or lower case characters, punctuation symbols, or control characters. You cannot enter control-H because that character is used to backspace in case you have to correct a mistake. If you select hexadecimal entry, enter the hexadecimal ascii number for each character in the string starting from the beginning. When you are finished, enter 0. If you make a mistake, you must start all over again. KEYBOARD EMULATION You can prepare a function key file to emulate the functions of a terminal which is equipped with special function keys. This function key file will let your keyboard generate some of these functions. You should load this function key file as well as the emulation file. Since only nine function keys are provided by this program, you will have to de termine which functions you need and assign them to the function keys. Creation of the function key file is described in Chapter 8. A short example of defining a function key for terminal emulation follows. Suppose the Fl function key on the terminal generates the following sequence: $1E $71. $1E is the ascii value for the control-^ character and $71 is the ascii value for the letter "q". If you want to use your 1 key to emulate the terminal F1 key, enter the following in your function key file: 1=S"^^q" The ^^ is the control-^ character and is entered by pressing the control key, shift key, and ^ key simultaneously. You may enter this function key definition into your function key file by using the following nine key strokes in the editor: 1) 1 2) = 3) S 4) " 5) [CTRL] P 6) [CTRL] [SHIFT] ^ 7) q 8) " 9) [RETURN] Although you could enter [ESC] 1 to execute this function key, the "Command? -- >" prompt will appear on the screen and clutter your display. A better way to execute the function is to use a control key. You will have to select the control key which will execute this function. Use the INSTALL program to define a keyboard translation between the control key and the function key number (in ascii hex). For example, if you want to use Control-W to execute function key 1 defined above, set the following translation: $17 --> $31 VT220/VT100 EMULATION The VT220 and VT100 terminals are very sophisticated terminals so emulation of these terminals is handled in a different way. Instead of using the E command to enable emulation, VT220/VT100 emulation is provided in a module which is loaded with the [ESC] : V command. When the VT220 module is loaded, the Apple will act like the terminal itself and all MODEM MGR functions will be replaced by this emulation. You may type oa-[ESC] or sa-[ESC] to exit from the VT220 emulation. Since the VT220 itself emulates the VT100 and VT52, this module will provide emulation of the VT220, VT100, and VT52 terminals. The earlier information in this chapter does not apply to this emulation. Use the following information instead. REQUIREMENTS VT220/VT100 emulation runs on the ProDOS version only and requires a IIGS, //c, or //e with Apple 80-column capability. This emulation will not run on the DOS 3.3 version or on a II+ or with other video cards. FEATURES This emulation supports carriage return, linefeed or newline, backspace, horizontal tab, index, reverse index, next line, bell, normal/application cursor keys, numeric/application keypad keys, PF1 through PF4 keys, VT220/VT100 compatability level, cancel, substitute, tab set/clear, answerback, keyboard lock/unlock, insert/ replace, reverse/normal screen, auto-wrap on/off, print form feed, print extent, cursor on/off, cursor up/down/forward/back, cursor position, home, save/restore cursor, normal/inverse attribute, erase in line (forward/back/all) erase in display (forward/back/all), set top/bottom margins, origin mode, 7/8 bit received controls, 7/8 bit control transmission, editing keys (find/insert here/remove/select/prev screen/next screen), function keys F6 through F20, insert line, delete line, insert character, erase character, delete character, eraseable/non-eraseable attribute, selective erase in line (forward/back/all), selective erase in display (forward/back/all), user-defined keys (UDK) F6 through F20, UDK download, UDK status report, attribute report, print line, print screen, terminal report, cursor report, printer report, keyboard report, identification, soft/hard reset, alignment pattern, send break, XON/XOFF, online/offline, and VT52/ ANSI switch. This emulation does not support 132 columns, smooth scrolling, double-height lines, double-width lines, bright/dim attribute, underline attribute, blink attribute, compose key, special character sets, special graphics, auto-print, printer controller. or terminal tests. SETUP PROGRAM You may run a setup program on the ProDOS utility disk to set terminal defaults and define the keypad and edit pad mapping. It is recommended you run the emulation as it is and use the setup program only where necessary The emulation is initially set for VT220 emulation and 7-bit control. This will suffice for most VT220 and VT100 applications. If you have doubts about this setup, try to find to an actual working terminal which is connected to the system you use. Place that terminal in its initial state and then in its setup mode. Note its setup settings and use the same settings in this program. The setup program runs from the utility dis and modifies its module named VT220 on the work disk. The program uses the current prefix to load and save the VT220 module. If you run MODEM MGR from an other subdirectory or another volume name you may use the ProDOS PREFIX command to set the desired subdirectory before you run the setup program (using the full pathname of the utility disk). Type RUN VT.SETUP and select 1 on the setup m e nu to load the VT220 module. After the VT220 module is loaded select 2 on the setup menu. You may now make setup changes. After you have made your changes, select 3 on the setup menu and save the new VT220 module on your work disk. Refer to a VT220 manual for a detailed explanation of the setup parameters. The remainder of this section will describe the setup of the keypad and edit pad mapping. DEFINE KEY PAD This section does not apply if you are using a IIGS. The program recognizes the IIGS keypad as the equivalent of a VT220 keypad. If you are using a //c or //e, you may define the keyboard keys you wish to use for the keypad functions. When you select 14 on the setup menu, you will see a diagram of the keypad. Each key has a character on it. When the VT220 emulation is enabled, you may simulate a keypad entry, by holding down the sa- key while you type the key corresponding to the character shown. You may redefine any of the keys by assigning a character key of your choice. Use the arrow keys to select the keypad key to be defined. Hold down the sa- key and type the character key you wish to use during VT220/VT100 emulation. This character will appear on the key pictured on the screen. Do this for all of the keypad keys you wish to define. There are some limitations on the character keys you can use. You may not use shifted punctuation characters. You may use the [RETURN] key only for the lower right keypad key. You may not use control characters except the four arrow keys. The program does not check for duplicate entries so be sure you have not used the same character key more than once. DEFINE VT220 EDIT KEYS This section does not apply if you are using the VT100 or VT52 emulation. You may define the keyboard keys you wish to use for the six edit keys on the VT220. When you select 15 on the setup menu, you will see a diagram of the edit keys. Each key has a character on it. When the VT220 emulation is enabled, you may simulate a edit key entry, by holding down the oa- key while you type the key corresponding to the character shown. You may redefine any of the keys by assigning a character key of your choice. Use the arrow keys to select the edit key to be defined. Hold down the oa- key and type the character key you wish to use during VT220 emulation. This character will appear on the key pictured on the screen. Do this for all of the edit keys you wish to define. There are some limitations on the character keys you can use. You may use upper case characters (A-Z) only. The program does not check for duplicate entries so be sure you have not used the same character key more than once. PROBLEMS The output/modem equipment used by some hosts will turn the msb bit on for all data sent to the user. This will work with a VT100 terminal, but if you are set up for the VT220 terminal (which uses all 8 bits), the cursor will move to the upper right margin and all received text will print in the last column. You must either have the system operator revise the modem output to send the msb bit exactly as the host outputs it or you must set up your emulation for the VT100 terminal. Some hosts will output at 9600 baud which is then converted to 1200 baud for their modem. If you are receiving an entire screen rewrite or a large block of text this speed bottleneck may cause loss of some text. These system problems are your responsibilty to solve. For troubleshooting, try the following. Log into the system without using this emulation. As soon as you are logged in, use the applicable host system command to determine which terminal type the host thinks you have. For example, in a VAX/VMS system use the SHOW TERMINAL command. Note the terminal type (VT100, VT200, etc). If it doesn't match the terminal you have set up, use the setup program to set the same terminal or use the host system command to change the host default. (For VMS it is SET TERMINAL/DEVICE= VT200). _________________________________ | | | | | | sa-8 | sa-9 | sa-0 | sa- | |_______|_______|_______|_______| | | | | | | sa-I | sa-O | sa-P | sa[ | |_______|_______|_______|_______| | | | | | | sa-K | sa-L | sa-; | sa' | |_______|_______|_______|_______| | | | | | | sa-, | sa-. | sa-/ | | |_______|_______|_______| | | | | sa-CR | | sa- <-- |sa- -->| | |_______|_______|_______|_______| ________________________ | | | | | oa-Q | oa-W | oa-E | |_______|_______|_______| | | | | | oa-A | oa-S | oa-D | |_______|_______|_______| KEY FUNCTION ~~~ ~~~~~~~~ oa-3 Offline/Online oa-4 Print screen oa-5 Break oa-6 F6 oa-7 F7 oa-8 F8 oa-9 F9 oa-1, oa-0 F10 oa-1, oa-1 F11 (VT100/52 ESC) oa-1, oa-2 F12 (VT100/52 BS) oa-1, oa-3 F13 (VT100/52 LF) oa-1, oa-4 F14 oa-1, oa-5 F15 Help oa-1, oa-6 F16 Do oa-1, oa-7 F17 oa-1, oa-8 F18 oa-1, oa-9 F19 oa-2, oa-0 F20 oa- <-- ^H BS oa- --> ^U NAK oa- (down arrow) ^J LF oa- (up arrow) ^K VT [SHIFT] oa-6 UDK F6 [SHIFT] oa-7 UDK F7 [SHIFT] oa-8 UDK F8 [SHIFT] oa-9 UDK F9 [SHIFT] oa-1, [SHIFT] oa-0 UDK F10 [SHIFT] oa-1, [SHIFT] oa-1 UDK F11 [SHIFT] oa-1, [SHIFT] oa-2 UDK F12 [SHIFT] oa-1, [SHIFT] oa-3 UDK F13 [SHIFT] oa-1, [SHIFT] oa-4 UDK F14 [SHIFT] oa-1, [SHIFT] oa-5 UDK F15 [SHIFT] oa-1, [SHIFT] oa-6 UDK F16 [SHIFT] oa-1, [SHIFT] oa-7 UDK F17 [SHIFT] oa-1, [SHIFT] oa-8 UDK F18 [SHIFT] oa-1, [SHIFT] oa-9 UDK F19 [SHIFT] oa-2, [SHIFT] oa-0 UDK F20