РК-86 в Proteus

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

РК-86 в Proteus

Post by PVV »

Продолжая испытывать модель вм80 процессора решил собрать в протеусе РК-86, он будет нужен для проверки работы сигнала захвата шины внешним устройством(ПДП).
Правда в протеусе нет i8275 и i8257( есть только i8237, однако, монитор патчить командами инициализации нет желания, проще 8257 написать... :ebiggrin: ), но была же схема РК без вг75, а если в качестве ОЗУ SRAM использовать, то и вт57 можно исключить...
Все вроде как и получилось, проглашение РК-86 я на экране увидел. Возникло желание на клавивтуре понажимать кнопочки... а тут обломс...8255, ну, которая к580вв55, в протеусе кривая однако, понимает настройку только все порты на вывод и все... Но разве это может меня остановить :esmile: нет модели- значит будет! - пара часов работы, и i8255.dll (хотя и усеченный, только mode 0, функционал) работает.
вот что получилось:
wx_vc_rk86.png
во вложении этот проект
You do not have the required permissions to view the files attached to this post.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: РК-86 в Proteus

Post by Lavr »

PVV wrote:вот что получилось:
download/file.php?id=1406
Я смотрю - на нескольких листах проект делали? Или это просто краешек с клавиатурой видно?
iLavr
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

Lavr wrote: Я смотрю - на нескольких листах проект делали? Или это просто краешек с клавиатурой видно?
Нет, лист один. Эта картинка делает акцент на клавиатуру. Для этого эмулируемого ПК быстродействие таково, что можно с клавиатуры набирать команды и смотреть их выполнение(~2c нужно удерживать кнопку для ее детектирования на один символ). Это позволяет проводить аппаратную отладку различных схем и их программного взаимодействия... например подключить ROM диск с нужной программой, ее загрузить и выполнить...
такая вот картинка:
wn_rk.png
на мой взгляд мало информативна, а схема в архиве в формате pdf есть.
You do not have the required permissions to view the files attached to this post.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: РК-86 в Proteus

Post by jdigreze »

PVV wrote:Для этого эмулируемого ПК быстродействие таково, что можно с клавиатуры набирать команды и смотреть их выполнение(~2c нужно удерживать кнопку для ее детектирования на один символ)
Есть мнение, что под нативной вендой будет быстрее работать. Сам периодически vbox запускаю, и заметил, что быстродействие программ там не на высоте.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

Довел таки я эту схему до конца. Сделал dllки для i8257и i8275 в том функционале(и не более!) чем это используется при запуске РК-86.
Нашел еще мелкие ошибки в x80.dll. Вот что получилось в итоге:
rk-86_vg75.png
вот где красота минимализма! :-?
во вложении этот проект
и исходник i8275.dll с комментариями, там много еще чего можно добавить...
You do not have the required permissions to view the files attached to this post.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

Интересно мне стало запустить на этом РК что-то из игрушек, и нарисовал ROM диск, а он работать не хочет... начал разбираться, а там в i8255.dll ошибочка вкралась :)... поправил. Запустил игрушку Lode Runner, она при старте меняет параметры ВГ75, и опять, что-то не так... разобрался и, вот результат:
rk86_LodRun.png
все вроде хорошо, а что б еще сделать? -
собрать vga выход, благо схемка такой доработки и откорректированный монитор имеются:
rk-86_vga_klad.png
PS: rom диск я использовал на 64КБ, а не журнальный на 32.
файлы по этому проекту во вложении
You do not have the required permissions to view the files attached to this post.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

и исходники 8275, 8255, 8257, display_vga, как есть...



добавил исправленную 8255.dll, - по умолчанию в выходных защелках портов 0, а не 1.
You do not have the required permissions to view the files attached to this post.
Last edited by PVV on 10 Jan 2017 03:31, edited 1 time in total.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

