Радиолюбитель 1991-11/ZX SPECTRUM 128К — что это такое?
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: Ю. ДУДНИК г. Минск Источник: http://www.radioliga.com/ |
В начале 1986 года фирма Sinclair Research Ltd. объявила о выпуске на рынок своей новинки. После выпуска в свет модели с объемом ОЗУ 16 Кбайт ZX81 и с ОЗУ 48 Кбайт ZX SPECTRUM 48K, а также версии последнего с расширенной клавиатурой ZX SPECTRUM plus настал черед компьютера с объемом ОЗУ 128 Кбайт, который получил название ZX SPECTRUM 128K. Новинка была встречена на рынке более чем прохладно, что, в общем-то, неудивительно: к тому времени для профессиональных пользователей уже имелась возможность приобрести первенца в будущей популярной серии компьютеров фирмы IBM, который носил название IBM PC (от англ. Personal Computer) и при том же объеме ОЗУ в 128 Кбайт имел микропроцессор принципиально иного порядка — 16-разрядный 18086 фирмы Intel. Для любителей же традиций на рынке была масса иных 8-разрядных компьютеров, к тому же поддерживающих ОС СР/М; достаточно назвать хотя бы такой, несомненно, удачный, как AMSTRAD СРС, построенный на базе того же Z80, но неизмеримо превосходивший по своим возможностям старичка ZX.
Если к этому добавить, что штатной массовой памятью для серии ZX являлись т. н. Microdriver’ы, представляющие собой некий вариант кассетника, а системный порт ZX SPECTRUM 128K с адресом 0FDH навсегда похоронил мечту хоть как-нибудь приспособить к нему СР/М (с материальными затратами в разумных пределах, поскольку этот адрес совпадает с принятым в данной ОС адресом гарта номера сектора диска в контроллере дисковода), то понятно, откуда появилась такая сдержанность в оценке западными потребителями указанной модели. Впоследствии, правда, появилась весьма неплохая дисковая ОС для компьютеров класса ZX SPECTRUM, TR-DOS (коммерческое название Beta Disc Interface), практически не уступающая по предоставляемым ресурсам работы с диском той же СР/М, но увы… эра 8-разрядных компьютеров к тому времени у же близилась к концу. Однако читатель может не спешить к ближайшему мусоропроводу со своим ZX SPECTRUM-совместимым — при том состоянии, в котором находится сейчас компьютерная сфера в СССР, он еще долго не почувствует, сколь много он теряет из-за отсутствия дома чего-нибудь многоразрядного на базе, скажем, Intel 80386 или Motorola MC68030, а если учесть фантастические для рядового портебителя цены на такие компьютеры, то, скорее всего, и не будет особо торопиться это почувствовать. По крайней мере, я без всяких комплексов набрал оригинал этой статьи с помощью текстового редактора SUPERWORD на самодельном ZX SPECTRUM 128К-совместимом компьютере в режиме 48К, загрузив этот редактор с дискеты формата TR-DOS…
Впрочем, вернемся к вопросу, вынесенному в заголовок. Сперва несколько слов о том, как выглядит ZX SPECTRUM 128K с точки зрения пользователя.
Данная модель имеет три основных и два сервисных режима работы. Основные это:
- Режим калькулятора, позволяющий производить вычисления с использованием всех алгебраических и тригонометрических функций, которые Вы можете найти на клавиатуре Вашего компьютера;
- Режим эмуляции ZX SPECTRUM 48K, в котором он ничем не отличается от указанного компьютера (точнее, его версии ZX SPECTRUM plus с расширенной клавиатурой);
- Режим BASIC 128K. Данный режим характеризуется следующими особенностями:
- сам язык BASIC является расширенной версией языка BASIC 48K.
Расширение свелось, во-первых, к добавлению двух новых инструкций PLAY и SPECTRUM; первая преобразует программу к формату BASIC 48K и переводит компьютер в этот режим без потери программы в памяти, а вторая управляет интегральным трехканальным звуковым генератором AY-3-8910 фирмы General Instruments (в качестве варианта можно использовать упрощенную версию 8912), которым снабжена данная модель. Для того, чтобы оценить разницу между примитивным «пиканьем» ZX SPECTRUM 48К и работой указанной микросхемы, надо просто взять и послушать: вам гарантировано незабываемое впечатление от игры настоящего музыкального инструмента. И, наконец, еще одной особенностью языка BASIC 128K является то, что все ключевые слова набираются в нем по буквам;
- организация памяти в виде т. н. RAM-диска, что позволяет оперативно хранить в памяти целый ряд программ и данных, не прибегая к помощи внешней памяти. При этом вся память разбита на банки по 16 Кбайт, которые можно переключать как старшие 16К адресов. Если Вы просто пользователь, то Вам достаточно использовать соответствующие команды LOAD!, SAVE! и MERGE! (команда VERIFY при работе с RAM-диском не используется), если же Вы имеете навыки в программировании на уровне машинных кодов, то тут у Вас вообще колоссальное поле деятельности. Для неискушенных пользователей следует отдельно подчеркнуть, что наличие 128 К памяти вовсе не означает, что Вы можете писать цельные программы-монстры размером, скажем, килобайт этак в 100; максимальный объем программы абсолютно тот же, что и в ZX SPECTRUM 48К, однако не торопитесь чрезмерно огорчаться: в программировании существует такое понятие, как OVERLAY, когда программа разбивается на несколько фрагментов (грамотнее сказать сегментов), которые могут перекрывать друг друга, при этом первый сегмент вызывает на определенном этапе своей работы второй, тот, в свою очередь, следующий и т. д. Использование оверлейной структуры программ совместно с высокой скоростью обмена информацией с RAM-диском позволяет писать программы весьма высокой сложности практически без особого снижения скорости их исполнения по сравнению с тем, как они работали бы в случае их записи единым блоком.
К сервисным возможностям относится, во-первых, наличие режима загрузки первой встреченной на ленте программы без необходимости набора LOAD"", а во-вторых, наличие встроенной программы для настройки магнитофона с целью обеспечения устойчивой загрузки.
С аппаратной точки зрения, все дополнительные возможности предоставляются при обращении к трем внешним устройствам со следующими адресами (напоминаем, что микропроцессор Z80 позволяет адресовать 64К УВВ):
7FFDH—системный порт; биты 0…2 определяют номер банка памяти; бит — 3 адрес экранного ОЗУ (4000/С000); бит 4 выбирает младшие/старшие 16К системного ПЗУ; бит 5 — защелка режима ZX SPECTRUM 48K; биты б, 7 не используются. 0BFFD — адрес записи/чтення регистров генератора звуков. 0FFFD — адрес выбора номера регистра генератора звуков.
Вариант схемы расширения компьютера ZX SPECTRUM 48K до версии 128К приведен на рис. 1.
Ответы на вопросы (РЛ № 5 за 1992 г.)
Материал с таким названием, опубликованный в «РЛ» 11/91 вызвал неожиданно большой интерес, поэтому редакция решила дополнить его практическими рекомендациями.
- 1. О неточностях в публикации
- Слова PLAY и SPECTRUM следует поменять местами.
- То же относится к сигналам A14ROM и Al3VIDEO на рис. 1, к тому же последний должен иметь обозначение A15VIDEO.
- Вывод EDIT ИМС AY-3-8910 должен быть обозначен как BDIR.
- Тип используемого регистра К555ТМ9, а не К555ТМ8.
- Разводка ИМС AY-3-8910 показана на рисунке. Порты А и В программируются раздельно (на ввод и вывод) и могут использоваться в различных целях для ввода/вывода информации побайтно (аналогично портам Л и В ИМС К580 ВВ55 в режиме 0).
- На вход CLK (вывод 22 ИМС AY-3-8910) подается сигнал 1 МГц.
- 2. Об использовании звукового процессора в 48К-машинах.
Большинство программ имеют собственные драйверы, обслуживающие данную ИМС, и не производят опознавания версии компьютера 48/128К, поэтому звуковой процессор можно с успехом встраивать и в 48-килобайт-ные компьютеры (по крайней мере, у автора при проведении соответствующих экспериментов отказались поддерживать процессор в компьютере 48К только 2 игры).
- 3. О входных и выходных сигналах.
Сигнал SOFE (Sound Out from port #FE) представляет собой звуковой сигнал, снимаемый со стандартного регистра с адресом HEX FE, то есть обыкновенный выход звука в Вашем компьютере. Следует лишь обратить Ваше внимание на то, что сигнал надо снимать непосредственно с выхода соответствующей ИМС, изъяв выходной резистивный делитель, так как его функции будет выполнять делитель 3,3К/1К на рис. 1 в указанном материале.
Сигнал SO (Sound Out) — не что иное, как выход звука, подаваемый на усилитель.
Сигналы A14RAM и A15RAM подаются на мультиплексоры ОЗУ взамен стандартных адресных А14 и А15 соответственно.
Сигналы CAS1 и CAS2 подаются на выводы CAS первой и второй линеек ОЗУ соответственно; остальные выводы обеих линеек объединяются попарно, за исключением выводов 1, которые в каждой из 16 ИМС должны быть свободны.
Сигнал VIDEO переключает мультиплексоры ОЗУ на ввод информации с адресной шины, либо на опрос экранной области, причем
лог. «0» соответствует ША, а лог. «1» — выводу информации из экранной области. Если же в Вашем компьютере данный сигнал инверсный, то есть ША соответствует лог. «1», то элемент К555ЛЛ1, на который подается этот сигнал, следует заменить на К555ЛАЗ. При этом между его входом и выходом К555КП11 необходимо включить инвертор.
Сигнал CAS должен быть именно прямым, а не инверсным, как это имеет место в Вашем компьютере, так как он будет дополнительно проинвертирован элементами ИМС К555ЛАЗ.
Сигнал A15VIDEO является парным к сигналу А15ША, подаваемому на мультиплексор ОЗУ, но соответствует режиму считывания экранной области. Для облегчения его поиска на схеме укажем, что в версии 48К соответствующая ножка ИМС мультиплексора соединена с общим проводом, а почему это так — прелагаем подумать самостоятельно (подсказка: внимательно изучите адреса экранной области).
Сигнал A14ROM подается на вывод 27 ИМС ПЗУ 27256.
И, наконец, последнее. Очень многие радиолюбители выражают серьезную озабоченность тем, что логика переключения банков ОЗУ схемы в публикации не совпадают с распространенным описанием сходного устройства на базе ППЗУ К556РТ4. При этом поступают просьбы прокомментировать, в какой из схем содержится ошибка. Не волнуйтесь — оба описания верны. Почему? Дело в том, что процессору абсолютно безразлично, в каких физических ячейках ОЗУ хранится информация, единственное необходимое условие — однозначное соответствие адреса ячейки и его выходных сигналов. Данное же условие обеспечивается в обеих схемах — как в «правильной» на ППЗУ, которая отводит ячейки одной линейки ОЗУ под 48К минимальной версии, так и в «неправильной» из материала, в котором линейки даже в режиме 48К используются вперемежку. Из этого следует любопытное следствие: в имеющихся у меня 4-х справочных материалах на ИМС приводится 3(!) различных разводки К565РУ5, причем меня это совершенно не беспокоит: при разработке нового изделия я просто беру тот материал, который оказывается под рукой. Между прочим, достаточная условность присвоения адресным выходам ОЗУ (не ПЗУ!) того или иного обозначения может существенно облегчить Вам трассировку платы, на которой они располагаются. Кстати, то же самое верно и для выводов данных в многоразрядных ИМС ОЗУ…