Радио-86РК: Расширение ОЗУ

Перейти вниз

Радио-86РК: Расширение ОЗУ

Сообщение  Viktor2312 в Вс Янв 22 2017, 14:16

Данная тема создана с перспективой на будущее и вообще потому, что такое существует в природе. Я выложу здесь ту информацию, которая мне доступна и как вроде связанна с данной темой. В надежде, что пользователи поправят меня, если что, и дополнят тему в будущей перспективе...
avatar
Viktor2312
Гуру+

Сообщения : 10973
Дата регистрации : 2012-08-10
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Радио-86РК: Расширение ОЗУ

Сообщение  Viktor2312 в Вс Янв 22 2017, 14:16

резерв.
avatar
Viktor2312
Гуру+

Сообщения : 10973
Дата регистрации : 2012-08-10
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Вариант расширения ОЗУ до 48 кб на базовой плате

Сообщение  barsik в Пт Сен 01 2017, 09:16

Самый минимальный вариант расширения ОЗУ РК86 это организация окна ОЗУ в 8 кб на месте доп.ППА по адресам A000...BFFF. А сам доп.ППА переносится на 9000. Расход деталей при этом (если ОЗУ на РУ5) всего лишь 155 ЛА3 (она формирует два чип-селекта на 8000 и 9000). Уже только это существенно улучшает потребительные качества РК, т.к в этом ОЗУ могут работать отладчики, редакторы, бейсики и ДОС, оставляя основное ОЗУ свободным. Можно также ввести в окне A000...BFFF страницы, управляя выбором страницы разрядами доп.ППА D14 (доп.расход деталей ещё 1 TTL-корпус). Но ценность представляет не ОЗУ в окне, а максимальный размер сплошного ОЗУ.

Хочу обсудить в этой теме простой вариант расширения ОЗУ РК до 48 кб.

Суть переделки в том, чтобы в альтернативном режиме освобождать от портов область 8000...BFFF, делая возможным включение здесь ОЗУ. При использовании в РК ОЗУ на РУ5 вся переделка сводится к установке доп.дешифратора на область F000...F7FF и несложной логики для блокирования чип-селекта 8000...9FFF с выхода базового дешифратора D11. При этом благодаря тому, что адреса ПДП и ВГ75 не меняются, в принципе даже не требуется перепрограммировать режим ВГ75, т.е замена ПЗУ не обязательна. Однако для полноценного использования ОЗУ 48К разумно иметь два ПЗУ РФ2. В альтернативном режиме 48К из РК86 получается аналог МИКРОШИ с установленным блоком доп.ОЗУ (и всё же не МИКРОША, т.к у неё другая клавиатура и другие адреса БИС, общее с ней только доступный объём ОЗУ в 48К). Т.к порт доп.ППА A000 переносится на F200, то после переделки даже в режиме 32К дополнительно к базовым 32 кб доступно ещё 8 кб A000...BFFF, т.е всего 40 кб.

Как выяснилось, реально не осталось ни одного заинтересованного в теме энтузиаста РК86, остались только люди которым совершенно без разницы 32 кб, 48 кб или 64 кб. Большинство нынешних реальных владельцев РК и аппаратчиков, изготовителей плат новоделов даже не понимает зачем это надо. Это выяснилось, когда я пытался обсуждать варианты на форуме ZX-PK.ru. Столкнулся с тупым равнодушием, насмешками и издевательствами.

В данной теме будет описан вариант реально опробованного мной расширения ОЗУ, который возможно будет мною поддерживаться (возможно, т.к это процесс и схемотехника и архитектура может измениться). А доработки моего железа (теперь) ориентируются не по критерию оптимальности для всех, а лишь исходя из моих личных интересов и наличия у меня периферийного железа. Но я по-прежнему готов консультироваться с любыми заинтересованными программирующими пользователями для РК86.

У меня несколько иной интерес к РК86, чем у других владельцев РК86. Для меня РК86 не музейный экспонат, а платформа для МП-хобби. Мне важно, что, во-первых, РК86 (не считая ИРИШИ) это единственный отечественный компьютер, куда без труда ставятся любые другие процессоры с любым быстродействием. В частности, нет смысла паять кучу конструкций на разных процессорах, достаточно их просто ставить в РК86 и конвертировать для них программы РК86 для КР580.

Во-вторых, я считаю, что ПО для РК86 не использовало и малой части его реальных аппаратных возможностей. В частности, графического интерфейса с окнами, реальной псевдографики, цвета, много-тайловой спрайтовой графики по принципу Денди и главное, - программирования для поддержки этого на ЯВУ. Во времена, когда создавалось ПО для РК86, не было доступа к реальным компиляторам ЯВУ (СИ и Паскаль, что были в дистрибутиве МИКРОШИ не в счёт, это по сути интерпретаторы, а не компиляторы, причём со смехотворно малым максимальным объёмом исходника). Даже просто ографичивание и оцвечивание старых игр РК даст неожиданный результат.

Такой вариант расширения ОЗУ легко повторяем вручную, - простоте я отдаю предпочтение перед качеством. Идея в том, что, если доработку нельзя сделать за несколько часов наедине с паяльником, то такая доработка не нужна. Конкретная схема не догма. Разумеется, одну и ту же концепцию можно реализовать десятком вариантов схем, исходя из наличия деталей и личных предпочтений. Важно лишь иметь общие адреса и совместимое управление переключением памяти.

Несмотря на то, что программистам полезность большого ОЗУ в ЭВМ ясна, но как ни странно до сих пор для РК86 нет единого стандарта расширения ОЗУ. Хотя авторы РК86 обещали расширить ОЗУ и даже специально для этого ставили ИД7 на панельку, но обманули сообщество. Была неудачная попытка расширить ОЗУ (вариант РК-МАКСИ), которая потерпела крах из-за того, что предложенная схемотехника была слишком громоздкой, реально непригодной для ручной доработки на готовой плате РК, причём при потере совместимости.