ROM диск это, конечно, хорошо, но пользоваться им крайне не удобно, другое дело FDD или SD. SD! в теме про 'Специалиста' уже это было, а в теме эмулятора fdd для него был код, позволяющий читать и писать на SD... таким образом можно добавить тот контроллер SD к этому РК, и получить весьма удобный способ как чтения, так, с некоторыми ограничениями, и записи файлов.
Доработав дешифратор адресного пространства, для получения CS по 4К, а на по 8К как это было изначально, можно получить 4 дополнительных CS по 4К каждый без ущерба для всего имеющегося набора ПО для РК на данный момент. На один из CS можно 'повесить' выборку SD, а на другой, опционально, дополнительное ОЗУ(надо ~2К для работы с FAT). (ОЗУ можно сделать хоть статику, или, если используемая в РК память РУ5, то открыть /CASом эти куски памяти в ней. Но это вторым этапом можно сделать, сейчас я в основной памяти 2К выделяю.) Код поддержки файловой системы на SD я доработал, чтобы была возможность не только запускать RKR файлы(<имя файла(.RKR можно не писать)>), просматривать список файлов(DIR) и перемещаться по каталогам(CD <имя каталога>), но и прочитать необходимое количество байт нужного файла в определенное место памяти(R <имя файла>,<адрес в памяти куда сложить данные>,<сколько байт прочитать>), и точно так же записать в файл с указанного адреса нужное число байт(W <имя файла>,<адрес в памяти откуда взять данные>,<сколько байт записать>). Новые файлы не создаются, запись возможна только в созданный файл, и размер файла при записи не изменяется. Я попытался уложить этот код в 2К, и приклеить к основному монитору, вот что получилось-
rk-86_SD1.png
... и SD читается на РК...
а еще этот контроллер легко прикручивается к эмулятору b2m...
Столкнулся с таким моментом- RKR файлы имеют в своем заголовке информацию о старте(2 байта) и длине(2 байта) как и в RKS, но, в отличии от RKS файлов 'Специалиста' байты в словах развернуты, первый старший, второй младший байт, как так? Я этот момент не исправлял, а правил RKR файлы под формат RKS.
во вложении эта схема и исходники sd_dos+конфигурационный файл для b2m.
You do not have the required permissions to view the files attached to this post.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

Дальше больше, а почему бы не совместить ROM диск и SD, вот таким образом? -
rk-86ROM_SD.png
из ROM диска читаем sd_dos в 'дырки в памяти выше 32К' и работаем с SD...
получится почти как у vinxru...
однако такой вариант не будет работать в эмуляторе b2m, но сам по себе будет универсальным решением для всего семейства РК-подобных машин у которых предусмотрена работа с ROM диском через ВВ55.
You do not have the required permissions to view the files attached to this post.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

Путем нехитрых манипуляций реализовал совместную работу SD карты и ROM диска -
rk-86_SD3.png
эта схема не требует ни единого изменения и доработки в самом РК,
схема подключается на вторую ВВ55, изначально предусмотренную для работы с внешним диском,
ROM диск читается штатными средствами оригинального монитора, и, так же, штатными средствами, запускается rk_dos для SD карты.
Я собрал SD_dos для размещения в памяти с 0х6000, а с 0х6800 до 0х6FFF память для работы с секторами SD. Понятно, что код можно пересобрать под любое размещение в ОЗУ, в том числе, и в 'дырки' выше 32К, если они открыты, тогда не будет ни каких конфликтов с программами использующими ОЗУ в адресах 0х6000 по 0х6FFF.
На паре не использованных инверторов и кварце 4Мгц собирается генератор, еще пара инверторов будет в запасе( для, например, программатора на этой же плате), две ИЕ5 заменить на одну ИЕ19, и с ПЗУ получится 14 корпусов. Кроме того, в данной схеме и программе не используется чтение регистра состояния, так что можно две КП11 заменить на любой 8и битный буфер с Z состоянием по выходу, получится еще на корпус меньше. Получится полностью автономный модуль для работы с SD.
Единственное НО, тк я старался уложиться в 2К, то из кода дефайном убрана поддержка FAT16, только FAT12, однако это уже диск на 32Мб. Если нужен FAT16, то можно открыть дефайном его код, а FAT12 закрыть, тогда в 2К все поместится, или же открыть все, но тогда код получается ~2.2К, и ПЗУ нужно ставить большего размера.
You do not have the required permissions to view the files attached to this post.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

