COMPANY : Information Appliance Inc. (IAI) AREA : Specification TITLE : Canon Cat Specification DATE : 08 March 1987 AUTHOR : ? SYSTEM : Cat @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ JEF RASKIN COPYRIGHT NOTICE -- APRIL 1997 @ This work includes material copyrighted by, trademarks of, and patents held @ by Jef Raskin (jefraskin@aol.com / 8 Gypsy Hill / Pacifica CA 94044 USA). @ Right to copy, use, modify, and distribute for personal, research, and @ educational purposes is granted to anyone who affixes this notice to all @ copies. Commercial rights reserved. If you make money or plan to make money @ by using any of this or work derived from it, contact me to arrange for @ commercial licensing. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ JEF RASKIN COPYRIGHT NOTICE -- APRIL 1997 Information Appliance, Inc. Trade Secret CONFIDENTIAL TO CANON 13 October 1986 1:15PM edited 11/7/86 edited 11/11/86 edited 11/13/86 edited 11/14/86 edited 11/17/86 edited 11/19/86 edited 11/24/86 edited 11/25/86 edited 12/1/86 edited 12/2/86 edited 12/3/86 edited 12/8/86 edited 12/21/86 edited 12/22/86 edited 12/23/86 edited 1/14/87 edited 3/26/87 edited 3/27/87 edited 3/30/87 edited 4/2/87 edited 4/22/87 edited 4/20/87 edited 5/21/87 edited 6/30/87 edited 8/3/87 DISCUSSION DRAFT COMMAND SPECIFICATION DOCUMENT USA VERSION Table of Contents I. Cursor Movement . . . . . . . . . . . . . . . 1 II. Typing . . . . . . . . . . . . . . . . . . . 6 III. Editing . . . . . . . . . . . . . . . . . . . 11 IV. Text Appearance . . . . . . . . . . . . . . . 14 V. Paragraph Appearance . . . . . . . . . . . . 16 VI. Printing . . . . . . . . . . . . . . . . . . 24 VII. Telecommunications . . . . . . . . . . . . . 26 VIII. Disk Operations . . . . . . . . . . . . . . . 29 IX. Calculations . . . . . . . . . . . . . . . . 35 X. Future (Third-Party of Add-on) Software . . . 42 XI. Sorting . . . . . . . . . . . . . . . . . . . 43 XII. Macros . . . . . . . . . . . . . . . . . . . 46 XIII. UNDO, Stopping, Timeout, and EXPLAIN . . . . 48 XIV. Keyboard . . . . . . . . . . . . . . . . . . 50 XV. Spelling Checker . . . . . . . . . . . . . . 51 XVI. SETUP . . . . . . . . . . . . . . . . . . . . 53 XVII. Document Lock . . . . . . . . . . . . . . . . 58 XVIII. Setting Local and Global leap . . . . . . . . 59 XIX. TITLES Command . . . . . . . . . . . . . . . 60 ___________________________________________________________________________________ I. Cursor Movement ___________________________________________________________________________________ 0. Time Goals Though the times listed in this document are goals we will attempt to meet, they are not formally part of this specification. 1. Text Conventions In this document, "forward" is defined as the direction toward characters that come later in the text taken in normal reading order. "Backward" is the opposite direction. The text is displayed on the system CRT display. This display permits the display of 80 text characters per line. The text columns are numbered 1 to 80 with 1 at the left side of the screen. The text always contains at least 2 document characters. The first one (the one most backward) is called the initial document character. The second one (the one most forward) is called the final document character. These two characters define the beginning and end of text. Text may be entered between these two characters, but never before the initial document character or after the final document character. The initial and final document characters may not be erased, even if the entire text is erased. Typing and other system actions take place at a location indicated on the screen by a cursor. The cursor has two parts, a blinking part called the cursor, and a reverse video part called the highlight. The highlight may contain one or more characters. The cursor has several states: 1 Narrow cursor - The highlight is a single character and the highlight and the cursor are on the same character. 2 Wide cursor - The highlight is a single character and the cursor is one character position forward from the cursor. 3 Extended cursor - The highlight contains more than one character and ends on the character before the cursor. In addition to the cursor shape, the cursor blink rate also indicates the state of the text. The cursor blink rate has two states: 1 Clean text - The cursor blinks at a rate of about 3 Hz when the text is "clean". The text is clean when all changes made to the text are recorded on a disk (see DISK command in section VIII). 2 Dirty text - The cursor blinks at a rate of about 1 Hz when the text is "dirty". The text is dirty when changes have been made to the text and the changes have not been recorded on a disk. When the text is clean, it is made dirty by any operation that changes the text, such as typing. Moving the cursor, or executing the PRINT or EXPLAIN commands do not make the text dirty. 2. General Description of LEAP Leaping, the Cat's method of cursor movement, may proceed in two directions, forward and backward. Hence there are two LEAP keys: LEAP FORWARD and LEAP BACKWARD. While the LEAP FORWARD key is held, a pattern may be typed. While the pattern is being typed, the cursor immediately moves forward and lands on the first character of the first occurrence of the pattern in the text. While the pattern is being typed, autorepeat is disabled. LEAP BACKWARD behaves the same as LEAP FORWARD except that the cursor moves in the opposite direction through the text. When the pattern cannot be found, the cursor returns to the starting place, (this behavior is described in section 4 below). There are two leap modes: local leap and global leap. Local leap mode constrains the cursor to a user-defined region of the text. In global leap mode the cursor may leap to any location in the text. In local leap mode the search proceeds from the character after the position of the cursor circularly around the local leaping region in the indicated direction. In global leap mode the search proceeds from the character after the position of the cursor circularly around the entire text in the indicated direction. After a successful leap the cursor is narrow and positioned on the first character in the text matching the pattern. Characters in the pattern may include lowercase, uppercase and accented characters. Character patterns and text match as follows: 1 - Lowercase characters match both upper and lowercase characters. For example the pattern "abc" will match text consisting of "ABc". 2 - Uppercase characters only match uppercase characters. For example the pattern "ABC" will not match "aBC." 3 - Normal characters match both normal and accented characters. For example the pattern "a" will match "a", "A", and "a with umlaut." 4 - Accented characters match only accented characters, as with uppercase. Adding accent marks to the pattern leaps to the first occurrence of the accent. Thus a bare accent can be the target of a leap. 3. Special Leap Features 1 - Scrolling - Pressing SHIFT and tapping a LEAP key causes the text to scroll one line in the indicated direction. By using LEAP AGAIN, scroll can be made to autorepeat. Section 7 below describes the action. 2 - Automatic page breaks - Leaping to the pattern consisting of a single page character will also leap to automatic page breaks, in this case landing the cursor on the character after the automatic page break. If the pattern contains more than one page character, the pattern will not match automatic page breaks. Section II.9 describes automatic page breaks. 3 - Beginning and End of Text - A leap to a pattern consisting of more consecutive page characters than may be found in the text will cause the cursor to land at the initial or final document character. In local leap mode the cursor will land at the beginning or ending document character in the local leaping region. 4 - Leaping and LEARN - While LEARN is active (see section XII), the search is not circular. 5 - We have taken it as a design goal that any LEAP should be completed in .3 second or less. 6 - The text may contain bare accent characters or accented characters. As the pattern is typed, the pattern may contain a bare accent character (for example, until the user types the character in the pattern associated with the accent). When the pattern ends with a bare accent character it matches either bare accents or accented characters. If a character is typed while the LEAP key is still held, then the pattern includes an accented character which only matches other accented characters. This means that a bare accent character can only occur at the end of a pattern. Leap Details Undo: Returns the cursor and the screen to its exact state prior to the cursor move. Text Memory Utilization: Releases space in UNDO buffer Explain Screens: General Explain of LEAPing 4. Cursor rebound when pattern not found Rather than make a nonexistent pattern an error, as in most systems, we make the cursor return to its starting point if there is no match. If this happens with a pattern that consists of three or more of the same character, a beep is sounded. Cursor Rebound Details Undo: Undoing cursor rebound does nothing Text Memory Utilization: None Explain Screens: After a beep: Explanation of proper use of LEAP AGAIN 5. LEAP AGAIN This command leaps in the chosen direction from the current cursor location to the nearest instance of the last pattern used in a leap. After all instances have been found by repeated applications of this command, it returns the cursor to the place it started. Like a leap, leap again can be either forward or backward. Leap again is executed by holding a LEAP key and tapping or pressing a USE FRONT key. The converse key combination also works. Leap again autorepeats if both the LEAP key and the USE FRONT key are held down. The pattern memory lasts until another pattern is entered. Leap Again Details Undo: Undoes to the point where the LEAP key or the USE FRONT key was first pressed. Text Memory Utilization: None Explain Screens: General Explain of LEAPing 6. CREEP forward and backward CREEP is character-by-character cursor movement, similar to conventional left-right cursor controls. If either LEAP key is pressed and released without any intervening keystrokes, creeping takes place. The individual creep takes place upon release of the leap key. The user may tap the leap key repeatedly to move the cursor character-by-character in one direction. If the cursor is wide, the first creep makes it narrow. The next creep moves the cursor one character forward or backward. Creeping can be used to adjust the size of a highlight as described in section III.1. We have taken it as a design goal that creep should proceed as fast as typing, or a maximum of .1 second per creep. Creep does not autorepeat. Creep Details Undo: Returns the cursor to the point it was at after the most recent non-creep operation. Text Memory Utilization: None Explain Screens: General Explain of LEAPing 7. SCROLL forward and backward SCROLL allows precise positioning of text with respect to the top and bottom of the screen, thus making it easier to read a section of text that may be a line or two off the edge of the screen. The cursor is moved but the text is not made dirty. Scrolling is activated by pressing either Shift key and then tapping a LEAP key to move the text in the desired direction. LEAP AGAIN can be used to repeat or autorepeat the scroll. The LEAP BACKWARD key makes the text scroll down and the LEAP FORWARD key makes the text scroll up. The cursor stays on the same character in the text, scrolling up or down the screen with the text until it hits the top or bottom line. At this point the cursor moves to the leftmost column and remains there as the text is scrolled. When the cursor reaches the absolute top or bottom of text (or either end of a local leap region) scrolling stops. If further scrolling in the same direction is requested, nothing happens. If the highlight is extended when scroll is invoked, as long as the blinker can remain on the screen, the highlight remains extended. When the blinker is about to move off the screen, the highlight immediately collapses in the direction scrolled. (see section III.3 and III.4). Scroll Details Undo: As for LEAP and LEAP AGAIN. Text Memory Utilization: None Explain Screens: None, explained on the LEAP explain screen 8. LEAP-ERASE If the ERASE key is pressed during a LEAP, it removes the last character typed from the LEAP pattern. This effectively causes the LEAP to restart with the new shortened pattern, thus returning the cursor to where it had been before the last character of the pattern was typed. When all characters have been erased from a pattern, the cursor returns to its starting place. A corrected or entirely new pattern may be initiated after using ERASE. LEAP-ERASE by itself has no effect. ___________________________________________________________________________________ II. Typing ___________________________________________________________________________________ Typing takes place essentially instantaneously as far as the user is concerned. (Goal: .1 second or less between keypress and character insertion) When characters are typed they are inserted at the location in the text indicated by the blinking part of the cursor. The character under the blinker is moved forward to accommodate the newly typed character. Typing Details Undo: Typing is not undone. Text Memory Utilization: One byte per character. Document character inserts two characters into the text plus a 11 byte document packet. Explain Screens: Default Explain Screen. Text Full Screen. 1. Printing characters For each model there is a particular character set which can be both typed and printed. As characters are typed they are inserted, with space being made by pushing characters to the right in real time. If the user holds down a particular key for 600 ms, that key will autorepeat at a rate of one character every 70 ms. 2. Wordwrap Words are defined as sequences of printing characters plus one or two following blanks. Word wrap causes whole words to move to the left margin of the following line if they would extend beyond the right margin. When characters are erased more words may fit on a line. Unwrapping takes place in real time. Unwrapping is the exact inverse of wrapping. 3. Character Set The Cat stores characters in the text as 8 bit values. Thus there are 256 possible characters in the Cat character set, also called the internal code set. The internal code set is attached to the end of this specification. Not all of the characters in the internal code set can be displayed on the display. There are some display characters, such as automatic page breaks, that are not stored in the text but that can be displayed. Some characters are used to store formatting information and calculation information in the text even though this information is invisible to the user. The spelling checker software uses a subset of the internal code set. A mapping table that converts internal codes to spelling checker codes also appears at the end of this specification. 4. Permanent Space A permanent space may be used between two words that should always appear on the same line, such as "Canon Inc." Words which are separated by a permanent space are treated as a single word with respect to wordwrap. Permanent space looks like a space character on the display. A leap to a permanent space matches only permanent spaces, but a leap to space matches either type. A permanent space is typed with SHIFT-TAB. 5. Return A return is a nonprinting character which is visible on the screen only when highlighted. Then it appears as a special graphic immediately to the right of the last character prior to the return. A return forces the next character in sequence to appear at the indent of the next line. It also marks the end of a paragraph for the paragraph commands described in section V below. 6. Tab Tab is a nonprinting character of variable width which is visible on the screen only when highlighted. It extends from the position the cursor held when the TAB was typed to the nearest tab stop, and may be shortened by subsequent typing to its left, or to its right if the tab stop was decimal. If a tab character is forced beyond its current tab stop by insertions to its left, it moves to the next tab stop. The rest of the text forward of the tab character is pushed ahead and word-wraps accordingly. 7. Automatic Page Breaks Since physical paper pages have a fixed length (usually 11 inches or 66 lines), and since the text changes size as typing and editing proceed, the system automatically marks those places where the text, with margins taken into account, will cross physical page breaks. Page breaks are displayed as a single graphic symbol which is the full width of the display; thus they are always the only character on the line they occupy. Page numbers appear only in page breaks that would have printed page numbers. The SETUP command can be used to set the first page number to be printed. The default is for page 2 to be the first page number printed. Thus, page 1 does not display a page number on the screen or print a number on the paper. The automatic page break can be leaped to with LEAP-PAGE, but cannot be typed or erased. 8. Page This character forces a new page to begin, and preserves consecutive page numbering. Since it is a character in the text it can appear as part of a multi-character pattern, unlike the automatic page break which can only be found by a single character pattern. As indicated above, page numbers lower than the first page number to be printed are neither displayed or printed. Page Character Details Undo: None Text Memory Utilization: When typed, one byte. Format packets may be attached to page characters Explain Screens: Text Full Screen 9. Document This character can be used to separate the text into smaller sections called documents. The document character is like a page break except that it forces page numbering to restart at the first page number (see SETUP command). When a document character is typed, a document character and a document format packet (which is hidden from view) are inserted in the text. The cursor flashes just after the document character. The page number of the document character is the page number of the last page in the previous document. The number appears above the document character so that the user may easily tell that the page number is associated with the previous document. If the previous document is short enough that the page number would not be printed, the document character is displayed with no page number. Leaping to a page character will also find document characters, but leaping to a document character finds only document characters. When a document character is typed, the following information is inserted in the text: 1 - a document character 2 - a document packet The "document packet" contains fields to store the document-specific setup information for the document. When the document character is typed, the information in the packet is taken from the machine default document setup (see Machine Setup in section XVI). Document Details Undo: None Text Memory Utilization: 1 byte plus a 14 byte document packet Explain Screens: Text Full Screen 10. Ruler A ruler calibrated in character positions appears at the bottom of the screen, except when the SETUP or EXPLAIN commands are in use. It can be used to align and measure text. The text format indicated in the ruler is the format at the blinker location unless the paragraph format commands (LEFT MARGIN, RIGHT MARGIN, INDENT, PARAGRAPH STYLE, AND LINE SPACING commands) are used, in which case the ruler indicates the format of the affected paragraphs. The ruler also carries a number of indicators such as: LEARN-in-progress (including which key the LEARN is being assigned to) Wait indicator (SORT, PRINT, DISK, CALC or SEND in progress) local/global mode paragraph style memory used and remaining keyboard I or II Phone Status location of margin and indent settings location of tab stops and tab stop type line number line spacing location of cursor low battery indicator The ruler displays the format information of the paragraph containing the last character of the highlight. The ruler numbers the character positions on the display from 1 to 80, although the numbers displayed on the major tic marks are 1 to 8. The low battery detect input is scanned in the main loop and when the low battery status is detected, the low battery indicator is displayed on the ruler. The line number indicator displays the line number of the cursor on the current page. 11. Typing accented characters Accented characters are stored in the text as normal characters followed by an attribute byte indicating the type of accent. The accent characters are overstruck on the display. Accent characters can only be applied to alphabetic characters and space. Punctuation cannot be accented. The spelling checker character set includes accented characters which are generated from the text representation by a mapping table. Certain printwheels support typing accented characters by providing characters with the accents already in place. If possible, characters are printed using the provided characters, otherwise they are printed by overstriking. When an accent character is typed and the cursor is wide or extended, it appears in text as a bare accent character. The next character typed assumes the just-typed accent unless another accent character is typed in which case the text will contain two bare accent characters. If another character is typed it would use the second accent. If the user moves the cursor away before typing the character associated with the accent, the bare accent remains in the text. If the last character of the highlight is on a bare accent character, typing a character other than an accent will result in the accent being applied to that character. This means that typing when the cursor is narrow on a bare accent character inserts at the highlight, not before the highlight, as is the case with non-accent characters. 12. Typing with Character Styles The system supports the bold and underlined character styles. In addition, a special attribute (the dotted underline) can be applied to characters that are used by the calculation package. When the user types in the middle of a region of text that is bounded on both sides by characters with matching character styles, the typed characters take on the style of the surrounding characters. For example, if a character is typed in the middle of a bolded word will be bold. This property is called "stickiness", that is the character style of the surrounding characters sticks to newly typed text. If only one side of the typed text has a character attribute, the typed text will be plain. Stickiness is used by the calculation package to make sure that editing in the middle of expressions will be automatically included in the calculation. 13. KEYBOARD I/II This command switches the keyboard between the main character set and an alternate character set. Note that this is modal and will cause users to make mode errors. It has no effect on the text. To insure that Learn operations work reliably, the state of KB I/II is set to KB I when learn is made active. Keyboard I/II Details Undo: Reverses action. Text Memory Utilization: None. Explain Screens: General Keyboard I/II Screen 14. Reserved Characters Certain characters in the internal code set are reserved for future products. Included in these reserved characters are: Overstrike space: code AA (used in future systems for forms-fill-in) Backspace attribute: code E7 (used in future systems for overstriking) Universe character: code 0A (next level in hierarchy above doc char) In the Cat system the reserved characters have the following behavior: Overstrike space: Same as a Space character Backspace attribute: Ignored Universe character: Same as a Document character ___________________________________________________________________________________ III. Editing ___________________________________________________________________________________ 1. Extending highlight There is always at least one highlighted character. After typing it is the character to the left of the cursor (the one just typed). After leaping it is the character under the cursor. If, while the highlight is a single character, a LEAP is performed and then both LEAP keys are pressed, all the text from the location of the highlight at the beginning of the leap to the present cursor position are highlighted. Since creeping can move the highlight a character at a time without initiating a leap, the size of the extended highlight can be adjusted by creeping before or after pressing both LEAP keys. When the cursor is narrow the first character typed marks one end of a potential extended highlight. In this case, extending the highlight will highlight the text just typed. Highlighting Details Undo: Leaves the text as it was just before the highlight was extended. Text Memory Utilization: None. Explain Screens: Default Explain Screen. 2. Automatic Highlighting Use of the COPY, UNDERLINE, BOLD, CAPS, or SEND command will cause the highlight to be extended if it is not already extended, as if both LEAP keys had been pressed prior to the invocation of the command. The Setup command will allow the user to select automatic highlighting with the PRINT command. 3. Collapse forward If there is an extended highlight and the LEAP FORWARD key is pressed and released, then the highlight collapses and rests on the last character of the former highlight. Collapse forward thus changes from an extended cursor to a wide cursor. Collapse Forward Details Undo: Leaves the highlight as it was before the collapse. Text Memory Utilization: None. Explain Screens: General Leap Screen 4. Collapse backward If there is an extended highlight and the LEAP BACKWARD key is pressed and released, then the highlight collapses to the first character of the former highlight. The cursor also lands on the first character of the former highlight. Collapse backward thus changes the cursor from an extended cursor to a narrow cursor. Collapse Backward Details Undo: Leaves the text as it was before the collapse. Text Memory Utilization: None. Explain Screens: General Leap Screen 5. ERASE FORWARD (no extended highlight) If any operation which leaves the cursor narrow has just been completed, then subsequent use of the ERASE key will result in character under the highlight being deleted and the cursor left on the next character forward of its previous position. This gives the appearance of the cursor itself standing still while "vacuuming" the forward letters. Words unwrap as necessary. Erase forward changes to erase backward when the last character in the text (or in local leap mode, the last character in the region) is deleted. When the entire text is erased, the internal identification numbers are changed so that after erasing everything the disk command will not overwrite a previously loaded disk. For more information see section VIII where disk operations are discussed. 6. ERASE BACKWARD (no extended highlight) If any operation which leaves the cursor wide has just been completed, then subsequent use of the ERASE key will act as a destructive backspace. Other details are identical to erase forward except that direction reverses when erasing reaches the beginning of text or the local leaping region. Erase With No Extended Highlight Details Undo: Restores characters to the last non-ERASE action. Text Memory Utilization: Erased characters are copied to the UNDO buffer. When an operation other than Erase makes UNDO no longer possible, buffer space is freed. Erase can cause text full screen if a format packet is erased since split/merge will force a new format packet to the next break as well as copying the erased text to the UNDO buffer. Explain Screens: Default Explain Screen, Text Full Screen, Locked Text Screen 7. ERASE highlighted text If there is an extended highlight and ERASE is pressed, the entire highlight is erased. After the execution of the command, the cursor is wide with the highlight on the character before the first character of the erased text. Erase Details Undo: The erased text is restored. Text Memory Utilization: No space is used, but neither is any space gained by an Erase as the text is kept in case of a following UNDO. When the UNDO is no longer permissible the space for the erased text (including the space used by formatting information and calculation pockets) is made available. Explain Screens: Default Explain Screen, Locked Text Screen 8. Erasing All of Text The initial and final document characters cannot be erased. As a result, if the entire text is selected and erased, the initial and final document separators do not disappear from the text. In addition, since erasing backward moves the highlight closer to the beginning of the text one character at a time, it is possible to put the highlight on the initial document separator by erasing. If this happens, the next press of the ERASE key reverses the direction of erase. Then the next press of the ERASE key will erase forward. When erasing forward places the highlight on the final document character, further erasing reverses to erase backward. 9. COPY A copy of the highlighted text is made and inserted immediately after the highlight. If the highlight is not extended, it is automatically extended as if the user had pressed both leap keys before giving the command. The highlighting moves from the original text to the copy. The copy remains highlighted after the execution of the command. See section IX.9.C regarding the interaction between calculations and the COPY command. If the selection being copied includes the initial or final document character, the size of the selection is reduced so it does not include these two characters. Copy Details Undo: Returns the text to the state it was before the copy was made. Text Memory Utilization: Enough space to make the copy. Explain Screens: General Copy Screen, Locked Text Screen. 10. Moving Highlighted Text (Dragging) If a leap is performed while there is an extended highlight, the highlighted text leaps to the new location of the cursor when the LEAP key is released. When the highlighted text is inserted, the highlight is not collapsed in case the text must be moved again. While the leap is taking place, only the cursor moves, the highlight doesn't move until the LEAP key is released. If the opposite LEAP key is pressed during a move, it is ignored. If the leap ends inside the extended highlight itself the highlight is collapsed and the cursor moved to the place where the blinker was located during the leap (that is, a leap to inside a highlight is just a normal leap). Moving Details Undo: The selection is moved back, and left highlighted. Text Memory Utilization: Format packets as needed. Explain Screens: Default Explain Screen, Text Full Screen, Locked Text Screen ___________________________________________________________________________________ IV. Text Appearance ___________________________________________________________________________________ There are two kinds of appearance attributes: those which affect the appearance of individual characters and those which affect the appearance of paragraphs. There are three commands that affect individual characters: CAPS, UNDERLINE and BOLD. The caps, underline and bold character attributes can be applied to a character in any combination. For example when the BOLD command causes the highlighted text to become bold, if a part of the highlight is already underlined, that section will become bold and underlined. 1.0 Text Appearance Commands and Learn The macro facility (called the Learn command) permits recording of user keystrokes for later playback. To make it possible to create key sequences that will behave the way the user intended over a wide range of possible text conditions, when the Learn function is active, all the commands described in this section behave slightly differently: the first time the command is given, the command always performs the named function. For example, the Caps command capitalizes all the selected characters, regardless of their current state. This permits the user to see exactly what will happen to text that is edited using the recorded sequence. 1.1 CAPS If the highlight is not extended when this command is given, the highlight is automatically extended as if the user had pressed both LEAP keys before giving the command. The selection is scanned for lower case characters. If any are found, all characters in the selection are capitalized. If the selection contains only capital letters, all characters in the selection are made lower case. As described above, when Learn is active, the first press of the CAPS command capitalizes all characters in the selection, regardless of the state of the characters in the selection. Caps Details Undo: Restores the text. Text Memory Utilization: No text space required to capitalize text. The entire selection is duplicated in the UNDO buffer. Explain Screens: General CAPS screen. Locked Document Screen. Text Full Screen. 1.2 UNDERLINE If the highlight is not extended when this command is given, the highlight is automatically extended as if the user had pressed both LEAP keys before giving the command. The selection is scanned for characters that are not underlined. If any are found, all characters in the selection are underlined. If the selection contains only underlined characters, the underline is removed from all characters in the selection. As described above, when Learn is active, the first press of the UNDERLINE command underlines all characters in the selection, regardless of the state of the characters in the selection. Tab characters can be underlined. Return characters cannot be underlined. When a line wraps due to word wrap, trailing spaces are not underlined. Underline Details Undo: Restores the text. Text Memory Utilization: One underline character attribute byte added to each plain text character. The entire selection is duplicated in the undo buffer. Explain Screens: General underline screen. Locked Document Screen. Text Full Screen 1.3 BOLD If the highlight is not extended when this command is given, the highlight is automatically extended as if the user had pressed both LEAP keys before giving the command. The selection is scanned for characters that are not bold. If any are found, all characters in the selection are made bold. If the selection contains only bold characters, all characters in the selection are made normal weight. As described above, when Learn is active, the first press of the BOLD command makes all characters in the selection bold, regardless of the state of the characters in the selection. Bold Details Undo: Restores the text. Text Memory Utilization: One bold character attribute byte added to each plain text character. The entire selection is duplicated in the undo buffer. Explain Screens: General BOLD screen. Locked Document Screen. Text Full Screen. 2. SHIFT LOCK When SHIFT LOCK is on, it makes the system act as though the SHIFT key were being held down. An LED in the keycap indicates that SHIFT LOCK is on. This is a modal key and should be eliminated on future models. SHIFT LOCK is turned on by pressing the SHIFT LOCK key. SHIFT LOCK is turned off by pressing either SHIFT key. When SHIFT LOCK is on pressing either LEAP key saves the state of shift lock and turns shift lock off. This is done because leaping is case sensitive. When the LEAP key is released, the saved shift lock state is restored. When the USE FRONT key is pressed, the shift lock state is ignored. This is done because many commands have a different behavior if the SHIFT key is pressed. When Learn is made active (either by playback or recording a learn), the SHIFT LOCK state is reset to the not locked state. To be more like other commands in the system, SHIFT LOCK should toggle. ___________________________________________________________________________________ V. Paragraph Appearance ___________________________________________________________________________________ When the cursor is Narrow or Wide, these commands affect the appearance of the paragraph in which the blinker is located. When the cursor is extended, all paragraphs that are partly or completely highlighted are affected. 1. LEFT MARGIN If USE FRONT is held and the LEFT MARGIN key is tapped, a solid vertical line the full height of the text area appears at the current left margin location. This line -- called the set line -- is used with all the paragraph formatting commands to indicate the set point for the format parameter being affected. While it is visible, the set line can be moved right and left by pressing the LEAP keys. Tapping a LEAP key causes the line to move one character position in that direction. Holding a LEAP key more than 0.5 seconds causes autorepeating movement of the set line. When USE FRONT is released, the left margin of the affected region moves to match the position of the set line. "Indent" is defined as the location of the left margin in the first line of the paragraph. When the LEFT MARGIN command is used, the indent moves with the left margin so as to maintain the same position relative to the left margin. If the indent is to the left of the left margin (e.g. in a bulleted paragraph) and the left margin is moved so that the indent hits the left edge of the screen, the distance between the left margin and the indent is reduced until the left margin and the indent coincide at the left edge of the screen. If the indent is to the right of the left margin and the left margin is moved so that the indent is two characters to the left of the right margin, the distance between the left margin and the indent is reduced until the left margin and the indent coincide two characters to the left of the right margin. The left margin cannot be moved to the right of the right margin. If the highlight is extended at the time the command is given, all paragraphs that contain highlighted characters have their left margins and indents adjusted to match the left margin of the last paragraph in the highlight and to maintain the relative location of the indent. This operation is provided to permit the user to make a group of paragraphs have the same format without having to adjust the format of each paragraph individually. If the highlight begins with a break character (return, page or document), the format of that paragraph is not affected. This is to make it easy to select a group of paragraphs by simply leaping to returns. The paragraph ending at the beginning of the selection is not affected. When the USE FRONT key is released, the highlight is collapsed to a narrow cursor on the last character of the highlight. This is done so the ruler, which always indicates the format of the blinker will indicate the changed format, not the format of the next paragraph, which is unchanged. It should be possible to narrow the margins to a line length of 2 characters. The default left margin is column 1. USE FRONT-SHIFT-LEFT MARGIN sets the left margin to the default value and does not display the set line. The default is column 8. The indent is also moved to maintain its relative position with respect to the left margin. If this movement would put the indent to the left of column 1 or closer than two characters to the right margin, the distance between the left margin and the indent is reduced until the indent is positioned within this range. Left Margin Details Undo: Restores the format of all affected paragraphs. Text Memory Utilization: Format packets added as required. Explain Screens: General Paragraph Format screen. Locked Document Screen. Text Full Screen. 2. RIGHT MARGIN The same as LEFT MARGIN except that the right margin is affected and the indent is not affected. The right margin cannot be moved to the left of the left margin or the indent. USE FRONT-SHIFT-RIGHT MARGIN sets the right margin to the default value and does not display the set line. The default is column 73. Right Margin Details Undo: Restores the format of all affected paragraphs. Text Memory Utilization: Format packets added as required. Explain Screens: General Paragraph Format screen. Locked Document Screen. Text Full Screen. 3. INDENT The same as LEFT MARGIN except that only the indentation is affected. Notice that bulleted paragraphs are simply those where the indent is to the left of the left margin. As mentioned above, adjusting the left margin causes the indent to maintain its relative distance from the left margin. The indent cannot be moved further right than one character to the left of the right margin. USE FRONT-SHIFT-INDENT sets the indent to the default value and does not display the set line. The default is column 8. Indent Details Undo: Restores the format of all affected paragraphs. Text Memory Utilization: Format packets added as required. Explain Screens: General Paragraph Format screen. Locked Document Screen. Text Full Screen. 4. PARAGRAPH STYLE Paragraph styles include four options that may be cycled through until the desired style is selected. The styles available are: Left Flush, Centered, Right Flush, and Justified. The paragraph style at the current cursor location is indicated by an icon on the ruler. If learn is active, the first press of the paragraph style key always sets the paragraph style to Centered. This makes the operation of Learn sequences predictable. Paragraph Style Details Undo: Returns the paragraph to the style it had before the command was invoked. Text Memory Utilization: Format packets added as required. Explain Screens: General Paragraph Style Explain. Text Full Screen. These options should come up in the order listed here. 4.1 Left Flush Ragged right, left-justified text. When the next paragraph is begun (by typing a return), the paragraph style remains Left Flush. 4.2 Centered Ragged right and left, but every line centered. While typing in a centered paragraph, the entire paragraph is centered every time a character is added or deleted. When the next paragraph is begun (by typing a return), the paragraph style is set to either Left Flush or Justified by looking backward into the text to find the closest paragraph with neither Centered nor Right Flush paragraph styles. If no Left Flush or Justified paragraph can be found, the paragraph style will be Left Flush. Centered paragraphs are displayed and printed using half-spaces if required. The half-spaces are not stored in the text. 4.3 Right Flush Ragged left, right-justified text. When the next paragraph is begun (by typing a return), the paragraph style is set to either Left Flush or Justified by looking backward into the text to find the closest paragraph with neither Centered nor Right Flush paragraph styles. If no Left Flush or Justified paragraph can be found, the paragraph style will be Left Flush. 4.4 Justified Justified to right and left margins. When the next paragraph is begun (by typing a return), the paragraph style remains Justified. When displayed or printed a justified paragraph is spaced out on the line by inserting half-spaces next to space characters until the rightmost printing character is at the right margin. 4.5 Paragraph Style with Extended Highlight If the highlight is extended when the PARAGRAPH STYLE command is given, the paragraph style of all paragraphs containing highlighted characters is changed to match the style of the paragraph containing the last highlighted character. If the PARAGRAPH STYLE command is given again, the paragraph style of all the paragraphs containing highlighted characters is toggled to the next style in the list. If the first highlighted character is a break, the style of that paragraph is not affected. If the highlight is extended when the PARAGRAPH STYLE command is given and the style of all paragraphs containing highlighted characters is the same, the paragraph style is immediately toggled to the next style on the list. When the USE FRONT key is released, the highlight collapses to a narrow cursor on the last character of the former highlight. 5. TAB SET/CLEAR This command causes the set line to appear at the present cursor position. The line can be moved using the LEAP keys while USE FRONT continues to be held. A tap on the SPACE BAR will move the set line to the next tab stop to the right. At the last tab stop, the line will be moved to the leftmost tab stop. When the line is in the desired position, further pressing on the TAB SET/CLEAR key will change the kind of tab stop to the next kind in the cycle. There are two cycles of tab stop types depending on whether there is already a tab stop at the location of the set line: 1 - No tab stop at set line location: Normal, Decimal, Clear 2 - Tab stop present at set line location: Clear, Normal, Decimal Thus if there is no tab stop the first tap on the TAB SET/CLEAR key creates a normal tab, and if there is a tab stop the first tap clears it. The ruler has different symbols for the different kinds of tab stops. If the TAB SET/CLEAR command is invoked and the user presses ERASE while still holding USE FRONT, all tab stops are deleted. USE FRONT-SHIFT-SET-TAB sets the default tab stops. The default tab settings depend on the keyboard installed in the system. Please see section XVI.1 which describes the SETUP command and how the keyboard determines what default tab settings should be used. A maximum of 79 tab stops may be set at columns 2 to 80. Tab Set/Clear Details Undo: Restores the tab stops to their condition prior to this invocation of the TAB SET/CLEAR command, irrespective of how many tab stops have been changed. Text Memory Utilization: Format packets as required. Explain Screens: General Tab Screen. Text Full Screen. Too Many Tab Stops Screen. 5.1 Normal Tab When the TAB key is pressed during typing and the next tab stop to the right of the cursor is a normal tab stop, the cursor moves to the tab stop and typing proceeds normally. A tab stop is automatically set at the right margin. If the user does not set a tab stop at the end of the line, the tab stop is not visible and behaves like a normal tab. The user can set either a normal tab or a decimal tab. This means that when the cursor is beyond the last tab stop set by the user, there is still a tab stop at the right margin. The space between the last character before the tab character and the first character at the tab stop is occupied by a tab character which is invisible unless highlighted, whence it appears as a right-pointing arrow in reverse video. A tab character is at least one character position wide. 5.2 Decimal Tab When the TAB key is depressed during typing and the next tab stop to the right of the cursor is a decimal tab stop, the cursor moves to the tab stop and further typing will cause characters to emerge to the left of the cursor while the cursor itself stands still at the decimal tab stop. Normal typing resumes when a tab, return, or country-code-specific decimal point (a period in the United States) is typed, or the tab character is compressed to a single character position. 5.3 Clear Tab The tab stop is eliminated from this position. 5.4 Tab Set/Clear with Highlight Extended If the highlight is extended when the TAB SET/CLEAR command is given, the tab setting of the paragraph containing the last character in the highlight is propagated to all paragraphs that contain highlighted characters. Further tab setting or clearing applies to all paragraphs containing highlighted characters. If the first character of the highlight is a break, the tab settings associated with that paragraph are not affected. When the USE FRONT key is released, the highlight collapses to a narrow cursor on the last character of the former highlight. 6. LINE SPACING By repeated applications of this command while holding USE FRONT, the user cycles through three options. If the highlight is extended, all paragraphs that contain highlighted characters are affected. The options are single-space, one-and-a-half-space, and double-space. When one-and-a-half-space is selected, a half line may appear at the top or the bottom of the display. If this happens, the half line is not displayed. Line spacing takes effect from the first line of a paragraph to the line following the return. For example, a double spaced paragraph always has a blank line after the return that ends the paragraph. If learn is active, the first press of the LINE SPACING key always sets the line spacing to one-and-a-half-space. This makes the operation of Learn sequences predictable. Line Spacing Details Undo: Returns line spacing to its condition before this command was invoked. Text Memory Utilization: Format packets as required. Explain Screens: General Line Spacing Screen 6.1 Line Spacing with Extended Highlight If the highlight is extended when the LINE SPACING command is given, the line spacing of all paragraphs containing highlighted characters is changed to match the line spacing of the paragraph containing the last highlighted character. If the line spacing command is given again, the line spacing of all paragraphs containing highlighted characters is toggled to the next state. If the first character of the highlight is a break, the line spacing of the paragraph containing the break is not affected. When the USE FRONT key is released, the highlight collapses to a narrow cursor on the last character of the former highlight. 7. Multiple Paragraph Format Commands As long as the USE FRONT key is held down, multiple paragraph format commands can be given. Thus the user can affect the left margin, indent, right margin, paragraph style, line spacing, and tab stops with a single press of the USE FRONT key. When the USE FRONT key is released, the highlight collapses. After changing multiple paragraph format parameters, the UNDO command will return the paragraph to the state before the USE FRONT key was pressed. 8. Interaction of Paragraph Style and Tabs 8.1 Tab Appearance Design Principles The tabs are designed to operate with Left Flush paragraph style. If a different style is selected, the appearance of the text on the screen and in the printout will be affected. This section describes the interaction between paragraph style and tabs. The basic design guidelines are as follows: 1 - Every character typed appears on the display so it can be leaped to. 2 - Changing the paragraph style should not cause the word wrapping of the paragraph to change. 3 - The appearance of tabulation should be consistent and predictable. 8.2 Centered and Right Flush Text and Tab Stops The following describes how the text is taken from the text buffer and displayed on the screen. This operation is performed by a routine which lays out the line to be displayed in a buffer. The paragraph styles interact with the line buffer to produce the desired text display. Each time the cursor moves, either by leaping, inserting text or deleting text -- the display is updated. 1 - Lay the line out as if it were a Left Flush line. 2 - Adjust the position of the line on the screen according to the paragraph style selected: a - If the paragraph is Centered, position the center of the displayed line at the center of the line bounded on the right by the right margin and on the left by the furthest left of either the left margin or indent. b - If the paragraph is Right Flush, position the rightmost printing character at the right margin. 3 - Position the cursor and highlight as appropriate. This operation has the effect of moving tabbed text to the center or right margin while preserving the spacing of tabbed text. The ruler is not affected by this operation, so the tab stop indicators on the ruler no longer line up with the tabbed text on the display. 8.3 Justified Text and Tab Stops Justified text will be displayed as follows: 1 - Lay out the line as if it were a Left Flush line. 2 - Find the rightmost tab stop. 3 - Insert half-spaces next to space characters in the interval from the rightmost tab stop to the right margin such that the line is evenly spread and the rightmost printing character is on the right margin. 4 - Position the cursor and highlight as appropriate. A line is justified only if the line does not end with a return character. Lines ending with return characters are not affected by the justification algorithm. 8.4 Side Effects There are several side effects of these interactions that result in behavior of the cursor that is different than the cursor behavior in a Left Flush paragraph. 1 - Since Right Flush and Justified paragraph styles demand that the last printing character be on the right margin and since the word wrap rules demand that words be broken after two spaces, the display must be able to display up to three character positions past the right margin (two positions for the spaces and one position for the blinker when the cursor is wide). The system enables display of up to two spaces beyond the right margin by compressing two spaces into two half spaces which take up only one column in the display. Thus, if the right margin is at column 80, the 81st column can display either one or two half space characters. The cursor is then in the 82nd column. 2 - Right Flush, Centered, and Justified paragraph styles do not permit the simple relationship between the cursor state and the location of the inserted character. We will keep the appearance of the narrow and wide cursors the same but typing will not place the next-typed character at the location of the blinker. Rather it will be one to the right for Right Flush paragraphs and 1/2 space to the right for Centered paragraphs. For Justified paragraphs the location of a typed character will depend on the contents of the line. 3 - The Right Flush and Justified paragraph styles can cause an arbitrary number of spaces to appear to the right of the right margin. To avoid the problem of displaying spaces to the right of the right margin as described in paragraph 1 above, if a paragraph has more than 2 space characters before the end of the line, the rightmost printing character is moved to the left one character for each extra space character. 9. Interaction Between Paragraph Format and Editing The information that describes the paragraph format is stored in the text as hidden information (that is, it is in the text but it is not displayed or printed). The format information is associated with the break (a break is a return, page or document character) at the end of the paragraph but is stored in the text at the beginning of the paragraph. Thus if the break at the end of a paragraph is deleted, the format information from the following paragraph applies to the new, larger paragraph that results. When text is dragged, if the highlighted text contains a break, the format of the dragged text will be imposed on the new text from the beginning of the selection backward to the previous break. This interaction applies to all paragraph format information: Margins, Indent, Tab Settings, Paragraph Styles, and Line Spacing. ___________________________________________________________________________________ VI. Printing ___________________________________________________________________________________ 1. PRINT If this command is given while highlight is extended, the highlighted text is sent to the print buffer. While the transfer is taking place, a "wait" indicator is displayed on the ruler. Since the Cat has a fixed pitch display, the transfer should take place quickly. Once the highlighted text has been transferred to the print buffer, the highlight collapses. If the buffer fills up while the transfer is taking place, the screen is updated to show how far the transfer has gone. The Cat screen does not display the progress of the PRINT command as does the current Swyft system, since the transfer to the buffer would be slowed down. Rather, the display is updated at the end of each page transferred. The highlight is removed from the page that is already transferred to the buffer. Thus the user always has a visual indication of the progress of the transfer. USE FRONT-SHIFT-PRINT sends the highlighted text to the alternate printer. The system will only print on one printer at a time. The print buffer is a fixed size, depending on the amount of system memory. In a 256K system, 16 Kbytes are assigned for buffer space. This space contains the serial buffers, the keyboard buffer, some special variables and the print buffer. Approximately 15 Kbytes are assigned to the print buffer. In a 384K system, about 45 Kbytes are assigned for the buffers and about 44 Kbytes are assigned to the print buffer. If the highlight is not extended and the PRINT command (UF-PRINT) is given, printing from the buffer is stopped and the buffer is discarded. UNDO will restore printing from the buffer. The print buffer contains the printer destination information supplied by the user when giving the PRINT command. Thus the print buffer can simultaneously store print data that is destined for the main printer and the alternate printer. While printing from the buffer, the SETUP command does not allow the user to change the serial port connection since the user might assign the serial port to the Send command and there could be a contention between printing and sending on the same port. Print Details Undo: If printing was stopped, undo starts it again. Text Memory Utilization: None. Explain Screens: General Print Screen 2. Printer Initialization. See SETUP command. 3. Single Sheet Printing An option for printing single sheets is provided in the printer setup section of the SETUP command. If the Pause Between Sheets option is selected, when the user highlights more than one page and gives the PRINT command, the first page selected is printed and the highlight is reduced in size by the amount printed. The highlight remains extended. Another press of the PRINT command will print the next page and so on until all pages originally selected are printed. Once the data for a page has been transferred to the printer, the system is available for normal editing, so the user can decide after printing one or more pages to abort the rest of the printing job by simply continuing normal editing operations. ___________________________________________________________________________________ VII. Telecommunications ___________________________________________________________________________________ 1. SEND This command sends the highlighted text out the communications port. If the highlight is not extended, this command automatically extends the highlight as if the user had pressed both LEAP keys before giving the command. The communications port (either built-in modem or serial port) is selected by the SETUP command. If no connection is established a beep is generated and an explanatory message can be read using the EXPLAIN command. Connections must be first initiated using the DIAL/HANG UP command as described in section VII.2 below. 1.1 Between Cat's If the "Communication mode" item in the SETUP command is Cat-to-Cat, then the surface text and all the underlying structure are both sent. By underlying structure we mean hidden calculation and paragraph format information. 1.2 To other devices If the "Communication mode" item in the SETUP command is either "Full-duplex" or "Half-duplex" only the surface text is sent. Tabs are filled out with space characters as are margins and indents. The setup command allows the user to select whether to add nothing, a return character or a return character and a line feed at the end of each line. Since there is no ASCII character for a half-space, the system alternately sends space characters and no character as half-space characters are encountered. This has the effect of equaling half-spaces if there are an even number of half-spaces and is guaranteed to make Justified text appear justified at the receiver. An odd number of half-spaces can only occur on a centered line, so centered lines may appear shifted by a half-space when received. To make communication sessions with foreign systems easier, the space between the left edge of the screen and the first character in the highlight is not sent unless the highlight includes the first character on the line. This prevents sending several space characters to systems that send a prompt. 1.3 Automatic Cat-to-Cat Detection When a connection is established, if the "Communication mode" part of the SEUTP command is set to Cat-to-Cat, the system will determine whether the other system is a Cat. It does this by sending a control-E and waiting for a response. Upon receiving a control-E, the answerback message " Canon Cat Modem" is returned. Thus, if both Cat's are setup to communicate Cat-to-Cat, they will detect this fact. If either end is not set to Cat-to-Cat, the link will be set half-duplex. Send Details Undo: None. Text Memory Utilization: None. Explain Screens: General Send Screen, Cannot Connect Screen, Transmission Difficulty Screen, No connection established screen. 2. DIAL/HANG UP The DIAL/HANGUP command is used to provide the function of the phone dial and the hook switch for the Cat. The operation of the command depends on the state of the system and on the highlight. Whenever the system hook relay is off-hook, the phone icon is displayed in the ruler. 1 - If the highlight is extended the highlighted text is scanned and all digits are dialed. Digits consist of the set {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, #, *, and comma (,)}. Nondigits are ignored, but certain characters have special meanings. A comma (,) causes dialing to wait for 1/2 second. The symbols * and # are dialed as tones corresponding to the extended touchtone keypad. Underlined digits are pulse-dialed rather than tone-dialed. While the system is dialing, the message "DIAL" is displayed in the ruler. Once the number is dialed, the system waits for a carrier. The amount of time to wait for a carrier can be adjusted using the SETUP command. If a carrier is received, a connection is automatically established and the confirm tone is generated. If no carrier is detected before the timeout, the line is dropped. A human-to-human call will not have carrier, so no modem connection is established. When a connection is established, the baud rate of the connection is displayed in the ruler. The confirm tone is a lower frequency tone than a beep that indicates a valid carrier is present. If the carrier is lost, a beep is generated. Whenever a confirm tone or a beep is produced, an explanatory message can be read using the EXPLAIN command. 2 - If the highlight is not extended and the Cat is on-hook, the Cat is taken off-hook and carriers are sent out to try to establish a connection. Both 300-baud and 1200-baud answer and originate carriers are sent and an effort is made to detect any answering carrier and establish the connection. If the connection is established a confirm tone is generated. 3 - If the Cat is off-hook, the line is dropped. This is used to end computer-to-computer communication and to hang up sooner than the timeout after dialing. 4 - If the carrier is lost and not regained before the timeout, the line is dropped and a beep is generated. Use of the EXPLAIN command would explain that the carrier was lost. When a carrier is detected, the telephone connected to the Cat is muted so the user only hears the carriers for a moment. If the user leaves the handset off hook, the connection will not be lost when the carrier is lost so voice and data communication can easily take place in the same call. Dial/Hangup Details Undo: None Text Memory Utilization: None Explain Screens: General Dial/Hangup Screen, Confirm Tone Explanation. 3. SEND CONTROL After this command is given, and for as long as the user continues to hold down USE FRONT, each letter key pressed sends a control character. The SPACE BAR sends BREAK and the TAB sends ESC. If no connection is established the command does nothing. USE FRONT-SHIFT-SEND CONTROL sends the characters that the user types without inserting them into the text. This function is useful for entering passwords without showing the password on the screen. Send Control Details Undo: None Text Memory Utilization: None Explain Screens: General Send Control Screen 4. Receiving Receiving is automatic and received text is inserted at the most backward point to which highlighting would extend if both LEAP keys were pressed. When the phone is automatically answered, a document character is placed in the text, and on disconnect another document character is placed in the text. If the cursor already immediately follows a document character, no new character is inserted upon either connect or disconnect. This prevents difficulty in establishing a connection from putting a lot of document characters in the text. The phone icon in the ruler shows when the system is off-hook. Immediately after a message is received, and if typing or other operations have not been done while the message was being received, pressing both LEAP keys will highlight the just-received information. When the system autoanswers, if the text is clean and the screen is off (due to timeout), all text is erased before answering. At the end of the communication session (when the carrier is dropped), the received text is highlighted and a Disk command is generated. This has the effect of causing the received text to be copied up and saved on the next timeout. If the received text will not fit on the disk, no save will occur. This arrangement makes it possible to receive a full text while the system is unattended. Receive Details Undo: None. Text Memory Utilization: The space required for the incoming text plus any underlying structure and the two document characters. Explain Screens: Transmission problems screen (e.g. carrier lost, unintelligible signals, autoplex receive failure), Text Full Screen 5. Full-duplex and Half-duplex When the system is communicating with a non-Cat system, the remote system may be either full-duplex (echoes every character sent) or half-duplex (doesn't echo sent characters). Using the SETUP command the user can select which type of non-Cat system they are communicating with. ___________________________________________________________________________________ VIII. Disk Operations ___________________________________________________________________________________ The usual complexity of disk operations has been eliminated by making the memory size equal to the mass storage capacity and the invention of the proprietary DISK command. 1. DISK Command One of three things happen when the DISK command is given: 1 - "Playback" in which the contents of the disk are loaded into memory 2 - "Record" in which the contents of memory are stored on the disk 3 - A warning "beep" is made and neither playback nor recording is done The system keeps an identification number on each disk and in memory and can thus figure out which is to be done. If we can use a disk drive that detects when a disk is loaded and can eject electronically, then the DISK command can be eliminated in favor of an "EJECT" command. There is a full read-after-write verification of each write. In addition, the control information is written in two places. If experiments indicate that the disk drives are reliable without complete read-after-write verification, verification on part of the disk may not be done to reduce the time required for disk operations. If the verification fails, the data is re-recorded and verified again. If the verification fails again, a beep is generated. The accompanying explain screen tells the user that the diskette is bad and should be discarded. No attempt is made to skip bad blocks when recording. While the DISK command is executing, the indicator "Disk" appears in the ruler. When the DISK command is successful in recording the text on the disk, the text is "clean", that is all changes to the text have been recorded to disk. If a beep is generated because the disk in the drive is different than the text, as long as the USE FRONT key is held down, the screen portion of the disk in the drive is displayed. This permits the user to see a portion of the text on the disk in the drive to aid in identifying the disk in the drive. The beep is not generated until the screen is read in. When the USE FRONT key is released, the normal screen returns. The accompanying explain screen describes the use of the copy-up function. If the disk in the drive is not blank and is not a Cat disk, instead of reading in the screen portion of the disk, the explain message "Not a Cat disk" is displayed as long as the user holds down the USE FRONT key. The DISK command is designed to fail gracefully. If a disk error is encountered when playing back a text, the command will automatically try to recover the text. The first part of the recovery is to re-read the sector where the error was detected. Next, the drive is recallibrated and the restore operation is restarted. Finally, the error recovery routines are executed. Certain critical information is recorded on the disk in two places. If an error occurs while reading the screen it is ignored. If an error occurs while reading the forth code, the system automatically sets up a default forth environment and loads only the text from the disk. If there are disk errors in the text area, the text is loaded with all characters that are not in the character set replaced by question mark (?) characters. If there are format packets that do not contain valid information, they are replaced by default format packets. Thus, even disk errors will not cause loss of the user's data. If errors are encountered when reading a disk, a beep is generated. If error recovery is initiated, the disk identification numbers are cleared so the text will not save on the disk. This is done so that if the user's disk drive has failed, resulting in read errors, the DISK command cannot be used to write on the disk. If the disk is OK and the drive is bad, this will preserve the data on the disk. The DISK command turns off learning, so Learn sequences that save to the disk will terminate when the DISK command is used. Upon video timeout (see section XIII), the DISK command is automatically invoked if the text is dirty. A complete read-after-write verification is always done. Disk Details Undo: None. Text Memory Utilization: None. Explain Screens: General Disk Screen, Write Protect Screen, No Disk in Drive Screen, Text has not been Saved Screen, Not Enough Room to Copy Up Screen, Disk has Information from Some Other System Screen, Text Empty and Disk Blank Screen, Disk Errors Screen, Bad Diskette Screen. 1. Copy Up It is sometimes necessary to move chunks of text from one disk to another. If a chunk of text is highlighted and the text is clean, then the use of the DISK command will automatically move a copy of the highlighted text into the new text. This is a particular case of the DISK command above. In addition, if the entire text is selected the DISK command will copy up the entire text even if the text is dirty. If there is not enough space in the new text to hold the copied-up text, a beep is generated. Use of the EXPLAIN command will indicate that there is not enough room to copy up. The old text is not lost. Section IX describes the use of calculation in the text. It is possible to copy up calculations as a part of the copied up text. If this is done, there may be a name conflict (see section IX.4) in the new text. This conflict will be indicated the next time the user gives the CALC command. 2. Backups When using computers it is good practice to keep a backup copy of data to protect against accidental loss. The USE FRONT-SHIFT-DISK command can be used to create a backup on a blank disk. Once a backup is made, the main disk and the backup disk are paired with each other. The user can make as many backup disks as desired by repeated use of the USE FRONT-SHIFT-DISK command. If the disk in the drive is not blank, a beep will be generated and the screen portion of the disk in the drive will be read into the screen and will remain there as long as the user holds down the USE FRONT key. An explain screen that indicates that backups can only be recorded on blank disks will be made available by releasing USE FRONT and then pressing USE FRONT-EXPLAIN. If the user continues to hold down the USE FRONT key and presses the SHIFT key and the ERASE key, the disk in the drive will be erased. If the disk in the drive is not blank but is also not a Cat disk, the explain message "Not a Cat disk" is displayed while the user holds down the USE FRONT key. Disks are erased by stepping to each track and writing 4 uS bit cells for at least one revolution. 2.1 Using Backup Disks The user can make as many backup disks as desired. Disks are automatically identified as backups by recording a sequence of 32 identification numbers on each disk. When a text is first saved, 31 of the identification numbers are zeroes and the last number is the checksum of the entire RAM memory of the system. Each time the user plays back a disk, a pointer advances that makes the DISK command record the checksum in the next location in the list of 32 identification numbers. Then, when the DISK command records on the disk a new number is added to the list, one number for each time the disk is played back and then recorded. When the backup command is given and the text is dirty, a number is also added to the list. When the DISK command is given, the text will be recorded if the disk in the drive is blank or if it is the original disk. If the disk in the drive is a backup disk, the backup is recorded. If the disk in the drive is not related, then a beep is generated. When the SHIFT-DISK command is given, if the disk in the drive is blank, a backup will be made. This method of operation permits as many backups as the user desires, but since the backups are determined by a list of 32 identification numbers, if 32 loads and saves are made without backing up, the connection between the main disk and its backup will be broken. Because of the way that the lists of numbers are compared, if the user plays back an old backup disk and then tries to record it on a newer version, the recording will not take place. When backup disks are made, the original disk and all backup disks are connected to each other. Any disk in the group may be edited and recorded any number of times while the other disks are left alone. If the user gives the DISK command with one disk in the drive and then places another disk in the group in the drive and uses the DISK command again, the backup will record the edited information just like the original. To break the connection between two disks the following action must be taken: 1 - Edit and record the first disk using the DISK command 2 - Erase the entire text 3 - Edit and record the second disk using the DISK command The connection between the two disks will be broken and the DISK command will protect against recording changes to one disk on the other disk. 5. DISK command charts of behavior Disk Command (UF-Disk) Text State ---> Clean Dirty Empty | Disk State v Same save save load Backup backup save&backup load Different load beep load (different) Blank savenew savenew beep (empty) Non-Cat beep beep beep (non-Cat) (non-Cat) (non-Cat) Backup Command (Use Front-Shift-Disk) Text State ---> Clean Dirty Empty | Disk State v Blank backup save&backup beep (empty) Non-Blank verify&erase verify&erase verify&erase Definition of operations: load - load text from disk, set flag save - if flag set, add new item to top of list, then clear flag generate new id and put it at top of list write to disk backup - record without changing list then set flag save&backup - set flag then save savenew - clear list then save verify&erase - display screen portion of disk in drive as long as user holds down USE FRONT. If user presses Shift and Erase while holding Use Front, erase disk When recording, write protect status is checked. If the disk is write protected, a beep-write protected is generated. 6. Interaction between the disk command and the SV RAM The Cat includes battery backed up RAM (called the SV RAM) for use by the spelling checker and to store the machine setup. The access to the SV RAM is controlled and checksums are maintained to make validity checking of the data in the RAM possible. When recording, the contents of the SV RAM is recorded. Since access to the SV RAM is carefully controlled, the SV RAM is always valid when recording takes place. When playing back, the checksum of both the spelling checker and the machine setup portions of the SV RAM are checked. If the checksums indicate that the RAM contents are valid, playback does not affect the SV RAM. If the checksums indicate that the contents are not valid, the setup is set to the default value and the spelling dictionary is emptied. A setup version number is stored with the setup data. This permits loading setup information from different ROM versions as long as the setup data is still valid. ___________________________________________________________________________________ IX. Calculations ___________________________________________________________________________________ 1. Number 1.1 Internally, numbers are kept in decimal to eliminate the loss of precision due to binary/decimal conversion. 1.2 Magnitude and precision Numbers are kept to 12 places to the left and 10 places to the right of the decimal point. They are normally printed to two decimal places (for the United States model) to correspond to the usual dollars-and-cents usage. The default may be changed (for the individual number) by editing a number with the usual editing commands. The SETUP command can be used to change the default for a single document. 1.3 Number Punctuation Numbers may be edited to have punctuation to indicate locations of powers of a thousand and to have a decimal point. The system will thereafter keep the notation as edited by the user. The numeric punctuation symbols are country-code specific, but in the United States, commas are used for punctuation and a period is used to represent the decimal point. The SETUP command can be used to select other than the default number punctuation symbols. The manual must explain that numbers are carried to higher precision internally. 1.4 Numbers in the Text The column and relative addressing operators (described below) can refer to numbers in the text. These numbers may be ordinary text and they may have punctuation as described above. In addition, the numbers may be preceded by certain characters: a - If a number is preceded by a -, a (, or a < character, that number will be interpreted as a negative number. For example, -100, (100) and <100> all evaluate to negative 100. b - If a number is preceded by any of the following characters, the preceding characters are ignored: A to Z, a to z, %, $, #, +, {, [, /, >, @, ~, \, lira, degree, paragraph, section, cents, florin, pound, yen, divides, and space. This is done so that numbers with currency marks will convert as numbers. For example $1.00, dm1.00, @1, and >1 all evaluate to 1. c - If a number is preceded by any other character, it evaluates to 0. This is done so a single character can prevent a number from participating in a sum. This makes a checkbook reconciling a simple application for the Cat: just put an asterisk in front of all uncancelled checks. Then the sum operator will calculate your balance. For example *100.00 evaluates to 0. 2. Operators + - * / abs int % sqrt < > = ~ & | These operators stand for addition, subtraction, multiplication, division, absolute value, integer part, percent (multiply by .01), square root, less than, greater than, equal, logical not, logical and, and logical or. The last 6 operators are logical operators that return a result of 0 or 1 and can be used to make decisions within expressions. The abs, int, and sqrt operators operate on an expression contained within parenthesis. For example abs(n) will return the absolute value of the variable n. 3. Expressions Constants and variables may be combined with operators to form expressions. In addition, parentheses can be used to ensure that certain operations are performed first. Expressions are evaluated from left to right, performing operations at the top of the hierarchy first and lower ranked operations later. The order of the hierarchy from highest (top) to lowest is : i. parenthesized expressions ii. unary minus iii. percent iv. exponentiation v. multiplication and division vi. addition and subtraction vii. logical operations 4. Variables Variable names begin with a letter and may contain letters and digits. All variables are global. A given variable can only be defined once. If an attempt is made to define a variable more than once a beep is generated. Subsequent use of the EXPLAIN command will indicate that variables can only be defined once. Variables cannot have the same name as any of the functions. Thus the names of the functions are reserved. If a variable is named the same as one of the reserved names, an error beep is generated. Subsequent use of the EXPLAIN command will indicate that function names are reserved. If a function name is used in an expression a syntax error may occur. The reserved names are: abs, int, sqrt, sum, sumdisplay, average, avg, use, usedisplay Variables can be used to contain values for later use in other expressions. To define a variable, the name precedes the expression that produces the variable, separated by a colon. For example: Avar:1+1 Would assign the value of 1+1 (or 2) to the variable "Avar". Variable names are case sensitive, that is, Avar and avar would be two different variables. If a variable is referred to before it is defined, the result of any calculations using the undefined variable is an Undefined-Not-A-Number (UNAN), so chains of calculations that have an undefined variable at their root will all produce UNAN as results. The result UNAN displays as ???? If the result of a calculation would assign a number that is too large to be represented in the number system, an Overflow-NAN is produced. The Overflow-NAN displays as >??? Calculation Details Undo: Calculation cannot be undone Text Memory Utilization: Implementation dependent Explain Screens: General calculation screen, Can't compile the expression, Variable name already in use 5. Column Operators A column is defined as a set of values vertically stacked at the same tab location (by tab count, not by displayed position) with not more than one return between each line. A column cannot contain a page or document character. A column can be operated on by the following column operators: sum, average, sumdisplay Placing "sum" or "average" in an expression at the bottom of a column, selecting the expression and using the CALC command calculates the sum or average and uses that result in evaluating the expression. The function name "avg" can be used in place of "average". The function "sumdisplay" is the same as "sum" except that it uses the displayed, rather than the underlying values. The treatment of tab field overflow by using the next tab stop position instead of the absolute tab location on the next line will lead to errors with column operators due to the fact that columns will look lined up on the screen but will actually have differing numbers of tab characters separating them. 6. Relative Address Placing "use(x y)" in an expression allows you to reference values in that column or in adjacent columns. The y-value is vertical displacement, with down being positive, and up negative. The x value is horizontal displacement with right being positive and left negative. The y value is optional, defaulting to 0. Both x and y can only be numbers, not expressions. The system will also accept [x y] to indicate the relative addressing function, but the square brackets are not found on all keyboards. Another function "usedisplay(x y)" is also provided. This function is similar to sumdisplay and uses the displayed value rather than the underlying value. If a location in the text referred to by a relative address does not contain a number, use of that relative address will evaluate to Not a Number which displays as ????.?? when shown in the text. The function "use(0 0)" can be used, for example, to make a counter that increments each time the calc command is given. To use the function as a counter the user must first initialize the pocket by pushing down the starting count (for example 1), then popping up and editing the expression to be "use(0 0)+1". Further use of the calc command will cause the result to increment each time. 7. Pockets When an expression has been compiled, the text of the expression disappears from the text and the result of the calculation appears in the text. To distinguish the result from ordinary text, the result is displayed on the screen with a dotted underline. The expression is hidden from view in a "pocket" following the first result digit. The pocket is protected against accidental deletion. If the first digit of the result is deleted, the pocket is shifted to the new first digit (which used to be the second digit). The pocket is only deleted when the last digit of the result is deleted. The dotted underline attribute of result digits is attached to the individual digits, so if a part of the result is dragged away from the pocket, the dotted underline is dragged with the result digits. Result digits that have been separated from their pocket are called "orphaned results". The dotted underline is removed from orphaned results when the CALC command is given. 8. CALC The CALC command evaluates calculations in the text. When the CALC command is given a Recalc operation is made on the whole text. The Recalc works in three passes which guarantees that correct answers are produced after a single Recalc. Recalc is designed so that it can be interrupted by pressing any key. When Recalc is interrupted a beep is generated. Use of the EXPLAIN command indicates that the calculation was interrupted and that the answers may not be correct. It also explains how to complete the calculation (by pressing USE FRONT-CALC again). While Recalc is taking place, the cursor stops flashing and the waiting indicator is displayed in the ruler. Recalc can be restarted as explained in 1 below. When the CALC command (USE FRONT-CALC) is given, one or more of the following actions occur: 1 - Recalc If the highlight is not extended and the highlight is on ordinary text or anywhere on a popped result or its expression, a recalc pass is begun. Recalc calculates the value of all compiled expressions and inserts the value (called the result) in the text in place of the old result. When the highlight was anywhere on a popped expression, the cursor will be shifted to the last character of the result. (see automatic pushing) 2 - Popping If the highlight is not extended and the highlight is on an unpopped result, the expression associated with that result is "popped" and an internal flag called the "poppedflag" is set. This means that a copy of the hidden expression is displayed as dotted-underlined text to the right of the result and separated from it with a highlighted underscore. The copy of the popped expression is highlighted so it can easily be deleted. The original source text of the result remains hidden, protected in case the surface copy is deleted. The poppedflag is provided to make it faster and easier for automatic pushing to detect the presence of popped source text. 3 - Automatic pushing When the CALC command is given, all expressions that have been popped are automatically pushed. During pass 1 of recalc, when the poppedflag is set in a definition, the popped up dotted underlined expression is compared with the hidden copy. If they don't match, the surface expression is recompiled. If they match, nothing is done. If there is no surface text the poppedflag is simply cleared. If the poppedflag is still set during pass 3, the hidden text is discarded, the surface text is hidden, and the poppedflag is cleared. 4 - If the highlight is extended, either the highlighted text will be compiled into a pocket (this is called "pushing") or all the results in the highlight will be popped (this is called "multiple popping"). 4.1 - Multiple popping If the highlight is extended, the highlighted text is scanned for the presence of unpopped result characters (characters of a result not preceding their corresponding popped expression). If there are any, the unpopped results are popped with dotted underlines, as if the user had popped them individually. When all the unpopped results are popped, the highlight collapses to a wide cursor at the end of the highlighted text. Popped results are not affected. If all the results in the selection are already popped, a recalc is initiated, which will automatically push. If the highlight does not contain an unpopped expression, the highlighted text will be pushed. 4.2 - Pushing If the highlight is extended and the highlighted text does not contain a calctoken or the highlighted text does contain a calctoken and the first character of the highlight is not a result character an attempt will be made to compile the highlight and place it in a pocket. There are three possible cases: 1 - Push a new expression - If the highlight does not contain any dotted underlined characters, the highlight is compiled and placed in a pocket. A result is generated and a Recalc is begun. More than one new expression can be pushed by one press of the CALC command. If multiple expressions are to be pushed, the individual expressions must be separated by a semicolon, tab, return, page, or document character. 2 - Push a popped expression - If the highlight contains dotted underlined characters, the highlight and the text preceding the highlight is scanned for a popped result. The scanning stops when a character with no dotted underline is found. If one is found, the contents of the pocket are examined. If the pocketed expression has the same name as the highlighted expression, or if both are unnamed, the highlighted expression replaces the expression in the pocket. Otherwise, a new pocket is created (there was either an orphaned result character or a new expression). 3 - The highlight contains or is associated with a popped result - If the highlight contains all of a popped expression, a recalc pass is begun. 9. Applying Non-CALC Commands to Text Containing Calculation Pockets The behavior of a command applied to text containing one (or more) pockets will depend both on the command and on whether or not an included expression is popped. A special internal operator called redefinerror is used to transfer the operation of calculations from one text to another. The calctoken redefinerror checks the following dotted underlined characters for the presence of source text, that is, any characters not in the set {+-0123456789,.}. If there is no source text, the hidden text is compiled. If there is source text it is compiled, and the poppedflag is set which will cause the source text to be removed during the final pass of recalc. Redefinerror is used in the operations below: a - PRINT The visible text is printed. The hidden contents of pockets are not printed. b - Copy-up and SEND In copy up, and Swyft-to-Swyft SEND, any encoded calctokens are replaced with the calctoken for redefinerror. In Cat-to-non-Cat SEND, only visible text is sent. c - COPY Unpopped results will be copied as surface text only; the hidden content of pockets is not copied. Popped expressions will be copied "active" by not copying the hidden text and replacing the encoded calctoken in the copy with the one for redefinerror. Named expressions will be copied by truncating their popped expressions to just the name (without a colon). Unnamed expressions will be copied untouched. d - Document Lock When a document is locked, the text in it cannot change. Thus locking a document marks all the calc pockets in the document so they will not change their answers when recalculating. Results that are generated in a locked document can still be used in other parts of the text. If the cursor is located on a result when the Calc command is given a recalc will be performed. When the recalc completes, the cursor will be on the last character of the result. 10. Compilation Errors When a name conflict or other problem prevents successful compilation of an expression, a beep occurs, and the highlight is moved to the first offending character. There are several possible cases: 1 - Manual pushing. When pushing, if a compilation error is detected, the highlight is simply collapsed to the first offending character. Since the compilation failed before a result was generated only the expression remains in the text as normal text (without dotted underlines). 2 - Automatic pushing. When automatic pushing fails, the highlight is collapsed to the first offending character. The old result remains in the text, but the dotted underlines are removed from all result and expression characters. 3 - Copied Up and Sent expressions. When compilation fails with redefinerror, the hidden source text is popped up, and the dotted underline is removed from both the result and the expression characters. A narrow cursor is moved to the first offending character in the expression. ___________________________________________________________________________________ X. Future (Third-Party or Add-on) Software ___________________________________________________________________________________ 1. ANSWER This proprietary command sends the highlighted text to a waiting program. This allows a program to wait for a response and allows the user to use the editor to formulate that response. If there is no waiting program, an error beep is generated and an "Answer command not enabled" screen is made available. Since the initial system will not have any add-on software, the command will be disabled. The ANSWER command can be enabled by setting the flag Answer?. This flag can be set in a production machine by running the diagnostics, exiting to forth, and typing: Answer? on Installing software that will use the command will also enable the command. The ANSWER command itself does not autoextend, but the waiting program can autoextend if desired. The forth interpreter autoextends. If no query is in effect when the ANSWER command is given, the "Answer command not enabled" screen is returned. In addition, a second flag, also settable from forth is available. This flag, called Forth?, enables all the features of forth as well as enabling answer. Thus it enables the second disk command (UF-;), enables UF-Shift-Space, and makes it possible to execute forth commands directly from the UF-Answer command, without needing a waiting query to make the command work. Both Forth? and Answer? are contained in RAM. When the user turns on the system, both are disabled. If a forth query is in effect and a developer wishes to communicate with forth, UF-Shift-Space can be used to break out into forth and communicate directly with forth. Answer Details Undo: None Text Memory Utilization: Depends on Program Explain Screens: Answer Command Not Enabled Screen, Forth Error Screen (only if ANSWER is enabled). User installed programs can install explain screens as desired. ___________________________________________________________________________________ XI. Sorting ___________________________________________________________________________________ 1. SORT The SORT command allows the user to sort "records" based on the contents of a user-specified "field" in the record. The records to be sorted are all or part of the user's text. A "record" is the text between two record separators, a record separator being one or more break characters (return, page or document, but not an automatic page break). The number of break characters that define a record separator can be adjusted using the SETUP command to 1, 2, or 3 breaks. If there are more breaks than specified at the end of a record, the extra breaks are appended to the end of the record. Thus if there are two returns at the end of a record and the record separator is defined to be one return, that record will still end with two returns after sorting. A "field" is a part of a record. Fields are the text contained between two field separators, a field separator being a tab or a break character. The first field in a record is the text starting at the beginning of the record and ending one character before the first tab or break character in the record. If the record separator is defined to be two or more break characters then break characters are field separators. If the record separator is defined to be one break character then only tab characters are field separators. Two consecutive field separators define an empty field. Consecutive break characters sufficient to make a record separator are interpreted as a record separator, not one or more empty fields. For example, if the record separator is set to three breaks, any sequence of two breaks would be considered an empty field. The selection indicates two things to the Sort command: The range of records to be sorted and which sort field to use. To indicate the first record to be sorted, the cursor is leapt to the beginning of the first record to be sorted. To select the field, the cursor is placed on any character in the desired field, or on its preceding field separator, in the last record to be sorted. The SORT command is invoked. If the selection ends on the record separator, the first field is selected. When the SORT command is invoked, it adjusts the size of the selection so the selection always starts on the first character of the first record and ends at the last character of the last record separator. The beginning of the selection will be adjusted forward only, so if the selection starts in the middle of the first record, the first record will not be sorted. If the selection starts on a break character before the first record, the selection will be adjusted to start at the first character of the first record. The end of the record will be adjusted from a character located in the field to be sorted on to the end of the final record separator. If there are not enough break characters at the end of the last record to define a record separator, or if the highlight is not extended when the SORT command is given, a beep is generated and an explain screen is generated. 1.1 Ascending and Descending. In this discussion "larger" means "more towards the end" in a list of ascending order and "smaller" means "more towards the beginning" in a list of ascending order. USE FRONT-SORT sorts in ascending order, that is, largest record last. USE FRONT-SHIFT-SORT sorts in descending order, that is the largest record first. 1.2 Alphanumeric sort criteria. To determine the position a record will assume in the sort order, the field is broken into numeric subfields and alphabetic subfields. The subfields are compared from left to right and the first subfield that is larger terminates the comparison and orders the records. If two fields are equal, their order is not changed by the sort operation. The alphabetic subfields are sorted using the country-code-specific sort order, scanning left to right. If two alphabetic subfields are not the same length, the longer field is considered larger if they match up to the length of the shorter field. A numeric subfield is any sequence of numerals (0 to 9 inclusive), optionally separated by the country-code-specific numeric punctuation mark (in the United States, a comma). Numeric subfields may also optionally include one (or more) country-code-specific decimal point punctuation mark (in the United States a period). If the first subfield in a field is a number, a + or - can be used to indicate the sign of the number. If either a + or a - appears in any other location in the field it is considered all or part of an alphabetic subfield. Numeric subfields are compared as follows: 1 - Commas are ignored. 2 - If only one of the subfields has a negative (-) sign, that subfield is sorted smaller. If both of the subfields have negative (-) signs, the final result of the comparison is reversed. A - is only interpreted as a negative sign for the first subfield in a filed, as described above. 3 - The part of the subfield starting with the first character after the sign up to but not including the decimal point is compared as a whole number. If only one of the fields has numerals before the decimal point, that field sorts larger unless all the numerals are zeros, in which case the subfields are so far considered equal and the comparison proceeds. 4 - The part of the subfield following the decimal point up to the end of the subfield or up to but not including the next decimal point is called the "fractional part." There may be several fractional parts if, for example, the subfield being sorted is a section header of the form 1.01.2. Fractional parts are compared alphabetically from left to right. If the two parts are of different lengths and match up to the length of the shorter part, and any of the remaining digits in the longer part are not 0, then the longer part is considered larger. If the remaining digits are 0, the two parts are considered equal and the comparison continues. If one subfield has more fractional parts than the other and if the two subfields match up to the length of the shorter subfield, the comparison proceeds as follows: If the remaining fractional parts in the longer subfield contain at least one nonzero numeral, that field is larger, otherwise the two subfields are equal. 5 - If all corresponding parts of the subfield are equal in value but not in length, and all preceding and remaining subfields in the field are equal, the field with the longest numeric subfield is larger. If more than one pair of corresponding numerical subfields differ in length, the first such pair encountered determines which field is larger. Sort Details Undo: A sort just completed can be unsorted Text Memory Utilization: 18 bytes/record + longest record + format packets if required Explain Screens: General Sort Screen, Text Full Screen, Highlight not extended screen ___________________________________________________________________________________ XII. Macros ___________________________________________________________________________________ 1. LEARN When LEARN is invoked an indicator appears in the ruler and, in addition to its normal effects, every subsequent keystroke is recorded. When LEARN is invoked, leaping does not use a circular search, rather the search proceeds to the end of the leaping region and if the pattern is not found, the leap fails. The size of the leaping region can be reduced using the LOCAL/GLOBAL LEAP command. LEARN is invoked by USE FRONT-LEARN-"digit", where "digit" may be any single digit among the keys {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}. Thus 10 LEARN commands may be devised and simultaneously stored. If other keys are pressed before assigning the command to a number key the command is canceled. WHEN USE FRONT-LEARN is pressed an indicator "Learn" appears in the ruler. When the digit key is pressed, the ruler indicates the digit by displaying "Learn N" in the ruler (where N is the digit pressed). When the user completes the desired sequence of operations, LEARN is terminated by pressing USE FRONT-LEARN. As soon as the digit key is pressed, the old contents of that particular learn sequence are erased. The erased sequence is lost and even the UNDO command cannot restore it. When the Learn buffer is out of room, a beep is generated and an explain screen that indicates that the learn has terminated recording because it is out of room. Once the sequence is recorded, it can be played back by holding down USE FRONT and pressing the chosen digit key. This initiates a playback of the recorded keystrokes. 1.1 Compound Learns. If another LEARN command is given while recording, it ends the recording and causes the specified LEARN command to play back. 1.2 Circular Learns. If the LEARN command being recorded is given while recording, it ends the recording and executes the LEARN command being recorded. This has the effect of playing back the LEARN command over and over again. In this manner the user may program, e.g., "global search and replace" operations. 1.3 LEARN playback stops at any error condition and upon a failed LEAP. As described above, leaping does not search circularly when LEARN is active. The user can also stop the LEARN playback by pressing any key while the LEARN is playing back. 1.4 If the highlight is extended and the sequence USE FRONT-LEARN USE FRONT-number USE FRONT-LEARN is given, the contents of the highlight are copied into the specified LEARN key. When learn playback is requested, the copied contents is inserted into the text. This provides the phrase storage function in addition to user defined macros. 1.5 Interaction between Learn and other commands When Learn is made active (either recording or playing back) the KB I/II flag is set to KB II and the Shift Lock is reset. While learn is active, all toggling commands take their named effect on the first press. See each command for a detailed description. Learn Details Undo: Last action before LEARN was stopped. Text Memory Utilization: As required by the learned commands and typing, or the stored phrase. Explain Screens: General Learn Screen, Text Full Screen ___________________________________________________________________________________ XIII. UNDO, stopping, timeout, and EXPLAIN ___________________________________________________________________________________ 1. UNDO This command undoes the previous operation. Its action is discussed throughout this document in association with every operation it can affect. When an operation is undone, memory is used to store the old state of the text. Since undone operations can be undone, the memory used for undo is needed until the undo is no longer possible. Thus, for example, erasing a large section of text does not free up space in the text immediately. The undo buffer is released when the user types or gives the next command. Undo Details Undo: UNDO can be undone. Text Memory Utilization: Dependent on command, generally not larger than the selection. Explain Screens: None 2. EXPLAIN When invoked, and for as long as the USE FRONT key is held, the contents of the screen disappear and are replaced by an explanation. After a beep, and until the user types or gives the next command, invoking EXPLAIN produces a screen that describes the cause of the beep and the appropriate user actions to remedy the problem. If there has not been a beep immediately preceding the use of the command, then the default EXPLAIN screen, an introduction to using the Cat, appears. 2.1. Extended EXPLAIN If the user continues to hold the USE FRONT key after pressing EXPLAIN and then presses any command key, a general EXPLAIN screen for that command is shown for as long as USE FRONT continues to be held. Explain Details Undo: None. Text Memory Utilization: None. Explain Screens: One for every beep and one for every command as described throughout this document. 3. Stopping During any process or operation which extends over time -- sending, printing, answering (if the program is so designed), sorting, spell-checking, playing back a LEARN, video off, or calculating, for example -- pressing any key will stop the process and return control to the user. The DISK command cannot be stopped. When the user requests stopping by pressing any key, that keystroke is discarded and any character typed is not inserted in the text. Stopping Details Undo: This will resume or restart the stopped operation (where possible). Text Memory Utilization: None. Explain Screens: None. 4. Timeout A timer is started when the system is idle. If the timer times out before there is any system activity, the system times out. If the text is dirty when the system times out the text is saved and then the screen is turned off. If the text is still dirty after the attempted save (a write-protected disk, for example would cause this) the screen remains on to indicate that the text is still dirty. The timer is reset by any user action or any system activity such as printing or receiving. If, because the save operation failed, the screen is not blanked, the timer starts over and every time the timer times out another effort to save the text is made. If the text is clean or empty when the system times out, the screen turns off with no disk operation. When the screen is cleared, an indicator appears on the screen so the user can tell that the machine is on. The indicator should move to prevent screen burn. ___________________________________________________________________________________ XIV. Keyboard ___________________________________________________________________________________ See the attached diagram. The locations of all the commands are indicated. In addition, the control codes transmitted by the SEND CONTROL command are indicated. The system supports 17 different keyboard layouts. By using the SETUP command the user can specify which keyboard layout is to be used so any keyboard can be used to type any character that can be typed on any version of Cat. 1. The keyboard buffer The keyboard is scanned by the main processor. Scanning is invoked by the periodic interrupt. The result of the interrupt code is a buffer containing key up and key down events. Higher level code uses these events to keep track of which keys are held down (like a leap key being held down during a leap). While the interrupt executes, the system may notice that the keyboard buffer is full. If this happens, the interrupt code must not add any key events to the keyboard buffer because some key up codes may be lost, which would result in the rest of the system thinking that a key that was not down was stuck down. To avoid this problem, the interrupt level code checks to see that the keyboard buffer is not full before scanning the keyboard. If the buffer is full, the interrupt code simply stops scanning until there is room in the buffer. Since scanning is stopped, the interrupt code saves the old value of the keyboard state. Thus, when scanning resumes at a later date, the first scan produces a number of key events while the keyboard buffer catches up with the current state of the keyboard. However, no up events are ever lost using this method. ___________________________________________________________________________________ XV. Spelling Checker ___________________________________________________________________________________ The spelling checker includes two commands: SPELL CHECK-LEAP (SCL) and ADD SPELLING. SCL is invoked by holding down a LEAP key (not USE FRONT) and pressing UNDO, which starts a scan from the beginning of the word in which the cursor sits in the direction indicated by the chosen LEAP key. Leap is circular in the leaping region. If there are no misspelled words in the leaping region, the cursor rebounds. If a word that is not in the spelling dictionary is found, the narrow cursor is positioned on the first letter of the word and the text pointers are left positioned so that pressing both LEAP keys will highlight the word. Invoking SCL or LEAP AGAIN will move to the next misspelled word. A ruler indicator is provided to indicate a Spell Check Leap is in progress. When a Spell Check Leap is invoked, the normal leaping operation does not work. That is, when a Spell Check Leap is begun, characters cannot be added to the leap pattern. If the user attempts to add characters to the pattern, a beep is generated and the message "Can't add letters to the Leap Pattern while Spell Checking". If the spell check function were invoked by USE FRONT-SPELL CHECK this problem would be avoided. Spell Check Leap may take a long time to complete the leap if the entire text is being checked. Thus, when any key is pressed, the leap will terminate at the conclusion of the spell check of the current word. The cursor will be moved to the end of that word. No error indication is made. When a Spell Check Leap is invoked, use of LEAP AGAIN will cause another Spell Check Leap. Thus the user can change the direction of the leap by releasing the LEAP key and pressing the other LEAP key and using LEAP AGAIN. To add a word to the dictionary, highlight the word and press USE FRONT-ADD SPELLING. USE FRONT-SHIFT-ADD SPELLING deletes the highlighted word from the dictionary. There is no error indication if there is not enough room to add a new word. Rather the least frequently used word is removed and the new word added. There is no error indication if the word being deleted is not in the dictionary. The user-defined dictionary resides in battery-backed-up RAM that is not lost when the power is turned off. When the text is saved, the contents of the user-defined dictionary are also saved. The SETUP command will provide a way to transfer the dictionary from the disk to the battery-backed-up RAM. If the user-defined dictionary is empty, it will automatically be loaded when a disk is played back. Spell Checker Details Undo: Add/Delete can be undone. SCL can be undone to previous cursor state. Text Memory Utilization: Adding a word to the user spelling dictionary uses up space in the dictionary. Explain Screens: General Spelling Checker Explain Screen, General Add Spelling Explain Screen. 1. Spell Check and Spelling Verification (SV) RAM The user dictionary is stored in the SV RAM. Before accessing the SV RAM, the powerfail bit is tested so there will never be a power failure while the AV RAM is being accessed. Thus the SV RAM should always be valid. At power up, if the SV RAM is found to be invalid, the RAM is cleared. In addition, the SETUP command can be used to load a dictionary from disk. 2. Adding or Deleting Multiple Words from the User Dictionary If the extended highlight contains multiple words when the ADD SPELLING or SHIFT-ADD SPELLING command is given, all the highlighted words are either added to or deleted from the user dictionary. This permits easy transfer of a group of specialized words from one text to another. ___________________________________________________________________________________ XVI. SETUP ___________________________________________________________________________________ The SETUP command permits the user to tell the system what peripherals are attached and how the documents are to be formatted. Using the SETUP command causes setup information to appear on the screen. While either USE FRONT key is held down, the setup information remains on the screen. The setup screen contains text describing the parameters that can be affected with the setup command and fields where the user can set the parameters. When the setup information is displayed on the screen, the field to be modified is made bold. Tapping the SPACE key causes the bold emphasis to move to the next field. Most of the fields have a small number of descriptive choices. When the emphasis is on one of these fields the alterable part of the descriptive text is displayed in the bold font. The LEAP keys are used to select the various choices. If the LEAP key is held down, it autorepeats. Several fields contain numeric information. When the emphasis is on one of these fields and the LEAP key is held long enough to autorepeat, the number increments by 10 on each repeat. If the desired number is overshot by the rapid incrementing, pressing the opposite leap key will cause the number to decrement, permitting rapid adjustment to precise values. The text and fields for all the parameters that can be set will not fit on the screen at the same time, so the fields are grouped into logical sections that will fit on the screen. Pressing the SETUP key while holding down USE FRONT moves the emphasis to the next screen. The USE FRONT-SETUP command is used to begin the setup dialog. The first section displayed is the setup for document specific information. All documents containing highlighted characters when USE FRONT is released will have their document setup information changed to match the setup information displayed on the screen. Additional sections are used to set the machine default information. The machine default information is global to the machine and has no effect on the document specific setup information. The USE FRONT-SHIFT-SETUP command resets all setup information to the default values for the machine setup information. The document setup is not affected. In the description below, following the name of the field is the default value for the USA model. The square brackets contain the options that can be selected. The screen contents for each of the sections are as follows: Document Setup First page number 1 [-99 thru 2000] Page number that prints 2 [-99 thru 2000] Page length Letter (11") [Letter (11"), Legal (14"), A4 (297 mm), B5 (257 mm), Half Letter (5.5"), Stmt (8.5"), A5 (210 mm), B6 (182 mm)] Top margin 1 inch [1/2, 3/4, 1, ... , 2"] Bottom margin 1 inch [1, ... , 2"] Machine Setup Keyboard USA [ -see list below- ] CRT screen mode Black-on-white [Black-on-white, White-on-black] Error indicator Beep [Beep, Visual, Beep and Visual] Screen blanking time 5 minutes [1,3,5,15,30,60,Never] Load spelling from disk No [No, Yes (only Yes once)] Load setup from disk No [No, Yes (only Yes once)] Decimal and number punctuation 1,000,000.00 [1,000,000.00, 1.000.000,00, 1'000'000.00] Decimals in calculations 2 [0 to 10] SORT record separator 1 break [1 break, 2 breaks, 3 breaks] (for some countries) Explain Screen Language German [German, French, Italian] Main Printer Setup Connected to Parallel port [Parallel port, Serial port] Printer type Canon Cat180 [Canon Cat180, LBP, AP400 Series, AP300 Series, New AP Series, BubbleJet Printer, Common Printer, No printer] (Fill in with Setup information pertaining to the printer selected) (Fill in with Setup information for serial port --if selected for main printer) (If main printer is connected to the parallel port) Serial Port Connection Alternate printer [Alternate printer, Send Command] Serial Port Printer Setup (If Serial Port Connection is Alternate Printer) Printer Type No printer [LBP, AP400 Series, AP300 Series, AP100 Series, New AP series, BubbleJet Printer, Common Printer, No printer] (Fill in with Setup information pertaining to the printer selected) (Fill in with Setup information pertaining to the serial port setup) Serial Port Setup (if Serial Port Connection is Send Command) Communication Mode Full-Duplex [Full-Duplex, Half-Duplex, Cat-to-Cat] Answerback Yes [Yes, No] Line terminator CR [None, CR, CR/LF] (Setup information pertaining to the serial port setup) Alternate Printer Setup (if main printer is connected to serial port) Printer Type No printer [Canon Cat180, LBP, AP400 Series, AP300 Series, New AP series, BubbleJet Printer, Common Printer, No printer] (Fill in with Setup information pertaining to the printer selected) Internal Modem Setup (If V777 has internal modem and Serial Port Connection is not Send Command) Baud rate Autoselect 300 or 1200 [300, Autoselect 300 or 1200] Data bits 8 [7, 8] Parity None [None, Odd, Even] Stop bits 2 [2, 1, 1.5] Communication Mode Full-Duplex [Cat-to-Cat, Full-duplex, Half-duplex] Non-carrier timeout 30 seconds [2 seconds, 30 seconds, 60 seconds, 180 seconds] Answerback Yes [Yes, No] Line terminator CR [None, CR, CR/LF] Rings for autoanswer Don't autoanswer [Don't autoanswer, 1, 3, 5, 7] Cat telephone ring sound Medium [Off, Slow, Medium, Fast] Default Document Setup First page number 1 [-99 thru 2000] Page No. Print from 2 [-99 thru 2000] Page Length Letter (11") [Letter (11"), Legal (14"), A4 (297 mm), B5 (257 mm), Half Letter (5.5"), Statement (8.5"), A5 (210 mm), B6 (182 mm)] Top margin 1 inch [1/2, 3/4, 1, ... , 2"] Bottom margin 1 inch [1, ... , 2"] Canon Cat180 Setup Daisy wheel USA [USA, FRG, FRANCE, ... , ASCII] Character pitch 10 pitch [10, 12, 15] Left margin offset 0 [0 to 127] (if 12 pitch) Left margin offset 8 [0 to 127] (if 15 pitch) Left margin offset 20 [0 to 127] Print mode Bidirectional [Bidirectional, Unidirectional] Cut sheet feeder Yes [No, Yes] Pause between sheets No [Yes, No] LBP Setup Underline prints as italics No [No, Yes] Character font Courier [Gothic, Pica, Elite, Courier] Character pitch 10 pitch [10, 12, 15] Left margin offset 0 [0 to 127] (if 12 pitch) Left margin offset 8 [0 to 127] (if 15 pitch) Left margin offset 20 [0 to 127] New AP Series Setup (Same for AP400 series, AP300 series) Daisy wheel USA [USA, FRG, FRANCE, ... , ASCII] Character pitch 10 pitch [10, 12, 15] Left margin offset 0 [0 to 127] (if 12 pitch) Left margin offset 8 [0 to 127] (if 15 pitch) Left margin offset 20 [0 to 127] Print mode Bidirectional [Bidirectional, Unidirectional] Cut sheet feeder No [No, Yes] Tray selection A [A, B] Pause between sheets Yes [Yes, No] AP100 Series Setup Daisy wheel USA [USA, FRG, FRANCE, ... , ASCII] Character pitch 10 pitch [10, 12, 15] Left margin offset 0 [0 to 127] (if 12 pitch) Left margin offset 8 [0 to 127] (if 15 pitch) Left margin offset 20 [0 to 127] BubbleJet printer Setup Character set Standard [Standard, Secondset] Character pitch 10 pitch [10, 16.3] Left margin offset 0 [0 to 127] (if 12 pitch) Left margin offset 25 [0 to 127] Print mode Bidirectional [Bidirectional, Unidirectional] Cut sheet feeder No [Yes, No] Pause between sheets Yes [Yes, No] Common Printer Setup Underline prints as italics No [No, Yes] Characters per inch 10-pitch [10-pitch, 12-pitch, 16.8-pitch] Left Margin Offset 0 [0, 8, 25] Print mode bidirectional [bidirectional, unidirectional] Pause between sheets No [No, Yes] Serial Port Setup Baud rate 9600 [110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400] Data bits 8 [7, 8] Parity None [None, Odd, Even] Stop bits 1 [2, 1, 1.5] Setup Details Undo: SETUP cannot be undone. Text Memory Utilization: None, (comma)1 space required for undo buffer Explain Screens: General Setup Explain Screen, Spelling Dictionary or Setup Information not on Disk Screen Keyboard Name List: 1 USA 2 CANADA 3 LATIN 4 NORWAY 5 DENMARK 6 SWEDEN 7 NETHERLANDS 8 FRG 9 SWISS 10 FRANCE 11 U. K. 12 SPAIN 13 ITALIA 14 S. AFRICA 15 JAPAN 16 ASCII 17 DVORAK 1. Interaction between SETUP and SV RAM Part of the SV RAM is reserved for use by the SETUP command. When the UF key is released, the setup that the user has selected is written to the SV RAM. The last item written is the checksum. There are two checksums, one for user dictionary and one for setup information. On power up, the SV RAM is checked and if the RAM is valid, the setup in the SV RAM is used. If the SV RAM is invalid, the default setup is stored. The default is determined by using the keyboard country code to select one of the default vectors. V777 Country Specific Information Country Decimal Number Page Modem Spell Code Punct. Punct Length Check 00 USA . (period) , (comma) 11 Internal Yes 01 Canada (Quebec) . (period) , (comma) 11 Internal No 02 U. K. . (period) , (comma) A4 External Yes 03 Norway , (comma) . (period) A4 External No 04 France , (comma) . (period) A4 External Yes 05 Denmark , (comma) . (period) A4 External No 06 Sweden , (comma) . (period) A4 External No 07 Japan . (period) , (comma) A4 Internal No 08 West Germany , (comma) . (period) A4 External Yes 09 Netherlands , (comma) . (period) A4 External No 0A Spain , (comma) . (period) A4 External No 0B Italy , (comma) . (period) A4 External No 0C Latin America . (period) , (comma) A4 External No 0D South Africa . (period) , (comma) A4 External No 0E Switzerland . (period) ' (apost.) A4 External No Any other keyboard code: ascii . (period) , (comma) 11 Internal Yes ___________________________________________________________________________________ XVII. Document Lock ___________________________________________________________________________________ Invoking the DOCUMENT LOCK command toggles the lock state of all documents containing a part of the highlight. If Learn is active, the first press of the DOCUMENT LOCK command locks the highlighted documents. A locked document is displayed with a gray border. It can be leaped, scrolled, or creeped into, it can be copied, and moved (as an entity) but no changes (additions, deletions, or transpositions of text) may be made within the locked document. If text within a locked document is copied, it appears at the first unlocked position after the document. The copied text is not locked, even if the entire locked document is copied. Text received while the cursor is in the locked document is inserted at the first unlocked position after the document. If text is dragged into a locked document, the cursor returns to the starting point and a beep is generated. The accompanying EXPLAIN message indicates that locked documents cannot be changed. Text cannot be dragged out of a locked document as that would change the document. When a document is locked, all the pocketed expressions are modified so that their values will not be changed by the CALC command. When the document is unlocked, the pocketed expressions are returned to their normal state. When the highlight contains locked text and unlocked text, any commands that would require changing the text will cause a beep and not change the text, even the unlocked regions. Document lock is modal and will cause users to make mode errors. Document Lock Details Undo: Toggles the action. Text Memory Utilization: Lock packets. Explain Screens: General Locked Text Explain Screen, Locked Text cannot be changed screen ___________________________________________________________________________________ XVIII. Setting LOCAL and GLOBAL leap. ___________________________________________________________________________________ The system is in global leap mode when it is turned on. Invoking the LOCAL/GLOBAL command toggles the system between global and local leap. If Learn is active, the first press of the LOCAL/GLOBAL command makes the highlighted documents the leaping region. The effect of local leap mode is to constrain the cursor to the region bounded by the first document character before the highlight to the first document character after the highlight when the LOCAL/GLOBAL command is given. Thus if the highlight is not extended, the LOCAL/GLOBAL command restricts the cursor to the region bounded by the two document characters that surround the document containing the cursor. If the highlight was extended when the LOCAL/GLOBAL command was given, there may be several documents in the local region. If the entire text is highlighted, the local leaping region would be set to the whole text. In this case, the LOCAL/GLOBAL command does nothing. When the highlight is not extended, a pointer saves the location of the potential extent of the highlight. This location may not be in the local leaping region when the local leaping region is defined. If it is outside the region, the pointer is adjusted to the beginning or end of the local leaping region, depending on which is closer. When the system is in local leap mode the cursor cannot be moved outside the local region. Otherwise the local leap mode has no effect on system operation. The user can type anything in the local region, including document characters, and the bounds of the local region will not be moved. When the system is in local leap mode, the initial and final document characters in the local region cannot be deleted and the cursor cannot be narrow on the initial document character in the local region nor wide on the final document character in the region. This behavior is exactly analogous to the behavior of the initial and final document characters in the text when the system is in global leap mode. Local leaping is a mode which will cause users to make mode errors. Local/Global Details Undo: Returns local/global to its previous state Text Memory Utilization: None Explain Screens: General Local/Global Explain Screen ___________________________________________________________________________________ XIX. TITLES command. ___________________________________________________________________________________ If the SETUP command is used to set the first page number of a document to 0 or a negative number, the text between the document character and the first page character become a "document title". The TITLES command can be used to view all the document titles in the text without seeing the accompanying documents. Any documents that are untitled will not be seen using the TITLES command. Invoking the TITLES command causes all titles, separated by unnumbered page break symbols, to appear as long as the USE FRONT key continues to be held. Tapping a LEAP key can, if there is more than one screenful of titles, be used to scroll title-by-title to successive or previous screenfuls of titles. Except for the fact that the characters between the document character and the first page character are displayed by the TITLES command, the document character, the page character and all characters in the title are ordinary text. In particular, if the document character is deleted, the document title becomes part of the last page in the previous document. The functionality of the TITLES command can be achieved by using LEAP AGAIN with a document character as the pattern. Titles Details Undo: Returns system to previous state and cursor to previous location Text Memory Utilization: None Explain Screens: General Titles Explain Screen [ FINIS ]