================================== term =================================== =========================================================================== A Gift-Ware Telecommunications Program Written By Olaf Barthel, © Copyright 1990,91 by Olaf Barthel & MXM, All Rights Reserved. No guarantee of any kind is given that the program(s) described in this document are 100% reliable. You are using this material on your own risk. =============================== Background ================================ =========================================================================== This program is a product of anger and despair; I was unable to find a telecommunications program to suit my personal needs -- neither in the commercial area, nor in the public-domain. Most programs had a lot of extras but lacked other perhaps more important, perhaps more sensible features (just to take an example: in revision 2.20c and after four years of constant development `HandShake' still fails to use the current keymap settings and also strips the 7th bit when displaying characters - sorry Eric, that's why I've never registered!). I have hesitated for a long time before starting my first attempt at writing my very own telecommunications program. When Kickstart 2.x was about to become widely available I took the opportunity to create `term' always trying to use the new OS routines wherever possible. While this started to be quite a difficult task it also was a lot of fun (imagine Columbus wrecking his fleat four times on his journey to the West Indies due to unexpected leakages in all vessels and sudden changes in the ships' sailing manuals -- that's how I felt!). As far as computer-telecommunications are concerned, Germany appears to be a developing country. This is partly due to the Deutsche Bundespost, the federal mail/phone company whose telecommunications monopoly used to be protected by federal law. Until 1989 you would risk a heavy penalty if using a non-registered modem or telephone instead of the Bundespost-supplied hardware. So, if you have any complaints, or miss a few extremely important features in `term', don't boo and hiss, I am not as long in the telecomm business as you are (I have yet seen only a single DEC VT-101 from afar!). Tell me what you need and I will try to add it in the next revision. This project was started at December 24 1990 and completed by January 25 1991. I used the following tools to create `term': SAS/C 5.10a, WShell, CygnusEd Professional Release 2, KeyMacro & ARexx. My thanks go to the following people for their invaluable help and assistance: Holger Lubitz, Peter Fischer, Christoph Teuber, Garry Glendown, Oliver Wagner, Jürgen Otte, Germar Morgenthaler, Matthias Zepf, Markus Stoll, Ralf Thanner, Veith Schörgenhummer, Michael Vaeth, Roby Leemann & AUGS, Thorsten Seidel, Till `Dill-Prince' Prinzler, Volker Ulle & the Aquila Sysop Team, Marc-Christian Schröer, Udo Wolt, Michael Hohmann, Henning Hucke and to all those who supplied libraries & control sequence tables. The xpr-libraries were created by Willy Langeveld (ascii), Kenneth Osterberg and Markus Pietz (jmodem), Stephen Walton (kermit), Jack Rouse (quickb), Marc Boucher (xmodem) and Rick Huebner (zmodem). The xpr-standard was created by Willy Langeveld, the Res.asm source code was provided by Edward Carrol, I borrowed a single routine (ahtoi) from Matthew Dillon's `DMouse' program, the quicksort routine (QuickSort.asm) was written by David Jones, the touch-tone dialing routines are based on the article `DTMF - A Program for Generating Touch-Tone Signals' by Adam Levin. Since time did not permit me to translate the full original German documentation into English, I had asked the Z-Net Amiga community for help. As a result this document was translated by three different authors (in order of translation): me, Marc Schröer and Henning Hucke. Garry Glendown took care of the termRexx documentation -- thanks to all of you! ============================= The source code ============================= =========================================================================== Since there are still only very few well-documented examples (or general programming examples) for Kickstart 2.x I have decided to include the *full* `C' source code with the `term' distribution. The source code is _not_ intended for commercial use. If you are about to include portions in commercial programs you will need to ask me for permission. Still you may use parts of the source code for non-commercial software development without my consent. I sincerely hope that the release of the full `term' source code will give Kickstart 2.x a better start (I've overcome quite a lot of obstacles) so that more programs to use the new OS features will be available soon. ============================ The distribution ============================= =========================================================================== `term' may be included with commercial programs as long as no money is made by including it in the distribution (this also applies to inclusion in AmigaDOS Enhancer kits, on Workbench/Extras disks or A3x00 hard disk drives). You _must_not_ make any money by distributing `term'. A small copy fee for data media (5$ US maximum) or the inclusion of `term' in Public-Domain collections such as Fred Fish's Amiga Library of Freely Distributable Software is permitted though. ============================== Using `term' =============================== =========================================================================== The program `term' and the data received/sent by it must not be used for the following purposes: 1) The construction, development, production or testing of weapons or weapon systems of any kind. 2) The construction, development, production or use of plants/installations which include the processing of radioactive/fissionable material. 3) The training of persons to deal with the abovesaid actions. ===================== Updates & new program revision ====================== =========================================================================== Whenever a new release of `term' becomes available I will try to make it known in the telecommunications networks. To order a copy send a self addressed envelope, an international mail reply coupon (coupon-réponse international) and a 3½" disk to the author. ============================ Operating `term' ============================= =========================================================================== `term' can be controlled both by mouse and keyboard. With two minor exceptions each operation requiring mouse control can also be executed using keyboard shortcuts. The program can be started both from Workbench and from Shell. Kickstart 2.x is required to run `term'. The program will refuse to work if executed under control of Kickstart 1.3 and below! At least Kickstart 2.04 (revision 37.74) and Workbench 2.04 (revision 37.33) are required to execute `term' successfully. Earlier developer Kickstart revisions or the Kickstart release installed on the older A3000 models will probably not work (try it if you want -- but don't complain!). If called from Shell `term' will detach itself immediately allowing the Shell window to be closed afterwards. This effect can be avoided if `KEEPIO' is entered in the command line (`term keepio'). Usually, running `term' twice will cause the screen of the other program to be popped to the front instead of creating a second `term' process. To avoid this effect, enter `DONTPOP' as a calling parameter (e.g. `term dontpop'). If called from Workbench, each program will run as a separate process. =============================== The display =============================== =========================================================================== The `term' main screen always opens to the full text-overscan size (which can be set using the `Overscan' tool in the `Prefs' drawer). At the bottom of the screen a small window displays a few basic parameters. These are: Status ........ The current program operating status. This includes `Ready', `Holding' (control-s was pressed), `Dialing' (the dialing function is at work), `Upload' (data is being sent), `Download' (data is being received), `Breaking' (a break signal is transmitted across the serial line) and `Hanging up' (connection is being cancelled). Font .......... The currently active screen font used for text/graphics rendering. Protocol ...... The currently set data transfer protocol. Emulation ..... The currently active terminal emulation mode. Baud Rate ..... The data transfer rate in bits per second. Parameters .... The current serial parameters (Data bits-Parity-Stop bits). Time .......... The current time of day. Online ........ The time elapsed after a connection was successfully established. This counter will be stopped as soon as the connection is cancelled (e.g. by hanging up) and is reset to 00:00:00 as soon as a new connection is made. The screen itself is opened as a public screen (called `TERM') which is available to other programs for their purposes. If more than one `term' process is running, the public screen name will change according to the number of the program (i.e. the first `term' to be started will call the scren `TERM', the second one will call it `TERM1', the third one `TERM2', etc.). The screen title bar will also display the name of the public screen. Cut & paste functions are available on the main screen. Use the mouse to point to the first character you wish to send to the clipboard, hold down the (left) select button, move the mouse to the last character you wish to cut and release the button. The characters you have just marked will have been transferred to the clipboard, use the key combination Amiga+V to paste the contents of the clipboard and to feed them back into the input stream. Holding down the control key while clicking on a character will feed the single character into the input stream, it will not be buffered in the clipboard. Hold down any shift key to have the contents of the clipboard fed into the input stream right after the mouse button is released, a will follow the data. In standard string editing fields a solution had to be found to preserve the line editing functions while still supporting menu shortcuts. To undo any changes made press Amiga+Q, to clear the string editing field press Amiga+X. Menus associated with the shortcuts Amiga+Q/X are called by holding down any shift key along with the Amiga keys (i.e. Shift+Amiga+Q will select the `Quit' menu item if available). ================================ The menus ================================ =========================================================================== For each requester and input window there exists a set of menu items to execute the commands associated with the buttons, dials and gauges in the requester/window. Press to right mouse button to have a look at the commands and their shortcuts. The following text is to describe the menu items available in the `term' main menu. 1. Project ---------- This menu contains functions to load and to save program configurations and to quit the program. Open Preferences............... Loads the program configuration from a file to be selected. Save Preferences............... Saves the current program configuration under the configuration file name last entered. Save Preferences As............ Saves the current program configuration to a file to be selected. Print Screen................... Sends the current contents of the `term' screen to the printer. This is not a graphics hardcopy, only the ASCII characters are printed. About.......................... Shows some information on the program. Quit........................... Quits the program after asking for confirmation. After selecting the `Quit' menu item the program may take a few seconds to exit since the contents of the `log book' are freed first. 2. Utilities ------------ This menu contains functions which are to make your life a bit easier. AmigaDOS commands as well as ARexx script files may be started from here. As a special gift for `Snap' users, the contents of the clipboard may be fed into the input stream. Set Console Window............. Whenever an AmigaDOS/ARexx command is executed an output window is opened. This menu item will bring up a requester allowing you to edit the size and position of the window to be opened (consult your AmigaDOS manual for a description of the window position string). If you do not want the window to appear, simply enter `NIL:'. Execute AmigaDOS Command....... Enter the command you want to execute and its command line arguments here. Execute ARexx Command.......... This function calls the ARexx server to execute a script file. If the first input character is a ` or " the input will be considered as a small program in a line. Note that this function will not be available if the ARexx server isn't running. The ARexx command set supported by `term' is described in the file `termRexx.doc'. Edit File...................... Invokes the currently selected (see `Paths' preferences menu below) text editor on a file to be selected using a file requester. `term' will block and wait until the editor has returned. Paste Clipboard Contents....... The current contents of the clipboard will be fed into the input stream (max. 255 characters). Use the `log book' screen to cut strings and characters to the clipboard (`Snap' may also be used for this purpose). Packet Window.................. Opens/closes an input window in which a single line of characters to be transferred across the serial line can be entered. More on this feature is explained under `The packet window' below. The menu functions `Execute AmigaDOS Command' and `Execute ARexx Command' allow you to select the name of the file to be executed by clicking on the `Load File' gadget. 3. Capture & Buffer ------------------- The menu items in this menu offer functions to load/save, to display and to capture incoming text/graphics data. Clear Buffer................... Clears the contents of the `log book'. Any text will be discarded and _cannot_ be recovered. Capture files are not affected by this command. Display Buffer................. Opens the `log book' screen. Close Buffer................... Closes the `log book' screen but does not free the contents. Load Buffer.................... Loads the contents of the `log book' from a file. If there are still text lines in the `log book' a requester will appear giving you the choice to discard the old data, append the new data, or to cancel the action. Save Buffer.................... Saves the contents of the `log book' to a file. You will be notified if the file to save to exists already (you may discard the old file, append the new data or cancel the action). Capture To Disk................ Toggles file capture, options are the same as with `Save Buffer'. Capture To Printer............. Toggles printer capture. More detailed information on the `log book' will be given later in this document. 4. Transfer ----------- Since data transfer cannot always be done by keyboard and console, `term' supports a number of transfer protocols implemented as xpr-libraries. The `term' distribution includes xprascii.library, xprjmodem.library, xprkermit.library, xprquickb.library, xprxmodem.library and xprzmodem.library. Upload Text.................... Sends a file/files to the remote receiver using the current transfer protocol. If possible this command will `ask' the transfer protocol to transmit the file(s) in text mode (whatever that means) which may include CR/LF substitution and other gimmicks. Consult the library documentation to find out if your favourite transfer library supports text mode. Download Text.................. Request a file/files using the current transfer protocol. Refer to `Upload Text' for features/options of this mode. Send ASCII..................... This is a pure ASCII-file upload implemented through xprascii.library. It was added to allow poor BBS programs to receive text files (especially Paragon doesn't seem to like ZModem text file upload). Receive ASCII.................. This is a pure ASCII-file download implemented through xprascii.library. Refer to `Send ASCII' for features/options of this mode. Upload File(s)................. Send a file/files to the remote receiver using the current transfer protocol. True batch upload is supported both through wildcard expressions ("#?.txt" will send all files whose names end with `.txt') or through multiple selection (hold down the shift key and click the names of the files you wish to transmit). Refer to the documentation of your favourite transfer library to find out if batch file transfer is supported. Download File(s)............... Receive a file/files using the current transfer protocol. If the protocol does not support batch download you are required to enter the name of the file to be received. Files which remain empty after the transfer are deleted automatically. Transfer Options............... The transfer options can be changed with this command. If possible a control panel will pop up which allows you to change the current parameters by mouse/keyboard. If the selected transfer protocol does not provide these option hooks, a simple string requester will prompt for input. Consult the documentation of your favourite transfer protocol for legal options and the values to which they can be set. Transfer Protocol.............. This command allows you to specify the transfer protocol library to be employed for up-/downloads. The transfer routines open an information window in which a number of transfer parameters are displayed. Additionally, the file transfer can be aborted by clicking either of two buttons (`Abort Entire Transfer' and `Skip Current File'). Note: for most transfer protocols both buttons (abort and skip) have the same effect. Consult the documentation if different levels of abort are supported by your favourite transfer protocol. The following information is displayed in the transfer window: Protocol............... The name of the transfer protocol currently running. File................... The name of the file being transferred. Size................... If available, the size of the file. Bytes Transferred...... Number of bytes transferred yet. Blocks Transferred..... Number of data blocks transferred yet. Block Check Type....... The method employed to verify the integrity of the data blocks being transferred (this usually is a form of cyclic redundancy checking). Block Size............. Size of a data block in bytes. Estimated Time......... The time the transfer protocol expects the transfer will take. Elapsed Time........... The time elapsed during transfer. Message................ A message of the transfer protocol addressed to the user. Last Error............. A short description of the last error which occured during file transfer. Number Of Errors....... The number of errors occured during file transfer. Number Of Timeouts..... The number of timeouts occured during file transfer. Packet Type............ A short description of the data block type employed for data transfer. Packet Delay........... The delay between two packets being sent. Characters/Second...... The effective transfer speed in characters per second. Character Delay........ The delay between two character being sent. `term' scans the incoming data stream for the ZModem inquire sequence. If the ZModem protocol is selected and `term' notices the approriate sequence it will pop a requester asking you for the type of transfer to initiate: either `Text mode' or `Binary mode' may be selected. When files have been received, `term' will take a look at the data. If the files do not contain any data they will be discarded. In the other case `term' will read the first 400 bytes and try to determine the type of the file (such as AmigaDOS executable, Workbench icon, LhArc archive, Zoom! archive or plain ASCII text). If successfully identified, the file will receive a file comment describing its type (to view the comment, use the Shell `List' command, or select the icon of the file and cast the magick Workbench spell of `Information...' on it). `term' currently knows 45 different file types. 5. Modem -------- The commands in this menu deal with controlling the serial line and the modem. Phonebook...................... The phonebook is one of the most powerful and complex functions of `term' and will be described later in this document. Dial........................... To dial a single phone number select this menu item. The phone number entered will be passed to the dialing routine. Redial......................... Dialing list entries the dialing routine was unable to establish a connection to are again passed to the dialer. Play Number.................... Outputs a telephone number using touch-tone dial coding on the Amiga audio hardware. Send Break..................... Sends a `break' signal across the serial line. Hang Up........................ Tells the modem to hang up the serial line. Release Serial Device.......... The serial driver is released for other programs to use it. A requester will appear which allows you to reopen the serial driver or to quit `term'. If the serial driver has been released by the ARexx interface and has not been reopened yet, this menu item will do it. 6. Display ---------- The items in this menu deal with the `term' main screen and the terminal emulation. Reset Styles................... Resets all character style attributes (bold, blinking, inverse video, underlined, etc.) and sets the text colour to the default pen. Clear Screen................... Clears the whole `term' screen and moves the cursor to the top left home position. Save Screen (IFF-ILBM)......... Saves the contents of the `term' main screen to a file. The resulting image file can be read by any program to support IFF-ILBM images. Save Screen (ASCII)............ Saves the current contents of the screen to a file; this does not include any graphics, only the ASCII characters are saved. 7. Preferences -------------- `term' is configured using the `Preferences' menu. The following text will describe the functions associated with each menu item: a) Serial Preferences --------------------- This is where the serial parameters may be changed. Baud Rate.............. Transfer speed in bits per second. Bits/Char.............. Number of bits per transferred character (7 / 8). Parity................. Serial parity (none, odd, even, mark, space). Stop Bits.............. Number of stop bits (1 / 2). Handshaking............ Serial handshaking mode (XON/XOFF, RTS/CTS, none). Duplex................. Determines whether characters are echoed back to the terminal screen or not (full, half = local echo). High-Speed Mode........ Activates a special mode of the serial driver which is to skip a couple of internal parity and stop bits checks resulting in higher data throughput rate. Note that enabling this feature will only make sense if used on two directly connected computers. Break Length........... Length of the break signal given in microseconds. Serial Device.......... The name of the serial driver to be used by `term'. This is usually `serial.device' (`modem?.device' for the internal Supra modem, `sxbios.device' for ASDG's serial IO card). Device Unit Number..... The device unit number of the serial driver selected above. This usually left 0 but can also be used to address multiple serial IO ports. Use.................... Accept the current settings. Cancel................. Dont' use the current settings. Most modems will not recognize a sudden change in the baud rate. Type `AT' to make the change known. b) Modem Preferences -------------------- This is where modem control strings and other related parameters are configured. Modem Init String...... The string to send to the modem after successful program initialization. This string is optional and does not need to be entered. The dialing routine will use the initialization string entered here before dialing a phone number. Modem Exit String...... The string to be sent to the modem shortly before the program terminates. Just like the modem init string this string is optional and does not need to be entered. The dialing routine will use the initialization string entered here before dialing the next telephone number. Modem Hangup String.... The string to be sent to the modem when asked to hang up the line. This string is not optional, it has to be present for the program to work properly. Dial Prefix............ The string to be used to prefix each dialing command. This is usually a variant of `ATDP' or `ATTD'. Redial Delay........... The time to wait after walking through the whole dialing list without making any successful connection before another attempt is started. Number Of Dial Retries. The number of times the dialer walks through the dialing list trying to make a successful connection before giving up. Dial Timeout........... The time to wait for a successful connection during dialing. After this time has elapsed, the dialer will skip to the next entry in the list. Connect Auto-Capture... If enabled will automatically open a capture file after successfully making a connection. Any other already open capture file will be closed before proceeding. Connect Auto-Baud...... Most modems echo the baud rate upon successful connection. If enabled the baud rate will be read and set for the serial driver. Log Actions............ If enabled will write a protocol of each program action (uploads, downloads, dial attempts, etc.) to a file. Each action is listed along with time and date. Carrier-lost-events will also note the approximate cost of the call. No Carrier String...... The string the modem emits if the data carrier is lost. The program uses this to determine the length of the connection and to calculate the how much the user is to pay for it. Connect String......... The string the modem emits after detecting a carrier signal. `term' uses this input to determine successful telephone connection, to reconfigure itself and to start the online timer. Voice String........... The string `term' is expected to receive if the modem detects a voice call. If in dialing mode, `term' will abort the process. The user will in any case be notified of the event. Ring String............ The string the modem emits if it receives a call, same effects as with the `Voice String'. Busy String............ The string the modem returns if the number which has just been dialed is busy. Use.................... Use the current settings. Cancel................. Keep original settings. c) Screen Preferences --------------------- This menu-item will bring up a window to change all parameters of the main screen. Display Modes........... All graphic-modes available for the main screen are displayed here. If you wish to use the 'Super Hires', the 'Productivity' mode or the A2024-modes, you will have to put up with some restrictions: there are only screens with a depth of two (Amiga colourmodes)and if in A2024-mode, different resolutions cannot be mixed with each other any longer. Annotation: the A2024-modes should only be used in connection with an A2024/Hedley-monitor. Otherwise the screen may 'crash' and working with 'term' is not possible any longer. Edit Screen Palette..... These gadgets are used to select a colour of the screen palette that is to to be changed. Red/Green/Blue.......... These proportional-gadgets are used to modify the portions of red, green or blue. Make Screen Public...... As dealt with before, the 'term' mainscreen is opened as 'public'. With this gadget the user may define if other applications are allowed to open up their windows on the 'term' screen. 'Shanghai' Windows...... This item, that is only displayed if 'Make Screen Public' has been selected, is closely related to the function before. If active, all windows that will normally be displayed on the Workbench screen will open on the `term' main screen. Use..................... Use the current preferences. Cancel.................. Keep the old preferences. It has to be remarked that all the 'new' display-modes (Super-Hires, Productivity, etc.) restrict the number of colours. Instead of 16-bit portions for red, green and blue, only 2-bit portions are used, which leads to a maximum width of the palette of at all 64 (4 × 4 × 4) colours. This is no 'feature' of 'term' but a hardware restriction. d) Terminal Preferences ----------------------- All settings that may be done here determine the behaviour of the terminal itself, i.e. how command sequences are interpreted and displayed. Capture Filter......... If selected, command sequences are filtered out before the incoming characters are captured to disk or printer. Destructive BS......... Determines if the 'Backspace' code, which will delete the character left from the cursor, only moves the cursor to the left or removes the character from the screen. Audible Bell........... If this function has been activated, every 'Bell' code will cause 'term' to generate a audible signal. Visible Bell........... If the function has been activated, every 'Bell' code will cause 'term' to generate a visible signal (screen flash). Force 80 x 24.......... Because of a higher horizontal resolution or as a result of the current overscan-preferences there often is space left at the right margin, which is automatically used by 'term'. Some BBS-programs are dependent on a fixed number of columns and lines (80 × 24) so that a change in the resolution leads to a disturbance in the display. With this gadget the user can force an 80 × 24 columns/lines display (the actual resolution of the screen is not changed, 'term' only performes a linefeed at the 80. horizontal position). Stop Blinking.......... If selected the VT100-blink option is suppressed. Send CR................ This gadget determines the sequence that is sent to the remote if a carriage-return is issued. As CR = without any change. As CR+LF = carriage-return and linefeed Ignore = suppress any carriage-return Send LF................ This gadget determines the sequence that is sent to the remote if a linefeed is issued. As LF = without any change. As LF+CR = linefeed and carriage-return. Ignore = suppress any linefeed. Colour................. This gadget determines the colour-mode the terminal emulation is going to use. Until now, three modes have been implemented: - Amiga Four colours and blinking. - 8 Colours (Blink) Eight colours and blinking. - 16 Colours Sixteen colours, as the EGA-palette. - Mono: Monochrome, two colours. Emulation.............. At this point the user may select the terminal emulation. First there is the a solid VT100/VT220/ ANSI emulation that supports all common command- sequences, then there is a so called 'Atomic' emulation which does only support the very basic command-sequences (CR, LF, Backspace, etc.), all VT100- and ANSI-command-sequences are suppressed, and, last but not least, a 'TTY'-emulation which does not suppress all command-sequences, as 'Atomic' does, but rather echoes them to the screen. Font................... 'term' makes use of two fonts to display text and graphics. 'Topaz' is the system-integrated standard font, 'IBM' is a font similar to the Standard IBM PC font which also contains graphics-symbols. If 'IBM' is selected input from the console is automatically translated into the corresponding 'IBM' characters. * IBM and IBM-PC are traderunes of the Frobozz non-magic International Business Machines, Inc. Use.................... Use the current preferences. Cancel................. Keep the old preferences. The built-in VT100-emulation supports all commands that have any use with 'term'. Not implemented are commands that control the printer (this should be left to the user), initiate internal terminal-tests, change the LEDs or were very complicated to implement. Although only hard-core VT100-users may recognize this: the backspace- and delete-keys were not swapped, characters with ASCII-code > 127 are displayed either and are not stripped (real 8 bits instead of 7 bits). The VT100-emulation also supports all commands of the VT220-terminal (thanks to Germar Morgenthaler who was able to get hold of the original documentation of the DEC VT220 console!), although there were only a few to be added. Acctually I had built in a lot commands that were supported only by VT220. Commands to swap between national keymaps (the DEC Multinational Character Set is accessed at _all_ times) and commands that control the printer are not supported. These commands are stripped. e) Startup Macro ---------------- At the beginning of every session with 'term' and after a connection has been established by the dialing routine a command-sequence is executed which may execute command-files or perform a automatical 'login'. This command-sequence can be edited by selecting this menu-item. f) Paths -------- In this part of the preferences all paths, which 'term' uses to save or load any data, can be determined. Config. Storage Dir.... The directory that will contain all configuration files (Phonebook, Makrokeys, etc.). The default configuration file is called 'Preferences.term' and will be searched in the path defined by the enviroment variable 'TERMPATH' (see end of document). xxx Up/Downloadpath.... The directories in which the functions contained in the 'Transfer' menu will search and create files. Capture Path........... This gadgets contain the path in which the the capture files will be created if 'Connect Auto-Capture' is enabled. Log File............... The name of the file in which the information on the actions executed by 'term' will be logged if 'Log Actions' is enabled. Text Editor............ Contains the name and search path of the editor used by 'Edit File' in the Utilities menu. Terminal 'Beep' Sound.. The name of the IFF-sound-file that will be played if a BEL-signal is detected. This file may for technical reasons not be larger than 102400 bytes. Use.................... Use the current preferences. Cancel................. Keep the old preferences. If the gadget 'Select' is clicked, the path or filename beside can be selected by the file-requester. g) Emulation ------------ The gadgets found here allow you to change the internal parameters of the selected emulation. Smooth Scrolling....... If active, the each carriage-return code will cause the contents of the screen to scroll up smoothly. Wrap Characters........ This function activates the automatical carriage return function which is triggered as soon as the cursor crosses the right screen margin. To avoid unpleasant side-effects, this gadget should be activated all the time. Wrap Cursor............ According to the VT100-specification the cursor movements have to stop at the edges of the screen. In spite of this the cursor may leave these borders, especially in ANSI-mode, and may appear at the other side of the screen. This gadget activates a more 'tolerant' mode. Insert Mode............ Normally, 'term' is in overwrite-mode (characters entered overwrite the contents of the screen). If this gadget is activated, typed characters are inserted by pushing all the characters right of the cursor towards the right margin. Note: the insert-mode does only work for lines. If characters are pushed out of the screen they cannot be restored. New Line Mode.......... This gadget activates a special mode in which some VT100-control-sequences cause 'term' to perform a linefeed instead of clearing the screen or other serious changes of the contents of the screen. Numeric Keypad......... If this mode is activated the keys of the numeric keypad transmit a command-sequence instead of a number. If the remote computer needs these sequences, this mode - applications mode - can be activated with this gadget. Cursor Keys............ If this mode is active the cursor-keys transmit a command-sequence instead of a cursor-move. If the remote computer needs these sequences, this mode - applications mode - can be activated with this gadget. Font Scale............. VT-100 offers four different sizes of fonts. They can be selected with this gadget: - Normal The normal height of the font. - Double Height (Top) Double height of font, only the upper part of the character is displayed. - Double Height (Bottom) Double height of font, only the lower part of the character is displayed. - Double Width Double width of font. - Half Width Half width of font. Use.................... Use the current preferences. Cancel................. Keep the old preferences. Now for the global preferences: a) Macro Preferences -------------------- This menu is used to set user definable strings for all ten function keys. All strings are considered command sequences, a topic which will be covered later in this document. Qualifier............. All in all 40 Keys may be covered with user defined command sequences. As the Amiga keyboard only has ten function-keys this gadget switches between the modifier keys (shift, control, alt) which, if pressed in addition which a function key, will execute one of the 40 command sequences. Load.................. Load the macro-keys from a file. Save.................. Save the macro-keys to a file. Use................... Use the current preferences. Cancel................ Keep the old preferences. As the definition of the function keys with command sequences contradicts the standard definition of the four functions keys of a VT-100-terminal, the keys F1-F4, which may be executed by pressing the shift key and the approriate function-key simultaneously, are mapped to the standard sequences for function-keys. The user may - of course - change these settings. b) Hotkeys ---------- This is where the key sequences used to arrange screens and to execute special functions are to be configured. term Screen To Front.. The keys to press to bring the `term' screen to the front. Buffer Screen To Front The keys to press to bring the screen of the log book process to the front (note: if the screen is not already open, pressing these keys will accomplish nothing). Skip Dial Entry....... As an alternative to the `Skip' gadget, pressing these keys will skip a dialing entry if the dialing function is currently active. Commodity Priority.... The commodity priority to assign this task to. You may want to change this value if you have more than one program running which uses the same key sequences as `term'. The program with the higher commodity priority will receive the keystrokes first. Hotkeys enabled....... Whether the hotkeys are enabled or not can be toggled by clicking on this gadget, or by using the `Exchange' program to be found in the `Tools/Commodities' drawer. Load.................. Loads the hotkey settings from a file. Save.................. Saves the hotkey settings to a file. Use................... Use the current settings. Cancel................ Keep the original settings. If any changes made here do not seem to take effect immediately, the user has probably typed a keyword wrong (causing the entire hotkey setup to fail). I'm sorry about this, but the current implementation of hotkey support does not sport error checking. c) Speech --------- If enabled, the Amiga speech synthesizer will be used to alert the user of certain actions, such as carrier lost, connection made, etc. This feature makes sense if `term' is running in the background where the user cannot see what is actually happening on the main screen. By default this feature is disabled. Rate.................. Speaking speed in words per minute. Pitch................. The greater this value, the higher the voice appears to speak. Frequency............. Voice frequency in Hertz. Volume................ The volume of the voice. Sex................... Enabled female or male voice. Speech enabled........ Toggles the activity of the speech synthesizer. Speak!................ Speaks a small sample text, note that speech must be enabled for this function to work. Load.................. Loads the speech settings from a file. Save.................. Saves the speech settings to a file. Use................... Use the current settings. Cancel................ Keep the original settings. ===================== Telephone book & Dial function ====================== =========================================================================== The functions described in the following can be found in the `Modem' menu and relate to the menu entries `Phonebook', `Dial' and `Redial'.    `term' is equipped with a user friendly telephone number management system, the `telephone book', which is operated via a Control field. The Control field is described in the following lines. Name List.............. The list of all telephone numbers with names                         against them (name of the corresponding mailbox). If one of these entries is selected with a double click, it will be placed at the end of the dialing list (More on this later). Name................... Name of the last selected telephone book entry. Phone Number........... telephone number of the last selected telephone book entry. Password............... Keyword to access the mailbox related to the last selected telephone book entry. Macro File............. Name for the file which contains the function key definitions for the last selected telephone book entry. Pay/Unit 1/2........... Cost for one pay unit. Minutes/Unit 1/2....... Duration of one pay unit in minutes. Together with                         the `Pay/Unit' entry the costs for a call are cal- culated. Start Time 1/2......... These two sliders select which one of the two charge rates will be used for which time of day. In Germany the 6 minute units (DM 0,23 per unit) start at 8:00 am and end at 6:00 pm. The 12 minute units start at 6:00 pm and end at 8:00 am the following morning. Serial,Modem,Screen,... These functions communicate with the corresponding Terminal,Startup,       functions in the `Preferences' menu and specify the Paths,Transfer         settings which are adopted as soon as a successful               connection is made to one of the telephone numbers                         which are stored in the telephone book. Play Number............ Plays the currently selected telephone number using touch-tone signal coding. Dial................... Enters the last selected telephone book entry into the dialing queue and jumps immideatelly to the dial function. Get Settings........... Copies the actual terminal settings to the selected telephone book entry. New Entry.............. Generates a new telephone book entry with standard settings and places it at the end of the telephone book. Remove Entry........... Removes the last selected telephone book entry from                         the telephone book and frees the memory allocated                         for this entry. Load................... Loads the contents of a telephone book from a file. Sort................... Sorts the contents of the telephone book in ascen-                         ding alphabetical order. Save................... Saves the contents of a telephone book to a file.    As I have been asked several times: For dialing a telephone number the dialing prefix specified for this telephone number is used. If the MNP-error correction for a certain mailbox has to be specifically switched on via the dial string, this has to be done in the modem settings for this mailbox and not in the global settings of `term'. The `Modem Init-String' and `Modem Exit-String' entries of the telephone book can also be used for initialisation.    A further field is opened as soon as a telephone book entry is queued to the dialing queue. Either the name of the telephone book entry is displayed, or, if it is a telephone number which has been entered via the dial function, only the telephone number.    The following input elements can be found in the input field of the dialing queue: Dial................... Activates the dial function and attempts to dial each of the dialing queue entries one after the other. Delete Call............ Removes an entry from the dialing queue. If all entries are removed the input field is closed. Cancel................. Deletes all entries from the dialing queue and closes the input field.    If the dial function is activated all input fields previously opened will be closed, a new input field is opened and the dialing process is followed. The following information about the dialling process is displayed: Calling................ The name of the telephone book entry belonging to the number being dialled. If it is just a telephone number the string constant `-- Unknown --' is shown, meaning that the name of the mailbox is unknown. Number................. The telephone number being dialed or _just_ dialed. Next................... The name of the telephone book entry which will be processed next if no connection is established. If no further entry exists, `-- None --' will be displayed. Timeout................ A counter which is decreased every second and which reflects the time remaining to establish a connection or to cycle through the dial queue again. Attempt................ This field shows the number of unsuccessful cycles made through the dialing queue to establish a connection. Message................ A message to the user. This can be: - Dialing... A dial is in process. - Line Is Busy. The dialed number is engaged. - Incoming Call! The Modem has been called from another Modem. - Incoming Voice Call! The Modem is receiving a call which was not originated by another Modem. - Connection Established. Nomen est omen! - Maximum Number Of Dial Retries Reached! Also nomen est omen. - Dial Attempt Timeout. The time available to establish a connection has been reached or exceeded. - Redial Delay... Pause until the next cycle through the dialing queue.    Additionally three buttons can be found in the input field, which initiate the following functions. Skip Call............... With this function the current dialing attempt is cancelled and the next number is processed. If no succeeding telephone number exists `term' waits for the next cycle through the dial queue or until `Skip Call' is `pressed' again. There also is a hotkey combination available to accomplish the same effect. Go To Online............ If the line is very noisy, the connection to a mailbox has been made but the `CONNECT' signal has been lost, you can use this button to switch directly to the online mode of the Modem. This will also start the pay unit counter and the dial queue will be exited. Abort Dialing........... Operation of this button exits the dial queue (leaving the the dial queue intact) and ends the dialing process.    If a connection is successfully made the corresponding entry in the dial queue will be removed. ============================== The Log book =============================== =========================================================================== The `Log book' is a function which continually stores text displayed on `term's mainscreen, so that the user can inform himself about the received text at any time . 1. General characteristics -------------------------- The "size" of the `log book' is managed dynamically so that for every new line which is read new memory must be allocated. So the "size" of the `log book' is limited only by the amount of the available memory. It is recommended that the `log book' is emptied periodically to avoid using the entire free memory.    If there is insufficient memory to `write' a new line into the `log book', the first line will be deleted to make room for the new line. 2. Operation ------------ The contents of the `log book' can be paged through using the keys for moving of the cursor (`Cursor keys') (cursor keys + shift key moves page by page, cursor keys + control key jumps to the beginning or end of the log book). Additionally, the numpad keys are overlaid with jump and paging functions (corresponding to the inscriptions/graphics on the front of the keys).    With the aid of the mouse you can mark blocks in the `log book' which are to be copied into the `clipboard' and which can later be fed into the input stream with the function `Paste Clipboard Contents'.    Additionally there is a further menu whose functions should be explained briefly: Search................. A search function is called which searches from the                         topmost line ON THE SCREEN downwards for an entered                         search string. Upper- and lowercase are ignored                         with this function.                         If the search string is found it is displayed and marked/highlighted. Repeat Search.......... Continues the search process started with `Search'. The previously entered search string is carried over. Go To Main Screen...... Switches to the main screen of `term'. Clear Buffer........... Clears the contents of the `log book'. Close Buffer, Quit..... Closes the `log book' screen but leaves the contents unchanged. ============================ Command sequences ============================ =========================================================================== Each character string sent directly to the modem is a command sequence. This includes telephone numbers, modem initialisation strings, function key assignments, etc. In addition to the normal ASCII character strings various other commands are supported which will be described in the following. a) The `Backslash' (mirrored slash) \ ------------------------------------- The following sequences are introduced with the '\': \\..... generates a single `Backslash'. \b..... generates a `Backspace' (delete the character to the left of the         cursor). \e..... generates the escape character (ASCII code 27). \f..... generates a `Form Feed' (skip to beginning of the next page or         clear the screen). \g..... places a character string into the `Clipboard'. \n..... generates a `Line Feed'. \p..... feeds the password of the telephone book entry into the input stream of the last made connection. Note: The password is automaticly cleared for security reasons when the connection is broken. \r..... generates a `Carriage Return'. \t..... generates a tab jump. \x..... generates a break signal (as with the `Send Break' menu entry). \d..... executes an AmigaDOS command. \a..... executes an ARexx command. \i..... feeds the contents of the `Clipboard' into the input stream. \^..... generates a `circumflex' (also named roof :-).    If none of the mentioned combinations is recognized the character which follows the '\' will be fed into the input stream without any changes. b) The `circumflex' (also named roof :-) ^ ------------------------------------------ This character is used to change the following character to a `control character'. So the sequence `^J' will become a Line feed and `^H' becomes a tab jump. The character which follows the `^' has to be located between `@' and `[', otherwise it is fed into the input stream without changes. c) The Tilde ~ -------------- This character causes the program to pause for exactly half a second before it continues to process the following commands. =========================== The `Packet Window' =========================== =========================================================================== In this window a line can be edited before it is sent. All the usual editing functions known from standard input fields are available (shift + left/right jumps to the start/end of the line).    Additionally some extended functions exist which are performed by pressing a cursor key together with the shift or ctrl key: left + ctrl............ jumps to the next word. right + ctrl........... jumps to the previous word. up..................... shows the last entered command in the input line. up + shift............. shows the very first command entered so far. down................... shows the next entered command (if you moved back for some commands before). down + shift........... shows the very last command entered so far.    This input field has a buffer where all previously entered commands are stored (`Command History'). You can page through this buffer, load and save it and individual lines can be called up again. As with the `log book' this buffer is managed dynamically. The same memory restrictions that apply to the `log book' are valid for this buffer.    The input line also has a menu which offers the following functions: Load History........... Loads the contents of the input line buffer from a file. Each stored line in this file can be called up and sent. Save History........... Saves the contents of the input line buffer to a                         file. Clear History.......... Simply releases all previously stored commands and                         the used memory. Other Window........... Switches to the main screen of `term'. Quit................... Closes the window (corresponds to clicking the close gadget of the window).    It must be mentioned that every character entered into this window is shown immediately so that those things where it is better that they should not appear on the screen (like passwords for a mailbox) should be entered in another way.    The content of every input line is interpreted as a command sequence and therefore can also contain control characters.    If a line taken from the input buffer is sent without change it is _not_ stored in the buffer again (`true history' as known from `ConMan').    The contents of the input buffer are cleared automatically after the window is closed. Under no circumstances are the contents maintained until the next call! ============================= System variables ============================ =========================================================================== Information which is to be available the next time the program is run is placed as AmigaDOS variables in the directory `ENV:' and `ENVARC:' by `term'.    The variables used by `term' can be used and manipulated by other programs transparently. In detail these variables are: TERMPATH............... The name of the directory in which all information                         used by `term' is placed (Standard configuration,                         telephone book, etc.). The default setting is                         `ENVARC:term'. TERMWINDOW............. The window definition which can also be entered in                         the program via the menu function `Set Console                         Window'. xpr... ................ The standard settings used for the corresponding                         transfer protocol (xprzmodem, xprkermit, etc.). ============== An author's request & gift-ware-remuneration =============== =========================================================================== The development of `term' required conciderable expense. The effort to find out by trial and error and with a little help from the DevCon-Disks and the Includes & Autodocs the operating principles of some routines would alone be worth a remuneration to the author (its simply bad luck if the Atlanta-DevCon records arrive with considerable delay).    The author is susceptible to all kinds of donation and gifts so long as it is assured that they are useful to him (these nice little sacks with elephant food are better sent to the Hannover zoo). Therefore anyone pleased by `term' or who works with the source code is welcome to remunerate my programming efforts as he/she thinks that it matches my efforts (If you've got no ideas yet: I am looking for the GNU C++ objective `C' compiler in a version executable on the Amiga, old Infocom games or the source for LhArc or a Modula-2 compiler) - a lot of thanks! My address: Olaf Barthel, MXM (ETG030) Brabeckstrasse 35 D-W-3000 Hannover 71 Federal Republic of Germany Z-Net: O.BARTHEL@A-Link-H UUCP: o.barthel@a-link-h.zer.sub.org    Would those people looking at the source code to extend it or do some modifications here and there please contact me before publication so that our efforts can be coordinated.    If someone should have a brilliant idea to improve or extend the structure and contents of this manual, he/she may do it with my blessing (I haven't had the enthusiasm up to now to TeXify the text). ============================ Revision History ============================= =========================================================================== V1.8a First international release. V1.0- See german documentation (that's why its about 40KBytes longer). * "...you can't get what you want till you know what you want..." -Joe Jackson