home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 14
/
CD_ASCQ_14_0694.iso
/
maj
/
4151
/
update.doc
< prev
next >
Wrap
Text File
|
1994-03-22
|
16KB
|
320 lines
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'.