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

Предыдущая тема Следующая тема Перейти вниз

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

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

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

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

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

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

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

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

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

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

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

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

Вариант расширения ОЗУ до 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 кб. Большинство нынешних реальных владельцев РК и аппаратчиков, изготовителей плат новоделов даже не понимает зачем это надо. Это выяснилось, когда я пытался обсуждать варианты. Столкнулся с тупым равнодушием, насмешками и издевательствами.

В данной теме будет описан вариант реально опробованного мной расширения ОЗУ, который возможно будет мною поддерживаться (возможно, т.к это процесс и схемотехника и архитектура может измениться). А доработки моего железа (теперь) ориентируются не по критерию оптимальности для всех, а лишь исходя из моих личных интересов и наличия у меня периферийного железа. Но я по-прежнему готов консультироваться с любыми заинтересованными программирующими пользователями для РК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 2017, 16:37), всего редактировалось 39 раз(а) (Обоснование : актуализация)

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

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

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

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

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

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

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

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

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

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

.

Сообщение  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
новичёк

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для переключения 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 без труда доработать свой РК86, благодаря чему с минимальными усилиями он получит аппарат не уступающий по аппаратным возможностям развитым клонам РК86, имеющим большое ОЗУ и ВИ53.

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

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

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

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

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

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

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


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


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

Предыдущая тема Следующая тема Вернуться к началу


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