gpt4 book ai didi

dos - 并发 DOS + QEMU 通过并行端口模拟丢失数据

转载 作者:行者123 更新时间:2023-12-02 02:32:12 32 4
gpt4 key购买 nike

我有一个在并发 DOS 3.1 上运行的软件,我使用 QEMU 5.1 对其进行模拟。

在此程序中,有多个打印数据的选项。问题是到达我的主机的数据与发送的数据不对应。

启动qemu的命令:

qemu-system-i386 -chardev file,id=imp0,path=/path/to/file -parallel chardev:imp0 -hda DISK.Raw

因此,在我的 guest 并行端口上发送的输出被重定向到/path/to/file。当我从 CDOS 发送字符“é”时:

echo é>>PRN

CDOS 上使用的代码页是代码页 437,在此字符集中,字符 é 由 0x82 表示,但在我的主机上,我收到以下内容:

cp437 é -> 0x82     ---------> host -> x1b52 x017b x1b52 x00

所以我尝试了其他方法。我将字符“é”写入一个文件中,并使用 nc.exe(来自 brutman 和 libmtcp)发送该文件,并且使用 nc,该值保持为 0x82。

所以我的问题是,当我将数据发送到虚拟并行端口时会发生什么?我的数据什么时候会被转换?是Concurrent DOS 上的并行端口吗?是QEMU吗?我不知道如何通过 LPT1 正确发送数据。

我也尝试过这个:

qemu-system-i386 -chardev socket,id=imp0,host=127.0.0.1,port=2222,server,nowait -parallel chardev:imp0 -hda DISK.Raw

我可以很好地读取套接字,但与我在文件中写入时的输出相同,é 转换为 x1b52 x017b x1b52 x00。

最佳答案

字节序列“1B 52 01 7B 1B 52 00”使用 Epson FX 风格的打印机转义序列 ( there's a reference here )。具体来说,“1B 52 nn”是ESC R n,选择国际字符集,其中字符集0是美国,1是法国。因此整个序列是“选择法语字符集;打印字节 0x7b;选择美国字符集”。在此打印机标准的法语字符集中,0x7B 是 e-acute é。

这几乎可以肯定是 CDOS 打印机驱动程序,假设 PRN: 末尾的东西是 Epson 打印机,并发出适当的转义序列以在该类型的打印机上输出文本。

关于dos - 并发 DOS + QEMU 通过并行端口模拟丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64880078/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com