Spectrum-совместимые компьютеры «Байт»,«Байт-01» и прочие раритеты

7 / 1 928

Тесты памяти для ZX-Spectrum, прошиваемые в ПЗУ

Неисправности, связанные с ОЗУ, занимают "почётную" нишу среди всевозможных причин неработоспособности Спектрумов. Микросхемы памяти относительно ненадёжны и склонны выгорать (в особенности при проблемах с питанием). И особенно если источник питания Спектрума трансформаторный. Уже сколько раз было замечено на моём компьютере Ленинград-1 с трансформаторным блоком питания - случайно перемкнёшь питание компьютера (+5В и массу), и одна-две микросхемы КР565РУ5 уже "вылетели".

Как правило горит микросхема памяти полностью. Т.е. не так, что в ней какой-то один бит не работает, а вообще вся микросхема перестаёт работать. Память Спектрума организована так, что каждая микросхема ОЗУ отвечает за свой бит памяти (для 48К спектрума это 8 микросхем по одному биту, итого имеем 64КБ адресуемой памяти). При старте компьютера ПЗУ производит свой тест памяти, и, если какая-либо ячейка ОЗУ "сбоит", компьютер устанавливает границу доступной памяти на адрес ячейки, предыдущей перед неисправной. При этом значение границы доступной памяти устанавливается в системной переменной P_RAMT (она находится по адресам 23732-23733 в ОЗУ. В исправном компьютере значение этой системной переменной будет равно #FFFF (т.е. в обеих ячейках памяти будут записаны числа 255). Если в системной переменной находится число, не равное #FFFF, к примеру если там #F000, то это означает, что ячейка памяти #F001 уже дефектная.

Всё это очень хорошо, но только в том случае, если обнаруженная дефектная ячейка памяти находится не в начале доступного ОЗУ. Дело в том, что для работы BASIC-48 тоже требуется какая-то доступная исправная память. И если дефект памяти выявится в начале ОЗУ, то BASIC просто-напросто не запустится, и мы ничего не сможем узнать. В случае, когда сгорела одна из микросхем ОЗУ полностью, компьютер не запустит BASIC.

Далее остаются только "пляски с бубном", чтобы найти что же в действительности сгорело. Применимо к микросхемам памяти можно попробовать примитивную, но иногда полезную диагностику. Дело в том, что дефектная микросхема памяти (КР565РУ5) может отличаться по температуре от остальных рабочих микросхем. При работе ОЗУ КР565РУ5 греется. Если приложить к микросхемам ОЗУ палец, можно почувствовать, что микросхемы ощутимо тёплые. Неисправная микросхема может греться как утюг, а может быть вообще холодной. Это необязательно будет так, но данный метод можно запомнить и применять от случая к случаю.

Вообще при производстве Спектрумов правилами хорошего тона является установка на панельки микросхемы ПЗУ и процессора. Это очень сильно облегчает жизнь при ремонте компьютера. В данном случае нас интересует микросхема ПЗУ. В "древних" Спектрумах, производимых в конце 80-х (начале 90-х годов) как правило ставилось две микросхемы ПЗУ. Это продиктовано тем, что микросхему ПЗУ объёмом 16К (буржуинское наименование 27128) достать в то время было не так-то просто, поэтому было проще и дешевле заменить её на две микросхемы объёмом по 8К, благо у них был отечественный аналог КР573РФ4, КР573РФ6. И обычно одну из микросхем (как правило это ПЗУ-0) ставили на панельку. Почему ПЗУ-0? Т.к. ПЗУ собрано на двух микросхемах, его адресное пространство разбито на две части. Всего объём ПЗУ составляет 16К. Поэтому первые 8К считаются как ПЗУ-0, а вторые 8К - ПЗУ-1. При старте компьютера процессор начинает выполнять программу, расположенную с адреса #0000, а это как раз область, адресуемая ПЗУ-0.

Таки да, нам очень надо, чтобы хотя бы одно ПЗУ было на панельке. Если на плате компьютера вообще одно ПЗУ на панельке, это тоже очень хорошо. Всё дело в том, что ПЗУ можно снять и вместо него поставить своё ПЗУ, в котором "прошит" тест памяти. Тогда при включении компьютера будет запущен нужный нам тест памяти, который явно покажет, что у нас творится с памятью в компьютере.

Очень-очень давно, когда у меня ещё не было программатора ПЗУ, приходилось ехать на радиорынок и там суровые дядьки за соответствующую мзду прошивали в ПЗУ что угодно. Были у них и тесты памяти для Спектрумов. Да, хорошее было тогда время...

Так вот, прикупив заветную прошитую микросхему ПЗУ можно было потестить свой компьютер. Однако сперва нужно было решить вопрос - как правильно вставить ПЗУ в панельку? Дело в том, что тест ПЗУ прошивается в микросхему объёмом 2К. Она имеет 24 вывода. В Спектруме используются 28-выводные ПЗУ. В этом случае у микросхемы с тестом поднимались выводы 21 и 24 и объединялись следующим образом:

Микросхема КР573РФ5 с тестом ОЗУ

Вставляется такая микросхема в панельку так, как показано на фотографии:

Тестовое ПЗУ, установленное в панельку

Думаю, на фотографии всё ясно видно. Контакт 12 ПЗУ (GND) должен совпасть с контактом 14 в панельке. А оттопыренный вывод тестового ПЗУ должен попасть в 28-й контакт панельки (питание +5В).

Можно не уродовать ПЗУ, а сделать переходную плату. Сверху ставим панельку на 24 контакта для тестового ПЗУ, снизу торчат штыри для установки платы в 28-выводную панельку в компьютер. Все требуемые изменения в присоединении 21 и 24 выводов ПЗУ можно сделать прямо на такой плате:

Переходная плата для тестового ПЗУ

Дальше всё просто - включаем компьютер, и запускается тест, прошитый в микросхему ПЗУ.

В своей практике я часто пользуюсь следующими тестовыми прошивками:

Тестовое ПЗУ для ZX-Spectrum 48K

Как следует из названия, проверяет 48К ОЗУ. Работает очень медленно (порядка 12 минут). Сначала чистятся атрибуты экрана, потом поочерёдно экран закрашивается и очищается, затем показываются результаты теста ОЗУ. После этого идёт тест ПЗУ, но он всегда завершается с ошибкой, но для нас это не играет никакой роли. Главное - проверить ОЗУ.

ВНИМАНИЕ!
У этого теста есть одна "фишка" - если держать при старте теста пробел, то графическая часть с закрашиванием атрибутов пропускается и начинается непосредственно тест ОЗУ. Проверка на нажатый пробел делается в момент, когда заканчивается перебор цветов бордюра в начале теста.

Как проходит тест на исправном компьютере можно посмотреть на следующем видео:

Прохождение теста 48К на исправном компьютере

Прохождение теста, если неисправна одна из микросхем ОЗУ, можно увидеть в первом выпуске Байт Tales #01:

БАЙТ Tales #01 - Ремонтируем компьютер «Байт»

Ещё одно тестовое ПЗУ для ZX-Spectrum 48K

Меня не совсем устраивает тест памяти 48К из предыдущего раздела страницы, поэтому когда у меня появилось свободное время и желание я дизассемблировал этот тест и на его основе "запилил" свою версию, в которой постарался реализовать свои "хотелки".

В итоге получился немного более усовершенствованный тест памяти, в котором я добавил несколько алгоритмов тестирования памяти, выкинул из теста лишний код (там его хватает), а также сделал "глушилку" синтезатора на КР580ВИ53 в случае использования теста на компьютере "Байт".

Скачать прошивку теста вместе со всеми исходниками для iS-DOS (тест написан на iS-Assembler) можно в конце этой страницы.

Тест ПЗУ для ZX-Spectrum 48K (из журнала "Радиолюбитель" 1995 №9

В журнале "Радиолюбитель" №9 за 1995 год опубликован дамп теста ПЗУ для ZX-Spectrum 48 за авторством Г. Улановского.

Особенность теста состоит в том, что он не отображает на экране текст - вся информация о работоспособности ОЗУ выводится в виде линий на бордюре. Это может быть полезно в случае полной неработоспособности ОЗУ, когда при выводе текста на экран не будет ничего видно, а линии на бордюре будут отлично заметны (вывод информации на бордюр не зависит от работоспособности и наличия ОЗУ вообще).

После окончания теста на бордюр выводятся 8 белых полос, символизирующих 8 бит ОЗУ. Первая сверху полоса показывает исправность бита D0, вторая - D1, третья - D2 и т.д. В случае исправного соответствующего бита ОЗУ полоса будет узкая:

Все биты ОЗУ исправны
Все биты ОЗУ исправны

В случае неисправного бита полоса будет в два раза шире:

Все биты ОЗУ неисправны
Все биты ОЗУ неисправны

Недостатком теста является проверка только первых 16К ОЗУ (по адресам #4000-#7FFF). Однако это легко исправляется изменением исходника теста.

Тест происходит в 4 этапа (заполнение и проверка на байты #00, #FF, #55 и #AA). При желании можно добавить в исходный текст и другие варианты проверки ОЗУ.

В качестве примера я доработал тест для проверки всего объёма ОЗУ 48К, а также вставил в исходник процедуру глушения КР580ВИ53 для компьютера "Байт". Прошивки двух вариантов теста и исходники можно скачать в конце этой статьи.

Тестовое ПЗУ для ZX-Spectrum 128К

Если верить заставке, автор сего ПЗУ - Андрей Хахонов (Ratcopy), Петербург.

Этот тест позволяет быстро проверить память в 128-м ZX-Spectrum.

Как проходит тест на исправном компьютере можно посмотреть на следующем видео:

Прохождение теста 128К на исправном компьютере

После сообщения об успешном тесте ПЗУ происходит зацикливание, на это можно не обращать внимание.

При работе на некоторых компьютерах с подключенным контроллером дисковода возможны глюки при прохождении теста. Дело в том, что при подключении контроллера дисковода делается доработка, которая запрещает выбор каких-либо портов при работе контроллера. К примеру, как рекомендуется делать при подключении контроллера C-48 к ZX-Spectrum:

Доработки ZX-Spectrum при подключении контроллера дисковода С-48

Разрывается проводник, идущий от выхода /IORQ процессора к схеме компьютера, и в разрыв включается логический элмент, коммутирующий сигнал /IORQ.

Это делается для того, чтобы отключить возможные конфликтующие с портами контроллера дисковода порты компьютера. В первую очередь это порт Kempston джойстика. Однако никто не станет для конкрентой модели компьютера искать что там может конфликтовать с контроллером дисковода, поэтому проще на момент работы контроллера дисковода отключить обращение к портам вообще.

Второй момент: опять же в некоторых компьютерах, доработанных таким образом, при сбросе сразу же запускается TR-DOS. Это сделано для того, чтобы каждый раз из-под BASIC не "набивать" команду RANDOMIZE USR 15616 для старта TR-DOS.

Третий момент: опять же в некоторых компьютерах ПЗУ с BASIC совмещено с ПЗУ TR-DOS в одной микросхеме. К примеру как в этом компьютере Ленинград-1:

Видно, что стоит одно ПЗУ 27512, в котором находится всё - и BASIC48, и TR-DOS и т.п. И вот при таком раскладе, если мы вставим тестовое ПЗУ и включим компьютер, мы по сбросу получим активный контроллер дисковода. При этом будет запрет обращения к портам, в том числе к портам бордюра (#FE) и расширения (#7FFD). При этом тест будет проходить без полос на бордюре и вообще завершится с ошибкой, как если бы он был запущен на 48К компьютере (порт расширения ведь недоступен!):

Прохождение теста 128К на компьютере с контроллером дисковода

В данном компьютере помогло физическое отключение контроллера дисковода (он подключен через разъём).

Я просто привёл тут этот пример как реальную ситуацию, с которой я столкнулся при прохождении теста 128К на таком компьютере.

Скачать прошивки тестовых ПЗУ

Скачать:
Прошивка теста памяти 48К для ZX-SpectrumПрошивается в 2К ПЗУ (2716, КР573РФ2, КР573РФ5)
Прошивка теста памяти 48К для ZX-Spectrum (моя версия теста памяти)
Версия от 8-Mar-2015Прошивается в 2К ПЗУ (2716, КР573РФ2, КР573РФ5).
В комплекте описание работы и исходники для iS-Assembler
Тест памяти 48К для ZX-Spectrum (из журнала "Радиолюбитель" 1995 №9)Прошивается в 2К ПЗУ (2716, КР573РФ2, КР573РФ5).
В архиве находятся два варианта теста с исходниками и скан статьи с описанием теста из журнала "Радиолюбитель"
Прошивка теста памяти 128К для ZX-Spectrum (автор Андрей Хахонов)Прошивается в 2К ПЗУ (2716, КР573РФ2, КР573РФ5)