Любопытно глянуть на практике
Любопытно, не более
Опоздало лет на 40
Самая безрассудная доработка
Вот потому и хочу посоветоваться с инженерами-специалистами.Хм. Забыл про временные нюансы форума. Выкладываю в архиве.
P.S: ИМС D14 и D20 из схемы пока не стёр, но, как и сказал выше, лучше перенести на клавиатуру их, а вместо них на процессорную плату добавить ВК28 (на место D20) и РУ8 (на место D14).
Вариант на 64 Кб
Как известно, в подавляющем большинстве Микро-ЭВМ адресация до того проста, что 64 Кб ОЗУ доступны лишь частично:Чисто ради экспериментальных размышлений тут подумалось, а что, если…
- ZX-Spectrum/48Kb: 0000…3FFF всегда отдаются под ROM, что после загрузки любой игры просто остаётся в памяти как рудимент (большинство игр само выводит текст любым собственным шрифтом, играет музыку собственными алгоритмами и т.д.)
- Орион-128: F400…F7FF - 1 Кб УВВ; F800…FFFF - 2 Кб ПЗУ (адресация ОЗУ только 61 Кб на страницу)
Конкретно в РАДИО-86РК ввести поддержку 64 Кб ОЗУ…
То есть, включать ИД7 с адресацией ВВ55/ВГ75/ВТ57/РФ2 только в том случае, если счётчик команд процессора PC>8000, чтобы только код Монитора и КНГМД мог видеть все УВВ РЛК.
Соответственно, когда счётчик команд PC<8000, приложению открываются все 64 Кб (65336 байтов) ОЗУ для чтения и записи! Ограничение лишь в том, что сам код приложения не может выполняться за границей 8000.
В то же время, при любом CALL на E001 или F803…F86C управление получит привычный код.
В рамках теоретической мелкой доработки исходной схемы РАДИО-86РК я слегка перерисовал схему:Как практик, не пока не очень силён и нету уверенности, верно ли я всё набросал.
- У ТМ2 выводы 2 и 3 отрываем от земли
- Вывод 36 ВМ80 подаём на вывод 2 ТМ2, чтобы триггер хранил флаг режима адресации «РК»/«64 Кб»
- На вывод 3 ТМ2 через элемент 3И (или три диода+резистор) подаём сигналы Ф2TTL ГФ24 вывод 6 и сигналы M1 и STB процессора с выводов 4 и 19 соответственно
- На элементах D10.1 и D10.4 собираем RS-триггер для выполнения функции вместо ТМ2 - принудительная выборка ПЗУ после сигнала Сброс
По плану, после Сброса D-триггер ТМ2 и RS-триггер D10.1/D10.4 обнуляются, элемент D10.1 принудительно выбирает ПЗУ, чтобы процессор с адреса 0000 прочёл инструкцию JMP F836, которая активирует в машинном слове статуса бит D5 цикла M1 и по стробу Ф2TTL и SYNC процессора загрузит бит "1" адреса A15 в ТМ2, который разрешит работу дешифратора адреса ИД7.
А вот при переходе на адрес 0000…7FFF по G0 циклом M1 процессор занесёт в ТМ2 бит "0" адреса A15 и дешифратор ИД7 отключится.
Естественно при отключении ИД7 необходимо к процессору подключать полный банк ОЗУ, чтобы пользовательский код имел все 64 Кб памяти.
В варианте РЛК с 16 Кб ОЗУ практически ничего не изменится.
Вывод 4 ТМ2 перемычкой «16 / 64» связан с выводом 2 D10.1 чтобы обеспечить полную обратную совместимость: Всё будет как прежде.
(Владельцы 16 Кб практически не заметят разницы.)
Если же перемычку «16 / 64» удалить (и резистором подтянуть вывод 4 ТМ2 к напряжению +5 Вольт), то для пользователя верхняя половина 8000…FFFF со всеми ВВ55/ВТ57/ВГ75 окажется вне доступа, так как там должен разместиться дополнительный банк ОЗУ. А ПЗУ E000…FFFF будет доступны только при обращениях к ним посредством команд CALL/JMP/PCHL/RET.
P.S.: Ниже - набросок схемы, которая теоретически должна обеспечить работу режима в 64 Кб.
Именно набросок, так как в работоспособности я не уверен.
Как и оригинальной схеме РЛК "Специалист", дополнительные ИМС ОЗУ можно подключить параллельно имеющимся (добавить ещё 24 ИМС РУ3), управлять которыми должен дополнительный ИД7, вывод 6 которого управляется с вывода 6 ТМ2.
Последний раз редактировалось Alikberov; 16.02.2024 в 23:08. Причина: Точнее прорисовал переделку схемы
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Ниже прикрепляю файл с LogiSim-эскизом схемы переключения режимов.
Триггер ТМ2 просто сохраняет старший бит A15 счётчика команд PC во время выборки очередного кода инструкции в цикле M1 синхронно по Ф2TTL и SYNC, когда на ШД D5 выдаётся флаг M1.
Получается, что верхний ИД7 - системный на плате РЛК активируется только на командах, работающих по адресам выше 8000 и программа Монитор работает только с ним.
Напротив, дополнительный нижний ИД7 - пользовательский и служит лишь для выбора всех верхних ячеек дополнительного ОЗУ, которое не видно из-под Монитора и открывается лишь для пользовательского кода, работающего в нижних адресах 0000…7FFF.
Разметка памяти при этом может получиться такой (на вход D подаются A13…A15 через элемент 3-И):Код:ПАМЯТЬ ПОД БСВВ / ДОС (PC>DFFF) ПАМЯТЬ ПОЛЬЗОВАТЕЛЯ (PC<E000) FFFF +-------------------------+ FFFF +-------------------------+ | ПЗУ "МОНИТОР" / ПДП | | | F800 +-------------------------+ | ОЗУ | | ПЗУ #2 / РЕГИСТРЫ КНГМД | | ПОЛЬЗОВАТЕЛЯ | F000 +-------------------------+ | (ТОЛЬКО ДАННЫЕ) | | ПЗУ "ДОС" | | | E000 +-------------------------+ E000 +-------------------------+ | ВГ75 | | | C000 +-------------------------+ | ОЗУ | | D14 ВВ55 | | ПОЛЬЗОВАТЕЛЯ | A000 +-------------------------+ | (ПРОГРАММЫ И ДАННЫЕ) | | D20 ВВ55 | | | 8000 +-------------------------+ 8000 +-------------------------+ | БУФЕР ЭКРАНА | | БУФЕР ЭКРАНА | 76D0 +-------------------------+ 76D0 +-------------------------+ | РАБОЧИЕ ЯЧЕЙКИ МОНИТОРА | | РАБОЧИЕ ЯЧЕЙКИ МОНИТОРА | 7600 +-------------------------+ 7600 +-------------------------+ | | | | | ОЗУ | | ОЗУ | | | | | | ПОЛЬЗОВАТЕЛЯ | | ПОЛЬЗОВАТЕЛЯ | | | | | | (ПРОГРАММЫ И ДАННЫЕ) | | (ПРОГРАММЫ И ДАННЫЕ) | | | | | 0000 +-------------------------+ 0000 +-------------------------+
Последний раз редактировалось Alikberov; 26.02.2024 в 14:40.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Итак, к настоящему времени удалось несколько доработать Монитор и добавить в него некоторый функционал.
- «D<начало>,<конец>» - вывод дампа в режиме 64 Кб¹
- «D<начало>,<конец>,,<1XX>» - вывод дампа ROM-диска из страницы XX²
- «D<начало>,<конец>,,<200>» - вывод дампа в режиме 16/32 Кб¹
- «L<начало>,<конец>» - вывод текста в режиме 64 Кб¹
- «L<начало>,<конец>,,<1XX>» - вывод текста ROM-диска из страницы XX²
- «L<начало>,<конец>,,<200>» - вывод текста в режиме 16/32 Кб¹
- «M<адрес>» - редактирование памяти в строчном формате (только в режиме 64 Кб¹)
- «S<начало>,<конец>,<код>» - поиск кода в режиме 64 Кб¹
- «S<начало>,<конец>,<код>,<1XX>» - поиск кода в ROM-диска из страницы XX²
- «S<начало>,<конец>,<код>,<200>» - поиск кода в режиме 16/32 Кб¹
- «T<начало>,<конец>,<куда>» - копирование блока (только в режиме 64 Кб¹)
- «T<начало>,<конец>,<куда>,<1XX>» - копирование блока ROM-диска из страницы XX²
- «X» - просмотр/редактирование содержимого регистров в строчном формате
¹-Режим «64 Кб» экспериментальный и на стандартном РАДИО-86РК никак себя не выделяет.
²-Поддерживается данная схема Апогея.
Директива «R» исключена, так как расширенный режим директивы «T» её подменяет.
Подправил подпрограмму вывода символа:
- Коды 1F/0C имеют наивысший приоритет³
- Код 1F после очистки экрана сам вызывает F82D³
- Неизвестные Esc-последовательности передаются ловушке
- Прокрутка экрана производится только в прямоугольнике 64x25 с очисткой последней строки
³-При "холодном старте" код оригинального Монитора дважды вызывал F82D и очищал служебные ячейки также и для корректной работы кода 1F, иначе при любой комбинации в ячейке 7004 код проигнорировался бы и экран не очистился, что не позволило бы нормально запуститься при первой подаче питания.
Ограничив прокрутку областью 64x25 несколько ускорился и сам процесс (примерно на 8%).
Директива «D0,FFFF»:
- В оригинале работает 434 секунды
- С моими коррекциями - 396 секунд
Количество точек вызова API-Монитора несколько расширилось:
- F836 - чтение ячейки памяти в режиме пользователя 32 Кб
- F839 - запись ячейки памяти в режиме пользователя 32 Кб
- F83C - сохранение контекста процесса
- F83F - установка режима чтения памяти и страницы ROM-Диска
- F842 - чтение ячейки ROM-Диска или УВВ
- F845 - установка адреса на пользовательскую ловушку
Собственно, F845 выполняет специальную функцию и обрабатывает ситуации с выпадением сигнала магнитофона (как в Орионе), чтобы избежать вываливания в Монитор из Бейсика при загрузке с ленты или нажатия F4 / УС+C.
А также, ей передаются и все остальные Esc-комбинации из подпрограммы F809, что позволяет расширить их набор.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Возможно стоит заменить процессор на 8086 и расширить возможности ещё больше...
Так вся соль вопроса в том, что добавляем три диода и резистор на исходную плату РК и получаем все 64 Кб.
Про перерезание дорожек я промолчу, как и про замену трёх диодов на одну ИМС К155ЛИ3, просто чтобы не завалить сигналы ВМ80.
А вот замена на ВМ86 будет настоятельно требовать совместимости с IBM PC/XT с обязательным запуском MS-DOS, для чего давно существует другой РЛК - «Поиск»…
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Ну, если по уму, тогда нужно и IBM PC/XT с нуля переразработать и устранить проблему с FPU.
На одном из профильных форумов уже поднималась тема, почему i8086 имеет набор Escape-инструкций, перенаправляемый на любой сопроцессор. Но так как рынок в первую очередь требовал работу с бухгалтерскими таблицами, а Intel ничего кроме i8087 выпускать и не думала, то начиная с i80486 буквально забили гвоздь в гроб Escape-инструкций и намертво привязали весь набор к FPU. Хотя могли выпустить и GPU-сопроцессоры, которые интегрирровались бы в саму систему команд как тот же FPU: Вместе с FINIT-инструкцией с инициализацией FPU была бы и инструкция GINIT для инициализации GPU.
Но это выходит далеко за пределы данной темы.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)