home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1993 #2
/
Image.iso
/
wp
/
be310a.zip
/
WHATSNEW.DOC
< prev
next >
Wrap
Text File
|
1993-08-01
|
16KB
|
369 lines
Changes in Version 3.10a
------------------------
This files list the changes in Bingo version 3.10a. 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.10a
-----------------------------
- 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.10a.
- '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.10a
---------------------------
- 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.
Bugs fixed in version 3.10a
---------------------------
- fixed a bug which caused Bingo to be inconsistent in creating backups
for files.
- fixed a bug which prevented Bingo from correctly reading in default
extension settings from the BINGO.INI file.
- renamed the distribution keyboard help file from BINGO.HLP to
BINGOKEY.HLP.
- fixed a problem in the Chess interpreter parsing code which could
cause Bingo to hang parsing the source program.