Так устроит?
Вид для печати
Вот так устроит, если вы хотите удобства для читателей:
http://s017.radikal.ru/i417/1111/b3/8f6df96b4323.png
Вот про то, как будет читаться по адресам, отличным от 0,801h,1002h,1803h... поподробнее. Или для старших адресов всё-таки регистр с мультиплексором будет?
---------- Post added at 00:02 ---------- Previous post was at 00:00 ----------
Не, лучше два регистра с трёхстабильным выходом, а то много мультиплексоров надо будет.
---------- Post added at 00:03 ---------- Previous post was at 00:02 ----------
Или регистр и шинный формирователь.
Я боюсь, что любой внешний сайт через 10 лет пропадет. А статьи на этом сайте живут гораздо дольше. Я очень не хочу, что бы тема осталась, а схемы исчезли.
Я сейчас размышляю, как устроить чтение. Для управления входом R/С я уже передумал использовать линии A11,A12. Я буду использовать A14, A15, так легче писать программу. И микросхему 155ЛА3 заменю на 155ЛЕ1 (ИЛИ НЕ).
; A0-A10, 14 бит - это спад R/C, 15 бит - это блокирование генератора
ld hl, 0F800H
ld (0EE01h), hl
; A11-A19, 14 бит - это подъем R/C, 15 бит - это блокирование генератора
push hl
ld hl, 0B800H
ld (0EE01h), hl
pop hl
ld a, (0EE00h)
---------- Post added at 22:22 ---------- Previous post was at 22:19 ----------
Или с переменными:
readByte:
ld (0EE01h), hl ; A0-A10, 15 бит - это спад R/C, 14 бит - это блокирование генератора
push hl ; A11-A19, 15 бит - это подъем R/C, 14 бит - это блокирование генератора
ld hl, (bank)
ld (0EE01h), hl
pop hl
inc l
call z, incBank
ld a, (0EE00h)
ret
bank dw 0B800H
incBank:
inc h
ret nz
ld hl, 0F800h
inc (bank)
ret
---------- Post added at 22:27 ---------- Previous post was at 22:22 ----------
Хочется как можно проще. 155ЛЕ1 + ПЗУ
UPD: Эта схема устарела, ищи новую дальше по форуму.
http://s017.radikal.ru/i418/1111/63/33686d7dc0cb.png
А почему не завести R/C на сободную адресную линию типа A15, и таким образом не управлять процессом? Безо всяких генераторов?
То есть монитор будет читать загрузчик по адресам 0,801h,1002h,1803h... а уж этот загрузчик будет читать остальное? Не слишком ли сложно будет потом пропускать эти байты при нормальном чтении?
Да.
Архиватор работает последовательно, поэтому сложности пропускать 1 байт не составит. Условие типа:
if(bank==offset) offset++;
Сложность, сделать это без заметных тормозов. Я сейчас как раз над этим думаю.
Можно еще начинать чтение каждой страницы со смещения 1. А потом этот адрес чтения XOR-ить на номер банка. Таким образом мы никогда не обратимся к адресам: 0,801h,1002h,1803h
---------- Post added at 23:54 ---------- Previous post was at 23:42 ----------
Начальный загрузчик будет размером всего 35 байт, следовательно для программ размещенных после адреса 35 * 2048 + 35 = 71715 не требуется пропускать байт. И можно применить упрощенный и более быстрый загрузчик.
А что читается на шине данных, при R/C = 0? Там предыдущие данные, или же Z-состояние?
предыдущие данные