home *** CD-ROM | disk | FTP | other *** search
-
- MCOMM 6.00 UPDATE NOTES
-
- Added support for IRQs 8-15 and improved the documentation
- on how to find the values for the IRQ masks and vector
- numbers. Corrected an oversight in async_restart that
- caused it to not work on some ports when 3 or more ports
- were open simultaneously.
-
- Note: The 6.00 version designation (versus 5.60) is because
- I use the timestamp on the files to indicate what version of
- MCOMM they belong to. Since a file can't be timestamped
- as 5:60, I had to change the major number.
-
-
- MCOMM 5.59 UPDATE NOTES
-
- Forgot a switch when compiling version 5.58 which caused
- Microsoft's default library names to be embedded in the OBJs.
- The result is you had to tell your linker to ignore default
- library specs, rename a lib to be called xLIBCE, or (if
- you didn't know what to do) stay with version 5.57. 5.59
- does not reference any default libraries. Other changes:
- Under certain conditions async_open did not restore interrupt
- vectors properly if the open failed. This is corrected.
- Documented some additional v_scrlm mode options that were
- added to make it easier to extend the video routines to
- support VT100 emulation (see SUPLMNT.DOC). Added some code
- to the TXZM.C port open routine to overcome a serial port
- lock up problem with some early PCI motherboards (you may
- want to steal this and put it in your open loop--a lot of
- PCs are affected).
-
-
- MCOMM 5.58 UPDATE NOTES
-
- The version 5.58 update consists only of changes to the TXZM
- source code. See TXZM.DOC for the list of updates.
-
-
- MCOMM 5.57 UPDATE NOTES
-
- Made a change to an internal routine that initiated transmit
- interrupts. This change fixes 2 problems--one with some new
- UARTs that recently appeared, and the other with failed or very
- slow transmits when running a program that uses MCOMM in a DOS
- box under OS/2.
-
- The COMM.H header file was modified to include vector numbers
- and IRQ masks for IRQs other than 3 and 4.
-
- Fixed a problem with the RecurseSubdirs function in TXZM.C. It
- sometimes lost track of the current directory if the recurse
- subdirectories option was used when sending files.
-
- Registered users of 5.50+ may download a free upgrade to 5.57
- by logging onto N.E.T. Datalink, 903-838-6713, and leaving a
- message to the sysop that includes:
-
- 1) Registration number from the original disk.
- 2) Whether the original registration was for "Source
- and Libraries" or "Libraries Only".
- 3) Your name and address. This must match the name and
- address the software was originally registered under
- unless you have moved.
-
- Please allow 3 or 4 days from the time you leave the message
- requesting the update until you call back to download it.
-
- Mail in updates are $10. See ORDER.DOC if you want a mail in
- update.
-
- MCOMM 5.54-5.56 UPDATE NOTES
-
- Up to four ports may now be opened simultaneously as long as
- they do not share port addresses, IRQ lines, or vector numbers.
- Previously the limit was 2 simultaneous ports. The AT extended
- IRQ lines (IRQs 8 thru 15) are not supported.
-
- A new use for 'v_scrlm' flag in the ANSI video code has been
- implemented making it easier to develop code that emulates the
- VT100. Setting 'v_scrlm' to -1 causes the screen and cursor
- positioning to behave properly for VT100 no scroll mode. This
- change should have no effect on existing code.
-
- Fixed a bug in the video code that occurred when a backspace
- character was displayed within a string with direct writes
- enabled. (This last change is the difference between 5.55 and
- the 5.54 beta). Version 5.56 consisted of a change to TXZM.C
- demo to account for change in COMM_S.LIB noted in following
- paragraph.
-
-
- VERY IMPORTANT:
-
- If your code uses the option to disable or ignore the 16550
- FIFOs, or if your code disables MSR or LSR interrupts, you must
- make some changes to your source before using the new libs. In
- order to support port addresses above 0x0FFFh, it was necessary
- to not use the high bits of the async_open ComBase parameter as
- flags. Flags affecting 16550 operation and LSR/MSR interrupts
- must now be OR'd with the 'vctrnbr' argument of async_open
- rather than the 'combase' parameter. ASYNC.DOC reflects these
- changes to the async_open function.
-
-
-
- MCOMM 5.52 UPDATE NOTES
-
- No changes have been made to the serial code. The video
- code includes a new feature that allows installing your own
- handler for unrecognized ANSI sequences (see SUPLMNT.DOC).
- The demos were updated to work with the latest versions of
- Borland/Turbo C/C++ and Microsoft C/C++. The latest version
- of Zortech C/C++ the code has been tested with is 2.00. They
- should work with later versions of ZTC with few or no changes.
-
- The ZMODEM demo (TXZM) was organized a little differently so
- all three supported compilers could use the the same ZMLIBs,
- rather than having a set of ZMLIBs for each memory model for
- each compiler. This required including another module of the
- source code in the shareware version of MCOMM (XYZGEN.C) that
- formerly only came with the registered version. This change
- also fixed some linker "unresolved external" errors for users
- of earlier versions of Turbo C.
-
- The TXZM demo now will respond with a CPR (cursor position
- report) sequence when it is sent an ANSI DSR (device status
- request). This is so BBS systems that auto-detect ANSI will
- recognize TXZM's mini-terminal mode as an ANSI capable program.
- The implementation of this feature in TXZM is also a good
- example of how to put an unrecognized ANSI sequence handler in
- your program if you are using the MCOMM video functions.
-
- Support for "Doorway" mode was added to TXZM. Pressing ALT=
- while in mini-terminal mode toggles this mode on and off. The
- screen switches to a 25 line display when Doorway mode is on
- and reverts back to a 24 line display when Doorway mode is off.
- Since the purpose of Doorway mode is to allow the sending of
- special keys such as function keys, the arrow keys, PGUP, PDDN,
- etc., none of the TXZM program functions (including Exit, Help,
- Shell, etc.) work while Doorway mode is enabled.
-
- An otherwise undocumented -7 switch was added to TXZM. This
- switch strips the high bit from incoming characters when in
- mini-terminal mode.
-
-
-
-
- MCOMM 5.50 UPDATE NOTES
-
- Version 5.50 adds RTS flow control for the receive side.
- Previous versions supported monitoring CTS to insure the device
- being sent to was not overran but did not lower RTS if the PC
- was being overran. The function 'async_msrflow' has been
- modified to support this option. For more information, see the
- updated documentation on 'async_msrflow' in ASYNC.DOC. This
- change also necessitated a change in the ASYNC structure making
- it one byte longer. BE SURE TO USE THE RIGHT HEADER FILE AND
- RECOMPILE ANY CODE THAT USES COMM.H or COMM.HPP.
-
- Added a Zmodem demo program called TXZM. The shell code and
- linkable libraries are not part of the shareware version of
- MCOMM. Complete source comes with the registered version.
- This is primarily a demo with limited documentation and limited
- support. It also happens to be very fast and contains a lot of
- extras. It MAY NOT be distributed except as stated in its
- documentation.
-
-
- MCOMM 5.41 UPDATE NOTES
-
- Version 5.41 contains a few minor changes and bug fixes. These
- are:
-
- 1) The 'volatile' keyword was added to ASYNC structure members
- that are modified by the interrupt handler. This corrects
- problems with optimizing compilers (such as MSC 6.0) that
- load variables into registers. Many of the macro
- implemented functions test variables that are modified by
- the interrupt handler. If the compiler, in optimizing a
- loop, loads a variable into a register that is modified by
- the interrupt handler, it will never see the variable
- change. The 'volatile' key word instructs the compiler to
- not assume the variable remains constant. Thanks to Chris
- Fanning for pointing this out to me.
-
- 2) The ANSI cursor position sequence did not recognize the
- window relative ('v_wrel') mode of operation. If an ANSI
- cursor sequence was received, it was always treated relative
- to 0,0. It now treats the current window's top left corner
- as 0,0 if 'v_wrel' is non-zero. Thanks to David Speer for
- this information.
-
- 3) When a line was exactly the width of the screen, any
- following CR/LFs were ignored until a non CR/LF character
- was received. This is now fixed.
-
- 4) The definition of SHFT_TAB in KEYS.H has been wrong for the
- last several versions. Thanks to Cleo Yarber for pointing
- this out to me several times.
-
-
-
-
- MCOMM 5.40 UPDATE NOTES
-
- The 5.40 version of MCOMM corrects two problems:
-
- 1) Some UARTs miss transmit interrupts when they are ran in
- full duplex mode. Code was added to detect missed
- interrupts and correct the situation. This condition would
- cause previous versions of MCOMM to quit transmitting until
- the transmit buffer was flushed or the port closed and
- reopened. This bug only showed up when operating in full
- duplex mode and only with some UARTs. Version 5.40 has been
- tested by running several megabytes of data through 8250,
- 16450, and 16550 UARTs in full duplex mode and never fails
- to detect a missed interrupt and correct for it.
-
- 2) The loop that loads bytes into the transmit FIFOs (or the
- transmit hold register if the UART isn't a 16550) updates
- the transmit buffer output pointer in a register. The loop
- is in the transmit interrupt handler and in previous
- versions of MCOMM5 the transmit interrupt handler code was
- called by the routine that started up the transmitter. If a
- transmit interrupt occurred while the transmit start up code
- was within this loop, the buffer output pointer could be
- corrupted. The result was scrambled output. This only
- happened if the transmitter was sent a character, allowed to
- empty, and then immediately sent another character. If only
- one character was sent at a time slowly, as in typing, or if
- the buffer was loaded up rapidly as in a program loop,
- everything was OK. If characters were sent in a program loop
- that put a "small" delay between characters (character
- pacing), it often failed. This was corrected by changing
- the transmit initiate routine so that it toggles the
- transmit interrupt enable bit in the UART's interrupt enable
- register to initiate transmit interrupts rather than calling
- the interrupt handler directly.
-
-
- ADDITIONS:
-
- An option was added to the async_open function to force FIFO
- mode off. Previously you could OR the ComBase parameter with
- 0x8000 and the code skipped over the check for a 16550 UART.
- If it was there and on, it stayed on. If it was there and off,
- it stayed off. You can now OR the ComBase parameter with
- 0x4000 to force the FIFOs to be off. If you don't OR anything
- with the ComBase parameter the FIFOs will be enabled if a 16550
- is present.
-
- To deal with problems with the Western Digital 16550, the ASYNC
- port structure is now one element longer. The new element is
- called 'IERVal'. Also options were added to allow you to open
- a port without enabling MSR interrupts, LSR interrupts, or
- both. See the notes on the WD16550 in ASYNC.DOC for more
- information.
-
-
-
-
- Conversion LIBs and a batch file were added to support Zortech
- C / C++. C++ header files and a C++ demo program for either
- Turbo C++ or Zortech C++ were added.
-
- Two new macros are now defined in COMM.H. They are:
-
- async_txcnt(ASYNC *port) -- returns number of bytes left
- in the transmit buffer still to
- be transmitted. Use async_txempty
- if you are waiting for 0 byte
- condition -- it's more efficient.
-
- async_rxfree(ASYNC *port) - returns bytes of free space left
- in the receive buffer.
-
-
- VIDEO FUNCTIONS:
-
- One minor bug was fixed. The rd_scrnd function returned an
- incorrect pointer if the function was called with a request to
- read 0 bytes. The result string was correct but the return
- value was wrong. It now returns the correct pointer.
-
- A new global variable was added to control whether a displayed
- backspace character was destructive or non-destructive.
- Previously it was always destructive and that still is the
- default. The variable is v_bksp. Setting v_bksp to 0 will
- cause the backspace character to be non-destructive.
-
-
-
-
- MCOMM 5.20 UPGRADE NOTES
-
- Major changes in this version of MCOMM are support for the
- 16550 UART's FIFO mode of operation, changes in the header
- files, new time-out functions, and updated documentation.
-
-
- 16550 UART SUPPORT:
-
- The async code now supports the 16550 UART's FIFO mode of
- operation. Key features are:
-
- 1) The async_open function automatically detects a 16550 and
- enables its FIFOs (can be optionally defeated).
-
- 2) Functions are provided to set the receiver FIFO trigger
- level and to control the maximum number of bytes to load
- into the transmit FIFO at one time.
-
- 3) The interrupt handler has been re-written to make most
- efficient use of the FIFO registers (they process
- multiple bytes per interrupt).
-
- ASYNC.DOC contains full descriptions of the new functions
- and changes made to the old functions. It also has some
- information on how to set the receiver FIFO trigger level
- and the 'maximum number of bytes to transmit to the FIFOs at
- one time' level to achieve the best results.
-
-
- HEADER FILE CHANGES:
-
- Due to stricter type checking of newer compilers, several
- functions that formerly were declared as taking 'char' argu-
- ments are now declared as taking 'int' arguments. This
- prevents getting an excessive number of warnings when pass-
- ing constants to these functions.
-
- The 'cdecl' keyword was added to the function prototypes to
- prevent problems when compiling with Microsoft's 'fastcall'
- option enabled. This keyword, as well as the 'near' and
- 'far' keywords, may not be compatible with your compiler.
- See MUSTREAD.DOC for more information.
-
- All the video functions are now prototyped in ANSIDRV.H.
- Before half of them were in ANSIDRV.H and the rest were in
- EXTRA.H.
-
-
- TIME OUT FUNCTIONS:
-
- The time-out functions have been changed to a new version
- that takes a pointer to a 'long' rather than a pointer to a
- TIMEOUT structure. The new functions are faster and work
- with longer timeouts than the old versions. Converting to
- the new style consists mainly of changing all occurrences of
- 'struct TIMEOUT' in your code to 'long'.
-
-