VE - 71 THE VISUAL EDITOR FOR THE HP71B Design Team: Stefano Picccardi and Stefano Tendon. Equipment required: HP71B, 17K of RAM for programs and variables, RAM required for user's text file, HPIL module, video interface and monitor. INTRODUCTION This is an extensive software package that has been released to the public domain subject to strict conditions issued with the documentation. I was surprised by the weight of this package let alone the content as the documentation is the most comprehensive that I have seen for any 71 product. It is more surprising in the view of the fact that it is free! All the documention comes as text files on the program disc but our esteemed editor will provide all the documentation printed and bound for »10, including P & P. As can be seen from the equipment requirements this utility makes heavy demands on memory. The files that need to be present at run time are: VE71 Basic main program. VEDIT Basic bootstrap program. VEDB Data file. VELEX LEX file. STRINGLX HP. ) CUSTUTIL HP. ) Available from EDLEX HP. ) the Editor. FKEYLEX JPC-SIG. DESCRIPTION VE is a full screen editor compatible with most HPIL interfaces including: HP82163, HP92198, PACSCREEN, GRABAU, MICRONIX. It should be emphasised that VE is not a word processor but a very good text editor with some of the attributes of a WP. The documentation at first sight is daunting as not only are the expected user instructions provided but also the history and fully annotated program listings are included to support the instructions plus a most impressive demo program. The beauty of the demonstration is that it demonstrates the macro programming capability of VE and allows a series of macros to completely drive all the editing facilities on a text file with no input from the user -unfortunately it would not write this review. I found some minor errors in the instuctions and one omission, all of which are listed at the end. Although rather a busy document I very quickly found my way around all the facilities. One useful addition is to make a keyboard overlay for the reassigned keys. FACILITIES Windows: VE makes full use of the screen width but if required it can handle a virtual window that is wider than the screen size. This means that a 32 column interface can handle 80 column text files by folding the line as required without the user providing any input. A useful aspect of defining a window is that a file of a given width may be altered to a lesser width by defining a screen width equal to the required width and then opening up to the file from VE. Needless to say it is also possible to have a column width on the screen less than the screen width. The demo uses 32 columns and is displayed as this width no matter what interface is connected. Automatic wrap around is provided which may be toggled on/off, for me this is a significant feature and allows the user to type smoothly without pause but disciplines text entry when typing in assembly or Forth files. A further aid to typing is the use of two tones, one almost at the end of the line and a final more subtle burp when wrap around occurs. Cursor Control: The existing cursor functions of the 71 are retained with some enhancements. [f] [)] and [f] [(] positiion the cursor on the next or previous word of the current line with a circular action thus providing a swift way to return to the beginning of the line when at the end. [f] [ENDLINE] and [g] [ENDLINE] allow paging up and down the text file. Further cursor control is provided by a Position function which gives the current line number and prompts for a new line, a null entry leaves the cursor as was but this function not only accepts a line number it is also possible to pass an expression made up of the variables used by VE for specifying the text dimensions, thus with little effort the user can jump into the middle of the file or move relative to the current line, the combinations are only limited by your imagination. The documentation correctly points out that an important application of Position is moving to errors in source assembler files which are located by line numbers. A Back command is provided which allows a jump left to the first occurence of a character when prompted thus if I execute Back now and enter B the cursor jumps to 'Back', for jumping to the right a Goto command does a similar thing. A Tab command is provided but again it is a function that is far more comprehensive than expected. The behaviour of Tab is specified at startup and can assume a simple columnar value or may be directed to tab to various column widths sequentially thus at the first press it will jump to say column 4 at the next press it will jump to 12 etc and these values will have been selected by the user. The beauty of this is that assembly files may be typed in with the correct positioning of the fields being determined by the Tab command. The insert mode is enhanced in that pressing [ENDLINE] splits the line at the cursor position, a Join command active both in insert and replace mode allows the joining of lines. Block and File Manipulation: Three block commands are provided, Move a block of text, Copy a block of text and Delete a block of text. These commands are supported by a Select command which allows the insertion of two markers to define the block of text that is to be manipulated. An Insert command allows an external text file in RAM to be merged into the text at the cursor. A block of text or the complete file may be saved to an external file and if it is the complete file it may also be saved to mass memory, this means that back up files may be made without leaving the editing enviroment, the function to achieve this is called Yank. The transfer off text is done via a buffer which may be used in an interesting way in conjunction with VE's capability to restart the editor on another text file. As an example consider writing a main document and prior to this you have made some rough notes using a text editor such as Work Book without the video interface. To access these notes would be most useful and the procedure is as follows: VE is currently editing a text file called "Main". Re-start VE by [g][ON], prompted for the name of a text file, in this case "Rough". Examine your notes for the required portion and mark that part of the text with the Select command and execute Yank to the default buffer file. Re-start VE as above to return to editing text file "Main" and positiion the cursor where the extract is to be inserted. Execute Insert from the buffer, the extract from "Rough" is now in "Main". Line Manipulation: Two commands are provided, single line deletion (Line) and single blank line insertion (Open). Word Manipulation: One function is provided, Word, this allows the deletion of a single word. Character Manipulation: A useful facility is provided to toggle into the inverse video mode, Highlight. Although it is interesting for visual presentation its real application is for inserting non-standard ASCII characters into text files either for the roman8 character set on the Thinkjet or for special characters in program files. A second function, Erase, erases characters with ASCII values specified by the user in the VEDB file called by VE. These values will be determined by the capability of the video interface sitting on the loop. Erase also deletes trailing spaces, thus minimising the amount of space required by the text file. A very good application of this function is to remove markers that you may have inserted into your text. Search/Replace/Find Functions: A powerful group of functions allow comprehensive use of wildcards in a search. The replace function can be directed to query the user at each target string before replacement. Key Assignment Function: We are now getting close to the real power of this package and it lies in its capability to assign keys while VE is running. Key allows the user to make , append and delete key functions of varying complexity. A useful set of examples are given including functions that execute and then clear themselves from the key. This capability is the heart of macro programming within VE Example: Define the $ key to search for the dollar sign and replace it with the pound sign. Press [f][K] and 'K:' appears as a prompt to which the user then supplies: g4=fR(*$*»*) where [f][R] is the replace command and the *'s are delimiters for the search and replace strings. The pound sign is achieved by going into highlight mode and pressing the ';'and then toggling highlight again-easy isn't it ? (Inverse video of ';' is chr$(187) equivalent to the '»' in the Roman8 character set). Macro Programming: This is the most advanced feature of all described thus far and requires a good understanding of how keys are assigned and placed in the key buffer. The documentation provides sufficient examples along with the demo program to take the uninitiated through to success. There are two ways of forming macro's, assignment of keys from the running program-good for 'micro' macro's or by using a utility program prior to running VE to produce 'major' macro's. The most clever aspect is the inclusion of a function Put which acts as as a GOTO statement for key definitions, this allows a key assignment to call another keys assignment! Execution of subprogram's: A most useful function to allow unlimited expansion of VE's capability is provided which calls a subprogram VEUSER whose code is written by the user. Important parameters are passed about the status of the text file to VEUSER. Applications are only limited by your programming ability. PROGRAM EXECUTION The program is normally called via a boot file defined by the user. There are facilities available in the initial call to prepare the text enviroment: Real number of rows on the screen. Real number of columns on the screen. Virtual rows on the screen. Virtual culumns on the screen. Display device specifier. String specifying tab stops. Edit file name. Startup macro. ERRORS AND OMISSIONS Page VEM1C3, examples of line No 100, should be: 100 CALL VE(16,32,16,32...........) IN VE71 100 CALL VE(24,80,24,80...........) IN VE71 Page with File: VEDIT, line 65 shoul be: 65 Disp "Load it from....." @ END No direct mention of the splitting of lines with insert mode and ENDLINE is made. NOTES When calling VE for a text file greater in width than the specified window width will cause VE to hang-up, use INIT 1 to recover without damage. The prolonged use of a video monitor on HPIL significantly increases battery usage of the 71 unless connected to the mains. CONCLUSION VE 71 is most impressive and for any one with the necessary equipment you needed this package yesterday-don't miss the last post send your disc and if you require the documentation to be printed and bound include a cheque for »10. John Bruce 164N HPCC offer their congratulations and thanks to the two Stefanos for their contribution to the user community. --------------------------------------------------------------------------------