6 / 9 288
Версия для печати
Тесты памяти для 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 и объединялись следующим образом:
Вставляется такая микросхема в панельку так, как показано на фотографии:
Думаю, на фотографии всё ясно видно. Контакт 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 в случае использования теста на компьютере «Байт».
Тест ПЗУ для 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), Петербург. Этот тест позволяет быстро проверить память в ZX-Spectrum 128K. Как проходит тест на исправном компьютере можно посмотреть на следующем видео:
Прохождение теста 128К на исправном компьютере
Описание работы теста:Порой результаты теста вызывают вопросы - что такое буфер и порт конфигурации? Что значит ошибка буфера? Сейчас я обо всём расскажу :) Если при старте теста держать нажатой клавишу «пробел», сначала запустится тест экрана:
Затем тест продолжится. - Тест буфера. Проверяется одна ячейка памяти по адресу #4000. В неё записываются значения от #00 до #FF с последующей проверкой. Если всё в порядке, выводится сообщение об успешной проверке:
В случае несовпадения записанного и считанного значения появляется сообщение об ошибке:
В данном случае ошибка показывает, что по адресу #4000 записано значение #FF, а при проверке прочитано #EF. - Тест - порт конфигурации. В каждый из 8 банков памяти по адресу #C000 записываем значения с номером банка памяти (В банк 0 - значение 0, в банк 1 - значение 1 и так далее). После проверяем: снова перебираем банки памяти от 0 до 7 и сравниваем, чтобы прочитанное из #C000 значение совпадало с номером банка памяти. Такие циклы запись/проверка повторяются 256 раз. Кроме этого для банка памяти 2 записанное в #C000 значение должно одновременно читаться и из адреса #8000 - это тоже проверяется! Если всё в порядке, выводим сообщение об успешной проверке порта конфигурации:
В случае несовпадения одного из считанных значений выводится сообщение об ошибке порта конфигурации:
БАНК - номер банка ОЗУ, где произошла ошибка. СЕКТОР - номер области памяти (CPU0-CPU3), где произошла ошибка:
ЗАПИСАНО и СЧИТАНО - значения, соответственно, записанные в #C000 и потом считанные из #C000. Конкретно это сообщение об ошибке (как на скриншоте выше) появляется если запустить тест 128К на 48-килобайтных ZX-Spectrum. Почему так получается: так как банки ОЗУ не переключаются (компьютер-то 48-килобайтный), тест в цикле пишет в #C000 значения от 0 до 7. И потом при проверке для банка 0 мы получаем прочитанное из #C000 значение, записанное для последнего в цикле банка памяти (банк №7). Что и видно на скриншоте :) На этом этапе теста ошибки порта конфигурации обычно говорят о том, что в компьютере что-то не так с переключением банков ОЗУ. Также, если микросхемы ОЗУ (или даже одна микросхема) неисправны, даже при корректной работе схемы расширения будет ошибка, т.к. из #C000 может читаться "мусор". - Тест - ОЗУ. На данном этапе идёт проверка всех ячеек памяти разными алгоритмами. Для наглядности номер банка памяти показывается цветом бордюра (0-й банк - черный бордюр, 1-й банк - синий бордюр, и так далее). Если всё в порядке, получаем сообщение об успешном завершении теста:
В случае ошибки выводится сообщение вида:
БАНК - номер банка ОЗУ, где произошла ошибка. СЕКТОР - номер области памяти (CPU0-CPU3), где произошла ошибка. АДРЕС - адрес ячейки памяти, где произошла ошибка. ЗАПИСАНО и СЧИТАНО - значения, соответственно, записанные в ячейку памяти и потом считанные из неё. По окончании теста ОЗУ он запускается снова, но в непрерывном режиме. Все банки ОЗУ проверяются без остановки. Если всё в порядке, на экран не выводится никаких сообщений. Удобно для длительной проверки ОЗУ - к примеру как оно себя поведёт при прогреве компьютера. Можно спокойно оставить тест на длительное время. В случае возникновения ошибки будет выведено сообщение вида:
Некоторые нюансы работы теста 128К на компьютерах с контроллерами дисководаПри работе на некоторых компьютерах с подключенным контроллером дисковода возможны глюки при прохождении теста. Дело в том, что при подключении контроллера дисковода делается доработка, которая запрещает выбор каких-либо портов при работе контроллера. К примеру, как рекомендуется делать при подключении контроллера C-48 к ZX-Spectrum:
Разрывается проводник, идущий от выхода /IORQ процессора к схеме компьютера, и в разрыв включается логический элмент, коммутирующий сигнал /IORQ. Это делается для того, чтобы отключить возможные конфликтующие с портами контроллера дисковода порты компьютера. В первую очередь это порт Kempston джойстика. Однако никто не станет для конкрентой модели компьютера искать что там может конфликтовать с контроллером дисковода, поэтому проще на момент работы контроллера дисковода отключить обращение к портам вообще. Второй момент: опять же в некоторых компьютерах, доработанных таким образом, при сбросе сразу же запускается TR-DOS. Это сделано для того, чтобы каждый раз из-под BASIC не "набивать" команду RANDOMIZE USR 15616 для старта TR-DOS. Третий момент: опять же в некоторых компьютерах ПЗУ с BASIC совмещено с ПЗУ TR-DOS в одной микросхеме. К примеру как в этом компьютере Ленинград-1: Видно, что стоит одно ПЗУ 27512, в котором находится всё - и BASIC48, и TR-DOS и т.п. И вот при таком раскладе, если мы вставим тестовое ПЗУ и включим компьютер, мы по сбросу получим активный контроллер дисковода. При этом будет запрет обращения к портам, в том числе к портам бордюра (#FE) и расширения (#7FFD). При этом тест будет проходить без полос на бордюре и вообще завершится с ошибкой, как если бы он был запущен на 48К компьютере (порт расширения ведь недоступен!):
Прохождение теста 128К на компьютере с контроллером дисковода
В данном компьютере помогло физическое отключение контроллера дисковода (он подключен через разъём). Я просто привёл тут этот пример как реальную ситуацию, с которой я столкнулся при прохождении теста 128К на таком компьютере. Test 128K для компьютера «Байт»"Обычный" тест 128К хоть и будет работать на компьютере «Байт», но всё время его работы вас будет сопровождать «гудение» из динамика, т.к. музыкальный синтезатор КР580ВИ53 некому заглушить. Чтобы можно было комфортно пользоваться тестом 128К я его немного переписал - ввёл в тест процедуру «глушения» для ВИ53. Теперь достаточно при включении компьютера с установленной тестовой микросхемой ПЗУ держать нажатой любую клавишу из полуряда «CS,Z,X,C,V» для «заглушения» ВИ53. Можно один раз «заглушить» звук - при последующих запусках теста через RESET больше не нужно ничего нажимать при старте. В этом тесте дополнительно к названию теста выводится строка «БАЙТ»:
Во всём остальном это самый обычный тест ОЗУ 128К, и может без каких-либо ограничений использоваться на других 128К Спектрумах.
Test 48/128K для компьютера «Байт»Это просто компиляция двух тестов - 48К и 128К в одном ПЗУ объёмом 8К (2764). При старте происходит «глушение» синтезатора ВИ53 (актуально для компьютера «Байт»). Далее опрашивается клавиатура. Если при старте ПЗУ будет нажата любая клавиша из полуряда 1-5, запустится тест 128К, иначе будет работать тест 48К. Тест хоть изначально делался для «Байтов», но будет работать и на обычных Спектрумах.
Скачать прошивки тестовых ПЗУ
|