Conversation
|
Hi @Martin1701. Thanks so much for submitting this. Looking this over, I'm not really sure why there isn't a One question though. Does adding only the Also, can you change the comment about the 640KB |
|
Also, it might be better to instead do |
There was a problem hiding this comment.
@Martin1701 can you do the following:
- 6322: change
JNZ INT_14_POLL_LOOPtoJNS INT_14_POLL_LOOP, and remove the addedINC CX - 6250: Keep
OR AHas it was instead ofMOV AH. According to https://stanislavs.org/helppc/int_14.html, those send/recv calls are supposed to return the complete LSR status byte in AH in addition to the flag set if timeout. - in
INT_14_1andINT_14_2move the twoINC DX's to the beginning ofINT_14_POLL. This way the code byte space is saved and no need to move theVID_MODE_TBL. Also update the comment inINT_14_POLLfor Input to read "DX = 3FC Modem Control Register"
If you could give that a test on your machine and verify the fix, I'll merge it.
Thanks!
640KB
About
Firstly, I want to preface this that I'm an total amateur when it comes to 8088 assembly and only recently I got my first XT-class machine (Compaq Portable).

I needed to get serial communication running to transfer files from my pc, that's when I noticed DOS giving me weird timeout and read errors or repeated character reads (depending on the DOS version).
As you can see in this example character 'a' was received even when no characters were being sent:
Issue here is BIOS failing to set the error bit indicating timeout, so DOS interprets the read as valid.
Solution
I dug into the code and found that timeout and error handling is wrong and/or missing. Again I have no idea how DOS expects these errors to look, but in couple cases the actual code doesn't implement what comments are saying.
There is slight increase in size, thus space needed to be made in the constrained memory area. These modifications were done on v0.4.1 and are currently running on my machine without issues.
Hardware