Перед выбором оптимального варианта расширения ОЗУ, сначала надо выяснить вопрос, зачем вообще полезно расширять ОЗУ в РК86. Может быть полезнее расширять ПЗУ или число портов? Собственно говоря, сначала вопрос надо поставить о том, надо ли вообще расширять ОЗУ в РК86. Хотя в эксплуатации у любителей имеется большое количество РК86 и клонов, но новых программ для РК86 с конца 80-тых практически никто не пишет. И если любым способом расширить ОЗУ, не предлагая одновременно программной поддержки, это будет просто бесполезно. Поэтому говорить и предлагать хоть какие-то варианты расширения ОЗУ в РК86 могут только программисты реально программирующие для РК86. Т.е только в случае, если одновременно со схемой предлагается ПО, которое реально использует это доп.ОЗУ.

Ясно, что постановка задачи определяет реализацию, т.е архитектуру. Понятно, что даже без затрат деталей (при РУ5), перекинув всего несколько проводков, не проблема расширить ОЗУ в РК86 до 64К за счёт кардинального изменения архитектуры, что неизбежно вызывает утрату совместимости с рэтро ПО. Но этот вариант непривлекателен для пользователей.

С нехваткой ОЗУ первыми столкнулись программисты, а не пользователи, т.к для текстовых игр 32 кб достаточно. Для программ на бейсике ОЗУ тоже хватает. А при разработке, - в полезное ОЗУ в 29 кб едва влезает редактор-ассемблер и исходный текст программы дающей объектный код в 1.5 кб. А не совсем примитивные игры имеют значительно бОльший объём.

Теоретически достаточно ввести доп.ОЗУ выше верхней границы ОЗУ и соответственно переставить содержимое ячейки RAMTOP (где хранится вершина ОЗУ) и редактор, ассемблер и бейсик смогут использовать это ОЗУ без их переделки. Тут сюжет в том, чтобы получить максимально большую сплошную свободную область. К сожалению, из-за неоптимального распределения адресов портов, без изменения адресации портов, получить большое сплошное ОЗУ нельзя.

А что нам даст расширение ОЗУ в области 8400...BFFF (15 кб) и в других "дырах" адресного пространства выше 8000? Хранить здесь бОльший размер исходника это не поможет, т.к базовый редактор МИКРОН не умеет использовать ОЗУ во фрагментах выше 8000. Единственная польза в том, что можно перетранслировать редактор и ассемблер (и бейсик) в адреса верхнего ОЗУ, освободив 4 кб ОЗУ для текста исходника. Но и это уже не играет роли, т.к задача трансляции больших программ на реальном РК86 уже не актуальна, - гораздо удобнее набирать и транслировать программы на IBM PC.

Самый тупой лобовой вариант совместимого расширения ОЗУ это расширение ОЗУ в окне A000...BFFF, а ещё лучше в окне 8400...BFFF. Это оказывается возможным потому что адрес доп.ППА A000 используется только в директиве U и в программе прошивателя УФ-ПЗУ, изменить которые не проблема. Это не самый выгодный, но самый тупой вариант. Конструктивно он обходится в дешифратор на область 8400...BFFF (три ТТЛ-корпуса). Это ОЗУ просто открывается, если в РК86 использовано ОЗУ 565 РУ5. Если же ОЗУ типа РУ3/РУ6, то придётся смонтировать панельку на 28 ног и установить туда 62256, w24257 или любое другое подходящее статическое ОЗУ.

Для чего полезно верхнее ОЗУ? Ясно, что для рэтро программ это ОЗУ бесполезно. Первая польза от верхнего ОЗУ это размещение здесь ДОС размером до 15 кб. Этого ОЗУ как-раз хватает для размещения ДОС (8-10 кб) и нортона для этой ДОС. Понятно, что уже нет смысла делать нортон, не используя в нём альтернативный фонт с инверсией знакомест и рамками (впоследствии и цветом).

На первый взгляд кажется, что при этом расширение ОЗУ делается для всего одной-двух программ. Но базовая RK-DOS для РК86 работает в ПЗУ, и это давно стало фатальным тормозом развития системного ПО РК86. Ценой диких извращений ядро ДОС удалось запихать в 4 кб. Платой за "экономию ПЗУ" стала необходимость на всех дискетах хранить файлы внешние команды ДОС. Тогда как каждая внешняя команда имеет размер в 100 байт и они все без проблем могли бы быть встроены в ДОС, как это общепринято, если бы найти для кода ещё всего 2 кб места.

Имея ОЗУ выше 8000, ДОС при старте может считывать в это ОЗУ загружаемый CCP размером в 2 кб (оставив в ПЗУ 4 кб только BDOS и загрузчик CCP). Если из кода RK-DOS выкинуть резидентный CCP (переместив код в ОЗУ 8400), удобство ДОС резко возрастёт, т.к удастся выкинуть со всех дискет десяток SYS-файлов. А на освободившееся место в ДОС можно включить поддержку эл.диска или ввести юзеры, аналогично CP/M. Но есть более выгодный по деталям и нагрузке шины вариант RK-DOS, работающий из верхнего ОЗУ и не требующий даже ПЗУ с RK-DOS.

Второй пользой от расширения ОЗУ является возможность использовать CP/M, что актуально не столько из-за наличия компиляторов ЯВУ, а из-за необходимости при винчестере иметь большие диски (иначе, при максимум 26 дисках по 400К в RK-DOS можно использовать винчестер 500 Гб только на 10 мб, т.е всего на 0.0002 процента). Хотя уже нет насущной необходимости иметь компиляторы ЯВУ на реальном РК86, т.к удобнее компилировать на IBM PC.

