• Serial port errors

    From Wall E. Weasel@21:2/121 to hyjinx on Thursday, September 30, 2021 21:44:32
    I've started a new thread as to not clutter up the existing one about multitasking.

    hyjinx wrote to Wall E. Weasel <=-

    Still useful, when I try and figure out why I have such issues with anything above 19200bps....

    Above 9600bps or above 19200bps?

    Can you describe what's happening in a little more detail?
    Specifically, are you getting dropped characters or are unexpected characters showing up?

    As far as I recall mainly corrupt chars (so that probably means both),
    but for example when you are expecting some ANSI, you get a lot of corruption. Some of the ANSI might display, but much of it will show
    the ANSI escape chars. Obviously once I reduce the errors (i.e. the
    baud), the ANSI displays fine.

    Do you have the ability to solder or know someone who does? For most of the conclusive testing you'll need what's called a loopback plug. One can be made for next to nothing using a solder-type DB-25F or DE-9F (whichever is appropriate) and a small amount of scrap wire. Around here these cost about $1.00 US at electronics suppliers. Look on the Internet for the wiring diagrams for Norton style loopback plugs or I can just tell you the pins to connect.

    Not surprisingly, you'll also need Norton diagnostics from the last DOS Norton Utilities package, version 8. Look on Winworld for this. I can also package up and send the diagnostics portion if you don't want to deal with installing anything.

    Things that can be going wrong on the PC side:

    1. Genuine data corruption. A bad pin, goofy line receiver, skewed reference clock, or bad UART can cause this. On Norton diags, run the System->Serial Port x test with the loopback plug installed. If the test passes, run it 50 or 100 times with the Burnin report function. Unselect everything except that serial port test and tell it how many iterations to run.

    This test also will tell you the health of the serial port's reference clock. Each test speed will show the actual bps rate used. A percent off one way or the other isn't any reason for concern. But if you're pushing 45,000 or 30,000 bps at 38400 there is something amiss. The test will pass but communication with other devices will be unreliable.

    2. No 16550A actually installed. You know your hardware better than I do so you'd know for sure. But just in case, get the file "FAST550.ZIP" and run the comsw.exe and is16550.com utilities.

    3. Your software isn't enabling the FIFO. Most software has a "shell to DOS" function along with a "FIFO on in shell" option. Load up your software, set the FIFO shell option, and shell to DOS. Run the 16550.exe utility in query mode with: "16550.exe <port #> ?" and make sure it's on.

    4. You've got a bugged 16550Ax UART. There are plenty around. I have one in an all-in-1 I/O IC in my ancient 486 laptop. :( The bugged UARTs continue to indicate data is available in the receive FIFO even after it's empty. The system reads another byte and gets garbage data. This is what I meant when I asked about unexpected characters showing up.

    5. The FIFO is being used but you're still getting data overruns.

    4 and 5 can both be tested with the FIFO test in Norton diags. Make a clean boot (no device drivers or TSRs) and run the Comprehensive->16550 x test for your port. It will set the FIFO trigger level to each of the 4 settings and test how many receive buffer bytes actually get used for a burst of data. Ideally the number of bytes used will equal the trigger setting. If it's consistently more, the system is not keeping up. If this test passes, boot with your normal config and try again. Run it several times in each config.

    A bugged FIFO will also show up in this test.

    You can do a less conclusive test using Terminate. Grab an early copy, version 1.41 or 1.51, that isn't (quite so) bloated like the later versions. Under async setup for your port you can manually select the FIFO trigger level. Set it to 4 and try the modem. Set it to 1 if you're still getting corruption.


    Also, I've been unable to make contact with your mailer to send the later version of pktmux.
    --- SBBSecho 3.00-Win32
    * Origin: The Basement Theory - Sciotoville, Ohio USA (21:2/121)
  • From Spectre@21:3/101 to Wall E. Weasel on Friday, October 01, 2021 17:09:00
    4. You've got a bugged 16550Ax UART. There are plenty around. I have one in an all-in-1 I/O IC in my ancient 486 laptop. :( The bugged UARTs continue to indicate data is available in the receive FIFO even after
    it's empty. The system reads another byte and gets garbage data.
    This is what I meant when I asked about unexpected characters
    showing up.

    Inneresting... I recall the original 16550s in the original DIP package being bugged. Anything 16550A was deemed to be post bug, I don't recall seeing
    any other actual faulty chips. By the time we got to 486 most were tending
    to be onboard and driven by PLCs. Now with these I recall some early driver detection issues... but no real chip bugs as such either...

    5. The FIFO is being used but you're still getting data overruns.

    Insufficient raw grunt, or bad handshaking could well be problems for buffer over run symptoms.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: The future's uncertain, the end is always near. (21:3/101)
  • From hyjinx@21:1/126 to Wall E. Weasel on Sunday, October 03, 2021 00:54:32
    Still useful, when I try and figure out why I have such issues with anything above 19200bps....

    Above 9600bps or above 19200bps?

    I'd have to go back and check but pretty sure I could get away with 19200bps with the Wimodem232, but only 9600 on the WiFi Modem from theoldnet.

    Do you have the ability to solder or know someone who does? For most of the conclusive testing you'll need what's called a loopback plug. One
    can be made for next to nothing using a solder-type DB-25F or DE-9F (whichever is appropriate) and a small amount of scrap wire. Around
    here these cost about $1.00 US at electronics suppliers. Look on the Internet for the wiring diagrams for Norton style loopback plugs or I
    can just tell you the pins to connect.


    I suck badly at Soldering. Maybe I could find a loopback plug on Ebay or something.

    2. No 16550A actually installed. You know your hardware better than I
    do so you'd know for sure. But just in case, get the file "FAST550.ZIP" and run the comsw.exe and is16550.com utilities.

    All I have for confirmation on this is what TERMINATE tells me, so I'll download it and chec it out.

    3. Your software isn't enabling the FIFO. Most software has a "shell to DOS" function along with a "FIFO on in shell" option. Load up your software, set the FIFO shell option, and shell to DOS. Run the
    16550.exe utility in query mode with: "16550.exe <port #> ?" and make
    sure it's on.


    I'll check that too.

    4. You've got a bugged 16550Ax UART. There are plenty around. I have
    one in an all-in-1 I/O IC in my ancient 486 laptop. :( The bugged
    UARTs continue to indicate data is available in the receive FIFO even after it's empty. The system reads another byte and gets garbage data. This is what I meant when I asked about unexpected characters showing up.


    I am going go buy a new serial port from my mate It's a floppy controller and I/O in one deal, brand new, he makes them.

    5. The FIFO is being used but you're still getting data overruns.

    4 and 5 can both be tested with the FIFO test in Norton diags. Make a clean boot (no device drivers or TSRs) and run the Comprehensive->16550
    x test for your port. It will set the FIFO trigger level to each of the
    4 settings and test how many receive buffer bytes actually get used for
    a burst of data. Ideally the number of bytes used will equal the trigger setting. If it's consistently more, the system is not keeping up. If this test passes, boot with your normal config and try again. Run it several times in each config.

    OK . thanks for that. Realistically for a 286, what is the max bps you think
    I should be able to push though a fully functional 16550AF?

    You can do a less conclusive test using Terminate. Grab an early copy, version 1.41 or 1.51, that isn't (quite so) bloated like the later versions. Under async setup for your port you can manually select the FIFO trigger level. Set it to 4 and try the modem. Set it to 1 if
    you're still getting corruption.


    Interesting! soundslike I need to downgrade!

    Also, I've been unable to make contact with your mailer to send the later version of pktmux.

    What do you mean contact with my mailer?

    Cheers,
    Al


    hyjinx // Alistair Ross
    Author of 'Back to the BBS' Documentary: https://bit.ly/3tRINeL (YouTube) alsgeeklab.com

    --- Mystic BBS v1.12 A46 2020/08/26 (Linux/64)
    * Origin: bbs.alsgeeklab.com:2323 (21:1/126)
  • From Wall E. Weasel@21:2/121 to hyjinx on Sunday, October 03, 2021 13:25:00
    hyjinx wrote to Wall E. Weasel <=-

    Above 9600bps or above 19200bps?

    I'd have to go back and check but pretty sure I could get away with 19200bps with the Wimodem232, but only 9600 on the WiFi Modem from theoldnet.

    It might be interesting (possibly even helpful) to know what each of these uses for their logic level I/O to RS-232 level shifting. Specifically if the MAX32xx series is being used on the theoldnet modem.

    Do you have the ability to solder or know someone who does? For most of the conclusive testing you'll need what's called a loopback plug.

    I suck badly at Soldering. Maybe I could find a loopback plug on Ebay
    or something.

    They are available on eBay or Amazon. I was just suggesting the absolute cheapest route since this isn't something you'll likely use more than once or twice. There are several 'standards' for these loopbacks so make sure you get the Norton configuration. The pin connections for each type are:

    DE-9: 1-4-6-9, 2-3, 7-8
    DB-25: 6-8-20-22, 2-3, 4-5

    If it was me and I did not have the ability to solder, I would instead purchase a breakout style connector like this one and wire it myself:

    https://www.adafruit.com/product/3122

    At least these are reconfigurable for different software types and you'll also have it available for the next weird thing that comes along.

    I am going go buy a new serial port from my mate It's a floppy
    controller and I/O in one deal, brand new, he makes them.

    This may help, it may not. If a FIFO problem or receiver line level issue is causing the data errors it likely will.

    5. The FIFO is being used but you're still getting data overruns.

    OK . thanks for that. Realistically for a 286, what is the max bps you think I should be able to push though a fully functional 16550AF?

    My ancient 4.77 MHz XT clone ran 38400 with a 16550A without problems. You will be at least able to get that and 57600 isn't out of the question.

    You can do a less conclusive test using Terminate. Grab an early copy, version 1.41 or 1.51, that isn't (quite so) bloated like the later versions.

    Interesting! soundslike I need to downgrade!

    Terminate tries to have every feature and capability possible and that makes it a little sluggish. Earlier versions were not AS bad but it's still no speed demon. On that 486 without a usable FIFO that I mentioned before, Terminate is one of the few software packages that can't work at 115200 bps without dropping bytes.

    Also, I've been unable to make contact with your mailer to send the later version of pktmux.

    What do you mean contact with my mailer?

    I tried to use BinkD to send you the file. It can't make contact with your mailer, it simply times out.

    --- MultiMail/Win v0.52
    * Origin: The Basement Theory - Sciotoville, Ohio USA (21:2/121)