Вход

Просмотр полной версии : ROM-диск с нуля.



ppp
04.05.2020, 16:47
Уважаемые форумчане, я перечитал все статьи в журналах "Радио" и "Радиолюбитель", а так же темы на этом форуме и у соседей по теме создания ROMдисков. Полностью устраивающей меня конструкции так и не нашел, зато в голове образовалась каша. Хочу упорядочить информацию, и без вашей помощи мне не обойтись. Попробую структурировать свои вопросы.

Часть 1. Аппаратное обеспечение.
Вопрос 1.
Какого максимального размера всё-таки может быть одна страница ПЗУ большой емкости? 32кБ или 64кБ?

По информации из статьи "ПЗУ для Бейсика" (Радио, №3 за 1987г) - только 32кБ:

https://i.ibb.co/6Fd8Z54/87-3-32.png (https://imgbb.com/)

Тогда как при использовании портов B и C ППА D14 для адресации получается, что можно обратиться к 64кБ (A0-A15).
К примеру, я хочу использовать одну микросхему 29С020 объемом 256Кх8. Могу ли я, переключая (ручным или электронным переключателем, не важно) уровни на A16 и A17, получить следующую разбивку адресного пространства ПЗУ и считывать данные из любой нужной мне области с помощью директивы R МОНИТОРа?

https://i.ibb.co/zN37SSb/image.png (https://imgbb.com/)

Вопрос 2.
Я хочу ROM-диск расположить внутри корпуса компьютера, но при этом сохранить возможность использовать внешний интерфейс для других целей, когда ROM-диск мне не нужен. Слабое знание английского и смешной машинный перевод не позволяют быть уверенным, что я понял абсолютно правильно даташит на мою W29C020C (https://pdf1.alldatasheet.com/datasheet-pdf/view/47668/WINBOND/W29C020C-90B.html). Поэтому прошу подсказать:
Какие логические уровни я должен установить на выводах CE, OE и WR микросхемы ПЗУ в том случае, если:
а) мне нужно использовать ROM-диск;
б) мне нужно использовать внешний интерфейс?

То есть правильным ли будет вот такое управление ROM-диском без физического его отключения от портов ППА D14:

https://i.ibb.co/rw3xNWW/CE.png (https://imgbb.com/)

Alex_LG
04.05.2020, 19:22
Вопрос 1.
Если не изменяет память, то ограничение в 32к заложено в Монитор.
Вопрос 2.
Достаточно управлять сигналом /СЕ, /ОЕ=0, /WR=1.

PVV
04.05.2020, 20:17
Вопрос 1.
Какого максимального размера всё-таки может быть одна страница ПЗУ большой емкости? 32кБ или 64кБ?

в на 100% оригинальном мониторе - 32КБ, но если его пропатчить в 1 или 2х байтах, точно не помню, (эта прошивка есть на форуме), то будет 64КБ. Мое мнение однозначно делать 64КБ, особенно в свете второго вопроса.


Вопрос 2.
...
Какие логические уровни я должен установить на выводах CE, OE и WR микросхемы ПЗУ в том случае, если: ...

достаточно только один из CE или OE управлять, а второй всегда на 0 и WR не нужен, он всегда в 1.

ppp
04.05.2020, 21:58
Мое мнение однозначно делать 64КБ, особенно в свете второго вопроса.
Того же мнения. Мне и программки удобнее в 4 группы собрать.



эта прошивка есть на форуме
Спасибо, PVV, кажется нашел. Похоже, это прошивка от DATASoft из первого сообщения темы https://zx-pk.ru/threads/12137-radio-86rk-vneshnij-rom-disk.html

HardWareMan
05.05.2020, 08:45
Уважаемые форумчане, я перечитал все статьи в журналах "Радио" и "Радиолюбитель", а так же темы на этом форуме и у соседей по теме создания ROMдисков. Полностью устраивающей меня конструкции так и не нашел, зато в голове образовалась каша.
Больше велосипедов богу велосипедов!