А третьей, и не менее важной на сегодня пользой от расширения ОЗУ является организация скоростного привода, т.е электронного диска из излишнего ОЗУ. Ясно, что при этом речь идет уже не о расширении на 15 или 16 кб, а до размеров начиная от 256 кбайт до нескольких мегабайт и даже более. Сейчас стало доступна статика большой ёмкости (из дохлых DVD, 16-ти разрядная статика 1-16 мб). К сожалению, конструктив у этих ИМС (планар с расстоянием между выводами в 0.75 мм) не позволяет их использовать. Так что, по-прежнему, расширять ОЗУ можно только с помощью РУ7, SIMM-30 или малоёмкими статическими ОЗУ (типа w24257/w24512).

При расширении ОЗУ, как и при любой доработке, оптимальным можно считать только вариант требующий самых минимальных аппаратных доработок на готовой работающей плате. Причём надо учитывать, как наличие машин в которых ОЗУ выполнено на двух банках 565 РУ3, так и таких, в которых дополнительное ОЗУ уже физически есть (565 РУ5), но из-за непредусмотрительности авторов плат, реально недоступно.

Необходимо учитывать также то, что ОЗУ в РК86 и клонах небуферизованное и является главным ограничителем по нагрузочной способности шины. Опыт показывает, что в РК86 две банки динамического ОЗУ или банка РУ5 плюс один корпус статики на 32/64 кб (62256/w24512) ещё возможны, хотя даже это ограничивает возможности РК по турбированию за счёт тупой лобовой замены кварца.

В то же время, если поставить в качестве буфера ОЗУ две штуки 589 АП16 (или АП26), то можно применить значительно большее число параллельно включённых банок динамического ОЗУ. Установка второй параллельной банки РУ5 обходится в один ТТЛ-корпус логики (для коммутации /CAS). Статические ОЗУ типа w24257, w24512 более скоростные и не нуждаются в буферизации при реальных скоростях КР580.

Если с выбором носителя вопросов не возникает, то в случае, если не ограничиваться лишь тупым лобовым вариантом с окном 8400...BFFF, добавляющим лишь 15 кб (без смены архитектуры), то вопрос архитектуры во всех остальных вариантах расширения ОЗУ в РК86 остаётся до сих пор абсолютно неясным. Проблема в том, что те, кто могут разработать и выпустить печ.платы не могут договориться о стандартах с теми, кто может поддержать программно. У каждого своё видение расширения архитектуры.

Вариантов тут может быть десятки, но вероятно, объективно оценивая ситуацию, реально выбирать стОит только из двух вариантов. Варианта 48 кб на базе отключаемого порта 8000 и варианта 56К/60К, в котором порты РК86 или временно отключаются или вообще переносятся на другое место, освобождая адресное пространство. Вариант 60К оставляет за бортом РК-КНГМД, т.к при этом используется ОЗУ E000...EFFF. В варианте 56К переносить на другой адрес (или блокировать) требуется только ППА клавиатуры (8000...9FFF) и ВГ75 (С000...DFFF), потому такой вариант проще.

Естественно, проще всего повторить идею МИКРОШИ, в которой порт клавиатуры перенесён и не мешает иметь сплошное ОЗУ в 48К 0...BFFF. Разумеется, чтобы сохранить совместимость в базовом режиме (по сбросу) порт 8000...9FFF присутствует, но в альтернативном режиме 48 кб, порт клавиатуры доступен только по адресу F100. По деталям это самый простой вариант. Но для тех, кого интересует программировани на ЯВУ в среде CP/M, такой вариант малоинтересен, т.к им нужно больше ОЗУ.

Вариант 60 кб в простейшем случае можно получить блокируя в режиме 60 кб основной дешифратор ИД7 (DD11) на плате РК86, отчего исчезают вообще все порты, что и позволяет получить сплошные 60 кб ОЗУ. То что при этом порты недоступны для программ, не играет особой роли, - если программе нужен доступ в порт, то она временно включает режим, когда порты в адресном пространстве. Экранное ОЗУ в режиме 60К располагается на E6D0...EFFF, а уровень BDOS/BIOS - стандартный для подобных систем CC00/DA00.

Вопреки, некоторым мнениям, для CP/M не столь важно иметь ширину экрана в 80 символов. 64 символа в строке вполне достаточно, если не требуется использовать таблицу 'SuperCalc', где это реально важно. Значительно более существенен недостаток - отсутствие в базовом РК инверсии знакомест, псевдографики с рамками и фонт без маленьких латинских букв. Впрочем, это тоже решается, если пользователь готов к несложным дополнительным доработкам.

Т.к нужны не самые лучшие, а самые простые доработки, я выбрал самый простой по деталям вариант. А именно такой, но существенно упрощённый (без добавки новых БИС).

Если в РК86 ОЗУ на 565 РУ5, то доп.16 кб берутся из её старшей половины. Если основные 32К на РУ3, то на плате РК добавляется панелька на 28 ног для установки 62256 (w24257). Эта память включается в области A000...BFFF (в режиме 32К) и в области 8000...BFFF (в режиме 48К). Таким образом вся коммутация между базовым (32К) и альтернативным (48К) режимами заключается лишь в необходимости блокировать один чип-селект 8000...9FFF, что и обеспечивает минимум переделок и расход деталей.

Т.е при использовании РУ5 не требуется ставить доп.ОЗУ на статике, достаточно "открыть верхнее ОЗУ" в окне 8000...BFFF, что намного проще и делается за пару минут. Сейчас у меня в качестве верхнего ОЗУ стоит статика, но я собираюсь убрать статику 62256, "открыть верхнее ОЗУ" на РУ5, а панельку на 28 ног задействовать под ПЗУ 27256.

Вот такое разбиение пространства для области портов предполагается. Хотя очевидно, что реально использоваться будет лишь часть этих возможностей.

F000 - РК-КНГМД
F100 - ППА клавиатуры (выбираемый и на 8000...9FFF)
F200 - ППА D14 (для УФ-программатора и принтера)
F300 - ВИ53
F400 - резерв для ВВ51 или 6850
F500 - резерв для AY-8912
F600 - строб доп.регистра для винта
F700 - доп.ППА управляющий режимами

Спойлер:

В порту ППА управления режимами разряды можно задействовать так:

PA0...PA4 - номер куска из ПЗУ в окне E000...EFFF (адреса A12...A15 ПЗУ)
PA5 - номер одного из двух кусков ОЗУ по 16К в окне 8000...BFFF
PA6 - возможно выбор такта ВИ53 канала 2 (2 МГЦ или 50 ГЦ)
PA7 - бит переключающий на альтернативный CPU (6800, 6502, 6809, Z80)

PB0...PB7 - резерв для управления памятью

PC0...PC4 - номер фонта из ПЗУ знакогенератора в 32К
PC5 - перелючение ТУРБО/НЕТУРБО
PC6 - переключение цвет/монохром
PC7 - возможно для переключения памяти 32/48/56 кб

В минимальной системе ППА F700 для управления режимами разумно не ставить, заменив его на системный регистр, доступный как порт вывода по OUT FF (напр. ТМ9). Пока в качестве ППА управления режимом я использую доп.ППА D14. И в нём используется бит PC0 для включения альтернативного фонта из второй половины РФ2 и бит PB0 для управления страницами ПЗУ F800. Т.о в минимальном варианте для управления всеми режимами вместо целого третьего ППА разумнее иметь системный регистр на вывод. В нём бит D7 будет переключать 32/48 кб, биты D0, D1, D2 выбирать фонт, биты D3...D5 комммутировать страницы ПЗУ F800, а бит D6 будет управлять цветом (это надо, т.к один атрибут ВГ75 нужен, чтобы иметь КОИ-8 на экране).

Пока ОЗУ всего 48 кб. Но планирую вскоре добавить параллельную банку РУ5 с коммутацией в окне 48 кб (монтаж вторым этажом). Для этого возможно придётся добавить буфер на ОЗУ (2 шт. 589 АП26). При двух коммутируемых страницах по 48 кб общий объём ОЗУ достигнет 96 кб. Желательно установить буфер и на шину данных КР580. Это разумно сделать, чтобы поднять быстродействие и повысить надёжность. Надеюсь, это позволит КР580 работать на такте до 3 МГЦ, причём при большОм числе внешней периферии. Конструктивно буферизующая платка, содержащая КР580 и буфер АП6 должна втыкаться в панельку КР580. Как показала практика в буферизации адресов нет нужды (напротив, это мешает турбированию).

По поводу RK-DOS, которая использует адреса E000...EFFF. Причём это не может быть ОЗУ, т.к по записи тут стоит ПДП. Увы, при использовании винчестера или SD-карты, нет РК-КНГМД на котором стоят эти 4 кб ПЗУ, поэтому желательно обеспечить ПЗУ E000 каким-то образом, например смонтировать на плате доп.панельку в 28 ног. Ведь если нет РК-КНГМД, то адреса E000...EFFF просто пропадают впустую.

Итак, данный самый простой вариант ОЗУ 48К по деталям обходится в 5 TTL-корпусов - ИД14, ИД7, ЛЛ1, ЛА3 и ТМ2. ЛЛ1 служат для блокирования чип-селекта 8000 и разрешения в этих адресах ОЗУ. ИД14 заменяет дешифратор из схемы установки РК-КНГМД (формирует чип-селекты РК-КНГМД и двух ПЗУ РФ2). ИД7 делит область F000...F7FF на 8 участков для 8-ми доп.портов. ЛА3 и ТМ2 образуют одноразрядный порт вывода в области F800 (эта область в базовой схеме занята только на ввод из ПЗУ, на вывод свободна), который управляет режимом 32К <--> 48К. Можно с'экономить ТМ2, если для управления режимом ОЗУ использовать разряд из доп.ППА D14, но это хуже, т.к ограничивает применение доп.ППА для разных целей, а отдельный ППА для управления режимами в простейшей конфигурации отсутствует.

Кроме того желательно ввести два ПЗУ F800, содержащих 2 варианта ROM-BIOS, один базовый (экран с 76D0), дающий 29 кб для программ. А второй для большого ОЗУ (экран с B6D0), дающий 45 кб для программ. Эти ПЗУ должны переключаться автоматически при переключениях размера ОЗУ. Системные программы, в частности редакторы, ассемблеры и бейсик не требуется дорабатывать, они изначально поддерживают большое ОЗУ, т.к узнаЮт вершину ОЗУ из ячейки RAMTOP.

Монтаж этих 5-ти корпусов вручную занимает ~2 часа времени. Доп.микросхемы ставятся вторым (и даже 3-тьим) этажом. Теоретически, т.к большая часть сигналов берётся от D11 можно сделать отдельную платку расширения ОЗУ, которая подключается через панельку D11, как исходно и планировали авторы РК86.

To be continued...


Последний раз редактировалось: barsik (Вт Май 22 2018, 16:19), всего редактировалось 40 раз(а) (Обоснование : актуализация)

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Радио-86РК: Расширение ОЗУ

Сообщение  Viktor2312 в Пт Сен 01 2017, 09:53

Спасибо за пост, очень интересно, прямо таки целая статья можно сказать получилась, жду продолжения и желательно со схемами, по возможности...
avatar
Viktor2312
Гуру+

Сообщения : 10973
Дата регистрации : 2012-08-10
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

.

Сообщение  barsik в Пт Сен 01 2017, 11:06

