> Both programs hanged however when I tried the Zmodem, just before
> finishing the file. Does someone have any idea why?

Probably a bit buggy zmodem implementation on either part. ZModem specs have
never been really standardized I believe. Anyways, YModem is all you need.


> I used an archive called INS-B5.LZH I downloaded recently from the
Internet
> to send from the PC to the MSX and back, and testing the archive on both
> computers returned no errors. Every time it unpacked nicely, even with a
> baud rate of 115200 bps, but I do have a 7Mhz MSX.

As I said, a higher bitrate shouldn't cause any errors. I can clarify this a
bit, first of all, the RS232 has a 15-byte buffer. So if its bytes are not
immediately read out (for example because the interrupts are disabled for a
short while), it can receive up to 15 bytes until it drops one. That's the
first ensurance. Second one is in the Fossil driver. The fossil driver
itself is fast enough to keep up with the RS232, even on 3.5MHz. However, it
has a (larger) internal buffer, which can get full if bytes aren't read out
by the user program fast enough. If that's the case, the Fossil driver tells
the RS232 to temporarily stall receiving bytes (hence, flow control).

That is the limitation you run in to on MSX, because since the driver is
already keeping the Z80 so busy with receiving the bytes from the RS232,
there is very little time left for the program itself to read them from the
Fossil driver's internal buffer (which by the way has to be done, very
inefficiently, byte by byte, the major disadvantage of the Fossil driver)
(let's not mention the bug :)). Anyways, that's why it can't keep up, so it
slows down. You can perhaps imagine this fast receiving and temporarily
pausing the receive process is putting a bit of an additional load on your
MSX, so that's why it's better to set the connection bitrate as low as
possible without slowing down the actual transfer. So if your transfer isn't
going faster than 5.6 kb/s, don't bother setting a bitrate higher than 56k.
This results in a slight speedup (compared to 115k).

To be complete, last but not least, Erix manually tells the driver to set
'do not receive' status when it accesses the disk drives. This because
during that process the interrupts are prolongedly disabled, which *would*
cause an overflow of the 15-byte RS232 buffer.


> Thanks all of you for the advice.

No prob ^_^.


~Grauw

_______________________________________________
MSX mailing list ([EMAIL PROTECTED])
Info page: http://lists.stack.nl/mailman/listinfo/msx

Reply via email to