QCTerm is not constructed as a precise mimic of an HP700/92 terminal, although it identifies itself as such. Rather, we wanted to make QCTerm simpler, more browser-like, and more intuitive, while retaining the full functionality that would be expected of an HP terminal. Our hope is that we can make QCTerm sufficiently self-explanatory so that not all that much of a manual will be necessary. Whatever documentation proves necessary will be put here on the web. Table of ContentsSome Features (& Tricks) of QCTermThe Modifier KeysConnectivity Some Features (& Tricks) of QCTerm The Modifier Keys For those of you who have extensively used WRQ's Reflection terminal emulator in the past, some adjustments will be necessary. Very few of the Reflection key sequences are used in QCTerm. Instead, we've attempted to make QCTerm's sequences be in agreement with the standard sequences that have recently come to PC-based software. In QCTerm, the ALT key is used only for the pull-down menu at the top of the screen. It is not used to generate any other form of QCTerm command sequence – with the exception of modifying the arrow keys and the break key, as noted below. Rather, the CTRL key is used as the primary modifier for all other purposes than the pull-down menu. You'll see these differences as you read through the text below.The Size of the Display Screen The displayable screen size for QCTerm may be set in the "Terminal Preferences..." option of the "Terminal" pull-down menu to be either:The 132-column Display is Undistorted Rather than having the fonts become quite tall and thin when a 132-column display is selected, we elected to have QCTerm compress its screen height and drop to a smaller font size instead. Doing this allows the screen to maintain its original proportions. The font-distorting "feature" of the 132-column mode on a regular HP terminal is a necessary consequence of the constraints that govern the terminal's design. However, on a PC, those constraints disappear and we elected not to mimic them.The ← → ↑ ↓ Arrow Keys The arrow keys work as you would expect while you remain within the boundaries of the display screen. However, unlike a terminal (or Reflection), when you reach the top or bottom of the display screen, QCTerm's cursor does not flip to the opposite side of the screen and continue its motion there. Rather, the terminal begins to automatically scroll, as if it were a web browser, three rows (or three character columns) at a time, depending on which way you're moving. Each of the arrow keys can also be pressed with a modifer (SHIFT, CTRL, or ALT) key, somewhat akin to Reflection's behavior. If the arrow key is pressed in conjunction with one of the modifier keys, the screen immediately begins to scroll, leaving the cursor in its screen-relative position, without having to cause the cursor reach one of the screen edges. Moreover, the three different modifier keys cause the scroll to occur at differing rates:The Page Up/Page Down KeysALT causes the screen to scroll 1 column (or row) at a time. CTRL causes the screen to scroll 3 columns (or rows) at a time. SHIFT causes the screen to scroll 10 columns (or rows) at a time.The modifier keys were designed in such a manner so that you're left with the feeling of increasingly putting "the pedal to the metal," accelerating the rate at which you scroll, but leaving you with an easy mechanism to choose the rate at which you scroll. If you wish to use these high-speed scroll features to their fullest, you may wish to go to your Windows Control Panel, select "Keyboard," and set the "Repeat delay" to its shortest possible setting and the "Repeat rate" to its fastest possible setting. The Page Up/Down keys cause the display to scroll up or down, 24 rows at a time. Although no modifier key is necessary to engage their behavior, pressing the CTRL key does no harm. The CTRL key modifier is supported only for psychological compatibility with the Reflection terminal emulator.The Home/End Keys The Home/End keys cause the display to go to either its first screen row or its last screen row. As with the Page Up/Page Down keys, although no modifier key is necessary, simultaneously pressing the CTRL key will not modify their behavior. The CTRL key modifier is supported for psychological compatibility with Reflection. Similar to Reflection, SHIFT+Home causes the cursor to return to the beginning of the current row while SHIFT+End places the cursor at the end of text on the current row.Clear Screen Function Although there is no Clear Screen key on a PC's keyboard, pressing the CTRL+Home key combination twice rapidly (within a quarter second) will cause the terminal to perform a screen home and clear. Further, the key sequence CNTL+J will clear the screen from the cursor's current position to the end of display. Similarly, CNTL+K will clear the line from the cursor's current position to the end of the line. These two sequences were chosen because they are similar to HP's standard escape sequences for "clear display," and "clear line": Esc J and Esc K, but in contrast to the escape sequences, Esc J and Esc K, the CNTL+J, CNTL+K keystrokes do not transmit anything to the host computer. They're acted upon wholly locally in QCTerm directly.The Insert/Delete Keys The Insert key puts the terminal into character insert mode. This mode is indicated by both an annuciator message at the bottom of QCTerm's window and by a change in the appearance of the cursor. If the terminal is in its normal mode, with an underline cursor, the insert cursor will be indicated by a block cursor. If the terminal cursor is reversed, the Insert Mode cursor will similarly be reversed. The terminal will remain in Insert Mode until (i) the Insert key is pressed again, (ii) an appropriate escape sequence is received, or (iii) the terminal is reset. The Delete key takes effect immediately, deleting the character at the cursor's current location.Inserting and Deleting Lines The Insert and Delete keys' functions are modified with the CTRL key. If pressed simultaneously with the Insert or Delete keys, the keys become Row Insert and Row Delete, respectively.The Pause/Break Key If the Pause-Break key is pressed, an Xoff (CTRL-S) character is sent to the terminal, stopping the flow of data from the host computer to QCTerm. If the key is pressed again, an Xon (CTRL-Q) character is sent, resuming the data flow. The Pause button on the lower edge of QCTerm's window acts both as an annuciator, declaring the current state of the pause, and as somewhat of a twin to the Pause-Break key. When the Pause-Break key is pressed with SHIFT modifier key, a BREAK signal is transmitted to the host computer. A BREAK may also be generated by pressing ALT+B.The Scroll Lock KeyALT+B = Break The Scroll Lock key is intercepted by Windows 95/NT at a processing level lower than QCTerm. It preforms a process something akin to Memory Lock in the terminal emulator, but not in a manner that is particularly useful. In general, it is recommended that you not use this key.The Print Scrn/SysRq Key The Print Scrn key is a second key that is intercepted in Windows 95/NT at a processing level lower than QCTerm, but in this case, the key's function can be very valuable for documentation purposes. Whenever the key is pressed, a bit-map snapshot of the entire current Windows display is put into the clipboard. If Alt+Print Scrn is pressed, only the active window is placed into the clipboard. If QCTerm is the active window, a bit-map of the current screen, including high-lighted text and current function key settings, is made immediately available for pasting into other document-processing programs.The Tab Key When pressed as an unmodified key, the Tab key generates a horizontal tab character. When modified with the SHIFT modifier key, the Tab key generates a horizontal backtab character.The Function Keys, F1 thru F12 The function keys F1 through F8 act in the normal manner appropriate to an HP Terminal. The remaining four function keys, F9 through F12, are assigned specific, non-modifiable functions. They are:The CTRL+Function Keys, CTRL+F1 thru CTRL+F12If your screen display is wide enough, you will be able to see all twelve function keys. But even if the screen size is too small and these four extra function keys are not visible, it still will not be necessary to memorize their functions. They are recapitulated in QCTerm's "Terminal" pull-down menu. The function keys F1 through F12, when pressed with the CTRL modifier key, engage specific terminal display functions, allowing you to change the appearance of your screen "on the fly." The first four function keys control screen size. The next four control the font. The final four control the screen's color. You do not need to memorize these functions. They are repeated in QCTerm's "Screen" pull-down menu. They are: CTRL+The CTRL+Alpha Keys Certain CTRL+Alpha key combinations have become (or are on their way to becoming) standard on a PC. QCTerm enthusiastically supports the more standard of these combinations, simply because they greatly facilitate the ease at which one can move from program to program. These same key combinations are also supported by a growing number of software titles, including Netscape's Navigator, Microsoft's Excel, Word, Internet Explorer and Visual Basic, and America Online, among others. These particular key sequences were originally defined in the early 1980's by Apple for the Macintosh. On that machine, Apple used a modifier key, called COMMAND, which unfortunately doesn't exist on a PC's keyboard. To compensate, people have used the CTRL key as the substitute modifier key when they've migrated these key combinations over onto the PC. Among the more common of these sequences are:The CTRL+Alpha Keys (Transparent Mode)CTRL+P = Print Current ScreenSome of these key sequences, however, clearly interfere with some of the same sequences that have been traditionally used on terminals, most notably CTRL+S, CTRL+Q, CTRL+C and CTRL+A. If you wish to use QCTerm as a traditional terminal emulator, a mode switch has been put into QCTerm that allows CTRL+Alpha characters to be passed on to the host and not processed locally. Two sequences have been defined to allow you to transmit any control key sequence to the HP3000. Once typed, QCTerm switches to Transparent Control Code mode. This mode is indicated to the user by having the text written in to communications control panel at the bottom of QCTerm's screen become bright blue. To switch back to the newer user mode, use one of the two sequences shown below. Once done, the communications control panel returns to black lettering.The Screen Buttons: Size, ColorCTRL+T = Switch to Transparent Control Code modeSome HP3000 sequences are common to both modes, however. They are: Both attributes of the screen display (font size and color) can be set independently, "on the fly," while QCTerm is receiving data, either by pressing the appropriate CNTL+function keys or the on-screen buttons at the bottom of QCTerm's display. The two on-screen buttons, Size and Color, cause their respective attributes to advance by one, instantaneously changing the screen size or color. Similarly, both buttons can be caused to decrement their respective indexes if the buttons are pressed simultaneously while holding down any of the modifier keys (SHIFT, CTRL, or ALT). Connectivity Current Options Two connection methods are available in the current version of QCTerm. They are: Editing Functions Full-Screen Editing The intention in QCTerm is provide a very powerful, but very simple full-screen (15,000 line) text editor. Every HP terminal has some very basic but very powerful full-screen editing functions built into the terminal functions, and when used with appropriate software on the host, the "LINE MODIFY" and "MODIFY ALL" keys provide an exceptionally powerful full-screen editor. To add to these intrinsic capabilities, the standard text editing functions of find, replace, cut, copy and paste have also been added to QCTerm.Finding and Replacing Text To find a text string in display memory, beginning at your current cursor location, type either:Selecting, Cutting, Copying and Pasting TextCTRL+F or ALT+E F (find)to bring up a find & replace string definition window. You may request that the search be case sensitive by clicking the appropriate checkbox. The default is non-case sensitive. Press OK once the text has been defined to engage the find operation. To find the next instance of the same string further down in display memory, type either:CTRL+D or ALT+E D (do it again)Found text will be marked as "selected", using an inverse box. Text that is selected may be either deleted by pressing the BACKSPACE key, or deleted character-by-character using the DELETE key, or it may be replaced with whatever phrase you earlier defined in the find windown by pressing either:CTRL+R or ALT+E R (replace)The delete and replace operations do not transmit either the individual characters or the line to the host. The operation is screen-only. If you want to transmit the modified line to the host, press either the ENTER (HP's ENTER function) key or the CARRIAGE RETURN, if the terminal is in "LINE MODIFY" or "MODIFY ALL" mode. You may either select text through the use of the FIND mechanism described above, or you may manually select text on QCTerm's display memory using the mouse, using a standard left-click dragging operation. To place the selected text into the PC's clipboard, you have several options. You may type either:CTRL+X or ALT+E T (cut) CTRL+C or ALT+E C (copy) or you may simply right-click your mouse. The right-click operation will place the selected text into the clipboard, as a copy process. The successful completion of that operation will be indicated with the select being cleared. You may also select blocks of text, not full lines, beginning a chosen row and column start point and ending at a similarly chosen row and column ending point. To do this, press and hold down the CTRL key before you left-click your mouse. Drag the mouse to the chosen endpoint, release the left button, and right-click your mouse to absorb the selected text into the clipboard.The paste operation is invoked by first placing your cursor where you want to paste the clipboard text and then typing either:CTRL+V or ALT+E P (paste) or by right-clicking your mouse (when no text is selected).The paste operation does not clear the clipboard, thus you may paste the clipboard text as often as you wish. Again, the paste operation is screen-only, similar to the replace operation described above. Using & Programming the Function Keys Programming the Function Keys Eight programmable functions keys, F1 through F8 exist in QCTerm. Two methods exist to specify their content. The first is through the transmission of escape sequences from the host (please see the list of escape sequences). The second is by manually specifying the content of each function key through a screen that can be reached via the "Define Function Keys..." entry in the "Terminal" pulldown menu.Function Key Attributes A user-defined function key has one of three attributes: Normal ModeSelecting the User-Defined Function/System Key DisplaysThe user-specified key string is treated exactly as if it were typed from the keyboard. Of importance, a carriage return is not automatically transmitted at the end of the string. If you wish to have a carriage return be a part of the key string, put it into the string yourself. You may do that with the "Type in control characters" box checked. The same is true for a line feed character. If QCTerm is in local mode, the string displays on the screen and any embedded escape sequences are executed locally. In remote mode with local echo off, the string is transmitted to the host computer. It executes and displays in QCTerm only if the host system echoes the string back to QCTerm. "Normal mode" is the function key mode you'll want to use with most computer operating systems. "Transmit mode" was designed to work specifically with HP3000 computers running the MPE operating system. MPE provides an unsuppressable host prompt character, a DC1, at the beginning of each terminal read, essentially saying that "the host is ready to receive input." This character is used as a fundamental part of the handshaking protocol used in "Transmit mode" function keys, as explained below. Because this prompt is absent in UNIX, Linux, AS/400 and other operating systems, you will find that you will not generally want to employ "Transmit mode" function keys except under highly specific conditions, as outlined below. In "Normal mode", each character in the function key string is transmitted individually, character-by-character. When connected to a host through a serial connection (e.g., RS-232), the effect is invisible. All characters are transmitted individually in this connection mode. However, when connected via telnet, the process is less efficient than under "Transmit mode", where the function key string is transmitted as a single packet. Unfortunately, to maintain functional compatibility with legacy applications written to the "Normal mode" of operation, the single-character nature of the transmission of the function key string cannot now be changed.Transmit ModeUnder "Transmit mode", QCTerm transmits the user-specified key string to the host after completing a block transfer handshake (see below), automatically appending a carriage return (and a LF, if the terminal is in AutoLF mode) to the string. If a "Transmit mode" function key is pressed twice, before the necessary handshake associated with the first pressed key has not completed, the keyboard will momentarily lock as indicated by a small red square in the bottom-left corner of QCTerm's display screen. The lock will clear as soon as the data transfer and handshake of the first key have been completed. In local mode, pressing a user-defined function key with the "Transmit" attribute has no effect.Local ModeThe user-specified function key string is executed locally and not transmitted to the host. Pressing QCTerm's F10 function key will always switch the displayed function keys to the User-defined set. If the function keys are not currently visible, pressing the F10 key will make them visible. Similarly, pressing the F11 key will present the System function keys, making them visible if need be.Block Mode vs. Character Mode QCTerm is always in either block mode or character mode. In character mode, characters are transmitted to the host one character at a time as they are typed. When the host receives each character, it echoes the character back to you and you see the character on the screen, although this process is slightly modified when typing in "advanced telnet" mode (see: connectivity options). ASCII control codes, such as CR and LF, and escape sequences, are also transmitted as they are typed. When in block mode, QCTerm transmits a block of data at a time, thus the name. The size of each block can vary from just a few characters to several screen pages of data. ASCII control characters such as CR and LF work locally but are usually not transmitted with the block of data. Block mode is engaged in one of three ways:Block Transfer Handshaking In general, the Inhibit Handshake (also called the "G strap", a name inherited from the days of the first terminals where the setting was made by physically moving a strap; now set by the escape sequences Esc &s0G and Esc &s1G) and the Inhibit DC2 (the "H strap"; now set by the escape sequences Esc &s0G and Esc &s1H) determine the type of handshaking performed when in block mode. There are three types of handshaking: NonePerforming Block TransfersWith no handshaking specified, QCTerm simply transmits the block of data.DC1QCTerm transmits the block of data after receiving the DC1 character from the host.DC1/DC2/DC1Following the reception of a DC1 character from the host to trigger the transfer, QCTerm transmits a DC2 character back to the host to indicate that it's ready to transfer data. The host then sends a second DC1 character to signal that it's ready to receive the block, and the block is transferred. There are four different methods to perform a block transfer: Mode 1: Enter KeyAny of the ENTER keys (F12 or any of the other user-definable keys) is pressed to begin a block transfer. The table that follows summarizes the transfer handshaking procedures based on the mode and G & H strap settings:Mode 2: Esc d or status data request Programming the Redefinable Keys Programming the Cursor Keys Beginning with QCTerm Version 0.95, the ten keys on a PC keyboard that are labeled with cursor positioning labels may also be user defined. The keys are the INSERT, DELETE, HOME, END, PAGE UP, PAGE DOWN, UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW. The sequences to define these keys are:Esc %f<x>k<y>s<l>L<text>where<x>and Extended Characters Using Extended Characters Several mechanisms may be used in QCTerm to engage the extended character set. They are: Autolaunch Scripting Basic Design The intention underlying the design of the scripting structure in QCTerm was to constrain the number of commands to an absolute minimum and yet allow you the full flexibility to do anything. It was also the intention to eliminate any form of host dependency so that QCTerm will work with any host operating system (MPE, Linux, UNIX, MVS, OS/400, etc.). QCTerm autoregisters itself into the Windows registry each time that it is run so that the file extension ".qct" is linked to QCTerm. The result is that if a file that has been placed on the user's desktop that has the qct extension is double-clicked, QCTerm will autoload and then commence executing the instructions contained within the file. Quite similarly, if the same script file were placed on a web page as a hyperlink, as in this example:Handshaking The core of the scripting mechanism in QCTerm revolves around the very simple idea of the WAIT/XMIT command pairs. The script waits for a particular string to appear in the terminal's receive buffer and then, when detected, transmits a response. The script then waits for another such sequence of characters, and then transmits a second response, and so on, repeating this sequence as often as necessary. If the host runs an operating system such as MPE, the author of the script knows that the operating system will always prompt the terminal with a "go ahead" signal. In MPE, that host prompt is the DC1 character (\017 in decimal notation). However, many operating systems do not have or use specific host prompt characters. Rather, you must look for a specific string of characters in the received text that certify the end of a transmission. Such a string might be "/$". A problem occurs if that specific string occurs prematurely in another context before the sequence that you're really seeking. The cure is straightforward. Simply put two WAIT statements in a row, as in this example:Script CommandsWAIT copyrightThis particular choice of words was perhaps chosen by observing that the word "copyright" occurs in your host's text after the first appearance of "/$" and somewhat just prior to the real instance of "/$", the one that indicates the host is truly ready to receive data. In this manner, you are assured that you are responding only at the appropriate time. The primary script commands are:Notes on Launching from a Browser There are two ways that a browser launches an auxiliary, helper application. The older method, and the only process that Netscape's Navigator currently supports, is through the use of a MIME type. The MIME type for QCTerm is:application/x-qctermIn order for this mechanism to work, the MIME type must be registered both in the PC and in the remote server. QCTerm autoregisters itself in Windows' Registry, but the MIME type must also be (for the moment) manually placed in the server's list of supported MIME type associations and equated to ".qct". Microsoft's Internet Explorer 5.0 and above support not only the MIME-type registration mechanism, but also the far simpler file type extension. When IE5 encounters a file extension in a hyperlink, it looks in its local registry to determine the nature of the application associated with the extension. If that association is registered, and the application exists on the PC, the application is autolaunched without reference to the MIME type. This is a far simpler mechanism than the original MIME-type protocol that Netscape has chosen to continue to support. Nonetheless, if you are going to create an intranet or internet autolaunch application for QCTerm where Netscape users are likely, you must manually register QCTerm's MIME-type association in your server(s). |