Расширение на бОльший объём (т.е второй банкой РУ5) пока не делал, но это тривиально, лишь бы шина потянула. Буфера на ОЗУ (две АП16) потому тоже пока не ставил. Вероятно придётся ограничиться двумя банками РУ5. Хотелось поставить в РК SIMM 1 мб, но меня сильно запугали расказами, что на ОРИОНЕ это не удавалось.

Интересна задача установки в РК86 нескольких других процессоров. Конструктивно это проще сделать с помощью платки переходника которая подключается в шину с помощью разъёма DIP-40 устанавливаемого прямо в панельку КР580, но можно это делать и через системный разъём (естественно удалив КР580 из панельки). Т.к все процессоры имеют одноимённые сигналы (адреса, данные, сигналы управления), то замена на другой процессор не проблема.

Идеально было бы сделать плату акселератора. А это уже не только другой CPU, причём на высоком такте, но и своё скоростное ОЗУ и буфера АП6 отключающие платку ЦП от остальной шины и позволяющие вообще избавиться от захвата шины, т.е торможения из-за ПДП обслуживающей ВГ75. Тогда из старого динамического ОЗУ используется только ОЗУ 76D0...7FFF, т.е только экранное ОЗУ. К нему обращение от CPU происходит медленно со старыми скоростями РК, а со всем остальным ОЗУ (на статике) - на скорости в 9-10 МГЦ (столько тянет Z80B, их у меня много). Причём по деталям это немного, а по скоростям никакой ZX-Турбо не догонит, т.к там нельзя изменять такт произвольно, только кратно 3.5 МГЦ, а выше 7 МГЦ (на 14 МГЦ) кажется ещё никто не сделал такт в клонах ZX. РК86 с Z80B на такте 9 МГЦ будет примерно в 4-5 раз скоростнее базового РК86. Такое же быстродействие достижимо также при 63C09, HD6303 на такте 5 МГЦ.

Однако, боюсь, что на акселератор у меня не хватит энтузиазма. Но вот установку Z80B на такте 8 МГЦ я точно сделаю, т.к это на порядок проще. Хотя на Z80 некоторые программы РК не смогут работать из отличий в работе команд OUT и отличий по флагу P/OV после арифметических команд и DAA. Кроме того при использовании на РК с Z80 блочных команд (типа LDIR) для пересылки больших блоков, на экране РК возникают помехи. Но хуже того, долгие блочные команды не только дают помехи на экране, но и нарушают регенерацию памяти. Это происходит потому, что процессор не переходит в режим HOLD, до тех пор пока не завершит предыдущую команду, а команда LDIR при низком такте может выполняться намного дольше, чем 2 МСЕК (период регенерации РУ5).

Круто получится, также если применить 65C02 на такте 25 МГЦ (столько он тянет без проблем). А 1 МГЦ у 6502 равноценен 2 МГЦ КР580 (т.к требует меньшее число тактов на одну команду CPU). В итоге РК86 будет примерно в 35 раз более быстрым, чем базовый РК86 на КР580.

Хотел скопировать с другого сайта свои сообщения о замене РУ3 на РУ5, но найти не смог. Ну и хрен с ними. В принципе, при замене РУ3/РУ6 на РУ5 - всё просто. ЛА3 выкусываем и заменяем на 555 ЛА9, ставя резисторы нагрузки 1 кОм, т.к это микросхема с открытым коллектором (благодаря чему выходы /CAS0 и /CAS1 для двух банок РУ3 можно закорачивать напрямую). Еще надо на мультиплексор DD19 подать адрес A14 от КР580 (на другой вход КП11 - 0 или 1) и соответствующий выход мультиплексора КП11 подать на все 9-тые ноги РУ5-тых. Можно объединить /CAS-ы и с помощью доп.логики, но коротышом выходов ЛА9-той - проще всего.

В зависимости от того, 0 или 1 подана на второй вход КП11 (тот, откуда берётся адрес по CAS) из ОЗУ РУ5 физически читается или младшая половина в 32К, либо старшая. На этом и основан метод цельно полу-банковой коммутации. Подаём на этот вход, например, сигнал с PC1 порта клавиатуры. Этот выход в базовом РК при РК-клавиатуре не задействован, но при MS-7007 клавиатуре задействован, так что это отнюдь не лучшее решение (хотя и бесплатное). Это не важно, т.к пользователей с MS-7007 не осталось. А если они и есть, то им придётся управлять полубанками каким-либо разрядом доп.ППА DD14. Это кстати, самый простой способ увеличения доступного объёма ОЗУ, но он не увеличивает сплошное ОЗУ.

Это только у меня в теге {url} текст выводится неподчёркнутым или это свойство сайта? Или надо где-то сменить настройки? На всякий случай обрамил {url} тегом подчёркивания, т.к подчёркивание заметнее и привычнее, чем цвет.


Последний раз редактировалось: barsik (Ср Ноя 22 2017, 16:25), всего редактировалось 23 раз(а)

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Радио-86РК: Расширение ОЗУ

Сообщение  Viktor2312 в Пт Сен 01 2017, 15:09

barsik пишет:Это только у меня в теге {url} текст выводится неподчёркнутым или это свойство сайта? Или надо где-то сменить настройки? На всякий случай обрамил {url} тегом подчёркивания, т.к подчёркивание лучше чем цвет и привычнее.

Свойство сайта. Как-то даже не обращал внимания на это, до этого.
avatar
Viktor2312
Гуру+

Сообщения : 10973
Дата регистрации : 2012-08-10
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Реверсивная доработка РК86 с помощью внешней платки

Сообщение  barsik в Вт Ноя 21 2017, 07:56

