Май 2019
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  

Календарь Календарь

Последние темы
» Эмулятор ИРИШИ для тех, кто не имеет её реальной
автор barsik Пт Май 24 2019, 08:24

» Эмулятор радио 86рк
автор parsec Ср Май 22 2019, 18:44

» Новинки. Книги. Часть 1.
автор Viktor2312 Вт Май 21 2019, 16:21

» Программирование для ИРИШИ
автор barsik Пн Май 20 2019, 21:14

» Новинки. Книги. Часть 3.
автор Viktor2312 Пн Май 20 2019, 16:38

» Модуль контроллера графического дисплея (МКГД).
автор barsik Вс Май 19 2019, 13:40

» ATM Turbo 2+ v7.10
автор alemorf Сб Май 18 2019, 20:03

» Схемы и документация на отечественные ЭВМ и ПЭВМ и комплектующие
автор Viktor2312 Сб Май 18 2019, 18:10

» Куплю микросхемы КР1818ВГ93 и КМ1810ВТ3.
автор Savoj Чт Май 16 2019, 07:51

» Радио-86РК: Расширение ОЗУ
автор barsik Чт Май 16 2019, 01:26

» Клавиатура ИРИШИ
автор barsik Ср Май 15 2019, 16:57

» ИРИША и магнитофон
автор barsik Пн Май 13 2019, 04:23

» Новости криптовалют: статьи, заметки, разное...
автор Viktor2312 Сб Май 11 2019, 03:01

» Жалобы/пожелания по работе форума
автор Viktor2312 Сб Май 11 2019, 00:50

» Альтернативные КНГМД для ИРИШИ
автор barsik Пт Май 10 2019, 01:12

» Видеокарты (GPU). Статьи, заметки, очерки, разное...
автор Viktor2312 Чт Май 09 2019, 19:55

» Алгоритм SHA-256 и др., хеш (hash), хеширование, майнинг.
автор Viktor2312 Чт Май 09 2019, 01:30

» Обсуждение желаемых новодельных плат расширения и мелких усовершенствований базовых плат
автор barsik Ср Май 08 2019, 16:06

» Разное
автор Viktor2312 Вт Май 07 2019, 19:19

» Для новичков (криптовалюта).
автор Viktor2312 Вт Май 07 2019, 17:32

» Ассемблер для современных CPU Intel.
автор Viktor2312 Вт Май 07 2019, 17:12

» МКНГМД Вариант-3. Версия на К1818ВГ93
автор barsik Вт Май 07 2019, 15:15

» Обзор крипто проектов.
автор Viktor2312 Вт Май 07 2019, 12:57

» 7 Мая. День Радио!
автор Viktor2312 Вт Май 07 2019, 12:00

» "Радио-86РК". Статьи, заметки, очерки, разное...
автор barsik Сб Май 04 2019, 20:20

Самые активные пользователи за месяц
Viktor2312
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 
barsik
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 
alemorf
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 
demetrius2003
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 
a.oleg.a
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 
parsec
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 
Savoj
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 
VladimirS
Радио-86РК: Расширение ОЗУ Vote_lcapРадио-86РК: Расширение ОЗУ Voting_barРадио-86РК: Расширение ОЗУ Vote_rcap 

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


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

Перейти вниз

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

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

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

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

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

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

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

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

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

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

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

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

Радио-86РК: Расширение ОЗУ Empty ВариантЫ расширения ОЗУ на базовой плате

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

3
РК86 очень подходящий для творчества аппаратчика-любителя компьютер. Он имеет настолько неудачную архитектуру и параметры, что тысячи людей или с возмущением при первой возможности отказываются от РК или начинают думать как можно недостатки исправить. Оказалось, что часть этих недостатков можно исправить, если владелец РК имеет миниатюрный электро-паяльник, 5 метров провода МГТФ-0.03 и не очень крюкастые руки.

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

Самый простой вариант расширения ОЗУ РК86 это организация окна ОЗУ в 8 кб на месте доп.ППА по адресам A000...BFFF за счёт статического ОЗУ типа 6264, 62256, 62512, w24257 или w24512. При этом сам доп.ППА стоящий в базовой схеме на A000 для освобождения окна переносится на 9000. Расход деталей при этом (если ОЗУ на РУ5) всего лишь 155 ЛА3 (она формирует два чип-селекта на 8000 и 9000). Если же требуется добавить дополнительные чип-селекты, то область 8000...9FFF можно поделить дешифратором 1533 ИД7 на 8 участков, два из которых займут два базовых ППА и 6 останется для подключения ВИ53 и других прибамбасов.

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

Если же ОЗУ компьютера использует 565 РУ5, в которой в базовой схеме остаётся неиспользованной половина ёмкости, целые 32 кб, то ставить доп.корпус микросхемы памяти не требуется, достаточно выполнить "открытие ОЗУ" в окне 8 кб на месте запасного ППА D14. Т.к ППА D14 обычно желательно сохранить, то при этом оно также, как в варианте на статике, переносится на 9000. Такая переделка совсем проста и при наличии паяльника с мелким жалом делается за полчаса. 1533 ЛА3 закрепляется вторым этажом припайкой выводов 7 и 14, а вентиль ЛИ1 можно заменить двумя диодами и резистором.

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

После расширения ОЗУ в окне A000...BFFF и переносе запасного ППА D14 на адрес 9000 карта памяти выше 8000 имеет такой вид:

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

Уже лишь 8 дополнительных килобайт существенно улучшает потребительные качества РК, т.к РК-программы об этом ОЗУ даже не знают и в нём могут работать отладчики, редакторы, бейсики и ДОС, оставляя основное ОЗУ свободным. Если применить вместо 6264 более ёмкие 62256/w24257, то можно ввести в окне A000...BFFF 4 страницы размером в 8 кб, управляя выбором страницы какими-нибудь двумя разрядами доп.ППА D14 (а если это нежелательно, то введя дополнительный двухбитовый регистр на 1533 ТМ2).

Есть ещё один также не нарушающий совместимости вариант расширения ОЗУ в окне 8400...BFFF размером в 15 кб, который я использовал в 90-тые годы. Для работы ППА клавиатуры требуется минимум 1 кб адресов, т.к многие программы нагло лезут в ППА клавиатуры командами IN/OUT, используя отсутствие в РК системного контроллера и свойства КР580. Это неграмотно, т.к сильно затрудняет установку Z80 (потому-что при Z80 такой трюк с командами IN/OUT не проходит)

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

Доп.ОЗУ в отдельном окошке в 8 или 15 кб это хорошо, но всё-же бОльшую ценность представляет введение максимального размера сплошного ОЗУ. Это желательно, хотя-бы потому, что позволяет запустить программу большего размера, в варианте без DOS, это позволяет странслировать исходник большего размера и требуется для организации максимально большого объёма TPA в разных DOS.

Потому более интересен вариант временно убирающий ППА клавиатуры из области 8000...83FF. Суть переделки в том, чтобы в альтернативном режиме освобождать от портов область 8000...BFFF, делая возможным включение здесь ОЗУ. Порт клавиатуры стоящий на 8000 и запасной ППА D14 на A000 переносятся на другие адреса, что и даёт сплошные 48 кб.

При использовании в РК ОЗУ на РУ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 для КР580.

Во-вторых, считаю, что ПО для РК86 не использовало и малой части его реальных аппаратных возможностей. В частности, графического интерфейса с окнами, реальной псевдографики, цвета, много-тайловой спрайтовой графики по принципу Денди и главное, - программирования для поддержки этого на ЯВУ. Во времена, когда создавалось ПО для РК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. Если же ОЗУ типа 565 РУ3 или РУ6, то придётся смонтировать панельку на 28 ног и установить туда 62256, w24257 или любое другое подходящее статическое ОЗУ. Но это имеет существенным минусом то, что тогда экран нельзя программно переставить на B6D0.

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

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

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

Второй пользой от расширения ОЗУ является возможность использовать 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 1 мб или малоёмкими статическими ОЗУ (типа w24257/w24512) в DIP-корпусе.

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

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

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

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

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

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

Аппаратно этот вариант выливается в ИД7 делящую область F000...F7FF формируя 8 чип-селектов с шагом по 100H байт (два из них отдаются ППА клавиатуры и D14) и КП11, которая переключает чип-селект D11/12 (выборка адресов 8000...9FFF) то на ППА клавиатуры, то на разрешение ОЗУ. Чип-селект области 8000 c выхода КП11 и чип селект F100 Объединяются двумя диодами. Таким образом доступ к клавиатуре по F100 есть всегда, а по адресу 8000 только в базовом режиме "32К". Управление режимом "48 кб / 32 кб" осуществляется битом ППА D14, что перенесён на F200 и потому доступен в обоих режимах памяти. Как видите при РУ5 расход деталей совсем минимальный - всего 2 корпуса (ИД7 на область F000 и КП11 отключающая выборку по адресу 8000)

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

В минимальной системе ППА 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 просто пропадают впустую. Если РК-ДОС нужна, но есть возможность её перетранслировать под другие адреса, то лучше всего освободить всю область E000...FFFF для ПЗУ.

Окно ПЗУ в 8 кб позволяет удобно ставить ПЗУ большого объёма, что даёт много возможностей. Во-первых здесь можно разместить процедуры работы с дисководом и винчестером (что сократит код DOS и поднимет уровень TPA), а во-вторых, большое резидентное ПЗУ избавит от необходимости иметь ROM-диск для хранения резидентных программ, в частности, DOS или загрузчиков DOS, отладчиков, программ обмена по линии, прошивателя УФ-ПЗУ, т.е всех тех программ, что желательно иметь резидентно.

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

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

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


Последний раз редактировалось: barsik (Вс Дек 30 2018, 11:00), всего редактировалось 51 раз(а) (Обоснование : актуализация)

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

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

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

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

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

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

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

Радио-86РК: Расширение ОЗУ Empty другие процессоры в РК86 и замена 565 РУ3 на РУ5

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

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

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

Причём по деталям это немного, а по скоростям никакой ZX-Турбо не догонит, т.к там нельзя изменять такт произвольно, только кратно 3.5 МГЦ, а выше 7 МГЦ (на 14 МГЦ) кажется ещё никто не сделал такт в клонах ZX. РК86 с Z80B на такте 9 МГЦ и скоростном ОЗУ работающем без WAIT и захватов ПДП будет в 9 : 1.31= 6.87, т.е почти в 7 раз скоростнее базового РК86. Такое турбирование полностью компенсирует потерю скорости в программах странслированных на ЯВУ. Такое же быстродействие достижимо также при 63C09, HD6303 на такте 5 МГЦ (это японские клоны MC 6800).

Однако, боюсь, что на акселератор у меня не хватит энтузиазма. Но вот установку Z80B на такте 9 МГЦ хочу сделать, это не очень сложно. Кстати, недавно один человек (в форуме ZX-PK.ru) доказал, что Z80B с маркировкой ST (кажется это Томпсон) без проблем работают на 14 МГЦ, так что даже не требуется покупать дорогой китайский скоростной процессор Z8400020. Важно лишь чтобы ОЗУ была скоростная статика (типа w24257 с доступом 15 НСЕК). Кстати у многих Z80B ещё в 90-тые работал в ОРИОНЕ на 10 МГЦ.

Тактируя Z80 тактом в 10 МГЦ, но оставив доступ к ОЗУ медленным, выигрыш будет невелик, реальный такт, скорее всего, даже не превысит 3 МГЦ. Чтобы получить реальный такт в 10 МГЦ надо делать полный акселератор, т.е ставить скоростное статическое ОЗУ с доступом в десятки наносекунд (типа w24257), древние 62256 уже не подойдут (самые быстрые из них имеют доступ лишь в 150 НСЕК).

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

Круто получится, также если применить 65C02 на такте 25 МГЦ (столько он тянет без проблем). А 1 МГЦ у 6502 равноценен 2 МГЦ КР580 (т.к требует меньшее число тактов на одну команду CPU). В итоге РК86 будет примерно в 35 раз более быстрым, чем базовый РК86 на КР580. Но 6502 и 6802 оказалось не ставятся в лоб, т.е просто. Т.к в отличие от КР580 они не освобождают шину. Потому надо ставить три буфера АП6, отключающие CPU от шины, чтобы ПДП мог её захватить на время обслуживания ВГ75.

