Ждем эмулятор :)
---------- Post added at 19:27 ---------- Previous post was at 19:15 ----------
Я думал, что тут есть ПЗУ дисковода по адресу B000. Выходит его нет. Обидно.
Вид для печати
Ждем эмулятор :)
---------- Post added at 19:27 ---------- Previous post was at 19:15 ----------
Я думал, что тут есть ПЗУ дисковода по адресу B000. Выходит его нет. Обидно.
vinxru, схема ещё не дорисована до конца, а я уже, похоже, ошибку нашёл :)
Выход D39:A должен быть, по идее, не инверсным (либо после него ещё инвертор стоит).
Разбираясь с картой памяти, обнаружил, что она различна для разного кода (ещё один нестандартный подход). Т.е. зависит от того, в какой области выполняется код. В итоге, на данный момент, получились такие области:
0000-00FF после сброса и при определённых условиях (обратный ход и флаг разрешения) ПЗУ, иначе ОЗУ
0100-BFFF всегда ОЗУ
C000-C7FF код выполняется из ОЗУ, код из ПЗУ читает ПЗУ
C800-CFFF код выполняется из ПЗУ
D000-FFFF код выполняется из ПЗУ, код из области C000-CFFF читает ОЗУ (экран)
D39:A отключает ПЗУ, если код выполняется из области C000-C7FF (чтение из экрана для пользовательских программ)
ПЗУ также отключается сигналом С94, происхождение которого пока непонятно. Т.е. доступ ко всей памяти 64Кб.
b2m, Про мистическое ПЗУ B000 (пзу дисковода) не забываем.
Хотя, может я и ошибаюсь. Вполне возможно, что D39:A отвечает за ту самую дырку в ПЗУ C800-CFFF, т.е код не из области C000-CFFF читает по этим адресам из ОЗУ. Но тогда там должно быть И-НЕ.
Уточним:
C800-CFFF код выполняется из ПЗУ, код не из области C000-CFFF читает ОЗУ (системные переменные)
---------- Post added at 15:19 ---------- Previous post was at 15:17 ----------
Можно поставить эксперимент: в области C000-C7FF записать программку, которая копирует область C800-CFFF в ОЗУ, должно быть содержимое ПЗУ!
---------- Post added at 15:24 ---------- Previous post was at 15:19 ----------
Это значит, что программа, расположенная по адресам C800-FFFF, считает из области C000-C7FF содержимое ПЗУ (что и получилось в ходе записи ПЗУ на магнитофон), а остальной код будет считывать ОЗУ.
---------- Post added at 15:41 ---------- Previous post was at 15:24 ----------
Непонятно, однако, с этой областью C800-CFFF. Код в этой области работает и со стеком, а он назначен на эту-же область. Как это работает? Или это из-за загадочного сигнала C94?
---------- Post added at 15:44 ---------- Previous post was at 15:41 ----------
Т.е. стековые команды по-любому работают с ОЗУ. Ахренеть. Три разных адресных пространства :)