Компьютер РК86 по архитектуре сделан так, что просто напрашивается необходимость его модернизации. Некоторые любители доработали свои РК86. К сожалению, большинство вариантов переделки меняло архитектуру, что приводит к несовместимости, или в случае коммутируемости архитектуры, приводит к большей сложности схемы. Поэтому до сих пор так и не установился стандарт модернизации РК86, а несколько известных вариантов расширения ОЗУ существуют лишь у их авторов в единичном экземпляре и, соответственно, не поддержаны ПО. Не имея совместимого стандарта расширений, авторы новоделов выпускали только базовые платы РК86. А нехватка ОЗУ делает РК неинтересным для программистов.

Можно обойтись и без новой улучшенной платы новодела РК86, сделав ручные доработки. Конструктивно такие доработки до сих пор делали на основной плате, выполняя кучу разрезов печати и монтируя доп.корпуса вторым этажом. К сожалению, наиболее выгодные варианты расширения ОЗУ относительно велики по объёму (~5-6 корпусов монтируемые вторым этажом), отчего такой ручной монтаж многих любителей сразу же отвращает.

Недавно я понял, что грамотно выбрав архитектуру и используя DIP-разъёмы втыкаемые в панельки микросхем на плате РК86, можно сделать доработки таким образом, что вторжений на саму плату РК86 почти не будет. Для этого используется маленькая доп.платка, закреплённая на основной плате (винтами разъёма ГРПМ-61) и соединяемая с основной платой косами. Преимущество при этом в том, что такое расширение с помощью доп.платки получается реверсивным, т.е при желании легко снять платку расширения и вернуться к базовому варианту. Мало кому из фанатов РК охота паять вторую, пусть и улучшенную, плату РК86, даже если бы она и появилась. А спаять маленькую платку и подключить её к РК86 хватит энтузиазма каждому серьёзному владельцу РК86.

Как я показал выше, самым простым вариантом расширения ОЗУ, является метод программного отключения порта клавиатуры 8000...9FFF и перенос адреса ППА D14 на F200, что даёт 48 кб сплошным участком, также как в МИКРОШЕ.

Однако похоже, что при том же самом числе доп.корпусов можно получить сплошное ОЗУ в 56 кб. Для этого вводится альтернативный режим в котором адреса ППА клавиатуры, ВГ75 и ВТ57 переносятся в область F000, а ОЗУ распространяется до E000. Не сложно было бы сделать и 60 кб сплошного ОЗУ, однако область E000...EFFF уже задействована в RK-DOS, и эти 4 кб не особо увеличат объём ОЗУ, но вызовут существенное усложнение схемы, да и резерв в 4 кб для установки ПЗУ пригодится.

Непользователю CP/M покажется, что разница между 48К и 56К невелика. В действительности это не так. При 56К сплошного ОЗУ и размещении BDOS в ПЗУ E000...EFFF, можно иметь CP/M с высоким TPA и можно будет использовать все фирменные программы CP/M. А при меньшем ОЗУ можно использовать CP/M лишь как файловую систему для хранения и запуска только своих программ и десятка антикварных CP/M программ нетребовательных к ОЗУ.

Новые адреса для портов формируются в области F000...F7FF дешифратором ИД7, а для переключения чип-селектов используется КП11, подающий на контакты D11 (ИД7) в режиме 32К адреса согласно базовой схеме, а в режиме 56К другие адреса так, что чип-селекты портов формируются для адресов в области F000, а выборка ОЗУ формируется для области 0...DFFF, т.е используется ОЗУ верхней половины РУ5. Кстати, чтобы из РУ5-тых использовать и старшие 32К, на D19 на основной плате требуется подвести доп.адрес A15.

Конструктивно такое расширение ОЗУ делается в виде внешней платки от которой идёт коса имеющая на конце разъём DIP-16, который втыкается в панельку D11 (вместо ИД7), как и планировали авторы РК86.

Простой вариант реализуется наличием на доп.платке КП11, ЛЕ1, ЛА3, ИД7 и ИД14. КП11 переключает входы портов (то на ИД7, то на ИД14, давая 2 режима адресации). ИД7 по базовой схеме выполняет выборку портов в режиме 32К. ИД14 выполняет функцию выборки портов в режиме 56К. Второй дешифратор из ИД14 делит область E000...FFFF ещё на 4 участка формируя /CS ПДП (E000), /CS РК-КНГМД (F000) и /CS ПЗУ (F800). Если вместо КП11 применить 556 РТ4, это даст выигрыш на 3 корпуса (КП11, ИД7 и ИД14), но создаст хлопоты с прошивкой. Т.к платка внешняя, то важнее не число корпусов, а удобство изготовления. Четыре доп.корпуса это не слишком большая плата за модернизацию при сохранении совместимости.

Для переключения 56К/32К удобен был бы выход INTE, но увы, он уже занят под звук. Поэтому для управления режимом вводится порт вывода в области F800 (ТМ2). По OUT FC включается режим 56К, а по OUT F8 и по сбросу включается режим 32К. В режиме 56К доступны те же БИС, но по другим адресам. Интересно, что отключение портов ВГ75 и ВТ57 не приводит к сбою программы, т.к к этим БИС процессор обращается только в момент задания режима ВГ75, а во время прогона программы обращений к ним нет. Это свойство позволяет беспроблемное программное переключение размера ОЗУ и по сути даже не требуется перепрошивка ПЗУ F800.

Впрочем, конструкцию и схему этой платки ещё стОит много раз обдумать и доработать.

Например, если делать промышленную печатную плату, то можно реализовать и более сложный вариант платки расширения, дающий не только доп.ОЗУ, но и доп.ПЗУ и ВИ53. Тогда для расширения ПЗУ на платке ставится панелька на 28 ног для ПЗУ 27256. А в панельку ПЗУ F800 на основной плате втыкается разъём DIP-24 с косой идущей к платке, через которую подводятся сигналы шины. Это ПЗУ 27256 одновременно заменяет и ПЗУ F800 и ПЗУ E000...EFFF (введённое RK-DOS), причём в виде 4-х страниц по 8 кб.

