Отладка монитора на FPGA (Орион-ПРО)
День добрый.
Сегодня дело дошло до запуска основного ROM для Орион-ПРО, но что-то пошло не так и работает некорректно.
К железу: процессор Z80 "железный", как и память основная. Остальное всё "спрятано" в FPGA.
Проблема: при старте есть операции CALL, и там я вижу 2 записи - по адресам 0x0000 и 0xFFFF.
Вопрос: Откуда взялся SP=0???
ROM брал из архива OrionZEmu, файл ROM1-321.BIN, находится по адресу 0x0000.
Вот дизасм того места, вместе с кодом до него:
Код:
ROM:0000 ; Segment type: Pure code
ROM:0000 segment ROM
ROM:0000
ROM:0000 loc_0: ; CODE XREF: ROM:0E59p
ROM:0000 ; ROM:0E5Ap ...
ROM:0000 jp loc_15B
ROM:015B ; ---------------------------------------------------------------------------
ROM:015B
ROM:015B loc_15B: ; CODE XREF: ROM:loc_0j
ROM:015B ld hl, 0A000h
ROM:015E
ROM:015E loc_15E: ; CODE XREF: ROM:0161j
ROM:015E dec hl
ROM:015F ld a, h
ROM:0160 or l
ROM:0161 jr nz, loc_15E
ROM:0163 ld a, 98h ; 'Ш'
ROM:0165 out (3), a
ROM:0167 ld a, 92h ; 'Т'
ROM:0169 out (1Dh), a
ROM:016B ld a, 16h
ROM:016D out (3Bh), a
ROM:016F ld a, 56h ; 'V'
ROM:0171 out (3Bh), a
ROM:0173 ld a, 96h ; 'Ц'
ROM:0175 out (3Bh), a
ROM:0177 ld a, 80h ; 'А'
ROM:0179 out (7), a
ROM:017B out (0Bh), a
ROM:017D ld a, 50h ; 'P'
ROM:017F out (0Ah), a
ROM:0181 call sub_19A2
Вот то, что я вижу на анализаторе в это время:
https://image.prntscr.com/image/wk_Y...9NR-vOR5wQ.png
Сигналы, начиная с ZCLK, - сигналы на "ногах" самого Z80 (после преобразователя уровней, потому что анализатор внутри FPGA). Собственно, начало записи в память находится после пунктирной вертикальной линии.
PS: Из памяти потом читается в обратном порядке (0xFFFF, 0x0000), первое чтение вернуло ранее записанный результат (0x84). Так что преобразователи уровней тут точно не при чём - их работа стабильна "как часы", в частности переключение направления шины данных.
Тестовая прошивка не использовала CALL, а только различные переходы, потому таких проблем не было.
PPS: Тест на работу системы в целом проверен ещё и на самом "базовом" тесте, который есть и в брошурке к ПРОшке. Запуск успешен, прямоугольники по экрану бегают без помех.
Сброс процессора - стабильный, без дёрганий. Кнопку держал секунд 10 точно. Её выход ещё дебаунсером "устаканивается", что бы не было дребезга.
PPPS: Ещё однин запуск - и стартовое содержимое SP уже другое - 0x2c5e. Может процессор палёный?