810 lines
45 KiB
Plaintext
810 lines
45 KiB
Plaintext
|
OpenDoors Door Programming Toolkit History
|
||
|
------------------------------------------
|
||
|
|
||
|
This document describes the development history of the OpenDoors door
|
||
|
programming toolkit. This document is divided into two sections. The
|
||
|
first section provides a brief timeline of the OpenDoors releases since
|
||
|
version 1.00. The second section provides detailed information on the
|
||
|
changes and enhancements that were made for each version.
|
||
|
|
||
|
|
||
|
OPENDOORS TIME LINE
|
||
|
-------------------
|
||
|
|
||
|
VERSION RELEASE DATE HIGHLIGHTS
|
||
|
-------------------------------------------------------------------------------
|
||
|
1.00 Fall, 1990 Initial beta version
|
||
|
1.10 Winter, 1991 First public release
|
||
|
1.20 Spring, 1991 Minor enhancments, including RA 1.00 support
|
||
|
1.30 Spring, 1991 A Few bug fixes
|
||
|
1.40 Spring, 1991 Message customizability
|
||
|
2.00 Summer, 1991 AVATAR support, improved ANSI support
|
||
|
2.10 Summer, 1991 Added od_printf() and a new registration key system
|
||
|
2.20 Summer, 1991 Further customizability, DesqView support
|
||
|
2.30 Summer, 1991 Minor bug fix
|
||
|
3.00 Fall, 1991 Beta release, with RA system file support
|
||
|
3.10 Fall, 1991 Public release with bug fixes from 3.00
|
||
|
3.20 Winter, 1992 Support for enhanced FILES.BBS format
|
||
|
3.30 Winter, 1992 Further bug fiexes
|
||
|
3.40 May, 1992 Full locked-BPS rate support
|
||
|
4.00 July, 1992 New manual, inline colour setting with od_printf()
|
||
|
4.10 February, 1993 Configuration file and log file systems
|
||
|
5.00 September, 1994 Built-in serial I/O, multiple compiler support
|
||
|
|
||
|
|
||
|
|
||
|
DETAILED HISTORY OF OPENDOORS EVOLUTION
|
||
|
---------------------------------------
|
||
|
|
||
|
VERSION 1.00 Initial beta test version of the OpenDoors doordriver. Proved to
|
||
|
be very bug-free.
|
||
|
|
||
|
|
||
|
VERSION 1.10 First public release.
|
||
|
|
||
|
|
||
|
VERSION 1.20 Made several changes:
|
||
|
|
||
|
- Support for the new RemoteAccess 1.00 enhanced
|
||
|
exitinfo.bbs file, with many extra pieces of information.
|
||
|
|
||
|
- Added a Alt-K function key to allow the sysop to
|
||
|
temporarily disable the user's keyboard
|
||
|
|
||
|
- Added full support for turning on and off status line.
|
||
|
Status line has been changed slightly in format, and [F9]
|
||
|
help function key added.
|
||
|
|
||
|
- Improved sysop chat mode (added multi-colour and wordwrap)
|
||
|
|
||
|
- Fixed up shell-to-DOS to automatically shell to the
|
||
|
command processor specified in COMSPEC instead of always
|
||
|
using COMMAND.COM. OpenDoors now also returns to system to
|
||
|
the drive and directory it was in before DOS shell was
|
||
|
issued.
|
||
|
|
||
|
- Added support for the new RemoteAccess "sysop next" key.
|
||
|
|
||
|
|
||
|
VERSION 1.30 A few quick changes to perfect all the features of this version
|
||
|
before beginning major development work on OpenDoors 2.00. Fixed
|
||
|
two problems:
|
||
|
|
||
|
- The status line can no longer be turned back on by the
|
||
|
sysop using F1 - F9 keys when a door program has disable
|
||
|
the status line itself.
|
||
|
|
||
|
- A rather major problem was fixed for use of OpenDoors in
|
||
|
conjunction with RA 1.00. We accidentally forgot to save
|
||
|
some of the data that is unused in previous versions, but
|
||
|
is now used in the new version. This bug caused some
|
||
|
unexpected problems, including damage to the USERSXI.BBS
|
||
|
file.
|
||
|
|
||
|
|
||
|
VERSION 1.40 Another maintenance release. This version should now function
|
||
|
perfectly when used in conjunction with older versions of Turbo
|
||
|
C. Other changes in this version include:
|
||
|
|
||
|
- Better error recovery in the case that the door
|
||
|
information file has been damaged.
|
||
|
|
||
|
- OpenDoors was made more customizable, including allowing
|
||
|
the programmer to alter the various OpenDoors messages,
|
||
|
and provisions for user defined function keys for the
|
||
|
sysop. (ie, it is now possible for the programmer to make
|
||
|
Alt-Y another hotkey for the sysop)
|
||
|
|
||
|
|
||
|
VERSION 2.00 Another release, adding a number of new features, such as:
|
||
|
|
||
|
- Added support for AVATAR graphics. OpenDoors will
|
||
|
automatically detect the presence of AVATAR graphics mode
|
||
|
when running under Remote Access, and will allow your door
|
||
|
to toggle it when running under other BBS systems.
|
||
|
|
||
|
- Improved ANSI routines. Added some new functions, and
|
||
|
changed existing functions to send more efficient ANSI
|
||
|
codes in some circumstances.
|
||
|
|
||
|
- The "Sysop Next" key should now work correctly with RA
|
||
|
1.00 and later.
|
||
|
|
||
|
|
||
|
VERSION 2.10 Changes in this version include:
|
||
|
|
||
|
- Implementation of a registration key-code to allow
|
||
|
registered users to more easily upgrade to new versions.
|
||
|
|
||
|
- Added an od_printf() function for ease of formatted output
|
||
|
from within OpenDoors.
|
||
|
|
||
|
|
||
|
VERSION 2.20 More improvements, including:
|
||
|
|
||
|
- Fixing of some minor bugs, such as incorrect handling of
|
||
|
the path to DORINFO1.DEF/EXITINFO.BBS files.
|
||
|
|
||
|
- Added support for more customization, such as hooks for
|
||
|
functions that will be called before and after Shell to
|
||
|
DOS and sysop chat.
|
||
|
|
||
|
- OpenDoors is now DesqView aware. OpenDoors will
|
||
|
automatically detect the presence of DesqView, and uses
|
||
|
the DesqView `virtual screen buffer' for screen display if
|
||
|
present.
|
||
|
|
||
|
- A QuickBBS 2.75 compatibility problem has also been fixed.
|
||
|
|
||
|
|
||
|
VERSION 2.30 Fixed a small bug in the registration system.
|
||
|
|
||
|
|
||
|
VERSION 3.00 A major upgrade, released as a beta-test version, including the
|
||
|
following additions/changes:
|
||
|
|
||
|
- Eliminated many bugs.
|
||
|
|
||
|
- Added support for door information files from: WWIV, PC-
|
||
|
Board, Spitfire, WildCat, GAP, TriTel and others.
|
||
|
|
||
|
- Added .ASC/.ANS/.AVT file display support with automatic
|
||
|
interpretation of QBBS/SuperBBS/RA control characters.
|
||
|
|
||
|
- Added ALT-D key to drop the user back to the BBS without
|
||
|
hanging up.
|
||
|
|
||
|
- Added direct access to RA style configuration, file area,
|
||
|
message area, external protocols, event configuration,
|
||
|
caller history, users online, menu files, user base and
|
||
|
other system files.
|
||
|
|
||
|
- Added complete set of message base manipulation routines,
|
||
|
with full support for the RA 1.01 message base locking
|
||
|
scheme.
|
||
|
|
||
|
- The user manual has also been re-written in order to make
|
||
|
it easier to work with.
|
||
|
|
||
|
|
||
|
VERSION 3.10 The following bug fixes and changes have been made since the
|
||
|
release of the beta version, 3.00:
|
||
|
|
||
|
- Time fields in messages are now correctly formatted
|
||
|
|
||
|
- Corrected a bug in the od_set_attrib function where the
|
||
|
intensity setting would not correctly be transmitted to
|
||
|
the remote when using ANSI graphics.
|
||
|
|
||
|
- Fixed a bug in the re-writing of the DORINFO1.DEF which
|
||
|
cause sysop and user's last names to be corrupted.
|
||
|
|
||
|
- Registered users may now disable the display of copyright
|
||
|
and registration information when the door starts up.
|
||
|
|
||
|
|
||
|
VERSION 3.20 A few more changes and bug fixes were made since version 3.10,
|
||
|
including:
|
||
|
|
||
|
- Fixed the FILES.BBS lister to correctly support FILES.BBS
|
||
|
files located in directories other than the default dir,
|
||
|
and added page pausing to the FILES.BBS lister.
|
||
|
|
||
|
|
||
|
VERSION 3.30 The following changes and bug fixes were made since version 3.20:
|
||
|
|
||
|
- OpenDoors no longer re-writes the DORINFO1.DEF upon
|
||
|
exiting. No BBS's are known to actually make use of the
|
||
|
information changed in DORINFO1.DEF, and re-writing this
|
||
|
file was causing more troubles than it was worth.
|
||
|
|
||
|
- The od_msg_read_hdr() function's NEXT_MESSAGE command now
|
||
|
works correctly.
|
||
|
|
||
|
- Added an od_errno variable to assist in debugging of
|
||
|
programs written with the BBS file engine portion of
|
||
|
OpenDoors.
|
||
|
|
||
|
|
||
|
VERSION 3.40 A minor upgrade version, with the following changes:
|
||
|
|
||
|
- Fixed a compatibility problem with some locked baud rates.
|
||
|
Now, if OpenDoors receives a baud rate the door
|
||
|
information file that is not supported in the FOSSIL
|
||
|
definitions, it will continue without setting the baud
|
||
|
rate. (Whereas before, OpenDoors would report an error and
|
||
|
exit.)
|
||
|
|
||
|
- Made some changes to the manual, and included a utility to
|
||
|
remove the extended-ASCII characters from the manual to
|
||
|
ease printing on some printers.
|
||
|
|
||
|
|
||
|
VERSION 4.00 This version is a major overhaul of the entire OpenDoors package,
|
||
|
including a great many enhancements and additions. As of version
|
||
|
4.00, OpenDoors is available as two separate packages - the door
|
||
|
programming toolkit (this package), and the BBS interface package
|
||
|
(which is available separately) Among the major changes to
|
||
|
version 4.00 of the OpenDoors door programming toolkit are:
|
||
|
|
||
|
- A complete re-organization of the manual, including the
|
||
|
re-writing of a large portion of the manual. In order to
|
||
|
ease printing on some printers, the manual has been re-
|
||
|
formatted in order that it no longer contains extended
|
||
|
ASCII characters. More thorough documentation on the
|
||
|
OpenDoors functions and structures was written, along with
|
||
|
the addition of many more examples. Also added to the
|
||
|
manual are an index, glossary and other features intended
|
||
|
to make the reference manual an even more powerful and
|
||
|
flexible tool.
|
||
|
|
||
|
- Full support for the changes to RemoteAccess 1.10/1.11 has
|
||
|
been added for version 4.00. These include the addition of
|
||
|
some new fields stored in the EXITINFO.BBS door
|
||
|
information file, and proper adjusting of the user's time
|
||
|
remaining online. Version 4.00 also now has full support
|
||
|
for the new QuickBBS-specific EXITINFO.BBS file.
|
||
|
|
||
|
- All of the text displayed by OpenDoors is now fully
|
||
|
customizable using od_control structure variables. This
|
||
|
permits both greater door customization, and adds the
|
||
|
ability to write 100% non-English doors and programs.
|
||
|
|
||
|
- The OpenDoors status lines have been changed. OpenDoors
|
||
|
now provides additional user information through multiple
|
||
|
RemoteAccess-style status lines, accessible through the
|
||
|
F2, F3, etc. keys. Also, the status line may now be turned
|
||
|
off by using the F10 key, allowing the sysop to view all
|
||
|
25-lines of the information displayed by a door program. A
|
||
|
new function od_set_statusline(), permits program
|
||
|
selection of the current status line setting.
|
||
|
|
||
|
- OpenDoors now allows colour codes to be embedded in
|
||
|
od_printf() functions, to eliminate the need for long
|
||
|
chains of alternating od_disp_str(), od_set_colour() /
|
||
|
od_set_attrib() function calls.
|
||
|
|
||
|
- A new formatted input function, od_edit_str() has been
|
||
|
added for use in door programs running in ANSI or AVATAR
|
||
|
graphics mode. The od_edit_str() function features
|
||
|
advanced line editing capabilities which are normally
|
||
|
found only in non-door programs, such as inserting or
|
||
|
deleting text from the middle of a string, moving the
|
||
|
cursor with the arrow keys, and so on. The od_edit_str()
|
||
|
function also provides input formatting, allowing you to
|
||
|
force the user's input into any format you wish, from
|
||
|
phone number formats to date formats to username formats.
|
||
|
The od_edit_str() also provides special modes for
|
||
|
implementing features such as password input, field input
|
||
|
(where the user may move from one field to another using
|
||
|
arrow/tab keys), input field highlighting, editing
|
||
|
existing strings, auto-delete, and much more. The old
|
||
|
od_input_str() function still provides a subset of these
|
||
|
features which do not require ANSI or AVATAR graphics.
|
||
|
|
||
|
- New functions have been added to the door driver module of
|
||
|
OpenDoors. Among these, are an od_putch() function for
|
||
|
displaying one character at a time, and an od_spawn()
|
||
|
function, for easily executing other programs from within
|
||
|
OpenDoors. The od_spawn() function automatically saves the
|
||
|
contents of the current door screen, system drive and
|
||
|
directory, and provides a separate screen on which the
|
||
|
spawned-to program can execute. The od_draw_box() function
|
||
|
allows you to easily display windows in door programs,
|
||
|
using ANSI or AVATAR graphics codes. Also added is are
|
||
|
od_carrier(), od_set_statusline() and od_edit_str()
|
||
|
functions, mentioned elsewhere.
|
||
|
|
||
|
- More changes have been made in order to permit greater
|
||
|
customization and flexibility of OpenDoors. An
|
||
|
od_carrier() function has been added to detect the state
|
||
|
of the carrier detect signal in programs that disable
|
||
|
OpenDoor's internal carrier detection. Also, it is now
|
||
|
possible to shut down OpenDoors without exiting via the
|
||
|
od_exit() function.
|
||
|
|
||
|
- OpenDoors now yeilds the processor to other executing
|
||
|
tasks in multitasking environments (ie. DesqView), when
|
||
|
the door is inactive or waiting for input.
|
||
|
|
||
|
- The door driver function od_clr_scr() now only checks the
|
||
|
user's screen clearing setting if that information is
|
||
|
available from the door information file. If the
|
||
|
information is not available, the od_clr_scr() function
|
||
|
will always clear the screen.
|
||
|
|
||
|
- Many other small changes were also made for version 4.00.
|
||
|
Among these, you now have access to the user's reason for
|
||
|
chat and you can switch the pause and stop keys on and off
|
||
|
during listing of available files or displaying a text
|
||
|
file. Also, previous versions of OpenDoors would read the
|
||
|
user's information from the first door information file
|
||
|
found. Instead, version 4.00 now reads the most recently
|
||
|
created door information file. A bug in the od_clr_line()
|
||
|
function has also been fixed.
|
||
|
|
||
|
|
||
|
VERSION 4.10 A great deal of work has been done between version 4.00 and 4.10
|
||
|
of OpenDoors. This work falls into three major categories: bug
|
||
|
fixes, improved performance, and new features. In fact, enough
|
||
|
changes and improvements have been made that this version really
|
||
|
ought to be numbered 5.00. Below is a summary of the changes that
|
||
|
have occurred since version 4.00:
|
||
|
- Much of the door information file interfacing code has
|
||
|
been revamped, in order that OpenDoors now works correctly
|
||
|
with the newest versions of the BBS packages it supports.
|
||
|
OpenDoors now differentiates between three different
|
||
|
DOOR.SYS formats - the DoorWay format, the PC-Board / GAP
|
||
|
format, and the Wildcat format. Also, the SFDOORS.DAT code
|
||
|
has been fixed to correctly work with the newest version
|
||
|
of Spitfire.
|
||
|
|
||
|
- OpenDoors will now attempt to swap itself and your entire
|
||
|
door program to expanded memory or disk when the sysop
|
||
|
shells to DOS, or when you call one of the od_spawn...()
|
||
|
functions. Memory swapping may be configured in a number
|
||
|
of ways, or even disabled. The OpenDoors swapping code
|
||
|
adds only 2K to the door's .EXE file size.
|
||
|
|
||
|
- OpenDoors now includes a new od_spawnvpe() function. In
|
||
|
addition to the features of the "quick-spawn" od_spawn()
|
||
|
function, od_spawnvpe() also returns the errorlevel the
|
||
|
called program returned, allows you to alter the
|
||
|
environment passed to the child process, and uses the same
|
||
|
parameter format as the C spawnvpe() function. (see page
|
||
|
117)
|
||
|
|
||
|
- The od_page() function now checks the sysop paging hours,
|
||
|
set in the OpenDoors control structure. If the user
|
||
|
attempts to page the sysop outside of the defined paging
|
||
|
hours, he or she will be notified that the sysop is not
|
||
|
available.
|
||
|
|
||
|
- OpenDoors now includes a configuration file sub-system
|
||
|
that you may choose to include in your OpenDoors programs.
|
||
|
This sub-system automatically parses the configuration
|
||
|
file you specify, responding to any of the built-in
|
||
|
configuration commands, and passing configuration options
|
||
|
specific to your program back to you. With only a single
|
||
|
line of code on your part, this sub-system will allow
|
||
|
people running your program to configure many options such
|
||
|
as sysop paging hours, system directories, maximum time
|
||
|
within the door, etc. It also allows the sysop to provide
|
||
|
information that may not be supplied by their particular
|
||
|
BBS software, such as modem settings, the system's name
|
||
|
and so on. In addition to all these built in commands, you
|
||
|
can add your own configuration options, such as display
|
||
|
colours, registration key numbers and other information
|
||
|
needed by your program - without the need to write your
|
||
|
own configuration file parsing routines. (See page 76)
|
||
|
|
||
|
- OpenDoors now supports custom, sysop-defined door
|
||
|
information file (drop file) formats. By defining a custom
|
||
|
door information file format in the cofiguration file,
|
||
|
OpenDoors door programs can now be made to run directly
|
||
|
under BBS packages that use proprietary file formats that
|
||
|
are not directly supported by OpenDoors. (see page 78)
|
||
|
|
||
|
- In order to make doors written with OpenDoors even more
|
||
|
foolproof for the sysop to setup, an intelligent door
|
||
|
information file (drop file) locator has been added.
|
||
|
OpenDoors will automatically search for a door information
|
||
|
file in the directory specified by the configuration file,
|
||
|
the directory specified by your door's source code, the
|
||
|
current directory, and the directory pointed to by the
|
||
|
environment variables used by any of a number of BBS
|
||
|
packages.
|
||
|
|
||
|
- OpenDoors now includes a log file sub-system that you may
|
||
|
choose to include in your programs. The log file system
|
||
|
handles all access and formatting of the logfile, allowing
|
||
|
the programmer to make log file entries by simple function
|
||
|
calls such as od_write_log("User downloading file");.
|
||
|
Also, since the log file system is closely integrated with
|
||
|
the rest of OpenDoors, choosing to include the logfile
|
||
|
system in a program causes OpenDoors to automatically
|
||
|
output the most common logfile entries for events such as
|
||
|
the user paging sysop, the user hanging up, sysop chatting
|
||
|
with the user, user inactivity timeouts, and so on. (see
|
||
|
page 89)
|
||
|
|
||
|
- OpenDoors 4.00 would not always correctly turn on and off
|
||
|
high intensity or flashing colour attributes in ANSI mode.
|
||
|
The ANSI colour handling code has been reworked for
|
||
|
version 4.10, to eliminate these problems.
|
||
|
|
||
|
- An od_get_answer() function has been added, which can be
|
||
|
used to easily permit only certain keys to be pressed in
|
||
|
response to a prompt. For instance, to get a Yes/No
|
||
|
response from the user, use od_get_answer("YN"); (see page
|
||
|
66)
|
||
|
|
||
|
- A popular addition to OpenDoors 4.00 was the ability to
|
||
|
change the current display colour within od_printf()
|
||
|
format strings, using imbedded control characters.
|
||
|
However, the programmer was forced to use a rather cryptic
|
||
|
two-byte control sequence, where the second character of
|
||
|
the sequence contained an 8-bit colour attribute value. It
|
||
|
is now possible to change the display colour within
|
||
|
od_printf() by specifying the names of the desired
|
||
|
foreground and background colours, delimited by a set of
|
||
|
BACK-QUOTE (`) characters. For example:
|
||
|
|
||
|
od_printf("`Red` THIS TEXT IS RED `Blue` THIS TEXT IS BLUE");
|
||
|
od_printf("`Flashing bright green on dark green` AND THIS IS GREEN");
|
||
|
|
||
|
(see page 93)
|
||
|
|
||
|
- Version 4.10 would not correctly "freeze" the user's time
|
||
|
during DOS shell and sysop page operations, when the door
|
||
|
was operating under RemoteAccess 1.11. This has been
|
||
|
fixed.
|
||
|
|
||
|
- A new variable, od_spawn_freeze_time, has been added to
|
||
|
the OpenDoors control structure. When set to FALSE, the
|
||
|
user's time remaining continues to be deducted during the
|
||
|
execution of any of the od_spawn... functions. When set to
|
||
|
TRUE, the user's time remaining is frozen during the
|
||
|
execution of an od_spawn... function.
|
||
|
|
||
|
- The current directory is now correctly restored to its
|
||
|
original setting after the sysop returns from a DOS shell,
|
||
|
and after calls to the od_spawn... functions.
|
||
|
|
||
|
- A number of people were experiencing difficulty using the
|
||
|
od_edit_str() function in version 4.00. A number of
|
||
|
improvements to this function's logic have been made in an
|
||
|
attempt to make od_edit_str() more foolproof to use. Also,
|
||
|
a new flag setting, EDIT_FLAG_LEAVE_BLANK has been added.
|
||
|
However, there were a few reports of problems which we
|
||
|
were not able to reproduce. If you are still having
|
||
|
difficulty with this function, please carefully re-read
|
||
|
the section of the manual pertaining to it's use. In
|
||
|
particular, be sure that your difficulty is not resulting
|
||
|
from the flag settings you are using. If you still suspect
|
||
|
a bug in this function, please include with your bug
|
||
|
report the source code that is causing the problem.
|
||
|
|
||
|
- Page pausing within the od_send_file() and od_list_files()
|
||
|
(FILES.BBS listing routine) functions can now be disabled
|
||
|
and re-enabled by the programmer.
|
||
|
|
||
|
- The "Continue? [Y/n/=]" end of screen prompt and response
|
||
|
keys are now fully customizable.
|
||
|
|
||
|
- The od_list_files() FILES.BBS listing function now works
|
||
|
correctly in all memory models. The function has also been
|
||
|
fixed to correctly handle cases where the trailing
|
||
|
backslash is not supplied in the path parameter.
|
||
|
|
||
|
- The actual BBS line (node) number is now displayed on the
|
||
|
default status line, provided that this information is
|
||
|
supplied by the BBS software.
|
||
|
|
||
|
- It is now possible to detect whether keystrokes originated
|
||
|
from the remote or local keyboard. This is a feature that
|
||
|
is useful in some special applications, such as split-
|
||
|
screen sysop chat programs.
|
||
|
|
||
|
- Version 4.00 would not always correctly display the status
|
||
|
lines, if there was information missing from the
|
||
|
EXITINFO.BBS file. This has been fixed. In addition, the
|
||
|
"next event" information is now correctly displayed on the
|
||
|
status lines. Also, if the user's birthday is available,
|
||
|
their age will also be calculated and displayed on the
|
||
|
status line.
|
||
|
|
||
|
- If you temporarily disable inactivity timeouts, OpenDoors
|
||
|
will no longer automatically trigger and inactivity
|
||
|
timeout as soon as you re-enable this feature.
|
||
|
|
||
|
- A new function, od_hotkey_menu(), has been added to
|
||
|
facilitate displaying a menu with "hot keys". Like the
|
||
|
od_send_file() function, od_hotkey_menu() will display an
|
||
|
ASCII, ANSI or AVATAR file. However, od_hotkey_menu() also
|
||
|
allows you to pass a string listing possible hot keys. If
|
||
|
the user presses any of these keys while the menu is being
|
||
|
displayed, menu display will immediately cease, and the
|
||
|
function will return the key pressed by the user. (See
|
||
|
page 71)
|
||
|
|
||
|
- The od_send_file() (the ASCII/ANSI/AVATAR file display
|
||
|
routine) no longer sends the EOF character if it happens
|
||
|
to exist at the end of a file.
|
||
|
|
||
|
- In addition to the EZVote OpenDoors tutorial door, an
|
||
|
number of other example doors are now included in the
|
||
|
OpenDoors package.
|
||
|
|
||
|
- A few errors have been corrected in the documentation, and
|
||
|
additional information has been added about the new
|
||
|
features in this version.
|
||
|
|
||
|
|
||
|
|
||
|
VERSION 5.00 Version 5.00 represents several major steps forward for
|
||
|
OpenDoors. In addition to numerous bug fixes and minor
|
||
|
improvements, a number of major new features have been added to
|
||
|
this version. These include an optional multiple personality
|
||
|
system which allow the sysop to choose the status line and
|
||
|
function key style they prefer. This version also adds text-mode
|
||
|
support for RIP (Remote Imaging Protocol) graphics, and adds a
|
||
|
group of advanced ANSI/AVATAR/RIP functions for scrolling areas
|
||
|
of the screen, saving and restoring portions of the screen and
|
||
|
creating pop-up windows and menus. Also new in this version is
|
||
|
support for compilers other than Borland/Turbo C(++), such as
|
||
|
compilers from Microsoft. Version 5.00 also adds built-in
|
||
|
communications support, making the use of a FOSSIL driver
|
||
|
optional. Furthermore, direct support for additional BBS systems
|
||
|
has been added. The list below provides more detail of the
|
||
|
changes and new features in version 5.00:
|
||
|
|
||
|
- The nonstop key ([=]) now works correctly during
|
||
|
FILES.BBS listing.
|
||
|
|
||
|
- New door information file formats now supported include:
|
||
|
RA 2.00 EXITINFO.BBS.
|
||
|
|
||
|
- If the TASK environment variable is set, OpenDoors will
|
||
|
now use its value to determine the current node number.
|
||
|
|
||
|
- The od_control.od_spawn_freeze_time variable now works
|
||
|
correctly. Previously, the user's time would always be
|
||
|
frozen during od_spawn...() execution, regardless of the
|
||
|
value of this variable.
|
||
|
|
||
|
- A new feature known as the "Multiple Personality System"
|
||
|
has been added to this version. If you choose to include
|
||
|
the Multiple Personality System in a door, the sysop will
|
||
|
be able to specify which of a number of "personalities"
|
||
|
should be used. Each personality defines the statusline
|
||
|
appearance and function keys seen by the sysop, and has
|
||
|
no effect on the door's operation from the user's
|
||
|
standpoint. OpenDoors 5.00 includes personality
|
||
|
definitions for WildCat, RemoteAccess, PC-Board, and it's
|
||
|
own simplified RA style status lines. You can also define
|
||
|
your own personalities by writing a personality
|
||
|
definition function. If your choose not to include the
|
||
|
Multiple Personality System in a door, you will still be
|
||
|
able to define which single personality you wish
|
||
|
OpenDoors to use.
|
||
|
|
||
|
- This version of OpenDoors can be used with a larger
|
||
|
variety of compilers than where supported by the previous
|
||
|
version. OpenDoors 5.00 is known to work with all
|
||
|
versions of Turbo C, Turbo C++, Borland C++, Microsoft C,
|
||
|
Microsoft C++, Quick C and Visual C++. It should also
|
||
|
work with any other MS-DOS based ANSI C compiler that
|
||
|
supports the Microsoft/DOS .OBJect and .LIBrary file
|
||
|
formats.
|
||
|
|
||
|
- A new diagnostics feature has been added to OpenDoors,
|
||
|
which allows you to determine the reason for the most
|
||
|
recent OpenDoors function failure. When any OpenDoors
|
||
|
function returns a failure condition, it also sets the
|
||
|
new od_control.od_error variable to indicate the reason
|
||
|
for the failure.
|
||
|
|
||
|
- Added additional definitions to OPENDOOR.H, to map names
|
||
|
of OpenDoors functions and variables with the word
|
||
|
"colour" from the U.S. spelling "color". In other words,
|
||
|
both od_set_colour() and od_set_color() are now
|
||
|
recognized by OpenDoors.
|
||
|
|
||
|
- The od_list_files() now supports more intelligent path
|
||
|
specifications. If the parameter to od_list_files() is
|
||
|
NULL or empty, it will search for a FILES.BBS file in the
|
||
|
current directory. If a directory path is specified, it
|
||
|
will look for a FILES.BBS in that directory. If a full
|
||
|
directory and filename are specified, the specified
|
||
|
filename will be used in place of FILES.BBS.
|
||
|
|
||
|
- To save space, the compact memory model library is no
|
||
|
longer included in the normal OpenDoors package. The
|
||
|
compact memory model library is now available seperately.
|
||
|
|
||
|
- A new function, od_set_dtr(), has been added to allow the
|
||
|
DTR line to the modem to be manually controlled. This can
|
||
|
be useful in writing programs where you wish to force the
|
||
|
modem to hangup, such as a call-back verification door.
|
||
|
|
||
|
- Added additional support for various DOS multitasking
|
||
|
environments. OpenDoors is now specifically Microsoft
|
||
|
Windows aware. OpenDoors also now gives up time to other
|
||
|
waiting tasks when it is idle during chat mode.
|
||
|
|
||
|
- The od_edit_str() "M" mode now capitializes a character
|
||
|
following a dash '-' character.
|
||
|
|
||
|
- When transmitting more than one character at a time,
|
||
|
OpenDoors now uses the FOSSIL trasfer block function,
|
||
|
instead of multiple calls to the transfer character
|
||
|
function. This should help to improve performance over
|
||
|
high speed connections when running on slow PCs or under
|
||
|
multitasking environments.
|
||
|
|
||
|
- OpenDoors 4.10 would not correctly change the display
|
||
|
colour from high-intensity back to low-intensity. This
|
||
|
problem has been fixed.
|
||
|
|
||
|
- OpenDoors now recognizes DORINFO?.DEF filenames with
|
||
|
alphabetical identifiers (ie, DORINFOA.DEF thru
|
||
|
DORINFOZ.DEF) for nodes 10 thru 35.
|
||
|
|
||
|
- Improvements have been made to the logfile system. An
|
||
|
exit at errorlevel zero no longer causes garbage to be
|
||
|
written to the logfile. The logfile functions have been
|
||
|
made more reliable when operating under low stack
|
||
|
availability conditions. In the past, if a large number
|
||
|
of local variables where allocated on the stack, the
|
||
|
logfile functions would fail, often writing garbage to
|
||
|
the logfile. When the user pages the sysop for chat, the
|
||
|
user's reason for wishing a chat is also written to the
|
||
|
logfile.
|
||
|
|
||
|
- Support for text-mode RIP (Remote Imaging Protocol)
|
||
|
graphics has been added. Because this version of
|
||
|
OpenDoors always operates in DOS text-mode, none of the
|
||
|
graphics mode RIP features (such as drawing lines,
|
||
|
circles and displaying icons) will appear on the local
|
||
|
screen. Plans for a version of OpenDoors that will
|
||
|
operate in graphics mode and optionally display graphics
|
||
|
locally are currently under consideration. In this
|
||
|
version, RIP support includes a number of new features.
|
||
|
OpenDoors will now recognize the RIP setting passed in an
|
||
|
RA 2.00 EXITINFO.BBS file and WildCat DOOR.SYS file, and
|
||
|
also allows the RIP setting to be specified in a custom
|
||
|
door information file. The od_send_file() and
|
||
|
od_hotkey_menu() functions will now search for files with
|
||
|
.RIP, .AVT, .ANS and .ASC extensions. When displaying RIP
|
||
|
graphics to the remote user, a pop-up window appears on
|
||
|
the local screen, indicating to the sysop which file is
|
||
|
being displayed.
|
||
|
|
||
|
- A set of new functions have been added to permit advanced
|
||
|
screen manipulations. These functions include
|
||
|
od_gettext() and od_puttext() to save and restore
|
||
|
portions of the screen, and od_save_screen() and
|
||
|
od_restore_screen() to save and restore the entire
|
||
|
screen. od_scroll() can be used to scroll any portion of
|
||
|
the screen upwards or downwards. od_save_screen() and
|
||
|
od_restore_screen() will operate in any mode, but the
|
||
|
other functions require ANSI/AVATAR/RIP mode to be
|
||
|
available.
|
||
|
|
||
|
- Three additional functions, od_window_create(),
|
||
|
od_window_remove() and od_popup_menu(), have been added
|
||
|
to facilitate the creation of popup windows and menus.
|
||
|
When such a window or menu is removed from the screen,
|
||
|
the are of the screen "under" the window is returned to
|
||
|
it's original state. This allows you to create multiple
|
||
|
overlapping windows within a door program. The
|
||
|
od_popup_menu() function creates a popup window with a
|
||
|
menu from a simple menu definition string. The user can
|
||
|
select an option from this menu by pressing the key
|
||
|
associated with an option, or by moving a menu selection
|
||
|
bar using their arrow keys. These three functions require
|
||
|
an ANSI/AVATAR/RIP mode to be available.
|
||
|
|
||
|
- A new function, od_chat() has been added, to allow you to
|
||
|
explicitly invoke the OpenDoors chat mode from within
|
||
|
your program.
|
||
|
|
||
|
- A new setting variable, od_control.od_always_clear has
|
||
|
been added. When set to TRUE, od_clr_scr() will always
|
||
|
clear the screen, regardless of the user's screen
|
||
|
clearing setting. When set to FALE, od_clr_scr() will
|
||
|
only clear the screen if the user has screen clearing
|
||
|
enabled.
|
||
|
|
||
|
- It is now possible to configure the errorlevels OpenDoors
|
||
|
exits with under various circumstances, such as when the
|
||
|
user runs out of time remaining online. See the
|
||
|
od_control.od_errorlevel variable
|
||
|
|
||
|
- A new setting variable, od_control.od_force_local, can be
|
||
|
used to easily force OpenDoors to operate in local mode.
|
||
|
Using this variable you can easily add a command line
|
||
|
parameter such as "-local" to allow the sysop to force
|
||
|
your door to operate in local mode. When OpenDoors is
|
||
|
forced into local mode using this variable, it does not
|
||
|
look for a door information file, and uses default
|
||
|
settings for the user's name, etc.
|
||
|
|
||
|
- OPENDOOR.H now sets structure packing to single byte
|
||
|
alignment for the od_control structure when Borland and
|
||
|
Microsoft compilers are being used. In the past,
|
||
|
programmers using OpenDoors have experienced difficulties
|
||
|
the od_control structure when the compiler has been set
|
||
|
to use word packing.
|
||
|
|
||
|
- OpenDoors now closes the FOSSIL driver prior to
|
||
|
performing a spawn or sysop DOS shell. This allows doors
|
||
|
or other communications programs which use the FOSSIL
|
||
|
driver to be executed while the door's execution is
|
||
|
suspended.
|
||
|
|
||
|
- When used with a FOSSIL driver, OpenDoors normally
|
||
|
changes the BPS rate to that passed from the BBS (if the
|
||
|
BBS passes a valid FOSSIL BPS rate). This BPS rate
|
||
|
setting may now be disabled by setting the
|
||
|
DIS_BPS_SETTING bit of the od_control.od_disable
|
||
|
variable.
|
||
|
|
||
|
- A function hook has been added to allow you to install a
|
||
|
function to be called whenever od_kernel() executes
|
||
|
(od_control.od_ker_exec). Another function hook,
|
||
|
od_control.od_time_msg_func, can be installed to override
|
||
|
OpenDoor's time limit warning messages.
|
||
|
|
||
|
- A new array, od_control.od_hot_function, allows the you
|
||
|
to define functions to be called when any of the
|
||
|
programmer-defined sysop hotkeys have been pressed.
|
||
|
|
||
|
- A function hook, od_control.od_no_file_func, has been
|
||
|
added. This function will be called whenever OpenDoors is
|
||
|
unable to find or read a door information file. This
|
||
|
allows you to add your own door information file reader,
|
||
|
or to provide a local login prompt when no door
|
||
|
information file is present.
|
||
|
|
||
|
- Previously, OpenDoors would stop correctly updating the
|
||
|
user's remaining time at midnight when running under
|
||
|
certain BIOSes. This problem has been fixed.
|
||
|
|
||
|
- The current display colour attribute can now be accessed
|
||
|
through an control structure member,
|
||
|
od_control.od_cur_attrib.
|
||
|
|
||
|
- od_send_file() and od_hotkey_menu() no longer pause with
|
||
|
a "Continue?" prompt prematurely in files that have line
|
||
|
lengths greater than 254 characters.
|
||
|
|
||
|
- The local keyboard may now be disabled by setting the
|
||
|
DIS_LOCAL_INPUT bit of od_control.od_disable. This only
|
||
|
affects the sysop's input in circumstances that input is
|
||
|
also accepted from the remote user; this setting has no
|
||
|
effect on the sysop function keys.
|
||
|
|
||
|
A new function hook: -
|
||
|
|
||
|
void (*od_control.od_local_input)(int);
|
||
|
|
||
|
has been added. If set, this function will be called
|
||
|
whenever the sysop presses a non-sysop-function key on
|
||
|
the local keyboard.
|
||
|
|
||
|
- od_control.od_clear_on_exit now controls whether the
|
||
|
screen is cleared before shelling or executing
|
||
|
od_spawn...(), in addition to before OpenDoors shuts
|
||
|
down.
|
||
|
|
||
|
- od_page() now restores the original display colour before
|
||
|
returning.
|
||
|
|
||
|
- It is now possible to display an entire string of
|
||
|
characters with terminal emulation, using the new
|
||
|
function od_disp_emu().
|
||
|
|
||
|
- OpenDoors will now display a small popup window when
|
||
|
disconnecting the current connection.
|
||
|
|
||
|
- A new variable, od_control.od_in_buf_size, can now be set
|
||
|
prior to calling any OpenDoors function to set the size
|
||
|
of OpenDoors combined local/remote keyboard input buffer.
|
||
|
By default, this buffer is 256 bytes in size.
|
||
|
|
||
|
- Previously, there were a number of OpenDoors API
|
||
|
functions that would not correctly initialize OpenDoors
|
||
|
if they were the first function called in the program.
|
||
|
This has been fixed.
|
||
|
|
||
|
- To facilitate setting of bps rates up to 115,200,
|
||
|
od_control.baud is now an unsigned long.
|
||
|
|
||
|
- A new setting, od_control.od_no_ra_codes, has been added
|
||
|
to disable the use of RemoteAccess/QuickBBS control codes
|
||
|
by od_send_file()/od_hotkey_menu()/od_disp_emu(). The
|
||
|
RemoteAccess/QuickBBS ASCII 1 "pause for key" is also now
|
||
|
recognized.
|