Если иметь в области F000 дополнительные порты, то в каждой странице ПЗУ будет теряться участок в 2 кб. Потому порты в таком варианте разумно переместить в область С000...DFFF, что даст сплошные 8 кб ПЗУ (E000...FFFF). А если область адресации ВГ75 сократить до 1 кб и занять под ПЗУ область C400...FFFF, то объём сплошного ПЗУ будет уже 15 кб, куда вполне влезает CP/M (для винчестера и НГМД). Заметим, что ОЗУ в этой области сделать нельзя, т.к она совпадает с адресом ПДП (куда производится только запись).

Наличие на платке в таком варианте сигналов шины позволяет на этой же плате смонтировать и ВИ53. Т.о такая платка будет содержать кроме TTL-корпусов две панельки для 27256 и ВИ53. При необходимости на платку можно установить ещё что- нибудь (например, ВВ51).

Метод "открытия ОЗУ" годится только для РК, где ОЗУ на РУ5-тых. Теоретически для того, чтобы такая платка годилась и для РК, где ОЗУ на 565 РУ3, на этой платке можно предусмотреть w24257 (хотя не понимаю тех, кто ленится выкусить РУ3 и впаять РУ5, я это сделал ещё в 1988).

Ценно, что доработка с помощью внешней платки является нетравмирующей и реверсивной, т.к не требуется много разрезов печати, установки на плате доп.ИМС вторым этажом и кучи проводов. Это позволяет каждому пользователю РК86 без особых хлопот доработать его, благодаря чему с минимальными усилиями он получит аппарат не уступающий по аппаратным возможностям развитым клонам, имеющим больше ОЗУ, доп.фонты и даже ВИ53.

На подобном принципе, если подключать косу к панельке КР580, то можно применить вместо КР580 процессор Z80B, разогнав его до 8 МГЦ (с тактами WAIT, иначе РУ5 не потянут). Это превратит РК86 в очень привлекательный компьютер для любителей, сохранив все старые наработки ПО.

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

появился стандарт на расширение ОЗУ и ПЗУ

Сообщение  barsik в Вт Май 22 2018, 18:45

Естественно, делая дополнительные апп.доработки всегда желательно придерживаться стандарта на железо конкретной машины. Базовые стандарты определяет базовая конструкция. Дальнейшие стандарты задают официальные публикации в журналах или появление печатных плат целого доработанного варианта РК86 (или маленьких платок расширения).

Конечно не всегда дополнительные журнальные публикации по апп.доработкам становятся общепризнанным стандартом. На это влияет целесообразность, сложность, и особенно, поддержка данной доработки программами.

Например известная попытка превратить РК в РК-МАКСИ в 1994 потерпела крах. Причиной этого стала в первую очередь слишком сложная доработка (в 3 десятка дополнительных корпусов), выполняемая вручную на базовой плате. В которой схемные решения не только излишне наворочанны, но и бессмысленны. ВН59 ради прерываний (вместо 8 резисторов), ВК38 ради бесполезных OUT команд, два взаимно синхронизируемых ГФ24, программируемый дешифратор для смены архитектуры на 15-ти корпусах (его реализует один 556 РТ4), 512ВИ1 (при том, что RK-DOS дату не поддерживает) и всего один доп.фонт, причём только ради маленьких букв, - это просто извращение идеи народного компьютера.

Я очень сомневаюсь, что хоть один человек в мире повторил эту доработку. РК-МАКСИ мог бы получить хоть какое-то распространение, если бы были печатные платы РК86 с такой доработкой. Без этого на ручную доработку проводками на имеющейся плате никто не решился.

При расширении ОЗУ не была даже озвучена основная цель расширения ОЗУ. А цель расширения ОЗУ это всегда установка на РК ОС CP/M, что даёт доступ к ~500 программ высокого качества (хотя в литературе указывают, что для CP/M есть 10 тысяч программ, но увы, большинство написано для конкретной ЭВМ, т.е работают по металлу).

Расширять ОЗУ просто так (не для целей DOS), малополезно, т.к 29 кб ОЗУ хватает для любых программ написанных на ассемблере (нет и уже не предвидится программ с размером более 29 кб). А наличие дисковода вообще снимает проблему нехватки ОЗУ для кода (код игры на ассемблере, даже для графических машин обычно не более 8-12 кб, остальное занимает графика, уровни, лабиринты и тексты), т.к наличие внешнего носителя позволяет, например, загружать с дискеты уровни игры, если не хватило имеющихся 29 кб.

И только для нужд DOS просто необходимо дополнительное ОЗУ, т.к обычно DOS имеют размер ~10 кб, что при размещении DOS в основном ОЗУ ограничит объём кода запускаемой программы в 19 кб, а половина игр РК86 имеет больший размер.

Кстати, в варианте РК-МАКСИ сдуру буферизовали процессор, а надо было буферизовать ОЗУ. Буферизация хотя бы выходов ОЗУ ещё при разработке РК86 с помощью двух копеечных 155 ЛА8 с открытым коллектором (да и АП16 не были дефицитны или дороги в 1986) резко улучшила бы надёжность и расширяемость РК86, практически не отразившись на цене.

Для расширения ОЗУ надо было просто разработать крошечную платку со штырьками под DIP-16, втыкаемую прямо в панельку ИД7. На платке всего одна микросхема 556 РТ4, которая выполняла бы роль коммутируемого дешифратора ОЗУ и В/У. И опубликовать вариант установки РУ5 (за счёт замены 155 ЛА3 на 555 ЛА9). Получился бы простой, совместимый и реверсивный вариант доработки.

