Optron
#14
03 июля 1998 |
|
Железо - Макси-извращенные "прибамбасы" PowerZX.
──══════════── ╔════──── ║ │ Железо │ ║ ────════╝ (C) Andy Nelson, 1998 Следуя примеру Twinsoft и принимая при- зывы Рашпиля, я, Andy Nelson (по паспорту Смольский Андрей), решил также описать свой PowerZX, его макси-извращенные "при- бамбасы" и то, как я докатился до этого. Сначала приведу параметры: Motherboard......."Львовский вариант" (служит в качестве каркаса, поскольку проводов больше чем дорожек на плате, а некоторые микросхемы лежат в три этажа :) ) CPU...............Z80H 3.5/7 МГц 71680/114688 тактов за кадр. Поле памяти.......общее и незатеняемое (как в Pentagon'e) RAM...............512 kB ROM...............64 kB (прошивка изме- нена: после последнего "шитья" там: BASIC-48, TR-DOS 5.05, STS 5.11A, RDS 3.1, Jemmi- ni Commander 4.1) Virtual ROM.......64 kB (используется часть ОЗУ) Количество строк по вертикали......320 Тактов за строку..224 (при 3.5МГц) INT..............."Пентагоновский" с ав- томатическим ограниче- нием его длинны Режимы графики....STANDART - 256*192, 16 цветов, атрибуты 8*8 MULTICOLOR - 256*192, 16 цветов, атрибуты 8*1 HIRES - 512*192, 2 цвета Количество видео страниц...........3 Источники звука...BEEPER, AY-3-8912, CO- VOX (9 bit) Дисководы.........2x5.25" Teac FD-55 (о- дин из них был на 1.2MB) Джойстик..........Kempston (используется стандартный Dendy-jo- ystick) Мышка.............Kempston Mouse Порт принтера.....ZX-Lprint Рассказ о том, что это такое, зачем это нужно и как я сделал это, хотелось бы на- чать с небольшой истории первичной пере- делки моего компьютера. Поскольку учиться лучше всего на чужих ошибках, то, надеюсь, нижеизложенная информация Вам когда-нибудь пригодится. В качестве Motherboard я использовал плату от "Львовского варианта", о чем в последствии пожалел, так как эта версия Спектрума, несмотря на большое сходство с фирменным, имеет много аппаратных недос- татков. Но, поскольку другого было не да- но, то все мои эксперименты проводились на этой плате. Чесно говоря, я "испоганил" две платы. Первая после страшных экспери- ментов все-таки "пошла" на запчасти, вто- рая "выжила" и на этом компьютере я наби- раю данный текст. Сначала сделать из 48K 128K+AY было не- сложно (шесть микросхем логики, панелька под AY, собственно AY, небольшая платка и около 2 метров провода). Тяга к модерниза- ции появилась после того, как все больше демок "тормозило" или "не шло" совсем (особенно Еnlight'96). Также хотелось по- больше памяти (копирование дисков с одним дисководом было весьма "веселым" заняти- ем). Сначала проводились эксперименты по подключению 565РУ7. Компьютер, в принципе, заработал, но на экране творился "бред". Тот факт, что эти РУ'шки нормально работа- ли в "Скорпионе" подтолкнул меня на мысль о том, что им "не нравится" метод считыва- ния информации видеоконтроллером. Я убрал "торможение" памяти, в результате чего изображение появилось, но возникла пробле- ма регенерации в незатеняемой части ОЗУ, которую, по неизвестным причинам, не уда- валось решить. Кроме того, в видеопамяти, почему-то, появлялись "точки", причем сра- зу по четыре штуки в любом месте, с фикси- рованным расстоянием между ними. Интенсив- ность их появления зависила от напряжения питания. Причину этого не удавалось разга- дать на протяжении полугода. Через пять месяцев я достал импортные аналоги РУ7 (i21256). Они заработали в "затеняемом" режиме на другой плате, но тяга сделать "нетормозящий" компьютер взя- ла верх. И вот после такой переделки проб- лема с "точками" повторилась. Схема, кото- рая, по идее, должна была бы нормально ра- ботать, упорно выдавала "точки" в памяти. Но самым интересным было то, что РУ5-тые работали нормально. После долгих анализов схем "АТМ-turbo", "Pentagon128" и "Scorpion" был сделан вы- вод, что переделанный "Львовский" вариант отличался одним: в качестве адресных счет- чиков применялись микросхемы 561 серии. Тогда, после стробирования всех адресов РУ-шек сигналом -CAS (при помощи ИР23), данная проблема исчезла навсегда. Причиной же появления "точек" было то, что верти- кальные счетчики инкрементировались по сигналу, полученному из строчного синхро- импульса. Из-за недостаточного быстро- действия 561-й серии, в конце концов, это приводило к тому, что во время цикла чте- ния из ОЗУ изменялось значение на адресной шине. РУ5-тые это "терпели", а вот РУ7-мым это "не понравилось". Еще была проблема регенерации в "незате- няемой" области ОЗУ. На первый взгляд, все, вроде бы, есть, а память все равно сбоит. Избавиться от этого удалось, решив проблему "в корне". Была переделана адре- сация РУ-шек: все 16 микросхем теперь име- ют общую адресную шину и общие сигналы -RAS и -CAS, поскольку попытка соединить попарно выходы данных, то есть "заставить" работать два банка ОЗУ на один регистр, при раздельных сигналах -CAS, как это сде- лано в "Pentagon'е", ни к чему хорошему не привела. Микросхемы "не уживались" между собой, даже если подавать только сигнал -RAS. Пришлось поставить еще одну ИР23 на выходы второго банка. В общем, такой вари- ант адресации имеет некоторые преиму- щества: ОЗУ нормально регенерируется, сиг- нал -CAS подключен к ОЗУ непосредственно, что повышает помехоустойчивость компьюте- ра, и даже, в случае, если "сгорит" па- мять, компьютер может работать с одним банком ОЗУ (256K). Дальнейшее описание сделано на основе следующих источников информации: схем "Львовского варианта", "Pentagon", "ATMturbo" или "Turbo-2+", журналов "Spectrofon 20" и "ZX-Format 5". Кроме то- го, вам следует запастись терпением, вни- манием, пивом... :) А теперь обо всем по порядку. ──══ Устранение торможения памяти ══── Схему переделки привести в "Оптроне" проблематично по двум причинам: во-первых, ее сложно нарисовать в текстовом редакто- ре, а во-вторых, единого и окончательного варианта схемы у меня нет, поскольку в процесе наладки вносились коррективы, ко- торые иногда "забывались" записываться. Но, несмотря на это, основные "подводные камни" я постараюсь описать. Из трех вариантов "незатеняемых" компью- теров (Pentagon, ATM и Scorpion) я выбрал Pentаgon, так как он относительно прост в реализации и при последующей установке турбо-режима дает самый лучший результат. Реализуется практически полностью по "о- ригинальной" схеме. Кроме этого, нужно за- менить "половинку" счетчика 561ИЕ10 (D22.1) на такой же счетчик 555'той серии и обеспечить его нулевое значение в момент прихода сигнала сброс (к.7 D22.1) (подхо- дит 555ИЕ7). Также необходимо пропустить все остальные адресные сигналы через 555ИР23 которую следует тактировать сигна- лом -CAS. Этим исключается возможность по- падания даных из видео ОЗУ через КП11 (D32, D33) на шину данных процессора. Распределение страниц по адресному пространству процессора я сделал на двух 555КП12. На адресные входы мультиплексоров подаются А14 и А15 и задается конфигурация страниц, на выходах получаем адресную ши- ну. Данный метод обеспечивает возможность реализации такой штуковины, как Virtual ROM. В двух словах, механизм обслуживания памяти легко реализуется на 555ИД4, так как это сделано в АТМturbo. При наладке часто помогает "обвешивание" конденсатора- ми 50-200 пФ сигналов -RAS и -CAS. Необхо- димо также "навесить" блокировочные кон- денсаторы по питанию ОЗУ (желательно, не менее 0.15мкФ на каждую микросхему). ──══ Турбо-режим ══── Несколько начальных рекомендаций. Лучше всего установить процессор на па- нельку (только на хорошую, чтоб у вас в дальнейшем с ней не было проблем). Следует учесть также то, что в турбо-режиме рабо- тают не все процессоры. Отдельные эк- земпляры вроде бы и работают, но "загиба- ются" при подключении переферии, так как шина данных и адреса на "Львовском вариан- те" не буферизирована. Наилучший вариант - Z80H, moжно попробывать Z80B. Z80А и оте- чественные аналоги работают не все. Иногда не работают в турбо-режиме ПЗУ-шки старого выпуска (до 1984 г.). Схема турбирования такая же, как и для Pentagon'а (3 микросхемы), кроме одного: не нужно устанавливать элемент ТМ2 (D107.2), который исключает возможность двойного обращения процессора к ОЗУ во время считывания видеоконтроллером одного знакоместа (4 цикла чтения). Кроме того, следует подать на переключатель "Turbo" с контроллера дисковода сигнал не -VG93.CS, а -DOSEN. При работе TR-DOS турбо-режим будет отключаться, но это не играет роли, так как в турбо-режиме загрузка быстрее все равно не пойдет. Некорректно работает в турбо-режиме AUTOchecking диска во многих boot'ах (к сожалению, устраняется это только прог- раммно). ──══ Virtual ROM ══── Оно же псевдо-ПЗУ. Смысл сего "прибамба- са" в следующем: битом специального порта отключается основное ПЗУ, а вместо него включается одна из последних страниц ОЗУ (#C5 - TR-DOS, #C6 - BASIC128, #C7 - BA- SIC48). Запись в псевдо-ПЗУ по адресам 0-#3FFF не производится. Занести какие-ли- бо данные в псевдо-ПЗУ можно, включив нуж- ную страницу по адресам #C000-#FFFF. Порт, который включает псевдо-ПЗУ имеет прог- раммную "защелку" (как порт #7FFD), надоб- ность сброса которой по сигналу -RES зада- ется переключателем. В результате получа- ется одна интересная вещь: можно загрузить любую прошивку BASIC48, BASIC128 и TR-DOS, защелкнуть порт конфигурации, перевести компьютер в режим 128K и отключить сброс защелки порта конфигурации по сигналу -RES. Mы получим полноценный Speccy-128 с загруженной прошивкой, изменить которую уже программно невозможно. Реализуется эта "штуковина", при наличии двух КП12, кото- рые задают номер страницы для каждой ад- ресной "четверти", относительно просто. На конфигурационные входы КП12 для нулевой четверти адресного пространства подаем сигналы ROM.A14 и DOSEN. На остальных вхо- дах выбираем номера последних страниц ОЗУ, реализуем порт #EFF7, обеспечиваем отклю- чение и постоянное включение основного ПЗУ по некоему сигналу, реализуем ОЗУ и систе- му блокировки записи в ОЗУ по адресам 0-#3FFF. Назначение отдельных битов порта #EFF7 будет приведено ниже. ──══ Увеличение "длины кадра" ══── Так уже исторически сложилось, что все Спекрум-подобные машины содержат в растре 312 строк, а Pentagon - 320 строк. Из-за этих восьми строк некоторые демки, напи- санные на Пентагоне, тормозят на компах, которые имеют только 312 строк (в частнос- ти и "Львовский вариант"). Решается проб- лема просто: нужно "тормознуть" верти- кальный счетчик на восемь строк. Устанав- ливаем дополнительный счетчик на 8 и конструируем систему блокировки верти- кального счетчика. Рекомендую "растяги- вать" нижний бордюр, если не хотите иметь проблем с временем прихода INT'а. ──══ Проблема сигнала INT ══── Точнее сказать, их две: время прихода и его длина. О том, как сделать "фирменный" или "пентагоновский" INT говорилось и пи- салось очень много (даже демка специальная была) и я не буду на этом отдельно оста- навливаться. Если Вам интересно узнать, как сделать правильный INT на "Львовском варианте", то советую почитать help к Ram Doctor-у Тятина Сергея. Проблема длины INT'а решается методом подбора нужного ре- зисторa или конденсатора. Но это справед- ливо только в том случае, если у Вас нет турбо-режима. Если же он установлен, то возникает интересная проблема: подобрали длину для 3.5МГц, переключили на 7 - INT стал "длинноват", подобрали для 7МГц - при 3.5МГц клавиатура срабатывает через раз. Первым "подкинул" идею, как с этим бо- роться, Валентин (Twinsoft). Он предложил использовать тот факт, что Z80 во время обработки INT'а одновременно устанавливает в "0" сигналы -IORQ и -M1. Таким образом, ставим триггер на блокировку сигнала INT и делаем так, чтобы он устанавливался сигна- лами -IORQ и -M1, а сбрасывался каким-либо другим сигналом, приходящим в то время, когда INT неактивен (например, сигнал BOR- DER). В общем, схема следущая: INT──┬──────X───────┬──к 16н. Z80 │ D1.1 │ │ ┌──┐ │ └────┤1 │ │ ┌────┤ ├──────┘ │ └──┘ └───────────────────┐ ┌─┬───┬─┐ │ +5V───oR│ │ │ │ ├─┤ │Q├───┘ GND───┤D│ │ │ -BORDER─────────/C│ │ │ D1.2 ├─┤ │ │ ┌──┐ ┌──oS│ │ │ -IORQ───┤1 ├─┘ └─┴───┴─┘ -M1─────┤ │ D2.1 D1 - 555ЛЛ1 └──┘ D2 - 555ТМ2 После такой переделки проблемы с INT'ом, в режиме ТУРБО, пропадают навсегда. >>
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября