BNU.COM BNUCom Rev 5 FOSSIL Compatible Communications Driver Version 1.30A Copyright (C) 1989, David Nugent & Unique Computing P/L ------------------------------------------------------ Usage: BNU [optional switches] Available switches: -U Uninstall (if already resident) -R:nnnn Set RX buffer size to -T:nnnn Set TX buffer size to -P:nn Enable nn concurrent ports (1-16) -D Enable diagnostics output -N Disable diagnostics output -L:nnnn Lock baud rate to -C Recapture INT 14H vector -W:nn+ Enable carrier watch on port -W:nn- Disable carrier watch on port -M{1|0} Suppress/enable init message -B Perform system reboot -H Display this help text -Xn Enable multitasker support: 0=Default/None 1=AT-BIOS, 2=TopView, 3=DesqView 4=TaskView 5=DoubleDOS 6=Windows, 7=MultiLink 8=PC-Mos/386 ------------------------------------------------------ Revision history: v0.1 04 Jan 1989 Original release with TermPC to limited beta sites. Basic comm routines working and most enhanced FOSSIL functions working except API support. Support for two ports COM1/COM2. v0.1a 29 Feb 1989 Version not released; log for significant update BNU now defaults to one com port (was two, which was not changeable). FOSSIL is now table driven and capable (in theory) of supporting up to 16 ports. Most logic to support COM3/COM4 inserted. API interface & despatcher added (surprisingly easy). Command line options added: - Number of concurrent ports - TX/RX Buffer size Added handling of buffered modem chips - 16550. Current version limits use of buffer to 8 bytes. v0.2 09 Feb 1989 Released to first beta group; seven sites running various software & hardware combinations. Diagnosed and allowed for problem with D'Bridge. Located and destroyed bug in block receive and transmit functions caused by attemptedoptimisation Diagnostics module added to enable tracking. Implimented baud rate locking & auto flow control for high speed modems (released untested unfortunately). Added "backdoor" FOSSIL access via BIOS TOD interrupt to provide for recapturing "lost" INT 14H vector. Command line options added: - Unload from memory - Enable FOSSIL diagnostics - Disable FOSSIL diagnostics - Lock baud rate/force CTR/RTS flow control - Recapture INT 14H - Display help (in case you don't RTFM) Changed DOS write call for character output to direct call into ANSI driver via INT 29H with significant increase in screen write speed (Fn 13). v0.3 10 Feb 1989 Bug fixing spree after close inspection of Rev 5 spec Corrected an oversight to bring function 1B into line with the Rev 5 spec: previously the baud rate set by the application was being reported - this would be incorrect where the FOSSIL was locked. Timer tick parameters (Fn 07) now correctly reports milliseconds per tick in DX, not BX as in previous versions (oops - typo). Transmit character no wait (0B) now returns success if in local mode: previously returned error. Local (keyboard) operation in general now works correctly with get status and transmit character calls. Corrected bug in buffer setup routine which caused incorrect sizing of transmit & receive buffers when both sizes were specified to be different. Initialising "local" mode no longer causes a non- sensical diagnostics display. v0.4 10 Feb 1989 Bug found which prevented BNU working with Opus. Outrightly slaughted: was always returning 0F from check for ^C/^K from remote; result? Opus thinks it was getting a stream of ^C's. v0.5 Not released Added error checking in "uninstall" process, to prevent crashing if diags enabled - or any timer routine for that matter. The original timer interrupt is reset regardless and the driver also checks for installed API's. It is now possible to re-enable diagnostics on the fly, if they have been disabled with "-N". Added further error checking on port numbers during the init call; only ports 1 - 16 are now valid. Fixed bug in API deinstall - was not actually doing the deinstall, but was returning success code. v0.6 19 Feb 1989 Disabled 16550 logic temporarily because of possible problems with it. Port number comparison is "byte" only, not word as previously. This gets around problems with D'Bridge. Command line options added: - carrier watch and reboot - -M switch to suppress output of message on FOSSIL init call. Found and corrected bug in carrier watch FOSSIL call. v0.7 21 Feb 1989 Found and corrected bug in transmit character routine; Was causing 'out of sync' between transmit buffer count and actual transmit buffer pointers. Should now work with D'Bridge correctly. 16550 logic still disabled in this version. v0.8 Internal Tidied up some minor alignment problems by forcing paragraph and word alignment of some items. Found and corrected bug in diagnostics routine which sometimes trashed the display - was assuming the CPU's direction flag was always clear. Fix was applied to ALL routines strapped to the timer chain via FOSSIL and also all int 14H calls. v0.9 25 Feb 1989 Changed memory deallocation strategy: BNU no longer deallocates its environment on becoming resident; this seemed to cause problems in DOS 3.30/3.31. ############################################################################ v1.0á 31 Mar 1989 General beta release Changed "capture interrupt" strategy. Previous hook using "time of day" interrupt (0x1a) caused problems running under DesqView when the 'capture' option was used (time of day corrupted). Added support for diagnostics panels for up to 4 ports concurrently. v1.0â 02 Apr 1989 Corrected problem with 'backdoor' hook; one instance of the old 1aH vector was missed (in the uninstall function - left both INT 1aH and 11H 'hot'. v1.1 20 Apr 1989 Added intrinsic support for various multitasking systems, including AT-BIOS standard (ok for most networks), DesqView, DDos, TopView, Taskview, Windows, MultiLink and PC-MOS/386. MT waits are now forced at appropriate times, when- ever a request is unsuccessful. Expect further enhancements in this area. Corrected bug which prevented re-enabling diagnostics after disabling temporarily. Added multitasker override command line switch to set a multitasker which cannot be detected (easily) in software. Squashed a bug which caused port diagnostics to be activated for a port each time it was initialised. v1.2 24 Apr 1989 Squashed bug in recapture (only occurred under DV). Added support for shared interrupt port mask (still not fully implimented). Added non-version specific method of patching comms parameters tables "BNUPORT" utility. Changed strategy for getting screen address when running diagnostics: BNU now looks each time a port is hooked in so that the diags window will appear in the correct (related) DV window. v1.2a 28 Apr 1989 Problems found with 8088/6 based systems: multitasker auto-sensing is always now off unless enabled by the command line option. The revision 5 FOSSIL specification is now included in the distribution archive. v1.2b 29 Apr 1989 Beta release to two test sites - multitasker support temporarily disabled (may be causing problems?). v1.2c 30 Apr 1989 Located problem in init call when debugging enabled (call was incorrectly relocated when correcting other bug). Assembler definition errors caused incorrect structure size calculations (problem with A86?) - corrected. This would explain a few of the problems experienced with versions since 1.10 (when the port structure size was last changed). Formalised version coding for beta release versions (letter suffix on version number). Multitasker support reenabled. v1.2e 01 May 1989 Located and corrected a problem in 16550 logic which caused serious character loss in some circumstances. Found that INT 29H (fast console write) didn't work with PC-MOS, now using DOS console output by default (since INT 29H is an undocumented interrupt), but it can be reenabled using the "-F" (for fast) switch. Multitasker autosense for PC-MOS/386 added. Complete version number (including beta revision) now displays in init string. Fixed a bug in command line parsing which caused an occasional problem when giving a zero value to a numeric switch (this would only work if it was the last switch given). Added USART buffering indicator to diagnostics display. Added field to display FOSSIL function code passed by the application if an error was detected. BNU now deinitialises all ports automatically on request to "unload from memory". Keyboard intercept logic added to enable/disable diagnostic display using Shift-Ctrl-Keypad5. BNU no longer aborts if another driver is loaded - it will just refuse to load (so the help message can be displayed). BNU is now a bit smarter in working out whether the resident driver is the same version as the runtime one. BNU can now run off a different interrupt controller port than the primary 8259; this can now be configured with BNUPORT (allows some multiport cards to work). The "enable diagnostics" switch can now accept a numeric argument (always defaults to zero if none) which specifies the diagnostics window "refresh rate" in number of ticks. v1.2f 01 May 1989 Last minute bug fix. Correct spurious output when using capture option under DesqView (was harmless however). v1.2g 02 May 1989 Enabled setting the default state of the diagnostics window from the command line; the "-D" switch takes the form "-Dnn[-|+]", where nn specifies the refresh rate in ticks (2 = every second clock tick) and the '-' and '+' respectively force 'invisible' or 'visible' window by default. The additions are optional. Fixed a command line parsing bug which would cause problems if an invalid numeric argument specified. Added logic to cope with loading BNU.COM from an "install=" statement in CONFIG.SYS under DOS 4.xx. Enhancements to BNU have been frozen for this version; only bug fixes will apply until release 1.30. v1.2h 05 May 1989 Various small bug fixes: elimination of at least 2 80286 specific instructions; solved problem in local keyboard operation of BBS programs on a second line running very slowly. Corrected minor bug in command line parsing preventing "unlock" switch from working. Cosmetic change of id string passed to applications requesting FOSSIL information. v1.3 07 May 1989 Fixed bug in "^C/^K check" FOSSIL function (10H) which caused Opus systems to go nuts (sorry). Minor mods to keyboard routine. v1.3a 15 May 1989 Fixed problem in detection of ^C/^Break handling for the local system. ***** CHANGE IN COMMAND LINE SYNTAX ***** Individual ports may now be locked (in fact, each must be locked individually) -L switch. Locking the baud rate no longer interferes with other concurrently running ports. Shifted FOSSIL data area (again) to allow BNUPORT to work correction in detecting the version number. Carrier watch no longer requires that the FOSSIL be initialised (this was previously done internally); BNU now complies with Rev 5 spec in this regard. Further error checking in diagnostics enable code to guard against non-conforming BIOS (this caused diags not to work on some systems). FOSSIL may now be locked at both 110 and 75 baud (by request). When locked, CTS/RTS handshaking is always enabled (let me know if this causes problems). "TX Max" & "RX Max" added to diagnostic window to give an indication of buffer usage (these are cleared when a port is initialised). ---------------------- Next major release is to be 2.00. Versions after this will no longer be assembled using A86 and some significant performance optimisations have been made. If you wish to volunteer your services as a beta site, please netmail 3:632/348. To qualify as a beta site, you must be nodelisted in either the IFNA (Fidonet) or Alternet nodelist, and your system *MUST* accept crashmail.