Хотел скопировать с другого сайта свои сообщения о замене РУ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. Это кстати, самый простой способ увеличения доступного объёма ОЗУ, но он не увеличивает сплошное ОЗУ. Если же 565РУ5 включена полноценно (на все 64К), то на D19 заводится не бит с порта, а адрес A15.

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


Последний раз редактировалось: barsik (Чт Ноя 22 2018, 12:27), всего редактировалось 28 раз(а)

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

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

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

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

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

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

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

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

Радио-86РК: Расширение ОЗУ Empty Оптимальный вариант расширения ОЗУ в РК86

Сообщение  barsik в Ср Ноя 21 2018, 15:18

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

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

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

К тому же большая часть владельцев РК являются коллекционерами. Им не важна работа и параметры изделия, а важен лишь внешний вид платы, отчего ручные коррекции с монтажом доп.корпусов в три этажа недопустимы. Они делают только журнальные варианты, и добившись на экране вывода титра "РАДИО-86РК" кладут плату на полку.

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

Самодельный разъём DIP-16 с косой идущий от доп.платки втыкается в панельку D11 (ИД7), формирующего карту памяти РК86. В варианте где это требуется (т.е при РУ3), остальные цепи можно брать с системного разъёма ГРПМ-61. Можно саму платку расширения втыкать в ГРПМ-61, но это громоздко и увеличивает габариты по ширине. Лучше подпаять проводки к контактам ГРПМ-61, закрепив платку расширения над основной платой РК. Удачно, что при использовании на плате РК ОЗУ 565 РУ5 даже не требуется соединений проводами с ГРПМ-61 и доработка получается очень простой.

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

Ранее рассматривался вариант, когда есть два режима, один базовый 100% совместимый, а второй с портами перенесёнными на более высокие адреса (удобно менять адресацию с помощью 556 РТ4). Получается как бы два разных компьютера, причём в каждом из двух режимов есть свой дешифратор для выборки портов. Однако можно обойтись и без доступа к портам в альтернативном режиме, что экономит детали.

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

Расширив этот принцип до адреса E000, т.е отключая в альтернативном режиме из адресного пространства не только оба ППА, но и ВГ75, при том же числе деталей в альтернативном режиме получается уже 56 кб ОЗУ (и 8 кб ПЗУ). При детализации выяснилось, что вариант на 56К требует не больше деталей, чем вариант 48К.

Достаточно иметь доступ к портам лишь в базовом режиме, благодаря чему в альтернативном режиме не нужен второй дешифратор или применение 556 РТ4. Тогда в альтернативном режиме есть только сплошное ОЗУ, в старших адресах - ПЗУ, а ППА клавиатуры, запасное ППА D14 и ВГ75 исчезают из памяти процессора, освобождая пространство для ОЗУ. При этом программа, чтобы обратиться к любому В/У должна предварительно вернуть стандартный базовый режим, в котором порты присутствуют в адресном пространстве на их обычных местах.

Вышеприведённым я показал ход мысли, каким образом пришёл к этому оптимальному варианту модернизации архитектуры РК86. Лучше и проще не получится. Особенно простая доработка получается когда основное ОЗУ РК выполнено на РУ5 (а не на РУ3). Тогда всё, что требуется сделать это блокировать в альтернативном режиме три чип-селекта В/У, переадресовывая обращения к ним в ОЗУ.

Такое расширение ОЗУ также можно сделать в виде внешней платки от которой идёт коса имеющая на конце разъём DIP-16, который втыкается в панельку D11 (вместо ИД7), как и планировали авторы РК86. Для переключения режимов 32К / 56К используются команды OUT F0 / STA F000 и OUT F8 / STA F800. Но т.к в этом варианте надо добавить всего три доп.ИМС, то и без доп.платки не проблема смонтировать их вторым этажом.

Сигнал управляющий режимом формирует RS-триггер (например на половинке 155 ЛА3 или ТМ2). Управление осуществляется не данными, а только стробами по записи, которые заведены на R и S входы. Четыре чип-селекта E000, E800, F000, F800 на плате уже есть, если испольуется РК-КНГМД. Если нет, то 1533 ИД7 монтируется вторым этажом над D5. Для получения стробов по STA или OUT выходы ИД7 соответствующие F000 и F800 на двух вентилях из 1533 ЛЛ1 объединяются с сигналом /WR процессора.

Дешифратор ИД7 (D11) с основной платы переносится на доп.платку. На которой кроме ИД7 стоит ещё КП11 (коммутатор чип-селектов), ТМ2 (RS-триггер формирователь режима), ЛЛ1 (формирователь стробов) и 4 диода. ИД7 перенесённая на доп.платку включена также как в схеме РК, за исключением выходов 9, 10 и 11 (которые выбирают области 8000, A000 и C000). Эти выходы подаются на КП11, которая управляется сигналом с RS-триггера. При включённом базовом режиме проходя через КП11 эти выходы формируют стандартные чип-селекты для ППА клавиатуры, ППА D14 и ВГ75 по стандартным адресам. А в альтернативном режиме на эти цепи подается +5В, а с помощью 4-х диодов через КП11 формируется 0 на чип-селект ОЗУ. Сигналы чип-селектов F000 и F800 с дешифратора КНГМД для формирования R и S TM2 удобно завести через контакты 4 и 5 панельки ИД7 (D11). Кстати, если под дешифратор области E000 применить ИД14, то ЛЛ1 можно с'экономить. Тогда останется только ТМ2 и КП11.

Таким образом с помощью всего трёх доп.корпусов (КП11, ЛЛ1 и ТМ2) в альтернативном режиме образуется сплошное ОЗУ в 56 кб. ПЗУ может оставаться 2 кб, но выгоднее заменить 24-х выводную панельку на 28-ми ногую и поставить 2764 размером в 8 кб. Так как при этом используется ОЗУ 565 РУ5 (для чего на D19 заводится А15), то экран можно программно перенести с 76D0 на D6D0.

А в случае когда на основной плате использованы РУ3 или РУ6, то ОЗУ выше 8000 получают из дополнительной 62256. Но это уже не позволяет перенести экран выше 8000 (по крайней мере у меня это не получилось). В этом случае для получения сплошного ОЗУ в 56К используется другая идея, не программный перенос экрана, а закрытие экранного буфера в области 6000...7FFF участком в 8 кб из 62256. Тогда на доп.платке устанавливается панелька для 62256 и проводками от разъёма ГРПМ-61 подаются адреса и данные, а количество TTL-корпусов увеличивается ещё на 2. Но удобнее 62256 установить не на доп.платке, а на основной платке установив панельку в предусмотренные в журнальной плате отверстия (рядом с ПЗУ фонта). Тогда провода короче (и под платой), а доп платка остаётся маленькой.

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

Схема при ОЗУ на РУ3 + 62256 сложнее, но зато при этом экранный буфер в режиме 56К оказывается вне адресного пространства. А при ОЗУ на РУ5 экран остаётся, но программно переносится в вершину ОЗУ на D6D0...DFFF и для нужд DOS остаётся всего 53 кб. Но и этого хватает, особенно, если BDOS+BIOS CP/M прошить в ПЗУ E000.

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

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

Сообщение  Viktor2312 в Сб Дек 08 2018, 08:45

8
____Я думаю, что уже пора приступать к черчению. Учитывая всё что вы барсик написали можно сделать продуманную электрическую принципиальную схему новой ПЭВМ максимально расширенной, придти к определённому стандарту и постараться выжать из "железа" максимум, но на уровне максимальной стабильности работы при этом. Создать "Радио - 2020РК".
____Черчение схемы могу взять на себя, но нужна будет консультация, уточнения с вашей стороны. Мне хотелось бы конечно сразу и на макетке всё отлаживать, как вам такая идея ?


Для затравки, как это будет выглядеть:

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

Скачать
Viktor2312
Viktor2312
Гуру+

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

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

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

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

Сообщение  barsik в Сб Дек 08 2018, 20:12

9
Viktor2312 пишет:Я думаю, что уже пора приступать к черчению...  можно сделать продуманную электрическую принципиальную схему новой ПЭВМ максимально расширенной
Вообще-то эта тема не о том, а только об расширении ОЗУ. А добавлять надо не только ОЗУ. Как минимум ещё надо получить дополнительные чип-селекты (для винчестера и AY-8912) и поставить буфер на ОЗУ (т.к без этого вообще ничего на слабую шину РК не добавить). Это минимум того, что требуется.

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

Вариант новодела отпадает в силу невозможности производства. На выпуск плат не набрать число заказов даже для минимальной партии. К тому же неясно какая схема платы новодела нужна. Что на плату новодела поставить чтобы получился бесполезный монстр ясно, а для выработки оптимального вариантов надо думать и необходимо обсуждение. Это можно было сделать в форуме ZX-PK.ru (с которого меня ни за что выгнали), а на этом форуме всего два пользователя РК86, отчего обсуждение невозможно.

Выпуск плат возможен двумя вариантами. Создав команду - нужны, как минимум, три человека - разводчик печати, схемотехник и программист. А второй вариант, это когда один человек обладает необходимой энергией, фанатизмом, умениями, чтобы сделать всё самому.

На барахолке ZX-PK.ru в моду ввели "краудфандинг". Придумали такой глупый термин означающий "выпуск плат по подписке". Суть в том, что собираются предварительные заказы на 10 плат и как только нужное число подписчиков набирается, то начинается производство. Обычно изготовитель плат изготовляет их даже без предоплаты за свой счёт, полагаясь на честность будущих покупателей, записавшихся в список.

У меня лично нет ни возможности, ни энергии заняться производством плат. Полгода назад один человек попытался набрать заказов на новодел РК, но даже в форуме ZX-PK.ru это не получилось (рынок насыщен предыдущими новоделами). Больше ОЗУ и доп.фонты мало кого впечатляют. Так что нет смысла и мечтать о новодельных платах РК86. Хотя уверен, что если кто-то за свой счёт произведёт привлекательные платы РК86, то пусть и не сразу (за несколько лет) он сможет распродать всю партию таких плат на барахолке сайта ZX-PK.ru. Особенно, если на плате применить статические ОЗУ, добавить удобный цвет и предусмотреть два слота для расширений.

Так что чертить полную принципиальную схему РК86 с доработками надо только, если планируется выпуск таких плат. В своих постах на ZX-PK.ru, я излагал идею, что из РК86 схемотехнически не надо делать кардинально другой компьютер. Я сторонник мелких доработок. Можно устранить часть недостатков РК мелкими доработками на журнальной плате, если человек имеет опыт и руки у него не трясутся при пайке.

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

Проблема найти оптимальный компромисс между объёмом доработок и получаемым выигрышем. Например, минимальный вариант расширения ОЗУ (при РУ5) на 8 кб сводится лишь к нахождению свободного чип-селекта, чтобы можно было освободить для доп.ОЗУ окно занимаемое доп.ППА D14. Расход деталей лишь 555 ИД7, что делит выборку 8000...9FFF на участки, чтобы перенести доп.ППА D14 с адреса A000 и (с помощью 2-х диодов) "открытие ОЗУ" в окне 8К A000...BFFF. Выигрыш мал, зато трудоёмкость и расход деталей минимальны.

Ранее совместимые схемы изменения архитектуры предполагали, что есть две карты памяти (на 32К и 64К) в каждой из которых работает свой дешифратор ИД7 формирующий выборки портов. Потому и схемы оказывались громоздкими ~7 корпусов (если без использования РПЗУ РТ4 или РЕ3). Это подход аппаратчика (т.к не требуется смена ROM-BIOS, достаточно перетранслировать его под новые адреса портов).

А я в данной теме предложил, кардинально изменив ROM-BIOS, сократить схему, оставив лишь один дешифратор портов. При этом в режиме 56К нет доступа к портам, а есть только ОЗУ и ПЗУ. Такой трюк чуть неудобнее для программиста, но сокращает детали.

Мне лично доп.ОЗУ нужно лишь для того, чтобы получить DOS и подключить винчестер. Так как винчестер без DOS никак не использовать. Загручик с винчестера (~1 кб) или дисковода тоже надо куда-то прошить. А это наводит на мысль, что надо доп.ПЗУ.

В плане доработок пока я определился только по расширению ОЗУ (до 56К). На это тратится всего 3 корпуса. Но не решил как получать дополнительные чип-селекты для В/У. Они нужны и неизбежен расход, как минимум, в ещё один дешифратор. Теоретически этот дешифратор официально уже есть, т.к при установке РК-КНГМД доп.ИД7 ставится на область E000 (он делит область 8К на 4 выборки). Если применить не ИД7, как советовал Е.Седов, а ИД14 (а в ней сразу 2 дешифратора на 4 выхода), то доп.корпус не расходуется.

