Я недавно завладел ZX Spectrum +3 и пытаюсь заставить RS232 работать со спектром.Я собрал кабель (разъем типа «BT» <-> последовательный порт DB9) после вывода кабеля (кабель данных Spectrum 128 RS232) здесь .Другой конец кабеля подключен к ПК с помощью USB-последовательного адаптера.Я использую Moserial для Linux для связи со Spectrum.
Кабель работает, и я могу использовать LLIST
для печати программ BASIC через последовательный порт, но я не могу получить Spectrum для чтения изпоследовательный порт надежно - даже при включении аппаратного подтверждения связи (DTR / CTS) в Moserial.
Я написал простую программу на +3 BASIC для вывода на экран полученных символов.Кажется, первый символ получен в порядке, но остальные символы отброшены или повреждены.
Вот пример того, что выводит Спектр при попытке отправить «спектр zx» со скоростью 300 бод:
z[dot/box character]. VAL$ [box character]MOVE VAL$ VAL$ ?)
(кажется, VAL$
и MOVE$
- каждый отдельный символ в ПЗУ Spectrum)
снимок экрана:
ИОСНОВНАЯ программа, которая открывает последовательный порт и печатает полученные символы на экран:
10 FORMAT LINE 300
20 FORMAT LPRINT "r"
30 FORMAT LPRINT "e"
40 OPEN #4,"p"
50 PRINT INKEY$#4;
60 GO TO 50
Я обнаружил, что если я посылаю символы один за другим с ПК с достаточно большой задержкой между ними, я могуполучить гораздо более надежный выход из спектрума.Я проверил это с разными задержками, и 80 мс сработали лучше всего.Я действительно не хочу использовать этот подход в качестве решения - он очень медленный, и иногда некоторые символы сбрасываются.
Может ли это быть проблемой с самим спектрумом?Или я что-то упустил в моей настройке?Что-то просто не кажется правильным, я знаю, что есть программный загрузчик для спектра по последовательному каналу - так что, безусловно, спектр должен принимать последовательный ввод без задержки 80 мс на символ?