-------------------------------------------- | | | | | | | | | GLOBAL COBOL | | | | SCREEN SUPPORT | | | | MANUAL | | | | V8.1 | | | | | | | -------------------------------------------- COPYRIGHT 1994 TIS SOFTWARE LIMITED All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted, in any form or by any means, electrical, mechanical, photocopying, recording or otherwise, without the prior permission of TIS Software Limited. Printed and published by TIS Software Ltd, 75 Farringdon Road, London EC1M 3JY. TABLE OF CONTENTS +++++++++++++++++ 1. Foreword ++ ++++++++ 2. Producing a TAP for a new terminal ++ ++++++++++++++++++++++++++++++++++ 3. The format of a TAP ++ +++++++++++++++++++ 4. Obtaining information about a new terminal ++ ++++++++++++++++++++++++++++++++++++++++++ 5. Creating a TAP using $TAP ++ +++++++++++++++++++++++++ 6. Checking and installing the TAP ++ +++++++++++++++++++++++++++++++ APPENDICES ++++++++++ A. Error messages from $TAP ++ ++++++++++++++++++++++++ B. Example TAP sources ++ +++++++++++++++++++ C. Writing a TAP for an integral screen ++ ++++++++++++++++++++++++++++++++++++ 1. FOREWORD ++ ++++++++ This manual describes how to create a Terminal Attribute Program (TAP) in order to support a new type of screen under Global System Manager. This involves preparing a special format source program containing details of the keyboard and sequences used by the display. You then use the $TAP command to create the tap program from the source. You will need Global Cobol, which contains the $TAP command. To consider an example, suppose you wish to support terminal 1234, the number 1234 being the code the operator will key in response to the initial terminal prompt. Firstly you produce a special TAP source file named S.1234. You then use $TAP to process that source and create the terminal attribute program file itself, $.1234. You then run a sequence of tests on the new TAP and, when all is well, install it on all volumes which require it. Special features of the $T command are available to help you support a new terminal. The diagnostic facility enables you to determine the precise actions of the keys, and the effect of transmitting certain sequences. It can be used to determine information needed to produce the TAP source in the first place. Then once $TAP has run successfully and a syntactically correct terminal attribute program has been produced, you can use $T's test facility to check that every aspect of the new support is functioning correctly. Chapter 2 is a step-by-step guide to writing a TAP for a new serial screen. Chapter 3 is a reference section describing the format of a TAP in detail. The remaining chapters describe some of the utilities you will need to use. 2. PRODUCING A TAP FOR A NEW TERMINAL ++ ++++++++++++++++++++++++++++++++++ In order to create a TAP for a new terminal, you must determine the sequences of characters that need to be sent to the terminal to perform the various functions supported by Global System Manager, such as cursor positioning. You must also select the keys to correspond to the Global System Manager special function keys and determine the characters, or sequences of characters, they transmit. This section gives a step by step procedure for investigating a new terminal and producing the TAP. It is assumed that the terminal will be serially connected, since for all built-in screens a TAP is supplied with Global System Manager. However, if you do need to produce a new TAP for an integral screen, for example to support a new keyboard, you must use the procedure outlined in Appendix C. Before starting the investigation, you will need the terminal manufacturer's handbook which describes its facilities and control sequences. You should read through this manual to familiarise yourself with the terminal's capabilities. As you proceed through the investigation, you will mark up a print-out of a skeleton TAP with the information about your terminal. Note that the order of the steps is not the same as the order of the lines in the TAP, but is instead arranged in the best sequence for carrying out the investigation. 2.1 Skeleton TAP +++ ++++++++++++ A skeleton TAP, suitable for most serial consoles, is distributed as file S.TAP on one of the Global Cobol distribution diskettes (MAA or MAB). You should first print this out, using $PRINT, so that you can mark up all the changes required as you proceed with the investigation of the terminal. 2.2 Terminal Option Settings +++ ++++++++++++++++++++++++ Check the settings of any option switches on the terminal by reference to the manufacturer's handbook, which will describe the location of the option switches and their functions. Typically the switches are on the rear, or under a cover, or programmed by special key combinations. If there is an "Auto New-line" option this should be disabled. Similarly, if there is an option to ignore carriage return, this should also be disabled. You may need to set up the baud rate - often 9600 baud is used. The terminal should be set to transmit 8 data bits without parity, or 7 data bits plus parity. Normally the setting of the parity options is unimportant for Global System Manager, but it simplifies investigation of the terminal if parity is disabled. You should select the "conversational" mode of operation, in which each character is transmitted as it is keyed, rather than a block transmission mode. Also you should disable any special local editing facilities. The terminal should be set for full duplex operation. There may be further options that you need to establish, such as choice of character set. Often the manufacturer's standard settings will be adequate, but if you need any special settings you should write details of these in the comments section at the start of the TAP listing. 2.3 Connection +++ ++++++++++ Connect up the terminal to your Global System Manager computer, and then sign on using a terminal code of 0 since until you create your own TAP it can only be supported as a basic teletype. For example:- GSM READY:$E -- $57 OPERATOR AJU SIGNED OFF AT 16.45 ......... ......... (contract description) ......... PLEASE KEY YOUR OPERATOR-ID:AJU --- PLEASE KEY YOUR TERMINAL CODE (code):0 //// - GSM READY: Note that if the terminal type associated with your computer has been fixed previously using the TYPE customization instruction the terminal code prompt will not appear. In this case you should remove the customization before signing off and proceeding. For example:- GSM READY:$CUS ---- ......... ......... ($CUS menu appears) ......... Please select a function:TYPE ---- ......... ......... (explanation) ......... : ------ Please select a function: -- GSM READY:$E -- $57 OPERATOR AJU SIGNED OFF AT 16.45 ......... ......... (contract description) ......... PLEASE KEY YOUR OPERATOR-ID:AJU --- PLEASE KEY YOUR TERMINAL CODE (code):0 //// - GSM READY: If the terminal will not function this usually indicates an error in the wiring, or in the setting of the option switches. Consult your installation notes and the manufacturer's handbook. If every line is double spaced this usually indicates that "Auto New-line" is enabled. 2.4 The Terminal Diagnostics Facility +++ +++++++++++++++++++++++++++++++++ To investigate and check out the terminal you will need to use the diagnostic facility of $T. This is described in detail in section 4. You enter diagnostic mode by running $T and replying DIAG to the first prompt. This will bring you to the Diagnostic ---- Menu. You will need to refer to the detailed descriptions of each of the diagnostics described in section 4 as you proceed with the investigation. 2.5 Start Sequence +++ ++++++++++++++ The start sequence is a string of characters transmitted to the terminal which puts it into the required operating mode. For some terminals no start sequence is required, but on more soph- isticated terminals very long start sequences may be needed. The sequence will be sent by Global System Manager whenever a new operator signs on. The start sequence is a line of up to 30 characters, followed by any number of continuation lines of up to 30 characters, each of which commences with a + sign. The following functions might have to be performed by a start sequence:- * reset the terminal, to disable any special attributes in force such as flashing. Note, however, that this sometimes has undesirable side effects, such as changing the state of the shift lock or capitals lock keys; * program the sequences transmitted by certain keys, such as the function keys; * change the mode of operation of the terminal, for example whether certain keys are handled locally. (For Global System Manager, the terminal should be put into a mode where no local editing, etc. is performed); * enable capitals lock if possible; * it is sometimes desirable to clear the screen; * you may wish to enable or disable other features of the terminal, such as keyboard click or slow scroll; * you may wish to put the terminal into a special mode, for example enabling low-intensity so that you can use normal intensity for bright characters. In practice, for complex terminals you may not be able to determine the full start sequence required at this point, as you might discover extra requirements on further investigation. Use diagnostic 3 to transmit the start sequence to the terminal so that it is programmed correctly for further testing. If no start sequence is required, delete the START line and continuation lines. Otherwise write the start sequence on the listing. We recommend you to start a new continuation line for each element of the sequence, and to include a comment describing what each line does. 2.6 Screen Depth +++ ++++++++++++ Run diagnostic 5 to determine the screen depth. It displays a sequence of line numbers on the screen. The number on the top line of the screen is the depth of the screen in lines, and should be written on the DIMENSIONS line of the listing. 2.7 Screen Width +++ ++++++++++++ Run diagnostic 6 to determine the screen width. Key in the approximate width of the screen, normally 80 columns. If a line saying "THIS LINE SHOULD NOT BE VISIBLE" appears, this is because the terminal automatically scrolls after a display in the last column, and so the last column cannot be used by Global System Manager. You must decrease the width by 1 and try again. There will also be a line saying "THE CURSOR SHOULD BE ON THE X" with another character, an A or an X, on the right-hand side of the screen. If the cursor is under an A then backspace in the last column is not handled correctly. It is possible to use the full width with Global System Manager, but if, during input of a field, you delete the character in the last column of the screen the cursor will be incorrectly positioned. You are therefore advised to reduce the width by 1. Reply to return to the specify screen width prompt, and -- -- again to return to the main menu. Repeat the test until the correct width is found, then write it on the dimensions line of the listing. For a terminal which has a wide screen mode (typically 132 characters), the width of the terminal in its wide mode is required as the screen width. You should use diagnostic 3 to send the sequence which places the terminal in wide mode before running diagnostic 6 to determine the screen width. Write the sequence which selects wide mode on the listing (in the 132-WIDE sequence). When you have determined the screen width, use diagnostic 3 again to return the screen to its narrow width setting, and write this sequence on the listing as well. Note that the 132-WIDE sequence places the screen into its wide mode, even though the width in wide mode may be only 131 for the various reasons stated above. 2.8 X-ON/X-OFF Protocol +++ +++++++++++++++++++ Run diagnostic 7 to determine whether the terminal uses X-ON/X-OFF protocol. If it does not, you can delete the XPROTOCOL line from the TAP, which will mean that #11 and #13 will not be specially intercepted. Note that this test is also a very severe check on the terminal's ability to run at the specified baud rate, and may cause the screen to flash or characters to be lost. If this happens, you may need to reduce the baud rate you are using. 2.9 Values Transmitted by Special Keys +++ ++++++++++++++++++++++++++++++++++ Run diagnostic 2 to display the values transmitted by each of the special keys on the terminal (for example, cursor movement keys and function keys). Write down, on a separate sheet of paper, the character (or sequence of characters) each key generates, or check the generated values against the values given in the terminal manufacturer's handbook. Note that a key which generates #00 cannot be used by Global System Manager, as this (null) value is always filtered out. Note also that if XPROTOCOL is specified, keys generating #11 or #13 cannot be used. Check whether the values generated are affected by the shift, control, capitals lock or other similar keys. If there is no hardware capitals lock key you should avoid using keys which generate lower case a to z as part of a multi-byte sequence, as this will be changed to upper case when software capitals lock is in use. If the terminal treats the senior bit of each character as a parity bit, ignore this when writing down the value of the character (that is, write down the second value displayed within the brackets by the diagnostic). Bear in mind that if there are two ranges of keys which generate multiple characters, each with a different first character (the LEAD-IN qv) you will only be able to use one range as function keys with Global System Manager. If it is possible to program one (or both) of the ranges of keys so that a common format of multiple key sequence is generated you should do this by means of the start sequence. 2.10 8-Bit Device +++++++++++++++++ Almost all serially connected terminals only transmit 7 bits of data, with the eighth bit being an optional parity bit. You should therefore delete the "8-BIT DEVICE" line, so that the senior bit is ignored by Global System Manager. However, a few terminals use the top bit to distinguish values transmitted by special, non-ASCII keys such as the function keys, and on such terminals the 8-BIT DEVICE option must be included. If the terminal supports the new ISO/ECMA standard for extending ASCII to be a full 8 bit character set, then you should instead code the line "8-BIT EXTENDED ASCII", to identify it as such a terminal. 2.11 Capitals Lock Key ++++++++++++++++++++++ Most terminals have a capitals lock key which, when on, causes all alphabetic keys to transmit upper case characters, but does not shift other keys such as numerics. If no such key is available then you must delete the HARDWARE CAPS LOCK line so that (#16) will be treated as a software capitals lock by Global System Manager. 2.12 The Lead-In Key ++++++++++++++++++++ Any keys used by Global System Manager must either transmit a single character, or a multi-byte sequence of characters starting with a special character termed the lead-in. Every key to be +++++++ used by Global System Manager which transmits more than one character must transmit the same initial lead-in character. This is often escape, #1B. If there is a lead-in character, enter its value, in hexadecimal, on the LEAD-IN line. If not, delete this line. Note that if the lead-in character also corresponds to a key on the terminal (for example, ESCAPE) then in order to transmit this value as one of the special functions you will need to key it twice. Also, you can use the lead-in key followed by another character as a special function key. For example, if ESCAPE is the lead-in, and there is no special BACK TAB key, you could use as back-tab. Because of this last facility, it ------ --- can be desirable on terminals with very few special keys to define a lead-in even when all the keys generate single characters, as this gives you a number of extra key combinations to use for special functions. 2.13 The Selection Algorithm ++++++++++++++++++++++++++++ The selection algorithm is a short Global Cobol routine whose purpose is to extract a discriminator byte from a multi-byte +++++++++++++ sequence, and ignore the other bytes. The discriminator byte is a single character, in the range #01 to #7F, which distinguishes between different multi-byte transmissions. In the commonest case, where all multi-byte sequences consist of just two bytes, the lead-in and one other character, the second character is the discriminator. If there is no lead-in, or if all multi-byte sequences consist of two characters, then no selection algorithm is required, and the SELECTION line should be deleted from the OPTIONS section. If some or all of the multi-byte sequences are longer, you should refer to the notes in section 3.8 for full details of how to decide which standard algorithm should be used. 2.14 The Prefix Key +++++++++++++++++++ For certain functions (such as changing which concurrent partition is currently displayed on the screen) Global System Manager needs to make use of a prefix key. This must be a key ++++++++++ which transmits a single byte in the range #01 to #1F inclusive. If there is no obviously sensible key to use for this then the keystroke (#18) should be used. Write the generated value on the listing, and the keytop for the key in the initial comments section. If there is no control key on the terminal, or you wish to use a key which generates a value normally intercepted by Global System Manager as one of the 17 special function keys (Global System Manager normally intercepts the values #07, #15 and #17, and also, if there is no capitals lock key, #16) then the prefix key is REQUIRED. Otherwise the word REQUIRED should be deleted from the PREFIX line. This will permit functions such as to be keyed directly, rather than forcing them to be keyed as PR G -- - (where PR represents the prefix key). -- When choosing the prefix key it is best to choose a key on one of the upper corners of the keyboard if possible, so that it is easy to find. Try to choose a key which will not be needed for any other purpose. Note that you can still use the prefix key as a normal key, but you will need to key it twice to cause its value to be transmitted, so this is not recommended for any key that will be used with any frequency. The prefix key may only generate a single character. Neverthe- less, you may wish to program one of the function keys to generate a suitable value for use as the prefix key. We would recommend you to program the highest numbered function key to generate #18. 2.15 Selecting the Special Function Keys ++++++++++++++++++++++++++++++++++++++++ You should now be able to complete the remainder of the KEYS section using the notes below. For each function you must specify the value the key transmits and a 10-character (or shorter) description of the keytop. If the key transmits several characters, starting with a lead-in, then you must specify the value of the discriminator character, but with its senior bit set on; that is, with #80 added. For example, if the discriminator value is A (#41) you must specify #C1 as the value. (Note that unless "8-BIT DEVICE" is specified you ignore the senior, parity, bit transmitted by the terminal when referring to a key.) If the lead-in corresponds to one of the keys on the terminal, and you wish to use this key, then you must add #80 to its value and the description must indicate it is to be keyed twice. For example, if the lead-in is ESCAPE (#1B) then a value of #9B corresponds to . If both a lead-in and 8-BIT DEVICE are specified then keys which generate values with the senior bit set cannot be used as special function keys. Avoid combination key strokes, for example shifted functions, if there are single key alternatives. If the keytop contains a special graphic symbol, then try to construct this out of standard characters. For example: ---> for cursor right <--' for return Failing this, you will just have to describe the key, for example "UPARROW". If two keys have to be pressed simultaneously, you should use the convention of enclosing them in angle brackets. Otherwise, avoid angle brackets. For example:- (press CTRL and A simultaneously) ESCAPE 1 (press ESCAPE, then 1) 2.16 PROGRAM FUNCTIONS 1-5 ++++++++++++++++++++++++++ These five keys should correspond to function keys 1 to 5 if provided, or to five contiguous special keys not needed for other purposes if no function keys are available. If there are no special keys that can be used, then if there is a lead-in of you should use 1 to 5. Failing this, use to . 2.17 RETURN +++++++++++ This should be the normal return key. 2.18 ESCAPE +++++++++++ There is usually a key marked ESC or ESCAPE that can be used. Note however that if is the lead-in character, it must be keyed twice to cause an ESCAPE character to be passed back to the program, and hence its keyname should be "ESC ESC" or similar, and you must add #80 to its value (giving #9B). 2.19 CLEAR ++++++++++ If no CLEAR key is available, choose some other special key. 2.20 CURSOR HOME ++++++++++++++++ Usually a special key is available, either labelled HOME or marked with a diagonal arrow. It is usually near the cursor movement keys. If no HOME key is available, choose some other special key which is close to the cursor movement keys. 2.21 PAGE +++++++++ If no page key is available, choose some other special key. 2.22 CURSOR LEFT, RIGHT, UP, DOWN +++++++++++++++++++++++++++++++++ There are usually keys marked with arrows for use as cursor movement keys. If no such keys are available, you should use , , , respectively, which are conveniently located together in a block. 2.23 TAB RIGHT ++++++++++++++ Use the TAB key, sometimes marked as a right pointing arrow and a vertical line. If there is no tab key, use (which ------ generates the ASCII tab character). 2.24 TAB LEFT +++++++++++++ Use the BACKTAB key if one is available (often shift TAB). It is sometimes marked as a left pointing arrow and a vertical line. If there is no BACKTAB key, but there is a lead-in which corresponds to a key, use lead-in TAB. 2.25 ERASE ++++++++++ If there is a key which generates #7F choose this. Otherwise, choose a key marked DEL, DELETE or RUBOUT provided it does not generate the same code as cursor left. If there is no suitable key, make it the same as backspace. 2.26 BELL +++++++++ You should now key "QWERTY" to return to the diagnostics menu, and then run diagnostic 3 to discover the effect of various sequences on the terminal. First transmit #07 to test whether the terminal has a bell or bleeper. If it does not, you should delete the BELL option. 2.27 Clear Sequences ++++++++++++++++++++ The hexadecimal string coded on the CLEAR statement defines the bytes which, when transmitted, cause the screen to be cleared. Any special screen attributes, such as flashing, should also be cleared. On many terminals the clear sequence consists of "home" followed by "clear to end of screen". The positioning of the cursor following the clear is irrelevant, as it is always repositioned by Global System Manager. A few terminals lose characters if a message is transmitted too soon following a request to clear the screen, and on such terminals the DELAY dd phrase must be coded at the end of the // CLEAR statement. The delay number dd, a value between 1 and 99, // indicates the number of packets of 10 filler (#00) bytes to be transmitted to the terminal before the next message. For example, the statement:- CLEAR 0C DELAY 4 will cause 40 bytes of #00 to be transmitted. You should take the value of the delay required from the terminal manufacturer's handbook, or by experimenting. It is also necessary to specify the sequences which will perform a clear to end of line and clear to end of screen if the terminal supports them. These will be used to improve performance when switching between concurrent partitions. The positioning of the cursor after performing one of these operations is irrelevant, as it will always be repositioned by Global System Manager. If a delay is specified for the CLEAR statement, then the same delay is used for the CLEAR-TO-END-OF-SCREEN statement. No delay is used for the CLEAR-TO-END-OF-LINE statement. 2.28 Positioning Sequence +++++++++++++++++++++++++ A positioning sequence is a sequence of characters to be transmitted to the terminal in order to move the cursor to a particular location on the screen. The calculation of this sequence given a line and column number is performed Global System Manager using the information specified in the POSITIONING statement. The POSITIONING line in the sequences section serves to indicate that cursor positioning is supported and to define the format of the sequence. The first part of the line (hh10) defines the maximum length of // the sequence and the fixed information it contains. It must be the sequence to position the cursor in the top left corner of the screen. The next two elements (d d) define the offset within the /// sequence where the line and column information (respectively) is placed. The initial values in these areas are assumed to be the values for line 1 and column 1 and will be used as the base from which to increment for higher values. Rarely a terminal will require that the line and column numbers be a sequence of ASCII digits (#30 to #39). In this case the word ASCII must be coded at the end of the POSITIONING line, and the offsets for the line and column must indicate a byte within the sequence which contains an ASCII '1' (#31). Global System Manager will expand the sequence to the correct length dependent upon the line and column required. If the terminal has a wide screen mode there may be a different format of sequence required for positioning beyond some column number (typically beyond 80 or 96). If this is the case the POSITIONING-2 line must be completed with the revised format of sequence and line and column offsets. The final element of the POSITIONING-2 line is the column number from which it is to be used (which in the case of a terminal requiring a different sequence for columns greater than 96 would be 97). If the terminal has an ASCII cursor addressing mechanism a second positioning line will never be required. 2.29 Box and Block Drawing +++++++++++++++++++++++++++ The BOXES, BLOCKS and GRAPHICS sequences enable box drawing and solid blocks to be used. The BOXES sequence is a table of the eleven characters used to draw lines and boxes, in the order:- | | | | | | | | --- +- +- -+ -+ +- -+- -+ -+- -+- | | | | | | | On most serial screens you will need to select an alternate graphics character set before you can display these characters - this is done by supplying a GRAPHICS sequence. The graphics sequence consists of up to 5 characters to select the graphics characters set, followed by up to 5 characters to reselect the standard character set. When supplied, the ON sequence is sent before any box characters, and the OFF sequence is sent at the end. The BLOCK sequence is a table of 5 block characters, tentatively defined as:- 1. Solid block 2. Half height block (bottom half only) 3. 1/3 height block (bottom 1/3 only) 4. 2/3 height (bottom 2/3 only) 5. Half intensity block If a graphics sequence is present the ON sequence is always sent before displaying block characters, and the OFF sequence sent at the end. If a particular character is not available then it should be set to #00. 2.30 Colour Sequences +++++++++++++++++++++ The COLOUR, BORDER, PAPER and INK sequences are needed for colour screens (or monochrome screens where shading is being used instead of colour). The COLOUR sequence must set both the paper and ink colours. It must not occupy a space on the screen - Global System Manager colour support cannot be provided if it does. The paper and ink colours to be selected must be specified by two separate bytes within the sequence. The colour sequence is followed by an optional colour type number - you should omit this. The PAPER sequence starts with the position of the byte within the COLOUR sequence which selects the paper (background) colour, counting from 1. It is followed by a table of eight bytes to be substituted in the COLOUR sequence, corresponding to the following sequence of colours:- 1. Black 2. Blue 3. Green 4. Cyan (light blue) 5. Red 6. Magenta (red/purple) 7. Yellow 8. White The INK sequence is similar to the PAPER sequence, but contains the bytes to be substituted to select the ink colour. The BORDER colour is optional, but if present selects a border colour whenever the screen is cleared. It consists of a selection sequence followed by an index to the position at which a byte from the PAPER colour table is to be inserted (the colour selected by Global System Manager when the screen is cleared is the current paper colour). Note that on some screens (eg MicroColour M2200) the colour to which the screen is cleared is selected independently from the background colour. For these screens you need to set up a "Border" sequence that selects the clear screen colour. Note that the COLOUR sequence must precede the PAPER and INK lines, and the BORDER sequence must follow the PAPER line. 2.31 Other Sequences ++++++++++++++++++++ Many terminals have the ability to suppress the display of the cursor character. You should determine if your terminal supports such a facility by reference to the manufacturer's handbook. Use diagnostic 3 to transmit the sequences to suppress and redisplay the cursor character, and when you are satisfied write the sequences on the listing in the CURSOR line. Note that the first sequence is to turn the display of the cursor on. It may be the case that you can only redisplay the cursor by choosing its attributes (block/underline, blinking or steady), in which case you should choose some suitable representation for the cursor to take and select it here and in the initial START sequence. Your terminal may have the ability to insert and delete lines from the display, which Global System Manager will use when scrolling the position of the screen. If it does, you should write the appropriate sequences after the INSERT-LINE and DELETE-LINE on the listing. The remaining sequences define the character attributes of Bright, Dim, Flashing, Underlining, and Reverse video. The checking required is the same for each of them, and therefore only the investigation of the Reverse video sequence will be described. Determine the correct ON and OFF sequences to be transmitted by reference to the manufacturer's handbook. Then use diagnostic 3 to transmit a single string of bytes consisting of #41a...a42b...b43 where a...a represents the ON sequence, and ///// ///// ///// b...b the OFF sequence. This should result in a display of a ///// normal A, a reverse video B, and a normal C. If it does not, you must have specified the sequences incorrectly. The letters may either be together, or separated by single spaces. If they are separated by spaces, then the optional SPACE verb must be coded after the sequence on the sequence line. The sequences you have just determined should also be written on the listing. On some screens there are option switches that determine whether attributes take up a space on the screen ("serial" attributes usually do occupy a space, "parallel" attributes usually don't). It is better to set up sequences that do not occupy a space when possible. There may also be options about how the attributes are effected. If they can be selected to apply to characters as they are received by the terminal this is to be preferred. Normally, however, they will apply from the point where they are displayed onwards, and in this case it is preferable to select that they only apply until the end of the current line, rather than to the end of the screen, if this is possible. Having defined sequences for the character attributes you must select one of them to be the standard representation of highlighting. To do this you code the HIGHLIGHTING line, following the word HIGHLIGHTING with one of the other character attribute descriptions (BRIGHT, DIM, FLASHING, REVERSE, UNDERLINING). Normally you will choose Bright characters to be highlighting if the terminal supports them and the contrast is acceptable, otherwise Flashing or Reverse video are sensible choices. On some terminals the sequences to select these various character attributes are all very similar, with a single byte in the sequence determining the display status of further characters for all of these options (which are supported). You should be able to determine if this is the case from examination of the manufacturer's handbook. If this is the case you should code a CHARACTER ATTRIBUTE sequence to define the sequence which sets normal video with no attributes, and supply an index to the attribute selection character within it. Global System Manager will use this information to improve performance when refreshing the screen. If the terminal supports standard ANSI sequences then the ANSI option should be coded in the OPTIONS section. 2.32 The Status Line ++++++++++++++++++++ If the terminal has a status line, where a user message may be displayed, then a STATUS line should be included in the TAP description. The first parameter, d2, defines the width of the user message area (this should not be less than 39 characters, and the longer it is the more use Global System Manager can make of it). This is followed by two sequences, one to prefix the user message, and one to suffix it (the latter will often be only a single character). 2.33 The Terminal Code and Description ++++++++++++++++++++++++++++++++++++++ You must choose a terminal code in the range 1000-9999 to identify the TAP. This is the number that must be keyed in response to the initial terminal code prompt when you sign on. Note that codes in the range 1-999 are reserved for TAPs distributed as part of Global System Manager. The terminal description can be up to 30 characters long, and should identify the terminal and TAP as precisely as possible. In particular it should contain details of the keyboard version used (since most terminals are available with several keyboards) and any special features of the TAP. It is this description that will appear on the screen next to the TAP number if the operator keys LIS to the terminal prompt. --- Write the code and description on the first line of the listing. 2.34 Finally ++++++++++++ Copy the skeleton TAP, S.TAP, to a file S.code, where code is the //// //// terminal code you have chosen. Then use $EDIT to make all the changes you have marked on the listing. All the extra comment lines starting *** should be deleted. You can then prepare the TAP as described in section 5, and install and test it as described in section 6. TERMINAL code description ///////////////// DIMENSIONS depth BY width ///// ///// [TYPE d] / * * Between 0 and 20 lines of comments. Up to width characters ///// * immediately to the right of each initial asterisk will be * displayed on the first page output by the $T command. * OPTIONS [BELL] [HARDWARE CAPS LOCK] PREFIX hh keyname [REQUIRED] // //////// [XPROTOCOL] [8-BIT DEVICE] [8-BIT EXTENDED ASCII] [HIGH GRAPHIC hh] // [ANSI] [MEMORY MAPPED] [16 ATTRIBUTE BITS] [SELECTION ssssss] ////// [SEQUENCES [CLEAR hh6 [DELAY d2]] The SEQUENCES section may be // / [CLEAR-TO-END-OF-LINE hh6] omitted if none of the // [CLEAR-TO-END-OF-SCREEN hh6] sequences can be defined. // [POSITIONING hh8 d d [ASCII]] // / / [POSITIONING-2 hh8 d d d3] // / / / [INSERT-LINE hh5] [DELETE-LINE hh5] [START hh30 // [ + hh30]] // [CURSOR hh5 hh5] // // [CHARACTER ATTRIBUTE hh5 d [SPACE]] // / [UNDERLINE hh5 hh5 [SPACE]] // // [FLASH hh5 hh5 [SPACE]] // // [DIM hh5 hh5 [SPACE]] // // [BRIGHT hh5 hh5 [SPACE]] // // [REVERSE hh5 hh5 [SPACE]] // // [HIGHLIGHTING high-desc] ///////// [132-WIDE hh5 hh5 [DELAY d2]] // // / [ALTERNATE hh5 hh5] // // [COLOUR hh8 [d2] // / PAPER d1 hh8 / // INK d1 hh8 / // [BORDER hh6 d1]] // / [BOXES hh11] // [GRAPHICS hh5 hh5] // // [BLOCKS hh5] // [STATUS d2 hh5 hh5] / // // [KEYS [LEAD-IN hh] The KEYS section need only // 1 hh keyname be supplied if the terminal // /////// 2 hh keyname supports extended control // /////// . functions. . 17 hh keyname ] // /////// [TRANSLATIONS [hh hh hh6 [ALTERNATE]] Translations are not normally // // // [hh hh3] ] required. ///// ENDTAP Figure 3.1 - Terminal Attribute Program Skeleton ++++++++++++++++++++++++++++++++++++++++++++++++ 3. FORMAT OF A TAP ++ +++++++++++++++ Figure 3.1 shows the source file defining a terminal attribute program in a generalised skeleton form. It is in a special terminal definition language which will be converted by the $TAP command into the tables required by the operating system to run the terminal. The following notation is used both in the figure and in the description below:- d a decimal digit, 0 to 9; / dn where n is an integer, is a number containing between 1 // / and n decimal digits; / hh a pair of hexadecimal digits, each in the range 0 to F, // which together define a single byte value; hhn where n is an integer, is a string containing between 1 /// / and n pairs of hexadecimal digits, so for example, hh4 / // might be coded as F0, F0E1, F0E1D1 or F0E1D2C3. 3.1 The TERMINAL line +++ +++++++++++++++++ You must start the TAP with a terminal line of the form:- TERMINAL code description //////////////// e.g:- TERMINAL 3 HAZELTINE 1510 The code is a number in the range 0-9999 that uniquely identifies //// this TAP: it is the number that the operator keys in response to the terminal code prompt during sign-on. The description is the /////////// 30 character title to be stored in the program file. It is important that the description, which is the manufacturer's name for the terminal, is accurate because if the operator does not know which code to use he or she can respond LIS to the terminal --- prompt to obtain a list of available codes and their associated descriptions, and this must be sufficient for him or her to make the correct choice. The description is considered to begin with the first non-blank character following the code. If the end of the line occurs before the 30th character, the description will be padded with the necessary number of trailing blanks. Terminal codes 0 to 999 are reserved for TAPs distributed with Global System Manager. To avoid unnecessary clashes it would be appreciated if other users created TAPs with codes in the range 1000 to 9999. 3.2 The DIMENSIONS Line +++ +++++++++++++++++++ The TERMINAL line must be followed immediately by the DIMENSIONS line:- DIMENSIONS depth BY width ///// ///// e.g.:- DIMENSIONS 24 BY 80 Terminals which automatically cause a line feed when the last character position of any line is written can only be supported if the sensitive character position is avoided by Global System Manager, so for these devices you must set the width one character less than the number actually available. The Soroc IQ120 is such a terminal, and the DIMENSIONS line of its TAP would be coded:- DIMENSIONS 24 BY 79 If the terminal has a wide mode, and you intend to supply a wide mode enabling sequence, then the width you supply must be the wide width of the terminal (normally 131 or 132). 3.3 The TYPE line +++ +++++++++++++ The TYPE line is optional. When present, it immediately follows the DIMENSIONS line and is either:- TYPE 3 (ANSI device) or:- TYPE 9 (Non-integral Videotex device) 3.4 Comment Lines +++ +++++++++++++ Next, up to 20 lines of comments may be coded, each of which should be introduced by an asterisk character in the normal Global Cobol way. The information to the right of the asterisks will be displayed on the first screen output by the $T command underneath a title made up of the terminal code, description and dimensions. The comments should indicate any ways in which the terminal differs from the standard of full cursor control, extended control functions, a bell, no required prefix key, and key-tops as given in Table 3 in the Global Operating Manual. For example, if there is no caps lock key, and has to be used instead, you should add a comment:- *For CAPS LOCK use You should also add comments describing any other features of the terminal that need to be brought to the operator's attention, for example having to put the numeric keypad into a special mode before cursor control keys can be used. It is recommended that you end the comments with:- *The remainder of the keys are standard, as described in *your Global Operating Manual or, if the terminal is completely standard, the lines:- *This is a standard terminal, as described in your *Global Operating Manual It is not necessary to identify the key which will be used as the prefix key in this section, as this information will have been provided from the keyname you coded in the PREFIX line. If you have set up some keys as particular system requests, however, you should mention that in this section. See the example TAPs in Appendix B for typical comments. 3.5 The OPTIONS Section +++ +++++++++++++++++++ An OPTIONS section must be coded immediately following the last comment. In it you will define the prefix key, and any other special attributes of your terminal (see fig 3.2 for a summary of the various options and their uses). The OPTIONS section is introduced with the word OPTIONS on a line by itself. The one or more detail lines which then follow can be in any order. If the BELL option is selected Global System Manager will ring the bell if the operator keys a field which is too long, if he or she fills the type-ahead buffer by keying too many characters in advance, or if a transmission error occurs. (When there is no bell, Global System Manager displays an error message if too long a field is keyed, and echoes a ?-character if a transmission error occurs. It is unable to indicate that the type-ahead buffer is full.) When HARDWARE CAPS LOCK is not selected the special software caps lock handling associated with (or PR V if a prefix key is required) is enabled. A PREFIX key must always be defined, for use in screen mode selection and as the SYSREQ key. If the terminal does not have a CTRL key, or if one of the usual sequences , or is employed for a purpose incompatible with Global System Manager usage, you must suffix the PREFIX line with the word REQUIRED, to indicate to Global System Manager that sequences such as are not to be treated specially, and only PR W (etc) is to be recognised. ---- By keying PR PR you are able to transmit the byte value of the -- -- prefix key itself, as defined by the PREFIX line. The key you select must transmit a value in the range #01 to #1F inclusive. A common choice for the prefix is , and you will often wish to program a function key to generate this code (#18). ---------------------------------------------------------------- | | | | OPTION | USE | ++++++ +++ | | | ---------------------------------------------------------------- | | | | BELL | The terminal has an audible alarm | | | which sounds when #07 (BEL) is | | | transmitted to it. | | | | ---------------------------------------------------------------- | | | | HARDWARE CAPS | The terminal has a capitals lock key | | LOCK | which causes the lower case letters | | | a to z to be transmitted as upper | | | case. | | | | ---------------------------------------------------------------- | | | | PREFIX hh | Defines the SYSREQ key used by Global | // | | System Manager for screen requests | | | (see ????????????????? section 5) | | | | ---------------------------------------------------------------- | | | | XPROTOCOL | The terminal uses X-ON/X-OFF protocol | | | (ie it signals a busy condition by | | | transmitting , and later | | | indicates it is free by sending | | | ). | | | | ---------------------------------------------------------------- | | | | 8-BIT DEVICE | The terminal transmits 8 data bits | | | excluding parity (normally only | +++++++++ | | required for integral devices). | | | | ---------------------------------------------------------------- | | | | ANSI | The terminal honours ANSI sequences. | | | | ---------------------------------------------------------------- | | | | SELECTION xxxx | The terminal requires the selection | //// | | routine xxxx (see 3.8). | //// | | | ---------------------------------------------------------------- Figure 3.2 - Valid Options and Their Use ++++++++++++++++++++++++++++++++++++++++ If XPROTOCOL is specified the values #11 , and #13 , are intercepted by Global System Manager, so these keystrokes cannot be used for control functions. When working at a device using X-ON/X-OFF protocol, the operator must be careful not to hit by mistake, since this will cause output to be indefinitely suspended until he keys . 3.6 The SEQUENCES Section +++ +++++++++++++++++++++ A SEQUENCES section must normally be coded following the OPTIONS section to define the byte values to be transmitted to the terminal by the CLEAR statement, and various system routines such as VIDEO$. You also use the section to define the cursor positioning sequence to move the cursor to given x,y co-ordinates, and to optionally set up a start sequence to be transmitted when the TAP is first loaded, to place the terminal in a particular initial state. If no sequences are required the entire section may be omitted. When a SEQUENCES section is needed you should introduce it with the word SEQUENCES on a line by itself. The one or more detail lines which then follow can be in any order. The CLEAR and POSITIONING statements must be coded if the terminal is to support formatted display working and allow such statements as DISPLAY...LINE, ACCEPT...LINE, MAPIN and MAPOUT to function properly. The general format is:- CLEAR hh6 [DELAY d2] // / [CLEAR-TO-END-OF-LINE hh6] // [CLEAR-TO-END-OF-SCREEN hh6] // POSITIONING hh10 d d [ASCII] // / / [POSITIONING-2 hh10 d d d3] // / / / For example, for the Hazeltine 1510:- CLEAR 7E1C POSITIONING 7E110000 4 3 The hexadecimal string coded on the CLEAR statement defines the bytes which, when transmitted, cause the screen to be cleared. The DELAY phrase on the same line is seldom required. There are, however, some devices which lose characters if a message is sent too soon following a request to clear the screen. Therefore, if you supply a value between 1 and 99, Global System Manager follows the clear sequence by transmitting 10 times that number of null characters. If you need to specify a delay, you will need to experiment to find the best number to use, since too high a value will degrade performance, and too low a value will not prevent character loss. Similarly the hexadecimal strings on the CLEAR-TO-END-OF-LINE and CLEAR-TO-END-OF-SCREEN sequences define the bytes which - when transmitted - cause the remainder of the line and the remainder of the screen respectively to be cleared. They should be included if supported by the terminal as they will be used to optimise screen performance during the use of concurrency, but they may be omitted if the terminal does not support them. The hexadecimal string you code on the POSITIONING statement should represent the bytes that must be transmitted to the terminal to move the cursor to the top left-hand corner of the usable screen area defined by the DIMENSIONS statement. The two numbers (d d) which follow it indicate the byte numbers within /// the hexadecimal string which contain the line number and column number respectively. The optional ASCII directive indicates that rather than being placed in the appropriate position as binary values with the initial character as the base offset, the line and column number should be turned into a string of ASCII digits and the required number of characters placed at the indicated position. In this case the hexadecimal string defined in the POSITIONING statement should only contain a single character for the top left line and column number, and Global System Manager will insert extra characters into the string as required. The optional POSITIONING-2 statement is required if the terminal uses a different positioning sequence for columns greater than a certain value. It will never be required if the ASCII directive was coded in the POSITIONING statement. Its format is the same as that of the POSITIONING statement, but the extra parameter (d3) at the end indicates the column number from which this / positioning sequence must replace the previous one. The 132-WIDE statement has the general format:- 132-WIDE hh5 hh5 [DELAY d2] // // / The two hexadecimal strings define the sequences to enable wide (132 column) mode, and re-enable narrow (80 column) mode respectively. The optional delay is used in the same way as the delay on the CLEAR statement, and is needed if the terminal loses characters or garbles displays if characters are sent immediately following a change of the screen width. The VIDEOTEXT statement allows you to specify a sequence of up to 5 characters to enable videotext mode, and a further sequence to return to normal (non-videotext) mode. It may also contain a delay, used as in the CLEAR or HIGHLIGHTING statements. The START statement must be coded if you need to send special characters to the terminal when the TAP is first loaded. The first line can be followed by a number of continuation lines, each of which starts with a + character. The format is:- START hh30 // [ + hh30 // . . + hh30] // allowing up to a maximum of 1024 bytes to be transmitted. The screen will already contain information when this string is output, so it is usual to embed a clear sequence within the start sequence itself. For example the following START statement is used to program the F1 key on the Wyse-60 to be a:- START 1B7A401B617F The character attribute statements (UNDERLINE, REVERSE, BRIGHT, FLASH, and DIM) each allow you to define a five-byte (or shorter) ON sequence followed by the associated OFF sequence. The optional SPACE directive at the end of the statement indicates that the sequence defined occupies a space on the screen (and hence the 100 range VIDEO$ operations which do not move the cursor cannot be supported). The HIGHLIGHTING statement indicates which of these sequences is to be used as standard highlighting (it is followed by the appropriate character attribute name). See SP 7.2 for a complete discussion of the use of the character attributes. If these character attributes are displayed by a single sequence which uses bit settings in an attribute byte to indicate which attributes are enabled then you must code a CHARACTER ATTRIBUTE statement before any specific sequences are defined. This statement has the form:- CHARACTER ATTRIBUTE hh5 d // / where the basic sequence is indicated by the hexadecimal string, and the index (d) shows which byte is the attribute indicator. / In this situation the sequences for the actual character attributes must be such that they only enable that particular attribute. Presumably all the OFF sequences in such a case will be identical, and the same as the basic character attribute sequence. The INSERT-LINE and DELETE-LINE sequences define the hexadecimal strings which provide these functions. The CURSOR statement is similar in format to the character attribute statements, but the sequences may not occupy a space on the screen. It defines the sequences which enable and disable the display of the cursor. The ALTERNATE sequences, which are used to define an alternate character set for use in conjunction with translation (see section 3.9), have the same general format as the CURSOR sequences, and are also not allowed to occupy a space on the screen. The BOXES, BLOCKS and GRAPHICS statements are described in 2.29, the COLOUR, PAPER, INK and BORDER in 2.30, and the STATUS statement in 2.32. The hardware sequences used for integral terminals depend on the Global System Manager implementation, and they are discussed in Appendix C. Throughout the sequences section, extra 'noise' words are allowed to improve the readability of the TAP. A noise word may be coded whenever a hexadecimal string, decimal number, or particular keyword is required (but not before the principle keyword on the line, which must always come first), and it will be ignored when the TAP is processed. Obviously a noise word may not itself be a valid hexadecimal string, or a valid number. It should also not be a keyword, in the interests of clarity. To give an example, the REVERSE statement may be coded as:- REVERSE ON IS 1B2322 OFF IS 1B2324 TAKES UP A SPACE for a particular terminal, and this is equivalent to coding:- REVERSE 1B2322 1B2324 SPACE as the extra words are ignored. 3.7 The KEYS Section +++ ++++++++++++++++ A KEYS section must be included for all terminals which support extended control functions, as described in section 4.9 of the System Programming manual. These terminals must also provide standard cursor positioning, so when a KEYS section is coded it must immediately follow a SEQUENCES section containing at least a CLEAR and a POSITIONING line. When the KEYS section is needed, you should introduce it with the word KEYS coded on a separate line. Following this, the other detail lines must appear strictly in the order described below. The LEAD-IN line is the only optional one in the section. It is needed for those terminals with some keys which transmit more than one byte when pressed. The group of bytes transmitted by any such keys is recognised because it starts with a special character, the lead-in character. On most terminals the lead-in, /////// if used, is the escape character. The lead-in character is followed by one or more additional bytes, one of which will serve as a discriminator to distinguish between different multi-byte ///////////// transmissions. The Hazeltine 1510 provides a simple example. Hit the HOME key and the two bytes #7E12 are transmitted; hit CLEAR and #7E1C is sent. Here the lead-in character is #7E, and the following byte is the discriminator. You would code:- LEAD-IN 7E For the VT100 operating in ANSI mode, the cursor up, down, right and left keys each generate three bytes: #1B5B41, #1B5B42, #1B5B43, #1B5B44. Hence the lead-in character is #1B, and the discriminator the second byte following it. You would code:- LEAD-IN 1B Following the optional LEAD-IN line you must code seventeen function lines, in ascending function number order, to define the keystrokes responsible for signalling exception conditions 1, 2..., 17 to the CHAR$ system routine. Each line is of the form:- d2 hh keyname / // /////// where d2 is the condition or function number, hh is the unique / // byte-value associated with the function, and keyname is up to 10 /////// characters which the operator can use to identify the keystroke. If two keys have to be pressed simultaneously, you should enclose their names in angle brackets, but avoid these otherwise. For example:- (press CTRL and A simultaneously) or:- HOME A (press HOME, then A) When choosing keystrokes use Table 4.8.4 of the System Programming manual to find the key appropriate for the type of operation involved. The first five functions are often implemented by , ... , or five suitably contiguous function keys (e.g. F1, F2 ... F5) when available. When choosing keystrokes which generate single bytes avoid the following values:- #20 to #7D These are the standard graphics values, and clearly cannot be used; #11 and #13 i.e. and , which must be avoided if you have coded XPROTOCOL in the OPTIONS section, but are available otherwise; #15 to #17 i.e. to , . These or #07 are normally intercepted and handled special- ly by Global System Manager (see Table 4.1.8B of the ?????????????????? manual) but they can be used if you have defined a PREFIX key which is REQUIRED in the OPTIONS section; #80 to #FE can only be used if no LEAD-IN character is defined and the 8-BIT DEVICE option is specified; #FF cannot be used. Reserved for Global System Manager. When the keystroke generates just a single byte it is this value that you supply for hh in its function line. However, when the // keystroke results in the transmission of a multi-byte group, introduced by the lead-in character, the hh value should be the // byte value of the discriminator, with its senior bit set on. Take as an example the KEYS section for the Hazeltine 1510:- KEYS LEAD-IN 7E 1 01 2 02 3 03 4 04 5 05 6 0D RETURN 7 1B ESCAPE 8 9C CLEAR 9 92 HOME 10 06 PAGE 11 08 <--- 12 10 ---> 13 8C UPARROW 14 8B DOWNARROW 15 09 TAB 16 94 BACKTAB 17 7F RUBOUT This indicates that, with 5 exceptions, the keystrokes identified in the right-hand column transmit single bytes. The exceptions are CLEAR, HOME, UPARROW, DOWNARROW and BACKTAB, which send multi-byte groups introduced by the lead-in character, and containing the discriminators #1C, #12, #0C, #0B and #14, respectively. Where the cursor movement keys generate more than two characters you must provide a CURSOR-KEYS line at the end of the keys section. This must contain the hex sequences (each of not more than 3 bytes) which are generated by the cursor left, cursor right, cursor up and cursor down keys in that order. Each sequence must be the same length as all the others. 3.8 The Selection Algorithm +++++++++++++++++++++++++++ If your terminal generates multi-byte sequences for some of the function keys you have chosen to use, you may need a selection algorithm (which is defined in the options section). If the terminal generates only two bytes for a function keystroke (with the discriminator as the second byte) then no selection algorithm is required. If the terminal generates three bytes with the second byte being the discriminator (as for example with the ADDS 75 terminal) then the selection algorithm you need is called 2OF3. If the terminal generates ANSI sequences for the function keys (as for example on the VT100 terminal) where the third byte of function key sequences is the discriminator, then the selection algorithm you need is called VT100. If the terminal generates some non-ANSI sequence of three characters where the third byte is the discriminator, then the selection algorithm you need is called 3OF3. No other selection algorithms are defined at the moment, but TIS Software Ltd will add new ones as it proves necessary. 3.9 Translating Characters +++ ++++++++++++++++++++++ The character translation features of the TAP allow you to make suitable substitutions for characters transmitted by the terminal, so that they may be sensibly handled by Global System Manager. You will not normally need to use translations unless you are writing a TAP for a memory-mapped screen, or for a keyboard with a non-US/UK character set. You introduce the translations section, if one is required, by coding the word TRANSLATIONS alone on a line. Subsequently you provide a series of translation lines which will create records to cause the translations you require. There are two types of translation lines you may use. The simplest of these is for input character replacement. You code a +++++++++++++++++++++++++++ line of the form:- hh1 hh3 // // Where the first operand identifies a single input character value and the second a string of up to 3 characters by which it is to be replaced. This type of translation is most often used on memory-mapped screens when you wish to have a single key generate some useful sequence of characters (eg a key marked HELP might be translated to generate the SYSREQ value, followed by an 'H', so that an operator can strike it for help). There is a maximum limit of 32 input character replacements where a character is replaced by more than 1 character. You may have an unlimited number of replacements of a single character by a single character. The second type of translation is termed character translation. ++++++++++++++++++++++ For this you code a line of the form:- hh1 hh1 hh6 [ALTERNATE] // // // The first operand represents the hexadecimal value of an input character. The second operand is the value into which it will be translated before it is passed to Global System Manager (the internal representation). The third operand is a string of up to +++++++++++++++++++++++ 6 characters which will be sent to the terminal whenever the internal representation character is displayed. The ALTERNATE directive, if coded, causes these characters to be surrounded by the alternate character set ON and OFF sequences defined by the ALTERNATE line in the sequences section. Character translation is most often used when it is necessary to support a foreign character set on a keyboard. The characters generated by the terminal may vary widely from terminal to terminal for non-US ASCII characters, but it is important that the internal representations used are consistent over all terminals. For this reason we recommend that, where appropriate, characters are translated into the extended ISO/ECMA ASCII standard characters, and the option 8-BIT EXTENDED ASCII is coded in the options section. There is no limit on the number of character translations that may be performed where the output representation is a single character with no ALTERNATE qualifier. A maximum of 16 output translations to more than one character, or with an ALTERNATE qualifier, are permitted. 4. OBTAINING INFORMATION ABOUT A NEW TERMINAL ++ ++++++++++++++++++++++++++++++++++++++++++ Normally you can obtain the information you need to write the TAP for a new terminal from the manufacturer's documentation. However, in some cases this is inadequate and you may need to use the terminal diagnostics facility provided by Global System Manager to determine the exact effect of certain keystrokes, or the precise sequences required for positioning, highlighting and so on. 4.1 Terminal Diagnostics +++ ++++++++++++++++++++ Using the new device as a console, sign on to Global System Manager specifying a terminal code of 0 (which will stop Global System Manager from trying to send special sequences to the screen which, since you have not yet supported the screen, would be incorrect and may cause it to lock out). If your system uses a fixed terminal type, so that you are not prompted, use $CUS to override this (see section 2.3). In any case once a ready prompt is obtained simply key $T to run -- the $T command and cause the terminal attribute screen shown in figure 4.1 to appear. Key the word DIAG to the outstanding prompt and the diagnostics ---- menu shown in figure 4.2 will appear. 4.2 To Quit +++ +++++++ Various different diagnostics may be obtained by keying the appropriate number in response to the selection prompt. When you have finished you can return to the Global System Manager menu or GSM READY prompt, bypassing the terminal description screen, by keying 0:- - :0 - GSM READY: 4.3 Diagnostic 1 - Modify the Screen Dimensions +++ +++++++++++++++++++++++++++++++++++++++++++ A terminal supported using code 0 is normally treated as a 24 line by 79 column teletype. If these dimensions are incorrect and you need to run $EDIT on the device to create the new terminal attribute program, you can temporarily change them by keying 1 to the outstanding prompt. For example, suppose the - screen is only 20 by 72:- :0 - DEPTH IN LINES:20 -- WIDTH IN CHARACTERS:72 -- ......... ......... (the diagnostics menu is redisplayed) ......... : ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 4.1 - The Terminal Attribute Screen ++++++++++++++++++++++++++++++++++++++++++ ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 4.2 - The Diagnostics Menu +++++++++++++++++++++++++++++++++ 4.4 Diagnostic 2 - Display Inputs as Byte Values +++ ++++++++++++++++++++++++++++++++++++++++++++ By keying 2 to the outstanding diagnostics menu prompt, you can - investigate the byte values transmitted by the various keystrokes. Every time you subsequently press a key, or a set of keys if more than one is needed, the byte values transmitted are displayed, five bytes per line. For example, if your terminal is a Hazeltine 1510 set up with parity disabled then, if you press the CLEAR key, the following will be displayed:- 7E (00 + 7E) 1C (00 + 1C) because the CLEAR key transmits a two-byte group introduced by the lead-in character, #7E. The quantities in brackets show the preceding byte value decomposed into the senior, parity, bit plus the value of the junior 7 bits. If, for example, you now enable parity on the Hazeltine and press CLEAR you will see:- FE (80 + 7E) 9C (80 + 1C) You should note, however, that unless the TAP for your terminal specifies the 8-BIT option the parity bit will always be set to zero in byte values transmitted to any Global System Manager program. To leave this diagnostic and redisplay the menu you must key the six letters QWERTY consecutively. 4.5 Diagnostic 3 - Transmit Supplied Byte Values +++ ++++++++++++++++++++++++++++++++++++++++++++ By keying 3 in response to the outstanding menu prompt you can - examine the effect of sending specified sequences of bytes to the terminal. A colon prompt appears to which you supply a string consisting of one or more pairs or hexadecimal digits terminated by . $T converts this into the corresponding byte string, which it then displays. For example, if you were to key:- :#7E1C ----- on the Hazeltine 1510, the screen would be cleared and then the colon prompt would re-appear in the top left-hand corner. To leave this diagnostic and redisplay the menu simply key -- in response to the colon prompt. 4.6 Diagnostic 4 - Transmit Keystrokes Unchanged +++ ++++++++++++++++++++++++++++++++++++++++++++ By keying 4 to the outstanding menu prompt you enter a mode in - which the bytes transmitted by a keystroke are echoed unchanged. Thus if you press the CLEAR key on the Hazeltine 1510, #7E1C is transmitted to the computer. This string is then echoed, and the screen is cleared. To leave this diagnostic and redisplay the menu you must key the six letters QWERTY consecutively. 4.7 Diagnostic 5 - Determine Screen Depth +++ +++++++++++++++++++++++++++++++++++++ If you key 5 to the menu prompt a sequence of numbers will scroll - up the screen. When the display stops, the number on the top line of the screen will be the depth of the screen in lines. Reply to the outstanding prompt to return to the menu. -- 4.8 Diagnostic 6 - Determine Screen Width +++ +++++++++++++++++++++++++++++++++++++ By keying 6 to the menu prompt you can check the width of the - screen. This is a very important test, since many screens treat the last column specially thus making it unusable by Global System Manager. Because of this, many supposedly 80 column screens have to be treated as 79 columns wide. You are first prompted for what you think the screen width is:- SCREEN WIDTH: After you have replied a number of characters are then displayed which will result in one or two lines of text appearing on the screen. If the line:- THIS LINE SHOULD NOT BE VISIBLE appears then the terminal scrolls when a character is displayed in the last column of the last line, and so the last column cannot be used. You should repeat the test with the width reduced by one. A line of the form:- THE CURSOR SHOULD BE ON THE X will always appear, with an X or an A in the right-hand column. If the cursor is not on an X, this indicates that backspace is not handled correctly in the last column position. It is possible to use this width with Global System Manager. If, however, while accepting a field, you delete a character keyed in the last column then the cursor will be positioned under the wrong character. You may, therefore, prefer to reduce the width by one to prevent this occurring. 4.9 Diagnostic 7 - Test for X-Protocol +++ ++++++++++++++++++++++++++++++++++ If you key 7 to the menu prompt then a test will be run to determine whether the terminal transmits X-ON or X-OFF characters to temporarily halt transmission when its internal buffers are filled during intensive display sequences. The test transmits a large number of characters (mainly "A" followed by line-feed) to cause the screen to scroll rapidly, since scrolling is usually a time-consuming operation for the terminal. It checks whether the terminal has transmitted an X-OFF character during these displays. It then displays:- X-PROTOCOL USED or:- X-PROTOCOL NOT USED as appropriate. Key to return to the menu. -- Note that if X-Protocol is not used, but the screen flickers or flashes during the test, this indicates that it is not capable of handling continuous transmissions at this baud rate. During normal working, such intensive transmissions are unlikely to occur, but if you do have problems with the screen flashing you may have to reduce the baud rate. The manufacturer's handbook for the terminal may indicate that X-Protocol is used, even though the test failed to trigger its use. In such cases you are recommended to include the XPROTOCOL option in your TAP, as their may be other kinds of operations which will trigger it even though the simple test has not. 4.10 Diagnostic 8 - Transmit Bytes via the Executive ++++++++++++++++++++++++++++++++++++++++++++++++++++ This test is designed for use by TIS Software staff at our London office and during on-site testing. It should not be used. 5. CREATING A TAP USING $TAP ++ +++++++++++++++++++++++++ The source of the terminal attribute program should be prepared as a text file named S.code, using $EDIT or $TED. The source is //// then turned into the TAP, a file named $.code, by the $TAP //// command. Note that it is not necessary to use the new device as the console whilst its TAP is being prepared. In fact it is better to use a fully supported terminal so that cursor positioning and all the function keys are available to you. 5.1 The Source File Prompt +++ ++++++++++++++++++++++ $TAP begins by prompting you for the file-id of the source file to be processed together with its unit-id. If you do not explicitly key a prefix when you input the file-id, $TAP will assume that the file is a conventionally named source file and will append the S. prefix by default. For example:- BOS READY:$TAP ---- $96 SOURCE:1234 UNIT:101 ---- --- $96 OUTPUT UNIT: indicates that the operator wishes to create a terminal attribute program from source file S.1234 on unit 101. 5.2 The Output Unit Prompt +++ ++++++++++++++++++++++ Having found the input source file, $TAP now prompts you for the unit on which the output TAP is to be created. This will default to be the same unit as the source file was taken from. 5.3 The Listing Unit Prompt +++ +++++++++++++++++++++++ The prompt:- $96 LISTING UNIT: asks you to specify the unit upon which the source you supply is to be printed, together with error messages if faults are detected by $TAP. If you key the listing will be directed -- to the unit assigned to $PR. 5.4 The Processing Stage +++ ++++++++++++++++++++ Once you satisfy the listing unit prompt $TAP enters its processing stage and, after displaying the explanatory message:- $96 PROCESSING TAP creates the TAP file from the input source. At the same time the source listing will be output if you have requested one. When the processing is complete the following message will appear if $TAP has detected one or more suspect, though not definitely wrong, statements:- $96 NUMBER OF WARNINGS nnnn //// where nnnn is the decimal number of warning messages output to //// the source listing. Next one of the following two messages appears:- $96 NO ERRORS FOUND - TAP CREATED or:- $96 NUMBER OF ERRORS nnnn - NO TAP CREATED //// BOS READY: In the first case, all is well and the TAP has been created. In the second case $TAP terminates because of fatal errors in the source. You must examine the listing for error messages, each of which is described in detail in Appendix A. 5.5 Example +++ +++++++ The following example shows $TAP being used to create a terminal attribute program named $.1234 from source file S.1234 on the direct access volume on unit 101. A source listing is produced on the installation's standard printer:- BOS READY:$TAP ---- $96 SOURCE:1234 UNIT:101 ---- --- $96 OUTPUT UNIT: -- $96 LISTING UNIT: -- $96 PROCESSING TAP (The source listing is now output to $PR) $96 NO ERRORS FOUND - TAP CREATED BOS READY: Following the successful creation of the TAP the operator will now check and install it as explained in the next section. 6. CHECKING AND INSTALLING THE TAP ++ +++++++++++++++++++++++++++++++ Once a syntactically correct terminal attribute program has been produced by running $TAP, you must check whether BOS will operate correctly with the new support. You may then use a special test facility provided by the $T command to check every detail of the new TAP. Finally, when all is well, you must install the program on all the system and application volumes which require it. 6.1 Signing on using the new TAP +++ ++++++++++++++++++++++++++++ First of all run the file utility to copy the terminal attribute program that you have created from the source volume to SYSRES. For example:- BOS READY:$F -- $66 INPUT DEVICE:101 --- $66 OUTPUT DEVICE:$DP --- $66 FILE MAINTENANCE :COP :$.1234 TO: SIZE: COPIED --- ------ -- -- $66 FILE MAINTENANCE : ------ BOS READY: Now sign on again, this time specifying the code of the new TAP in response to the terminal prompt. For example:- BOS READY:$E -- OPERATOR EAH SIGNED OFF AT 16.45.17 ......... ......... (contract description) ......... PLEASE KEY YOUR OPERATOR-ID:EAH --- PLEASE KEY TERMINAL CODE (0):1234 ---- BOS READY: If the terminal prompt reappears when you key the code, then either you have not copied the TAP correctly onto SYSRES, or you have specified the wrong code. If the menu or "ready" prompt does not appear properly then, if the screen is distorted or strangely modified, suspect the START statement you have encoded in the TAP is invalid. If such an error occurs you must reboot the system, correct the error, rerun $TAP, and then sign on again. 6.2 Checking the Terminal Description, Dimensions and Code +++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ When all is well run the $T command and examine the terminal attributes screen which is then displayed:- BOS READY:$T -- (blank lines are written to clear the screen, which then appears in the format indicated below) ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 6.1 - Terminal Attribute Screen for the WYSE WY-50 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 6.2 - The TEST menu ++++++++++++++++++++++++++ description depth BY width (blank line) ......... ......... (comments, excluding the initial asterisks) ......... (blank line) KEY P TO PRINT: Figure 6.1 shows the terminal attributes screen for the WYSE WY-50. You should check the depth and width of the new terminal for accuracy, and your description and comments for spelling mistakes, missing words and so on. 6.3 Invoking the Test Facility +++ ++++++++++++++++++++++++++ Key the word TEST in response to the outstanding prompt and the ---- test menu shown in figure 6.2 will appear. 6.4 To Quit +++ +++++++ The tests have been designed so that most of them can operate independently. However, you should not attempt test 6 if test 1 is unsatisfactory, and similarly test 7 depends on test 6. You may quit and return to the monitor at any time that the test menu is displayed by simply keying in response to its out- --- standing prompt:- : --- BOS READY: To correct an error you will need to edit the TAP source using $EDIT and then recreate the terminal attribute program itself by running $TAP. Once the tests show the TAP is satisfactory you must install it on all the volumes that require it, as explained at the very end of this section. 6.5 Test 1 - Dimensions +++ +++++++++++++++++++ Key 1 in response to the test menu selection prompt. A screen - similar to that shown in figure 6.3 will appear. Every character position, apart from one, of the area defined by the TAP's DIMENSION statement should be filled by a digit. The exception is the rightmost character of the last line, which is a colon to indicate that the screen serves as a prompt. If the screen is not similar to the one shown, but contains lots of almost blank lines, this is probably because the terminal automatically generates a newline sequence when the rightmost character of each line is displayed. You must reduce the line width by one to avoid the sensitive character position. If this error occurs you should correct it before trying tests 7 and 8. If the screen is correct except that the colon prompt appears one character to the left of the end of the line, this indicates that the terminal does not handle backspace correctly in the last column of the screen. This is acceptable, but will cause the cursor to be mispositioned if you ever delete a character keyed into the last column of the screen while accepting a field. Key to the outstanding prompt to redisplay the menu. ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 6.3 - The Dimension Test +++++++++++++++++++++++++++++++ ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 6.4 - Clear and Cursor Positioning +++++++++++++++++++++++++++++++++++++++++ 6.6 Test 2 - Character attribute testing +++ ++++++++++++++++++++++++++++++++++++ Key 2 in response to the selection prompt and you will be taken - into a subsidiary menu titled CHARACTER ATTRIBUTES TEST MENU. This menu allows you to examine the Underlining, Reverse video, Dim, Bright, and Flashing attributes of the screen, along with the attribute chosen as Highlighting. Each entry from the menu tests the indicated attribute, and the format of the messages is very similar. To illustrate with Highlighting, if you select option 1, one of the following messages will appear:- HIGHLIGHTING IS NOT SUPPORTED: or:- THIS ITEM AND THIS ITEM ARE HIGHLIGHTED: or:- THIS ITEM AND THIS ITEM ARE HIGHLIGHTED THE MIDDLE OF THIS ITEM AND THE MIDDLE OF THIS ITEM ARE HIGHLIGHTED: The first message indicates that no HIGHLIGHTING statement has been coded in the TAP. The second means that highlighting on and off sequences moving the cursor right have been coded, but these were coded with the SPACE directive, so the associated non cursor movement operation is not supported. The third message indicates that full highlighting support - i.e. VIDEO$ operations 1, 2, 101 and 102 - is provided. If the spacing of any line is incorrect, or there is no highlighting, or other characters apart from the words ITEM in lines 2 & 3 and the letters "TE" in the ITEMs of line 4 are affected, then the sequences coded in the TAP are incorrect. Key in response to the outstanding prompt to redisplay the -- character attributes test menu. The other options from this menu operate in the same way to check out the remaining character attributes. To return to the test menu key to the character attribute test menu, as indicated. -- 6.7 Test 3 - Screen width test +++ ++++++++++++++++++++++++++ This test allows you to check out the 132-WIDE sequence handling in the tap. If you select this option you are prompted:- Narrow or Wide screen?: If you key N then the screen is put into (or remains in) narrow mode and you are returned to the test menu. If you key W and wide mode is supported then you are put into (or remain in) wide mode. If you key W and wide mode is not supported then the message:- WIDE MODE NOT SUPPORTED: is displayed. Key to return to the test menu. -- 6.8 Test 4 - Videotext +++ ++++++++++++++++++ This test allows you to check whether videotext handling is enabled. Key 4 from the test menu. If videotext mode is - supported then the message:- VIDEOTEXT MODE ENABLED: will be displayed. When you key videotext mode will be -- disabled and you will be returned to the test menu. If videotext mode is not supported then the message:- VIDEOTEXT MODE NOT SUPPORTED: will be displayed. Key to return to the main menu. -- 6.9 Test 5 - Status Line Test +++ +++++++++++++++++++++++++ This test allows you to check that the status line on your screen has been set up correctly to receive messages. You are prompted:- MESSAGE TO GO IN STATUS LINE: Key any test message of up to 30 characters and, upon keying , this message will be displayed on the status line if it has -- been set up correctly. 6.10 Test 6 - Cursor Display Control ++++++++++++++++++++++++++++++++++++ Key 6 in response to the test menu prompt. Either the line:- - CURSOR DISPLAY CONTROL IS NOT SUPPORTED: or:- CURSOR DISPLAY SHOULD NOW BE SUPPRESSED: appears. If the first of these appears, simply key to -- redisplay the menu. In the second case $T will have displayed the OFF sequence from the TAP's CURSOR statement just before the terminating colon. If this colon does not immediately follow the word SUPPRESSED, with no intervening spaces, or if the cursor display remains on, there is an error. In any case, key and -- the prompt:- CURSOR DISPLAY SHOULD NOW BE RESTORED: appears. $T will have displayed the CURSOR statement's ON sequence just before the terminating colon. If this colon does not immediately follow the word RESTORED, with no intervening spaces, or if the cursor display remains off, there is an error in the TAP's CURSOR statement. Key to redisplay the menu. -- 6.11 Test 7 - Clear and Cursor Positioning ++++++++++++++++++++++++++++++++++++++++++ Only attempt this test if test 1, which checks the terminal's dimensions, has succeeded. Key 7 to the test menu prompt and - either the line:- STANDARD CURSOR POSITIONING NOT SUPPORTED: appears, or a screen similar to that shown IN FIGURE 6.4 is displayed. If a correct screen appears the area defined by the TAP's DIMENSION statement should be exactly bordered by a pattern of digits with an asterisk in each corner. If information from the previous test menu is still displayed this means that the CLEAR statement is incorrect. If the pattern is positioned wrongly, then the problem lies with POSITIONING sequence you have defined. On the second line of the screen is displayed the prompt:- Key to clear to the end of line: followed by a string of As. If everything is correct, keying will clear the line from after the colon. Next, the -- prompt:- Key to clear to end of screen: is displayed. If everything is correct, keying will clear -- from the colon to the end of the screen. Key to the third prompt to redisplay the test menu. -- 6.12 Test 8 - Extended Control Functions ++++++++++++++++++++++++++++++++++++++++ Only attempt this test if test 6 has shown that standard cursor positioning is working correctly. Key 7 to the test menu prompt - and either the warning:- EXTENDED CONTROL FUNCTIONS NOT SUPPORTED BY TAP: appears, or you are prompted to make the first of the seventeen keystrokes defined in the KEYS section of the TAP. The warning means that the TAP does not contain a KEYS section, and therefore does not support extended control functions. You should simply key to the warning prompt to cause the test menu to be -- redisplayed. When extended control functions are supported first of all a header is displayed, and this is followed by a prompt of the form:- function value keyname /////////////////////////// e.g:- 1 01 : ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 6.5 - Extended Control Functions +++++++++++++++++++++++++++++++++++++++ ................................................. . . . . . . . . . . . . . . . . . . . PHOTO . . . . . . . . . . . . . . . . . . . ................................................. Figure 6.6 - CHAR$ Input ++++++++++++++++++++++++ You must then make the keystroke indicated by the keyname. BOS will check that the value returned by the CHAR$ system routine matches the value hh that you specified for function d2 in the // / KEYS section of the TAP. The example above checks that function 1 is signalled as a result of #01 being transmitted when ------ is keyed. Indeed, when you key on the Hazeltine 1510 ------ this is exactly what does happen, so $T echoes the value as a confirmation, and proceeds to test the next function:- 1 01 : 01 2 02 : This will continue until all 17 functions have been checked, at which time the prompt:- KEY TO REDISPLAY MENU: appears to enable you to return to the menu. Now suppose that there is an error in your TAP and, by mistake, you have specified that the byte value corresponding to is #12 rather than #02. The second line will then appear as:- 2 12 : and when you actually key the discrepancy will be ------- detected:- 2 12 : 02 ERROR The line is repeated to allow you to correct a keying error, but in this case, of course, this is not the problem. The TAP is wrong. You key N to indicate that you do not wish to try again, - and then BOS overwrites the repeated line with the next test, so the last two lines appear as:- 2 12 : 02 ERROR 3 03 Figure 6.5 shows how the screen might appear after all 17 functions have been checked. All the information to the left of the colons is from the KEYS section of the TAP, so you can check the spelling of the keynames too. You should note that a discrepancy during the extended control function test may indicate that the wrong selection algorithm has been selected in the TAP if the keystroke causing the error transmits a multi-byte group. 6.13 Test 9 - CHAR$ Input +++++++++++++++++++++++++ Test 9 is optional. It allows you to see how the character input routine, CHAR$, will respond to any keystroke. You may need it if you intend to develop device-dependent programs which use the non-graphic characters returned in inbyte when CHAR$ signals an exception. Key 9 in response to the test menu prompt and either the - warning:- CHARACTER I/O NOT SUPPORTED: appears, indicating that the terminal is unable to support single character input and output because there is not a full duplex attachment, or the prompt:- KEYSTROKES: is displayed. If the warning appears, simply key to redisplay the test -- menu. When character I/O is supported, any key, or combination, that you depress, following the keystrokes prompt, will be interpreted by $T in terms of the information returned by CHAR$. For example, if you hit on the Hazeltine 1510 the command ----- will output:- EXCEPTION 8 INBYTE 9C If you key A, a standard graphic, the result will be:- - NORMAL COMPLETION INBYTE 41 Keystroke interpretation will continue this way until you key the 6 letters QWERTY consecutively to redisplay the test menu. 6.14 Test 10 - Box Drawing Character test +++++++++++++++++++++++++++++++++++++++++ Provided box characters are supported, this test displays a window shape (a rectangular box with crossed lines through its centre) and also displays the eleven box characters individu- ally. You should check that the lines forming the window shape join up correctly. After you key the test then displays any block characters -- that have been set up. 6.15 Test 11 - Colour test +++++++++++++++++++++++++++ If colour is supported this test displays the eight colours, with the names of the colours over the top of each one. Keying -- will return you to the menu. 6.16 Test 12 - Line Insert and Delete +++++++++++++++++++++++++++++++++++++ This test allows you to check the functioning of the Insert Line and Delete Line sequences specified in the TAP... 6.17 Installing the TAP +++++++++++++++++++++++ Once the terminal attribute program is operating satisfactorily you must use the file utility to copy it to all system and application volumes which require it. These are all volumes which already contain the file P.$TAP. They include: SYSRES, of course, where the TAP has already been installed in order to test it; SYSDEV in a two diskette development BOS; SYSMAP in a four diskette development BOS; and ACPROG if your installation uses a BOS AutoClerk development system with the forms option. APPENDIX A - ERROR AND WARNING MESSAGES FROM $TAP +++++++++++++++++++++++++++++++++++++++++++++++++ This appendix describes the error and warning messages produced by the terminal attribute program builder, $TAP, on the source listing file. If an error occurs this indicates a serious fault and no TAP will be produced. $TAP is able to continue following a warning, however, and the description of the warning message specifies the recovery action taken. It is of course good practice to correct the TAP source so that a clear listing is obtained. Each message consists of the error or warning number of one, two or three digits together with a short explanation. In general the message follows the line in error, but where a missing line is referred to the message is printed where the omission of the line in question has been detected. The following notes may apply to errors or warnings:- 1. The error is sufficiently serious that further processing of the TAP is impossible. Processing will cease and the partially created TAP file will be deleted. 2. The error or warning has arisen when a hexadecimal string was expected, but the next token encountered was not a valid hexadecimal (it was odd length, or contained an invalid character) or was longer than the permitted length for that statement (there is always a limit to the length of a hexadecimal string, which is indicated in the skeleton TAP). The string flagged will have been ignored, and in some situations the whole line will be ignored as a result. *** ERROR 1 TERMINAL LINE EXPECTED +++++++++++++++++++++++++++++++++++ The first line of a terminal attribute program must be a TERMINAL line specifying the code and description, otherwise this error occurs. *** ERROR 2 INVALID CODE +++++++++++++++++++++++++ This code specified in the TERMINAL line must be an integer between 0 and 9999 inclusive. *** ERROR 3 DESCRIPTION NOT PRESENT ++++++++++++++++++++++++++++++++++++ This error occurs if the code specified by the terminal line is not followed by a description. The description, which should be the manufacturer's name for the terminal, is necessary to identify the device on reports produced by BOS. *** ERROR 4 DIMENSIONS LINE EXPECTED +++++++++++++++++++++++++++++++++++++ The TERMINAL line should be immediately followed by the DIMENSION line, otherwise this error occurs. See note 1. *** ERROR 5 INVALID DEPTH ++++++++++++++++++++++++++ The screen depth in lines, specified by the first number in the DIMENSIONS statement, is not an integer in the range 12-127 inclusive. See note 1. *** ERROR 6 BY EXPECTED ++++++++++++++++++++++++ The word BY should separate the depth from the width parameter in a DIMENSIONS statement. *** ERROR 7 INVALID WIDTH ++++++++++++++++++++++++++ The width in characters specified by the second number in a DIMENSIONS statement is not an integer in the range 30-255 inclusive. See note 1. *** ERROR 8 FATAL ERROR TAP PROGRAM FILE NOT CREATED +++++++++++++++++++++++++++++++++++++++++++++++++++++ This only appears at the end of the source listing. It will normally appear as a consequence of a previously reported error. It indicates that a serious error has arisen during processing and the TAP file will not be created. *** ERROR 9 INVALID TYPE +++++++++++++++++++++++++ The type digit supplied in a TYPE line must be in the range 0-9 inclusive. *** ERROR 10 KEY NUMBER nn MISSING ++++++++++++++++++++++++ // +++++++ Each of the function lines must begin with an integer in the range 1 to 17, where the integer represents the function number being defined. There are no ordering requirements for the function lines, and the CURSOR-KEYS line when present may appear at any point in the KEYS section, but the LEAD-IN must be defined first when it is present. Each of the 17 function lines must be represented in the KEYS section. If any of the lines has been omitted then this error message will appear for each missing line. *** ERROR 11 HEXADECIMAL INVALID +++++++++++++++++++++++++++++++++ A character not in the range 0-9 or A-F was found where a hexadecimal digit was expected. See note 2. *** ERROR 12 HEXADECIMAL TOO LONG ++++++++++++++++++++++++++++++++++ The line flagged in error contains a hexadecimal string with too many digits. See note 2. *** ERROR 13 VALID HEXADECIMAL MISSING +++++++++++++++++++++++++++++++++++++++ An expected hexadecimal string was missing from the line flagged in error. In some cases particular criteria must be satisfied for the expected string, as specified in the skeleton TAP, and if these are not satisfied then this error may also arise. *** ERROR 14 HEXADECIMAL ODD LENGTH ++++++++++++++++++++++++++++++++++++ The line flagged in error contains a hexadecimal string made up of an odd number of hexadecimal digits. Since a pair of digits is required to specify a single byte, a hexadecimal string should always be an even number of digits in length. See note 2. *** ERROR 15 MISSING KEYNAME +++++++++++++++++++++++++++++ The line flagged in error is either a function definition line in the KEYS section, and its last parameter, the keyname, is missing, or alternatively it is a PREFIX line in the OPTIONS section without a keyname provided. *** ERROR 16 CLEAR OR POSITIONING MAY NOT APPEAR ALONE +++++++++++++++++++++++++++++++++++++++++++++++++++++++ In the SEQUENCES section, either both the CLEAR and POSITIONING lines should be present, or both should be omitted. If one appears without the other this error occurs. It is, however, valid to code the CLEAR sequence with no POSITIONING sequence present if the VIDEOTEXT sequence has been coded without the optional hexadecimal strings, indicating that this is a device permanently in Videotext mode. It is always invalid to code CLEAR-TO-END- OF-LINE or CLEAR-TO-END-OF-SCREEN sequences without a POSITIONING sequence being present. *** ERROR 17 OPTIONS HEADER LINE EXPECTED ++++++++++++++++++++++++++++++++++++++++++ An OPTIONS section must always be present. *** ERROR 18 KEY CANNOT BE NULL ++++++++++++++++++++++++++++++++ The byte value associated with the lead-in character, or any of the 17 function definitions appearing in the KEYS section may not be #00 or #80, since these special null values are ignored by the BOS console executive. *** ERROR 20 UNEXPECTED END OF FILE ++++++++++++++++++++++++++++++++++++ The end of the TAP source file has been reached before an ENDTAP statement has been encountered. *** ERROR 21 INVALID DELAY +++++++++++++++++++++++++++ The optional delay parameter which may be coded as part of a CLEAR, 132-WIDE or VIDEOTEXT sequence must be an integer between 1 and 99 inclusive. *** ERROR 22 SELECTION ALGORITHM NAME EXPECTED +++++++++++++++++++++++++++++++++++++++++++++++ The six character algorithm name has been omitted in the SELECTION line. *** ERROR 23 START STATEMENT IS MISSING ++++++++++++++++++++++++++++++++++++++++ A start sequence continuation line is not preceded by a START statement line. *** ERROR 24 NO PREFIX KEY DEFINED +++++++++++++++++++++++++++++++++++ A prefix key must always be defined. See note 1. ++++++ *** ERROR 25 GRAPHIC hh EXPECTED +++++++++++++++++++++ // ++++++++ If an option starts with HIGH it must be followed by GRAPHIC hh, where hh is a single pair of hexadecimal digits. // // *** ERROR 26 SEQUENCE OUT OF ORDER - IGNORED ++++++++++++++++++++++++++++++++++++++++++++++ Certain of the sequence definition lines must obey specific ordering requirements. The CHARACTER ATTRIBUTE sequence must precede any of the character attribute definition lines (BRIGHT, DIM etc). POSITIONING-2 must come after the POSITIONING line. The COLOUR line must precede the STATUS line. A HIGHLIGHTING sequence must indicate a character attribute which has been previously defined. The ordering requirements for COLOUR, PAPER, INK and BORDER lines are outlined in 2.30. *** ERROR 27 KEY VALUE SAME AS LEAD IN +++++++++++++++++++++++++++++++++++++++ The byte value associated with the key line last printed is the same as the lead-in character. Either correct a typing error or implement the function with a key which generates a different value. *** ERROR 28 VALID INDEX EXPECTED - IGNORED ++++++++++++++++++++++++++++++++++++++++++++ The decimal integer indicated should be an index into a preceding byte string, but it is too large and has been ignored. *** ERROR 30 INVALID ATTRIBUTE BYTE ++++++++++++++++++++++++++++++++++++ A CHARACTER ATTRIBUTE sequence has been specified but the attribute byte from the indicated attribute sequence is inconsistent with it. *** ERROR 31 START SEQUENCE NOT FOUND - LINE IGNORED +++++++++++++++++++++++++++++++++++++++++++++++++++++ While processing a start sequence or continuation line no valid hexadecimal string was encountered. See note 2. *** ERROR 32 CURSOR MOVEMENT KEYS NOT SPECIFIED ++++++++++++++++++++++++++++++++++++++++++++++++ A selection algorithm has been selected for the TAP, a LEAD-IN is specified, and the cursor movement keys have their #80 bit set, indicating that multiple bytes are generated for them. In such a case it is mandatory to provide a CURSOR-KEYS line in the KEYS section, but no such line has been encountered. *** ERROR 33 XPROTOCOL KEYS INVALID ++++++++++++++++++++++++++++++++++++ If the XPROTOCOL option was specified byte values #11 and #13 are intercepted by BOS and treated specially when transmitted from the terminal. Thus in this case neither the lead-in character nor any of the 17 function key definitions should be specified with a byte value of #11, #13, #91 or #93. *** ERROR 34 KEY DEPRESSION WILL BE INTERCEPTED ++++++++++++++++++++++++++++++++++++++++++++++++ Unless a REQUIRED prefix key is defined, byte values #07, #15, #17 and #18 are intercepted by BOS and treated specially when transmitted from the terminal. Thus in this case neither the lead-in character, nor any of the 17 function key definitions, should be specified with a byte value of #07, #15, #17, #18, #87, #95, #97 or #98. *** ERROR 35 SEQUENCE INVALID - IGNORED ++++++++++++++++++++++++++++++++++++++++ If MEMORY MAPPED has been specified as an option it is not valid to specify a CHARACTER ATTRIBUTE sequence, and it has been ignored. *** ERROR 36 INVALID FOR MEMORY MAPPED SCREENS +++++++++++++++++++++++++++++++++++++++++++++++ If MEMORY MAPPED has been specified as an option, each character attribute sequence when coded should specify two hexadecimal strings, each containing only two bytes of information. These are and/or masks for the ON and OFF processing. See note 1. *** ERROR 37 VALUE SIGNALS CAPS LOCK +++++++++++++++++++++++++++++++++++++ If neither a PREFIX... REQUIRED or HARDWARE CAPS LOCK option has been specified a byte value of #16 transmitted from the terminal is intercepted by BOS and interpreted as a request to change the status of the software capitals lock flag. Thus in this case neither the lead-in character, nor any of the 17 function key definitions, should be specified with a byte value of #16 or #96. *** ERROR 38 KEY VALUE RESERVED ++++++++++++++++++++++++++++++++ You have attempted to define a key with a value of #FF. This value is not available since it is reserved for BOS internal use. *** ERROR 40 INVALID LEAD-IN KEY - IGNORED +++++++++++++++++++++++++++++++++++++++++++ It is not valid to have a LEAD-IN key greater than #1F and less than #60. If a HIGH GRAPHIC byte has been specified in the OPTIONS section it is invalid for the LEAD-IN to be greater than #1F or less than or equal to the high graphic specified. *** ERROR 41 CURSOR MOVEMENT KEYS INCONSISTENT +++++++++++++++++++++++++++++++++++++++++++++++ If a LEAD-IN has been specified then either all cursor movement keys must not have their top bit (#80) set, or they must all have it set. The setting or unsetting of this bit implies the number of characters generated by the cursor movement keys, and this must be the same for all the keys. *** ERROR 42 UNEXPECTED END OF LINE ++++++++++++++++++++++++++++++++++++ End-of-line was encountered before all the expected inform- ation had been found on the indicated line. This error may arise when a hexadecimal sequence has been miscoded, and has been filtered out as a noise-word. *** ERROR 43 VALID DECIMAL EXPECTED ++++++++++++++++++++++++++++++++++++ A decimal value, as indicated in the skeleton TAP, was expected, but none was encountered. *** ERROR 44 INVALID POSITIONING SEQUENCE FOR 'ASCII' ++++++++++++++++++++++++++++++++++++++++++++++++++++++ If the ASCII parameter is specified in the POSITIONING line then the row and column positions indicated within the sequence should each contain a value #31. *** ERROR 45 INVALID SEQUENCE FOR BOXES ++++++++++++++++++++++++++++++++++++++++ The hexadecimal string defined in the BOXES line must consist of exactly 11 pairs of valid hexadecimal digits. No byte in the sequence may contain the value #00. *** ERROR 46 HEXADECIMAL OF LENGTH nn EXPECTED +++++++++++++++++++++++++++++++++++++++++++++++ In certain cases the hexadecimal string expected in a sequence definition must be of an exact length. In this case any valid hexadecimal strings of an incorrect length will be ignored. The length of the expected string (in digit pairs) is indicated in the message. *** ERROR 47 INVALID MESSAGE AREA LENGTH +++++++++++++++++++++++++++++++++++++++++ When processing the STATUS line no valid message area length has been encountered prior to the end of line. A message area must be at least 20 characters long to be valid, but must not be greater than 80 character in length, or the screen width if this is less than 80 characters. *** ERROR 48 INK/PAPER NOT SPECIFIED +++++++++++++++++++++++++++++++++++++ A COLOUR sequence has been specified, but either the INK or PAPER sequences, or both, have subsequently been omitted. *** ERROR 49 LEAD-IN KEY SAME AS PREFIX KEY ++++++++++++++++++++++++++++++++++++++++++++ It is invalid for the byte value associated with any of the function key definitions to be the same as the PREFIX key. If the LEAD-IN is the same as the PREFIX key this is a serious error, see note 1. *** ERROR 50 ENDTAP NOT EXPECTED +++++++++++++++++++++++++++++++++ The ENDTAP line has been encountered, and valid TERMINAL and DIMENSIONS statements have not been found, or no PREFIX key has yet been defined in the OPTIONS section. *** ERROR 51 INVALID TRANSLATION VALUE - LINE IGNORED ++++++++++++++++++++++++++++++++++++++++++++++++++++++ It is invalid to translate a character to an internal representation in the range #80 to #8F. The line has been ignored. *** ERROR 52 GRAPHICS/ALTERNATE NOT VALID ++++++++++++++++++++++++++++++++++++++++++ It is invalid to code a GRAPHICS or ALTERNATE line if the MEMORY MAPPED option has been specified. *** ERROR 53 UNEXPECTED CHARS AT END OF FILE +++++++++++++++++++++++++++++++++++++++++++++ There are characters after the ENDTAP line in the TAP. *** ERROR 54 PREFIX VALUE WILL BE INTERCEPTED ++++++++++++++++++++++++++++++++++++++++++++++ Either the PREFIX key has been specified as #07, #15, or #17 and the qualifier REQUIRED has not been coded, or the value #16 has been used in the same situation when the option HARDWARE CAPS LOCK has also not been coded, or the value #11 or #13 has been coded in conjunction with the XPROTOCOL option. In all of these cases the prefix key will be intercepted by BOS. *** ERROR 55 POSITIONING-2 INVALID - IGNORED +++++++++++++++++++++++++++++++++++++++++++++ If the ASCII qualifier has been specified in the POSITIONING sequence, then no POSITIONING-2 line is permitted. *** ERROR 56 HIGH GRAPHICS CHARACTER INVALID +++++++++++++++++++++++++++++++++++++++++++++ The value of the high graphic character must be greater than #5F. *** ERROR 57 INVALID KEY VALUE +++++++++++++++++++++++++++++++ The value for a function key may not be greater than #1F or less than or equal to the value of the high graphic character. If no high graphic is specifically established it is taken to be #7E, or 1 character previous to the LEAD-IN if one is in use and its value is less than #7F. *** ERROR 58 SPECIAL OUTPUT OVERFLOW - LINE IGNORED ++++++++++++++++++++++++++++++++++++++++++++++++++++ There are already 16 translations in effect where the output string consists of more than 1 byte, or the ALTERNATE qualifier is in use. This line has therefore been ignored. *** ERROR 59 SPECIAL INPUT OVERFLOW - LINE IGNORED +++++++++++++++++++++++++++++++++++++++++++++++++++ There are already 32 input character replacement lines where the character is translated into more than one character. This line has therefore been ignored. *** ERROR 60 NO KEYS SECTION +++++++++++++++++++++++++++++ A selection algorithm has been specified in the OPTIONS section, but no KEYS section has been defined. This is clearly inappropriate. *** ERROR 61 MEMORY MAPPED OVERRIDES TYPE ++++++++++++++++++++++++++++++++++++++++++ If the screen has a MEMORY MAPPED option it is invalid to explicitly code a TYPE other than 5 in the TYPE line. The value coded will be overridden. *** ERROR 62 BOXES MUST BE DEFINED WITH GRAPHICS +++++++++++++++++++++++++++++++++++++++++++++++++ If a GRAPHICS sequence has been coded in the SEQUENCES section then there must also be a BOXES line coded. If there are no box drawing characters, and the BLOCK characters require a GRAPHICS sequence, than the BLOCK characters may not be used. *** ERROR 63 INVALID FOR MEMORY MAPPED - LINE IGNORED ++++++++++++++++++++++++++++++++++++++++++++++++++++++ The GRAPHICS, ALTERNATE, BORDER, CHARACTER ATTRIBUTE, POSITIONING, POSITIONING-2, CLEAR, CLEAR-TO-END-OF-LINE and CLEAR-TO-END-OF-SCREEN sequence lines are not allowed for a TAP which has the MEMORY MAPPED option coded. The line in question has been ignored. * WARNING 101 'CAPS LOCK' EXPECTED - ASSUMED +++++++++++++++++++++++++++++++++++++++++++++ An option line beginning with the word HARDWARE is assumed to be the HARDWARE CAPS LOCK line. * WARNING 102 'MAPPED' EXPECTED - ASSUMED ++++++++++++++++++++++++++++++++++++++++++ An option line beginning with the word MEMORY is assumed to be the MEMORY MAPPED line. * WARNING 103 'ATTRIBUTE BITS' EXPECTED - ASSUMED ++++++++++++++++++++++++++++++++++++++++++++++++++ An option line beginning with the characters 16 is assumed to be the 16 ATTRIBUTE BITS line. * WARNING 104 NAME TOO LONG - TRUNCATED ++++++++++++++++++++++++++++++++++++++++ The selection algorithm name may be up to 6 characters. Excess characters have been ignored. * WARNING 105 'ASCII' EXPECTED - ASSUMED +++++++++++++++++++++++++++++++++++++++++ An option line beginning 8-BIT EXTENDED is assumed to be the 8-BIT EXTENDED ASCII line. * WARNING 106 'SPACE' NOT EXPECTED - IGNORED +++++++++++++++++++++++++++++++++++++++++++++ There is a CHARACTER ATTRIBUTE sequence specified, and it does not have the optional SPACE parameter. Individual character attribute sequences must conform to the CHARACTER ATTRIBUTE sequence, so the SPACE parameter coded for this sequence has been ignored. * WARNING 107 LINE NOT RECOGNISED - IGNORED +++++++++++++++++++++++++++++++++++++++++++ A line has been found where the keyword is unrecognised or out of context. It will be ignored. * WARNING 108 DESCRIPTION TOO LONG +++++++++++++++++++++++++++++++++++ The description at the end of the TERMINAL line must be at most 30 characters long. If there are more the first 30 characters beginning with a non-blank character are considered to form the description and the extra ones are ignored. There may not be a comment on the TERMINAL line. * WARNING 109 SPURIOUS ITEMS AT END OF LINE - IGNORED ++++++++++++++++++++++++++++++++++++++++++++++++++++++ Extra characters have been found at the end of a line after complete, valid information has been decoded. These extra characters are ignored. * WARNING 110 OPTIONS STATEMENT MISSING - ASSUMED ++++++++++++++++++++++++++++++++++++++++++++++++++ * WARNING 111 SEQUENCES STATEMENT MISSING - ASSUMED ++++++++++++++++++++++++++++++++++++++++++++++++++++ * WARNING 112 KEYS STATEMENT MISSING - ASSUMED +++++++++++++++++++++++++++++++++++++++++++++++ The indicated line has been mistakenly omitted, but other statements show that it should have been coded, so its presence is assumed. * WARNING 113 OPTION REPEATED - IGNORED ++++++++++++++++++++++++++++++++++++++++ * WARNING 114 SEQUENCES REPEATED - IGNORED +++++++++++++++++++++++++++++++++++++++++++ If the same type of option or sequence line occurs more than once, a second or subsequent repetition will be ignored. * WARNING 115 MORE THAN 20 LINES OF COMMENT ++++++++++++++++++++++++++++++++++++++++++++ If more then 20 lines of comments are present the 21st, and any subsequent lines, will be ignored. * WARNING 116 COMMENT TOO WIDE - TRUNCATED +++++++++++++++++++++++++++++++++++++++++++ The number of non-blank characters following the asterisk which introduces a comment must be less than the smaller of 80 and the width of the terminal being supported. * WARNING 117 'ATTRIBUTE' EXPECTED - ASSUMED +++++++++++++++++++++++++++++++++++++++++++++ A sequence line beginning with the word CHARACTER is assumed to be a CHARACTER ATTRIBUTE sequence line. * WARNING 118 KEYS CLASH +++++++++++++++++++++++++ The flagged statement is a function definition line containing a byte value which is the same as the value assigned to the lead-in character or a function previously specified. * WARNING 119 KEYNAME CLASH ++++++++++++++++++++++++++++ The flagged statement is a function definition line whose keyname is the same as one previously specified. * WARNING 120 KEYNAME TOO LONG +++++++++++++++++++++++++++++++ The keyname in the flagged function definition or PREFIX line is greater than 10 characters in length. The 11th and subsequent characters are ignored. Notice that the first non-blank character following the key value, and the next 9 characters, are taken to form the keyname. If a comment is to be placed on such a line it must ensure that there are sufficient characters to complete the keyname, otherwise part of the comment may be processed in the keyname giving rise to this warning. * WARNING 121 KEY VALUE TOO LARGE ++++++++++++++++++++++++++++++++++ A byte value in the range #80 to #FF inclusive has been specified in a function definition line when no lead-in character has been specified and the 8-BIT DEVICE option has not been coded, or a byte value in the range #A0 to #FF has been specified when the 8-BIT EXTENDED ASCII option has been coded. * WARNING 122 EXTRA CHARS AT END OF LINE - IGNORED ++++++++++++++++++++++++++++++++++++++++++++++++++++ The flagged statement contains more than 80 non-blank characters. Those in positions 81 and beyond have been ignored. * WARNING 123 LEAD-IN KEY VALUE TOO LARGE ++++++++++++++++++++++++++++++++++++++++++ It is unusual for the LEAD-IN to be greater than #7F. * WARNING 124 LEAD-IN INVALID - IGNORED ++++++++++++++++++++++++++++++++++++++++ A LEAD-IN line has been encountered after some function definition lines. It has been ignored. * WARNING 125 KEYS INFORMATION REPEATED - IGNORED +++++++++++++++++++++++++++++++++++++++++++++++++++ This is a duplicate of a previously defined function, so it has been ignored. * WARNING 126 'SPACE' EXPECTED - ASSUMED +++++++++++++++++++++++++++++++++++++++++ A CHARACTER ATTRIBUTE sequence has been coded with the SPACE option. Each individual character attribute must also have the SPACE option, and it was not found for this line. It has been assumed. * WARNING 127 COLOUR INDEX FOR INK AND PAPER SAME +++++++++++++++++++++++++++++++++++++++++++++++++++ The index into the colour sequence in both the paper and the ink sequence indicate the same position. * WARNING 128 TRANSLATIONS HEADER MISSING - ASSUMED +++++++++++++++++++++++++++++++++++++++++++++++++++++ The indicated line has been mistakenly omitted, but other statements show it should have been coded. Its presence has been assumed. * WARNING 129 'ALTERNATE' INVALID - IGNORED ++++++++++++++++++++++++++++++++++++++++++++ A translation line may not contain the ALTERNATE directive unless an ALTERNATE sequence has been defined in the SEQUENCES section. * WARNING 130 REVERSE IGNORED IF COLOUR PRESENT ++++++++++++++++++++++++++++++++++++++++++++++++ On a colour screen reverse video is handled by inverting the current colour combination. A REVERSE sequence is consequently unnecessary, and it has been ignored. * WARNING 131 KEYS SECTION INAPPROPRIATE +++++++++++++++++++++++++++++++++++++++++ A KEYS section has been coded without CLEAR and POSITIONING sequences being defined in the SEQUENCES section. * WARNING 132 INPUT CHAR TRANSLATION CLASH - IGNORED +++++++++++++++++++++++++++++++++++++++++++++++++++++ * WARNING 133 OUTPUT CHAR TRANSLATION CLASH - IGNORED ++++++++++++++++++++++++++++++++++++++++++++++++++++++ The input or output character (as indicated in the message) has already been translated in a previous translation line. This is inappropriate, so this line has been ignored. * WARNING 134 SEQUENCE DOES NOT CONFORM ++++++++++++++++++++++++++++++++++++++++ There is a CHARACTER ATTRIBUTE sequence defined, but this attribute sequence does not conform to it. The attribute will be processed (as an independent attribute) but it will not be retained when the screen is refreshed. APPENDIX B - EXAMPLE TAP SOURCES ++++++++++++++++++++++++++++++++ 1. TAP SOURCE FOR THE WYSE 50 ++ ++++++++++++++++++++++++++ 2. TAP SOURCE FOR THE VT100 ++ ++++++++++++++++++++++++ 3. TAP SOURCE FOR THE MICROCOLOUR M2200 ++ ++++++++++++++++++++++++++++++++++++ 4. TAP SOURCE FOR THE COLOUR IBM AT ++ ++++++++++++++++++++++++++++++++ TERMINAL 163 WYSE WY-50+ DIMENSIONS 24 BY 132 TYPE 2 * *This is a standard terminal as described in your BOS Operating Manual. * *Use F13 for Print screen, F14 for Help, and F15 for Function. * OPTIONS BELL HARDWARE CAPS LOCK XPROTOCOL PREFIX 18 F16 SEQUENCES CLEAR 1B2A CLEAR-TO-END-OF-LINE 1B74 CLEAR-TO-END-OF-SCREEN 1B79 POSITIONING 1B6131523143 3 5 ASCII START 1B7A401B607F + 1B7A411B617F + 1B7A421B627F + 1B7A431B637F + 1B7A441B647F + 1B7A451B657F + 1B7A461B667F + 1B7A471B677F + 1B7A481B687F + 1B7A491B697F + 1B7A4A1B6A7F + 1B7A4B1B6B7F + 1B7A4C18507F + 1B7A4D18487F + 1B7A4E18467F + 1B7A4F187F + 1B7A601B607F + 1B7A611B617F + 1B7A621B627F + 1B7A631B637F + 1B7A641B647F + 1B7A651B657F + 1B7A661B667F + 1B7A671B677F + 1B7A681B687F + 1B7A691B697F + 1B7A6A1B6A7F + 1B7A6B1B6B7F + 1B7A6C18507F + 1B7A6D18487F + 1B7A6E18467F + 1B7A6F187F CURSOR 1B6031 1B6030 CHARACTER ATTRIBUTE 1B4730 3 SPACE UNDERLINE 1B4738 1B4730 SPACE DIM 1B4770 1B4730 SPACE REVERSE 1B4734 1B4730 SPACE FLASH 1B4732 1B4730 SPACE HIGHLIGHTING FLASH 132-WIDE 1B603B 1B603A DELAY 15 GRAPHICS 1B4802 1B4803 BOXES 363A313233353430393D38 BLOCKS 370000003F STATUS 45 1B46 0D KEYS LEAD-IN 1B 1 E0 F1 * PROGRAM FUNCTION 1 2 E1 F2 * PROGRAM FUNCTION 2 3 E2 F3 * PROGRAM FUNCTION 3 4 E3 F4 * PROGRAM FUNCTION 4 5 E4 F5 * PROGRAM FUNCTION 5 6 0D Return * RETURN 7 9B Esc Esc * ESCAPE 8 D4 CLR * CLEAR 9 1E Home * HOME 10 CB PAGE * PAGE 11 08 CURSOR LFT * CURSOR LEFT 12 0C CURSOR RGT * CURSOR RIGHT 13 0B CURSOR UP * CURSOR UP 14 0A CURSOR DWN * CURSOR DOWN 15 09 Tab * TAB RIGHT 16 C9 Shift Tab * TAB LEFT 17 7F Del * RUBOUT ENDTAP TERMINAL 19 BASIC DEC VT100 DIMENSIONS 24 BY 132 TYPE 3 * *This is a standard terminal as described in your BOS Operating Manual * *To enter field editing mode you must key . * *Note that the key marked CLR HOME is a purely local key which acts to *clear the screen or home the cursor. You should avoid using it when *working normally with BOS, or the screen display may become confused. * OPTIONS BELL HARDWARE CAPS LOCK XPROTOCOL PREFIX 08 BACKSPACE SELECTION VT100 SEQUENCES CLEAR 1B5B324A DELAY 20 CLEAR-TO-END-OF-LINE 1B5B304B CLEAR-TO-END-OF-SCREEN 1B5B304A POSITIONING 1B5B313B3148 3 5 ASCII FLASH 1B5B356D 1B5B306D UNDERLINE 1B5B346D 1B5B306D REVERSE 1B5B376D 1B5B306D BRIGHT 1B5B316D 1B5B306D HIGHLIGHTING IS BRIGHT START 1B3C * SET ANSI MODE + 1B5B3E396C * SET WIDTH CHANGE CLEAR + 1B5B3F376C * DISABLE AUTOWRAP + 1B5B30761B5B32761B5B3576 * VISIBLE, UNDERLINE, BLINK CURSOR 132-WIDE ON 1B5B3F3368 OFF 1B5B3F336C DELAY 20 GRAPHICS 1B2830 1B2842 * SELECTS US CHARACTER SET BOXES 78716D6C6B6A747775766E KEYS LEAD-IN 1B 1 B1 ESC 1 * PROGRAM FUNCTION 1 2 B2 ESC 2 * PROGRAM FUNCTION 2 3 B3 ESC 3 * PROGRAM FUNCTION 3 4 B4 ESC 4 * PROGRAM FUNCTION 4 5 B5 ESC 5 * PROGRAM FUNCTION 5 6 0D RETURN * RETURN 7 9B ESC ESC * ESCAPE 8 D3 PF4 * CLEAR 9 D0 PF1 * HOME 10 D1 PF2 * PAGE 11 C4 <--- * CURSOR LEFT 12 C3 ---> * CURSOR RIGHT 13 C1 UPARROW * CURSOR UP 14 C2 DOWNARROW * CURSOR DOWN 15 09 TAB * TAB RIGHT 16 D2 PF3 * TAB LEFT 17 7F DELETE * RUBOUT CURSOR-KEYS LEFT 1B5B44 RIGHT 1B5B43 UP 1B5B41 DOWN 1B5B42 ENDTAP TERMINAL 161 MICROCOLOUR M2200 DIMENSIONS 24 BY 80 TYPE 3 * *This is a standard terminal as described in your BOS Operating Manual * *To enter field editing mode you must key . * *Use F6 for Help and F7 for function. * OPTIONS BELL HARDWARE CAPS LOCK XPROTOCOL PREFIX 18 F8 SELECTION VT100 ANSI SEQUENCES CLEAR 1B5B324A DELAY 20 CLEAR-TO-END-OF-LINE 1B5B4B CLEAR-TO-END-OF-SCREEN 1B5B4A POSITIONING 1B5B313B3148 3 5 ASCII FLASH 1B5B356D 1B5B32356D UNDERLINE 1B5B346D 1B5B32346D * REVERSE 1B5B376D 1B5B32376D BRIGHT 1B5B316D 1B5B32326D HIGHLIGHTING IS BRIGHT VIDEOTEXT 1B5B3F373B317A 1B50 DELAY 99 1B294F1B7E START 1B3C * SET ANSI MODE + 1B5B3F376C * DISABLE AUTOWRAP + 1B5B30761B5B32761B5B3576 * VISIBLE, UNDERLINE, BLINK CURSOR + 1B5B3F376C * DISABLE AUTOWRAP + 1B294F1B7E * SELECT G1 AS LINE DRAWING + 1B5B3F313B313B32373B34397A + 1B5B3F313B323B32373B35307A + 1B5B3F313B333B32373B35317A + 1B5B3F313B343B32373B35327A + 1B5B3F313B353B32373B35337A + 1B5B3F313B363B32343B37327A + 1B5B3F313B373B32343B37307A + 1B5B3F313B383B32347A BOXES F8F1EDECEBEAF4F7F5F6EE COLOUR 1B5B33373B34306D INK 4 3034323631353337 PAPER 7 3034323631353337 BORDER 1B5B35306D 4 KEYS LEAD-IN 1B 1 B1 F1 * PROGRAM FUNCTION 1 2 B2 F2 * PROGRAM FUNCTION 2 3 B3 F3 * PROGRAM FUNCTION 3 4 B4 F4 * PROGRAM FUNCTION 4 5 B5 F5 * PROGRAM FUNCTION 5 6 0D RETURN * RETURN 7 9B ESC ESC * ESCAPE 8 D3 PF 4 * CLEAR 9 D0 PF 1 * HOME 10 D1 PF 2 * PAGE 11 C4 <--- * CURSOR LEFT 12 C3 ---> * CURSOR RIGHT 13 C1 UPARROW * CURSOR UP 14 C2 DOWNARROW * CURSOR DOWN 15 09 TAB * TAB RIGHT 16 D2 PF 3 * TAB LEFT 17 7F DELETE * RUBOUT CURSOR-KEYS LEFT 1B5B44 RIGHT 1B5B43 UP 1B5B41 DOWN 1B5B42 ENDTAP TERMINAL 519 IBM PC/XT/AT COLOUR DIMENSIONS 24 BY 80 * *This is a standard terminal as described in your BOS Operating Manual * OPTIONS BELL HARDWARE CAPS LOCK 8-BIT DEVICE MEMORY MAPPED PREFIX C4 F10 SEQUENCES BRIGHT 0008 F700 FLASH 0080 7F00 HIGHLIGHTING BRIGHT CURSOR COLOUR INK 0001020304050607 PAPER 0010203040506070 BOXES B3C4C0DABFD9C3C2B4C1C5 BLOCKS DBDC0000B1 STATUS 40 KEYS 1 BB F1 2 BC F2 3 BD F3 4 BE F4 5 BF F5 6 0D <---' 7 1B ESC 8 C0 F6 9 C7 Home 10 C9 Pg Up 11 CB <-- 12 CD --> 13 C8 UPARROW 14 D0 DOWNARROW 15 09 --->l 16 8F l<--- 17 7F Del TRANSLATIONS F8 C431 F9 C432 FA C433 FB C434 FC C435 FD C436 FE C437 FF C438 80 C439 81 C430 ENDTAP TERMINAL 50 DEC VT100+XTND GRPHCS (24*132) DIMENSIONS 24 BY 132 TYPE 3 * *This is a standard terminal, as described in your BOS Operating Manual. * *Note that the key marked CLR HOME is a purely local key which acts to *clear the screen or home the cursor. You should avoid using it *when working normally with BOS, or the screen display may become *confused. * OPTIONS BELL HARDWARE CAPS LOCK XPROTOCOL SEQUENCES CLEAR 1B5B324A DELAY 20 POSITIONING 1B5B3032343B31333248 HIGHLIGHTING 201B5B316D 1B5B306D20 UNDERLINE 201B5B346D 1B5B306D20 REVERSE 201B5B376D 1B5B306D20 START 1B5B3F3368 * SET TO 132 COLS WIDE + 1B5B3F376C * DISABLE WRAPAROUND + 1B3C * SET ANSII MODE + 1B5B30761B5B32761B5B3576 * SET CURSOR TYPE CURSOR 1B5B3076 1B5B3176 GRAPHICS 1B2830 1B2842 * SELECTS US CHARACTER SET BOXES 78716D6C6B6A747775766E KEYS LEAD-IN 1B 1 B1 ESC 1 * PROGRAM FUNCTION 1 2 B2 ESC 2 * PROGRAM FUNCTION 2 3 B3 ESC 3 * PROGRAM FUNCTION 3 4 B4 ESC 4 * PROGRAM FUNCTION 4 5 B5 ESC 5 * PROGRAM FUNCTION 5 6 0D RETURN * RETURN 7 9B ESC ESC * ESCAPE 8 D3 PF 4 * CLEAR 9 D0 PF 1 * HOME 10 D1 PF 2 * PAGE 11 C4 <--- * CURSOR LEFT 12 C3 ---> * CURSOR RIGHT 13 C1 UPARROW * CURSOR UP 14 C2 DOWNARROW * CURSOR DOWN 15 09 TAB * TAB RIGHT 16 14 * TAB LEFT 17 7F DELETE * RUBOUT CODE 77 X PIC 9(4) COMP * X COORDINATE SUPPLIED BY BOS 77 Y PIC 9(4) COMP * Y COORDINATE SUPPLIED BY BOS 01 XY * POSITIONING SEQUENCE 02 FILLER PIC X(2) * TO BE CALCULATED VALUE #1B5B * CONSTANT PREFIX 02 ASCIIY PIC X(3) * ACSII Y 02 FILLER PIC X * ; VALUE #3B 02 ASCIIX PIC X(3) * ASCII X 02 FILLER PIC X * H VALUE #48 77 POS PIC 9(4) 01 FILLER REDEFINES POS 03 FILLER PIC X 03 POSN PIC X(3) * PROCEDURE DIVISION SECTION POSIT ADD 1000 TO X GIVING POS MOVE POSN TO ASCIIX ADD 1000 TO Y GIVING POS MOVE POSN TO ASCIIY EXIT * SECTION SELECT IF $$BYTE < #3F EXIT SVC 17 EXIT ENDPROG TERMINAL 158 WYSE WY-50 IN 132-COL MODE DIMENSIONS 24 BY 132 TYPE 3 * *This is a standard terminal as described in your BOS Operating Manual. * * EXTENDED CONTROL FUNCTIONS ARE PROVIDED USING THE KEYS F1 - F5; NOTE * HOWEVER THAT IN ORDER TO PROVIDE MAXIMUM UTILITY WITH BOS/WRITER, IT * HAS BEEN NECESSARY TO CHANGE THE DEFAULT SEQUENCES ASSOCIATED WITH * THE FUNCTION KEYS, AND THE FUNCTION KEYS ON THIS WY-50 SHOULD BE * PROGRAMMED ACCORDING TO THE INSTRUCTIONS OF THE WY-50 REFERENCE * MANUAL SO THAT THEY GENERATE THE FOLLOWING TWO-CHARACTER SEQUENCES: * F1 ESC ` (#1B60) * F2 ESC a (#1B61) * F3 ESC b (#1B62) * F4 ESC c (#1B63) * F5 ESC d (#1B64) * IF BOS/WRITER IS TO BE USED WITH THIS TERMINAL, YOU SHOULD ALSO * PROGRAM KEYS F6 - F16 TO GENERATE ESC e THRU ESC o (#1B65 THRU #1B6F). OPTIONS BELL HARDWARE CAPS LOCK XPROTOCOL SEQUENCES CLEAR 1B2A HIGHLIGHTING 1B4734 1B4730 POSITIONING 1B6132345231333243 CURSOR 1B6031 1B6030 START 1B2A1B603B BOXES 161A111213151410191D18 BLOCKS 17 KEYS LEAD-IN 1B 1 E0 F1 * PROGRAM FUNCTION 1 2 E1 F2 * PROGRAM FUNCTION 2 3 E2 F3 * PROGRAM FUNCTION 3 4 E3 F4 * PROGRAM FUNCTION 4 5 E4 F5 * PROGRAM FUNCTION 5 6 0D Return * RETURN 7 9B Esc Esc * ESCAPE 8 D4 CLR * CLEAR 9 1E Home * HOME 10 CB PAGE * PAGE 11 08 CURSOR LFT * CURSOR LEFT 12 0C CURSOR RGT * CURSOR RIGHT 13 0B CURSOR UP * CURSOR UP 14 0A CURSOR DWN * CURSOR DOWN 15 09 Tab * TAB RIGHT 16 C9 Shift Tab * TAB LEFT 17 7F Del * RUBOUT CODE 77 X PIC 9(4) COMP 77 Y PIC 9(4) COMP 77 XY PIC X(9) VALUE #1B6100005200000043 01 FILLER REDEFINES XY 02 FILLER PIC X(2) * ESC "a" 02 ASCIIY PIC 9(2) * ROW NUMBER IN ASCII 02 FILLER PIC X * "R" 02 ASCIIX PIC 9(3) * COLUMN NUMBER IN ASCII 02 FILLER PIC X * "C" * PROCEDURE DIVISION * SECTION POSIT MOVE X TO ASCIIX MOVE Y TO ASCIIY SELECT. EXIT * ENDPROG TERMINAL 161 MICROCOLOUR M2200 DIMENSIONS 24 BY 80 TYPE 3 * *This is a standard terminal as described in your BOS Operating Manual * OPTIONS BELL HARDWARE CAPS LOCK XPROTOCOL SEQUENCES CLEAR 1B5B324A0000 DELAY 20 POSITIONING 1B5B3032343B30383048 HIGHLIGHTING 201B5B316D 1B5B306D20 UNDERLINE 201B5B346D 1B5B306D20 REVERSE 201B5B376D 1B5B306D20 START 1B5B3F336C1B5B3F376C + 1B294F1B7E1B5B35346D BOXES F8F1EDECEBEAF4F7F5F6EE COLOUR 1B5B33373B34306D INK 4 3034323631353337 PAPER 7 3034323631353337 BORDER 1B5B35306D 4 KEYS LEAD-IN 1B 1 E1 F1 * PROGRAM FUNCTION 1 2 E2 F2 * PROGRAM FUNCTION 2 3 E3 F3 * PROGRAM FUNCTION 3 4 E4 F4 * PROGRAM FUNCTION 4 5 E5 F5 * PROGRAM FUNCTION 5 6 0D RETURN * RETURN 7 9B ESC ESC * ESCAPE 8 E6 F6 * CLEAR 9 E8 F8 * HOME 10 E7 F7 * PAGE 11 C4 <--- * CURSOR LEFT 12 C3 ---> * CURSOR RIGHT 13 C1 UPARROW * CURSOR UP 14 C2 DOWNARROW * CURSOR DOWN 15 09 TAB * TAB RIGHT 16 D0 PF1 * TAB LEFT 17 7F DELETE * RUBOUT CODE 77 X PIC 9(4) COMP * X COORDINATE SUPPLIED 77 Y PIC 9(4) COMP * Y COORDINATE SUPPLIED 01 XY * POSITIONING SEQUENCE 02 FILLER PIC X(2) * TO BE CALCULATED VALUE #1B5B * CONSTANT PREFIX 02 ASCIIY PIC X(3) * ACSII Y 02 FILLER PIC X * ; VALUE #3B 02 ASCIIX PIC X(3) * ASCII X 02 FILLER PIC X * H VALUE #48 77 POS PIC 9(4) 01 FILLER REDEFINES POS 03 FILLER PIC X 03 POSN PIC X(3) * * * * * PROCEDURE DIVISION SECTION POSIT ADD 1000 TO X GIVING POS MOVE POSN TO ASCIIX ADD 1000 TO Y GIVING POS MOVE POSN TO ASCIIY EXIT * * * * * SECTION SELECT IF $$BYTE = #1B EXIT SVC 17 EXIT ENDPROG TERMINAL 519 IBM PC, XT, AT with colour DIMENSIONS 24 BY 80 *THIS IS A STANDARD TERMINAL AS DESCRIBED IN YOUR BOS OPERATING MANUAL. * *NOTE THAT THE ALTERNATE FUNCTIONS OF THE NUMERIC KEYPAD, SUCH AS *HOME, ARE ONLY AVAILABLE WHEN Num Lock IS OFF. ON BOOTSTRAP Num *Lock IS OFF. * *TO CHANGE PARTITIONS (FOR CBOS/5) USE Alt IN CONJUNCTION WITH THE *PARTITION NUMBER (eg FOR PARTITION 2). *FOR RUBOUT USE THE <---- KEY ON THE TOP ROW. OPTIONS BELL HARDWARE CAPS LOCK 8-BIT DEVICE SEQUENCES CLEAR 1B0000 POSITIONING 1B00480019 HIGHLIGHTING 201B00FF 1B00FE20 REVERSE 201B00F9 1B00F820 UNDERLINE 201B00FB 1B00FA20 CURSOR 1B00FD 1B00FC BOXES B3C4C0DABFD9C3C2B4C1C5 BLOCKS DBDC0000B1 COLOUR 1B203730 INK 3 3031323334353637 PAPER 4 3031323334353637 KEYS 1 BB F1 2 BC F2 3 BD F3 4 BE F4 5 BF F5 6 0D <---' 7 1B ESC 8 C0 F6 9 C7 Home 10 C9 Pg Up 11 CB <-- 12 CD --> 13 C8 UPARROW 14 D0 DOWNARROW 15 09 --->l 16 8F l<--- 17 D3 Del CODE 01 INPUT 02 X PIC 9(4) COMP 02 Y PIC 9(4) COMP 01 XY 02 FILLER PIC X VALUE #1B 02 OUTPUT PIC X(4) PROCEDURE DIVISION SECTION POSIT MOVE INPUT TO OUTPUT SELECT. EXIT ENDPROG APPENDIX C - WRITING A TAP FOR AN INTEGRAL SCREEN +++++++++++++++++++++++++++++++++++++++++++++++++ This appendix describes the extra facilities available when writing a TAP for an integral screen. Normally these are not required, as BOS Software Ltd supplies suitable TAPs for integral consoles, but you may need to reference this section if you wish to amend an existing TAP (for example to account for a new keyboard), or if you are doing your own porting work for a computer which has a built-in device attached. There are two extra options available for use with built-in screens. The first of these, MEMORY MAPPED, is almost always required, and it tells BOS that the screen is supported via a memory map, rather than as a serial device. If your built-in screen is supported as a pseudo-serial device then you should ignore this section and write a TAP for it as if it were a serial console, as described in the body of the manual. The second option, 16 ATTRIBUTE BITS, is used if the hardware requires 2 bytes of information to hold the character attributes (rather than one, as is typical). This is only the case if the screen has colour as well as character attributes such as underlining and bright. The use of this option also requires that the configuration file specify 2 bytes of attribute information per character on the screen, and if this is not the case BOS will refuse to load the TAP. For a MEMORY MAPPED screen, the format of the SEQUENCES section is also altered. There are no CLEAR or POSITIONING statements required, nor CURSOR or STATUS statements. There should be no need for GRAPHICS or START statements, and it is unlikely that the 132-WIDE statement will be needed. For a colour screen, the COLOUR statement takes no further parameters. The INK and PAPER statements each consist of a table of translation bytes, with no index parameter. The BORDER statement should be omitted. This leaves the character attributes, which are handled in a totally different way. The ON and OFF sequences are in fact each a pair of bytes, the first being an AND mask and the second an OR mask, to be used for setting a bit (or more if absolutely required) in the internal representation of the attribute information as held by the console executive. The bit(s) set will be those used by the hardware to represent the appropriate attributes on the screen. The KEYS section of the TAP is the same as for a serially connected screen. Sometimes it is useful to be able to cause some keystrokes to produce multiple keys (eg a HELP key to produce SYSREQ H, keying ALT in conjunction with the number keys to generate SYSREQ n, / etc). If this is the case then translations are the simplest way of producing these effects. Readers' comments +++++++++++++++++ Every care has been taken to make this BOS software manual as clear, accurate and complete as possible. However, if you feel you can help us improve it please make your suggestions on the form provided below and return it to your dealer or to the Technical Editor, BOS Software Limited, 87-89 Saffron Hill, London EC1N 8QU. Name: Job title: Company: Address: Computer used: BOS software manual: BOS Cobol Screen Support Manual V6.1/0588 ///////////////////////////////////////// Have you noticed any errors? (Please specify page/section number.) ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- Have you any general comments (eg topics requiring fuller explanation or examples, ease of use)? ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- ----------------------------------------------------------------- -----------------------------------------------------------------