Всем привет. Я тот самый перец, фанат Спеца, что собирает его на макетке на дискретах. :3 Все видеоролики тоже мои. И контроллер SPI с аппаратным сдвигом + идея загрузки монитора в ОЗУ в стандартном Спеце тоже. Можете задавать свои вопросы по схеме мне лично.
Сейчас я хочу собрать дешифратор, который распределит адреса ресурсов. Предварительная схема вот:
Напомню, что имиджшак с некоторых пор не зарегистрированным показывает лягушку в кубе льда, так что, если не видно, то залогиньтесь на нем. Я не буду копипастить то, что написал на соседнем форуме, да и тот текст fifan, не осилил без пива, а выпив пива стало еще хуже. Поэтому объясню в краце.
Двухбитный регистр режима остался. Только в МХе он имеет всего 3 состояния (RAM/RAMDISK/ROM), а я использовал все 4е: RAM/RAMDISK/ROM/STD. Первые три полностью повторяют стандартный МХ. Последний включает режим стандарта (не МХ). По сбросу, режим 3 (стандарт). При этом, ПЗУ включено. В стандартном режиме ПЗУ отключается другим портом. Замечу, что ПЗУ всегда 32КБ в режиме 2 (МХ) или 3 (стандарт). Но, в принципе, можно и 48К, только вот при поддержки SD карты это не нужно: в 32К влезет все, что требуется постоянно. Удобство в том, что программам в ПЗУ будет доступен экран: можно печать символа и знакогенератор держать в ПЗУ, освободив ОЗУ для более важных задач. Теперь просто суммарная карта памяти во всех режимах:
Код:
Карта портов:
Адрес Размер Назначение
IOP+00h 4 U7, порт клавиатуры
IOP+04h 4 U6, порт программатора
IOP+08h 4 U5, дисковод #1
IOP+0Сh 4 U4, таймер
IOP+10h 4 U3, Контроллер SPI для SD/MMC карт (дисковод #2)
IOP+14h 4 U2, резерв
IOP+18h 2 U1.0, цвет
IOP+1Ah 2 U1.1, включение/выключение ПЗУ в стандартном режиме
IOP+1Ch 4 U0, регистр режима
Режим 0:
0000h...FFDFh - RAM: основное ОЗУ, в том числе экран.
FFE0h...FFFFh - IOP: порты ввода-вывода.
Режим 1:
0000h...FFBFh - DISK: RAM диск.
FFC0h...FFDFh - RAM: окно процессора, основное ОЗУ.
FFE0h...FFFFh - IOP: порты ввода-вывода.
Режим 2:
0000h...7FFFh - ROM: ROM диск МХа.
8000h...FFDFh - RAM: основное ОЗУ.
FFE0h...FFFFh - IOP: порты ввода-вывода.
Режим 3 (ROM_EN=0):
0000h...7FFFh - ROM: ROM диск стандартного специалиста.
8000h...EFFFh - RAM: основное ОЗУ стандартного специалиста.
F000h...F7FFh - IOP: порты ввода-вывода.
F800h...FFFFh - U7: системный ППА (порт клавиатуры).
Режим 3 (ROM_EN=1):
0000h...EFFFh - RAM: основное ОЗУ стандартного специалиста.
F000h...F7FFh - IOP: порты ввода-вывода.
F800h...FFFFh - U7: системный ППА (порт клавиатуры).
Поясню, что бит признака ROM_EN доступен по адресу U1.1. По сбросу устанавливается Режим 3, ROM_EN=0. Программа стартует и выводит выбор режима. Если выбран стандарт, то проверяет карту, если находит системный монитор там, то грузит его, отключает ПЗУ и запускает (для буфера используется экран, так что ОЗУ пользователя не портится: сброс машины не деструктивен, только восстанавливает систему). Если выбран МХ, то загрузчик включает Режим 2 и запускает пЗУ с адреса 0000h. Это дает возможность использовать стандартный софт МХа. У МХа и стандартного режима разные страницы ПЗУ. Режим 0 включается записью в порт U0.0, Режим 1 включается записью в порт U0.1, Режим 2 включается записью в порт U0.2 и Режим 3 включается записью в порт U0.3 (или по сбросу). Таким образом, в стандартном режиме это ячейки F7FCh...F7FFh, а в режиме МХа FFFCh...FFFFh соответственно.
На счет окна процессора (не переключаемое основное ОЗУ по адресу FFC0h...FFDFh) у меня были свои мысли. Удобнее было бы, если бы оно занимало весь блок FFxx (с портами естественно, т.е. окно по адресам FF00h...FFDFh), это бы повысило удобство пользования ПЗУ и RAM диска (развиты шлюз переходов позволяет запускать программы и подпрограммы прямо в ПЗУ и RAM диске). Но не знаю, как к этому отнесется стандартный софт МХа. Поэтому, пока оставлено как есть.
Обсуждаем (пока я собираю).