О Z80 на "Орионе-128" — различия между версиями

Материал из Emuverse
Перейти к: навигация, поиск
(http://www.nedopc.org/forum/viewtopic.php?t=8161)
 
м (авторское редактирование)
 
Строка 1: Строка 1:
 
{{ДИ|Автор=В.Чистяков|Источник=http://www.nedopc.org/forum/viewtopic.php?t=8161}}
 
{{ДИ|Автор=В.Чистяков|Источник=http://www.nedopc.org/forum/viewtopic.php?t=8161}}
  
 
<pre>
 
 
В.Чистяков о Z80 на «Орионе-128»
 
В.Чистяков о Z80 на «Орионе-128»
      --------------------------------
 
.....Оказалось, что при адаптации гораздо удобнее было бы иметь сегментирование по
 
16К, т.е возможность коммутировать ОЗУ по адресам 0-4000H.  Дело в том, что у
 
"Синклера" в этих адресах располагается ПЗУ, а из-за архитектуры "Ориона", ОЗУ
 
экрана (при цвете) всегда присутствует в адресном пространстве.  Поэтому  при
 
адаптации игр (для того, чтобы экран не мешал размещению собственно программы
 
"Синклера") на "Орионе" включается экран N4 (0-2FFF), т.е вместо ПЗУ Синклера.
 
Итак
 
весной 1992 г. я установил "минимальный вариант доработки", а именно: требуется
 
только наличие самого процессора Z80 и прерываний аналогичных  ZX-Spectrum -
 
50 Герц на вход INT, включаемых битом D6 порта 0FBH. ......
 
      -----------------------
 
  
  Далее описывается "стандарт" для доработанного "Ориона-128", которого будут
+
Первоначально процессор Z80 в ОРИОН устанавливался просто взамен процессора КР580ВМ80, без доработок архитектуры. Замена процессора при монтаже Z80 в посадочное место процессора ВМ80 требует больших коррекций на плате, много разрезов печати и дополнительных проводов. Основным выигрышем при Z80 считалась возможность турбировать ОРИОН, а также бОльший выбор CP/M-компиляторов ЯВУ.
придерживаться в SP-Computer Club-е при создании  новых  программ  в 1993 г.
+
Прошу не думать, что мы навязываем кому-то из пользователей  "свои стандарты" -
+
мы не авторы "Ориона", не публикуемся в журналах и не имеем  таких прав. Наши
+
доработки лишь - предложения на ваше рассмотрение: вы можете их отвергнуть или
+
одобрить: выбор Ваш. При принятии решения учтите, что такая доработка совмести-
+
ма с "классическим" вариантом "Ориона" (насколько возможно),  а  те несколько
+
программ, которые работают с ОЗУ командами IN/OUT давно  доработаны  для Z80.
+
  Основная цель предлагаемых усовершенствований - обеспечить максимально легкую
+
адаптацию программ от "Синклера", облегчить доступ к ОЗУ и поднять быстродейст-
+
вие "Ориона" а также немного улучшить его муз.возможности. Вы можете выполнить
+
лишь часть этих переделок, потеряв при этом также "совместимость" с какой-то
+
частью наших программ.  
+
  
1. Центральный процессор - Z80.  Любой  процессор, обеспечивающий  требуемое
+
Вскоре выяснилось, что архитектура ОРИОНА имеет недостатком то, что при цвете в обоих страницах памяти располагается экранное ОЗУ, что оставляет для программ пользователя всего 48К сплошного ОЗУ. Для написанных любителями программ этого достаточно, но большая часть CP/M программ и все компиляторы требуют не менее 60 кб сплошного ОЗУ. Когда осенью 1991 изготавливалась партия печатных платок, предназначенных для упрощения замены процессора на Z80, то решено было одновременно разместить на этой платке, названной Z80CARD, дополнительный диспетчер памяти позволяющий одновременно решить проблему с цветом для CP/M.
  быстродействие. Возможно также применение  процессора  Z80H, хоть про него
+
  и написано в справочниках, что он имеет сокращенный набор команд (мы прове-
+
  ряли на "Синклере" -  игры работают,  возможно нет команд  типа  "OTIR").
+
2. Быстродействие - не менее 4 МГЦ. Следует различать быстродействие (т.е реа-
+
  льный такт) и такт процессора. В случае если нет WAIT, реальный такт и такт
+
  процессора равны. Обычно мы указываем, если адаптированная игра будет слиш-
+
  ком медленно работать  на 2.5 МГЦ (напр: цветной SPACE RAIDERS сделаный на
+
  прерываниях  всего за  3  часа  работы -  страшный  "тормоз").  
+
3. Прерывание NMI  пока  не используются. Опробован режим "эмуляции Синклера"
+
  по прерываниям NMI,  с теневой ПЗУ -  этот  вариант доработки оставлен "на
+
  смертный час Ориона": первые опыты показали - скорости в 5 МГЦ достаточно,  
+
  но реализация "режима эмуляции" целесообразна  лишь на новой плате - иначе
+
  будет просто 3-этажная "макетная плата".  Идея эмуляции не нова: "ПОИСК-1"
+
  (советский плагиат первого Amstrad PC) эмулирует таким образом на графичес-
+
  ком экране текстовый адаптер MDA. По каждой записи в экран "Синклера" (4000-
+
  4AFF) вызывается NMI, п/программа NMI по 66-му адресу определяет, "куда хо-
+
  тели записать" и записывает аналогичный байт (байты) в экран "Ориона", вклю-
+
  ченный с  0-го  адреса (экран 4). Однако из-за отличия клавиатур нужно или
+
  дорабатывать программы  (дорабатывать  только клавиатуру совсем легко) или
+
  эмулировать по прерыванию NMI, как и экран. Этот текст написан для того, кто
+
  выполняя доработки "Ориона", решит "занять" NMI, чем-то "менее-серьезным",
+
  например для реализации многозадачности (это  нецелесообразно,  пока у Вас
+
  нет RSX-11, UNIX или хотя-бы MP/M-80). Давайте сохраним это  прерывание до
+
  "последнего часа Ориона",  как  его  последний  шанс  (эмулятор - 9 ИМС).
+
4. Прерывание INT. Отключаемое прерывание по кадровому "бланку" т.е с частотой
+
  50 Герц. По сбросу выключено поступление импульсов на вход INT и поэтому
+
  даже после команды "EI" прерывание не наступает. Для разрешения прерываний
+
  в порт по адресу FB надо вывести байт с установленной единицей в 6 разряде.
+
  В связи с прерыванием стоит упомянуть о необходимости привязки шины данных
+
  процессора на "+5В" резисторами в 10К. Игры сделанные до марта 1993 (кроме
+
  GALAXY) этого не требовали; но все последующие будут считать, что при обра-
+
  ботке INT в режиме 2, с шины читается FF. Резисторы - до ШФ, к ногам CPU.
+
5. Звук. Выводится двумя способами: TOGGLE OUT FF, PORT OUT FE/D4. Первый спо-
+
  соб удобен при адаптации программ со звуком "в стиле РК-86" (DI/EI) и позво-
+
  ляет "тратить" меньше тактов процессора на звук, а второй - звук "Синклера",
+
  позволяет  при  адаптации  не  адаптировать  вывод звука вообще. На платах
+
  Z80-CARD, версии 1993 г. имеются оба "звука".  На  старых платах 1991 года
+
  проще всего ввести звук по порту FE, используя имеющийся  "порт FE" - ИЕ7.
+
  Подключите вместо D7 к 9 ноге ИЕ7 - D4, а соотв.выход ИЕ7 через резистор на
+
  эмиттерный повторитель для звука. Если Вы не ставили ИЕ7, то для организа-
+
  ции звука FE можно использовать тот-же триггер звука FF (используя R/S вх).
+
  Наличия "бордера" не требуется. В некоторых играх (адапт.В.Смирнова) он под-
+
  держивался. В дальнейшем будет считаться, что у Вас "бордера" - нет, но в
+
  тех программах, где звук не переделывается на FF - использование BORDER-а
+
  получится  автоматически  (т.к  в  "Синклере" он такой-же).
+
6. Освобождение ОЗУ в области выше F400. Так как все, самые  лучшие программы
+
  как раз работают в старших адресах ОЗУ, где у "Ориона"  ПЗУ  и ВУ мы ввели
+
  возможность иметь ОЗУ по этим адресам. При этом аппаратные переделки мини-
+
  мальны (1 вентиль от 155ЛИ1 и провода). Для отключения ПЗУ/ВУ используется
+
  разряд D5 порта FB (на старых схемах сигнал XROM).  При  выводе  единицы в
+
  этот разряд по адресам выше F400 оказывается ОЗУ 0-й банки памяти (естест-
+
  венно ПЗУ и ВУ становятся при этом недоступны). Чтобы получить доступ к ВУ
+
  необходимо "вернуть их назад" выполнив команду OUT FB с 0 в  5-м  разряде.
+
  К марту 1993 только одна  программа  "KRAKOUT"  требует  такой  доработки.
+
7. Диспетчер ОЗУ. Диспетчер ОЗУ по 32К, как указано выше был неудобен в работе
+
  и был отвергнут программистами. Поэтому его пришлось доработать, обеспечив
+
  коммутацию по 16К в области  адресов  0-3FFFH.  На плате Z80-CARD "образца
+
  1991 года" легко выполнить такую доработку. Как  ее сделать становится по-
+
  нятно, если сравнить схемы этих двух плат. Естественно изменилось и назна-
+
  чение разрядов D0-D4 порта FB: сигналы SS0 и SS1  определяют  номер 16-ти
+
  килобайтового участка, а BS0-BS1 номер банки ОЗУ,  включаемого  в  область
+
  коммутации с 0000 по 3FFF. Естественно, как и ранее работа диспетчера отклю-
+
  чается записью единицы в 7-й разряд порта FB. Однако так,  как большинство
+
  пользователей вообще не имеет диспетчера, в играх он не будет использоваться
+
  Некоторые програмисты и пользователи, поддерживающие отношения со мной (это
+
  около 15 человек) переделали Z80CARD под коммутацию по 16К, и используют дис-
+
  петчер для работы. Возможно, что платы Z80CARD-II будут выпущены в Ижевске.
+
8. Таймер 580ВИ53. Стоит по адресу F740-F743. Такты каналов 0, 1, 2 - 2 МГЦ,
+
  причем эти 2 мГц удобно брать от контроллера НГМД (т.к такт CPU - меняется).
+
  Однако таймер 580ВИ53 не Z80, его наличие не обязательно,  его не подержи-
+
  вают производители программ, поэтому для "звукопроизводства" более перспек-
+
  тивен MSX SOUND CHIP - AY8912. К сожалению пока нет возможности (нет оплаты
+
  программиста) сделать подержку AY8912, а обьявлять  стандарты  без этого -
+
  обман пользователей (пусть этим занимаются другие).  Что касается ВИ53, то
+
  в начале 92 г. А.Балдин сделал муз.редактор (адрес F740),  но больше ника-
+
  кие программы его не используют.
+
9. Обьем ОЗУ. Не менее 128К.
+
          Чистяков Владимир, Санкт-Петербург, март 1993 г.  
+
  
 +
Диспетчер применённый на этой платке позволял в окне 32К в адресах 0...7FFF включать любой из 4-х участков памяти в 32К из общей памяти в 128К. Это позволяло не только доступ к участку ОЗУ в 6 кб закрытому портами и ПЗУ, но и позволяло иметь одновременно цвет и сплошное ОЗУ в 60К для программ. В 1992 году для ОРИОНА на Z80 было адаптировано несколько игр от ZX-Spectrum. Выяснилось, что при адаптации ZX-игр гораздо удобнее иметь сегментирование по 16К, т.е возможность коммутировать ОЗУ по адресам 0-3FFFH (т.к в ZX-Spectrum именно в этих адресах располагается ПЗУ). Поэтому в 1993 году схема платки для Z80 была изменена на более оптимальную с окном диспетчера в 16К.
 +
 +
......
 +
 +
При установке Z80 по любой схеме учтите, что такая доработка совместима с базовым вариантом ОРИОНА насколько позволяет совместимость процессоров (в основном это касается вывода звуков, бейсика и игры Silent Service для ВМ80, - она использует IN/OUT для доступа в ОЗУ).
 +
 +
Основная цель предлагаемых усовершенствований - обеспечить максимально легкую адаптацию программ от ZX-Spectrum, облегчить доступ к ОЗУ и поднять быстродействие ОРИОНА, а также, возможно, улучшить его музыкальные возможности. Вы можете выполнить лишь часть этих переделок, потеряв при этом совместимость с какой-то частью новых программ.
 +
 +
1. Центральный процессор - Z80. Для работы на такте 2.5 МГЦ годится любой Z80. В том числе и ГДР-овский UB880, но его лучше не ставить, если планируется турбирование. Как показала практика, обычные Z80A предназначенные для работы на такте до 4 МГЦ, без проблем работают в ОРИОНЕ на удвоенном такте в 5 МГЦ.
 +
 +
2. Быстродействие - желательно не менее 3.5...4 МГЦ реального такта. Следует различать быстродействие (т.е реальный такт) и такт процессора. В случае, если нет WAIT, реальный такт и такт процессора равны. Качественно адаптированные игры (т.е с переделанным экранным алгоритмом) нормально работают и при 2.5 МГЦ, но новые игры адаптированные более простым способом на прерываниях при клоке в 2.5 МГЦ заметно тормозят.
 +
 +
3. Прерывание INT. Отключаемое прерывание по кадровому бланку, т.е с частотой 50 Герц. По сбросу выключено поступление импульсов на вход INT и поэтому даже после команды "EI" прерывание не наступает. Для разрешения прерываний в порт по адресу FB надо вывести байт с единицей в 6-м разряде. В связи с прерываниями IM2 стоит упомянуть о необходимости привязки шины данных процессора на "+5В" резисторами в 10К. Игры сделанные до марта 1993 (кроме GALAXY) этого не требовали (это решалось программно); но все последующие будут считать, что при обработке INT в режиме 2, с шины читается FF. Резисторы - до ШФ, к ногам CPU.
 +
 +
4. Прерывание NMI пока не используются. Эмуляция Синклера по прерываниям NMI резервирована на будущее, хотя для этого понадобится скорость в 5 МГЦ и более. К тому же реализация "режима эмуляции" целесообразна лишь на новой плате ОРИОНА - иначе будет просто 3-этажная "макетная плата". Идея эмуляции такая. Несколько раз в секунду вызывается NMI и подпрограммой визуализации экран ZX копируется в экран ОРИОНА, картинка становится видимой. Кроме доп.узла для NMI добавляется и ZX-клавиатура в 40 клавиш (или требуется дорабатывать программы, что правда на порядок проще, чем дорабатывать вывод на экран). Это упоминается на случай, если кто-то выполняя доработки, решит занять NMI чем-то менее-полезным (например, для реализации многозадачности).
 +
 +
5. Звук. Выводится двумя способами: TOGGLE OUT FF, PORT OUT FE/D4. Первый способ удобен при адаптации программ со звуком РК86 (DI/EI) и позволяет тратить меньше байтов и тактов процессора на звук, а второй - звук "Синклера", позволяет при адаптации не адаптировать вывод звука вообще. На платах Z80CARD новой версии 1993 года имеются оба эти "звука". На старых платах 1991 года проще всего ввести звук по порту FE используя имеющийся "порт FE" 155ИЕ7. Подключите вместо D7 к 9 ноге ИЕ7 - D4, а соотв.выход ИЕ7 через резистор - на эмиттерный повторитель для звука. Если Вы не ставили ИЕ7, то для организации звука FE можно использовать тот-же триггер звука FF (используя R/S вх). Наличия бордера не требуется. В некоторых ZX-играх (адаптации В.Смирнова) бордер работает. В дальнейшем будет считаться, что бордера - нет, хотя в тех программах, где звук не переделывается - вывод бордера получится автоматически (т.к в "Синклере" он такой-же).
 +
 +
6. Освобождение ОЗУ в области выше F400. Т.к лучшие ZX-игры большие по объёму и используют ОЗУ в старших адресах, где у ОРИОНА ПЗУ и В/У, потребовалась возможность иметь ОЗУ по этим адресам. При этом аппаратные переделки минимальны (1 вентиль из 155ЛИ1 и провода). Для отключения ПЗУ/ВУ используется разряд D5 порта FB (на старых схемах сигнал XROM). При выводе единицы в этот разряд по адресам выше F400 оказывается ОЗУ 0-й банки памяти (естественно ПЗУ и В/У становятся при этом недоступны). Чтобы снова получить доступ к В/У необходимо "вернуть их назад" выполнив команду OUT FB с нулём в 5-м разряде. К марту 1993 пока лишь одна программа «KRAKOUT» требует такой доработки, но вскоре программ использующих режим FULL RAM будет больше.
 +
 +
7. Диспетчер ОЗУ. Диспетчер ОЗУ по 32К, как указано выше был неудобен в работе и был отвергнут программистами. Поэтому схему пришлось изменить, обеспечив коммутацию по 16К. На плате Z80CARD "образца 1991 года" легко выполнить такую доработку. Как её сделать становится понятно, если сравнить схемы двух плат. Естественно, слегка изменилось и назначение разрядов D0...D4 порта FB: сигналы BS0-BS1 определяют номер банки ОЗУ, а SS0 и SS1 - номер 16-ти килобайтового сегмента, включаемого в окне коммутации с 0000 по 3FFF. Как и ранее, работа диспетчера полностью отключается записью единицы в 7-й разряд порта FB, что необходимо для совместимости с базовым ОРИОНОМ.
 +
 +
8. Таймер 580ВИ53. В начале 1991 года было предложено его ставить по адресу F740-F743. Такты всех каналов - 2 МГЦ. К сожалению, из-за отсутствия рекламы в журналах, ВИ53 до сих пор в любительских программах никто серъёзно не поддержал. А для ZX-игр наличие ВИ53 бесполезно. Для музыки и шумовых эффектов, видимо более перспективен AY8912, установленный как в ZX (по схеме Adelaide). Известно, что есть поддержка AY-8912 в некоторых играх для ZX-48K. Если такие игры будут конвертированы для ОРИОНА, то при такой схеме AY-звук переделывать не придётся. Кстати, аналогичная ситуация возможна и с джойстиком.
 +
 +
9. Объём ОЗУ. Достаточно базовых 128К. Больше требуется лишь, если нужно больше квазидисков ORDOS и эл.диск в CP/M.
 +
 +
Чистяков Владимир, Санкт-Петербург, март 1993 г.
 +
 +
<pre>
 
FFFF|=================|     
 
FFFF|=================|     
 
     |`````````````````|     
 
     |`````````````````|     
Строка 118: Строка 43:
 
F400|`````````````````|     
 
F400|`````````````````|     
 
     | некоммутируемое |  
 
     | некоммутируемое |  
     | портом "F9" ОЗУ |<------------------ !!! Но при FB/d5=1 эта область  
+
     | портом "F9" ОЗУ |<------------------ !!! Но при FB/D5=1 эта область  
F000|-----------------|<-----\            перестает быть некоммутируемой  
+
F000|-----------------|<-----\            перестаёт быть некоммутируемой  
 
     |    Segment 3    |      |            и тогда порт "F9" действует на  
 
     |    Segment 3    |      |            и тогда порт "F9" действует на  
     |                |      |            все адресное пространство 64 К
+
     |                |      |            всё адресное пространство 64К.
 
C000|=================|      |  
 
C000|=================|      |  
 
     |                |      |      Эта область переключается портом "F9"  
 
     |                |      |      Эта область переключается портом "F9"  
     |    Segment 2    |      |      То есть при FB/d7=FB/d5=0 область уп-  
+
     |    Segment 2    |      |      То есть при FB/D7=FB/D5=0 область уп-  
 
     |                |      |----- равляемая портом "F9" не включает 16К  
 
     |                |      |----- равляемая портом "F9" не включает 16К  
 
8000|=================|      |      памяти, входящие в Segment 0  и таким  
 
8000|=================|      |      памяти, входящие в Segment 0  и таким  
 
     |                |      |      образом порт F9 управляет окном в 48К  
 
     |                |      |      образом порт F9 управляет окном в 48К  
     |    Segment 1    |      |      Но при FB/d7=1 порт F9 коммутирует на  
+
     |    Segment 1    |      |      Но при FB/D7=1 порт F9 коммутирует на  
     |                |      |      все адресное пространство в 60 Кбайт  
+
     |                |      |      всё адресное пространство в 60 Кбайт.
 
4000|=================|<-----/  
 
4000|=================|<-----/  
 
     |                | Segment 0 соответствует окну диспетчера Z80CARD-2  
 
     |                | Segment 0 соответствует окну диспетчера Z80CARD-2  
     |    Segment 0    | При включенном диспетчере номер блока памяти дос-  
+
     |    Segment 0    | При включённом диспетчере номер блока памяти дос-  
     |                | тупного в этом сегменте, определяется портом FBh.  
+
     |                | тупного в этом сегменте, определяется портом FB.  
 
0000|=================|  
 
0000|=================|  
  
 
</pre>
 
</pre>
 
[[Категория:Орион-128]]
 
[[Категория:Орион-128]]

Текущая версия на 08:36, 21 октября 2019

Red copyright.png Данный материал защищён авторскими правами!

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

Автор: В.Чистяков

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

В.Чистяков о Z80 на «Орионе-128»

Первоначально процессор Z80 в ОРИОН устанавливался просто взамен процессора КР580ВМ80, без доработок архитектуры. Замена процессора при монтаже Z80 в посадочное место процессора ВМ80 требует больших коррекций на плате, много разрезов печати и дополнительных проводов. Основным выигрышем при Z80 считалась возможность турбировать ОРИОН, а также бОльший выбор CP/M-компиляторов ЯВУ.

Вскоре выяснилось, что архитектура ОРИОНА имеет недостатком то, что при цвете в обоих страницах памяти располагается экранное ОЗУ, что оставляет для программ пользователя всего 48К сплошного ОЗУ. Для написанных любителями программ этого достаточно, но большая часть CP/M программ и все компиляторы требуют не менее 60 кб сплошного ОЗУ. Когда осенью 1991 изготавливалась партия печатных платок, предназначенных для упрощения замены процессора на Z80, то решено было одновременно разместить на этой платке, названной Z80CARD, дополнительный диспетчер памяти позволяющий одновременно решить проблему с цветом для CP/M.

Диспетчер применённый на этой платке позволял в окне 32К в адресах 0...7FFF включать любой из 4-х участков памяти в 32К из общей памяти в 128К. Это позволяло не только доступ к участку ОЗУ в 6 кб закрытому портами и ПЗУ, но и позволяло иметь одновременно цвет и сплошное ОЗУ в 60К для программ. В 1992 году для ОРИОНА на Z80 было адаптировано несколько игр от ZX-Spectrum. Выяснилось, что при адаптации ZX-игр гораздо удобнее иметь сегментирование по 16К, т.е возможность коммутировать ОЗУ по адресам 0-3FFFH (т.к в ZX-Spectrum именно в этих адресах располагается ПЗУ). Поэтому в 1993 году схема платки для Z80 была изменена на более оптимальную с окном диспетчера в 16К.

......

При установке Z80 по любой схеме учтите, что такая доработка совместима с базовым вариантом ОРИОНА насколько позволяет совместимость процессоров (в основном это касается вывода звуков, бейсика и игры Silent Service для ВМ80, - она использует IN/OUT для доступа в ОЗУ).

Основная цель предлагаемых усовершенствований - обеспечить максимально легкую адаптацию программ от ZX-Spectrum, облегчить доступ к ОЗУ и поднять быстродействие ОРИОНА, а также, возможно, улучшить его музыкальные возможности. Вы можете выполнить лишь часть этих переделок, потеряв при этом совместимость с какой-то частью новых программ.

1. Центральный процессор - Z80. Для работы на такте 2.5 МГЦ годится любой Z80. В том числе и ГДР-овский UB880, но его лучше не ставить, если планируется турбирование. Как показала практика, обычные Z80A предназначенные для работы на такте до 4 МГЦ, без проблем работают в ОРИОНЕ на удвоенном такте в 5 МГЦ.

2. Быстродействие - желательно не менее 3.5...4 МГЦ реального такта. Следует различать быстродействие (т.е реальный такт) и такт процессора. В случае, если нет WAIT, реальный такт и такт процессора равны. Качественно адаптированные игры (т.е с переделанным экранным алгоритмом) нормально работают и при 2.5 МГЦ, но новые игры адаптированные более простым способом на прерываниях при клоке в 2.5 МГЦ заметно тормозят.

3. Прерывание INT. Отключаемое прерывание по кадровому бланку, т.е с частотой 50 Герц. По сбросу выключено поступление импульсов на вход INT и поэтому даже после команды "EI" прерывание не наступает. Для разрешения прерываний в порт по адресу FB надо вывести байт с единицей в 6-м разряде. В связи с прерываниями IM2 стоит упомянуть о необходимости привязки шины данных процессора на "+5В" резисторами в 10К. Игры сделанные до марта 1993 (кроме GALAXY) этого не требовали (это решалось программно); но все последующие будут считать, что при обработке INT в режиме 2, с шины читается FF. Резисторы - до ШФ, к ногам CPU.

4. Прерывание NMI пока не используются. Эмуляция Синклера по прерываниям NMI резервирована на будущее, хотя для этого понадобится скорость в 5 МГЦ и более. К тому же реализация "режима эмуляции" целесообразна лишь на новой плате ОРИОНА - иначе будет просто 3-этажная "макетная плата". Идея эмуляции такая. Несколько раз в секунду вызывается NMI и подпрограммой визуализации экран ZX копируется в экран ОРИОНА, картинка становится видимой. Кроме доп.узла для NMI добавляется и ZX-клавиатура в 40 клавиш (или требуется дорабатывать программы, что правда на порядок проще, чем дорабатывать вывод на экран). Это упоминается на случай, если кто-то выполняя доработки, решит занять NMI чем-то менее-полезным (например, для реализации многозадачности).

5. Звук. Выводится двумя способами: TOGGLE OUT FF, PORT OUT FE/D4. Первый способ удобен при адаптации программ со звуком РК86 (DI/EI) и позволяет тратить меньше байтов и тактов процессора на звук, а второй - звук "Синклера", позволяет при адаптации не адаптировать вывод звука вообще. На платах Z80CARD новой версии 1993 года имеются оба эти "звука". На старых платах 1991 года проще всего ввести звук по порту FE используя имеющийся "порт FE" 155ИЕ7. Подключите вместо D7 к 9 ноге ИЕ7 - D4, а соотв.выход ИЕ7 через резистор - на эмиттерный повторитель для звука. Если Вы не ставили ИЕ7, то для организации звука FE можно использовать тот-же триггер звука FF (используя R/S вх). Наличия бордера не требуется. В некоторых ZX-играх (адаптации В.Смирнова) бордер работает. В дальнейшем будет считаться, что бордера - нет, хотя в тех программах, где звук не переделывается - вывод бордера получится автоматически (т.к в "Синклере" он такой-же).

6. Освобождение ОЗУ в области выше F400. Т.к лучшие ZX-игры большие по объёму и используют ОЗУ в старших адресах, где у ОРИОНА ПЗУ и В/У, потребовалась возможность иметь ОЗУ по этим адресам. При этом аппаратные переделки минимальны (1 вентиль из 155ЛИ1 и провода). Для отключения ПЗУ/ВУ используется разряд D5 порта FB (на старых схемах сигнал XROM). При выводе единицы в этот разряд по адресам выше F400 оказывается ОЗУ 0-й банки памяти (естественно ПЗУ и В/У становятся при этом недоступны). Чтобы снова получить доступ к В/У необходимо "вернуть их назад" выполнив команду OUT FB с нулём в 5-м разряде. К марту 1993 пока лишь одна программа «KRAKOUT» требует такой доработки, но вскоре программ использующих режим FULL RAM будет больше.

7. Диспетчер ОЗУ. Диспетчер ОЗУ по 32К, как указано выше был неудобен в работе и был отвергнут программистами. Поэтому схему пришлось изменить, обеспечив коммутацию по 16К. На плате Z80CARD "образца 1991 года" легко выполнить такую доработку. Как её сделать становится понятно, если сравнить схемы двух плат. Естественно, слегка изменилось и назначение разрядов D0...D4 порта FB: сигналы BS0-BS1 определяют номер банки ОЗУ, а SS0 и SS1 - номер 16-ти килобайтового сегмента, включаемого в окне коммутации с 0000 по 3FFF. Как и ранее, работа диспетчера полностью отключается записью единицы в 7-й разряд порта FB, что необходимо для совместимости с базовым ОРИОНОМ.

8. Таймер 580ВИ53. В начале 1991 года было предложено его ставить по адресу F740-F743. Такты всех каналов - 2 МГЦ. К сожалению, из-за отсутствия рекламы в журналах, ВИ53 до сих пор в любительских программах никто серъёзно не поддержал. А для ZX-игр наличие ВИ53 бесполезно. Для музыки и шумовых эффектов, видимо более перспективен AY8912, установленный как в ZX (по схеме Adelaide). Известно, что есть поддержка AY-8912 в некоторых играх для ZX-48K. Если такие игры будут конвертированы для ОРИОНА, то при такой схеме AY-звук переделывать не придётся. Кстати, аналогичная ситуация возможна и с джойстиком.

9. Объём ОЗУ. Достаточно базовых 128К. Больше требуется лишь, если нужно больше квазидисков ORDOS и эл.диск в CP/M.

Чистяков Владимир, Санкт-Петербург, март 1993 г.

FFFF|=================|    
    |`````````````````|    
    |``ROM-BIOS area``|    
F800|`````````````````|    
    |``````Ports``````|    
F400|`````````````````|    
    | некоммутируемое | 
    | портом "F9" ОЗУ |<------------------ !!! Но при FB/D5=1 эта область 
F000|-----------------|<-----\             перестаёт быть некоммутируемой 
    |    Segment 3    |      |             и тогда порт "F9" действует на 
    |                 |      |             всё адресное пространство 64К. 
C000|=================|      | 
    |                 |      |      Эта область переключается портом "F9" 
    |    Segment 2    |      |      То есть при FB/D7=FB/D5=0 область уп- 
    |                 |      |----- равляемая портом "F9" не включает 16К 
8000|=================|      |      памяти, входящие в Segment 0  и таким 
    |                 |      |      образом порт F9 управляет окном в 48К 
    |    Segment 1    |      |      Но при FB/D7=1 порт F9 коммутирует на 
    |                 |      |      всё адресное пространство в 60 Кбайт. 
4000|=================|<-----/ 
    |                 | Segment 0 соответствует окну диспетчера Z80CARD-2 
    |    Segment 0    | При включённом диспетчере номер блока памяти дос- 
    |                 | тупного в этом сегменте,  определяется портом FB. 
0000|=================|