Тип номер устройства и номер страницы - это совсем разные сущности, которые привязаны к одинаковым окнам. Два регистра для номера девайса обязтельно нужны. это определяет тип памяти - RAM, ROM, палитра, символьный экран, другие типы устройств на будущее.
ИР26/ИР32 - это не простро регистр, а 4 регистра + дешифратор + мультиплексор. Просто так его состояние не прочитать. Если делать на других микросхемах, вместо двух ИР26 надо 4*ИР23 + ИД7 + 4*КП12. И все равно состояние этих регистров не прочитать. Надо будет еще 4*КП12 и ИД7.
Если надо читать состояние портов, то проще для этого использовать кэш. В нем для этого использовать младшие 256 ячеек и записывать одновременно с записью в порты значения для всех 256 портов с восьмибитной адресацией. Когда надо - читаем значение соответствующей ячейки из порта номер FF. В старшем байте указать адрес требуемой ячейки. На входе микросхемы поставить 2*КП11 для коммутации адреса. Если младший адрес FF, то к адресам памяти подключать старший байт шины адреса, Иначе - младший байт.
Можно для номера девайса оставить 4 бита и уберать из схемы коммутатора четвертый ИР32. При этом упростятся дешифраторы на модулях памяти.
Тогда номера устройств такие:
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010 - память палитры
1011 - память символьного экрана
1100 - RAM mode 0 (чтение и запись)
1101 - RAM mode 1 (только чтение)
1110 - картридж mode 0 (чтение и запись)
1111 - картридж mode 1 (только чтение)
Остается 10 свободных номеров. Хватит наверно. Хотя для подключения DRAM 32 Мбайт надо 8 номеров. Подобное было в истории ZX Spectum, когда для экономии на дешифрации портов использовали 1 бит, полагая, что 8 портов хватит на все случаи жизни.
Давайте подумаем, какие устройства с памятью могут потребоваться и стоит ли обрезать количество битов в номере девайса до 4 и упрощать дешифраторы.





Ответить с цитированием