Вопрос в том, какую область делить. РК-ДОС использует адреса F000...F3FF в РК-КНГМД. Тогда при делении области F000...F7FF на 4 участка по 200H, остаётся всего 2 новых чип-селекта (можно получить и 3, если переделать RK-DOS, чтобы не было команд IN/OUT). Как видите, доп.порты в области F000 это единственный приемлимый вариант, т.к доп.порты должны быть доступны в режиме 56К. Увы, при занятии выборки F000...F7FF на доп.порты надо снова искать чип-селекты на коммутацию режима (32К / 56К). Если выборку F600...F7FF занять на триггер режима, то остаётся всего один чип-селект, только для винчестера, а ВИ53 или AY-8912 уже некуда подключать.

В базовом РК расширение ПЗУ в РК86 делается без доп.деталей, т.к чип-селект ПЗУ уже изначально выдаётся не на 2 кб, а на все 8 кб в окне E000...FFFF (достаточно заменить 24-х ногую панельку РФ2 на 28-ми ногую панельку и поставить туда 2764). А при занятии области F000...F7FF на порты, расширять ПЗУ можно только в окне РФ2 в 2 кб. Это или припайка двух РФ2 в 2 этажа (плюс корпус логики) или ориентация на ROM-диск читаемый через доп.ППА D14 (по принципу ОРИОНА). Расширять ли ПЗУ я тоже ещё не решил. Тут тоже выбор буриданова осла - с одной стороны ПЗУ 4 кб упрощает программирование и избавляет от ROM-диска, с другой стороны, - это уже слишком много доп.корпусов на основной плате РК.

Я не использовал несколько лет РК-КНГМД и недавно обнаружил, что он сдох. Теперь буду на нём все микросхемы менять на панельки, чтобы найти дохлую микросхему. Возможно уже и чинить не стОит, а проще сразу сделать DOS для винчестера. Контроллер винчестера намного проще - ППА и 2 TTL-корпуса.

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

Если кто-нибудь хочет попробовать такой цвет в реале, то дам непроверенную схему и напишу на Паскале демо для проверки такого цвета. Сам я пока реализацией этого в железе не займусь.

Viktor2312 пишет:на уровне максимальной стабильности работы при этом

Стабильность в РК нарушает только перегрузка шины и турбирование. Турбированием на своей плате не занимался. Без буферизации это не сделать.

Хотелось бы из КР580 выжать максимум. На Z80 любой дурак может получить хоть 10 МГЦ. Но как я где-то писал, уже только замена кварца 16 на 20 МГЦ даёт ускорение на 34% - до 1.75 МГЦ реального такта. Кварц 22.5 МГЦ даёт 2 МГЦ реального такта, а кварц 27 МГЦ даёт 2.5 МГЦ реального такта. Установка Z80 интересна, но это будет уже другой компьютер, не РК86. Z80 нежелателен, чтобы не было соблазна использовать его команды. Разумно все программы делать для КР580, причём на 32К. Расширение ОЗУ - это только для DOS и удобства. Единственное, что необходимо в базовом РК, это альтернативные фонты. Такой подход никого не откидывает.

Viktor2312 пишет:Черчение схемы могу взять на себя, но нужна будет консультация, уточнения с вашей стороны

Вряд ли стоит чертить всё заново. Проще взять уже начерченные схемы РК JPG-файлом и внести туда доработки. Пока не вижу смысла чертить схему РК. Схему расширения ОЗУ до 56К на РУ5, дешифратора В/У в области F000 и буфер ОЗУ на 589 АП16 постараюсь выложить завтра.

Viktor2312 пишет:Мне хотелось бы конечно сразу и на макетке всё отлаживать, как вам такая идея ?

Не-е-е, - на макетке спаять целый компьютер, - у Вас точно не хватит энтузиазма. Это каторжная работа. Это можно сделать только при наличии самозалуживающейся проволоки или приспособления для монтажа методом накрутки. Иначе это растягивается на месяц, а энтузиазм и энергия кончаются раньше. Лучше сделайте предложенные доработки на отлаженной журнальной плате.

Начните со схемы улучшения качества фонта за счёт замены кварца с 16 до 20 МГЦ. Тогда можно взять мою прошивку фонта с инверсией. Затем сделайте ROM-диск (хотя бы на одном ПЗУ 27256). Я выложу ПЗУ РК86, которое по сбросу грузит DOS из ROM-диска (аналогично ОРИОНУ). Затем, если у Вас уже сделана переделка для замены РУ3 на РУ5 (за счёт замены ЛА3 на ЛА9) можно будет сделать переделку для расширения ОЗУ до 56К. Для такой переделки у меня сделана CP/M на 29 кб работающая без внешних приводов, - в качестве диска A используется 26 кб верхнего ОЗУ, а диск B, если он есть это DD-дискета РК-КНГМД на 560 кб.

А следующим шагом - буферизация ОЗУ и, при желании, установка двух банок 565 РУ5 в 2 этажа с цельно банковой коммутацией окном в 56К, что даёт 112К ОЗУ, хотя это имеет смысл только, если нет КНГМД или винта, тогда из второй банки РУ5 организуется эл.диск на 56К, этого вполне достаточно для любой DOS. Эл.диск имеет смысл для ускорения копирования файлов при одном КНГМД и для ускорения трансляции, т.к эл.диск быстрый. Также эл.диск удобен, если все другие приводы (винт, флоп, флэш) недоступны.


Последний раз редактировалось: barsik (Сб Дек 08 2018, 21:05), всего редактировалось 1 раз(а)

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

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

Сообщение  Viktor2312 в Сб Дек 08 2018, 20:51

10
Вообще-то эта тема не о том, а только об расширении ОЗУ.

Естественно, я написал сюда, чтобы привлечь ваше внимание. Тему отдельную я сейчас создам. С названием: "Разработка "Радио - 2020РК".

А добавлять надо не только ОЗУ. Как минимум ещё надо получить доп.ПЗУ (хотя бы в ROM-диске), как-то получить дополнительные чип-селекты (для винчестера и AY-8912) и поставить буфер на ОЗУ (т.к без этого вообще ничего на слабую шину РК не добавить). Это минимум того, что требуется.

Давайте думать, разрабатывать и добавлять и доп. ОЗУ, и доп. ПЗУ и дополнительные сигналы "выбора кристалла" CS для выбора винчестера и AY и поставим буферы, чем больше микросхем, тем лучше. Сделаем давайте и этот минимум, а лучше по максимуму!

Пора приступать к черчению чего?
Электрической принципиальной схемы и я хочу ещё сразу и макетировать, чтобы это всё сразу проверять на практике, чтобы в итоге получить точно и гарантированно рабочую схему.

Вопрос в том о чём речь - о выпуске платы новодела или о том, о чём я и писал, о маленьких несложных аппаратных доработках на уже имеющейся журнальной плате РК86.

Я буду делать плату, но перед её изготовлением, нужно разработать схему полную и отладить, проверить, оттестить её на макете, чтобы в заводской не было МГТФ, порезов дорожек и другого уродства, надеюсь на вашу помощь  этом!
Журнальная плата не интересна, её время закончилось в прошлом веке, я её там оставил...

В доработках на плате определяющий критерий - минимизация трудоёмкости, а для новодела определяющий критерий целесообразность (сделать-то можно многое, но нет смысла делать громоздкого, но бесполезного монстра, наподобие РК-макси).

Для меня как раз это интересно, и для меня это крайне полезный и интересный монстр, так как нужен для развития и других проектов, решил остановиться на Радио-86РК, как прототипе, остальные мало подходят, тут главное для меня микропроцессор КР580ВМ80А, а вот импорта нужно либо вообще не касаться, либо избежать по максимуму, а одна, две или 30 доп. микросхем не пугают вообще, только за.

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

Я для себя закажу и даже париться по этому поводу не буду, минимум это 6 плат будет, меньше нет смысла, так как цена будет такая же. В общим плату я и разработаю и закажу.

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

Я готов к обсуждению, но нужен именно монстр, как по мне, так очень полезный. Нужно всё по максимуму, но чтобы чётко работало.

Это можно было сделать в форуме ZX-PK.ru (с которого меня ни за что выгнали), а на этом форуме всего два пользователя РК86, отчего обсуждение невозможно.

Говнофорум мне уже давно не интересен, там скажешь давайте микросхему К555ЛА3 применим, а другой К555ЛА8 и начинается спор на 20 страниц, не 2 человека, ну может 5 более чем достаточно, но я хочу для себя получит, нужную мне машинку, но по знаниям малость не тяну, а вот применяя ваши знания, может вполне получиться, иначе мне придётся дальше одному колупаться, ещё года 3...5 и всё равно получу, возможно, то что нужно, а можем вместе взяться за проект и реализовать его, я не зря же называю его "Радио - 2020РК" в надежде через год получить готовый прототип.

Для выпуска плат возможны два варианта - это создание команды - нужны, как минимум, три человека - разводчик печати, схемотехник и программист. А второй вариант, это когда один человек обладает необходимой энергией, фанатизмом и умениями, чтобы сделать всё самому.

Схему я вычерчу, по крайней мере для себя, будет доступна для скачивания, и по своим стандартам, на макетке всё отлажу, осциллографы, мультиметры, программаторы, БП всё имеется... С временем немного сложнее свободным, но буду стараться выделять. Печатную плату разработаю и изготовлю, точнее Резонит изготовит, так что остаётся ваша помощь с некоторых вопросах, касательно разработки схемы и особенно программирования, оно у меня пока очень медленное, я считаю, что мы в двоём справимся!

На барахолке ZX-PK.ru в моду ввели "краудфандинг". Придумали такой глупый термин означающий "выпуск плат по подписке". Суть в том, что собираются предварительные заказы на 10 плат и как только нужное число подписчиков набирается, то начинается производство. Обычно изготовитель плат изготовляет их даже без предоплаты за свой счёт, полагаясь на честность будущих покупателей, записавшихся в список.

Плату я изготовлю и разработаю, хоть на 200 микросхем с обвязкой, обычная, стандартная, двухсторонняя, с шелкографией и т. д. С этим нет проблем, главное СХЕМА и ПО, если будут отличия от оригинала. Но импортная элементная база, крайне не желательно, я люблю, обожаю и предпочитаю, отечественную и советскую, пусть даже будут больше габариты, потребление, и большее количество микросхем, не пугает вообще, даже лучше... Большая часть микросхем, которые возможно потребуются, а я собираюсь использовать КР580 микропроцессорный комплект и К555 серию имеется в заводских упаковках и сотнями, если что до-заказать ещё сотню другую не проблема, на складах с хранения всё имеется. Плановая экономика, творила чудеса!

У меня лично нет ни возможности, ни энергии заняться производством плат. Полгода назад один человек попытался набрать заказов на новодел РК86, но даже в форуме ZX-PK.ru "дело не выгорело". Больше ОЗУ и доп.фонты мало кого впечатляют. Так что нет смысла и мечтать о новодельных платах РК86. Хотя я уверен, что если кто-то за свой счёт произведёт привлекательные платы РК86, то пусть и не сразу (за несколько лет) он сможет распродать всю партию таких плат на барахолке сайта ZX-PK.ru.

Это не проблема, платы я изготовлю...

Вы, очень много написали, но я завтра так же поэтапно и подробно отвечу на каждый ваш абзац, чтобы не было недопонимания, а на данный момент давайте приступать, та фотка, которую я выложил, это уже начало схемы, просмотрите, проверьте, если нет ошибок, то продолжу дальше чертить, схема что вычертил больше, но завтра докину изменения уже в новую тему. Чертить не сложно в сплане, на это ушло 10 мин. Просто сегодня 5 летнего племянника начал обучать электронике, голова забита лампочками и выключателями, готовлю себе смену  Smile

Надеюсь на наше с вами плодотворное сотрудничество, пишите и не стесняйтесь в объёме, чем объёмнее, более разжёвано, тем лучше, а молодняк с клиповым мышлением, которого пугает лишняя строчка текста, пусть проходит мимо...
Viktor2312
Viktor2312
Гуру+

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

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

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

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

Сообщение  Viktor2312 в Сб Дек 08 2018, 21:35

