1 New_Features This version of VECCE includes some new commands and features and has corrected several known bugs. It has been fully integrated with the VAX/VMS and EMAS/370 operating systems so that it follows all the usual command calling syntax for the host system. On VAX/VMS the two parameters are the input and output files, and the secondary input, pre definition files and all options are specified as qualifiers. eg $ VECCE File1.txt File2.txt /SEC=File3.txt /PRE=p.txt /MAXWIN=10 All of the options are parameters on EMAS/370 and separated by commas. The keyword mechanism is used to specify options (so that you don't have to type 16 commas to set MAXWIN. eg Command: VECCE File1,File2,SEC=File3,PRE=p,MAXWIN=10 The APM version is as before. 2 Default_PRE_file The VMS version of VECCE translates the logical name ECCE_PRE to find a default PREDEF file. You can set this up in your LOGIN.COM file. On EMAS/370 VECCE looks for the partitioned file VDEFS in your top group with a member EDnn where nn is the EMAS terminaltype number. If it finds one, that is used as the PREDEF file. Failing that the file ERCLIB:VDEFS_EDnn is used. 2 Insert_Mode There is now an INSERT version of DATA-ENTRY mode available. It is similar to the usual REPLACE mode except that all characters typed are inserted into the file at the file pointer. It can be entered by the new command '~' which should be assigned to a convenient control key. (On the VAX version the qualifier /INSERT will set insert mode at the beginning of the edit.) When in INSERT mode the DEL key can not only delete text you have just typed, but also text which was in the file previously. The effect is exactly equivalent to a control key defined to invoke the E- (erase back) command. It is also useful to define the RETURN key to be B (break) when typing in text, so that pressing RETURN at the end of a line automatically creates a new line for further input. To use INSERT mode it is important that you set your terminal type correctly. VECCE attempts to use the terminal's insert character mode if it has one. As not all DEC or VT100 - like terminals have this mode a wrong terminal type could prevent the INSERT mode from working. 2 Security_Against_System_Crashes There is a new command %B which saves the current state of the edit in the output file (or you can nominate a new file with %B newfile). Notice that all deleted text is permanently lost on execution of %B and can no longer be recovered with I- or G-. It is recommended that you use this command periodically during a long edit to avoid losing the whole edit in case of a system crash. (In case of a communications failure the EMAS version of VECCE DOES save the edit in a file called VECCE#SAVE.) Another safety measure is to create a log of the editing session. This is done by calling vecce with the command qualifier (parameter on EMAS, /LOG=file or just /LOG (file defaults to VECCE.LOG). A complete record of the editing commands you issued is kept in the file. In the event of a crash, you can re-create the edit up to the point of the failure by editing the original file and specifying a PRE file which is the LOG file. (Or you can execute the LOG file with the %G command.) A log would also be useful if you manage to corrupt your file (for example with a complicated programmed command gone wrong!). Control sequences are represented in the log by printing equivalents. One change necessitated by this mechanism is that it is now possible to do 'nested' %Gs, ie a file containing a %G command can be executed. Nesting up to a depth of about 15 is allowed. 2 Tab_Handling There is now available a mode in which tab characters in the file can be expanded into the appropriate number of spaces. This may be set on entry to the editor with the /TAB_EXPAND qualifier (VAX/VMS), the ,TAB Expand=YES parameter (EMAS) or by the %E command at any time during an edit. Tab positions may be set using the new command %T=t1,t2,t3, . . . and the current tabs determined with %T ?. To enter tabs into the file, define a control key (the TAB key is the obvious choice) to be a TEXT MACRO with the value of a tab character. The command %K= will achieve this. The section of the help file dealing with macros explains text macros more fully. The TAB key may then be used in DATA ENTRY mode to enter a tab, or as the search text for the find and verify commands. 2 Looking_at_long_lines The new command %R40 will Right-shift the display by 40 columns and %R returns to the default. See HELP VECCE for a full description. 2 Calling_system_commands It is now possible to execute a host operating system command from within VECCE by entering '!command' on the command line. 2 New_Output_File %C newname will write the edit to the file NEWNAME rather than the one specified on entry to VECCE. 2 Showing It is now possible to issue alteration commands while 'show'ing a file. They have the usual effect on the editing buffer, but do not affect the file being shown. 2 Saving_Default_parameters VECCE has many parameters. On the EMAS 370 version it is possible to save your preferred values of these parameters in your profile information. Simply issue the VECCE command with the values you wish to save and with the parameter SAVE=YES. Alternatively you can request to be prompted for parameters using VECCE ?, and reply Y to the 'Save Options' parameter. 2 Bugs_corrected The following bugs have been corrected. Any more bugs should be reported to G.Rule at ED. (1) There was a well-known bug which caused VECCE to crash when attempting to repeat the last command more than once (ie a number on the command line). (2) A very long standing problem caused VECCE to crash when attempting to overwrite a line with a shorter one containing a newline. (3) If you attempted to use %K" when there was no previous command for " to find, the VAX version crashed. (4) V/text/ when the file pointer was past the end of the line tried to print the last found text, and if there was none, crashed. (5) The %E command didn't work on one of the VAX versions. (6) Attempting a %P to a member of a partitioned file, or to another user's file crashed the editor in the EMAS version. An error is now reported tidily. (7) The manual stated that if text surrounding a marker set by the '^' command was deleted the marker was also removed. The code did not live up to the specification and as a result it was possible to jump to a deleted marker. The editor crashed soon afterwards. The marker is always deleted now. (8) The screen was not correctly re-drawn after %H (or ! in intermediate versions) if a secondary input file was in use. Only the current window was refreshed (9) The VAX/VMS version did not correctly drive Hazeltine Esprit I terminals when using the system database. This is due to a design flaw which makes it impossible to specify correctly the cursor addressing to VMS. This was corrected in later models of this terminal, but the current version of VECCE uses it's internal database to drive ESPRIT terminals. 2 Terminal_types The VAX version of VECCE can now interrogate the VMS operating system to find out how to drive the terminal. For this to work your terminal must be set using the SET TERMINAL/DEVICE= command. If this does not work, and the terminal has an EMAS terminaltype number, you may be able to use vecce with /TTYPE=emastype. However, if the system does not recognise your terminal the preferred method is to write (or to get someone else to write!) a TERMTABLE.TXT file for it. How to write and compile a new entry is described in the VAX/VMS run time library manual. Once you have made a TERMTABLE.EXE file with the terminal definition for 'MYTERM', define the logical name TERM$TABLOC to point to the directory where it is found. Then $ SET TERMINAL/DEVICE=MYTERM will work and so will VECCE. 3 Writing_a_TERMTABLE_entry_for_VECCE This section assumes that you have read the section on writing a TERMTABLE entry in the VAX/VMS RTL manual in the section dealing with the SMG$ routines. To work at all VECCE requires (in addition to the name) direct cursor addressing, defined by the capability SET CURSOR ABS. In this case the ROWS and COLUMNS attributes must also be set to the dimensions of the terminal. At this level the performance is poor, but will be enhanced by the ERASE_TO_END_DISPLAY and ERASE_TO_END_LINE capabilities. VECCE is much more effective when it can scroll parts of the screen. The preferred method of doing this is in a DEC VT100 like manner which requires that SET_SCROLL_REGION, SCROLL_FORWARD and SCROLL_REVERSE are defined. Alternatively scrolling may be achieved via the INSERT_LINE and DELETE_LINE commands. These functions may require padding which can be achieved by including '^@'s in the text string. The 'hilight' mode of displaying the file pointer is preferable to the 'mark' mode (see manual) which requires some stand-out attribute to be set. Vecce looks for BEGIN_REVERSE, BEGIN_BOLD, BEGIN_UNDERLINE and BEGIN_BLINK in that order and uses BEGIN_NORMAL_RENDITION to switch off the attribute. INSERT mode will work much better if VECCE can use the terminal's own insert mode, so the characteristics BEGIN_INSERT_MODE and END_INSERT_MODE are examined. DELETE_CHARACTER is also necessary before VECCE can do this. The attributes SET_APPLICATION_KEYPAD and SET_NUMERIC_KEYPAD are used to set the keypad of your terminal in and out of special mode. If padding on newline is required, this is provided via SMG_LF_FILL and the pad character (if non-zero) is set by SMG_PAD_CHAR. Finally the KEY_*_ARROW attributes are interrogated in order to set up the arrow keys.