我最近掌握了ZX Spectrum +3,并正在尝试使RS232与该频谱配合使用。我已经在电缆的针脚(Spectrum 128 RS232数据电缆)here上建立了电缆(“ BT”型连接器 DB9串行)。电缆的另一端使用USB串行适配器连接到PC。我在Linux上使用Moserial与Spectrum通信。
电缆工作正常,我可以使用LLIST
通过串行端口打印BASIC程序,但是即使在Moserial中启用了硬件握手(DTR / CTS),我也无法可靠地从串行端口读取频谱。
我用+3 BASIC编写了一个简单的程序,将接收到的字符打印到屏幕上。似乎第一个字符已收到,但其余字符被删除或损坏。
这是频谱尝试以300波特发送“ zx频谱”时输出的示例:
z[dot/box character]. VAL$ [box character]MOVE VAL$ VAL$ ?)
([VAL$
和MOVE$
在Spectrum的ROM中似乎都是单个字符)
截屏:
和打开串口的BASIC程序,并将接收到的字符打印到屏幕上:
10 FORMAT LINE 300
20 FORMAT LPRINT "r"
30 FORMAT LPRINT "e"
40 OPEN #4,"p"
50 PRINT INKEY$#4;
60 GO TO 50
我发现,如果我从PC发出字符,并且它们之间有足够长的延迟,那么我可以从Spectrum获得更可靠的输出。我以不同的延迟对此进行了测试,而80ms的效果最佳。我真的不想使用这种方法作为解决方案-它的运行速度非常慢,有时会删除某些字符。
这可能是Spectrum本身的问题吗?还是我的设置中缺少某些内容?似乎有些不对劲,我知道有一个用于串行频谱的程序加载器-因此,可以肯定的是,该频谱必须能够接受串行输入,每个字符的延迟不超过80ms?]
在具有接口1的48k上格式“ b”; 9600然后,频谱以9600波特的速率在8位数据中工作。
在您的代码中,我看不到它将如何工作。
我最诚挚的问候。