ZX Spectrum - проблема с RS232 (последовательный порт) - PullRequest
0 голосов
/ 25 сентября 2019

Я недавно завладел 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)

снимок экрана: https://i.stack.imgur.com/D0TMW.jpg

ИОСНОВНАЯ программа, которая открывает последовательный порт и печатает полученные символы на экран:

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 мс на символ?

...