11
Далее по теме "Разработка Радио - 2020РК" я уже буду писать в новой теме, чтобы эту тему, не перегружать, тут:
Разработка "Радио - 2020РК" !


Последний раз редактировалось: Viktor2312 (Вс Дек 09 2018, 00:00), всего редактировалось 1 раз(а)
Viktor2312
Viktor2312
Гуру+

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

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

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

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

Сообщение  barsik в Сб Дек 08 2018, 22:38

12
Viktor2312 пишет:Сделаем давайте и этот минимум, а лучше по максимуму!
Если Вы серъёзно, я готов отложить все другие интересы в сторону и заняться только этим. Только сделаем разумные платы для всех, а не монстр для демонстрации возможностей БИС микропроцессорного комплекта КР580. Кстати, даже если сделать лишь базовый РК, но с большим полем слепыша, уже только одно это имеет смысл. Предыдущие разработчики новоделов делали лишь полную реплику и даже слепыш не ставили.

Т.е, - РК86 с возможностью включить в окне 8000...DFFF дополнительное ОЗУ, плюс мелочи, типа добавки ВИ53 (или AY-8912), большого ПЗУ фонта, чтобы было много возможностей графики и была простейшая переделка игр за счёт замены букв на спрайты/тайлы, чтобы в старых играх по экрану бегали не буквы, а фигурки и т.п. ПЗУ 2764 тоже очень полезно (я тогда напишу ROM-BIOS для графического РК с экраном 128*86). Чем меньше на шине стоит микросхем, тем шина сильнее и работа машины надёжнее. А главное, - легче турбируется.

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

Viktor2312 пишет:я хочу ещё сразу и макетировать, чтобы это всё сразу проверять на практике, чтобы в итоге получить точно и гарантированно рабочую схему
Не, не, это чревато утратой энтузиазма. Если есть рабочая плата РК, то нет смысла её снова паять проводками. Достаточно смонтировать 5-6 микросхем вторым этажом и впаять вместо 24-х ногих панелек 28-ми ногие панельки. Хотя на отдельной платке, видимо, придётся монтировать AY-8912 (маленькую платку легко закрепить на винтах разъёма ГРПМ-61). Даже ВИ53 при желании можно смонтировать вторым этажом над 155 ИР13.

Всё-равно даже делая ПОЛНЫЙ макет проводками, сначала придётся смонтировать базовую схему РК86 и только отладив её, делать расширение. Так что нет смысла делать то, для чего уже есть печатная плата. Да и не сравнить трудоёмкость. Сделать полный макет это труд в 100 раз больший, чем припаять несколько микросхем вторым этажом. А учитывая сложность отладки РК86 в случае ошибок, то это не удастся сделать и за месяц.

С другой стороны, если делать плату-новодел, то можно не ограничиваться самым минимумом, а многое улучшить. Жаль, что не с кем обсудить. Например, выгоднее ОЗУ сделать на статике. Но я пока не знаю как, - когда я пытался поставить 62256, то как оперативное - ОЗУ работало отлично, но изображения из статики на экране почему-то не было. Потому одно время у меня, когда динамическое ОЗУ сбоило, то экран читался из РУ5-тых (область 7700...7FFF), а основное ОЗУ было на 62256.

Мой РК на ОЗУ 565 РУ5 и сейчас сбоит (хотя ИР1 добавлен), лишь с импортными TMS4164 никаких сбоев. Так и не знаю схемы надёжного устранения глюков ОЗУ в РК86. Пробовал безуспешно несколько журнальных способов, а надёжно помог только способ замены ОЗУ на импортное. Способ устранения глюков можно посмотреть на новодельном варианте maddev-xlat, там, якобы, эта проблема решена.

Альтернативное ОЗУ надо макетировать. Также выгодно вместо ОЗУ применить SIMM-30 на 256 кб или 1 мб, или в крайнем случае 565 РУ7. Но это всё надо макетировать. Это долго. Потому лучше синица в руках, чем... вообще ничего. Поэтому и не надо заморачиваться. Единственное, что стоило бы добавить, - это простой цвет для граф.режимов, т.к это резко поднимет потребительные качества. Это надо обсудить. Но до этого у меня руки не дойдут быстро.

Лучше разумно продумать конструктив. Например, применить одну банку РУ5, но рядом поставить IDE-разьём (40 штырьков). куда можно втыкать расширение ОЗУ. Кстати, 40-ка ногие IDE-разъёмы годятся и в качестве разъёма периферии. Они имеют небольшую площадь и есть ответные угловые разъёмы.

А чтобы уточнить схему достаточно, если сделаю я и эти же доработки повторите Вы на такой же журнальной плате. Это Вы сможете сделать очень быстро, всего за один день. Я могу ошибиться рисуя схему глядя на реал. Когда делаешь лишь для себя, то изменения вносятся, отмечаются на клочке бумаге, потом всё теряется, забывается. Потому готовьте рабочий журнальный РК86.

Для разводки схему придётся чертить. Лучше сразу чертить в программе разводчика плат (Пикад и т.п).

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

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

Сообщение  Viktor2312 в Сб Дек 08 2018, 23:59

13
Если Вы серъёзно,...

Я серьёзно.

Только сделаем разумные платы для всех, а не монстр для демонстрации возможностей БИС микропроцессорного комплекта КР580.

Мне вторая часть предложения более интересна, но на безрыбье и рак рыба...

Кстати, даже если сделать лишь базовый РК, но с большим полем слепыша, уже только одно это имеет смысл. Предыдущие разработчики новоделов делали лишь полную реплику и даже слепыш не ставили.

Что за слепышь, что это, не уловил сути...

Если уж надо опробовать БИС 580-го МПК, то можно поставить слот с полной буферизацией

Обязательно, так как я бы СМ-1800 хотел бы, но увы и ах, нет у меня полной документации на неё, для повторения и применения в своих нуждах, поэтому... Ну хоть так.

Не, не, это чревато утратой энтузиазма. Если есть рабочая плата РК, то нет смысла её снова паять проводками. Достаточно смонтировать 5-6 микросхем вторым этажом и впаять вместо 24-х ногих панелек 28-ми ногие панельки. Хотя на отдельной платке, видимо, придётся монтировать AY-8912 (маленькую платку легко закрепить на винтах разъёма ГРПМ-61). Даже ВИ53 при желании можно смонтировать вторым этажом над 155 ИР13.

Уже нет рабочей РК, поэтому лучше макетка, весь год впереди, так что времени хватит, а интузиазм не угаснет, за последнии 5 лет не угас, но просто надоело ходить в темноте, есть пробелы в знаниях и как только натыкаешься на такой пробел, всё сразу стопорится и надолго, решил просто попробовать другой вариант, реализации задуманного.

Всё-равно даже делая ПОЛНЫЙ макет проводками, сначала придётся смонтировать базовую схему РК86 и только отладив её, делать расширение. Так что нет смысла делать то, для чего уже есть печатная плата. Да и не сравнить трудоёмкость. Сделать полный макет это труд в 100 раз больший, чем припаять несколько микросхем вторым этажом. А учитывая сложность отладки РК86 в случае ошибок, то это не удастся сделать и за месяц.

На данный момент без вариантов, макет, однозначно, пока кстати время более менее есть свободное декабрь и январь буду загружен по минимуму. Можно кстати сразу пробовать поставить кварц на 27 МГц, чтобы получить 3 МГц тактовую частоту.

Раз нужно делать базовый вариант, то распишите, но уже в соответствующей теме, первую доработку, чтобы я её учёл на схеме. Завтра займусь черчением схемы. У меня всё по порядку, схема - макетка, лучше чтобы у меня предварительно была схема. Часть, та, что я смогу уже смакетировать. Генератор может даже завтра смакетирую и запущу, только вот кварцы у меня в достатке только на 18 МГц, а на 24, с копейками тоже где-то видел, может и на 27 МГц найду, нужно порыться в закромах. Так отвлёкся... дальше...

С другой стороны, если делать плату-новодел, то можно не ограничиваться самым минимумом,

ВОТ ЭТО Я ОТ ВАС И ХОЧУ ПОЛУЧИТЬ, МНЕ НЕЖЕН ПОЛНЫЙ МАКСИМУМ !!!

Например, выгоднее ОЗУ сделать на статике. Но я пока не знаю как, - когда я пытался поставить 62256, то как оперативное - ОЗУ работало отлично, но изображения из статики на экране почему-то не было. Потому одно время у меня, когда динамическое ОЗУ сбоило, то экран читался из РУ5-тых (область 7700...7FFF), а основное ОЗУ было на 62256.

Не, это импорт, это мне не подходит, К565РУ5 я хочу и есть, а этот импорт, мне и 1 копейку на него жалко потратить, а вот КР565РУ5Г прикуплю ещё сотню другую, кстати у меня в ПЭ они работают отлично, без сбоев. В РК схемное решение не ахти, но нужно будет поднять все доработки по улучшению стабильности работы ОЗУ в РК, там проблемы начинаются от длинных и тонких проводников питания и заканчивая заменой К155ИР1 на К555ИР16, и всё начинает стабильно работать, по сути устранение детских болезней. Поэтому про импорт, и Z80 даже слышать не хочу, не интересно.

Альтернативное ОЗУ надо макетировать. Также выгодно вместо ОЗУ применить SIMM-30 на 256 кб или 1 мб, или в крайнем случае 565 РУ7. Но это всё надо макетировать. Это долго. Потому лучше синица в руках, чем... вообще ничего. Поэтому и не надо заморачиваться. Единственное, что стоило бы добавить, - это простой цвет для граф.режимов, т.к это резко поднимет потребительные качества. Это надо обсудить. Но до этого у меня руки не дойдут быстро.

Не нужно импорт, не нужно SIMM, даже К565РУ7 не нужно, лучше несколько банков, но на К565РУ5.

Лучше разумно продумать конструктив. Например, применить одну банку РУ5, но рядом поставить IDE-разьём (40 штырьков). куда можно втыкать расширение ОЗУ. Кстати, 40-ка ногие IDE-разъёмы годятся и в качестве разъёма периферии. Они имеют небольшую площадь и есть ответные угловые разъёмы.

Две банки развести на плате не проблема, но и добавить разъёмы IDC это обязательно, да они очень удобные, можно и на плату ответную часть использовать, а можно и на шлейф.

А чтобы уточнить схему достаточно, если сделаю я и эти же доработки повторите Вы на такой же журнальной плате. Это Вы сможете сделать очень быстро, всего за один день. Я могу ошибиться рисуя схему глядя на реал. Когда делаешь лишь для себя, то изменения вносятся, отмечаются на клочке бумаге, потом всё теряется, забывается. Потому готовьте рабочий журнальный РК86.

Хорошо, я понял, вычерчиваю схему журнального РК. И макетирую его. И потом уже будем по ходу пьесы, править/дополнять схему и макет.

Работы на завтра будет много. Единственное К565РУ3, нужно сразу заменить на К565РУ5, с соответствующими доработками изменениями. Это нужно будет завтра отдельно обсудить.

Для разводки схему придётся чертить. Лучше сразу чертить в программе разводчика плат (Пикад и т.п).

У меня по черчению схем и разработке ПП, своя технология, схемы я черчу в sPlan, а платы разрабатываю в Sprint LayOut, всё отработано и отлажено, вплоть до производства. Когда делал плату Модуля процессора для ПЭВМ "Ириша" ошибок не было ни одной, были только недочёты, и то, это случилось при первой плате, потом когда разводил плату МКГД, ошибки не было ни одной, MV1971 её спаял и сразу запустил, так что если схема правильная, то и плата будет, и без ошибок. Главное сделать схему, отмакетировать её, и всё будет супер !


И давайте перейдём в соответствующую тему, а то тут будет много лишнего, не по теме, в эту:
Разработка "Радио - 2020РК" !
Viktor2312
Viktor2312
Гуру+

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

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

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

Радио-86РК: Расширение ОЗУ Empty вариант доработки: 8 кб доп.ОЗУ + 7 кб доп.ПЗУ отдельной платкой

Сообщение  barsik в Чт Дек 27 2018, 00:18

14
Вот схема простой совместимой доработки РК86 расширяющей ОЗУ и ПЗУ. Она для варианта когда ОЗУ на 565РУ5 (при этом на D19 завести старшие адреса и выход D19 - на ноги 9 всех ОЗУ). Если ОЗУ на РУ3-их, при которых ОЗУ (без установки новых корпусов памяти) не расширить, то схему надо упростить, оставив только включение доп.ПЗУ в окне C400...DFFF. Тогда ППА D14 не надо переносить на другой адрес (в случае, если доп.ПЗУ одностраничное, а РК-КНГМД нет, то и второй дешифратор на область E000 можно не ставить).

