Я уже Z80Card собрал, только сам Z80 никак не могу найти, а так собираюсь сделать весь орион по максимуму, плюс RS232 на тиньке 2313 приделать.
Я уже Z80Card собрал, только сам Z80 никак не могу найти, а так собираюсь сделать весь орион по максимуму, плюс RS232 на тиньке 2313 приделать.
Последний раз редактировалось Error404; 19.11.2013 в 16:57.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Последний раз редактировалось Error404; 22.05.2012 в 11:52.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Если эти программы работают с портом напрямую, то нужно знать алгоритм обмена, а если через драйвер, то можно организовать свой, кроме того в тиньке можно заделать буфер FI-FO, если конечно он нужен...
Более того, можно предусмотреть возможность смены прошивки.
Последний раз редактировалось alx32; 22.05.2012 в 14:21.
Консоль CP/M и xModem - напрямую. Алгоритм такой:
Kermit и stat/pip - через консольные п\п CP/MКод:; Отправка байта - запись в порт F764. ; Прием байта - чтение порта F764. ; Контроль состояния передачи - порт F765 на чтение: ; D7 - TX_Ready (0 = идет отправка байта, порт не готов. 1 = можно записывать следующий байт для отправки) ; D6 - RX_Status (0 = нет нового принятого байта. 1 = принят новый байт. После считывания байта из F764 этот бит сбрасывается в 0). ; Управление режимами - порт F765 на запись: ; D0, D1 - Скорости UART (4800 (умолчание), 9600, 19200, 38400) ; D6 - "1" = разрешает прерывание по приему байта. На ШД ставится 0FDh.
Последний раз редактировалось Error404; 22.05.2012 в 12:35.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
А прерывание как организуется (если не брать в расчёт 50Гц)?
А всётаки буфер придётся делать...
Периферийное устройство выдает импульс /INT и в какой-то момент (не помню диаграмм) на ШД выставляет 0FDh. Поскольку Z80 работает в режиме IM2, то считав с ШД код он перейдет на некий обработчик в памяти (в нашем случае в этом обработчике идет считывание байта с RS232 и помещение его во временный FIFO-буфер в ОЗУ Ориона). CP/M же читает данные уже из временного буфера (из ОЗУ Ориона) и готовность определяет по наличию в буфере данных. Так работает CP/M в режиме с поддержкой прерываний (режим INT)
На самом деле париться на счет прерываний нет смысла: та же CP/M и все программы поддерживают и режим POLL (опрос готовности RS-232 в процессе работы). Как показала практика с Орион-2010, никакого выигрыша режим прерываний не приносит (разницы по скорости нет, и "проглатывания" символов ни в каком из ражимов тоже нет).
Последний раз редактировалось Error404; 22.05.2012 в 13:44.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Значит с прерываниями можно не париться?
Кварц, скорее всего, будет 18.432, так как при тактовой процессора 5Мгц нужно успевать принимать и выдавать данные на ШД. Думаю скорости тиньки должно хватить, а биты состояния тинька будет выдавать напрямую через буфер типа ЛП8, с которого процессор их может считать в любой момент.
Ну да, как-то так
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Боюсь, как бы вейтить не пришлось...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)