marwood@DMC-CRC.ARPA (G. J. Marwood) (12/29/87)
 
The CP/M system that I use is an Apple ][+ and PCPI Applicard.  While 
developing a new overlay and PCPI driver using interrupts, to avoid the 
usual character loss at high baud rates, I have come across a problem 
which seems to afflict the Apple/Applicard even without interrupts and at 
1200 baud.  At this baud rate, I experience no character loss on screen 
during normal operation.  However, if I invoke a capture file, I do experience
character loss at the place where the capture buffer is being written to disk 
(in this case it is the Applicard add-on Ramdisk).  THis loss occurs both on 
screen and in the captured file and, typically may be half a dozen or so 
characters.  It seems that this bug has always been present in the MEX software
that I have used, though I had not noticed it because I don't usually capture
files as large as the capture buffer (16-17K).  Another local user has done a 
similar test with MEX1.65B and a non-Apple CP/M machine and the loss does not 
occur.  It does not, therefore, seem to be a basic problem with MEX.  If any 
Apple/Applicard user has noticed this before and has any clues about solving 
the problem, I would be interested to know.
                                              Gordon Marwoodbridger%rcc@RAND-UNIX.ARPA (Bridger Mitchell) (12/31/87)
If mex is "smart", it should be polling the modem input status between each sector-write call in the flushing routine, and buffering any received characters for "catch-up" processing when the buffer-flushing is completed. [Ron Fowler: does mex do this?] But if not, it's likely that characters are arriving at the modem port before the buffer-flushing operation completes. Unless the arriving bytes are buffered before they reach mex, the first ones will be overwritten by the later ones, creating a gap in the input stream received by the mex software. The real time required to flush a buffer is system-dependent, probably dominated by the drive's step rate and the track number of the capture file, and also affected by the CPU clock rate. Another system with faster disks, a faster cpu, or even a differently located file, could have no lossage. On your system, if you capture to a ram disk, for example, there may be no lossage. Many systems have 1-3 byte buffering in the UART chip that receives the bytes from the modem; different systems use different UARTS. More buffering can be obtained by writing an interrupt-service routine for the modem ports; only a few bioses have such support, but it may be possible to write the mex overlay that way. --bridger