TERMINUS 2.0 Copyright (C) 1993-95 by John P. Radigan A Shareware telecommunications tool for the Amiga computer. DEDICATION In memory of James E. Spessard COPYRIGHT All versions of the Terminus telecommunications package, executable, documentation and support files are protected by United States Copyright Law and related international treaty provisions. All Rights Reserved, Worldwide. You are entitled to use the program and related files in original form only. You may not reverse engineer, decompile, disassemble or derive a work based on this work in whole or in part. SHAREWARE This program is made available through the concept of "Shareware" which is a form of distribution that gives you the opportunity to try a piece of software before you buy it. It is not now, nor will it ever be regarded as Public Domain or otherwise "free" software. LICENSE You are granted a limited license to evaluate this software for a 30 day period on a private, non-commercial basis only. You must decide at the termination of this evaluation period to register this product if you plan to continue using it or to cease all use otherwise. Registration is not only required for your continued use, it is needed to keep the development of future enhancements to Terminus active. Without your support the product cannot continue to evolve. i DISCLAIMER No warranties are implied or expressed with regard to the fitness or merchantability of Terminus for any particular purpose. All risks and damages, incidental or otherwise, arising through the use or misuse of Terminus are entirely at the responsibility of the user. While considerable effort has been made to provide you with a reliable product, there is no guarantee that this program is 100% "bug-free". Additionally, this disclaimer does not guarantee future versions of this product, but maintenance releases may be made available if and when feasible. DISTRIBUTION Distribution is limited to the original shareware distribution archive file only. None of the member files may be omitted. Furthermore, no profit or other material gain may be realized for distributing Terminus with the sole exception of recovery for media and postage. Bundling Terminus, the distribution archive or any member files, with any commercial product is expressly prohibited prior to obtaining a "Commercial Distribution Agreement". Contact the support BBS for details if you wish to obtain this agreement. ACKNOWLEDGEMENTS Chuck Forsberg for his X/YMODEM and ZMODEM protocol specifications and for his public domain rz.c, sz.c & zm.c source files. Special thanks to: Earle Ake, Tim Aston, Greg Bastow, Lee Bosch, Peter DiSilva, Joyce Divina, Glenn Edgar, Harold Feldman, Mike Golobay, Chuck Henrich, Doug Keller, John Kempf, Paul Kienitz, Steve Kratz, Tom Krotchko, Bob Pomeroy, Tony Preston, Tom Robinson, Jim Scarborough, Mike Thomas, James Tysinger, Dan Warburton, Chris Wichura, Joe Wolfe, John Yeager. ii Order Form #5021-EE * Terminus 2.0, January 1995 * - Single User License Order Form - Remit to: Dynalogic P.O. Box 1047 Port Chester, NY 10573 USA ______ Terminus 2.0 Single User License...... @ US$40.00 ea. $ _________ ______ JR-Comm to Terminus 2.0 upgrade....... @ US$10.00 ea. $ _________ (registered JR-Comm users only) SHIPPING & HANDLING (each copy) North America: $2; Outside: $5 $ _________ SUBTOTAL $ _________ New York and New Jersey residents add Sales Tax...... $ _________ TOTAL (U.S. funds drawn on a U.S. bank) $ _________ Name: ______________________________________________________________________ Company (ONLY if company address): _________________________________________ Address: ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ Phone: _________________________ PRICES ARE SUBJECT TO CHANGE WITHOUT NOTICE iii Order Form #5021-AUSEE * Terminus 2.0, January 1995 * - Single User License Order Form - Australia, New Zealand and Papua New Guinea can register Terminus through the following contact: Continental Drift BBS Shareware Registration PO BOX 259 Newport Beach NSW 2106 ______ Terminus 2.0 Single User License...... @ AUD$55.00 ea. $ _________ ______ JR-Comm to Terminus 2.0 upgrade....... @ AUD$13.00 ea. $ _________ (registered JR-Comm users only) SHIPPING & HANDLING (each copy)........ @ AUD$2.00 $ _________ SUBTOTAL $ _________ TOTAL (Austrailian funds only) $ _________ Name: ______________________________________________________________________ Company (ONLY if company address): _________________________________________ Address: ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ Phone: _________________________ PRICES ARE SUBJECT TO CHANGE WITHOUT NOTICE iv TABLE OF CONTENTS 1 INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 FEATURES OVERVIEW . . . . . . . . . . . . . . . . . . . . . . 1 1.2 MISSING FEATURES . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 DOCUMENT STYLE AND NOTATION . . . . . . . . . . . . . . . . . 3 1.4 GADGETS . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.1 CYCLE GADGET . . . . . . . . . . . . . . . . . . . . . 4 1.4.2 INTEGER GADGET . . . . . . . . . . . . . . . . . . . . 4 1.4.3 STRING GADGET . . . . . . . . . . . . . . . . . . . . . 5 1.4.4 CHECK GADGET . . . . . . . . . . . . . . . . . . . . . 6 2 SYSTEM REQUIREMENTS . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1 INSTALLATION . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 HIGH-SPEED MODEM CONFIGURATION SCRIPT . . . . . . . . . . . . 8 2.3 HIGH-SPEED MODEM USE . . . . . . . . . . . . . . . . . . . . . 8 2.4 3RD PARTY SERIAL DRIVERS . . . . . . . . . . . . . . . . . . . 10 2.5 OWNDEVUNIT.LIBRARY . . . . . . . . . . . . . . . . . . . . . . 10 2.6 DEBUGGING SUPPORT . . . . . . . . . . . . . . . . . . . . . . 10 3 PROGRAM OPERATION . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1 SESSIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2 MASTER PROCESS . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 FILE REQUESTER PROCESS . . . . . . . . . . . . . . . . . . . . 13 3.4 TSL - TERMINUS SESSION LAUNCHER . . . . . . . . . . . . . . . 13 3.5 DETACHING FROM THE CLI . . . . . . . . . . . . . . . . . . . . 13 3.6 RESIDENT USAGE . . . . . . . . . . . . . . . . . . . . . . . . 14 3.7 TERMINUS FILES . . . . . . . . . . . . . . . . . . . . . . . . 14 3.7.1 DEFAULTS FILE . . . . . . . . . . . . . . . . . . . . . 14 3.7.2 PHONEBOOK FILE . . . . . . . . . . . . . . . . . . . . 14 3.7.3 STARTUP SCRIPT . . . . . . . . . . . . . . . . . . . . 15 3.7.4 CONSOLE DEFINITION FILES . . . . . . . . . . . . . . . 15 3.8 COMMAND LINE OPTIONS . . . . . . . . . . . . . . . . . . . . . 15 3.9 ICON TOOLTYPES . . . . . . . . . . . . . . . . . . . . . . . . 16 4 THE CONSOLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.1 SCREENS . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 PALETTES . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2.1 PALETTE TYPES . . . . . . . . . . . . . . . . . . . . . 18 4.3 TERMINAL EMULATIONS . . . . . . . . . . . . . . . . . . . . . 19 4.3.1 TTY EMULATION . . . . . . . . . . . . . . . . . . . . . 19 4.3.2 AMIGA EMULATION . . . . . . . . . . . . . . . . . . . . 19 4.3.3 IBM ANSI EMULATION . . . . . . . . . . . . . . . . . . 19 4.3.4 VT-52 EMULATION . . . . . . . . . . . . . . . . . . . . 20 4.3.5 VT-102 EMULATION . . . . . . . . . . . . . . . . . . . 20 4.3.6 VT-220 EMULATION . . . . . . . . . . . . . . . . . . . 20 4.4 SPECIAL KEY SEQUENCES . . . . . . . . . . . . . . . . . . . . 21 4.5 STATUS LINE . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.6 DEFINING A CONSOLE . . . . . . . . . . . . . . . . . . . . . . 23 4.7 CHAT MODE . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.8 SPECIAL MOUSE SEQUENCES . . . . . . . . . . . . . . . . . . . 25 4.8.1 CHARACTER MOUSE . . . . . . . . . . . . . . . . . . . . 25 4.8.2 ANSI CURSOR MOUSE . . . . . . . . . . . . . . . . . . . 25 4.9 HEXADECIMAL DISPLAY MODE . . . . . . . . . . . . . . . . . . . 25 4.10 XON/XOFF FLOW CONTROL . . . . . . . . . . . . . . . . . . . . 26 4.11 BUFFERED PRINTER I/O . . . . . . . . . . . . . . . . . . . . 26 v 5 USING CAPTURE FILES . . . . . . . . . . . . . . . . . . . . . . . . . 27 6 USING THE REVIEW BUFFER . . . . . . . . . . . . . . . . . . . . . . . 28 6.1 SEARCHING IN THE REVIEW BUFFER . . . . . . . . . . . . . . . . 28 6.2 NAVIGATING IN THE REVIEW BUFFER . . . . . . . . . . . . . . . 29 7 CLIPBOARD SUPPORT . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.1 MAIN DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.2 REVIEW BUFFER . . . . . . . . . . . . . . . . . . . . . . . . 30 7.3 SENDING CLIPBOARD DATA . . . . . . . . . . . . . . . . . . . . 31 8 USING THE PHONEBOOK . . . . . . . . . . . . . . . . . . . . . . . . . 32 8.1 AUTOMATIC SAVING OF PHONEBOOK FILES . . . . . . . . . . . . . 32 8.2 LOADING AND SAVING PHONEBOOK FILES . . . . . . . . . . . . . . 32 8.3 HIGHLIGHTING AND SELECTING ENTRIES . . . . . . . . . . . . . . 33 8.4 SORTING ENTRIES . . . . . . . . . . . . . . . . . . . . . . . 33 8.5 CREATING AND EDITING ENTRIES . . . . . . . . . . . . . . . . . 33 8.6 DELETING ENTRIES . . . . . . . . . . . . . . . . . . . . . . . 35 8.7 PASSWORD MAINTENANCE . . . . . . . . . . . . . . . . . . . . . 35 9 USING THE DIALER . . . . . . . . . . . . . . . . . . . . . . . . . . 37 10 FILE TRANSFERS . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 10.1 FILE REQUESTER NOTES . . . . . . . . . . . . . . . . . . . . 39 10.2 ASCII SEND . . . . . . . . . . . . . . . . . . . . . . . . . 39 10.3 RESIDENT PROTOCOLS . . . . . . . . . . . . . . . . . . . . . 40 10.3.1 XMODEM . . . . . . . . . . . . . . . . . . . . . . . . 40 10.3.2 XMODEM-CRC . . . . . . . . . . . . . . . . . . . . . . 40 10.3.3 XMODEM-1K . . . . . . . . . . . . . . . . . . . . . . 40 10.3.4 YMODEM . . . . . . . . . . . . . . . . . . . . . . . . 40 10.3.5 YMODEM-1K . . . . . . . . . . . . . . . . . . . . . . 41 10.3.6 YMODEM-G . . . . . . . . . . . . . . . . . . . . . . . 41 10.3.7 ZMODEM . . . . . . . . . . . . . . . . . . . . . . . . 41 10.4 NOTES ON XPR . . . . . . . . . . . . . . . . . . . . . . . . 41 10.5 NOTES ON FLOW CONTROL . . . . . . . . . . . . . . . . . . . . 42 10.6 THE STATS REQUESTER . . . . . . . . . . . . . . . . . . . . . 42 11 FUNCTION KEY MACROS . . . . . . . . . . . . . . . . . . . . . . . . 44 11.1 ESCAPE SEQUENCES . . . . . . . . . . . . . . . . . . . . . . 45 11.2 USING ONE LINE SCRIPTS . . . . . . . . . . . . . . . . . . . 45 12 USING THE SCRIPT RECORDER . . . . . . . . . . . . . . . . . . . . . 46 13 REMOTE SHELL OPERATION . . . . . . . . . . . . . . . . . . . . . . . 49 13.1 CAVEATS OF REMOTE OPERATION . . . . . . . . . . . . . . . . . 49 14 MENUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 14.1 PROJECT MENU . . . . . . . . . . . . . . . . . . . . . . . . 51 14.1.1 [PROJECT][LOAD DEFAULTS...] . . . . . . . . . . . . . 51 14.1.2 [PROJECT][WRITE DEFAULTS...] . . . . . . . . . . . . . 51 14.1.3 [PROJECT][ICONIFY][I] . . . . . . . . . . . . . . . . 51 14.1.4 [PROJECT][ABOUT...][?] . . . . . . . . . . . . . . . . 52 14.1.5 [PROJECT][QUIT][Q] . . . . . . . . . . . . . . . . . . 52 14.2 PHONEBOOK MENU . . . . . . . . . . . . . . . . . . . . . . . 52 14.2.1 [PHONEBOOK][DIRECTORY...][z] . . . . . . . . . . . . . 52 14.2.2 [PHONEBOOK][DIAL NUMBER...][j] . . . . . . . . . . . . 52 14.2.3 [PHONEBOOK][REDIAL...][r] . . . . . . . . . . . . . . 52 vi 14.2.4 [PHONEBOOK][UPDATE ENTRY][y] . . . . . . . . . . . . . 53 14.2.5 [PHONEBOOK][CREATE ENTRY...][K] . . . . . . . . . . . 53 14.2.6 [PHONEBOOK][SEND PASSWORD][Z] . . . . . . . . . . . . 53 14.3 BUFFER MENU . . . . . . . . . . . . . . . . . . . . . . . . . 53 14.3.1 [BUFFER][REVIEW FROM...][B] . . . . . . . . . . . . . 53 14.3.2 [BUFFER][REVIEW AT END...][b] . . . . . . . . . . . . 53 14.3.3 [BUFFER][LOAD BUFFER...] . . . . . . . . . . . . . . . 53 14.3.4 [BUFFER][CLEAR BUFFER][C] . . . . . . . . . . . . . . 54 14.3.5 [BUFFER][QUOTE CLIPBOARD][V] . . . . . . . . . . . . . 54 14.3.6 [BUFFER][SEND CLIPBOARD][v] . . . . . . . . . . . . . 54 14.3.7 [BUFFER][START SEARCH...][e] . . . . . . . . . . . . . 54 14.3.8 [BUFFER][START EXACT SEARCH...][E] . . . . . . . . . . 54 14.3.9 [BUFFER][REPEAT SEARCH][f] . . . . . . . . . . . . . . 55 14.4 TRANSFER MENU . . . . . . . . . . . . . . . . . . . . . . . . 55 14.4.1 [TRANSFER][UPLOAD...][u] . . . . . . . . . . . . . . . 55 14.4.2 [TRANSFER][ADD UPLOAD...][L] . . . . . . . . . . . . . 55 14.4.3 [TRANSFER][DOWNLOAD...][d] . . . . . . . . . . . . . . 55 14.4.4 [TRANSFER][ASCII SEND...][i] . . . . . . . . . . . . . 55 14.4.5 [TRANSFER][OPEN CAPTURE...][O] . . . . . . . . . . . . 55 14.4.6 [TRANSFER][OPEN W/SAVE...][o] . . . . . . . . . . . . 56 14.4.7 [TRANSFER][APPEND CAPTURE...][A] . . . . . . . . . . . 56 14.4.8 [TRANSFER][APPEND W/SAVE...][a] . . . . . . . . . . . 56 14.4.9 [TRANSFER][CLOSE CAPTURE][c] . . . . . . . . . . . . . 56 14.5 SCRIPT MENU . . . . . . . . . . . . . . . . . . . . . . . . . 56 14.5.1 [SCRIPT][START...][s] . . . . . . . . . . . . . . . . 56 14.5.2 [SCRIPT][STOP][t] . . . . . . . . . . . . . . . . . . 56 14.5.3 [SCRIPT][RESUME][m] . . . . . . . . . . . . . . . . . 57 14.5.4 [SCRIPT][RECORD...][w] . . . . . . . . . . . . . . . . 57 14.5.5 [SCRIPT][SEND AREXX MACRO...][n] . . . . . . . . . . . 57 14.5.6 {SCRIPT][ABORT AREXX MACROS][k] . . . . . . . . . . . 57 14.6 SETTINGS MENU . . . . . . . . . . . . . . . . . . . . . . . . 57 14.6.1 [SETTINGS][SERIAL...][1] . . . . . . . . . . . . . . . 57 14.6.2 [SETTINGS][TRANSFER...][2] . . . . . . . . . . . . . . 57 14.6.3 [SETTINGS][MACROS...][3] . . . . . . . . . . . . . . . 57 14.6.4 [SETTINGS][PALETTE...][4] . . . . . . . . . . . . . . 58 14.6.5 [SETTINGS][PATHS...][5] . . . . . . . . . . . . . . . 58 14.6.6 [SETTINGS][MODEM...][6] . . . . . . . . . . . . . . . 58 14.6.7 [SETTINGS][PORT...][7] . . . . . . . . . . . . . . . . 58 14.6.8 [SETTINGS][GENERAL...][8] . . . . . . . . . . . . . . 58 14.6.9 [SETTINGS][CONSOLE...][9] . . . . . . . . . . . . . . 58 14.7 MISC MENU . . . . . . . . . . . . . . . . . . . . . . . . . . 58 14.7.1 [MISC][RESET TIMER] . . . . . . . . . . . . . . . . . 58 14.7.2 [MISC][KILL REMCLI][J] . . . . . . . . . . . . . . . . 58 14.7.3 [MISC][SEND BREAK][g] . . . . . . . . . . . . . . . . 58 14.7.4 [MISC][HANGUP MODEM][h] . . . . . . . . . . . . . . . 58 14.7.5 [MISC][RESET TERMINAL][X] . . . . . . . . . . . . . . 59 14.7.6 [MISC][CLEAR SCREEN][x] . . . . . . . . . . . . . . . 59 14.7.7 [MISC][PRINT SCREEN][p] . . . . . . . . . . . . . . . 59 14.7.8 [MISC][CHAT?][G] . . . . . . . . . . . . . . . . . . . 59 14.7.9 [MISC][DOORWAY?][H] . . . . . . . . . . . . . . . . . 59 14.7.10 [MISC][PRINTER?][P] . . . . . . . . . . . . . . . . . 59 14.7.11 [MISC][HEX DISPLAY?] . . . . . . . . . . . . . . . . 59 14.7.12 [MISC][QUIET SERIAL?] . . . . . . . . . . . . . . . . 60 15 PHONEBOOK REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . 61 15.1 {PHONEBOOK}{LOAD PHONEBOOK...}{L} . . . . . . . . . . . . . . 61 15.2 {PHONEBOOK}{SAVE PHONEBOOK...}{V} . . . . . . . . . . . . . . 61 vii 15.3 {PHONEBOOK}{DISPLAY}{I} . . . . . . . . . . . . . . . . . . . 61 15.4 {PHONEBOOK}{SORT ORDER}{S} . . . . . . . . . . . . . . . . . 61 15.5 {PHONEBOOK}{EDIT...}{E} . . . . . . . . . . . . . . . . . . . 62 15.6 {PHONEBOOK}{ADD...}{A} . . . . . . . . . . . . . . . . . . . 62 15.7 {PHONEBOOK}{DELETE}{T} . . . . . . . . . . . . . . . . . . . 62 15.8 {PHONEBOOK}{UNSELECT}{U} . . . . . . . . . . . . . . . . . . 62 15.9 {PHONEBOOK}{P/W...}{P} . . . . . . . . . . . . . . . . . . . 62 15.10 {PHONEBOOK}{SORT}{R} . . . . . . . . . . . . . . . . . . . . 62 15.11 {PHONEBOOK}{DIAL...}{D} . . . . . . . . . . . . . . . . . . 62 15.12 KEYBOARD CONTROLS . . . . . . . . . . . . . . . . . . . . . 63 16 ENTRY REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . . 64 16.1 {ENTRY}{NAME}{E} . . . . . . . . . . . . . . . . . . . . . . 64 16.2 {ENTRY}{COMMENT}{M} . . . . . . . . . . . . . . . . . . . . . 64 16.3 {ENTRY}{CAP. FILE}{F} . . . . . . . . . . . . . . . . . . . . 64 16.4 {ENTRY}{SCRIPT}{T} . . . . . . . . . . . . . . . . . . . . . 65 16.5 {ENTRY}{GET DEFINITION...}{G} . . . . . . . . . . . . . . . . 65 16.6 {ENTRY}{RESET TIMER}{I} . . . . . . . . . . . . . . . . . . . 65 16.7 {ENTRY}{CENTS/MIN.}{/} . . . . . . . . . . . . . . . . . . . 65 16.8 {ENTRY}{PHONE #1}{1} . . . . . . . . . . . . . . . . . . . . 65 16.9 {ENTRY}{PHONE #2}{2} . . . . . . . . . . . . . . . . . . . . 65 16.10 {ENTRY}{PHONE #3}{3} . . . . . . . . . . . . . . . . . . . . 65 16.11 {ENTRY}{PHONE #4}{4} . . . . . . . . . . . . . . . . . . . . 65 16.12 {ENTRY}{PREFIX}{X} . . . . . . . . . . . . . . . . . . . . . 66 16.13 {ENTRY}{P/W TYPE}{Y} . . . . . . . . . . . . . . . . . . . . 66 16.14 {ENTRY}{P/W LENGTH}{L} . . . . . . . . . . . . . . . . . . . 66 16.15 {ENTRY}{SERIAL...}{S} . . . . . . . . . . . . . . . . . . . 66 16.16 {ENTRY}{XFER...}{R} . . . . . . . . . . . . . . . . . . . . 66 16.17 {ENTRY}{MACROS...}{A} . . . . . . . . . . . . . . . . . . . 66 16.18 {ENTRY}{P/W...}{W} . . . . . . . . . . . . . . . . . . . . . 67 16.19 {ENTRY}{OK}{O} . . . . . . . . . . . . . . . . . . . . . . . 67 16.20 {ENTRY}{CANCEL}{C} . . . . . . . . . . . . . . . . . . . . . 67 17 SERIAL REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . . 68 17.1 {SERIAL}{BAUD}{B} . . . . . . . . . . . . . . . . . . . . . . 68 17.2 {SERIAL}{PARITY}{P} . . . . . . . . . . . . . . . . . . . . . 68 17.3 {SERIAL}{DUPLEX}{D} . . . . . . . . . . . . . . . . . . . . . 68 17.4 {SERIAL}{DATA LENGTH}{L} . . . . . . . . . . . . . . . . . . 68 17.5 {SERIAL}{STOP BITS}{S} . . . . . . . . . . . . . . . . . . . 68 17.6 {SERIAL}{XON/XOFF}{X} . . . . . . . . . . . . . . . . . . . . 69 18 TRANSFER REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . 70 18.1 {TRANSFER}{EXPAND BLANKS}{B} . . . . . . . . . . . . . . . . 70 18.2 {TRANSFER}{CHAR PACING}{A} . . . . . . . . . . . . . . . . . 70 18.3 {TRANSFER}{PROMPT CHAR}{M} . . . . . . . . . . . . . . . . . 70 18.4 {TRANSFER}{LINE DELAY}{L} . . . . . . . . . . . . . . . . . . 71 18.5 {TRANSFER}{CHAR DELAY}{H} . . . . . . . . . . . . . . . . . . 71 18.6 {TRANSFER}{BINARY TRANSFER}{N} . . . . . . . . . . . . . . . 71 18.7 {TRANSFER}{AUTO CHOP D/L}{D} . . . . . . . . . . . . . . . . 71 18.8 {TRANSFER}{SAVE ABORTED}{V} . . . . . . . . . . . . . . . . . 71 18.9 {TRANSFER}{RELAXED TIMING}{E} . . . . . . . . . . . . . . . . 72 18.10 {TRANSFER}{PRE-ACK D/L}{K} . . . . . . . . . . . . . . . . . 72 18.11 {TRANSFER}{PROTOCOL}{P} . . . . . . . . . . . . . . . . . . 72 18.12 {TRANSFER}{ZMODE}{Z} . . . . . . . . . . . . . . . . . . . . 72 18.13 {TRANSFER}{ZWINDOW SIZE}{W} . . . . . . . . . . . . . . . . 73 18.14 {TRANSFER}{ZMODEM RESUME}{R} . . . . . . . . . . . . . . . . 73 18.15 {TRANSFER}{EXTENDED PATHNAMES}{X} . . . . . . . . . . . . . 74 viii 18.16 {TRANSFER}{AUTO DOWNLOAD}{U} . . . . . . . . . . . . . . . . 74 18.17 {TRANSFER}{AUTO D/L CHALLENGE}{G} . . . . . . . . . . . . . 74 18.18 {TRANSFER}{ESCAPE CTRL CHAR}{T} . . . . . . . . . . . . . . 74 18.19 {TRANSFER}{USE 32 BIT CRC}{3} . . . . . . . . . . . . . . . 75 18.20 {TRANSFER}{SKIP NOT LOCAL}{S} . . . . . . . . . . . . . . . 75 18.21 {TRANSFER}{XPR LIBRARY...}{Y} . . . . . . . . . . . . . . . 75 19 XPR LIBRARY REQUESTER . . . . . . . . . . . . . . . . . . . . . . . 76 19.1 {XPR LIBRARY}{GET LIBRARY...}{G} . . . . . . . . . . . . . . 76 19.2 {XPR LIBRARY}{XPR INIT}{I} . . . . . . . . . . . . . . . . . 76 19.3 {XPR LIBRARY}{XPR OPTIONS...}{X} . . . . . . . . . . . . . . 76 20 MACROS REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . . 77 20.1 {MACROS}{F1}{1} . . . . . . . . . . . . . . . . . . . . . . . 77 20.2 {MACROS}{F2}{2} . . . . . . . . . . . . . . . . . . . . . . . 77 20.3 {MACROS}{F3}{3} . . . . . . . . . . . . . . . . . . . . . . . 77 20.4 {MACROS}{F4}{4} . . . . . . . . . . . . . . . . . . . . . . . 77 20.5 {MACROS}{F5}{5} . . . . . . . . . . . . . . . . . . . . . . . 77 20.6 {MACROS}{F6}{6} . . . . . . . . . . . . . . . . . . . . . . . 77 20.7 {MACROS}{F7}{7} . . . . . . . . . . . . . . . . . . . . . . . 77 20.8 {MACROS}{F8}{8} . . . . . . . . . . . . . . . . . . . . . . . 77 20.9 {MACROS}{F9}{9} . . . . . . . . . . . . . . . . . . . . . . . 77 20.10 {MACROS}{F10}{0} . . . . . . . . . . . . . . . . . . . . . . 77 20.11 {MACROS}{QUALIFIER}{A} . . . . . . . . . . . . . . . . . . . 77 21 PALETTE REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . 78 21.1 {PALETTE}{SELECT}{L} . . . . . . . . . . . . . . . . . . . . 78 21.2 {PALETTE}{ANSI INDEX}{0-7} . . . . . . . . . . . . . . . . . 78 21.3 {PALETTE}{RED}{Q} . . . . . . . . . . . . . . . . . . . . . . 78 21.4 {PALETTE}{GREEN}{A} . . . . . . . . . . . . . . . . . . . . . 78 21.5 {PALETTE}{BLUE}{Z} . . . . . . . . . . . . . . . . . . . . . 78 21.6 {PALETTE}{TEXT}{T,E,X,8} . . . . . . . . . . . . . . . . . . 78 21.7 {PALETTE}{BACKGROUND}{G,N,D,9} . . . . . . . . . . . . . . . 78 21.8 {PALETTE}{CURSOR}{U,R,S} . . . . . . . . . . . . . . . . . . 78 21.9 {PALETTE}{DETAIL}{I} . . . . . . . . . . . . . . . . . . . . 79 21.10 {PALETTE}{BLOCK}{K} . . . . . . . . . . . . . . . . . . . . 79 21.11 {PALETTE}{TEXT}{V} . . . . . . . . . . . . . . . . . . . . . 79 21.12 {PALETTE}{SHINE}{H} . . . . . . . . . . . . . . . . . . . . 79 21.13 {PALETTE}{SHADOW}{W} . . . . . . . . . . . . . . . . . . . . 79 21.14 {PALETTE}{MENU TEXT}{M} . . . . . . . . . . . . . . . . . . 79 21.15 {PALETTE}{MENU BACKGROUND}{B} . . . . . . . . . . . . . . . 79 22 PATHS REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . . 80 22.1 {PATHS}{TERMINUS}{T} . . . . . . . . . . . . . . . . . . . . 80 22.2 {PATHS}{UPLOADS}{U} . . . . . . . . . . . . . . . . . . . . . 80 22.3 {PATHS}{DOWNLOADS}{D} . . . . . . . . . . . . . . . . . . . . 80 22.4 {PATHS}{CAPTURE}{P} . . . . . . . . . . . . . . . . . . . . . 80 22.5 {PATHS}{SCRIPTS}{S} . . . . . . . . . . . . . . . . . . . . . 80 22.6 {PATHS}{PRINTER}{N} . . . . . . . . . . . . . . . . . . . . . 81 22.7 {PATHS}{REXX}{R} . . . . . . . . . . . . . . . . . . . . . . 81 23 MODEM REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . . 82 23.1 {MODEM}{INIT CMD}{M} . . . . . . . . . . . . . . . . . . . . 82 23.2 {MODEM}{HANGUP CMD}{H} . . . . . . . . . . . . . . . . . . . 82 23.3 {MODEM}{POSTFIX}{S} . . . . . . . . . . . . . . . . . . . . . 82 23.4 {MODEM}{PREFIX #1}{1} . . . . . . . . . . . . . . . . . . . . 82 23.5 {MODEM}{PREFIX #2}{2} . . . . . . . . . . . . . . . . . . . . 82 ix 23.6 {MODEM}{PREFIX #3}{3} . . . . . . . . . . . . . . . . . . . . 82 23.7 {MODEM}{PREFIX #4}{4} . . . . . . . . . . . . . . . . . . . . 82 23.8 {MODEM}{OK}{K} . . . . . . . . . . . . . . . . . . . . . . . 83 23.9 {MODEM}{BUSY}{Y} . . . . . . . . . . . . . . . . . . . . . . 83 23.10 {MODEM}{RING}{I} . . . . . . . . . . . . . . . . . . . . . . 83 23.11 {MODEM}{ERROR}{E} . . . . . . . . . . . . . . . . . . . . . 83 23.12 {MODEM}{VOICE}{V} . . . . . . . . . . . . . . . . . . . . . 83 23.13 {MODEM}{CONNECT}{N} . . . . . . . . . . . . . . . . . . . . 83 23.14 {MODEM}{NO CARRIER}{A} . . . . . . . . . . . . . . . . . . . 83 23.15 {MODEM}{NO DIALTONE}{L} . . . . . . . . . . . . . . . . . . 83 23.16 {MODEM}{DELAY}{D} . . . . . . . . . . . . . . . . . . . . . 84 23.17 {MODEM}{ATTEMPTS}{T} . . . . . . . . . . . . . . . . . . . . 84 23.18 {MODEM}{TIMEOUT}{U} . . . . . . . . . . . . . . . . . . . . 84 23.19 {MODEM}{PACING}{P} . . . . . . . . . . . . . . . . . . . . . 85 23.20 {MODEM}{IGNORE NO CARRIER}{G} . . . . . . . . . . . . . . . 85 23.21 {MODEM}{IGNORE CARRIER DETECT}{R} . . . . . . . . . . . . . 85 23.22 {MODEM}{HANGUP ON EXIT}{J} . . . . . . . . . . . . . . . . . 85 23.23 {MODEM}{DTR HANGUP}{Z} . . . . . . . . . . . . . . . . . . . 85 23.24 {MODEM}{FLUSH WITH A BREAK}{W} . . . . . . . . . . . . . . . 85 23.25 {MODEM}{DIALER AUTOBAUD}{B} . . . . . . . . . . . . . . . . 86 24 PORT REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 24.1 {PORT}{DEVICE NAME}{D} . . . . . . . . . . . . . . . . . . . 87 24.2 {PORT}{UNIT NUMBER}{U} . . . . . . . . . . . . . . . . . . . 87 24.3 {PORT}{BREAK LENGTH}{B} . . . . . . . . . . . . . . . . . . . 87 24.4 {PORT}{CTS/RTS}{T} . . . . . . . . . . . . . . . . . . . . . 87 24.5 {PORT}{PORT QUIET}{P} . . . . . . . . . . . . . . . . . . . . 87 24.6 {PORT}{IGNORE ODU}{I} . . . . . . . . . . . . . . . . . . . . 88 24.7 {PORT}{ODU NOTIFY}{F} . . . . . . . . . . . . . . . . . . . . 88 25 GENERAL REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . 89 25.1 {GENERAL}{CHAT HISTORY}{H} . . . . . . . . . . . . . . . . . 89 25.2 {GENERAL}{CHAT LINES}{T} . . . . . . . . . . . . . . . . . . 89 25.3 {GENERAL}{REVIEW BUFFER SIZE}{R} . . . . . . . . . . . . . . 89 25.4 {GENERAL}{REVIEW LINES}{W} . . . . . . . . . . . . . . . . . 89 25.5 {GENERAL}{XFER BUFFER SIZE}{F} . . . . . . . . . . . . . . . 89 25.6 {GENERAL}{GMT OFFSET}{G} . . . . . . . . . . . . . . . . . . 89 25.7 {GENERAL}{TASK PRIORITY}{P} . . . . . . . . . . . . . . . . . 90 25.8 {GENERAL}{QUOTE LENGTH}{U} . . . . . . . . . . . . . . . . . 90 25.9 {GENERAL}{QUOTE STRING}{Q} . . . . . . . . . . . . . . . . . 90 25.10 {GENERAL}{24 HOUR CLOCK}{2} . . . . . . . . . . . . . . . . 90 25.11 {GENERAL}{AUDIBLE BEEP}{A} . . . . . . . . . . . . . . . . . 90 25.12 {GENERAL}{LOGFILE ACTIVE}{L} . . . . . . . . . . . . . . . . 90 25.13 {GENERAL}{MAKE ICONS}{N} . . . . . . . . . . . . . . . . . . 91 25.14 {GENERAL}{SCREEN POPUP}{E} . . . . . . . . . . . . . . . . . 91 25.15 {GENERAL}{FILE SAVER}{V} . . . . . . . . . . . . . . . . . . 91 25.16 {GENERAL}{DISK SPACE CHECK}{D} . . . . . . . . . . . . . . . 91 25.17 {GENERAL}{SLOW DISK I/O}{K} . . . . . . . . . . . . . . . . 91 25.18 {GENERAL}{512 BYTE DISK I/O}{5} . . . . . . . . . . . . . . 91 25.19 {GENERAL}{CHIP RAM SAVER}{I} . . . . . . . . . . . . . . . . 92 25.20 {GENERAL}{MOUSE FUNCTIONS}{S} . . . . . . . . . . . . . . . 92 25.21 {GENERAL}{BORDER BLANKER}{B} . . . . . . . . . . . . . . . . 92 25.22 {GENERAL}{DATE FORMAT}{M} . . . . . . . . . . . . . . . . . 92 26 CONSOLE REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . . 93 26.1 {CONSOLE}{EMULATION}{U} . . . . . . . . . . . . . . . . . . . 93 26.2 {CONSOLE}{PALETTE}{P} . . . . . . . . . . . . . . . . . . . . 93 x 26.3 {CONSOLE}{SCREEN}{S} . . . . . . . . . . . . . . . . . . . . 93 26.4 {CONSOLE}{SCREEN}{S} . . . . . . . . . . . . . . . . . . . . 93 26.5 {CONSOLE}{INTERLACE (1)}{1} . . . . . . . . . . . . . . . . . 94 26.6 {CONSOLE}{ROWS}{R} . . . . . . . . . . . . . . . . . . . . . 94 26.7 {CONSOLE}{COLS}{L} . . . . . . . . . . . . . . . . . . . . . 94 26.8 {CONSOLE}{PRESCROLL (0)}{0} . . . . . . . . . . . . . . . . . 94 26.9 {CONSOLE}{STATUS LINE (2)}{2} . . . . . . . . . . . . . . . . 94 26.10 {CONSOLE}{TITLE BAR (3)}{3} . . . . . . . . . . . . . . . . 94 26.11 {CONSOLE}{TITLE STATUS (4)}{4} . . . . . . . . . . . . . . . 95 26.12 {CONSOLE}{PUBLIC SCREEN}{5} . . . . . . . . . . . . . . . . 95 26.13 {CONSOLE}{KEYMAP}{K} . . . . . . . . . . . . . . . . . . . . 95 26.14 {CONSOLE}{CR XLATE}{X} . . . . . . . . . . . . . . . . . . . 95 26.15 {CONSOLE}{LF XLATE}{T} . . . . . . . . . . . . . . . . . . . 95 26.16 {CONSOLE}{EOL OUT}{E} . . . . . . . . . . . . . . . . . . . 95 26.17 {CONSOLE}{GET DEFINITION...}{G} . . . . . . . . . . . . . . 95 26.18 {CONSOLE}{SAVE DEFINITION...}{V} . . . . . . . . . . . . . . 96 26.19 {CONSOLE}{SELECT NEW FONT...}{F} . . . . . . . . . . . . . . 96 26.20 {CONSOLE}{VT-XX OPTIONS...}{N} . . . . . . . . . . . . . . . 96 26.21 {CONSOLE}{STRIP HIGH BIT}{B} . . . . . . . . . . . . . . . . 96 26.22 {CONSOLE}{MOUSE PACING}{I} . . . . . . . . . . . . . . . . . 96 26.23 {CONSOLE}{DESTRUCTIVE BACKSPACE}{D} . . . . . . . . . . . . 96 26.24 {CONSOLE}{SMOOTH SCROLL}{M} . . . . . . . . . . . . . . . . 96 26.25 {CONSOLE}{AUTOWRAP MODE}{W} . . . . . . . . . . . . . . . . 97 26.26 {CONSOLE}{CHAT MODE}{A} . . . . . . . . . . . . . . . . . . 97 26.27 {CONSOLE}{IBM DOORWAY MODE}{Y} . . . . . . . . . . . . . . . 97 26.28 {CONSOLE}{CURSOR POS.}{6} . . . . . . . . . . . . . . . . . 97 26.29 {CONSOLE}{CURSOR BLINK}{7} . . . . . . . . . . . . . . . . . 97 26.30 {CONSOLE}{FAST CURSOR}{8} . . . . . . . . . . . . . . . . . 97 26.31 {CONSOLE}{RAW CAPTURE}{9} . . . . . . . . . . . . . . . . . 98 27 VTOPTIONS REQUESTER . . . . . . . . . . . . . . . . . . . . . . . . 99 27.1 {VTOPTIONS}{DISPLAY CTRLS}{Y} . . . . . . . . . . . . . . . . 99 27.2 {VTOPTIONS}{7 BIT MODE}{7} . . . . . . . . . . . . . . . . . 99 27.3 {VTOPTIONS}{132 COLUMNS}{1} . . . . . . . . . . . . . . . . . 99 27.4 {VTOPTIONS}{LIGHT BACKGROUND}{L} . . . . . . . . . . . . . . 99 27.5 {VTOPTIONS}{NEWLINE MODE}{N} . . . . . . . . . . . . . . . . 99 27.6 {VTOPTIONS}{KEYPAD MODE}{K} . . . . . . . . . . . . . . . . . 100 27.7 {VTOPTIONS}{CURSOR MODE}{U} . . . . . . . . . . . . . . . . . 100 27.8 {VTOPTIONS}{SWAP BS/DEL}{S} . . . . . . . . . . . . . . . . . 100 27.9 {VTOPTIONS}{AUTO KEY REPEAT}{T} . . . . . . . . . . . . . . . 100 27.10 {VTOPTIONS}{CHARACTER SET}{H} . . . . . . . . . . . . . . . 100 27.11 {VTOPTIONS}{DA RESPONSE}{D} . . . . . . . . . . . . . . . . 100 27.12 {VTOPTIONS}{ANSWERBACK MSG}{A} . . . . . . . . . . . . . . . 100 28 TERMINUS SCRIPT LANGUAGE . . . . . . . . . . . . . . . . . . . . . . 101 28.1 SCRIPTS OVERVIEW . . . . . . . . . . . . . . . . . . . . . . 101 28.2 RUNNING SCRIPTS . . . . . . . . . . . . . . . . . . . . . . . 102 28.3 OPTIONS AND COMMANDS . . . . . . . . . . . . . . . . . . . . 102 28.4 SCRIPT FILE TYPES . . . . . . . . . . . . . . . . . . . . . . 102 28.4.1 .def - Defaults file . . . . . . . . . . . . . . . . . 103 28.4.2 .phone - Phonebook file . . . . . . . . . . . . . . . 103 28.4.3 .con - Console definition file . . . . . . . . . . . . 103 28.4.4 .scp - Script file . . . . . . . . . . . . . . . . . . 103 28.4.5 .trx - ARexx macro file . . . . . . . . . . . . . . . 104 28.5 COMMAND SCOPE . . . . . . . . . . . . . . . . . . . . . . . . 104 28.6 OPTION CLASSES . . . . . . . . . . . . . . . . . . . . . . . 104 28.6.1 INTEGER . . . . . . . . . . . . . . . . . . . . . . . 105 xi 28.6.2 STRING . . . . . . . . . . . . . . . . . . . . . . . . 105 28.6.3 FLAG . . . . . . . . . . . . . . . . . . . . . . . . . 105 28.6.4 MUX . . . . . . . . . . . . . . . . . . . . . . . . . 105 28.6.5 CMD . . . . . . . . . . . . . . . . . . . . . . . . . 105 28.7 SCRIPT STRUCTURE . . . . . . . . . . . . . . . . . . . . . . 105 28.8 KEYWORDS . . . . . . . . . . . . . . . . . . . . . . . . . . 106 28.9 COMMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . 106 28.10 LABELS . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 28.11 INTEGER VARIABLES . . . . . . . . . . . . . . . . . . . . . 107 28.12 STRING VARIABLES . . . . . . . . . . . . . . . . . . . . . . 107 28.13 GLOBAL VARIABLES . . . . . . . . . . . . . . . . . . . . . . 107 28.14 READ-ONLY SYSTEM VARIABLES . . . . . . . . . . . . . . . . . 108 28.15 READ/WRITE SYSTEM VARIABLES . . . . . . . . . . . . . . . . 109 28.16 OPERATOR PRECEDENCE . . . . . . . . . . . . . . . . . . . . 110 28.17 SYNTAX . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 28.18 CHARACTER ESCAPES . . . . . . . . . . . . . . . . . . . . . 111 28.19 SCRIPT FILE I/O . . . . . . . . . . . . . . . . . . . . . . 112 28.20 SCRIPT EXECUTION DETAILS . . . . . . . . . . . . . . . . . . 113 28.21 INPUT COMMANDS . . . . . . . . . . . . . . . . . . . . . . . 113 28.22 STRING MATCHING . . . . . . . . . . . . . . . . . . . . . . 114 28.23 BULLET-PROOF AUTOMATION . . . . . . . . . . . . . . . . . . 115 28.24 AREXX INTERFACE . . . . . . . . . . . . . . . . . . . . . . 117 29 FUNCTION AND STATEMENT DESCRIPTIONS . . . . . . . . . . . . . . . . 118 ABS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 ALARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 ASC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 ASEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 ASK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 BEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 CALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 CAPTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 CHAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CHDIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CHR$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CLRLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CLRRECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 CLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 CONTINUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 CURPALETTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 DOWNLOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 EXECUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 NEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 GETINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 GETLINE$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 GETSTRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 GOSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 HANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 xii ENDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 INSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 INVLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 KILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 LDEFAULTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 LDEFFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 LEFT$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 LEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 LOWER$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 LPHONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 MID$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 ONCARRIER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 ONMOUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 ONTIMEOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 PAUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 PRINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 PRINTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 REDIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 RELMOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 REMOTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 RESUME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 REXX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 RIGHT$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 SBREAK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 SCREENTOFRONT . . . . . . . . . . . . . . . . . . . . . . . . . . 133 SDEFAULTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 SDEFFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 SEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 SPACE$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 SPASSWORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 SPHONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 STR$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 TRIM$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 UNSELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 UPLOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 UPPER$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 VAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 WATCHDOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 WHEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 WEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 WRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 XLATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 30 OPTION VARIABLE DESCRIPTIONS . . . . . . . . . . . . . . . . . . . . 141 xiii AFKEY1-10$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 ANSWERBACK$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 AUDIOBEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 AUTOBAUD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 AUTOCHOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 AUTODL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 AUTOREPEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 AUTOWRAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 BAUD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 BDRBLANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 BINARYXFER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 BIT7MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 BLINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 BREAKLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 BSDESTRUCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 CAPTUREPATH$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 CFKEY1-10$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 CHARDELAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 CHARPACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 CHATHISTORY . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 CHATLINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 CHATMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 CHIPMIZER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 COLMN132 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 CRC32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 CRXLATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 CTSRTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 CURSORMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 CURSORPOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 DARESPONSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 DATALEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 DATEFMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 DEFFILE$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 DIALATTEMPTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 DIALPACING . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 DIALTIMEOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 DISKSPACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 DISPCTRLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 DISPMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 DLCHALLENGE . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 DOORWAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 DOWNLOADPATH$ . . . . . . . . . . . . . . . . . . . . . . . . . . 147 DTRHANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 DUPLEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 EMULATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 EOLOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 ESCCTRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 EXITHANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 EXPANDBLANKS . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 FASTCURSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 FILESAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 FKEY1-10$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 FLUSHONBREAK . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 FONT$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 GMTOFFSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 HR24MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 xiv IGNOREDCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 IGNORENOCARRIER . . . . . . . . . . . . . . . . . . . . . . . . . 149 IGNOREODU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 KEYMAP$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 KEYPADMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 LFXLATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 LIGHTSCREEN . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 LINEDELAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 LOGFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 MAKEICONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 MASTERPW$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 MODEMHANGUPCMD$ . . . . . . . . . . . . . . . . . . . . . . . . . 151 MODEMINITCMD$ . . . . . . . . . . . . . . . . . . . . . . . . . . 151 MODEMPOSTFIX$ . . . . . . . . . . . . . . . . . . . . . . . . . . 151 MODEMPREFIX1-4$ . . . . . . . . . . . . . . . . . . . . . . . . . 151 MONITOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 MOUSEFUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 MOUSEPACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 NLMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 NRCTYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 ODUNOTIFY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 PALETTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 PARITY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 PATHEXTEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 PECAPTURE$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 PECENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PECOMMENT$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PEDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PEDEFFILE$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PENAME$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PENUMBER1-4$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PEPASSWORD$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PEPREFIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 PEPWLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PERESET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PESCRIPT$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 POPUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PORTQUIET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PREACKDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PRESCROLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PRINTERPATH$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PROMPTCHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 PUBLICSCREEN . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 QUOTELEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 QUOTESTRING . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 RAWCAPTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 REDIALDELAY . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 RELAXEDTIMING . . . . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSEBUSY$ . . . . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSECONNECT$ . . . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSEERROR$ . . . . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSENOCARRIER$ . . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSENODIALTONE$ . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSEOK$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSERING$ . . . . . . . . . . . . . . . . . . . . . . . . . . 156 RESPONSEVOICE$ . . . . . . . . . . . . . . . . . . . . . . . . . . 156 xv REVIEWBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 REVIEWLINES . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 REXXPATH$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SAVEABORTED . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SCRIPTPATH$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SERDEV$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETCOLOR2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETCOLOR4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETCOLOR8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETCOLOR16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETCUSTOM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETCUSTOM4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETCUSTOM8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETMONO2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETMONO4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETMONO8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SETWORKBENCH . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 SFKEY1-10$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 SKIPNOTLOCAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 SLOWDISK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 SMALLBLOCKS . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 SMOOTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 SORTMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 STATUSLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 STOPBITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 STRIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 SWAPBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 TASKPRI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 TERMINUSPATH$ . . . . . . . . . . . . . . . . . . . . . . . . . . 160 TITLEBAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 TITLESTATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 UPLOADPATH$ . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 WINDOWSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 WINPOSX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 XFERBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 XONXOFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 XPRINIT$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 XPRNAME$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 ZMODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 ZRESUME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 APPENDIX A - ASCII CODE TABLE . . . . . . . . . . . . . . . . . . . . . 163 APPENDIX B - EMULATIONS . . . . . . . . . . . . . . . . . . . . . . . . 165 C0 (ASCII) CONTROL CODES . . . . . . . . . . . . . . . . . . . . . 165 C1 CONTROL CODES . . . . . . . . . . . . . . . . . . . . . . . . . 165 ANSI SET/RESET MODES . . . . . . . . . . . . . . . . . . . . . . . 166 DEC SET/RESET MODES . . . . . . . . . . . . . . . . . . . . . . . 167 CURSOR CONTROL SEQUENCES . . . . . . . . . . . . . . . . . . . . . 167 SET GRAPHICS RENDITION . . . . . . . . . . . . . . . . . . . . . . 168 EDITING SEQUENCES . . . . . . . . . . . . . . . . . . . . . . . . 168 ERASING SEQUENCES . . . . . . . . . . . . . . . . . . . . . . . . 168 REPORT SEQUENCES . . . . . . . . . . . . . . . . . . . . . . . . . 169 TAB STOP SEQUENCES . . . . . . . . . . . . . . . . . . . . . . . . 169 TERMINAL RESET SEQUENCES . . . . . . . . . . . . . . . . . . . . . 169 INVOKING CHARACTER SETS . . . . . . . . . . . . . . . . . . . . . 170 SET CHARACTER SET . . . . . . . . . . . . . . . . . . . . . . . . 170 xvi KEYPAD MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 SCROLLING MARGINS . . . . . . . . . . . . . . . . . . . . . . . . 171 PRINTING SEQUENCES . . . . . . . . . . . . . . . . . . . . . . . . 171 LINE ATTRIBUTES . . . . . . . . . . . . . . . . . . . . . . . . . 171 ALIGNMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 SELECT C1 CONTROLS . . . . . . . . . . . . . . . . . . . . . . . . 171 COMPATIBILITY MODE . . . . . . . . . . . . . . . . . . . . . . . . 171 CHARACTER ATTRIBUTES . . . . . . . . . . . . . . . . . . . . . . . 171 USER DEFINED KEYS . . . . . . . . . . . . . . . . . . . . . . . . 172 VT52 SEQUENCES . . . . . . . . . . . . . . . . . . . . . . . . . . 172 UNRECOGNIZED SEQUENCES . . . . . . . . . . . . . . . . . . . . . . 172 APPENDIX C - OPERATIONAL MESSAGES . . . . . . . . . . . . . . . . . . . 174 ACTIVATE SERIAL PORT? . . . . . . . . . . . . . . . . . . . . . . 174 ANSI COLOR INDEX ERROR . . . . . . . . . . . . . . . . . . . . . . 174 ATTEMPT ZMODEM RESUME? . . . . . . . . . . . . . . . . . . . . . . 174 CANCEL BUFFERED PRINTER DATA? . . . . . . . . . . . . . . . . . . 174 CANNOT USE PROPORTIONAL FONT: . . . . . . . . . . . . . . . . . . 174 CARRIER PRESENT . . . . . . . . . . . . . . . . . . . . . . . . . 174 CARRIER PRESENT, EXIT? . . . . . . . . . . . . . . . . . . . . . . 174 CLOSE FILE REQUESTER . . . . . . . . . . . . . . . . . . . . . . . 175 CLOSE VISITOR WINDOWS . . . . . . . . . . . . . . . . . . . . . . 175 CREATE NON-EXISTENT PATH? . . . . . . . . . . . . . . . . . . . . 175 CTS HANDSHAKE INACTIVE . . . . . . . . . . . . . . . . . . . . . . 175 DEVICE/UNIT IN USE BY: . . . . . . . . . . . . . . . . . . . . . . 175 ERROR WHILE WRITING FILE: . . . . . . . . . . . . . . . . . . . . 175 FILE IS ALREADY IN USE . . . . . . . . . . . . . . . . . . . . . . 175 FILENAME BUFFER OVERFLOW . . . . . . . . . . . . . . . . . . . . . 175 INSUFFICIENT DISK SPACE . . . . . . . . . . . . . . . . . . . . . 176 INSUFFICIENT MEMORY . . . . . . . . . . . . . . . . . . . . . . . 176 INVALID DISPLAY ID, USING HIRES . . . . . . . . . . . . . . . . . 176 MASTER PASSWORD NOT DEFINED . . . . . . . . . . . . . . . . . . . 176 NEED A SCRIPT FILENAME . . . . . . . . . . . . . . . . . . . . . . 176 NO CARRIER PRESENT . . . . . . . . . . . . . . . . . . . . . . . . 176 NO ENTRIES SELECTED FOR DIALING . . . . . . . . . . . . . . . . . 176 NO MATCH FOUND . . . . . . . . . . . . . . . . . . . . . . . . . . 176 OVERWRITE EXISTING FILE? . . . . . . . . . . . . . . . . . . . . . 177 OWNDEVUNIT ERROR: . . . . . . . . . . . . . . . . . . . . . . . . 177 REVIEW BUFFER EMPTY . . . . . . . . . . . . . . . . . . . . . . . 177 SELECT AN XPR LIBRARY FIRST . . . . . . . . . . . . . . . . . . . 177 SYSTEM DEVICE ERROR: . . . . . . . . . . . . . . . . . . . . . . . 177 UNABLE TO ACCESS PRINTER . . . . . . . . . . . . . . . . . . . . . 177 UNABLE TO OPEN FILE: . . . . . . . . . . . . . . . . . . . . . . . 177 UNABLE TO OPEN FONT: . . . . . . . . . . . . . . . . . . . . . . . 177 UNABLE TO OPEN LIBRARY: . . . . . . . . . . . . . . . . . . . . . 177 UNABLE TO QUOTE STRING: . . . . . . . . . . . . . . . . . . . . . 177 APPENDIX D - SCRIPT ERROR MESSAGES . . . . . . . . . . . . . . . . . . 178 CANNOT ALTER READ ONLY VARIABLE . . . . . . . . . . . . . . . . . 178 CHDIR FAILED . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 COULD NOT OPEN FILE . . . . . . . . . . . . . . . . . . . . . . . 178 DIVISION BY ZERO . . . . . . . . . . . . . . . . . . . . . . . . . 178 DUPLICATE LABEL FOUND . . . . . . . . . . . . . . . . . . . . . . 178 ELSE WITHOUT IF . . . . . . . . . . . . . . . . . . . . . . . . . 178 ENDIF MISSING . . . . . . . . . . . . . . . . . . . . . . . . . . 178 ENDIF WITHOUT IF . . . . . . . . . . . . . . . . . . . . . . . . . 178 EXPRESSION MISSING . . . . . . . . . . . . . . . . . . . . . . . . 179 xvii FILE CURRENTLY OPEN . . . . . . . . . . . . . . . . . . . . . . . 179 FILE IS NOT OPENED FOR INPUT . . . . . . . . . . . . . . . . . . . 179 FILE IS NOT OPENED FOR OUTPUT . . . . . . . . . . . . . . . . . . 179 FILE NOT FOUND . . . . . . . . . . . . . . . . . . . . . . . . . . 179 FILE NOT OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . 179 INCORRECT VARIABLE USAGE . . . . . . . . . . . . . . . . . . . . . 179 INVALID COMMAND SCOPE . . . . . . . . . . . . . . . . . . . . . . 179 INVALID LABEL USED . . . . . . . . . . . . . . . . . . . . . . . . 179 INVALID RESUME ATTEMPT . . . . . . . . . . . . . . . . . . . . . . 179 LABEL NOT FOUND . . . . . . . . . . . . . . . . . . . . . . . . . 179 MISSING QUOTE . . . . . . . . . . . . . . . . . . . . . . . . . . 180 NEXT WITHOUT FOR . . . . . . . . . . . . . . . . . . . . . . . . . 180 NO CARRIER PRESENT . . . . . . . . . . . . . . . . . . . . . . . . 180 NOT A VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . 180 OUT OF MEMORY . . . . . . . . . . . . . . . . . . . . . . . . . . 180 RETURN WITHOUT GOSUB . . . . . . . . . . . . . . . . . . . . . . . 180 SERIAL DEVICE QUIET . . . . . . . . . . . . . . . . . . . . . . . 180 STEP VALUE IS ZERO . . . . . . . . . . . . . . . . . . . . . . . . 180 STRING TOO LONG . . . . . . . . . . . . . . . . . . . . . . . . . 180 SYNTAX ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 UNABLE TO START REMOTE CLI . . . . . . . . . . . . . . . . . . . . 181 UNBALANCED PARENTHESES . . . . . . . . . . . . . . . . . . . . . . 181 UNEXPECTED END OF FILE REACHED . . . . . . . . . . . . . . . . . . 181 UNTIL WITHOUT REPEAT . . . . . . . . . . . . . . . . . . . . . . . 181 VALUE OUT OF RANGE . . . . . . . . . . . . . . . . . . . . . . . . 181 WEND WITHOUT WHILE . . . . . . . . . . . . . . . . . . . . . . . . 181 APPENDIX E - QUESTIONS & ANSWERS . . . . . . . . . . . . . . . . . . . 182 31 SUPPORT INFORMATION . . . . . . . . . . . . . . . . . . . . . . . . 188 31.1 DYNALOGIC PRODUCT SUPPORT BBS . . . . . . . . . . . . . . . . 188 31.2 GENIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 31.3 COMPUSERVE . . . . . . . . . . . . . . . . . . . . . . . . . 188 31.4 BIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 31.5 USENET/INTERNET . . . . . . . . . . . . . . . . . . . . . . . 188 31.6 US MAIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 31.7 IF YOU HAVE PROBLEMS . . . . . . . . . . . . . . . . . . . . 189 xviii 1 INTRODUCTION Welcome to Terminus 2.0, a highly capable and flexible, if not seasoned telecommunications tool for the Amiga personal computer system. Terminus is a completely rewritten replacement for JR-Comm 1.02a. It is not an update. Initially, JR-Comm was going to be updated as scheduled to include XPR and ARexx support. But, quite frankly, JR-Comm's major limitation was that it lacked the proper design to add new features easily. With the release of AmigaDOS 2.04 it became apparent that a complete rewrite was the only solution. As a result, Terminus is essentially a second generation product, hence the 2.0 version number. Terminus also conforms, where possible, to the recommendations outlined in the "Commodore Amiga Style Guide" for Release 2 of the Amiga operating system while still retaining compatibility with the 1.3 release. However, all future releases of Terminus will be compatible with the 2.0 (or later) operating system release only. 1.1 FEATURES OVERVIEW The following are the major features present in Terminus 2.0. - Reentrant program design for multiple sessions using one copy of program code in ram. - All internal functions multitask. - Can be iconified. - The entire program is keyboard navigable. - Comprehensive script language implemented as a small BASIC interpreter. - Automated script record feature to create login scripts. - ARexx and XPR support. - Display system uses custom scroll routines for fast scroll rates and interleaved bitmaps to eliminate flicker during scrolling without the need for a 68020 or higher cpu. - TTY, AMIGA, IBM COLOR/MONO, VT52, VT102 AND VT220 terminal emulations. All emulations are as complete and as accurate as possible. - Console definition files to easily change Terminus between different terminal configurations. - XMODEM, XMODEM-CRC, XMODEM-1k, YMODEM, YMODEM-1k, YMODEM-g and ZMODEM file transfer protocols included internally for fast throughput rates. XPR support for other less used protocols. 1 - Windowed review buffer that uses the Boyer-Moore search algorithm for fast location of text within the buffer space. Can also load files directly into the buffer with dynamic buffer resizing as required. - Clipboard support for snipping text from the review buffer or main terminal display. Options to send either raw or quoted text from the clipboard out the serial port. - Multiline chat area with configurable height and history buffer. - Superb XON/XOFF flow control with status line indicator and immediate text display stop/start via keyboard control. - Support for DMA and programmed I/O hard disk controllers that have problems with downloads using high speed modems. - ChipMiser option for systems with limited chip ram space. - Dynamically buffered printer support so that the terminal is never I/O bound due to slow printer output. - Hexadecimal display mode with output that is compatible with both the review buffer and capture files. - Integral remote CLI/Shell feature. - Phonebook entry support for multiple number systems with up to 4 numbers per entry. - All defaults, phonebook, console definition and script files are ASCII compatible for editing with your favorite text editor. - Full support for OwnDevUnit.library is also included. 1.2 MISSING FEATURES There were some changes that resulted in the removal of four major items previously available in JR-Comm. They were the internal file requester, CIS B+ and WXMODEM file transfer protocols and the Skypix terminal emulation. The file requester was removed in favor of using the file and font requesters that the asl.library and req.library provide. Although the ability to select files across multiple devices/volumes/directories is not currently supported by these two requesters, there is a new menu item in Terminus that allows you to add file selections to the selected list. One of these file requesters must be present in the LIBS: directory of your system in order to use Terminus. An external CIS B+ XPR module is provided with the Terminus distribution disk. The internal implementation of this protocol was deleted since it can only be used with the Compuserve Information System. 2 WXMODEM was removed because it was rarely, if ever, used outside the now defunct PeopleLink service. The Skypix emulation no longer exists due to the scheduled release of a new version of the Skyline BBS that will provide a new graphics protocol. It was not known during the redesign of the display system if the original protocol would be supported so the irrevocable decision to remove it was made. A future version of Terminus is slated to provide a graphics protocol that will have its capabilities publically documented for use by any BBS system operator. 1.3 DOCUMENT STYLE AND NOTATION This document uses several different styles of text formatting to help you differentiate certain items from one another. They are: "text" - Text that is delimited by double quote characters indicates a literal string of data, the context of which is determined by the paragraph it appears in. CAPS - Capitals by themselves denote a script command, keyword, state or argument for an option and/or script command. - Capitals surrounded by angle brackets indicate a key on the computer keyboard. Numeric keypad keys are further defined with the letter 'N' preceding of the keycap label, such as or . Cursor keys are described using direction the arrow points to, such as or . If a key requires a modifier it will immediately precede the key, such as or which refer to holding down the right Amiga key prior to pressing the key and holding down the left key prior to pressing the key. [CAPS] - Capitals surrounded by square brackets indicate a menu item, they are listed as a pair or triplet of terms to indicate the menu, item and, optionally, the menu hotkey (activated via the modifier key) that activates the item. Case is significant for the hotkeys. For example, [PHONEBOOK][REDIAL][r] would mean the item labeled "Redial" that is located in the menu labeled "Phonebook". The sequence (lowercase 'r') is used to activate the redial function. {CAPS} - Capitals surrounded by curly braces indicate a gadget label, they are listed as a triplet of terms to indicate the requester the gadget is located in and the character used to activate it, case is not sensitive for gadget hotkeys. The sequence {CONSOLE}{PALETTE}{P} would indicate the gadget labeled "Palette" that is located in the console requester and is activated via the

