ODHIST.TXT 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  1. OpenDoors Door Programming Toolkit History
  2. ------------------------------------------
  3. This document describes the development history of the OpenDoors door
  4. programming toolkit. This document is divided into two sections. The
  5. first section provides a brief timeline of the OpenDoors releases since
  6. version 1.00. The second section provides detailed information on the
  7. changes and enhancements that were made for each version.
  8. OPENDOORS TIME LINE
  9. -------------------
  10. VERSION RELEASE DATE HIGHLIGHTS
  11. -------------------------------------------------------------------------------
  12. 1.00 Fall, 1990 Initial beta version
  13. 1.10 Winter, 1991 First public release
  14. 1.20 Spring, 1991 Minor enhancments, including RA 1.00 support
  15. 1.30 Spring, 1991 A Few bug fixes
  16. 1.40 Spring, 1991 Message customizability
  17. 2.00 Summer, 1991 AVATAR support, improved ANSI support
  18. 2.10 Summer, 1991 Added od_printf() and a new registration key system
  19. 2.20 Summer, 1991 Further customizability, DesqView support
  20. 2.30 Summer, 1991 Minor bug fix
  21. 3.00 Fall, 1991 Beta release, with RA system file support
  22. 3.10 Fall, 1991 Public release with bug fixes from 3.00
  23. 3.20 Winter, 1992 Support for enhanced FILES.BBS format
  24. 3.30 Winter, 1992 Further bug fiexes
  25. 3.40 May, 1992 Full locked-BPS rate support
  26. 4.00 July, 1992 New manual, inline colour setting with od_printf()
  27. 4.10 February, 1993 Configuration file and log file systems
  28. 5.00 September, 1994 Built-in serial I/O, multiple compiler support
  29. DETAILED HISTORY OF OPENDOORS EVOLUTION
  30. ---------------------------------------
  31. VERSION 1.00 Initial beta test version of the OpenDoors doordriver. Proved to
  32. be very bug-free.
  33. VERSION 1.10 First public release.
  34. VERSION 1.20 Made several changes:
  35. - Support for the new RemoteAccess 1.00 enhanced
  36. exitinfo.bbs file, with many extra pieces of information.
  37. - Added a Alt-K function key to allow the sysop to
  38. temporarily disable the user's keyboard
  39. - Added full support for turning on and off status line.
  40. Status line has been changed slightly in format, and [F9]
  41. help function key added.
  42. - Improved sysop chat mode (added multi-colour and wordwrap)
  43. - Fixed up shell-to-DOS to automatically shell to the
  44. command processor specified in COMSPEC instead of always
  45. using COMMAND.COM. OpenDoors now also returns to system to
  46. the drive and directory it was in before DOS shell was
  47. issued.
  48. - Added support for the new RemoteAccess "sysop next" key.
  49. VERSION 1.30 A few quick changes to perfect all the features of this version
  50. before beginning major development work on OpenDoors 2.00. Fixed
  51. two problems:
  52. - The status line can no longer be turned back on by the
  53. sysop using F1 - F9 keys when a door program has disable
  54. the status line itself.
  55. - A rather major problem was fixed for use of OpenDoors in
  56. conjunction with RA 1.00. We accidentally forgot to save
  57. some of the data that is unused in previous versions, but
  58. is now used in the new version. This bug caused some
  59. unexpected problems, including damage to the USERSXI.BBS
  60. file.
  61. VERSION 1.40 Another maintenance release. This version should now function
  62. perfectly when used in conjunction with older versions of Turbo
  63. C. Other changes in this version include:
  64. - Better error recovery in the case that the door
  65. information file has been damaged.
  66. - OpenDoors was made more customizable, including allowing
  67. the programmer to alter the various OpenDoors messages,
  68. and provisions for user defined function keys for the
  69. sysop. (ie, it is now possible for the programmer to make
  70. Alt-Y another hotkey for the sysop)
  71. VERSION 2.00 Another release, adding a number of new features, such as:
  72. - Added support for AVATAR graphics. OpenDoors will
  73. automatically detect the presence of AVATAR graphics mode
  74. when running under Remote Access, and will allow your door
  75. to toggle it when running under other BBS systems.
  76. - Improved ANSI routines. Added some new functions, and
  77. changed existing functions to send more efficient ANSI
  78. codes in some circumstances.
  79. - The "Sysop Next" key should now work correctly with RA
  80. 1.00 and later.
  81. VERSION 2.10 Changes in this version include:
  82. - Implementation of a registration key-code to allow
  83. registered users to more easily upgrade to new versions.
  84. - Added an od_printf() function for ease of formatted output
  85. from within OpenDoors.
  86. VERSION 2.20 More improvements, including:
  87. - Fixing of some minor bugs, such as incorrect handling of
  88. the path to DORINFO1.DEF/EXITINFO.BBS files.
  89. - Added support for more customization, such as hooks for
  90. functions that will be called before and after Shell to
  91. DOS and sysop chat.
  92. - OpenDoors is now DesqView aware. OpenDoors will
  93. automatically detect the presence of DesqView, and uses
  94. the DesqView `virtual screen buffer' for screen display if
  95. present.
  96. - A QuickBBS 2.75 compatibility problem has also been fixed.
  97. VERSION 2.30 Fixed a small bug in the registration system.
  98. VERSION 3.00 A major upgrade, released as a beta-test version, including the
  99. following additions/changes:
  100. - Eliminated many bugs.
  101. - Added support for door information files from: WWIV, PC-
  102. Board, Spitfire, WildCat, GAP, TriTel and others.
  103. - Added .ASC/.ANS/.AVT file display support with automatic
  104. interpretation of QBBS/SuperBBS/RA control characters.
  105. - Added ALT-D key to drop the user back to the BBS without
  106. hanging up.
  107. - Added direct access to RA style configuration, file area,
  108. message area, external protocols, event configuration,
  109. caller history, users online, menu files, user base and
  110. other system files.
  111. - Added complete set of message base manipulation routines,
  112. with full support for the RA 1.01 message base locking
  113. scheme.
  114. - The user manual has also been re-written in order to make
  115. it easier to work with.
  116. VERSION 3.10 The following bug fixes and changes have been made since the
  117. release of the beta version, 3.00:
  118. - Time fields in messages are now correctly formatted
  119. - Corrected a bug in the od_set_attrib function where the
  120. intensity setting would not correctly be transmitted to
  121. the remote when using ANSI graphics.
  122. - Fixed a bug in the re-writing of the DORINFO1.DEF which
  123. cause sysop and user's last names to be corrupted.
  124. - Registered users may now disable the display of copyright
  125. and registration information when the door starts up.
  126. VERSION 3.20 A few more changes and bug fixes were made since version 3.10,
  127. including:
  128. - Fixed the FILES.BBS lister to correctly support FILES.BBS
  129. files located in directories other than the default dir,
  130. and added page pausing to the FILES.BBS lister.
  131. VERSION 3.30 The following changes and bug fixes were made since version 3.20:
  132. - OpenDoors no longer re-writes the DORINFO1.DEF upon
  133. exiting. No BBS's are known to actually make use of the
  134. information changed in DORINFO1.DEF, and re-writing this
  135. file was causing more troubles than it was worth.
  136. - The od_msg_read_hdr() function's NEXT_MESSAGE command now
  137. works correctly.
  138. - Added an od_errno variable to assist in debugging of
  139. programs written with the BBS file engine portion of
  140. OpenDoors.
  141. VERSION 3.40 A minor upgrade version, with the following changes:
  142. - Fixed a compatibility problem with some locked baud rates.
  143. Now, if OpenDoors receives a baud rate the door
  144. information file that is not supported in the FOSSIL
  145. definitions, it will continue without setting the baud
  146. rate. (Whereas before, OpenDoors would report an error and
  147. exit.)
  148. - Made some changes to the manual, and included a utility to
  149. remove the extended-ASCII characters from the manual to
  150. ease printing on some printers.
  151. VERSION 4.00 This version is a major overhaul of the entire OpenDoors package,
  152. including a great many enhancements and additions. As of version
  153. 4.00, OpenDoors is available as two separate packages - the door
  154. programming toolkit (this package), and the BBS interface package
  155. (which is available separately) Among the major changes to
  156. version 4.00 of the OpenDoors door programming toolkit are:
  157. - A complete re-organization of the manual, including the
  158. re-writing of a large portion of the manual. In order to
  159. ease printing on some printers, the manual has been re-
  160. formatted in order that it no longer contains extended
  161. ASCII characters. More thorough documentation on the
  162. OpenDoors functions and structures was written, along with
  163. the addition of many more examples. Also added to the
  164. manual are an index, glossary and other features intended
  165. to make the reference manual an even more powerful and
  166. flexible tool.
  167. - Full support for the changes to RemoteAccess 1.10/1.11 has
  168. been added for version 4.00. These include the addition of
  169. some new fields stored in the EXITINFO.BBS door
  170. information file, and proper adjusting of the user's time
  171. remaining online. Version 4.00 also now has full support
  172. for the new QuickBBS-specific EXITINFO.BBS file.
  173. - All of the text displayed by OpenDoors is now fully
  174. customizable using od_control structure variables. This
  175. permits both greater door customization, and adds the
  176. ability to write 100% non-English doors and programs.
  177. - The OpenDoors status lines have been changed. OpenDoors
  178. now provides additional user information through multiple
  179. RemoteAccess-style status lines, accessible through the
  180. F2, F3, etc. keys. Also, the status line may now be turned
  181. off by using the F10 key, allowing the sysop to view all
  182. 25-lines of the information displayed by a door program. A
  183. new function od_set_statusline(), permits program
  184. selection of the current status line setting.
  185. - OpenDoors now allows colour codes to be embedded in
  186. od_printf() functions, to eliminate the need for long
  187. chains of alternating od_disp_str(), od_set_colour() /
  188. od_set_attrib() function calls.
  189. - A new formatted input function, od_edit_str() has been
  190. added for use in door programs running in ANSI or AVATAR
  191. graphics mode. The od_edit_str() function features
  192. advanced line editing capabilities which are normally
  193. found only in non-door programs, such as inserting or
  194. deleting text from the middle of a string, moving the
  195. cursor with the arrow keys, and so on. The od_edit_str()
  196. function also provides input formatting, allowing you to
  197. force the user's input into any format you wish, from
  198. phone number formats to date formats to username formats.
  199. The od_edit_str() also provides special modes for
  200. implementing features such as password input, field input
  201. (where the user may move from one field to another using
  202. arrow/tab keys), input field highlighting, editing
  203. existing strings, auto-delete, and much more. The old
  204. od_input_str() function still provides a subset of these
  205. features which do not require ANSI or AVATAR graphics.
  206. - New functions have been added to the door driver module of
  207. OpenDoors. Among these, are an od_putch() function for
  208. displaying one character at a time, and an od_spawn()
  209. function, for easily executing other programs from within
  210. OpenDoors. The od_spawn() function automatically saves the
  211. contents of the current door screen, system drive and
  212. directory, and provides a separate screen on which the
  213. spawned-to program can execute. The od_draw_box() function
  214. allows you to easily display windows in door programs,
  215. using ANSI or AVATAR graphics codes. Also added is are
  216. od_carrier(), od_set_statusline() and od_edit_str()
  217. functions, mentioned elsewhere.
  218. - More changes have been made in order to permit greater
  219. customization and flexibility of OpenDoors. An
  220. od_carrier() function has been added to detect the state
  221. of the carrier detect signal in programs that disable
  222. OpenDoor's internal carrier detection. Also, it is now
  223. possible to shut down OpenDoors without exiting via the
  224. od_exit() function.
  225. - OpenDoors now yeilds the processor to other executing
  226. tasks in multitasking environments (ie. DesqView), when
  227. the door is inactive or waiting for input.
  228. - The door driver function od_clr_scr() now only checks the
  229. user's screen clearing setting if that information is
  230. available from the door information file. If the
  231. information is not available, the od_clr_scr() function
  232. will always clear the screen.
  233. - Many other small changes were also made for version 4.00.
  234. Among these, you now have access to the user's reason for
  235. chat and you can switch the pause and stop keys on and off
  236. during listing of available files or displaying a text
  237. file. Also, previous versions of OpenDoors would read the
  238. user's information from the first door information file
  239. found. Instead, version 4.00 now reads the most recently
  240. created door information file. A bug in the od_clr_line()
  241. function has also been fixed.
  242. VERSION 4.10 A great deal of work has been done between version 4.00 and 4.10
  243. of OpenDoors. This work falls into three major categories: bug
  244. fixes, improved performance, and new features. In fact, enough
  245. changes and improvements have been made that this version really
  246. ought to be numbered 5.00. Below is a summary of the changes that
  247. have occurred since version 4.00:
  248. - Much of the door information file interfacing code has
  249. been revamped, in order that OpenDoors now works correctly
  250. with the newest versions of the BBS packages it supports.
  251. OpenDoors now differentiates between three different
  252. DOOR.SYS formats - the DoorWay format, the PC-Board / GAP
  253. format, and the Wildcat format. Also, the SFDOORS.DAT code
  254. has been fixed to correctly work with the newest version
  255. of Spitfire.
  256. - OpenDoors will now attempt to swap itself and your entire
  257. door program to expanded memory or disk when the sysop
  258. shells to DOS, or when you call one of the od_spawn...()
  259. functions. Memory swapping may be configured in a number
  260. of ways, or even disabled. The OpenDoors swapping code
  261. adds only 2K to the door's .EXE file size.
  262. - OpenDoors now includes a new od_spawnvpe() function. In
  263. addition to the features of the "quick-spawn" od_spawn()
  264. function, od_spawnvpe() also returns the errorlevel the
  265. called program returned, allows you to alter the
  266. environment passed to the child process, and uses the same
  267. parameter format as the C spawnvpe() function. (see page
  268. 117)
  269. - The od_page() function now checks the sysop paging hours,
  270. set in the OpenDoors control structure. If the user
  271. attempts to page the sysop outside of the defined paging
  272. hours, he or she will be notified that the sysop is not
  273. available.
  274. - OpenDoors now includes a configuration file sub-system
  275. that you may choose to include in your OpenDoors programs.
  276. This sub-system automatically parses the configuration
  277. file you specify, responding to any of the built-in
  278. configuration commands, and passing configuration options
  279. specific to your program back to you. With only a single
  280. line of code on your part, this sub-system will allow
  281. people running your program to configure many options such
  282. as sysop paging hours, system directories, maximum time
  283. within the door, etc. It also allows the sysop to provide
  284. information that may not be supplied by their particular
  285. BBS software, such as modem settings, the system's name
  286. and so on. In addition to all these built in commands, you
  287. can add your own configuration options, such as display
  288. colours, registration key numbers and other information
  289. needed by your program - without the need to write your
  290. own configuration file parsing routines. (See page 76)
  291. - OpenDoors now supports custom, sysop-defined door
  292. information file (drop file) formats. By defining a custom
  293. door information file format in the cofiguration file,
  294. OpenDoors door programs can now be made to run directly
  295. under BBS packages that use proprietary file formats that
  296. are not directly supported by OpenDoors. (see page 78)
  297. - In order to make doors written with OpenDoors even more
  298. foolproof for the sysop to setup, an intelligent door
  299. information file (drop file) locator has been added.
  300. OpenDoors will automatically search for a door information
  301. file in the directory specified by the configuration file,
  302. the directory specified by your door's source code, the
  303. current directory, and the directory pointed to by the
  304. environment variables used by any of a number of BBS
  305. packages.
  306. - OpenDoors now includes a log file sub-system that you may
  307. choose to include in your programs. The log file system
  308. handles all access and formatting of the logfile, allowing
  309. the programmer to make log file entries by simple function
  310. calls such as od_write_log("User downloading file");.
  311. Also, since the log file system is closely integrated with
  312. the rest of OpenDoors, choosing to include the logfile
  313. system in a program causes OpenDoors to automatically
  314. output the most common logfile entries for events such as
  315. the user paging sysop, the user hanging up, sysop chatting
  316. with the user, user inactivity timeouts, and so on. (see
  317. page 89)
  318. - OpenDoors 4.00 would not always correctly turn on and off
  319. high intensity or flashing colour attributes in ANSI mode.
  320. The ANSI colour handling code has been reworked for
  321. version 4.10, to eliminate these problems.
  322. - An od_get_answer() function has been added, which can be
  323. used to easily permit only certain keys to be pressed in
  324. response to a prompt. For instance, to get a Yes/No
  325. response from the user, use od_get_answer("YN"); (see page
  326. 66)
  327. - A popular addition to OpenDoors 4.00 was the ability to
  328. change the current display colour within od_printf()
  329. format strings, using imbedded control characters.
  330. However, the programmer was forced to use a rather cryptic
  331. two-byte control sequence, where the second character of
  332. the sequence contained an 8-bit colour attribute value. It
  333. is now possible to change the display colour within
  334. od_printf() by specifying the names of the desired
  335. foreground and background colours, delimited by a set of
  336. BACK-QUOTE (`) characters. For example:
  337. od_printf("`Red` THIS TEXT IS RED `Blue` THIS TEXT IS BLUE");
  338. od_printf("`Flashing bright green on dark green` AND THIS IS GREEN");
  339. (see page 93)
  340. - Version 4.10 would not correctly "freeze" the user's time
  341. during DOS shell and sysop page operations, when the door
  342. was operating under RemoteAccess 1.11. This has been
  343. fixed.
  344. - A new variable, od_spawn_freeze_time, has been added to
  345. the OpenDoors control structure. When set to FALSE, the
  346. user's time remaining continues to be deducted during the
  347. execution of any of the od_spawn... functions. When set to
  348. TRUE, the user's time remaining is frozen during the
  349. execution of an od_spawn... function.
  350. - The current directory is now correctly restored to its
  351. original setting after the sysop returns from a DOS shell,
  352. and after calls to the od_spawn... functions.
  353. - A number of people were experiencing difficulty using the
  354. od_edit_str() function in version 4.00. A number of
  355. improvements to this function's logic have been made in an
  356. attempt to make od_edit_str() more foolproof to use. Also,
  357. a new flag setting, EDIT_FLAG_LEAVE_BLANK has been added.
  358. However, there were a few reports of problems which we
  359. were not able to reproduce. If you are still having
  360. difficulty with this function, please carefully re-read
  361. the section of the manual pertaining to it's use. In
  362. particular, be sure that your difficulty is not resulting
  363. from the flag settings you are using. If you still suspect
  364. a bug in this function, please include with your bug
  365. report the source code that is causing the problem.
  366. - Page pausing within the od_send_file() and od_list_files()
  367. (FILES.BBS listing routine) functions can now be disabled
  368. and re-enabled by the programmer.
  369. - The "Continue? [Y/n/=]" end of screen prompt and response
  370. keys are now fully customizable.
  371. - The od_list_files() FILES.BBS listing function now works
  372. correctly in all memory models. The function has also been
  373. fixed to correctly handle cases where the trailing
  374. backslash is not supplied in the path parameter.
  375. - The actual BBS line (node) number is now displayed on the
  376. default status line, provided that this information is
  377. supplied by the BBS software.
  378. - It is now possible to detect whether keystrokes originated
  379. from the remote or local keyboard. This is a feature that
  380. is useful in some special applications, such as split-
  381. screen sysop chat programs.
  382. - Version 4.00 would not always correctly display the status
  383. lines, if there was information missing from the
  384. EXITINFO.BBS file. This has been fixed. In addition, the
  385. "next event" information is now correctly displayed on the
  386. status lines. Also, if the user's birthday is available,
  387. their age will also be calculated and displayed on the
  388. status line.
  389. - If you temporarily disable inactivity timeouts, OpenDoors
  390. will no longer automatically trigger and inactivity
  391. timeout as soon as you re-enable this feature.
  392. - A new function, od_hotkey_menu(), has been added to
  393. facilitate displaying a menu with "hot keys". Like the
  394. od_send_file() function, od_hotkey_menu() will display an
  395. ASCII, ANSI or AVATAR file. However, od_hotkey_menu() also
  396. allows you to pass a string listing possible hot keys. If
  397. the user presses any of these keys while the menu is being
  398. displayed, menu display will immediately cease, and the
  399. function will return the key pressed by the user. (See
  400. page 71)
  401. - The od_send_file() (the ASCII/ANSI/AVATAR file display
  402. routine) no longer sends the EOF character if it happens
  403. to exist at the end of a file.
  404. - In addition to the EZVote OpenDoors tutorial door, an
  405. number of other example doors are now included in the
  406. OpenDoors package.
  407. - A few errors have been corrected in the documentation, and
  408. additional information has been added about the new
  409. features in this version.
  410. VERSION 5.00 Version 5.00 represents several major steps forward for
  411. OpenDoors. In addition to numerous bug fixes and minor
  412. improvements, a number of major new features have been added to
  413. this version. These include an optional multiple personality
  414. system which allow the sysop to choose the status line and
  415. function key style they prefer. This version also adds text-mode
  416. support for RIP (Remote Imaging Protocol) graphics, and adds a
  417. group of advanced ANSI/AVATAR/RIP functions for scrolling areas
  418. of the screen, saving and restoring portions of the screen and
  419. creating pop-up windows and menus. Also new in this version is
  420. support for compilers other than Borland/Turbo C(++), such as
  421. compilers from Microsoft. Version 5.00 also adds built-in
  422. communications support, making the use of a FOSSIL driver
  423. optional. Furthermore, direct support for additional BBS systems
  424. has been added. The list below provides more detail of the
  425. changes and new features in version 5.00:
  426. - The nonstop key ([=]) now works correctly during
  427. FILES.BBS listing.
  428. - New door information file formats now supported include:
  429. RA 2.00 EXITINFO.BBS.
  430. - If the TASK environment variable is set, OpenDoors will
  431. now use its value to determine the current node number.
  432. - The od_control.od_spawn_freeze_time variable now works
  433. correctly. Previously, the user's time would always be
  434. frozen during od_spawn...() execution, regardless of the
  435. value of this variable.
  436. - A new feature known as the "Multiple Personality System"
  437. has been added to this version. If you choose to include
  438. the Multiple Personality System in a door, the sysop will
  439. be able to specify which of a number of "personalities"
  440. should be used. Each personality defines the statusline
  441. appearance and function keys seen by the sysop, and has
  442. no effect on the door's operation from the user's
  443. standpoint. OpenDoors 5.00 includes personality
  444. definitions for WildCat, RemoteAccess, PC-Board, and it's
  445. own simplified RA style status lines. You can also define
  446. your own personalities by writing a personality
  447. definition function. If your choose not to include the
  448. Multiple Personality System in a door, you will still be
  449. able to define which single personality you wish
  450. OpenDoors to use.
  451. - This version of OpenDoors can be used with a larger
  452. variety of compilers than where supported by the previous
  453. version. OpenDoors 5.00 is known to work with all
  454. versions of Turbo C, Turbo C++, Borland C++, Microsoft C,
  455. Microsoft C++, Quick C and Visual C++. It should also
  456. work with any other MS-DOS based ANSI C compiler that
  457. supports the Microsoft/DOS .OBJect and .LIBrary file
  458. formats.
  459. - A new diagnostics feature has been added to OpenDoors,
  460. which allows you to determine the reason for the most
  461. recent OpenDoors function failure. When any OpenDoors
  462. function returns a failure condition, it also sets the
  463. new od_control.od_error variable to indicate the reason
  464. for the failure.
  465. - Added additional definitions to OPENDOOR.H, to map names
  466. of OpenDoors functions and variables with the word
  467. "colour" from the U.S. spelling "color". In other words,
  468. both od_set_colour() and od_set_color() are now
  469. recognized by OpenDoors.
  470. - The od_list_files() now supports more intelligent path
  471. specifications. If the parameter to od_list_files() is
  472. NULL or empty, it will search for a FILES.BBS file in the
  473. current directory. If a directory path is specified, it
  474. will look for a FILES.BBS in that directory. If a full
  475. directory and filename are specified, the specified
  476. filename will be used in place of FILES.BBS.
  477. - To save space, the compact memory model library is no
  478. longer included in the normal OpenDoors package. The
  479. compact memory model library is now available seperately.
  480. - A new function, od_set_dtr(), has been added to allow the
  481. DTR line to the modem to be manually controlled. This can
  482. be useful in writing programs where you wish to force the
  483. modem to hangup, such as a call-back verification door.
  484. - Added additional support for various DOS multitasking
  485. environments. OpenDoors is now specifically Microsoft
  486. Windows aware. OpenDoors also now gives up time to other
  487. waiting tasks when it is idle during chat mode.
  488. - The od_edit_str() "M" mode now capitializes a character
  489. following a dash '-' character.
  490. - When transmitting more than one character at a time,
  491. OpenDoors now uses the FOSSIL trasfer block function,
  492. instead of multiple calls to the transfer character
  493. function. This should help to improve performance over
  494. high speed connections when running on slow PCs or under
  495. multitasking environments.
  496. - OpenDoors 4.10 would not correctly change the display
  497. colour from high-intensity back to low-intensity. This
  498. problem has been fixed.
  499. - OpenDoors now recognizes DORINFO?.DEF filenames with
  500. alphabetical identifiers (ie, DORINFOA.DEF thru
  501. DORINFOZ.DEF) for nodes 10 thru 35.
  502. - Improvements have been made to the logfile system. An
  503. exit at errorlevel zero no longer causes garbage to be
  504. written to the logfile. The logfile functions have been
  505. made more reliable when operating under low stack
  506. availability conditions. In the past, if a large number
  507. of local variables where allocated on the stack, the
  508. logfile functions would fail, often writing garbage to
  509. the logfile. When the user pages the sysop for chat, the
  510. user's reason for wishing a chat is also written to the
  511. logfile.
  512. - Support for text-mode RIP (Remote Imaging Protocol)
  513. graphics has been added. Because this version of
  514. OpenDoors always operates in DOS text-mode, none of the
  515. graphics mode RIP features (such as drawing lines,
  516. circles and displaying icons) will appear on the local
  517. screen. Plans for a version of OpenDoors that will
  518. operate in graphics mode and optionally display graphics
  519. locally are currently under consideration. In this
  520. version, RIP support includes a number of new features.
  521. OpenDoors will now recognize the RIP setting passed in an
  522. RA 2.00 EXITINFO.BBS file and WildCat DOOR.SYS file, and
  523. also allows the RIP setting to be specified in a custom
  524. door information file. The od_send_file() and
  525. od_hotkey_menu() functions will now search for files with
  526. .RIP, .AVT, .ANS and .ASC extensions. When displaying RIP
  527. graphics to the remote user, a pop-up window appears on
  528. the local screen, indicating to the sysop which file is
  529. being displayed.
  530. - A set of new functions have been added to permit advanced
  531. screen manipulations. These functions include
  532. od_gettext() and od_puttext() to save and restore
  533. portions of the screen, and od_save_screen() and
  534. od_restore_screen() to save and restore the entire
  535. screen. od_scroll() can be used to scroll any portion of
  536. the screen upwards or downwards. od_save_screen() and
  537. od_restore_screen() will operate in any mode, but the
  538. other functions require ANSI/AVATAR/RIP mode to be
  539. available.
  540. - Three additional functions, od_window_create(),
  541. od_window_remove() and od_popup_menu(), have been added
  542. to facilitate the creation of popup windows and menus.
  543. When such a window or menu is removed from the screen,
  544. the are of the screen "under" the window is returned to
  545. it's original state. This allows you to create multiple
  546. overlapping windows within a door program. The
  547. od_popup_menu() function creates a popup window with a
  548. menu from a simple menu definition string. The user can
  549. select an option from this menu by pressing the key
  550. associated with an option, or by moving a menu selection
  551. bar using their arrow keys. These three functions require
  552. an ANSI/AVATAR/RIP mode to be available.
  553. - A new function, od_chat() has been added, to allow you to
  554. explicitly invoke the OpenDoors chat mode from within
  555. your program.
  556. - A new setting variable, od_control.od_always_clear has
  557. been added. When set to TRUE, od_clr_scr() will always
  558. clear the screen, regardless of the user's screen
  559. clearing setting. When set to FALE, od_clr_scr() will
  560. only clear the screen if the user has screen clearing
  561. enabled.
  562. - It is now possible to configure the errorlevels OpenDoors
  563. exits with under various circumstances, such as when the
  564. user runs out of time remaining online. See the
  565. od_control.od_errorlevel variable
  566. - A new setting variable, od_control.od_force_local, can be
  567. used to easily force OpenDoors to operate in local mode.
  568. Using this variable you can easily add a command line
  569. parameter such as "-local" to allow the sysop to force
  570. your door to operate in local mode. When OpenDoors is
  571. forced into local mode using this variable, it does not
  572. look for a door information file, and uses default
  573. settings for the user's name, etc.
  574. - OPENDOOR.H now sets structure packing to single byte
  575. alignment for the od_control structure when Borland and
  576. Microsoft compilers are being used. In the past,
  577. programmers using OpenDoors have experienced difficulties
  578. the od_control structure when the compiler has been set
  579. to use word packing.
  580. - OpenDoors now closes the FOSSIL driver prior to
  581. performing a spawn or sysop DOS shell. This allows doors
  582. or other communications programs which use the FOSSIL
  583. driver to be executed while the door's execution is
  584. suspended.
  585. - When used with a FOSSIL driver, OpenDoors normally
  586. changes the BPS rate to that passed from the BBS (if the
  587. BBS passes a valid FOSSIL BPS rate). This BPS rate
  588. setting may now be disabled by setting the
  589. DIS_BPS_SETTING bit of the od_control.od_disable
  590. variable.
  591. - A function hook has been added to allow you to install a
  592. function to be called whenever od_kernel() executes
  593. (od_control.od_ker_exec). Another function hook,
  594. od_control.od_time_msg_func, can be installed to override
  595. OpenDoor's time limit warning messages.
  596. - A new array, od_control.od_hot_function, allows the you
  597. to define functions to be called when any of the
  598. programmer-defined sysop hotkeys have been pressed.
  599. - A function hook, od_control.od_no_file_func, has been
  600. added. This function will be called whenever OpenDoors is
  601. unable to find or read a door information file. This
  602. allows you to add your own door information file reader,
  603. or to provide a local login prompt when no door
  604. information file is present.
  605. - Previously, OpenDoors would stop correctly updating the
  606. user's remaining time at midnight when running under
  607. certain BIOSes. This problem has been fixed.
  608. - The current display colour attribute can now be accessed
  609. through an control structure member,
  610. od_control.od_cur_attrib.
  611. - od_send_file() and od_hotkey_menu() no longer pause with
  612. a "Continue?" prompt prematurely in files that have line
  613. lengths greater than 254 characters.
  614. - The local keyboard may now be disabled by setting the
  615. DIS_LOCAL_INPUT bit of od_control.od_disable. This only
  616. affects the sysop's input in circumstances that input is
  617. also accepted from the remote user; this setting has no
  618. effect on the sysop function keys.
  619. A new function hook: -
  620. void (*od_control.od_local_input)(int);
  621. has been added. If set, this function will be called
  622. whenever the sysop presses a non-sysop-function key on
  623. the local keyboard.
  624. - od_control.od_clear_on_exit now controls whether the
  625. screen is cleared before shelling or executing
  626. od_spawn...(), in addition to before OpenDoors shuts
  627. down.
  628. - od_page() now restores the original display colour before
  629. returning.
  630. - It is now possible to display an entire string of
  631. characters with terminal emulation, using the new
  632. function od_disp_emu().
  633. - OpenDoors will now display a small popup window when
  634. disconnecting the current connection.
  635. - A new variable, od_control.od_in_buf_size, can now be set
  636. prior to calling any OpenDoors function to set the size
  637. of OpenDoors combined local/remote keyboard input buffer.
  638. By default, this buffer is 256 bytes in size.
  639. - Previously, there were a number of OpenDoors API
  640. functions that would not correctly initialize OpenDoors
  641. if they were the first function called in the program.
  642. This has been fixed.
  643. - To facilitate setting of bps rates up to 115,200,
  644. od_control.baud is now an unsigned long.
  645. - A new setting, od_control.od_no_ra_codes, has been added
  646. to disable the use of RemoteAccess/QuickBBS control codes
  647. by od_send_file()/od_hotkey_menu()/od_disp_emu(). The
  648. RemoteAccess/QuickBBS ASCII 1 "pause for key" is also now
  649. recognized.