Радио-86РК: Расширение ОЗУ ROM-C400__RAM-A000.1545961498

Способ не нарушающего совместимость расширения ОЗУ в данной схеме основан на том, что чип-селект запасного ППА D14 отдаётся на "открытие ОЗУ" размером 8 кб в окне A000...BFFF. А само ППА D14 переносится в область E000 (на E800 или F000) или ещё куда-нибудь. Или просто снимается за ненадобностью, что только упростит схему.

Для получения этого дополнительного чип-селекта выборка области E000...FFFF делится на 4 участка второй половиной дешифратора. Из добытых таким способом 4-х чип-селектов два отнимает ПДП (E000...E7FF) и ROM-BIOS (F800...FFFF). Остаётся всего два новых чип селекта E800 и F000. Оба эти адреса заняты РК-КНГМД. Если РК-КНМД используется, то ППА D14 придётся ставить куда-то ещё. Второй дешифратор в данной схеме заменяет ИД7 на область E000, что ставится при установке РК-КНГМд. Т.е одна ИД14 заменяет сразу два дешифратора ИД7.

Для расширения ПЗУ выбрана выборка ВГ75 (C000...DFFF). Потому-что, во-первых в ней есть целые 8 кб (в выборке E000...FFFF, часть в 2 кб уже занята базовым ПЗУ). Потому используя выборку C000, объём прямо адресуемого ПЗУ получается больше и, главное, в окне C400 ПЗУ можно странично переключать в окне, не теряя ROM-BIOS стоящий на F800.  Во-вторых, выборку E000 для расширения ПЗУ нельзя использовать не потеряв совместимость с РК-КНМД.

После переделки получается следующие изменения в архитектуре:

- запасное ППА D14 перемещается на адрес E800
- появляется 8 кб дополнительного ОЗУ в окне A000...BFFF
- появляется 7 кб дополнительного ПЗУ в окне C400...DFFF

Карта памяти компьютера при этом приобретает вид:

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

7 кб доп.ПЗУ для размещения резидентной DOS или холодного загрузчика DOS из внешнего носителя достаточно. При необходимости иметь больше ПЗУ, легко добавить многостраничность ПЗУ в окне C400. Для этого достаточно добавить триггер ТМ2 дающий 2 управляющих бита для коммутации страниц ПЗУ. Запись в этот двухбитовый регистр, чтобы не тратить единственный свободный после доработки чип-селект удобно делать выборкой F800 (запись в ПЗУ не вредит). Для чего достаточно /WR и выборку /F800 сложить на вентиле ЛЛ1 и подать на С-входы триггеров. Выходы триггеров формируют адреса A13 и A14 в ПЗУ 27256, что даёт в итоге 4 страницы по 7 кб, всего 28 кб дополнитльного ПЗУ.

Обратите внимание, что ИД14 заменяет D11 ИД7 на основной плате. Это сделано потому, что вариант рассчитан на дополнительную платку подключаемую косой с DIP-разъёмом втыкаемым в панельку D11 (как и планировали расширять ОЗУ авторы РК). Тем самым ИД7 вообще исчезает и ИД14 берёт на себя её функции. Сигналы обозначенные Пxx означают "панелька D11 контакт xx". Т.е эта схема формирует те сигналы, что в базовом варианте формировал D11 ИД7, немного иначе формируя карту области памяти.

Такой вариант доработки более трудоёмок (чем двухэтажный монтаж на основной плате), но позволяет быстрый реверс, т.е возврат к базовому варианту - достаточно поставить на место ИД7 и восстановить несколько перерезанных печ.проводков (у выборки РФ2 и у выборок ОЗУ). Выборка РФ2 теперь формируется иначе, её необходимо отрезать.

Выборки ОЗУ не мешают, но для красоты (чтобы избежать проводов вне косы) их тоже полезно отрезать от печати с целью освободить контакты панельки. Из 4-х выборок (объёдиняемых в схеме РК по ИЛИ) для выбора ОЗУ достаточно лишь одной, потому остальные не нужны. Это позволяет освободить контакты панельки и использовать их иначе. Т.о, чтобы подавать несколько доп.сигналов на основную плату через панельку, можно освободить контакты 14, 13, 12 панельки (для включения ОЗУ достаточно контакта 15). Через освободившиеся контакты на доп.платку подают A11 и A12 и снимают сигнал выборки для ROM-BIOS (/F800), который на основной плате отрезается от цепи /E000 (т.к теперь выборки ПДП и ПЗУ F800 разные).

Подобная доработка легче и с меньшим числом деталей делается используя монтаж доп.корпусов вторым этажом. А представленный вариант полезен тем владельцам РК86, кто стремится сохранить оригинальный вид основной платы. Маленькая доп.платка закрепляется на винте разъёма ГРПМ-61 и от неё к панельке D11 идёт коса с разъёмом DIP-16 на конце. А панелька на 28 ног для 27256 устанавливается на основной плате рядом с ПЗУ F800 в уже имеющиеся на журнальной плате отверстия и выводы панелько соединяются короткими проводками с выводами панельки ПЗУ F800. Эти провода при взгляде на плату сверху не видны, не портят внешний вид платы, что должно удовлетворить требования эстетов.

Если вторая РФ2 по адресу F000 не ставится, то подключению самого РК-КНГМД по адресу F000 данная схема не мешает. Но с ПЗУ на плате РК-КНГМД возникает конфликт с ППА D14 на E800, т.к в РК-КНГМД здесь стоит ПЗУ. Но это не проблема, т.к для РК-ДОС теперь имеется намного больше ПЗУ в области C400. Потому две РФ2 на плате КНГМД надо снять.

Если же по странной прихоти хочется использовать именно оригинал РК-ДОС, то придётся добавить ещё один дешифратор (или просто выкинуть ППА D14), т.к РК-КНГМД при работе использует оба адреса E800 и F000, потому они не могут использоваться для переноса сюда ППА D14. В этом случае можно с помощью ЛА3 из выборки клавиатуры 8000 получить две выборки 8000 для клавиатуры и 9000 для запасного ППА.

Как видите при расширении ОЗУ запасное ППА D14 всем мешает, его проще выкинуть, чем сохранить. В случае, если основное ОЗУ на 565 РУ3, то придётся где-то на основной плате смонтировать ещё один корпус ОЗУ на статике 62256/w24257 и использовать для его выборки вырабатываемый на этой платке чип селект A000...BFFF (это ИД14 вывод 5).

В заключение вот упрощённый вариант этой схемы добавляющий только ПЗУ 7 кб в области C400...DFFF, что применим при компьютере на ОЗУ 565 РУ3, при котором нельзя расширить ОЗУ без установки микросхем памяти.

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


Последний раз редактировалось: barsik (Вс Дек 30 2018, 11:39), всего редактировалось 2 раз(а)

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

Радио-86РК: Расширение ОЗУ Empty расширение ОЗУ на 18 кб в дырках в области портов при 565 РУ5

Сообщение  barsik в Чт Дек 27 2018, 18:21

15
Как указано выше, при ОЗУ на 565 РУ5 не нарушая совместимости можно расширить ОЗУ в окнах. Для этого в каждом сегменте по 8 кб, служащем в базовой схеме в качестве выборки порта, для ОЗУ выделяется участок в 6 кб, оставляя область в 2 кб для порта. Если открыть такие окна ОЗУ в 8-ми килобайтовых участках трёх портов 8000, A000 и C000, то ОЗУ расширится на 18 кб в виде трёх несплошных участков. А участок E000 разумно разделить для получения дополнительных чип селектов нужных для подключения внешних устройств. Т.к при такой доработке адреса всех портов не меняются, то проблем совместимости с имеющимся ПО не возникнет.

Схему реализующую данную идею проще всего сделать используя РПЗУ 155 РЕ3. На логике схема получается более сложной. Вот схема реализующая данную идею на TTL-микросхемах изготовляемая в виде платки, которая подключается через панельку D11.

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

После переделки по этой схеме карта памяти компьютера выше 8000 будет иметь вид:

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

Разумеется такой вариант расширения ОЗУ самый неудобный и даёт пользы не намного больше, чем вариант с доп.ОЗУ всего в 8 кб в окне A000 (вместо запасного ППА D14). Трудно придумать программу в которой  было бы удобно использовать такое фрагментированное ОЗУ. Фрагментированное ОЗУ можно использовать для работы DOS в том числе и CP/M, но TPA будет иметь размер не более, чем 31.5 кб. При этом (в отличие от варианта с 8 кб доп.ОЗУ) в верхнем ОЗУ хватает места не только для кода DOS в 10 кб, но и для экрана в 3 кб. То есть экран можно перенести из основного в верхнее ОЗУ, в 18 кб уместится и DOS и экран. Чуть более лучший вариант будет, если в окне C800...DFFF вместо ОЗУ организовать доп.ПЗУ размером в 6 кб. Тогда общее ПЗУ составит 6+2= 8 кб, а ОЗУ 32+6+6=44 кб.

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

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

Сообщение  barsik в Чт Май 16 2019, 01:26

16
А вот официальный вариант расширения ОЗУ до 60К и ПЗУ до 4К в РК86:

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


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


Естественно, 556 РТ4 для получения такой архитектуры вообще не нужна, в начале 90-тых, чтобы поиметь CP/M, я делал то же самое без всяких 556 РТ4. Ставить 556 РТ4 имеет смысл только если на ней делать коммутируемую двухрежимную архитектуру. А если и делать такую полную смену архитектуры, то разумнее выбрать не такую произвольную архитектуру, а совместимую с Апогеем или Партнёром, тогда хоть какие-то уже имеющиеся программы можно будет использовать. А для такой архитектуры все программы надо писать с нуля. А при наличии CP/M расширять ПЗУ до 4 кб тоже не имеет смысла. В ПЗУ 2 кб после выкидыша оттуда МГ-подпрограмм уместился холодный загрузчик с дискеты, даже RAM-директивы не пришлось выкидывать.

Исходник ПЗУ РК86 с ОЗУ 60К:

;  ROM-BIOS РК86 с ОЗУ 60 кб
;  =========================
; С встроенным загрузчиком НГМД (директива B)
; Но без магнитофонных п/п-мм
; Здесь аппаратная клавиатура от Apple-II

; ФОРМАТ: один сектор 2816 на трек

        .Z80
        aseg
        ORG     100H

BASE    EQU     0F730H          ; ниже D0H байтов - служебные ячейки

EK_ADR  EQU     BASE            ; текущий адрес на экране
POSX    EQU     BASE+02H
POSY    EQU     BASE+03H
ESCFLG  EQU     BASE+04H

;KBDFLG  EQU    BASE+05H        ; если =0, то есть символ в SYMBUF
;RUSLAT  EQU    BASE+06H
;LAST_K  EQU    BASE+09H        ; эти 2 байта должны следовать подряд
;COUNT   EQU    BASE+0AH        ; счётчик опросов (вначале 15)
;APVFLG  EQU    BASE+0BH
;FRELOC  EQU    BASE+0CH        ; эта ячейка не используется

TMPSTK  EQU     BASE+0DH        ; временно храним стек при МГ п/п-ммах
POINT   EQU     BASE+14H        ; адрес откуда произошёл RST_30H
R_HL    EQU     BASE+16H
R_BC    EQU     BASE+18H
R_DE    EQU     BASE+1AH
R_SP    EQU     BASE+1CH
R_AF    EQU     BASE+1EH        ; НИЖЕ ОТКЛАДЫВАЮТСЯ AF,HL,DE,BC

STOP_A  EQU     BASE+23H
PCODE   EQU     BASE+25H
X_JMP   EQU     BASE+26H        ; ДЛЯ БАЙТА C3 (JMP)
PAR_HL  EQU     BASE+27H
PAR_DE  EQU     BASE+29H
PAR_BC  EQU     BASE+2BH
FLG_P2  EQU     BASE+2DH        ; флаг, что есть параметры 2 или 2,3
Y762E   EQU     BASE+2EH
KNS_RD  EQU     BASE+2FH
KNS_WR  EQU     BASE+30H
RAMTOP  EQU     BASE+31H
           
