123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809 |
- 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.
|