Я делал расширение ОЗУ РК многими способами (получая доп.ОЗУ, как из дополнительно монтируемой 62256, так и из уже имеющейся на плате 565 РУ5) и одно время имел даже сплошные 60 кб ОЗУ с полной потерей совместимости. Но бОльшую часть времени я имел доп.ОЗУ в окне A000...BFFF. Что при РУ5-тых обходится в одну дополнительную КП11. В это ОЗУ удобно загружать отладчик. Кстати и авторы РК-МАКСИ использовали окно в области A000...BFFF для прокачки второй банки РУ5 (чтобы поиметь 128 кб).

Недавно наконец появилась конструкция, - очень дешёвый клон РК86, в котором тоже есть доп.ОЗУ в области A000...BFFF и доп.ПЗУ в области E000...E7FF (полное окно ПЗУ 8 кб - E000...FFFF). И хотя организовать производство печатных плат из-за маленького числа интересантов не удалось, но уже несколько человек повторили эту конструкцию и будут другие.

Это фактически и реально создаёт стандарт на расширение ОЗУ и ПЗУ в РК86 и появляется смыл программно поддерживать именно такую доработку. Удачно то, что такая доработка является самой простой, целесообразной и потому оптимальной при ручной модернизации РК86 на уже имеющейся базовой плате.

С доп.ПЗУ всё понятно, - туда каждый может положить то, что ему требуется. А вот что даёт дополнительное ОЗУ в окне 8 кб в области A000...BFFF ?

Во-первых, сюда можно загружать DOS, в частности RK-DOS в 6 кб, которая не нуждается во внешних SYS-файлах (такая версия у меня уже давно есть). Причем, при этом не требуется даже переделывать дисковый бейсик-плюс, дисковый текст.редактор МИКРОН-2, дисковый ассемблер МИКРОН, примитивный нортон SE, Tape-утилиты и другие дисковые программы о которых я ещё не знаю (это достигается тем, что в ПЗУ на адресе E001 остаётся JMP на A001, что тратит всего 4 байта из ПЗУ E000...FFFF, отчего вызовы CALL E001 из программ RK-DOS срабатывают, хотя сам код RK-DOS загружен в ОЗУ A000).

Но интереснее конечно иметь CP/M в РК86. Пока у меня нет CP/M для конкретно такой архитектуры (точнее с ПЗУ E000...FFFF), есть только для ОЗУ 8400 и адресом КНГМД на F000 (что для такого варианта не годится). Позднее я перетранслирую CP/M для ОЗУ A000 и под такую архитектуру, что даст TPA в 28 кб. Адрес КНГМД будет перенесён с F000 на 8800, что необходимо, чтобы сохранить 8 кб E000...FFFF для ПЗУ.

Разумеется лучше было бы иметь ОЗУ 9000...BFFF в 12 кб. Это позволяет в CP/M перенести экран на B6D0...BFFF, освободив для TPA полные 32 кб. А в лишь 8 кб на A000...BFFF кроме BDOS и BIOS уже не умещается РК-экран. И всё-же, благодаря наличию доп.ПЗУ E000 можно поиметь CP/M с TPA в 32 кб. Т.к в этом ПЗУ свободно 6 кб, то этого как раз достаточно, чтобы разместить здесь BDOS, дисковые подпрограммы чтения/записи сектора и драйвер вывода на экран в верхнем ОЗУ. Тогда в доп.ОЗУ 8 кб останется достаточно места для РК-экрана. Кстати, BDOS придётся чуть-чуть переделать, т.к оригинальный не работает из ПЗУ.

Экран для CP/M разумно сразу делать сплошным, без вертикальных разрывов между строками, т.е экранный драйвер должен работать в режиме не 31-й, а 39-ти строк, что даёт формат экрана 64*30 (такой режим используется во всех псевдо-графических играх). Такой режим требуется для Нортона и других программ, где используется инверсия фонтом.

Даже, если CP/M не используется, то и для недисковых системных программ тоже полезно расширить свободное сплошное ОЗУ с 29 до 32 кб, перенеся экран в верхнее ОЗУ. Чтобы перенести экран достаточно заменить несколько байтов в ПЗУ F800. Т.к это всё-же ПЗУ, то потребуется ввести коммутируемые страницы ПЗУ (удобнее всего ставить 27256 получив 4 страницы по 8 кб в окне E000...FFFF).

Но, гораздо удобнее, особенно для целей отладки кода ROM-BIOS, иметь в области F000...FFFF ОЗУ, оставив ПЗУ по адресам E000...EFFF. Тогда код ROM-BIOS грузится из ПЗУ в ОЗУ F800. При этом сменить десяток байтов в этом коде, что нужно при включении режима с экраном в верхнем ОЗУ (на 30 строк), - не проблема. Включение такого режима удобно сделать сочетанием клавиш (например, СС+F3).

При желании можно область ОЗУ увеличить до E800...FFFF, оставив ПЗУ в 2К на E000...E7FF. Тогда это ПЗУ инициализирует видео (что надо для регенерации динамического ОЗУ), а затем загружает в ОЗУ F800 ROM-BIOS и делает JMP F800. В ПЗУ 2К на E000 прекрасно влезет и сам монитор и процедура инициализации (т.к я освободил в ПЗУ РК86 целых 172 байта, чего для этой процедуры вполне достаточно).

Не стоит думать, что добавка ОЗУ в 8 кб превращает РК86 в совсем другой компьютер. Точно также, как установка в слот Микроши промышленной платы расширения ОЗУ на 16К или платы расширения ПЗУ на 16К превращает Микрошу в иной компьютер.

Доп.ОЗУ и доп.ПЗУ нужны лишь для DOS и повышения удобства пользования (например, загрузив/включив в качестве ROM-BIOS ПЗУ от Микроши можно использовать программы от Микроши). А вот добавление дополнительных фонтов с помощью куска провода это действительно революционное преобразование, превращающее РК86 практически в другой компьютер.

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Радио-86РК: Расширение ОЗУ

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения