CHAPTER 7 THE SCREEN EDITOR (E:) The screen editor uses both the keyboard handler and the screen handler to provide interactive control of the computer. In fact, the keyboard handler, the screen handler and the screen editor are contained in a single section of code and are therefore very closely related. The editor works with one line of characters at a time. The lines it works with are called logical lines and are up to three screen lines long. The screen editor inputs data from the keyboard and then prints the data on the screen. When the [RETURN] key is pressed, the editor inputs all of the data on the present logical line for processing by CIO. If characters are typed on the screen, and then the cursor is moved off the line, then back on the line, and new characters are typed, only the characters to the right of the reentry point of the cursor are input when [RETURN] is pressed. However, if the cursor is moved off the line again, then moved back on, all characters on that logical line are input. If bit 0 of ICAX1 is 1, the editor will act as if the [RETURN] key is being held down. This bit may be changed at any time. Editor control codes The screen editor treats certain ATASCII codes as special control codes. Screen editor control codes KEY HEX DEC FUNCTION [RETURN] $9B 155 carriage return or EOL [CLEAR] $7D 125 Clear screen,put cursor in upper left [UP ARROW] $1C 28 Move cursor up one screen line [DOWN] $1D 29 down one line [LEFT] $1E 30 left one character [RIGHT] $1F 31 right one character [BACK S] $7E 126 Back-space operation [SET TAB] $9F 159 sets tab stop at cursor [CLEAR TAB] $9E 158 Clear tab stop at cursor [TAB] $7F 127 move to next tab stop [SHIFT] [INSERT] $9D 157 Make space for a new line [SHIFT] [DELETE] $9C 156 delete the logical line at the cursor [CTRL] [INSERT] $FF 255 make room for a character [CTRL] [DELETE] $FE 254 delete character at cursor [ESCAPE] $1B 27 causes next non-EOL code to be displayed as an ATASCII character, even if it is an editor control code [CTRL][1] screen print start/stop [CTRL] $FD