home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hall of Fame
/
HallofFameCDROM.cdr
/
prog1
/
bingo20.lzh
/
BINGO.DOC
< prev
next >
Wrap
Text File
|
1990-07-01
|
161KB
|
4,406 lines
The Bingo Programmer's Text Editor
A Shareware Product
Version 2.0
Reference Manual
Copyright 1989,1990
Christopher R. S. Schanck
June 6, 1990
Table of Contents
-----------------
Introduction . . . . . . . . . . . . . . . . . . . . . . . . 1
Philosophy . . . . . . . . . . . . . . . . . . . . . . . 2
The Shareware Concept and Registering . . . . . . . . . 3
Things to Come (Maybe) . . . . . . . . . . . . . . . . . 3
Support . . . . . . . . . . . . . . . . . . . . . . . . 4
Using this Manual . . . . . . . . . . . . . . . . . . . . . . 4
Critical Short Sections . . . . . . . . . . . . . . . . . . . 5
Installing Bingo . . . . . . . . . . . . . . . . . . . . 5
Invoking Bingo . . . . . . . . . . . . . . . . . . . . . 6
Bingo and Larger Screen Displays . . . . . . . . . . . . 7
Bingo's Menu System . . . . . . . . . . . . . . . . . . 8
Bingo's Dialogue Boxes . . . . . . . . . . . . . . . . . 9
String Entry Boxes . . . . . . . . . . . . . . . . 9
Yes/No Boxes . . . . . . . . . . . . . . . . . . . 9
Non-Editable Display Boxes . . . . . . . . . . . . 9
List-Picking Boxes . . . . . . . . . . . . . . . . 9
Directory Lister . . . . . . . . . . . . . . . . . . . . 11
Bingo and File Names . . . . . . . . . . . . . . . . . . 11
The Status Line . . . . . . . . . . . . . . . . . . . . 12
Keyinst: The Keyboard Configuration Program . . . . . . 13
Key Names . . . . . . . . . . . . . . . . . . . . . 13
'open_end' Identifier . . . . . . . . . . . . . . . 16
'cur_file' Identifier . . . . . . . . . . . . . . . 16
Keyinst Command Line Options . . . . . . . . . . . 17
Bingo & The Mouse . . . . . . . . . . . . . . . . . . . 18
The Mouse Cursor . . . . . . . . . . . . . . . . . 18
The Mouse at the General Editing Level . . . . . . 18
The Mouse and The Menus . . . . . . . . . . . . . . 20
The Mouse & Dialogue Boxes . . . . . . . . . . . . 21
String Entry Boxes . . . . . . . . . . . . . . 21
Yes/No Boxes . . . . . . . . . . . . . . . . . 21
Non-Editable Display Boxes . . . . . . . . . . 21
List-Picking Boxes . . . . . . . . . . . . . . 21
The Mouse and The ASCII Table . . . . . . . . . . . 22
Basic Editing . . . . . . . . . . . . . . . . . . . . . . . . 23
The Destructive Backspace . . . . . . . . . . . . . . . 23
Delete EOL vs. Delete Line vs. Delete BOL . . . . . . . 23
Delete Word . . . . . . . . . . . . . . . . . . . . . . 23
File Handling . . . . . . . . . . . . . . . . . . . . . . . . 24
Edit_file & Load_file . . . . . . . . . . . . . . . . . 24
Choose_file . . . . . . . . . . . . . . . . . . . . . . 24
Rename_file . . . . . . . . . . . . . . . . . . . . . . 24
Quit . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Quit_all . . . . . . . . . . . . . . . . . . . . . . . . 24
Abort & Abort_all . . . . . . . . . . . . . . . . . . . 24
Delete_file . . . . . . . . . . . . . . . . . . . . . . 25
Zap_file . . . . . . . . . . . . . . . . . . . . . . . . 25
Modify_save & Modify_save_all . . . . . . . . . . . . . 25
Switch_file . . . . . . . . . . . . . . . . . . . . . . 25
Searching . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Navigation . . . . . . . . . . . . . . . . . . . . . . . . . 27
Block Handling . . . . . . . . . . . . . . . . . . . . . . . 28
Marking . . . . . . . . . . . . . . . . . . . . . . . . 28
Operations on Blocks . . . . . . . . . . . . . . . . . . 28
Named Buffers . . . . . . . . . . . . . . . . . . . . . 29
Miscellaneous Functions . . . . . . . . . . . . . . . . 29
Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Extra Functions . . . . . . . . . . . . . . . . . . . . . . . 31
Help . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Info . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Pick & Exec . . . . . . . . . . . . . . . . . . . . . . 31
Quit and Save Status . . . . . . . . . . . . . . . . . . 31
Global . . . . . . . . . . . . . . . . . . . . . . . . . 32
Ascii_table . . . . . . . . . . . . . . . . . . . . . . 32
System Operations . . . . . . . . . . . . . . . . . . . . . . 33
Changing Directories . . . . . . . . . . . . . . . . . . 33
Simple Execution & Shelling . . . . . . . . . . . . . . 33
Swap Execution & Shelling . . . . . . . . . . . . . . . 33
Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Macro Space . . . . . . . . . . . . . . . . . . . . . . 35
Defining Macros . . . . . . . . . . . . . . . . . . . . 35
Saving Macros . . . . . . . . . . . . . . . . . . . . . 36
Saving the Entire Key Set . . . . . . . . . . . . . . . 36
Executing a Macro File . . . . . . . . . . . . . . . . . 36
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Window_split, _edit, _load & _find . . . . . . . . . . . 37
Window_vertical . . . . . . . . . . . . . . . . . . . . 37
Window_resize . . . . . . . . . . . . . . . . . . . . . 37
Window_one & Window_zoom . . . . . . . . . . . . . . . . 37
Printing . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Error Parsing and Undo . . . . . . . . . . . . . . . . . . . 39
How Error Parsing Works . . . . . . . . . . . . . . . . 39
Error Parsing Method . . . . . . . . . . . . . . . . . . 39
Undo Capabilities . . . . . . . . . . . . . . . . . . . 40
Manipulating the Undo Stack . . . . . . . . . . . . . . 40
Configuring Bingo . . . . . . . . . . . . . . . . . . . . . . 41
Function List . . . . . . . . . . . . . . . . . . . . . . . . 42
General Editing . . . . . . . . . . . . . . . . . . . . 42
File Handling . . . . . . . . . . . . . . . . . . . . . 44
Searching . . . . . . . . . . . . . . . . . . . . . . . 46
Navigation . . . . . . . . . . . . . . . . . . . . . . . 47
Block Handling . . . . . . . . . . . . . . . . . . . . . 49
Utilities . . . . . . . . . . . . . . . . . . . . . . . 51
Extra Operations . . . . . . . . . . . . . . . . . . . . 53
System Operations . . . . . . . . . . . . . . . . . . . 54
Macros . . . . . . . . . . . . . . . . . . . . . . . . . 55
Windows . . . . . . . . . . . . . . . . . . . . . . . . 56
Printing . . . . . . . . . . . . . . . . . . . . . . . . 57
Error Parsing and Undo . . . . . . . . . . . . . . . . . 58
Configuration . . . . . . . . . . . . . . . . . . . . . 59
License Agreement . . . . . . . . . . . . . . . . . . . . . . 64
Registration Form - Bingo 2.0 . . . . . . . . . . . . . . . . 66
The Author . . . . . . . . . . . . . . . . . . . . . . . . . 68
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 69
Appendix A: Index . . . . . . . . . . . . . . . . . . . . . . 70
Introduction
------------
This document serves as the reference manual for Bingo 2.0.
Bingo is a full-featured text editor at the right price. Some of
its features include:
- high speed execution, with particularly fast searches,
screen handling, and file I/O
- full color support
- programmable integrated mouse support
- easy support of VGA, EGA, & MCGA extended text modes
- superb macro capability
- large suite of utility functions: entab; detab; command
repeat; etc.
- redefinable keys; custom define your own keyboard setup
- complete menu system supporting most Bingo functions
- multiple files; up to 50 open files allowed
- multiple windows: view different sections of the same file,
or different files at the same time
- execute DOS commands, including command-line compilers
within only ~10k of overhead
- no configuration files needed at runtime
- completely configurable from within itself
- effective use of placemarks to mark positions in files
- edit files up to size of memory
- user definable help file
- extensive block operation support, include point, line and
column marking, and two different sets of block operations
- one default block buffer, plus 26 additional named buffers
- wordwrap, paragraph formatting, and autoindent support
included for text processing work
- C Mode supports programming in the C programming language
- Delimiter and indentation matching
- wildcard filespecs lead to a directory list picker
- execute *any* Bingo function from within Bingo whether it
has been assigned to a key or not using a 'function picker'
- interrupt Bingo at any point and exit, and when you restart
Bingo it will pick up exactly where you left off
- print files & blocks through the serial port, parallel port,
or to a file, with or without line numbers
- set printing left margin, top margin, and lines per page
- automatic processing of errors generated by the Borland and
Microsoft developmental tools.
- undo stack of deleted items
- execute any command or macro "globally" over all files in
the ring
Bingo 2.0 Reference
1
Philosophy
----------
Text editors are not required for every system; at least, an
editor of Bingo's power is not. If all you require of your
editor is that it allow you to modify batch files and such, Bingo
is overkill. Cheap overkill, but still overkill. However, if
you use an editor daily, as a programmer, as a consultant who
hops from system to system and likes to have your own tools, or
in any other situation, Bingo could very well be what you are
looking for. Why? In spite of its power, Bingo is very
inexpensive, and does some things no other editors do, as a look
at its feature list will convince you.
People who live with an editor daily for long stretches of
time know that choosing an editor is a near religious experience.
Defense of your choice develops into a kind of fanaticism. In
the Unix world, VI/Emacs wars promise to extend into the next
millennium! It was the fact that I could not find an editor I
was truly comfortable with that prompted me to design Bingo. In
doing so I believe I have created an editor that should appeal to
a broad base of users.
Bingo allows a large degree of latitude when it comes to
assigning keys. In a complementary fashion, it allows a user
specified file to be used for help. Further, because of Bingo's
extensive and powerful Menu system, you do not need to memorize a
large number of keystrokes in order to use Bingo effectively.
This allows you to get up and going in a minimum amount of time.
And now in Version 2.0, integrated programmable mouse
support has been added. I have found mouse use to be very nice
when editing, and the people who have beta-tested version 2.0
have been very enthusiastic.
Bingo is optimized for response time. Screen response in
particular is very quick, taking full advantage of the PC's
direct video architecture. Searches also occur at blazing speed
-- a must if you spend many hours with an editor.
Bingo is heavily configurable, all from within the editor
itself. This "on-the-fly" ability is a lifesaver if you hop from
one system to another.
Bingo has all the standard macro and file handling
abilities, but it specifically excels at block handling. Three
types of marking, 27 buffers to use, and a huge array of
functions to deal with block operations allow you to use blocks
to their fullest.
Especially designed for programmers, Bingo includes a suite
of utility functions to aid in handling program text. Functions
to shift blocks of text left and right, to align blocks, to sort
blocks, to match delimiters, and to move by indentation are only
a few of the many handy functions included.
Bingo 2.0 Reference
2
The Shareware Concept and Registering
-------------------------------------
This is just a general note as to what Bingo being Shareware
means to you, the user. Shareware could just as easily be called
"Honorware": I depend upon you honor to mail in your payment for
Bingo if you are using it regularly. All of the legal jargon
describing this Shareware concept is contained in the License &
Registration section of this manual.
So come on, if you use Bingo regularly, send me the $30.00 I
charge for Bingo -- its not much money for a very sharp program.
When you register, you are entitled to a number of
advantages:
1) If you request it, I will mail you a copy of the current
release of Bingo free.
2) The next release will be mailed to you free of charge.
3) Each upgrade after this will cost you a mere $5.00
Also, some registered users are asked to beta-test upcoming
versions -- a double-edged sword. Beta testing is somewhat
precarious at times, but you do get to take a hand in forming the
next version. Plus you get to have your complaints redressed
faster than the general public.
Things to Come (Maybe)
----------------------
The one major thing which still looms in Bingo's future is
the ability to work with files larger than memory. I am thinking
of implementing a virtual memory method, but it may or may not
appear in later versions. Ideally, I will simply implement an
OS/2 version, in which case problems with virtual memory and such
become the operating systems problem, as they should.
This version showcase an entirely unforseen addition, that
of mouse support. Highly integrated and very programmable, I
believe Bingo offers one of the highest levels of mouse usability
found in MS-DOS editors.
Bingo 2.0 Reference
3
Support
-------
As any of my registered users will tell you, I am committed
to supporting Bingo. Without my users, where would I be?
Anyone, registered or not, who calls or writes me will receive
prompt and (hopefully) useful help. I particularly like to hear
of requests; anything you would like to see in Bingo, let me
know. One of my beta-testers remarked that he felt like he had a
personal editor -- anything he wanted was added.
However, as this version is released, there is one problem.
Currently, I am unsure where I will be residing for the next
three months. Therefore, the address and phone number given here
are of relatives of mine. Anything mailed to that address will
reach me with a 2-3 day delay.
If you call the phone number (9am - 6pm, EST, please!), you
will have two choices. If you wish, you will be given a number
where you can currently reach me. Or you can leave your name and
number, and I will return your call within 2-3 days.
PLEASE feel free to contact me. I very much like to hear
from you! Also, remember the hours for phone support!
Using this Manual
-----------------
This manual is broken into three parts. The first is
comprised of small sections concerned with particular little
parts of Bingo, such as Installation and Invocation.
The second part consists of sections on each major
functionality present in Bingo. These individual sections are
not tutorial in orientation, but rather give necessary
information needed to utilize this functionality.
The final section is a listing of all of the functions
supported by Bingo.
I suggest that the first time user first read the initial
sections for pertinent information, then go through the function
list *closely*. This will give you a clear idea of the
capabilities of Bingo. Then, for clarification, go through the
middle sections as needed.
Bingo 2.0 Reference
4
Critical Short Sections
-----------------------
Installing Bingo
----------------
There are 2 files which are of critical importance for Bingo
to run.
BE.EXE and BSWAP.COM are the executables. BE.EXE is the
actual editor executable, and the file invoked to start the
editor. BSWAP.COM is used by BE.EXE to allow Bingo to swap
itself out of memory and then back in when executing DOS
commands. Both of these files MUST, MUST, MUST reside in the
same subdirectory (Got that?).
KEYINST.EXE is another program of importance; it is the
program used to install a keyboard configuration. It takes the
name of an executable (usually BE.EXE) and of a configuration
file (usually BINGO.CFG) and configures the former based on the
latter. See the section on Configuring the Keyboard for more
information.
The help file BINGO.HLP, is an additional file which must be
in the same subdirectory as BE.EXE. When you invoke help, Bingo
will look there for the file BINGO.HLP. The file may contain
your own description of the current key layout, or just about
anything else you would like. Bingo comes with a default help
file.
As an example, assume the Bingo distribution files are
contained on drive A:, and you are installing Bingo on drive C:.
First, move to drive C: and create a directory for bingo,
called \bingo using DOS's mkdir command. Move to this
subdirectory using 'cd \bingo'. Now copy the files from drive A:
over to the proper subdirectory by using 'copy A:*.* C:\BINGO'.
Finally, you probably want to add 'C:\BINGO' to your PATH
environment variable.
Bingo 2.0 Reference
5
Invoking Bingo
--------------
Starting Bingo is simple. Simply type:
be <filespec> <filespec> ...
at the DOS prompt, and you are off. One of several things will
happen. If each filename you gave is discreet (i.e., no
wildcards), the files named will each be loaded, one after
another. If a filespec matches more than one file, a directory
list of matching files will pop up which will allow you to choose
a file. See the section on the Directory List for further
explanation.
If no filespec is given, Bingo will ask behave as if you
issued 'be *.*'.
You may also specify the starting line and column position
for the first file to be edited. The '/lxx' and '/cxx' switches
allow you to do this. For example:
be /l10 /c15 test.doc
would load the file test.doc and move to the 10th line, five
columns over. If you do not give a column argument, the first
column will be assumed. If you do not give a line argument, both
the first line and the first column will be assumed.
Bingo 2.0 Reference
6
Bingo and Larger Screen Displays
--------------------------------
EGA, VGA, and MCGA video display cards support displays
larger than the standard 25 rows by 80 columns. Bingo does
support editing on these screen sizes. Bingo can be set to
handle screen displays in one of three ways:
- Bingo can be set to detect the current screen type and
dimensions, and do retrace checking.
- Bingo can be set to detect the current screen type and
size, but do no retrace checking.
- Bingo can be set to switch to 43/50 line mode if it is
supported. No retrace checking will be performed.
As shipped, Bingo chooses the middle of these three courses. The
retrace checking is only done if you are using a color display
with a 25x80 configuration.
There is a caveat here though. Whenever Bingo swaps itself
out and then swaps itself back in, whether it is through a
'swap_shell', 'swap_execute', or 'quit_and_save_status' function,
Bingo:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! !!!
!!! will assume the screen size & mode do not change !!!
!!! !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This is very important. You cannot change the screen size while
swapping out without changing it back, or Bingo will become
*very* confused. So have a care!!!!
Bingo 2.0 Reference
7
Bingo's Menu System
-------------------
Bingo implements a comprehensive menu structure to aid you
in utilizing Bingo's functions. Many people, myself included, do
not necessarily wish to spend the time to assign every function
we need to a keyboard equivalent. This requires a large time
investment before you can begin using the editor. On the other
hand, it is very irritating when you need a particular function
and cannot use it because you did not have the foresight to
assigned it to a key combination.
Bingo's menu system was designed to handle just this
situation. By assigning the 'main_menu' function to a keystroke,
you effectively have access to *every* function Bingo has.
First, greater than 75% of Bingo's functions are directly
accessible from the menus, grouped in logical sets, following a
logical hierarchy. The remaining functions can be accessed by
selecting the 'eXtras' sub-menu, then the 'Pick & exec' function.
This function then allows you to choose from a list of *all*
supported functions.
I have found that for most people, it pays to assign your
most commonly needed functions to keystrokes, and then rely on
the menu system for the ones which are used to a lesser degree.
The logical structure of the menus allows for easy access to less
frequently needed functions.
The menus themselves work quite easily. A list of
possibilities is presented. A menubar can be moved up and down
to make your choice; pressing Return selects the choice. In
addition, each choice has a highlighted character; pressing this
character will automatically select the choice.
In some cases you may be presented with a child menu. Here
again you may make a choice as before, with one additional bit of
functionality. If you are in a child menu, pressing the PgUp or
PgDn keys will move you to the previous or next sibling menu,
respectively.
The Print menu, as well as all of the configuration menus,
is a multiple menu. This means that after you have made a
choice, the action will be executed and you will be returned to
the menu at the same spot. I have found that when printing and
configuring, people usually want to do more than one task. Menus
which are multiple will have an asterisk ('*') printed at the
bottom of the menu border.
The Escape key always closes the current child menu. If you
are at the top menu, it quits the menu system entirely. To see
how your mouse, if you have one, interacts with the menus, see
the section concerning Bingo and a mouse.
Bingo 2.0 Reference
8
Bingo's Dialogue Boxes
----------------------
Throughout Bingo, you will encounter many dialogue boxes.
There are four main types. They are:
String Entry Boxes:
These are the boxes which ask you for string input.
The easiest example is when Bingo asks you for a filename.
These boxes allow you to enter string input in a flexible
manner. A wide variety of keystrokes are available to aid
in this endeavor. For a synopsis of these keystrokes, press
Control-H while you are within a String Entry box, and a
popup display of the available keystrokes will appear.
Pressing <Escape> will abort out of the string entry
operation.
Yes/No Boxes:
These are the boxes which require a yes or no answer to
a question. An example of this is when you 'quit' a file
and the file has been modified. Bingo will ask you if you
wish to save the file.
Each time you enter a Yes/No box, one of the two
options will be will be highlighted. This is the default
option which will be selected if you press <Return>. By
using the Left and Right Arrow keys, you can change the
current selection. Alternatively, you can press either the
'y' key (any case) for a yes answer, or the 'n' key (any
case) for a no answer.
Pressing <Escape> will abort the operation.
Non-Editable Display Boxes:
The easiest example of this type of box is the Help
box, or the Info box. This type of box simply displays a
number of lines within a box. By using the Up and Down
arrows (also the space bar) you may scroll by lines, and by
using the Page Up and Page Down keys you may scroll by
pages.
Any other keystroke will exit the box.
List-Picking Boxes:
The best example of this type of dialogue box occurs
when the 'directory list picker' pops up. This type of box
is very similar to the Non-Editable box discussed above, but
the idea here is not merely to display information but to
facilitate making a choice. There will be a menubar
highlighted, showing the current selection. You may move
Bingo 2.0 Reference
9
this bar up and down using the arrow and page keys.
Pressing <Return> will selection this option.
Additionally, the initial character of each selection
may be highlighted. If so, pressing the corresponding
character will automatically select this option.
Finally, even if the leading characters of each
selection are not so highlighted, you may "step" through the
selections by pressing letter keys. The menubar will move
to the next selection which starts with the letter pressed.
If necessary, the menubar will wrap to the top of the list
(Bingo will beep in this case). In the case of the
directory picker, the leading '\' characters of directory
entries will be ignored.
As is the custom, the <Escape> key will abort the
operation.
Bingo 2.0 Reference
10
Directory Lister
----------------
One of the extremely useful features of Bingo is its
directory lister. Often, Bingo will ask for a filename. If the
name you give matches more than one file, in the case of
wildcards, for instance, the lister will appear with a list of
matches and all subdirectories in the current directory. There
are several features embedded in this lister to assist you in
choosing a file.
First, all subdirectory entries in the current directory
will are shown at the top, with a '\' character preceding them.
Selecting any of these will cause the lister to change to that
directory.
Second, pressing a letter causes the Lister to move to the
next filename whose first character matches the letter pressed.
A beep will sound if the search wraps around to the beginning.
The list is sorted alphabetically by name, but subdirectory
entries come first. The last entry is always the New
Specification entry, which allows you to type in a new
specification, perhaps another drive if it is necessary.
As of version 1.1b, file sizes, dates, and times are also
shown on the directory list, to aid in your choice.
Bingo and File Names
--------------------
Many times during normal operation, Bingo will ask you for a
filename. Bingo handles filenames slightly differently than
plain vanilla DOS. In particular, let's examine the difference
between
'thisfile' & 'thisfile.'
The first does not contain a period. In this case, Bingo
automatically appends '.*' to the filename, and presents you with
a directory list picker. The second contains the trailing
period, and so will be used as is. So, in order to specify a
file without an extension, you must add the trailing period.
Why is this done? Simple laziness. This allows me to ask
for file 'test' and be presented with all forms of 'test.*'. I
can then hit return on the file which interests me.
Bingo 2.0 Reference
11
The Status Line
---------------
On the bottom line of each window in Bingo's display is the
status line. This line communicates several valuable pieces of
information. On the left side of the line, the current line and
column are displayed. Next are a series of flags:
a Autoindent
c C mode
i Insert mode
m Matching Mode
r Recording Macro
t Smart Tabs
w Wordwrap
z Zoom mode
For each of these flags, if the letter is capitalized, it
indicates that the toggle is on, while a lowercase character
indicates the option is toggled off.
Next you will see something looking like [x/y] where 'y' is
the number of files in the ring, and 'x' is the position of the
current file in the ring.
Finally, the full pathname comes. If it is prefaced with an
asterisk '*', it means the file has been modified.
At the end of one of the on screen status lines, you will
see either one or three little pyramids. If there is a single
pyramid, that means it is not the active window. If there are
three pyramids, they tell you which is the active window. If the
three pyramids are pointing up, the full-width window above the
status line is the current window. If the three pyramids point
to the left, this means that of the two windows above the status
line, the one on the left is the active window. If the three
pyramids point to the right, the window on the right is active.
The same rules concerning the direction of the pyramids hold
for inactive status lines, except that only one pyramid will be
present.
If this all sounds complicated, don't worry. Open a few
windows and move among them; it will become much clearer.
Bingo 2.0 Reference
12
Keyinst: The Keyboard Configuration Program
-------------------------------------------
Keyinst is the program used to install a keyboard
configuration into the Bingo executable. The supplied
configuration files (*.CFG) give a good example of how to set up
the file, so this section will simply go over the high points
again.
Keyinst is invoked as follows:
Keyinst <configuration name> <executable name>
It will then read the named configuration file and, using its
data, rewrite the named executable. If either of the names is
missing, Keyinst will prompt for the name.
Key Names
---------
f1-f10 are the function keys
!f1-!f10 are the shifted function keys
@f1-@f10 are the control function keys
#f1-#f10 are the alt function keys
@<key> is the control-<key> combination
#<key> is the alt-<key> combination
These are named keys:
backspace shift_delete
backtab shift_home
tab shift_end
escape shift_pgup
ctrl_backspace shift_pgdn
alt_backspace shift_right_arrow
return shift_left_arrow
ctrl_return shift_up_arrow
alt_return shift_down_arrow
alt_escape ctrl_insert
ctrl_tab ctrl_delete
alt_tab ctrl_home
alt_equal ctrl_end
alt_minus ctrl_pgup
insert ctrl_pgdn
delete ctrl_right_arrow
home ctrl_left_arrow
end ctrl_up_arrow
pgup ctrl_down_arrow
pgdn keypad_plus
right_arrow keypad_minus
left_arrow keypad_divide
up_arrow keypad_aster
down_arrow keypad_return
shift_insert ctrl_keypad_plus
Bingo 2.0 Reference
13
ctrl_keypad_minus
ctrl_keypad_divide
ctrl_keypad_aster Note: The keynames with
ctrl_keypad_return 'grey' in them, as well as
alt_keypad_plus F11, F12, and several others,
alt_keypad_minus denote keys which are
alt_keypad_divide available only if you have an
alt_keypad_aster extended keyboard, and you
alt_keypad_return have the 'Use Extended
grey_up_arrow Keyboard Bios' option turned
grey_down_arrow on.
grey_left_arrow
grey_right_arrow
grey_delete
grey_end
grey_home
grey_insert
grey_pgup
grey_pgdn
ctrl_grey_up_arrow
ctrl_grey_down_arrow
ctrl_grey_left_arrow
ctrl_grey_right_arrow
ctrl_grey_delete
ctrl_grey_end
ctrl_grey_home
ctrl_grey_insert
ctrl_grey_pgup
ctrl_grey_pgdn
alt_grey_up_arrow
alt_grey_down_arrow
alt_grey_left_arrow
alt_grey_right_arrow
alt_grey_delete
alt_grey_end
alt_grey_home
alt_grey_insert
alt_grey_pgup
alt_grey_pgdn
Bingo 2.0 Reference
14
The configuration file itself consists of lines of the
format:
<key specifier> <function identifier>
or
<key specifier> macro <macro list>
or
; <comment text>
A line starting with a space is a continuation of the previous
line.
<key specifier> is either a simple <key name>, or two key
names strung together as <key name>+<key name>. For instance,
for you Wordstar people, control-k q would be entered as
@k+q
Note: in this case, the Bingo will recognize both the sequence
@k+q and @k+Q as the same thing -- case is not significant.
The <macro list> is a list of 0 or more function
descriptors, as listed in the Function List section, and 0 or
more literal occurrences, and 0 or more named keys, in any order.
The literals must be enclosed in single quotes. The literals
will occur in the macro exactly as if they had been typed. For
instance, the line
f1 macro 'Chris' return
would define the f1 key as my name followed by a return.
The following macro would define the Alt-C key to save all
current modified files, execute the make command while swapping
Bingo out to disk, saving the errors in the ERRS file, then load
the ERRS file.
#c macro save_all swap_execute 'make > errs' return
return load_file 'errs.' return
A more interesting variant of this is the one I used prior
to installing the auto-error processing:
#c macro modify_save_all swap_execute 'make > errs'
return return window_bottom load_file 'errs.'
return
This version will attempt to put the errors file in the bottom-
most window, and it will initially only save those files as have
been modified.
Bingo 2.0 Reference
15
After adding the auto-error processing, I added a more
complex version of this macro:
#c macro modify_save_all swap_execute 'make > errs'
return return window_one window_split load_file
'errs.' return window_previous window_resize
down_arrow down_arrow down_arrow down_arrow
down_arrow down_arrow return setup_err_parse
'errs.' return return next_error
This version saves all modified files, executes Make as before,
and returns. When it returns, it makes sure there is but one
window, splits the current window, and loads in the ERRS file.
It then resizes it so the bottom window is smaller, resets the
error parsing to the ERRS file, then searches for the next
(first) error.
This last version is very sweet to use if you have a
compiler which generates agreeable error files.
'open_end' Identifier
---------------------
Keyinst allows the use of the 'open_end' identifier in
macros to force Bingo to fetch string input from the keyboard.
For example:
f1 macro search open_end 'i' return
will execute the search function, wait for the user to input the
target string, then input 'i' for the search modifier and do the
search.
'open_end' is effective only for string input --- single key
input situations will not respond to it.
'cur_file' Identifier
---------------------
Keyinst also allows the use of the 'cur_file' indentifier in
macros to expand into the current file's name (less path) in
string input. For example:
f1 macro load_file cur_file return
will force the reload of the current file, providing it is
located in the current directory.
Bingo 2.0 Reference
16
Keyinst Command Line Options
----------------------------
Keyinst recognizes three command line options. One is a
shortcut:
keyinst !
tells Keyinst to assume the name of the executable is BE.EXE, and
that the name of the configuration file is BINGO.CFG. I put this
in primarily for my own use, as I run Keyinst several times an
hour during development.
'Keyinst Names' will provide an alphabetical list of all of
the function names which are currently recognized. Useful to
have.
Likewise 'Keyinst keys' will list all recognized keynames.
Also useful to have.
Bingo 2.0 Reference
17
Bingo & The Mouse
-----------------
Bingo has the capacity to make extensive use of a Microsoft
(trademark and copyright to Microsoft) compatible mouse, should
you have one installed. In order for the mouse to work, three
things must be true.
1) It must be connected to the computer properly. See your
mouse manual for instructions.
2) You must have your mouse driver installed properly.
Again, see your mouse manual for instructions on how to
accomplish this.
3) You must have the 'Use Mouse' option turned on, found in
the General configuration menu. Bingo is shipped with mouse use
turned on.
Bingo is designed to allow users of three button mice to
make full use of all three buttons. However, users with two
button mice will only lose a little functionality when it comes
to programming the mouse, and no functionality at all when it
comes to dealing with the menus and dialogue boxes.
It is generally easy to tell if the mouse is working; the
status line will have four additional "buttons", each consisting
of three arrows enclosed in square braces. Also, to conserve
space, the filename will be shown without its full path.
The Mouse Cursor
----------------
The mouse cursor will appear on your screen as a solid, non-
blinking block, which changes color depending on the underlying
color. It should be possible to move the cursor over the entire
screen. If the mouse cursor is present, it means that a response
with the mouse is possible. If it is not visible, this means
that at this point, no mouse response makes sense.
The Mouse at the General Editing Level
--------------------------------------
At the general editing screen, Bingo has only one hard coded
mouse capability. However, it does have 18 programmable mouse
events.
The hardcoded event centers around the "triple-pyramid"
found at the right end of the active status line. If you move
the mouse cursor to this point and press any mouse button, Bingo
will execute the equivalent of a 'next_file' function. This will
continue as long as you hold the button down. Be careful! The
files will cycle at a very fast rate if you hold the button down.
Bingo 2.0 Reference
18
The programmable events are handled exactly as key
assignments are handled: through Keyinst. These are the mouse
names:
Three_buttons Left_right_buttons
Left_middle_buttons Multiple_left_button
Single_left_button Right_middle_buttons
Multiple_right_button Single_right_button
Multiple_middle_button Single_middle_button
Single_up_arrow Single_down_arrow
Single_left_arrow Single_right_arrow
Multiple_up_arrow Multiple_down_arrow
Multiple_left_arrow Multiple_right_arrow
The first ten are concerned simply with what happens when
you press the corresponding button sequence. Note that users of
two-button devices will only be able to utilize five of these,
those dealing with the left and right buttons.
The second eight refer to the 4 "hot spots" on the active
status line. There are two for each button, one for a single
click and one for a double click.
Now that you know of these event names, what can you do with
them? Well, you can assign them anything you could assign a key.
In addition, a special function is provided to help deal with the
mouse:
snap_to_mouse_xy: this function moves the cursor to
the current mouse position. If
necessary, it will change the
active window.
Combining this with other functions, quite powerful mouse events
can be programmed. For example:
Single_left_button snap_to_mouse_xy
Single_right_button macro snap_to_mouse_xy point_mark
The first simply moves the cursor, while the second moves the
cursor and drops a point mark.
The eight "buttons" can also be programmed as if they were
keys.
Single_down_arrow cursor_down
Double_down_arrow down_page
Here, this has defined the down arrow button to respond with a
cursor_down if a single click occurs on it, or a down_page if a
double click occurs on it.
Bingo 2.0 Reference
19
These "buttons" work a little differently than you might
expect -- as long as you hold the mouse button down, the function
will repetitively execute. So, if you double click on the down
arrow "button" and hold the second click down, you will see the
file whiz by at a truly astonishing speed.
These eighteen events give you the user an unparalleled
degree of control over how the mouse responds.
The Mouse and The Menus
-----------------------
The mouse would not be very useful if it was not well
integrated into the menu system. Great pains have been taken to
make mouse use easy and intuitive with respect to the menu
system.
Basically, it is very simple. The left mouse button selects
something, and the right mouse button closes the current menu.
However, there are a few refinements.
If the item you select with a single left click is in the
rightmost menu, the effect is the same as if you had moved to
that selection and hit <return>. If the item is not the
rightmost menu, say the it is in the Main menu and you currently
have the Block menu open, then you will simply be moved to the
selection, with the other menus closed for you. However, no
equivalent <return> will be executed.
If, however, you use a double left click, the selection will
be executed regardless of where it was on the menu hierarchy.
Any extra open menus will be closed to bring you to the selected
level.
Likewise, a single right click will close the current menu.
However, a double click will close *all* open menus.
Note that this gives you some capabilities which are not
available from the keyboard.
If the above sounds complicated, don't worry. In practice,
it is very easy. I would suggest you restrict yourself to single
clicks when you begin, then move to double clicks when you are
sure of what a single click would do. You will very quickly find
that the menus are effortlessly intertwined with the mouse.
Bingo 2.0 Reference
20
The Mouse & Dialogue Boxes
--------------------------
Throughout Bingo, you will encounter many dialogue boxes.
There are four main types, and all support mouse use where
appropriate. They are:
String Entry Boxes:
These are the boxes which ask you for string input.
The easiest example is when Bingo asks you for a filename.
There are only a few mouse options in these boxes; most of
the time you must enter text from the keyboard.
However, there are three supported button events. A
single left click has the same effect as a <return>; it
accepts the current string. A double left click wipes out
the string; it in effect is a Control-Y equivalent.
Finally, any right button click is the equivalent of an
<Escape> key.
Yes/No Boxes:
These are the boxes which require a yes or no answer to
a question. The easiest example of this is in the
configuration options, where you are asked if you wish to
toggle the option. By placing the mouse cursor over the
[Yes] selection and pressing the left mouse button, you
answer in the affirmative. Likewise, placing the mouse
cursor over the [No] selection and pressing the left button
answers in the negative.
As usual, pressing the right mouse button is equivalent
to the <Escape> key.
Non-Editable Display Boxes:
The easiest example of this type of box is the Help
box, or the Info box. If there are more lines than fit
within the box, up and down arrow boxes will appear in the
upper and lower right hand corners of the box. By moving
the mouse cursor to the corresponding box and holding a
mouse button down, the display will scroll in the
corresponding direction.
As expected, the right button exits.
List-Picking Boxes:
The best example of this type of dialogue box occurs
when the 'directory list picker' pops up. Here, as in the
Non-Editable Display Boxes, up and down arrow boxes will
appear if necessary. Furthermore, moving the mouse cursor
to a particular selection and pressing a single left key
will move the menubar to that selection.
Bingo 2.0 Reference
21
Moving the mouse cursor to a particular selection and
double left clicking will select that particular selection
as if you had moved the menubar there and typed <return>.
As always, the right button is the equivalent of typing
<Escape>.
The Mouse and The ASCII Table
-----------------------------
The mouse is also tightly integrated with the ASCII table
function, 'ascii_table'. Here, single left clicking on a
character moves the cursor to it (updating the display). Double
left clicking selects the character and adds it to the string.
Single left clicking on the [Bspace] bar is equivalent to
typing <backspace>; it removes one character from the string. A
double left click on this spot zeroes the string entirely.
As always, clicking the right button is the equivalent of
typing <Escape>.
Bingo 2.0 Reference
22
Basic Editing
-------------
Basic editing concerns deletion and insertion of characters.
Bingo provides a number of ways to delete text without recurse to
the block operation. Four of these operations push deleted text
onto the unkill stack -- 'del_eol', 'del_line', 'del_bol', and
'del_word'.
The Destructive Backspace
-------------------------
Bingo supports three backspace deletion modes. The first is
the old favorite, the simple one character destructive backspace.
The second mode destructively deletes back to the previous
tab stop, provided there are only spaces in the way. If there
are non-space characters in the way, it functions as in mode 1.
The final mode deletes all the way to the left margin
(column 1), provided it consists only of spaces. Again, if there
are non-space characters, it functions as mode 2.
Delete EOL vs. Delete Line vs. Delete BOL
-----------------------------------------
The 'del_eol' function deletes the remainder of the line
from the cursor position. If you are on the end of a line, it
brings the next line up to the current position.
The 'del_line' simple deletes the entire current line, no
questions asked.
The 'del_bol' deletes from the current position back to the
beginning of the line. If you are at the begging of a line,
nothing happens.
In all three cases, the deleted text is pushed onto the undo
stack.
Delete Word
-----------
The 'del_word' function deletes the word you are on and any
trailing spaces after it. Unlike the'next_word' & 'prev_word'
functions, 'del_word' considers words to be delimited by spaces.
If you are at the end of a line, it works like a 'del_eol'
function. The deleted text is pushed onto the unkill stack;
Bingo 2.0 Reference
23
File Handling
-------------
Bingo has extensive file handling capabilities, more than
almost any other editor available. Literally, there is little
you could want to do with a file which Bingo will not let you do.
Here are some of the high points in file handling with Bingo.
Edit_file & Load_file
---------------------
Editing a file with an 'edit_file' function may not always
physically load the file from disk. If the asked for name is
already being edited, you will simply be moved to the proper
buffer. Conversely, loading a file with the 'load_file' function
will always load the file from disk; if it exists in the ring
currently, the in-memory version will be killed first.
Choose_file
-----------
The 'choose_file' function pops up a list of the current
files in the ring, and allows you to choose from among them.
Also, the option to edit a new file exists; this option is
equivalent to the 'edit_file' function.
Rename_file
-----------
The 'rename_file' function changes nothing on the disk until
you save the file explicitly; however, it does change the name of
the in-memory file.
Quit
----
This is the usual way to exit a file. If the file has not
been modified, Bingo will immediatley quit the file. If the file
has been modified, Bingo will ask you if you wish to save the
file. Remember that in this case, a <return> indicates a yes
answer.
Quit_all
--------
This function repeatedly does a 'quit_file' on each file in
the ring. You can abort the operation at any time by typing
<Escape> in response to a query.
Abort & Abort_all
-----------------
These are very dangerous functions. 'abort' exits the file,
no questions asked. 'abort_all' exits the program, no questions
asked.
Bingo 2.0 Reference
24
Delete_file
-----------
This is just an easy way to delete an arbitrary file on
disk. No more, no less, but sometimes you do need free up disk
space.
Zap_file
--------
This allows you to wipe out the disk copy of the currently
active file. It does nothing to the in-memory version of the
file itself.
Modify_save & Modify_save_all
-----------------------------
These functions respectively save the current file or each
file if and only if it has been modified. Useful when saving
files to compile, so that only modified files get recompiled.
Switch_file
-----------
This function essentially performs a 'quit_file' followed by
an 'edit_file'.
Bingo 2.0 Reference
25
Searching
---------
Searching in Bingo is extremely quick, mainly because the
functions are hand-coded in assembly language for speed. Other
than that, there is very little to say about searching
capabilities in Bingo. The search algorithm is simple, but with
macros you can build some complicated abilities in.
It is easy to limit the search area to a specific range by
line marking a range of text. Any search (or replace) which
starts within a block will not move past the end of the block.
Basically, this means that no search or replace will continue
past the end of a block.
The 'C' option in the 'search' function will count the
number of occurrences of the target string in the rest of the
search area.
The Global option for search and replace operations starts
from the current cursor position, not from the top of the file.
Try the Search & Macro capability -- it is sharp.
Bingo 2.0 Reference
26
Navigation
----------
Navigation in Bingo is very straightforward. You may move
in terms of characters, lines, words, windowfuls, and the entire
file. You can also jump to the beginning and end of a marked
block. Finally, you can jump to a specified line, or by a
relative number of lines, in the file using the Jump function.
In addition, Bingo supports placemarks. I had never really
used placemarks much, or "bookmarks" as they are sometimes
called. But a buddy of mine told me to try them when in big
files, and I was impressed. But the editor I tried them in
allowed only one; this is just not enough. So I went one better.
Actually, I went 9 better.
Bingo provides 10 placemarks. You can drop one, jump to
one, or pop up a list of the current placemarks. Each placemark
defines a file, a line, and a column. When you try to jump to a
placemark and the file it pertains to is not in the ring, the
file will be fetched.
Bingo 2.0 Reference
27
Block Handling
--------------
Marking
-------
Block marking is extremely flexible. Three types of marking
are supported. Line marking considers lines to be the smallest
indivisible chunks of text. It is primarily used when editing
large sections of program code, since much of this type of
editing involves moving lines.
Point marking, on the other hand, considers single
characters to be the smallest indivisible portions of text. this
is useful for replicating portions of lines, rather than whole
lines. Marking types cannot be mixed!
While Point marking "snakes" the mark from one point to the
next, Vertical marking lets you define corners of a column-
oriented block.
In all three cases, marking proceeds as follows: go to the
beginning of the block you wish to mark; execute the mark
function you wish to apply; move to the end of the block you wish
to mark; execute the mark function you wish to apply.
Note that block marking does not get "turned on" and "turned
off". You simply mark the boundaries of the block. If two ends
already exist, Bingo will always try to increase the size of the
block. If the new mark is inside the mark, Bingo will replace
the "oldest" mark with the new mark.
You can also use the 'extend_mark' function. This simply
extends the current marking scheme to the current cursor
position. If there is no mark in the file, 'Extend_mark' will
display an error message.
Operations on Blocks
--------------------
Bingo supports two very different sets of block operations.
The first set will be familiar to users of many programming
editors, while the second will bring back memories of any
Wordstar compatible editor they may have used.
The first set of operations consists of three functions:
'cut', 'copy', 'paste'. 'cut' snips the marked region to the
block buffer, removing it from the file. 'copy' does the same
thing, but it leaves the marked text intact in the file. In both
cases, if nothing is marked and you have this option turned on,
Bingo will assume you wish the current line to be linemarked.
'paste' is very simple: whatever is currently in the block
buffer is placed at the current cursor position, based on the
marking method used. If the contents were point marked, the
contents are simply 'squirted' into the text. If the contents
were line marked, the lines are inserted above the current line.
Bingo 2.0 Reference
28
There is also an alternate type of paste operation, that of
'paste_replace'. In this case, the paste buffer's contents
overwrite the needed amount of space in the text, rather than
squirting between existing text. This type of pasting will only
work for Column and Line marked blocks.
The second type of block operations available are similar in
nature to those used by Wordstar-compatible editors. Block
operations consist of three steps: mark the text, move to the
destination position, invoke the function.
'block_move' moves the currently marked blocked of text to
the current cursor position. 'block_copy' does the same thing,
except it leaves a copy behind.
'block_delete' is functionally identical to Cut, except that
it requires that a block be marked; the setting of the auto
linecut toggle has no effect on 'block_delete'.
Named Buffers
-------------
In addition to the default paste buffer, Bingo supports 26
named buffers, 'a'-'z'. In order to change which buffer is
currently in use, use the 'name_buffer' function. Press the
letter of the buffer you want, or <return> for the default
buffer. Until you change the buffer, Bingo will use the
currently named buffer for all its operations. All buffers will
be saved when a swapping operation is being done.
Miscellaneous Functions
-----------------------
The 'buffer_info' function displays various pertinent info
about all the paste buffers, as well as which buffer is the
currently active one.
The 'look_buffer' function will display the current contents
of the current paste buffer in a non-editable window.
The 'report_bsize' function reports the size of the
currently marked block in terms of lines and characters.
Bingo 2.0 Reference
29
Utilities
---------
Bingo provides large number of utilities to be used to
manipulate text. Functions are available to:
- change the case of a block
- strip the high bit from characters in a block
- place tabs within text, and expand tabs within text
- shift blocks a certain number of spaces
- align lines with other lines
- sort blocks, in ascending or descending order, on a
particular column
- fill a vertically-marked block with a specific character
- format a paragraph
- count the number of words over a span of lines
- insert the current time and date into the file
The big thing with the utilities is: play with them. They
allow you to do some really useful things to your text.
Particularly, entab/detab are very useful when importing files
from other systems/editors.
Bingo 2.0 Reference
30
Extra Functions
---------------
Help
----
The 'help' function attempts to read the file BINGO.HLP
located in the same directory as BE.EXE. This file can consist
of anything you wish, and contain as many lines as you wish (it
must fit into memory...).
Info
----
This function simply brings up some useful info, such as the
size each file will be when written to disk, current date and
time, etc.
Pick & Exec
-----------
This function asks for a function descriptor to execute.
The same function descriptors are used as are used by Keyinst.
If you give it an unrecognized descriptor, a list of all
supported functions are popped up for your convenience. If you
give it substring, such as 'win', all functions descriptors which
contain 'win' anywhere will be shown; in this case the window
functions. Tie this to an easy to remember key and all of
Bingo's functions are at your fingertips.
This is also useful when you are trying to remember a
particular function descriptor and you don't have the
documentation handy.
Quit and Save Status
--------------------
This simply saves the current Bingo status information,
copies of all current files, and exits. When you next start
Bingo, it will ask if you wish to restore Bingo to its previous
state. If you say yes, you will be placed exactly where you left
off. If you indicate no, Bingo will proceed normally, leaving
the suspension files in place to be dealt with the next time
Bingo is invoked.
This function is ultra-useful since it allows for easy
interruptions when you are working.
Bingo 2.0 Reference
31
Global
------
This is an *extremely* powerful function. When invoked, it
asks for a keystroke to execute globally. The keystroke can
invoke a macro, or simple be tied to a function. For each file
in the ring, Bingo will ask if you wish the function to be
executed; your options are the same as they are when doing a
search & replace operation:
Y Yes, do operation, go to next file
N No, don't do operation, but do go to next file
O Yes, do the operation, but abort the global
operation afterwards.
G Yes, do the operation, and do it for all remaining
files without asking.
Q Abort the global operation right now.
You must be *very* careful when using this operation; any
functions which change the number of files in the ring can be
dangerous. Be prudent when using it, and you will be fine, use
it without some forethought, and you may get bitten and regret
it.
Ascii_table
-----------
This function serves a dual purpose. First, it will pop up
a display of all 256 characters, serving as a handy reminder of
the characters available. As you move the cursor over the table,
the decimal, octal, hexadecimal, and mnemonic values if
appropriate.
Further, by moving onto a particular character and hitting
return, you will add this character to the string displayed at
the top. You can build a string up to about 30 characters in
lenngth. The <Backspace> key will delete the last character on
the string. When you press <Escape> to leave, the contents of
the string will be inserted into the text at the current cursor
postition.
Bingo 2.0 Reference
32
System Operations
-----------------
Bingo supports a number of system operations. While they
are not large in number, they are large in utility.
Changing Directories
--------------------
The 'chdir' function will allow you to change the currently
logged directory, or even drive. Not used often, but when it is
needed, it tends to be *really* needed.
Simple Execution & Shelling
---------------------------
The 'exec_command' function simply executes a given DOS
command line and returns. It does not do anything fancy, and
Bingo will remain in memory (consuming quite a bit of memory) but
it is fast and simple for issuing short commands.
The 'shell' function is identical to 'exec_command', except
it takes no arguments. It simply gives you a DOS shell.
Swap Execution & Shelling
-------------------------
More often than not, particularly in the case of executing
command-line compilers, you simply can't afford to let Bingo hang
around in memory, since it consumes a bit. So Bingo provides two
other methods for executing commands. While they appear
identical in form and function to the previous pair of functions,
'swap_execute' & 'swap_shell', are much more interesting.
While they, too, execute a command or shell to DOS, prior to
doing so, they save all relevant information such as copies of
the current files, etc., then swap Bingo out of memory. When
this happens, the ~10k kernel of BSWAP.COM is left behind to
manage things in Bingo's absence. When the command is
terminated, Bingo will reappear, load all the state info saved
previously, and for all intents and purposes, you are right where
you left off. You can define macros across this gap, your
placemarks stay intact, etc.
The cost is a small bit of speed when Bingo saves the state
information and reads it again later, but it is negligible for
the performance return. It is ideal for running command-line
compilers and other memory intensive programs from within Bingo.
One thing to remember: the size of your paste buffers as
well as the size of your undo stack affect the time it takes to
save and restore Bingo's status. Keep this in mind when you are
configuring the stack size, and when you are utilizing multiple
paste buffers.
In versions prior to 1.1b, Bingo would not swap shell
properly on some machines while running DOS 4.00 and higher.
This has been rectified.
Bingo 2.0 Reference
33
If your machine should for some reason have to be reset
while Bingo is swapped out (something that happens when you are
developing software), the next time you start Bingo, it will
treat the swap files as if they were suspension files, and ask
you if you wish to restore Bingo to its previous state.
Bingo 2.0 Reference
34
Macros
------
Bingo provides tremendous support for the creation,
management, and execution of keyboard macros. This level is
support was indicated by the author's own experience in
developing Bingo.
I started using Bingo to develop Bingo very early on in
Bingo's life (it didn't even have a search function at this time)
in the hopes that this would ferret out bugs more quickly than
testing would. However, one of the things I missed from my
previous editor was the ability to define and replay macros on
the fly. In addition, I felt my previous editor was missing some
key functionality when it came to dealing with the keyboard, so I
had the opportunity to "do macros right". Of course, my
definition of useful macros may differ from yours, but...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! !!!!
!!!! Macros from versions prior to 2.0 are !!!!
!!!! not !!!!
!!!! compatible with version 2.0 and above !!!!
!!!! !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Macro Space
-----------
Bingo allows for a macro space of 2048 macro tokens. A token
is either a function identifier, or a literal character. While
this may not seem like very much, to date I have not yet filled
half of it, except in artificial testing situations. Further,
when a key is undefined or redefined, any macro space it used is
reclaimed.
Bingo allows a maximum of 200 one or two key sequences to be
defined; again, space in this table is dynamically reclaimed when
possible.
Defining Macros
---------------
There are three ways to define macros, all very similar.
You can define the scrap key to hold a macro, a single key to
hold a macro, or a two key combination to hold a macro. Any of
these functions will also end a macro definition if one is
currently in progress.
Macros can be defined across any number of activities.
Pressing <Escape> at any time as the response to a query from
Bingo will end the macro presently being recorded.
Bingo 2.0 Reference
35
Saving Macros
-------------
Using the single key save and load functions, you can save
favorite macros to named files for later recall. Single saving
also saves the key sequence the macro is attached to, and loading
it in again will redefine the key.
Saving the Entire Key Set
-------------------------
Bingo also allows you to save the entire key table,
including all key assignments and all macros, for later recall.
Recalling a keyset file will overwrite the entire key table, so
be warned.
Executing a Macro File
----------------------
You may also execute any macro which was single saved to a
file at any time. This executes it one, without disturbing the
current key table assignments. Good for macros used
infrequently.
Bingo 2.0 Reference
36
Windows
-------
Window_split, _edit, _load & _find
----------------------------------
The first three of these functions create new windows from
the current window. Window_split simply splits the current
window into two, both containing the same file.
Window_edit essentially performs a split, then executes an
edit_file function.
Window_load essentially performs a split, then a load_file
function.
Window_find, on the other hands, changes to the nearest
window containing the named file. If the file is not currently
contained in a window, an error message is displayed.
Window_vertical
---------------
Starting in version 2.0, Bingo provides the ability to split
windows vertically. There are some restrictions, however.
Vertical windows must always exist in pairs; that is, two windows
sharing one status line. They are even resized together. This
is not a large problem, but you should be aware of it.
Window_resize
-------------
This function allows you to change the vertical size of a
window, as well as the window below the current one.
Window_one & Window_zoom
------------------------
While window_one and window_zoom superficially perform the
same action, remember that zoom is simply a toggle, while the
'window_one' function eliminates all windows except the current,
growing the current window to full size.
Bingo 2.0 Reference
37
Printing
--------
"The main thing to remember about printing is, it's
dangerous." That's what was true about versions prior to 2.0.
However, with the advent of version 2.0, extensive checking is
done, and Bingo will detect an inactive parallel or serial
device.
You can print a file or a linemarked block; send a linefeed
or formfeed character, or send a sequence of ASCII values.
Also notice that you are asked if you want line numbers
printed out with each line. Kudos to Bob Boyken for this idea!
Bingo 2.0 Reference
38
Error Parsing and Undo
----------------------
How Error Parsing Works
-----------------------
Bingo provides the capability to automatically parse
compiler generated error messages. The procedure for this is
fairly simple.
First, you must have a text file containing the error output
of the compiler (or assembler) in question. This usually
obtained by running said compiler and redirecting its output to a
file. Bring this file into the editor.
Next, call the 'setup_err_parse' function, and give it the
name of the file. If the name matches a file in the ring, Bingo
will tell you that error processing is setup properly.
Now it is simple; simple call the 'next_error' or
'prev_error' functions. The following things will happen:
1) Bingo will see if a next (or previous) error can be
found. If not, it will report that no more errors exist.
2) Assuming an error line is found, the filename and line
number will be picked out of the line. Bingo will perform
and edit_file operation on the filename, then jump to the
offending line. All of this will happen within the current
window.
3) Also, any onscreen window which contains the file being
parsed will be updated. The current error line will be
highlighted automatically.
As you can see, error parsing is super useful. For a further
example of how it works, see the example macro in the section on
the Keyinst program.
Error Parsing Method
--------------------
Bingo parses error files using a "fuzzy" or "best-guess"
algorithm. It checks each line as follows.
First, Bingo attempts to find a valid filename on the line.
The filename must contain a period, and it must have a file
extension.
After finding such a filename, Bingo verifies that the named
file exists on disk or in the current ring. If it does, Bingo
now begins to look for the line number within the named file.
Bingo will look for the first number to follow the filename,
and use this as the line number.
If both a filename & a line number are found, the line will
be recognized as a valid error/warning line.
This algorithm will work for the Borland and Microsoft
developmental tools. However, in some cases, you may have to
consult your manual in order to find what command-line switches
Bingo 2.0 Reference
39
have to be set for your compiler to output errors in a usable
message format.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!! !!!!!!!!!
!!!!!!!! Note that linker errors do not !!!!!!!!!
!!!!!!!! have line numbers, and so will !!!!!!!!!
!!!!!!!! not be recognized. !!!!!!!!!
!!!!!!!! !!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
However, whenever Bingo encounters a situation where there are no
more errors, it will display a message saying so. Further, it
will display a portion of the last non-blank line in the error
file on the message line with the "No more Errors" message, so
you can verify that all went well.
Undo Capabilities
-----------------
Bingo has several capabilities to allow you to recover from
recent mistakes. The 'Restore_line' function, will simply recall
the state of the current line to what it was when you first
arrived. This is good only as long as you do not move from the
line; once you leave the line, its original state is lost
forever.
This type of error-recovery is good for small things, but
something more substantial was needed. So Bingo keeps a stack of
recently deleted items; text deleted by 'del_eol', 'del_bol', and
'del_line' functions. This stack is kept in reverse order; that
is, the most recently deleted text is placed in top of the undo
stack.
Additionally, you have an option regarding text cut to the
paste buffer. Normally, when you place text into the paste
buffer (Using the 'cut', 'copy', etc. functions), if the paste
buffer already contains something, that text is discarded.
However, if you set the 'cut to stack' option on (in the General
Config Menu, or with the 'conf_cut_stack' function), this text
will be pushed onto the stack also.
You can control the size of the undo stack using the
'conf_kill_size' function (1 to 10240 lines), or through the
config menus. You cannot, however, turn it off.
Manipulating the Undo Stack
---------------------------
There are three functions available to help you deal with
the undo stack. 'rotate_kill' will popup a list of the current
stack's contents. By moving the menu bar and hitting return, you
can move the selected entry to the top of the stack.
'unkill' and 'paste_kill' are very similar. They take the
top member of the stack and insert it above the current line.
'unkill' also removes the top member from the stack.
Bingo 2.0 Reference
40
Configuring Bingo
-----------------
Bingo is extremely configurable. To access the
configuration menu, select the 'Config' option from the main
menu, or attach keys to particular configuration functions. The
settings themselves are explained explicitly in the Function List
section of this document in the Configuration portion.
To make the current selections permanent, select the "Write
setting" option found on the main configuration menu.
Bingo 2.0 Reference
41
Function List
-------------
The following section contains a listing of the functions
supported by Bingo, grouped by functionality. The index at the
end of this document makes alphabetical location of these
functions simple.
General Editing
---------------
insert_tab: insert the number of spaces needed to move
the cursor to the next tab stop, based on the
current tabsize.
carriage: splits the current line by moving the cursor
to the start of the next line, taking
everything to the right of the cursor along
for the ride. If this moves you onto the
bottom line of the window, the line will be
centered on the screen. Depending on C mode
and the AutoIndent mode settings, automatic
indentation of some type may be performed.
toggle_ins: toggles the insert/overwrite mode.
toggle_wrap toggles the word wrap setting.
toggle_cmode: toggles the C mode setting, regardless of the
file name.
toggle_autoindent: toggle the autoindent setting.
main_menu: invokes the main menu.
del_char: deletes the current character at the cursor
position; if it was at the end of a line,
brings the next line up.
back_space: performs a destructive backspace, based on
the current deletion mode in effect.
del_line: deletes the entire current line, regardless
of position.
del_eol: deletes all text to the end of the line; if
at the end of a line, joins the lines.
del_bol: deletes all text to beginning of line, moves
to first column.
Bingo 2.0 Reference
42
default_del: does one of two things depending on whether
or not a block is marked. If a block is
marked, the 'cut' function is executed. If
no block is marked, the 'del_char' function
is executed.
default_bspace: similar to 'default_del', except that if no
block is marked, a 'back_space' function is
executed.
del_word: deletes the current word and all trailing
spaces. If you are at the end of the line,
birngs the next line up.
Bingo 2.0 Reference
43
File Handling
-------------
edit_file: after asking for a filename; if the file is
already in the ring, it simply switches to
it. If it is not in the ring, it loads the
file.
choose_file: pops up a list of current files in the ring,
and an option for a new file. Selecting the
New File option performs an 'edit_file'
function.
load_file: after asking for a filename, it loads that
file from disk. If the file is already in
the ring, the in-memory version is first
deleted from memory.
rename_file: renames current file.
switch_file: switches to a different file, performing a
quit on the current file first. If you
escape out of the quit option, the switch
operation will abort.
save_file: saves the current file; does not exit.
modify_save: saves current file ONLY if it has been
modified.
quit: exits current file. If the file was
modified, it will ask you if you wish to save
the file; a <return> indicates yes.
abort: exits the file, no protection, no save.
file: saves and exits current file.
next_file: moves to the next file in ring.
prev_file: moves to the previous file in the ring.
quit_all: performs a quit on each file in the ring.
abort_all: aborts all files, no questions asks.
file_all: saves and exits all files.
save_all: saves all files.
modify_save_all: saves each modified file in the ring.
Bingo 2.0 Reference
44
delete_file: asks for a filename to delete on disk.
zap_file: delete's the disk copy of the current file.
block_load: loads a file into the current position; the
file is treated as though it was the line-
marked contents of the block buffer.
Bingo 2.0 Reference
45
Searching
---------
again: repeat the last search operation. If none
has yet been done, works just like search.
If the last search operation done was a
search & replace, only the search portion is
done.
search: search for text. Will ask for the target
text, and two modifiers:
I Ignore case
B Backwards
C Count
The 'C' option simply counts the number of
occurrences.
If the text is marked, the marking will be
treated as linemarking, and Bingo's search
will not continue past the end of the marked
area. This allows you to limit the searching
scope to a particular area.
replace: search and replace text. Will ask for
target, replacement text, and three
modifiers:
I Ignore Case
B Backwards
G Global Search/Replace
If Global is selected, Bingo will simply
replace all matching occurrences with the
replacement text. If not, Bingo will stop at
each match and ask:
Yes: replace and continue.
No: don't replace, but continue
search.
Only: Replace this and stop
Quit: stop, no replacement.
Global: Continue with global
replacement
Marked text limits the range as in the search
function.
search_macro: will acted like the 'search' function, but
will ask for a key to apply when found. It
will work like the replace function, but
instead of replacing, it will execute the
given key.
Bingo 2.0 Reference
46
Navigation
----------
down_page: moves down one windowful.
up_page: moves up one windowful.
cursor_right: moves right one char; wraps if necessary and
if bounce mode is active.
cursor_left: moves left one char, wraps if necessary and
if bounce mode is active.
cursor_up: moves up one line.
cursor_down: moves down one line.
back_tab: moves back to the previous tab stop. Does
not change the text at all.
begin_line: goes to beginning of line.
end_line: goes to end of line.
top_of_file: jump to top of file.
bot_of_file: jump to bottom of file.
next_word: goes to beginning of next word.
prev_word: goes to beginning of previous word.
top_of_screen: jumps to the top of screen.
bottom_of_screen: jumps to the bottom of screen.
top_of_block: jumps to the top of marked block.
bottom_of_block: jumps to the bottom of marked block.
jump: jump to position. If the number is prefaced
with a '+' character, Bingo will jump the
relative distance forward. If the number is
prefaced with a '-' character, Bingo will
jump the relative distance backwards.
center_line: makes the current line the center line of the
current window, and repaint the entire
screen, all windows.
Bingo 2.0 Reference
47
indent_up: moves to previous line with same indentation
scheme as current line.
indent_down: moves to next line with same indentation
scheme as current line.
snap_to_mouse_xy: moves the cursor to the current mouse
position, changing windows if necessary.
place_mark: drops a placemark, inquiring as which of the
10 allowed (0-9) you are concerned with.
Each placemark contains the filename, the
line, the column.
jump_mark: jumps to the specified placemark. If the
specified filename is not in the ring, Bingo
will go and get it.
show_marks: pops up a window showing the current
placemarks in effect for this editing
session.
Bingo 2.0 Reference
48
Block Handling
--------------
line_mark: drop a line marker. The block will be
expanded or shrunk, depending on the last
drop made. Line marks consider the line to
be the smallest markable element of text.
point_mark: drop a point marker. The block will be
expanded or shrunk, depending on the last
drop made. Point marks consider the
character to be the smallest markable element
of text.
vertical_mark: drop a vertical marker. Vertical, or column,
blocks are defined by and upper and an
opposing lower corner.
extend_mark: extends the current marked block, using
whichever marking scheme is in place. Does
nothing if no block is marked.
unmark: unmark all text in current buffer.
cut: cut the marked text to the block buffer. The
marked text is deleted from the file.
copy: copy the marked text to the block buffer.
The marked text is NOT deleted from the file.
paste: pastes the contents of the block buffer into
the text at the current position. If the
contents were linemarked, the contents will
be pasted, as lines, above the current line.
paste_replace: pastes the contents of the block buffer at
the current location, overwriting the needed
amount of space. This is only valid when the
paste buffer is Line or Vertical marked.
block_move: moves the currently marked blocked of text to
the cursor position.
block_copy: copies the currently marked blocked of text
to the cursor position.
block_delete: deletes the currently marked block of text to
the block buffer; identical to cut.
Bingo 2.0 Reference
49
block_save: writes the currently marked text to a file.
swap_buf_and_block: takes the currently marked portion, and swaps
it with the current contents of the paste
buffer. The two blocks need not be of the
same type.
report_bsize: reports the number of lines and characters
(line breaks in point marked blocks count as
one character) the currently marked block
spans.
name_buffer: allows you to change the current paste
buffer. <return> specifies the default
buffer, and 'a'-'z' specify their respective
buffers.
buffer_info: displays various pertinent information about
all the paste buffers.
look_buffer: displays the contents of the current buffer
in a non-editable window.
cut_append: works exactly like 'Cut', except it appends
the marked text to the current contents of
the buffer. The text in the buffer and the
marked text must be of the same type.
copy_append: just as 'Cut_append', but performs a copy
instead.
Bingo 2.0 Reference
50
Utilities
---------
entab: compresses the linemarked region specified or
the entire file by converting spaces to tabs.
indent_tab: compresses the leading spaces of the linemark
region specified or the entire file by
converting into the proper tabs. Rounds to
the nearest tab stop, thus "normalizing" the
indention to tab stops.
detab: expands the linemarked region specified or
the entire file by converting tabs to spaces.
shift_block: shifts the specified linemarked region the
number of columns specified. Positive
numbers indicate right-shifting, negative
numbers, left-shifting. The character 't' is
used to signify tab widths: '-3t' shifts the
block left 3 tabwidths.
lcase_block: lowercases the linemarked region.
ucase_block: uppercases the linemarked region.
fcase_block: flips the case of the linemarked region.
word_count: counts the words in the linemarked region,
default the whole file.
strip_highbit: strips the 8th bit in the linemarked region,
default the whole file.
sort_block: sorts block, ascending or descending, on a
certain column.
reform_para: reformats a block of text to conform to the
right margin; a paragraph is defined as text
between blank lines. The total amount of
text contained in a single paragraph cannot
be larger than 30000 characters.
repeat: repeats a keystroke n times. If n is '*',
the function repeats until a search fails.
The function halts repetition on a search
failure.
Bingo 2.0 Reference
51
dup_line: duplicates the current line and increments
cursor to the next line.
align: slides the linemarked region left or right to
match indentation with the line immediately
above the first marked line. If not lines
are marked, the current line is aligned.
match_delim: finds the proper match for a delimiter.
time_stamp: inserts the current date and time into the
text.
fill_block: fills a vertically marked block with a
specified character.
Bingo 2.0 Reference
52
Extra Operations
----------------
help: views the predefined help file
BINGO.HLP. This file must be located in
the same directory as BINGO.EXE.
info: pops up an info window, providing
information on current files in the
ring.
pick_exec: this allows you to pick a function
descriptor and have it executed.
quit_and_save_status: this function saves the current status
of Bingo as well as the current files,
so that the next time Bingo is invoked,
you will be given the option to pick up
where you left off.
global: this allows you to execute any keystroke
globally, throughout all the files in
the ring.
query_quote: inserts an integer or sequence of
integers as its raw ASCII character.
The decimal values must be comma
delimited.
ascii_table: pops up a display of all Ascii
characters. By hitting Return on a
character, you add it to the string.
When you hit Escape, the string is
inserted into the text.
toggle_display: toggles the display size between 25
lines and 43/50 lines. Will in all
likelihood screw up the cursor shape,
since the scan line counts will change.
Bingo 2.0 Reference
53
System Operations
-----------------
chdir: change the currently logged directory.
exec_command: execute a DOS command, while leaving Bingo
completely resident in memory.
shell: shell to DOS, leaving Bingo completely
resident in memory.
swap_execute: execute a DOS command while swapping Bingo
out. This will cause Bingo to save copies of
the buffers as well as state information, and
leave behind an ~10k kernel.
swap_shell: shell to DOS while swapping as above.
Bingo 2.0 Reference
54
Macros
------
define_scrap: start scrap macro definition.
onekey_def: start single-key macro definition.
twokey_def: start two-key macro definition.
scrap: execute the scrap macro.
single_key_save: save a single macro to a file for later
recall. Saves the key it is attached to
also.
single_key_load: load a single macro from a file. Overwrites
the current definition for the key, if it has
one.
key_set_save: saves entire keyset, including macros, but
not the scrap.
key_set_load: load entire keyset.
run_macro_file: runs a macro from a file saved with
single_key_save.
undefine_key: undefines a key.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!! !!!!!
!!!!! All of these functions will end a macro !!!!!
!!!!! being currently defined !!!!!
!!!!! !!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Bingo 2.0 Reference
55
Windows
-------
window_edit: this function ask for a filename, then splits
the window and essentially performs and
edit_file function for the requested
filename.
window_load: works like window_edit, except it forces a
reload of the named file.
window_split: this simply splits the current window in two
and uses the current file for both.
window_vertical: splits the current window vertically.
Windows can only be split so once.
window_find: this first attempts to move to the named file
among the currently open windows. If the
file is not currently being displayed in a
window, an error message is displayed.
window_close: closes the current window and expands the
above window to use its space.
window_zoom: toggles the display between zoomed mode.
When the display is zoomed, the current
window takes up the entire display, but Bingo
'remembers' the rest of the windows and will
restore them when zoom mode is toggled again.
window_one: this function makes the current window the
only window, wiping out all other windows.
window_next: this moves to the next window down, or wraps
to the top window if necessary.
window_previous: this moves to the next window up, or wraps to
the bottom if necessary.
window_top: jumps to the topmost, leftmost window.
window_bottom: jumps to the bottom-most, rightmost window.
window_resize: this allows you to resize the current window
(and its left or right sibling, if it exists)
and the window below (and *its* left or right
sibling, if it exists) by 'rubberbanding' the
current status line up and down.
Bingo 2.0 Reference
56
Printing
--------
print_file: print the current file, using the current
printer settings, to the current destination.
print_block: print a linemarked block of text, as above.
send_lf: send a line feed character to the
destination.
send_ff: send a formfeed character to the destination
send_sequence: send a sequence of character values to the
printer; e.g.
12,12,12,12,12
sends a series of 5 ASCII 12's (decimal) to
the destination
Bingo 2.0 Reference
57
Error Parsing and Undo
----------------------
setup_err_parse: this function will prompt you for a filename.
Bingo will from then on use the named file as
the error file. This must be called before
next_error, prev_error, or last_error are
called.
next_error: moves, within the current window, to the next
error as found in the current error file. If
no more errors can be found, Bingo will say
so, and display the last non-blank line in
the error file. Otherwise, Bingo will edit
the appropriate file into the current window,
as well as highlighting the line in the error
file being referenced.
prev_error: same as error except it moves backward
through the error file.
last_error: redisplays the last error message, if there
was one.
rotate_kill: pops up the current kill stack and allows you
to arbitrarily move a line of text to the top
of the stack.
unkill: inserts the top member of the stack above the
current line. Removes the top member from
the stack.
paste_kill: inserts the top member of the stack above the
current line. Leaves the stack alone.
restore_line: restores the current line to its former form.
Bingo 2.0 Reference
58
Configuration
-------------
save_settings: saves the current config settings to the
image of BINGO.EXE on disk.
conf_color: configure the color settings. You select the
color you are interested in by pressing the
appropriate color. Then, by watching the
bottom line on the screen and pressing the up
and down arrow keys, you select the color you
want. Pressing return will select the color.
For the overscan (border) attribute, only the
background attribute matters.
conf_iobufsize: configure the input/output buffer size. This
is a static buffer allocated at startup,
which is also used to save screen images when
popping up menus and dialogue boxes.
conf_lfs: alter the lfs-only setting. If on, this
setting has Bingo write files with lines
separated by LF's only, in the UNIX fashion.
Otherwise, Bingo uses CR-LF pairs to delimit
lines.
conf_backups: change backup generation. If on, Bingo will
automatically create backup files.
conf_eof: alter whether Bingo writes a EOF character at
the end of files (^Z).
conf_tabexpand: configure whether Bingo automatically expands
tabs to spaces when reading/writing files.
Not recommended, as it slows file IO down
quite a bit.
conf_stripping: configure whether Bingo strips the high bit
of characters when reading. Only really
useful when reading Wordstar files.
conf_rmargin: set the right margin. Affects paragraph
reformatting and word wrap.
conf_autoindent: set whether Bingo uses autoindent mode.
Affects paragraph reformatting and word wrap.
conf_wordwrap: set the word wrap mode.
conf_insert: whether Bingo is in insert/overwrite mode.
Bingo 2.0 Reference
59
conf_tabsize: set the tabsize.
conf_backspace: configure the backspace mode:
1. Delete single chars
2. Delete spaces back to tab setting
3. Delete spaces to left margin
conf_macro_death: set whether a keystroke interrupts macros.
If on, this will slow things down a bit, but
can prevent runaway macros.
conf_cmode: configure whether Bingo uses C Mode on *.c
and *.h files.
Bingo 2.0 Reference
60
conf_video_mode: allows you to choose from between three
screen handling options:
- autodetect with retrace checking
- autodetect with no retrace checking
- 43 or 50 line mode, if supported
Retrace checking will only be in effect if
there are only 25 lines to be displayed.
Note: this only changes the default
*startup* mode -- it changes nothing except
possibly the retrace mode while Bingo
continues to run. To make the change take
effect, you will have to quit Bingo
completely and restart it.
conf_cursor: set non-blinking block cursor. Good for
laptop users.
conf_prn: set the printer destination, between the
default serial port, the default parallel
port, or a file.
conf_tmarg: set the top margin, in terms of number of
lines.
conf_bmarg: set the bottom margin, in terms of number of
lines.
conf_lmarg: set the left margin which will be used when
printing, in terms of spaces.
conf_lines_per: set the lines per page, counting the top
margin.
conf_null: this sets the value used to replace ASCII 0's
with in files for file IO. ASCII 0's cannot
directly be entered in Bingo due to the
storage scheme employed. Therefore, you can
define an ASCII value from 128-255 to be used
in conversion. On file input, any 0's found
will be replaced with this value. On output,
any characters with this replacement value
will be converted to 0's.
Bingo 2.0 Reference
61
conf_ctrl_display: Normally, Bingo displays any control
characters in a file by simply displaying its
character picture as defined by the video
card. If the Ctrl_display is toggled on,
however, any control characters which have
ctrl-<alpha> equivalents (such as ASCII
05=control-E) will be displayed as the
character equivalent, and then highlighted as
if they were marked. Characters which have
an ASCII value greater than 127 will simply
be highlighted. This is only allowed when
retrace checking is disabled.
conf_kill_size: alters the size of the kill buffer.
conf_cut_stack: allows you to choose whether text about to be
discarded from the paste buffer should be
placed on the stack. If this is on, this
will slow block operations down a bit, but it
is a nice safety feature.
conf_auto_cut: allows you to toggle how the 'cut' & 'copy'
functions respond when no block has been
marked. If auto cut is active, these
functions will cut (or copy) the current
line. If auto cut is not active, the current
line will be Linemarked.
conf_smart_tabs: allows you to specify whether or not "Smart"
tabs are active. Smart tabs cause the
'insert_tab' function to tab over to the same
column as the next nonspace character on the
line previous.
conf_matching: configures matching mode. If matching mode
is active, entering a '[{<' character will
cause its matching close member to be entered
automatically.
conf_trail: allows you to configure whether or not Bingo
strips trailing spaces.
conf_bounce: allows you what cursor movement paradigm
Bingo uses. If Bounce mode is active, Bingo
views the entire document as one long string
of characters. Thus, you cannot move off of
exiting text. Further, the cursor will
automatically wrap at the end of lines. If
Bounce mode is turned off, cursor movement is
by the more traditional method, where you can
move any where (horizontally) you wish.
Bingo 2.0 Reference
62
conf_key_bios: this governs whether or not Bingo will use
the Extended Keyboard Bios if it is found.
On some machines, Bingo may identify it
incorrectly, or there may be compatibility
problems. This function allows you to tell
Bingo to disregard the extended Bios, even if
it is found. If this is on, the two sets of
arrow keys, for example, will be recognized
as different. They will therefore have to be
defined separately in your keyboard config
file.
conf_erronly: allows you to tell Bingo to further restrict
valid error lines to those containing the
word 'error' (any case).
conf_mouse: controls whether or not Bingo uses a Mouse,
if it finds one. Trust me, you'll like it!!!
Bingo 2.0 Reference
63
License Agreement
-----------------
This section tells you is how to become a registered user
once you decide that you like the program and want to use it on a
regular basis.
Bingo is distributed under the shareware marketing concept;
it is not free software and it has not been released to the
public domain. The documentation, executable images, and all
other files distributed with Bingo are copyrighted.
Shareware is a way of distributing computer software that
allows you to try out a program before you purchase it. Programs
distributed as shareware typically give you some period of time
to use the program and evaluate its usefulness to you. If the
program doesn't meet your needs, you're under no obligation to
pay for it. If you do find the program useful and wish to
continue using it on a regular basis, the shareware program's
author usually requests that you pay for the program by sending
him or her a completed registration form and payment. This is the
approach I have taken in making Bingo available to the public.
If you find Bingo to be a useful addition to your software
library, you're requested to become a registered user by
completing the enclosed registration form and returning it along
with the indicated license/registration fee. I hope that you will
agree that the $30.00 license fee is a small price to pay for the
continued use of the program. It requires a large investment to
develop, market, and support a product of this complexity. Your
support in the form of a license/registration fee will continue
to make good software available at low prices.
Quantity discounts are available to business, government,
and other organizations that wish to use Bingo on multiple
computer systems. Bingo is also available at very special rates
to organizations who wish to use it in promotional campaigns.
Write the author for information on using the program this way.
You are granted a limited license to use and examine Bingo
on a trial basis to determine if Bingo is suitable for your
needs. If you find Bingo useful and continue to use it on a
regular basis, you should complete and return the registration
form along with the indicated license/registration fee.
Bingo 2.0 Reference
64
You are encouraged to make copies of Bingo for the trial use
of other individuals and organizations, subject to the following
restrictions:
1) All Bingo distribution files must be copied in unmodified
form.
2) You may not include any other files with the distributed
copy.
3) You may not request compensation of any sort for
providing the copy. This restriction does not apply to
computer clubs and user groups who distribute software to
their members for a nominal fee.
You may not distribute Bingo with any other product or
service without written permission of the author.
Bingo may be included on electronic bulletin board systems
for downloading by users of the bulletin board provided the above
restrictions are met.
Bingo and all accompanying materials are provided "as is"
without warranty of any kind. The entire risk of using Bingo is
assumed by you.
The author, Christopher R. S. Schanck, makes no warranty of
any kind, expressed or implied, including but not limited to any
warranties of merchantability and fitness for a particular
purpose.
In no event will the author, Christopher R. S. Schanck, be
liable for any damages whatsoever arising out of your use or
inability to use the program.
If you use Bingo on a regular basis, you should complete the
registration form at the end of this document and return it along
with the indicated license/registration fee. Registration gives
you the right to use the software as documented in the license.
The registration fee of $30.00 establishes you as a
registered user of Bingo. You will receive the next version of
Bingo free. After that, you will be notified of each subsequent
version, and they will be available for a five (5) dollar fee.
When you submit your registration fee, however, you can
request that the author mail you a copy of the current version of
Bingo and accompanying documentation on disk (3.5" or 5.25") for
free. This offer is made for mailing addresses in the continental
United States only.
Bingo 2.0 Reference
65
Registration Form - Bingo 2.0
-----------------------------
Remit to: Christopher R.S. Schanck
2718 Nottingham Road
Bethlehem PA 18017
Phone: 215-691-1070
Bingo 2.0 June 1990
Bingo Registration ................ @ $ 30.00 each $ _____
Disk size, circle one: ( 3.5" / 5.25" )
Bingo printed Documentation ....... @ $ 15.00 each $ _____
Subtotal $ _____
Overseas shipping ................. @ $ 10.00/item $ _____
Total (U.S.Funds) $ _____
Name: _____________________________________________________
Company: __________________________________________________
Address: __________________________________________________
___________________________________________________________
___________________________________________________________
Day Phone: _________________________
Eve: _______________________________
Prices subject to change without notice.
Bingo 2.0 Reference
66
Registration Form - Continued
I acquired Bingo 2.0 from
[ ] - Friend [ ] - Computer Club
[ ] - Electronic BBS [ ] - Other - Please Specify
_____________________________
I would also appreciate any input you would care to give
concerning Bingo. If you have any ideas or comments that would
make Bingo a better program, then please let me know.
Bingo 2.0 Reference
67
The Author
----------
I just finished my M.S. in Computer Science, and hope to
join the "Real World" soon. I was born in a steel town in
Eastern Pennsylvania, and attended The Pennsylvania State
University as an undergraduate, graduating in May of 1988. I hold
a first-degree Black Belt in Tae Kwon Do, and I am an avid reader
of science-fiction.
Bingo 2.0 Reference
68
Acknowledgements
----------------
There are many I must acknowledge for the inspiration for
writing this program: family, friends, colleagues. In addition, I
want to thank Borland for their excellent TurboC compiler, which
I used to write Bingo; IBM for making my beloved baby, lo those
many years ago; and all the other folks who wrote software I used
to create Bingo. Thanks to all my computer science professors,
who instilled the knowledge to write such an application in me,
often against my will. I have to acknowledge another shareware
program I market, Navstar. Without Navstar to work on, I would
not have finished Bingo so quickly (or had so much opportunity to
use it!). I also thank the members of the Columbus Computer
Society (CCS), particularly the members of the Programmer's SIG,
several of whom served as Beta test people, putting their
programs In Harm's Way as they tested features.
And mucho thanks to my premier beta-tester, Bob Boyken, who
was also the first registrant of version 1.1a. Bob provided me
with much needed time, effort, and ideas, not to mention a help
file. His efforts, both in using Bingo regularly, and in testing
things for me on particular hardware combinations, was nothing
short of awesome.
Bingo 2.0 Reference
69
Appendix A: Index
-----------------
abort . . . . . . . . . . . . . . . . . . . . . 9, 10, 24, 32, 44
abort_all . . . . . . . . . . . . . . . . . . . . . . . . 24, 44
again . . . . . . . . . . . . . 8, 13, 18, 23, 33, 35, 36, 46, 56
align . . . . . . . . . . . . . . . . . . . . . . . . . 2, 30, 52
ascii_table . . . . . . . . . . . . . . . . . . . . . 22, 32, 53
back_space . . . . . . . . . . . . . . . . . . . . . . . 42, 43
back_tab . . . . . . . . . . . . . . . . . . . . . . . . . . 47
begin_line . . . . . . . . . . . . . . . . . . . . . . . . . 47
block_copy . . . . . . . . . . . . . . . . . . . . . . . 29, 49
block_delete . . . . . . . . . . . . . . . . . . . . . . 29, 49
block_load . . . . . . . . . . . . . . . . . . . . . . . . . 45
block_move . . . . . . . . . . . . . . . . . . . . . . . 29, 49
block_save . . . . . . . . . . . . . . . . . . . . . . . . . 50
bot_of_file . . . . . . . . . . . . . . . . . . . . . . . . . 47
bottom_of_block . . . . . . . . . . . . . . . . . . . . . . . 47
bottom_of_screen . . . . . . . . . . . . . . . . . . . . . . 47
buffer_info . . . . . . . . . . . . . . . . . . . . . . . 29, 50
carriage . . . . . . . . . . . . . . . . . . . . . . . . . . 42
center_line . . . . . . . . . . . . . . . . . . . . . . . . . 47
chdir . . . . . . . . . . . . . . . . . . . . . . . . . . 33, 54
choose_file . . . . . . . . . . . . . . . . . . . . . . . 24, 44
conf_auto_cut . . . . . . . . . . . . . . . . . . . . . . . . 62
conf_autoindent . . . . . . . . . . . . . . . . . . . . . . . 59
conf_backspace . . . . . . . . . . . . . . . . . . . . . . . 60
conf_backups . . . . . . . . . . . . . . . . . . . . . . . . 59
conf_bmarg . . . . . . . . . . . . . . . . . . . . . . . . . 61
conf_bounce . . . . . . . . . . . . . . . . . . . . . . . . . 62
conf_cmode . . . . . . . . . . . . . . . . . . . . . . . . . 60
conf_color . . . . . . . . . . . . . . . . . . . . . . . . . 59
conf_ctrl_display . . . . . . . . . . . . . . . . . . . . . . 62
conf_cursor . . . . . . . . . . . . . . . . . . . . . . . . . 61
conf_cut_stack . . . . . . . . . . . . . . . . . . . . . 40, 62
conf_eof . . . . . . . . . . . . . . . . . . . . . . . . . . 59
conf_erronly . . . . . . . . . . . . . . . . . . . . . . . . 63
conf_insert . . . . . . . . . . . . . . . . . . . . . . . . . 59
conf_iobufsize . . . . . . . . . . . . . . . . . . . . . . . 59
conf_key_bios . . . . . . . . . . . . . . . . . . . . . . . . 63
conf_kill_size . . . . . . . . . . . . . . . . . . . . . 40, 62
conf_lfs . . . . . . . . . . . . . . . . . . . . . . . . . . 59
conf_lines_per . . . . . . . . . . . . . . . . . . . . . . . 61
conf_lmarg . . . . . . . . . . . . . . . . . . . . . . . . . 61
conf_macro_death . . . . . . . . . . . . . . . . . . . . . . 60
conf_matching . . . . . . . . . . . . . . . . . . . . . . . . 62
conf_mouse . . . . . . . . . . . . . . . . . . . . . . . . . 63
conf_null . . . . . . . . . . . . . . . . . . . . . . . . . . 61
conf_prn . . . . . . . . . . . . . . . . . . . . . . . . . . 61
conf_rmargin . . . . . . . . . . . . . . . . . . . . . . . . 59
conf_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . 62
Bingo 2.0 Reference
70
conf_stripping . . . . . . . . . . . . . . . . . . . . . . . 59
conf_tabexpand . . . . . . . . . . . . . . . . . . . . . . . 59
conf_tabsize . . . . . . . . . . . . . . . . . . . . . . . . 60
conf_tmarg . . . . . . . . . . . . . . . . . . . . . . . . . 61
conf_trail . . . . . . . . . . . . . . . . . . . . . . . . . 62
conf_video_mode . . . . . . . . . . . . . . . . . . . . . . . 61
conf_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . 59
copy . . . . . . . . . 3, 5, 25, 28, 29, 40, 45, 49, 50, 62, 65
copy_append . . . . . . . . . . . . . . . . . . . . . . . . . 50
cur_file . . . . . . . . . . . . . . . . . . . . . . . . . . 16
cursor_down . . . . . . . . . . . . . . . . . . . . . . . 19, 47
cursor_left . . . . . . . . . . . . . . . . . . . . . . . . . 47
cursor_right . . . . . . . . . . . . . . . . . . . . . . . . 47
cursor_up . . . . . . . . . . . . . . . . . . . . . . . . . . 47
cut . . . . . . . . . . . . . . . . . 28, 29, 40, 43, 49, 50, 62
cut_append . . . . . . . . . . . . . . . . . . . . . . . . . 50
default_bspace . . . . . . . . . . . . . . . . . . . . . . . 43
default_del . . . . . . . . . . . . . . . . . . . . . . . . . 43
define_scrap . . . . . . . . . . . . . . . . . . . . . . . . 55
del_bol . . . . . . . . . . . . . . . . . . . . . . . 23, 40, 42
del_char . . . . . . . . . . . . . . . . . . . . . . . . 42, 43
del_eol . . . . . . . . . . . . . . . . . . . . . . . 23, 40, 42
del_line . . . . . . . . . . . . . . . . . . . . . . 23, 40, 42
del_word . . . . . . . . . . . . . . . . . . . . . . . . 23, 43
delete_file . . . . . . . . . . . . . . . . . . . . . . . 25, 45
detab . . . . . . . . . . . . . . . . . . . . . . . . . 1, 30, 51
down_page . . . . . . . . . . . . . . . . . . . . . . . . 19, 47
dup_line . . . . . . . . . . . . . . . . . . . . . . . . . . 52
edit_file . . . . . . . . . . . . . . . . 24, 25, 37, 39, 44, 56
end_line . . . . . . . . . . . . . . . . . . . . . . . . . . 47
entab . . . . . . . . . . . . . . . . . . . . . . . . . 1, 30, 51
exec_command . . . . . . . . . . . . . . . . . . . . . . 33, 54
extend_mark . . . . . . . . . . . . . . . . . . . . . . . 28, 49
fcase_block . . . . . . . . . . . . . . . . . . . . . . . . . 51
file . 1, 2, 5, 6, 9, 11-13, 15-18, 20, 24-28, 30-32, 36-40, 42,
44, 45, 47, 49-51, 53, 55-59, 61-63, 69
file_all . . . . . . . . . . . . . . . . . . . . . . . . . . 44
fill_block . . . . . . . . . . . . . . . . . . . . . . . . . 52
global . . . . . . . . . . . . . . . . . . . . . 26, 32, 46, 53
help . . . . . . . . . . . 1, 2, 4, 5, 9, 19, 21, 31, 40, 53, 69
indent_down . . . . . . . . . . . . . . . . . . . . . . . . . 48
indent_up . . . . . . . . . . . . . . . . . . . . . . . . . . 48
info . . . . . . . . . . . . . . . . . 9, 21, 29, 31, 33, 50, 53
insert_tab . . . . . . . . . . . . . . . . . . . . . . . 42, 62
install . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 13
jump . . . . . . . . . . . . . . . . . . . . . . 27, 39, 47, 48
jump_mark . . . . . . . . . . . . . . . . . . . . . . . . . . 48
key_set_load . . . . . . . . . . . . . . . . . . . . . . . . 55
key_set_save . . . . . . . . . . . . . . . . . . . . . . . . 55
last_error . . . . . . . . . . . . . . . . . . . . . . . . . 58
lcase_block . . . . . . . . . . . . . . . . . . . . . . . . . 51
Bingo 2.0 Reference
71
license . . . . . . . . . . . . . . . . . . . . . . . . 3, 64, 65
line_mark . . . . . . . . . . . . . . . . . . . . . . . . . . 49
load_file . . . . . . . . . . . . . . . . . . 15, 16, 24, 37, 44
look_buffer . . . . . . . . . . . . . . . . . . . . . . . 29, 50
macro . . . 1, 2, 12, 15, 16, 19, 26, 32, 35, 36, 39, 46, 55, 60
main_menu . . . . . . . . . . . . . . . . . . . . . . . . . 8, 42
match_delim . . . . . . . . . . . . . . . . . . . . . . . . . 52
modify_save . . . . . . . . . . . . . . . . . . . 15, 16, 25, 44
modify_save_all . . . . . . . . . . . . . . . . . 15, 16, 25, 44
name_buffer . . . . . . . . . . . . . . . . . . . . . . . 29, 50
next_error . . . . . . . . . . . . . . . . . . . . . 16, 39, 58
next_file . . . . . . . . . . . . . . . . . . . . . . . . 18, 44
next_word . . . . . . . . . . . . . . . . . . . . . . . . 23, 47
onekey_def . . . . . . . . . . . . . . . . . . . . . . . . . 55
open_end . . . . . . . . . . . . . . . . . . . . . . . . . . 16
paste . . . . . . . . . . . . . . 28, 29, 33, 40, 49, 50, 58, 62
paste_kill . . . . . . . . . . . . . . . . . . . . . . . 40, 58
paste_replace . . . . . . . . . . . . . . . . . . . . . . 29, 49
pick_exec . . . . . . . . . . . . . . . . . . . . . . . . . . 53
place_mark . . . . . . . . . . . . . . . . . . . . . . . . . 48
point_mark . . . . . . . . . . . . . . . . . . . . . . . 19, 49
prev_error . . . . . . . . . . . . . . . . . . . . . . . 39, 58
prev_file . . . . . . . . . . . . . . . . . . . . . . . . . . 44
prev_word . . . . . . . . . . . . . . . . . . . . . . . . 23, 47
print_block . . . . . . . . . . . . . . . . . . . . . . . . . 57
print_file . . . . . . . . . . . . . . . . . . . . . . . . . 57
query_quote . . . . . . . . . . . . . . . . . . . . . . . . . 53
quit . . . . . . . . . . . . . 7, 9, 24, 25, 31, 44, 46, 53, 61
quit_all . . . . . . . . . . . . . . . . . . . . . . . . 24, 44
quit_and_save_status . . . . . . . . . . . . . . . . . . . 7, 53
reform_para . . . . . . . . . . . . . . . . . . . . . . . . . 51
register . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
rename_file . . . . . . . . . . . . . . . . . . . . . . . 24, 44
repeat . . . . . . . . . . . . . . . . . . . . . . . . 1, 46, 51
replace . . . . . . . . . . . . . . . 26, 28, 29, 32, 46, 49, 61
report_bsize . . . . . . . . . . . . . . . . . . . . . . 29, 50
restore_line . . . . . . . . . . . . . . . . . . . . . . 40, 58
rotate_kill . . . . . . . . . . . . . . . . . . . . . . . 40, 58
run_macro_file . . . . . . . . . . . . . . . . . . . . . . . 55
save_all . . . . . . . . . . . . . . . . . . . . 15, 16, 25, 44
save_file . . . . . . . . . . . . . . . . . . . . . . . . . . 44
save_settings . . . . . . . . . . . . . . . . . . . . . . . . 59
scrap . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 55
search . . . . . . . . . . . . . . . 11, 16, 26, 32, 35, 46, 51
search_macro . . . . . . . . . . . . . . . . . . . . . . . . 46
send_ff . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
send_lf . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
send_sequence . . . . . . . . . . . . . . . . . . . . . . . . 57
setup_err_parse . . . . . . . . . . . . . . . . . . . 16, 39, 58
shell . . . . . . . . . . . . . . . . . . . . . . . . . 7, 33, 54
shift_block . . . . . . . . . . . . . . . . . . . . . . . . . 51
Bingo 2.0 Reference
72
show_marks . . . . . . . . . . . . . . . . . . . . . . . . . 48
single_key_load . . . . . . . . . . . . . . . . . . . . . . . 55
single_key_save . . . . . . . . . . . . . . . . . . . . . . . 55
snap_to_mouse_xy . . . . . . . . . . . . . . . . . . . . 19, 48
sort_block . . . . . . . . . . . . . . . . . . . . . . . . . 51
strip_highbit . . . . . . . . . . . . . . . . . . . . . . . . 51
support . . . . . . . . . . . . . . . . . . . 1-4, 7, 21, 35, 64
swap_buf_and_block . . . . . . . . . . . . . . . . . . . . . 50
swap_execute . . . . . . . . . . . . . . . . . 7, 15, 16, 33, 54
swap_shell . . . . . . . . . . . . . . . . . . . . . . 7, 33, 54
switch_file . . . . . . . . . . . . . . . . . . . . . . . 25, 44
time_stamp . . . . . . . . . . . . . . . . . . . . . . . . . 52
toggle_autoindent . . . . . . . . . . . . . . . . . . . . . . 42
toggle_cmode . . . . . . . . . . . . . . . . . . . . . . . . 42
toggle_display . . . . . . . . . . . . . . . . . . . . . . . 53
toggle_ins . . . . . . . . . . . . . . . . . . . . . . . . . 42
toggle_wrap . . . . . . . . . . . . . . . . . . . . . . . . . 42
top_of_block . . . . . . . . . . . . . . . . . . . . . . . . 47
top_of_file . . . . . . . . . . . . . . . . . . . . . . . . . 47
top_of_screen . . . . . . . . . . . . . . . . . . . . . . . . 47
twokey_def . . . . . . . . . . . . . . . . . . . . . . . . . 55
ucase_block . . . . . . . . . . . . . . . . . . . . . . . . . 51
undefine_key . . . . . . . . . . . . . . . . . . . . . . . . 55
unkill . . . . . . . . . . . . . . . . . . . . . . . 23, 40, 58
unmark . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
up_page . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
vertical_mark . . . . . . . . . . . . . . . . . . . . . . . . 49
window_bottom . . . . . . . . . . . . . . . . . . . . . . 15, 56
window_close . . . . . . . . . . . . . . . . . . . . . . . . 56
window_edit . . . . . . . . . . . . . . . . . . . . . . . 37, 56
window_find . . . . . . . . . . . . . . . . . . . . . . . 37, 56
window_load . . . . . . . . . . . . . . . . . . . . . . . 37, 56
window_next . . . . . . . . . . . . . . . . . . . . . . . . . 56
window_one . . . . . . . . . . . . . . . . . . . . . 16, 37, 56
window_previous . . . . . . . . . . . . . . . . . . . . . 16, 56
window_resize . . . . . . . . . . . . . . . . . . . . 16, 37, 56
window_split . . . . . . . . . . . . . . . . . . . . 16, 37, 56
window_top . . . . . . . . . . . . . . . . . . . . . . . . . 56
window_vertical . . . . . . . . . . . . . . . . . . . . . 37, 56
window_zoom . . . . . . . . . . . . . . . . . . . . . . . 37, 56
word_count . . . . . . . . . . . . . . . . . . . . . . . . . 51
zap_file . . . . . . . . . . . . . . . . . . . . . . . . 25, 45
Bingo 2.0 Reference
73