COMBUF  EQU     BASE+33H        ; буфер ввода директивы
STACK   EQU     BASE+0CFH       ; стек монитора
           
SA      EQU     0E6D0H          ; начало экранной области
SCBASE  EQU     0E7C2H          ; левый верхний угол экрана
           
VG_75   EQU     0F200H          ; 0C000H
VT_57   EQU     0F300H          ; 0E000H
           
PA      EQU     0F400H          ; 8000H
PB      EQU     PA+1
PC      EQU     PA+2
PU      EQU     PA+3
           
PDA     EQU     0F500H          ; 0A000H
PDB     EQU     PDA+1
PDU     EQU     PDA+3

XT_ROM  EQU     0F000H          ; второе ПЗУ РК86
           
RTOP    EQU     0DFFFH
TRACK   EQU     RTOP-1          ; раб.ячейки загрузчика с НГМД
TSKT    EQU     TRACK-1
ADRBUF  EQU     TSKT-2
KS      EQU     ADRBUF-2
NRD     EQU     KS-1
NPOS    EQU     NRD-1
           
.comment \                      

; Внутренние нестандартные точки ПЗУ РК и МИКРОШИ

GETLIN  EQU     0F8EEH
YF81B   EQU     0FEEAH
YCMPDH  EQU     0F990H
CRHLBL  EQU     0FB78H          ; Выводит ВК, вправо на 4 позиции и ADR_BL
RIGHT4  EQU     0F9B0H          ; Выводит ВК и вправо на 4 позиции
GETPRM  EQU     0F92CH
VIDEO   EQU     0FACEH
MIKROSH EQU     0F89DH          ; старт "МИКРОШИ"
\

; ----------------------------------------------

        defb    'MON_RK86'
        DW      800H,800H,000,000
       
        JP      VHOD_0      ; +0
        JP      CONIN       ; +3
        JP      0F800H      ; +6
        JP      CONOUT      ; +9
        JP      0F800H      ; +C
        JP      CONOUT      ; +F   это д.быть PRINT
        JP      STATUS      ; +12
        JP      HEX_A       ; +15
        JP      MSSG        ; +18
        JP      XF81B       ; +1B
        JP      ASKPOS      ; +1E
        JP      RD_SCR      ; +21
        JP      0F800H      ; +24
        JP      0F800H      ; +27
        JP      CHSUMM      ; +2A
        JP      PUSK_VG     ; +2D
        JP      ASKTOP      ; +30
        JP      SETTOP      ; +33
           
; ----------------------------------------------

VHOD_0: LD      HL,PU
        LD      (HL),92H
        LD      A,0FFH
        DEC     HL
        LD      (HL),0FFH

        LD      SP,STACK
        CALL    PUSK_VG

        LD      HL,BASE         ; очистка ком.буфера
        LD      DE,COMBUF+2CH
        LD      C,0
        CALL    DIR_F

        LD      HL,STACK
        LD      (R_SP),HL

        LD      HL,TITR
        CALL    MSSG
        CALL    PUSK_VG

        LD      HL,EK_ADR-1
        LD      (RAMTOP),HL
       
        LD      HL,1D2AH        ; установить константы МГ
        LD      (KNS_RD),HL
       
        LD      A,0C3H
        LD      (X_JMP),A
WBOOT:                          ; Warm Boot F86C
        LD      SP,STACK
        LD      HL,PROMPT
        CALL    MSSG
                                ; следующие 3 команды лишние
;       LD      (PC),A          ; A=0
;       DEC     A               ; A-FF
;       LD      (PDA+2),A

        CALL    GETLIN
        LD      HL,WBOOT
        PUSH    HL
        LD      HL,COMBUF
        LD      A,(HL)
        CP      'X'
        JP      Z,DIR_X
       
;        CP      'U'
;        JP      Z,XT_ROM
       
        PUSH    AF
        CALL    AF92C
        LD      HL,(PAR_BC)
        LD      C,L
        LD      B,H
        LD      HL,(PAR_DE)
        EX      DE,HL
        LD      HL,(PAR_HL)
        POP     AF

        CP      'D'
        JP      Z,DIR_D
        CP      'C'
        JP      Z,DIR_C
        CP      'F'
        JP      Z,DIR_F
        CP      'S'
        JP      Z,DIR_S
        CP      'T'
        JP      Z,DIR_T
        CP      'M'
        JP      Z,DIR_M
        CP      'G'
        JP      Z,DIR_G
        CP      'L'
        JP      Z,DIR_L
        CP      'R'
        JP      Z,DIR_R
        CP      'B'
        JP      Z,BOOT
;       JP      XT_ROM     ; без ПЗУ на F000 это д.быть JMP ERROR
        JP      ERROR

; ----------------------------------------------

CURBAK: LD      A,low COMBUF
        CP      L
        JP      Z,AF8F1
        PUSH    HL
        LD      HL,TZABOJ
        CALL    MSSG
        POP     HL
        DEC     HL
        JP      AF8F3

; ----------------------------------------------

GETLIN: LD      HL,COMBUF
AF8F1:  LD      B,0
AF8F3:  CALL    CONIN
        CP      60H
        JP      C,JJJ_01
        AND     5FH
JJJ_01: CP      8
        JP      Z,CURBAK
   ;    CP      7FH
   ;    JP      Z,CURBAK
        CP      5FH
        JP      Z,CURBAK
        CALL    COUT_A
        LD      (HL),A
        CP      0DH
        JP      Z,AF91A
        CP      '.'
        JP      Z,WBOOT
        LD      B,0FFH
        LD      A,low COMBUF+30H           ; ПРОВ. НА КОНЕЦ БУФЕРА
        CP      L
        JP      Z,ERROR
        INC     HL
        JP      AF8F3

; ----------------------------------------------

AF91A:  LD      A,B
        RLA
        LD      DE,COMBUF
        LD      B,0
        RET

; ----------------------------------------------

MSSG:   LD      A,(HL)
        OR      A
        RET     Z
        CALL    COUT_A
        INC     HL
        JP      MSSG

; ----------------------------------------------

AF92C:  LD      HL,BASE+27H
        LD      DE,BASE+2DH
        LD      C,0
        CALL    DIR_F
        LD      DE,BASE+34H
        CALL    GET_HL
        LD      (PAR_HL),HL
        LD      (PAR_DE),HL
        RET     C
        LD      A,0FFH
        LD      (FLG_P2),A
        CALL    GET_HL
        LD      (PAR_DE),HL
        RET     C
        CALL    GET_HL
        LD      (PAR_BC),HL
        RET     C
        JP      ERROR

; ----------------------------------------------

GET_HL: LD      HL,0000
AF95D:  LD      A,(DE)
        INC     DE
        CP      13
        JP      Z,RETCY1
        CP      ','
        RET     Z
        CP      20H
        JP      Z,AF95D
        SUB     30H
        JP      M,ERROR
        CP      10
        JP      M,AF982
        CP      11H
        JP      M,ERROR
        CP      17H
        JP      P,ERROR
        SUB     7
AF982:  LD      C,A
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        JP      C,ERROR
        ADD     HL,BC
        JP      AF95D

; ----------------------------------------------

RETCY1: SCF
        RET

; ----------------------------------------------

if      $ ne    0F990H
        if1
          .printx * Internal subroutine F990 (CMPDH) shifted ! *
        endif
endif

CMPDH:  LD      A,H
        CP      D
        RET     NZ
        LD      A,L
        CP      E
        RET

; ----------------------------------------------

AF996:  CALL    CHK_F4
AF999:  CALL    CMPDH
        JP      NZ,AF9A2
AF99F:  INC     SP              ; POP AF короче
        INC     SP
        RET

; ----------------------------------------------

AF9A2:  INC     HL
        RET

; ----------------------------------------------

CHK_F4: CALL    XF81B
        CP      3
        RET     NZ
        CALL    PUSK_VG
        JP      ERROR

; ----------------------------------------------

RIGHT4: PUSH    HL
        LD      HL,TRIGH4
        CALL    MSSG
        POP     HL
        RET

; ----------------------------------------------

AF9B9:  LD      A,(HL)
HEX_BL: PUSH    BC             ; F9BA
        CALL    HEX_A
        LD      A,20H
        CALL    COUT_A
        POP     BC
        RET

; ----------------------------------------------

DIR_D:  CALL    ADR_BL
AF9C8:  CALL    AF9B9
        CALL    AF996
        LD      A,L
        AND     00FH
        JP      Z,DIR_D
        JP      AF9C8

; ----------------------------------------------

DIR_C:  LD      A,(BC)
        CP      (HL)
        JP      Z,AF9E6
        CALL    ADR_BL
        CALL    AF9B9
        LD      A,(BC)
        CALL    HEX_BL
AF9E6:  INC     BC
        CALL    AF996
        JP      DIR_C

; ----------------------------------------------

DIR_F:  LD      (HL),C
        CALL    AF999
        JP      DIR_F

; ----------------------------------------------

DIR_S:  LD      A,C
        CP      (HL)
        CALL    Z,ADR_BL
        CALL    AF996
        JP      DIR_S

; ----------------------------------------------

DIR_T:  LD      A,(HL)
        LD      (BC),A
        INC     BC
        CALL    AF999
        JP      DIR_T

; ----------------------------------------------

DIR_L:  CALL    ADR_BL
AFA0B:  LD      A,(HL)
        OR      A
        JP      M,AFA15
        CP      20H
        JP      NC,AFA17
AFA15:  LD      A,'.'
AFA17:  CALL    COUT_A
        CALL    AF996
        LD      A,L
        AND     0FH
        JP      Z,DIR_L
        JP      AFA0B

; ----------------------------------------------

DIR_M:  CALL    ADR_BL
        CALL    AF9B9
        PUSH    HL
        CALL    GETLIN
        POP     HL
        JP      NC,AFA3B
        PUSH    HL
        CALL    GET_HL
        LD      A,L
        POP     HL
        LD      (HL),A
AFA3B:  INC     HL
        JP      DIR_M

; ----------------------------------------------

DIR_G:  CALL    CMPDH
        JP      Z,DIRG1

        EX      DE,HL
        LD      (STOP_A),HL

        LD      A,(HL)
        LD      (PCODE),A       ; храним байт точки останова
        LD      (HL),0F7H       ; код команды RST_30H

        LD      A,0C3H
        LD      (0030H),A       ; ПОДГОТОВКА RST_30H
        LD      HL,XRST30
        LD      (0031H),HL
DIRG1:
        LD      SP,R_BC         ; 7618H
        POP     BC              ; BC <-- (7618H)
        POP     DE              ; DE <-- (761AH)
        POP     HL              ; HL <-- (761CH) это стек
        POP     AF              ; AF <-- (761DH)
        LD      SP,HL
        LD      HL,(R_HL)
        JP      X_JMP

; ----------------------------------------------

DIR_R:  LD      A,090H
        LD      (PDU),A
AFA6D:  LD      (PDB),HL
        LD      A,(PDA)
        LD      (BC),A
        INC     BC
        CALL    AF999
        JP      AFA6D

; ----------------------------------------------

ASKPOS: LD      HL,(POSX)
        RET

; ----------------------------------------------

RD_SCR: PUSH    HL
        LD      HL,(EK_ADR)
        LD      A,(HL)
        POP     HL
        RET

; ----------------------------------------------

ERROR:  LD      HL,TXTERR
        CALL    MSSG
        JP      WBOOT

TXTERR: defb    13,10,'ERROR !',7,7,7,0

; ----------------------------------------------

PUSK_VG: PUSH   HL
        LD      HL,VG_75+1
        LD      (HL),0          ; reset commando
        DEC     HL              ; адрес VG_75
        LD      (HL),4DH        ; 0.1001101  77 знакомест
        LD      (HL),1DH        ; 00.011101  45 строк
                               
if      ORIG                    
        LD      (HL),99H        ; 1001.1001  9 подчерк. 9 линий в симв.
        LD      (HL),93H        ; 1.0.01.0011 без смещ. атриб: пробелом
                                ; 3_T.сдв. - длина ССИ
   else                        
        LD      (HL),59H        ; **** лучше 58H
        LD      (HL),0C3H       ; 1.1.00.0011 - ЭТО МОЕ ИЗМЕНЕНИЕ
endif                           ; ТЕПЕРЬ БОЛЬШОЙ КУРСОР

        INC     HL              ; адрес VG_75+1
        LD      (HL),27H        ; start display commando
        LD      A,(HL)          ; read status
