VOGONS


First post, by geronimo1960

User metadata
Rank Newbie
Rank
Newbie

hi, I'm using dosbox to run dos serial communication program.
Program works wrong.
The program uses COM1 9600bps, when receives a new message the DOSbox status windows displays
Serial1: Errors occured: Framing 0, Parity 0, Overrun 6 <IF0:2>, Break 0
so I try to set FIFO Enable in 3FA register but the result is the same: overrun error occurs.
Reply if you want, Thanks in advance

Reply 1 of 6, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Does it work anyway? Some software seems to lose data on purpose.

If not, either your program somehow (irq correct?) misses the presence of data or is slow at responding to it. In the latter case try the rxdelay parameter (serial1 directserial realport:comx rxdelay:10) and/or increase the CPU cycles. Maybe experiment with the rxdelay value too.

1+1=10

Reply 2 of 6, by geronimo1960

User metadata
Rank Newbie
Rank
Newbie

with rxdaly:10 the program runs better, but overrun error simtimes happens
I think that serial receive char is slow, because if message received is short (10 char) overrun error doesn't happen, but if message is longer (50 char) overrun error happens
I have increase CPU cycles until 200000, but problem is still present
Are there some other params to set to pass over the problem?
Help me. Thanks in advance

Reply 3 of 6, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Increasing the CPU cycles that much won't help you either. Open your task manager and increase the cycles only so much that DOSBox doesn't reach 100% (or 50% for dualcore CPUs) CPU usage. Also try to set core=dynamic which usually lets you set the cycles higher.

1+1=10

Reply 4 of 6, by geronimo1960

User metadata
Rank Newbie
Rank
Newbie

No, I try to increase CPU cycles but the problem happens again.
The speed response in serial protocol is too slow. With a message received long 50 bytes the protocol respose is sent after 1 second about.
The same protocol under DOS system replays in 10 msec about.
As attach the dos serial program
use COM1 9600 bps 8bit parity none
The program send tha char ENQ (05 Hex) and wait a messagge length 54 bytes: the first is set to 01Hex (SOH) the oter to 00Hex.
After received this replay the program send char ACK (06 Hex)
Do yuo have other solution? Thanks

Attachments

  • Filename
    STARTALL.EXE
    File size
    19.21 KiB
    Downloads
    368 downloads
    File license
    Fair use/fair dealing exception

Reply 5 of 6, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

h-a-l-9000 gave you the best solution: Only increase CPU-cycles until your Task Manager shows 90% (or 45%). If it shows 100% you are in trouble. And set core=dynamic.

Did you follow his advice?

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32

Reply 6 of 6, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

What part is too slow? the ACK coming out after receiving the data?
This program seems to expect a FIFO. The official DOSBox does not emulate one, but I have a build with FIFO on my homepage (button below).

1+1=10