Понравилась мне идея с подключением SD к порту ВВ55 совместно с ROM диском, и я решил на новогодних каникулах проверить эту идею 'в железе', а то теория так и останется теорией без проверки её на практике :). РК-86, новодел, у меня есть. Подтолкнуло меня еще к этому ещё и желание собрать программатор для УФППЗУ, тк РФки у меня еще остались, а вот программатора уже нет. Начал прорабатывать схему в протеусе, что и как можно упростить, ни каких подводных камней не увидел, все отрабатывало как и было задумано. Переключение скорости не имеет смысла, тк в таком варианте подключения период обращения укладывается при тактовой на карте ~300Кгц, соотв. 4Мгц/8=500Кгц - будет достаточно и для инициализации (инициализация должна быть до 400Кгц, но реально и при 4Мгц работает) и для основной работы. Набросал примерное размещение мс на макетке, и сделал несущую плату универсального ROM диска, SD интерфейса и программатора УФППЗУ. Держателя для SD карт у меня под рукой не нашлось, но а зачем он нужен то?- Почти все microSD карточки идут в комплекте с переходником под стандартную SD карту, - это же готовый держатель для карт! к контактам переходника подпаиваются луженые провода, формуются и готово!
IMG_2205.JPG
Все спаял,
IMG_2212.JPG
подключил, ROM диск читается, а вот с SD все плохо... иногда карта определяется, и даже 1 раз удалось загрузить коротенькую программку с неё, но в целом не работает... Стал разбираться. Добавил в код sd_dos тестовый вывод, что читается из карты, на нажатие кнопки 'X' реализовал отправку байта в порт, что бы проверить весь тракт прохождения байта - если убрать карту и закоротить MOSI и MISO на держателе, то можно увидеть, что в порт пишется и что читается. На одиночных запросах все ок, НО ведь не работает!? Конденсаторы по питанию я не жалею (их не видно - чипы 0805). В это время fifan начал запускать SD интерфейс на 'СпециалистеМХ2', и я решил кое какие идеи из этой схемы проверить на работающей у меня плате SD для 'Специалиста', собрал локальный тактовый генератор на 4Мгц, поставил ИЕ19 вместо ИЕ5 на делитель полной и пониженной скорости тактирования карты и на узел формирования сдвига байта и - не работает! Как так??? подключаю тактирование от специалистовского генератора - все ок, перекидываю на локальный - нет!?!? Начал в протеусе задавать разные частоты тактирования ВМ80 и SD интерфейса и тут, тоже, SD перестала работать! Как оказалось, проблема заключается в не синхронном поступлении сигнала записи в SD порт по отношению к тактовой на ИР9, иногда данные портятся, а иногда все нормально - при тактировании от одного источника синхронность обеспечивалась автоматически, и этой проблемы я не видел и не задумался... В варианте для РК все решается просто, хоть и добавлением еще одной мс, - D-триггера. Сигнал WR, формируемый программно на ВВ55, имеет длительность гораздо выше тактовой карты, и эта схема работает в широких пределах частот, а вот для схемы SD 'Специалиста' это не так, но это я буду рассказывать в 'специалистовской' теме... отвлекся, однако...
Быстренько напаиваю на свою платку ТМ2, все подключаю и - все работает как швейцарские часы :). Так что практика хоть и вносит свои коррективы в теорию, но и теория имеет право на жизнь! :)
Схема получилось, возможно, и не очень простая, но не сложнее любой схемы контроллера FDD, а удобство в использовании гораздо выше. Ограничения, имеющиеся в текущей реализации sd_dos легко решаются использованием внешних, запускаемых с самой SD карты программ. Кто мешает сделать программу, создающую файл на файловой системе требуемого размера, программу переименования, копирования, удаления, если эти действия нужны именно на РК, а не использовать этот уже готовый функционал на наших 'больших' ПК. Ведь мы именно ищем способы переноса файлов между нашими 'поделками' и PC, а запись в файл без изменения его размера в sd_dos есть.
фото моей 'поделки'...

PS фото делал при плохом освещении, ночь за окном, по тому качество не очень :(
You do not have the required permissions to view the files attached to this post.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

во вложении схема универсальной платки ROM_SD_PROGR и исходники.

Следующим этапом будет написание программы программатора для ПЗУшек.
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: РК-86 в Proteus

Post by Shaos »

А это что за новодел такой?

P.S. Вот прямо все на ассемблере написано? :o
Откуда дровишки?
Я тут за главного - если что шлите мыло на me собака shaos точка net
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: РК-86 в Proteus

Post by PVV »

Shaos wrote:А это что за новодел такой?
Изначально собирал как RK86_SRAM на своей плате, на борту DC-DC 5v->12v, -5v формируется как у 'Специалист Экспресс'( из 12v->-5v), и добавлены элементы для поддержки VGA выхода. После добавлена платка с DRAM с мс от SIMM модуля, вместо SRAM.
Shaos wrote: P.S. Вот прямо все на ассемблере написано? :o
Откуда дровишки?
asm - да, а вот чьи дровишки изначально я не знаю, найдены на просторах сети, мои лишь небольшие правки в части поддержки записи, я вот , выше, писал.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: РК-86 в Proteus

Post by Shaos »

Надо будет поизучать на досуге
Я тут за главного - если что шлите мыло на me собака shaos точка net