parsec
05.05.2020, 11:09
Осмелюсь вставить свои 5 копеек, но расширение ромдиска до 64к снизит возможность подключения периферии через ППА. А так через старший бит порта можно разделить ещё 32к.

ppp
05.05.2020, 12:51
parsec, спасибо большое за ценное замечание. Тогда нет, лучше я поставлю внутрь 128Кх8 с самым нужным, сохранив разбивку софта на те же 4 группы, но по 32к, а всякую дребедень вынесу на внешние кассетные ROMдиски.
Вовремя вы со своими 5-ю копейками :), я уж считал, что с аппаратной частью вопрос закрыл.

Vladimir_S
05.05.2020, 13:16
ppp, Попробуй нечто подобное - 512Кб - 8 дисков по 64Кб. Чтение - запись.
https://zx-pk.ru/threads/26099-radio-86rk-plyus-sozdanie-i-obsuzhdenie-versii-2016g.html?p=891189&viewfull=1#post891189

parsec
05.05.2020, 15:16
ppp, вдогонку, при обращении к старшей части можно не только работать с периферией, но и программно переключать страницы диска.

ppp
05.05.2020, 20:15
Vladimir_S, круто! Но это мне пока рано. Цель этой темы - не соорудить сразу что-то супер-пупер, а просто разобраться самому с вашей помощью в основных принципах. Максимально придерживаясь базовой разработки. Если я буду понимать, как мне управлять страницами ромдиска с помощью галетника, то потом уже можно будет придумывать всякие навороты с дешифрацией адресов чем угодно. Спасибо ребятам, благодаря их подсказкам сегодня я уже понимаю схемотехнику всех встреченных ранее разработок ромдисков для РК. Можно двигаться дальше.

Vladimir_S
06.05.2020, 05:48
ppp, рассмотри такой вариант. Можно подключить 1Mb, во вторых после сброса или при записи 0 в ТМ2, cхема никак не влияет на
ноги порта пользователя.

kovdry
07.05.2020, 08:39
С Днем Радио всех!

В Мониторе в команде R нет ограничения на 32кБ. Вот дизассемблированый код выполнения команды R:

;----------------------------------------------------------------------------
; Выполнение команды R Монитора.
; Загрузка блока информации из ПЗУ подключенного к дополнительному ППА D14.
; Шина данных подключена к порту A. Шина адреса подключена к портам B и C.
; Загрузка в ОЗУ усуществляется начиная с адреса указанного в первом
; параметре, по адрес указанный во втором параметре. Третий параметр
; указывает начальный адрес в ПЗУ.
;----------------------------------------------------------------------------
run_R_command:
mvi a,90h ; Настроить ППА D14
sta contr_reg_D14 ; порт A на ввод, B,C на вывод.

read_loop:
shld port_B_D14 ; Выдать текущий адрес ПЗУ.
lda port_A_D14 ; Прочитать байт в A.
stax b ; Сохранить его по адресу в ОЗУ.
inx b ; Перейти к след. адресу ОЗУ
call cmp_hl_de_loop ; Проверка на конец.
jmp read_loop ; Если не конец, то продолжить.

;----------------------------------------------------------------------------
Как видим полный адрес 16 бит выдается в порты ППА B и C без каких либо ограничений.
Ограничение в 32 кБ связано в этом ROM диске с его схемотехникой.
По схеме вывод разьема для связи с ППА PC7 (проводник шины 16) подключен в выводам 20 (/OE) всех микросхем ПЗУ.
Очевидно разработчик предполагал подачу на этот контакт лог. 1, если чтение из ПЗУ не проводится.
Решение неудачное и программно не подтвержденное, так как после выполнения команды R на порт А ППА продолжают выдаваться логические уровни последнего считанного байта.

