home *** CD-ROM | disk | FTP | other *** search
- Changes in Version 3.10
- -----------------------
-
- This files list the changes in Bingo version 3.10. There were
- many new additions in this version, a few old functions were
- removed, and a number of bugs cleaned up. Major new
- functionality introduced includes a text recognition system, a
- multi-level undo, and XMS/EMS virtual memory support.
-
- New Features in Version 3.10
- ----------------------------
-
- - added a text recognition subsystem. In profile files, you
- can define lines of the form:
- &recog=<text to recognize>!<chess function to call>
- for example:
- &recog=hello!do_hello_func()
- will cause the Chess user defined function 'do_hello_func' (which
- would have to be in the KEYCFG.SET file via KEYCFG) when the
- sequence of text 'hello' is typed. The "trigger" text is case
- sensitive and is seperated from the Chess function by an
- exclamation point (!). If you need to use an exclamation point
- (!) as part of the <text to recognize>, the '/' character will
- quote the following character. For example:
- &recog =hi/!//chris!do_on_func();
- will recognize the text string: 'hi!/chris'
- Bingo can recognize strings up to 40 characters in length.
-
- - two function to help with this have been added.
- 'conf_recognize' will allow you to turn text recognition on and
- off, system-wide. 'show_recognize' displays the recognition pairs
- active for the current file.
-
- - three "ask" primitives were added to inquire into the text
- recognition system:
- i=ask("file_recmode");
- i=ask("sys_recmode");
- i=ask("file_recog",int n,char trigger[0],char chess_stmt[0]);
-
- - added an option to the Box Draw subsystem which allows you to
- pick an arbitrary character (using the ASCII Table) and draw with
- it.
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! TA-DAAAAAAAA... TRUE MULTI-LEVEL UNDO !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- - yes, that is right, Bingo now has an undo capability. In
- addition to all the undelete support Bingo has always had, the
- 'undo' function can now undo up to 2048 changes. Almost all
- functions of Bingo which change the text of a file can be undone,
- including such uglies as paragraph reformatting, except for
- things such as right shifting 11,000 lines to the right 4
- columns; for some of these functions, memory will be a problem
- and the operation will be .
-
- - the 'conf_undo' function allows you to configure how many
- levels of undo Bingo will save. Zero indicates no undo will be
- kept. The number of undo events is global, not distinct between
- buffers.
-
- - the "ask" primitive
- i=ask("sys_undo_many");
- returns the current setting of the undo flag, an integer in the
- range 0-2048;
-
- - the function 'restore_line' has been deleted -- with the
- addition of undo, it is no longer necessary.
-
- - the function 'last_position' has been added. This function
- jumps to the previous position in the current file.
-
- - altered the box pick mouse functionality so that the up and
- down arrow buttons are both at the bottom of the box, so you have
- to move the mouse less to use them both.
-
- - changed the placemark code so that it will display only legal
- placemark numbers for jump operations, and uses a new popup box
- interface.
-
- - deleted the 'show_placemark' function -- either the
- 'place_mark' or 'jump_mark' will do the same thing.
-
- - expanded trapping of the Scroll_Lock key to include
- search/replace and printing, so that these operations can be
- interrupted.
-
- - added a function 'view_screen' which allows you to view the DOS
- screen that was active prior to running Bingo, provided the
- 'conf_scr_save' setting is on.
-
- - added environment variable support to Bingo's filename
- handling. For example, when asked to a filename, you can use
- :<env_var>:filename
- as a filename where <env_var> is a defined environment variable.
- For example, I have CHESS defined as the directory where my Chess
- functions reside, defined as
- set chess=c:\edit\chess\
- in my autoexec.bat. This is a very powerful feature.
-
- - changed the Chess functions 'str' and 'key' to allow them to be
- used with other functions than B_cmd. For example, this function:
- {
- char temp[80];
- int i;
- str(":chess:*.chs");
- key("return");
- if(get_fname(temp,"Execute what Chess program file?",0,0)>=)
- return(run(temp));
- else
- return(0);
- }
- provides you with a pick list of all the .CHS files in the
- subdirectory pointed to by the CHESS environment variable, and
- execute the one you pick.
-
- - the 'quit_and_save_status' function is now gone. Bingo now
- can save more status information in between sessions, in a file
- called 'brecall.dat', which replaces the previously used
- 'recall.be' file.
-
- - 'conf_resume_pos' now controls whether Bingo will attempt to
- restore the cursor position of a file it enters. For example,
- since Bingo saves status information on 15 files, if you reload
- one of these files with this option turned on, you will be placed
- at the cursor position where you were last located in that file.
-
- - An interrupt generating mechanism has been added to Chess. 4
- functions comprise it:
- clear_regs() : sets the contents of Bingo's
- internal register working copy
- to zero
- set_reg(<regname>,val) : sets the value of Bingo's
- working copy of <regname> to the
- specified value 'val'
- get_reg(<regname>) : returns the value of Bingo's
- working copy of <regname>
- gen_interupt(intnum) : generates an 8086 interupt,
- using the values in Bingo's
- working copy to generate the
- interupt. When the interupt
- returns, the register values it
- generated are placed in Bingo's
- working copy.
- valid <regname>'s are:
- 16-bit values: ax bx cx dx si di cflag flags
- 8-bit values: al ah bl bh cl ch dl dh
-
- A word of caution about the gen_interupt function family: you can
- get yourself into large amounts of trouble with this function.
- You can crash Bingo, write sectors to your disk, etc. BE VERY
- CAREFUL!
-
- - altered the behavior of the paragraph reformat function when
- AutoIndent mode is not turned on. Bingo will now preserve the
- indention of the first line.
-
- - altered the operation of Bingo's command line interface. The
- command line is now much more adept at loading arguments. Three
- sets of delimiters are now supported:
- ~<string>~ loads the string and follows it with a carraige
- return
- '<string>' loads the string, period.
- `<string>` loads the string, and forces Bingo to wait for
- user input before continuing.
- For example:
- search ~hello~ ~~ : search for 'hello' with the default
- modifiers.
- search 'hello' ~~ : these are the same -- they search for
- search ~hello~ : 'hello', but leave you at the modifier
- prompt
-
- search `hello` ~i~ : searches for hello, but waits for user
- input at the string entry box for the
- target. Then Bingo goes and performs
- the search, ignoring case.
- Another example:
- conf_autoindent ~~ : toggles the auto-indent setting
- conf_autoindent 'y' : turns on autoindent
-
- - radically changed the .INI file structure. This is now a ascii
- file with user editable settings of the form:
- &<setting> = <value>
- <value> can be one of three things, depending on the <setting>.
-
- <setting> type allowed <value>
- ------------------------------------------------------------
- TRUE/FALSE 1/0
- Integer Range 0-???? (upper range is setting dependent)
- String <character string>
-
- - the 'window_resize' function has been extended to allow resizing
- of windows horizontally as well as vertically.
-
- - 'window_max' function added which makes the current window its
- largest size without closing any of the other windows; instead it
- simply makes each of the other windows as small as possible.
-
- - added an incremental search function 'isearch' in place of the
- 'leap_' functions. It will search in the forward direction; if
- the normal search definitions specify the Ignore Case option,
- 'isearch' will likewise ignore case. Note: Chess functions which
- duplicate the functionality of the 'leap_' functions are provided
- with version 3.10.
-
- - 'isearch_files' will likewise perform an incremental search,
- but over all the files, similar to the 'F' switch for searching.
-
- - changed the second 'C' mode so that it only moves the trailing
- '{' to the next line if there is a non-space character before it.
-
- - altered Bingo's method of writing files so that it will NOT
- write over a file with the READ ONLY flag set; write operations
- will abort.
-
- - added 3 new system functions for Chess.
- 'set_display(int on)' will set on or off whether the display
- ever gets updated during subsequent Bingo commands. Setting
- this off can signifigantly speed up processing. Remember to
- set it back on again and issue an 'update_display()' call to
- update the display. You can use 'update_display() independent
- of this call.
- 'set_msg_wait(int on)' will set on or off whether Bingo waits
- for a user keystroke on it's messages during subsequent
- actions; for example, the 'replace' function always pauses for
- 3 seconds
- 'set_recall("string","file")' will set on or off whether or
- not string entry affects the two recall buffers.
-
- - added the ability for Bingo functions do be directly called
- from within Chess without resorting to 'b_cmd'. Now, Bingo's
- internal commands can be called with 0 or 1 arguments. The
- arguement, if it is there, is treated as a character string to be
- parsed as 'cmd_line' would. Internal functions are referenced by
- their standard names, only with the first character capitalized.
- For example:
- {
- Edit_file("temp.");
- Top_of_file();
- Begin_line();
- Replace("~hello~ ~goodbye~ ~ig~");
- File();
- }
- This Chess program loads the file 'temp.' and changes all
- occurrences of HELLO to GOODBYE.
-
- - Added XMS/EMS support for those of us with more silicon.
-
- - 'conf_vmem' controls whether XMS (Extended Memory) and or EMS
- (Expanded Memory) can be used for virtual memory, and which will
- be used first. Bingo will use XMS in 256k chunks; EMS in 256k
- chunks. Bingo requires XMS v2.0 or greater, EMS v3.0 or greater.
-
- - profile files were changed to match the same input specs as
- .INI files -- this is not a major difference from what they were,
- just syntax.
-
- - you no longer attach Chess functions to keys using the clumsy
- macro interpret 'my_func()' return
- interface. Now you could simply assign this function to Alt-f by
- using:
- #f my_func()
- This means that a macro such as the "shift block one tabstop to
- the right" can be written 3 ways:
-
- #f2 macro shift_block '1t' return
- or
- #f2 bingo("shift_block ~1t~");
- or
- #f2 Shift_block("~1t~")
-
- - changed all of the instances of 'applying' a keystroke (the
- repeat function, the global function, and the search and macro
- function) to apply any of three things:
- 1) keystroke(s)
- 2) Bingo command line (as if it were used with the 'cmd_line'
- function).
- 3) Chess command line (as if it were used with the
- 'exec_chess' function).
-
- - 'search_macro' function renamed 'search_apply'
-
- - added two search modifiers. 'F' stands for all Files. This
- modifier forces the search algorithm (and replace, and search and
- macro) to treat the entire set of files as if they were one big
- files. For example, you can be in the third file and search for
- the next occurance of 'hello'. If hello is not found in the
- current file and it *is* found in a later file in the ring, you
- will be moved there.
-
- - the 'T' modifier causes the search to start at the top or
- the bottom (if you are searching backwards); if you combine it
- with the 'F' modifier, it also moves you to the first or last
- file.
-
- - 'conf_mark_paste' function added to allow for blocks to remain
- marked after they are pasted into the file. This is a global
- setting, accessible from Chess as the 'sys_mark_paste' ask
- argument. This is for you, Bradley.
-
- - added a 'do { } while (...)' statement to Chess. This is
- similar to the Do loop construct already present, except the
- conditional test is done *after* the body of the loop is
- executed, not unlike pascal's 'repeat-until' construct.
-
- - added a configuration option 'conf_para' which allows you to
- specify if an indented line is the start of another paragraph. A
- new 'ask' argument has been added, 'sys_para', which returns this
- setting.
-
- - greatly enhanced the 'mouse_scroll' function so that it now supports
- complete horizontal scrolling, shows marking on the fly, and does
- other nifty things. The macro:
- macro unmark
- snap_to_mouse_xy
- point_mark
- mouse_scroll
- point_mark
- will do the normal, on the fly marking that people have come to
- expect. You will, however, need to have Automarking enabled for this
- to work properly (the default).
-
- Bugs fixed in version 3.10
- ---------------------------
- - fixed a bug which caused the 'single_key_save' function to
- refuse to recognize any keys except three-key keystrokes. This
- meant you could only save three-key keystrokes.
- - fixed what is hopefully the last bug having to due with the
- automatic stripping of trailing spaces. It took a bizzare set of
- circumstances to bring it out, and mucho thanks to Pierre who
- came across a file and sequence of keystrokes to reproduce it.
- - fixed a bug related to marking a block (of any type) on a line
- number greater than 32767. Inadvertently, a 16-bit integer was
- used as a temporary variable, thus screwing up marking above the
- 32k mark.
- - fixed a bug in the 'report_bsize' function which had it
- inaccurately reporting block sizes which were point marked and
- spanned a line.
- - fixed a bug in the search replace algorithm which caused Bingo
- to "eat" memory with every replace under certain conditions.
- - fixed several small bugs in the paragraph reformat routine
- which could cause all kinds of havoc. Thanks Terry!
- - fixed a bug where 'extend_mark' did not function properly.
- - fixed a bug with Bingo not preserving the cursor size when
- executing DOS commands.
- - fixed an inconsistency in the 'bottom_of_screen' function.
- - fixed a number of bugs in the way searching within marked Point
- and Vertical blocks was handled.
- - fixed a bug in the 'window_bottom' & 'window_top' functions
- when a window was vertically split.
- - fixed a bug in the Wordstar block manipulation functions,
- 'block_move', 'block_copy', which could cause some display
- oddities when the block being manipulated was point marked.
- Thanks Terry!
- - cleaned up the string entry routine to make it more consistent
- as to when it blanks the contents on intial string entry.
- - fixed a bug when switching files with only 1 file in the ring,
- and having more than 1 window open.
-