key. 3 1.4 GADGETS Gadgets are further defined with a string of text that defines the type of gadget, it's default value and value range or size as appropriate. If no definition follows the gadget label it means that the gadget is an action gadget that performs an operation when selected. The other types of gadgets, their descriptions and how to use them are as follows: 1.4.1 CYCLE GADGET {C}: (items...) A cycle gadget is rendered as a rectangle with an image of a curled arrow that points to itself along the lefthand side of the gadget rectangle. Selecting this gadget will "cycle" you through a well defined set of available options for the parameter that this gadget controls. The underlined character in the gadget label indicates which key to press in order to change the current setting via the keyboard. If is held down in addition to the mouse or key, the gadget will cycle through the options in the opposite direction when the mouse button or the key is pressed. 1.4.2 INTEGER GADGET {I}: (value range) (optional value meaning) An integer gadget is sized a bit smaller than a cycle gadget and is displayed as a numeric value with arrow images to the right and left of the value. Selecting this gadget will increment or decrement the value depending on which side of the gadget you click on. The left arrow will decrement while the right arrow will increment. The relative distance of the mouse pointer from the center of the gadget determines the rate which the value will change and crossing the center will change the direction. Moving the mouse pointer off of the gadget while the left mouse button is held down will cause the gadget to go into a high speed count mode, return the mouse pointer to the gadget rectangle to slow it down once again. Each integer gadget has upper and lower boundaries and will not increment or decrement past these values. As with the cycle gadget, it's label will have an underlined character that can be used to change its value however, doing so will open an entry requester with the current value and a label that indicates the allowed upper and lower boundaries. Select OK to update the value for the parameter being changed. 4 1.4.3 STRING GADGET {S}: "optional default assignment" A string gadget is a bordered rectangle that is used for entering text. The label for a string gadget will have an underlined character that activates the string gadget. Activation is denoted by the presence of a cursor within the gadget rectangle. Normal Amiga keyboard shortcuts are available for use within the gadget, they are: - Deletes the current contents of the gadget. NOTE! When using Terminus with the 1.3 release of AmigaDOS the [MISC][CLEAR SCREEN][x] menu item ovverrides this keyboard sequence. - Restores the original contents that the gadget contained when the requester was first opened. - Moves cursor to the beginning of the gadget. - Moves cursor to the end of the current text item. In addition, there are a few other sequences that are available to navigate between several string gadgets within the requester. Some sequences are only available when using Terminus under the 2.x release of AmigaDOS. - Pressing this key will signal Terminus to activate the next string gadget in the requester. - This sequence will cause Terminus to activate the previous string gadget in the requester. - Halts text input by not activating any other string gadgets. - (2.x only) Activates the first gadget in the requester or the next one if there is already a gadget active. - (2.x only) Activates the last gadget in the requester or the previous one if there is already a gadget active. 5 1.4.4 CHECK GADGET {F}: TRUE/FALSE A check gadget is rendered as a small bordered square that has a checkmark image within when the gadget is active. It represents a boolean option in Terminus that has only one of two states, OFF or ON, TRUE or FALSE, depending on which way you choose to look at it. The presence of a checkmark indicates the ON or TRUE condition for the option that it is tied to. Check gadgets also have an underlined character within its title to indicate the key that will toggle the state of the checkmark. 6 2 SYSTEM REQUIREMENTS Terminus requires an Amiga equipped with at least 1Meg of ram. It is compatible with all versions of AmigaDOS from 1.3 through the present release, which as of this writing is 2.1. The program was also written to be fully reentrant so that memory is not wasted by loading multiple copies of the program in order to use it with more than one serial port simultaneously. Terminus is designed to be quite flexible with respect to the modem and serial device that you wish to operate it with. You are, however, strongly urged to use a modem, serial device and cable (if necessary) that enables the DCD (carrier detect) signal to function correctly. Several features will be unusable nor will some script commands work reliably if DCD is not functional. Terminus contains an intelligent dialing system that can be fully utilized if the modem you're using is capable of detecting busy signals and returns extended connection result responses. Accurate connection time logging is available if the modem is able to control the carrier detect line and hardware controlled modem disconnections can be utilized if the modem is able to respond to the state of the DTR line. Terminus comes configured to operate with the Hayes command and return code set, but it is flexible enough to allow most any modem to be used after reconfiguring to send the appropriate commands and look for the proper response codes. If the DCD or DTR lines are not operative you will need to adjust for this as well. Terminus also requires a file requester library that is functionally compatible with the asl.library or req.library file requesters. The asl requester is included with the 2.x release of AmigaDOS while the req.library requester is included with the Terminus distribution disk. 2.1 INSTALLATION An installation program is provided with the distribution archive that installs Terminus on a floppy disk or hard disk for you. In the case of floppy disk installation you will need a copy of your Workbench disk prior to installing Terminus. Once the program has been started, please follow the directions and answer any questions the program asks you. Although the installation program should suit any needs that you may have, you might still like to proceed manually to install Terminus to insure that you have total control over the installation process. If so, the following should be done: - Create a directory that will be used to locate all Terminus definition and phonebook files. This directory should also receive the logical assignment TERMINUS: somewhere in your Startup-Sequence or user-startup scripts so that Terminus can be run from any directory within your system. 7 - Create a subdirectory labeled "Scripts" under the TERMINUS: directory, Terminus will save recorded scripts and load scripts to be executed from this directory. - The Terminus executable should be copied to TERMINUS: and the TSL executable should be copied to a directory that is part of your path assignment so that AmigaDOS can locate the file from any directory. - All font files included in the Terminus distribution archive should be copied to your FONTS: directory. - All library files on the distribution disk should be copied to your LIBS: directory. - All script files (those that have a ".scp" postfix) should be copied to TERMINUS:Scripts. - All remaining files from the distribution archive should be copied to TERMINUS:. 2.2 HIGH-SPEED MODEM CONFIGURATION SCRIPT Terminus provides an optional modem configuration script should you need assistance in setting up a high speed modem. These modems usually have a complex and varied set of commands that can get confusing when trying to determine which commands to use and what to set them to. The script, named "ModemConfig.scp", which should be located in the TERMINUS:Scripts subdirectory if you installed Terminus per the installation instructions, when executed will guide you through the process of setting up the modem correctly. It will ask you quite a few questions, some of them may sound a bit unfamiliar to you as well, so keep your user manual for your modem handy to refer to it when needed. If you wish to exit out of the modem configuration script at any time, for whatever reason, select the menu item [SCRIPTS][STOP][t]. 2.3 HIGH-SPEED MODEM USE Although Terminus was designed to execute as efficiently as possible so that maximum benefit can be obtained when used with high speed modems, certain configurations of Amigas can experience errors trying to receive data when the internal serial port is operated at or above 9600 baud. This section attempts to point out the areas that can lead to this problem and the steps you should take to eliminate them. First and foremost, fast ram has to be present in the system. The reason for this is simple, the cpu executes program code faster when it is able to stay out of the chip ram space. Faster execution is necessary in order for the cpu to respond to serial input interrupts quick enough to prevent data overruns. Please be aware of the 512k 8 memory expansion at hexadecimal address $C00000. While this memory is listed as fast ram in the free memory pool via the AmigaDOS command "Avail", it is actually synchronized to the chip ram bus. As a result, the cpu is subject to the same lockouts that occur when it accesses the chip ram bus directly. Another major factor is the version of the operating system itself. All versions prior to the 2.0 release of AmigaDOS have sufficient system execution overhead to cause the internal serial port device driver not to be able to respond to incoming data interrupts in a timely manner which results in data loss. This problem is further aggravated when there are several hard disk partitions and/or floppy drives mounted as well. This is due to AmigaDOS checking each one every second for a disk change (yes, including the hard disk partitions). When using Terminus on an unaccelerated Amiga, you should not use a 16 color screen. The registers for the internal serial port are located on the chip bus and a 16 color screen requires all available chip DMA to generate the display, this prevents the cpu from accessing the chip bus as quickly as is needed to fetch a waiting byte before being overwritten by the next incoming byte. In addition, the scroll operations for a 16 color screen are quite slow which adds to the problem since data throughput is severely restricted. The type of hard disk controller and driver present on the system can also contribute to data loss. Certain controllers operate in such a way as to cause data loss while transferring data from memory to disk and vice versa. Terminus provides two options that should be able to correct error loss caused by your hard disk system. The first option is only of use if your controller is a DMA device and if it is writing any size block given to it in one contiguous chunk. This option will break up the single blocks into a series of 512 byte blocks so that the cpu is not locked out from the bus for too long. Users of certain GVP controllers might already be aware of a patch that breaks up all disk writes in this manner in order to accomplish high speed modem telecommunications. While this patch definitely helps, it also restricts the capabilities of the controller on a system-wide basis, Terminus includes this option so that you can carry out your other computing activities without degrading hard disk performance when serial I/O is not in progress. The second option is primarily for controllers that use programmed I/O. This option requires flow control in order to work and it slows down throughput as well, so only use this option on a DMA controller if the previous one didn't help. Both options are located in the general settings requester and are described in detail in that section below. If none of these recommendations help you to eliminate data loss please contact the support BBS for additional help. Please be prepared to give a detailed description of your system configuration 9 and any other pieces of info that might help to resolve your problems in a timely manner. 2.4 3RD PARTY SERIAL DRIVERS Please be aware that some serial drivers are not written correctly for use with Terminus without using the OwnDevUnit.library or the NOQUICK script variable. The dnet.device is one known example that requires the use of the NOQUICK option in order to operate correctly. This may sound confusing, but Terminus uses asynchronous serial I/O to prevent a deadlock from occuring if two or more applications attempt to access the same serial port simultaneously. By using OwnDevUnit.library to arbitrate ownership of a given port Terminus can use synchronous serial I/O without fear of a deadlock (so long as all applications are OwnDevUnit-aware). If you are experiencing data loss no matter what baud rate is being used then copy the OwnDevUnit.library to your LIBS: directory and see if the problem goes away. If it does then the vendor who supplied your serial driver needs to update it to handle the IOF_QUICK bit correctly for BeginIO() as outlined in the Commodore RKM for the serial.device. 2.5 OWNDEVUNIT.LIBRARY The OwnDevUnit.library arbitrates access to a specific device and associated unit so that only one program can use it at a given time. It also allows for a method of the current "owner" of a device to release it when another program requests access for it. Terminus provides full OwnDevUnit support by responding to a request to release the device when asked, but the request will not be honored if carrier detect is present. It will then reacquire the device once the program that requested it has finished using it. To use Terminus with OwnDevUnit.library all you are required to do is have the library present in your LIBS: directory when Terminus is first run. You may temporarily, or permanently disable OwnDevUnit support for a specific session by using the command line option (or icon tooltype) IGNOREODU or by setting {PORT}{IGNORE ODU}{I}. Another option for OwnDevUnit use is {PORT}{ODU NOTIFY}{N}. Activate this option if you want Terminus to respond to requests for the port from other applications when carrier is not present. They will be ignored, regardless of the state of carrier detect otherwise. 2.6 DEBUGGING SUPPORT Although Terminus has been as thoroughly tested and has undergone a year long beta period, there is still the possibility that an oversight has left an unwanted bug or two in the program. Terminus 10 provides a special debug mode that you can activate when starting the program in order to collect some data for analysis by Dynalogic so that any problems can be fixed in a timely fashion. You should normally not use the debug mode unless you've encountered a repeatable problem. If an error does occur you should start from a recently rebooted system and activate the debug mode prior to trying to repeat the problem. If a guru occurs Terminus will immediately attempt to write a file named "SnapShot.TB" to DF0:. It will not try to write anywhere else in order to prevent corruption of a hard disk partition. It will also post a requester before writing so that you can insert a disk in DF0:. After writing the snapshot file a second file named "debug.out" will be written to the same disk. After both files have been written the Terminus session that caught the error will be halted so that you can save any data that's needed before reseting the system. Be aware that Terminus may not catch a guru, this usually happens if the error that occurred left the system in such a badly corrupted state that it has no choice but to go straight to the system guru exception handler instead of the one that Terminus has provided. You may also encounter a problem that does not cause a guru but is repeatable just the same. In this case use the additional menu item [PROJECT][WRITE DEBUG] to write the "debug.out" file to DF0:. If you are running Enforcer or some other error trapping utility that provides information it would be greatly appreciated if this info can be sent back to Dynalogic along with some details on how to reproduce the problem. This is a point that cannot be stressed enough, you need to be able to reproduce the problem, otherwise it becomes very much a hit-or-miss situation of finding the problem. It may help to remove any non-Commodore utilities that may be running in the background in order to help isolate the real cause of a problem. There have been cases of some that cause interference with Terminus, and other applications as well. It's not intended to be an excuse for a problem occurring, but it should be known that the possibility does exist just the same. 11 3 PROGRAM OPERATION To begin with, Terminus is a "reentrant" program, which refers to a method of programming that allows multiple processes to execute a single copy of program code. If you are using a system with multiple serial ports, you can now run several Terminus "sessions" simultaneously, all with the same copy of program code which results in a tremendous savings in ram usage. 3.1 SESSIONS In order to keep track of all processes that are executing the program there has to be some scheme that makes this easy for you to do. The method used by Terminus is to use a unique "session" number for each process. Each Terminus session has a unique name that created by appending the session number to the name "TERMINUS". This name is used as a portname with ARexx and as the root filename during startup to load the proper defaults, phonebook and startup scripts for a given session. Session numbers are assigned automatically during startup or you can supply a specific session number as a command line option. This gives you the ability to define several configurations grouped by session number and load them when desired via session number. Each session is comprised of two processes, main and serial. The main process controls the user interface and terminal while the serial process handles serial data flow, file transfers and remote CLI operation. 3.2 MASTER PROCESS There is one other process that exists when Terminus is running, the master process. Unlike each session, the master process only exists once. It is used to launch new sessions and remains present so long as at least one session is still running (or iconified). Once the master process has been created it checks to determine which version of the Amiga operating system it is running under, if the ARexx process is present, if OwnDevUnit.library exists and which file requester library is in use. Since the master process only does these checks during initial startup, you must start ARexx, copy OwnDevUnit.library and the file requester library prior to starting Terminus. Otherwise you will have to quit all Terminus sessions first, then rerun them after accomplishing these steps. The master process determines what the session number will be for each new session as it is created. Normally, it starts with the number '1' and looks to see if a session exists with that number, if so, the number is incremented by one and the search continues until a free number is located. You can also tell the master process to use a specific session number via a command line option if you so desire. If the requested session 12 is already active, the master process will bump the current value by one and look for a vacant session number. The session will still use the requested session files though. 3.3 FILE REQUESTER PROCESS Whenever the file requester is opened for an ASCII send, upload or download operation (but not for [TRANSFER][ADD UPLOAD...][U]) the session process will launch a child process to manage the file requester asynchronously. This is done so that you can continue to communicate with the remote system in order to prevent possible transfer timeouts due to a long wait while the requester reads in a large directory or accesses a floppy disk. The file requester is used synchronously in all other cases. 3.4 TSL - TERMINUS SESSION LAUNCHER The Terminus executable contains special startup code that checks to see if a copy of Terminus is already running. If the master process is found a message will be sent to it to start a new session. The executable will then terminate once the master process has initiated the new session. To prevent the overhead involved with loading the entire executable, a smaller utility called TSL, is provided that duplicates this process of finding and calling the master process to start a new session. Additionally, TSL can be used to start Terminus itself. To accomplish this you must have the Terminus executable located in the logical assignment "TERMINUS:". Also, when Terminus is launched in this fashion, TSL will not return to the CLI until all Terminus sessions have terminated. 3.5 DETACHING FROM THE CLI There is no need to use the AmigaDOS "Run" command to start Terminus as it will automatically self-detach from the shell or CLI that it was started from. However, you may have a need for running Terminus without it detaching from the CLI. If so, use the TSL utility to initially start Terminus instead. TSL will not exit if Terminus is started in this manner since it is waiting for the completion of the command that it executed to start Terminus. Only after all Terminus sessions have been terminated will TSL return to the CLI that it was started from. 13 3.6 RESIDENT USAGE The Terminus executable is not an AmigaDOS "pure" program due to the startup code used to accomplish CLI detachment. The TSL utility is pure and can be made resident without worrying about the pure bit beforehand. 3.7 TERMINUS FILES There are several files that are used by Terminus during its startup and while the program is running. There is a defaults file that will reconfigure Terminus to your liking as well as a phonebook that contains any entries you may have added to it. These files are written in plain ASCII format so that you can edit them if you wish with any text editor you choose. 3.7.1 DEFAULTS FILE The defaults file contains settings that will completely reconfigure Terminus. It is looked for during session startup in the current directory first. If not found there, Terminus will check to see if the logical assignment "TERMINUS:" exists, if it does the defaults file will be looked for there. If the defaults file was not found, a set of internal defaults will be used to first start the program. As mentioned earlier, the defaults filename is constructed by appending the string ".def" to the session name. For example, the defaults file for session number 1 would be "terminus1.def". A special case is the global defaults file "terminus.def" which is simply a .def file that lacks a session number. It will be loaded if a session default file was not found. 3.7.2 PHONEBOOK FILE The phonebook file is the next file that is looked for during session startup. It contains configuration settings and entry definitions for every entry currently in the phonebook. The search procedure for the phonebook file is somewhat different than that for the defaults file. While it also is first looked for in the current directory, it is only looked for in the main path that was set by Terminus or reassigned by the defaults file. As with the defaults file, the phonebook filename is built by adding the postfix ".phones" to the session name. Session 3 would look for the name "terminus3.phones". You can have a global phonebook file as well by creating one that lacks a session number. 14 3.7.3 STARTUP SCRIPT After the phonebook has been loaded Terminus will look for a script file to execute, if there is no script file present it will initialize the modem instead. Please remember this, the modem will not be initialized if there is a startup script present. The script filename is also created by using the session name along with the script postfix ".scp". Session 12 would have a startup script called "terminus12.scp" that it would execute after the session has loaded a defaults file and phonebook. There is no global startup script as there is with the .def and .phones files. 3.7.4 CONSOLE DEFINITION FILES One of the most convenient features that Terminus provides is the console definition file. These files allow you to reconfigure the settings for the console; emulation, palette, screen depth, columns, rows, keymap, font and so on simply by loading a new console definition file. The console settings requester allows you to create new files very easily. Terminus will load the default console definition file if one is defined and the file is found. Simply select a console definition file via {CONSOLE}{GET DEFINITION...}{G} then save your defaults with [PROJECT][WRITE DEFAULTS...] to override the default .con file. 3.8 COMMAND LINE OPTIONS Terminus has several options that can be passed to it from the command line. TSL can also have these options too, they will be passed to the master process during session launch. The available options are: DEVICE devicename A system that has an A2232 multiport serial card might use the command line "Terminus DEVICE oldser.device" to use the original serial device driver for the internal port. UNIT number Of course, it's wise to define the proper unit number too, so the command line would be expanded to include this as "Terminus DEVICE oldser.device UNIT 0". QUIET This option does not require a parameter, it instructs the launched session to not activate the serial port after starting up. IGNOREODU This option also does not have a parameter, it tells Terminus to not attempt a lock on the serial.device via the OwnDevUnit library. This is usually needed if Terminus was launched from a getty-like program that would have already locked the device prior to 15 executing the command line that starts Terminus. NOINTERLEAVE Another parameterless option. When used, it will disable the use of interleaved bitmaps and cause Terminus to use well defined system display routines. This option will most likely not need to be used but was added in case Terminus becomes incompatible with future releases of the operating system that may use new and unforeseen display systems. SESSION number This option allows you to override the normal search for a new session number. If the number supplied is already in use a search will start with the next higher number. SCRIPT filename Allows you to override the default startup script. DEFAULTS filename Ditto for the default file with one caveat, if the default file contains device, unit or phonebook filename information, they will be used instead of command line supplied options. PHONEBOOK filename Same goes for the phonebook file. DEBUG This option enables Terminus' guru exception handler. If an error occurs that would normally guru the system it will be "caught" by Terminus and a "snapshot" file will be written to DF0: along with a file that contains the internal state of Terminus at the time of the error. Use this option if a repeatable error is occurring so that the generated data can be sent to Dynalogic for further analysis. 3.9 ICON TOOLTYPES The above command line options can also be used as tooltypes in either the Terminus or TSL icon. The options that require an argument, like DEVICE, require an '=' character be included. For example: DEVICE=serial.device 16 4 THE CONSOLE A "console" (sometimes referred to as a "terminal") is a device that provides local and remote input/output via a display, keyboard and traditional I/O device, which in Terminus is the serial port. The Amiga comes with it's own default console, aptly named "console.device", which is normally used by the CLI or Shell and with some other telecomm programs as well. While that device is quite useful, it is not terribly fast at scrolling text when it is used with screens having 8 or more colors. The approach used in Terminus was to provide a console that is compatible with the Workbench screen but is able to deliver substantially better performance when used with custom screens. 4.1 SCREENS Terminus is able to run on the Workbench screen or on a 2, 4, 8, 16 or 32 (when used with the AGA chipset) color public or private custom screen. Public screen support was added starting with the 2.0 release of AmigaDOS. It is also fully aware of PAL and overscan modes in effect for the Workbench screen. Alternative screen types are possible under the 2.1 release of AmigaDOS via the asl.library (or ReqTools) screen mode requester. It can also be opened on one that is "owned" by another application if it is the active public screen. The maximum size for use with a custom screen is determined by the size of the Workbench or active public screen. This prevents opening a screen that ends up not being centered on your monitor if it is larger than the Workbench screen. Custom screens that have dimensions smaller than the Workbench screen will be centered horizontally (not vertically). There are a few points to be aware of when Terminus is used on the Workbench screen. The console window is bordered, has depth and drag gadgets, but is not resizeable. To change the size of the console window you must alter {CONSOLE}{ROWS}{R} and/or {CONSOLE}{COLS}{L}. When using Terminus on a custom screen, which is the recommended method, it employs several techniques to enhance scroll rate and eliminate the disturbing flicker that so many programs are plagued with when using screens of 8 or more colors. By using interleaved bitmaps and custom blitter scroll routines you will no longer experience text flicker during scrolls on an unaccelerated Amiga. These scroll routines are transparent to the system and to those using CPUBlit. You can, via a command line option, disable interleaved bitmaps and therefore, these custom scroll routines if a future display system results in an incompatibility with these routines. Also be aware that non-AGA systems that lack true fast ram will have these scroll routines disabled to prevent the blitter from interfering with the internal serial port which could cause data loss at speeds above 9600bps. Although the default cursor is rendered as a block, it is recommended that the alternative sprite cursor {CONSOLE}{FAST CURSOR}{8} be used with high speed modems and custom screens to obtain faster text throughput, especially when large quantities of ANSI cursor control 17 sequences are anticipated to be received from the remote system. This option is not available when using Terminus on a public screen. Terminus uses a borderless display to show as much text as possible. Even if you are using a minimal NTSC screen size of 640x200 you will be able to display the normal 24 line, 80 character display plus a status line or 25 lines without the status line. 4.2 PALETTES Terminus has four palette "types" to choose from. The palettes themselves can be customized via the palette requester, but only the current palette can be changed. You need to select a new palette from the console requester in order to customize it. 4.2.1 PALETTE TYPES Terminus has four basic palette "types" or groups. Each type has 1, 3 or 4 "members" in the group. Each member relates to the screen depth in bitplanes. The four types are WORKBENCH, COLOR, MONO and CUSTOM. Each palette type also modifies the operation of the Set Graphics Rendition (SGR) ANSI sequence for the inverse, highlight and blinking attributes. The following table lists the palette types, number of screen colors available for that type and what effect it has on the SGR sequence. Type Colors Action WORKBENCH n/a This palette is limited to setting Terminus pens only and is insensitive to Workbench screen depth. You cannot adjust palette colors either. Inverse and rendered bold attributes are the only ones allowed. COLOR 2 Inverse attribute only. COLOR 4 " " " COLOR 8 " " " COLOR 16 Inverse and highlight attributes only. COLOR 32 Inverse, highlight and blinking attributes. (Uses the COLOR/16 palette and is only accessible when running under a system that has the AGA chipset.) CUSTOM 2 Inverse and rendered bold attributes. CUSTOM 4 " " " " " CUSTOM 8 " " " " " MONO 2 Inverse attribute only. MONO 4 Inverse and highlight attributes only. MONO 8 Inverse, highlight and blinking attributes. 18 Terminus incorporates logic at startup to adjust the internal default palettes according to which release of the operating system you're using. The logic copies the current settings of the Workbench screen palette and swaps several pen colors and register values due to the differences in color ordering under the 1.x and 2.x releases. The COLOR, MONO and CUSTOM palette types are handled a bit differently depending on an additional parameter, the ECS Denise or AGA Alice chips. If you're using 2.x or later version of the OS and one of these chips is present in your system, Terminus will swap colors 0 and 1 so that the 2.0 3-D "look" is used with all program requesters. The reason that one of these chips needs to be present is so that border blanking can be activated for that screen to prevent a disturbing border from being displayed. Border blanking can be disabled via the {GENERAL}{BORDER BLANKER}{B} option. Under 2.0 using the OCS (Original Chip Set) and under 1.3, colors 0 and 1 are not reversed so that the display looks pleasing for terminal use, however, the requesters will not have the 3-D "look". You can change the palette ordering to your liking if this does not satisfy you since palettes are saved to the defaults file and will be used for all future sessions after being modified. 4.3 TERMINAL EMULATIONS Terminus provides you with six terminal emulations although briefly described in this section, Appendix B goes into great detail on the various control characters and sequences that each emulation recognizes. 4.3.1 TTY EMULATION TTY is an acronym for Teletype which was a rather simple (by today's terminal standards) mechanical paper-only terminal. Only a few control characters are decoded in this emulation. 4.3.2 AMIGA EMULATION The Terminus Amiga emulation emulates most of the operation of the Amiga console.device. It does not decode some graphics and raw input related sequences which are described in Appendix B. 4.3.3 IBM ANSI EMULATION The IBM emulation comes in two flavors, color and monochrome with color being the default choice. If you're not using an Amiga with the AGA chipset then the Terminus color IBM ANSI emulation lacks the blinking attribute support. This is due to the limitation of 4 bitplanes for a hires screen with the OCS and ECS chipsets. 19 The monochrome version of this emulation provides a complete emulation since the blinking and high intensity attributes can be contained in a 3 bitplane, 8 color display. The console requester provides a special option for IBM Doorway keyboard mapping which allows functional remote use of an IBM or compatible MS-DOS system that is running the Doorway remote control program. This emulation does not provide support for the custom graphics modes or the keyboard reassignment that ANSI.SYS provides. 4.3.4 VT-52 EMULATION Terminus provides a 100% complete DEC VT-52 terminal emulation which is included primarily to make the VT-102 and VT-220 emulations complete as well. 4.3.5 VT-102 EMULATION The DEC VT-102 emulation lacks the interlace mode option and special test modes of a real DEC terminal. 4.3.6 VT-220 EMULATION The only things not included with the DEC VT-220 emulation are terminal specific test modes and downloadable character set support due to incompatible display ratio differences between the Amiga and a true VT-220 terminal. The VT-220 emulation also supports the following keyboard sequences: / Sends a ^_ character. "Meta" keys When an alphabetic character (a-z, A-Z) is used with the qualifier, an ESC character will preceed the character. Edit keys The following numeric keys mimick the edit functions of a true VT-220. Use the qualifier to send them. - Find - Insert here - Remove - Select - Prev screen - Next screen 20 4.4 SPECIAL KEY SEQUENCES Terminus has several special key sequences that are present in the AMIGA, IBM and VT-xx emulations to send certain characters or sequences that are not normally sent, or easy to send. They are listed as follows: - Sends - Sends a NUL character, hex 00, much easier to send then using the equivalent keyboard sequence <@>. This sequence is used by EMacs to set a mark. - Sends T - Sends S - Sends sp @ - Sends sp A 21 4.5 STATUS LINE The console provides you with a status line in the bottom row of the display, it's meaning is described as follows: +--------------------------------------- Terminus session name | +----------------------------- Cursor position indicator | | +----------------------- Capture file open indicator | | | +------------------- Printer on indicator | | | | +-------------- Terminal emulation | | | | | +---------- * C/R translation | | | | | |+--------- * L/F translation | | | | | ||+-------- * End-of-line output | | | | | ||| +------ * File transfer protocol | | | | | ||| | TERMINUSXXX XXX,YYY CAP PRT AMIGA LLC Z FX 8N1 115200 00:00:00 X 00:00:00 | | || ||| | | | | Remote CLI indicator REMOTE || ||| | | | | Quiet port indicator QUIET || ||| | | | | Locked keyboard LOCKED || ||| | | | | Send clip indicator CLIP || ||| | | | | Record indicator RECORD || ||| | | | | Script indicator SCRIPT || ||| | | | | Waiting indicator WAITING || ||| | | | | Input indicator INPUT || ||| | | | | Debug indicator DEBUG || ||| | | | | || ||| | | | | * Duplex mode ------------+| ||| | | | | * Handshake -------------+ ||| | | | | * Data bits ---------------+|| | | | | * Parity ----------------+| | | | | * Stop bits -----------------+ | | | | * Baud rate ---------------------+ | | | * Connect timer ------------------------------+ | | * XOFF'd indicator -----------------------------------+ | Time-of-day clock -----------------------------------------+ Listed below the CAP and PRT indicators are nine indicators that will be displayed when the respective state is active. They are listed here in prioritized order. If more than one of these states is active Terminus will display each one, once per second, in succession. REMOTE Displayed when the remote CLI function is active. See the description on the REMOTE script command for details on remote CLI operation. QUIET Displayed when the serial port is in quiet mode as determined by [MISC][QUIET SERIAL?] and {PORT}{PORT QUIET}{P}. LOCKED Displayed in VT-102 or VT-200 emulation after a set KAM (Keyboard Action Mode) sequence was received. CLIP Displayed when a send (or quoted) clip is in progress. RECORD Displayed when script recording is in effect. 22 SCRIPT Present whenever a script is executing. WAITING Whenever Terminus is halted due to a pending WAIT command, this indicator will be present. INPUT Visible when the script is waiting for input. DEBUG This indicator is present when Terminus was started with the DEBUG command line option or icon tooltype. The cursor position indicator, shown here as XXX,YYY actually displays numbers referring to the column, XXX, and row, YYY, where the cursor is located on the screen. The XXX in the Terminus session name will be replaced with the actual session number for the session in use. This is the same name that the ARexx port is named as well. Although the time-of-day clock is shown here in 24 hour format, it can also be displayed in 12 hour, am/pm format as well. {GENERAL}{24 HOUR CLOCK}{2} controls this. The connect timer, however, is always in 24 hour format. Items that have an asterisk denote hidden gadgets that are attached so that you can change that item with the left mouse button. If you have either key depressed when you click on one of these gadgets it will scroll down through its settings rather than up. The connect timer is reset when the gadget is selected while the XOFF'd indicator gadget will restart the stopped serial device. Please see the section on XON/XOFF flow control for more information on this. The status line is also used to indicate when the Terminus console window is active for receiving keyboard input. It does this by only displaying the session name, online timer and time-of-day clock when the window is inactive. This provides you with visual feedback that is normally done via the window border which is not present when Terminus is used on a custom screen. Please remember that when the status line is located within the title bar the hidden status line gadgets are disabled. 4.6 DEFINING A CONSOLE To begin defining a console open the console requester and first select the terminal emulation that this console is going to use. You must do this first since Terminus will set various other options to suggested defaults for each emulation. You should select the desired palette type next then adjust the screen type. Once you've selected the emulation, palette and screen you are free to change the other options as you desire without having your previous selections disturbed. Once you are finished defining your console you can select {CONSOLE}{SAVE DEFINITION}{V} so that the current console configuration can be saved to a file for use later with the phonebook. 23 4.7 CHAT MODE Terminus gives you a multiple line chat function with adjustable line height and history buffer size. The chat buffer does not reside in a separate window, the console is reduced in line height by the number of lines in the chat area. You must set the number of lines in the chat area via {GENERAL}{CHAT LINES}{T} prior to activating it. Any changes afterward will be ignored until you exit and then reenter chat mode. The chat area is not a text editor, it is essentially a single line buffer that is folded into several lines. Although the line wraps when the end is reached. it does not word wrap. The chat buffer accepts text input as expected except for "natural" control characters which are expedited. If you want to send a control character within a chat message you must prefix it with a '^'. A pair of consecutive '^' characters will send that character itself. The keys and key sequences that control the chat buffer are listed as follows: - Sends the current contents of the chat buffer, copies the buffer to the history buffer and then clears the buffer for the next entry. - Moves the cursor to the same column on the previous line. - Moves the cursor to the next column (or end of line) on the next line. - Moves the cursor to the left and wraps to the previous line, last column if the cursor is at the leftmost column. - Moves the cursor to the right and wraps down to the next line, first column if the cursor is at the rightmost column. - Moves the cursor to the beginning of the line. - Moves the cursor to the end of the line. - Moves the cursor one word left. - Move the cursor one word right. - Moves up one line in the chat history buffer. - Moves down one line in the chat history buffer. The chat buffer is cleared once the end of the history buffer is reached. - Moves the cursor to the start of the buffer, first line, first column. 24 - Moves the cursor to the end of the buffer. 4.8 SPECIAL MOUSE SEQUENCES Terminus provides several mouse sequences for sending characters and ANSI cursor movement sequences. If these sequences conflict with other utilities that you may be using then you will want to disable {GENERIAL}{MOUSE FUNCTIONS}{S}. Be warned that all clipping, from the main display and the review buffer is disabled as well as the following functions. 4.8.1 CHARACTER MOUSE The two sequences, and will send the character underneath the mouse. The sequence also sends the sequence defined in {CONSOLE}{EOL OUT}{E} after the character has been sent. 4.8.2 ANSI CURSOR MOUSE The sequence gives you the ability to send cursor movement sequences via the mouse pointer. To do this you first have to place the mouse pointer over the character position that you want to move the cursor to then press . Terminus will determine which of the four cursor movement sequences need to be sent (as well as how many) in order to move the cursor from the present location to the desired position as per the mouse pointer. Please take note that some remote systems may have problems with receiving a large chunk of data that this feature is capable of generating, in that case you would want to activate {CONSOLE}{MOUSE PACING}{I}. What this option does is "pace" each cursor sequence by waiting for the cursor to move before sending the next sequence. Of course, for this option to work, the remote system must echo the cursor movement sequences or else the entire operation will not complete. If a new ANSI mouse operation is performed before the current one is completely sent it will override that list of sequences and start from the current cursor position to move it to the newly requested location. 4.9 HEXADECIMAL DISPLAY MODE Terminus has the ability to switch its console, regardless of which terminal emulation it is currently set to, into a hexadecimal display mode for situations that require examining the sequences of characters coming in from the remote system. The format of the display while in this mode is: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f ABCDEFGHIJKLMNOP 25 The 16 character pairs to the left are the hexadecimal values of each character as they are received. The 16 characters to the right are the ASCII characters that each hex character represents. Control characters in the range of 00 through 1f are displayed as inverse characters in the 40 through 5f range. The other set of control characters in the range 80 through 9f are displayed in inverse as well but use the 60 through 7f range instead. The format of each line will be preserved as it scrolls off the top and is copied to the review buffer and the capture file, if one is opened. 4.10 XON/XOFF FLOW CONTROL The status line contains a special indicator that appears whenever the serial port has been stopped due to an XOFF character being sent or received. The character "X" is displayed so that you have a positive indication of the status of the serial port. What's more, whenever you keyboard a the display stops immediately so that anything that catches your eye will still be there where you expect it to be. To restart the device in the case of a spurious XOFF character being received, just press . These two keyboard sequences are only in effect when you have set {SERIAL}{XON/XOFF}{X}. 4.11 BUFFERED PRINTER I/O The printer I/O support in Terminus is dynamically buffered so that the console is not locked when the printer is currently unable to receive more data. All the VT emulations have several printer control sequences that can activate the printer automatically, buffered I/O allows you to continue using the console while the printer is still being sent data. {PATHS}{PRINTER}{N} allows you to define the AmigaDOS printer device name "PRT:" or a filename to direct printer output to if you cannot use, or do not have, a printer. 26 5 USING CAPTURE FILES Capture files contain copies of displayed text or raw data that is received by the console in Terminus. If {CONSOLE}{RAW CAPTURE}{9} is set all data received will be captured as is. Otherwise, text as it appears on the screen will be saved instead. There are two ways of opening a capture file, you can either open the file using [TRANSFER][OPEN CAPTURE...][O] or [TRANSFER][OPEN W/SAVE...][o]. Both will open a new file, any data in an existing file will be deleted first. The difference is that the later will copy the contents of the review buffer immediately to the capture file while the former does not. There is also [TRANSFER][APPEND CAPTURE...][A] and [TRANSFER][APPEND W/SAVE...][a] which do not clear the contents of an existing file when it is opened. Any captured data will be appended to the contents or a file will be created if one does not exist. This method of opening capture files is used by the dialer when a connection is established. When you're finished capturing the data you wish to save you can close the file with [TRANSFER][CLOSE CAPTURE][c]. Capture files are closed automatically when a Terminus session is ended or when you (or the dialer) open a different capture file. 27 6 USING THE REVIEW BUFFER Terminus provides you with a flexible, multitasking review buffer that has a fast text search facility, buffer loading and integrated clipboard support than can be operated from the keyboard as well as the mouse. The review buffer is implemented as a "circular" buffer that always contains the most recently received data from the console. The size of the buffer in kilobytes is determined by {GENERAL}{REVIEW BUFFER SIZE}{R}. You can open the review buffer by using either [BUFFER][REVIEW AT END...][b] or [BUFFER][REVIEW FROM...][B]. The first method opens the review buffer at the end of the buffer while the second option is used to reopen the buffer at the last position when the buffer was closed. If there as been new data placed in the buffer since the last time it was opened and the old position has been overwritten, it will open at the end of the buffer instead. You can also load the review buffer with the file of your choice by using [BUFFER][LOAD BUFFER...]. The review buffer will be dynamically resized if the file is larger than the current size so that the entire file can be loaded. Terminus does a few checks on the current free memory pool in order to determine if it can safely do this, for one, it needs to see if there is a contiguous memory block large enough to satisfy the size requirement. It then checks to see if the new size will leave you with less than 100k of free memory. If either check fails Terminus will determine a suitable size and load as much of the file as it can, it will inform you of not being able to load the entire file as well. In either case, {GENERAL}{REVIEW BUFFER SIZE}{R} will be updated to reflect the new buffer size. The number of lines displayed in the review buffer is determined by {GENERAL}{REVIEW LINES}{W}, which defaults to one half the size of the main display. The buffer window also has several system gadgets attached to it, the standard close gadget and resize gadget which you can use to adjust the vertical height of the window. You cannot adjust the width of the window however. The right window border also contains the scroll and up/down gadgets for moving around in the review buffer via the mouse. The keyboard can also be used to move within the review buffer space, the key sequences are described below. The review buffer window allows for "transparent" keyboard use. It does not use any gadgets with hotkeys attached to them so that you can send data out of the serial port while the review buffer window is active. The only keys that cannot be used for terminal use are the numeric keypad keys, the cursor arrow keys and the key which are used to control the operation of the review buffer. To send any of these keys you must first activate the main terminal display then send these keys. 6.1 SEARCHING IN THE REVIEW BUFFER Terminus provides you with a very fast text search facility based on the Boyer-Moore algorithm for use in the review buffer. There are two types of searches accessed via [BUFFER][START SEARCH...][e] or [BUFFER][START EXACT SEARCH...][E], the first one will search for any text entered into the string gadget requester without regard for case. 28 The later will begin a search that is sensitive to case. Both searches are begun from the start of the review buffer and will position the review buffer display and cursor to the start of the located text. [BUFFER][REPEAT SEARCH][f] will continue searching for text from the point of the last found text. If the review buffer display is not opened when you activate this menu item it will open the buffer and position the display and cursor over the located text if found. Terminus will post a requester if a match is not found in the review buffer. Also, [BUFFER][REPEAT SEARCH][f] will not be enabled until a search has been attempted. Once the search operation fails, either by starting a new search or repeating a current search, [BUFFER][REPEAT SEARCH][f] is again disabled. It is also disabled when the review buffer is cleared or loaded with a new file. 6.2 NAVIGATING IN THE REVIEW BUFFER The review buffer can be operated via the keyboard and mouse. There is a scroll gadget and up/down gadget pair within the right border of the window to navigate via the mouse. There are also a host of keyboard equivalents for navigation from either the cursor arrow keys or with the numeric keypad. The cursor arrow keys are present for those Amigas, such as the A600, which do not have a numeric keypad. The layout of the numeric keypad and the functions they provide are as follows: - Top of buffer - Up one line - Up one page - Cursor left - Begin clip - Cursor right - End of buffer - Down one line - Down one page - End clip The cursor arrow assignments are: - Up one line - Down one line - Up one page - Down one page - Top of buffer - Bottom of buffer - Cursor left - Cursor right Alternate begin/end clip sequences are: - Begin clip - End clip 29 7 CLIPBOARD SUPPORT Terminus provides clipboard support for both the main display as well as a fully keyboard and mouse operable version that works in the review buffer. Be aware that these features can be disabled via the {GENERAL}{MOUSE FUNCTIONS}{S} option. 7.1 MAIN DISPLAY Clipping text from the main display is accomplished via the . First position the mouse pointer over the character you wish to begin the clip at. Next, press and hold to anchor the clip. Now drag the mouse while keeping the button depressed and move the pointer to the end of the text you plan to clip. When you release the mouse button the highlighted text will be immediately written to the clipboard. Be aware of the "overloading" of the for use with the ONMOUSE script command. If you press and release the over the same screen location, even is the mouse was moved off of that position while is held down, it will satisfy the ONMOUSE condition if one is active. You must move the mouse at least one character position away from where you started the clip operation in order to have a clip action performed. No keyboard equivalent support is available for the clipping from the main display. You can, however, use the keyboard to clip from the review buffer as described below. 7.2 REVIEW BUFFER Keyboard controlled clipping within the review buffer is started with either or . You then use or to complete the clip operation. Keyboard controlled clipping of the review buffer is not affected by the state of {GENERAL}{MOUSE FUNCTIONS}{S}. If that option is inactive you will not be able to use the mouse to clip from the review bufer, but you will still be able to use the keyboard to clip. When using the keyboard to clip data from the review buffer you first place the review cursor over the character where the clip will start from. Next, press or to "anchor" this location. Now, as you use the keypad to move the cursor you will see that all text between the anchor and the cursor is highlighted. You can move the cursor in either direction away from the anchor, text between it and the cursor will be highlighted to indicate what portion of the review buffer will be clipped. Once you've reached the point where you want to end the clip press or , Terminus will then copy the highlighted text to the clipboard. Clipping from the review buffer with the mouse is essentially the same as from the main display. First place pointer over the start of the clip then press and hold down to anchor the start of the clip. 30 Moving the pointer will adjust the highlighted area that will be clipped once you release the mouse button. Moving the pointer above or below the window borders will initiate paced scrolling if the section you need to clip is larger than the review buffer window. 7.3 SENDING CLIPBOARD DATA Terminus provides you with two methods of sending data contained in the clipboard. The first option, [BUFFER][SEND CLIPBOARD][v], will send the contents of the clipboard as-is to the serial port. The other option is [BUFFER][QUOTE CLIPBOARD][V] which uses two options to format each string of clipped data prior to it being sent. The first option is {GENERAL}{QUOTE STRING}{Q} which defines a string of one or more characters that will be prefixed to each string of clipped data. The other option is {GENERAL}{QUOTE LENGTH}{U} which controls the total length of the string. Any clipped strings longer then this length (minus the length of {GENERAL}{QUOTE STRING}{Q}) will be truncated. 31 8 USING THE PHONEBOOK A Terminus phonebook file, much like the printed version that is probably located in a desk drawer or hall closet in your house, contains phone number entries with the names and addresses of places to call. We have little use for addresses, but the idea is the same. The phonebook requester is what you'll be using to load and save different phonebook files, sort the phonebook, select entries for dialing and for creating, editing or deleting phonebook entries. This section teaches you how to do all these operations. When you first open the phonebook via [PHONEBOOK][DIRECTORY...][z] you are presented with a rather large requester that has a bordered rectangle occupying the upper half of the window. The rectangle is the phonebook entry list box, it can show up to ten entries from the phonebook at any one time. You can move around a phonebook file that has more than ten entries by using the scroll bar or up/down gadget pair to the left of the entry box. The operation of this aspect of the phonebook requester is much like a file requester. There are also a host of keyboard controls that enable you to fully operate the phonebook requester as well, they are discussed below. {PHONEBOOK}{DISPLAY}{I} controls the way the phonebook requester displays the phonebook entries, it provides you with three different formats, NAME COMMENT and DATE as shown below in that order. ASSSS NNNNNNNNNNNNNNNNNNNNNNNNNNNNN P ################################ ASSSS NNNNNNNNNNNNNNNNNNNNNNN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ASSSS NNNNNNNNNNNNNNNNNNNNNNNNNNNNN DD/MM/YY P ####################### where: A - Autorecord flag. S - Selection order number. N - Entry name. C - Comment. P - Dial prefix. # - Phone number. DD/MM/YY - Last connect date. 8.1 AUTOMATIC SAVING OF PHONEBOOK FILES As the last connect date is saved for each phonebook entry, Terminus keeps track of the current status of the phonebook in use. If an entry has been connected to at any time during the current session the phonebook will be automatically saved prior to loading a new phonebook or exiting the session. 8.2 LOADING AND SAVING PHONEBOOK FILES {PHONEBOOK}{LOAD PHONEBOOK...}{L} and {PHONEBOOK}{SAVE PHONEBOOK...}{V} which, as their names suggest, allow you to load or save a phonebook file. Either one will open the file requester so that you can select or enter a filename that will be used to load a 32 phonebook from or save the current contents of the phonebook to. The text indicator rectangle above the load/save gadget pair shows the name of the currently loaded phonebook file. When you load a phonebook file the current entries are deleted first. If you wish to combine two or more phonebook files together you must use the AmigaDOS command "Join" or you can use a text editor to accomplish this as the files are in ASCII format. 8.3 HIGHLIGHTING AND SELECTING ENTRIES Both the keyboard and the mouse can be used to highlight or select entries. The reverse colored bar is the highlight bar and can be moved by using the cursor keys to move it, if you reach the top or bottom of the entry list the highlight bar will "wrap" to the other end of the list. To select an entry, position the highlight bar over the entry you want to select and press or place the mouse pointer over the entry and click the left mouse button. You can tell when the entry is selected by the number that will appear to the left of the entry name. {PHONEBOOK}{UNSELECT}{U} will deselect all selected entries and update the entry list to reflect this change. 8.4 SORTING ENTRIES {PHONEBOOK}{SORT ORDER}{S} allows you to select how you would like the list of entries to be sorted. The first three methods, NAME, NUMBER and DATE, use the entry name, first phone number or connection date for sorting, just click on {PHONEBOOK}{SORT}{R} after choosing either of these two sort order methods. The last method of sorting, SELECT, requires that you go through the list and select the order in which you would like the list displayed. After putting them in the order you choose click on {PHONEBOOK}{SORT}{R} to sort the list in selection order. 8.5 CREATING AND EDITING ENTRIES You can edit an existing entry by placing the highlight bar over the entry then clicking on {PHONEBOOK}{EDIT...}{E} which then opens the entry editor requester with the contents of the entry. You can create a new phonebook entry by either selecting {PHONEBOOK}{ADD...}{A} from within the phonebook or via [PHONEBOOK][CREATE ENTRY...][K]. Either method results in the opening of the entry requester with a new entry titled "New Entry". The serial and transfer settings currently in use will be copied over to this new entry as well. At a bare minimum you will need to enter a phone number in {ENTRY}{PHONE #1}{1}. Enter additional phone numbers in the subsequent string gadgets. Numbers must be entered in order or the dialer will cease dialing once it reaches a blank number entry. If {ENTRY}{PHONE #1}{1} is left blank, the entry will be erased when you close the requester via {ENTRY}{OK}{O}. 33 If you have more than one dialing prefix defined you will want to select the appropriate one in {ENTRY}{PREFIX}{X}. Next you should change the name of the entry to a meaningful name and you might also want to add some additional comments in the string gadget below the name gadget if you desire. If you wish the dialer to automatically open a capture file for this entry after it establishes a connection you will want to define a filename in {ENTRY}{CAP. FILE}{F}. The file will be opened in append mode without saving the current contents of the review buffer. The next filename to consider defining is {ENTRY}{SCRIPT}{T}. This is the entry login script file that the dialer will execute after making a connection. This script serves a second purpose as well, it is used to store the function key macros for the entry. You must define a script filename here in order to access the macros requester via {ENTRY}{MACROS...}{A}. If you already have a password for this entry you will want to define it in {ENTRY}{P/W...}{W}. Otherwise, select the type of password you want Terminus to generate for you via {ENTRY}{P/W TYPE}{Y}. If you need a generated password of a specific length or less than the current value in {ENTRY}{P/W LENGTH}{L} you will need to change that as well. When you select {ENTRY}{OK}{O} Terminus will generate a password for you as long as {PHONEBOOK}{P/W...}{P} has been defined. Please refer to the section below on PASSWORD MAINTENANCE that goes into detail on the generated passwords that Terminus can provide you with. {ENTRY}{SERIAL...}{S} and {ENTRY}{XFER...}{R} will open the appropriate requester to modify the options for the entry. {ENTRY}{MACROS...}{A} will open the macros requester, but as mentioned above, you must have a script filename defined in order to do so. {ENTRY}{GET DEFINITION...}{G} is used to select a console definition file that the dialer will load after making a connection. No entry here will result in Terminus using the current default console configuration. {ENTRY}{RESET TIMER}{I} will reset the online timer in the status bar after the dialer makes a connection. Set {ENTRY}{CENTS/MIN.}{/} to a non-zero value if you would like to track how much time is costing you while online. This is not intended to be an accurate expense accounting feature, just a rough estimate of what it costs for each connection. Once you're done configuring an entry you must select {ENTRY}{OK}{O} in order to save it. Remember though, if {ENTRY}{PHONE #1}{1} is left blank, the entry will be deleted. If {ENTRY}{CANCEL}{C} is selected, the entry will be discarded if it was newly created entry. If it was an existing entry opened for editing, only the changes will be discarded, the original entry will remain unchanged. 34 8.6 DELETING ENTRIES {PHONEBOOK}{DELETE}{T} is used to delete the currently highlighted entry. 8.7 PASSWORD MAINTENANCE Passwords; if you've been telecommunicating for any length of time, you've most likely experienced that frustrating feeling after the remote system has rejected what you had hoped was the correct password. Of course, you've misplaced that scrap of paper or simply forgotten it, so you're stuck and have to ask the sysop to reset your password or delete your account so that you can get access to the system again. Forgotten and lost passwords have been the bane of modem users for as long as the need for security arose. There's no doubt of the protection a password provides, but that doesn't comfort you when you can't access the system you're calling due to a forgotten password. Some people tend to respond to this problem by getting into the habit of using a handful, or even less, of easy-to-remember passwords for all the systems that they call. Using the same password on more than one system is definitely an invitation for some miscreant to abuse your access on those systems and possibly harm your online reputation in the process. Using a simple password that's easy to remember is not wise either, if it's easy for you to remember, it's probably easy for someone to deduce on their own as well. The best method for keeping your passwords safe is to use unintuitive sequence of characters, not words, and to use different ones on each system that you call. However, multiple random sequences of characters are not easily remembered, your brain (and probably everyone else on this planet) simply can't remember things that can't be associated with something else unless a lot of effort is used to force it in there. What's more, you should get in the habit of changing passwords every so often, especially for pay services. The more important the system is to you, the more often you should change the password used for access. For these reasons Terminus has the phonebook, so that you don't lose passwords. It also provides a convenient, easy-to-use facility to generate new passwords regularly with random sequences of characters. All this is accomplished via {PHONEBOOK}{P/W...}{P}. Terminus uses the password that you enter here as a "seed" in combination with the name of each phonebook entry to generate a random password for that entry. The best way to set up for using this password generation system is to first build your phonebook of all the systems that you presently call. After verifying that the current passwords for each entry are correct you select a master password for this phonebook. The one you use here 35 can be anything you choose, it's only used as a seed and not as a password for calling. Now, as you add new entries to the phonebook or when you choose to change a password to an existing entry, use {ENTRY}{P/W TYPE}{Y} and {ENTRY}{P/W LENGTH}{L} to generate a random password. When you select {ENTRY}{OK}{O} Terminus will generate a new password and then reset the {ENTRY}{P/W TYPE}{Y} so that the password will remain unchanged until you repeat this process. Of course, you have to connect to the system you want to change the password for before you actually change it. So, log into the system first using the old password, edit the entry in the phonebook to change the password, then use whatever commands are necessary for that system in order to update the password. Use [PHONEBOOK][SEND PASSWORD][Z] to send the new password to complete the password changing process. Don't forget to save the phonebook or you will have to regenerate the password prior to calling the system the next time. That's the safety factor the master password provides for you since the same random sequence will be generated for the same master password and entry name. 36 9 USING THE DIALER Terminus has an intelligent dialer that you will use to dial one or more selected phonebook entries. You can start the dialer from several places, {PHONEBOOK}{DIAL...}{D} can be used after selecting one or more entries, or you can quick-dial an entry by double-clicking the entry with or by positioning the highlight bar over the desired entry and pressing . You can restart the dialer by selecting [PHONEBOOK][REDIAL...][r] or you can use the [PHONEBOOK][DIAL NUMBER...][j] to create a temporary phonebook entry for single number dialing. After connecting with the system that the number is associated with you can use [PHONEBOOK][UPDATE ENTRY...][y] or {PHONEBOOK}{EDIT ENTRY...}{E} to make the entry permanent. While the dialer is activated via the phonebook requester and menu, it is controlled by the options that are located within the modem requester. The dialer will loop through the selected entry list based on the value that {MODEM}{ATTEMPTS}{T} is set to. Each entry will be tried that number of times before the dialer exists. The attempt count is reset each time the dialer is started. Another dialing control value, {MODEM}{TIMEOUT}{U}, instructs the dialer to wait that number of seconds for each dialing attempt. If the modem does not return a response within that period of time the dialer will hangup and go on to the next entry in the list. {MODEM}{PACING}{P}, when set to a non-zero value, will insert a delay in 1/100th second increments between each character sent to the modem. This option is not normally needed, but is present for the few modems out there that can't handle command strings being sent at the baud rate Terminus is set to. It sounds a bit strange, but there are modems that simply can't handle commands that are sent too fast. The last integer value that controls the operation of the dialer is {MODEM}{DELAY}{D}. It tells the dialer how many seconds to wait after dialing the last entry in the select list. The dialer requester has four gadgets located along the bottom that you can use during it's operation. The first one, {DIALER}{MONITOR}{M}, will echo to the screen whatever the modem sends back while dialing. You can use this option to verify the operation of the dialer if you appear to be having problems while dialing or if you just like to see what's going on. {DIALER}{SKIP}{S} will abort the current entry dialing attempt and move onto the next entry in the select list. {DIALER}{SKIP}{S} can also be used during the redial delay that occurs at the end of trying each entry in the list to restart dialing immediately. will also accomplish the same operation. {DIALER}{REMOVE}{R} removes the entry currently being dialed from the select list. {DIALER}{EXIT}{E} aborts the current dialing attempt and exits the dialer. Several things occur when the dialer establishes a connection. The first thing is that it parses the modem CONNECT response to determine the 37 connected baud rate. {MODEM}{DIALER AUTOBAUD}{B} determines whether or not Terminus changes it's baud rate to the connect rate. Do not use this option if you're operating a modem with a fixed baud rate, which is usually the case with high-speed or error correcting modems. If this is the case then the connect rate is used only for computing file transfer times with uploads and downloads. For this reason you should have your modem configured to return extended CONNECT responses. The next thing that is done is that the dialer requester is closed and if a console definition file is defined for this entry it is loaded and processed. The dialer then brings the main screen or window to the front of the display if {GENERAL}{SCREEN POPUP}{E} is activated. If the console definition file processed causes a screen change the new screen will be opened in the front of the display regardless of the setting of {GENERAL}{SCREEN POPUP}{E}. The dialer then opens a capture file if the entry has one defined, it will close the current capture file if necessary. The capture file will be opened in append mode so that the current contents of an existing file are not lost. The contents of the review buffer are not saved to the capture file. The last thing the dialer does before turning control of Terminus back over to you is to check to see if a script file is defined in the entry. If there is one defined, Terminus will either open it in record mode if the auto-record flag is set or it will begin executing the script. Please refer to USING THE SCRIPT RECORDER below for details on the record feature. Also note that while the dialer can launch an ARexx script if the script name has a postfix of ".trx", it cannot utilize the script recorder for generating ARexx scripts. 38 10 FILE TRANSFERS Terminus provides several built-in file transfer protocols and numerous options to control the operation of them. 10.1 FILE REQUESTER NOTES If you previously had used JR-Comm for file transfers you are most likely familiar with the capability it provided you with for keyboarding text to the remote system while it's internal file requester was open. The advantage of this feature is primarily noticed by floppy based Amiga users, it allows you to "pre-load" the file requester before starting a remote file transfer operation. Otherwise, the transfer could time out before the requester was done reading the disk directory. Well, nothing has changed in Terminus although it now uses external file requester libraries to select files for transfer. Terminus will launch a child process to manage the file requester so that you can still communicate with the remote system while the file requester is open. 10.2 ASCII SEND Terminus provides you with a very versatile facility for transmitting ASCII text files to a remote system. Due to the many ways that different systems need to have the text sent to them, Terminus has several options that will allow the transfer to complete normally. To start the ASCII send you use [TRANSFER][ASCII SEND...][i] to open the file requester for selecting the file you wish to send. Terminus will then open the stats requester and start transferring the file you select. There are two options, {TRANSFER}{CHAR DELAY}{H} and {TRANSFER}{LINE DELAY}{L}, that you can use to govern the rate at which characters and lines are sent. If the system that is receiving the file can't accept the file at full speed you should use either (or both) of these options to slow it down some. Another option that controls the rate at which characters are sent is {TRANSFER}{CHAR PACING}{A} which should be used whenever the remote system can only handle a few characters at a time. This option accomplishes this by looking for the character to be echoed back before sending the next character in the file. For this reason, this option will not work if the remote system does not perform character echoing. If you're planning on sending the text to a line editor there are other things that you might have to watch out for. First, some line editors will stop accepting input when a blank line is sent. To prevent this you can activate {TRANSFER}(EXPAND BLANKS}{B} so that when a blank line is seen it will be expanded to a single blank character to prevent the remote system from ending input. 39 The other thing to take into account are line editors that prompt you for each new line. These editors often will lose data or get confused if the next line is sent before the remote system has accepted the last line and output the prompt for the next line. {TRANSFER}{PROMPT CHAR}{M} allows you to select a decimal value equivalent to the prompt character, or one of the characters that remains constant for every prompt in a multi-character prompt. 10.3 RESIDENT PROTOCOLS All the file transfer protocols in use by Terminus strictly adhere to the specifications outlined in the various documents that are available for each protocol. The following is a short description of the protocols available. 10.3.1 XMODEM The grandfather of most every protocol in use by personal computers today. The XMODEM checksum protocol was created by Ward Christensen back in 1977. XMODEM, while widely supported, is not the most efficient or error-proof protocol to use for transferring data. It is recommended that you use one of the other protocols below for transferring data when available, only use XMODEM when no other protocol is present. 10.3.2 XMODEM-CRC The original XMODEM protocol modified with a 16 bit CRC polynomial for better error detection. Terminus will "step down" to XMODEM checksum if the sender does not recognize the initial CRC-16 handshake. As with XMODEM, this protocol is not that efficient due to the small 128 byte data blocks used to transfer data. 10.3.3 XMODEM-1K A variant of XMODEM-CRC that uses 1024 byte blocks which gives you higher throughput than the original XMODEM protocol by using 1024 byte data blocks for transmission. Some systems incorrectly call this YMODEM. As with XMODEM-CRC, Terminus will "step down" to XMODEM checksum if necessary. 10.3.4 YMODEM This is TRUE YMODEM(tm), which is a batch transfer protocol. The filename, date and file size are transferred in a separate header block at the beginning of each file that is transferred. This protocol also preserves the correct file size; the XMODEM and derivative protocols described above pad characters at the end of the file. Uploads using this option are restricted to block lengths of 128 bytes. 40 10.3.5 YMODEM-1K TRUE YMODEM(tm) except that it will force uploads to 1024 byte blocks. It is recommended that this version be selected except in cases where the system you are calling will only accept the smaller 128 byte block of the early versions of YMODEM. 10.3.6 YMODEM-G This variation of YMODEM is intended for error correcting modems and hard-wired connections. Because this protocol does no error correcting, it can dispense with the need for an acknowledgement of each transmitted block of data. The file is transferred with little delay and can achieve the highest throughput of any of the protocols listed here. If an error is detected, the transfer will be aborted, hence the need for an error-free connection in order to use this protocol with confidence. 10.3.7 ZMODEM This is one of the newest and most robust protocols available. It is capable of batch transfers, automatically initiated downloads, 32 bit CRC error checking, and a unique ability to resume a transfer that had been partially completed. Terminus supports one of the most complete implementations of the ZMODEM protocol as defined by the specification document written by ZMODEM's author, Chuck Forsberg. 10.4 NOTES ON XPR XPR is not a protocol but a specification for allowing external file transfer protocol modules to be used with Terminus. Included with the Terminus distribution are KERMIT and CIS B+ protocol modules, both have been tested and found operational with Terminus in all respects. Terminus normally manages the initialization of an XPR module via the option string variable XPRINIT$. In order to reduce the drudgery of typing in a default init string for each phonebook entry that uses an XPR module, you can assign a default environment variable that Terminus will read from your ENV: directory after selecting the desired XPR module. For example, say you wish to use the KERMIT XPR module and would like to take advantage of the use of an environment variable for it. Using a text editor, create a file named "xprkermit" that contains the appropriate init string for that module. You will need to write this file to your ENV: directory so that Terminus can find it. Please be aware that the default location for ENV: is the ram disk. In order to keep the environment string for future use you will need to copy it over to ENVARC: as well so that it will be reloaded into ENV: whenever you reboot your system. 41 Also take note that while Terminus provides an options requester for setting various internal options for an XPR, the requester and the options are under the control of the XPR module, not Terminus. Accordingly, Terminus is also unable to access these values, so it cannot create init strings or otherwise save these settings for future use. That is why the XPRINIT$ variable is present as well as the ability to locate environment variables to preload it with. Finally, once an XPRINIT$ is initialized it will not be overwritten unless you select another XPR module first. Select the same module to effectively reset the XPRINIT$ to the current state of the associated environment variable. 10.5 NOTES ON FLOW CONTROL ZMODEM and YMODEM-g are known as full-flow protocols due to their ability to send data without interruption. For ZMODEM transfers, you can use either CTS/RTS handshake (hardwire) or you can use XON/XOFF handshake. YMODEM-g requires a modem that supports CTS/RTS handshake due to its need for full 256 byte transparency. YMODEM-g does not have the ability to correct for errors, so it needs an error-corrected modem or otherwise error-free connection. Since almost every error-correcting modem supports CTS/RTS handshaking, this should not be a problem. 10.6 THE STATS REQUESTER This requester is used during file transfers. It displays several parameters that detail the status of the transfer and are listed as follows: Protocol Displays which protocol is being used for this file transfer. If an XPR based transfer is in progress the name of the library being used is displayed instead. Path Displays the path where the file is being read from or written to. The string "" is displayed when no path is present. Name Name of the file being transferred. File size Total size in bytes of the file being transferred. Uploads will always show a value here, downloads will only show a value when using a protocol that supports file information transfer, such as YMODEM and ZMODEM. Bytes xfer'd Total number of bytes transferred thus far. % xfer'd Percentage of file transferred. Based on bytes transferred to bytes left. A display of "0%" is used when the file size was not known at the start of the download. 42 Actual Elapsed transfer time. Remaining Estimated time remaining to complete transfer. Based on chars/sec and bytes left. A display of "--:--:--" is shown if file size was not known at the start of the download. Errs/block Error count for the current block being transferred. Errs/xfer Error count for the entire transfer. Chars/sec Computed characters per second for the current transfer. Based on bytes transferred and elapsed time. Status/error Most recent status or error message. There is also a bargraph located at the bottom of the requester that shows a graphical representation of the total percentage of the file transferred. It, like the decimal percentage displayed next to "% xfer'd" are active only when the file size is known beforehand. All uploads will show this, but only YMODEM and ZMODEM downloads (or XPR modules that support file information) have this active since the name, date and size of the file are sent at the beginning of the transfer. 43 11 FUNCTION KEY MACROS Function key macros give you up to 40 strings that can be sent out the serial port by pressing the function key that the string is assigned to. The first 10 macros are accessible via through . The other 30 are accessed by using the , and key modifiers along with a function key. Please be aware that certain emulations appropriate the function keys for their own use, so less than 40 might be available. The emulations that affect function key macros are: TTY/AMIGA - All 40 function key macros are available for your use. IBM/MONO - When {CONSOLE}{IBM DOORWAY MODE}{Y} or [MISC][DOORWAY?][H] are active both of these emulations are unable to use function key macros due to keyboard remapping for Doorway use. VT-52/102 - If a macro is not defined for keys through they will send the equivalent PF key that are also mapped to the top row of keys on numeric keypads for the A500, A2000 and A3000 keyboards. This is needed for A600 which has no keypad as well as the A1000 keyboard which does not have these four keys present on the keypad. VT-220 - A real VT-220 keyboard contains 20 function keys labeled F1 through F20. The F1 through F5 keys are hardcoded to special local functions that are not duplicated in the Terminus VT-220 emulation. For that reason, the through keys on your keyboard duplicate the operation described above for the VT- 52/102 emulation. The remaining function keys, F6 through F20, are programmable in much the same way Terminus function keys are in that any programmed text assigned to a key is transmitted out the serial port when the associated function key is pressed. They are initially assigned default strings when the emulation is first initialized and are reprogrammed via a remote command sequence. The through and through on your keyboard are dedicated to the F6 through F20 function keys. Although you are free to assign function key macros to these keys please remember that they can be overwritten by the remote system and that they are cleared when the emulation is first initialized. The and modified function keys are free for your use and are not touched in any way while using this emulation. 44 11.1 ESCAPE SEQUENCES In addition to the standard character escapes, there are several special escape sequences that are recognized in a function key macro. Please refer to ESCAPE SEQUENCES in the SCRIPTS section below for the description on the standard escape sequences. !$hex Send a hex character. !%decimal Character pacing, in decimal 1/100th seconds. The following escapes result in the termination of the current macro after the escape has been processed. Anything after the escape will be ignored. !=a-z Send global Terminus string variable. !&filename Launch Terminus script. !?filename Launch ARexx macro. !@filename Load a new macros file. !*filename Load a new phonebook file. !+scriptline Execute as a one-line script. !#decimal Chain to macro where decimal equals: 0-9 Function keys 1-10 alone. 10-19 " " " w/CTRL 20-29 " " " w/SHIFT 30-39 " " " w/ALT Where: hex - A two digit hexadecimal character, 00 - FF. decimal - Decimal number. a-z - Single character, a to z. filename - Valid AmigaDOS filename, unquoted. scriptline - Terminus script commands only. Use a ':' to separate multiple commands. 11.2 USING ONE LINE SCRIPTS When you use a function key macro as a one line script you are subject to the same restrictions as ARexx scripts when it comes to command scope limitations and script variables. Additionally, the following level 7 script commands are not legal for use from a function key macro: ASK GETINT GETSTRING INPUT WAIT WATCHDOG WHEN Please refer to the section on scripts below for more details. 45 12 USING THE SCRIPT RECORDER There are two methods you can use to start the script recorder, one is automatic while the other is manual. The manual method requires using [SCRIPTS][RECORD...][w] to define a script filename that the recorder will use to write the script commands to. This menu item is checkmarked to denote when the recorder is active. There is also an indicator "RECORD" present in the status line as well to further remind you when the recorder is active. The automatic method of starting the recorder is where this feature really shows its power. Although the dialer is what actually starts the recorder, you have to do two things beforehand in order to get it to work. First is to define a script file in {ENTRY}{SCRIPT}{T} of the entry you wish to create a login script for. The second is to select the entry for automatic recording. To enable auto-record you must hold down while selecting or quick- dialing the entry. You can tell when an entry is selected for auto-record by the letter "A" in the leftmost column of the phonebook entry list box. If the entry does not have a script file defined you will not be able to activate auto-record selection, although the entry will still be selected, it will be missing the "A" tag. Of course, you need to start the dialer and have it establish a connection in order to start the recorder. Again, the message "RECORD" will be present in the status line. Now that the recorder is active (with either method), it will begin recording data as it is received and your responses to them. The recorder doesn't simply copy everything unchecked, there is a set a rules it uses to determine how to create the commands in the login file. Basically, there are two ways that you enter data to a remote system. the first and most common is to enter something in response to a prompt from the remote system, for example, the string "Name: " sent from the remote would most likely be a request for your name, which you would enter after seeing it. The other is to press a key while data is being received, often to halt the display of some longish notice that some systems seem to always show you. Either way, the recorder will sample the data stream and collect the eight most recent characters received. If the line is quiet when you first begin to enter your response the recorder will use those characters as the prompt string for the script file. It will then collect your input and save it to the file as a response string. If the serial port is still receiving data when you press a key it will not save the last eight characters to the script file, so don't anticipate and enter your response too soon or the recorded script will not operate correctly when using it to automate your login. While the recorder normally waits for a to save your response, it also has a timer that is reset with each keypress. If it times out, the current response will be written, this is to accommodate the "hotkey" feature some systems offer. The timeout value is 1.5 seconds, again, don't anticipate things while recording or the resulting script may not execute 46 correctly. If you pause while entering a multi-character response you may end up with multiple SEND commands in the script, it will not disturb the operation of the script, but you may want to edit the file to "clean up" these statements if their presence bothers you. You should also be aware of the fact that Terminus inserts the escape sequence "\r" whenever or is pressed. This sequence is described in the scripts section under escape sequences and will send the current setting of {CONSOLE}{EOL OUT}{E} instead of a simple C/R that would be sent if the "^M" sequence was used. One thing to remember when using the auto-record method of recording is to use [PHONEBOOK][SEND PASSWORD][Z] to send the password defined in the phonebook entry. The recorder will then use the SPASSWORD script command instead of hardcoding the actual password into the script file. So, when you later update the password for that entry you can still use the login script without having to edit it first. When you're done recording, select [SCRIPTS][RECORD][R] to end the recording process and close the script file. One final note about recorded scripts. Some systems, mainly BBS', have the habit of changing the sequence that occurs during a login. This can range from the omission of a login news file if subsequent logins occur within a 24 hour period, to a completely different login sequence for each day of the week. If this is the case you should autorecord as many sessions as it takes to get all the variations that the remote system throws at you. The next step is a bit harder however, you'll need to create one or more WHEN statements that SEND the appropriate response so that the login script can execute correctly. Basically, anything that is not constant between each different login sequence should be put into a WHEN statement along with its appropriate SEND statement. There are 31 WHEN slots, so you should be able to create a solid login sequence for just about any system out there. The two examples that follow are portions of recorded scripts that illustrate this. Notice that the WAIT "re? ^[[0m" and SEND "\r" statements occur in both scripts, but a different number of hem is present in each recorded script. This represents the variable "More [Y]/n?" prompt that the BBS displays after each 24 lines of text. Further, since this example system only shows a daily news file to a user once in a 24 hour period and the file itself can vary in length, the number of prompts is not going to be the same with each login. This pair of statements should be converted to a WHEN statement so that the login script does not fail. The third script below shows what the final script for logging in could look like. The WHEN statement in that script will be able to handle the two types of logins that can occur. Also note that there are two WAIT "ue?" and SEND "\r" responses in each recorded script. The reason that these were not also converted to a WHEN/SEND sequence is due to the fact that the script completes after the second one is replied to. If they were changed to a WHEN the script would not "know" when to finish execution. This may seem a bit difficult to grasp at the moment, but the only way to get comfortable with recorded scripts is to begin experimenting. It may 47 take a few calls to verify that the merged changes work correctly, but once you've set it up you'll never have to worry about it again. Unless, of course, the system is changed and "breaks" your login script. Most sysops who are considerate of the cost of long distance users will try to not annoy callers by changing things too often or in a way that causes a login script to fail. Some need a little prodding to realize the impact of their actions. /* First recorded script */ WAIT "re? ^[[0m" SEND "\r" WAIT "re? ^[[0m" SEND "\r" WAIT "re? ^[[0m" SEND "\r" WAIT "re? ^[[0m" SEND "\r" WAIT "re? ^[[0m" SEND "\r" WAIT "es? ^[[0m" SEND "\r" WAIT "ue? ^[[0m" SEND "\r" WAIT "ue? ^[[0m" SEND "\r" END /* Second recorded script */ WAIT "re? ^[[0m" SEND "\r" WAIT "es? ^[[0m" SEND "\r" WAIT "ue? ^[[0m" SEND "\r" WAIT "ue? ^[[0m" SEND "\r" END /* Final login script */ WHEN 1 "re? ^[[0m" SEND "\r" WAIT "es? ^[[0m" SEND "\r" WAIT "ue? ^[[0m" SEND "\r" WAIT "ue? ^[[0m" SEND "\r" END 48 13 REMOTE SHELL OPERATION Terminus provides you with an integrated remote shell function that is accessed via the script command REMOTE. What happens is that a DOS handler named "TRCLIX:" (where X is the session number) is created. If TERMINUS1 is the current session name, then the DOS name would be "TRCLI1:". This handler is setup to act the same way as the AUX: device works. Unlike AUX: though, it does not get mounted via the Mount command, nor is it restricted to the internal serial port. You can have as many different remote shells as there are sessions running. When REMOTE is used without any parameters it uses the default AmigaDOS command "NewCLI" and the name of remote handler to construct the command "NewCLI TRCLIX:" for AmigaDOS to execute (see the description on the REMOTE command for details on how to use alternative shells). While Terminus has an active remote shell it disables script execution as well as the ability to quiet or change any settings related to the serial port. You also cannot save or load .def files, do any file transfers or use function key macros. You can use the capture, review buffer and clipboard quote/send features though. You also have local keyboard access to the remote shell via Terminus' main display so that you can monitor what is going on, or even enter commands locally. 13.1 CAVEATS OF REMOTE OPERATION The following restrictions and notes apply to using the REMOTE script command, please remember them to prevent any problems or unexpected surprises to occur. - Terminus normally inherits the path environment from the CLI that it was started from. However, this is not the case when Terminus is started via the Workbench icon. For that reason you will need to fully qualify any commands that are not located in the current directory or in C:. You would want to use the FROM command line option in this case to create a path environment, please refer to the description of the REMOTE command for details on this. - Although the remote CLI is compatible with any program that can be run from the local CLI, there are some programs that require an Amiga console.device to be used properly. Programs that fit in this category are "Ed", "More" and "ls". They require the presence of console.device or a work-alike in order to obtain the current size of the display they will be output text to. Terminus, of course, provides an Amiga emulation that enables these commands to function correctly. Do not confuse that with the local Terminus screen however. The remote system that is connected to the remote CLI is the one that needs to be console.device compatible. And while you can operate the remote CLI from the local session, it does not respond to the console.device requests, only the remote system can supply those responses. 49 - Terminus also monitors the state of the carrier detect (DCD) signal and will surreptitiously abort the remote CLI if carrier is lost while the remote CLI is active. This is necessary in order for control to be returned to the suspended script, otherwise Terminus will effectively be hung. In order for the script to be able to determine if the remote CLI terminated normally there is an integer script variable labeled ABORTREMOTE which will have a value of 1 if an abort condition exists, 0 is used for a normal return from the remote CLI. Be aware that while the remote CLI is terminated, the shell and any program that it was running is not. All that is done is to remove the TRCLIX: handler. You should handle the situation by examining ABORTREMOTE and performing a warm reboot of your system to prevent other problems from occurring due to the hung shell that was attached to the remote CLI handler. - Also be aware of the need to redirect input/output when necessary for programs that would otherwise open their own window which would, in effect, hang Terminus as well. Commands such as the 2.x version of the full screen editor "Ed" that is supplied with AmigaDOS. It normally opens a Workbench window, but can be redirected to use the current CLI instead by using the command line option WINDOW. The following is a simple script that calls Ed with the proper command line for use with the remote CLI. .key file ed window * This script is enclosed with the Terminus distribution archive and is named "Red". If you wish to use this script copy it to your S: directory. 50 14 MENUS Frequently used menu items in Terminus have keyboard equivalents so that you can use them without having to move from the keyboard to the mouse if you don't want to. The keyboard equivalents are case sensitive, so they might take some getting used to if you are coming to Terminus from JR-Comm. Items that have an ellipses (a "..." sequence) indicates that the item will open a requester as part of its execution. Item names that have a question mark indicate modes which use a checkmark in the menu item when its associated mode is active. 14.1 PROJECT MENU 14.1.1 [PROJECT][LOAD DEFAULTS...] This menu item opens the file requester using the pathname defined in {PATHS}{TERMINUS}{T}, the default filename used is "terminusX.def", where 'X' is the session number. If you change the filename it will be remembered as long as the session is running. 14.1.2 [PROJECT][WRITE DEFAULTS...] Use this item to save the current Terminus settings to a default file. The path and filename actions are the same as with [PROJECT][LOAD DEFAULTS...]. NOTE! If you wish to create a global defaults file, use the name "terminus.def". This file will be loaded into any Terminus session that does not have it's own defaults file. 14.1.3 [PROJECT][ICONIFY][I] Will close the Terminus display and open a small icon window on the Workbench screen. To exit the iconified state you can either select the close gadget attached to the icon window or use the script command SCREENTOFRONT from within an ARexx script. Each icon window is titled with the session name so that you can differentiate between multiple sessions that might be iconified simultaneously. NOTE! The ICONIFY script variable can be used to accomplish the same function as this menu item. ARexx scripts can also uniconify Terminus via the command, SCREENTOFRONT. CAUTION! Do not iconify an active session as the serial device is idled as well as the loss of the main display window. Any file transfer, dialing action or other operation will be canceled prior to bringing up the inconify window. 51 14.1.4 [PROJECT][ABOUT...][?] Displays version number, release date and registration/support information about the version of Terminus you are using. 14.1.5 [PROJECT][QUIT][Q] Exit Terminus session. If DCD (carrier detect) is present when you attempt to exit Terminus a requester will be posting asking you to verify that you truly intend to quit Terminus. If you answer YES then Terminus will close any open capture file, disconnect the modem (which will drop carrier as well) and halt any other operation in progress before exiting the session. NOTE! This action does not execute a logoff script that may be assigned to the script variable LOGOFF$ before finishing. CAUTION! If DCD is present and you're using any of the many utilities that immediately respond to a system requester then you will not be able to exit Terminus since the requester is never posted. You will need to drop carrier or set {MODEM}{IGNORE CARRIER DETECT}{R}. 14.2 PHONEBOOK MENU 14.2.1 [PHONEBOOK][DIRECTORY...][z] Opens the phonebook requester for adding, editing and deleting phonebook entries, selecting entries for dialing and other phonebook related maintenance. You can also open the phonebook while dialing to add or remove entries from the selection list. 14.2.2 [PHONEBOOK][DIAL NUMBER...][j] This item will ask for a phone number and create a phonebook entry with the name "Number dial". The dialer will then be started if it is not already dialing, otherwise the entry will be added to the end of the selected dialing list. 14.2.3 [PHONEBOOK][REDIAL...][r] Restarts the dialer. Nothing occurs if the dialer is already open or there are no selected entries waiting to be dialed. 52 14.2.4 [PHONEBOOK][UPDATE ENTRY][y] Copies the current Terminus session to the last entry that the dialer connected with. If no entry was connected with, or a new phonebook file was loaded, this function will act the same as [PHONEBOOK][CREATE ENTRY][Y]. 14.2.5 [PHONEBOOK][CREATE ENTRY...][K] Asks for a name that will be used to create a new phonebook entry using the current settings in effect. This feature is equivalent to {PHONEBOOK}{ADD...}{A}. 14.2.6 [PHONEBOOK][SEND PASSWORD][Z] Transmits the contents of the password for the current phonebook entry out the serial port. No action occurs if an entry has not been connected with, or a new phonebook file has been loaded. 14.3 BUFFER MENU 14.3.1 [BUFFER][REVIEW FROM...][B] Activates the review buffer from the last displayed position. This function will operate the same as [BUFFER][REVIEW AT END...][b] if the last position has been overwritten by newly captured data, a file is loaded into the buffer or the review buffer had not been opened and repositioned previously. 14.3.2 [BUFFER][REVIEW AT END...][b] Enters the review buffer at the end of the buffer contents. 14.3.3 [BUFFER][LOAD BUFFER...] Use this item to load the review buffer with the contents of the selected file. Initially set to the current directory when first opened, any path changes are remembered for the duration of the session only. The buffer size may be increased if the file is larger than the current size. Maximum size is determined by the following formula: MaxSize = MIN(2097152, FreeMemory + CurrentBufferSize - 102400) NewSize = MIN(MaxSize, (FileSize / 800) * 1024) Basically, the maximum size for the review buffer is computed as the lesser of two megabytes or total free memory less 100k. The new size of the buffer is the lesser of the maximum size or the 53 filesize after taking into account average review buffer overhead for every 1024 bytes of data. The value of 224 is used as a conservative average overhead based on 8 bytes of control information per line of text in the review buffer and an average length of 20 bytes per line for a total of 40 lines of text for every 800 bytes of data. {GENERAL}{REVIEW BUFFER SIZE}{R} will be changed to reflect the new size of the review buffer. If the new size is not large enough to fit the entire file (or the file data exceeds average review buffer overhead, ie. less than 20 bytes per line average) the buffer will contain the end portion of the file that does fit. Also, the buffer size will not be decreased in size if the file is smaller than the current buffer size. 14.3.4 [BUFFER][CLEAR BUFFER][C] Clears the buffer space. 14.3.5 [BUFFER][QUOTE CLIPBOARD][V] Use this item if you would like to "quote" the contents of the clipboard. Each text line will be prefixed with the current quote string defined in {GENERAL}{QUOTE STRING}{Q} and will be truncated to the length defined by {GENERAL}{QUOTE LENGTH}{U}. The status line indicator CLIP is displayed while the contents of the clipboard is being sent. 14.3.6 [BUFFER][SEND CLIPBOARD][v] Will send the contents of the clipboard out the serial port exactly as is. The status line indicator CLIP is displayed while the contents of the clipboard is being sent. 14.3.7 [BUFFER][START SEARCH...][e] Prompts for a case insensitive text string to search for in the review buffer. If the text is located, the review buffer will be activated if it is not already and then the cursor will be moved to the start of the matched string. 14.3.8 [BUFFER][START EXACT SEARCH...][E] Same actions as the item above except that case is sensitive. 54 14.3.9 [BUFFER][REPEAT SEARCH][f] Reexecute the last search operation from current review buffer cursor position. This menu item is disabled until a search operation of either type described above has been attempted and was successful. It will again become disabled once the repeated search attempt fails or when the review buffer is cleared or loaded with a new file. 14.4 TRANSFER MENU 14.4.1 [TRANSFER][UPLOAD...][u] Opens the file requester using the pathname defined in {PATHS}{UPLOADS}{U} to select file(s) for upload using the currently selected file transfer protocol. 14.4.2 [TRANSFER][ADD UPLOAD...][L] Opens the file requester using the pathname defined in {PATHS}{UPLOADS}{U} to add one or more files to the current upload list while an upload is in progress. This item is disabled when an upload is not in progress or when you're using a protocol that does not perform batch transfers. 14.4.3 [TRANSFER][DOWNLOAD...][d] Either starts a download immediately or opens the file requester using the pathname defined in {PATHS}{DOWNLOADS}{D} to define a filename to download to depending on the type of protocol that is currently selected. 14.4.4 [TRANSFER][ASCII SEND...][i] Opens the file requester using the pathname defined in {PATHS}{UPLOADS}{U} to send a text file using the current settings of: {TRANSFER}{EXPAND BLANKS}{B} {TRANSFER}{CHAR PACING}{A} {TRANSFER}{PROMPT CHAR}{M} {TRANSFER}{LINE DELAY}{L} {TRANSFER}{CHAR DELAY}{H} 14.4.5 [TRANSFER][OPEN CAPTURE...][O] Opens the file requester using the pathname defined in {PATHS}{CAPTURE}{P} to open a new capture file, deletes the contents of a file if it already exists. Does not save the contents of the review buffer. 55 The status line indicator CAP is present while the capture file is open. 14.4.6 [TRANSFER][OPEN W/SAVE...][o] Same as [TRANSFER][OPEN CAPTURE...][O] except that the contents of the review buffer is saved as well. The status line indicator CAP is present while the capture file is open. 14.4.7 [TRANSFER][APPEND CAPTURE...][A] Opens the file requester using the pathname defined in {PATHS}{CAPTURE}{P} to open a capture file in append mode, creates a new file if one does not already exist. Does not save the contents of the review buffer. The status line indicator CAP is present while the capture file is open. 14.4.8 [TRANSFER][APPEND W/SAVE...][a] Same as [TRANSFER][APPEND CAPTURE...][A] except that the contents of the review buffer is saved as well. The status line indicator CAP is present while the capture file is open. 14.4.9 [TRANSFER][CLOSE CAPTURE][c] Close the currently open capture file. 14.5 SCRIPT MENU 14.5.1 [SCRIPT][START...][s] Opens the file requester using the pathname defined in {PATHS}{SCRIPTS}{S} in order to select and start a script file. The status line indicator SCRIPT will be displayed while the script is executing. Two other indicators, WAITING and INPUT are related to script operation as well. 14.5.2 [SCRIPT][STOP][t] Stop the currently executing script. You can restart a stopped script via [SCRIPT]RESUME][m]. NOTE! If this operation is performed when an ARexx script is executing it will return a value of "KILL" as well as a 56 numeric RC value of RC_FATAL to the ARexx script. You cannot resume an ARexx script either. 14.5.3 [SCRIPT][RESUME][m] Resumes execution of a script stopped via [SCRIPT][STOP][t]. NOTE! This operation has no effect on a stopped ARexx script. 14.5.4 [SCRIPT][RECORD...][w] Opens the file requester using the pathname defined in {PATHS}{SCRIPTS}{S} to select a script for record mode. The status line indicator RECORD is displayed while recording is in progress. 14.5.5 [SCRIPT][SEND AREXX MACRO...][n] Opens the file requester using the pathname defined in {PATHS}{REXX}{R} so that you can select an ARexx macro to send to the ARexx master process for asynchronous execution. 14.5.6 {SCRIPT][ABORT AREXX MACROS][k] Tries to halt any active ARexx macros that were launched by the current Terminus session. CAUTION! This function does not return until all macros have terminated, so make sure that the macros that are executing are not waiting for an external event, especially one that Terminus has to respond to. Otherwise the current session will hang. 14.6 SETTINGS MENU 14.6.1 [SETTINGS][SERIAL...][1] Opens the serial settings requester. 14.6.2 [SETTINGS][TRANSFER...][2] Opens the transfer settings requester. 14.6.3 [SETTINGS][MACROS...][3] Opens macros the settings requester. 57 14.6.4 [SETTINGS][PALETTE...][4] Opens the palette requester. 14.6.5 [SETTINGS][PATHS...][5] Opens the paths requester. 14.6.6 [SETTINGS][MODEM...][6] Opens the modem settings requester. 14.6.7 [SETTINGS][PORT...][7] Opens the port settings requester. 14.6.8 [SETTINGS][GENERAL...][8] Opens the general settings requester. 14.6.9 [SETTINGS][CONSOLE...][9] Opens the console settings requester. 14.7 MISC MENU 14.7.1 [MISC][RESET TIMER] Reset the online timer shown in the status line. 14.7.2 [MISC][KILL REMCLI][J] This menu item is only enabled while a remote CLI is in effect. It's purpose is to remove the remote CLI handler and to resume the suspended script that initiated the remote session. The script variable ABORTREMOTE will also be set to 1 as a result of this operation. 14.7.3 [MISC][SEND BREAK][g] Sends a break signal out the serial port. The length of the break signal is defined in {PORT}{BREAK LENGTH}{B}. 14.7.4 [MISC][HANGUP MODEM][h] The state of {MODEM}{DTR HANGUP (Z)}{Z} determines which method Terminus will use to place the modem "on hook". If not active, Terminus sends the command string defined in {MODEM}{HANGUP 58 CMD}{H} otherwise it closes the serial device for one full second in order to drop the DTR signal. Your modem must be able to react to a change in state of DTR in order for this option to work. 14.7.5 [MISC][RESET TERMINAL][X] Resets the console the default state as defined by the current console definition file. Also clears the display and resets the foreground and background pen colors to the default values. 14.7.6 [MISC][CLEAR SCREEN][x] Clears the console display and positions the cursor to the home location. 14.7.7 [MISC][PRINT SCREEN][p] Sends the current text content of the console to the printer. This function is not operational if printer controller mode is active when using one of the VT-xx emulations. 14.7.8 [MISC][CHAT?][G] Toggle chat mode state, active state shown with a checkmark. This feature can also be controlled from a console definition file via {CONSOLE}{CHAT MODE}{A}. 14.7.9 [MISC][DOORWAY?][H] Toggle IBM Doorway mode, active state shown with a checkmark. This mode is only active when using the IBM Color or Mono emulations and can be controlled from a console definition file via {CONSOLE}{IBM DOORWAY MODE}{Y}. 14.7.10 [MISC][PRINTER?][P] Activate/deactivate printer output for all received text, active state shown with a checkmark. This function is not operational if printer controller mode is active while using one of the VT-xx emulations. The status line indicator PRT is present while the printer is open. 14.7.11 [MISC][HEX DISPLAY?] Activate/deactivate hexadecimal display mode, active state shown with a checkmark. 59 14.7.12 [MISC][QUIET SERIAL?] Activate/deactivate the serial port. The serial device is not closed when the port is inactive, only pending read requests are aborted. The status line indicator QUIET is present when the port is inactive as well. 60 15 PHONEBOOK REQUESTER This section details the various gadgets that control the operation of the phonebook requester. Please refer to the section on using the phonebook above to learn how to manage phonebook entries and how to activate the dialer. 15.1 {PHONEBOOK}{LOAD PHONEBOOK...}{L} Opens the file requester using the pathname defined in {PATHS}{TERMINUS}{T} to load a new phonebook file into Terminus. The default filename used is "terminusX.phones". Changes to the filename are only retained during the current session only. The current list will be flushed first. 15.2 {PHONEBOOK}{SAVE PHONEBOOK...}{V} Opens the file requester and handles the filename in the same manner as {PHONEBOOK}{LOAD PHONEBOOK...}{L}. Used to save the current contents of the phonebook to a file. NOTE! If you want to create a global phonebook use the filename "terminus.phones". It will be loaded for any session that does not have it's own phonebook file present. Also remember that the phonebook is automatically saved at the end of the session or when a new phonebook is loaded after connecting with one or more entires. This is needed so that the last connect date information for each entry can be updated and saved. 15.3 {PHONEBOOK}{DISPLAY}{I} {C}:NAME (NAME COMMENT DATE) This gadget determines how the phonebook entries will be displayed in the list box. 15.4 {PHONEBOOK}{SORT ORDER}{S} {C}:NAME (NAME NUMBER DATE SELECT) The selected mode determines what item for each phonebook entry will be used to sort the list when {PHONEBOOK}{SORT}{R} is used. You can sort the entries in NAME, NUMBER, DATE and SELECT order. While the first three are self explanatory, the SELECT mode may seem confusing. When you sort using this mode the entries are sorted based on the order in which you selected them. Any entries left unselected will be move to the bottom of the list. If there are no entries selected then the list will not be touched. 61 15.5 {PHONEBOOK}{EDIT...}{E} Selecting this gadget will open the phonebook entry requester for editing the contents of the highlighted entry. 15.6 {PHONEBOOK}{ADD...}{A} Click on this gadget when you wish to add a new phonebook entry to the list. The entry will be initialized to the name "New Entry" and will inherit the current serial and transfer settings. Be aware that you must enter at least one phone number in {ENTRY}{PHONE #1}{1} or the entry will not be added to the phonebook. NOTE! The entry will be inserted into the phonebook directly below the currently highlighted entry. 15.7 {PHONEBOOK}{DELETE}{T} Use this gadget to delete the highlighted entry. 15.8 {PHONEBOOK}{UNSELECT}{U} Choose this gadget when you wish to deselect all selected entries. 15.9 {PHONEBOOK}{P/W...}{P} This gadget opens a string requester for changing the contents of the master password. No password is defined by default, if you intend on using the automated password generation feature you must define a password here first. 15.10 {PHONEBOOK}{SORT}{R} This gadget will sort the list based on the mode selected in {PHONEBOOK}{SORT ORDER}{S}. 15.11 {PHONEBOOK}{DIAL...}{D} The dialer will be started if there are any selected entries present in the phonebook when this gadget is selected. The dialer can also be started by double-clicking on an entry or by highlighting, then selecting an entry via . NOTE! Use the modifier if you want to have the automated script recorder activated for an entry that you select for dialing via these last two methods. You must have defined a script name for an entry beforehand to use this feature. 62 15.12 KEYBOARD CONTROLS The following keyboard sequences are recognized in the phonebook requester of Terminus: Moves highlight bar up towards the top of the entry list, wraps to the last entry in the list if you try to move past the top entry. The modifier moves up a page at a time and the operator moves to the top of the list. Moves the highlight bar down towards the bottom of the entry list, wraps to the top of the list when you try to move past the last entry in the list. The modifier moves down a page at a time and the operator moves to the bottom of the list. Select/deselect currently highlighted entry. When used with selects an entry for auto-recording if a script file is defined for the entry. Unselects an already selected entry, otherwise it selects an entry for dialing, places it at the head of the select list, closes the phonebook and starts the dialer. Use the modifier to activate auto-record if a script file is defined for the entry. A single-click selects/deselects an entry, a double-click selects an entry, places it at the head of the select list, closes the phonebook and starts the dialer. Use the modifier to activate auto-record if a script file is defined for the entry. 63 16 ENTRY REQUESTER This requester is accessed via several methods, categorized as follows: - Create a new entry with {PHONEBOOK}{ADD...}{A}, or [PHONEBOOK][CREATE ENTRY...][K]. - Edit an existing entry with {PHONEBOOK}{EDIT...}{E}. - Update the last dialed entry with [PHONEBOOK][UPDATE ENTRY...][y]. This option will create a new entry if an entry isn't present for updating, you have to connect to a system via the dialer in order for this situation to be in effect. In all cases, selecting {ENTRY}{CANCEL}{C} will disregard any changes to an existing entry, new entries will be deleted. Additionally, if a new entry was created and it does not have a phone number defined in {ENTRY}{PHONE #}{1} it will not be added to the phonebook even if {ENTRY}{OK}{O} is selected. 16.1 {ENTRY}{NAME}{E} {S}: "New Entry" | "Number Dial" (new entries only) This gadget contains the name of the phonebook entry. Newly created entries will have the name "New Entry" present. Entries that were created via [PHONEBOOK][DIAL NUMBER...][j] have the string "Number Dial" instead. You will want to change this to a meaningful name prior to exiting the entry requester. 16.2 {ENTRY}{COMMENT}{M} {S}: The contents of this gadget are not used by Terminus. It is for your use to put a helpful comment about this entry. You can display comments via the {PHONEBOOK}{DISPLAY}{I} gadget. 16.3 {ENTRY}{CAP. FILE}{F} {S}: Enter a filename here if you would like the dialer to open a capture file in append mode once a connection has been established. Nothing happens if the string is left blank. 64 16.4 {ENTRY}{SCRIPT}{T} {S}: The dialer will begin executing (or auto-recording) the script file defined here when a connection is established. You must enter a filename here if you plan on having any function key macros loaded when the dialer makes a connection for this entry. Use {ENTRY}{MACROS...}{A} to define the function key macros for this entry after you have entered a filename here. NOTE! By default Terminus scripts are assumed and are only looked for in {PATHS}{SCRIPTS}{S}. You can have an ARexx script launched (but you cannot auto-record one) if the postfix ".trx" is appended to the filename. 16.5 {ENTRY}{GET DEFINITION...}{G} This gadget opens up the file requester so that you can select a console definition file that will be used to reconfigure the console when the dialer makes a connection. 16.6 {ENTRY}{RESET TIMER}{I} {F}: TRUE If this option is TRUE, it will cause the dialer to reset the online timer after establishing a connection. 16.7 {ENTRY}{CENTS/MIN.}{/} {I}:0 (0 - 1000) This gadget defines the increment value used in the online timer to show connection time as a monetary value. This is not meant to be audit trail quantity, just a guideline. 16.8 {ENTRY}{PHONE #1}{1} 16.9 {ENTRY}{PHONE #2}{2} 16.10 {ENTRY}{PHONE #3}{3} 16.11 {ENTRY}{PHONE #4}{4} {S}: These four gadgets are where you place the phonenumber(s) for this entry. You must place them in increasing order starting with {ENTRY}{PHONE #1}{1} since the dialer will move to the next entry when an empty phonenumber string in the current entry being dialed is encountered. 65 16.12 {ENTRY}{PREFIX}{X} {C}:#1 (#1 #2 #3 #4) This gadget determines which of the four dialing prefixes (see the MODEM requester description below) the dialer will use when dialing this entry. 16.13 {ENTRY}{P/W TYPE}{Y} {C}:FIXED (FIXED ALPHA NUMERIC ALPHANUM) This gadget is used in conjunction with {PHONEBOOK}{P/W...}{P} and {ENTRY}{P/W LENGTH}{L} to generate a password. Normally, this gadget is set to FIXED so that the current entry password remains unchanged. When you choose to generate a new password, select the type of password you want Terminus to generate for this entry. You must have defined a master password via {PHONEBOOK}{P/W...}{P} first in order to select a password type. To actually generate the password you will also have to select {ENTRY}{OK}{O} to complete the operation. After the password has been created this gadget will be reset to FIXED. 16.14 {ENTRY}{P/W LENGTH}{L} {I}:8 (1 - 20) The value in this gadget is used in conjunction with {ENTRY}{P/W TYPE}{Y} for automated password generation. 16.15 {ENTRY}{SERIAL...}{S} Opens the same serial settings requester described below. The settings in this requester do not affect the main Terminus serial settings, just the settings for this phonebook entry. 16.16 {ENTRY}{XFER...}{R} Works the same as {ENTRY}{SERIAL...}{S} gadget described in the previous paragraph except that this one deals with the transfer settings. 16.17 {ENTRY}{MACROS...}{A} This gadget works just like the previous two for macros. As mentioned in the description for {ENTRY}{SCRIPT}{T}, you must have a script filename defined before being able to access the macros requester in order to define macro definitions for this entry. 66 16.18 {ENTRY}{P/W...}{W} This gadget opens the string requester to update the current password defined for this entry. You can either enter a password of your own choice or have Terminus create one for you automatically via {ENTRY}{P/W TYPE}{Y} and {ENTRY}{P/W LENGTH}{L}. Both are described above. Remember, in order to generate passwords automatically you must first define a master password in {PHONEBOOK}{P/W...}{P}. 16.19 {ENTRY}{OK}{O} You must terminate the requester by selecting this gadget if you wish to save the changes you've made to this entry. Also, the entry will be deleted if {ENTRY}{PHONE #1}{1} is blank. 16.20 {ENTRY}{CANCEL}{C} This gadget will close the requester without updating the entry, all changes will be lost. As with {ENTRY}{OK}{O} described above, the entry will be deleted if {ENTRY}{NAME}{E} is equal to "New Entry" and {ENTRY}{PHONE #1}{1} is blank. 67 17 SERIAL REQUESTER The serial requester contains settings that control the serial device. The settings here can be changed at any time (except when dialing or transferring files) without causing a line disconnect. A separate requester for the settings (the port requester) require a line disconnect and are described in a separate section below. The settings described here can also be controlled via status line gadgets, please see the section on the status line described above for details on these gadgets. 17.1 {SERIAL}{BAUD}{B} {C}:2400 (110 300 600 1200 2400 4800 9600 19200 31250 38400 57600 115200) This gadget selects the baud rate for the serial device. It has common baud rates of 110 to 115kbaud. 17.2 {SERIAL}{PARITY}{P} {C}:NONE (NONE EVEN ODD MARK SPACE) This gadget determines the parity used by the serial port. 17.3 {SERIAL}{DUPLEX}{D} {C}:FULL (FULL HALF ECHO) While not actually a serial device setting, it is located here because duplex is often thought of as being an integral part of serial I/O. There are three states that this gadget can have, FULL, which does not echo keyboarded data to the screen, HALF, which does, and ECHO which transmits received data back to the remote system. 17.4 {SERIAL}{DATA LENGTH}{L} {I}:8 (7 - 8) There are two values that this gadget can be set to, 7 or 8. 17.5 {SERIAL}{STOP BITS}{S} {I}:1 (1 - 2) This gadget also has two values, 1 or 2. 68 17.6 {SERIAL}{XON/XOFF}{X} {F}: FALSE This gadget will activate XON/XOFF (also called software flow control) when set TRUE. 69 18 TRANSFER REQUESTER This requester holds all the settings that are related to file transfers. Terminus has several file transfer protocols built in as well support for the XPR external protocol library standard. 18.1 {TRANSFER}{EXPAND BLANKS}{B} {F}: FALSE This gadget as well as the next four gadgets deal with ASCII file transfers. When this gadget is TRUE it will cause Terminus to send a space character, 0x20, whenever a blank line is encountered. This option is useful for sending text files to systems that terminate input when a blank line is entered. 18.2 {TRANSFER}{CHAR PACING}{A} {F}: FALSE This flag option is used with ASCII send when the remote system cannot handle multiple characters, even when paced by delay with {TRANSFER}LINE DELAY}{L} or {TRANSFER}{CHAR DELAY}{H}. This option requires that the remote system is operating in character echo mode since it waits for the character to be received prior to sending the next character in the file. 18.3 {TRANSFER}{PROMPT CHAR}{M} {I}:0 (0 - 255) decimal ASCII This gadget, when not zero, will force Terminus to wait for the reception of this character prior to sending another line of text. The range is from 0 (disabled) to 255. Please refer to the appendix at the end of this document for list of ASCII characters in the standard Amiga ISO font. This option is normally used when sending text files to systems that have line oriented editors and can't handle multiple lines being sent. Selecting the proper character value can be a bit tricky if there are several characters within the prompt. Keep in mind that Terminus will not begin searching for the prompt character until after a carriage return and/or linefeed has been received, this prevents the situation where the previous line sent contains the prompt character. Try to use the last character in a multi-character prompt to make sure that the remote system is prepared to receive the next line of text. 70 18.4 {TRANSFER}{LINE DELAY}{L} {I}:0 (0 - 1000) 1/100th second The value in this gadget determines how many 1/100th's of a second Terminus will wait before sending the next line of text. This option is sometimes referred to as "line pacing". 18.5 {TRANSFER}{CHAR DELAY}{H} {I}:0 (0 - 1000) 1/100th second As with {TRANSFER}{LINE DELAY}{L}, the value here is also in 1/100th's of a second and makes Terminus wait that long after sending each character. It is often referred to as "character pacing" but should not be confused with {TRANSFER}{CHAR PACING}{A}. 18.6 {TRANSFER}{BINARY TRANSFER}{N} {F}: TRUE This gadget tells Terminus to send the file "as is". If this option is not active Terminus will do end-of-line conversion from/to Amiga text file conventions to/from CR/LF styled end-of-line sequences. NOTE! During a ZMODEM download this option, when active, will override the sender's attempt at doing an end-of-line conversion during the transfer. 18.7 {TRANSFER}{AUTO CHOP D/L}{D} {F}: FALSE This option controls how the last block in an XMODEM file download is handled. This protocol pads the last block of data to a fixed length when the remaining data size is less then the required block size. This causes a problem when receiving executable files since AmigaDOS will not run them if the padded data is written to the end of the file. If you plan to download an executable file using this protocol you must activate this option in order to run the executable after receiving it. 18.8 {TRANSFER}{SAVE ABORTED}{V} {F}: TRUE The state of this option determines if Terminus will save or delete a partial file due to an aborted file transfer, whatever the reason. If the system you're calling is able to do a ZMODEM resume (or with an XPR protocol that has partial file completion) you should activate this option so that you do not have restart the transfer from the beginning again. 71 NOTE! You cannot do a ZMODEM resume if end-of-line conversion is in effect since it's not possible as explained above for {TRANSFER}{BINARY TRANSFER}{N}, ZMODEM resume requires a file to be received with that mode set TRUE. If the file was received with that mode FALSE it makes little sense to save the file if the transfer is aborted. 18.9 {TRANSFER}{RELAXED TIMING}{E} {F}: TRUE Some systems require a bit more leeway when transferring files due to system delays that cause the transfer timing to exceed protocol specifications. If you're experiencing a high rate of aborted transfers you might want to try activating this option to see if it eliminates the problem. 18.10 {TRANSFER}{PRE-ACK D/L}{K} {F}: FALSE If you're using an error-corrected modem connection (or a direct, computer-to-computer connection) and don't have YMODEM-g or ZMODEM (or other streaming protocol) common to each end, you can increase throughput with an XMODEM or YMODEM file transfer at the expense of error correction, you'll still have error detection, but the connection itself has to be reliable since any error will cause the transfer to abort immediately. What happens when this option is in effect is that "forward acknowledgement" takes place, the block is assumed to be received correctly, so it is ACK'd beforehand. That's also why the error correction cannot occur, a bad block can't be NAK'd since it was already ACK'd. 18.11 {TRANSFER}{PROTOCOL}{P} {C}:XMODEM (XMODEM XMODEM-CRC XMODEM-1k YMODEM YMODEM-1k YMODEM-g ZMODEM XPR) This gadget selects the desired file transfer protocol for transferring files. All options except XPR are internal protocols. An XPR module requires the related gadgets in {TRANSFER}{XPR LIBRARY...}{Y} to be configured prior to using the module for transferring files. 18.12 {TRANSFER}{ZMODE}{Z} {C}: Ignore (IGNORE NEWER/LONGER CRC APPEND OVERWRITE NEWER DIFFERENT PROTECT RENAME) The ZMODE setting determines what is done when a file that is about to be sent is already present on the receiving system. As each mode 72 implies, a specific parameter is checked before allowing the file to be sent, they are detailed as follows: IGNORE - No check is done, send the file regardless. NEWER/LONGER - If the date or length of the file is newer or longer, send the file. CRC - Performs a CRC check on the file, transfer it is they differ. APPEND - Append the file to the existing file. OVERWRITE - Also called "clobber" mode, overwrites the file without warning. NEWER - If the filedate is newer. DIFFERENT - If the filedate, size or CRC is different. PROTECT - The opposite of overwrite mode, protects any existing files on the receiving system. RENAME - This option only pertains to received files. It's purpose is for bypassing the query requesters that Terminus normally posts when a file with the same name is already present in the download directory. If this mode is set then an automatic filename rename operation is done. 18.13 {TRANSFER}{ZWINDOW SIZE}{W} {I}:0 (0 - 32) 1k blocks The ZMODEM protocol is normally a "streaming" protocol, which means that data is continuously being sent. Although this method often increases throughput dramatically, it can also cause problems if there is some part of the connection between systems that cannot handle a continuous stream of data. In that case a buffer is going to overflow somewhere and cause data loss. To prevent this from occurring you can set the size of a "window" that the ZMODEM protocol will use to regulate the amount of data sent before requesting an acknowledgement from the receiver before sending more data. Using this option essentially turns ZMODEM into a "segmented" protocol much like XMODEM or YMODEM, so use it only when needed as it can degrade file transfer throughput considerably. 18.14 {TRANSFER}{ZMODEM RESUME}{R} {F}: FALSE If this option is enabled Terminus will attempt a ZMODEM resume if a file of the same name already exists and is shorter than the file about to be sent. 73 NOTE! This option overrides a transfer with end-of-line conversion 18.15 {TRANSFER}{EXTENDED PATHNAMES}{X} {F}: FALSE This option controls how Terminus handles the filename that is sent when downloading a file. If you wish to ignore all extended pathname information in the filename that is received, such as volume and directory names, disable this gadget. The root filename will be used and it will be downloaded to the path defined in {PATHS}{DOWNLOADS}{D} instead. When this option is enabled the complete pathname received will be used. Terminus will check to make sure that the entire path exists before beginning the transfer. It will abort the transfer if the check fails, it does not create directories either, that is your responsibility. 18.16 {TRANSFER}{AUTO DOWNLOAD}{U} {F}: TRUE The ZMODEM protocol also has the ability to automatically begin a download when the remote ZMODEM is ready to start sending one or more files. Enable this option if you wish to have automatic ZMODEM downloads. 18.17 {TRANSFER}{AUTO D/L CHALLENGE}{G} {F}: FALSE In order to prevent the possibility of a spurious burst of noise from fooling Terminus into initiating a ZMODEM download this option enables logic that will verify if the remote system truly wants to start a ZMODEM file transfer. 18.18 {TRANSFER}{ESCAPE CTRL CHAR}{T} {F}: FALSE ZMODEM also is capable of sending binary files through marginally transparent networks that need to have all control character removed from the data stream in order to allow the transfer to complete successfully. This option, when enabled, will cause Terminus to encode control characters prior to sending them. NOTE! It is not recommended to use this option unless it is absolutely necessary since it will severely degrade the throughput of the transfer. 74 18.19 {TRANSFER}{USE 32 BIT CRC}{3} {F}: FALSE When this option is enabled ZMODEM file transfers will use the 32 bit Cyclic Redundancy Check for error detection. It is about five orders of magnitude better in detecting errors over the 16 bit CRC that is used when this option is disabled. Both ends much be able to handle 32 bit CRC or else the transfer will use the 16 bit CRC instead. 18.20 {TRANSFER}{SKIP NOT LOCAL}{S} {F}: FALSE When this option is enabled it will cause ZMODEM file transfers to skip any file that does not exist on the system that is supposed to receive the file. 18.21 {TRANSFER}{XPR LIBRARY...}{Y} Opens the XPR library requester for selecting and/or configuring an external file transfer protocol module based on the XPR standard. 75 19 XPR LIBRARY REQUESTER This requester is used to select and configure an XPR file transfer module for use with Terminus. 19.1 {XPR LIBRARY}{GET LIBRARY...}{G} Opens the file requester in the LIBS: directory using the file match pattern "xpr#?.library" for selecting an XPR library. NOTE! Selecting this option will clear the contents of {XPR LIBRARY}{XPR INIT}{I} and then check for a matching environment variable located in ENV: that is named the same as the name of the XPR library that was just selected (excluding the ".library" extension, of course). If the environment variable is found, it's contents will be read into {XPR LIBRARY}{XPR INIT}{I}. 19.2 {XPR LIBRARY}{XPR INIT}{I} {S} This string defines the initialization command string that will be sent to the XPR module when an XPR protocol file transfer is started. You may want to use an environment variable for default options, but the variable must be present prior to selecting the XPR module as this string is not changed after selecting a module. 19.3 {XPR LIBRARY}{XPR OPTIONS...}{X} This gadget requires that an XPR module has already been selected first. It calls out to the module, so it must also exist in your LIBS: directory in order to open the custom options requester from within the module. NOTE! This option causes Terminus to cease all internal multitasking operations while the requester is open since it is under direct control of the module. Close the options requester to continue using Terminus. 76 20 MACROS REQUESTER Terminus has the ability to use the function keys on your Amiga keyboard to send any text string that you wish. You can also use some special character escape sequences to launch both Terminus and ARexx scripts when necessary. With the use of , and as modifiers, you can have up to 40 function key macros. Macros are stored in one of two places. The default macros are located within the session default file, "terminusX.def". All other macros are stored as part of a script file since the assignment of a macro is done as a script command. The entry requester handles macros for each entry by storing them in the login script for the entry (if a script file has been defined for that entry). 20.1 {MACROS}{F1}{1} 20.2 {MACROS}{F2}{2} 20.3 {MACROS}{F3}{3} 20.4 {MACROS}{F4}{4} 20.5 {MACROS}{F5}{5} 20.6 {MACROS}{F6}{6} 20.7 {MACROS}{F7}{7} 20.8 {MACROS}{F8}{8} 20.9 {MACROS}{F9}{9} 20.10 {MACROS}{F10}{0} {S} A set of ten gadgets are used to house the macro strings associated with each function key macro. The string displayed is dependant on the state of {MACROS}{QUALIFIER}{A}. 20.11 {MACROS}{QUALIFIER}{A} {C}:NONE (NONE SHIFT ALT CTRL) This gadget indicates which set of macros are displayed below in the ten string gadgets. There are four qualifiers, NONE, SHIFT, ALT and CTRL. 77 21 PALETTE REQUESTER The palette requester controls the color register values for the screen in use as well as the default pen colors for the main, review, chat, status line and for all requesters in Terminus. 21.1 {PALETTE}{SELECT}{L} This gadget selects the color that can be adjusted or used for assignment to any of the pen gadgets within the palette requester. To select a color for use you can either position the mouse pointer over the desired color and click or you can use to select the next color in the palette array (wrapping back to color 0 when at the last color). Use to go in the opposite direction. 21.2 {PALETTE}{ANSI INDEX}{0-7} This array of gadgets is used so that the palette color ordering does not require a 1:1 correlation with the ordering assumed by the ANSI set graphics rendition (SGR) mode sequence. This allows Terminus to have pleasant looking, and user configurable requesters and still be compatible with the color ordering required by SGR. Each gadget refers to the 8 colors, 0 - 7, that SGR can select. The colors each gadget is assigned to refer to the physical color registers in the palette. In order for this to work properly, more than one index gadget cannot have the same color assigned to it. Also, use the first 8 colors in an 16 color display as the second set of colors should only be set to the high intensity version of the color directly above it. Selecting an index gadget assigns the currently selected color as displayed in {PALETTE}{SELECT}{L}. If you have a color assigned to more than one index register when you close the requester with {PALETTE}{OK}{O} you will get a query requester notifying you of the problem. 21.3 {PALETTE}{RED}{Q} 21.4 {PALETTE}{GREEN}{A} 21.5 {PALETTE}{BLUE}{Z} The slider gadgets set the red, green and blue components for the currently selected color displayed in {PALETTE}{SELECT}{L}. 21.6 {PALETTE}{TEXT}{T,E,X,8} 21.7 {PALETTE}{BACKGROUND}{G,N,D,9} 21.8 {PALETTE}{CURSOR}{U,R,S} These pen gadgets refer to the text, background and cursor colors for the terminal, review buffer, chat area and status line of the main display. The gadget will inherit the currently selected color when it is clicked on. 78 21.9 {PALETTE}{DETAIL}{I} The detail pen is used for borders and for informational text in requesters. 21.10 {PALETTE}{BLOCK}{K} This pen is used for requester titles. 21.11 {PALETTE}{TEXT}{V} This pen is used for gadget labels and dynamic text information in requesters. 21.12 {PALETTE}{SHINE}{H} This pen is used for the highlight color of 3D rectangles. 21.13 {PALETTE}{SHADOW}{W} This pen is used for the dark color of 3D rectangles. 21.14 {PALETTE}{MENU TEXT}{M} This pen is only present when running Terminus under the 3.x (or later) release of AmigaDOS. It is used for color of menu text. 21.15 {PALETTE}{MENU BACKGROUND}{B} This pen is only present when running Terminus under the 3.x (or later) release of AmigaDOS. It is used for color of menu background. 79 22 PATHS REQUESTER The paths requester contains all the paths used within Terminus for the location of files used during a Terminus session. 22.1 {PATHS}{TERMINUS}{T} {S}: "" | "TERMINUS:" This is the main pathname used for locating default and phonebook files. It is set to "" if the "TERMINUS:" logical assignment (or volume) is not present. 22.2 {PATHS}{UPLOADS}{U} {S}: "RAM:" Terminus will use this pathname as the initial location for the start of a ASCII send, file upload or display file. It will be updated if the path is changed from within the file requester. It is set to "RAM:" by default. 22.3 {PATHS}{DOWNLOADS}{D} {S}: "RAM:" As with uploads, Terminus will do the same for downloads with this pathname. It is also set to "RAM:" by default. 22.4 {PATHS}{CAPTURE}{P} {S}: "RAM:" And here too for capture files. It is set to "RAM:" be default as well. 22.5 {PATHS}{SCRIPTS}{S} {S}: "" | "TERMINUS:Scripts" This is the default pathname for Terminus scripts. Terminus will update the path if you change it while loading a script file. 80 22.6 {PATHS}{PRINTER}{N} {S}: "PRT:" This pathname defines the device (or filename) that Terminus will use whenever the print function is enabled. It is set to the AmigaDOS device "PRT:" as a default. It should be set to a disk file name if you do not have a printer attached to your Amiga. 22.7 {PATHS}{REXX}{R} {S}: "REXX:" If the ARexx master process was present when Terminus was invoked this pathname string gadget will be present. It is set to "REXX:" by default. 81 23 MODEM REQUESTER The modem requester contains various check options, integer values, commands and response strings that control the operation of the dialer in Terminus. 23.1 {MODEM}{INIT CMD}{M} {S}: "ATZ^M~~~ATE1 Q0 V1 X4^M" This command is used to initialize the modem when Terminus first starts. It is only sent to the modem if a startup script is not found. The default command shown here should work for most Hayes compatible 2400bps modems. If your modem has nonvolatile ram (sometimes referred to as NVRAM) to store it's configuration then you will want to shorten this command to "ATZ^M". 23.2 {MODEM}{HANGUP CMD}{H} {S}: "~~~+++~~~ATH^M" This command is sent to the modem to disconnect from an online connection. The default command is for a Hayes compatible 2400 modem. If your modem is capable of disconnecting via the lowering of the DTR signal you would want to use {MODEM}{DTR HANGUP (Z)}{Z} instead. 23.3 {MODEM}{POSTFIX}{S} {S}: "^M" This string defines the sequence to send to the modem at the end of a dialing sequence. The default of "^M" is a carriage return. 23.4 {MODEM}{PREFIX #1}{1} 23.5 {MODEM}{PREFIX #2}{2} 23.6 {MODEM}{PREFIX #3}{3} 23.7 {MODEM}{PREFIX #4}{4} {S}: "ATDT" These strings allow you to reconfigure your modem prior to dialing an entry in the event that the system you're calling requires your modem to be in a non-standard configuration. For example, a real Hayes 2400 modem cannot negotiate the MNP handshake that occurs after the modems first connect. If your modem is normally set to use MNP and you want to call a system that has a Hayes 2400 attached you would need to disable MNP on your end first. You can do that by setting one of the prefixes here to a command such as "AT&M0DT" which would disable error 82 correction prior to dialing. You then would set {ENTRY}{PREFIX}{X} for that entry to the prefix that disables MNP so that you can call the system with the Hayes modem without any problems. 23.8 {MODEM}{OK}{K} {S}: "OK" 23.9 {MODEM}{BUSY}{Y} {S}: "BUSY" 23.10 {MODEM}{RING}{I} {S}: "" 23.11 {MODEM}{ERROR}{E} {S}: "ERROR" 23.12 {MODEM}{VOICE}{V} {S}: "VOICE" 23.13 {MODEM}{CONNECT}{N} {S}: "CONNECT" 23.14 {MODEM}{NO CARRIER}{A} {S}: "NO CARRIER" 23.15 {MODEM}{NO DIALTONE}{L} {S}: "NO DIALTONE" These response codes are what gives the dialer in Terminus its intelligence since it will react accordingly depending on which response the modem sends it while dialing. They are set by default to the response codes used by a Hayes 2400 modem. The labels for each response represent the default code that a Hayes Smartmodem 2400 will return, which is also what each response is set to by default when Terminus is first run. You may have to change one or more responses if the modem you have does not return the same exact response code. For example, US Robotics modems return a "NO DIAL TONE" response instead of the default of "NO DIALTONE", so it would have to be changed in order for the dialer to detect this response. You can disable some of the features within the dialer by deleting or changing the response string. The ones to be aware of are: RING - This response code is normally absent. If you would like the dialer to detect an incoming call then set this to the appropriate modem RING response string. Keep in mind that some modems 83 offer an additional response to detect when the number dialed has started ringing by using the string "RINGING". In order to differentiate the two you should use "RING^M" instead of "RING" so that it will only react to an incoming call. VOICE - Some modems are not too effective in determining a voice call due to noise on the line or low signal levels. Deleting this string will prevent the dialer from canceling the call and exiting. NO CARRIER - Modems normally return this response when the remote system is not busy but not answering either. Some modems are not too reliable at detecting busy signals depending on line conditions, so the modem will timeout and return this response when it should have returned "BUSY". If the dialer detects three of these responses for an entry it will be removed from the selected list and no longer dialed until you reselect it from the phonebook again. Clearing this string will disable the dialer from doing this to an entry. NO DIALTONE - The dialer will halt dialing and exit if this response is returned. Again, deleting this string will disable this feature. 23.16 {MODEM}{DELAY}{D} {I}:60 (0 - 600) 1 second This value determines the number of seconds the dialer will wait before starting another attempt for each entry in the select list. 23.17 {MODEM}{ATTEMPTS}{T} {I}:15 (1 - 999) This is set to the number of dialing attempts for each entry you would like the dialer to try before giving up. 23.18 {MODEM}{TIMEOUT}{U} {I}:30 (0 - 300) 1 second This value sets the timeout in seconds after a dialing attempt is started. It should be set to a longer value that the modem itself uses for a timeout as a safeguard for modems that have trouble (or are unable) to detect a busy signal. 84 23.19 {MODEM}{PACING}{P} {I}:0 (0 - 100) 1/100th second This sets the character pacing value to wait between each character being sent to the modem. This is used for modems that cannot handle a command being sent at the full baud rate that Terminus is set to. 23.20 {MODEM}{IGNORE NO CARRIER}{G} {F}: FALSE Set this option if your modem is unable or not reliably detecting a busy signal. Normally, the dialer will deselect a phone entry if three NO CARRIER responses are returned during dialing. 23.21 {MODEM}{IGNORE CARRIER DETECT}{R} {F}: FALSE Set this option if your modem does not properly control the DCD line. You will not be able to transfer files or dial depending on the state of the DCD line and it isn't functional. 23.22 {MODEM}{HANGUP ON EXIT}{J} {F}: TRUE This option will hangup the modem when the dialer exits after a user abort or when the attempt count is reached. This is used to ensure that the modem is not off-hook. The method used to hang the modem up depends on the state of {MODEM}{DTR HANGUP (Z)}{Z}. 23.23 {MODEM}{DTR HANGUP}{Z} {F}: FALSE Set this option if your modem is able to disconnect (go on-hook) when the DTR line is dropped. 23.24 {MODEM}{FLUSH WITH A BREAK}{W} {F}: FALSE This option will flush the serial port buffers when a break signal is sent. This option helps reduce error recovery time when using streaming protocols such as ZMODEM with buffered, error correcting modems. 85 23.25 {MODEM}{DIALER AUTOBAUD}{B} {F}: FALSE This option controls the dialer automatic baud rate adjustment feature. If you're not using an error-corrected modem you should set this option so that the dialer can change the baud rate in Terminus when a CONNECT xxxx string is received. Your modem must follow the Hayes standard for extended CONNECT responses in that a numeric value must follow the CONNECT string that indicates the connected baud rate that the modem has set to. The default string CONNECT by itself is assumed to be 300 baud with that standard, if your modem does work in this fashion you must disable this option. 86 24 PORT REQUESTER The port requester is used to define the serial device to be used by Terminus. Any changes here will not be put in effect if tried during a dialing or file transfer operation. 24.1 {PORT}{DEVICE NAME}{D} {S}: "serial.device" Enter the name of the serial device you wish to use here. It is case sensitive, you must enter the name of the device as it exists in your DEVS: directory. 24.2 {PORT}{UNIT NUMBER}{U} {I}:0 (0 - 1000) Set the unit number for the serial device here. 24.3 {PORT}{BREAK LENGTH}{B} {I}:250 (0 - 1000) 1/1000th second This gadget determines the length of the break signal that the serial device will send when required. 24.4 {PORT}{CTS/RTS}{T} {F}: FALSE Set this option if you wish to use CTS/RTS handshaking. 24.5 {PORT}{PORT QUIET}{P} {F}: FALSE Set this option if you want Terminus to start with the serial device quiet or to release its use of the device during the session. 87 24.6 {PORT}{IGNORE ODU}{I} {F}: FALSE This option, when enabled, ignores the presence of the OwnDevUnit.library. Normally, when that library is present Terminus will arbitrate access to the serial port defined in {PORT}{DEVICE NAME}{D} and {PORT}{UNIT NUMBER}{U} via this library. But, when this option is enabled it will ignore this arbitration sequence. 24.7 {PORT}{ODU NOTIFY}{F} {F}: FALSE This option enables Terminus to respond to requests for the serial port from other applications that also use OwnDevUnit. When enabled, Terminus will only release the port if carrier is not present. 88 25 GENERAL REQUESTER The general requester contains options that are global to the operation of Terminus. 25.1 {GENERAL}{CHAT HISTORY}{H} {I}:50 (10 - 100) This value sets the number of lines in the chat history buffer. 25.2 {GENERAL}{CHAT LINES}{T} {I}:3 (1 - 100) This sets the number of lines used in the chat area. 25.3 {GENERAL}{REVIEW BUFFER SIZE}{R} {I}:16 (16 - 2048) 1k block Sets the size in kilobytes (1024) that are allocated to the review buffer. 25.4 {GENERAL}{REVIEW LINES}{W} {I}:12 (2 - 100) Sets the number of lines in the review buffer requester. It defaults to one half of the display size and has a minimum value of 2. 25.5 {GENERAL}{XFER BUFFER SIZE}{F} {I}:8 (1 - 32) 1k block Sets the size in kilobytes (1024) of the file transfer buffer. The actual allocation will be twice this value for the double buffered ZMODEM or YMODEM-g transfer. 25.6 {GENERAL}{GMT OFFSET}{G} {I}:13 (-12 - 13) This value is used with ZMODEM protocols to adjust the datestamp of a transferred file to the local timezone. Set this value to the number of hours ahead (positive) or behind (negative) of Greenwich MeanTime. A value of 13, which is the default, disables the GMT offset option. 89 25.7 {GENERAL}{TASK PRIORITY}{P} {I}:0 (-20 - 15) Set this value to the task priority you wish to have Terminus run at. You should normally leave this value at its default value of 0 first and only adjust it if the operation of Terminus requires it to prevent data loss. 25.8 {GENERAL}{QUOTE LENGTH}{U} {I}:75 (2 - 400) This value determines the length of each quoted string sent, subtract the length of {GENERAL}{QUOTE STRING}{Q} to figure out how long the actual quoted text is. Longer strings are truncated, not wrapped. 25.9 {GENERAL}{QUOTE STRING}{Q} {S}: ">" This string is prefixed to each quoted line that is sent by the quote function. 25.10 {GENERAL}{24 HOUR CLOCK}{2} {F}: FALSE This option will display a 24 hour (also called military time) clock in the status line instead of the default 12 hour, am/pm clock. 25.11 {GENERAL}{AUDIBLE BEEP}{A} {F}: FALSE This option controls Terminus' beep function. Normally, a beep is done on the Amiga by flashing the screen. When this option is active an audible beep is done instead. This option also controls the handling of a received BEL (^G) character as well. 25.12 {GENERAL}{LOGFILE ACTIVE}{L} {F}: FALSE When this option is active Terminus will record certain actions to the file "terminusX.log" in the TERMINUS path. The 'X' refers to the session number. 90 25.13 {GENERAL}{MAKE ICONS}{N} {F}: TRUE This option controls the creation of file icons for downloads and capture files. 25.14 {GENERAL}{SCREEN POPUP}{E} {F}: TRUE Set this option when you want Terminus to pop to the front after the dialer has made a connection or when a file transfer completes. 25.15 {GENERAL}{FILE SAVER}{V} {F}: FALSE Set this option if you wish to have Terminus to close a file as each block of data is written to disk. This prevents a system failure from causing the file length to be set to zero, which means that the file was lost. 25.16 {GENERAL}{DISK SPACE CHECK}{D} {F}: FALSE Set this option if you want Terminus to check the free space on a disk prior to starting a download. Do not set this option if the destination volume/device for the file does not show free space such as the ram disk. 25.17 {GENERAL}{SLOW DISK I/O}{K} {F}: FALSE This option should only be set when using a programmed I/O or DMA hard disk controller that is causing the serial port to lose data whenever a disk write is performed while data is being received. If your controller is a DMA device you might want to try using {GENERAL}{512 BYTE DISK I/O}{5} first to see if that cures the problem as this option affects the throughput of a file transfer considerably. 25.18 {GENERAL}{512 BYTE DISK I/O}{5} {F}: FALSE Set this option if downloads cause data loss everytime the block is written to disk. When active, this option breaks up the write to multiples of 512 bytes. If you're using a programmed I/O hard disk controller you will probably have to use {GENERAL}{SLOW DISK I/O}{K} instead. This option is primarily for use with DMA controllers. 91 25.19 {GENERAL}{CHIP RAM SAVER}{I} {F}: FALSE Set this option if you want Terminus to minimize its use of chip ram. It will cause requester rendering to be quite slow, but will allow you to use Terminus on Amigas that have very little system ram. 25.20 {GENERAL}{MOUSE FUNCTIONS}{S} {F}: TRUE This option controls the various mouse functions present within Terminus for clipping from the main display and from the review buffer as well as the ANSI mouse and character mouse functions. Disable this option if their presence interfers with other utilities you may be running in your system. 25.21 {GENERAL}{BORDER BLANKER}{B} {F}: TRUE This option enables or disables the border blanker that Terminus normally activates for ECS and AGA systems with custom screens. 25.22 {GENERAL}{DATE FORMAT}{M} {C}:MM/DD/YY (MM/DD/YY DD-MM-YY DD.MM.YY) This gadget determines the date format style used in the phonebook and logfile. 92 26 CONSOLE REQUESTER The console requester contains the options used to configure the operation of the terminal emulations in Terminus. It also allows you to save a configuration to a console definition file so that you can easily switch between the different configurations needed. 26.1 {CONSOLE}{EMULATION}{U} {C}:AMIGA (TTY AMIGA COLOR MONO VT52 VT102 VT220) This gadget sets the terminal emulation. You should start a new console configuration by selecting the emulation first as each emulation setting will change one or more of the other options in the console requester as a consequence. Everytime you select this gadget Terminus will reset the console definition name to "default.con". If you were to save the defaults via [PROJECT][SAVE DEFAULTS...] then the current console settings here will be written to default.con as well. 26.2 {CONSOLE}{PALETTE}{P} {C}:WORKBENCH (WORKBENCH COLOR MONO CUSTOM) This gadget sets the palette to be used with the current emulation. The custom palette should be used for your purposes while leaving the others as-is for use with the emulations that they are associated with. 26.3 {CONSOLE}{SCREEN}{S} When using Terminus with AmigaDOS 2.1 or with a V38 asl.library or compatible, like ReqTools, requester library that provides a screen mode requester, you will be presented with this gadget for selecting the screen mode you want Terminus to appear on. Terminus provides a special mode for selecting the Workbench or currently active public screen as well when using this feature. 26.4 {CONSOLE}{SCREEN}{S} {C}:WORKBENCH (WORKBENCH "2 COLOR" "4 COLOR" "8 COLOR" "16 COLOR" "32 COLOR") Sets the type of screen to use, Workbench or a 2, 4, 8, 16 or 32 (when used with the AGA chipset in COLOR emulation) color custom screen. NOTE! Refer to the discussion above on palette types and their association with screen depth. This option is only present when running under release 1.3. 93 26.5 {CONSOLE}{INTERLACE (1)}{1} {F}: FALSE Set this option if you wish to use an interlaced screen. NOTE! This option is only present when running under release 1.3. 26.6 {CONSOLE}{ROWS}{R} {I}:24 (24 - 400) Sets the number of rows to use, Terminus will attempt to open a display with a height that can hold this value otherwise the maximum possible size will be used. 26.7 {CONSOLE}{COLS}{L} {I}:80 (40 - 400) Sets the number of columns to use and attempts to use in the same manner that {CONSOLE}{ROWS}{R} is handled. 26.8 {CONSOLE}{PRESCROLL (0)}{0} {I}: 0 (0 - 12) Sets the maximum number of lines to scroll up once the cursor reaches the bottom of the screen based on the contents of the incoming data buffer. This option can help increase throughput when using 8 or 16 color screens with fast modems. 26.9 {CONSOLE}{STATUS LINE (2)}{2} {F}: TRUE When set, provides a status line in the main display. The location of the line is determined by {CONSOLE}{TITLE STATUS}{4}. 26.10 {CONSOLE}{TITLE BAR (3)}{3} {F}: FALSE This option is only available when using a custom screen that does not have {CONSOLE}{PUBLIC SCREEN (5)}{5} set with it. When active, this option gives the screen a tile bar with system depth and drag gadgets. 94 26.11 {CONSOLE}{TITLE STATUS (4)}{4} {F}: TRUE When this option is active Terminus will place its status line in the title bar of windowed displays or custom screens if {CONSOLE}{TITLE BAR (3)}{3} is set. 26.12 {CONSOLE}{PUBLIC SCREEN}{5} {F}: FALSE This option will enable public screens for use with the 2.0 (or later) release of AmigaDOS. It has no effect when running under the 1.3 operating system release. 26.13 {CONSOLE}{KEYMAP}{K} {S}: This gadget defines the keymap to use, if one is not defined the default keymap in use will be used instead. 26.14 {CONSOLE}{CR XLATE}{X} {C}:LEAVE (LEAVE ADDLF STRIP) This gadget selects the type of carriage return translation to use. 26.15 {CONSOLE}{LF XLATE}{T} {C}:LEAVE (LEAVE ADDCR STRIP) Like {CONSOLE}{CR XLATE}{X}, this gadget selects linefeed translation to use. 26.16 {CONSOLE}{EOL OUT}{E} {C}:CR (CR LF CRLF) This gadget sets what Terminus will send when or is pressed. It also determines what the "\r" escape sequence sends. 26.17 {CONSOLE}{GET DEFINITION...}{G} This gadget will open the file requester in the directory defined in {PATH}{TERMINUS}{T} for loading a console definition file. 95 26.18 {CONSOLE}{SAVE DEFINITION...}{V} This gadget opens the file requester in the directory defined in {PATH}{TERMINUS}{T} to save the current settings in the console requester to a console definition file. 26.19 {CONSOLE}{SELECT NEW FONT...}{F} This gadget opens the asl or req requester (or one that replaces the operation of either of these requesters) in font selection mode. 26.20 {CONSOLE}{VT-XX OPTIONS...}{N} This gadget opens the VTOptions requester for use with VTxx emulations. 26.21 {CONSOLE}{STRIP HIGH BIT}{B} {F}: FALSE Set this option if you want the 8th bit to be stripped from all incoming characters. 26.22 {CONSOLE}{MOUSE PACING}{I} {F}: FALSE This option, when active, causes Terminus to pace ANSI mouse movement sequences. It should be used when connected with systems that cannot handle large amounts of input sent at once. 26.23 {CONSOLE}{DESTRUCTIVE BACKSPACE}{D} {F}: FALSE If the system you're connected to does not delete characters that you backspace over, or you wish Terminus to always delete them, set this option. 26.24 {CONSOLE}{SMOOTH SCROLL}{M} {F}: FALSE This option controls smooth scrolling. Be aware that smooth scrolling requires a lot more time to perform each scroll operation than jump scrolling does. Using a high speed modem with this option in effect can cause data loss and will slow down the total throughput of the console display. 96 26.25 {CONSOLE}{AUTOWRAP MODE}{W} {F}: TRUE This option will cause Terminus to wrap lines that are longer than the current display size. Characters will be overwritten at the extreme right column otherwise. 26.26 {CONSOLE}{CHAT MODE}{A} {F}: FALSE Enables chat mode when set. 26.27 {CONSOLE}{IBM DOORWAY MODE}{Y} {F}: FALSE This option can only be used with the COLOR or MONO emulations. Doorway is a program for IBM PC and compatible machines that enables complete remote operation of the system via modem. This mode will reconfigure the Amiga keyboard to emulate the action of an IBM or compatible keyboard for use with the Doorway program and therefor ignores the setting of {CONSOLE}{KEYMAP}{K}. 26.28 {CONSOLE}{CURSOR POS.}{6} {F}: TRUE This option enables the status line cursor position indicator. You need to have {CONSOLE}{STATUS LINE (2)}{2} active in order to see the indicator. It is displayed as XXX,YYY where X is the column and Y is the row for the current cursor position. This option also reduces throughput by a fair amount due to the extra processing required to display and update the indicator each time the cursor moves. 26.29 {CONSOLE}{CURSOR BLINK}{7} {F}: FALSE Setting this option will cause the Terminus cursor to blink. 26.30 {CONSOLE}{FAST CURSOR}{8} {F}: FALSE This option enables the use of a hardware sprite cursor which increases text throughput somewhat over the default rendered block cursor. It is not available for use on the Workbench screen, only on custom screens that do not have {CONSOLE}{PUBLIC SCREEN (5)}{5} set. 97 26.31 {CONSOLE}{RAW CAPTURE}{9} {F}: FALSE When this option is set it will cause Terminus to capture all data as received from the serial port instead of using the data in the review buffer for capture. 98 27 VTOPTIONS REQUESTER This requester contains options that are specific to VT terminal emulations. 27.1 {VTOPTIONS}{DISPLAY CTRLS}{Y} {F}: FALSE This option will set the display control codes mode of the display. Instead of processing DEC private, ANSI and ASCII characters and sequences, they are displayed to the console. The font TERMDDC80/132 should be present to utilize this feature as intended. This option is available only in VT-220 emulation. 27.2 {VTOPTIONS}{7 BIT MODE}{7} {F}: TRUE The VT220 emulation can send some sequences via 8 bit characters or via 7 bit characters. The setting of this option controls which method to use when sending these sequences. It is set TRUE automatically for VT-52 and VT-102 when you close the requester. 27.3 {VTOPTIONS}{132 COLUMNS}{1} {F}: FALSE Set this option if you would like Terminus to use 132 column mode instead of 80 column mode with any of the VT emulations. You must have the TERMISO132.font or TERMDDC132.font present in order to use it. 27.4 {VTOPTIONS}{LIGHT BACKGROUND}{L} {F}: FALSE This option controls the reverse video mode for the VT emulations. 27.5 {VTOPTIONS}{NEWLINE MODE}{N} {F}: FALSE Sets newline mode. This mode overrides the use of {CONSOLE}{CR XLATE}{X}, {CONSOLE}{LF XLATE}{T} and {CONSOLE}{EOL OUT}{E} when any of the VT emulations are being used. 99 27.6 {VTOPTIONS}{KEYPAD MODE}{K} {F}: FALSE Sets keypad mode. 27.7 {VTOPTIONS}{CURSOR MODE}{U} {F}: FALSE Sets cursor mode. 27.8 {VTOPTIONS}{SWAP BS/DEL}{S} {F}: FALSE When this option is set the operation of and are reversed. 27.9 {VTOPTIONS}{AUTO KEY REPEAT}{T} {F}: TRUE Enables or disables keyboard repeat. 27.10 {VTOPTIONS}{CHARACTER SET}{H} {C}:ASCII (ASCII BRITISH FLEMISH FRCAN DANISH FINNISH GERMAN DUTCH ITALIAN SWISSFR SWISSGRM SWEDISH NORWEGIAN FRBELGIAN SPANISH) Selects which National Replacement Character set to use for VT220. 27.11 {VTOPTIONS}{DA RESPONSE}{D} {C}:VT102 (VT100 VT101 VT102 VT220) Selects the response that Terminus will send when a DA sequence is received. 27.12 {VTOPTIONS}{ANSWERBACK MSG}{A} {S} Sets the string that Terminus will send in response to an ENQ character. 100 28 TERMINUS SCRIPT LANGUAGE Terminus comes with a comprehensive, easy to use script language based on a small BASIC interpreter, the major points of the language are: - Over 80 script commands and 200 option variables. - Unlimited number of 32 bit integer and 255 character length string variables available. - Unlimited parenthesis nesting. - A full compliment of logical, numerical and string operators. - Unlimited nesting of GOSUB, FOR, REPEAT and WHILE commands as well as CALLed scripts that can return to the caller script when finished. - Can monitor for mouse button presses, loss of carrier, script timeout and up to 32 simultaneous text strings for automated execution control. - Up to 6 separate files can be open for input or output to read or write variables to sequential access files. - Special REMOTE command that connects an AmigaDOS CLI or shell of your choice to the serial port for remote control of your system. - Automated record mode so that you can create login scripts easily. 28.1 SCRIPTS OVERVIEW Scripts are special purpose programs that automate the operation of Terminus. These programs can be as simple as instructing Terminus to log into your favorite online system or as complex as automating a series of unattended sessions, transmitting and collecting new email, messages and files along the way. Although advanced users might seem "put off" by the decision to design the script language using a BASIC syntax, it should be noted that the audience of users that telecommunicate is much broader than those who are acquainted with the ofttimes arcane art of programming, especially with languages that can be quite hard to learn, such as 'C'. For the casual user it is paramount that the application shouldn't get in the way of accomplishing whatever task that needs to get done. If for this reason alone, the choice of a BASIC syntax for an internal script language is clear. Of course, to maintain the spirit of the Amiga, Terminus is fully accessible via ARexx scripts. Almost every internal script command, save for script execution/control related commands, is available to an ARexx script. 101 28.2 RUNNING SCRIPTS There are two methods of starting a script file, manually and automatically. The automatic method is accomplished via the startup script or by a login script when the dialer establishes a connection. Please refer to the sections on those two functions for more details, only manually started scripts will be discussed here. The menu item [SCRIPTS][START...][s] is used to launch a script. The file requester will be opened in the path defined by {PATHS}{SCRIPTS}{S}. Select a script from there and Terminus will begin executing it. If you have installed Terminus as instructed there will be a file named "ScriptDemo.scp" which gives you a menu of demos that illustrate the various script commands and functions present in the Terminus script language. Please be aware that Terminus might take a little time to load the script before starting execution of it. This is due some preprocessing that is done to the script as it is loaded. In particular, the position of script labels is determined for fast GOTO and GOSUB execution and syntax checking is done for IF/ELSE/ENDIF nesting so that unexpected script execution is minimized. Other syntax checking is performed during the execution of the script. 28.3 OPTIONS AND COMMANDS There are basically two types of script commands, option variables for the various user settings that control Terminus and script commands that control the operation of scripts and modify script variables. An example of an option variable is PROTOCOL, like its gadget counterpart, {TRANSFER}{PROTOCOL}{P}, it deals with setting the current file transfer protocol that Terminus will use if a download or upload is invoked. Note that not all option variables are the exact same as the gadget label in the requester. Options are made up of one word, called a "keyword" which are unique when compared to other keywords, this is so that Terminus can recognize which option you're referring to. For example, PEPWTYPE is the option variable that is the same as {ENTRY}{P/W TYPE}{Y}. The names are close, but certainly not exact. Don't worry though, most option names are quite identifiable with their gadget counterparts. Script commands are comprised of two types of commands, functions and statements. A function is a command that returns a value, so you can assign a script or option variable the results of a function. Statements are commands that don't return a value, instead, they perform an operation of some sort, like starting a file download or posting some text to the screen. 28.4 SCRIPT FILE TYPES All files that Terminus uses for itself are actually script files. Each file has a specific purpose and as such, a certain subset of 102 commands that are legal for use within that file. This concept of limited use is called "scope". If a command is used where it shouldn't be it is said to be used outside of its scope. Terminus uses a method called "default optimization" for reading and writing these files. Simply stated, each setting is compared with the internal defaults to determine whether or not it should be written to the file. This process results in files that are almost always smaller than writing the entire set of settings. The benefit of writing files this way is realized when it is read by Terminus, it takes much less time to process the file since the only settings in the file are those that are not set to the internal default value. Doing it this way is a great help for phonebook files which would get quite large otherwise. 28.4.1 .def - Defaults file Terminus will reset all settings to internal defaults prior to loading a defaults file. The startup filename "terminusX.def" (where 'X' is the session number) will be searched for on session startup. The current directory is searched for initially, then in the main path TERMINUS:, if present. Internal defaults will be used if the file cannot be located. 28.4.2 .phone - Phonebook file The current phonebook will be cleared prior to loading a new phonebook file. The file "terminusX.phones" will be searched for in the current directory then scripts path. Phonebook processing is a special case in Terminus. The entire phonebook is not read into memory prior to execution since there is the possibility that a phonebook file can grow quite large. Instead, it is read and processed one line at a time so that memory requirements are not stressed to load a phonebook file. Also, keep in mind that each phonebook entry needs 172 bytes plus the total length of all the strings in an entry. 28.4.3 .con - Console definition file This script file contains commands related to the console only. It allows for easy switching among different emulation, screen, font, keymap setups. These files are searched for in the main path only. 28.4.4 .scp - Script file Executable script file. The primary difference between script files and the previous files is that the commands in the other files can only perform option assignments with numeric or string 103 arguments, no script variable or expressions are evaluated and will result in an error if any encountered. Additionally, the other files are processed completely before returning to the user. Scripts, on the other hand, are executed asynchronously. This allows for "internal multitasking" to occur. Please consult the ASK and INPUT script statement descriptions for exceptions to this rule. 28.4.5 .trx - ARexx macro file Standard ARexx macro, located in REXX:. All ARexx macros started from within Terminus are asynchronously executed. Caution must be used to avoid "collisions" between concurrently executing ARexx macros. 28.5 COMMAND SCOPE The following table categorizes the various command scopes allowed in each type of script file. Grouping refers to the requester that an option variable is located in or if it is a script function or statement. Levels 1 through 6 are option variables, they allow the changing or reading of all options, modes and settings within Terminus. As shown, certain options are only permissible within certain files, like the phonebook and entry options, which are only allowed in .phones files. Levels 7 and 8 are for statement and function commands that comprise the script language proper. The difference between level 7 and level 8 is that level 8 script commands are not accessible in an ARexx script. An error will be reported during script execution if a command is used outside its permitted scope. Level def con phones scp trx Grouping 1 X X X GENERAL, PORT, PATH, MODEM, PALETTE 2 X X X X SERIAL, XFER 3 X X X X CONSOLE 4 X X X MACRO 5 X PHONEBOOK 6 X PHONEENTRY 7 X X STATEMENTS, FUNCTIONS 8 X STATEMENTS, FUNCTIONS 28.6 OPTION CLASSES Option variables are classified according to the type of operation they perform. Notice that the classes for the options are equivalent to the type of gadget that a given option is attached to within its appropriate requester. 104 The following are the various classes in Terminus. 28.6.1 INTEGER Integer class options can be assigned or will return an integer value. Only numeric assignments are permitted in any script file other than a .scp or .trx file. 28.6.2 STRING String class options can be assigned or will return a string value. When used in any script file other than a .scp or .trx file, only a quoted string is allowed as the assignment argument. 28.6.3 FLAG Flag options have boolean states, only 1, 0, ON, TRUE, OFF or FALSE may be used as an assignment argument. In .scp and .trx files it can be used to return a value, a 1 represents a TRUE or ON condition and 0 means OFF or FALSE. 28.6.4 MUX Mux is short for "mutual exclusion", these options can only be set to one of a well-defined set of states. The description for each mux option lists the arguments allowed for it. A mux option will return a string value when used in a .scp or .trx file. 28.6.5 CMD A cmd option is an aggregate of one or more tightly related options into one. This class can be used in a .scp or .trx file to return the current settings via a concatenated string of the involved options. 28.7 SCRIPT STRUCTURE Although the script language for Terminus is designed as a BASIC interpreter you have to keep in mind that it is not entirely the same syntactically. You must be sure to keep each statement on a separate line. Script labels also have to be on their own line. Most BASIC programming environments provide you with a self-contained editor for creating programs. These editors usually have both physical and logical lines so that long lines wrap down to the next line in order to display the entire line at all times. Since Terminus does not have an internal editor, you will need to use a text editor to create your scripts. Most text editors do not distinguish between physical and logical lines, so you must remember to keep each script command on an entire 105 line, they cannot cross over to one or more lines or an error will occur. 28.8 KEYWORDS Keywords are reserved words that cannot be used as labels or variable names within a script. All option and script commands are keywords as well as system variables described below. Additionally, the following are also keywords which are used in various command syntaxes described below. They too cannot be used as variables or labels within the script. Otherwise, a syntax error or unpredictable script execution will occur depending on their use. ALL AND APPEND COLOR FALSE IN LOCAL NOT OFF ON OR OUT OUTPUT QUIET RECURSIVE RESET SAVE STEP TO TRUE WORKBENCH XOR 28.9 COMMENTS Script files can have comments inserted throughout but must be bracketed by the 'C' language style of comment which is the "/*" pair to indicate the beginning of a comment and the "*/" pair that indicates the end of a comment. This style was chosen for the purpose of minimizing editing if you choose to convert the script for use as an ARexx script. Also, an AmigaDOS 2.x compatible version string will be placed in the beginning comment as the first line of the script file if it was generated by the script recorder. /* $VER: Terminus 2.0 - terminus1.def (22.06.93) */ This comment is typical of the first line that is present when you save a .def defaults file. 28.10 LABELS Labels are unique names that define a position within the script that execution can be transferred to via a GOSUB, GOTO or ON command. Labels must start at the left most column of a line, the first character must be an alpha (A..Z) and the label must be terminated with a ':' character. Do not place commands after the label, they will be skipped over. GOODLABEL: This example shows a proper script label, it starts with an alpha character and is terminated with a colon. 1BADLABEL: While this label has a terminating colon, it starts with numeral, which is not allowed. 106 LABELNG NOGOOD: GOTO LABELNG The first is not a label, it does not have a terminating colon. The second example here is a good label, but the GOTO command following it will be ignored. 28.11 INTEGER VARIABLES Integer variables within Terminus scripts are a 32 bit signed integer value in the range of -2146483648 to 2147483647. An integer variable is denoted by a uniquely named character string that is not a reserved command name, keyword or label. Integer variables must be initialized before they can be used. Initialization does not have to occur as a separate statement however as the following example illustrates. intvar = 0 intvar = ABS(-12) Since the variable "intvar" is being assigned via the ABS() function, the first statement is redundant and is not needed. Let's look at one more example. intvar1 = -12 intvar2 = ABS(intvar1) This example shows that the variable "intvar1" would have to be assigned prior to being used by the ABS() function since it has to return a value that it would not have if it did not exist prior to its first use. 28.12 STRING VARIABLES String variables in Terminus scripts can contain a maximum of 255 characters. A string variable name is subject to the same restrictions as an integer variable and must also be assigned prior to first use. A string variable name must have a trailing '$' character appended to the end of the name to differentiate it from an integer variable. Additionally, "var" and "var$" would be valid variable names and can be used within the same script as the '$' character is considered part of the variable name. String assignment values must be quoted or a syntax error will occur. 28.13 GLOBAL VARIABLES The single letter integer variables A..Z and the same set of string variables A$..Z$ are global. That is, their contents are constant throughout an entire session. They can be used for passing information between different scripts, such as with a host (also 107 called a mini-BBS). The global string variables can also be used in function key macros to send their contents. Use the CLEAR command to reset all global variables. 28.14 READ-ONLY SYSTEM VARIABLES The following are permanently defined system variables that can only have their current value read, they cannot be assigned a new value from within a script. ABORTREMOTE Returns a value of 1 if the remote CLI function was aborted, by loss of carrier or by selecting either [MISC][HANGUP MODEM][h] or [MISC][KILL REMCLI][J]. ABORTXFER Returns the boolean result of the last file transfer operation. A value of 1 represents an aborted transfer, either by the user or via the remote system. CARRIER Returns the current state of the DCD line, a value of 1 is returned if carrier is present, 0 if not. COL Returns the current cursor column starting with the value of 1 for the leftmost column. COLORS Returns the maximum colors in the current display. COLS Returns the current number of columns in the main display. FONTHEIGHT Returns the height of the current font in use. ILACE Returns a boolean value of the interlace state of the main display. MCOL Returns the column position of where the mouse pointer was located when the left mouse button was clicked. {CONSOLE}{ANSI MOUSE}{I} must be inactive and the ONMOUSE command must be executed prior to this variable being updated. A value of -1 will be returned if the feature is not active or the left mouse button has not been clicked on yet. MROW Returns the row position of where the mouse pointer was located when the left mouse button was clicked. {CONSOLE}{ANSI MOUSE}{I} must be inactive and the ONMOUSE command must be executed prior to this variable being updated. A value of -1 will be returned if the feature is not active or the left mouse button has not been clicked on yet. 108 ROW Returns the current cursor row starting with the value of 1 for the topmost row. ROWS Returns the current number of rows in the main display. DATE$ Returns a string of the current system date formatted as per the setting of {GENERAL}{DATE FORMAT}{M}. FONTNAME$ Returns the name of the current font in use. TIME$ Returns a string of the current system time formatted as per {GENERAL}{24 HOUR CLOCK}{2}. 28.15 READ/WRITE SYSTEM VARIABLES The following are predefined system variables that can be read or assigned as necessary. BPEN Sets or returns the current background pen color for the main display, the supplied value will be modulo the number of screen colors. CPEN Sets or returns the current cursor pen color for the main display, the supplied value will be modulo the number of screen colors. CURSOR A boolean variable that returns the current state of the display cursor and when assigned TRUE or FALSE, it will turn cursor rendering on or off. ICONIFY Setting this variable TRUE will iconify Terminus. Set it FALSE to restore Terminus from the iconified state. NOQUICK This boolean variable controls the way the serial I/O routines in Terminus read data from the device. If you are not, or cannot use the OwnDevUnit.library and are experiencing data loss or slow serial input, set this variable either in the startup script or a login script. An example of the need for this option is when you're using Terminus with the dnet.device. REQUEST A boolean variable that will prevent or allow AmigaDOS system requesters from being posted. Default action as expected if requesters are off. TIMER Sets or returns the current value of the online timer in seconds. TPEN Sets or returns the current text pen color for the main display, the supplied value will be modulo the number of screen colors. TRACE Although the state of this flag can be read, it is used primarily to set script tracing mode. When TRUE, this 109 flag causes the script interpreter to display each line as it is executed. LOGOFF$ Set this string variable to a Terminus script file that will be executed when carrier is lost or the user selects [MISC][HANGUP MODEM][h]. This script is only executed once for each time that it is assigned. Once executed, the contents of the variable are destroyed to prevent reexecution. This is a safety feature to prevent a runaway script from getting hung in an indefinate loop or doing other unexpected/unwanted things. LOGOFF$ also overrides the operation of the ONCARRIER command and any currently executing script. The current script is lost, and therefore, the state of an active ONCARRIER whenever a LOGOFF$ script is executed. 28.16 OPERATOR PRECEDENCE Precedence refers to the order in which operators are evaluated in a mathematic or logical expression. Parentheses may be used to alter the evaluation order of an expression. (highest) + - Unary. * / Multiplicative. % Modulus. + - Additive. < <= > >= Relational: less, less/equal, greater, greater/equal. == != Equality, inequality. NOT Logical. AND " OR " (lowest) XOR " 28.17 SYNTAX The following notation is used to describe the syntax for commands and their required (or optional) arguments. All punctuation must be included where shown. UPPERCASE Items in uppercase define script commands and keywords. lowercase Items in lowercase are supplied by the user. | Vertical bars separate multiple items. - Horizontal bar indicates a numeric range. [] Brackets enclose one or more optional items. {} Braces enclose multiple items, one of which must be present. 110 ... Ellipses indicate items that may be repeated. op Arithmetic or logical operator. num Integer number, -2147483648 - +2147483647. string Character string enclosed with double quotes, length of 255 max. func Function that returns a or result. var Integer variable. aexpr {num | var | func} [op {num | var | func}]... svar String variable. sexpr {svar | string | func} [+ {svar | string | func}]... cop Conditional operator: relational, equality. cond Conditional statement: {sexpr | aexpr} [cop {sexpr | aexpr}]... boolean {ON | TRUE | OFF | FALSE} dirspec An that indicates a valid AmigaDOS directory pathname. filespec An that specifies a valid AmigaDOS filename. argument {filespec | dirspec | sexpr | aexpr}... statement Any valid script command and associated arguments. 28.18 CHARACTER ESCAPES Terminus supports an extensive set of character escape codes for text strings for function key macros, option command assignment and for use with the SEND, PRINT, INPUT, ASK, WAIT and WHEN commands. The escape codes are listed as follows: ~ Pause one half second. ^^ The '^' character. ^~ The '~' character. ^! The '!' character. ^A...Z Send char as a control character. ^@ The NUL (0x00) character. ^[ The ESC (0x1b) character. ^\ The FS (0x1c) character. ^] The GS (0x1d) character. ^_ The US (0x1f) character. \" The '"' (double quote) character. \' The ''' (single quote) character. \\ The '\' character. \xHH Two digit hexadecimal character. 111 \OOO Three digit octal character. \a The BEL (^G) character. \b The BS (^H) character. \e The ESC (^[) character. \f The FF (^L) character. \t The TAB (^I) character. \n Sends CR/LF sequence. \r Sends {CONSOLE}{EOL OUT}{E}. The "\r" escape is a special case when used. It will send the current setting of {CONSOLE}{EOL OUT}{E}. If this is used for local text output to the display then this setting, {CONSOLE}{CR XLATE}{X} and {CONSOLE}{LF XLATE}{T} should match so that a newline is generated. The following table illustrates the recommended settings: {EOL OUT} {CR XLATE} {LF XLATE} CR ADDLF STRIP LF STRIP ADDCR CRLF LEAVE LEAVE When assigning options with strings that need to be quoted, you need to use the following format: TEMP$ = "SEND \"THIS STRING^M\"" This example results in the string variable TEMP$ being assigned the string: SEND "THIS STRING^M" The outer double quotes are stripped, but the escaped quotes are retained. 28.19 SCRIPT FILE I/O Scripts are capable of reading and writing up to six different files simultaneously. Data is read from the file and assigned to integer or string variables and is written from variables or string/integer constants as ASCII text with one line for each data item. In order to detect an end-of-file condition with variable length files, Terminus returns a numeric value of -1 or a string value of "END_OF_FILE", depending on which type of variable was due to receive an assignment when the end-of-file was reached. This allows for simple loops to control file reading, such as READ_LOOP: READ #1, TEMP$ IF TEMP$ == "END_OF_FILE" GOTO READ_END ENDIF ... GOTO READ_LOOP READ_END: 112 CLOSE #1 The descriptions for the OPEN, CLOSE, READ and WRITE commands below go into detail on how to use script file I/O. 28.20 SCRIPT EXECUTION DETAILS While the design of Terminus strives to achieve internal multitasking as completely as possible, there are some areas that are synchronous by necessity. The file requester is one area (except when used for file transfer selection), script execution is another. Contained within Terminus is a pattern matching engine that can compare the serial input data stream with up to 32 strings of text simultaneously. You interface with this engine via the script language to process the data as matches occur. In order for the pattern matching to succeed input data has to be controlled so that data does not get processed until the engine has been initialized for the strings that it is to search for. This is accomplished by processing scripts and serial input in an either/or method. Basically, while a script is executing serial input data is held off from being processed until the script enters one of several states. There are three basic states of script execution, "running", "stopped" or "suspended". The first two are self-explanatory, the suspended state has three modes that will be explained here. The first mode is the input mode. Whenever the script commands ASK, INPUT, GETSTRING or GETINT are used the script will be halted and serial input as well as keyboarded output will be channeled to the active script command that is currently waiting for input. The status line indicator INPUT will be displayed while the script is waiting for input for added visual feedback to determine what Terminus is doing. The next mode of suspended script execution is the wait mode. Terminus displays the indicator WAITING on the status line whenever it is waiting for serial input or a timeout to occur. It is this mode that allows serial input to be processed by the pattern matching engine during script execution. The last mode is activated whenever a script initiates a file transfer via the commands ASEND, UPLOAD or DOWNLOAD. A script will also become suspended if a ZMODEM or XPR autodownload is initiated as well. It is recommended that your script be written so that it is synchronized to the autodownload though, either via an explicit WAIT or by looking for a specific string that is sent prior to the file transfer beginning so that script synchronization with the remote system is maintained. 28.21 INPUT COMMANDS There are four script commands related to data input, ASK, INPUT, GETSTRING and GETINT. The latter two commands are local-only 113 requester based input methods that will not be described here. This section only deals with the first two commands, ASK and INPUT. Both commands were designed with the purpose of getting input from a remote user or from the local user, or both. When used without the keyword LOCAL both commands will check the status of the DCD (carrier detect) serial line to determine if remote input will be accepted as well as outputting an optional prompt string if present. When the keyword is used then only local input (and output) will take place. The primary intent of these commands is to provide you with the ability to create a host environment as simple or as complex as you choose. 28.22 STRING MATCHING The core of Terminus' script language are the two commands, WAIT and WHEN, With combinations of these commands you can automate Terminus in such a manner that very little, if any, intervention is required during it's operation. The operation of both WAIT and WHEN are somewhat different when used in an ARexx script, please see the section below to learn those differences when using Terminus with ARexx. The rest of this section is devoted to using WAIT and WHEN within a Terminus script. In order to search for one or more strings Terminus has to be in a "wait" state, which is accomplished via the WAIT command. The WAIT command will halt all script (internal and ARexx) execution until the WAIT is satisfied via a timeout or a string match. The WHEN command is somewhat like the WAIT command in that it searches for a string match as well. However, it cannot be used alone, it must be used in conjunction with WAIT as Terminus does not search for strings unless it is in a wait state. The primary purpose for using WHEN is if there is more than one string that can be received from the remote system, or when there can be a variable number of a certain string, like the common "More?" prompt that a system uses when displaying data in a paged format. Essentially, you will use WAIT and optionally, WHEN to automate the process of an online session by searching for an expected prompt from the remote system and sending data in response to the received data. The most basic of examples is something like this: WAIT "First Name?" SEND "Jack^M" WAIT "Last Name?" SEND "Radigan^M" WAIT "Password?" SEND "mypw^M" 114 This example illustrates a simple login script which, by the way, is practically identical to how the Terminus script recorder generates a script. It waits for a keyboard response and generates a WAIT statement based on the most recently received data. It then generates the SEND command based on what you enter at the keyboard. Now, let's add the following to this basic script; the remote system has a daily news file that isn't always displayed and is also displayed in varying length depending on how much news is present. Since the system pauses after a group of lines has been sent it generates a "More?" prompt that requires you to press or some other key in response to continue. This situation is exactly what WHEN is used for. What we do is add a WHEN statement that will look for the "More?" prompt and send a carriage return each time it's seen. WHEN 1 "More?" SEND "^M" WAIT "First Name?" SEND "Jack^M" WAIT "Last Name?" SEND "Radigan^M" WAIT "Password?" SEND "mypw^M" That's all there is to it! Since there are 31 separate strings that WHEN can search for at once we need to declare which one of the "slots" that the WHEN command will place the target string in. The second part of the statement is the SEND "^M" portion. This is executed each time a "More?" prompt is seen. Please refer to the descriptions for WAIT and WHEN to learn of the other variations to these commands. 28.23 BULLET-PROOF AUTOMATION Terminus also offers several other commands that should be considered if you are interested in completely reliable automated operation. Building on the simple login script listed above we will add the necessary commands that will make it completely bullet-proof to any situation that may arise during the connection. Again: ONCARRIER GOTO No_dcd ONTIMEOUT GOTO Retry WHEN 1 "More?" SEND "^M" WHEN 2 "New User? (Y/n)" GOTO Bad_entry WHEN 3 "Reenter password?" GOTO Send_pw WAIT "First Name?" SEND "Jack^M" WAIT "Last Name?" SEND "Radigan^M" WAIT "Password?" 115 Send_pw: SEND "mypw^M" WAIT "Command?" GOTO Logged_in Bad_entry: SEND "N^M" GOTO Again No_dcd: LOG "Lost carrier during connection" END Retry: SEND "^M" WAIT 3 LOG "Unable to login" END What this script represents is how you could handle a typical login situation so that it is prepared for any eventuality. Although this example represents a fictional system, it illustrates what is required to make a login completely reliable to any possibility of lost or corrupted responses from your computer to the remote system or a loss of carrier during the login sequence. The first two commands, ONCARRIER and ONTIMEOUT defend against carrier loss and corrupted/lost responses. If they are executed it will be due to one of those conditions. The ONCARRIER is self explanatory, it will jump to the No_dcd label, log a result to the logfile and exit the script. The ONTIMEOUT jumps to the Retry label which sends a carriage return, waits 3 seconds for one of the WHEN commands to match and then exists if it timeout. Next we set up 3 WHEN statements that are used to match the possible prompts that the remote system can send back to us. The first one is used to reply to a "More?" prompt while the next two are used to defend against the remote system getting corrupted responses from us. The second WHEN is matched if either the first or last name response was corrupted. Instead of entering ourselves as a new user we send back an 'N' response and then retry the entire process by jumping back to the Again label. The last WHEN is used to defend against a corrupted password response. In order to search for that we need to add one more WAIT after the password is sent or else we wouldn't know if it was received properly. By waiting for the "Command?" prompt we're able to find out if the password was received correctly. If not we jump back to the SEND statement that sends the password and wait again. If the password was received properly we will get the "Command?" prompt and then jump to the rest of the script that does whatever is necessary for this connection, like retrieving mail, files and so forth. 116 28.24 AREXX INTERFACE As detailed in the scope table above, level 8 script commands are not accessible to ARexx scripts. This category of script commands relate to execution control or functions that are near or exact duplicates for ARexx functions. Terminus does not support the passing of ARexx variables, all returned data is done so via the default ARexx variable RESULT. The RC variable is also used by Terminus to return the result code of the last executed Terminus command. The following return values are used: 0 A command executed properly. 5 The command sent by ARexx is not supported in Terminus. 10 A syntax or other execution related error occurred. 20 A fatal error that may or may not be directly related to the command that was executed. The input commands, ASK, INPUT, GETSTRING and GETINT operate slightly different when used with ARexx. Omit the script variable with each command as is necessary when they're used with internal scripts, Terminus will return the entered data in the default ARexx variable RESULT. The WAIT command returns a result in RESULT once the command is satisfied, the possible responses are: "KILL" The user selected [SCRIPTS][STOP SCRIPT[T] while WAITing, [SCRIPTS][ABORT AREXX MACROS][k] or the associated Terminus session exited for some reason. "TIMEOUT" A timeout occurred while WAITing. "QUIET" A WHEN QUIET condition was satisfied. 0 The string sent with WAIT was matched. 1-31 A WHEN string match occurred. The WHEN command is not supplied SEND or GOTO arguments when used with ARexx. Terminus will return a numeric value representing the associated WHEN slot that was matched. The "KILL" result is also returned to a waiting script if an aborted file transfer occurs. A value of 0 is returned if the transfer completes successfully. 117 29 FUNCTION AND STATEMENT DESCRIPTIONS ABS(aexpr) 8/INTEGER Returns the absolute value of . TEMP = -12 PRINT "ABS(-12) = " ABS(TEMP) When this script fragment is executed the following is printed: ABS(-12) = 12 ALARM 7/COMMAND Produces the audible attention sound that's used for file transfer completion and dialer connections. ASC(svar) 8/INTEGER Returns the ASCII code for the first character of , error if NULL. TEMP$ = "ABCDE" TEMP = ASC(TEMP$) IF TEMP == 64 /* The decimal value of 'A' is 65 */ PRINT "EQUAL" ELSE PRINT "NOT EQUAL" ENDIF When this script fragment is executed the following occurs: NOT EQUAL ASEND filespec 7/CMD ASCII send a file. If is not a fully qualified pathname, the path defined in {PATHS}{UPLOADS}{U} will be used to locate the file. Typical command arguments would be: UPLOADSPATH$ = "UPLOADS:" FILE$ = "foo.txt" ASEND FILE$ When this script fragment is executed the filename "UPLOADS:foo.txt" will be sent via ASCII send. 118 ASK [LOCAL] [string,] svar 7/CMD Get a single character response from either the local user or from the remote connection if DCD is present and LOCAL is not used. Optionally prompt with if included, a '?' character is output otherwise. Returns a single character to . ASK "Enter menu selection: ", MENU$ This command will display the prompt with the string in quotes and place the single character input that the local or remote user enters into the string variable MENU$. Since this command is an assignment, the variable does not have to be declared prior to its use here. NOTE! This command cannot be used within a function key macro one-line script. AREXX NOTE! Do not supply a variable when ASK is used from an ARexx script. Terminus will return the character response via RESULT. BEEP 7/CMD Sounds bell if {GENERAL}{AUDIBLE BEEP}{A} is TRUE, otherwise a screen flash via the system call DisplayBeep() occurs. CALL filespec 8/CMD Start a new script file. Can return to the calling script with the use of the END command in the called script. If is not fully qualified, the supplied filename will be prefixed with the current path defined in {PATHS}{SCRIPTS}{S}. Global variables are not cleared. CAPTURE {OPEN | APPEND | CLOSE} [SAVE] filespec 7/CMD Open, append or close a capture file. If the SAVE option is present on an open or append, the contents of the review buffer will be written to the capture file. If is not fully qualified, the supplied filename will be prefixed with the current pathname defined in {PATHS}{CAPTURE}{P}. CAPTUREPATH$ = "RAM:" CAPTURE APPEND SAVE "ARCHIVES:review.cap" CAPTURE OPEN "foo.cap" This fragment will cause the current contents of the review buffer to be appended to "ARCHIVES:review.cap". That file will then be closed and "RAM:foo.cap" will be opened as a new capture file. 119 CHAIN filespec 8/CMD Starts a new script file. Does not return to the calling script. If is not fully qualified, the supplied filename will be prefixed with the current path defined in {PATHS}{SCRIPTS}{S}. Global variables are not cleared. CHDIR dirspec 8/CMD Change current directory to . If does not exist no directory change will occur. CHR$(aexpr) 8/STRING Returns a single character string representing the ASCII value of modulo 256. TEMP = 354 CHAR$ = CHR$(TEMP + 23) The string variable CHAR$ will be assigned the character 'y' which is (354 + 23) % 256 = 121. CLEAR 8/CMD Clear all script variables, global and local. CLOSE [#fnum, ...] 8/CMD Close file or all open files if none are specified. CLRLINE [aexpr] 7/CMD This command will clear all or a portion of the line that the cursor is currently positioned on. The start of the line to be cleared is determined by the column that the cursor is at. The optional will limit the number of characters to be cleared, if present, to that amount or the remainder of the line if not. The section cleared will be set to the current color defined by the BPEN variable. 120 CLRRECT aexpr1, aexpr2, aexpr3, aexpr4 7/CMD Clears a rectangle in the main display starting at row , col and ending at row , col . The rectangle will be set to space characters and cleared to the current color defined by the BPEN variable. CLS 7/CMD Clear screen using the current values of TPEN and BPEN. CONTINUE 8/CMD Resume execution with the next iteration of the currently executing FOR, REPEAT or WHILE loop. The script must be executing one of these loop commands or an error will occur. CURPALETTE c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c1 7/CMD Sets current console palette colors. This command does not set the entire palette structure as the PALETTE option commands do. All color register values must be supplied in RGB hexadecimal format. DOWNLOAD [filespec] 7/CMD Download a file using the current protocol selected. If is not fully qualified, the supplied filename will be prefixed with the current path defined in {PATHS}{DOWNLOADS}{D}. When DOWNLOAD is used with protocols such as YMODEM and ZMODEM, is ignored as those protocols send the filename, size and other information as part of the transfer. When used with XPR selected, is sent to the protocol library for use as needed by the selected XPR. END 8/CMD Halt script execution. Resumes execution in the previous script if the current script was started as the result of a CALL command. 121 EXECUTE sexpr 8/CMD Executes as an AmigaDOS command. COPY$ = "copy " FOO$ = "foo " BAR$ = "bar:" EXECUTE COPY$ + FOO$ + BAR$ The resultant string "copy foo bar:" will be executed as an AmigaDOS command that copies the file "foo" from the current directory to the volume (or logical assignment) "bar:". EXISTS(filespec) 8/CMD Returns TRUE if exists. IF EXISTS("TERMINUS:welcome.txt") ASEND "TERMINUS:welcome.txt" ELSE SEND "Welcome!\r" ENDIF This fragment checks to see if the file "TERMINUS:welcome.txt" exists, if it does it will be sent to the serial port via an ASCII send. If the file does not exist the string "Welcome!", and the current EOL will be sent instead. EXIT 8/CMD This command will terminate the currently executing FOR, REPEAT or WHILE loop. An error will occur if no loop is executing. FOR var = start TO end [STEP [-]step] statement(s) ... NEXT 8/CMD Initialize to the value of then execute intervening while the value of is algebraically less than or equal to the value of . 122 NEXT causes to be incremented by 1 or . Unlimited nesting is allowed. FOR I = 20 TO 0 STEP -2 PRINT I " " NEXT The output from this script fragment would be: 20 18 16 14 12 10 8 6 4 2 0 GETINT prompt [, num, min, max] var 7/CMD Opens an integer input requester with the current value of (which can be created as part of calling this command). The optional and values define the boundaries of valid numeric input for the user. The OK gadget or pressing is required to accept the changed value. TEMP = 50 GETINT "Enter value", TEMP, 0, 100 Using this script fragment would result in the integer requester being opened set to the value of 50 and would only allow a value between 0 and 100 inclusive to be entered. The variable TEMP would be changed to the entered value once or {GETINT}{OK} is pressed. NOTE! This command cannot be used with a function key macro one-line script. AREXX NOTE! Do not supply a variable when using this command in an ARexx script. The return value will be passed back to the script via RESULT. GETLINE$(aexpr) 7/CMD Returns a copy of the contents of row in the main display. The string will be the same length as the current width of the display. If is less than 1 or greater than the number of rows in the display, an out or range error will occur. 123 GETSTRING prompt, svar 7/CMD Opens a string input requester with the current value of the supplied string variable (which can be created as part of calling this command). The OK gadget or pressing is required to accept the changed value. NOTE! This command cannot be used with a function key macro one-line script. AREXX NOTE! Do not supply a variable when using this command in an ARexx script. The return value will be passed back to the script via RESULT. GOSUB label 8/CMD Continue execution of script at