Орион-128/ZCard-II

Материал из Emuverse
Версия от 19:24, 7 июля 2008; Panther (обсуждение | вклад) (http://www.nedopc.org/forum/viewtopic.php?t=8161)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: Чистяков Владимир

Источник: http://www.nedopc.org/forum/viewtopic.php?t=8161

Конструктивно доработка выполняется путем удаления из основной платы (main board) центрального процессора КР580ВМ80 и подключения к оставшимся на плате контактным точкам небольшой дополнительной платы «Z80-card». На этой плате размещается новый центральный процессор (CPU) Z80, элементы обеспечивающие его работу и прерывания, доработанный узел диспетчера ОЗУ а также необязательный узел регистр бордюра. Кроме подключения доп. платы «Z80-card» на основной плате необходимо выполнить несколько доработок (разрезов и соединений). Для облегчения, доработку следует выполнять на уже работающей плате стандартного «Ориона-128», поэтапно в соответствии с описанной ниже методикой. Перед началом работы следует в совершенстве разобраться в предлагаемой схеме, полностью уяснить логику работы и назначение сигналов. Для начала разберемся в том, как же работает стандартный «Орион-128». В «Орионе-128» используется оригинальная идея «Специалиста», позволяющая обеспечить работу процессора в режиме так называемого «прозрачного ОЗУ», что означает, что ОЗУ доступно процессору всегда, видеоадаптер не мешает процессору обращаться для чтения или записи в ОЗУ. При этом реальное быстродействие программы определяется только быстродействием самого процессора, использованным тактом процессора и самой программой (т.е набором команд данной программы). Это очень большое преимущество, позволяющее создавать программы реального времени, т.к всегда можно рассчитать сколько машинных тактов будет исполняться любая часть программы (в некоторой степени компенсирует отсутствие прерываний). Для сравнения непрозрачное ОЗУ имеет ЭВМ «Ириша» прозрачность ОЗУ всего 30 %. Идея получения «прозрачного ОЗУ» на компьютерах с процессором КР580, по видимому, является нашей отечественной разработкой, и была применена для «Специалиста» А. Волковым (также в «Векторе-06»). «Орион-128» по сути является «Специалистом» со второй банкой ОЗУ и на мой взгляд было некрасиво со стороны авторов «Ориона» делать публикацию не указав что основная идея принадлежит А. Волкову (обычно это называют плагиатом). В чем же заключается идея А. Волкова? Как известно машинный цикл 580-го процессора при обращении к ОЗУ или ВУ (без WAIT) состоит из 4 машинных тактов, причем на такте T1 выдается сигнал SYNC. Чтение и запись осуществляются на тактах T2 и T3. Для регенерации видео-изображения видео-адаптеру достаточно одного обращения к ОЗУ за два машинных такта. Для реализации прозрачности, процессору для доступа к ОЗУ выделяется всего один такт, а именно T2. Причем для определения такта T2, используется сигнал SYNC, который всегда формируется в такте T1. Для этого сигнал SYNC просто записывается тактом F2 процессора в D-триггер (D13.2), т.е задерживается на 1 такт и полученный сигнал используется для разрешения процессору доступа к ОЗУ. Таким образом процессор имеет право читать и записывать в ОЗУ только во время такта T2, что не совсем корректно, т.к если сигнал /RD почти совпадает с тактом T2, то сигнал /WR начинается в середине T2 и продолжается в такте T3 (он как бы укорачивается для ОЗУ вдвое динамическим ОЗУ этого достаточно). Разработчики компьютеров на Z80 не могли воспользоваться этой идеей, т.к в нем нет сигнала SYNC, именно поэтому во всех компьютерах на Z80 используется WAIT, т.е ОЗУ непрозрачно. Обладая идеей реализации прозрачного ОЗУ для КР580, нам удалось реализовать на этом же принципе прозрачное ОЗУ в «Орионе» с процессором Z80. В предлагаемой схеме отсутствующий сигнал SYNC эмулируется из сигналов /MREQ и /RFSH с помощью простейшей схемы. Однако если в КР580 сигнал /RD длится только такт T2, то в Z80 сигналы /RD и /WR длиннее. Если для записи в ОЗУ это не существенно, то для чтения приводит к ошибке: такт T2 закончился, буфера ОЗУ закрылись, а Z80 еще читает данные с шины. В «Орионе» это усугубляется тем, что в отличие от «Специалиста» SYNC «защелкивается» более ранним сигналом (не F2,т.е и буфера закрываются раньше), а также отличающейся логикой управления буферами. Из-за этого при установке Z80 на «Орион» приходится дополнительно задерживать сигналы управления буферами ОЗУ, а именно на 9 «ноги» буферов ОЗУ D49 и D50 вешать емкость 2500-3000 пф на землю (на «Специалисте» и «Орионе-Z» это делать не требуется). В качестве такта Z80 (CLOCK) используется сигнал F2TTL (т.е F2 с уровнем 5В). Узел прерывания аналогичен узлу запроса немаскируемых прерываний «Зоновского Синклера».

Обратите внимание, что плата формирует сигналы чтения и записи в ОЗУ (MEMW и MEMR) неинвертированные. Сигнал MEMR соответствует сигналу DBIN КР580, а что касается сигнала /WR его КР580 формирует уже инвертированным, поэтому на основной плате следует исключить лишний инвертор D59.2 (не указанные выводы D59.3 это контакты 5 и 6). Сигнал SND с платы Z80-card — это звук, он соответствует сигналу INTE КР580. Сигналы ROM1 и ROM2 это сигналы для чтения основного и дополнительного ПЗУ по адресу F800, подключаются к 20 ногам этих ИМС (если не планируется ставить 2-е ПЗУ, то и не надо трогать 20 вывод ПЗУ, при этом всегда будет «одно» ПЗУ F800). На микросхеме D2 реализован дополнительный системный регистр (OUT FB), управляющий прерыванием и адресацией ОЗУ. ИМС D4 мультиплексор обеспечивающий формирование логических адресов A15, A16, A17. D4/15 подключите к земле, а D4/2 к сигналу X15 (на ошибочных схемах здесь 5В). Сигналы X15, X16 и X17 это физические адреса. X15 формируется процессором, а X16 и X17 это сигналы из регистра управления банками ОЗУ D18.1 (OUT F9). Сигналы A16 и A17 должны подаваться на основную плату вместо сигналов снимаемых ранее с D18.1/15 и D18.1/16 соответственно (т.е отрезать эти выводы от печатных проводников). Необходимо также подать на плату сигналы инверсный сброс (/RES) и кадровые синхроимпульсы (KSI). Сигналы F8, F9, FA это «чип-селекты» системных регистров, они подаются на основную плату вместо сигналов формируемых ранее D27 (ИД4), а именно D27/9 F8, D27/10 F9, D27/11 FA. ИМС D6 регистр бордюра; сигнал V1 используется для индикации (светодиод «рус/лат», важно для владельцев МС7007). Для работы с Z80-card вы можете использовать Мониторы-2 или 3, однако при этом не будет звуковой индикации (в Z80 нет сигнала INTE, кстати это полный «идиотизм» использовать прерывания для звука). Поэтому целесообразно подпрограмму BEEP (F83F) в Мониторе переделать (это очень просто сделать, новая п/п 14 байт, вместо 27 у «Ориона»). У нас имеется вариант Монитора-3 (для обоих клавиатур) для доработанного таким образом «Ориона». В нем, благодаря замене 3 байтовых переходов 2-х байтовыми, удалось разместить, кроме собственно Монитора-3 еще и загрузчик НГМД, а также доработать п/п-мы F836/F839 (они работают теперь со всем ОЗУ и не «теряется» по 4к в каждой банке впустую). Поэтапный порядок переделки

1. Включите свой «Орион-128» и посмотрите как он работает (больше он так работать не будет). Выключите питание и с помощью больших кусачек выкусите процессор КР580 (больше он вам не понадобится). Не повредите печатную плату

2. Удалите печатные проводники от контактов КР580 с номерами: 11, 13, 14, 18, 21, 22, 23, 24 и 28. Эти сигналы не требуются Z80, через эти контакты на плату Z80-card будут подаваться другие сигналы.

3. Удалите перемычку D59/4-D59/5 и соедините D59/5 с 18 контактом D19 (КР580).

4. Резистор R10 замените на 220 ом и вместо +12 вольт подайте на него +5 вольт (F2TTL). Резистор R11 можно совсем удалить (см. ниже).

5. Соедините D18.2/8 с D19/13 (/RES)

6. Подпаяйте проводники от Z80-card ко всем 40 контактам D19 (КР580)

7. Между 9 и 10 контактами буферов ОЗУ (ВА86) включите емкости 2700 пф

8. На 4 ногу DA1 (УД6) вместо −5 вольт подайте землю.

9. Установите в панель ПЗУ Монитор-1 или тест-ОЗУ (Радио, 2, 1991) и подайте питание (теперь только +5 вольт).

Добейтесь работы Монитора-1 или работы теста ОЗУ. Если плохой сброс увеличить емкость C2 до 1,5-2 мкф (керамич.). Иногда требуется подобрать емкость в формирователе сигнала «SYNC» (270 пф) и емкости для задержки «OE» 580ВА86. Монитор-3 (2) не будет пока работать, т.к он использует команды OUT для работы с ВУ, а Z80 в отличие от КР580 выставляет адреса внешних устройств только на младших адресах. Можно реализовать второй вариант «подключения Z80» (лучший) для чего переключить такт (CLOCK) с «F2TTL» на «F1TTL», в формирователе SYNC убрать диф. цепочку (закоротить емкость 270 пф, убрать резистор 1к) и на плате «Ориона» у триггера D13 подключить R-вход (13 нога) к D-входу (12 нога). При этом не требуется подключать емкости на «OE». К сожалению плата Z80-card выполнена по старому (Специалистовскому) варианту, но как видите отличие этих вариантов весьма незначительно и поэтому выбор за вами.

Чтобы работали команды OUT выключите питание и выполните:

10. Отрезать у D27 печатные проводники от контактов: 9, 10, 11 и эти печатные проводники соединить с сигналами F8, F9, FA на разъеме X1 платы Z80-card. 11. Установите Монитор-3, включите питание и добейтесь работы компьютера в полном объеме. Все должно работать также как и до переделки.

А теперь выключите питание и сделайте последний шаг:

12. Отрезать D18/15 и D18/16 от печатных проводников и эти печатные проводники соединить с D19/23 и D19/21 соответственно (A16 и A17). Сами же выводы D18/15 и D18/16 соединить с D19/24 и D19/22 соответственно

13. Отрезать у ПЗУ D22 20 контакт от печатного проводника и соединить с D19/11 (ROM1). Если у вас уже есть наша версия расширенного BIOS, то на ПЗУ с маркировкой 0, напаяйте ПЗУ с маркировкой 1. Все контакты кроме 20 в «параллель». Установите это «удвоенное ПЗУ» в панель и соедините D19/8 (ROM2) с отогнутой 20 ногой верхнего ПЗУ. Если у вас еще нет нашей версии BIOS, опять поставьте свой «старый» Монитор (2 или 3) и включайте питание. Добейтесь полной работы компьютера, проверьте возможности вывода звука, коммутации банок ОЗУ как в режиме «128» (сигнал MZ=1), так и в режиме «Z» (MZ=0). Учтите, что сигнал MZ (это D2/15) по сбросу равен 0, т.е по сбросу компьютер находится в режиме «Z». Для работы со всеми старыми программами необходимо записать в порт FB (для настройки можете это сделать аппаратно) в разряде D7 единицу (доработанный Монитор это делает при инициализации). После того, как убедитесь в полной исправности переходите к пункту 14.

14. Для того, чтобы работали некоторые «старые» игры, переключающие регистры F8, F9, FA командой «STA», можете установить вместо 155ЛА7 ИМС 155ЛИ1 (см.схему). Эта микросхема обеспечит «попадание» в системные регистры, командами STA (F8/F9/FA), и тем самым работу всех «корректных» программ. Так как программ с «неприличными» командами типа (OUT F4, OUT F2) всего две: «Moon-fox» и «Silent-service» (авторский Бэйсик делает OUT 0F), то делать дополнительные аппаратные затраты только ради них бессмысленно.

15. Подключите контроллер НГМД и проверьте его работу. Надежность работы должна значительно повыситься. Если все в порядке выключите питание и переходите к самому важному пункту 16.

16. Идите на почту и отправьте мне (в конверте) вашу «благодарность» (в размере 50 руб). В ответ вы получите каталог программ адаптированных для «Орион-128» от «Синклера».

PS: на доработанном таким образом «Орионе» будет прекрасно работать CP/M-80 использующая BIOS версии SP-Computer Club-а (1990). Данная CP/M в отличие от т.называемого «авторского» варианта CP/M работает в дополнительной странице ОЗУ, там же где расположен «экран атрибутов цвета» (это целесообразно, т.к при этом для CP/M используется 60к, при этом работают все программы; трансляторам с языков высокого уровня мало 48к). Однако при этом в CP/M нельзя использовать цвет (это конечно не страшно, т.к CP/M не поддерживает ни графику ни цвет и в CP/M нет цветных программ). Доработанный таким образом «Орион» легко позволяет устранить этот недостаток т.е можно «отдать» для CP/M 60к ОЗУ и в то же время иметь цвет. Для этого достаточно немного изменить дисковый загрузчик и подпрограмму F300 (используемую CP/M для вызова п/п-м из ПЗУ F800). Дисковый загрузчик должен перед началом работы включить экран N4 (0-2FFF), включить режим «Z» и по адресам 0-7FFF скоммутировать старшую страницу (32к) из основной банки. Таким образом мы создаем для CP/M непрерывное ОЗУ 60к и в то же время возможен цвет (графика экрана 0-2FFF основная банка ОЗУ, цвет там же но в дополнительной банке). Следует сразу же заметить, что вводить цвет и графику в программы, написанные для CP/M, можно только корректно т.е расширяя управляющие коды дисплея («искейп»-последовательности), а ни в коем случае не так как это делают авторы «Ориона» в своих программах (они непосредственно «лезут» в экран для того, чтобы нарисовать простейшие рамки, вместо того, чтобы использовать «псевдографику», как это делается всегда). При этом при запуске программы подгружается расширение BIOS (п/п-мы вывода на консоль в ПЗУ это F809h), которое обеспечивает обработку дополнительных упр. кодов (управление цветовыми режимами, цветом символов и фона, загрузкой знакогенераторов/фонтов; можно посмотреть как это делается в драйвере вывода «Ириши»). Некоторые из этих функций обеспечивает расширенный BIOS (2 ПЗУ F800) для описанного варианта доработки «Ориона-128». Получение цвета и CP/M на 60к на недоработанном «Орионе» возможно только после установки дополнительной 3-ей банки ОЗУ (2 ИМС диспетчера ОЗУ явно дешевле чем 8 шт. 565РУ5). Таким образом как с точки зрения игр, так и использования «Ориона» для деловых применений указанная доработка является абсолютно необходимой и вопрос заключается не в том, стоит ли дорабатывать «Орион» по данной инструкции, а в том как это сделать скорее. Для получения доработанной версии BIOS CP/M и документации о других апп. доработках звоните: тел:(812)-106-35-24 (17.00-23.00) или пишите: 192238 Санкт-Петербург а/я 175. Чистяков Владимир, Январь 1992.