My tcp fossil was working well with the Novell Client32 TCP/IP stack. So
then I tried the older 16-bit TCP/IP stack with the VLM client.
It dropped characters badly, but I doubted Novell was at fault. So I
started debugging, and discovered that the 16-bit stack is more likely
to do partial block writes. And it became obvious, without even looking
at PCBoard source code, that PCBoard fails to check for partial block
writes, or retry as needed.
The fossil write block function (19h) returns a value in register AX
telling how many characters of a block were written. The application
should check AX, and retry as needed. But PCBoard blindly assumes that
the block size requested in register CX always succeeds, thus ignoring
and dropping any data that remains.
I can work around the problem by modifying my fossil driver to do the
retries internally, releasing a timeslice before every retry. Another PCBoard mystery solved ...
yeah, it was written to work only in dos.
I wonder how it would work in msdos 7.1 thou
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 991 |
Nodes: | 10 (0 / 10) |
Uptime: | 120:15:48 |
Calls: | 12,958 |
Files: | 186,574 |
Messages: | 3,265,651 |