AFAE1:  LD      A,(HL)          ; read status
        AND     20H             ; mask 'Interrupt request flag'
        JP      Z,AFAE1         ; ждем конца строки
        LD      HL,VT_57+8
        LD      (HL),80H
        LD      L,4             ; VT_57+04  !! НЕ_КОРРЕКТНО
        LD      (HL),low SA     ; 0D0H
        LD      (HL),high SA    ; 076H
        INC     L               ; адрес VT_57+5
        LD      (HL),23H
        LD      (HL),49H
        LD      L,8             ; VT_57+8 !! НЕ_КОРРЕКТНО
        LD      (HL),0A4H
        POP     HL
        RET

; ----------------------------------------------

CHSUMM: LD      BC,0
AFB19:  LD      A,(HL)
        ADD     A,C
        LD      C,A
        PUSH    AF
        CALL    CMPDH
        JP      Z,AF99F
        POP     AF
        LD      A,B
        ADC     A,(HL)
        LD      B,A
        CALL    AF999
        JP      AFB19

; ----------------------------------------------

ADR_BL: PUSH    BC            ; FB78
        CALL    RIGHT4
        LD      A,H
        CALL    HEX_A
        LD      A,L
        CALL    HEX_BL
        POP     BC
        RET

; ----------------------------------------------

HEX_A:  PUSH    AF              ; неоптимальный
        RRCA
        RRCA
        RRCA
        RRCA
        CALL    AFCAE
        POP     AF
AFCAE:  AND     0FH
        CP      10
        JP      M,AFCB7
        ADD     A,7
AFCB7:  ADD     A,30H
COUT_A:
        LD      C,A
CONOUT: PUSH    AF
        PUSH    BC
        PUSH    DE
        PUSH    HL
        CALL    STATUS
        LD      HL,TOBACK
        PUSH    HL
        LD      HL,(POSX)
        EX      DE,HL
        LD      HL,(EK_ADR)
        LD      A,(ESCFLG)
        DEC     A
        JP      M,NO_ESC        ; если нет ESC-флага
        JP      Z,BYTE2         ; если ещё не было второго байта 'Y'
        JP      PO,AFD73
        LD      A,C             ; ЧЕТВЕРТЫЙ БАЙТ
        SUB     20H
        LD      C,A
AFCDD:  DEC     C
        JP      M,ESCRES         ; СБРОС ESCFLG И ВЫХОД
        PUSH    BC
        CALL    COD18
        POP     BC
        JP      AFCDD

; ----------------------------------------------

ESCRES: XOR     A
SETESC: LD      (ESCFLG),A
        RET

; ----------------------------------------------

NO_ESC: LD      A,C
        AND     0FFH            ; 07FH в оригинале
        LD      C,A
        CP      1FH
        JP      Z,CLS
        CP      0CH
        JP      Z,HOME
        CP      0DH
        JP      Z,COD0D
        CP      0AH
        JP      Z,COD0A
        CP      8
        JP      Z,COD08
        CP      18H
        JP      Z,COD18
        CP      19H
        JP      Z,COD19
        CP      1AH
        JP      Z,COD1A
        CP      1BH
        JP      Z,COD1B
        CP      7
        JP      NZ,PR_SYM
BEEP:   PUSH    BC
        LD      BC,0F80H
BP1:    LD      A,B
BP2:    EI
        DEC     A
        JP      NZ,BP2
        LD      A,B
BP3:    DI
        DEC     A
        JP      NZ,BP3
        DEC     C
        JP      NZ,BP1
        POP     BC
        RET

; ----------------------------------------------

PR_SYM: LD      (HL),C          ; Видимый на экране символ
        CALL    COD18           ; сместить на следующее знакоместо
        LD      A,D
        CP      3               ; мы на первой строке ?
        RET     NZ              ; если не на первой строке
        LD      A,E
        CP      8               ; мы в первой колонке ?
        RET     NZ              ; если не на первой колонке
        CALL    COD19
COD0A:  LD      A,D
        CP      3+24            ; мы на последней строке ?
        JP      NZ,COD1A        ; если не на последней строке

; ДАЛЕЕ РОЛИК ЭКРАНА

        PUSH    HL
        PUSH    DE
        LD      HL,SCBASE       ; 077C2H
        LD      DE,SCBASE+78    ; 07810H
        LD      BC,25*78        ; 79EH
AFD58:
        LD      A,(DE)          ; ПЕРЕСЫЛКА БЛОКА РАЗМЕРОМ [BC]
        LD      (HL),A          ; (DE) --> (HL)
        INC     HL
        INC     DE
        DEC     BC
        LD      A,C
        OR      B
        JP      NZ,AFD58
        POP     DE
        POP     HL
        RET

; ----------------------------------------------

BYTE2:  LD      A,C
        CP      'Y'
        JP      NZ,ESCRES
        CALL    HOME
        LD      A,2             ; ПРИНЯТО 2 БАЙТА 1BH,'Y'
        JP      SETESC

AFD73:  LD      A,C
        SUB     20H
        LD      C,A
AFD77:  DEC     C
        LD      A,4
        JP      M,SETESC
        PUSH    BC
        CALL    COD1A
        POP     BC
        JP      AFD77

; ----------------------------------------------

; >> NO EXECUTION PATH TO HERE <<

TOBACK: LD     (EK_ADR),HL      ; FD85
        EX      DE,HL
        LD      (POSX),HL
        LD      A,80H
        LD      (VG_75+1),A
        LD      A,L
        LD      (VG_75),A
        LD      A,H
        LD      (VG_75),A
        POP     HL
        POP     DE
        POP     BC
        POP     AF
        RET

; ----------------------------------------------

COD1B:  LD      A,1             ; НАЧАЛАСЬ ESC-ПОСЛЕД-СТЬ
        JP      SETESC

; ----------------------------------------------

CLS:    LD      HL,SCBASE+832H          ; 07FF4H
        LD      DE,30*78 +1             ; 925H
CLSLOO: XOR     A
        LD      (HL),A
        DEC     HL
        DEC     DE
        LD      A,E
        OR      D
        JP      NZ,CLSLOO
HOME:   LD      DE,308H          ; КООРД. ЛЕВ.ВЕРХ. УГОЛ
        LD      HL,SCBASE        ; 077C2H
        RET

; ----------------------------------------------

COD18:                          ; ВХОД: E=POSX, D=POSY
                                ;       HL= экранный адрес
        LD      A,E             ; POSX
        INC     HL              ; следующий экранный адрес
        INC     E               ; POSX++
        CP      7+64            ; последняя колонка ?
        RET     NZ              ; если была не последняя колонка
        LD      E,8             ; нач.позиция по X на новой строке
        LD      BC,-64          ; FFC0
        ADD     HL,BC           ; Вычесть 64 = экр.поз в начало строки
COD1A:  LD      A,D
        CP      3+24            ; последняя строка ?
        LD      BC,78
        JP      NZ,AFDD3        ; если не последняя строка
        LD      D,2             ; если последняя строка, то на 1 строку
        LD      BC,0-(24*78)    ; 0-750H= F8B0
AFDD3:  INC     D               ; D=3
        ADD     HL,BC           ; Вычесть 24*78 или прибавить 78
        RET

; ----------------------------------------------

COD08:                          ; ВХОД: E=POSX, D=POSY
                                ;       HL= экранный адрес
        LD      A,E
        DEC     HL
        DEC     E
        CP      8               ; были в первой колонке ?
        RET     NZ              ; если были не в первой колонке
        LD      E,7+64          ; это последняя колонка ?
        LD      BC,64
        ADD     HL,BC           ; экр.адрес в последнюю колонку
COD19:  LD      A,D
        CP      3               ; это первая строка ?
        LD      BC,0-78
        JP      NZ,AFDF0
        LD      D,3+25
        LD      BC,24*78        ; 750H
AFDF0:  DEC     D
        ADD     HL,BC           ; Вычесть 78 или прибавить 24*78
        RET

; ----------------------------------------------

COD0D:  LD      A,L
        SUB     E
        JP      NC,AFDF9
        DEC     H
AFDF9:  LD      L,A
        LD      BC,0008
        LD      E,C             ; LD E,8
        ADD     HL,BC
        RET

; ----------------------------------------------

STATUS: LD      A,0FFH
        LD      (PC),A
        LD      A,(PA)
        AND     80H          ; PA7 - ФЛАГ НАЛИЧИЯ СИМВОЛА
        RET     Z
        LD      A,0FFH
        RET

; ----------------------------------------------

CONIN:  CALL    STATUS
        OR      A
        JP      Z,CONIN
        CALL    KLIK
        PUSH    HL
        CALL    STROB
        LD      A,(PA)
        POP     HL
        CALL    OTPUSK
        AND     7FH
        RET

; ----------------------------------------------

KLIK:   PUSH    BC
        LD      BC,05FFH
KL27:   LD      A,B
KL28:   EI
        DEC     A
        JP      NZ,KL28
        LD      A,B
KL2E:   DI
        DEC     A
        JP      NZ,KL2E
        DEC     C
        JP      NZ,KL27
        POP     BC
        RET

; ----------------------------------------------

XF81B:  CALL    STATUS
        OR      A
        LD      A,0FFH
        RET     Z
        LD      A,(PA)
        AND     7FH
        RET

; ----------------------------------------------

OTPUSK: PUSH    AF
        PUSH    HL
        LD      HL,PB
        LD      HL,4000H
OTP2:
        DEC     HL
        LD      A,H
        OR      L
        JP      Z,OTP3
        LD      A,(PB)    ; СТРОБ НАЖАТИЯ
        AND     1               ; ЖДЕМ ОТПУСКАНИЯ
        JP      NZ,OTP2
OTP3:   LD      L,0
OTP4:                        ; ЗАДЕРЖКА ПРОТИВ ДРЕБЕЗГА
        LD      A,(PB)
        AND     1
        JP      NZ,OTP3
        DEC     L
        JP      NZ,OTP4
        CALL    STROB
        POP     HL
        POP     AF
        RET

; ----------------------------------------------

STROB:  PUSH    HL
        LD      HL,PC
        LD      (HL),0
        LD      (HL),0FFH
        POP     HL
        RET

; ----------------------------------------------

ASKTOP: LD      HL,(RAMTOP)
        RET

SETTOP: LD      (RAMTOP),HL
        RET

; ----------------------------------------------

TITR:   defb    1FH
        defb    'MAXI-86RK ROM-BIOS V2.2',13,10
        defb    '(for APPLE-II keyboard)',10,0

; ----------------------------------------------

PROMPT: defb    13,10,'-->',0
TRIGH4: defb    13,10,18H,18H,18H,18H,0

; ----------------------------------------------

T_REGS: defb    13,10,' PC='
        defb    13,10,' HL='
        defb    13,10,' BC='
        defb    13,10,' DE='
        defb    13,10,' SP='
        defb    13,10,' AF='
        defb    19H,19H,19H,19H,19H,19H,0 ; вверх на 6 строк

; ----------------------------------------------

TZABOJ: defb    8,32,8,0

; ----------------------------------------------

XRST30: LD     (R_HL),HL
        PUSH    AF
        POP     HL
        LD      (R_AF),HL    ; REG_AF
        POP     HL
        DEC     HL
        LD      (POINT),HL      ; адрес останова RST_30H
        LD      HL,0
        ADD     HL,SP
        LD      SP,R_AF
        PUSH    HL              ; REG_SP
        PUSH    DE              ; REG_DE
        PUSH    BC              ; REG_BC
        LD      HL,(POINT)
        LD      SP,STACK
        CALL    ADR_BL         ; ВЫВОД ТОЧКИ С RST_30H
        EX      DE,HL
        LD      HL,(STOP_A)
        CALL    CMPDH          ; СЛУЧАЙНЫЙ ИЛИ СТОП ЮЗЕРА ?
        JP      NZ,WBOOT       ; ЕСЛИ ЭТО USER_BREAK, ТО
        LD      A,(PCODE)      ; ВОССТАНАВЛИВАЕМ СТОП-ТОЧКУ
        LD      (HL),A
        JP      WBOOT

; ----------------------------------------------

DIR_X:  LD      HL,T_REGS
        CALL    MSSG
        LD      HL,POINT
        LD      B,6
AFFDE:  LD      E,(HL)
        INC     HL
        LD      D,(HL)
        PUSH    BC
        PUSH    HL
        EX      DE,HL
        CALL    ADR_BL
        CALL    GETLIN
        JP      NC,AFFF6
        CALL    GET_HL
        POP     DE
        PUSH    DE
        EX      DE,HL
        LD      (HL),D
        DEC     HL
        LD      (HL),E
