PDA

Просмотр полной версии : Компьютер "Байт", Z80 - тест ОЗУ



BorisBritwa
19.01.2021, 21:34
Имеется не рабочий компьютер "БАЙТ". Внутренний тест ОЗУ и ПЗУ зажатием кнопок « ЫВА+RESET» не работает. Все , что можно было проверить тестером и осциллографом проверено. Хотелось бы попробовать соорудить свой внешний ROM диск для проверки ОЗУ.Для этого необходимо разобраться в программной части которая проверяет ОЗУ.С ассемблером дела не имел вот прошу проверить соответствует ли действительности то, что я написал ниже.Суть записать все ОЗУ с адреса 0x4000 по 0xFFFF кодом 0xAA с проверкой записанного.Пока без вывода информации. Я пытался разобраться в выложенной тестовой прошивке но там пока не все понятно. Не знаю как правильно вставить код? В идеале хочется доработать чтобы оно пропиликало номер не исправной ОЗУ микросхемы.



OZU LD HL,#4000; заносим начало ОЗУ в регистр HL
LD(HL),#AA; запись ОЗУ кодом 0хAA
ERR LD A,(HL); читаем что находится по адресу ОЗУ указанному в рег.HL
CP #AA; проверяем совпадает ли с тем что мы записали
JR NZ,ERR; если не совпадает, зацикливание при ошибке
INC HL; увеличиваем значение в рег. HL + 1, след. адрес ОЗУ
XOR A; очищаем регистр аккумулятора
CP H; проверяем не обнулился ли MSB, обнулится когда произойдет переполнение после 65535 ОЗУ закончилось
JR NZ,OZU; если мы не прошли все ОЗУ, прыгаем на метку OZU

Eltaron
19.01.2021, 21:46
Метку OZU надо поставить на вторую строку, иначе каждый раз будет проверяться адрес #4000. И после AA лучше ещё проверить кодом 55, а то проверяя всю память всего одним константным кодом запросто можно пропустить битую РУ-шку.

А зачем ROM-диск, можно же просто заменить оригинальную ПЗУ на ПЗУ с тестом? Или микросхема впаяна?
Ну и уже же есть готовые, провереные десятилетиями тесты - http://zxbyte.ru/test_rom_for_zx-spectrum.htm или тут на форуме поискать.

BorisBritwa
19.01.2021, 22:11
А зачем ROM-диск, можно же просто заменить оригинальную ПЗУ на ПЗУ с тестом? Или микросхема впаяна?
Ну и уже же есть готовые, провереные десятилетиями тесты - http://zxbyte.ru/test_rom_for_zx-spectrum.htm или тут на форуме поискать.

ПЗУ запаяна.У меня руки из того места и есть все необходимое.Это будет самый простой способ) ремонта и я ничего не узнаю(как оно работает). Я и изучал готовое тесты но мне там не все понятно.Хочется разобрать пока мини версию(без работы с экраном,а то приходится возить за 20 км к подходящему телевизору). Да и хотелось немного в ассемблере разобраться на данном примере. Далее как я понял нужно определить бит который не правильно читается и на основании адреса (первая или вторая линейка ОЗУ)определится с номером микросхемы. Как сделать короткий "ПИП" звуковой сигнал(Порт FE 4 бит вроде за динамик ответственный)?

Eltaron
19.01.2021, 22:33
Это будет самый простой способ) ремонта и я ничего не узнаю(как оно работает).
А, понимаю :)

Бипнуть можно как-нибудь так:


DEVICE ZXSPECTRUM48
ORG #8000
CALL BEEP ; бипаем,
DI ; а затем
HALT ; стопаем проц