Нелепость еще больше проявляется при использовании более емких ПЗУ К573РФ4, К573РФ6, 2764 и т. д. (как в вашем случае), там верхняя половина памяти вообще становится недоступной. В этом случае я бы подключил контакт PC7 разьема к адресному входу А12 всех микросхем ПЗУ, а входы OE подключил бы на землю.

По поводу установки ROM диска внутрь корпуса. Я не рекомендую Вам этого делать. Во первых Вам необходимо будет предусмотреть на корпусе какое нибудь средство для переключения банков ROM диска. Но это не эстетично. Во вторых у Вас всегда будет соблазн дописать в ROM диск какую нибудь новую программку, а для этого нужно вскрывать корпус и вынимать ПЗУ из панельки.
Сегодня внешний ROM диск можно сделать достаточно компактным и подобрать достаточно надежный разьем.

P.S. Если все же надумаете ставить ROM диск внутрь, для отключения выводов ПЗУ, используйте вход OE. Для включения ROM диска подайте через переключатель на него лог.0, а для отключения подключите этот вход к +5В через резистор 1 кОм, и тогда ПЗУ не будет Вам мешать использовать ППА D14.

Во вложении дизассемблированый Монитор Радио-86РК.

ppp
07.05.2020, 10:33
Vladimir_S, рассмотрел. Разработка у Вас шикарная. Благодаря наличию записи она вообще лучшая из всего, что я встречал. И RKcommander (назовем его так :)) выглядит прекрасно. Но,.. существует ли где-либо в Сети полное описание этой Вашей разработки, по которому любой желающий мог бы её повторить? Схемку спаять то я спаяю, а дальше что? Мучить Вас бесконечными вопросами? А вопросов, естественно, тьма тьмущая будет.

- - - Добавлено - - -

kovdry, спасибо большое!


По поводу установки ROM диска внутрь корпуса. Я не рекомендую Вам этого делать.
Совершенно справедливое замечание для нормального конструктива. Но у меня ненормальный :). Я сделал корпус по идеологии Osborne-1. То есть, это ящик, в котором расположено всё, что нужно для того, чтобы включить и работать: сама плата РК, бп, дисплей. Закрывается ящик крышкой с клавиатурой. Сзади ящик закрывается таким же отсеком с аксессуарами: всеми нужными для работы кабелями, внешними ромдисками, программатором и т.п. Пока это еще не собрано в одну кучу, поэтому показать нечего. Но справа от дисплея у меня установлены три стандартных 5" заглушки от РС. В одной из которых и предполагается установить разъем пользовательского интерфейса, а так же галетник для переключения банков внутреннего ромдиска.

Osborne-1 - это вот это. Только у меня еще более брутально и больше похоже на ящик из-под РГД-5, т.к. собирается в условиях изоляции из того, что есть под рукой :).

https://i.ibb.co/93jgDYG/Osborne-1.jpg (https://ibb.co/93jgDYG)

Vladimir_S
07.05.2020, 10:45
Разработка у Вас шикарная.
Это не моя разработка, это с диска Специалиста. Я только добавил защиту порта пользователя.

- - - Добавлено - - -


существует ли где-либо в Сети полное описание этой Вашей разработки
Как я убедился никому это не интересно.

ppp
07.05.2020, 13:52
Как я убедился никому это не интересно.
Это не так. Думаете, я раньше не видел эту Вашу разработку? Видел. Но Вы ее представили в обществе таких же монстров, как и сами. Я почитал, тихо охренел от того сколько всего я не понимаю и по-быстрому оттуда смылся, потому что там даже свои наивные вопросы неудобно задавать. Естественно, этим динозаврам может и не интересно, им что не покажи все будет изобретением велосипеда. А если ориентироваться на таких чайников как я, которые собрать могут, но им все нужно как в журнале "Радио" разложить по полочкам, то очень даже интересно. Создайте тему "Flash-Disk для Радио-86РК" с описанием того, что оно может, как с ним работать и как подключать к РК, и сами увидите, сколько нас туда набежит :).