b2m wrote:Обычно для разделения выборки ОЗУ или ПЗУ используется какой-либо бит (например старший) номера выбранной страницы. Например номера 0,1,2...7Fh это ПЗУ, а 80h,81h,...0FFh - это ОЗУ. Если при включении во всех 4-х регистрах номера страницы (по 16Кб) будет ноль, то получим стартовую конфигурацию, где каждые 16Кб повторяется стартовое ПЗУ, а оно, в свою очередь, сразу же включает нужные страницы (например для стека).
Ты не понял. Человек хочет получать гибкую конфу, типо:
Page0 - ROM
Page1 - RAM
Page2 - RAM
Page3 - ROM
Page4 - ROM
Page5 - RAM
....
PageN - RAM
Т.е., все адресное разделено на страницы, куда может быть замаплена одна страница ПЗУ или ОЗУ. В простейшем варианте - это страница того же номера (т.е., в PAge0 всегда 0 страница, в 1 - первая и т.д.), в расширенном - любая, задаваемая программно. Делается это регистровым файлом (по сути двухпортовое ОЗУ), каждая ячейка которого хранит старшие адреса ОЗУ и ПЗУ для каждой из страниц пространства. Для установки номеров страниц нужно в области портов отразить все эти ячейки (например, если страниц 128, то это будет 128 байт, при 8битах номера страницы), а считыватель будет выбирать номер страницы из файла согласно номеру страницы адресного пространтсва и подставлять этот номер в старшие адреса ОЗУ или ПЗУ. Достаточно или нет?