BEEP XOR A
LD H, #30
loop OUT (#FE), A
XOR #10
LD B, A
LD DE,#300
delay DEC DE
LD A, D
OR E
JR NZ, delay

DEC H
RET Z
LD A, B
JP loop

SAVESNA "sound.sna", #8000



Дергаем XOR-ом 4-й бит туда-обратно, между этим крутим пустой цикл ожидания. Меняя константу #300, меняем высоту. Меняя константу #30 - длительность

- - - Добавлено - - -

ЗЫ Сверху вызов - это чисто пример. В условиях потенциально битой памяти нехорошо пользоваться CALL, она стеком пользуется. Надо всё делать на JP или JR.

Serg6845
20.01.2021, 11:48
Дергаем XOR-ом 4-й бит туда-обратно, между этим крутим пустой цикл ожидания. Меняя константу #300, меняем высоту. Меняя константу #30 - длительность


а я бы сделал XOR #1F, тогда и в магнитофон пищать будет и на бордере полоски...

BorisBritwa
20.01.2021, 12:16
Спасибо буду разбираться. И еще вопрос на каком программном эмуляторе лучше проверить этот код ? Эмуляция звука, памяти как у "Байта" и видео. Желательно построчная отладка с возможностью смотреть, что находится в регистрах процессора и по адресам в памяти (во загнул).Можно пару эмуляторов от простого.

Eltaron
20.01.2021, 12:32
Спасибо буду разбираться. И еще вопрос на каком программном эмуляторе лучше проверить этот код ? Эмуляция звука, памяти как у "Байта" и видео. Желательно построчная отладка с возможностью смотреть, что находится в регистрах процессора и по адресам в памяти (во загнул).Можно пару эмуляторов от простого.
В принципе, эмулятор подойдет любой. Но именно Байт заэмулирован, например, в ZXMAK2 (https://github.com/zxmak/ZXMAK2/releases/tag/v2.9.3.8). Меню VM-Settings-Wizard-BYTE
Отладчик там не идеальный, но есть.

BorisBritwa
24.01.2021, 18:28
Машину настроил.Файл справки как пользоваться не работает.Я так понял нужно скомпилировать ассемблерный код и открывать через File-Open..?
Ну и какой компилятор посоветуете под Z80(win7x64)?

Eltaron
24.01.2021, 18:35
Машину настроил.Файл справки как пользоваться не работает.Я так понял нужно скомпилировать ассемблерный код и открывать через File-Open..?
Ну и какой компилятор посоветуете под Z80(win7x64)?
Ассемблер sjasmplus: https://github.com/z00m128/sjasmplus/releases/tag/v1.18.0

Пример кода есть в сообщении #4. На выходе будет .sna-файл, который можно открыть через File-Open или перетащить мышью
Но там весь код в ОЗУ. В принципе, для начала можно всё в ОЗУ и отладить.
А чтобы отлаживать ПЗУ, придется залезть внутрь ROMS.PAK (это обычный zip-архив) и подменить соответствующий файл прошивки на свой.

ZXMAK
27.01.2021, 06:58
А чтобы отлаживать ПЗУ, придется залезть внутрь ROMS.PAK (это обычный zip-архив) и подменить соответствующий файл прошивки на свой.

Можно в ROMS.PAK не залазить, а создать рядом папку ROMS и в неё класть измененные файлы.
Эмулятор вначале ищет файлы в папке ROMS и если не находит, тогда в ROMS.PAK

BorisBritwa
24.04.2021, 19:57
Ремонт моего Байта идет полным ходом(сделал и подключил внешний ROM), устранил пару неисправностей.Теперь встроенный тест запускается, но к нужному телику доступа пока нет из-за "Короны". Не играет собачий вальс..Написал тест ОЗУ . Должно работать так если не исправна первая половина ОЗУ например 7 бит пропиликает 8 рас, если вторая половина ОЗУ то 16 рас.Если неисправен нулевой бит, то пропиликает один рас.Если несколько битов не исправны то будет пиликать по последнему.
На ассемблере никогда не писал но вроде на компе работает.
Может кто-то чего подправит или посоветует по написанной прошивке.