Vp O  O`! #@%'+-//3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmo/s@u`wy} @`@ o @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+/1!O5;=?A!CAEaGIKMOQ!SAq!sAuwy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%o%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'O'ub'wO  O`! #@%'+-//3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmo/s@u`wy} @`@ o @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+/1!O5;=?A!CAEaGIKMOQ!SAq!sAuwy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%o%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'O'ub'wA251 t DEUTSCH f4EZGEM f4 UG f4)UG ASC$g420ATO20CTOS3g4-EXAMPLE1MAC 5g43 EXAMPLE2MAC 7g46EXAMPLE3MAC 9g47LEES DIT ]HKEYEDIT PRG=g4: kB-LISTETXT Cg4UXaPIPELINE Gg4nQ_AND_A Hg4orREADME_V20E Kg4vTEXREAD ME Mg4z=UNI H Pg4|UNIDEMO C Rg4UNIEDIT PRG Tg4}UNITERM PRG Yg4UNITERM RSC jg4UwUNITEST PASng4sNEODESK DAT\x000_JBZDOC R\yESKTOP INF ~D_SZENEDOC ZS\B. f4.. f4ATEIEN f4TASTEN f4e ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 EC Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (winter 1990) al zo'n vier honderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De Stichting ST geeft ook een speciale PD catalogus disk uit. ************** Deze public domain disk is geproduceerd en gedistribueerd door: Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productiefouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productienummer. ************************************************************************ Dasselbe in einer fuerchterlichen ASCII 1156 ascread.me Text Version. 116391 uniterm2.asc //////////////////////////////////////////////////////// Sondertasten in UniTerm 2.0c **************************** Diese Tasten loesen zusammen mit der Taste eine spezielle Funktion aus, alle diese Tasten koennen mit dem Macrobefehl REASSIGN umdefiniert werden (die Tasten in den Sondermodi sind ohne zu brauchen und lassen sich auch nicht umdefinieren). Uebrigens alle diese Funktionen koennen auch auf einen Eintrag des `Popup' Menus ge- legt werden (mit dem Macrobefehl POPUP). Graphik Bildschirm loeschen und Tektronix Emulation initialisieren (funktioniert auch wenn der Graphik Bildschirm nicht sichtbar ist). Schaltet zwischen 24 und 49 Zeilen auf dem Bldschirm um (nur in der hochaufloesenden Betriebsart). Ausgabe des `History' Buffers auf ein VDI Geraet (Drucker oder Meta- file), setzt natuerlich GDOS voraus. Druckt den Inhalt des aktuellen Textblidschirms, ist viel schneller als die normale Bildschirmkopie mit . Schaltet auf den Graphikbildschirm und setzt das Terminal in den Tektronix 4010 Modus. Macht den Textbildschirm sichtbar und schaltet in den VT1XX Modus.. Initialisiert das Terminal und liest die Konfigurationsdatei. Schaltet automatisches Drucken (nach jeder neuen Zeile) an/ab. Zoommode einschalten. <> 1/3 Seite nach oben <> " unten <> " rechts <> " links Zu der vorherigen Vergroesserung zurueck Wieder zur normalen Skalierung Zum Terminal zurueck Zwischen 132 (in Wirklichkeit 128) und 80 Kolonnen umschalten. `answerback' text schicken. Kurzes `break' (0.233 s). Start/stop auf Disk protokollieren. Modem aufhaengen. Langes `break' (3.5 s).

Screen dump to disk in DEGAS format. Playback a file with the terminal emulator. Control history recording. Start file transfer (starts file transfer with the protocol selected in the [Transfer] menu). View the history buffer. Save history buffer to disk. Hold Screen ( on the german keyboard). <1>-<0> Dial numbers 1 to 10. Atari screen dump. Start the single-line editor. Toggle Meta mode. 8 CHAPTER 2. STARTING USING UNITERM 2.9 The Clipboard Pressing the left mouse button while the I-type mouse cursor is visible will produce a "rubber box", after you have let go of the mouse button the selected text will be inverted and a small popup menu will appear: - clicking outside the popup will cancel the operation - selecting the [Cut] item with the left mouse button will store the the text in a buffer (the "clipboard"). Doing the same with the right button will append a CR after each line. - [Add] appends to the text already in the clipboard (with the same difference between left and right mouse button). - [Send] sends the text directly to the host computer, without using the clipboard (again same usage of left and right button). Two commands supplement this feature, SaveClip and Insert which are both available via the main popup menu: - SaveClip allows you to save the contents of the clipboard to a file, CR's are mapped to CR LF. - Insert sends the contents of the clipboard to the host computer. Additional operations on the clipboard are possible with seperate programs, the clipboard can be accessed via the UniTerm parameter block, example programs and documentation should be available with this manual. 2.10 Mouse Cursor Control In practically all situations where you can use the cursor keys, you can use the mouse to position the cursor too; while the mouse cursor is visible (the I-type text cursor) move it to a new position and double click the left mouse button; the cursor should now move to the new position. Some editors do not allow you to move the cursor over tabs, this will cause the cursor to miss the intended end position in some cases. 2.11 Popup Menu Besides being bound to keys some functions of UniTerm are accessible via a popup menu. Click the right mouse button and the popup will appear at the 2.12 VIEWING THE HISTORY BUFFER 9 current cursor position. To select one of the items just click the left button, to get rid of the menu click outside of the popup area. The default configuration assigns the ten telephone numbers of the dialer to the fields on the right-hand side. 2.12 Viewing the History Buffer You can view the contents of the history buffer with the key combination . Besides the normal `clip' functions with the mouse, six keys have a special function: Exit. Bottom of buffer. Top of buffer. <^> Up one line. (`Up arrow') Down one line. (`Down arrow') <->> Up one page. <<-> Down one page. 2.13 Dialer The setup file UNITERM.TEL is loaded at startup, if it isn't found the values for the dialer are reset. The keys <1> to <0> dial numbers 1 to 10, sends the hangup string. A '+' as first character of the number is a placeholder for the access code. Dialling can be aborted by pressing , the timeout is 40 seconds. The suffix, prefix and hangup strings are passed to the macro interpreter in "function-key" mode. If the number and macro field is empty, the dialer returns straight away, if the number field is empty and a macro file is specified, the macro file is executed. A tip for people that want the macro to handle waiting for the `CONNECT' or whatever it may be message, just leave out the `Connect msg' entry, The dialer will then immediatly start executing the macro file after sending the number string. 2.13 Meta Mode In Meta mode is the so called Meta key; pressing plus a second key will produce the ASCII code of that letter plus 128 (the 10 CHAPTER 2. STARTING USING UNITERM Meta key sets the eighth bit of the character). To enter Meta mode press (this will toggle an indicator on the statusline). Some of the more important characters of the international character set that can be generated are: ______________________________________________________________ |____Meta_+___|____Character___|______Meta_+__|___Character__| | @ | | ` | | | A | | a | | | B | | b | | | C | | c | | | D | | d | | | E | | e | | | F | | f | | | G | | g | | | H | | h | | | I | | i | | | J | | j | | | K | | k | | | L | | l | | | M | | m | | | N | | n | | | O | | o | | | Q | | q | | | R | | r | | | S | | s | | | T | | t | | | U | | u | | | V | | v | | | W | | w | | | X | | x | | | Y | | y | | | Z | | z | | | [ | | { | | | ~ | | - | | | ] | | } | | | _ | | | | |_____________|________________|______________|______________| If you have a non-US keyboard, you will probably have to edit your UniTerm setup file with KeyEdit to get all ASCII codes. Chapter 3 More About UniTerm This chapter contains a short description of all user-setable parameters, except those related to the various file transfer protocols. Please read Chapter 4 for more information. 3.1 RS232 Port Parameters To change these settings, press and select [RS232] from the [Settings] menu. Following parameters can be changed: Baud selects the rate for the serial port. Flowcontrol selects the flowcontrol mode, these functions are implemented by the BIOS. Parity selects the parity mode, these modes are implemented by the BIOS. Databits allows you to select the number of data bits, implemented by the BIOS. Stopbits allows you to select the number of stop bits, implemented by the BIOS. Mode allows you to put the terminal in one of following modes: [Full] Data typed on the terminal is echoed by the host computer. 12 CHAPTER 3. MORE ABOUT UNITERM [Echo] UniTerm echos user input on the screen. [Local] User input is only sent to the screen. 3.2 Terminal Parameters To change these settings, press and select [Terminal 1] or [Terminal 2] from the [Settings] menu, the following parameters can be changed: 3.2.1 Terminal 1 Terminal selects the terminal mode and change the terminal identification. [4014] selects 4014 alpha mode, [DCM] selects Display Control Mode3 Keypad chooses the mode of the keypad, in application mode escape sequences are sent by all keys, in numeric mode only the top 4 keys send escape codes (they are the keys F1 to F4 on a real VT100). Cursormode selects the two different sets of escape sequences that can be sent by the cursor keys. Use masks out the 8th bit of sent or received bytes for the terminal emulations, set to 8 bits if you want to use the 8 bit VT2XX mode (this only effects ASCII file transfer and not the other file transfer modes). Scroll selects between slow and quick scroll. Newline Mode sets the VT100/102/200 newline mode (what is sent when you press ). Wrap switches the automatic wraparound at the end of a line on and off. Cursor selects blinking or non blinking, underline or block cursor. Background sets the background (and naturally the foreground) color 3.2. GRAPHICS TERMINAL PARAMETERS 13 Delete changes the way and work, if set to [Delete] will send BS and Delete will send DEL, set to [Backspace], the codes are exchanged. 3.2.2 Terminal 2 Answerback is the string which is sent as answerback message. Printer determines if a printer is connected or not. Print terminator determines if a FF is sent after each print operation or not. SLE turns the built-in single-line editor on and off. Auto executed macro The contents of any file named here are executed on startup by the UniTerm macro processor NRC turns national replacement character set mode on, and controls which character set is used (selecting ASCII turns it off). 3.3 Graphics Terminal Parameters Select [Graphics] from the [Settings] menu to change the parameters of the graphic terminal module: Tektronix mode enables or disables automatic switching to the Tektronix mode after a GS character, useful on noisy telephone lines (this option also inhibits the allocation of a 32kB buffer for the Tektronix screen). GIN Termination String sets the string sent after a GIN report. Status Termination String sets the string sent after a status report. 14 CHAPTER 3. MORE ABOUT UNITERM Aspect this option controls the scaling of pictures. Deletes allows you to set the processing of DEL in the 4010 module. 3.4 Tabs This small dialog allows you to set the tab positions. Generally it is not a good idea to change them from the default settings, since there is a lot of (buggy) software that relies on the settings being the same as the original VT100 factory settings. 3.5 Changing Buffer Sizes Select [Buffers] from the [Settings] menu, the top half of the dialog form allows you to change four values: * Transfer buffer size * RS232 input buffer size * System reserved size * Clipboard size the [+] and the [-] buttons autorepeat, double clicking increases (decreases) the displayed value by 1000. In the bottom half the actual amount of memory allocated to each buffer is displayed, if these values are not the same as the ones set by you, for some reason UniTerm was not able to use your configuration. In this case 5kB are reserved for system use, 2kB for the clipboard and the rest of available memory is allocated to the transfer buffer (up to the amount set by you, minimum 1kB) and the remaining memory is used by the history buffer (min.1kB). The RS232 buffer values will only change if you save the value in a setup file and restart UniTerm, all other changes take effect immediately (and reset the buffers!). 3.6 Setup Files All user setable parameters are stored in the setup files (including the function key strings etc.). Loading a setup file from a different version of UniTerm may result in a version conflict error message, if this happens UniTerm uses its internal defaults. 3.7 FILE CAPTURE/PLAYBACK 15 3.7 File Capture/Playback The file capture routine uses a character translation table, which can be edited by selecting [ASCII] from the [Transfer] menu and then selecting [File Transfer] from the [Settings] menu. While file capture is in progress all screen output is translated too, so you will get a direct impression of what you are saving. The Playback function allows you to simulate input from the serial port, pressing A allows you to abort, any other key will cause UniTerm to wait for another keypress. 3.8 Editing Function Keys To edit the string assigned to a function key, press the key and select [Edit Function Keys] from the [Other] menu. You can edit the strings now, the cursor keys will move you to the string you want to edit, will clear the string, will delete to the left, the current character. Control codes can be entered by pressing and the appropriate key (see appendix B). 3.9 The Statusline The 25th line on the screen is used as a statusline in text terminal mode, it should look like this (all possible information shown): ______________________________________________________________________________ |__UniTerm__V2.0c___Online________Meta_______Caps______HPDBLCR__________1234_| ______________________________________________________________________________ | Program Version Mode Meta Caps Status LED | |__name___________________________Ind._______Ind.____________________________| The "Status LED's" are (from left to right): __________________________________________ |_____________________|____On___|__Off___| | History | H | _ | | Autoprint | P | _ | | DCD | D | _ | | Break | B | _ | | Keyboard locked | L | _ | | File Capture ! C | _ | |__Insert_Mode________!_____I___|____R___| 3.10 The Single-line Editor To make working on systems that don't have a single-line editor (short sle) easier, a simple sle is implemented in UniTerm. The last 20 lines typed by the 16 CHAPTER 3. MORE ABOUT UNITERM user are stored in a circular buffer. Pressing starts the sle, the status line will clear and the current line will be displayed instead. The following functions are provided: <->> move the cursor one character to the right. <<-> move the cursor one character to the left. <^> display the previous line. display the next line. delete the character under the cursor. delete the character to the left of the cursor. terminate the sle without sending the current line. send the current line and leave the sle. The sle is always in insert mode. DON'T FORGET TO ERASE YOUR PASSWORDS! If you want to disable the sle for this reason, disable it in the [Terminal] dialog box. 3.12 Single Character Commands All functions in the 'Help' menu of UniTerm can used with single character commands: 1 Set terminal parameters part 1 2 Set terminal parameters part 2 A Set ASCII file transfer parameters B Set buffer sizes C Configure dialer D Delete file E Edit function-keys F Show free diskspace G Set graphic parameters I Show info dialog K Set Kermit parameters L Load Setup P Set Path R Run program S Save Setup T Set tabs Q Quit 'help' dialog V Set RS232 parameters X,Y Set X/YModem parameters Chapter 4 File Transfer 4.1 General To change the current file transfer mode use the [Transfer] menu. Changing the file transfer type here, changes the dialog box that is displayed when you select [File Transfer] from the [Settings] menu and what happens when you type (start file transfer). 4.2 ASCII File Transfer 4.2.1 Using ASCII File Transfer There is nothing much to say about ASCII file transfer,just press and choose the file you want to send. Pressing gets you to the Help screen, so you can change the delay between characters to a different value during an upload (this is useful with VMS which normally has a lot of trouble with the first line sent). The transfer can be interrupted at any time by pressing A. Normally some experimentation is needed to find the shortest delay time for your system. You can use a character translation table to map incoming characters to Atari characters. To receive files use the file capture function. A translation table is used in the same way as with sending files. When file capture is in effect the characters are displayed as they will be saved. 4.2.2 Setting the ASCII File Transfer Parameters The following parameters can be set: Start of file transfer a string that is sent before file transfer starts. 18 CHAPTER 4. FILE TRANSFER End of file transfer a string that is sent when the transfer finishes. Send determines if the output translation table is used for sending files. Receive determines if the input translation table is used for capturing files. Delay Time sets the time [ms] UniTerm waits after every character sent (this is implemented with the 200Hz system clock. Method if [Paced by Echo] is selected, UniTerm waits for every character sent to be echoed (except ASCII control codes), this doesn't time out! Translate EOL to selects if CR LF is sent as CR LF , CR , LF or as SP CR. This function will send single CR 's and LF 's correctly! Translation on input allows you to change the translation table used during file capture Translation on output enables you to edit the translation table which is used for sending files, enter the decimal ASCII values of the characters or nothing if you want the character to be ignored. 4.3 XModem/YModem 4.3.1 Using XModem To receive a file, start the remote XModem and type . To receive a file select [Receive] from the dialog box and enter the filename in the file selector form. If you have set the error check mode to [CRC] UniTerm will try to initiate a file transfer with CRC error check, if it gets no response in the maximum allowed number of errors, it will retry with the normal checksum. To send a file select [Send] and enter the name of the file in the file selector. 4.4 KERMIT 19 4.3.2 Using YModem Batch YModem is a version of the XModem protocol with CRC type block check and with a batch send/receive protocol added. The file length will be set to the value received in the header block, file date and time is set to 0 and the attribute to 000644 (octal) on sending and ignored on receiving. Filename collision handling and wildcard expansion are done on receiving/sending a group of files. 4.3.3 Setting the XModem Parameters The following parameters can be set: Timeout after sets the maximum time XModem waits for a character to be received from the serial port. Maximum number of errors sets the maximum number of errors before the file transfer is aborted. Accept ASCII NUL allows you to use XModem for non-binary file transfers, when ASCII NUL is used as padding character. Packet size chooses the packet size for XModem transfers, the 1kB size may be more efficient on noise free lines. Error check type sets the default checksum type, if possible use the CRC check for the larger packet size. 4.4 Kermit 4.4.1 UniTerm Kermit Capabilities UniTerm Kermit capabilities at a glance: Local operation: Yes Remote operation: No Transfers text files: Yes Transfers binary files: Yes Wildcard send: Yes ^X/^Y interruption: No Filename collision avoidance: Yes Can time out: Yes 8th-bit prefixing: Yes 20 CHAPTER 4. FILE TRANSFER Repeat count prefixing: Yes Alternate block checks: Yes Terminal emulation: Yes (UniTerm) Communication settings: Yes (UniTerm) Transmit BREAK: Yes (UniTerm) IBM mainframe communications: Yes Transaction logging: No Session logging: No Act as server: No Talk to server: Yes Advanced server functions: No Advanced commands for servers: Yes Local file management: Yes Handle file attributes: Yes Command/init files: Yes (UniTerm) Command macros: Yes (UniTerm) Large packets: Yes Windows: No Please don't forget if you miss a feature,that UniTerm is a terminal emulator and not a "real" Kermit (whatever that maybe). 4.4.2 Simple File Transfer To receive a file, type the correct command for the remote Kermit and type on the ST keyboard, a large dialog box should appear. Select [Receive] if you want to use a different name than the original filename use the file selector form to select a name (this will only effect the first file received in a mutiple file transfer). If you want to receive the files with the names supplied by the host, just press (the path entered is retained untill the end of your UniTerm session). A new form will appear and will display the current file being received, the total number of packets, the current number of errors and timeouts and the last non-fatal error that occurred. The transfer can be aborted by typing . To send a single file or a group of files, setup the remote host for receiving, type and select [Send]. Enter the filename or wildcards (*,?) in the file selector dialog and press . 4.4.3 Binary File Transfer Set both sides (host and local computer) to binary mode (on most mainframes with set file type binary or set file binary, select the [Binary] button 4.4 KERMIT 21 on UniTerm), if you have set parity to none and have selected 8 data bits, binary files will be transferred without 8th-bit prefixing; in all other cases prefixing will be used (be sure that the parity is the same on the complete connection to the remote computer). One note, since the Kermit "end of record" is the same as the TOS "end of line" no translation of CR's or LF's is done, this may lead to problems if you have a file on the ST which uses LF as 'end of line' marker. 4.4.4 Server Commands This is probably the simplest way to use Kermit, connect to the remote host and start the remote Kermit in server mode. A large subset of the possible Kermit server commands is implemented (not implemented: Journal, Who, Variable): Put send a file to the host. Get receive a file from the host. Finish terminate the remote Kermit. Logout terminate the remote Kermit and logout. Dir send a directory to the local Kermit and have it displayed on the screen (argument: file-spec). Remote send a command to the remote host (argument: commandline). Type send a file to the local Kermit and display it on the screen (argument: file). CWD change the current working directory of the remote Kermit (arguments: directory, password). Usage show disk usage (argument: area). Program start a program on the host computer (arguments: program- file, program-commands). Erase delete a file on the host computer (argument: file). Copy copy a file on the host computer (arguments: source, destination). Rename rename a file on the host computer (arguments: oldname, newname). Login login on a remote Kermit in server mode (argu- ments: user, password, account). Help get help from the remote host (argument: topic). Status get the current status of the server. For more information consult the "Kermit Protocol Manual". 4.4.5 Setting the Kermit Parameters The following parameters can be set: 22 CHAPTER 4. FILE TRANSFER Timeout after sets the maximum time Kermit waits for a character to be received from the serial port. Maximum number of retries the maximum number of retries before the transmission is aborted. Number of padding characters the number of padding characters sent before each packet. Packet size the maximum packet size you want to use (maximum size without large packets is 94 bytes, with 2048). Quote character the ASCII character used for control character quoting. 8 bit quote character the ASCII character used for 8th-bit quoting. Repeat prefix character the character used for repeat prefixing. Padding character the character used for padding. Start of packet the character that marks the start of a Kermit packet. IBM mode wait for a XOn character before sending a packet (XOn/XOff flow- control naturally has to be turned off for this to work). Error check type two and single character checksum and CRC check. Normally you shouldn't have to change any of these parameters, please consult the Kermit literature for more details. Chapter 5 Customizing UniTerm UniTerm can be adjusted to suit your needs in various ways, most use the setup files to store the configuration data. The popup menu and the bindings of the keys are exceptions, mainly since there would have been no way of editing these settings without making UniTerm simply too large. The popup menu and function keys can be set by executing UniTerm macro commands in the auto startup macro file. 5.1 Popup Menu A line like %POPUP(1,15,'L. Break') in your startup macro file will assign the command LongBreak to the top left- hand entry in the popup and will name the command 'L. Break', consult the chapter on the macro commands for a complete description. 5.2 Key Bindings A line like %REASSIGN(39,15) in your startup macro file will assign the command LongBreak to , to find out which keycode to use please consult other literature. Be-ware: in some cases the key modifies the value of the returned keycode. To override the default key bindings, set the command number to zero, this causes the character generated by the BIOS to be used for output. Chapter 6 Implementation Notes 6.1 General Most of UniTerm is written in CCD/OSS Pascal and uses standard GEM, GEM-Dos, Bios and XBios calls. The exceptions are: * Scrolling, this is done with a assembler routine instead of raster operations. * Character output in the 128 column, DW and DH modes, is done with TXTBLT (which doesn't help very much speedwise), all other terminal mode output is done with fast custom assembler routines, which are at least an order of magnitude faster when using text attributes than the corresponding TXTBLT calls. * Some miscellaneous routines, like CRC calculation, supervisor peeks pokes. Timing information for the main loop of UniTerm: 0.2 mS RS232 state, keyboard and mouse state If characters can be read from the serial port: 0.18 mS Cursor on/off (disabling the cursor saves this) Innerloop (max. 20 iterations): 0.1 mS Character read (possibly slower) 0.3 mS Character output (VT100 mode 80 clumns, no attributes set) Turning history recording on will naturally make the loop slower, scrolling speed is 42 lines per second. 6.2 VT102/VT100 MODE 26 The carrier detect signal and the break bit on the Mfp are polled once per main loop and if they are present a appropriate message is displayed. UniTerm needs one VBL interrupt slot and also installs its own mouse-movement interrupt handler in GIN mode, additionaly VDI mouse-movement and mouse-button handlers are installed. The mouse-button handler may cause problems with programs that use both buttons, since it maps both to the left button (this is a workaround AES's inability to wait for a left or right mouse-button event). Please note that unlike other available products, UniTerm does NOT use any undocumented locations or functions of the operating system. 6.2 VT102/VT100 Mode 6.2.1 Smooth Scrolling Only works upwards (this is hopefully the only direction anybody really needs), this will be fixed the day I get a blitter. 6.2.2 132 Column Mode Only 128 columns wide, this is due to the 640 pixel resolution of the ST in horizontal direction. 6.2.3 Double Height/Width Characters Restrictions: no double width in color. 6.2.4 Extended character set in 8 bit mode Using the GR character set will work, but is probably very slow due to the fact that the font has to be set/reset for every character. 6.3 VT200 Mode 6.3.1 VT200 function keys There is no default assignment of the VT200 function keys to ST keys, except for the downloadable function key strings. If you need the default VT200 keys (->appendix E), build yourself a setup file with the right settings. 26 CHAPTER 6. IMPLEMENTATION NOTES 6.3.2 C0/C1 Modes Not implemented, that means UniTerm always sends C0 codes (7 bit) (this only a restriction for the escape sequences sent by the cursor and keypad keys, you can send 8 bit codes from the keyboard), received C1 codes will be interpreted correctly. 6.3.3 International character set The international character set is the default GR set (the characters that are between ASCII 128 and 256). For technical reasons use of the GR set is slow (the set is changed for every character!). 6.3.4 Downloadable character set Not implemented (very resolution dependent, useless on the ST). 6.3.5 Downloadable function keys The lock/unlock/erase parameters are ignored. The mapping of the keys is de- scribed in appendix E, maximum string length per key is 80 characters (DON'T FORGET THAT % IS A SPECIAL CHARACTER FOR UNITERM!). 6.3.6 Regis Not implemented (very resolution dependent, useless on the ST). 6.4 Tektronix Mode 6.5 General The Tektronix mode is still a bit in a mess. This will change with the using the 4105 command set, this implies that you should only use the vector mode of the 4010 emulation as all other 4010 commands will probably be removed from the program. Right now scaling is done with respect to a 4010 with 1024*780 points, this probably will change for the 4105 (512*360) emulation. In Tek coordinates the screen measures 4096*3120 points (4105: 4096*3072 points). For redrawing and zooming purposes the incoming characters are stored in a circular buffer. This is quite a memory saving way to store them, but on the other hand this means they have to be decoded every time the vectors are drawn. 6.6 PROBLEMS 27 6.5.1 Alpha Mode Restrictions: 1 margin, all (well nearly all) character sizes are the same only the spacing is different. 6.5.2 Vector Mode 6.5.3 Zoom Mode Restrictions: No zooming of graph text, slow. 6.6 Problems Sometimes the serial port seems to blocked (this has happened to me with other ST terminal emulators as well), the reason for this still hasn't been discovered (probably due to a bug in the ST Bios), try resetting the terminal if this happens. Don't use the [Set RS232 Port Parameters] dialog in an editor or the like, for some mysterious reason the serial port outputs a delete character if you actually change something and exit with [OK](probably due to a bug in the ST Bios). Don't try to use the underscore character in the file-selector dialogs (this is a bug in GEM, fixed in the so called Blitter-TOS). Appendix A Control Codes and Escape Sequences This appendix lists control codes and escape sequences that complete implemen- tations of VT102/VT2XX and Tektronix 4014/4105 terminals should interpret and the functions they should initiate. * marks functions that are redundant or not possible on an Atari ST computer, *NI marks other not implemented functions (due to my laziness?), *RI uncomplete implementation of a function, please read the implementation notes for details. Consult the ASCII table for numeric values of the control codes, Ps, Pn, Pc and Pl denote decimal values ( ESC [10;10f postion cursor at text coordinates (10,10)). The following control codes and commands, the syntax and the command interfaces as a whole could possibly be patented or/and copyrighted, please consider this list as 'for information only'. Commercial use is strictly forbidden. A.1 ANSI/VT2XX/VT102/VT100 Mode A.1.1 Set Mode ESC [2h Keyboard locked ESC [4h Insert mode ESC [12h Local echo off ESC [20h New line mode on ESC [?1h Cursor key application mode ESC [?3h *RI 132 column mode ESC [?4h *RI Smooth scrolling ESC [?5h Screen reverse ESC [?6h Origin mode relative A.1. ANSI/VT2XX/VT102/VT100 MODE 29 ESC [?7h Auto wrap on ESC [?8h * Auto repeat on ESC [?9h * Interlace on ESC [?18h Print form feed on ESC [?19h Print extent full screen A.1.2 Reset Mode ESC [2l Keyboard unlocked ESC [4l Replace mode ESC [12l Local echo on ESC [20l New line mo de off ESC [?1l Cursor key cursor mode ESC [?2l VT52 mode ESC [?3l 80 column mode ESC [?4l Jump scrolling ESC [?5l Screen normal ESC [?6l Origin mode absolute ESC [?7l Auto wrap off ESC [?8l * Auto repeat off ESC [?9l * Interlace off ESC [?18l Print form feed on ESC [?19l Print extent scrolling region A.1.3 Select Character Sets The format is : ESC primary final Where primary selects one of the four logical character sets (G0 to G3) and final selects the actual character set to be, mapped into the logical set. Primary selector ( G0 ) G1 Final selector A UK national B US-ASCII 0 Special graphics 1 *NI Alternate character set ROM 2 *NI Alternate special graphics set ROM 30 APPENDIX A. CONTROL CODES AND ESCAPE SEQUENCES A.1.4 Shift into Character Sets SO Locked shift G1 SI Locked shift G0 A.1.5 Character Attributes ESC [0m No attributes ESC [1m Bold ESC [4m Underline ESC [5m Blink (Light) ESC [7m Reverse A.1.6 Scrolling Region ESC [Pt;Pbr Set scrolling region A.1.7 Cursor Movement Commands ESC [PnA Cursor up ESC [PnB Cursor down ESC [PnC Cursor right ESC [PnD Cursor left ESC [Pl;PcH Cursor position ESC [Pl;Pcf ESC D Index ESC M Reverse Index ESC E Next line ESC 7 Save cursor ESC 8 Restore cursor A.1.8 Tab Stops ESC H Horizontal tab set ESC [g Tab clear ESC [0g Tab clear ESC [3g Clear all tabs A.1. ANSI/VT2XX/VT102/VT100 MODE 31 A.1.9 Line Attributes ESC #3 Double-height top half ESC #4 Double-height bottom half ESC #5 Single-width single-height ESC #6 *RI Double-width single height A.1.10 Erasing In Line ESC [K Cursor to end of line ESC [0K ESC [1K Beginning of line to cursor ESC [2K Entire line In Screen ESC [J Cursor to end of screen ESC [0J ESC [1J Beginning of screen to cursor ESC [2J Entire screen A.1.11 Requests/Reports Requests from host Reports to host ESC [5n Status ESC [0n Terminal OK ESC [3n * Terminal not OK ESC [6n Cursor pos. ESC [Pl;PcR Cursor position ESC [c What are you? ESC [?1;Psc VT100, Ps options ESC [0c ESC [?6;Psc VT102, Ps options ESC Z ESC [?62;Psc VT200, Ps options ESC [?15n Printer status ESC [?10n Printer ready ESC [?11n Printer not ready ESC [?13n No printer ESC [0x Send terminal parameter report after setup ESC [1x Send only on request 32 APPENDIX A. CONTROL CODES AND ESCAPE SEQUENCES A.1.12 Reset ESC c Reset to default values A.1.13 Tests ESC #8 Fill screen with E's ESC [2;Psy * Invoke tests A.1.14 Keyboard LED's ESC [0q All off ESC [Psq LED Ps on A.1.15 VT52 Mode ESC Enter ANSI Mode ESC = Enter alternate keypad mode ESC i Exit alternate keypad mode ESC F Select special graphics character set ESC G Select US/UK character set ESC A Cursor up ESC B Cursor down ESC C Cursor right ESC D Cursor left ESC H Cursor home ESC YPlPc Direct cursor address ESC I Reverse line feed ESC K Erase to end of line ESC J Erase to end of screen ESC Z What are you? ESC /Z I am a VT52 (Response) ESC ^ Enter auto print mode ESC - Exit auto print mode ESC W Enter printer controller mode ESC X Exit printer controller mode ESC ] Print screen ESC V Print cursor line A.1. ANSI/VT2XX/VT102/VT100 MODE 33 A.1.16 Editing Functions ESC [PnP Delete character ESC [PnL Insert Line ESC [PnM Delete Line A.1.17 Print Commands ESC [?5i Enter auto print ESC [?4i Exit auto print ESC [5i Enter printer controller ESC [4i Exit printer controller ESC [i Print screen ESC [0i ESC [?1i Print cursor line A.1.18 Other Control Characters NUL Ignored SOH Ignored ETX Ignored EOT Ignored ENQ Transmit answerback message BEL Bell BS Backspace HT Horizontal tab LF Linefeed or CR LF VT same as LF FF same as LF CR Carriage Return SO Shift to G1 character set SI Shift to G0 character set DC1 Ignored (Alternate XOn) DC3 Ignored (Alternate XOff) CAN Cancel SUB Cancel DEL Ignored US Ignored RS Ignored FS Ignored SYN Ignored EM Ignored 34 APPENDIX A. CONTROL CODES AND ESCAPE SEQUENCES ETB Ignored NAK Ignored DLE Ignored XON In XOn/XOff flow control mode XOFF intercepted by ST bios, otherwise ignored A.1.19 Nonstandard Functions ESC [` Lock Keyboard ESC [b Unlock Keyboard ESC [PnI Move Pn tabs right GS Enter 4014 Vector mode ESC %!0 Enter Tektronix alpha mode (4105) ESC #!0 Report terminal mode (4105) %! SPSP 1 Report: I am a ANSI terminal (4105) ESC [?39h Set 49 line mode ESC [?39l Set 24 line mode ESC [?40h Set meta mode ESC [?40l Reset meta mode ESC [*c Inquire UniTerm version and mode Response: ESC [*major ;minor ;release;max-row;max-col c ESC Pu string ESC \ Execute string with UniTerm's macro processor A.2 VT2XX Functions A.2.1 Character Sets The format is: ESC primary final Primary selector ( G0 ) G1 * G2 + G3 Final selector < DEC International A.2. VT2XX FUNCTIONS 35 B US-ASCII 0 Special graphics A.2.2 Terminal Modes CSI 61"p VT100 mode CSI 62"p VT200 mode, 8-bit CSI 62;0"p " " CSI 62;1"p VT200 mode, 7-bit CSI 62;2"p VT200 mode, 8-bit ESCSP F *NI Send only C0 codes ESCSP G *NI SEnd only C1 codes A.2.3 Selective Erasing and Attributes CSI 22m Bold off CSI 24m Underline off CSI 25m Blink off CSI 27m Inverse off CSI 0"q Erase protectionoff CSI 1"q Non-erasable CSI 2"q Erasable CSI ?K Cursor to EOL CSI ?0K CSI ?1K SOL to Cursor CSI ?2K Whole line CSI ?J Cursor to EOP CSI ?0J CSI ?1J SOP to Cursor CSI ?2J Whole screen 36 APPENDIX A. CONTROL CODES AND ESCAPE SEQUENCES A.2.4 Reports From host CSI i0c Secondary device attribute response From terminal CSI i1;17;0c VT220, Software version 1.7 From host CSI ?25n Are the function-keys locked? From terminal CSI ?20n Unlocked CSI ?21n *NI Locked A.2.5 Misc ESC [PnX Erase Pn characters ESC [PnP Delete Pn characters ESC [Pn@ Insert Pn blanks CSI !p Soft reset CSI ?38h Tektronix mode CSI ?38l VT200 mode CSI ?25h *NI Cursor on CSI ?25l *NI Cursor off A.2. VT2XX FUNCTIONS 36 A.2.6 Downloadable Function Keys DCS Pc;Pl|Ky1/St1;.. ST Pc = 0 clear all keys (ignored) Pc = 1 don't clear keys (ignored) Pl = 0 lock keys (ignored) Pl = 1 don't lock keys (ignored) Ky1 Key number (decimal) St1 String (hex) A.2.7 Downloadable Character Sets Not implemented! Sorry. A.2.8 Control Codes IND Index NEL Next line SSA Ignored A.2. VT3XX FUNCTIONS 37 ESA Ignored HTS Horizontal tab set HTJ Ignored VTS Ignored PLD Ignored PLU Ignored RI Reverse index SS2 Single shift G2->GL SS3 Single shift G3->GL DCS Device control string introducer PU1 Ignored PU2 Ignored STS Ignored CCH Ignored MW Ignored SPA Ignored EPA Ignored CSI Control sequence introducer ST String terminator OSC Ignored PM Ignored APC Ignored A.3 VT3XX Functions Cuurently only the implemented control sequences are listed. A.3.1 Set Mode ESC ?67h sends BS and sends DEL A.3.2 Reset Mode ESC ?67l sends DEL and sends BS A.3.3 National Replacement Character Sets In this mode the ASCII characters: # @ [ \ ] ^ _ ` { | } ~ are mapped into characters of the international character set. Only one NRC can be active at one time, the format to select one is: ESC primary final 38 APPENDIX A. CONTROL CODES AND ESCAPE SEQUENCES Primary selector ( G0 ) G1 * G2 + G3 Final selector A British 4 *RI Dutch 5 or C Finnish R *RI French 9 or Q French Canadian K German Y Italian ' or E or 6 Norwegian/Dutch %6 *NI Portugese Z Spanish 7 or H Swedish = Swiss A.4 4014 Mode A.4.1 Alpha Mode Cursor Movement BS Cursor left HT Cursor right LF Cursor down VT Cursor up CR Cursor to left margin Character Set Sizes ESC 8 Normal 35x76 (lines x columns) ESC 9 Small 38x81 ESC : Smaller 50x120 ESC ; Smallest 58x133 ESC 6 *NI Enter Italics ? ESC 7 *NI Exit Italics ? A.4. 4014 MODE 39 Mode Changing GS Vector mode ESC SUB GIN mode FS Point plot mode ESC FS *NI Special point plot mode RS Incremental mode CAN Return to text terminal A.4.2 Other Functions and Extended Escape Codes ESC ETB Hardcopy ESC ENQ Transmit status ESC STX Enable block fill/erase ESC ETX Disable block fill/erase ESC "R Enable rectangle draw ESC "r Disable rectangle draw ESC x Enable selective erase ESC /0d Dots on ESC /1d Dots off ESC /2d Dots complemented A.4.3 Vector Mode GS Next vector is dark address Draw vector, next vector is visible ESC ` Solid vector ESC a Dotted ESC b Dot-dashed ESC c Short-dashed ESC d Long-dashed ESC p Solid vector, XOR ESC q Dotted, XOR ESC r Dot-dashed, XOR ESC s Short-dashed, XOR ESC t Long-dashed, XOR ESC SUB GIN mode US Alpha mode, don't move CR Alpha mode ESC FF Alpha mode, clear screen 40 APPENDIX A. CONTROL CODES AND ESCAPE SEQUENCES A.4.4 Point Plot/Special Point Plot Mode address Plot point intensity address *NI Special plot point CR Alpha mode ESC FF Alpha mode A.4.5 Incremental Point Plot Mode SP Pen up P Pen down D North E North east A East I South east H South J South west B West F North west CAN Alpha mode ESC SUB GIN mode A.5 4105 Commands In the following list capital letters are part of the command sequences and lower case identifiers denote Tektronix encoded parameters. ESC IQ code *NI Report terminal settings ESC IJ normal shifted *NI Change GIN cursor speed ESC JC *NI Copy ESC KC *NI Cancel ESC KR mode *NI Change carriage return/line feed mode ESC KD number contents *NI Define macro ESC KO number contents *NI Define nonvolatile macro ESC KA mode *NI Enable dialog area A.5. 4105 COMMANDS 41 ESC KW mode *NI Enable key expansion ESC KX number *NI Expand macro ESC KH mode *NI Hardcopy ESC KI mode Ignore deletes mode ESC KF mode *NI Change line feed/carriage return mode ESC KL mode *NI Lock keyboard ESC KQ *NI Report errors ESC KV *NI Reset ESC KU *NI Save nonvolatile parameters ESC KE mode *NI Change echo mo de ESC KZ char-delete line-delete literal *NI Change edit characters ESC KT threshold *NI Change error threshold A.5. 4105 COMMANDS 40 ESC KY char *NI Change key execute character ESC KS mode *NI Change transparent mode ESC KB positions *NI Change tab stops ESC LL number *NI Change number of lines in dialog area ESC LP start-point fill-boundary *NI Start panel boundary ESC LZ *NI Clear dialog area ESC LG position *NI Draw to position ESC LH position *NI Draw marker at position ESC LE *NI Finish Panel ESC LT text *NI Graphic text ESC LF position *NI Move to position ESC LB number *NI Change number of lines for dialog buffer ESC LI char-color char-background-color dialog-background-color *NI Change dialog area color ESC LV mode *NI Change dialog area visibility ESC LM writing-mode *NI Change dialog area writing mode ESC MP number *NI Choose fill pattern ESC MG writing-mode *NI Change graphics area writing mode ESC MN direction *NI Change graphtext direction ESC MR mantissa power-of-two *NI Change graphtext rotation ESC MC width height spacing *NI Change graphtext size ESC ML color *NI Change line color ESC MV style Change line style ESC MM type Change marker type 42 APPENDIX A. CONTROL CODES AND ESCAPE SEQUENCES ESC MT text-color *NI Change text color ESC NM mode *NI Prompt mode ESC NR transmit receive *NI Change baud rates ESC NK time *NI Change break time ESC NU char *NI Change echo suppression cancel character ESC NE string *NI Change EOF string ESC NT string *NI Change EOL string ESC NC first-char second-char *NI Change EOM characters ESC NF mode *NI Change flow control mode ESC NP string *NIChange prompt string ESC NQ size *NI Change input buffer size ESC NB stopbits *NI Change number of stop bits ESC ND delay *NI Change transmit delay ESC QI values *NI Map color to monochrome values for print ESC QU density *NI Choose color hardcopy image density ESC QD type *NI Choose printer type ESC QL pages page-origin ff-mode *NI Change dialog hardcopy attributes ESC QE attributes *NI Change hardcopy monchrome attributes ESC QO orientation *NI Change image orientation ESC RU plane writing-mode bits-per-pixel *NI Begin pixel operations ESC RX dest.-plane d.-lower-left-corner first-source-corner second-s.-corner *NI Copy pixels ESC RP number color *NI Write pixels ESC RR lower-left-corner upper-right-corner fill-color *NI Fill rectangle ESC RL array *NI ? ESC RH position *NI Move to pixel position ESC RS lower-left-corner upper-right-corner *NI Change coordinates for pixel operations ESC RW first-corner opposite-corner *NI Change window on 4096*4096 coordinates ESC TD first-color second-color *NI Change alpha cursor colors A.5. 4105 COMMANDS 43 ESC TF colors *NI Change color indices for dialog area ESC TG plane colors*NI Change color indices forplane ESC TC first-color second-color third-color *NI Change GIN cursor color ESC SX number position *NI Change GIN cursor position ESC SUB Enter 4010 GIN mode ENQ *NI Inquire 4105 status US *NI Enter 4105 alpha mode ESC CAN Enter echo suppression mode FS Enter marker mode GS Enter vector mode ESC FF Clear screen, enter alpha mode ESC #!0 Report terminal mode ESC ENQ Report 4010 status ESC %! mode Change to a different terminal mode ESC font Change fonts ESC style Change 4014 line style ESC ETB 4014 hardcopy Appendix B ASCII Control Codes B.1. 7-BIT CONTROL CODES 45 B.1 7-bit Control Codes ______________________________________________________________________________ | Dec | Oct | Hex | Keys | Atari | ASCII name | |_______|______|________|+|__character___|__________________________| | 0 |000 | 00 | <@> | None | N_ L Null | | 1 |001 | 01 | | Up Arrow | SOH Start of header | | 2 |002 | 02 | | Down " | STX Start text | | 3 |003 | 03 | | Right " | ETX End text | | 4 |004 | 04 | | Left " | EOT End of trans. | | 5 |005 | 05 | | Close Box | ENQ Enquiry | | 6 |006 | 06 | | Move Box | ACK Acknowledge | | 7 |007 | 07 | | Full Box | BEL Bell | | 8 |010 | 08 | | Check | BS Backspace | | 9 |011 | 09 | | Clock | TAB Horizontal tab | | 10 |012 | 0A | | Bell | LF Linefeed | | 11 |013 | 0B | | Note | VT Vertical tab | | 12 |014 | 0C | | FF | FF Formfeed | | 13 |015 | 0D | | CR | CR Carrige return | | 14 |016 | 0E | | Left Atari | SO Shift out | | 15 |017 | 0F | | Right " | SI Shift in | | 16 |020 | 10 |

| Led 0 | DLE Data link escape | | 17 |021 | 11 | | Led 1 | DC1 X-on | | 18 |022 | 12 | | Led 2 | DC2 | | 19 |023 | 13 | | Led 3 | DC3 X-off | | 20 |024 | 14 | | Led 4 | DC4 | | 21 |025 | 15 | | Led 5 | NAK Neg. acknowledge | | 22 |026 | 16 | | Led 6 | SYN Synchronus idle | | 23 |027 | 17 | | Led 7 | ETB End trans. blocks | | 24 |030 | 18 | | Led 8 | CAN Cancel | | 25 |031 | 19 | | Led 9 | EM End of medium | | 26 |032 | 1A | | ? | SUB Substitute | | 27 |033 | 1B | <[> | ESC | ESC Escape | | 28 |034 | 1C | <\> | Face p. 1 | FS File sep. | | 29 |035 | 1D | <]> | Face p. 2 | GS Group sep. | | 30 |036 | 1E | <^> | Face p. 3 | RS Record sep. | | 31 |037 | 1F | <_> | Face p. 4 | US Unit sep. | | 32 |040 | 20 | | | SP Space | |_______|______|________|__________|______________|__________________________| 46 APPENDIX B. ASCII CONTROL CODES B.2 8-bit Control Codes ______________________________________________________________________________ | Dec | Oct | Hex |Keys + | 7-bit | ASCII name | |_______|______|________|__+__|___equiv.__|_________________________| | 128 | 200 | 80 | <@> | ESC @ | Unused | | 129 | 201 | 81 | | ESC A | Unused | | 130 | 202 | 82 | | ESC B | Unused | | 131 | 203 | 83 | | ESC C | Unused | | 132 | 204 | 84 | | ESC D | IND Index | | 133 | 205 | 85 | | ESC E | NEL New line | | 134 | 206 | 86 | | ESC F | SSA | | 135 | 207 | 87 | | ESC G | ESA | | 136 | 210 | 88 | | ESC H | HTS Horizontal tab set | | 137 | 211 | 89 | | ESC I | HTJ | | 138 | 212 | 8A | | ESC J | VTS | | 139 | 213 | 8B | | ESC K | PLD | | 140 | 214 | 8C | | ESC L | PLU | | 141 | 215 | 8D | | ESC M | RI Reverse index | | 142 | 216 | 8E | | ESC N | SS2 Single shift 2 | | 143 | 217 | 8F | | ESC O | SS3 Single shift 3 | | 144 | 220 | 90 |

| ESC P | DCS Dev. ctrl string | | 145 | 221 | 91 | | ESC Q | PU1 | | 146 | 222 | 92 | | ESC R | PU2 | | 147 | 223 | 93 | | ESC S | STS | | 148 | 224 | 94 | | ESC T | CCH | | 149 | 225 | 95 | | ESC U | MW | | 150 | 226 | 96 | | ESC V | SPA | | 151 | 227 | 97 | | ESC W | EPA | | 152 | 230 | 98 | | ESC X | Unused | | 153 | 231 | 99 | | ESC Y | Unused | | 154 | 232 | 9A | | ESC Z | Unused | | 155 | 233 | 9B | <[> | ESC [ | CSI Command seq. intro.| | 156 | 234 | 9C | <\> | ESC \ | ST String terminator | | 157 | 235 | 9D | <]> | ESC ] | OSC | | 158 | 236 | 9E | <^> | ESC ^ | PM | | 159 | 237 | 9F | <_> | ESC _ | APC | |_______|______|________|______________|___________|_________________________| Due to the way the german bios is written (and probably most of the none US versions) not all of these codes can be produced with the keyboard. Appendix C Simple Macro Processor The macro commands can be in the strings assigned to the function keys or in a file, the command initiator is % for function keys (this is not needed in a macro file). A command line is a maximum of 80 characters long. The macro-processor works in two modi: Function-key mode all characters between commands are sent to the serial port Macro file mode everything between commands except white-space is a syntax error, additional commands are available in this mode. C.1 Arguments Arguments are enclosed in parentheses and separated by commas, they can be of the following types: String constant character string enclosed in single quotes, max. 80 characters. String variable 10 user setable string variables are available: $1 to $10, additionaly 5 predefined strings can be used. Integer constant positive integer in the range 0..32767. Integer variable 10 user setable integer variables are available: @1 to @10, range -32768 to +32767. 48 APPENDIX C. SIMPLE MACRO PROCESSOR Function any of the built-in functions can be used as an argument. C.2 Functions All commands only have to be specified to the point they are unique (for most commands this means one character). ADD(int1,in2) Arithmetic sum. Returns: int1 + int2 AND(int1,int2) Logical and. Returns: int1 and int2 ASSERT() Assert DTR. Returns: 0 BREAK(len,drop-dtr) Send Break for len (integer) mSec, drop DTR according to the drop-dtr (integer) value. Returns: 0 CONCAT(str1,str2) Concatenate str1 (string) and str2 (string) and put the result in the variable $TEMP. Returns: 0 COPY(nr,str) Copy str (string) to string variable number nr (integer). Returns: 0 COMPARE(str1,str2) Compare str1 (string) to str2 (string). Returns: 1 if str1 equals str2 else 0. DROP() Drop DTR. Returns: 0 DIAL(num) Dial number num (1 to 10). Returns: 1 if successful, 0 otherwise. C.2. FUNCTIONS 49 ECHO(message) Echo message (string). Returns: 0 FILESELECTOR(path,filename,prompt) Show a fileselector with path path (string), filename filename (string) and a prompt of prompt (string). The new values for path and filename are in the variables $PATH and $FILENAME. Returns: 1 if [OK] is selected, else 0. GET(in-string,time) Wait for in-string (string), with timeout time (integer) sec. Returns: 1 if sucessful. HANGUP() Hangup the modem. Returns: 0 HISTORY(switch) Turns history recording on if switch is 1 (does not reset the buffer). Returns: 0 INLINE(mode) Reads a line from the keyboard (until is pressed or a maximum of 80 characters are read), if mode is 1 (true) the characters are echoed. The line read is copied into $TEMP. Returns: 0 INPUT(prompt) Prompt for a line of input, result is in $TEMP, prompt is a string. Returns: 1 if [OK] is selected. KERMIT(mode,8-bit-mode,filespec) Start Kermit filetransfer with the following parameters: mode (string): SEND : send file(s) REC : receive file(s) GET : receive file(s) from server 8-bit-mode (integer): 0 : 7 bit ASCII text 1 : 8 bit binary filespec (string): file specification with wildcards. Returns: 0 LOADSETUP(name) Load the setup file with name name (string). Returns: 0 50 APPENDIX C. SIMPLE MACRO PROCESSOR LOADTEL(filename) Load a dialer setup file. Returns: 0 MESSAGE(msg) Displays msg (string) on the statusline. If msg is empty the normal statusline is restored. MACRO(name) Execute the macro with filename name (string) from disk, default path is the current directory. Returns: the value of the exit command, or -3 : syntax error (line in $TEMP) -2 : not enough stack (nested more than one level) -1 : macro buffer full (more than 4kB) OR(int1,int2) Logical or. Returns: int1 or int2 PATH(path) Change default path to path (string). Returns: 0 POPUP(entry,command,name) Redefines an entry in the popup menu: entry : 1..20 command : see list name : string that will be displayed Returns: 0 RUN(name,commandline) Execute program name (string) with commandline commandline (string). If its a .TTP program you'll be asked for parameters. Returns: Return code of program. REASSIGN(alt-key,command) Assigns integer value command to the alternate key value alt-key. Returns: 0 SEND(out-string) Send out-string (string). Returns: 0 C.3. PREFIX OPERATORS 51 SET(nr,int) Set integer variable number nr (integer) to int (integer). Returns: 0 SUSPEND() Displays "Press any key..." on the statusline and waits for a keypress. Returns: 0 WAIT(time) Wait for time (integer)mS x 100. Returns: 0 UNICOMMAND(command) Execute one of UniTerm's internal commands, see list. Returns: 0 XMODEM(mode,file) mode (string): SEND : send file REC : receive file file (string): file to send/receive Returns: 0 YMODEM(mode,filespec) mode (string): SEND : send file(s) REC : receive file(s) filespec (string): file specification with wildcards Returns: 0 C.3 Prefix Operators - negate integer value ! logical not " return integer as string . return string as integer Bug: . and " don't know about negative integers. 52 APPENDIX C. SIMPLE MACRO PROCESSOR C.4 String Constants String constants are a maximum of 80 characters long and are enclosed in single quotes. Special ASCII values can be entered with the escape character \, every character after \ equals itself, except: r : is CR n : is LF 0xx : \0xx is the octal ASCII value 0xx C.5 Predefined String Variables $PATH contains the last file selector path, is initialized to the home directory of UniTerm. $FILENAME contains the last file selector filename, is initialized to ''. $CURRENT contains the current GEM DOS path. $TEMP tempory string for use in the macro processor. $VAR holds the address of UniTerm's parameter block for passing to other programs. C.6 Additional Features in Macro File Mode C.6.1 Labels Twenty local labels (per macro file) can be used: :1 to :20. A label must be the first and only word on a line! C.6.2 Comments A line starting with # is ignored on input. C.7 EXAMPLE 53 C.6.3 Additional Statements These statements can only be used in macro file mode, and will cause an error if used from a function key. if(int) execute the rest of the line if int is not equal 0 jump(nr) goto label number nr exit(int) stop processing and return with value int call(nr) execute subroutine at label nr (subroutines can't be nested) return() return from subroutine C.7 Example ##################################### # Test Macro for UniTerm V2.0b 017 # # Copyright 1988 Simon Poole # # # ##################################### # turn history recording on history(1) call(20) echo('\007\r\nSample UniTerm macro file') echo('\r\n-------------------------\007') # # Reset the modem # copy(1,'ATZ') copy(2,'OK') set(2,5) call(4) # if(@1) echo('\r\nReset\r\n') jump(2) # echo('\r\nToo many retries\r\n') exit(-1) # # Dial the number and wait for CONNECT 54 APPENDIX C. SIMPLE MACRO PROCESSOR # (in real life you would use the dial() function) # :2 # Get number from user if(!input('Enter number (012512002)')) echo('\r\nCancelled') exit(0) # if the string is empty use the default if(compare($T,'')) concat('012512002','') # Hayes want a ATD concat('ATD',$T) # dial............ copy(1,$T) copy(2,'CONNECT') set(2,30) call(4) if(!@1) echo('\r\nFailed\r\n')exit(1) # # Login # # this is for our LocalNet 20 system :6 send('\r') if(!get('#',2)) break(100,FALSE) if(!get('#',2)) send('\001\001') send('echo off\r') if(!get('#',2)) echo('\r\nSomething is really wrong!') hangup() exit(-1) # call the system send('call e780\r') # should have a counter here, but you can always stop with ^C if(!get('COMPLETED',3)) send('done\r') jump(6) if(!get('ogin',3)) send('done\r') jump(6) send('poole\r') # # should send my password here # # Finished! exit(0) ######################################################### # # # Send a string to a Hayes compatible modem # # # ######################################################### # # @1 number of retries # @2 timeout # $1 string to send (telephone number...) C.8. UNITERM INTERNAL FUNCTION NUMBERS 55 # $2 string to wait for (CONNECT) # :4 set(1,3) :5 echo('\r\nTry: ') echo("add(4,-@1)) set(1,add(@1,-1)) wait(10) # send attn string echo('\r\nSending +++') send('+++') # we might get a OK here... get('OK',2) echo('\r\nSending ') echo($1) send($1) send('\r') if(and(!get($2,@2),@1)) jump(5) return() ######################################################## # # # Home cursor and clear screen # # # ######################################################## :20 echo('\033[f\033[2J') return() ######################################################## A very useful aspect of the macro processor, is that you can assign a string like %R('TEMPUS.PRG','') to a function key and run your favourite editor just by pressing one key. C.5 UniTerm Internal Function Numbers ResetTek = 1 VDIOutput = 2 PrintTextScreen = 3 TekMode = 4 TextMode = 5 Reset = 6 AutoPrint = 7 56 APPENDIX C. SIMPLE MACRO PROCESSOR Zoom = 8 132ColumnToggle = 9 ScrollLock = 10 49LineToggle = 11 SendAnswerBack = 12 ShortBreak = 13 DropDTR = 14 LongBreak = 15 SaveHistory = 16 ControlHistory = 17 Switch = 18 ControlCapture = 19 PlayBack = 20 SendFile = 21 DegasSave = 22 ReplayHistory = 23 Hangup = 24 Dial1 = 25 Dial2 = 26 Dial3 = 27 Dial4 = 28 Dial5 = 29 Dial6 = 30 Dial7 = 31 Dial8 = 32 Dial9 = 33 Dial10 = 34 SetPath = 35 DelFile = 36 DiskSpace = 37 F1 = 38 F2 = 39 F3 = 40 F4 = 41 F5 = 42 F6 = 43 F7 = 44 F8 = 45 F9 = 46 F10 = 47 SF1 = 48 SF2 = 49 SF3 = 50 C.8. UNITERM INTERNAL FUNCTION NUMBERS 57 SF4 = 51 SF5 = 52 SF6 = 53 SF7 = 54 SF8 = 55 SF9 = 56 SF10 = 57 Utilities = 58 ToggleMeta = 59 Help = 60 InsertClip = 61 SaveClip = 62 ViewHistEOL = 63 Appendix D The KeyEdit Program If you have got a complete release of UniTerm, you should have a copy of KEYEDIT.PRG (Please check that it is for version 1.6f or higher!). This program enables you to edit the keyboard table stored in an UniTerm setup file, additionally you can create an executable keyboard table loader or just output the table itself. D.1 Editing a UniTerm Setup File Start KEYEDIT.PRG and press when you see the opening dialog box. It will take a few seconds to create the display. You can only edit a existing setup file with predictable results, so select [Load UniTerm File] and select the file you want to edit. Select the key you want to change (select the appropriate part of the table (normal, shifted or capslocked)) and then the character you want to assign to the key. When you are finished with editing, select [Save UniTerm File]. Don't try to change the characters on the keypad, cursorkeys or function-keys in the UniTerm setup file. These keys are hardwired via keycode to specific strings (like on a real VT100). D.2 Updating your Setup File To move your custom keyboard table from an old version of UniTerm to a new one, do the following: Rename the old setup file Start UniTerm and set all parameters that need changing Save the setup as UNITERM.SET D.2. UPDATING YOUR SETUP FILE 59 Leave UniTerm and start KeyEdit Load your old setup file Save on top of UNITERM.SET Appendix E Key assignments and generated codes Table E.1: VT100 Cursor Keys ___________________________________________________________________ |__VT100_Key____|_UniTerm_key__|__ANSI_normal_|__ANSI_application_| | Cursor Up | Cursor Up | ESC [A | ESC OA | | Cursor Down | Cursor Down | ESC [B | ESC OB | | Cursor Right | Cursor Right | ESC [C | ESC OC | |__Cursor_Left__|_Cursor_Left__|__ESC_[D______|__ESC_OD___________| Table E.2: VT52 Cursor Keys ___________________________________________________________________ |__VT100_Key____|_UniTerm_key__|__ANSI_normal_|__ANSI_application_| | Cursor Up | Cursor Up | ESC A | ESC A | | Cursor Down | Cursor Down | ESC B | ESC B | | Cursor Right | Cursor Right | ESC C | ESC C | |__Cursor_Left__|_Cursor_Left__|__ESC_D_______|__ESC_D____________| 61 Table E.3: VT100 Keypad _________________________________________________________________________ |__VT100_Key___|____UniTerm_key___|__Numeric_mode__|__Application_mode__| | PF1 | Keypad ( | ESC OP | ESC OP | | PF2 | Keypad ) | ESC OQ | ESC OQ | | PF3 | Keypad / | ESC OR | ESC OR | | PF4 | Keypad * | ESC OS | ESC OS | | Keypad 7 | Keypad 7 | 7 | ESC Ow | | Keypad 8 | Keypad 8 | 8 | ESC Ox | | Keypad 9 | Keypad 9 | 9 | ESC Oy | | Keypad 4 | Keypad 4 | 4 | ESC Ot | | Keypad 5 | Keypad 5 | 5 | ESC Ou | | Keypad 6 | Keypad 6 | 6 | ESC Ov | | Keypad 1 | Keypad 1 | 1 | ESC Oq | | Keypad 2 | Keypad 2 | 2 | ESC Or | | Keypad 3 | Keypad 3 | 3 | ESC Os | | Keypad 0 | Keypad 0 | 0 | ESC Op | | Keypad - | Keypad - | - | ESC Om | | Keypad , | Keypad + | , | ESC Ol | | Keypad . | Keypad . | . | ESC On | |__Keypad_Enter|____Keypad_Enter__|__CR/CRLF_______|__ESC_OM____________| 62 APPENDIX E. KEY ASSIGNMENTS AND GENERATED CODES Table E.4: VT100 Keypad (VT52 mode) _________________________________________________________________________ |__VT100_Key___|____UniTerm_key___|__Numeric_mode__|__Application_mode__| | PF1 | Keypad ( | ESC P | ESC P | | PF2 | Keypad ) | ESC Q | ESC Q | | PF3 | Keypad / | ESC R | ESC R | | PF4 | Keypad * | ESC S | ESC S | | Keypad 7 | Keypad 7 | 7 | ESC ?w | | Keypad 8 | Keypad 8 | 8 | ESC ?x | | Keypad 9 | Keypad 9 | 9 | ESC ?y | | Keypad 4 | Keypad 4 | 4 | ESC ?t | | Keypad 5 | Keypad 5 | 5 | ESC ?u | | Keypad 6 | Keypad 6 | 6 | ESC ?v | | Keypad 1 | Keypad 1 | 1 | ESC ?q | | Keypad 2 | Keypad 2 | 2 | ESC ?r | | Keypad 3 | Keypad 3 | 3 | ESC ?s | | Keypad 0 | Keypad 0 | 0 | ESC ?p | | Keypad - | Keypad - | - | ESC ?m | | Keypad , | Keypad + | , | ESC ?l | | Keypad . | Keypad . | . | ESC ?n | |__Keypad_Enter|____Keypad_Enter__|__CR/CRLF_______|__ESC_?M____________| 63 Table E.5: VT2XX Keys _______________________________________________ | VT2XX Key |Assigned to | Sends | | | for down- | (default | |_____________|loadable_keys_|___on_a_VT2XX)__| | Find | | ESC [1~ | | Insert here| | ESC [2~ | | Remove | | ESC [3~ | | Select | | ESC [4~ | | Prev Screen| | ESC [5~ | |__Next_Screen|______________|____ESC_[6~_____| | F6 (F6) | F1 | ESC [17~ | | F7 (F7) | F2 | ESC [18~ | | F8 (F8) | F3 | ESC [19~ | | F9 (F9) | F4 | ESC [20~ | | F10 (F10) | F5 | ESC [21~ | | F11 (F11) | F6 | ESC [23~ | | F12 (F12) | F7 | ESC [24~ | | F13 (F13) | F8 | ESC [25~ | | F14 (F14) | F9 | ESC [26~ | | Help (F15) | F10 | ESC [28~ | | Do (F16) | Shift F1 | ESC [29~ | | F17 (F17) | Shift F2 | ESC [31~ | | F18 (F18) | Shift F3 | ESC [32~ | | F19 (F19) | Shift F4 | ESC [33~ | | F20 (F20) | Shift F5 | ESC [34~ | |_____________|______________|________________| `686 o"h###ByҝNLNV/./. ?.?<VNAN^ _ NA#AC!It0B BAZBt0B  A)BXB BA9BXB BHyZHz ?<1N NXHyZHz?<1N NXHyZNXHyZHz?< N XPKHy?<PHyJfN 0N X?<.?3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu _4` _t6 Bo r aSB`2aNH?K| _r ar a/L?K|Nu _r aN _4` _t"x0HgJJjDxvCKzp cRЀ`|e W0R"f`6 _4` _t2xJAjDAxvCKp0 2H@0RJAfJg<-RBlCSBr aQSCaQN _"_v` _"_60`JfQ$ItRJf` _4v` _46"_JBjtJCkgCe4` BSCr axQSBkalQN _6kfv2_t Cc"4YBv` _6kfv"_t Cc4QBvSBkr a(QSCC" A0 9c^a JgYC`NH Kl"oA/ N L KlNu(_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHy ` Hy l0< LNREWRITE required prior to WRITE or PUTDisk or directory full _$_"Wp i e)H/ N L4NH/ N Lp)` _"WJ9Kf*J)f i e)H/ N L i d)J)fJg i dB9KJ)fBiQKNz`z _$_"WptvH/ HyKa<29KXL- -fJf^p`4  fJg*`N0eH  bBԂip(؄ij؄ifԄibԁRCJ)f  g i e) 0e 9c~Jg:JgD i d J)gPKJf 6Höf4N$NHy 0<`Hzh0<N _$_0"Wt&JRJ)f:H/ HyKaX29KXL i d J)PKf RBBe`Be`N Bad digit in number encounteredOverflow during READ of number(_ _/ C (g ( fJ(fv$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f0abLEJ@g *f` J9Kg R@Bh` / /<?( ?<?NA LJlp!K|JfnL`rH@Hsp/Bg?<?NA LRA3J9Kg^ fSA` fL AgUH@Hz+p 3 dp` SAH@Hz$p/?<?<@NA LJ9Kg`z fSA` fSAH@Hzp` f>H@Hzp `H@Hzp 3 dp/?<?<@NA LQ` d4 gb9@HHzxp/?<?<@NA LJ9Kg& AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LN  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-fileHK _0"_e /LKNuHyN(/B9K/|KNuHK _0 @f0"|KKp` "_J@jpEKr4@ BbBS@kQ/LKNuHK _4SBkt82$_rAbd0 @f0"|KKp` "_J@jp6ADb6CG0IS@k$eQ/LKNuHK _4k2SAk0"_p6B@bE0)CS@kQ/LKNuHK _2$_r0 @f0"|KKp` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LKNuHK _4kF2SAk>0 @f0"|KKp` "_J@jpJBg@b6B@oCEKSBkQ/LKNuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"ye HyN(N#L#L .f -|`-| nNнLf yLNStack overruns heap _(N _0/Ho |3JyfXNX/#L"|a "_a"|aJyg yL9BgNA/ ?< NA\Nu09Nu09ByNu _3ByNByNu *** *** Copyright 1986, CCD and OSS, Inc.*          pT BBb4&2J ^ (  VlX$Fd ( *@ B @ ( 0  ##################################### # Test Macro for UniTerm V2.0b 017 # # Copyright 1988 Simon Poole # # # ##################################### # turn history recording on history(1) call(20) echo('\007\r\nSample UniTerm macro file') echo('\r\n-------------------------\007') # # Reset the modem # copy(1,'ATZ') copy(2,'OK') set(2,5) call(4) # if(@1) echo('\r\nReset\r\n') jump(2) # echo('\r\nToo many retries\r\n') exit(-1) # # Dial the number and wait for CONNECT # (in real life you would use the dial() function) # :2 # Get number from user if(!input('Enter number (012512002)')) echo('\r\nCancelled') exit(0) # if the string is empty use the default if(compare($T,'')) concat('012512002','') # Hayes want a ATD concat('ATD',$T) # dial............ copy(1,$T) copy(2,'CONNECT') set(2,30) call(4) if(!@1) echo('\r\nFailed\r\n')exit(1) # # Login # # this is for our LocalNet 20 system :6 send('\r') if(!get('#',2)) break(100,FALSE) if(!get('#',2)) send('\001\001') send('echo off\r') if(!get('#',2)) echo('\r\nSomething is really wrong!') hangup() exit(-1) # call the system send('call e780\r') # should have a counter here, but you can always stop with ^C if(!get('COMPLETED',3)) send('done\r') jump(6) if(!get('ogin',3)) send('done\r') jump(6) send('poole\r') # # should send my password here # # Finished! exit(0) ######################################################### # # # Send a string to a Hayes compatible modem # # # ######################################################### # # @1 number of retries # @2 timeout # $1 string to send (telephone number...) # $2 string to wait for (CONNECT) # :4 set(1,3) :5 echo('\r\nTry: ') echo("add(4,-@1)) set(1,add(@1,-1)) wait(10) # send attn string echo('\r\nSending +++') send('+++') # we might get a OK here... get('OK',2) echo('\r\nSending ') echo($1) send($1) send('\r') if(and(!get($2,@2),@1)) jump(5) return() ######################################################## # # # Home cursor and clear screen # # # ######################################################## :20 echo('\033[f\033[2J') return() ######################################################## ##################################### # Test Macro for UniTerm V2.0c 002 # # Copyright 1988 Simon Poole # # # ##################################### :1 # get a line of input if(!input('Please enter a single number:')) exit(0) # get the integer and set integer variable one to it's value set(1,.$T) # a simple loop :2 # write the number to the screen # this is pretty slow since DW/DH chars are rather slow # # top half echo('\r\n\033#3') echo("@1) # bottom half echo('\r\n\033#4') echo("@1) # decrement the counter set(1,add(@1,-1)) if(@1) jump(2) # back to the beginning again jump(1) ##################################### ##################################### # Test Macro for UniTerm V2.0d 002 # # Copyright 1988 Simon Poole # # # ##################################### # # Sample startup macro # #################################################################### # Reassigns two popup fields and a few keys. # Can be used as a normal macro (start with %macro('example3.mac')) # or used as the auto-startup-macro # or can be assigned to startup UniTerm via the desktop # #################################################################### # set the second last popup entry to view buffer with EOL display popup(19,63,'ViewEOL') # set to the same (awlful stupid thing to do :-)) reassign(01,63) # set the last popup entry to view buffer without EOL popup(20,23,'View') # # -> ScrollLock (ugh, but some people like this) reassign(-11,10) # -> Help (so that we can still get help) reassign(-12,60) ##################################### `dpp o"h#fD#fH#fL,IPc.N//Bg?<JNA ByfPNNV?<NAN^NuNV/./. /.?<NNN^ _ N/,HNVA-Hp=@r=A0.R@=@29kz@Ak40BW4.6<CWĀD@dB00 @f:p=@"n 4xDg/9kZ4B?0 ??<NF n 0.00.N^,_ _XN/,HNVA-Hp=@r=A0.R@=@29kz@Am40BW4.6<CWĀD@dB00 @f:p=@"n 4xDg/9kZ4B?0 ??<NF n 0.00.N^,_ _XN/,HNVA"-H .-@2. HЁ-@-@ .N^,_ _\N/,HNVA-H09kv29knAfP?9ktHz?<NQ4Bd t=B`t=B yk69ktB69krA49kpBf" yk69kt89krA69klCf" yk89kt:9krA89ktDAm:0@=E/9kZ?C$Ox?$Q?<?<N>>/9kZ?.HnHnNH/9kZ09kr@Ak?0Bg?<NF/9kZ?.Bg?<NF/9kZ?.Nb-@ @-H/9kZ29ktACm?1Bg2.RA?2.RA?2(UA?2(UA?NE`p3krr3ktN^,_Nu/,HNVA>-H0. A/9kZ?.A"Or?"Q?<?<N>>N^,_ _XN/,HNVA X-H . "9kg t=B`t=B?9n @B;t? NNf?9n n 0.@p? NN?9n n 0.@?p? NN?9n n 0.@@p? NN?9n n 0.@Ap? NN?9n n 0.@Bp? NN?9n n 0.@Cp? NNf?9n n 0.@Dp? NNF?9m n p(? NN.?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p( ? NNn?9m n p( ? NNV?9m n p( ? NN>?9m n p( ? NN&?9m n p( ? NN?9m n p()? NN?9m n p(? NN?9nR n p(b? NN?9nP n p(a? NN?9nT n p(c? NN?9nV n p(d? NN~?9nX n p(e? NNf?9nZ n p(f? NNN?9m n p(? NN6?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NN?9m n p(? NNv?9m n p(? NN^?9m n p(? NNF?9m n p(? NN.?9m n p(? NN?9m n p(? NN?9n4 n p(S? NN?9n2 n p(R? NN?9n n p(H? NN?9n n p(G? NN?9n\ n p(g? NN?9n^ n p(h? NNn?9n` n p(i? NNV?9n" n p(J? NN>?9m n p(? NN&?9m n p(? NN?9m n p(? NN?9m n p( ? NN?9m n p(!? NN?9m n p("? NN?9m n p(#? NN?9m n p($? NN~?9m n p(%? NNf?9m n p(&? NNN?9m n p('? NN6?9m n p((? NN?9m n p(+? NN?9n$ n p(K? NN?9n. n p(P? NN?9n( n p(M? NN?9nb n p(j? NN?9nd n p(k? NN?9nf n p(l? NNv?9n* n p(N? NN^?9m n p(*? NNF?9nN n p(`? NN.?9m n p(,? NN?9m n p(-? NN?9m n p(.? NN?9m n p(/? NN?9m n p(0? NN?9m n p(1? NN?9m n p(2? NN?9m n p(3? NNn?9m n p(4? NNV?9m n p(5? NN>?9m n p(6? NN&?9nh n p(m? NN?9nj n p(n? NN?9nl n p(o? NN?9nr n p(r? NN?9m n p(8? NN?9n n p(9? NN?9n n p(:? NN~?9nn n p(p? NNf?9np n p(q? NNNN^,_ _XN/,HNVA:-H/9kZ?<prA??.?.?.?. ?>Rykx ykxob/9kZ?<prA??<2?< ?<?<BgBgN8`3k^/9kZ?AdO"O r Q?<BgN>>/9kZ?<prA??<2?< ?<?<BgBgN8`3kh/9kZ?AO"OrQ?<BgN>>/9kZ?<prA??<2?<?<?<BgBgN8`3kf/9kZ?AO"OrQ?<BgN>>/9kZ?<prA??<2?<?<?<BgBgN8`3kd/9kZ?AO"OrQ?<BgN>>/9kZ?<prA??<2?<?<?<BgBgN8`3kb/9kZ?AO"OrQ?<BgN>>/9kZ?<prA??<2?<?<?<BgBgN8`3k`/9kZ?AHO"O r Q?<BgN>>/9kZ?<prA??<7?<?<?<BgBgN8`3kp/9kZ?AO"OrQ?<BgN>>/9kZ?<prA??<7??<?<BgBgN8`3kn/9kZ?AO"OrQ?<BgN>>/9kZ?<prA??<7?<?<?<BgBgN8`3kl/9kZ?A O"OrQ?<BgN>>/9kZ?<prAtB??<7?<?<?<BgBgN8`3kj/9kZ?AO"O?<BgN>>09kp3kv/9kZ??<BgNF/9kZN n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HNb n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HNb0. H//<Nc< м/HnN^*p=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HNbp=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HNb/.NP@d0. Hм//.N_N^,_ _\N/,HNVA-HNbp=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( N_`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( N_`0@ @ b$@0;N xxRn0.no2.H//<Nc<"Ҽ//. N_N^,_ _XN/,HNVA-HNb n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.NDN^,_ _N/,HNVA-HNbp=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HNb0.=@2. =A$.-Bx?<(HnHnHnxHntNMN^,_ _PN/,HNVtA6-HNb0. =@".-Ax?<rHnHnHnxHntNMN^,_ _\N/,HNVtA^-HNb .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNMN^,_ _N/,HNVAH-HNb/.?. HnHnHnHnNH4/.Bg?<?.?.?.?.N/LNuH _0@"_24BAAc1V`t>/LNuH _02S@AC2YQ/LNuH _02S@AC2YQ/LNuH _02S@AC2FAYQ/LNuB9`PByfB _0g$_jp"_// HNULBtJ@fL)J9f f8| i f(Bi ` f|Ji f 3| `4<gG BQB) @e *:f&Jrt `e QGUjtWJBkGU3 J9f fpBi `\ f3| p`J g( f*3| H@?3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu(_&&_k+g  gF g fb k eZH/ NUL?<Hk ?<=NAPBt7@ | Jk@Bg?+ Bk/ +/NcH@Hzp `H@Hzp 3 dp/?<?<@NA LQ` d4 gb]9@]HHzxp/?<?<@NA LJ9\g& AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LNM  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-file fDNuH_ _ gfHefDd/L_NuHy_`Hy` NM&t`t _"_ gR e6G_$S" geb"*f&"`&A%S"`&J`а|gb<|fP"9_gH$A#_`:"9_g6$A#_`("9_g$$A#_` @ g"9_g $A#_"`"EfD&R"$b Hy_NM&Jgr"Qd2`"SjN _"_ " gfHefDdgR m @ e@E_"fB#@B$`p&A"+ef "'I`Z"#@B$`L$K`ư| f"_#_`4|f"_#_` |f"_#_` "_#_NHeap overruns stackPointer NILPointer not in heapH` _0"_e /L`NuHybXNM&/B9/|NuH` _0 @f0"|^^p` "_J@jpEr4@ BbBS@kQ/L`NuH` _4SBkt82$_rAbd0 @f0"|^^p` "_J@jp6ADb6CG0IS@k$eQ/L`NuH` _4k2SAk0"_p6B@bE0)CS@kQ/L`NuH` _2$_r0 @f0"|^^p` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/L`NuH` _4kF2SAk>0 @f0"|^^p` "_J@jpJBg@b6B@oCESBkQ/L`NuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"yfDe Hyc(NM&N## .f -|c`-|c nNнf yNStack overruns heapH? _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?Nu0NvDNH|` H| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LNu09f@Nu09fBByfBNu _3f@ByfBNByfBNu[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. &Z@D@h    ",:$$ 2*<, "  0 H*4       &$&$&$&$&$&$&$$$&$*$         (   (          (         (    $ (                                      (   \06 ,Lb8z,F b":,>4@" f,tPdv`  rV "2 * R">:d"F:6B.H*6 *V0b,4 "T & & (,&  H           ,*< * * , , 0 , " BBb42>42J :lX$Fj  "D    * "FV ( *@ B @ ( V   Things that will (maybe) be in the next version *********************************************** - Background download, depends on how many other programs break. - Faster DH/DW chars (perhaps a reimplementation of TXTBLT). - Own keyboard interrupt handler (very maybe). - Multiple session control using UW protocol instead of D*C's proprietary protocol (very maybe). - Own RS232 interrupt handler (very maybe). - Host writable statusline. - Fix all bugs :-) Answers to the 12 most common questions about UniTerm ***************************************************** S.Poole 1.4.88 1) Q: How do I enter control codes on the function keys? A: This causes a lot of people trouble because they don't try the obvious; just press and the key. Example: enters the control code ^A (SOH), which is a small up-arrow in the Atari character set. Have a look at appendix B in the users guide for more information. 2) Q: Why does UniTerm crash when I try to have it autostarted from the `Auto' folder? A: Because UniTerm is a fully-fledged GEM program, and GEM is not initialized when the programs in the `Auto' folder are run. There are various workarounds of this problem available, but they all depend on undocumented features of the operating system. 3) Q: How to I run a program from UniTerm, I use [Run Program] but I always get TOS error 39? A: You have to tell UniTerm to give enough memory back to TOS (the Atari operating system) to run your program in. You can do this with the dialog that appears when you select [Buffers] from [Settings] menu, change the value for the `system' buffer to something larger than the size of your program (this can be quite a bit more, Tempus needs about 180kB to run in). If you don't seem to have enough memory, check if you have the tektronix mode disabled (in the [Graphics] dialog), if you disable this function and save your default setup file, you should have 32kB more memory available. 4) Q: On my German, French, Danish etc. keyboard UniTerm won't allow me to access a character that I have to press to get at, how to I get around this? A: I've tried to put all default key bindings on to keys that are not used by the BIOS, none the less it can still happen that there are conflicts. The solution is very simple the macro command: REASSIGN(alt-key,command) will allow you to assign a command to one of the key combinations, if you use 0 for `command' the character returned by the BIOS will be used, you can put a whole set of REASSIGN commands in your startup macro file to redefine the keyboard. 5) Q: How do I change the size of the history buffer? A: Don't worry you're not stupid, I've had to explain this to physics professors too. The 4 buffers (Transfer,System, Clipboard,History) together represent the total free memory after UniTerm has been loaded*, this naturally means that you only have three free parameters. To change the size of the history buffer you have to change the size of the other three. * The RS232 input buffer is allocated separatly and only on startup. 6) Q: Why doesn't UniTerm have a `fast' file transfer protocol like zmodem? A: A zmodem implementation would increase the size of the program by at least 30kB, considering the fact that it there is not very much performance improvement in relation to using Kermit with large packets* and I've been unable to find a clean protocal definition (I admit I haven't tried very hard), I decided not to add zmodem to the current UniTerm implementation. * Using Kermit with 2kB packets you get very near to the theoretical speed possible on UniTerm to UniTerm transfers. The most recent C-Kermit implementation (4E) supports large packets, MS-DOS and VM/CMS Kermit have done so for quite a long time. 7) Q: Why can't I put user-defefined strings on the arrow and keypad keys? A: Because UniTerm emulates a VT100 type terminal, and the strings sent by the arrow and keypad keys are defined by the terminal (in fact there are 4 different modi, I get enough telephone calls at 10 p.m. `The arrow keys aren't working in this and that editor' as it is, without adding user defined keys). 8) Q: How can I get the `Write to VDI-device' function to work? A: You need a copy of GDOS, the VDI metafile driver and if you wan't to output directly to a printer, a copy of the VDI printer driver. All these programs are copyrighted and can only be obtained by buying expensive program packets, this is a result of Atari's attempt to deliberatly limit the usefulness of the ST. Once you have obtained above programs by paying a lot of money for a program you didn't want in the first place, you have to reserve enough system memory for the drivers, the metafile driver doesn't need very much, the printer driver ~100kB. 9) Q: Why can't MiGraph's Easy-Draw read metafiles created by UniTerm? A: Because MiGraph has got it's own ideas about what the header of a metafile should look like. There is a program in the public domain by Don Rice that transforms the normal (UniTerm) format to Easy-Draw format. 10) Q: Why doesn't UniTerm have this or that sexy feature? A: People sometimes forget that it's very easy to add features to a product, but it is very hard to keep a program from growing to a unresonable size. UniTerm as it is, has reached a size that adding new features would actually reduce the usefulness of the program since the loading time would get too long and the memory requirements would simply be too big. 11) Q: Why doesn't UniTerm use this and that feature of this program I have? A: Because I don't have that program and neither does a significant part of the ST user community. If you send me a free copy of the program with documentation, then I'll consider adapting UniTerm to it. 12) Q: Why doesn't UniTerm run with this neat program I have? A: (Typically asked in conjunction with microRTX, MTC or similar multitasking enviroments or shells) Same answer as 12). Don't forget that I do not have every single program written for the ST and I've only got a very small amount of money to buy such programs. --------------------------------The End------------------------------------ ReadMe for UniTerm V2.0d 002 <-| ---------------------------- | 2.9.88 |This number is displayed on the 'About UniTerm...' dialog box and indicates the "Edit Number" Changes 2.0d to 2.0d -------------------- General: - Setup file format changed! - Further performance improvement: sampling RS232, keyboard, DCD and break status now takes 0.07mS (on new versions of TOS, 0.15mS on the original ROM TOS) instead of 0.14mS. (Technical note: UniTerm uses trap 10 internally now, so other programs should leave this alone.) - Mouse should work again in programs that are started from the 'Run program' item (this stoped working in 2.0d 10 or so). - `Feature' (I'm just documenting a bug that has been around a long time): the `run' macro command only automatically indentifies TTP and TOS programs, if the extension is in capital letters....... - Whitespace is now allowed after macro command names. - Internal command numbers for Ctrl F1 - F10 are 68 to 77. - All RS232 parameters can now be set on a number by number base: add a '/' plus a 5 digit string in the following format to the name filed in the dialer setup menu: BPDSF ||||| ||||Flowcontrol |||| 0 None |||| 1 XOn/XOff |||| 2 RTS/CTS |||Stopbits ||| 0 1 ||| 1 1 ||Databits || 0 8 || 1 7 |Parity | 0 None | 1 Odd | 2 Even Baud 0 19200 1 9600 2 4800 (3 3600) 4 2400 (5 2000) (6 1800) 7 1200 (8 600) 9 300 Trailing fields can be omitted, non digit characters do not change the value of the corresponding parameter. A macro command is now available that will take a string in above format and set the RS232 port: RS232CONF(string) Examples: Dialer: att\1001 set the serial port to 9600 Baud, no parity, 8 data and 1 stop bit, leave the flow control setting alone. te\-2111 leave speed setting as it is, set even parity, 7 data, 2 stop bits and XOn/XOff flowcontrol. Macro: rs232conf('00000') 19200 Baud, no parity, 8 data and 1 stop bit and no flowcontrol (the only setting you would need in a perfect world :-)). rs232conf('----0') just turn flow control off. >>Sorry for the rather horrible user interface!<< Warning: on pre Mega-TOS operating system releases, setting the serial port parameters caused a ASCII DEL to be sent. **************************************************************************** Read Me for the TeX distribution of the UniTerm User's Guide ------------------------------------------------------------ (V1.07 for UniTerm V2.0c 002) The UniTerm users guide in TeX source comprises the following 13 files: ug.tex intro.tex starting.tex more.tex ftrans.tex custom.tex implem.tex ccandesc.tex asciicc.tex smacro.tex keyedit.tex keys.tex index.tex To generate the manual run LaTex twice on ug.tex. A few underful \vbox warnings will appear, just ignore them (I did aswell:-)). Please report any documentation bugs you find. Simon Poole Bitnet: K538915@CZHRZU1A UUCP: ...mcvax!cernvax!forty2!poole Mail address: Bahnhofstr. 51b CH-5430 Wettingen Switzerland /* * Definition of the UniTerm parameter block * Donated to the Public Domain by Simon Poole */ /* These definitions assume: * - int : 16 bits * - long : 32 bits * - pointer : 32 bits * - struct fields are ordered from low to high * memory, without any additional alignment * bytes (PBLength is at the lowest address, * PBClipAddress at the highest) */ typedef struct { long ClipLen; /* current length of clip */ char *ClipBuffer; /* pointer to the buffer itsself */ } ClipStruct; /* UniTerm's clipboard */ typedef struct { int PBLength; /* size of parameter block, currently 54 */ long PBFlags; /* reserved for future expansion */ long PBTextScreen; /* address of the screen in text mode */ long PBGraphScreen; /* address of the graphic screen (if allocated) */ long PBScreenBuffer; /* address of buffer for screen operations 32'000 bytes */ char *PBTransBuffer; /* pointer to buffer used for file transfer */ long PBTransSize; /* size of above buffer */ long PBTransPtrAdr; /* current position in the buffer */ char *PBHistBuffer; /* pointer to history buffer */ long PBHistSize; /* size of above buffer */ long *PBHistBotAdr; /* pointer to the address (NOT offset) of current hist. bottom */ long *PBHistPtrAdr; /* pointer to the address (NOT offset) of current hist. top */ long PBClipSize; /* maximum size of clipboard */ ClipStruct *PBClipRecAdr; /* pointer to the clipboard structure */ } UniStruct; /* UniTerm's parameter block */ /* * When a program is started, the current screen is either PBTextScreen * or PBGraphScreen, a copy of the contents of that screen is in * PBScreenBuffer. * * For historical reasons the addresses pointed to by PBHistBotAdr and * PBHistPtrAdr are not offsets from PBHistBuffer, but are absolute * memory addresses. * * New fields will be added at the end of the parameter block, so the * application only has to check PBLength to see if a field is present * or not. */ /* * UniTerm demo program by Simon Poole 16.03.88 * * THIS IS REALLY JUST A QUICK HACK */ #include #include #include #include "uni.h" #define E_PINVALID 1 #define E_PCORUP 2 #define E_FOPEN 3 #define TMP "TMPDIR" #define EDITOR "E:\\TEMPUS.PRG" #define TRUE 1 #define FALSE 0 char *getenv(); UniStruct *atol(); void exec_editor(); char *get_tmp(); void usage(); void error(); void dump_clip(); void read_clip(); void dump_hist(); main(argc, argv) int argc; char **argv; { char clip_name[127],hist_name[127],tmpname[255]; UniStruct *UniParm; int history,clip,i; /* less than one argument is no good */ if (argc < 2) usage(); /* init */ history=clip=FALSE; /*******************************************************/ /* Work thru commandline arguments */ /*******************************************************/ for (i = 0;i < argc;i++) { if (*argv[i] == '-') { argv[i]++; /* strip off '-' */ switch(*argv[i]++) { case 'U' : if (*argv[i] == (char)0) { if (i < argc) { i++; UniParm = atol(argv[i]); } else usage(); } else UniParm = atol(argv[i]); break; case 'H' : history = TRUE; break; case 'C' : clip = TRUE; break; default : usage(); break; } } } if (!(history || clip)) usage(); /* we want to do something! */ /* some probably useless checks */ if (UniParm == 0) error(E_PINVALID); if (UniParm->PBLength < 50) error(E_PCORUP); /* assume everything is ok if we got this far */ clip_name[0] = '\000'; if (clip) { /* get name of tmp file */ strcpy(clip_name,get_tmp("C_XXXXXX")); /* dump the clipboard */ dump_clip(UniParm,clip_name); } hist_name[0] = '\000'; if (history) { /* get name of tmp file */ strcpy(hist_name,get_tmp("H_XXXXXX")); /* dump the clipboard */ dump_hist(UniParm,hist_name); } /* startup the editor */ strcpy(tmpname,clip_name); strcat(tmpname," "); strcat(tmpname,hist_name); exec_editor(tmpname); /***************************************************/ /* remove the files and bye-bye */ /***************************************************/ if (history) unlink(hist_name); if (clip) { /* read file back into clipboard */ read_clip(UniParm,clip_name); unlink(clip_name); } exit(0); } /**********************************************************/ /* open the file for writing and dump the history to it */ /**********************************************************/ void dump_hist(UniParm,tmpname) char *tmpname; UniStruct *UniParm; { FILE *fd; register long i; register char *Buf; /* only needed for efficency */ long top,bottom; if ((fd = fopen(tmpname,"w")) == (FILE *)NULL) error(E_FOPEN); Buf = UniParm->PBHistBuffer; top = *UniParm->PBHistPtrAdr - (long)Buf; bottom = *UniParm->PBHistBotAdr - (long)Buf; if (top >= bottom) for (i=bottom;i < top;i++) putc(Buf[i],fd); else { for (i=bottom;i < UniParm->PBHistSize;i++) putc(Buf[i],fd); for (i=0;i < top;i++) putc(Buf[i],fd); } fclose(fd); } /**********************************************************/ /* open the file for writing and dump the clipboard to it */ /* map CR to \n */ /**********************************************************/ void dump_clip(UniParm,tmpname) char *tmpname; UniStruct *UniParm; { FILE *fd; register long i; register char *ClipBuf,ch; ClipStruct *ClipRec; /* only needed for efficency */ if ((fd = fopen(tmpname,"w")) == (FILE *)NULL) error(E_FOPEN); ClipRec = UniParm->PBClipRecAdr; ClipBuf = ClipRec->ClipBuffer; for (i=0;i < ClipRec->ClipLen;i++) { ch = ClipBuf[i]; if (ch=='\r') putc('\n',fd); else putc(ch,fd); } fclose(fd); } /****************************************************/ /* copy the file back into the clipboard */ /* map \n to CR */ /****************************************************/ void read_clip(UniParm,tmpname) char *tmpname; UniStruct *UniParm; { FILE *fd; register long i; register char *ClipBuf; ClipStruct *ClipRec; /* only needed for efficency */ if ((fd = fopen(tmpname,"r")) == (FILE *)NULL) error(E_FOPEN); ClipRec = UniParm->PBClipRecAdr; ClipBuf = ClipRec->ClipBuffer; if (fd != (FILE*)NULL) { for (i=0;(!feof(fd))&&(iPBClipSize);i++){ ClipBuf[i]=getc(fd); if (ClipBuf[i] == '\n') ClipBuf[i] = '\r'; } ClipRec->ClipLen = --i; } else error(E_FOPEN); fclose(fd); } /********************************************************/ /* get a unique (hopefully) filename on tmp if possible */ /********************************************************/ char *get_tmp(fname) char *fname; { char *tmpdir,tmpname[255]; mktemp(fname); /* get a temp name */ if ((tmpdir = getenv(TMP)) != (char *)NULL) { strcpy(tmpname,tmpdir); strcat(tmpname,fname); return(tmpname); } else return(fname); } /*****************************************************/ /* startup the editor with the file(s) as argument(s)*/ /*****************************************************/ void exec_editor(fname) char *fname; { char *editor,args[255]; int result; editor = EDITOR; /* args is a Pascal type string, copy fname in to it */ args[0] = (char)strlen(fname); args[1] = '\000'; strcat(args,fname); /* and exec the editor */ result = Pexec(0,editor,args,0L); if (result) error(result); } /**************************************/ /* hey we've got a really stupid user */ /**************************************/ void usage() { puts("Usage: unidemo.prg -H -C -U address"); getchar(); exit(0); } /**************************************/ /* something went really wrong */ /**************************************/ void error(num) int num; { exit(num); } `w o"h#y#y#y,Oc.N//Bg?<JNA ByyN Z/,HNVA-Hp32.3j4.3l6.CSA3n8. DSB3p:.3r<.3t3vDSF3x 9-@-@ @v ?<m??<?<HnHyHyHyjHy?NZN^,_ _ N/,HNVA-Hp32.3j4.3l6.8.DSC3n:. ESB3p<.3r0.3t3vES@3x"9-A-A Ax ?<m??<?<HnHyHyHyjHy?NZN^,_ _ N/,HNVA-HpHy|.?NiXN^,_Nu/,HNVA-H0929AS@=@0.N^,_Nu/,HNVAf-Hp=@`D0.@AX20p@g(2.A?0NE60.@AX?0NG*Rn no/9^N2N^,_Nu/,HNVA -H0. `zAjCpQ`A@CpQ`hACpQ`PACpQ`8ACpQ` S@ @b@0;NtNNsHzl?< NsHn? _C2p"QBg?.A"Op?"QNH0.29nA=@ n$(-B`TN^,_ _ N/,HNVA-H09@d(0. RAEC p Q`$0. RAEC p Q0. RNs2. RAHp?Ns _EC2p"Q0. @AX?00. RCHqNFN^,_ _TN| :Delete Line :Quit :Save :Toggle ModeOverwrite Insert /,HNVA-H y-H 9-@r-A"h2-I .rV&. n((.]EBdt=B"@-I0. nrA_"."n&).]DBd$$n&jtBR@=@R-A`09@d n"h .r AR-@ n (-@`T n .S N^,_Nu/,HNVrA-HAv0B B 9-@NSJHy~HyN&t@dBgNw?<NRHnvHy??.?. N20.32. 3N^,_ _XN/,HNVA*-H09@e?9?9Np3N^,_Nu/,HNVA*-H09@d?9?9Np3N^,_Nu/,HNVA8-H?<NL?<NOBgNNBgBg?9j?9hNJN^,_Nu/,HNVA$-HN/9/9?<?9NN^,_Nu/,HNVA2-H yp2. Ao3N?<?9NN^,_ _TN/,HNVA"-H0. 3Nj?<?9NJN^,_ _TN/,HNVAz-H0.29ĐA4. B V1@vCm??( N`H?<0.29tHA?N V1@?Nf0.29ĐA4. B? V?( NN^,_ _XN/,HNVA-H y-H0.rAm49ȰBnZ69CS@xDo6p8<Dlp??< NN`p?? NN`?.?. N,`<6989zHĉD=C89HĉŐD=@?N@?.?. N`R49ĴAoF?<0929tHA?N=@29Ē@=A?N6?.?. N`N^,_ _XN/,HNVA^-H?<NL09S@29l?0949n? V0( O"ONH09R@??9NxN^,_Nu/,HNVAv-HN=@ y-HrAoHND2.4<B]C@d( n0.  9R# NN.`N8`2.  NNN^,_ _TN/,HNVA-H?<NLBgNN0.29n=@ n -H4.vCnNs/? _C2p"QBg?.A"Op?"QNHp.29l=@?4.69nCVB?49j@??NJ`BgAV@??9j?NJN^,_ _PN/,HNVA-H?9?9/9NN^,_Nu/,HNVA^-H09hW@29nH33d49j69lH…3b(9zHŸl<9H܄3N^,_Nu/,HNVA-H y (rg?9r09p49nBV@?09pV@??9j09dB?N y (# y"(# y$(#?9?9/N?9?9N 9S#N`NN^,_Nu/,HNVA-H y (rg?9r09pV@?09p49nBV@??9j09dB?N y (# y"(# y$(#?<?9/N?9?9N 9R#N`NN^,_Nu/,HNVA -H y-HN nrAn/?$_r? Q/ ?O"O1r0Q?<NT`" AW3` p3N^,_Nu[1][Window has been edited.|Really quit?][Yes|No]/,HNVA -HN80. H`09rAo$ y$(#?9S@?N`N:`0929ưAl$ y$(#?9R@?N`N4`09S@??9Nf`h09R@??9NN`Pp3N`@p3Nv`0p329tBoSA??9NNJ`(69ĶBoSA??9NN(`N`p3N@``N ``Np3`p329FA3?9\N``p329AdN0. ?N`` @g* @g@; @b@0;N`pt|@ @ b@0;N&^pNN^,_ _TN/,HNVAn-HN09`@09rAf(APO"O/p.Q?<NT`30929fAfN0929zAfNt0929|AfN0929xAfN/9^?9N36`0929\AAX40BfR29`:"y")tgNp`."y")tgN`` Ag Ag``D0929\AAX40BfN\`` @ g @g @gP`N|N^,_Nu[0][UniEdit 0.1|Copyright 1988 Simon Poole][OK]A2#yAyC!It0B BA|.Bt0B  NXFrAm?<HyTN_HyTp/HzRBNa2AdBgNw?<HyTHyNl\NwrAfp y#0t6BmNNS?< AO"OpQN-H#^/9^AO"OpQN)n3~/9^?9~ApO"OpQN+x3z/9^?9~A2O"OpQN+x3x/9^?9~AO"OpQN+x3v/9^?9~AO"OpQN+x3f/9^?9~AO"OpQN+x3t/9^?9~AJO"OpQN+x3|/9^N2V/9^?9vN1R/9^?9tN1RAC~ALCp3\@rAX1N09\RAEdC p Q09\@/?<29\RAdHpBgBgBgBgNFn" AX1p3?9\N09\@AX?0BgBgBgBgND09\@AX?0NC09\@AX?0HyrHypHyjHyhNBHylHynHyHyNU09j29lH33$969hWC89nHÇHÔ#NN09l293jt3&9#09H/N(#r3t3?<?<NN 9#r/HyNqNSJp3prAtB????BBgBgBgBgBgBgBgBgBgBgHyHyHyHyHyHyHyNT3NS09rAtBgN|09rAtBg ?9NBNSJ09@dZN` ?<N*` ?<N` ?<NNXHy|.Ni4BgNA Clipboard \*.* Quit Save ---------------- Insert File Write to File File About UniEdit.../,HNVAH-HNv$p=@ n 0.rtBVrdA]DCd R@=@` n 0.S@N^,_ _XN/,HNVfA -HNv$ nC2p"Q npR@rC$n p=@=A0.@eH0.rAW n vx\DWńE n vz:EWƄFBd t=B`S@=@`p=@0. n rAl"2.RA=AR@=@tA`0.@R@rAHnN\x-@lHnN\x-@p?<ZHnHntHnlHnhNZ60.vrAf =A`t=BHnNfHnN^ nC0p Q n C0p Qp.=@r=A0.@eD0.rAWvA0x\DWńEv0z:EWƄFBd t=B`S@=@`p=@r.=Af`&0.R@=@ n 2.tC1Rn0.nfo n 2.0.N^,_ _PN/,HNVA-HNv$p=@ n0.-H0(2. Am 0(R@1@0(Am 0(R@1@0Am0R@0"n0.0)t BvCf0.R@=@`0.2. Am0 nR@"n0.p Q0.S@=@`N^,_ _\N/,HNVA-HNv$ n 0-H0(rAfpT@=@` 0(R@=@/. ?N n 0.-Hp1@1@r. 1A4<1Bv 1Cx01D1D1@1@ !@ /. ?<?.N=/. ?.N=/. ?.A "Op?"QBgBgN7pT@=@ n p1@ n 0.0=@rAgD n 0."n 0.0)"n 2.2)A1@0.=@` n 0."H0)2."H2)A1@D/. n ?(?<?<BgBgBgBg?<?<N<=@/. ?N= n 0."n 0.0)"n 2.2)A1@0.=@0.N^,_ _N/,HNVA-HNv$p=@2. UASA=A n4(4(=B0.rAoS@=@ n4.4=B`/.?.?<BgBgp. ??<BgBgBgN<=@/.?A "Or?"QBgBgN7 n0.0(=@r=A0.2.Ag4.RB=B n0=@` n0.0.1@/.?.N= n0.0( n2.2(Ao& n0."n0.0)1@ n0.0(=@ n2."n2.2)1A n2.1@2.=A0.N^,_ _N/,HNVA-HNv$p@2. A=@?.N8-@/.?=@/.?.AO"OpQN=@/.?.AO"OpQN=@/.?.AnO"OpQN=@/.?.A4O"OpQN=@".-A .N^,_ _N Desk Accessory 6 Desk Accessory 5 Desk Accessory 4 Desk Accessory 3 Desk Accessory 2 Desk Accessory 1 -------------------- Desk /,HNVA-HNv$/. N: N^,_ _XN/,HNVtAB-HNv$0.=@2. tB=A&.-Cx?<HnHnHnxHntNZ6N^,_ _PN/,HNVtA<-HNv$0. =@r=A$.-Bx?< HnHnHnxHntNZ6N^,_ _\N/,HNVtA<-HNv$0. =@r=A$.-Bx?< HnHnHnxHntNZ6N^,_ _\N/,HNVA0-HNv$/.?. A "Op?"QBgBgN7N^,_ _N/,HNVnAV-HNv$ n pR@p2.=A n /N\x-@r?<#HnHnzHnrHnnNZ60.z=@0.N^,_ _\N/,HNVtA4-HNv$p=@". -Ax?<HnHnHnxHntNZ6N^,_ _XN/,HNVtA4-HNv$p=@". -Ax?<HnHnHnxHntNZ6N^,_ _XN/,HNVtA<-HNv$0. =@r=A$.-Bx?<!HnHnHnxHntNZ6N^,_ _\N/,HNVtA<-HNv$0. =@r=A$.-Bx?<!HnHnHnxHntNZ6N^,_ _\N/,HNVAH-HNv$/. BgHnHnHnHnNA /. Bg?<?.?.?.?.N>6N^,_ _XN/,HNVtAn-HNv$0.=@2.=A4.=B6.=C8.=D:.=E<.=F0.=@2. =A?<3HnHnHnxHntNZ6N^,_ _N/,HNVnAN-HNv$0. rAl=A 0. =@".-Ar?<2HnHnzHnrHnnNZ60.z=@0.N^,_ _\N/,HNVAv-HNv$/.BgHnHnHnHnNA BgBgBgBgBg?.?.?.?.N/.Bg?<?.?.?.?.N>6/.?. N =@0.N^,_ _\N/,HNVAH-HNv$/. BgHnHnHnHnNA ?<BgBgBgBg?.?.?.?.N8N^,_ _XN/,HNVtA.-HNv$ . -@x?<6HnHnHnxHntNZ6N^,_ _XN/,HNVAR-HNv$p=@ n0.rtBg" n R@"n0.rR@=@` n 0.N^,_ _PN/,HNVA-HNv$ n rf6p. tBlԼ//Nq`Hм//Nqp=@r. =A`$ n "P0.S@0.rE 2Rn0.no n "Pr. tN^,_ _N/,HNVA8-HNv$ n0.-H0(rAW0(v CWĄD0(xDWńEBd$ /A"Op?"QN`0(tBW0(|FWA0(rAWÊC0(vCWĊDEd"h -I0(AW0(CWňEp.:)E\BDd 4)SBB tfp.R@3@/ E&Op?&QN> n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HNv$ n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HNv$0. H//<Nv м/HnNqp=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HNv$p=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HNv$/.N\@d0. Hм//.NrfN^,_ _\N/,HNVA-HNv$p=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( Nrf`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( Nrf`0@ @ b$@0;N xxRn0.no2.H//<Nv"Ҽ//. NrfN^,_ _XN/,HNVA-HNv$ n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.N=N^,_ _N/,HNVA-HNv$p=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HNv$0.=@2. =A$.-Bx?<(HnHnHnxHntNZ6N^,_ _PN/,HNVtA6-HNv$0. =@".-Ax?<rHnHnHnxHntNZ6N^,_ _\N/,HNVtA^-HNv$ .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNZ6N^,_ _N/,HNVAH-HNv$/.?. HnHnHnHnNA /.Bg?<?.?.?.?.N-HNv$0.=@2. =A?<jHnHnzHnrHnnNZ60.z=@0.N^,_ _XN/,HNVtA~-HNv$0.&=@2.$=A4."=B6. =C8.=D:.=E?<lHnHnHnxHntNZ6 n0.0"n2.2$n4.4&n 6.6N^,_ _N/,HNVA8-HNv$ .R-@ n"<//Nw"0"n r2N^,_ _ N/,HNVRA-HNv$0.=@p2. =Art. 6<Co =CT`=BTv=CV8.T=DR`"0.V@2.VtA 0C3RnV0.VnRo?<Bg?.T?<HnHnHnHnpHnX?<NZN^,_ _N/,HNVA-HNv$?.?. N[N^,_ _XN/,HNV8Ad-HNv$0.=@P2.=AR4.=BT6. =CV?<BgBg?<HnHnHnhHnPHn8?<NZ?.?. N[N^,_ _PN/,HNVA<-HNv$HnHnN[?.?.?.?. NR?.?. N[N^,_ _XN/,HNVA -HNv$?.?. ?.?. NN^,_ _XN/,HNV8A`-HNv$0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?<Bg?<HnHnHnhHnPHn8?<NZN^,_ _PN/,HNV8Aj-HNv$0.=@2. =A4.=BP6.=CR8.=DT:.=EV?< ?.?<?<HnHnHnhHnPHn8?<NZN^,_ _N/,HNVA,-HNv$?<?.?.?.?.?.?. NLN^,_ _ N/,HNVA,-HNv$?<?.?.?.?.?.?. N N^,_ _ N/,HNV8AX-HNv$0.=@P2.=AR4.=BT6. =CV?< ?<Bg?<HnHnHnhHnPHn8?<NZN^,_ _PN/,HNVA&-HNv$?.?.?.?. Bg?<N$N^,_ _PN/,HNV8A<-HNv$0. =@?.Bg?<BgHnHnHnhHnPHn8BgNZN^,_ _XN/,HNVA-HNv$?< ?. NN^,_ _TN/,HNV8AT-HNv$0.=@2.=A4.=B6. =C?<Bg?<BgHnHnHnhHnPHn8BgNZN^,_ _PN/,HNVA"-HNv$?. N\?<?. NN^,_ _TN/,HNVA-HNv$?<?. NN^,_ _TN/,HNV8AB-HNv$0. =@Pr=AR?<BgBg?<HnHnHnhHnPHn8BgNZN^,_ _TN/,HNV8AR-HNv$?.?. N\0.=@2. =A?<lBg?<BgHnHnHnhHnPHn8BgNZN^,_ _XN/,HNVA"-HNv$?. N\"?<?. NN^,_ _TN/,HNVA.-HNv$0. rA?N\6?<h0. rA?NN^,_ _TN/,HNVAl-HNv$?. N\,0. =@rAo$t=BS@=@ vCox=D@=@ ?<?.N*0.rAo?<?. NN^,_ _TN/,HNV6AD-HNv$0. =@2.=A?<'Bg?<BgHnHnHnhHnPHn8BgNZN^,_ _XN/,HNVA-HNv$?<j?. NN^,_ _TN/,HNV8AB-HNv$p=@P2. =AR?< BgBg?<HnHnHnhHnPHn8BgNZN^,_ _TN/,HNVA-HNv$?<?. N N^,_ _TN/,HNV2A-HNv$Hn2Hn4Hn6N\@BgBgNn0.=@P2.=AR4.BS@=@T=AV6.BSC=CX8. DSA=AZ:.=E\<.DSF=F^=E`0.=@b?<BgBg?<HnHnHnhHnPHn8?<NZ?.4?.6NN^,_ _PN/,HNV8A`-HNv$0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?< Bg?<HnHnHnhHnPHn8?<NZN^,_ _PN/,HNVAr-HNv$HnHnHnN\\BgN?<NHnHnHnN\@?.Nx?.?.?.?. N*?.N?.N?.NLN^,_ _PN/,HNVtA6-HNv$0.=@". -Ax?<NHnHnHnxHntNZ6N^,_ _\N/,HNVA-HNv$?</. NN^,_ _XN/,HNVA-HNv$0. ?BNjN^,_ _TN/,HNVA4-HNv$N[rAf ?</N2N[R@?N[N^,_Nu/,HNVAB-HNv$N[rAo*N[S@?N[N[rAf ?</NN^,_Nu/,HNVA<-HNv$p?/Np=@N[=@` NxRn0.noN^,_Nu/,HNVtA,-HNv$p=@?<kHnHnHnxHntNZ6N^,_Nu/,HNVtA,-HNv$p=@?<kHnHnHnxHntNZ6N^,_Nu/,HNVA8-HNv$p.R@rAHnN\x/?. NY=@0.N^,_ _N/,HNVA-HNv$0.F=@2.@=A4.D=B6.B=C8.:zE=D<.8=F0.6=@2.4=A4.2=B6.0E=C8..=D <.,=F 0.*=@2.(=A4.>=B:.<=E&.$-C?<HnHnHnHnNZ60.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _?<Ne.0@Bd0.R@=@`0.n^=B0.N^,_ _XN@NUL:AXO:AXI:PRN:LST:CON:Har fSfr?/LNuHar fSfr?/LNuHar fSf`U?/LNuHahr fSf`S?/LNuHaBr fSf`R?/LNuHar fSf`T?/LNu#0 _  g "_Jjp` 0Cp" g $_Jjr` 2Erg\H(Ge$4SBkQ$SpQ C` $SkQ$SrQEL(JfpC$I/90NuH4 _024SBgQ@4BAAc/L4NuHycNYRange error during set-operationH4 _0246@SCBgQAn68DCCc 0AgRB`/L4NuH4 _0@CEHS@rIVW.J?/L4NuH4 _0@CEHS@rIVV.J?/L4NuH4 _0@CEHS@2FA_VW.J?/L4NuH4 _0@CEHS@2FAYVW.J?/L4NuH4 _0@274BAAc7V`tO>/L4NuH4 _0@"_24BAAc1V`t>/L4NuH4 _02S@AC2YQ/L4NuH4 _02S@AC2YQ/L4NuH4 _02S@AC2FAYQ/L4NuB9L`PLByy _0g$_jp"_// HNNi4LNBtJ@fL)J9Lf f8| i f(Bi ` f|Ji f 3| `4<gG BQB) @e *:f&Jrt `e QGhtWJBkGh3 J9Lf fpBi `\ f3| p`J g( f*3| H@?3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu _4` _t6 Bo r aSB`2aNH?j _r ar a/L?jNu _r aN _4` _t"x0HgJJjDxvCzp cRЀ`|e W0R"f`6 _4` _t2xJAjDAxvCp0 2H@0RJAfJg<-RBlCSBr aQSCaQN _"_v` _"_60`JfQ$ItRJf` _4v` _46"_JBjtJCkgCe4` BSCr axQSBkalQN _6kfv2_t Cc"4YBv` _6kfv"_t Cc4QBvSBkr a(QSCC" A0 9c^a JgYC`NH Z"oA/ NkL ZNu(_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHyl` Hyl~0< LNYREWRITE required prior to WRITE or PUTDisk or directory full _$_"W2/Rbp1Ro4Np `z`z _$_ptvH-Hya29L- -fJfBp`  fJf4J9g`*0e$  bԂi8(؄i2؄i.Ԅi*ԁRC`Jg&JgDJf 6Höf4N$NHym0<`HzV0<NY _$_0t&JRHHya 29LJ9f RBBe`ΰBe`NBad digit in number encounteredOverflow during READV of number(_ _/ C (g ( fJ(fv$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f0abLEJ@g *f` J9g R@Bh` / /<?( ?<?NA LJlp!K|JfnL`rH@Hsp/Bg?<?NA LRA3J9g^ fSA` fL AgUH@Hz+p 3 dp` SAH@Hz$p/?<?<@NA LJ9g`z fSA` fSAH@Hzp` f>H@Hzp `H@Hzp 3 dp/?<?<@NA LQ` d4 gbp9@pHHzxp/?<?<@NA LJ9g& AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LNY  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-file yNuHs< _ gyeyd/Ls0 @f0"|p` "_J@jpJBg@b6B@oCESBkQ/LNuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"yye Hyv~NYN## .f -|vn`-|vn nNнf yNStack overruns heapH? _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?Nu0NvDNH|` H| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LNu09yNu09yByyNu _3yByyNByyNu[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. &   &$   &$8 ," 26: :. 8& r j  ,  "         ((2$4 X&@  (:D ".             (      (, ( $T>B "$"6    0B &      6 "     <* \    $  (  0r           . 4\ؘ$fx&j($&$ 6 0 0 $"$,( ( 0 0  b":,>4@" f,tPdv`  rV "2 * R">:d"F:6B.H*6J"*JFFFF ( B4r"" >$8$8rJ" *,JJ0" J " 4T ^"BBL :0 ,H ,,6 8 ,2 v8 ,6 ,,T  T* ,,  .6   *jV0b,4 "T & & (,&  H          N6r      "$" ,*< * * , , 0 , " BBb4&2J P,R TlX$Fj  "D    * "FV ( *@ B @ ( V  ` o"h#L#P#T,IHc.N//Bg?<JNA ByXN4NV?.?. ?. ?.?.?.?<NNN^ _ NNV/.?. ?<NNN^ _\NNV/.?. ?<NNN^ _\NNV/.?<HNAN^ _XNNV/.?<INAN^ _XNNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _ NNV?.?. ?<NMN^ _XNNV?.?<NNN^ _TNNV/./. /.?<NNN^ _ NNV?<NNN^NuNV?<NNN^NuNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?<%NNN^NuNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?< NMN^ _TNNV/.?<NAN^ _XNNV?./. ?<GNAN^ _\NNV/./. ?.?<@NAN^ _ NNV/./. ?.?<?NAN^ _ NNV?./. ?<NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVA4-H09.rAW69 rCBd t=B` 49=B0.N^,_Nu/,HNVA$-HA C%p"Q/9%N$N^,_ _N/,HNVAZ-H n-H"n-I ")L!A")H!A2)P1A 2.1A4.1B6.1C8.1D:. 1EN^,_ _N/,HNVA$-H n//. BgBgBg?<?< VNdN^,_ _PN/,HNVA$-H n//. BgBgBg?<?< VN,N^,_ _PN/,HNVA$-H n//. BgBgBg?<?< VNN^,_ _PN/,HNVA*-H n//. ?<? y.-H09$R@1@09"R@1@09$R@rH1@p1@ "y#41B 3t3v3x3z3 |3~r3p3rt3,v3x3z3NTNpPNrNp3r3t=BvSC=C` 0.RALE CRn0.nor3 tt3 rv3x3"rz3nN^,_Nu/,HNVA:-Hp O ON̎09@dp O ON̎N^,_Nu/,HNVA-H n 0R@rHH@0N^,_ _XN/,HNVA,-H09&AHp?9&?9&NDN^,_Nu/,HNVAH-Hp V(29BAm0??<P?<?<NB VHh? V0(rNAft,O"ON`4(O"ON` V0(`pw1@`px1@`py1@`pm1@`pt1@`pu1@`pv1@`pl1@`pq1@`pr1@`ps1@`pM1@`pp1@`xpn1@`npP1@`dpQ1@`ZpR1@`PpS1@`F @Jgd @Ng@c @b,@0;N(2tD1B`4tC1B`*BH BbB4; N 49.xDgR:9Ed zO1E`z[1EN|??09(F@3(69#CeBgN3&`?<N3&`09#F@3#NNNN^,_Nu/,HNVA|-Hp3pHnHnN8d=@2.tBvCV|29#|Ag NN.0.2<AmAtBg?.?<N/ NN`|09 \vCgDN-@rHg,t? .6<H(.:<Hȅ/ NNd`,N"rAf?9 N`?9 ~N09|2.4<BvCV|DfHy NN09|2.4<BvCW|DfHy NN|0.rAV69xDVEBdNp=@2.=A`?<Nl29 A3D49Bd HyDN09.`b?9DNV`x?9DN`h?9DNR`X?9DN`H?9DN `8?9DN`( @ b @0;NRn0.no6N09p@d09@d ?9hNN^,_Nu/,HNVA-H?< NJ/9`/.N 9`X/?.N 9`\/BgN 9`P/BgN 9`r Ё/?.N 9`r Ё/?. N?< NN^,_ _ NNV/./. /.?<NNN^ _ N/,HNVA-HN8PA%Q"O""A%Q"O""A%Q"O""No6/9\?9l?9h?9jN/9%"N$NB/9#/9#/9#NXNN yZNN^,_Nu/,HNVAl-HN|Hzv?<NHn ?(AC(|Q|&(ArC)p'(AVC)r((A:C)t(AC)"vQN^,_NuResetF3F2F1SaveClipInsertReplayHelpDiskTransferAh#ZA^C!It0B BABt0B  A0B BNі3JrAmHxHy#N^HxHy#N^HxHy#N^p///N$## @"##"@$)##$@&*##x/Hy.N^p/Hy*N^p/Hy&N^Hy%Hy%Hy%NoHyZNİAZC2p"QN|HyZ?NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVAF-H0.rAf n4900"n 49L2` n490"n 49B2N^,_ _ N/,HNVAf-H09@A20p@f&09029BAR@??<N=@`"0929BAR@??<N=@0.N^,_Nu/,HNVA$-Hp3Br3@?<?<NN^,_Nu/,HNVA@-HNLBg?9%?9%?9%N?<?9%?9%?9%NN^,_Nu/,HNVA@-HN?<?9%?9%?9%NBg?9%?9%?9%NN^,_Nu/,HNVA,-HHn 09429@AR@?N09(29@496B6. C89JĐA=@?<?9.29@SCC??9*??9.29@SA??9*?N0942. A=@49@=B=@`:0.2.4. BCAEC2pb"QRn0.no2.RAAHp2.RA??94NDp3B??9@NN^,_ _TN/,HNVA-H"V ip02. 3N^,_ _TN/,HNVA^-H0. ` np0`F np0`: np0`. np0`" np0`?< NNv`?< NNh`?< NNZ`?< NNL`?< NN>`?< NN0`?< NN"`?< NN`?< NN`?< NN`?< NN`|`x @'g@0 @bD@0;N".Tb~:F b @!g@ @"g* @)gL @*g``N^,_ _\N/,HNVAX-H09@A20p@f?9B?9@N`"09BHS@?N>??9@NN^,_Nu/,HNVAn-H09@294Af@49.vCf?96?Hy0N`?96?Hy0Nx`49*BlR@3@N"N^,_Nu/,HNVA$-Hp3BNh?9B?9@NN^,_Nu/,HNVA|-H0. 2.=@4.SB=B6.@=CB=C89@SD:9J=D?<@?????.???N?.?.?.?9JNN^,_ _PN/,HNVA-H09@CA-H?. N?N=@ Hn N n?HnHnNv?9B?.N=@??.?.?. N0.=@2.4. B=A`d0.2. A=@ n4."nv)C nB"n@0)1@ n0.r A n@p1@Rn0.noN^,_ _TN/,HNVA`-H0.2.A4. =@SA=AB=A69@SC89J=CzEo?<?.???????NN^,_ _\N/,HNVA-H09@CA-H?HnHnN?9B?.N=@??.?.N6090=@2.RA=A`D n0."nS@p)@ n0.@"n0.S@@0)1@Sn0.nlN^,_Nu/,HNVAb-H?. N?N=@ Hn N09@CA-H?HnHnN6?9B?.N=@2. 4.=AS@=@A=@6.–@=C89@SD:9J=D?<?.???????N?.?.?.?9JN090=@2. 4.B=A`D n0."nS@p)@ n0.@"n0.S@@0)1@Sn0.nl29@AHp?.2. 4.BSA?NN^,_ _TN/,HNVAP-H09B=@29@=AHn N0. rAo"49@CA -H?HnHnN?9B?.N3B2.@RA=A4. Ao A=B ` =Br=A 2.4.=AS@=@69@SC89J=C????N09@AHp?9B09B2.AS@?N0. rA^69@89*D]EBdt3BRC3@`=A 0.3B4.3@`N^,_ _TN/,HNVAv-HHn Np=@2. =A`H09BR@3B@AJ2009B490B^ÂCAd?9BN>3BRn0.noNN^,_ _TN/,HNVVA-H092<Aft1AX`(4<Bfv4AX`v5AX49vCf x1=DV`x2=DV:9`AC`A|C`zAbC`dAJC`PA4C`?<?9.:9@SE??9*??9.:.SE??9*?N094=@2.=A`:0.2.4. BCAEC2pb"QSn0.nl29@AHp?9@2.SA?NDp3B??9@NN^,_ _TN/,HNVA|-H09@CA-H0. `@?HnHnN?9B?.NS@2.?09@S@49J?N2.??9JN09@AHp?9B?.N??.N`?HnHnN.Bg09@S@29J??9B?.N2.??9JN09@AHp?<?9B?.N?N`X0=@29@CHq?9@?9@ND n0.0`` @g @g: @g`N^,_ _TN/,HNVA-H0. `09@29*Ag$R@AHp09@R@??NDBgN 09BrAf49@vA1 `b09@rAgHy0?S@?ND?<N`6Hy0?<?9*ND`` @gN @g @g`N^,_ _TN/,HNVAv-H0.S@=@2.=A4.CA -H?HnHnN8?.?. N=@ 0.2. Al n@0(4<BvCg0.8.SDDg28.?0.S@:9J?0.S@<.F??N n0.@0(2<AtBV0.8. D_ECd R@=@`0.S@=@`( n0.x D n@1C0.R@=@`* n0. @0(2<AtBf40.6.?0.S@89J?0. :.E??NN^,_ _\N/,HNVAp-H0. `P?9@?9B?90NJ`J?9@?<?9BN2`2?9@?<?9BN`` @g @g @g`N^,_ _TN/,HNVA-H0. `?9@?9B?90N09@R@=@294=A`?.?<?90NRn0.no`096=@29@SA=A`?.?<?90N\Rn0.no?9@?<?9BN:`Vp=@29*=A`?.?<?90NRn0.no`` @g @gd @g`N^,_ _TN/,HNVA -H0. rA\69*C_D=B0.N^,_ _TN/,HNVA-HHnN0. rAf 49*=B ?. NN2. 4.B^C/?. NNv& C@d0.362. 34t3.69JS@3,09089L3*:96ERA<9J3(t3B69TCd 3@` v3@??9@NN^,_ _XN/,HNVA-H?<?<Np=@29*=A`@?<?.Np=@290=A`?<ENRn0.noRn0.nor=A09*=@`h0.CA-Hp=@290=A`( n0.rEA n@091@Rn0.no nr0Rn0.nor3NN^,_Nu/,HNVA-H09@H/HnNk`09BH/HnXNk`N|p??1;17;0c[?1;2c[?6;2c[?62;1;2;6;8;9c2;0;4;/,HNVAF-H0. `AC2"""`$AC2"""`AC2"""`AnC2"""`AJC2"""`A&C2"""`AC2"""`AC2"""`AC2"""`tAC2"""`^ArC2"""`HANC2"""`2`.S@ @ b@0;N "8NdzN^,_ _TN y`igjnhtdv|{ IDVE\ idve| #'!Q? 0qg CGU cgu FXE fxe #'0gi y`rhl 'DV\ dv|_ `bgjn tiyh{ #`0g' iyh DVE\ idve| #.}= > # /,HNVAB-HA$C%p"QA$C%jp"QA$zC%Rp"QN^,_Nu/,HNVA -Hp32. ` NN` NNp3?9Nl`A$C%r"QA$bC%jr"QA$JC%Rr"Q`jA$C%r"QA$2C%jr"QA$C%Rr"Q`*`& AbA2;NDjN/9%N09249@3<693893:93<9309329 3493N^,_Nu/,HNVA-H09329>3B49<3@NT093293493693893:93 <93?Nl?9B?9@NN^,_Nu/,HNVA-H0. `09x@d?<?9*N`?96?94N09z@d Bgp ?N`b09(3.29zAd Bgr ?N`<09.3(r3.`$` @b@0;N``N^,_ _TN/,HNVA-H09.r Af49&3.NzBg?9*NNۈ?<NJp3NTN?<N>?<N6?<N?<N?<Np3Hy?<BNrHy?<BNdN^,_NuNV?.?. ?. ?.?.?.?<NNN^ _ NNV/.?. ?<NNN^ _\NNV/.?. ?<NNN^ _\NNV/.?<HNAN^ _XNNV/.?<INAN^ _XNNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _ NNV?.?. ?<NMN^ _XNNV?.?<NNN^ _TNNV/./. /.?<NNN^ _ NNV?<NNN^NuNV?<NNN^NuNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?<%NNN^NuNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?< NMN^ _TNNV/.?<NAN^ _XNNV?./. ?<GNAN^ _\NNV/./. ?.?<@NAN^ _ NNV/./. ?.?<?NAN^ _ NNV?./. ?<NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVA-H n -H0( rFAA1@ N^,_ _XN/,HNVA-H/.?.NZ-@2.=A=A0.rAgj n-H4(6.Cg6=@=A/ N"h hN n0(=@rAf4=B` =@4=B/.?.NZ-@`N^,_ _N/,HNVA-H/. BgYHyeN2N^,_ _XN/,HNVAh-H"V i-H0(rAtBgJ0( Af 1B `1A /)?)?<0)R@?0)R@?0)U@?0)U@?NY.N^,_Nu/,HNVA-H V/(Bg?<?(?(N[ V1@rAfFt1B V/(BgNZ V!@"@-I2)1A4)1B6)1C8)1D`V V/(?(NZ V!@"@-I2)4(B1A6)8(D1C:)1E<)1FNp V1@N^,_Nu/,HNVA:-H?< V0(S@?0(S@?0(T@?0(T@?/./. NN^,_ _PN/,HNVAj-H0.rAf4. J=B`t=B6.BxDn =A`06.:. BE:.Eo6. C=E` 6.B=C0.N^,_ _PN/,HNVA-H/.NHnHnN͸/.BgNZ-@ @-H/?.?9$?.?( NN* _1@0(=@/?. ?9"?.?( NN _1@0(=@2(=A4(=BNjN//9V NN~NjD/.Bg?<Ǹ NNprA??<?<?<B?.?.?.?.?.BgBgBgBgBgHy HnHnHnHnHnHnNk=@rAtBg0.@d NN NN0.rAtBgtNj/9VN/ NN/.Bg?<?.?.N[=@0.N^,_ _PN/,HNVA>-H/.BgNZ-@ @-H?. BgBgBgBg?(?(?(?(NNN^,_ _\N/,HNVA*-H/.?<NNjD/.?. NO=@0.N^,_ _\N/,HNVA-H/. ?<NR/. NPRN^,_ _XN/,HNVA-Hp0Ar=A .rHoF4.RB=Bv //N&-C//< Np&@0A .-@`0.=@`$ n 0.2.AR@pC1Sn nl n 0.N^,_ _PN/,HNVAN-H np=@2. SA=A`&?<0?< n/?&<:9$RE?NB/NNN:M3 6|3 B09 ,S@3 @r3 Tt3 Rv3 P8< /3 Nz3 .N^,_Nu/,HNVAH-HN09.29*Ag(tBfNrN$p3 \`NN_N^,_Nu/,HNVAT-HNp=@`:?.0.@A?00.@C?10.@E ?2NRn noN^,_ _N/,HNVAP-Hp=@`:?. n0.@/ n0.@/ n 0.@/NRn noN^,_ _ N/,HNVA:-H?9?90929A49B??3$8(@3t:(B3z<(:3.0(<3 p>C2r"Q nXC(2r"Q nX2(3z4(3|6(3~H/HyN nXDC2p"Q nX0(3 <Cr"Q nX2(3Ct"Q nX4(36(3 CP8<"Q y#"nXx Q y#"nXx Q y#"nXx Q/9#/9#/9#N-@\ nX2(34(36(38(3,:(3<(30(3#2(3#4(3#6(3#8(3#:(3#<(3#0(3#2(3#4(3#6(3#8(3#:(3"t<(3"n0(3 *2(3f4(3 &(#((#:(3 r<(30(3(C%"" nXC%"" nXC%"" nXCLrA"Q nXCP2r"Q nX2( 3 ($(#6(38(3:(3 ~<(3 `?<N?F NN`?<N?F NN?<NHn`NN^,_ _RNV2.0e/,HNV\A4-HA`BXB BBgNHn`Hn ?69t1C@89z1DB:9.1E:<9 p1F0r Q n\C(0r Q n\29z1A09|1@49~1B69 <1CCx Q n\891DCz Q n\:91ECD0| Q n\<9 1F"y#r Q n\"y#r Q n\"y#r Q n\CP2< Q n\291A091@491B69,1C891D:91E<9#1F29#1A09#1@49#1B69#1C89#1D:9#1E<9#1F29#1A09#1@49#1B69#1C89"t1D:9"n1E<9 *1F29f1A09 1@$9!B&9!C89 r1D:91E<9(1F/ n\/ n\/N n\CLpA Q n\CP0p Q n\09 (1@ "9!A491B691C89 ~1D:9 1EHn`NN~rAg ?<N?F?<N` ?<N?FHn`NN^,_ _RN/,HNVAH-H/.?.HnNSZ n N|Hn?0.>rAVvCVDBd| NN/94?< N@d p=@<`&/94?< N@d p=@<`p=@< NN`p NN60.>rAfA@CP4<"Q/94NNjN^,_Nu/,HNVA.-H0.@d0.=@` 0. =@/.?NnN^,_ _ N/,HNVAd-H/9`?. VHhNSZ VHhp/HzFBN{T2Ad&"n / VHhNd"_2<HH@2`"n 2N^,_ _\N/,HNVA-H?<" V0(@CHqNbN^,_Nu/,HNVA-H?<- V0(@CHqN4N^,_Nu/,HNVA-H0.H/ VHhN VHh?<NN/9`?."VA$Op?$Q?<BgNR 0. rAg"H/ VHhNL VHh?<N`Ap$VC/9`?.ATO"OAp=@`|p =@`rpd=@`hp=@`^p=@`Tp=@`J @g @g @g@# @b@0;N @ g @ g @ g?.Hz@?<N~0@dXp"=@2.4.BJAjDA6<HHA=A NNR/9`?<"?<Ǹ/9`?< ?<Ǹ`T0.2.AJ@jD@4<HH@=@v-=C NN2/9`?<-?<Ǹ/9`?<+?<Ǹ/9`?.NO^=@`x NNb NN0.rAf@ACt"QACt"Q/9`?<Hy(Nh/9`?<HyNT/9`?<HnNBAC2p"QHnNd3~/9`?< Nn@dp3|` p3|/9`?<NFF@3/9`?<N0F@3/9`?<N@dp3z`J/9`?<N@dp3z`*/9`?<N@dp3z` p3z/9`NNjN^,_Nup89999____/,HNVA>-H/.?.HnNSZp.rAf n t.0` n t0N^,_ _ N/,HNVAF-H/.?.p_O OrXO O4. O O?<BgNMtN^,_ _PN/,HNVAZ-H/9\?.AVO"OAO"O p QA "Op?"Q?<BgNMtN^,_ _XNFFFFFFFFFFF________.___/,HNVA-H/.?. n /N~ n prAo?<.?@dp3 ` 0<3 /9l?< N@dp3` p3/9l?<$N3/9l?<N3/9l?<3N@dp3`*/9l?<4N@dp3` p3?<?< NNp=@`Vp=@`Lp=@`Bp=@`8p=@`.p =@`$S@ @b@0;N/9l?.N/9l09.rAW??<?<N/9l?9?<?<N/9l09rAW??< ?< N/9lBgN r6Af NNN/9lNFNjN^,_Nu/,HNVAz-H09`>p=@`Vp=@`Lp=@`Bp =@`8p=@`.p=@`$ @b@0;N/9p?.N09rAf t =B`tBf v=C`v =C/9p?.Nt092<Af t=B`4<Bf v=C`v=C/9p?.N2/9p09rAW??<?<Nn/9p09rAW??<?<NN09rAf t =B`tBf v=C`v=C/9p?.NN^,_Nu/,HNVA$-H/9p?.NV@d 0. 3N^,_ _XN/,HNVAF-H/9p?.N@d0.@2.A1`0.@2. A1N^,_ _PN/,HNVA6-H?<Bg NNT?<?< NNF?<?< NN8?< ?< NN*?<?< NN?<?< NN/9p?< Nr@dp3`*/9p?<NR@dp3` p3/9p?<N*@d0<3`?<?<?<?< NN?<?<Bg?< NN?<?<?<?< NN/9p?< N@dp3`?<?<?<Bg NNhN^,_Nu/,HNVAZ-H/9pN@ NN/9pBgNjr!Af" NNNӺ09 @d ?<2NH/9pNzNjN^,_Nu/,HNVA&-H/.?. HnNSZHnNd=@0.N^,_ _\N/,HNVA`-H0. H/HnN@/.?.ALO"OA8O"OA"Op?"Q?<BgNMtN^,_ _PN99__/,HNVAH-H/9N /9?<?9N\/9?<?9NH/9?9?< ?< N/9092<AW??< ?<N/909,rAW??<?<Nv/9?<NrAf/9?<N3/9?<Nx3/9?< Nߔ3/9?< N߀@d0<3` 0<3/9?<NT@dp3,` p3,/9NlNjN^,_Nu/,HNVA-H/9.N/9.?9"t?<?<N/9.?9"n?<?<Np09#rAf t=B`tBf v =C`v!=C/9.?.N/9.?<?9#N09#H/HnN/9.?< ABO"OA(O"OA"Op?"Q?<BgNMt/9.?<?9#N/9.?<?9#N/9.?< ?9#N/9.?<?9#N/9.?<?9#N/9.?<?9#Nn/9.?<09#?NX/9.?<Nʀr"Af>/9.?<N@3#/9.?< N,3#Hy#?<N/9.?<N3#/9.?<N3#/9.?< Hy#Nz/9.?<Hy#Nf/9.?<Hy#NR/9.?<Hy#N>/9.?<HnN,0.3#/9.?<Nܤ3"t/9.?<Nܐ3"n/9.?<N|@dp3#`*/9.?< N\@dp3#` p3#/9.NtNjN^,_Nu9999____/,HNVA-H0..C%A-H/9D?."VHiNی nN|"VHi?O"OpQA "Op?"Q?<BgNMtN^,_ _TNXXXXXXXXXXXXXXX_______________/,HNVAZ-H/9D?.^AnO"OpQA>O"OpQA "Op?"Q?<BgNMtN^,_ _TNXXXXXXXXXXXXXXXXXXXXXXXXX_________________________/,HNVA-H/9DNVA%-H/9D?<6?(.N/9D?<< n?(0Nt?<?<?<?< NN2?<?< ?< ?< NN?<?<?<?< NN?<?<?<?< NN?<?<?<?< NN?<?<?<?< NN?<?<?<?< NN?<?<"?<#?<$ NN?< ?<&?<'?<( NN?< ?<*?<+?<, NNl/9D?<.AO"OpQAvO"OpQ n̞"Op?"Q?<BgNMt?<0 nR"O2p"Q NN?<4 nR"O2p"Q NN/9D?<2AO"OpQAO"OpQ n"Op?"Q?<BgNMt?<8 nR"O2p"Q NN?<> n2R"O2p"Q NNb?<@ nBR"O2p"Q NN>/9D?<Nr9Af n//9D?<6N _1@.//9D?<HnN0 nN|Hn?@0;Nr22r222222222222222/9XBgNO^=@` 0.r!AfP/9NrAf> .JjD3f$.v #(.#*.#N./9XN^NjN^,_Nu/,HNVA"-H?. n /NH n /NPN^,_ _\N/,HNVA~-H?<HydNN|Hz?<N?< ?0.Hnr/HzBN{.4B@d,AO"O p QHnNV@e`:0.2.A@dNݠ NNFNݦ`NjD NN0NjN0. @d*/9TBg?<Ǹ/9xNJJNj`0?9?9?9?9?9N_?<N0.rAl D@?N0.=@0.N^,_ _NCommandline:.TOS.TTP/,HNVA~-H/9x?<!09rAW?NH/9x?<"09rAW?NH/9x?<$09rAW?NH/9x?<#09rAW?NHN^,_Nu/,HNVA-HA,$VCTHjNİN| VHh?(N 6\FFNkNjD0.rAtBV0.R@Cd$N_$rAW=BRBe?<p?NL0.R@dNjN09.rAf?<N `"/9^/9^??<HylN0?<HyLN"?<HyHNBgHy`N?<Hy\N?<HyN?<HyN?<HyN?< Hy6N?< Hy.N?< Hy2NN?<HyXN?<HyDN?<HyH8>L8>H8>QN _"_6:pSCX|f @QNEx2IAAAH82@QNHz ?<&NN\Nu##Nu#NuHz`p0/HNuNu _#N# <Nu3/9Nu09ByNu _#N# <NuJ@gJyg3p/9Nu _3N09ByNu <NuNV?.?. ?. ?.?.?.?<NNN^ _ NNV/.?. ?<NNN^ _\NNV/.?. ?<NNN^ _\NNV/.?<HNAN^ _XNNV/.?<INAN^ _XNNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _ NNV?.?. ?<NMN^ _XNNV?.?<NNN^ _TNNV/./. /.?<NNN^ _ NNV?<NNN^NuNV?<NNN^NuNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?<%NNN^NuNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?< NMN^ _TNNV/.?<NAN^ _XNNV?./. ?<GNAN^ _\NNV/./. ?.?<@NAN^ _ NNV/./. ?.?<?NAN^ _ NNV?./. ?<NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVA(-H0929A49B3NNN^,_NuNV?<NAN^Nu/,HNVA-HHnBgN=@r=A0.rA0tBg"n r0R@=@` n 0.S@N|/N _@A??HnPBgNB=@rAoh?t/HnNp=@`&?.?HnBgNn3hrAot3` ?<N?F`:tBf2v3?9hN 9#?9hNJp3hN093N^,_NuStart file collect[1][Start/Stop file capture][Start|Stop|Cancel]/,HNVA4-H09.rAW69 \xDWEBdNp3 \N^,_Nu/,HNVA6-HA8O"OpQ?<NkZrAW=BN0.N^,_Nu[1][Abort ?][Yes|No]/,HNVA-H 9##N^,_Nu/,HNVA<-H .". ] V6(FCCBdt=B .". ]6.xD_EBd49.`HnNV?N`HnNV?NR`zHnNV?NV`dHnNV?N`NHnNV?N `8HnNV?N`"YB BbtB4; N ~h0.R@=@`(?<N@d*N?<N*rAfNJ V1@`NB`N^,_ _PN/,HNVA-HNACHyHnAO"O p QBgNϢ@dAR"O2p"QHnN>HnBgN>=@r=AtBoVN?./9/9N-@"9Ҁ#/9/ NN ."9Ȱ]6.CBd` ?<N?FNNzN^,_NuReplay file/,HNVAf-HA R"O2p"QHn N>Hn BgNz=@rAo$?.Hx?. N/N#` ?<N?FN^,_ _N/,HNVAX-Hp=@r. =A`609~H/N*0.rA 0O"ONRn0.noN^,_ _RN/,HNVA-H0. r Aft3`t Bf69Cd69z`O ON`O ON`O ON09~H/N*p O ON`Xv O ON09~H/N*p O ON` CbC6;0N0xbL`O ONp3N^,_ _TN/,HNVA-H VHh("Wp)1@ /NLX09@e V0( @C211A V0( rAg^t BWx DWņECd ?Nb`@69CdO"ONp3 V0( O"ONN^,_Nu/,HNVAV-H09|rAf> V4( 6(CWzE_ƈF/N&(@Dd VNp /N'` VNN^,_Nu/,HNVA-HA(BXB BACHyHnAO"O pQBgNϢ@d~BgNHn(Hn?N LNl?9Np3 jr3N?9B?9@NN^,_NuNV?.?<NMN^ _TN/,HNVA-HNN<0N^,_Nu/,HNVA-HNp@dNx<` Hn /Hzt/N{.6?Nk NNH`xA R"O2v"QNtNpP`TA R"O2v"QNZ`8?. A"Ov?"QN(`Hn v/Hz.BN{T8Dd A R"O2x"QN`NN`N 2< Ho$A R"O2p"QN$=@`p=@`6. xDVŴDVƊF=E`zA R"O2v"QN<`\Hn ?<N0. 2.A( N|Hn?p@d"A"R"O2p"Q?<N0r`Hy"?<BgN9`Bd NA`NA NN>`n?. N ```\SC C"bC6;0N0r6BRp0,.xX,,0.@dp=@0.N^,_ _NGETSEND/,HNVA -Hp=@r.=At=B6.bRC=Cbx=D0.b2.A_6.FCCBdtA0=Bv'CW=DDex\Df~AgxR@=@bz0=EtnBf| =F:.|rFfv =C6.z0Ef0.=@?. NN<`<0.=@`00.=@`$?. NN` @g @g @g```p=@NHnN?<NHnN0.N^,_ _RNExecuting: /,HNVA-Hp=@0.rA^v. C_DBdtA 0=Bx%Dfj0.R@?Hn HnHnN\=@rAgB4.vCf8.Af=A`$?.A"O2p<"QN(3&`O"ON0.rAgR@=@`@N^,_ _RN/,HNVA:-H09 t@d/. /. ?09,@d?<NXP` ?<NV`pO ONNBpO ON`/9^p/?NZ09*rAf?<'NV` ?<'NXPN/p/?N$`A̞R"O2p"QN`zHxBgN`l?<Nʸ``Hx ?<N`P NNHnXHnAO"OpQBgNϢ@dTAR"O2p"QHnN>HnBgN6=@RrAo? NNJ` ?<N?F?.RN@` NN`09 tF@3 t`N`NF`Nj`N`BgN`A'R"O2p"QN(`b0. @R@?N=@P`JN<0AO"O p QHnXNV@dAXR"O2p"QN4#h+05p _(_&_$_"_"#$+h&/(5(_&_$_(&$(_&_$_"_"$& 4(N 132 Font 16 Scanlines by SPoole UUUU P #(-27<AFKPUZ_dinsx} "',16;@EJOTY^chmrw| !&+05:?DINSX]bglqv{kZֵkZֵkZֵkZֵR)JR)JR)JR)Jb`kZֵkZֵkZֵkZֵEH3@ayc s8{Γ(FL8JQܼ9`0R)JR)JR)JR)JEHa@={{ޓhF^JQܼ kZֵkZֵkZֵkZֵ a@$fCG;ߥ+BHoRJQT @ bR)JR)JR)JR)J FBN9Œ)BoRJQt @81b)JQkZֵkZֵkZֵkZֵ8 zg Ƽ sҔJQt{JQR)JR)JR)JR)J@8{D sWҔJU' KVRJUkZֵkZֵkZֵkZֵ"@ 8j ĐH8L BVbJU# IVRJUdR)JR)JR)JR)J"@0j LL8ȿ BF"J_s0 yVRJUdkZֵkZֵkZֵkZֵF@ /JLȄ)BHFR"J_s  AFR"J_dR)JR)JR)JR)JF@a!/JH+B%hFR"KS  AFR"J_kZֵkZֵkZֵkZֵa{z/F^%y<ygF^{ۓR)JR)JR)JR)J3c1ctz/FL1<89gFL90kZֵkZֵkZֵkZֵb`R)JR)JR)JR)J 132 Font Special 16 by SPoole  UUUU 4Py/99Iw;e@ !BR(B)jBR%e@Ԉ !BR(B)Z#BRED3@axc s8{Γ(FL8JQڼ9"AԈ s.A)I#[EDa@=y{ޓhF^JQڼ rAD BR(@B)HP!J a@$&CC;+BHoRJQR @ueķ!BR(@B)HPJRfBF9)BoRJQr @ueJЎ#9z\;9Kw:N8zg Ƽ sҔJQrJ9ß& 1@8 j{D sWҔJU#J!ß$1JR=(;A %NJHs"@ * ̐H8L BVbJU!Eo ß& JR%(AD%$C%IkȄ!"@0/ LL8ȿ BHF"J_q0uDC B>#JR%HAD%$A%)IZ@!F@!/JH)B%HFR"J_q rC B>%0Kb%1G9$AE1NJHF@a!"JH+B%hFR"KQ rB B>&0JR%H D)$A'JH!a{z/F^%y< B8B#|JR)( D%$A$J@!3c1btz/FL1<8 B!l:R=/qD${a$J@w9B B  80 Font________________________ UUUU    (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx||xD|||||||8ĀDĀ|Dff>fl`f<<~ ~~<<<<|f~f`f<|<|>~ffff~<`<38@>xxDxxxff~fl 0f~~~ ~<~~~ `~~<~~|~~~f~f`f~~~~~~ffff~0` 883(`0(@f`l88<f8f `0ff~0f~ffn```fl`fffff`ffff 0` 888x 0>0(@f` 8< f8f ``ff0~ffff```fl`vffff`ffp~~f <~| ~> f|`f||n~x`~fff|8ff<0 3~~`0BBBB||~>~|<@<>DD|BD>>>>>0<f l~f`~ ~f`f``ffl`~f~flff00 0 ~|BBBBBH@@@@BB@BHDBbl@@@@@0<0f lff0~~f`f``ffl`nf|flff<00 | X~0BB$$BP@@@@BB@D P(BRT@@@@@f|ff0f0f~f0f0ffff``ffff`nf`fff<<`0 |3 <l6`0B~B`@<|||B@ H`(|JD@<<<<f|f8f`f0f~ff0f `fffn``ffff`ff`jffBBB:D~|@@B<~~<D|BD>||||00  80 Font________________________ UUUU  pp`ppppp8plp<<~ ~<~<<`<<|f<f`cf<|<|>~ffcff~<< 0ЀЀDll>f68ff8f ``ff 0ff0 jf|`fxxn~p`k~f|f|<ffk<00 c|3~~xv0by}xxl0o<00f~f0fn~f`f``ffx`cnf`vlff<00 8? 06~|     |ff8f0`f0f ff0f  ~0`fffl``fffl`cff`lfff|f<cf~<<~ $`~     03~  132 Font_______________________ UUUU >P6ayc6ayc{8{Γ(FL8JQR8@  B@KLc@8 j cH$1A>8 j cH$ sWJU# @I BVRJQt@jAD / H hjAD / H h BF҆"J_q0y VRJU$"J@cD1JHF8J@cD1JHF8+BhFR$"KQ A BVRbKs 6c1cC6c1cC|z/FL9Q<8g1'VL9PB@  132 Font_______________________ UUUU PqġN11Ig36ayc{8{Γ(FL8QT8%e@!!BRHB)Jj#BKLc@$FBҏ+BHnRJQT rADԈ#cǡLA)JY#sYA@$zL8b BHRJQt ue@& I {-j\Q91A>8J cH$ sWJU' @{9ß#!sv个7滜_o2jAD / H h BHF҆"J_s0uENß!Ia#!%ZHABJ@cD!"JHF8+BHFR$"KS rc B?& ILa" EJ@@!6c1cC|z/FL9S<8 B B#|9R0"8aFJH3B8B! 106 Font_______________________ UUUU `  $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| p3>qy((/ ` !UUUUUUUUUUUUUUUUUUUUUUUUq% 2" "( l("(!  >%@ER"!"( l("(R!@y$#G r(' UUUUUUUUUUUUUUUUUUUUUUUUB@BR" ( ("(QB@('"$"I""(! pF@O q@ ./"(!B (""("I "(R! UUUUUUUUUUUUUUUUUUUUUUUU(@BȈ("A(")"%*P 蠋"8"H"%*"" @">(@EȈ"(" (")"%6P("("$H"%>R" >UUUUUUUUUUUUUUUUUUUUUUUUq  "(  ("(H""6("$"$H"""$ !& qϜqz/"(!" >y$r$ UUUUUUUUUUUUUUUUUUUUUUUU@@   @!7I8016__________________________  UUUU  #hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<xxxx<0200 20 20 >~  <~f f`` fLf?< ff 0ffL 0fLf< 0fff<~f>"$ t8f |~l~< 0fLf 0ff0ffL 0fLf 0fff<0f2c~6 tf##<<<<<>>>>>|~~~~8888~~~~~~gfffffB`0<f$Q~6~<f~ffffffo`````~fffffo~ffff<|`ffffffffffnfffffB<<~~~<<<|>|~~<<~~~<<<|>|~~<`f$Q>l>|~~f<>>>>>`ffff~|@BxxJ H||<>~|@BxxJ<@B@@~~]B2 @~ffffffo~~~~~<<<@b@B BBB@B@@b@B BBB@B@@bB8@B@@~B?@>>>@l>>>>>>>>>>><<<>>>@<~||< <|~@<~||< <|~@<<>|~@<~ <~@ <~~|2I808___________________________  UUUU  +````````````````````````````````` ``~<````<8x><0 2f?<0 f0 f20 2f0 ff02f0 f0f20 2f0 ff f6fl t8fl̟fLxfffLfL<f60fL<f0fLfLf:fl<~8ftf6ؘ`~~~<l|xf<6nk <<<>f~~~~ffffffvfffff$0<>>>>>~<<<<<<<>>>   p~NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVA4-H?<BgBg09$R@?09"R@?N://9VNN^,_Nu/,HNVA4-H?<BgBg09$R@?09"R@?/9VN/NN^,_Nu/,HNVA"-H09#rAg?Np3#N^,_Nu/,HNVA-Hp. =@2.tA 0=B0.r:AVv\CVD8.zE^FBdSD=DtA 0@=B`0.@ A#-Hr=A n0.r(tBVrA_DCd nv(A"R@=@`0.S@"N|Hn ?-Hp=@2. =A`?< n0.r?NRn0.noN^,_ _\NNV?.?<NMN^ _TN/,HNVA-Hp V1@r=A?<N@dV?<N=@29tBf69"CV=D` vCf89FD=D`x=D V1@`N?<N:@d0?<NV=@rAW3vCW3D=B`N&3=@0.N^,_Nu/,HNVA-H NN@d0.N^,_Nu/,HNVA0-H/92?.^A "Op?"Q?<?<NR N^,_ _TN/,HNVA&-H09"r@d/92?.?. ǸN^,_ _XN/,HNVAB-H/92?<09H/N%/92?<09"X29"VAH/N%N^,_Nu/,HNVA0-H?<A R"O2p"QN?<BgN@NvN^,_ _RN/,HNVAB-H?<AFO"OpQN?<AO"O p QNN^,_Nu 0/,HNVAr-Hp#r#Nz?<BgN?<BgN?< A^R"O2p"QN2?< A R"O2p"QN?< ?<NPN^,_ _N/,HNVA-H/92?<A "Op?"Q?<BgNR N?< AO"ON?< A~O"ON?<AhO"ON?<p0O ONj?<p0O ONT?<p0O ON>Bg?<NzN^,_ _RN/,HNVA.-HN*@d/92?< 9r /N%N^,_Nu/,HNVA-Hp3#r3t3v389#3#:9#3><9#3"Z09#3:29#3"d49#3"69#3"x3"l:9#3"T|3"^p3"`r3t3v3"Xx3"Vz3N^,_Nu/,HNVA-Hp=@r=At. =B`0.29#ȰAl4.vA 0 xD=CzE_ƶDW@Fd,0.R@=@<9"C?.N=@`809"@W29"AW:9"pEBFd4.RB=BC 0.R@=@2.ARn0.noD?.`?.^?.HnNMN^,_ _VN/,HNVA-Hp=@2949BAdb29AdHr369:H/N'N&B09R@3A0O"OrQN`p3r=A0.N^,_NuTime Out/,HNVAD-H09@d,A6O"OpQ?<NkZ3&` ?<NN^,_Nu[1][User break!][OK]/,HNVA-H np=@0.2.AlR@=@t=B nv89"DW69"pCEd R@=@ nzE=ER@=@ nt:9"Ef:R@=@ ntEg$ n/"n0.r?N _p=@2.=A`" n0.r? N"h hNRn0.no`N^,_ _N/,HNVA<-H"V i 0. R@0)Hr?A@  i 0. T@0)A@ N^,_ _TN/,HNVAz-H?.?.?. n /N=@2.tBf?. NNp`@6.RC=CxDf n @ ` n z h|?F@ ? NN.N^,_ _ N/,HNVA-Hp=@29"d=A`?<?9"NRn0.no2.tSBf v3"l69#C8.D DA:.|^Fo?<?Hn n /Np @2.49"lBv_HA A8.BHĉHDD D?<?<?<Hn NN?9"l?<0.^@?Hn NN|p=@`J?<?Hn n /N0.@"29"lA@??<4.XB?Hn NN0p=@29"lA4.B69"A09"t8.zNEVF@d,09:H/N'Nb=@rAW69CBdN&BHn0.2.A49"lB?N0.rYAVvNCVDBd$49RB3/92?<H/N%N^,_ _ N/,HNVAT-H09:H/N'N=@NF@2.49#BWÀC@d VN NT09"@=A0.N^,_Nu/,HNVAR-H V0(rSAW69"lxDVEBd3"l49"XRB3"XC R$O4v$QNN^,_ _RN/,HNVAF-H0. 29#ȰAo2A8O"OtQ VN^p V1@N NTN^,_ _TN Bad LEN/,HNVA>-H0.=@2.=A` n 0./ VN _Rn0.noN^,_ _PN/,HNVA>-H"V i $i0R@p@r?AH i 4TBtBAB3@N^,_Nu/,HNVA-Hp3rT=A09:H/N'NrA49#BW/N&@09@Cdr=A0.29A@e~ n / NN _@"np(@20rAf?<?</ NN n p(@=@r(A=At(B=B/?<?<?< n /N$@g(A6O"OpQ NNp=@` n0._2.A0? NN n0\@0?<?"n / NN ?9"l?< n029"lA?"n / N=@ n r`X? NNj n0R@0?<?"n / NN?9"l?< n029"lA?"n / N=@ n r"nr(A2r(=A$n469"lC449"lvCf8RDxD=D`@xDf NNt`. NNj0.H n "n2VArAt?BA=@p=@2.tYBVxNDVECd$69RC3/92?<H/N%0.2.Af4.=B`A^O"OtQ NN`t09@d&09@d pQ=@`09"XR@3"X0.N^,_ _ N Bad ChkBad XHdr/,HNVAF-HHn p/HzBBN{T2Ad&A R"O2r"QHn NHn NN^,_ _RN/,HNVA-Hp V(R@=@rTA]6. x D\EBd\=Ct[BW|]FW@p|@WAEdr/=A2.:.CxDW|:FW@BdRA=Ap|AN^,_ _TN/,HNVA-HAC?. n / N/HyUBNN|Hzp?<!NHn?=@`0.rNAW6.89"`RDz@HĉHDDWFxSDWƄFBdZHnHnN|HnNX?<Y?9"`?< HnN09"^3"\r3"^Np=@29"T3"l`N<09"=@`L?.HnNp=@`609"=@`(N:` @Eg @Ng, @Sg$ @Tg`0.N^,_ _TN/,HNVA^-Hp.=@r=A4.=B`20.rA0?Hz6?<N~2Adr_Rn0.no?<.?@d NNt?.HnN6` ?<N֌`0.29"`AfN?.HnN@d NN0`.?<E?9"`AO"OpQN?<N0`jHy"\N@eZ?.N@d:?.NrANO"OpQNXp3"^29"=A`09"XR@3"XN`0.29"`Afr?NN@e ?<N՘N0.rAWv.xDDWEBdA#2R"O2t"QNAC#2Np=@` ?<N8`v?.HnNp=@``N09"=@`N?9"`NB09"=@`6N`. @Ag. @DgV @Eg @Ng @Tg @Zg`0.N^,_NuRep. PacDisk write failed (disk full?)/,HNVAl-H09"rAfZ49Bd*?<E?9"`A^O"OtQN`&?<E?9"`AO"OtQNޢN^,_NuError receiving packetsUser aborted transfer!/,HNVA(-Hp3@AO"OrQNRN^,_NuSending:/,HNVA-Hp=@r3@49"z69"vCBe AO"O t QN`F49"zBd AtO"OtQN`ABO"OtQN۰p3"NܸN&B0.@e09"`?. N|3"`?. NV3"`N3"`p=@r=AAC#2`p=@r=A49"nBd$NA#2R"O2p"QN`0$9vHôV:9#|FV@Dd N=@NϦAJC#2N`& @b@0;N 2DRpp`0.N^,_ _TNReceiving (quote 8):Receiving (8 bits):Receiving:/,HNVA-HN09" V1@N^,_Nu/,HNVA@-Hp=@A=@rYAWvNCWĄDBd?.?.N@d0.29"`AW6.xNDWńEBdZt3"^Np##r##t#&9#xHĶoHyBN3"jr=A`z=E` 49"=B`N09"=@`:tEBf?.HnNp=@`xTDf:9"=E`N ` ?<N0.N^,_Nu/,HNVA-HN09" V1@N^,_Nu/,HNVA-Hp=@Hy"^N2@e09"jrAo?<D?9"`?HyBNHnHnHnNܮ=@rYAWvNCWĄDBd?.?.NZ@dd0.29"`AW6.xNDWńEBd:t3"^NvHyBN3"jrAf t=B`t=B` NN` NN`:tEBf?.HnN4p=@`xTDf:9"=E`Nը0.N^,_Nu/,HNVA-HNV09" V1@N^,_Nu/,HNVA-Hp=@Hy"^N@e?<Z?9"`BgHnNזHnHnHnNf=@rYAWvNCWĄDBdv?.?.N@dZ0.29"`AW6.xNDWńEBd0t3"^N.NNJ@d p=@`p=@` NN` NN `:tEBf?.HnNp=@`xTDf:9"=E`Nj0.N^,_Nu/,HNVA-HN09" V1@N^,_Nu/,HNVA-Hp=@Hy"^N@e?<B?9"`BgHnNXHnHnHnN(=@rYAWvNCWĄDBd^?.?.N@dB0.29"`AW6.xNDWńEBdt3"^Np=@` NN,` NN"`:tEBf?.HnNp=@`xTDf:9"=E`ND0.N^,_Nu/,HNVA0-Hp3@29"z49"vBAe N`F29"zAd AO"OrQNP`AO"OrQN2p=@r3"N4N&B0.@e09"`pN3"`N3"`xN3"`jN3"`\N"3"`Np=@r=A`>p=@r=ANtNp`&S@ @b@0;N~`X0.N^,_NuSending (quote 8):Sending (8 bits):/,HNVA-HN09" V1@N^,_Nu/,HNVA>-H09"^3"\r3"^Np V1@r3"r?<@N NN^,_Nu/,HNVA-Hp=@Hy"^N@e?.^?9"`A R"O2p"QNpHnHnHnN>=@`~?.?.N@dN0.29"`AW6.xNDWńEBd$?.HnN(p3"^N p=@` NN` NN`XHy"\N@e*?.N&@d?.Np3"^29"=A`HnHnN HnN?<Y?9"`?< HnN҈ NN09"T3"l`0.29"`Af ?.HnYHyN^ NNF` ?<Nö`0.29"`AfN?.Np=@` ?<NÄ`p?.HnN p=@`Z09"=@`LNφ`D @Bg @Eg @FgV @Ngj@S @b@0;N6R0.N^,_ _TN/,HNVA$-H V?(NTp3"^29" V1AN^,_Nu/,HNVA$-Hp3"^ V?(NN,p V1@N^,_Nu/,HNVA-Hp=@Hy"^N*@eHnHnHnN=@`J?.N@d NN|` ?<N<`f0.29"`AfN?.N߈NBp=@` ?<N`.0.29"`Af ?.HnYHyNr NN `&Hy"\Nx@e?.Nݐ@d NN`0.29"`Af?NNp=@` ?<N~`Hy"\N @e?.N8@d NNV`?.HnNp=@`jN209"=@`X09"=@`JNF`B@A @b@0;N @ g @g @g @g.`0.N^,_Nu/,HNVA-Hp=@r3"NZNN&B0.@e09"`Z?.^A R"O2p"QN@3"`XN3"`Jp=@r=A`:p=@r=AN`& @b@0;N`np3"r0.N^,_ _TN/,HNVA6-HNjD?<HnNH/.NP/.?<A"Op?"Q?<BgNR /.?<AO"O(p'QAO"O(p'QAO"O?<BgNMt/.?<NO=@/.NPRNj/.?.BgBgNZ n Ct0.rAfN/.?<HnNSZ n N|Hn?N|?. ? V1@N*`JNX`B`>W@ @b@0;NV V:Vd,rHVN^,_ _TNEnter account:Enter password:Enter user:Enter host command:Enter filename to get:Receive fileSend file/,HNVA"-HN./96?< N/HyNPN^,_Nu _0y.k09.NР*_3V3T&_(_&(#^33N*_$_860"y^3_N3_L/ 3D$g3|$3|jBir3CZ3|`3|UU\3|@#jLT3jPX(jH@3tH3j4PNu _0/x69,"y^$y:94SER3EN:92SE43ELaraNu _6"y^3_*3_(3_&fN/Bi$3|3|Bi2g #|\.Nu#|Z.Nu _20"y^6C4B/S@k2SAk.3@*3B&3A,3C(BiBiBi6Bi2Bi$#|Z.Nu <\Nu _23P03NN/<?<&NN\Nua$09N6|8<lHa<29PaNu yN:9SE<9Nu/<?<&NN\NuL88P:NNH2 f<g33((g(H49NBjB@yTo09T(HyPjBAyVo29VaTBgP3J>|8<lJ6H@f|><oGaR`0aL09J6|8<lHa63JN49PBg3L2a29L3PaLNu$Hh@64< yTgFRùRùRùRùRùRùRùRùRùRùRùRùRùRùRùRQ`$RùRùRùRùRùRùRùRQNu҈$A4jJEg`,~`JSB>`R _2043@3D3>N/<f?<&NN\Nu 9N#&#"Nu3gSyBgNu3DBJy:gJy-RUG4 <9SF(IʹTIQNu _20"_/@S@4X$y&4RBXJSBvxz| F&F(F*FH9x H9x H9x H9x Q6<89.LSD4&I"K:aQNu _20"_TI@S@$It v4QN _*_42/"y&69XSASB0<ÔAJSB$IH~ LsHsLsHsLsHsLsHsQKSCp""""""""QL` _*_42/"y&69XSASB0<C8AC3CDSD3$I&I(JzH?<%NNTL""""""""Q69CSCBQ"K$L89QFS@"M$I6<2<:9.MSE2(J&I8&Q(J&I8&&QQp"< 2$I"$$QNu _*_42/"y&69XSASB0<8ALSD$IH~ LgH昔LgH昔LgH昔LgHQKSCp########QL2FS@"M$I6<2<:9.MSE(J&I68&Q(J&I8&&QQ` _"_0N _0"_2N _"_pN _"_$QpRN _0"_$QRN _0"_N _"_ N _ "_"N(_2&_pHz`gpNu(_&_pHz ?<&NN\NNu(_&_Hz`0Nu(_&_Hz` Nu(_<&_Hz`Nu(_<&_Hz`6Nu(_,&_Hz`&NuNV?.?. ?. ?.?.?.?<NNN^ _ NNV/.?. ?<NNN^ _\NNV/.?. ?<NNN^ _\NNV/.?<HNAN^ _XNNV/.?<INAN^ _XNNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _ NNV?.?. ?<NMN^ _XNNV?.?<NNN^ _TNNV/./. /.?<NNN^ _ NNV?<NNN^NuNV?<NNN^NuNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?<%NNN^NuNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?< NMN^ _TNNV/.?<NAN^ _XNNV?./. ?<GNAN^ _\NNV/./. ?.?<@NAN^ _ NNV/./. ?.?<?NAN^ _ NNV?./. ?<NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^NuNV/./. ?.?<NNN^ _ N/,HNVA.-Hp@rAtBvC?<Hn/. NN^,_ _XN/,HNVA-H/9 vNN:N^,_Nu/,HNVA"-HN# zN/9 zNnN^,_Nu/,HNVA-Hp3 r3 N^,_Nu/,HNVA-Hp=@2.t`B=Av@CmV89 De$8.z?E3 |3 p3 `$89 3 :.|?F3 p3 ``x DfF n :9 | m09 H@p4.B@0p@zEf4DB0t=BN`z=EN n p00.N^,_ _\N/,HNVA-Hp3 r3 49D`Bt3 \`Vt3 \`Jt3 \`>t3 \`2t3 \`&`"B BbB4; N N^,_Nu/,HNVA:-Hp3r3 t3 69 Z3 \xDf z3 \N^,_Nu/,HNVA,-H?. Hz*?<N~0@d N`NN^,_ _TN/,HNVA6-Hp3 b?<Nߌ?<Nߒ?<NL?<NdN^,_Nu/,HNVA`-H 9"9̰o* 9S/NLrAtBf p3 .`"/9NLrAtBf p3 .N^,_Nu/,HNVA-H09 \rAfNN^,_Nu/,HNVA@-H/9^N0. 3.NN?9B?9@Np3 \N^,_ _TN/,HNVA-H0. `T?9*N`j09 \3 Zr3 \t3 `JN??9 R??9 VN~`$ @g @gj @gt @ g @@g`3 .09 X3 T29 V3 RN^,_Nu/,HNVA>-H0. `?. N`&Nt09 \rAWvCWĄDBd t3 \`p3 .`N`0. H`0. rA3 FN?9 X?9 VNr`|09 `@d09 D3 L` p3 `0. rA3 D`F09 `@d0. rA3 J`0. rA3 H` @g @gf @g`8 @gB @ g@ @b6@0;N**N^,_ _TN/,HNVA,-H V0( 2.AW6.CWĄD8. DWńE=B0.N^,_ _\N/,HNVA,-H0. r Al0t BWxDWņECdNp3 \`?N<`Af t3 .tPBf v3 .?<D?<E?<F NND@d09 8R@3 8?<E?<A?<I NN@d09 :R@3 :?<I?<H?<J NN@d09 8S@3 8?<J?<B?<F NN@d09 :S@3 :N09 .rAf?9 X?9 VN?9 X?9 VNrN^,_ _TN/,HNVA-Hp=@?.Hz?<N~2Ad r=A`29tBf6?.HyN@dp3 n 290p3`H6989Dn2?. n 09@/NV@d09R@3`=B0.N^,_ _\N/,HNVA -HNN^,_ _TN/,HNVA2-H?. HnN@d?. N0.rAWFB3 `?<N>`?<N>?<NR`?<N>`?<N>`?<N>`t?<N>`f?<N>`X?<N>`J?<N>``.`* @ b@0;NFTbzN^,_ _TN/,HNVA-H?. HnN@d?. NF0.`?<Nd`?<Nd`?<Nd`?<Nd`~?<Nd`p?<~N߀?<Nd`X?p 3 \`N.p3 \`N`NN`N p3 \N,`zNN4`lN`dNNN&p3 \NrN$?9 X?9 VNr`,0.?Hz?<N~2Ad23 r3 t3v[CfNp3`N\0.` N`?<Nd`x?<Nd`j?<Nd`\?<Nd`N?< NN`@?< NN `2?< NN`$?< NN`?< NN`?<N|`?<?<Y?<8 NN`?<?<2?<R NNp`?<?<"?<6 NNZ`?<?<?<1 NND`?<NߌBgNߒBgNLp3 b?<Nߪ`t`p@8 @b@0;N^tR@( @b@0;N`D @g| @g @g @ g@ @b@0;Ntl`d @#g @%g @/g\@I @ b$@0;Nrx"R @g @g @3g`N^,_ _XN(~%!3Q @p_B|8?20 ~/,HNVA,-HNp09 X3 T29 V3 R??NrN^,_Nu/,HNVAn-H0. r A\vC]DBd y#-HC$-It1BJx1D61B81B::9$1E<<9"1F>2)1AR1Bf1BD1BB29 V0)@=A09 XEo`:Bl`0Fo`&Bl`??6. ???9 b/N09 :29 2A3 :4<Bm069 889 0D3 8z3 :p@l << /3 8 NN`T`?<p?N`@p3 : NN~`.09 849 0B3 8xDl :< /3 8 NNN`09 849 0B3 88< 0Dm z3 8 NN`09 :49 2B3 :xDl3 : NN`09 :49 2B3 :Hy :?<N NN`t?. N`hNp3 \r3 .`P`L_@ @b@0;Nj :@ @b@0;NrN^,_ _TN/,HNVA.-Hp3 Fr3 Dt3 Jv3 Hx3 LN^,_Nu/,HNVA-HNp3 jr A t3 :6< /3 8NH09 X3 T29 V3 RtY3 0v73 2x3 `z3 N 9##N,09$H?09"H?NN^,_Nu/,HNVA-H0.Hr At?BO ON0.r At?BO ON0. Hr At?BO ON0. r At?BO ONN^,_ _XN/,HNVAf-HAzR"O2p"QN~Hy fHy dNJ09 f29 6?NjDprA????BBgBgBgBgBgBgBgBgBgBgHy HnHy&Hy&HnHnHy&Nk=@Nj0.H=@2.tBvCgr =Ax =D NND?.?.HnHnNΌ0.H-@@2.H-AD49 B69 6H//Np&xd//N(D3 B69 @89 4H//Np(zd//N*E3 @89 pzEf<.0.@o=F09 64.29$RA?NB?N6N?N6NN23 6NךrAf09 63 4`09 6H3 4`<9 60.49$RB?NB?N6N?N6NN43 6<9 42.69"RC?NB?N6N?N6NN63 4?9 6 NN 3 6?9 4 NN3 4 NNj0.rAtBg?.Hzj?<N~0@dn NNF0.`209 @29"49 4?/./.?0<=@r=A"4.vCfHn$NİN|Hn$?NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^NuNV/.?<HNAN^ _XNNV/.?<HNAN^ _XNNV/.?<INAN^ _XN/,HNVA-H0. rA^vC]DBd?N`fCo/9$N`4t BVz EVF V<( FDd/9% N`x =D 0. rA?N/9%"N0. =@0.N^,_ _TN/,HNVA-H?<?.N0.CA-H0.@d`Hn HnN V1@r=AS@=@`. n0./0.rC1? VN _@Rn0.no`fpQ/Hn HnN>" A V1@S@=@`6 n"V0)2.A/0.rC1? VNf _@Sn nl . -@ .N^,_ _PN/,HNVA~-H V0(rPAnlS@H?0. S@49J?pQ6(CH??N0. CA-H"V0)=@` n0.r ARn nPoN^,_ _TN/,HNVA-H . "9аf?<t?N`j V4(BC# 49*=B`D0.@/?.Bg2.RAA"VA/0 IN" "VA!?. INSn nlN^,_ _XN/,HNVA-H . "9԰f?<t?N@`j V!@"t=B69*=C`F0.R@@/?.?<2.A"VA/0 INF" "VA!?. INDRn0.noN^,_ _XN/,HNVA-H 9"9аW69.xDWńEBd?<t?N`p/N"<M4<H҂o <M/N-@rgN09B=@29@=A nC04<n QAzO"OtQN/9%"N$BgN09*R@=@/9 NNp=@ ?<NiNjDprA????BBgBgBgBgBgBgBgBgBgBgHy HnHy&Hy&HnHnHy&Nk=@2.I=AtBfNj0.`~0.@A"0 9Բf?<r?N.`?<?9*Hy0Np=@29*=A` 0.@2.RAAA$0!Rn0.no2.A/?9*?<0.@A/0 NN"A!` .""9аf?<t?N``?<?9*Hy0Nh09*=@` 0.R@@2.AA$0!Sn nl?<Bg/." NNv-@"`z/9 NN `j/9 NN`Z/." NN`L0.@A/0 NNv`4`0@G @ b@0;Nn0.raAW=B 0.rAf?.?.NӬ?<Ni0. @d nC00<n"QN<0p//9V?N$p=@29*=A`?.?<?<PNRn0.no2.3B4.3@Np/N/? ExitNV?.?. ?. ?.?.?.?<NNN^ _ NNV/.?. ?<NNN^ _\NNV/.?. ?<NNN^ _\NNV/.?<HNAN^ _XNNV/.?<INAN^ _XNNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _ NNV?.?. ?<NMN^ _XNNV?.?<NNN^ _TNNV/./. /.?<NNN^ _ NNV?<NNN^NuNV?<NNN^NuNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?<%NNN^NuNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?< NMN^ _TNNV/.?<NAN^ _XNNV?./. ?<GNAN^ _\NNV/./. ?.?<@NAN^ _ NNV/./. ?.?<?NAN^ _ NNV?./. ?<NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVAJ-H y#-HC%-Ip1@62)1Af2)1AR2)1AD2)1AB?. NN^,_ _TN/,HNVA-H09BH?N>S@=@??9@N09~@dND09@CA-H"y#-Ip3@J2tBg`2vCf29JI3AJE%G%:r&QE%jG%r&Q?. NA%:C%p"Q`lE%R-J3@62*3Af2*3AR2*3AD2*3AB2.SA69L?29@SA89J??. ?9?/NN09rAtBgJ n0vCg<0.S@89L?09@:9JS@?0.R@S@??9N2N n09B2. A n@091@N^,_ _TN/,HNVA4-H0. rAA\vFC_DBd t7=B`t0=BB=@0.N^,_ _TN/,HNVA-H0. r;Aft3"v3Nx3N`t/Bf69N3"x3$=Az"EoC3"|3$x@=DrAo x3$`v;3"`v<3"`v=3"`v>3"`v?3"`v@3"`vA3"`vB3"`vC3"`vD3"`6.3"`6.RC3"`x6.TC3"`h6.VC3"`X6.XC3"`Hv3"`<C CbC6;0N0$03 Dft3"|3Nr3NEfAC` t3`dt|Bf?.N`PvuCfHx9zPEl8N|Hy?g D?gr3N^,_ _TN/,HNVA-H?. N@d|0. `09BS@69L?09@89JS@?09BS@??9N2` ?. NN^,_ _TN/,HNVA<-H09 *@e$09.3*r3 \t3 .N\p3N^,_Nu/,HNVAZ-H0. r!Aft3 `>49 Bd*t0BfNvp3 \`v3x3.p3N^,_ _TN/,HNVA-H0. r!AW69 CBdAft3 `t0BfAO"ON?9.Hz?<N~0@d A|O"ON`AZO"ONA R"O2p"QNp3 r3` t3N^,_ _TN 3 1%!/,HNVA-H092<AH?N^\N^,_Nu/,HNVA-H0.CA-H?.?.N09=@2.=A4. =B`0.3B29 n@0(@g" n0.@0(3NHNT n0rAg09Bt(?NT`09Bt(?NhRn0.nov2.3NNTN^,_ _\N/,HNVA"-HHyNNp3Nr3N^,_Nu/,HNVA-HBg V0( ?Np3N^,_Nu/,HNVA-H09`0. r4Aft3N`f49NvCf>xiDf?Na(`&Bgz?NBg?<[NBg?<4N NN^`Bgx?NpBg?<[Nf NN@`0. r[Aft3`8tXBW89(zEWFCd?Na(`Bgv?N NN`40. rAf N` NN` @g @g @gN^,_ _TN/,HNVAX-H09@d*09v@d?9@?9@NNBV` ?9B?9@N0903BN^,_Nu/,HNVAF-H09@d0903B`&090S@??9@N09S@3BN^,_Nu/,HNVAt-H09B290AoN09@CA-H0rAW09.vCWĄDBd&/9$N$pa?N/9%N$`4xDg\C%jEt$QC$bE%jt$Q/9%jNpa?N/.NAC%jp"Q`BC%REt$QC$JE%Rt$Qta?NAC%Rp"Q09B29AmNt n09BraA n@09429B490BoN"09@CA-H0rAfv09@dYHy NNL`@09@dYHy NN`"?.Nn n09B@091@ n09B2.A`\09@dYHy NN`(09@dYHy NN4` ?.N09B29AmN09BR@3B29rAd29 3?N_zp3r` 0`^p3`p3`p3`|p 3`pp 3`dp 3`Xp3r3 `Dp3r3 `0p 3r3 `0.`2p3`p3`p3`N_`N`|`NA`09B@rAJ1`lNY`bNBV`Xp3r293 ?. NN`6?<NZN`(N`?. NN`p3`p3`p329 tuBf>69 (Cd(AR"O2v"QN*N` ?<N?Fp3 `` @7g @8g @=gp @>gt @Dg @Eg @Hg @Mg @Ng @Og @Zg @\g@ @cg @ng @og @|gj @}gV @~gB`jp3`D@ @ b$@0;N @0g @;gh`` `09NR@3N`09N@29NAAL40 2. AB1`vp3`jp 3`^p3`Rp3`F?9NNE^p3`.HyNN09@29NA3@496Bl3@NApp3`HyNN09@29NA3@Hy@?94NNApp3`HyNN09B29NA3B49@A60 tBf*HyB?90N?9B?9@N`4HyB?9N09BH?N>S@??9@Np3`HyNNHyB?90N09B29NA3BtBl3BNApp3`?9NNLp3`?9NNH8p3`?9NNNp3`j09N29*A_69P89(D_EBd3@3B49@zEf |3@49BEf |3B49TBd.49@<96FSB3@Hy@?94N`Hy@?N?9BN>3BNApp3`HyNN09@296A\694C_DBd?9NNKp3`\HyNN09@296A\694C_DBd?9NN>p3`09@296A\694C_DBd?9NNCp3`?9NNFp3`p3r3`p3r3`09N@2. AL109NR@3N`t09NrAf ?<NZN09Nr>Af ?<NZN09Nr*Af ?<NZN`(?9NNb`p=@29N=A`0.@AL?0NV Rn0.nor3`p=@29N=A`0.@AL?0NURn0.nor3`?9NNa(p3`z?9N?9PNRp3`\N0`T09NrAf NT`8tBf0vO ONAO"ONp3`09NR@3Nr=AS@=@`0.@AL20`bp3`r09rA3`^09rA3`J09rA3`609rA3`"` AbA2;NRn0.nobNNp3`*09NrAft3 ?<2NH`tBf3 ?<3NHp3`p3`p3` @0m @9o @!gX @"gD @$gT @*g@; @b8@0;N@X*p @gx@% @b2@0;Nxfff"fffffB @g @g&`.`?N`Hy NN`Hy NN`Hy NN`Hy NN`?N`xr!AW69 CBd ?Nn`49B=Bx8Df NS`z3E\r6A_CFd69@CA0-Hv5Cf6|0?9@?<?90N80.3B??9@N`D@0?9@?<?9N?.?9N3BHS@??9@Np3`r3`|?NH`r??Np`frpAfNap3`L? NN`@r3`4 AbA2;N`pVN^,_ _TN[0n/,HNVAp-H0. r}AfX49NvCfJ89B3:9|Ff$093B293@??N09&3.p3N^,_ _TN/,HNVA&-H?<NL09&rA1N^,_Nu/,HNVA,-H0. @dp3B??9&N VNN^,_ _TN/,HNVAR-H V0( rAf N`849vCf*x D\| F_AEd?9Np`?NN^,_Nu/,HNVA-H0. r A]vCWĄDBd NNr`Co(4<BnN0. @=@ ` x3=@29`<29tBfL69B890Do2:9Ed NN`??9@N0903B?. N` r[Aft3`j49vCf\`8p3`L0.xEDW? NNTp3`.?. N`" @7g @8g @Dg @Eg @Mg``29tBf`p3`?9NNLp3`09P69(Cn3BHyBN?9BN>3BNApp3`l NN^p3`Z?. N`N @Agp @Bgh@H @b@0;Nt\\ @g> @gZ @*g.``0v0C\z9E_F|$FWADd ?Nh` r3`l? NN8``r3`Tr8Aft3`?N&`6?N`, AbA2;N Ag`N^,_ _TNNV?.?. ?. ?.?.?.?<NNN^ _ NNV/.?. ?<NNN^ _\NNV/.?. ?<NNN^ _\NNV/.?<HNAN^ _XNNV/.?<INAN^ _XNNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _ NNV?.?. ?<NMN^ _XNNV?.?<NNN^ _TNNV/./. /.?<NNN^ _ NNV?<NNN^NuNV?<NNN^NuNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?.?<NNN^ _TNNV?<%NNN^NuNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?<NMN^ _TNNV?.?< NMN^ _TNNV/.?<NAN^ _XNNV?./. ?<GNAN^ _\NNV/./. ?.?<@NAN^ _ NNV/./. ?.?<?NAN^ _ NNV?./. ?<NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVA-H09B290AoNBV09@CA-H0. rA^vC]DBd"?N n09B@p1@`lCo(/9$N n09B@0<1@`$/9$N n09B@0<1@0. rA?N/9$N n09B2. tBAR@3B2. v C\z E_FDdNBVN^,_ _TN/,HNVA8-H V0( `N` 09B290AlR@3B??9@N09B@AJ20|p|@W09B290A\ÄCBd`09B292AoS@3B??9@N`09v@d?9@?9@N09@d NBV`NA`Tp3B??9@N`:?( N`,Q@ @b@0;NZ @g`N^,_Nu/,HNVA$-H0. r A]vC\ĄDBd NN`=@49`49@CA -H49B890DoN2?.N n09B2.A n@091@49BRB3B`~`p3`p3`p3`0.`pO ONA@O"ON`:p3`.p3t3.`p3`09@S@3@496Bl3@?9B?9@N`09@R@3@Hy@?94N?9B?9@N`09BR@3BHyB?90N?9B?9@N`lHyB?90N09BS@3BHyBN?9B?9@N`*093t3BgN_z` 093BgN_z`BgNL`NY`BgNN`p3Bt3@??N`p3v`p3v`?<Na(`BgNa(`?9@?9@N`j`f @-g@< @b,@0;N0NAN^ _TNNV?./. ?<NNAN^ _\NNV?<ONAN^NuNV?.?<NAN^ _TNNV/.?<;NAN^ _XNNV/.?<ANAN^ _XNNV?< NMN^Nu/,HNVAX-H09"r@dH/. HnNk`/.?.A"Op?"Q?<?<NR /.?.BgǸN^,_ _ NNV?.?<NMN^ _TN/,HNVA-H?<N@d ?<N`N^,_Nu/,HNVAJ-Hp=@`?<p?NRn nop=@`?<p?NRn noN^,_Nu/,HNVA2-H 9rHV/HxN$"9ఁ\C=B0.N^,_Nu/,HNVAB-Hp#". tH²o(HxN". //<Np"Ё#N^,_ _XN/,HNVA&-H09"r@d/9?.?. ǸN^,_ _XN/,HNVA0-H/9?.^A "Op?"Q?<?<NR N^,_ _TN/,HNVA-H09@3r#t#v3x3z3|3p3r3t3?<v0O ON@?<p0O ON*?<p0O ON?<p0O ON?<p0O ON?< A,O"ON?<AO"ONN^,_Nu/,HNVA.-H?<A R"O2p"QN?<?<NDN^,_ _RN/,HNVA4-Hp3A*O"OpQ?<NkZ3&N^,_Nu[1][ User break! ][OK]/,HNVAp-Hp329RA3 n 4RB0/9?<09H/N/9?< n 0H/NA"O"OpQNN^,_ _XNTime Out/,HNVA:-H09"r@d*/9?<A "Op?"Q?<BgNR N^,_ _RN/,HNVAt-Hp=@29AdHN?<p?N n/N0. H/Nb n029Afp3t=B09@d NRp=@0.N^,_ _\N/,HNVA8-Hp=@"9$9ؒ6<Hòm"9#t=B0.N^,_Nu/,HNVA@-H 929HЁ#N@d/9?< 9r /N6N^,_NuNV?./. ?<=NAN^ _\N/,HNVA-HN092<AftC` tC V6(8<DD:(DFEE?9,?9HyBN V1@29,tBf69XCCB0`.69XCH8<DCB009Z@6(D/ 09V@A?ND~09R@3 V2(RA1A49H/NfNE V1@ VHh?9N@d V0(rAg@49RB3/9?<6(H/NAO"OpQN V0(rAfN4(H/NNE V1@rAW/ VHh?9N$@Bd?<N?Fp3 V0(rAW6(89DWńE:9EBdN^,_Nu No ACK/,HNVAZ-HNE V P1@ V PHh?9NF@ V P2(tBWxDW|CFWŠBEC@dFf p3,N^,_Nu/,HNVA-H NN V0( F@2(tBV89FDDC@dfp1@v!Cx=D:<3|=FSE=E`0.X@rABRn0.no V2(tBov9"1C=B0(S@=@`(0.2.ARAtA"0CBRn0.no2. V4(RBB=A/9#HnNk`N|Hn?0.rAft=B NN`HnBgNV=@0.rAot=Bv3x=Dz-EBg?<N/9?< /9#N<09H/N NNp=@2.tBV89FDDCdN09H/NH 929H//N"49H//Np$-B?././9N-@0.29AV69FCC&.xHĶ^EBd-HN09H/N09,rAf?t?N` ??<CNN^,_Nu/,HNVA-Hp=@29,tBf66. 8<D/NE&@W/ VHh?(Nn"@=A`h6. K8<D/NE&@W/ VHh?(N8"@Ad40. 2<A/NE$ BW/ VHh?(N"@=A0.N^,_ _TN/,HNVAZ-H09R@3A R"O2r"QN< V0(R@1@/9?<H/NNp?<p?NN^,_ _RN/,HNVAN-H VHhX"h/ ?p@dA#2R"O2p"QBgN@d>N>2.FAA@d&A#2R"O2p"QBgNF@=@``p=@0.@e A0O"OBgN=@r=A0.3,0.N^,_Nu/,HNVA~-H09,=@r3,t=BAhCvQ0.F@Hnr/HzFBN{T4B@dHnBgBgNpF@=@`0.F@=@2.3,0.N^,_NuBlaBla/,HNVAd-H0. `@HyHy"A^O"O pQBgNϢ@dfN<009rAf6N>p@d&A"R"O2p"Q?<Nn?N` N?N/9NPRN?N/9NPRN?N/9NPRN _ N^,_ _\N/,HNVtA&-HN?<oHnHnHnxHntNq0N^,_Nu/,HNVtAB-HN0.=@2. tB=A&.-Cx?<HnHnHnxHntNq0N^,_ _PN/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNq0N^,_ _\N/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNq0N^,_ _\N/,HNVA0-HN/.?. A "Op?"QBgBgNR N^,_ _N/,HNVnAV-HN n pR@p2.=A n /Nsr-@r?<#HnHnzHnrHnnNq00.z=@0.N^,_ _\N/,HNVtA4-HNp=@". -Ax?<HnHnHnxHntNq0N^,_ _XN/,HNVtA4-HNp=@". -Ax?<HnHnHnxHntNq0N^,_ _XN/,HNVtA<-HN0. =@r=A$.-Bx?<!HnHnHnxHntNq0N^,_ _\N/,HNVtA<-HN0. =@r=A$.-Bx?<!HnHnHnxHntNq0N^,_ _\N/,HNVAp-HN0.T@=@?.NS-@/.? n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HN0. H//<Np м/HnN^p=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HNp=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HN/.Nsz@d0. Hм//.NDN^,_ _\N/,HNVA-HNp=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( ND`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( ND`0@ @ b$@0;N xxRn0.no2.H//<Np"Ҽ//. NDN^,_ _XN/,HNVA-HN n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.NXN^,_ _N/,HNVA-HNp=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HN0.=@2. =A$.-Bx?<(HnHnHnxHntNq0N^,_ _PN/,HNVtA6-HN0. =@".-Ax?<rHnHnHnxHntNq0N^,_ _\N/,HNVtA^-HN .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNq0N^,_ _N/,HNVAH-HN/.?. HnHnHnHnN\/.Bg?<?.?.?.?.N-HN0.=@2. =A?<jHnHnzHnrHnnNq00.z=@0.N^,_ _XN/,HNVtA~-HN0.&=@2.$=A4."=B6. =C8.=D:.=E?<lHnHnHnxHntNq0 n0.0"n2.2$n4.4&n 6.6N^,_ _N/,HNVA8-HN .R-@ n"<//N"0"n r2N^,_ _ N/,HNV8A<-HN0. =@?.Bg?<BgHnHnHnhHnPHn8BgNqN^,_ _XN/,HNVA-HN?< ?. NN^,_ _TN/,HNV8AT-HN0.=@2.=A4.=B6. =C?<Bg?<BgHnHnHnhHnPHn8BgNqN^,_ _PN/,HNVA"-HN?. Ns?<?. NN^,_ _TN/,HNVA-HN?<?. NN^,_ _TN/,HNV8AB-HN0. =@Pr=AR?<BgBg?<HnHnHnhHnPHn8BgNqN^,_ _TN/,HNV8AR-HN?.?. Ns 0.=@2. =A?<lBg?<BgHnHnHnhHnPHn8BgNqN^,_ _XN/,HNVA"-HN?. Ns?<?. NN^,_ _TN/,HNVA.-HN0. rA?Ns0?<h0. rA?NN^,_ _TN/,HNVAl-HN?. Ns&0. =@rAo$t=BS@=@ vCox=D@=@ ?<?.N*0.rAo?<?. NN^,_ _TN/,HNV6AD-HN0. =@2.=A?<'Bg?<BgHnHnHnhHnPHn8BgNqN^,_ _XN/,HNVA-HN?<j?. NN^,_ _TN/,HNV8AB-HNp=@P2. =AR?< BgBg?<HnHnHnhHnPHn8BgNqN^,_ _TN/,HNVA-HN?<?. N N^,_ _TN/,HNV2A-HNHn2Hn4Hn6Ns:BgBgNn0.=@P2.=AR4.BS@=@T=AV6.BSC=CX8. DSA=AZ:.=E\<.DSF=F^=E`0.=@b?<BgBg?<HnHnHnhHnPHn8?<Nq?.4?.6NN^,_ _PN/,HNV8A`-HN0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?< Bg?<HnHnHnhHnPHn8?<NqN^,_ _PN/,HNVAr-HNHnHnHnNsVBgN?<NHnHnHnNs:?.Nx?.?.?.?. N*?.N?.N?.NLN^,_ _PN/,HNVtA6-HN0.=@". -Ax?<NHnHnHnxHntNq0N^,_ _\N/,HNVA-HN?</. NN^,_ _XN/,HNVA-HN0. ?BNjN^,_ _TN/,HNVA4-HNNrrAf ?</N2NrR@?NrN^,_Nu/,HNVAB-HNNrrAo*NrS@?NrNrrAf ?</NN^,_Nu/,HNVA<-HNp?/Np=@Nr=@` NxRn0.noN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNq0N^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNq0N^,_Nu/,HNVA8-HNp.R@rAHnNsr/?. Np=@0.N^,_ _N/,HNVA-HN0.F=@2.@=A4.D=B6.B=C8.:zE=D<.8=F0.6=@2.4=A4.2=B6.0E=C8..=D <.,=F 0.*=@2.(=A4.>=B:.<=E&.$-C?<HnHnHnHnNq00.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _?<N~0@Bd0.R@=@`0.n^=B0.N^,_ _XN@NUL:AXO:AXI:PRN:LST:CON:H0ar fSfr?/L0NuH0ar fSfr?/L0NuH0ar fSf`U?/L0NuH0ahr fSf`S?/L0NuH0aBr fSf`R?/L0NuH0ar fSf`T?/L0Nu#0. _  g "_Jjp` 0C0p" g $_Jjr` 2E0rg\H0&G/e$4SBkQ$SpQ C/` $SkQ$SrQE/L0&JfpC$I/90.NuH02 _024SBgQ@4BAAc/L02NuHy}NpRange error during set-operationH02 _0246@SCBgQAn68DCCc 0AgRB`/L02NuH02 _0@CEHS@rIVW.J?/L02NuH02 _0@CEHS@rIVV.J?/L02NuH02 _0@CEHS@2FA_VW.J?/L02NuH02 _0@CEHS@2FAYVW.J?/L02NuH02 _0@274BAAc7V`tO>/L02NuH02 _0@"_24BAAc1V`t>/L02NuH02 _02S@AC2YQ/L02NuH02 _02S@AC2YQ/L02NuH02 _02S@AC2FAYQ/L02NuB90J`P0JByJ _0g$_jp"_// H0LNL0LBtJ@fL)J90Jf f8| i f(Bi ` f|Ji f 3| `4<gG BQB) @e *:f&Jrt `e QG"tWJBkG:3 J90Jf fpBi `\ f3| p`J g( f*3| H@?3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu(_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHy` Hy0< LNpREWRITE required prior to WRITE or PUTDisk or directory full _$_"Wp i e)H/ NLL4NH/ NLLp)` _"WJ90Zf*J)f i e)H/ NLL i d)J)fJg i dB90ZJ)fBiQ0\Nz`z _$_"WptvH/ Hy0Xa<290XXL- -fJf^p`4  fJg*`N0eH  bBԂip(؄ij؄ifԄibԁRCJ)f  g i e) 0e 9c~Jg:JgD i d J)gP0ZJf 6Höf4N$NHy,0<`Hzh0<Np _$_0"Wt&JRJ)f:H/ Hy0XaX290XXL i d J)P0Zf RBBe`Be`N Bad digit in number encounteredOverflow during READ of number(_ _/ C (g ( fJ(fv$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f0abLEJ@g *f` J90\g R@Bh` / /<?( ?<?NA LJlp!K|JfnL`rH@Hsp/Bg?<?NA LRA3J90\g^ fSA` fL AgUH@Hz+p 3 dp` SAH@Hz$p/?<?<@NA LJ90\g`z fSA` fSAH@Hzp` f>H@Hzp `H@Hzp 3 dp/?<?<@NA LQ` d4 gb9@HHzxp/?<?<@NA LJ90\g& AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LNp  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-fileH0^p`:H0^p`.H0^p`"H0^p`H0^p` H0^p _/fJ/ gLJ/kJ`L/ fJkB`</jJk2`,gbJk&` Jk`"eb// ebr`r`rAV ?/L0^NuH0^v` H0^v _ `H0^v` H0^v _0HJ[fBBg`,j Dj4<` 4<ЀkSB`Jf].B/BJg 2/.?o /@?A /L0^NuH0^v` H0^v _ [2Jkp`&4<cH@j JgR@kJ@kJgD@?/L0^NuH0^v` H0^v _ [2Jkp`$4<cd JgRkJk~JgD//L0^NuJ/ goNuNuH0^ _?///` H0^ _0/2// Jv/ 8://N~/DD?DBoJgJgC|k?>BGHGv8ބdRC8ބdRC>HGvކdRC8ބdRCHGv48ބBޅB:>HG8ކkE߇SDkBg|d RdRDUJg( DbRD ME \/L0^NuBBo `H0^ _0/2// v/ 8://~/?DD?DBo 8JgJgG|HD8H@0zr)`рe efef<څ߇QgRCgڼd RGdSCJCkD|blo/EC \/L0^NuoH0^ _p2/g/ f/W?o `ֲ@e:f$/&e&f // d*B6//J/ k`(&// S@Q`&// `R"/?/[4JfFӃddRdRR/eJd RdRd`/AG o Jk`z0H*kS/JkFft grkRBjIHA~`( dtHAI.kRBҁjBG` BBRBӁj/e2/AG o Jk\/L0^NuH0^ _0 @&b(CC/)?/L0^NuHy`HyL0^Np Hz@CPt$> nk(:C@hԥ*5 c_1ɿ1.Ź^ k:v #-xŬX&x2n)h? SYQa@%oNˏ'?9x!7I|o|@Eŭ+E75vV 9@{pvPFloating point overflowFloating point division by zero LNuH _ gPeLd/LNuHy2`Hy>Npt`t _"_ gR e6G$S" geb"*f&"`&A%S"`&J`а|gb<|fP"9gH$A#`:"9 g6$A# `("9g$$A#` @ g"9g $A#"`"EL&R"$b HyNpJgr"Qd2`"SjN _"_ " gPeLdgR m @ e@E"fB#@B$`p&A"+ef "'I`Z"#@B$`L$K`ư| f"#`4|f"#` |f" # ` "#NHeap overruns stackPointer NILPointer not in heapH0 _0"_e /L0NuHyNp/B90/|0NuH0 _0 @f0"|00p` "_J@jpE0r4@ BbBS@kQ/L0NuH0 _4SBkt82$_rAbd0 @f0"|00p` "_J@jp6ADb6CG0IS@k$eQ/L0NuH0 _4k2SAk0"_p6B@bE0)CS@kQ/L0NuH0 _2$_r0 @f0"|00p` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/L0NuH0 _4kF2SAk>0 @f0"|00p` "_J@jpJBg@b6B@oCE0SBkQ/L0NuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"yLe Hy\NpN#1#1 .f -|L`-|L nNн1f y1NStack overruns heapH?1 _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?1Nu0NvDNH1|` H1| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/L1Nu09HNu09JByJNu _3HByJNByJNu! B0c@P`p)Jkѭ12s"RRBrb֓9{ZӽÜ$b4C dtDTjK( ŬՍ6S&r0vfVF[z8םǼHXhx@a(8#Hi +ZJzjq P:3*랛yX;l|L\,"< `Aͭ* hI~n^N>.2Qp:Yxʡ -No0 P@%pF`g=^"2B5RbwrV˕nO, 4$tfdGT$D۷_~<&6fWvvFV4Lm/ȉ鹊XDHexh'8(}\?ثJuZTj7z *:.lM|&l\dLE<, >]|ٟn~6NU^t.>CALLRETURNJUMPIFEXITADDANDASSERTBREAKCONCATCOPYCOMPARDROPDIALECHOFILESEGETHANGUPHISTORINLINEINPUTKERMITLOADSELOADTELOADFOMESSAGMACROORPATHPOPUPRUNREASSIRS232CSUSPENSENDSETWAITXMODEMYMODEMUNICOMP )*+,-[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. &N (0 *$$$,$$$.   "2 0" " NX      $*H $  .  (   $0H &(8p:"$>$&   0 (  (^@ d*   V     08^.  d ,:2 $,.4jT 6  FB $ $       @ (   J  ,6*F       f  $0  *      $          L          (.       $ &" $   ( ,.     " H$  *    2"h    F  ( 2F *8P*&   , "  $      R    X$P(  H   \2>    (  (&0 *&  L  L        ~4LZ& :(B $ F4~00"@ (2 @<$.,,8P.L"$ $        Xf.0X       .@( ."         :0       2   . 6@*t< P0* $ `$@LNh " 6 ,84 *      @ N( "      (>* &0"*^r$$  6         Z  0h h040$ v  J4 ( |$    0 N      ,:J(TXNBNV TNTr p$l>T  X  & $ $  ". F2 "&(*    B    .&*&.&*&"&"." 2~8  .   "\ ,   8    P (6     Pv vB$<& : ,  ^ 64\h$"$* @( 6 >   44:&B" $  8 " & F ( *"(. FXp4 `2* .>8F4v(,  2 &@  2\($    $R"  &D D*,    B"" n.<2 J2lTfR*\ 82     ,VL     Z$,, 6 0 "62"  T0H"   4    v  Nb^h\d\^ X $ z@  2B,@ H$"    ~" :> X( ".&l 6:Ȅ&6@6*  &" 2>0 l:2 @ D *P  "& &" RD    8 ^@.8@<$2D".  >:d& $V($ & (0B n R6"( 2B&tX 6 48X,,BF> (fF,F $Hb*D2      ((, . *  ,,R(  X  4<(H \0(Nf0(NN.L " "L*((&$D$8P ,,Bx&X& &N*  8\Lr  $ & 26Lh  &  "$6  j6 < "  0        6<&   $          n( JP| 6$V "6  h F(F   ( (L         04 $     2 F v   Jv0 " &. (.Z(,&4 *   @$ " < 4  :& "t"   6      &$*    0      88( RF*  B          (    Rl@(B  ("$    T "$L$"&,&,  >$ & $0 L   "r 4   $ 4  &  ~  D   0B@D( 6  <    &0  <&  8   *  *$" :$"( ( , ^j       b($$  "   "  0,  R                 T "                                    :          (f $ ,<"r   :     (    *   p               t, , (,  $" 6 T "(8 :&  D    J ,84((* * B$X6H DD $   ,  0  & 2 2B62D*NX,  6046B*""  "~n v ,   ..$J     *,   <  "Z 42.  2 $   b(&\4*@446 0 0 $"$,( ( 0 0 06 ,Lb8z,F b":,>4@" f,tPdv`  rV "2 * R">:d"F:6B.H*6J"*JFFFF ( B4r"" >$8$8rJ" *,JJ00 ,H ,,6 8 ,2 v8 ,6 ,,T  T* ,,  .6   *jV0b,4 "T & & (,&  H          Z6:6J"Z"Z&N6r      "$" ,*< * * , , 0 , " BBb4 ^ (  VlX$Fd z  f H F  2  "D    * "FV ( *@ B @ ( V  9(9(($((wtwMethod:Send:Receive:Start of file transfer:____________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXEnd of file transfer:____________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDelay Time [ms]:Translate EOL to:Paced by EchoNormalRawTranslatedRawTranslatedOK________9999CRLFCRLF_CRTranslation on input:ASCII___To______999Translation on output:ASCII___To______999CancelRS232 setupBaud:192009600480030012002400Flow:XOn/XOffNoneRTS/CTSParity:NoneOddEvenDatabits:78Stopbits:21Mode:LocalEchoFullOKCancel________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOKCancelUniTerm 1986 Simon Poole123456789This program and its documentation may becopied and distributed free of charge, allrights for commercial purposes reserved.Simon Poole, Bahnhofstr. 51 bCH-5430 Wettingen, SwitzerlandDeveloped with ST-Pascal Plus from CCDOKTerminal setup 14010Terminal:VT102VT100VT52VT200DCMKeypad:NumericAppl.Cursormode:ANSI ResetANSI SetUse:8 Bits7 BitsDelete:DeleteBackspaceScroll:SmoothJumpNewline Mode:CR->CRCR->CRLFWrap:AutoNoneBackground:LightDarkCursor:BlinkBlink OffUnderlineBlockStatus:NoneIndicatorHostOKCancelGraphics setupTektronix mode:DisabledEnabledGIN Termination String:________XXXXStatus Termination String:________XXXXGIN Mouse Buttons:Left:__XRight:__XAspect:Fill ScreenTrueTopline:HideShowDeletes:AcceptIgnoreOKCancel Desk File Transfer Settings Other About UniTerm... ---------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Load Setup... Save Setup... ------------------- Load Numbers... Save Numbers...------------------- Show Space... Set Path... Delete File... ------------------- Run Program... ------------------- Quit Menu ASCII XModem Kermit YModem RS232... Terminal 1... Terminal 2... Tabs... Graphics... File Transfer... Buffers... Dialer... Edit Function Keys...Receiving:Filesize:kBytes transferred:Number of packets:Timeouts:Retrys:Total number of errors:Last error:Press to abort!___________________________________________________________________________________XModem setupTimeout after:____99SecMaximum number of errors:____99Accept ASCII NUL:YESNoPacket size:1024128Error check type:CRCChkSumOKCancelKermitServer CommandsSendPutFinishReceiveGetLogoutDirRemoteTypeBinary ModeCWDUsageProgramEraseCopyRenameUtilitiesLoginHelpStatusReturn to terminal emulationReceiving: asPress to abortNumber of packets:Timeouts:Errors:Last error:kBytes transferred:Filesize:_________________________________________________________________________________________________________________________________________Kermit setupTimeout after:____99SecMaximum number of retries:____99Number of padding characters:__99Packet size:________9999Quote character:__X8 bit quote character:__XRepeat prefix character:__XPadding character:__XStart of packet:__XIBM mode:OnOffIncomplete files:KeepDiscardError check type:Chk 1Chk 2CRCOKCancel________________________________________________________________________________________________________________________________________________________________ContinueAlternate +F1 Reset Tektronix ModeA Send Answerback StringF2 Toggle 49/24 Line ModeB Short BreakF3 Write Buffer To VDI DeviceC Start File CaptureF4 Print TextscreenL Long BreakF5 Switch To Graphics ScreenP Dump Screen To DiskF6 Switch To Text ModeR Playback A FileF7 Reset TerminalS Start History RecordingF8 Toggle AutoprintT Start FiletransferF9 Enter Zoom ModeV View History BufferF10 Toggle 80/132 Column ModeX Save History BufferCapsLock Toggle Meta ModeZ Hold ScreenHelp Print ScreenUndo ExitMenuA ASCII Par.B BuffersC DialerD Delete FileE Edit F-KeysF DiskspaceG Graph Par.I InfoK Kermit Par.L Load SetupP Set PathR Run Prog.S Save SetupT Set TabsQ QuitV RS232 Par.X XModem Par.Y YModem Par.1 Terminal 12 Terminal 2View BufferUndo ExitInsert BottomHome Top  Line Up/Down  Page Up/DownSLEInsert ExitReturn Send  Up/DownZoom ModeBackspace Previous    Move ScreenReturn RestartUndo ExitUndoExitCopyright 1986/1987/1988 by Simon PooleInsertStart SLEBuffersTransfer:00009999kB00009999kBClipboard:00009999kB00009999kBRS232:0000099999B0000099999BSystem:00009999kB00009999kBHistory:00009999kBOKCancel______________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTerminal setup 2Answerback String:____________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPrinter:ConnectedNo PrinterPrint Termination:NothingFFSLE:DisabledEnabledRemote Commands:DisabledEnabledNRC:ASCIIGBNLSFFF-CDNDIN/DKPESCHAuto executed macro:___________________.___FFFFFFFFFFFOKCancelTabs1 to 60:12345678901234567890123456789012345678901234567890123456789061 to 120:123456789012345678901234567890123456789012345678901234567890121 to 132:123456789012OKCancelDialer setupName:Macro:Number:1:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX2:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX3:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX4:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX5:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX6:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX7:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX8:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX9:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXX10:________________XXXXXXXX___________________.___FFFFFFFFFFF________________________________________XXXXXXXXXXXXXXXXXXXXAccess code:________________________________________XXXXXXXXXXXXXXXXXXXXPrefix:__________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXSuffix:____________XXXXXXHangup:__________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXRetries:____99Connect msg:______________________________XXXXXXXXXXXXXXXOKCancelTimeout:____99Fail 1:______________________________XXXXXXXXXXXXXXXFail 2:______________________________XXXXXXXXXXXXXXX________________________________________________________________________________________________________________________________________________________________UtilitiesDisk SpaceDelete FileSet PathQuitXModem/YModemSendReceiveUtilitiesTerminal______________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCutAddSendF1:F2:F3:F4:F5:F6:F7:F8:F9:F10:NormalShiftControl__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX__________________________________________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCancelOKnSz'',''    *,-.01245<@AEIMQSTUWXY[\dpq -V))*./+0YZ)[yz{'X]b   : c d) e q r  s | }  ~            I P Q ) )              !  " / 0  @ C F h k n    135@LM ]bcT`a rr 5:;r<fg*oyzr {  $).<c''BB!"6]''bn{ IVW py    & 2G\t}   * 6K`x    !. :Od|   %2 >Sh    *7 CXm ,3:Ic} *BRbr{| }                  ! "+, -67 8AB CLM NXY '' I BB!!Q!BB!""YBB""#BB#a##BB$'$i$BB$%/%qBB%%&7BB&y&&BB'?''BB1L$,2;( & (, & S d   v       (H" 10*P(d P( P(  !( "#($P( %P) &P)( '(P)D )P)` *P)| +6 ,) -B .) /P) 0P) P* %],"'*$ r   x~                !    "%.(*@( % % *\*x**  *  * '7L+  G5 !+  ?       # /' 2 ; @ G N#1V ] g  o v {# " !2 !  # &$% % # '# *()2 ) ' +.,- - + 1/0"0 . 2635 $4 5 2 7 %+ ++ / 8 @+< g +X     +t  +%            %PP'      #  .  -P  6 J av   );Oas    %!$ " # $   -&,' ( ) 1* F+ U, h% {./"/ - 7+                 ( +( *  + - ,3,,8,T+ ,p - ,,, ," % ,&  $       $      $ " 4 8 ? % B6, R b  g  k&  r  z   ~&        *        *    *     *' " C     2 E  O  W   c  w  ( -( -4(5 -P -l - --  - #5- 1., I. M.0, q .L,    .h*   .-  .-   .-  .-   .- 7  ADHZ _ g"! y !#  % 0(((('7 PHL9 /9Ng            3K ]p       - ; R 21= /, d  q !{" # $ % &' ( ) * + , - . / 0, 1: G 9384/H5b 6n 7| 82>:=;/d< = 9D?C&@/ABC>!GEFF0D/H/IJ&JhH / "*/  @+0 @-0(  %   @+ 0D @-0` %@+0|@-0 & @+ 0   @- 0 %   0 !/% "2 %5( 1& 1$P&?1@#1\&    )     %     %   #")$*- 035;$=?  D!F"HJ$$M%1x &  %&  L1"@< @<& @2  ? %B, @41X^em11  2  2  2<  2Xq2t2 222 3u338 3T 3p 3 3 y 3  3 !3 " #4 $44 %4P &} '4l (4 )4 * +4 ,4 -4 . /50150 2$$35L,4A55h 6$7508 95: ;<$=50>?5 @:(5# 66,6H6d666 6 6 7  7( 7D7`7|77778 !8$ 8@ Zeq'z  8\    ' ( 8x& ! J       #  '  +   /     4 ;   AA 8A8A8A8A9A9 A9<A9XA9tA9 A(4 '( @ 9>\ABC$HdKOQSVW[T[bf4fdf|j$kq,s$stDtttProgram ShowParmBlock; {Stupid program to show how to use the $VARBLOCK UniTerm variable} Type {ParmBlock contains buffer addresses etc. to be passed on to other processes} ParmBlock = Record PBLength : Integer; {Length of ParmBlock in bytes, handy as a version check} PBFlags : Long_Integer; {Not used yet} PBTextScreen : Long_Integer; {Address of text screen} PBGraphScreen : Long_Integer; {Address of graph screen, same as PBTextScreen if not available} PBScreenBuffer : Long_Integer; {Address of buffer for screen ops etc.} PBTransBuffer : Long_Integer; {Address of buffer used for the various file transfer protocols} PBTransSize : Long_Integer; {Size of the transfer buffer (in bytes)} PBTransPtrAdr : ^Long_Integer; {Address of the pointer to the current position in the buffer} PBHistBuffer : Long_Integer; {Address of the history buffer} PBHistSize : Long_Integer; {Size of the history buffer} PBHistBotAdr : ^Long_Integer; {Address of the pointer to the current bottom of the history buffer} PBHistPtrAdr : ^Long_Integer; {Address of the pointer to the current position in the history buffer} PBClipSize : Long_Integer; {Current max size of clipboard} PBClipRecAdr : ^ClipType; {Pointer to clipboard record} End; {* Clip Type *} ClipBuffer = Packed Array[1..$400000] Of Char; {If anybody needs more...} ClipBufferPtr = ^ClipBuffer; ClipType = Packed Record Len : Long_Integer; Buffer : ClipBufferPtr; End; Var ComLine : String; Block : Record {If you could only cast in Pascal...} Case Boolean Of {Yuck!} True : (Ptr : ^ParmBlock); False : (Long : Long_Integer); End; Ch : Char; i : Integer; Begin Cmd_Getarg(1,ComLine); {Get first argument from commandline, DON'T DO IT LIKE THIS} If ComLine <> '' Then Begin ReadV(ComLine,Block.Long); {Check that it is a valid address < this applications basepage here!} WriteLn('Address of Parameter Block: ',Block.Long:8:h); {$P-,T-} With Block.Ptr^ Do Begin WriteLn('Length of parameter block: ',PBLength:4); {In a real application check that PBLength is >= what you expect} WriteLn('Flags: ',PBFlags:8:h); WriteLn('Text screen address: ',PBTextScreen:8:h); WriteLn('Graphics screen adr: ',PBGraphScreen:8:h); WriteLn('Screen buffer adr: ',PBScreenBuffer:8:h); WriteLn('Transfer buffer adr: ',PBTransBuffer :8:h); WriteLn('Transfer buffer size: ',PBTransSize:8:h); WriteLn('Current position: ',PBTransPtrAdr^:8:h); WriteLn('History buffer adr: ',PBHistBuffer:8:h); WriteLn('History buffer size: ',PBHistSize:8:h); WriteLn('Current history bottom: ',PBHistBotAdr^:8:h); WriteLn('Current hist. position: ',PBHistPtrAdr^:8:h); WriteLn('Current max. clipboard size:',PBClipSize:8:h); WriteLn('Current size of clipboard contents:'); WriteLn(' ',PBClipRecAdr^.Len:8:h); WriteLn('Current clipboard contents:'); With PBClipRecAdr^ Do For i := 1 To Len Do If Buffer^[i] = Chr(13){CR} Then WriteLn Else Write(Buffer^[i]) End {$P=,T=} End; Write('Press any key to continue...'); Read(Ch); End. 295_JBZ------------******************************************** * * * pST-COMPUTERq * * Die Fachzeitschrift fr den ATARI-ST Anwender * * * * * * prsentiert * * die PD-Sammlung fr den ATARI ST * * * ***************************************************************** * * * pDiskette 295q * * ------------- * * * * DF * *

Bildschirm in DEGAS Format in eine Datei schreiben. Eine Datei mit dem Terminal anschauen. `history' Protokoll start/stop. Datei Transfer beginnen (mit dem Protokol das im [Transfer] Menu gewaehlt wurde). `history' Buffer anschauen. <> Zeile hoch <> Zeile nach unten <> Seite hoch <> Seite nach unten Zum Ende des Buffers Zum Anfang des Buffers Zum Terminal zurueck `history' Buffer in eine Datei schreiben. Bildschirmausgabe anhalten. <1> bis <0> Telephonnummern 1 bis 10 waehlen. Normal Atari Bildschirmkopie. Einzeileneditor (ist doch ein schoenes Wort) starten. <> Vorherige Zeile <> Naechste Zeile <> Buchstabe nach rechts <> Buchstabe nach links Nach links loeschen Nach rechts loeschen Zum Terminal zurueck ohne Ausgabe Zum Terminal zurueck und aktuelle Zeile ausgeben Meta Modus ein/ausschalten. //////////////////////////////////////////////////////////////////////////// . f4 .. f4EZGEM C f4 EZGEM DOCf4(EZGEM TOSf4JGEMHEAD H f4&@ /* EZGEM This program converts GEM files generated by UniTerm into the format wanted by EasyDraw. The changes include rescaling and joining vectors into polylines. Don Rice / FXDDR@ALASKA.bitnet / CIS 72337,3417 */ #include #include #define XSCALE 6 #define XOFFS 2730 #define YSCALE 5 #define YOFFS 3276 short inbuf[256], outbuf[256] = { #include }; short inptr, outptr; struct { short op, vert, parms, subop, x[128], y[128], p[128]; } incode; short newx[128], newy[128], nxy; short nvecs, nlines, nreads, nwrites; short startline[5] = { 5, 0, 1, 99, 80 }, polyfill[17] = { 5, 0, 2, 99, 155, 1, 5, 0, 2, 99, 157, 0, 23, 0, 1, 99, 0 }, polyline[4] = { 6, 2, 0, 99 }, endline[5] = { 5, 0, 1, 99, 81 }; main() { int old, new; short getmeta(), op; char fname[80]; printf( "Name of UniTerm GEM file: " ); gets( fname ); if( (old = open( fname, O_RDONLY | O_RAW )) == -1 ) terminate( "Unable to open input file." ); printf( "Name of new GEM file: " ); gets( fname ); if( (new = open( fname, O_WRONLY | O_CREAT | O_RAW )) == -1 ) terminate( "Unable to open output file." ); init_files( old, new ); while( (op = getmeta( old )) != 6 ) ; /* Skip old header */ wrvect( new ); while( (op = getmeta( old )) != 4 ) { if( op == -1 ) break; /* EOF */ if( op == 6 ) wrvect( new ); } close( old ); finish( new ); close( new ); printf( "\n%d vectors read; %d polylines written.\n", nvecs, nlines ); terminate( "File conversion completed." ); } /* main */ cpyvert( new ) /* Copy vertices to polyline list */ int new; { short i, j; j = (nxy ? nxy-1 : 0 ); for( i=0; i 127 ) { wrpoly( new ); newx[0] = newx[127]; newy[0] = newy[127]; j = 1; } newx[j] = incode.x[i]; newy[j++] = incode.y[i]; } nxy = j; } /* cpyvert */ finish( new ) /* Flush output buffer, write end of file */ int new; { if( nxy > 0 ) wrpoly( new ); wrshort( new, -1 ); wrshort( new, 0 ); wrshort( new, 0 ); wrshort( new, 0 ); if( outptr > 0 ) write( new, outbuf, 512 ); } /* finish */ short getmeta( old ) /* Read new metafile operation */ int old; { short i, getshort(); incode.op = getshort( old ); if( incode.op == -1 ) return( -1 ); incode.vert = getshort( old ); incode.parms = getshort( old ); incode.subop = getshort( old ); for( i=0; i>8)&0x0FF) | (inbuf[inptr]<<8); if( ++inptr >= 256 ) { l = read( old, inbuf, 512 ); printf( "%dK read, %dK written\r", (++nreads)/2, nwrites/2 ); while( l < 512 ) if( l >= 0 ) inbuf[l++] = -1; else l=0; inptr = 0; } return( x ); } /* getshort */ init_files( old, new ) /* Set up i/o buffers */ int old, new; { read( old, inbuf, 512 ); inptr = 16; outptr = 172; nxy = nwrites = nvecs = nlines = 0; nreads = 1; } /* init_files */ terminate( str ) char *str; { char ans[80]; puts( str ); printf( "Press RETURN to quit: " ); gets( ans ); exit(); } /* terminate */ wrpoly( new ) /* Write polyline to output */ int new; { short i; polyline[1] = nxy; for( i=0; i<5; i++ ) wrshort( new, startline[i] ); if( nxy > 2 ) /* true polyline */ for( i=0; i<17; i++ ) wrshort( new, polyfill[i] ); for( i=0; i<4; i++ ) wrshort( new, polyline[i] ); for( i=0; i>8)&0x0FF) | (i<<8); /* Swap byte order */ outbuf[outptr++] = i; if( outptr >= 256 ) { write( new, outbuf, 512 ); printf( "%dK read, %dK written\r", nreads/2, (++nwrites)/2 ); outptr = 0; } } /* wrshort */ wrvect( new ) /* Add vector to polyline buffer */ int new; { short i; for( i=0; iEasyDraw converter/ Public domain / Unconditional distribution Don Rice KL7JIQ FXDDR@ALASKA.bitnet CIS 72337,3417 I use this program to convert .GEM files created by UniTerm (with GDOS loaded) into .GEM files that EasyDraw can read. The differences between the two formats include: 1. EasyDraw has page size and option information in the header and preface of the .GEM file. 2. UniTerm uses a different scale than EasyDraw. 3. EasyDraw uses additional instructions to identify groups. 4. UniTerm seems to break polylines into simple vectors (plines with n=2) which cannot be handled in a useful way in EasyDraw. The EZGEM.TOS program corrects these differences by (1) writing a fixed header/preface borrowed from an EasyDraw file and tossing the UniTerm header/preface; (2) rescaling all points to fall on the EasyDraw page; (3) turning each polyline into an EasyDraw object; (4) collecting connected vectors into true polylines whenever possible. I have converted very complex drawings such as maps and 3-D plots using this program and have found it quite useful for enhancing graphics from less intelligent plotting packages. There are some things to keep in mind though: - Output file size varies greatly relative to the input file size; plots with lots of short lines may double in size, while plots with long polylines may be reduced to half the original size. - EasyDraw's limit of 10000 objects is rather hard to exceed, but keep it in mind. - This program only processes polyline operations in the input file. That's all I see in my monochrome .GEM files. It is possible that some applications may generate color or line style instructions; if so, have fun modifying the program to handle them! - Avoid dashed lines in the plots you capture. If possible, use solid lines exclusively, and change them to dashed lines within EasyDraw. Feel free to distribute this ARC collection to anyone anywhere by any means. PLEASE keep the files together so the recipients can customize the programs as desired. `H^&o#7AB(HSB$H  g  g  f RSBj` g =g %gJ`Rpr A9nA0m/ПЁRSBk`Jg n <#=@`zRpr A9nA0m/ПЁRSBkT`JgN n <#<`8C7``C7@rRSBk$  g  g  gQp`JBkQB"+ҫ =@$9<f $`nԀ n$<&ւֹ=@// Bg?<JNAJg0<`6 .A=@#7#7#7N!B/ K8,MN Pp??<LNA` /`NVHy9N (XHnN ,X/<HnNP-@Rf Hy9aJXHy: N (XHnN ,X/<HnNP-@Rf Hy:#a X/./.aP/.aX=@]@f/.aX/.aX=@H gRg nf/.aX`/.N RX/.aX/.N RX09DRH29DTH//Hy:?N (O Hy:ha^XN^NuNVJyDPg 09DPHS`pBn=@09?J2.@l no$/.aJX3CNBP3DNCP=|0.H/@ @BP0.H"@?P02.$/RH ACP"@@P0=BRn`t3DPN^NuNV09DPJ@o /.aXp//.aPB/.aPB/.aPB/.aP09?FJ@o/<Hy7/.NO N^NuNV/.aX3?HR@fpN^Nu/.aX3?J/.aX3?L/.aX3?NBn09?J2.@lFH A?P/./HapX o00.H @@P/./HaNX o0Rn`Bn09?L2.@l$H AAP/./HaX o0Rn`09?HN^NuNV09?DH/@ @=D2AA @=D0@@ /R3?D=A @m/<Hy=D/.NO 29DVRA3DVH=@ rN6l29DXH/@ rN6l///Hy:N (O 0.H l&Jk2.RH A=D0=@`Bn`By?D0.N^NuNV/<Hy=D/.NO 3?D3?Fp3DT3DR3DX3DP3DVN^NuNV/.N H ABP0H//.alP0.H @CP0H//.aNPRn`Bn0. @l H @90H//.a PRn`09DTR@3DTByDPN^NuNV0.@@2.AA29?F?ARA3?F4/H B7029?F=@ Amd/<Hy7/.NO 09DVHrN6l29DXRA3DXH/@ rN6l///Hy:N (O By?FN^NuNVBn09?J2.@lFH A?P"A?P0H@ 0 A@P"A@P0H@ 0Rn`09DPJ@f /.aX`T09DPHS @BP249?PBf @CP029@PAf /.aX`/.aVX/.aX09DRR@3DRN^NuNVBD^p#DZ DZl nHHR"@<4gR` nJgZ 9DZRDZ @D^  nHHJgR"@<4fR` nrR@JfpNqHyDHy:Hy7@NO 97`-@ >g"HyDHy:Hy7`NO -@` HyDHy:Hy7aNO -@HyEHy:Hy:NO -@Jf p/N XJf/.Hy:N Pp/NX/9<N0X//.NxP n(@Jf/.Hy:N Pp/NXHyD^/9DZNPBNXN^NuNVB 9DS#DJkp yDRD`HyDNhX-@ g, f nRB` nR .`JfpN^Nu nB .N^NuNVB . S".lL n (S!@Jk "PRp` /.NhX-@Rg nR . fNq . nBJfpN^Nu .N^NuNV nHHR-@Jg:"9DS#DJk yDRDHH`HyD/.NP` 9DS#DJk yDRDp HH`HyDp /NPN^NuNVB nHHR-@Jg4 n "(S!AJk "PRHH`/. /.NP-@` .N^NuNVA -H nJg4HHR-@-H %f %fFHHR"9DS#D-@Jk yDRDHH`HyD/.NP`HnHnHn/.N) O-@JglB-@ .lX"9DS#DJk yDRDCHH`AHHHyD/NPR` 9DS#DJk yDRD .HH`HyD/.NP`N^NuNV/.NXJ fpN^Nu n(@@ n "n"#H #y<pN^NuNVB . l rN6 @D/NXR`B .=8l/N RXR`/. /.N PN^NuNV-|D nFd(Jg ` nFfpN^Nu/./. /.aO N^NuNV nJ(g/aX-y=<-n n(HH bg afB`-|R n( +WDHH n HHA wg rg af ./@J.gr`r //<//.NO -@RfpN^Nup/B/.N~O J.g <`p-@`J.gp`p".//.NP-@RfpN^NuJ.g <`p-@`^J.gp`p"./<//.NO -@RfpN^NuJ.g <`p-@`pN^Nu .rN6 @GJ(g n"n#H ` nB . n@ p!@!@ .@ N^NuNV n(g/p/NP n( JfJg/(/( N8P"n#H #HB))HH/N RXN^NuNV n(gpN^Nu nJg(f/(/( N8P n"n#H )@p#@#@#@N^NuNV n(0JgpN^Nu nJf(f/aNXJgpN^Nu n(gp-@`* n(gpN^Nu n(@-h n(HH/./( /NO -@Jj n( @Jf n(@Jo n!n n(0JgpN^Nu n (S!@Jk "PRp` /.aXN^NuNV-n n (0JgpN^Nu n Jfr(fh fpN^Nu/. aXJgpN^Nu n (@ (!@S!@Jk"PR .HH`/. /.alPN^Nu n (gJ fpN^Nu .@ n (HHr/Hn/-ANO r-A-@` n (gpN^Nu n (@ g8Jo2 (S!@Jk"PR .HH`/. /.aPp-@"n Q gDJj-i` n (-@ n (HH/./( /NO -@` p-@-@ f n ( @` .g n (@ n (!@"h . g("(S!AJk "PRHH`/. /.aP n (0JgpN^Nu fpN^Nu .N^NuNV nJg(fpN^Nu/9<N0X n !@ Jfp #<pN^Nu n!y<(@p!@!@N^Nu#< <( 9<$#<,J<$fpNu"y<("#y<, NuBaXNuNVJjpN^Nu#< #<$-|/<N X-@JfpN^Nu#< #<$ .S-@Jg/<N XJg .ѹ<$`a@pN^NuNV 9<,N^NuNV ./-@aXN^NuNVJnpN^Nu .^rN6l-|<( n-P-@JgV . n"(m6f"n"` n (!@Ѯ .<, n N^Nu-n n-P` ./N X-@JgFJ<$f#< #<$`& 9<$ y< "n-Hf .ѹ<$ .N^NupN^NuNV . //.-@aPN^NuNVJ npN^Nu n . ^rN6l-@-H .ѹ<,-|<("n-Q-HJg n (-H nc"n"#n n pN^Nu nf"n" .Ш#@ n pN^Nu nd .䑹<,pN^Nu nfP nJg n"nc .䑹<,pN^Nu . nѨJg n"nf (ѩ"pN^Nu-n-n n-P` n "n"#n N^NuNVJk$ .=8lrN6 @Gfp #<pN^Nu .rN6 @G N^NuNVB .=8lrN6 @GJgR` .=8fp#<pN^Nu .rN6 @G 9<0". -@ -Hgp`p n .  g> gJfV n@`\.gp`p nHH`8.gp`p` nHH` nBp#<pN^Nup n@ nJf-|;B . lFr N6 @;R//.N6PJf .r N6 @;"nPR` n(Jf.g /.N$X.gp` . //.N!P n!@J7g@ . JgB/.N#>P n!@J7gJp#< nBpN^Nu .  f$ n/(N#Xp#< nBpN^Nu .N^NuNV . ". ///.a|O N^NuNVJjp#<pN^Nu/.aX-@JfpN^Nu n(HH dN``` ``/./. n/(N$DO -@J7g JfpN^Nu ng .N^Nup-@-@ .lZ n R@HH g f$ .Sr///.aO .N^Nu n R`JfJfB .N^NupN^NuNVJjp#<pN^Nu/.aX-@JfpN^Nu n(HH drN``` ``P ngp/B/.aLO ng0/./. /(N$O -@J7gpN^Nu .N^NuB.p-@-@-@ .l n R@ f . g | S nF .R.-@A m/HyF n/(N$O -@갮gpN^NuJ7gpN^NuB`hJg:/.HyF n/(N$O -@갮gpN^NuJ7gpN^Nu .N^Nu .N^Nup#<pN^NuNV/.a X-@JfpN^Nu n(JgpN^Nu/./. n/(N$O -@J7gp#<pN^Nu f`JgZ nfN .S-@Jk4B/./.afO Jgp/Hn/.a\O JfS` .RN^Nu .N^NuNV/.aLX-@JfpN^NuB n/(N#XJ7gp-@ nB .N^NuNV/.N$XJ7gpN^NupN^NuNV/.aXN^NuNV/. /.NPN^NuNV .7opN^Nu y7 .ѹ77 N^NuNV/.aX-@JgN^Nu | N^NuNV 977ѹ7#77#<(#< #<,#<$ N^NuNVa-@JfpN^Nu /./9;azP n-@Jfp-@ . dN```4`L`XJ fDA"n"`(  f*A"n"`  fA"n"`A:"n"`  fA"n"`A"n"`  f. .r/@B///r/r/N6$O #7/.aXJ7WDHHLN^NuNV .r/@///r/rA/N6$O#7JWDHH N^NuNVJfB/./. /.aON^Nu"n QB/./. / NON^NuNVJfp//./. /.a`ON^Nu"n Qp//./. / NON^NuNVH Jf pLN^NuAJ$n"Rg pLN^Nup". /. n/(/. /p/pB/N6$OLN^NuNVJgp@`p?r$.". v/A////./ n/(v//-@N6$O-@Jj #7pN^Nu .N^NuNVBp/N6$P n pN^NuNVB .l& n HH/r/r/N6$O R` .N^NuNVB .l& n HH/r/r/N6$O R` .N^NuNVv . lS`p}@A r//r/r /N6$Op /p/p/N6$O .HHr-Ax-@| .|T".xl>6@w f| w .wf .xUDN^Nu .xU n wRx` .| }l n  .|RN^NuNVB .lP n @HH fp /p/p/N6$O .HH/r/r/N6$O R` .N^NuNVJg .`pN^NuNVB . l" @GBJf @GB N^NuR`pN^NuNV nBN^NuNV. am zn aAN^Nu. N^NuNV. HH/aX.HH/@aX/fp`pN^NuNVp-@p-@p-@-@ n JgR`B . nJg n@JgR =g ,f .S".f .N^Nu .R.HH n HH//-@a2PJfB. ,g =f p-@p-@ .,fRR`^Jg .S".f .N^NupN^NuNVH p-@r-Ar -A n-@-@-@ -f pR-@ nHH/@R @<4gh 0fp0-@ nHHR-@ nHHR"@<4g$ .r N6HHRЁ-@` n .fHRB nHHR"@<4g$ .r N6HHRЁ-@` n lf pR-@B nHHrHkfNf`ne``g`Pc`*s`o`Xx`u`8d`Jg"n QX-P` "n QX-PJj(p-@` Jg"n QX-P` "n QX-Pp -@ .r N6l-AJjDS .0". .r N6l-@Jf fS .-A .r -A-H`vJg"n QX-P` "n QX-Pp-@S . @< . .-@JfA .r-A-H`Jg"n QX-P` "n QX-Pp -@S .0". .-@JfA .r -A-H` f-|"n QX"P-Iгf-|<B .lP nJgDR`Ap-@$n"RX @-H` p-@`B`p-@` pLN^NuJgJg .ܰl-n .BJgH .S-@Jk n R"nR` .S-@Jk\ n R .` .S-@Jk n R .` .S-@Jk n R"nR` n nR LN^Nu fp-@ mp` .-@R WDHHHnHnHn// n/N1O nPA".-@-A-HJjD fJg mp`p-@JgSp-@JgRJg* .R".Ё-@Jk .ѮJg@R`: .\ѮJj .D` .-@ coR oRJf4 .ܰo* . .S-@Jk . n R R`Jg n -R JgJjp n 0R.R-H .S-@Jk .R-@Jj n 0R ` .S-@Jk n"n RR ` n 0R ` .SJk0 .S-@Jk n"n RR ` n 0R `Jg n .R .S-@Jk: .S-@Jk n"n RR ` n 0R ` .S-@Jk n"n RR ` n 0R n .R .S-@Jk0 .S-@Jk n"n RR ` n 0R ` n ER-H Jj-R D` n +R p -@S .r N6l0 . .r N6l-@ nJf . lR n R ` f4 .ܰo* . .S-@Jk . n R R` n nR LN^NuNPNQH0$h "N5 9n8i 3F <)i/gRi`a:<) ҆Bц` .f Jif`Ri` eg efNa +g -f ia 0m. 9n(:)iFi im?)_ f $hB`4)?)_gDBi/gT3|?Jk Si`Jig ktia\adSi`aRi`t4)?)_gN5r$h$$$h$p0)L~NYNXNu,(g !|NuH$hN<L?3FS fiNu?)_g|Nu$fprt`"HBHBB/t Q$Nu//gdB Jf BB /g$RB/fJjRd R`SBgBo Bl(J?BBHB_HB&Nu/<N6p`/<N60<HBBH@B@Or`NV#GN^NuNVH*OB7pn@N?.*?.&?."?.?.?.?.?. NA.ML?N^NuH<*g2jD(g(jDBv㒴eRQ"jDjD`BBL \ASCII{ESC}[2h \> Keyboard locked \\ \> \ASCII{ESC}[4h \> Insert mode \\ \> \ASCII{ESC}[12h \> Local echo off \\ \> \ASCII{ESC}[20h \> New line mode on \\ \> \ASCII{ESC}[?1h \> Cursor key application mode \\ \> \ASCII{ESC}[?3h \> *RI 132 column mode \\ \> \ASCII{ESC}[?4h \> *RI Smooth scrolling \\ \> \ASCII{ESC}[?5h \> Screen reverse \\ \> \ASCII{ESC}[?6h \> Origin mode relative \\ \> \ASCII{ESC}[?7h \> Auto wrap on \\ \> \ASCII{ESC}[?8h \> * Auto repeat on \\ \> \ASCII{ESC}[?9h \> * Interlace on \\ \> \ASCII{ESC}[?18h \> Print form feed on \\ \> \ASCII{ESC}[?19h \> Print extent full screen \\ \end{tabbing} \subsection{Reset Mode} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[2l \> Keyboard unlocked \\ \> \ASCII{ESC}[4l \> Replace mode \\ \> \ASCII{ESC}[12l \> Local echo on \\ \> \ASCII{ESC}[20l \> New line mode off \\ \> \ASCII{ESC}[?1l \> Cursor key cursor mode \\ \> \ASCII{ESC}[?2l \> VT52 mode \\ \> \ASCII{ESC}[?3l \> 80 column mode \\ \> \ASCII{ESC}[?4l \> Jump scrolling \\ \> \ASCII{ESC}[?5l \> Screen normal \\ \> \ASCII{ESC}[?6l \> Origin mode absolute \\ \> \ASCII{ESC}[?7l \> Auto wrap off \\ \> \ASCII{ESC}[?8l \> * Auto repeat off \\ \> \ASCII{ESC}[?9l \> * Interlace off \\ \> \ASCII{ESC}[?18l \> Print form feed on \\ \> \ASCII{ESC}[?19l \> Print extent scrolling region \\ \end{tabbing} \subsection{Select Character Sets} The format is: \ASCII{ESC}{\em primary} {\em final} Where {\em primary} selects one of the four logical character sets (G0 to G3) and {\em final} selects the actual character set to be mapped into the logical set. \subsubsection{Primary selector} \begin{tabbing} 1234\=123456789123456789\= \kill \> ( \> G0 \\ \> ) \> G1 \\ \end{tabbing} \subsubsection{Final selector} \begin{tabbing} 1234\=123456789123456789\= \kill \> A \> UK national \\ \> B \> US-ASCII \\ \> 0 \> Special graphics \\ \> 1 \> *NI Alternate character set ROM \\ \> 2 \> *NI Alternate special graphics set ROM \\ \end{tabbing} \subsection{Shift into Character Sets } \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{SO} \> Locked shift G1 \\ \> \ASCII{SI} \> Locked shift G0 \\ \end{tabbing} \subsection{Character Attributes } \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[m \> No attributes \\ \> \ASCII{ESC}[0m \> No attributes \\ \> \ASCII{ESC}[1m \> Bold \\ \> \ASCII{ESC}[4m \> Underline \\ \> \ASCII{ESC}[5m \> Blink (Light) \\ \> \ASCII{ESC}[7m \> Reverse \\ \end{tabbing} \subsection{Scrolling Region } \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[{\it Pt\/};{\it Pb\/}r \> Set scrolling region \\ \end{tabbing} \subsection{Cursor Movement Commands } \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[{\it Pn\/}A \> Cursor up \\ \> \ASCII{ESC}[{\it Pn\/}B \> Cursor down \\ \> \ASCII{ESC}[{\it Pn\/}C \> Cursor right \\ \> \ASCII{ESC}[{\it Pn\/}D \> Cursor left \\ \> \ASCII{ESC}[{\it Pl\/};{\it Pc\/}H \> Cursor position \\ \> \ASCII{ESC}[{\it Pl\/};{\it Pc\/}f \\ \> \ASCII{ESC}D \> Index \\ \> \ASCII{ESC}M \> Reverse Index \\ \> \ASCII{ESC}E \> Next line \\ \> \ASCII{ESC}7 \> Save cursor \\ \> \ASCII{ESC}8 \> Restore cursor \\ \end{tabbing} \subsection{Tab Stops } \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}H \> Horizontal tab set \\ \> \ASCII{ESC}[g \> Tab clear \\ \> \ASCII{ESC}[0g \> Tab clear \\ \> \ASCII{ESC}[3g \> Clear all tabs \\ \end{tabbing} \subsection{Line Attributes } \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}{\#}3 \> Double-height top half \\ \> \ASCII{ESC}{\#}4 \> Double-height bottom half \\ \> \ASCII{ESC}{\#}5 \> Single-width single-height \\ \> \ASCII{ESC}{\#}6 \> *RI Double-width single-height \\ \end{tabbing} \subsection{Erasing} \subsubsection{In Line} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[K \> Cursor to end of line \\ \> \ASCII{ESC}[0K \> \\ \> \ASCII{ESC}[1K \> Beginning of line to cursor \\ \> \ASCII{ESC}[2K \> Entire line \\ \end{tabbing} \subsubsection{In Screen} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[J \> Cursor to end of screen \\ \> \ASCII{ESC}[0J \> \\ \> \ASCII{ESC}[1J \> Beginning of screen to cursor \\ \> \ASCII{ESC}[2J \> Entire screen \\ \end{tabbing} \subsection{Requests/Reports} \begin{tabular}{llll} \multicolumn{2}{c}{Requests from host} & \multicolumn{2}{c}{Reports to host} \\ \ASCII{ESC}[5n & Status & \ASCII{ESC}[0n & Terminal OK \\ & & \ASCII{ESC}[3n & * Terminal not OK \\ \ASCII{ESC}[6n & Cursor pos. & \ASCII{ESC}[{\it Pl\/};{\it Pc\/}R & Cursor position \\ \ASCII{ESC}[c & What are you? & \ASCII{ESC}[?1;{\it Ps\/}c & VT100, Ps options \\ \ASCII{ESC}[0c & & \ASCII{ESC}[?6;{\it Ps\/}c & VT102, Ps options \\ \ASCII{ESC}Z & & \ASCII{ESC}[?62;{\it Ps\/}c & VT200, Ps options \\ \ASCII{ESC}[?15n & Printer status & \ASCII{ESC}[?10n & Printer ready \\ & & \ASCII{ESC}[?11n & Printer not ready \\ & & \ASCII{ESC}[?13n & No printer \\ \end{tabular} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[0x \> Send terminal parameter report after setup \\ \> \ASCII{ESC}[1x \> Send only on request \\ \end{tabbing} \subsection{Reset} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}c \> Reset to default values \\ \end{tabbing} \subsection{Tests} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}{\#}8 \> Fill screen with E's \\ \> \ASCII{ESC}[2;{\it Ps\/}y \> * Invoke tests \\ \end{tabbing} \subsection{Keyboard LED's} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[0q \> All off \\ \> \ASCII{ESC}[{\it Ps\/}q \> LED Ps on \\ \end{tabbing} \subsection{VT52 Mode} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}\ \> Enter ANSI Mode \\ \> \ASCII{ESC}= \> Enter alternate keypad mode \\ \> \ASCII{ESC}\Rangle \> Exit alternate keypad mode \\ \> \ASCII{ESC}F \> Select special graphics character set \\ \> \ASCII{ESC}G \> Select US/UK character set \\ \> \ASCII{ESC}A \> Cursor up \\ \> \ASCII{ESC}B \> Cursor down \\ \> \ASCII{ESC}C \> Cursor right \\ \> \ASCII{ESC}D \> Cursor left \\ \> \ASCII{ESC}H \> Cursor home \\ \> \ASCII{ESC}Y{\it PlPc\/} \> Direct cursor address \\ \> \ASCII{ESC}I \> Reverse line feed \\ \> \ASCII{ESC}K \> Erase to end of line \\ \> \ASCII{ESC}J \> Erase to end of screen \\ \> \ASCII{ESC}Z \> What are you? \\ \> \ASCII{ESC}/Z \> I am a VT52 (Response) \\ \> \ASCII{ESC}\Caret\> Enter auto print mode \\ \> \ASCII{ESC}- \> Exit auto print mode \\ \> \ASCII{ESC}W \> Enter printer controller mode \\ \> \ASCII{ESC}X \> Exit printer controller mode \\ \> \ASCII{ESC}] \> Print screen \\ \> \ASCII{ESC}V \> Print cursor line \\ \end{tabbing} \subsection{Editing Functions} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[{\it Pn\/}P \> Delete character \\ \> \ASCII{ESC}[{\it Pn\/}L \> Insert Line \\ \> \ASCII{ESC}[{\it Pn\/}M \> Delete Line \\ \end{tabbing} \subsection{Print Commands} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[?5i \> Enter auto print \\ \> \ASCII{ESC}[?4i \> Exit auto print \\ \> \ASCII{ESC}[5i \> Enter printer controller \\ \> \ASCII{ESC}[4i \> Exit printer controller \\ \> \ASCII{ESC}[i \> Print screen \\ \> \ASCII{ESC}[0i \> \\ \> \ASCII{ESC}[?1i \> Print cursor line \\ \end{tabbing} \subsection{Other Control Characters} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{NUL} \> Ignored \\ \> \ASCII{SOH} \> Ignored \\ \> \ASCII{ETX} \> Ignored \\ \> \ASCII{EOT} \> Ignored \\ \> \ASCII{ENQ} \> Transmit answerback message \\ \> \ASCII{BEL} \> Bell \\ \> \ASCII{BS} \> Backspace \\ \> \ASCII{HT} \> Horizontal tab \\ \> \ASCII{LF} \> Linefeed or \ASCII{CR} \ASCII{LF} \\ \> \ASCII{VT} \> same as \ASCII{LF} \\ \> \ASCII{FF} \> same as \ASCII{LF} \\ \> \ASCII{CR} \> Carriage Return \\ \> \ASCII{SO} \> Shift to G1 character set \\ \> \ASCII{SI} \> Shift to G0 character set \\ \> \ASCII{DC1} \> Ignored (Alternate XOn) \\ \> \ASCII{DC3} \> Ignored (Alternate XOff) \\ \> \ASCII{CAN} \> Cancel \\ \> \ASCII{SUB} \> Cancel \\ \> \ASCII{DEL} \> Ignored \\ \> \ASCII{US} \> Ignored \\ \> \ASCII{RS} \> Ignored \\ \> \ASCII{FS} \> Ignored \\ \> \ASCII{SYN} \> Ignored \\ \> \ASCII{EM} \> Ignored \\ \> \ASCII{ETB} \> Ignored \\ \> \ASCII{NAK} \> Ignored \\ \> \ASCII{DLE} \> Ignored \\ \> \ASCII{XON} \> In XOn/XOff flow control mode \\ \> \ASCII{XOFF}\> intercepted by ST bios, otherwise ignored \\ \end{tabbing} \subsection{Nonstandard Functions} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[` \> Lock Keyboard \\ \> \ASCII{ESC}[b \> Unlock Keyboard \\ \> \ASCII{ESC}[{\it Pn\/}I \> Move Pn tabs right \\ \> \ASCII{GS} \> Enter 4014 Vector mode \\ \> \ASCII{ESC}{\%}!0 \> Enter Tektronix alpha mode (4105) \\ \> \ASCII{ESC}{\#}!0 \> Report terminal mode (4105) \\ \> {\%}!\ASCII{SPSP}1 \> Report: I am a ANSI terminal (4105)\\ \> \ASCII{ESC}[?39h \> Set 49 line mode \\ \> \ASCII{ESC}[?39l \> Set 24 line mode \\ \> \ASCII{ESC}[?40h \> Set meta mode \\ \> \ASCII{ESC}[?40l \> Reset meta mode \\ \> \ASCII{ESC}[*c \> Inquire UniTerm version and mode \\ \>Response: \\ \> \ASCII{ESC}[*{\it major\/};{\it minor\/};{\it release\/};{\it max-row\/};{\it max-col\/}c \\ \> \ASCII{ESC}Pu{\it string\/}\ASCII{ESC}\verb+\+ \\ \>Execute {\it string\/} with UniTerm's macro processor \\ \end{tabbing} \section{VT2XX Functions} \subsection{Character Sets} The format is: \ASCII{ESC}{\em primary} {\em final} \subsubsection{Primary selector} \begin{tabbing} 1234\=123456789123456789\= \kill \> ( \> G0 \\ \> ) \> G1 \\ \> * \> G2 \\ \> + \> G3 \\ \end{tabbing} \subsubsection{Final selector} \begin{tabbing} 1234\=123456789123456789\= \kill \> \Langle \> DEC International \\ \> B \> US-ASCII \\ \> 0 \> Special graphics \\ \end{tabbing} \subsubsection{Logical character set selection} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}\Tilde \> Lock shift G1 -\Rangle GR \\ \> \ASCII{ESC}n \> Lock shift G2 -\Rangle GL \\ \> \ASCII{ESC}{\}} \> Lock shift G2 -\Rangle GR \\ \> \ASCII{ESC}o \> Lock shift G3 -\Rangle GL \\ \> \ASCII{ESC}\Vbar \> Lock shift G3 -\Rangle GR \\ \> \ASCII{ESC}N \> Single shift G2 -\Rangle GL \\ \> \ASCII{ESC}O \> Single shift G3 -\Rangle GL \\ \end{tabbing} \subsection{Terminal Modes} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{CSI}61"p \> VT100 mode \\ \> \ASCII{CSI}62"p \> VT200 mode, 8-bit \\ \> \ASCII{CSI}62;0"p \> " " \\ \> \ASCII{CSI}62;1"p \> VT200 mode, 7-bit \\ \> \ASCII{CSI}62;2"p \> VT200 mode, 8-bit \\ \> \ASCII{ESCSP}F \> *NI Send only C0 codes \\ \> \ASCII{ESCSP}G \> *NI Send C1 codes \\ \end{tabbing} \subsection{Selective Erasing and Attributes} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{CSI}22m \> Bold off \\ \> \ASCII{CSI}24m \> Underline off \\ \> \ASCII{CSI}25m \> Blink off \\ \> \ASCII{CSI}27m \> Inverse off \\ \> \ASCII{CSI}0"q \> Erase protection off \\ \> \ASCII{CSI}1"q \> Non-erasable \\ \> \ASCII{CSI}2"q \> Erasable \\ \> \ASCII{CSI}?K \> Cursor to EOL \\ \> \ASCII{CSI}?0K \> \\ \> \ASCII{CSI}?1K \> SOL to Cursor \\ \> \ASCII{CSI}?2K \> Whole line \\ \> \ASCII{CSI}?J \> Cursor to EOP \\ \> \ASCII{CSI}?0J \> \\ \> \ASCII{CSI}?1J \> SOP to Cursor \\ \> \ASCII{CSI}?2J \> Whole screen \\ \end{tabbing} \subsection{Reports} \begin{tabbing} 1234\=123456789123456789\= \kill \> From host \\ \> \ASCII{CSI}{\Rangle}0c \> Secondary device attribute response \\ \> From terminal \\ \> \ASCII{CSI}{\Rangle}1;17;0c \> VT220, Software version 1.7 \\ \> From host \\ \> \ASCII{CSI}?25n \> Are the function-keys locked? \\ \> From terminal \\ \> \ASCII{CSI}?20n \> Unlocked \\ \> \ASCII{CSI}?21n \> *NI Locked \\ \end{tabbing} \subsection{Misc} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}[{\it Pn\/}X \> Erase Pn characters \\ \> \ASCII{ESC}[{\it Pn\/}P \> Delete Pn characters \\ \> \ASCII{ESC}[{\it Pn\/}@ \> Insert Pn blanks \\ \> \ASCII{CSI}!p \> Soft reset \\ \> \ASCII{CSI}?38h \> Tektronix mode \\ \> \ASCII{CSI}?38l \> VT200 mode \\ \> \ASCII{CSI}?25h \> Cursor on \\ \> \ASCII{CSI}?25l \> Cursor off \\ \end{tabbing} \subsection{Downloadable Function Keys} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{DCS}{\it Pc\/};{\it Pl\/}\Vbar{\it Ky1\/}/{\it St1\/};..\ASCII{ST} \\ \> \> Pc = 0 clear all keys (ignored) \\ \> \> Pc = 1 don't clear keys (ignored) \\ \> \> Pl = 0 lock keys (ignored) \\ \> \> Pl = 1 don't lock keys (ignored) \\ \> \> Ky1 Key number (decimal) \\ \> \> St1 String (hex) \\ \end{tabbing} \subsection{Downloadable Character Sets} Not implemented! Sorry. \subsection{Control Codes} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{IND} \> Index \\ \> \ASCII{NEL} \> Next line \\ \> \ASCII{SSA} \> Ignored \\ \> \ASCII{ESA} \> Ignored \\ \> \ASCII{HTS} \> Horizontal tab set \\ \> \ASCII{HTJ} \> Ignored \\ \> \ASCII{VTS} \> Ignored \\ \> \ASCII{PLD} \> Ignored \\ \> \ASCII{PLU} \> Ignored \\ \> \ASCII{RI} \> Reverse index \\ \> \ASCII{SS2} \> Single shift G2 -\Rangle GL \\ \> \ASCII{SS3} \> Single shift G3 -\Rangle GL \\ \> \ASCII{DCS} \> Device control string introducer \\ \> \ASCII{PU1} \> Ignored \\ \> \ASCII{PU2} \> Ignored \\ \> \ASCII{STS} \> Ignored \\ \> \ASCII{CCH} \> Ignored \\ \> \ASCII{MW} \> Ignored \\ \> \ASCII{SPA} \> Ignored \\ \> \ASCII{EPA} \> Ignored \\ \> \ASCII{CSI} \> Control sequence introducer \\ \> \ASCII{ST} \> String terminator \\ \> \ASCII{OSC} \> Ignored \\ \> \ASCII{PM} \> Ignored \\ \> \ASCII{APC} \> Ignored \\ \end{tabbing} \section{VT3XX Functions} Currently only the implemented control sequences are listed. \subsection{Set Mode} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}?67h \> \key{Backspace}\ sends \ASCII{BS}\ and \key{Delete}\ sends \ASCII{DEL} \end{tabbing} \subsection{Reset Mode} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}?67l \> \key{Backspace}\ sends \ASCII{DEL}\ and \key{Delete}\ sends \ASCII{BS} \end{tabbing} \subsection{National Replacement Character Sets} In this mode the ASCII characters: \begin{verbatim} # @ [ \ ] ^ _ ` { | } ~ \end{verbatim} are mapped into characters of the international character set. Only one NRC can be active at one time, the format to select one is: \ASCII{ESC}{\em primary} {\em final} \subsubsection{Primary selector} \begin{tabbing} 1234\=123456789123456789\= \kill \> ( \> G0 \\ \> ) \> G1 \\ \> * \> G2 \\ \> + \> G3 \\ \end{tabbing} \subsubsection{Final selector} \begin{tabbing} 1234\=123456789123456789\= \kill \> A \> British \\ \> 4 \> *RI Dutch \\ \> 5 or C \> Finnish \\ \> R \> *RI French \\ \> 9 or Q \> French Canadian \\ \> K \> German \\ \> Y \> Italian \\ \> ' or E or 6 \> Norwegian/Danish \\ \> \%6 \> *NI Portugese \\ \> Z \> Spanish \\ \> 7 or H \> Swedish \\ \> = \> Swiss \\ \end{tabbing} \section{4014 Mode} \subsection{Alpha Mode} \subsubsection{Cursor Movement} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{BS} \> Cursor left \\ \> \ASCII{HT} \> Cursor right \\ \> \ASCII{LF} \> Cursor down \\ \> \ASCII{VT} \> Cursor up \\ \> \ASCII{CR} \> Cursor to left margin \\ \end{tabbing} \subsubsection{Character Set Sizes} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}8 \> Normal 35x76 (lines x columns) \\ \> \ASCII{ESC}9 \> Small 38x81 \\ \> \ASCII{ESC}: \> Smaller 50x120 \\ \> \ASCII{ESC}; \> Smallest 58x133 \\ \> \ASCII{ESC}6 \> *NI Enter Italics ? \\ \> \ASCII{ESC}7 \> *NI Exit Italics ? \\ \end{tabbing} \subsubsection{Mode Changing} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{GS} \> Vector mode \\ \> \ASCII{ESC}\ASCII{SUB} \> GIN mode \\ \> \ASCII{FS} \> Point plot mode \\ \> \ASCII{ESC}\ASCII{FS} \> *NI Special point plot mode \\ \> \ASCII{RS} \> Incremental mode \\ \> \ASCII{CAN} \> Return to text terminal \\ \end{tabbing} \subsection{Other Functions and Extended Escape Codes} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}\ASCII{ETB} \> Hardcopy \\ \> \ASCII{ESC}\ASCII{ENQ} \> Transmit status \\ \> \ASCII{ESC}\ASCII{STX} \> Enable block fill/erase \\ \> \ASCII{ESC}\ASCII{ETX} \> Disable block fill/erase \\ \> \ASCII{ESC}\Bslash R \> Enable rectangle draw \\ \> \ASCII{ESC}\Bslash r \> Disable rectangle draw \\ \> \ASCII{ESC}x \> Enable selective erase \\ \> \ASCII{ESC}/0d \> Dots on \\ \> \ASCII{ESC}/1d \> Dots off \\ \> \ASCII{ESC}/2d \> Dots complemented \\ \end{tabbing} \subsection{Vector Mode} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{GS} \> Next vector is dark \\ \> address \> Draw vector, next vector is visible \\ \> \ASCII{ESC}` \> Solid vector \\ \> \ASCII{ESC}a \> Dotted \\ \> \ASCII{ESC}b \> Dot-dashed \\ \> \ASCII{ESC}c \> Short-dashed \\ \> \ASCII{ESC}d \> Long-dashed \\ \> \ASCII{ESC}p \> Solid vector, XOR \\ \> \ASCII{ESC}q \> Dotted, XOR \\ \> \ASCII{ESC}r \> Dot-dashed, XOR \\ \> \ASCII{ESC}s \> Short-dashed, XOR \\ \> \ASCII{ESC}t \> Long-dashed, XOR \\ \> \ASCII{ESC}\ASCII{SUB} \> GIN mode \\ \> \ASCII{US} \> Alpha mode, don't move \\ \> \ASCII{CR} \> Alpha mode \\ \> \ASCII{ESC}\ASCII{FF} \> Alpha mode, clear screen \\ \end{tabbing} \subsection{Point Plot/Special Point Plot Mode } \begin{tabbing} 1234\=123456789123456789\= \kill \> address \> Plot point \\ \> intensity address \> *NI Special plot point \\ \> \ASCII{CR} \> Alpha mode \\ \> \ASCII{ESC}\ASCII{FF} \> Alpha mode \\ \end{tabbing} \subsection{Incremental Point Plot Mode} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{SP} \> Pen up \\ \> P \> Pen down \\ \> D \> North \\ \> E \> North east \\ \> A \> East \\ \> I \> South east \\ \> H \> South \\ \> J \> South west \\ \> B \> West \\ \> F \> North west \\ \> \ASCII{CAN} \> Alpha mode \\ \> \ASCII{ESC}\ASCII{SUB} \> GIN mode \\ \end{tabbing} \section{4105 Commands } In the following list capital letters are part of the command sequences and lower case identifiers denote Tektronix encoded parameters. \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}IQ code \> *NI Report terminal settings \\ \> \ASCII{ESC}IJ normal shifted \\ \> \> *NI Change GIN cursor speed \\ \\ \> \ASCII{ESC}JC \> *NI Copy \\ \\ \> \ASCII{ESC}KC \> *NI Cancel \\ \> \ASCII{ESC}KR mode \> *NI Change carriage return/line feed mode \\ \> \ASCII{ESC}KD number contents \\ \> \> *NI Define macro \\ \> \ASCII{ESC}KO number contents \\ \> \> *NI Define nonvolatile macro \\ \> \ASCII{ESC}KA mode \> *NI Enable dialog area \\ \> \ASCII{ESC}KW mode \> *NI Enable key expansion \\ \> \ASCII{ESC}KX number \> *NI Expand macro \\ \> \ASCII{ESC}KH mode \> *NI Hardcopy \\ \> \ASCII{ESC}KI mode \> Ignore deletes mode \\ \> \ASCII{ESC}KF mode \> *NI Change line feed/carriage return mode \\ \> \ASCII{ESC}KL mode \> *NI Lock keyboard \\ \> \ASCII{ESC}KQ \> *NI Report errors \\ \> \ASCII{ESC}KV \> *NI Reset \\ \> \ASCII{ESC}KU \> *NI Save nonvolatile parameters \\ \> \ASCII{ESC}KE mode \> *NI Change echo mode \\ \> \ASCII{ESC}KZ char-delete line-delete literal \\ \> \> *NI Change edit characters \\ \> \ASCII{ESC}KT threshold \> *NI Change error threshold \\ \> \ASCII{ESC}KY char \> *NI Change key execute character \\ \> \ASCII{ESC}KS mode \> *NI Change transparent mode \\ \> \ASCII{ESC}KB positions \> *NI Change tab stops \\ \\ \> \ASCII{ESC}LL number \> *NI Change number of lines in dialog area \\ \> \ASCII{ESC}LP start-point fill-boundary \\ \> \> *NI Start panel boundary \\ \> \ASCII{ESC}LZ \> *NI Clear dialog area \\ \> \ASCII{ESC}LG position \> *NI Draw to position \\ \> \ASCII{ESC}LH position \> *NI Draw marker at position \\ \> \ASCII{ESC}LE \> *NI Finish panel \\ \> \ASCII{ESC}LT text \> *NI Graphic text \\ \> \ASCII{ESC}LF position \> *NI Move to position \\ \> \ASCII{ESC}LB number \> *NI Change number of lines for dialog buffer \\ \> \ASCII{ESC}LI char-color char-background-color dialog-background-color \\ \> \> *NI Change dialog area color \\ \> \ASCII{ESC}LV mode \> *NI Change dialog area visibility \\ \> \ASCII{ESC}LM writing-mode \\ \> \> *NI Change dialog area writing mode \\ \\ \> \ASCII{ESC}MP number \> *NI Choose fill pattern \\ \> \ASCII{ESC}MG writing-mode \\ \> \> *NI Change graphics area writing mode \\ \> \ASCII{ESC}MN direction \> *NI Change graphtext direction \\ \> \ASCII{ESC}MR mantissa power-of-two \\ \> \> *NI Change graphtext rotation \\ \> \ASCII{ESC}MC width height spacing \\ \> \> *NI Change graphtext size \\ \> \ASCII{ESC}ML color \> *NI Change line color \\ \> \ASCII{ESC}MV style \> Change line style \\ \> \ASCII{ESC}MM type \> Change marker type \\ \> \ASCII{ESC}MT text-color \> *NI Change text color \\ \end{tabbing} \begin{tabbing} 1234\=123456789123456789\= \kill \> \ASCII{ESC}NM mode \> *NI Prompt mode \\ \> \ASCII{ESC}NR transmit receive \\ \> \> *NI Change baud rates \\ \> \ASCII{ESC}NK time \> *NI Change break time \\ \> \ASCII{ESC}NU char \> *NI Change echo suppression cancel character \\ \> \ASCII{ESC}NE string \> *NI Change EOF string \\ \> \ASCII{ESC}NT string \> *NI Change EOL string \\ \> \ASCII{ESC}NC first-char second-char \\ \> \> *NI Change EOM characters \\ \> \ASCII{ESC}NF mode \> *NI Change flow control mode \\ \> \ASCII{ESC}NP string \> *NI Change prompt string \\ \> \ASCII{ESC}NQ size \> *NI Change input buffer size \\ \> \ASCII{ESC}NB stopbits \> *NI Change number of stop bits \\ \> \ASCII{ESC}ND delay \> *NI Change transmit delay \\ \\ \> \ASCII{ESC}QI values \> *NI Map color to monochrome values for print \\ \> \ASCII{ESC}QU density \> *NI Choose color hardcopy image density \\ \> \ASCII{ESC}QD type \> *NI Choose printer type \\ \> \ASCII{ESC}QL pages page-origin ff-mode \\ \> \> *NI Change dialog hardcopy attributes \\ \> \ASCII{ESC}QE attributes *Ni Change hardcopy monochrome attributes \\ \> \ASCII{ESC}QO orientation \\ \> \> *NI Change image orientation \\ \\ \> \ASCII{ESC}RU plane writing-mode bits-per-pixel \\ \> \> *NI Begin pixel operations \\ \> \ASCII{ESC}RX dest.-plane d.-lower-left-corner \\ \> first-source-corner second-s.-corner \\ \> \> *NI Copy pixels \\ \> \ASCII{ESC}RP number color \\ \> \> *NI Write pixels \\ \> \ASCII{ESC}RR lower-left-corner upper-right-corner fill-color \\ \> \> *NI Fill rectangle \\ \> \ASCII{ESC}RL array \> *NI ? \\ \> \ASCII{ESC}RH position \> *NI Move to pixel position \\ \> \ASCII{ESC}RS lower-left-corner upper-right-corner \\ \> \> *NI Change coordinates for pixel operations \\ \> \ASCII{ESC}RW first-corner opposite-corner \\ \> \> *NI Change window on 4096*4096 coordinates \\ \\ \> \ASCII{ESC}TD first-color second-color \\ \> \>*NI Change alpha cursor colors \\ \> \ASCII{ESC}TF colors \> *NI Change color indices for dialog area \\ \> \ASCII{ESC}TG plane colors \> *NI Change color indices for plane \\ \> \ASCII{ESC}TC first-color second-color third-color \\ \> \> *NI Change GIN cursor color \\ \\ \> \ASCII{ESC}SX number position \\ \> \> *NI Change GIN cursor position \\ \\ \> \ASCII{ESC}\ASCII{SUB} \> Enter 4010 GIN mode \\ \> \ASCII{ENQ} \> *NI Inquire 4105 status \\ \> \ASCII{US} \> *NI Enter 4105 alpha mode \\ \> \ASCII{ESC}\ASCII{CAN} \> Enter echo suppression mode \\ \> \ASCII{FS} \> Enter marker mode \\ \> \ASCII{GS} \> Enter vector mode \\ \> \ASCII{ESC}\ASCII{FF} \> Clear screen, enter alpha mode \\ \> \ASCII{ESC}{\#}!0 \> Report terminal mode \\ \> \ASCII{ESC}\ASCII{ENQ} \> Report 4010 status \\ \> \ASCII{ESC}{\%}! mode \> Change to a different terminal mode \\ \> \ASCII{ESC} font \> Change fonts \\ \> \ASCII{ESC} style \> Change 4014 line style \\ \> \ASCII{ESC}\ASCII{ETB} \> 4014 hardcopy \\ \end{tabbing} \item 4014 \subitem Alpha Mode Tektronix 6 \indexspace \item abort 15 \item About \subitem UniTerm... 3 \item Accept \subitem ASCII NUL 19 \item Add 8 \subitem Command 48 \item after \subitem Timeout 19, 22 \item Alpha \subitem Mode Tektronix 4014 6 \item Alt 2, 6 \subitem 0 9 \subitem 1 9 \subitem CapsLock 10 \subitem F1 5 \subitem F5 5 \subitem F6 5 \subitem F9 5 \subitem H 9 \subitem T 3, 17, 18, 20 \subitem Undo 5 \subitem V 9 \item Alternate 2, 9, 23 \item AND \subitem Command 48 \item Answerback 13 \item ASCII 15 \subitem File Transfer 17 \subitem File Transfer Parameters 17 \subitem File Transfer Using 17 \subitem NUL Accept 19 \item Aspect 14 \item ASSERT \subitem Command 48 \item Auto \subitem executed macro 13 \indexspace \item Background 12 \item Backspace 6, 13, 15, 16, 37, 49 \item Baud 11 \item Binary \subitem File Transfer 20 \item Bindings \subitem Key 23 \subitem overriding 23 \item bit \subitem quote character 8 22 \item BREAK \subitem Command 48 \item Buffer \subitem Sizes 14 \item Buffers 4, 14 \indexspace \item call \subitem Command 53 \item Capabilities \subitem Kermit 19 \item CapsLock 7 \subitem Alt 10 \item Capture \subitem File 15 \item character \subitem 8 bit quote 22 \subitem Commands Single 16 \subitem Padding 22 \subitem Quote 22 \subitem Repeat prefix 22 \subitem set international 10 \item characters \subitem Number of padding 22 \item check \subitem type Error 19, 22 \item ClrHome 9 \item Command \subitem ADD 48 \subitem AND 48 \subitem ASSERT 48 \subitem BREAK 48 \subitem call 53 \subitem COMPARE 48 \subitem CONCAT 48 \subitem COPY 48 \subitem DIAL 48 \subitem DROP 48 \subitem ECHO 49 \subitem exit 53 \subitem FILESELECTOR 49 \subitem GET 49 \subitem HANGUP 49 \subitem HISTORY 49 \subitem if 53 \subitem INLINE 49 \subitem INPUT 49 \subitem jump 53 \subitem LOADSETUP 49 \subitem LOADTEL 50 \subitem MACRO 50 \subitem MESSAGE 50 \subitem OR 50 \subitem PATH 50 \subitem POPUP 23 \subitem REASSIGN 23, 50 \subitem return 53 \subitem RUN 50 \subitem SEND 50 \subitem SET 51 \subitem SUSPEND 51 \subitem UNICOMMAND 51 \subitem WAIT 51 \item Commands \subitem Server 21 \subitem Single Character 16 \item COMPARE \subitem Command 48 \item CONCAT \subitem Command 48 \item constant \subitem Integer 47 \subitem String 47 \item Control \subitem C 9, 20, 49 \subitem Mode Display 12 \subitem Mouse Cursor 8 \item COPY \subitem Command 48 \item CRC 18 \item CURRENT \subitem Variable 52 \item Cursor \subitem Control Mouse 8 \item Cursormode 12 \item Cut 8 \indexspace \item Databits 11 \item DCM 12 \item Delay \subitem Time 18 \item Delete \subitem File 3 \item Deletes 14 \item Desk \subitem Menu 2 \item DIAL \subitem Command 48 \item Dialer 4, 9 \item Display \subitem Control Mode 12 \item DROP \subitem Command 48 \indexspace \item Echo 12 \subitem Command 49 \subitem Paced by 18 \item Edit \subitem Function Keys 4, 15 \item Editing \subitem Setup File 58 \item Editor \subitem Single-line 15 \item End \subitem of file transfer 18 \item EOL \subitem to Translate 18 \item Error \subitem check type 19, 22 \item errors \subitem Maximum number of 19 \item Esc 15 \item executed \subitem macro Auto 13 \item exit \subitem Command 53 \item Exiting \subitem UniTerm 5 \indexspace \item F1 \subitem Alt 5 \item F10 7 \item F2 6 \item F3 6 \item F4 7 \item F5 \subitem Alt 5 \item F6 \subitem Alt 5 \item F7 7 \item F8 7 \item F9 \subitem Alt 5 \item File \subitem Capture 15 \subitem Delete 3 \subitem Editing Setup 58 \subitem KEYEDIT.PRG 58 \subitem Load UniTerm 58 \subitem Menu 3 \subitem mode Macro 47 \subitem Playback 15 \subitem Save UniTerm 58 \subitem Transfer 3, 4, 15, 17 \subitem Transfer ASCII 17 \subitem Transfer Binary 20 \subitem transfer End of 18 \subitem Transfer Parameters ASCII 17 \subitem transfer Start of 17 \subitem Transfer Using ASCII 17 \subitem UNITERM.PRG 2 \subitem UNITERM.RSC 2 \subitem UNITERM.SET 2, 4, 58, 59 \subitem UNITERM.TEL 9 \subitem Updating Setup 58 \item FILENAME \subitem Variable 52 \item Files \subitem Setup 14 \item FILESELECTOR \subitem Command 49 \item Flowcontrol 11, 22 \item Full 11 \item Function \subitem Keys Edit 4, 15 \item Function-key \subitem mode 47 \indexspace \item GET \subitem Command 49 \item Getting \subitem Started 2 \item GIN \subitem Mode 6 \subitem Termination String 13 \item Graphics 4, 13 \subitem Mode Vector 5 \indexspace \item HANGUP \subitem Command 49 \item Help 2, 7, 11, 12, 15, 17 \item HISTORY \subitem Command 49 \indexspace \item IBM \subitem mode 22 \item if \subitem Command 53 \item INLINE \subitem Command 49 \item input \subitem Command 49 \subitem Translation on 18 \item Insert 7, 9, 16 \item Integer \subitem constant 47 \subitem variable 47 \item international \subitem character set 10 \indexspace \item jump \subitem Command 53 \indexspace \item Kermit 19 \subitem Capabilities 19 \subitem Parameters 21 \item key \subitem Bindings 23 \subitem Meta 9 \item KeyEdit 10 \item KEYEDIT.PRG \subitem File 58 \item Keypad 12 \item Keys \subitem Edit Function 4, 15 \subitem Using the Special 6 \indexspace \item Load \subitem Numbers 3 \subitem Setup 3 \subitem UniTerm File 58 \item LOADSETUP \subitem Command 49 \item LOADTEL \subitem Command 50 \item Local 12 \indexspace \item macro \subitem Auto executed 13 \subitem Command 50 \subitem file mode 47 \subitem Processor 47 \item Maximum \subitem number of errors 19 \subitem number of retries 22 \item Menu \subitem Desk 2 \subitem File 3 \subitem Other 4 \subitem Popup 8 \subitem Quit 3, 4 \subitem Settings 4 \subitem Transfer 3 \item MESSAGE \subitem Command 50 \item Meta \subitem key 9 \subitem mode 7, 9 \item Method 18 \item Mode \subitem Display Control 12 \subitem Function-key 47 \subitem GIN 6 \subitem IBM 22 \subitem Macro file 47 \subitem Meta 7, 9 \subitem Newline 12 \subitem Tektronix 13 \subitem Tektronix 4014 Alpha 6 \subitem Vector Graphics 5 \subitem Zoom 5 \item monitor 2 \item Mouse \subitem Cursor Control 8 \indexspace \item Newline \subitem Mode 12 \item NRC 13 \item NUL \subitem Accept ASCII 19 \item number \subitem of errors Maximum 19 \subitem of padding characters 22 \subitem of retries Maximum 22 \item Numbers \subitem Load 3 \subitem Save 3 \indexspace \item OK 4, 27, 49 \item OR \subitem Command 50 \item Other \subitem Menu 4 \item output \subitem Translation on 18 \item overriding \subitem bindings 23 \indexspace \item Paced \subitem by Echo 18 \item Packet \subitem size 19, 22 \subitem Start of 22 \item padding \subitem character 22 \subitem characters Number of 22 \item Parameters \subitem ASCII File Transfer 17 \subitem Kermit 21 \subitem RS232 Port 11 \subitem Set RS232 Port 27 \subitem XModem 19 \item Parity 11 \item Path \subitem Command 50 \subitem Set 3 \subitem Variable 52 \item Playback \subitem File 15 \item Popup \subitem Command 23 \subitem Menu 8 \item Port \subitem Parameters RS232 11 \subitem Parameters Set RS232 27 \item prefix \subitem character Repeat 22 \item Print \subitem terminator 13 \item Printer 13 \item Processor \subitem Macro 47 \item Program \subitem Run 3 \indexspace \item Quit \subitem Menu 3, 4 \item Quote \subitem character 22 \subitem character 8 bit 22 \indexspace \item REASSIGN \subitem Command 23, 50 \item Receive 18, 20 \item Repeat \subitem prefix character 22 \item Requirements 2 \item retries \subitem Maximum number of 22 \item Return 2, 6, 12, 16, 20, 49, 58 \subitem Command 53 \item RS232 4, 11 \subitem Port Parameters 11 \subitem Port Parameters Set 27 \item Run \subitem Command 50 \subitem Program 3 \indexspace \item Save \subitem Numbers 3 \subitem Setup 3, 4 \subitem UniTerm File 58 \item Scroll 12 \item Send 8, 18, 20 \subitem Command 50 \item Server \subitem Commands 21 \item Set \subitem Command 51 \subitem international character 10 \subitem Path 3 \subitem RS232 Port Parameters 27 \item Settings 3, 4, 11, 12, 13, 14, 15, 17 \subitem Menu 4 \item Setup \subitem File Editing 58 \subitem File Updating 58 \subitem Files 14 \subitem Load 3 \subitem Save 3, 4 \item Show \subitem Space 3 \item Single \subitem Character Commands 16 \item Single-line \subitem Editor 15 \item size \subitem Packet 19, 22 \item Sizes \subitem Buffer 14 \item SLE 13 \item Space \subitem Show 3 \item Special \subitem Keys Using the 6 \item Start \subitem of file transfer 17 \subitem of packet 22 \item Started \subitem Getting 2 \item Starting \subitem Using \UniTerm 2 \item Status \subitem Termination String 13 \item Statusline 15 \item Stopbits 11 \item String \subitem constant 47 \subitem GIN Termination 13 \subitem Status Termination 13 \subitem variable 47 \item SUSPEND \subitem Command 51 \indexspace \item Tabs 4, 14 \item Tektronix \subitem 4014 Alpha Mode 6 \subitem mode 13 \item TEMP \subitem Variable 52 \item Terminal \subitem 1 4, 12 \subitem 2 4, 12 \item Termination \subitem String GIN 13 \subitem String Status 13 \item terminator \subitem Print 13 \item the \subitem Special Keys Using 6 \item Time \subitem Delay 18 \item Timeout \subitem after 19, 22 \item Transfer \subitem ASCII File 17 \subitem Binary File 20 \subitem End of file 18 \subitem File 3, 4, 15, 17 \subitem Menu 3 \subitem Parameters ASCII File 17 \subitem Start of file 17 \subitem Using ASCII File 17 \item Translate \subitem EOL to 18 \item Translation \subitem on input 18 \subitem on output 18 \item type \subitem Error check 19, 22 \indexspace \item Undo 5, 6, 9 \subitem Alt 5 \item UNICOMMAND \subitem Command 51 \item UniTerm \subitem Exiting 5 \subitem File Load 58 \subitem File Save 58 \subitem Starting Using 2 \item UniTerm... \subitem About 3 \item UNITERM.PRG \subitem File 2 \item UNITERM.RSC \subitem File 2 \item UNITERM.SET \subitem File 2, 4, 58, 59 \item UNITERM.TEL \subitem File 9 \item Updating \subitem Setup File 58 \item Use 12 \item Using \subitem ASCII File Transfer 17 \subitem the Special Keys 6 \subitem UniTerm Starting 2 \indexspace \item VAR \subitem Variable 52 \item variable \subitem CURRENT 52 \subitem FILENAME 52 \subitem Integer 47 \subitem PATH 52 \subitem String 47 \subitem TEMP 52 \subitem VAR 52 \item Vector \subitem Graphics Mode 5 \indexspace \item WAIT \subitem Command 51 \item Wrap 12 \indexspace \item XModem 18 \subitem Parameters 19 \indexspace \item YModem 18 \indexspace \item Zoom \subitem Mode 5 Read Me for the TeX distribution of the UniTerm User's Guide ------------------------------------------------------------ (V1.07 for UniTerm V2.0c 002) The UniTerm users guide in TeX source comprises the following 13 files: ug.tex intro.tex starting.tex more.tex ftrans.tex custom.tex implem.tex ccandesc.tex asciicc.tex smacro.tex keyedit.tex keys.tex index.tex To generate the manual run LaTex twice on ug.tex. A few underful \vbox warnings will appear, just ignore them (I did aswell:-)). Please report any documentation bugs you find. Simon Poole Bitnet: K538915@CZHRZU1A UUCP: ...mcvax!cernvax!forty2!poole Mail address: Bahnhofstr. 51b CH-5430 Wettingen Switzerland %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Simple Macro Processor}\index{Macro Processor} The macro commands can be in the strings assigned to the function keys or in a file, the command initiator is {\tt \%} for function keys (this is not needed in a macro file). A command line is a maximum of 80 characters long. The macro-processor works in two modi: \begin{description} \explain{Function-key mode}{all characters between commands are sent to the serial port} \explain{Macro file mode}{everything between commands except white-space is a syntax error, additional commands are available in this mode.} \end{description} \section{Arguments} Arguments are enclosed in parentheses and separated by commas, they can be of the following types: \begin{description} \explain{String constant}{character string enclosed in single quotes, max. 80 characters.} \explain{String variable}{10 user setable string variables are available: \$1 to \$10, additionaly 5 predifined strings can be used.} \explain{Integer constant}{positive integer in the range 0..32767.} \explain{Integer variable}{10 user setable integer variables are available: @1 to @10, range: -32768 to +32767.} \explain{Function}{any of the built-in functions can be used as an argument} \end{description} \section{Functions} All commands only have to be specified to the point they are unique (for most commands this means one character). Case is not significant. \mac{ADD}{int1,int2}{ Arithmetic sum.}{{\em int1} + {\em int2}} \mac{AND}{int1,int2}{ Logical and.}{{\em int1} and {\em int2}} \mac{ASSERT}{}{Assert DTR.}{0} \mac{BREAK}{len,drop-dtr}{ Send Break for {\em len} (integer) mSec, drop DTR according to the {\em drop-dtr} (integer) value.}{0} \mac{CONCAT}{str1,str2}{ Concatenate {\em str1} (string) and {\em str2} (string) and put the result in the variable {\tt \$TEMP}.}{0} \mac{COPY}{nr,str}{ Copy {\em str} (string) to string variable number {\em nr} (integer).}{0} \mac{COMPARE}{str1,str2}{ Compare {\em str1} (string) to {\em str2} (string).} {1 if {\em str1} equals {\em str2} else 0.} \mac{DROP}{}{Drop DTR.}{0} \mac{DIAL}{num}{Dial number {\em num} (1 to 10).} {1 if sucessful, 0 otherwise.} \mac{ECHO}{message}{Echo {\em message} (string).}{0} \mac{FILESELECTOR}{path,filename,prompt}{ Show a fileselector with path {\em path} (string), filename {\em filename} (string) and a prompt of {\em prompt} (string). The new values for path and filename are in the variables {\tt \$PATH}\ and {\tt \$FILENAME}.} {1 if \button{OK}\ is selected, else 0.} \mac{GET}{in-string,time}{ Wait for {\em in-string} (string), with timeout {\em time} (integer) sec} {1 if sucsessful.} \mac{HANGUP}{}{Hangup the modem.}{0} \mac{HISTORY}{switch}{Turn history recording on if {\em switch} is 1 (does not reset the buffer).}{0} \mac{INLINE}{mode}{ Reads a line from the keyboard (until \key{Return}\ is pressed or a maximum of 80 characters are read, \keytwo{Control}{C}\ aborts), if {\em mode} (integer) is 1 (true) the characters are echoed. \key{Delete}\ and \key{Backspace} cause a destructive backspace. The line read is copied into {\tt \$TEMP}.}{0} \mac{INPUT}{prompt}{ Prompt for a line of input, result is in {\tt \$TEMP}, {\em prompt} is a string.} {1 if \button{OK}\ is selected.} \longmac{KERMIT}{mode,8-bit-mode,filespec}{ Start Kermit filetransfer with the following parameters:}{ {\em mode} (string):\>{\tt SEND} : send file(s) \\ \>{\tt REC} : receive file(s) \\ \>{\tt GET} : receive file(s) from server \\ {\em 8-bit-mode} (integer):\>{\tt 0} : 7 bit ASCII text \\ \>{\tt 1} : 8 bit binary \\ {\em filespec} (string): \>file specification with wildcards} {0} \mac{LOADSETUP}{name}{ Load the setup file with name {\em name} (string).}{0} \mac{LOADTEL}{filename}{Load a dialer setup file.}{0} \mac{MESSAGE}{msg}{ Displays {\em msg} (string) on the statusline. If {\em msg} is empty the normal statusline is restored.}{0} \mac{MACRO}{name}{Execute the macro with filename {\em name} (string) from disk, default path is the current directory} {the value of the exit command, or \begin{quote} -3 : syntax error (line in \$TEMP) \\ -2 : not enough stack (nested more than one level) \\ -1 : macro buffer full (more than 4kB). \end{quote} } \mac{OR}{int1,int2}{ Logical or.}{{\em int1} or {\em int2}} \mac{PATH}{path}{Change default path to {\em path} (string).}{0} \longmac{POPUP}{entry,command,name}{Redefines an entry in the popup menu:}{ {\em entry} : \>1..20 \\ {\em command} : \>see list \\ {\em name} : \> string that will be displayed}{0} \mac{RUN}{name,commandline}{ Execute program {\em name} (string) with {\em commandline} commandline (string). If its a {\tt .TTP} program you'll be asked for parameters.} {Return code of program.} \mac{REASSIGN}{alt-key,command}{ Assigns integer value {\em command} to the alternate key value {\em alt-key}.} {0} \mac{SEND}{out-string}{Send {\em out-string} (string).}{0} \mac{SET}{nr,int}{ Set integer variable number {\em nr} (integer) to {\em int} (integer)}{0} \mac{SUSPEND}{}{ Displays ``Press any key...'' on the statusline and waits for a keypress.} {0} \mac{WAIT}{time}{Wait for {\em time} (integer) mSec$\times$100.}{0} \mac{UNICOMMAND}{command}{ Execute one of UniTerm's internal commands, see list.}{0} \longmac{XMODEM}{mode,file}{ Start XModem with:}{ {\em mode} (string):\>{\tt SEND} : send file \\ \>{\tt REC} : receive file \\ {\em file} (string): \>file to send/receive} {0} \longmac{YMODEM}{mode,filespec}{ Start YModem with:}{ {\em mode} (string):\>{\tt SEND} : send file(s) \\ \>{\tt REC} : receive file(s) \\ {\em filespec} (string): \>file specification with wildcards} {0} \section{Prefix Operators} \begin{tabbing} MMMMMMM\=MMMM\=\kill \>{\tt - } \>negate integer value \\ \>{\tt ! } \>logical not \\ \>{\tt " } \>return integer as string \\ \>{\tt . } \>return string as integer \\ \end{tabbing} Bug: {\tt .} and {\tt "} don't know about negative integers! \section{String Constants} String constants are a maximum of 80 characters long and are enclosed in single quotes. Special ASCII values can be entered with the escape character \Bslash ; every character after \Bslash\ equals itself, except: \begin{tabbing} MMMMMMM\=MMMM\=\kill \> r \>: is \ASCII{CR} \\ \> n \>: is \ASCII{LF} \\ \> 0xx \>: \Bslash 0xx is the octal ASCII value 0xx \\ \end{tabbing} \section{Predefined String Variables} \begin{description} \explainnoi{{\tt \$PATH}}{\index{Variable PATH} contains the last file selector path, is initialized to the home directory of UniTerm.} \explainnoi{{\tt \$FILENAME}}{\index{Variable FILENAME} contains the last file selector filename, is initialized to '\,'.} \explainnoi{{\tt \$CURRENT}}{\index{Variable CURRENT} contains the current GEM DOS path.} \explainnoi{{\tt \$TEMP}}{\index{Variable TEMP} tempory string for use in the macro processor.} \explainnoi{{\tt \$VAR}}{\index{Variable VAR} holds the address of \UniTerm's parameter block\footnotemark\ for passing to other programs.} \end{description} \footnotetext{Please consult the separate documentation on this subject.} \section{Additional Features in Macro File Mode} \subsection{Labels} Twenty local labels (per macro file) can be used: {\tt :1} to {\tt :20}. A label must be the first and only word on a line! \subsection{Comments} A line starting with \#\ is ignored on input. \subsection{Additional Statements} These statements can only be used in macro file mode, and will cause an error if used from a function key. \statement{if}{int}{execute the rest of the line if {\em int} is not equal 0} \statement{jump}{nr}{goto label number {\em nr}} \statement{exit}{int}{stop processing and return with value {\em int}} \statement{call}{nr}{execute subroutine at label {\em nr} (subroutines can't be nested!)} \statement{return}{}{return from subroutine} \section{Example} \begin{verbatim} ##################################### # Test Macro for UniTerm V2.0c 002 # # Copyright 1988 Simon Poole # # # ##################################### # turn history recording on history(1) call(20) echo('\007\r\nSample UniTerm macro file') echo('\r\n-------------------------\007') # # Reset the modem # copy(1,'ATZ') copy(2,'OK') set(2,5) call(4) # if(@1) echo('\r\nReset\r\n') jump(2) # echo('\r\nToo many retries\r\n') exit(-1) # # Dial the number and wait for CONNECT # (in real life you would use the dial() function) # :2 # Get number from user if(!input('Enter number (2512002)')) exit(0) # if the string is empty use the default if(compare($T,'')) concat('2512002','') # Hayes want a ATD concat('ATD',$T) # dial............ copy(1,$T) copy(2,'CONNECT') set(2,30) call(4) if(!@1) echo('\r\nFailed\r\n')exit(1) # # Login # # this is for our LocalNet 20 system :6 send('\r') if(!get('#',2)) break(100,FALSE) if(!get('#',2)) send('\001\001') send('echo off\r') if(!get('#',2)) echo('\r\nSomething is wrong!') hangup() exit(-1) # call the system send('call e780\r') # should have a counter here, but you can always stop with ^C if(!get('COMPLETED',3)) send('done\r') jump(6) if(!get('ogin',3)) send('done\r') jump(6) send('poole\r') # # should send my password here # # Finished! exit(0) ######################################################### # # # Send a string to a Hayes compatible modem # # # ######################################################### # # @1 number of retries # @2 timeout # $1 string to send (telephone number...) # $2 string to wait for (CONNECT) # :4 set(1,3) :5 echo('\r\nTry: ') echo("add(4,-@1)) set(1,add(@1,-1)) wait(10) # send attn string echo('\r\nSending +++') send('+++') # we might get a OK here... get('OK',2) echo('\r\nSending ') echo($1) send($1) send('\r') if(and(!get($2,@2),@1)) jump(5) return() ######################################################## # # # Home cursor and clear screen # # # ######################################################## :20 echo('\033[f\033[2J') return() ######################################################## \end{verbatim} A very useful aspect of the macro processor, is that you can assign a string like {\tt {\%}R('TEMPUS.PRG','\,')}\ to a function key and run your favourite editor just by pressing one key\footnote{Remember that enough system memory has to be reserved for programs to run in.}. \section{\UniTerm\ Internal Function Numbers} \begin{tabbing} 12341\=23456789011111111111 \= \kill \> ResetTek = \>1 \\ \> VDIOutput = \>2 \\ \> PrintTextScreen = \>3 \\ \> TekMode = \>4 \\ \> TextMode = \>5 \\ \> Reset = \>6 \\ \> AutoPrint = \>7 \\ \> Zoom = \>8 \\ \> 132ColumnToggle = \>9 \\ \> ScrollLock = \>10 \\ \> 49LineToggle = \>11 \\ \> SendAnswerBack = \>12 \\ \> ShortBreak = \>13 \\ \> DropDTR = \>14 \\ \> LongBreak = \>15 \\ \> SaveHistory = \>16 \\ \> ControlHistory = \>17 \\ \> Switch = \>18 \\ \> ControlCapture = \>19 \\ \> PlayBack = \>20 \\ \> SendFile = \>21 \\ \> DegasSave = \>22 \\ \> ViewHistory = \>23 \\ \> Hangup = \>24 \\ \> Dial1 = \>25 \\ \> Dial2 = \>26 \\ \> Dial3 = \>27 \\ \> Dial4 = \>28 \\ \> Dial5 = \>29 \\ \> Dial6 = \>30 \\ \> Dial7 = \>31 \\ \> Dial8 = \>32 \\ \> Dial9 = \>33 \\ \> Dial10 = \>34 \\ \> SetPath = \>35 \\ \> DelFile = \>36 \\ \> DiskSpace = \>37 \\ \> F1 = \>38 \\ \> F2 = \>39 \\ \> F3 = \>40 \\ \> F4 = \>41 \\ \> F5 = \>42 \\ \> F6 = \>43 \\ \> F7 = \>44 \\ \> F8 = \>45 \\ \> F9 = \>46 \\ \> F10 = \>47 \\ \> SF1 = \>48 \\ \> SF2 = \>49 \\ \> SF3 = \>50 \\ \> SF4 = \>51 \\ \> SF5 = \>52 \\ \> SF6 = \>53 \\ \> SF7 = \>54 \\ \> SF8 = \>55 \\ \> SF9 = \>56 \\ \> SF10 = \>57 \\ \> Utilities = \>58 \\ \> ToggleMeta = \>59 \\ \> Help = \>60 \\ \> InsertClip = \>61 \\ \> SaveClip = \>62 \\ \> ViewHistEOL = \>63 \\ \end{tabbing} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentstyle[twoside]{report} % \title{UniTerm Users Guide} \author{Simon Poole} %\includeonly{} \makeindex \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Macros % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\Tilde}{\char126} \newcommand{\Caret}{\char94} \newcommand{\Rangle}{$\rangle$} \newcommand{\Langle}{$\langle$} \newcommand{\Vbar}{$\mid$} \newcommand{\Bslash}{$\backslash$} \newcommand{\Rarrow}{$\rightarrow$} \newcommand{\Larrow}{$\leftarrow$} \newcommand{\Uarrow}{$\uparrow$} \newcommand{\Darrow}{$\downarrow$} % \newcommand{\button}[1]{{\sf$[$#1$]$}\index{#1}} % \newcommand{\UniTerm}{UniTerm} % \newcommand{\filen}[1]{{\tt #1}\index{File #1}} % \newcommand{\key}[1]{ {\sf{\Langle}#1{\Rangle}\index{#1}} } % \newcommand{\keytwo}[2]{ {\sf{\Langle}#1{\Rangle}{\Langle}#2{\Rangle}\index{#1 #2}} } % \newcommand{\expkey}[2]{ \item [\key{#1}] \parbox[t]{3.5in}{#2} } \newcommand{\explain}[2]{ \item [#1] ~\\ #2\index{#1} } \newcommand{\explainnoi}[2]{ \item [#1] ~\\ #2 } % %\newcommand{\lexplain}[2]{ % \item [#1] % \item [] \parbox[t]{3.5in}{#2} %} \newcommand{\lexplain}[2]{ \item [#1] ~\\ #2\index{#1} } % \newcommand{\ASCII}[1]{ {\sf #1} } % \newcommand{\statement}[3]{ \bigskip \parbox[t]{4in}{ {\tt #1({\em #2})}\index{Command #1}\\ #3 } } % \newcommand{\mac}[4]{ \bigskip \parbox[t]{4in}{ {\tt #1({\em #2})}\index{Command #1}\\ #3 \\ Returns: #4 } } % \newcommand{\longmac}[5]{ \parbox[t]{4in}{ \begin{tabbing} {\tt #1({\em #2})}\\ \index{Command #1} MMMMMMMMMMMMMM\=MMMM\=\kill #3 \\ #4 \\ Returns: #5 \end{tabbing} } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright notice etc. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\copying{\titlepage \null\vfil} \def\endcopying{\par\vfil\null\endtitlepage} % \newcommand{\Rs}{\hfill\vline & } % \newcommand{\Ls}{& \vline} % end of macro definitions \pagenumbering{roman} \maketitle \begin{copying} {\sf \noindent Users Guide for UniTerm 2.0c (002) \noindent Version 1.07 \noindent Copyright \copyright 1987/1988 by Simon Poole \noindent All rights reserved. No part of this publication may be reproduced without the prior permission of the publisher. \noindent I make no warranty with respect to this publication, or the program it describes, and disclaim any implied or explicit suggestions of usefulness for any particular purpose. Use this program only if you are willing to assume all risks, and damages, if any, arising as a result, even if caused by negligence or other fault. \begin{quote} GEM is a trademark of Digital Research Co. DEC,VT are trademarks of Digital Equipment Co. Tektronix is a trademark of Tektronix Co. Atari is a trademark of Atari Co. The Kermit file transfer protocol was developed by Frank da Cruz and Bill Catchings at Columbia University. Many thanks! This program was developed with ST Pascal Plus from CCD. \end{quote} } \end{copying} % \tableofcontents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Now comes the real tex(t) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \include{intro} % \include{starting} % \include{more} % \include{ftrans} % \include{custom} % \include{implem} % \appendix % \include{ccandesc} % \include{asciicc} % \include{smacro} % \include{keyedit} % \include{keys} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The index is generated semi-automatic % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{Index} \begin{theindex} \include{index} \end{theindex} \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Key assignments and generated codes} \label{keyref} \vfill \begin{table}[h] \caption{VT100 Cursor Keys} \medskip \begin{center} \begin{tabular}{|l|l|l|l|} \hline VT100 Key & UniTerm key & ANSI normal & ANSI application \\ \hline Cursor Up & Cursor Up & \ASCII{ESC}[A & \ASCII{ESC}OA \\ Cursor Down & Cursor Down & \ASCII{ESC}[B & \ASCII{ESC}OB \\ Cursor Right & Cursor Right & \ASCII{ESC}[C & \ASCII{ESC}OC \\ Cursor Left & Cursor Left & \ASCII{ESC}[D & \ASCII{ESC}OD \\ \hline \end{tabular} \end{center} \end{table} \vfill \begin{table}[h] \caption{VT52 Cursor Keys} \begin{center} \begin{tabular}{|l|l|l|l|} \hline VT100 Key & UniTerm key & VT52 normal & VT52 application \\ \hline Cursor Up & Cursor Up & \ASCII{ESC}A & \ASCII{ESC}A \\ Cursor Down & Cursor Down & \ASCII{ESC}B & \ASCII{ESC}B \\ Cursor Right & Cursor Right & \ASCII{ESC}C & \ASCII{ESC}C \\ Cursor Left & Cursor Left & \ASCII{ESC}D & \ASCII{ESC}D \\ \hline \end{tabular} \end{center} \end{table} \vfill \pagebreak \vfill \begin{table}[h] \caption{VT100 Keypad} \begin{center} \begin{tabular}{|l|l|l|l|} \hline VT100 Key & UniTerm key & Numeric mode & Application mode \\ \hline PF1 & Keypad ( & \ASCII{ESC}OP & \ASCII{ESC}OP \\ PF2 & Keypad ) & \ASCII{ESC}OQ & \ASCII{ESC}OQ \\ PF3 & Keypad / & \ASCII{ESC}OR & \ASCII{ESC}OR \\ PF4 & Keypad * & \ASCII{ESC}OS & \ASCII{ESC}OS \\ Keypad 7 & Keypad 7 & 7 & \ASCII{ESC}Ow \\ Keypad 8 & Keypad 8 & 8 & \ASCII{ESC}Ox \\ Keypad 9 & Keypad 9 & 9 & \ASCII{ESC}Oy \\ Keypad 4 & Keypad 4 & 4 & \ASCII{ESC}Ot \\ Keypad 5 & Keypad 5 & 5 & \ASCII{ESC}Ou \\ Keypad 6 & Keypad 6 & 6 & \ASCII{ESC}Ov \\ Keypad 1 & Keypad 1 & 1 & \ASCII{ESC}Oq \\ Keypad 2 & Keypad 2 & 2 & \ASCII{ESC}Or \\ Keypad 3 & Keypad 3 & 3 & \ASCII{ESC}Os \\ Keypad 0 & Keypad 0 & 0 & \ASCII{ESC}Op\\ Keypad - & Keypad - & - & \ASCII{ESC}Om \\ Keypad , & Keypad + & , & \ASCII{ESC}Ol \\ Keypad . & Keypad . & . & \ASCII{ESC}On \\ Keypad Enter & Keypad Enter & \ASCII{CR}/\ASCII{CRLF}& \ASCII{ESC}OM \\ \hline \end{tabular} \end{center} \end{table} \vfill \pagebreak \vfill \begin{table}[h] \caption{VT100 Keypad (VT52 mode)} \begin{center} \begin{tabular}{|l|l|l|l|} \hline VT100 Key & UniTerm key & Numeric mode & Application mode \\ \hline PF1 & Keypad ( & \ASCII{ESC}P & \ASCII{ESC}P \\ PF2 & Keypad ) & \ASCII{ESC}Q & \ASCII{ESC}Q \\ PF3 & Keypad / & \ASCII{ESC}R & \ASCII{ESC}R \\ PF4 & Keypad * & \ASCII{ESC}S & \ASCII{ESC}S \\ Keypad 7 & Keypad 7 & 7 & \ASCII{ESC}?w \\ Keypad 8 & Keypad 8 & 8 & \ASCII{ESC}?x \\ Keypad 9 & Keypad 9 & 9 & \ASCII{ESC}?y \\ Keypad 4 & Keypad 4 & 4 & \ASCII{ESC}?t \\ Keypad 5 & Keypad 5 & 5 & \ASCII{ESC}?u \\ Keypad 6 & Keypad 6 & 6 & \ASCII{ESC}?v \\ Keypad 1 & Keypad 1 & 1 & \ASCII{ESC}?q \\ Keypad 2 & Keypad 2 & 2 & \ASCII{ESC}?r \\ Keypad 3 & Keypad 3 & 3 & \ASCII{ESC}?s \\ Keypad 0 & Keypad 0 & 0 & \ASCII{ESC}?p \\ Keypad - & Keypad - & - & \ASCII{ESC}?m \\ Keypad , & Keypad + & , & \ASCII{ESC}?l \\ Keypad . & Keypad . & . & \ASCII{ESC}?n \\ Keypad Enter & Keypad Enter & \ASCII{CR}/\ASCII{CRLF} & \ASCII{ESC}?M \\ \hline \end{tabular} \end{center} \end{table} \vfill \pagebreak \vfill \begin{table}[h] \caption{VT2XX Keys} \begin{center} \begin{tabular}{|l|c|c|c|} \hline VT2XX Key & Assigned to & VT2XX & Sends \\ & for down- & Keycode & (default \\ & lodable keys & & on a VT2XX)\\ \hline \hline Find & & & \ASCII{ESC}[1\Tilde \\ Insert here & & & \ASCII{ESC}[2\Tilde \\ Remove & & & \ASCII{ESC}[3\Tilde \\ Select & & & \ASCII{ESC}[4\Tilde \\ Prev Screen & & & \ASCII{ESC}[5\Tilde \\ Next Screen & & & \ASCII{ESC}[6\Tilde \\ \hline F6 (F6) & F1 & 17 & \ASCII{ESC}[17\Tilde \\ F7 (F7) & F2 & 18 & \ASCII{ESC}[18\Tilde \\ F8 (F8) & F3 & 19 & \ASCII{ESC}[19\Tilde \\ F9 (F9) & F4 & 20 & \ASCII{ESC}[20\Tilde \\ F10 (F10) & F5 & 21 & \ASCII{ESC}[21\Tilde \\ F11 (F11) & F6 & 23 & \ASCII{ESC}[23\Tilde \\ F12 (F12) & F7 & 24 & \ASCII{ESC}[24\Tilde \\ F13 (F13) & F8 & 25 & \ASCII{ESC}[25\Tilde \\ F14 (F14) & F9 & 26 & \ASCII{ESC}[26\Tilde \\ Help (F15) & F10 & 28 & \ASCII{ESC}[28\Tilde \\ Do (F16) & Shift F1 & 29 & \ASCII{ESC}[29\Tilde \\ F17 (F17) & Shift F2 & 31 & \ASCII{ESC}[31\Tilde \\ F18 (F18) & Shift F3 & 32 & \ASCII{ESC}[32\Tilde \\ F19 (F19) & Shift F4 & 33 & \ASCII{ESC}[33\Tilde \\ F20 (F20) & Shift F5 & 34 & \ASCII{ESC}[34\Tilde \\ \hline \end{tabular} \end{center} \end{table} \vfill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Customizing UniTerm} UniTerm can be adjusted to suit your needs in various ways, most use the setup files to store the configuration data. The popup menu and the bindings of the \key{Alternate}\ keys are exceptions, mainly since there would have been no way of editing these settings without making UniTerm simply to large. The popup and keys can be set by executing UniTerm macro commands in the auto startup macro file. \section{Popup Menu}\index{Popup} A line like \verb+POPUP(1,15,'L. Break')+\index{Command POPUP} in your startup macro file will assign the command LongBreak to the top left-hand entry in the popup and will name the command 'L. Break', consult the chapter on the macro commands for a complete description. \section{Key Bindings}\index{Key Bindings} A line like \verb+REASSIGN(39,15)+\index{Command REASSIGN} in your startup macro file will assign the command LongBreak to \key{Alternate}\key{Space}, to find out which keycode to use please consult other literature. Beware: in some cases the \key{Alternate} key modifies the value of the returned keycode. To override the default bindings\index{overriding bindings}, set the command number to zero, this causes the character generated by the BIOS to be used for output. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{File Transfer}\index{File Transfer} \label{ftref} \section{General} To change the current file transfer mode use the \button{Transfer}\ menu. Changing the file transfer type here, changes the dialog box that is displayed when you select \button{File Transfer}\ from the \button{Settings} menu and what happens when you type \keytwo{Alt}{T}\ (start file transfer). \section{ASCII File Transfer}\index{ASCII File Transfer} \subsection{Using ASCII File Transfer}\index{Using ASCII File Transfer} There is nothing much to say about ASCII file transfer, just press \keytwo{Alt}{T}\ and choose the file you want to send. Pressing \key{Help}\ gets you to the Help screen, so you can change the delay between characters to a different value during an upload (this is useful with VMS which normally has a lot of trouble with the first line sent). The transfer can be interrupted at any time by pressing \mbox{\key{A}.} Normally some experimentation is needed to find the shortest delay time for your system. You can use a character translation table to map incoming characters to Atari characters. To receive files use the file capture function. A translation table is used in the same way as with sending files. When file capture is in effect the characters are displayed as they will be saved. \subsection{Setting the ASCII File Transfer Parameters}\index{ASCII File Transfer Parameters} The following parameters can be set: \begin{description} \explain{Start of file transfer}{a string that is sent before file transfer starts.} \explain{End of file transfer}{a string that is sent when the transfer finishes.} \explain{Send}{ determines if the output translation table is used for sending files.} \explain{Receive}{determines if the input translation table is used for capturing files.} \explain{Delay Time} {sets the time [ms] \UniTerm\ waits after every character sent (this is implemented with the 200Hz system clock.} \explain{Method}{if \button{Paced by Echo}\ is selected, \UniTerm\ waits for every character sent to be echoed (except ASCII control codes), this doesn't time out!} \explain{Translate EOL to}{selects if \ASCII{CR}\ASCII{LF}\footnotemark is sent as \ASCII{CR} \ASCII{LF}, \ASCII{CR}, \ASCII{LF}\ or as \ASCII{SP}\ASCII{CR}. This function will send single \ASCII{CR}'s and \ASCII{LF}'s correctly!} \explain{Translation on input}{allows you to change the translation table used during file capture} \explain{Translation on output}{enables you to edit the translation table which is used for sending files, enter the decimal ASCII values of the characters or nothing if you want the character to be ignored.} \end{description} \footnotetext{The normal Atari ST end-of-line marker.} \section{XModem/YModem}\index{XModem}\index{YModem} \subsection{Using XModem} To receive a file, start the remote XModem and type \keytwo{Alt}{T}. To receive a file select \button{Receive}\ from the dialog box and enter the filename in the file selector form. If you have set the error check mode to \button{CRC}\ \UniTerm\ will try to initiate a file transfer with CRC error check, if it gets no response in the maximum allowed number of errors, it will retry with the normal checksum. To send a file select \button{Send}\ and enter the name of the file in the file selector. \subsection{Using YModem Batch} YModem is a version of the XModem protocol with CRC type block check and with a batch send/receive protocol added. The file length will be set to the value received in the header block, file date and time is set to 0 and the attribute to 000644 (octal) on sending and ignored on receiving. Filename collision handling and wildcard expansion are done on receiving/sending a group of files. \subsection{Setting the XModem Parameters}\index{XModem Parameters} The following parameters can be set: \begin{description} \explain{Timeout after}{ sets the maximum time XModem waits for a character to be received from the serial port.} \explain{Maximum number of errors} {sets the maximum number of errors before the file transfer is aborted.} \explain{Accept ASCII NUL}{allows you to use XModem for none binary file transfers, when ASCII \ASCII{NUL}\ is used as padding character.} \explain{Packet size}{chooses the packet size for XModem transfers, the 1kB size may be more efficient on noise free lines.} \explain{Error check type}{sets the default checksum type, if possible use the CRC check for the larger packet size.} \end{description} \section{Kermit}\index{Kermit} \subsection{\UniTerm\ Kermit Capabilities}\index{Kermit Capabilities} \UniTerm\ Kermit capabilities at a glance: \begin{tabbing}{ll} MMMM\=MMMMMMMMMMMMMMMMMMMMM\=\kill \> Local operation: \> Yes \\ \> Remote operation: \> No \\ \> Transfers text files: \> Yes \\ \> Transfers binary files: \> Yes \\ \> Wildcard send: \> Yes \\ \> \Caret X/\Caret Y interruption: \> No \\ \> Filename collision avoidance: \> Yes \\ \> Can time out: \> Yes \\ \> 8th-bit prefixing: \> Yes \\ \> Repeat count prefixing: \> Yes \\ \> Alternate block checks: \> Yes \\ \> Terminal emulation: \> Yes (\UniTerm) \\ \> Communication settings: \> Yes (\UniTerm) \\ \> Transmit BREAK: \> Yes (\UniTerm) \\ \> IBM mainframe communications: \> Yes \\ \> Transaction logging: \> No \\ \> Session logging: \> No \\ \> Act as server: \> No \\ \> Talk to server: \> Yes \\ \> Advanced server functions: \> No \\ \> Advanced commands for servers: \> Yes \\ \> Local file management: \> Yes \\ \> Handle file attributes: \> Yes\footnotemark \\ \> Command/init files: \> Yes (\UniTerm) \\ \> Command macros: \> Yes (\UniTerm) \\ \> Large packets: \> Yes \\ \> Windows: \> No \\ \end{tabbing} \footnotetext{``Handle'' is the wrong word, all attribute types except the file size are ignored} Please don't forget if you miss a feature, that \UniTerm\ is a terminal emulator and not a ``real'' Kermit (whatever that maybe). \subsection{Simple File Transfer} To receive a file, type the correct command for the remote Kermit and type \keytwo{Alt}{T}\ on the ST keyboard, a large dialog box should appear. Select \button{Receive}\ if you want to use a different name than the original filename use the file selector form to select a name (this will only effect the first file received in a mutiple file transfer). If you want to receive the files with the names supplied by the host, just press \key{Return}\ (the path entered is retained till the end of your \UniTerm\ session). A new form will appear and will display the current file being received, the total number of packets, the current number of errors and timeouts and the last non-fatal error that occurred. The transfer can be aborted by typing \keytwo{Control}{C}. To send a single file or a group of files, setup the remote host for receiving, type \keytwo{Alt}{T}\ and select \button{Send}. Enter the filename or wildcards (*, ?) in the file selector dialog and press \key{Return}. \subsection{Binary File Transfer}\index{Binary File Transfer} Set both sides (host and local computer) to binary mode (on most mainframes with {\tt set file type binary} or {\tt set file binary}, select the \button{Binary}\ button on \UniTerm), if you have set parity to none and have selected 8 data bits, binary files will be transferred without 8th-bit prefixing; in all other cases prefixing will be used (be sure that the parity is the same on the complete connection to the remote computer). One note, since the Kermit ``end of record'' is the same as the TOS ``end of line'' no translation of \ASCII{CR}'s or \ASCII{LF}'s is done, this may lead to problems if you have a file on the ST which uses \ASCII{LF}\ as ``end of line'' marker. \subsection{Server Commands}\index{Server Commands} This is probably the simplest way to use Kermit, connect to the remote host and start the remote Kermit in server mode. A large subset of the possible Kermit server commands is implemented (not implemented: Journal, Who, Variable): \begin{tabular}{lp{3in}} Put & send a file to the host. \\ Get & receive a file from the host. \\ Finish & terminate the remote Kermit. \\ Logout & terminate the remote Kermit and logout. \\ Dir & send a directory to the local Kermit and have it displayed on the screen (argument: file-spec). \\ Remote & send a command to the remote host (argument: commandline). \\ Type & send a file to the local Kermit and display it on the screen (argument: file). \\ CWD & change the current working directory of the remote Kermit (arguments: directory, password). \\ Usage & show disk usage (argument: area). \\ Program & start a program on the host computer (arguments: program-file, program-commands). \\ Erase & delete a file on the host computer (argument: file). \\ Copy & copy a file on the host computer (arguments: source, destination). \\ Rename & rename a file on the host computer (arguments: oldname, newname). \\ Login & login on a remote Kermit in server mode (arguments: user, password, account). \\ Help & get help from the remote host (argument: topic). \\ Status & get the current status of the server. \\ \end{tabular} For more information consult the ``Kermit Protocol Manual''. \subsection{Setting the Kermit Parameters}\index{Kermit Parameters} The following parameters can be set: \begin{description} \explain{Timeout after} {sets the maximum time Kermit waits for a character to be received from the serial port.} \explain{Maximum number of retries} {the maximum number of re\-tries before the transmission is aborted.} \explain{Number of padding characters} {the number of padding characters sent before each packet.} \explain{Packet size} {the maximum packet size you want to use (maximum size without large packets is 94 bytes, with 2048).} \explain{Quote character} {the ASCII character used for control character quoting.} \explain{8 bit quote character} {the ASCII character used for 8th-bit quoting.} \explain{Repeat prefix character} {the character used for repeat prefixing.} \explain{Padding character} {the character used for padding.} \explain{Start of packet} {the character that marks the start of a Kermit packet.} \explain{IBM mode} {wait for a \ASCII{XOn}\ character before sending a packet (XOn/XOff flowcontrol\index{flowcontrol} naturally has to be turned off for this to work).} \explain{Error check type} {two and single character checksum and CRC check.} \end{description} Normally you shouldn't have to change any of these parameters, please consult the Kermit literature for more details. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Implementation Notes} \section{General} Most of UniTerm is written in CCD/OSS Pascal and uses standard GEM, GEMDos, Bios and XBios calls. The exceptions are: \begin{itemize} \item Scrolling, this is done with a assembler routine instead of a raster operations. \item Character output in the 128 column, DW and DH modes, is done with TXTBLT (which doesn't help very much speedwise), all other terminal mode output is done with fast custom assembler routines, which are at least an order of magnitude faster when using text attributes than the corresponding TXTBLT calls. \item Some miscellaneous routines, like CRC calculation, supervisor peeks and pokes. \end{itemize} Timing information for the main loop of UniTerm: \begin{tabbing} MMMM\=MMMMMM\=MMM\kill \> 0.2 mS \> RS232 state, keyboard and mouse state \\ \> If characters can be read from the serial port: \\ \> 0.18 mS \> Cursor on/off (disabling the cursor saves this)\\ \> Innerloop (max. 20 iterations): \\ \> 0.1 mS \> Character read \\ \> 0.3 mS \> Character output \\ \> \> (VT100 mode 80 columns, no attributes set) \\ \end{tabbing} Turning history recording on will naturally make the loop slower, scrolling speed is 38 lines per second. The carrier detect signal and the break bit on the Mfp are polled once per main loop and if they are present a appropriate `LED' is displayed. UniTerm needs one VBL interrupt slot and also installs its own mouse-movement interrupt handler in GIN mode, additionly VDI mouse-movement and mouse-button handlers are installed. The mouse-button handler may cause problems with programs that use both buttons, since it maps both to the left button (this is a workaround AES's inability to wait for a left or right mouse-button event). Please note, that unlike other available products UniTerm does NOT use any undocumented locations or functions of the operating system. \section{VT102/VT100 Mode} \subsection{Smooth Scrolling} Only works upwards (this is hopefully the only direction anybody really needs), this will be fixed the day I get a blitter. \subsection{132 Column Mode} Only 128 columns wide, this is due to the 640 pixel resolution of the ST in horizontal direction. \subsection{Double Height/Width Characters } Restrictions: no double width in color. \subsection{Extended character set in 8 bit mode } Using the GR character set will work, but is probably very slow due to the fact that the font has to be set/reset for every character. \section{VT200 Mode} \subsection{VT200 function keys} There is no default assignment of the VT200 function keys to ST keys, except for the downloadable function key strings. If you need the default VT200 keys (\Rarrow appendix~\ref{keyref}), build yourself a setup file with the right settings. \subsection{C0/C1 Modes} Not implemented, that means UniTerm always sends C0 codes (7 bit) (this only a restriction for the escape sequences sent by the cursor and keypad keys, you {\em can} send 8 bit codes from the keyboard), received C1 codes will be interpreted correctly. \subsection{International character set } The international character set is the default GR set (\Rarrow the characters that are between ASCII 128 and 256). For technical reasons use of the GR set is slow (the set is changed for every character!). \subsection{Downloadable character set} Not implemented (very resolution dependent, useless on the ST). \subsection{Downloadable function keys} The lock/unlock/erase parameters are ignored. The mapping of the keys is described in appendix~\ref{keyref}, maximum string length per key is 80 characters (DON'T FORGET THAT {\%} IS A SPECIAL CHARACTER FOR UNITERM!). \subsection{Regis} Not implemented (very resolution dependent, useless on the ST). \section{Tektronix Mode} \section{General} The Tektronix mode is still a bit in a mess. This will change with the using the 4105 command set, this implies that you should only use the vector mode of the 4010 emulation as all other 4010 commands will probably be removed from the program. Right now scaling is done with respect to a 4010 with 1024*780 points, this probably will change for the 4105 (512*360) emulation. In Tek coordinates the screen measures 4096*3120 points (4105: 4096*3072 points). For redrawing and zooming purposes the incoming characters are stored in a circular buffer. This is quite a memory saving way to store them\footnote{one could naturally store the decoded vectors}, but on the other hand this means they have to be decoded every time the vectors are drawn. \subsection{Alpha Mode} Restrictions: 1 margin, all (well nearly all) character sizes are the same only the spacing is different. \subsection{Vector Mode} \subsection{Zoom Mode} Restrictions: No zooming of graph text, slow. \section{Problems} Sometimes the serial port seems to blocked (this has happened to me with other ST terminal emulators as well), the reason for this still hasn't been discovered (probably due to a bug in the ST Bios), try resetting the terminal if this happens. Don't use the \button{Set RS232 Port Parameters}\ dialog in an editor or the like, for some mysterious reason the serial port outputs a delete character if you actually change something and exit with \button{OK}(probably due to a bug in the ST Bios). Don't try to use the underscore character in the file-selector dialogs (this is a bug in GEM, fixed in the so called Blitter-TOS). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Introduction} % \pagenumbering{arabic} \pagestyle{headings} % \UniTerm\ is a program that emulates most of the functions of DEC's (Digital Equipment Corporation) VT102 and VT220 text terminals and of Tektronix's 4014 graphics terminal. Additionally \UniTerm\ provides the XModem, YModem and Kermit file transfer protocols. The program \UniTerm\ is copyrighted, it can be copied, distributed and used free of cost, but may not be sold for more than the actual distribution costs. Please contact me, if you find bugs or have suggestions for revised versions of \UniTerm, but read appendix A and the implementation notes first. Some compromises have been made in the implementation of the VT100 132 column mode and double width characters will not work on a color monitor. Enhancements which are planned for future releases: \begin{itemize} \item Tektronix 4105 commands (already started!) \item make \UniTerm\ work with the blitter-chip \item enhanced color version (colors for highlighted etc.) \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{The KeyEdit Program} If you have got a complete release of \UniTerm, you should have a copy of \filen{KEYEDIT.PRG} (Please check that it is for version 1.6f or higher!). This program enables you to edit the keyboard table stored in an UniTerm setup file, additionally you can create an executable keyboard table loader or just output the table itself. \section{Editing a \UniTerm\ Setup File}\index{Editing Setup File} Start \filen{KEYEDIT.PRG}\ and press \key{Return}\ when you see the opening dialog box. It will take a few seconds to create the display. You can only edit a existing setup file with predictable results, so select \button{Load UniTerm File}\ and select the file you want to edit. Select the key you want to change (select the appropriate part of the table (normal, shifted or capslocked)) and then the character you want to assign to the key. When you are finished with editing, select \button{Save UniTerm File}. Don't try to change the characters on the keypad, cursorkeys or function-keys in the \UniTerm\ setup file. These keys are hardwired via keycode to specific strings (like on a real VT100). \section{Updating your Setup File}\index{Updating Setup File} To move your custom keyboard table from a old version of \UniTerm\ to a new one, do the following: \begin{itemize} \item Rename the old setup file \item Start \UniTerm\ and set all parameters that need changing \item Save the setup as \filen{UNITERM.SET} \item Leave \UniTerm\ and start KeyEdit \item Load your old setup file \item Save on top of \filen{UNITERM.SET} \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{More About UniTerm} This chapter contains a short description of all user-setable parameters, except those related to the various file transfer protocols. Please read the chapter~\ref{ftref} for more information. \section{RS232 Port Parameters}\index{RS232 Port Parameters} To change these settings, press \key{Help}\ and select \button{RS232}\ from the \button{Settings}\ menu. Following parameters can be changed: \begin{description} \explain{Baud}{selects the rate for the serial port.} \explain{Flowcontrol}{selects the flowcontrol mode, these functions are implemented by the BIOS.} \explain{Parity}{selects the parity mode, these modes are implemented by the BIOS\footnote{Basic Input Output System}.} \explain{Databits}{allows you to select the number of data bits, implemented by the BIOS.} \explain{Stopbits}{allows you to select the number of stop bits, implemented by the BIOS.} \explain{Mode}{allows you to put the terminal in one of following modes: \begin{description} \item [\button{Full}] \parbox[t]{2.5in}{Data typed on the terminal is echoed by the host computer\footnotemark.} \item [\button{Echo}] \parbox[t]{2.5in}{UniTerm echos user input on the screen.} \item [\button{Local}] \parbox[t]{2.5in}{User input is only sent to the screen.} \end{description}} \end{description} \footnotetext{to stop people always asking what the ``Full'' string in the statusline means; ``Online'' is displayed instead} \section{Terminal Parameters} To change these settings, press \key{Help}\ and select \button{Terminal 1}\ or \button{Terminal 2}\ from the \button{Settings}\ menu, the following parameters can be changed: \subsection{Terminal 1} \begin{description} \explain{Terminal}{selects the terminal mode and change the terminal identification. \button{4014}\ selects 4014 alpha mode, \button{DCM}\ selects Display Control Mode\footnotemark\index{Display Control Mode}} \explain{Keypad}{chooses the mode of the keypad, in application mode escape sequences are sent by all keys, in numeric mode only the top 4 keys send escape codes (they are the keys F1 to F4 on a real VT100).} \explain{Cursormode}{selects the two different sets of escape sequences that can be sent by the cursor keys.} \explain{Use }{masks out the 8th bit of sent or received bytes for the terminal emulations, set to 8 bits if you want to use the 8 bit VT2XX mode (this only effects ASCII file transfer and not the other file transfer modes).} \explain{Scroll}{selects between slow and quick scroll.} \explain{Newline Mode}{sets the VT100/102/200 newline mode (what is sent when you press \key{Return}).} \explain{Wrap}{switches the automatic wraparound at the end of a line on and off.} \explain{Cursor}{selects blinking or non blinking, underline or block cursor.} \explain{Background}{sets the background (and naturally the foreground) color} \explain{Delete}{changes the way \key{Backspace}\ and \key{Delete}\ work, if set to \button{Delete}\ \key{Backspace}\ will send \ASCII{BS}\ and \key{Delete}\ will send \ASCII{DEL}, set to \button{Backspace}\ the codes are exchanged.} \end{description} \footnotetext{All control codes are displayed on the screen, instead of causing a screen operation} \subsection{Terminal 2} \begin{description} \explain{Answerback}{is the string which is sent as answerback message.} \explain{Printer}{determines if a printer is connected or not.} \explain{Print terminator}{determines if a \ASCII{FF}\ is sent after each print operation or not.} \explain{SLE}{turns the built-in single-line editor on and off.} \explain{Auto executed macro}{The contents of any file named here, are executed on startup by the \UniTerm\ macro processor} \explain{NRC}{turns national replacement character set mode on, and controls which character set is used (selecting ASCII turns it off).}\footnotemark \end{description} \footnotetext{Use this mode only if you are using UniTerm in a 7-bit enviroment, normally you should use the 8-bit character set for this.} \section{Graphics Terminal Parameters} Select \button{Graphics} from the \button{Settings} menu to change the parameters of the graphic terminal module: \begin{description} \explain{Tektronix mode}{enables or disables automatic switching to the Tektronix mode after a \ASCII{GS} character, useful on noisy telephone lines (this option also inhibits the allocation of a 32kB buffer for the Tektronix screen).} \lexplain{GIN Termination String}{sets the string sent after a GIN report.} \lexplain{Status Termination String}{sets the string sent after a status report.} \explain{Aspect}{this option controls the scaling of pictures.} \explain{Deletes}{allows you to set processing of \ASCII{DEL}\ in the 4010 module.} \end{description} \section{Tabs}\index{Tabs} This small dialog allows you to set the tab positions. Generally it is not a good idea to change them from the default settings, since there is a lot of (buggy) software that relies on the settings being the same as the original VT100 factory settings. \section{Changing Buffer Sizes}\index{Buffer Sizes} Select \button{Buffers}\ from the \button{Settings}\ menu, the top half of the dialog form allows you to change four values: \begin{itemize} \item Transfer buffer size \item RS232 input buffer size \item System reserved size \item Clipboard size \end{itemize} the \button{$+$}\ and the \button{$-$}\ buttons autorepeat, double clicking increases (decreases) the displayed value by 1000. In the bottom half the actual amount of memory allocated to each buffer is displayed, if these values are not the same as the ones set by you, for some reason UniTerm was not able to use your configuration. In this case 5kB are reserved for system use, 2kB for the clipboard and the rest of available memory is allocated to the transfer buffer (up to the amount set by you, minimum 1kB), the remaining memory is used by the history buffer (min. 1kB). The RS232 buffer values will only change if you save the value in a setup file and restart UniTerm, all other changes take effect immediately (and reset the buffers!). \section{Setup Files}\index{Setup Files} All user setable parameters are stored in the setup files (including the function key strings etc.). Loading a setup file from a different version of UniTerm may result in a version conflict error message, if this happens UniTerm uses its internal defaults. \section{File Capture/Playback}\index{File Capture}\index{File Playback} The file capture routine uses a character translation table, which can be edited by selecting \button{ASCII}\ from the \button{Transfer}\ menu and then selecting \button{File Transfer}\ from the \button{Settings}\ menu. While file capture is in progress all screen output is translated too, so you will get a direct impression of what you are saving. The Playback function allows you to simulate input from the serial port, pressing \key{A}\ allows you to abort\index{abort}, any other key will cause UniTerm to wait for another keypress. \section{Editing Function Keys} To edit the string assigned to a function key, press the \key{Help}\ key and select \button{Edit Function Keys}\ from the \button{Other}\ menu. You can edit the strings now, the cursor keys will move you to the string you want to edit, \key{Esc}\ will clear the string, \key{Backspace}\ will delete to the left, \key{Delete}\ the current character. Control codes can be entered by pressing \key{Control}\ and the appropriate key (see appendix B). \section{The Statusline}\index{Statusline} The 25th line on the screen is used as a statusline in text terminal mode, it should look like this (all possible information shown): \begin{center} \begin{tabular}{|lllllll|} \hline UniTerm~~&V2.0c~~&Online~~&Meta&Caps&HPDBLCR&1234 \\ \hline\hline Program &Version&Mode &Meta&Caps&Status&LED \\ name & & &Ind.&Ind.& & \\ \hline \end{tabular} \end{center} The ``Status LED's'' are (from left to right): \begin{center} \begin{tabular}{|l|c|c|} \hline & On & Off \\ \hline History & H & \_ \\ Autoprint & P & \_ \\ DCD & D & \_ \\ Break & B & \_ \\ Keyboard locked & L & \_ \\ File Capture & C & \_ \\ Insert Mode & I & R \\ \hline \end{tabular} \end{center} \section{The Single-line Editor}\index{Single-line Editor} To make working on systems that don't have a single-line editor (short sle) easier, a simple sle is implemented in UniTerm. The last 20 lines typed by the user are stored in a circular buffer. Pressing \key{Insert}\ starts the sle, the status line will clear and the current line will be displayed instead. The following functions are provided: \begin{description} \expkey{\Rarrow}{move the cursor one character to the right.} \expkey{\Larrow}{move the cursor one character to the left.} \expkey{\Uarrow}{display the previous line.} \expkey{\Darrow}{display the next line.} \expkey{Delete}{delete the character under the cursor.} \expkey{Backspace}{delete the character to the left of the cursor.} \expkey{Insert}{terminate the sle without sending the current line.} \expkey{Return}{send the current line and leave the sle.} \end{description} The sle is always in insert mode. {\bf DON'T FORGET TO ERASE YOUR PASSWORDS!} If you want to disable the sle for this reason, disable it in the \button{Terminal}\ dialog box. \section{Single Character Commands}\index{Single Character Commands} All functions in the ``Help'' menu of \UniTerm\ can used with single character commands: \begin{center} \begin{tabular}{cl} 1 & Set terminal parameters part 1 \\ 2 & Set terminal parameters part 2 \\ A & Set ASCII file transfer parameters \\ B & Set buffer sizes \\ C & Configure dialer \\ D & Delete file \\ E & Edit function-keys \\ F & Show free diskspace \\ G & Set graphic parameters \\ I & Show info dialog \\ K & Set Kermit parameters \\ L & Load setup \\ P & Set path \\ R & Run program \\ S & Save setup \\ T & Set tabs \\ Q & Quit ``help'' dialog \\ V & Set RS232 parameters \\ X,Y & Set X/YModem parameters \\ \end{tabular} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % UniTerm Users Guide, Copyright 1986, 1987 Simon Poole % % % % This file may not be changed without permission, all % % rights reserved. % % % % Simon Poole % % Bahnhofstr. 51 b % % CH-5430 Wettingen % % Switzerland % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Starting Using \UniTerm}\index{Starting Using \UniTerm} % \section{Requirements}\index{Requirements} To use \UniTerm\ you need: \begin{itemize} \item a ATARI ST computer \item a monochrome or color monitor\index{monitor} \item a RS232 standard cable \item a computer/modem to connect to \item a floppy disk containing \filen{UNITERM.PRG}\ and \filen{UNITERM.RSC} \end{itemize} \section{Getting Started}\index{Getting Started} After connecting your ST to your host computer, double click the \UniTerm\ icon. If you are using \UniTerm\ for the first time an alert box will appear, press \mbox{\key{Return}\footnotemark} \footnotetext{in this manual \key{xx} means the the key with xx on it, \key{Alt}\ is short for \key{Alternate}} and ignore the error message (\UniTerm\ didn't find the file \filen{UNITERM.SET}, which we will create later on), the screen will clear to white (on a monochrome monitor) with a statusline on line 25. Press \key{Help}\ and the \UniTerm\ help screen and a menu bar with following contents will appear: \begin{center} \begin{tabular}{|lllll|} \hline Desk~~~~~~~~~~~~ & File~~~~~~ & Transfer & Settings~~~~~ & Other~~~~~~~~~~~~~ \\ \hline \end{tabular} \end{center} \subsection{Desk Menu}\index{Desk Menu} \begin{center} \begin{tabular}{@{}l@{}llll@{}} \hline \vline Desk & File~~~~~~ & Transfer & Settings~~~~~ & Other~~~~~~~~~~~~~ \hfill\vline \\ \hline\vline About~Uniterm...\Rs & & & \\ \cline{1-1} \\ \end{tabular} \end{center} \noindent\button{Desk}\ is the well known menu where you can start desk accessories and with the \button{About UniTerm... }\ entry you can find out which version of \UniTerm\ you are using. \subsection{File Menu}\index{File Menu} \begin{center} \begin{tabular}{@{}l@{}l@{}lll@{}} \hline \vline Desk~~~~~~~~~~~~ & File~~~~~~ & Transfer & Settings~~~~~ & Other~~~~~~~~~~~~~ \hfill\vline \\ \hline \Ls Load Setup \Rs & & \\ \Ls Save Setup \Rs & & \\ \cline{2-2} \Ls Load Numbers \Rs & & \\ \Ls Save Numbers \Rs & & \\ \cline{2-2} \Ls Show Space \Rs & & \\ \Ls Set Path \Rs & & \\ \Ls Delete File \Rs & & \\ \cline{2-2} \Ls Run Program \Rs & & \\ \cline{2-2} \Ls Quit \Rs & & \\ \cline{2-2} \end{tabular} \end{center} \noindent\button{File} allows you to select from: \\ \vspace{\smallskipamount} \begin{tabular}{lp{3in}} \button{Load Setup} & load a previously saved setup from disk. \\ \button{Save Setup} & save the current settings of \UniTerm\ to disk.\\ \button{Load Numbers} & load a setup file for the dialer \\ \button{Save Numbers} & save a setup file for the dialer \\ \button{Delete File} & delete a file. \\ \button{Set Path} & change the current GEMDOS drive and path. \\ \button{Show Space} & show total available and free space on the current drive. \\ \button{Run Program} & execute a program without leaving \UniTerm. \\ \button{Quit Menu} & leave this screen and return to terminal mode. \\ \end{tabular} \subsection{Transfer Menu}\index{Transfer Menu} \begin{center} \begin{tabular}{@{}ll@{}l@{}ll@{}} \hline \vline Desk~~~~~~~~~~~~ & File~~~~~~ & Transfer & Settings~~~~~ & Other~~~~~~~~~~~~~ \hfill\vline \\ \hline & \Ls ASCII \Rs & \\ & \Ls XModem \Rs & \\ & \Ls YModem \Rs & \\ & \Ls Kermit \Rs & \\ \cline{3-3} \end{tabular} \end{center} \noindent\button{Transfer}\ selects the file transfer protocol you want to use: A change here is reflected in a different dialog box appearing when you select the \button{File Transfer}\ item in the \button{Settings}\ menu and in the protocol used when you type \keytwo{Alt}{T}. \subsection{Settings Menu}\index{Settings Menu} \begin{center} \begin{tabular}{@{}lll@{}l@{}l@{}} \hline \vline Desk~~~~~~~~~~~~ & File~~~~~~ & Transfer~~ & Settings~~~~~ & Other~~~~~~~~~~~~~ \hfill\vline \\ \hline & & \Ls RS232 \Rs \\ & & \Ls Terminal~1 \Rs \\ & & \Ls Terminal~2 \Rs \\ & & \Ls File~Transfer \Rs \\ & & \Ls Graphics \Rs \\ & & \Ls Tabs \Rs \\ & & \Ls Buffers \Rs \\ \cline{4-4} \end{tabular} \end{center} \noindent\button{Settings}\ allows you to select from: \\ \vspace{\smallskipamount} \begin{tabular}{lp{3in}} \button{RS232} & sets the parameters of the serial port. \\ \button{Terminal 1} & sets the value of some terminal (text mode) parameters. \\ \button{Terminal 2} & sets the rest of the terminal specific parameters\\ \button{Graphics} & sets the values for the graphics terminal module of \UniTerm. \\ \button{File Transfer} & allows you to set the parameters for the current file transfer mode. \\ \button{Buffers} & set the sizes of the buffers \UniTerm\ uses. \\ \button{Tabs} & set the tab positions (do not change without need, a lot of software depends on the ``factory'' settings)\\ \end{tabular} \subsection{Other Menu}\index{Other Menu} \begin{center} \begin{tabular}{@{}llll@{}l@{}} \hline \vline Desk~~~~~~~~~~~~ & File~~~~~~ & Transfer & Settings~~~~~ & Other~~~~~~~~~~~~~ \hfill\vline \\ \hline & & & \Ls Dialer \hfill\vline \\ & & & \Ls Edit Function Keys \hfill\vline \\ \cline{5-5} \end{tabular} \end{center} \noindent\button{Other}\ has two items:\\ \vspace{\smallskipamount} \begin{tabular}{lp{3in}} \button{Edit Function Keys} & allows you to assign a string and/or macro commands to a function key. \\ \button{Dialer} & setup the dialling sequences and telephone numbers for your modem. \\ \end{tabular} Select the \button{RS232}\ item in the \button{Settings}\ menu and a new dialog will appear. Selecting the different values for the parameters is quite straightforward, just click on the buttons with the right values (we hope you know them, otherwise you will just have to experiment) and when you are finished select \button{OK}. To save the setup, select \button{Save setup}\ from the \button{File} menu, a normal GEM file selector dialog will appear, if you want to use this setup as default, save it with the name \filen{UNITERM.SET} and \UniTerm\ will load it automatically on startup. To leave the help screen select \button{Quit Menu}, press \key{Q}\ or the left mouse button once. If you have adjusted the parameters correctly, you should now be able to communicate with your host computer. Some operating systems (VMS) try to identify the terminal automatically, depending on your setup \UniTerm\ will identify itself as a DEC VT200, VT102, VT100 or as an VT100 emulating a VT52. A VT102/VT200 has more ``advanced'' editing functions (which results in less overhead in transmitting inserts etc.) so leave this option on VT102/VT200 if possible. If you have to enter the terminal type manually try VT102 first (changing from VT102 to VT100 or to VT200 only changes the report from \UniTerm, not the actual commands \UniTerm\ understands). \section{Exiting \UniTerm}\index{Exiting \UniTerm} To stop \UniTerm, press the \key{Undo}\ key, an alertbox will appear asking for con\-fir\-ma\-tion\footnote{to avoid the alertbox, press \keytwo{Alt}{Undo}}. \section{Vector Graphics Mode}\index{Vector Graphics Mode} After receiving the control code \ASCII{GS}\ (this can be turned off) or the 4105 command \ASCII{ESC}{\%}!0 (ASCII control characters are printed in {\sf this font} to distinguish them from printable characters, a space is written \ASCII{SP}) from the host, \UniTerm\ switches to a separate graphics screen, if the host doesn't send \ASCII{ESC}\ASCII{FF}\ (the ASCII characters Escape and Formfeed) before starting a new picture, you will have to clear the screen manually with \keytwo{Alt}{F1}. The incoming characters will be interpreted as Tektronix encoded vectors or commands (see appendix A) until \UniTerm\ receives one of the following codes: \begin{itemize} \item \ASCII{CAN} will return you to VT102 mode, \item \ASCII{ESC}\ASCII{FF} will clear the screen and enter Tektronix alpha mode. \item \ASCII{ESC}{\%}!1 will return to VT102 mode. \end{itemize} To return manually from Tektronix to VT200/VT102/VT100/VT52 mode press \keytwo{Alt}{F6}\ or select the appropriate mode from the item Terminal in the menu Settings. To view your picture again press \keytwo{Alt}{F5}. Be careful, selecting Tektronix 4010 mode manually will also reset the history buffer! \section{Zoom Mode}\index{Zoom Mode} If your history buffer is large enough, you can redraw a picture with different scaling factors. To select this mode press \keytwo{Alt}{F9}, the screen will be cleared, the current contents of the buffer will be drawn on the screen and the normal arrow mouse cursor will appear. To select the region of the picture you want to magnify, move the arrow to the upper left corner of the region, press the left mouse button and drag the mouse to the lower right corner of the region (a ``rubber box'' should follow the arrow) and release the button. The resulting picture will be scaled so that the larger side of box will fit on the screen (if the option True Aspect is selected). You can repeat this operation until a magnification factor of thirty is reached. \key{Backspace}\ will restore the previous scaling factor, the arrow keys will move the screen a third of the screen width/height in their direction, \key{Return}\ will reset to the original scaling and \key{Undo}\ will leave zoom mode. Remember that if your picture is built out a lot of vectors, the redrawing may take some time! \section{GIN Mode}\index{GIN Mode} The sequence \ASCII{ESC}\ASCII{SUB}\ will enter GIN mode from any of the Tektronix modes, it will not work from the VT102/VT100 mode since \ASCII{SUB}\ cancels all ANSI type commands. A crosshair cursor will appear which can be moved with the mouse \footnote{Moving the mouse to quick may cause the mouse handler to miss some interrupts, resulting in some rather odd behaviour of the cursor.}. Pressing any key on the keyboard will cause a GIN report to be sent to the host and exits the GIN mode to Tektronix alpha mode (if for some reason the program switching \UniTerm\ into GIN mode does not stop, you can exit completely by pressing \key{Undo}). \section{Tektronix 4014 Alpha Mode}\index{Tektronix 4014 Alpha Mode} This mode is only included for compatibility with the GIN-mode and is not very useful. It is the same as 4010 alpha mode with one margin. This mode will probably be replaced in future versions with a 4105 compatible alphamode. \section{Using the Special Keys}\index{Using the Special Keys} Here is a list of the functions on the special keys (press \key{Alt}\ and the key listed here to invoke the function): \begin{description} \expkey{F1}{Erases the graphics screen and resets the Tektronix emulation from any terminal mode.} \expkey{F2}{Toggle 24/49 lines mode (only on monochrome monitor).} \expkey{F3}{Write history buffer contents to a VDI-device (printer or meta-file).} \expkey{F4}{Prints the contents of the textbuffer (this is a very quick way of getting a copy of the screen contents, it is much faster than using the normal screen dump).} \expkey{F5}{Switches to the graphics screen and sets the terminal to Tektronix 4010 mode.} \expkey{F6}{Switches the screen and the terminal to VT102/VT100 mode.} \expkey{F7}{Resets the terminal, reads the default values from disk.} \expkey{F8}{Toggle autoprint.} \expkey{F9}{Enter zoommode.} \expkey{F10}{Toggle between 132(128) and 80 column mode.} \expkey{A}{Send the answerback string.} \expkey{B}{Send a short break (0.233 s) (doesn't drop DTR).} \expkey{C}{Start/stop file capture.} \expkey{H}{Hangup the telephone.} \expkey{L}{Send a long break (3.5 s) (drops DTR).} \expkey{P}{Screen dump to disk in DEGAS\footnotemark\ format.} \expkey{R}{Playback a file with the terminal emulator.} \expkey{S}{Control history recording.} \expkey{T}{Start file transfer (starts file transfer with the protocol selected in the \button{Transfer}\ menu).} \expkey{V}{View the history buffer.} \expkey{X}{Save history buffer to disk.} \expkey{Z}{Hold Screen (\key{Y}\ on the german keyboard).} \expkey{1--0}{Dial numbers 1 to 10.} \expkey{Help}{Atari screen dump.} \expkey{Insert}{Start the single-line editor.} \expkey{CapsLock}{Toggle Meta mode.}\index{Meta mode} \end{description} \footnotetext{DEGAS is a trademark of Batteries Included Inc.} \section{The Clipboard} Pressing the left mouse button while the I-type mouse cursor is visible\footnote{If it is not visible, move the mouse a bit} will produce a ``rubber box'', after you have let go of the mouse button the selected text will be inverted and a small popup menu will appear: \begin{itemize} \item clicking outside the popup will cancel the operation, \item selecting the \button{Cut}\ item with the left mouse button will store the text in a buffer (the ``clipboard''). Doing the same with the right button will append a \ASCII{CR}\ after each line, \item \button{Add}\ appends to the text already in the clipboard (with the same difference between left and right mouse button), \item \button{Send}\ sends the text directly to the host computer\footnotemark, without using the clipboard (same usage of left and right button). \end{itemize} \footnotetext{The delay between the cursor key codes can be set with the ``Delay'' parameter in the ``ASCII File Transfer'' dialog} Two commands supplement this feature, {\tt SaveClip} and {\tt Insert} which are available via the main popup menu: \begin{itemize} \item {\tt SaveClip} allows you to save the contents of the clipboard to a file, \ASCII{CR}'s are mapped to \ASCII{CR}\ASCII{LF}. \item {\tt Insert} sends the contents of the clipboard to the host computer. \end{itemize} Additional operations on the clipboard are possible with seperate programs, the clipboard can be accessed via the \UniTerm\ parameter block, example programs and documentation should be available with this manual. \section{Mouse Cursor Control}\index{Mouse Cursor Control} In practically all situations where you can use the cursor keys, you can use the mouse to position the cursor too; while the mouse cursor is visible (the I-type text cursor) move it to the new position and double click the left mouse button; the cursor should now move to the new position\footnote{The delay between the cursor key codes can be set with the ``Delay'' parameter}. Some editors do not allow you to move the cursor over tabs, this will cause the cursor to miss the intended end position in some cases. \section{Popup Menu}\index{Popup Menu} Besides being bound to keys some functions of \UniTerm\ are accessible via a popup menu\footnote{The default configuration can be changed with the macro command REASSIGN}. Click the right mouse button (while the mouse cursor is visible) and the popup will appear at the current cursor position. To select one of the items just click the left button, to get rid of the menu click outside of the popup area. The default configuration assigns the ten telephone numbers of the dialer to the fields on the right-hand side. \section{Viewing the History Buffer} You can view the contents of the history buffer with the key combination \keytwo{Alt}{V}\footnote{You must reserve at least 25kB of system memory for this to work, the memory will only be used as long as the view mode is active}. Besides the normal `clip' functions with the mouse, six keys have a special function: \begin{tabbing} MMMM\=MMMMMMMMMMMMM\=MMM\kill \> \key{Undo} \> Exit.\\ \> \key{Insert} \> Bottom of buffer.\\ \> \key{ClrHome} \> Top of buffer. \\ \> \key{\Uarrow} \> Up one line. \\ \> \key{\Darrow} \> Down one line. \\ \> \key{\Rarrow} \> Up one page.\\ \> \key{\Larrow} \> Down one page.\\ \end{tabbing} \section{Dialer}\index{Dialer} The setup file \filen{UNITERM.TEL} is loaded at startup, if it isn't found the values for the dialer are reset. The keys \keytwo{Alt}{1}\ to \keytwo{Alt}{0}\ dial numbers 1 to 10, \keytwo{Alt}{H}\ sends the hangup string. A ``+'' as first character of the number is a placeholder for the access code. Dialling can be aborted by pressing \keytwo{Control}{C}, the timeout is 40 seconds. The suffix, prefix and hangup strings are passed to the macro interpreter in ``function-key''\footnote{This means characters between the macro commands are sent aswell} mode. If the number and macro field is emtpy, the dialer returns straight away, if the number field is empty and a macro file is specified, the macro file is executed. A tip for people that want the macro to handle waiting for the \mbox{``CONNECT''} or whatever it may be message, just leave out the ``Connect msg'' entry. The dialer will then immediatly start executing the macro file after sending the number string. \section{Meta Mode}\index{Meta Mode} In Meta mode \key{Alternate}\ is the so called Meta key\index{Meta key}; pressing \key{Alternate}\ plus a second key will produce the ASCII code of that letter plus 128 (the Meta key sets the eighth bit of the character). To enter Meta mode press \keytwo{Alt}{CapsLock}\ (this will toggle an indicator on the statusline). Some of the more important characters of the international character set \index{international character set}that can be generated are: \begin{center} \begin{tabular}{|c|c|c|c|} \hline \key{Meta}+ & Character & \key{Meta}+ & Character \\ \hline \key{@} & \`{A} & \key{`} & \`{a} \\ \key{A} & \'{A} & \key{a} & \'{a} \\ \key{B} & \^{A} & \key{b} & \^{a} \\ \key{C} & \~{A} & \key{c} & \~{a} \\ \key{D} & \"{A} & \key{d} & \"{a} \\ \key{E} & \.{A} & \key{e} & \.{a} \\ \key{F} & \AE & \key{f} & \ae \\ \key{G} & \c{C} & \key{g} & \c{c} \\ \key{H} & \`{E} & \key{h} & \`{e} \\ \key{I} & \'{E} & \key{i} & \'{e} \\ \key{J} & \^{E} & \key{j} & \^{e} \\ \key{K} & \"{E} & \key{k} & \"{e} \\ \key{L} & \`{I} & \key{l} & \`{i} \\ \key{M} & \'{I} & \key{m} & \'{i} \\ \key{N} & \^{I} & \key{n} & \^{i} \\ \key{O} & \"{I} & \key{o} & \"{i} \\ \key{Q} & \~{N} & \key{q} & \~{n} \\ \key{R} & \`{O} & \key{r} & \`{o} \\ \key{S} & \'{O} & \key{s} & \'{o} \\ \key{T} & \^{O} & \key{t} & \^{o} \\ \key{U} & \~{O} & \key{u} & \~{o} \\ \key{V} & \"{O} & \key{v} & \"{o} \\ \key{W} & \OE & \key{w} & \oe \\ \key{X} & \O & \key{x} & \o \\ \key{Y} & \`{E} & \key{y} & \`{e} \\ \key{Z} & \'{E} & \key{z} & \'{e} \\ \key{[} & \^{E} & \key{\{} & \^{e} \\ \key{\Bslash} & \"{E} & \key{\Vbar} & \"{e} \\ \key{]} & \"{Y} & \key{\}} & \"{y} \\ \key{\_} & \ss & & \\ \hline \end{tabular} \end{center} If you have a non-US keyboard, you will probably have to edit your \UniTerm\ setup file with KeyEdit\index{KeyEdit}\ to get all ASCII codes\footnote{typically \{ ,\} ,[ and ] are missing}. . g$4.. g$4ASCREAD ME %g4UNITERM2ASC (g4Read Me for the ASCII distribution of the UniTerm User's Guide -------------------------------------------------------------- (V1.07 for UniTerm V2.0c 002) The file UNITERM2.ASC contains a rough translation to ASCII text of the DVI file for the UniTerm manual*. In particular all footnotes are missing, all information that is generated by using different fonts (and text sizes) is lost and the contents of some tables is missing. I suggest only to use this version as a temporary substitute for the TeX produced manual. The text is formated with 78 characters to a line, pagebreaks are marked with a formfeed character. Please report any documentation bugs you find. Simon Poole Bitnet: K538915@CZHRZU1A UUCP: ...mcvax!cernvax!forty2!poole Mail address: Bahnhofstr. 51b CH-5430 Wettingen Switzerland * With other words I retyped 50% of the manual UniTerm Users Guide Simon Poole February 3, 1988 Users Guide for UniTerm 2.0c (002) Version 1.08 ASCII Copyright 1987/1988 by Simon Poole All rights reserved. No part of this publication may be reproduced without the permission of the publisher. I make no warranty with respect to this publication, or the program it describes, and disclaim any implied or explicit suggestions of usefulness for any particular purpose. Use this program only if you are willing to assume all risks, and damages, if any, arising as a result, even if caused by negligence or other fault. GEM is a trademark of Digital Research Co. DEC,VT are trademarks of Digital Equipment Co. Tektronix is a trademark of Tektronix Co. Atari is a trademark of Atari Co. The Kermit file transfer protocol was developed by Frank da Cruz and Bill Catchings at Columbia University. Many thanks! This document was semi-automatically produced from the original DVI file, it does not do justice to the quality of the original. In particular footnotes are missing and some tables are not complete. Contents 1 Introduction 1 2 Starting Using UniTerm 2 2.1 Requirements ................................................. 2 2.2 Getting Started ............................................... 2 2.2.1 Desk Menu .......................................... 2 2.2.2 File Menu ........................................... 3 2.2.3 Transfer Menu ...................................... 3 2.2.4 Settings Menu ..................................... 4 2.2.5 Other Menu .......................................... 4 2.3 Exiting UniTerm .............................................. 5 2.4 Vector Graphics Mode ......................................... 5 2.5 Zoom Mode .................................................... 5 2.6 GIN Mode ...................................................... 6 2.7 Tektronix 4014 Alpha Mode ..................................... 6 2.8 Using the Special Keys ........................................ 6 2.9 The Clipboard ................................................ 8 2.10 Mouse Cursor Control ......................................... 8 2.11 Popup Menu .................................................. 9 2.12 Viewing the History Buffer .................................. 9 2.13 Dialer ...................................................... 9 2.14 Meta Mode ................................................... 9 3 More About UniTerm 11 3.1 RS232 Port Parameters ....................................... 11 3.2 Terminal Parameters ........................................... 12 3.2.1 Terminal 1 ........................................ 12 3.2.2 Terminal 2 ........................................ 13 3.3 Graphics Terminal Parameters ................................. 13 3.4 Tabs ......................................................... 14 3.5 Changing Buffer Sizes ....................................... 14 3.6 Setup Files ................................................. 14 3.7 File Capture/Playback ......................................... 15 3.8 Editing Function Keys ........................................ 15 3.9 The Statusline ............................................... 15 3.10 The Single-line Editor ....................................... 15 3.11 Single Character Commands...................................... 16 4 File Transfer 17 4.1 General ...................................................... 17 4.2 ASCII File Transfer .......................................... 17 4.2.1 Using ASCII File Transfer ........................... 17 4.2.2 Setting the ASCII File Transfer Parameters ......... 17 4.3 XModem/YModem ................................................. 18 4.3.1 Using XModem ........................................ 18 4.3.2 Using YModem Batch .................................. 19 4.3.3 Setting the XModem Parameters ....................... 19 4.4 Kermit ........................................................ 19 4.4.1 UniTerm Kermit Capabilities ......................... 19 4.4.2 Simple File Transfer ............................... 20 4.4.3 Binary File Transfer ............................... 20 4.4.4 Server Commands ................................... 21 4.4.5 Setting the Kermit Parameters ...................... 21 5 Customizing UniTerm 23 5.1 Popup Menu .................................................. 23 5.2 Key Bindings ................................................. 23 6 Implementation Notes 24 6.1 General ...................................................... 24 6.2 VT102/VT100 Mode .............................................. 25 6.2.1 Smooth Scrolling .................................... 25 6.2.2 132 Column Mode .................................... 25 6.2.3 Double Height/Width Characters ................... 25 6.2.4 Extended character set in 8 bit mode ............. 25 6.3 VT200 Mode ................................................... 25 6.3.1 VT200 function keys ................................ 25 6.3.2 C0/C1 Modes ......................................... 26 6.3.3 International character set ......................... 26 6.3.4 Downloadable character set ......................... 26 6.3.5 Downloadable function keys ......................... 26 6.3.6 Regis ............................................. 26 6.4 Tektronix Mode................................................ 26 6.5 General ...................................................... 26 6.5.1 Alpha Mode .......................................... 27 6.5.2 Vector Mode ....................................... 27 6.5.3 Zoom Mode ........................................... 27 6.6 Problems .................................................... 27 A Control Codes and Escape Sequences 28 A.1 ANSI/VT2XX/VT102/VT100 Mode .................................. 28 A.1.1 Set Mode ........................................... 28 A.1.2 Reset Mode ......................................... 29 A.1.3 Select Character Sets................................ 29 A.1.4 Shift into Character Sets ......................... 30 A.1.5 Character Attributes .............................. 30 A.1.6 Scrolling Region .................................. 30 A.1.7 Cursor Movement Commands .......................... 30 A.1.8 Tab Stops ........................................ 30 A.1.9 Line Attributes .................................. 31 A.1.10 Erasing ............................................ 31 A.1.11 Requests/Reports .................................. 31 A.1.12 Reset ............................................. 32 A.1.13 Tests ............................................... 32 A.1.14 Keyboard LED's ..................................... 32 A.1.15 VT52 Mode ........................................... 32 A.1.16 Editing Functions ................................. 33 A.1.17 Print Commands ...................................... 33 A.1.18 Other Control Characters ........................... 33 A.1.19 Nonstandard Functions .............................. 34 A.2 VT2XX Functions .............................................. 34 A.2.1 Character Sets ..................................... 34 A.2.2 Terminal Modes .................................... 35 A.2.3 Selective Erasing and Attributes .................... 35 A.2.4 Reports ............................................ 36 A.2.5 Misc ............... .............................. 36 A.2.6 Downloadable Function Keys ........................ 36 A.2.7 Downloadable Character Sets ........................ 36 A.2.8 Control Codes ..................................... 36 A.3 VT3XX Functions .............................................. 37 A.3.1 Set Mode ........................................... 37 A.3.2 Reset Mode ......................................... 37 A.3.3 National Replacement Character Sets ................ 37 A.4 4014 Mode .................................................... 38 A.4.1 Alpha Mode .......................................... 38 A.4.2 Other Functions and ................................ 39 A.4.3 Vector Mode ........................................ 39 A.4.4 Point Plot/Special ................................ 40 A.4.5 Incremental Point Plot............................... 40 A.5 4105 Commands ............................................... 40 B ASCII Control Codes 44 B.1 7-bit Control Codes ......................................... 45 B.2 8-bit Control Codes ......................................... 46 C Simple Macro Processor 47 C.1 Arguments ................................................... 47 C.2 Functions .................................................... 48 C.3 Prefix Operators ............................................. 51 C.4 String Constants ............................................. 52 C.5 Predefined String Variables .................................. 52 C.6 Additional Features in Macro File Mode ....................... 52 C.6.1 Labels ................................................ 52 C.6.2 Comments .............................................. 52 C.6.3 Additional Statements ................................. 53 C.7 Example ...................................................... 53 C.8 UniTerm Internal Function Numbers.............................. 55 D The KeyEdit Program 58 D.1 Editing a UniTerm Setup File .................................. 58 D.2 Updating your Setup File ..................................... 58 E Key assignments and generated codes 60 Chapter 1 Introduction UniTerm is a program that emulates most of the functions of DEC's (Digital Equipment Corporation) VT102 and VT220 text terminals and of Tektronix's 4014 graphics terminal. Additionally UniTerm provides the XModem, YModem and Kermit file transfer protocols. The program UniTerm is copyrighted, it can be copied, distributed and used free of cost, but may not be sold for more than the actual distribution costs. Please contact me, if you find bugs or have suggestions for revised versions of UniTerm, but read appendix A and the implementation notes first. Some compromises have been made in the implementation of the VT100 132 column mode and double width characters will not work on a color monitor. Enhancements which are planned for future releases: * Tektronix 4105 commands (already started!) * make UniTerm work with the blitter-chip * enhanced color version (colors for highlighted etc.) Chapter 2 Starting Using UniTerm 2.1 Requirements To use UniTerm you need: * an ATARI ST computer * a monochrome or color monitor * an RS232 standard cable * a computer/modem to connect to * a floppy disk containing UNITERM.PRG and UNITERM.RSC 2.2 Getting Started After connecting your ST to your host computer, double click the UniTerm icon. If you are using UniTerm for the first time an alert box will appear, press and ignore the error message (UniTerm didn't find the file UNITERM.SET, which we will create later on), the screen will clear to white(on a monochrome monitor) with a statusline on line 25. Press and the UniTerm help screen and a menu bar with following contents will appear: ______________________________________________________________________________ |__Desk________File________Transfer_________Settings_______Other_____________| 2.2.1 Desk Menu ______________________________________________________________________________ |Desk__________File_________Transfer_______Settings________Other_____________| |About_Uniterm..._____| 2.2. GETTING STARTED 3 [Desk] is the well known menu where you can start desk accessories and with the [About UniTerm... ] entry you can find out which version of UniTerm you are using. 2.2.2 File Menu ______________________________________________________________________________ |Desk_______File________Transfer_______Settings___________Other______________| |Load Setup | |Save_Setup____| |Load Numbers | |Save_Numbers__| |Show Space | |Set Path | |Delete_File | |Run_Program | |Quit__________| [File] allows you to select from: [Load Setup] load a previously saved setup from disk. [Save Setup] save the current settings of UniTerm to disk. [Load Numbers] load a setup file for the dialer [Save Numbers] save a setup file for the dialer [Delete File] delete a file. [Set Path] change the current GEMDOS drive and path. [Show Space] show total available and free space on the current drive. [Run Program] execute a program without leaving UniTerm. [Quit Menu] leave this screen and return to terminal mode. 2.2.3 Transfer Menu ______________________________________________________________________________ |Desk__________File________Transfer_____Settings____________Other____________| |ASCII | |XModem | |YModem | |Kermit___| [Transfer] selects the file transfer protocol you want to use: A change here is reflected in a different dialog box appearing when you select the [File Transfer] item and in the protocol used when you type . 4 CHAPTER 2. STARTING USING UNITERM 2.2.4 Settings Menu ______________________________________________________________________________ |Desk___________File_______Transfer_____Settings___________Other_____________| |RS232 | |Terminal 1 | |Terminal 2 | |File Transfer | |Graphics | |Tabs | |Buffers_______| [Settings] allows you to select from: [RS232] sets the parameters of the serial port. [Terminal 1] sets the value of some terminal (text mode) parameters. [Terminal 2] sets the rest of the terminal specific parameters [Graphics] sets the values for the graphics terminal module of UniTerm. [File Transfer] allows you to set the parameters for the current file transfer mode. [Buffers] set the sizes of the buffers UniTerm uses. [Tabs] set the tab positions (do not change without need, a lot of software depends on the "factory" settings) 2.2.5 Other Menu ______________________________________________________________________________ |Desk________File_______Transfer_______Settings_______Other__________________| |Dialer | |Edit_Function_Keys_| [Other] has two items: [Edit Function Keys] allows you to assign a string and/or macro commands to a function key. [Dialer] setup the dialling sequences and telephone numbers for your modem. Select the [RS232] item in the [Settings] menu and a new dialog will appear. Selecting the different values for the parameters is quite straight-forward, just click on the buttons with the right values (we hope you know them, otherwise you will just have to experiment) and when you are finished select [OK]. To save the setup, select [Save setup] from the [File] menu, a normal GEM file selector dialog will appear, if you want to use this setup as default, save it with the name UNITERM.SET and UniTerm will load it automatically on startup. To leave the help screen select [Quit Menu], press or the left mouse button once. 2.3. EXITING UNITERM 5 If you have adjusted the parameters correctly, you should now be able to communicate with your host computer. Some operating systems (VMS) try to identify the terminal automatically, depending on your setup UniTerm will identify itself as a DEC VT200, VT102, VT100 or as a VT100 emulating a VT52. A VT102/VT200 has more 'advanced' editing functions (which results in less overhead in transmitting inserts etc.) so leave this option on VT102/VT200 if possible. If you have to enter the terminal type manually try VT102 first (changing from VT102 to VT100 or to VT200 only changes the report from UniTerm, not the actual commands UniTerm understands). 2.3 Exiting UniTerm To stop UniTerm, press the key, an alertbox will appear asking for confirmation ( exits immediatly). 2.4 Vector Graphics Mode After receiving the control code GS (this can be turned off) or the 4105 command ESC %!0 from the host, UniTerm switches to a separate graphics screen, if the host doesn't send ESC FF (the ASCII characters Escape and Formfeed) before starting a new picture, you will have to clear the screen manually with . The incoming characters will be interpreted as Tektronix encoded vectors or commands (see appendix A) until UniTerm receives one of the following codes: CAN will return you to VT102 mode, ESC FF will clear the screen and enter Tektronix alpha mode. ESC %!1 will return to VT102 mode. To return manually from Tektronix to VT200/VT102/VT100/VT52 mode press or select the appropriate mode from the item Terminal in the menu Settings. To view your picture again press . Be careful,selecting Tektronix 4010 mode manually will also reset the history buffer! 2.5 Zoom Mode If your history buffer is large enough, you can redraw a picture with different scaling factors. To select this mode press , the screen will be cleared, 6 CHAPTER 2. STARTING USING UNITERM the current contents of the buffer will be drawn on the screen and the normal arrow mouse cursor will appear. To select the region of the picture you want to magnify, move the arrow to the upper left corner of the region, press the left mouse button and drag the mouse to the lower right corner of the region (a "rubber box" should follow the arrow) and release the button. The resulting picture will be scaled so that the larger side of box will fit on the screen (if the option True Aspect is selected). You can repeat this operation until a magnification factor of thirty is reached. will restore the previous scaling factor, the arrow keys will move the screen a third of the screen width/height in their direction, will reset to the original scaling and will leave zoom mode. Remember that if your picture is built out a lot of vectors, the redrawing may take some time! 2.6 GIN Mode The sequence ESC SUB will enter GIN mode from any of the Tektronix modes, it will not work from the VT102/VT100 mode since SUB cancels all ANSI type commands. A crosshair cursor will appear which can be moved with the mouse. Pressing any key on the keyboard will cause a GIN report to be sent to the host and exits the GIN mode to Tektronix alpha mode (if for some reason the program switching UniTerm into GIN mode does not stop, you can exit completely by pressing ). 2.7 Tektronix 4014 Alpha Mode This mode is only included for compatibility with the GIN-mode and is not very useful. It is the same as 4010 alpha mode with one margin. This mode will probably be replaced in future versions with a 4105 compatible alphamode. 2.8 Using the Special Keys Here is a list of the functions on the special keys (press and the key listed here to invoke the function): Erases the graphics screen and resets the Tektronix emulation from any terminal mode. Toggle 24/49 lines mode (only on monochrome monitor). Write history buffer contents to a VDI-device (printer or metafile) 2.8. USING THE SPECIAL KEYS 7 Prints the contents of the textbuffer (this is a very quick way of getting a copy of the screen contents, it is much faster than using the normal screen dump). Switches to the graphics screen and sets the terminal to Tektronix 4010 mode. Switches the screen and the terminal to VT102/VT100 mode. Resets the terminal, reads the default values from disk. Toggle autoprint. Enter zoommode. Toggle between 132(128) and 80 column mode. Send the answerback string. Send a short break (0.233 s) (doesn't drop DTR). Start/stop file capture. Hangup the telephone. Send a long break (3.5 s) (drops DTR).