AFFF6:  POP     HL
        POP     BC
        DEC     B
        INC     HL
        JP      NZ,AFFDE
        RET

; ----------------------------------------------

; ЗАГРУЗЧИК CP/M-BIOS-А НА AC00H
; ДЛЯ CP/M РК-86, ОЗУ 0...BFFF (ЭКРАН НА D6D0)


BIOS    EQU     0CC00H
VG_75   EQU     0F200H
RAZM    EQU     128*22          ; один максимальный сектор на трек
PORT    EQU     0F600H

WPRMSK  EQU     8
RDYMSK  EQU     10H
TR0MSK  EQU     20H
IDXMSK  EQU     40H

WHERE   EQU     BIOS-30H

; ----------------------------------------------

BOOT:
        LD      A,82H
        LD      (PORT+3),A

;        XOR     A
;        LD     (TRACK),A
;        LD     HL,BIOS-30H     ; В начале сектора БПД и имя диска
;        LD     (ADRBUF),HL
;        LD     (TSKT),A

        CALL    LOAD
        OR      A
        JP      NZ,BOOERR
       
        LD      A,(BIOS)
        CP      0C3H
        JP      Z,BIOS
        LD      HL,TNOSYS
        JP      BOOERR+3

; ----------------------------------------------

BOOERR: LD      HL,TXERR
        CALL    MSSG
        CALL    CONIN
        CP      1BH
        JP      Z,WBOOT
        JP      BOOT

; ----------------------------------------------

TXERR:  defb    13,10,10,'DISK LOADING ERROR !  ',7,7,0
TNOSYS: defb    13,10,10,'NON SYSTEM DISK !  ',7,7,0

; ----------------------------------------------

PUSK:   LD      HL,PORT+2
        LD      A,(HL)
        AND     0A0H             ; БИТ D5 И D7
        CP      80H
        RET     Z
        LD      (HL),0DFH

;       CALL    READY
;       RET     Z

; READY - НЕТ, ПРОВЕРИМ ТОГДА INDEX
;
PAUS54: LD      H,018H       ; ПАУЗА НА РАСКРУТКУ
PAUS55: DEC     HL
        LD      A,H
        OR      L
        JP      NZ,PAUS55

INDX1:  LD      H,0FFH           ; ЖДЕМ INDX 1
        PUSH    HL
        POP     DE
INDX3:  LD      A,(PORT+1)
        AND     IDXMSK
        JP      NZ,INDX2
        DEC     HL
        LD      A,H
        OR      L
        JP      NZ,INDX3
        JP      NOINDX

; ----------------------------------------------

INDX2:  ; LD    DE,0FFFFH      ; ЖДЕМ INDX 0
INDX4:  LD      A,(PORT+1)
        AND     IDXMSK
        RET     Z
        DEC     DE
        LD      A,D
        OR      E
        JP      NZ,INDX4
NOINDX:
        INC     A
        RET

; ----------------------------------------------

OSTANOV:
        LD      A,0FFH
        LD      (PORT+2),A
        RET

; ----------------------------------------------

CHSUM9:
        LD      BC,RAZM
;        LD     HL,(ADRBUF)
        LD      HL,WHERE
        LD      DE,0
AED68:  LD      A,(HL)
        ADD     A,E
        LD      E,A
        LD      A,D
        ADC     A,000H
        LD      D,A
        INC     HL
        DEC     BC
        LD      A,B
        OR      C
        JP      NZ,AED68
        EX      DE,HL
        LD      (KS),HL
        RET

; ----------------------------------------------

BAKSTP: DEC     E
        LD      A,E
        RRCA
        RET     NC
        LD      A,3
        JP      STEP

; ----------------------------------------------

FORWRD: INC     E
        LD      A,E
        RRCA
        RET     C
        LD      A,2             ; БИТ 1 В 0   DIRC НАПРАВЛЕНИЕ ПРИ 3 НАЗАД
STEP:   LD      HL,PORT+3
        LD      (HL),A
        LD      (HL),008H       ; D4=0=STEP
        LD      A,2             ; 04H ; было 2 ***
AED92:  DEC     A
        JP      NZ,AED92
        LD      (HL),009H       ; D4=1=STEP
AED98:  DEC     A               ; A=FF
        PUSH    HL
        POP     HL
        JP      NZ,AED98
        RET

; ----------------------------------------------

POSIT:  LD      A,4             ; ИЩЕТ СЕКТОР НА ДОРОЖКЕ
        LD      (NPOS),A
;        LD     HL,TSKT
;        CP      (HL)
;        JP      C,BADPOP
AEDA9:  LD      HL,NPOS         ;???
        DEC     (HL)
        JP      M,BADPOP
;        LD     A,(TRACK)
;        AND     001H
;        ADD     A,004H                  ; СТОРОНА ДИСКА
        LD      A,04
        LD      BC,PORT+3
        LD      (BC),A
        INC     BC                      ; BC=PORT+4

        LD      A,25H
        LD      (VG_75+1),A

        LD      HL,PORT+1
AEDC3:  LD      D,3FH           ; 003E8H =1000
AEDC6:  DEC     DE
        LD      A,D
        OR      E
        JP      Z,BADPOP
AEDCC:  INC     (HL)          ; HL= PORT+1
        JP      P,AEDCC

        LD      A,(BC)          ; P+4
        SUB     0EAH            ; ЖДЕМ АДРЕСНУЮ МЕТКУ EA,D3
        JP      NZ,AEDC6
AEDD6:  OR      (HL)
        JP      P,AEDD6
        LD      A,(BC)
        SUB     0D3H            ; EA,D3  ЗНАЧИТ СЛЕД.БАЙТ N.ТРЕК,СЕКТ.
        JP      NZ,AEDC6
AEDE0:  OR      (HL)
        JP      P,AEDE0
        LD      A,(BC)
        LD      E,A             ; СЕКТ
AEDE6:  INC     (HL)
        JP      P,AEDE6
        LD      A,(BC)
        LD      D,A             ; ТРЕК
AEDEC:  INC     (HL)
        JP      P,AEDEC     ; K.SUMMA=ТРЕК+СЕКТ
        LD      A,(BC)
        SUB     E
        SUB     D
        JP      NZ,BADPOP        ; ЕСЛИ НЕ СОВПАЛИ - ОШИБКА ЧТЕНИЯ
;        LD     A,(TRACK)
        XOR     A
        SUB     E
        JP      NZ,AEE05        ; НЕ ТОТ ТРЕК
;        LD     A,(TSKT)
        XOR     A
        CP      D
        JP      NZ,AEDC3        ; НЕ ТОТ СЕКТ
        RET

; ----------------------------------------------

AEE05:  LD      C,A             ; ПЕРЕСТАНОВКА НА НУЖНЫЙ ТРЕК
        JP      C,AEE13
AEE09:  CALL    FORWRD
        DEC     C
        JP      NZ,AEE09
        JP      AEDA9

; ----------------------------------------------

AEE13:  CALL    BAKSTP
        INC     C
        JP      NZ,AEE13
        JP      AEDA9

; ----------------------------------------------

;TRACK0:                              ; НА ДОРОЖКУ 0
;        LD     A,(PORT+1)
;        AND     TR0MSK          ;20H
;        JP      Z,AEE48
;        LD     A,3              ; НАПРАВЛЕНИЕ
;        CALL    STEP
;        JP      TRACK0

; ----------------------------------------------

AEE2C:  LD      D,25  ;019H СКОЛЬКО ПОПЫТОК ОТЛОВА
AEE2E:  DEC     D               ; МЕТКИ ДАННЫХ
        JP      Z,BADPOP

AEE32:  INC     (HL)
        JP      P,AEE32

        LD      A,(BC)
        SUB     0DDH            ; МЕТКА ДАННЫХ DD,F3 ?
        JP      NZ,AEE2E

; ----------------------------------------------

AEE3C:  OR      (HL)
        JP      P,AEE3C

        LD      A,(BC)
        SUB     0F3H            ; ПРОВЕРИМ ТЕПЕРЬ F3
        RET     Z
        JP      AEE2E

; ----------------------------------------------

BADPOP: INC     SP
        INC     SP
AEE48:  XOR     A
        INC     A
        RET

; ----------------------------------------------

LOAD:   CALL    PUSK
        RET     NZ

; НА ВХОДЕ (TSKT) СОДЕРЖИТ НОМЕР СЕКТОРА (СЧИТАЯ С 0)
; (ADRBUF) СОДЕРЖИТ АДРЕС ЗАРУЗКИ

RDSKT:
        LD      A,8
        LD      (NRD),A
AEE57:  CALL    AEE67
        JP      Z,ZEEDF
        LD      HL,NRD
        DEC     (HL)
        JP      P,AEE57
;        CALL    TRACK0
        LD      A,1
        OR      A
        RET

ZEEDF:  XOR     A
        RET

; ----------------------------------------------

AEE67:  CALL    POSIT
        CALL    AEE2C
AEE6D:  OR      (HL)
        JP      P,AEE6D
        LD      A,(BC)
        LD      E,A
        OR      A
        RET     NZ
AEE76:  INC     (HL)
        JP      P,AEE76
        LD      A,(BC)
        LD      D,A
        CP      0BH
        LD      A,1
        RET     NZ                  ; СЕКТОРА ПО 2816 БАЙТ
AEE7F:  INC     (HL)
        JP      P,AEE7F
        LD      A,(BC)          ; ПРОПУСКАЕМ 0-ВОЙ БАЙТ ПОСЛЕ ДЛИНЫ
;        LD     BC,(ADRBUF)
;        PUSH    HL
;        LD     HL,(ADRBUF)
;        LD     B,H
;        LD     C,L
;        POP     HL
        LD      BC,WHERE
AEE8C:  INC     (HL)            ; ЧИТАЕМ СЕКТОР
        JP      P,AEE8C
        LD      A,(PORT+4)
        LD      (BC),A
        INC     BC
        DEC     DE
        LD      A,D
        OR      E
        JP      NZ,AEE8C
AEE9A:  OR      (HL)
        JP      P,AEE9A
        LD      A,(PORT+4)
        LD      E,A             ; КОНТР.СУММА МЛ.БАЙТ
AEEA1:  INC     (HL)
        JP      P,AEEA1
        LD      A,(PORT+4)
        LD      D,A             ; СТ.БАЙТ КОНТР.СКММЫ
        PUSH    DE
        CALL    CHSUM9
        POP     DE
AEEAD:  LD      HL,(KS)
        LD      A,H
        CP      D
        LD      A,1
        RET     NZ
        LD      A,L
        CP      E
        RET     NZ
        XOR     A
        RET

; ----------------------------------------------

AEF7B:  CALL    POSIT
        CALL    AEE2C
AEF81:  OR      (HL)
        JP      P,AEF81
        LD      A,(BC)
        LD      DE,512
        SUB     E
        RET     NZ
AEF8D:  OR      (HL)
        JP      P,AEF8D
        LD      A,(BC)
        SUB     D
        RET     NZ
        CP      E
        JP      NZ,AEF99
        DEC     D
AEF99:  INC     (HL)
        JP      P,AEF99
        LD      A,(BC)
        LD      B,H
        LD      C,L
;        LD     HL,(ADRBUF)
        LD      HL,WHERE
AEFA3:  LD      A,(BC)
        RLA
        JP      NC,AEFA3
AEFA8:
        LD      A,(PORT+4)
        CP      (HL)
        RET     NZ
        INC     HL
        DEC     E
        JP      NZ,AEFA3
AEFB1:  LD      A,(BC)
        RLA
        JP      NC,AEFB1
        DEC     D
        JP      P,AEFA8
        LD      A,(PORT+4)
        LD      E,A
AEFBD:  LD      A,(BC)
        RLA
        JP      NC,AEFBD
        LD      A,(PORT+4)
        LD      D,A
        JP      AEEAD

;       defb    255,255

if      $ ne    0
    if high    $ gt 0F8H
       
        rept    256
        if      $ ne 0
           defb 255
        endif
        ENDM
    endif
  else
        if1
          .printx * Code length over 2048 bytes ! *
        endif
endif
        .dephase

        END

_________________
***
barsik
barsik
Мастер+

Сообщения : 460
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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

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

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

17

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


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

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


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