PDA

Просмотр полной версии : Тестовое ПЗУ для ZX-Spectrum, работающее без ОЗУ



KenKo
05.12.2018, 00:21
Доброго времени суток!

Разбираясь со старыми ПЗУшками, нашел микросхему РФ2, прошитую тестом для ZX-Spectrum.
Этот тест я написал в 1988 году. Его основная фича - работа без использования ОЗУ.
Уже не помню подробностей, но, видимо, если ОЗУ хоть как-то всё же работает, то можно увидеть циферки (номер теста) на экране. А если ОЗУ полностью неисправно или отсутствует, то тест все равно работает - читает/пишет память, выводит байты в порт цвета бордюра, пищит на ошибки ОЗУ. Т.е. можно искать причину неисправности осциллографом.

Исходники теста вряд ли сохранились - тогда всё было на кассетах :smile:
А вот РФ2 прочиталась без ошибок, хотя и прошло 30 лет. Сама микросхема тоже 1988 года, коричневая керамика :v2_thumb:
Выводы 21 и 24 отогнуты вверх, соединены между собой и к ним припаян проводок с выводом, который можно втыкать в 28-й контакт 28-выводной панельки (в те времена 2764 были дефицитом, поэтому для тестовых ПЗУ старались использовать что попроще).
Сейчас этот тест можно записать в 2764. Должен работать.
Сам тест занимает очень мало места. Оставшийся объем ПЗУ заполнен текстовой инструкцией. Вот она (с минимальными корректировками):
---
При прохождении теста на экран выводятся 2 цифры: первая - номер теста, вторая - его параметр.
0 - перебор цветов точек на экране дисплея от 0 до 7.
1 - перебор цветов фона от 0 до 7.
2 - перебор цветов бордюра от 0 до 7.
3 - вкл. повышенной яркости (параметр=1).
4 - вкл. мигания (параметр=1).
5 - тест ОЗУ дисплея по адресам 5B00H...7FFFH.
6 - тест ОЗУ по адресам 8000H...0BFFFH.
7 - тест ОЗУ по адресам 0C000H...0FFFFH.
При прохождении тестов ОЗУ в качестве параметра теста выводится номер отказавшего разрядa 0...7, причем проверка начинается с разряда D0.
Поэтому, если выводится параметр "0", то можно сказать, что озу совсем не работает.
При ошибке выдаётся звуковой сигнал. Появляющийся в правом верхнем углу экрана квадратик означает, что ОЗУ проверяется на запись байтов "0FFH", его отсутствие - запись нулей.
Тестовые программы работают без использования ОЗУ.
---
Вот так, только благодаря инструкции, прошитой в ПЗУ, тест не был потерян навсегда :v2_dizzy_ironic:
Возможно, он кому-то пригодится и даже понравится :v2_blush:
У меня сейчас нет возможности проверить его работу.

UPD: Проверил работу теста под эмулятором UnrealSpeccy.
Для этого пришлось скомпоновать 16K-образ ПЗУ из восьми исходных 2К-образов и получившийся в результате файл SOS.ROM подкинуть эмулятору. Этот SOS.ROM (прилагаю) можно записать в микросхему ПЗУ 2764, чтобы использовать на реальном железе.

Тест работает, сделал скриншот :smile:
В дополнение к вышеприведенному описанию:
- тесты памяти 5-6-7 циклически повторяются;
- если ошибок в памяти нет, на месте второй цифры выводится буква "G" (Good).

PATHNK
05.12.2018, 09:50
без использования ОЗУ.
Ничего на экране не будет, если не работает ОЗУ для видео. Есть модели с 2 линейками: ОЗУ и основная память (Краснодар) и с одной (Ленинград).
Ваш тест ничем не отличается от обычного.
Есть вариант хитроумно выводить что-то на бордюре, но из-за различных "таймингов" и чисел строк в кадре нужно будет под каждую модель подстраиваться.
Второй вариант выводить просто ошибки цветом бордюра или "пикать" через динамик - малоинформативно.

KenKo
05.12.2018, 13:19
Ваш тест ничем не отличается от обычного.
Без проблем. Пользуйтесь обычным. Я же не настаиваю :smile:
Кстати, когда появился этот "обычный", не подскажете?

CodeMaster
06.12.2018, 11:22
Второй вариант выводить просто ошибки цветом бордюра или "пикать" через динамик - малоинформативно.
Для теста ОЗУ этого достаточно. ОЗУ надо чинить в первую очередь, а потом будет картинка.

KenKo
06.12.2018, 13:41
Для теста ОЗУ этого достаточно.
Да, но, по-идее, эти большие цифры должны быть видны сквозь "мусор" на экране даже при очень сильно сбоящем ОЗУ, т.к. они рисуются в области аттрибутов.
А для работы самого теста важна только исправность шины данных и управляющих сигналов между CPU и ROM, а также исправность шины адреса в пределах первого килобайта (т.е. до 3FFh - столько места занимает тест). Пригляделся к прошивке и вспомнил один ньюанс - там, в конце программы зашита табличка с заранее вычисленными адресами для команд возврата. На эту область настраивается указатель стека :smile:

goodboy
06.12.2018, 15:32
в конце программы зашита табличка с заранее вычисленными адресами для команд возврата. На эту область настраивается указатель стека
в похожем тесте активно используется jp (ix/iy), а у тебя я смотрю индексные регистры вообще не задействованы

KenKo
06.12.2018, 15:59
индексные регистры вообще не задействованы
Вполне возможно такое.
Систему команд Z80 тогда только начинал изучать, да и документации было маловато, мягко говоря (интернет был недоступен).
Проще было по-старинке, на асме 8080 :smile:

goodboy
06.12.2018, 16:45
понятно, я просто забыл год выпуска.
представляю каково было отлаживать (прошил/проверил/стёр/прошил .....)

KenKo
06.12.2018, 17:47
(прошил/проверил/стёр/прошил .....)
Не, это слишком круто. Берегли ресурс ПЗУ, отлаживали "в уме" - с карандашом, по бумажке. Ассемблировали тоже вручную, "по таблице". Потом, правда, уже задышала CP/M, стало проще :smile:
С сегодняшней точки зрения все это выглядит как закат солнца вручную.. Но были и плюсы - набрав однажды с тумблеров 2К монитор для Микро-80, запомнил двоичную систему навсегда :smile:
Очень трудно было с доставаемость всего. Даже кнопки для клавиатуры не так просто было найти, не говоря уже про микросхемы. Процессор для первого в Брянске спектрума одолжили ребята с рязанского завода САМ (это был чип от MOSTEC, запомнилось почему-то). Потом пришлось его вернуть. А печатную плату привезли из Вильнюса (вариант "Сантака", с тремя рядами памяти).
Вот клавиатура для спектрума тех времён. Слабонервным не смотреть :smile:

siemensC35
06.12.2018, 18:11
представляю каково было отлаживать (прошил/проверил/стёр/прошил .....)
возможно автор использовал РУ10 для отладки
http://shoorick.ho.ua/prog/
-----------
автор уже ответил, 1000 извинений

blackinwoman
28.02.2019, 17:39
KenKo, большое спасибо за ТЕСТ, реально он очень наглядно помогает

IREK
09.11.2024, 09:35
Чтоб нормально работал тест на программе WinHEX соединил 16 раз и прошил в РФ8, правильно сделал?