Просмотр полной версии : SD-контроллер от vinxru
andykarpov
07.10.2014, 01:21
Я тут очень заинтересовался разработкой 86RKSD от vinxru и решил запилить платку, которую можно будет воткнуть шлейфиком в разъем Radio-86RK_SRAM. Детали проекта с моей версией платки тут: https://github.com/andykarpov/radio-86rk-sdcard
Из плюшек / отличий:
1) вместо делителей для согласования уровней 5В <-> 3.3В используется 74HC4050D
2) для получения 3.3В вместо диодов используется LDO преобразователь LM1117 3.3
3) есть 6-контактный разъем для программатора
4) для подключения к Radio-86RK_SRAM используется 26-контактный угловой разъем
Платка получилась размером 5x5см, как раз вписывается в один из размеров для изготовления прототипов / мелких партий печатных плат, которые предлагают китайцы (iteadstudio, seeedstudio, dfrobot и другие).
Собранное устройство выглядит примерно так:
https://c2.staticflickr.com/8/7503/15748066262_4a058c6886.jpg
andykarpov, не один раз пытался обратить внимание на эту разработку.
Наверное правильнее обсуждать ее в темах по внешним устройствам для РК, но не суть.
Важно разобраться и адаптировать упр. программу под РК. Тема интересна, пожалуй платку за мной застолбите :)
По платке. Место есть и я-бы поставил полноценный, стпндартный разъем для программирования МК.
Важно разобраться и адаптировать упр. программу под РК.
А BIOS под контролер Vinxru (в самом контроллере) написан грамотно и достаточно. Сужу по юзанию контроллера для Специалиста.
SoftFelix
07.10.2014, 11:14
Место есть и я-бы поставил полноценный, стпндартный разъем для программирования МК.
+1.
А CONN2 подключается к разъёму доп.порта (РОМ-ДИСКА) сабжевого компа?
andykarpov
07.10.2014, 13:49
Наверное правильнее обсуждать ее в темах по внешним устройствам для РК, но не суть.
Ок, если модератор сочтет нужным перенести дальнейшие обсуждения в отдельную ветку - я только за :)
Важно разобраться и адаптировать упр. программу под РК. Тема интересна, пожалуй платку за мной застолбите :)
Вот по поводу управляющей программы - я еще не очень вникал, но кажется vinxru упоминал о том, что есть там отдельная готовая прошивочка для РК. Нужно покурить этот момент :)
По платке. Место есть и я-бы поставил полноценный, стпндартный разъем для программирования МК.
Ок, первая версия платки уже ушла в производство, в версии 2.0 сделаем 10-контактный разъем. Ну и вообще, как бы никто не мешает подключиться к разработке, сделать форк на github'е и потом прислать pull request с новой версией :) Этот момент очень приветствуется. Всем желающим вышлю недостающие библиотеки, использованные в этом проекте. Я для 4050 нарисовал корпус, и разъем 26-контактный тоже пришлось самому делать. Использовалась freeware версия Eagle 7.1.0.
---------- Post added at 12:49 ---------- Previous post was at 12:47 ----------
А CONN2 подключается к разъёму доп.порта (РОМ-ДИСКА) сабжевого компа?
Да, через шлейфик. Вообще в природе как бы существуют, кажется, ответные части IDC разъемов на печатную плату, но я не сильно уверен, есть ли угловые. Поэтому на данной платке такой же разъемчик, как и на самом РК. И все это дело соединяется шлейфиком.
andykarpov, Мне Орел так и не сдался. Не раз начинал изучать его и ни как!
Больше на ПиКад наседал, а с выходом в паблик полной версии ДипТрейс и ПиКад отодвинул. По идее вписать 10-ти контактный разъем руками проще, как приеду с командировки попробую вписать.
Дождемся первых платок - там сориентируемся.
Не забудьте про одну платку для меня :)
Вот по поводу управляющей программы - я еще не очень вникал, но кажется vinxru упоминал о том, что есть там отдельная готовая прошивочка для РК.
Принцип ПО один: три файла в папке boot (https://github.com/vinxru/86RKSD/tree/master/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C%2 0%D0%BD%D0%B0%20%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D1% 83%20%D0%B4%D0%BB%D1%8F%20%D0%90%D0%BF%D0%BE%D0%B3 %D0%B5%D1%8F/BOOT) на SD карте, последний файл shell заменяйте своим, если хотите свою оболочку написать. Atmega прошивается файлом (https://github.com/vinxru/86RKSD/tree/master/%D0%98%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D 0%B8%20%D0%B8%20%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0% B2%D0%BA%D0%B0%20%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0 %BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0/Exe).
Фьюзы не упомянуты нигде, но я думаю схожие для прошивки Специалиста (http://spetsialist-mx.ru/schemes/Atmega8_fuses.png).
Выглядит оболочка (https://raw.githubusercontent.com/vinxru/86RKSD/master/%D0%A4%D0%BE%D1%82%D0%BE/2.jpg) для РК-86 прилично.
Кстати, а в стандартной РК есть эти псевдографические возможности?
Кстати, а в стандартной РК есть эти псевдографические возможности?
Сомневаюсь, что есть. Vinxru для Специалиста брал фонт и подпрограммы рисования готовые от HardWareMan'а. Если нужно точно узнать ответ на Ваш вопрос - спрошу у автора.
fifan, к автору это никакого отношения не имеет. Вопрос лишь в подключении ВГ75. В Апогее оно нормально подключено и все фишки ВГ75 умеет. Мне казалось, что в Микроше и Радио-86РК подключение несколько попроще. Соответственно либо дорабатывать надо, либо в софте менять символы на стандартные псевдографические.
Вот комментарии к теме от Vinxru:
Прошивка микроконтроллера остается та же. Надо только доработать файлы, что записываются на флешку. Надо поменять адреса загрузки (у 86РК меньше памяти, чем у Апогея) и адреса контроллеров. Это я сделаю, если кому нибудь нужно.
Я бы и плату прикупил.
uart> Кстати, а в стандартной РК есть эти псевдографические возможности?
Да, это стандартный для любого 86РК видеорежим. Оболочка может работать в двух режимах 80x30 (что на фото) и 80x25 (с межстрочными отступами).
на стандартные псевдографические.
Если имеются ввиду символы с кодами >0C0h, то это тоже не поможет. Выходы ВГ75 LA0,LA1 ни в одном нашем компе не используются. Максимум, что можно увидеть - горизонтальные линии, которые реализуются через LTEN.
b2m, хм, действительно так, почему то думал, что в Апогее реализовано, и vinxru ими рисует...
andykarpov
08.10.2014, 16:31
Вот комментарии к теме от Vinxru:
Прошивка микроконтроллера остается та же. Надо только доработать файлы, что записываются на флешку. Надо поменять адреса загрузки (у 86РК меньше памяти, чем у Апогея) и адреса контроллеров. Это я сделаю, если кому нибудь нужно.
Пытаюсь перевести прошивочку контроллера с CodevisionAVR на рельсы avr-gcc. Как минимум для того, чтобы можно было собирать ее не только под виндой. Она уже собирается, осталось побороть несколько моментов:
1) работу с PROGMEM-ресурсами
2) убрать / заменить ассемблерные вставки на что-то более удобокуримое :)
Там очень интересный код "эмуляции пзу"...
Если будет возможность - было бы здорово, если бы Вы сделали переделку адресов загрузки (я так понимаю, речь идет о файликах boot.rk / sdbios.rk / shell.rk) ?
---------- Post added at 15:31 ---------- Previous post was at 14:09 ----------
Пока изучаю полное описание работы проекта от автора Алексея Морозова AKA vinxru, нашел группу вконтакте: https://vk.com/topic-41468278_29998944
andykarpov, boot/sdbios в ассемблерных исходниках и без проблем пересобираются и работают в режиме РК. А вот shell мне собрать не удалось, там собственный компилятор C от vinxru, который почему то у меня все время дает ошибку на #include.
andykarpov
09.10.2014, 11:47
andykarpov, boot/sdbios в ассемблерных исходниках и без проблем пересобираются и работают в режиме РК. А вот shell мне собрать не удалось, там собственный компилятор C от vinxru, который почему то у меня все время дает ошибку на #include.
А какие нужно использовать адреса для РК вот для этих констант ?
MONITOR = 0F875h
INIT_VIDEO = 0FACEh
USER_PORT = 0EE00h
shell мне собрать не удалось, там собственный компилятор C от vinxru, который почему то у меня все время дает ошибку на #include.
Наверное и не нужно пересобирать. Shell - это графическая оболочка, типа Нортон Коммандера. Все его обращения к SD карте происходят через SD BIOS, который взаимодействует с Атмегой 8. Я вот не нашёл мануала для этой SD BIOS, чтоб писать свои проги, типа входных/выходных регистровых пар (точка входа единственная).
---------- Post added at 15:41 ---------- Previous post was at 14:45 ----------
Командер (shell) занимает 12 Кб. Т.е. на компьютерах с памятью 16 Кб не запустится.
fifan, надо, экран и ВГ75/ВТ57 у Апогея по другим адресам.
Vinxru написал:
Я скомпилировал файлы для Радио 86РК. Но само собой еще не проверил на реале. В эмуляторе коммандер работает.
https://github.com/vinxru/86RKSD/tree/master/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE%2086%D0%A0%D0%9A
Зацените (http://www.youtube.com/watch?v=7DJhmnryO5Y&feature=youtu.be):)
Я в своем эмуляторе проверил, boot.rk/sdbios.rk тоже работают.
Ещё информация от Vinxru:
SHELL для 86РК то же надо пересобрать. Надо поменять адреса видеопамяти, адреса контроллеров, адреса точек входа монитора, объем памяти.
Но для провеки контроллера, вместо SHELL можно засунуть любую игру.
Даже вместо SDBIOS можно засунуть любую игру. В этом случае, надо что бы игра начиналась с адреса >100h. Так как в адресе 0 живет начальный загрузчик (BOOK.RK), который и грузит SDBIOS.
Последовательность загрузки такая.
Контроллер эмулирует ПЗУ на 128 байт, содержимое берется из файла /boot/book.rk
В мониторе пишем R0,100. В память по адресу 0 загружается файл /boot/book.rk
В мониторе пишем G. Запускается этот файл и он загружает файл /boot/sdbios.rk и запускает. (Тут важно, что бы адрес загрузки не накладывался на /boot/boot)
Файл sdbios грузится в самый верх памяти и запускает /boot/shell.rk. SHELL может грузится в нулевой адрес, так как начальный загрузчик уже не нужен.
При этом, программе /boot/shell.rk в регистрах передается точка входа в SDBIOS. (SD BIOS может быть в любом месте памяти, это не ограничивается стандартом.) При запуске программы регистр A содержит версию набора команд (сейчас 1). BС содержит точку входа в SD BIOS. HL командную строку. DE собственное имя.
Для вызова функции контроллера, надо поместить в регистр A код функции и вызвать подпрограмму по адресу переданному при старте программы в регистре BC.
ФУНКЦИИ
Reboot Теплая перезагрузка (A=0, HL="", DE="" / A=код ошибки)
Exec Запустить программу (A=0, HL=имя файла, DE=командная строка / A=код ошибки)
FindFirst Начать получение списка файлов (A=1, HL=путь, DE=максимум файлов для загрузки, BC=адрес / HL=сколько загрузили, A=код ошибки)
FindNext Продолжить получение списка файлов (A=1, HL=":", DE=максимум файлов для загрузки, BC=адрес / HL=сколько загрузили, A=код ошибки)
Open Открыть файл (A=2, D=0, HL=имя файла / A=код ошибки)
Create Создать файл (A=2, D=1, HL=имя файла / A=код ошибки)
MkDir Создать папку (A=2, D=2, HL=имя файла / A=код ошибки)
Delete Удалить файл/папку (A=2, D=100, HL=имя файла / A=код ошибки)
Seek Установить позицию чтения записи файла (A=3, B=режим, DE:HL=позиция / A=код ошибки, DE:HL=позиция) (С начала B=0, с текущего положения B=1, с конца B=2)
GetFileSize Получить размер файла (A=3, B=100 / A=код ошибки, DE:HL= размер файла)
GetDiskSize Получить размер диска в Мб (A=3, B=101 / A=код ошибки, DE:HL= размер диска)
GetDiskFree Получить свободное место на диске в Мб (A=3, B=102 / A=код ошибки, DE:HL= размер файла)
SwapFiles Работа с двумя открытыми файлами (A=3, B=200 / A=код ошибки)
Read Прочитать из файла (A=4, HL=размер, DE=адрес / A=код ошибки, HL=сколько загрузили)
Write Записать в файл (A=5, HL=размер, DE=адрес / A=код ошибки)
WriteEOF Конец файла (A=5, HL=0 / A=код ошибки)
Move Переместить файл/папку (A=6, HL=из, DE=в / A=код ошибки)
Ещё информация от Vinxru:
...
ФУНКЦИИ
...
Т.е. теоретически, можно записать в обычное ПЗУ реализацию этих функций для самого ПЗУ и использовать коммандер для удобной работы с ROM-диском. Можно и RAM-диск ещё присобачить.
Т.е. теоретически, можно записать в обычное ПЗУ реализацию этих функций для самого ПЗУ и использовать коммандер для удобной работы с ROM-диском. Можно и RAM-диск ещё присобачить.
Подобная реализация стала-бы своего рода прорывом в РК86, такого рода оболочка здорово повышает "потребительские качества" РК!
Причём обратите внимание, что запуск игры можно свести к двум этпапам: загрузить каталог, найти в нём нужный файл и запустить. Свои загрузчики каждый может писать свои, хотя shell от самого Vinxru оладается большими возможностями.
perestoronin
14.10.2014, 21:56
Шлейфик для подключения платки - лишний для безглючной работы.
За основу устройства можно азять ремулятлр ПЗУ для БШек. в прошивку ремулятора можно втиснуть "математический сопрлцессор" для чего выбрать подходящий контроллер с хорошей быстрой математикой.
andykarpov
15.10.2014, 02:10
Шлейфик для плдключения платки лишний для безглючной работы.
Я, если честно, в природе не встречал ответной угловой части IDC разъема (female) на печатную плату для примененного в Radio-86RK_SRAM углового 26-контактного male IDC разъема.
Буду признателен, если подскажете, где искать :)
Шлейфик для плдключения платки лишний для безглючной работы.
Ничего подобного. Шлеф брал от 34 контактного разъёма вставлял в разъём возле ВВ55, второй конец припаивал к плате контроллера (замотано синей изолентой). Всё прекрасно работает.
http://www.spetsialist-mx.ru/images/SD_contr_6.png
Vladimir_S
15.10.2014, 05:51
Я на скорую руку сделал, но держится надежно.
andykarpov
17.10.2014, 01:35
Ещё информация от Vinxru:
Контроллер эмулирует ПЗУ на 128 байт, содержимое берется из файла /boot/book.rk
С этого места непонятно, почему на 128 байт, а не на 256, ведь всего 8 бит адресной шины используется в режиме эмуляции ПЗУ.
В мониторе пишем R0,100. В память по адресу 0 загружается файл /boot/book.rk. В мониторе пишем G
Вот тут было бы здорово заменить в мониторе эту последовательность нажатий на U, например, как сделано в эмуляторе РК86 от b2m.
HardWareMan
17.10.2014, 08:07
ЕМНИП, в мониторе числа шестнадцатиричные. 8 бит = 256 байт. 100h = 256.
С этого места непонятно, почему на 128 байт, а не на 256, ведь всего 8 бит адресной шины используется в режиме эмуляции ПЗУ.
Во-первых, загрузчик маленький, вполне помещается в 128 байт.
А во-вторых, в контроллере и так мало ОЗУ, зачем лишнее использовать.
Вот тут было бы здорово заменить в мониторе эту последовательность нажатий на U, например, как сделано в эмуляторе РК86 от b2m.
Директива U (как и любая другая не обработанная монитором) передаёт управление по адресу F000. Твоё предложение требует эмуляции ПЗУ по адресу F000, а тут идёт обмен данными через ВВ55. Под режимом эмуляции ПЗУ имеется ввиду эмуляция ROM-диска РК86.
andykarpov
17.10.2014, 19:11
Директива U (как и любая другая не обработанная монитором) передаёт управление по адресу F000. Твоё предложение требует эмуляции ПЗУ по адресу F000, а тут идёт обмен данными через ВВ55. Под режимом эмуляции ПЗУ имеется ввиду эмуляция ROM-диска РК86.
О, тогда может быть boot.rk вшить в ПЗУ по адресу F000?
andykarpov
07.11.2014, 22:58
Приехали платки проекта https://github.com/andykarpov/radio-86rk-sdcard, изготовленные dfrobot.com (http://www.dfrobot.com), есть 8 штук в наличии.
Тема в барахолке: http://zx-pk.ru/market/viewtopic.php?f=7&t=2567
andykarpov
09.11.2014, 14:02
Собрал свою платку.
https://farm8.staticflickr.com/7503/15748066262_4a058c6886.jpg
Пока не получается заставить ее работать :(
Собирал, правда, на Atmega328p. Проект в CodeVisionAVR пересобрал под этот камень, но есть подозрение, что где-то в коде есть привязки к Atmega8. Пока не могу понять. Вот если бы автор ткнул носом :)
Fuse bits выставил такие: -U lfuse:w:0xc2:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m
Если карточку не вставить - то моргает светодиод, как по логике задумано.
Если карточку вставить с нужными ей файлами - то светодиод один раз зажигается и тухнет. После этого, если в мониторе набрать R0,100 - ничего не происходит. Память девственно чистая. Есть подозрение на код эмуляции ПЗУ.
Там меня смущает один момент... Не понимаю, что это значит:
.EQU PIND = $10
.EQU DDRD = $11
.EQU PORTD = $12
.EQU PINC = $13
.EQU DDRC = $14
.EQU PORTC = $15
.EQU PINB = $16
.EQU DDRB = $17
.EQU PORTB = $18
Не понимаю, что это значит
Что тут непонятного? Эти же определения прописаны в инклюдах к конкретному камню. Номера портов.
---------- Post added at 16:01 ---------- Previous post was at 15:59 ----------
А если открыть инклуд к мега328р, то наблюдаем:
sfrb PINB=3;
sfrb DDRB=4;
sfrb PORTB=5;
sfrb PINC=6;
sfrb DDRC=7;
sfrb PORTC=8;
sfrb PIND=9;
sfrb DDRD=0xa;
sfrb PORTD=0xb;
Намек ясен, куда копать? ;)
---------- Post added at 16:02 ---------- Previous post was at 16:01 ----------
В награду требую бронирования платки! :)
andykarpov
09.11.2014, 16:37
Что тут непонятного? Эти же определения прописаны в инклюдах к конкретному камню. Номера портов.
Понял, спасибо!!!
Поменял на значения для амтеги328п, пересобрал, не особо помогло :(
Вероятнее всего где-то еще камнезависимый код. Изучаю.
В награду требую бронирования платки! :)
Ок, присылайте адрес в личку, плз :)
[/COLOR]В награду требую бронирования платки! :)
Заодно требуй пуллапы у карты.
Ну сколько можно по один и тем же граблям скакать? :biggrin:
andykarpov
09.11.2014, 19:31
Заодно требуй пуллапы у карты.
Ну сколько можно по один и тем же граблям скакать? :biggrin:
Пулл-апы на SD-карточку тут ни при чем. Файл boot.rk с нее читается.
А вот дальше - нет эмуляции в режиме ПЗУ. Либо где-то косяки в шлейфе / ВВ55 / и тп.
andykarpov
09.11.2014, 23:46
пообщался с многоуважаемым Vinxru. Поведал мне автор о секретах, например об обязательном контроле адреса массива rom (по файлу .map) с тем, что прописано в asm-секции. У меня почему-то смещение 0x300, посему .EQU ROM должно быть 3 вместо 1. Либо надо было крутить размер стека таким образом, чтобы переменная rom начала находиться по адресу 0x100.
После этих манипуляций эмуляция ПЗУ завелась! Ура :)
Но данные не совсем соотетствуют тому, что находится в файле boot.rk.
В файле: 0E 00 CD 69 00 C3 17 00
Я получаю: 0E 00 8D 79 00 83 07 00
Уже курил на тему подтяжки MISO, длины шлейфа, допаял на карточку дополнительный конденсатор, понизил скорость SPI - ничего не помогает.
При этом если запускать несколько раз R0,100, потом смотреть D0,100 - данные с одними и теми же ошибками. Посему можно сделать вывод, что при чтении с карточки они попадают во внутренний буфер уже поломанными.
HardWareMan
10.11.2014, 07:47
Или загружаются с порта поломанными. Раскурите функцию R монитора, пересмотрите тайминги контроллера в режиме эмуляции ПЗУ. Если бы карта считывалась битой, FAT бы точно не инициализировался.
В файле: 0E 00 CD 69 00 C3 17 00
Я получаю: 0E 00 8D 79 00 83 07 00
Похоже на соплю между битами D4,D5,D6. Но не факт.
Если есть сомнения в скорости выдачи контроллером данных для ВВ55, то можно воспользоваться директивой М Монитора. Например так
-->MA001
A001 FF 00
A002 FF 00
A003 FF.
-->MA000
A000 0E
A001 00.
-->
И т.д.
Медленно, но уверено.:v2_dizzy_ironic:
andykarpov
10.11.2014, 11:45
Если есть сомнения в скорости выдачи контроллером данных для ВВ55, то можно воспользоваться директивой М Монитора. Например так
-->MA001
A001 FF 00
A002 FF 00
A003 FF.
-->MA000
A000 0E
A001 00.
-->
И т.д.
Медленно, но уверено.:v2_dizzy_ironic:
Спасибо! Бага явно где-то в скорости выдачи контроллером данных для ВВ55.
Ибо данные плавают:
-->MA000
A000 0E
A001 08 .
-->MA000
A000 03
A001 08 .
-->MA000
A000 0E
A001 88 .
и тп. в старших битах данных происходит какая-то ерунда, каждый раз новые данные.
Куда уже оптимизировать ассемблерные вставки в коде контроллера - не представляю :)
Дождусь Atmega8 и попробую на нем собрать и оригинальной прошивке Vinxru, надеюсь это поможет :)
andykarpov
10.11.2014, 17:08
Такс :) кажется нашел беду. Это шлейф. при чем оба глючат в одном и том же месте - на пинах данных D3-D6, тестер показывает КЗ между собой.
---------- Post added at 15:11 ---------- Previous post was at 13:25 ----------
Ура! Заработало :)
---------- Post added at 15:13 ---------- Previous post was at 15:11 ----------
Вывод такой: не доверяйте китайским плоским кабелям! В моем случае была лажа в том, что шлейф был на самом-деле 27-контактный, но они все чудом поместились 26-контактный в IDC-разъем :)))
---------- Post added at 15:27 ---------- Previous post was at 15:13 ----------
Коммандер работает. Но с курсором и клавишей ESC не очень дружит. Да и функциональные клавиши как-то не так работают.
Хотелось бы у студии узнать, на что заменить данные значения констант:
#define KEY_F1 0
#define KEY_F2 1
#define KEY_F3 2
#define KEY_F4 3
#define KEY_LEFT 8
#define KEY_TAB 9
#define KEY_ENTER 13
#define KEY_ESC 27
#define KEY_RIGHT 0x18
#define KEY_UP 0x19
#define KEY_DOWN 0x1A
#define KEY_STR 0x1F
#define KEY_SPACE 0x20
#define KEY_BKSPC 0x7F
Vinxru посоветовал поменять их на правильные значения для RK86 и пересобрать shell.rk.
---------- Post added at 16:08 ---------- Previous post was at 15:27 ----------
Vinxru сделал отдельную прогу keytest.rk (http://rghost.ru/58990926, которая показывает коды нажатых клавиш, с помощью функции биоса getch().
Так вот, нажатие на кнопки курсора выводит коды вверх: 38, вниз: 32, влево: 34, вправо: 36, что соответствует нажатиям клавиш 8,2,4,6.
Что с этим делать - пока непонятно.
От автора поступило предложение назначить кнопки курсора на альтернативные клавиши Q,A,O,P:
#define KEY_LEFT 'O'
#define KEY_RIGHT 'P'
#define KEY_UP 'Q'
#define KEY_DOWN 'A'
---------- Post added at 16:08 ---------- Previous post was at 16:08 ----------
Ну и параллельно изучить прошивку адаптера PS/2 клавиатуры, что это он такое отдает :)
andykarpov
10.11.2014, 21:42
Ура! Получилось пересобрать shell.rk! Теперь навигация с помощью Q/A/O/P.
Там, кстати, кому интересно - github портит концы строк у исходников, делает \n вместо \r\n, посему компилятор c8080 ничего не понимает.
Хотфикс данной проблемы:
find . -name "*.[c|h|inc|asm]" -type f -exec perl -pi -e 's/\n/\r\n/;' {} \;
github портит концы строк у исходников, делает \n вместо \r\n
Это не github, это локальный виндовый git у автора коммита настроен как "fetch Windows style, commit Unix style". Он при установке предлагает выбрать один из трех вариантов, указанный - дефолтный.
andykarpov
11.11.2014, 13:58
Коммандер работает. Но с курсором и клавишей ESC не очень дружит. Да и функциональные клавиши как-то не так работают.
Блииин, это, похоже, косяк вообще моего контроллера клавиатуры.
А можно поинтересоваться, кто собирал SRAM-версию РК86, какую прошивку кто себе вливал для клавы в Atmega48 ?
SoftFelix
11.11.2014, 14:10
А можно поинтересоваться, кто собирал SRAM-версию РК86, какую прошивку кто себе вливал для клавы в Atmega48 ?
Заливал вот отсюда (http://zx-pk.ru/showpost.php?p=176948&postcount=1) из архива orkb_01d.zip. Вот этот хекс: orkb_01d.hex.
andykarpov
11.11.2014, 14:28
Заливал вот отсюда (http://zx-pk.ru/showpost.php?p=176948&postcount=1) из архива orkb_01d.zip. Вот этот хекс: orkb_01d.hex.
Да, у меня такая же. Странно. Может от модели самой клавиатуры зависит ?
Курсорные клавищи в мониторе передвигают курсор ?
SoftFelix
11.11.2014, 14:32
Курсорные клавищи в мониторе передвигают курсор ?
Э-э-э... Давно не включал, даже не помню. Проверить? Тогда только вечером отпишусь.
andykarpov
12.11.2014, 00:07
Э-э-э... Давно не включал, даже не помню. Проверить? Тогда только вечером отпишусь.
Спасибо, проверять не стоит. Это, оказывается, моя клавиатура поддерживает коряво ScanCode Set 3 :(
vlad6502
16.12.2014, 03:22
Теперь и для Микро-80 (http://zx-pk.ru/showpost.php?p=761840&postcount=143) ;)
pink_ked
03.04.2015, 13:30
Vinxru удалил свой журнал. Печаль.
Kakos_nonos
03.04.2015, 14:30
Он в контакт перешел
sergey2b
07.04.2015, 01:13
Vinxru удалил свой журнал. Печаль.
тоже сегодня увидел
мне нравилось его журнал читать
---------- Post added at 02:13 ---------- Previous post was at 02:04 ----------
подскажите пожалуйста а где выложенна оригинальная схема и прошивки версии от Vinxru
https://github.com/vinxru/86RKSD
И здесь (http://www.spetsialist-mx.ru/index4.html).
oracleua
29.04.2015, 19:14
Подскажите плиз куда копать...
Контролер работал просто замечательно..с Апогеем..
Решил сегодня включить...
http://rghost.ru/6M2tq66Nh/thumb.png (http://rghost.ru/6M2tq66Nh.view)
Файлы все на карте есть...Что еще заметил..при включении комп повис...только после выключения и включения заработал...а контролер нет...
А действительно ли в папке BOOT присутствует файл SHELL.RK?
oracleua
29.04.2015, 21:51
А действительно ли в папке BOOT присутствует файл SHELL.RK?
Файл присутствует...
Менял флешку....результат такой-же...
заливал заново прошивку контролера...
Что интересно вчера все работало....
Если бы не работал контроллер, то надписи как на фотографии отсутствовали бы. У меня писалась ошибка об отсутствии системы. Что-то с файлами. Как ведёт себя светодиод при сбросе - он должен лихорадочно мигать.
Размер флешки ?
тип партишина ?
тип файловой системы ?
oracleua
30.04.2015, 11:41
После сброса светодиод один раз моргает и не горит. Флешка 128мб. она работала без проблем.была отформатирована в 7-ке в фат по умолчанию...потом в ФАТ32 .(менял на 512мб..1гб)..
Светодиод лихорадочно мигает когда флешка вытянута...
ФАТ32 не пойдёт. Vinxru делал под FAT16.
oracleua
30.04.2015, 13:28
ФАТ32 не пойдёт. Vinxru делал под FAT16.
Спасибо. Попробую под фат16...
ФАТ32 не пойдёт. Vinxru делал под FAT16.
специально слазил на vinxfs, там есть fat32 ;)
сам думал что не поддерживает.
вот с типом партишина - может быть вопрос.
oracleua
30.04.2015, 15:02
Карта FAT16....(еще раз отформатил с загрузочного диска). Раздел основной на ней.
Файлы в наличии...
Тест ОЗУ апогей проходит...осталось заменить порт вв55..(после вскрытия коробки с Апогеем неправильно работала клавиатура...например вместо ВК срабатывала Z.решилось заменой вв55.видать бракованный был)..
oracleua
09.05.2015, 22:42
Сделал еще один контроллер. Заработал с той-же картой памяти..
Буду копать неработающий контроллер.. Благо что не копал сам Апогей...
Благодаря замечательным людям, этот незаменимый девайс есть и у меня.
Спасибо vinxru (http://zx-pk.ru/member.php?u=6677) за разработку, andykarpov (http://zx-pk.ru/member.php?u=7731) за разработку платы и Ewgeny7 (http://zx-pk.ru/member.php?u=549) за собранный прототип (плата andykarpov + схема и прошивка vinxru).
Подключалась к КР-02 (16кб) и КР-03 (32кб). При попытках подключения обнаружила, что на КР-03 неисправен порт В. Светодиодные индикаторы слегка горят даже в выключенном состоянии, а два разряда включены постоянно. Замена DD14 (ВВ55а) на очереди, а пока обошлась заменой порта В на С.
Как известно, контроллеру SD карты нужно только два восьмибитных порта. Один для шины данных, второй для шины адреса.
Переписав boot.rk, sdbios.rk и подпрограмму чтения с ROM-DISK'а (директива R), вполне можно воспользоваться любыми двумя портами из трех.
.ORG 0100H
LXI H, 0000H; нач. адрес в ROM-DISK
LXI D, 007FH; кон. адрес в ROM-DISK
LXI B, 0000H; нач. адрес в ОЗУ
CALL MFA68 ; выполнить
JMP 0F86CH ; теплый старт Монитора
MFA68: MVI A, 090H ; режим ввода порт А, вывода В и С
STA 0A003H ; установить в чипе DD14
MFA6D: MOV A, L ; восемь бит адреса
STA 0A002H ; выводим в порт С (шина адреса)
LDA 0A000H ; получаем байт из порта А (шина данных)
STAX B ; записываем в ОЗУ
INX B ; след./ адрес ОЗУ
CALL 0F999H ; ст. подпрограмма цикла по HL, DE.
JMP MFA6D ; на начало цикла
.END
Для работы на 16кб версии надо тоже немного изменить sdbios.rk, все работает. Коммандер (© vinxru) под 16к адаптировать пока не пробовала, но думаю нет ничего невозможного и версию "лайт" вполне можно сделать.
На очереди программа копирования с флопиков прямо на SD карту (ака диск С / vinxfs (http://we.easyelectronics.ru/Soft/vinxfs-samaya-malenkaya-faylovaya-sistema-fat32-dlya-avr.html)). А также, неплохо было бы подружить sdbios.rk с DOS (http://zx-pk.ru/showthread.php?t=11319). Оригинальный sdbios.rk загружается как раз в область рабочих ячеек доса, а также не учитывает выделение памяти при его (доса) работе.
Замена DD14 (ВВ55а) на очереди
Нужна новая? Их есть у меня :)
Нужна новая? Их есть у меня :)
Большое спасибо. :) Уже успела купить парочку сороконожек.
Всем привет! Подскажите, а к "Партнёру" контроллер кто-нибудь подключал?
kas29, там же внешнего интерфейса на ВВ55 нет. Если конечно не считать отдельный модуль для принтера. Так что к контролеру потребуется ещё и новый модуль изобретать с ВВ55 и ПЗУ. Но тогда IMHO лучше вообще другой контролер, с учетом архитектуры Партнера.
Мне больше за Микрошу обидно, нахрена её так кастрировали, при всех её плюсах...
порт привинтить вроде не проблема? Одна-две микросхемки на картонке...
Прочитал дважды тему, но так и не понял, а можно эту схему использовать вместе с дисководом, к примеру копировать файлы с карты на дискету и обратно. Если они оба установлены в системе, но используется что-то одно, не мешают друг другу?
Ответ под носом был, раззява!
Оригинальный sdbios.rk загружается как раз в область рабочих ячеек доса, а также не учитывает выделение памяти при его (доса) работе.
Присоединяюсь к команде запустивших данный девайс :) Радио86РК SRAM 32. Кто бы ещё подружил два устройства - дисковод и сдкарт.. Было бы шикарно - коммандер, который поддерживает и карту, и дискогрыз. :) Всем спасибо и с наступающим!
vazman, это дело не простое. Нужно от чего-то уходить. Либо подружить софт от контроллера с флопом, либо ДОС допиливать для дружбы с СД-картой.
Данные устройства я хочу "встроить" в планируемый проект Радио-86РК Плюс, но загвоздка именно в этой "дружбе". как альтернатива - контроллер Флеш-диска от Vladimir_S, может он подружит свое детище с флопом.
perestoronin
31.12.2015, 14:54
Тогда уж сразу Радио 2016 РК 128 Цвет + usb + hdmi. А контроллеры присмотреть из недорогих поновее и софт под так написать, чтобы сразу были как родные. По ОЗУ, имеет вероятно смысл вернуться к DRAM, но относительно новым 4-8битным (планар), а если все-таки SRAM, то рассмотреть узкие W24512AK (DIP)
Vladimir_S
02.01.2016, 06:22
gdv2002, Что бы подружить флоп с чем то, нужно где то расположить этот софт. А в РКшке с флопом Е000 - EFFF софт флопа, F000 - F7FF недоступно, F800 - FFFF монитор. Да еще и в памяти пользователя 7100 - 75FF занято под флоп. Без переделки дешифратора и добавления ПЗУ (на что многие пользователи не пойдут) не обойтись.
При большом желании можно самому написать коммандер для SD контроллера, я вот написал для Специалиста. Описание есть, доступ к контроллеру на файловом уровне.
Прочитал дважды тему, но так и не понял, а можно эту схему использовать вместе с дисководом, к примеру копировать файлы с карты на дискету и обратно. Если они оба установлены в системе, но используется что-то одно, не мешают друг другу?
Мне кажется, sdbios.rk надо в пзу переносить. Исправить адрес загрузки и рабочие ячейки несложно, но все равно найдется вредная, но полезная программа, которая занимает и эту область памяти. Памяти в РК совсем негусто ведь. Пока думаю над Монитором-2, урезанный стандартный монитор, включающий уже в себя поддержку SD контроллера, ну и совместимый с ДОС, конечно.
А еще бы сделать програмный переход из монитора-1 в монитор-2, эх. :)
P.S. Вроде, линии DD20 PC1,PC2 настроены на вывод и свободны. :smile:
Vladimir_S
29.01.2016, 13:59
sdbios.rk надо в пзу переносить.
Нужно новую РКшку затачивать.
http://zx-pk.ru/showthread.php?t=26099&p=853427&viewfull=1#post853427
Я к ней дешифратор сделал где ПЗУ от 8800 до 9FFF, А800 - ВFFF, С800 - FFFF. Причем в ДОС 2.9 диапазон F000 - F7FF доступен для пользователя.
Мне кажется, sdbios.rk надо в пзу переносить.
Я так и сделал в Специалисте. Скорость загрузки системы несколько секунд.
fifan, в Специалисте иначе boot.rk через эмулятор магнитофона грузится, а в РК, если только лень набрать пару команд. Да и то можно на директиву 'U' посадить, так же можно переписать boot.rk, грузить в верхнюю память (7580-75FF). А для DOS 2.95, достаточно написать пару утилит, которые без всякого sdbios будут делать load/save/dir/cd с SD карточки.
Как известно, контроллеру SD карты нужно только два восьмибитных порта. Один для шины данных, второй для шины адреса.
Переписав boot.rk, sdbios.rk и подпрограмму чтения с ROM-DISK'а (директива R), вполне можно воспользоваться любыми двумя портами из трех.
На очереди программа копирования с флопиков прямо на SD карту (ака диск С / vinxfs (http://we.easyelectronics.ru/Soft/vinxfs-samaya-malenkaya-faylovaya-sistema-fat32-dlya-avr.html)). А также, неплохо было бы подружить sdbios.rk с DOS (http://zx-pk.ru/showthread.php?t=11319). Оригинальный sdbios.rk загружается как раз в область рабочих ячеек доса, а также не учитывает выделение памяти при его (доса) работе.
Реально ли переделать контроллер под "Микрошу"? (думаю, что реально, но думать тяжело :))
Есть ли новости про программу копирования с флопиков?
tnt23, в мониторе Микроши нет команды R, а если начальный загрузчик читать с флоппи диска, то при наличии FDD смысла в SD нет.
uart, смысл в SD контроллере при наличии дисковода все же есть: формат записи на дискету ДОС2.9 практически невозможно прочитать-записать на современных PC. А перенос данных туда-сюда нужен, и не через магнитофонный вход.
tnt23, ну тогда имеет смысл сделать на новой версии платы не только дополнительные 16Кб ОЗУ, но и SD контроллер туда же вынести. ВВ55 там есть, вполне можно и объединить.
Реально ли переделать контроллер под "Микрошу"? (думаю, что реально, но думать тяжело :))
Есть ли новости про программу копирования с флопиков?
Программа контроллера использует стандартные п/п Монитора, адреса распределения ОЗУ и экранной области. Нужна эта информация, и можно будет пересобрать прошивку. Могу помочь с правкой исходников и сборкой.
На самом деле, я подумываю, что контроллер делался впритык на 8кб меги8, и кое что важного в нем не хватает. Сейчас мега8 стоит столько же, сколько и мега328, так что видимо уже не актуально. А вот модуля RTC, очень не хватает, потому что дата-время у создаваемых на ретрокомпе файлов все пустые.
Ножки, вроде бы, можно выделить под это дело. Также, мне кажется не очень правильным отсутствие на схеме синхронизированного с компьютером сброса.
Также, платку оригинальную делать совсем необязательно. Достаточно чипа прошитого, с минимальной обвязкой, а также готового модуля SD карты с преобразователем уровня (5в-3.3в) с али.
Программа копирования в процессе. Я решила, что пофайловое копирование очень грустно, учитывая скорость выхода из строя флопиков (уязвимые сектора каталога и VTOS). Также, хотелось бы выдергивать инфу и с неисправных дисков. Поэтому, было решено копировать диск посекторно, целиком в образ на SD.
Дизассемблирование DISKCOPY у меня вызвало тупиковое состояние, код довольно мутный. В тестах, тоже особенно не развернутся, единственный работающий дисковод, нужен для спасения старого фонда с дисков. В эмуляторе РК-ДОС не поддерживается, вроде бы?
Идея такая, чтобы диск копировался без остановки и вынимания, за один проход, на SD карту или с SD карты, в файл образа диска (400кб).
Но поскольку старт копировщика будет производится с SD, нужно как то проинициализировать ДОС без холодного старта. Если у кого то есть наработки, на тему инициализации и посекторного копирования, буду благодарна.
- - - Добавлено - - -
tnt23, в мониторе Микроши нет команды R, а если начальный загрузчик читать с флоппи диска, то при наличии FDD смысла в SD нет.
А аналогичная п/п чтения с ROM-диска там есть?
На РК я просто сделала мод монитора, сохранив классическую директиву R, к тому же. Одной буквой запускается загрузчик SD, второй DOS.
Но на деле, нужно ПЗУ хотя бы на 8кб одним чипом, которое бы включало в себя Монитор и ДОС (тянуть кучу проводов, нужных только ПЗУ, к контроллеру флопика, как то неразумно). А также и SD-BIOS. Придумала, как решить проблему окна F000-F7FF, которое надо включать/выключать из адресов ПЗУ, для работы с флопиком. Задача - полная совместимость с оригиналом, плюс новые возможности.
А аналогичная п/п чтения с ROM-диска там есть?
Нет. Я даже не уверен, что на интерфейс 2 все выходы ВВ55 заводятся, а не только минимум для поддержки принтера. Старший бит порта B вообще используется для переключения шрифта.
Но на деле, нужно ПЗУ хотя бы на 8кб одним чипом
На Микроше не нужно. Там есть свободные 16К, куда ставится ОЗУ, и с дискеты запускается sdbios с оболочкой, которую можно модифицировать и для поддержки дисковода.
PS: РК-ДОС есть в моем эмуляторе, но он только под мак.
cy6, могу подогнать пару-тройку дисководов 3.5" для тестов
Наверное, одного будет более чем достаточно. :) У которого сигнал готовности известно как запаять (http://zx-pk.ru/threads/11319-radio-86rk-podklyuchenie-diskovoda.html?p=853029&viewfull=1#post853029).
cy6, есть Samsung 321b, родной брат которого (перепаянный) работает у меня с "Микрошей". Где-как пересечься, велкам в личку.
новости про программу копирования с флопиков
Вчера запустила первый рабочий экземпляр. Записала образ диска на флешку. Пишет быстро, сама нумерует файлы образов. :)
Теперь стал актуален вопрос о формате файла образа дискеты.
Сейчас это все сектора (800 * 512) выравненные на 512 байт. В файле еще нужны будут реальные длины всех секторов, а также VTOS карта здоровья секторов (вместо признака занятости, признак ошибок при чтении).
Посекторное копирование образа целиком было выбрано, чтобы произвести быстрое и наиболее шадящее чтение со старых дисков. Даже с дисков, у которых сектора с данными не читаются, и даже с испорченным корневым каталогом. То есть задача простая, скопировать все, что возможно физически.
Какое расширение взять для файлов образа, может RKD? Я не нашла документации по форматам tape файлов RK, RKI. Потому незнаю, какие расширения уже заняты под другие форматы.
А может есть какие либо другие предложения. :)
Я в своем эмуляторе сначала использовал RKD, потом решил на rkdisk перейти.
Но наверно RKD правильнее, если он стандартным будет.
uart, не подскажете по своему формату образа диска.
Смотрела файл RK86DOS29.rkdisk, размер 500000 байт. Увидела запись всех служебных структур - синхробайтов, меток, разделителей и т. д.
Не поняла периодичность (размер) сектора. Он 584, 585 или 586 байт? Она меняется или мне показалось. Граница файла не кратна секторам, есть выравнивание до 500000?
Пытаюсь посчитать по журналу размеры. Заголовок сектора 5 + 5 + 2 + 2 + 1 = 15 байт. Разделитель 5 байт.
Поле данных 5 + 5 + 2 + 2 + 1 + 512 + 2 = 529 байт. Разделитель 5 байт. Итого 554 байт.
Что не так?
Я за .rkdisk... Всевозможные *.rk? пусть лучше останутся ленточными форматами.
Можно еще подумать насчет чего-то вроде *.rdi (по аналогии с дисками "Ориона .odi" и т.п.), возможно для формата без служебных структур секторов.
Я не следил за темой - а где можно вообще посмотреть на эти образы, в частности тот же RK86DOS29.rkdisk?
где можно вообще посмотреть на эти образы, в частности тот же RK86DOS29.rkdisk?
Я брала тут http://uart.myqnapcloud.com/files/RK86DOS29.zip
Я за .rkdisk...
Увы, vinxfs не поддерживает длинные имена (что не удивительно при крохотных размерах библиотеки), только 8.3. Следовательно, есть проблемы прямого переписывания файлов с диска на карту (не внутри образа). В RK DOS имена файлов длиннее, чем по стандарту MS DOS.
Можно еще подумать насчет чего-то вроде *.rdi (по аналогии с дисками "Ориона .odi" и т.п.), возможно для формата без служебных структур секторов.
Rk Disk Image, подходит. :) А где можно подробнее посмотреть про структуру формата без служебных?
cy6, "без служебных структур" - я имел в виду, что просто подряд полезное содержимое всех секторов (512 байт на сектор). То есть файл размером 400 Кб.
cy6, я просто пишу все байты, которые подсовывает компьютер, признак синхробайта игнорирую. Соответственно и обратно выдаю все байты. Разбор на сектора и прочее делает РК ДОС. Размер трека 3125 байт, 300 оборотов в минуту.
Но это я сделал для быстроты реализации. Если делать RDI, то просто сектора на 400Кб.
"без служебных структур" - я имел в виду, что просто подряд полезное содержимое всех секторов (512 байт на сектор). То есть файл размером 400 Кб.
Если делать RDI, то просто сектора на 400Кб.
Но если не знать реальных длин секторов (а они бывают меньше 512, как минимум в последнем секторе файла), тогда не собрать файл как надо, ведь так?
Плюс, хотелось бы совместимости с эмуляторами, или возможности конвертации в формат для эмуляторов. Настоящих и будущих.
Выходит, мне как минимум надо сохранять длину и считанную контрольную сумму для каждого сектора. Остальные служебные поля предопределены.
cy6, что-то я не обращал внимания, что сектор может уменьшаться, сейчас проверю.
- - - Добавлено - - -
Да, действительно длину сектора надо хранить. А вот контрольную сумму не обязательно, ее можно рассчитать на ходу.
Да уж, тогда формат "без служебных структур", очевидно, не получится...
Я тоже буду реализовывать в эмуляторе поддержку ДОС, надо будет нам все-таки определиться с форматом образа диска.
Стоит ли что-то хранить коме длин секторов? В каком виде хранить длины? Хранить ли карту здоровья в образе либо в отдельном файле? Есть ли смысл в хранении другой служебной информации информации, как в rkdisk?
Есть соображения?
HardWareMan
07.07.2016, 03:41
Это как это плавающий размер сектора? Ану как понадобиться большой сектор в место малого записать?
Стоит ли что-то хранить коме длин секторов? В каком виде хранить длины? Хранить ли карту здоровья в образе либо в отдельном файле? Есть ли смысл в хранении другой служебной информации информации, как в rkdisk?
Есть соображения?
Насколько я понимаю, с эмулятором связаны две вещи:
1) Ему даются скорее всего образы исправных дисков. Неисправные нужны видимо для ручного вытаскивания нужной инфы.
2) Эмулятор выполняет код ДОСа, а тот код читает служебные структуры сектора из порта ввода, он ожидает их. Генерировать ли их на лету или считывать из файла, это вопрос реализации.
Если говорить о простом образе, то длины можно хранить в виде отдельной таблицы в конце 400кб, в виде LE words. Что либо связанное со здоровьем диска, только у неисправных дисков, после таблицы длин. Завершать файл можно сигнатурой, после таблицы длин или после необязательной карты здоровья.
Завершающую сигнатуру, можно взять что то типа
'RK86DISK', 0
Карту здоровья, в виде таблицы считанных КС, либо просто битовая карта как VTOS. Начало любых структур (таблиц) можно тоже предварять простой двухбайтовой сигнатурой и длиной блока (Type|Length|Value). Начало любого блока выравнивать на границу 512 байт.
- - - Добавлено - - -
Вот, кстати, скрин работы программы.
http://c6lab.org/photos/rk/IMG_20160707_150719.jpg
Время считывания диска 2м 10с.
Запуск производится из коммандера на SD карточке. Внизу ">", это приглашение модифицированного монитора, с директивой "U", запускающей загрузку с SD без длинной последовательности "R...G".
Все исходники на программу будут открытые, по выпуску первой версии с законченным форматом RDI.
cy6, а может быть, раз уж разбор на сектора делает сама ДОС, все-таки хранить все подряд, как это и сделал uart, и не усложнять без необходимости формат образа?
Кстати, я тоже не совсем понимаю, как происходит перезапись секторов уменьшенного размера? Может быть, перезаписываются дорожки целиком? Можете пояснить?
как происходит перезапись секторов уменьшенного размера?
Насколько я понимаю, при форматировании сектор имеет размер 512 байт. Таким образом, резервируется место. Далее, в сектор записывается любое количество байт (не более 512) и сразу за этой плавающей длиной КС (word) сектора. Весь трэк переписывать не требуется, благодаря аппаратной синхронизации на первый байт после синхробайта.
раз уж разбор на сектора делает сама ДОС, все-таки хранить все подряд, как это и сделал uart
Я не совсем понимаю, как у него организован трэк. Длина выходит больше, чем если считать по формату из журнала Радио #1, 1993.
По журналу, служебная информация 42 байта (включая синхробайты и R0, R1) плюс максимум 512 байт. Пять секторов (512 + 42) * 5 = 2770 байт. Остается только гадать, что скрывается за 3125 байтами, возможно в журнале описано не все?
Ну вот, например, начало файла RK86DOS29.rkdisk
00000000 06 06 06 06 06 00 00 00 00 00 00 EA D3
Пять синхробайтов, как по журналу и вдруг шесть нулевых байт вместо пяти, перед адресной меткой заголовка сектора.
57549
Ага, то, что резервируется место - хорошо, проще будет с образом.
А что касается формата трека - беру пока небольшой таймаут на изучение вопроса...
cy6, uart имеет в виду, что 3125 байт - это общая длина трека. При скорости записи 125000 бит/с (промежуток времени между битами 8 мкс) и скорости вращения диска 300 об/мин как раз получится максимум 3125 байт на трек. Умножаем на количество треков и получаем 500000 байт - именно столько и резервируется для файла. Естественно, между секторами могут быть промежутки.
Подозреваю, что 5 нулевых байт - это примерное значение. Может быть больше, а может и меньше - в зависимости от того, как долго РК ДОС готовится к следующей операции, но в любом случае с запасом, чтобы успеть сделать необходимые действия при чтении. Видимо, ДОС, после того, как будет готова к чтению, ждет адресную метку и игнорирует все другие значения после синхробайта, ей не критичны именно 5 нулевых байтов. Не совсем также понимаю, почему иногда 5 синхробайтов дополняются в конце байтом 0D. Надо изучать код ДОС.
В эмуляторе uart, очевидно, существует привязка к скорости вращения диска, поэтому все тайминги примерно соответствуют реальной работе с дискетой. Существующий формат образа также позволяет зафиксировать реальное положение секторов на треке и промежутки между ними. Так что, как ДОС читает записанную ей же реальную дискету, то будет читаться в эмуляторе и записанный в нем же образ. Способ универсальный, хотя и медленный. Если остановиться на нем, то при необходимости искусственного формирования образа диска важно просто обеспечить достаточные нулевые промежутки, конец же секторов до 3125 байт можно просто занулить.
А еще можно в эмуляторе попробовать обмануть ДОС и постоянно подсовывать ей сигнал готовности, чтобы ввод/вывод осуществлялся на максимальной скорости. В таком случае точность формата дискеты уже не важна, и можно попробовать сжать образ за счет служебной информации и/или межсекторных нулевых промежутков. Но первый вариант мне кажется более универсальным.
Ну так что, переименуем .rkdisk в .rdi и оставим формат как есть?
Я тоже сторонник хранения всех дорожек целиком.
При скорости записи 125000 бит/с (промежуток времени между битами 8 мкс) и скорости вращения диска 300 об/мин как раз получится максимум 3125 байт на трек.
Если остановиться на нем, то при необходимости искусственного формирования образа диска важно просто обеспечить достаточные нулевые промежутки, конец же секторов до 3125 байт можно просто занулить.
Ориентированный на скорость вращения диска формат, это хорошо для эмулятора, но плохо для хранения.
Оно вынуждает пользоваться такими понятиями как "достаточный" и "приблизительный". Но при этом, вся схема контроллера НГМД жестко засинхронизирована по байтам, и тайминги в ней реальные и постоянные.
Если брать за основу формат хранения вместе со служебной разметкой, я бы взяла тот, который выводится на диск при форматировании.
Это ведь логично, если в сравнении с tape файлами. Мы читаем именно то, что мы выводим, не учитывая при этом физику ленты, лентопротягивающего механизма и настройку магнитной головки.
Или нужно не приблизительное, а точное описание удобного всем формата. У которого все структуры имеют одинаковые размеры внутри сектора.
- - - Добавлено - - -
А ведь эмулятор может выполнить команду format и записать при этом пустой образ в файлик? Вот бы такой файл получить.
Схема контроллера-то засинхронизирована, только вот большая доля работы приходится и на процессор. Я сильно подозреваю, что эти нулевые промежутки между секторами, а также между заголовком и сектором получаются просто за счет вращения диска, пока ДОС занимается другими делами. То есть они могут быть чуть больше, могут быть чуть меньше. Более того, даже если просто 2 раза отформатировать дискету, полного совпадения не будет за счет случайных флуктуаций, вносимых, например, ПДП.
Если эмулятор достаточно полно эмулирует архитектуру компьютера и учитывает скорость вращения диска, то аналогичный разброс появится и в образе диска, полученном при форматировании из эмулятора. Надо бы проверить на эмуляторе uart.
Если же эмулятор будет игнорировать вращение диска (ввиду особенностей реализации или с целью повышения скорости работы с образом), то в образе появятся только байты, записанные под явным контролем ДОС. Но в таком случае их может оказаться недостаточно для нормального считывания диска на эмуляторе, учитывающем вращение диска либо на реальном РК, если этот образ записать обратно на дискету.
Может быть тогда для формирования образа "для хранения" просто зафиксировать эти промежутки? Взять, например, ровно 5 байт, как описано в журнале (убедиться только, что этого реально хватает)? Иначе придется делать 2 формата - "для хранения" и "для реала и продвинутых эмуляторов"...
Тут надо определиться, если поддерживается только структура РК-ДОС, тогда достаточно (512+2)*5*2*80, все остальное излишне.
Если произвольный формат для этого контролера, то нужны все байты. Это если гипотетическую защиту от копирования не рассматривать.
Длина трека зависит от скорости вращения диска, насколько я помню, там и по стандарту допускаются отклонения.
Формат РК-ДОС, как и любой другой формат не забивает трек под завязку, иначе бы различные нестандартные форматы не появились бы. У кого есть реальный контролёр вполне может набросать тестовую программку, которая будет писать байтики от индексной метки до индексной метки. А потом сравнить с результатами с другого дисковода.
А вот контроллер на ВГ93, который вроде тоже имел место быть для РК86, наверняка имел другое количество секторов в треке. Его, если вдруг случится, в образе диска тоже хорошо было бы поддержать.
С Вг93 проще - там размер сектора фиксированный (по крайней мере в обычных дискетах, а не экзотических форматах). А контроллер на вг93 реально был на РК? Я только про Партнер слышал...
- - - Добавлено - - -
В общем, я думаю, что для этого контроллера стоит хранить дорожки целиком. Начал уже реализовывать в эмуляторе...
Сделал пока в эмуляторе работу с форматом образа, содержащим дорожки целиком (как и в эмуляторе uart). Мне этот вариант кажется наиболее логичным для этого не совсем обычного контроллера. Если будут другие предложения для формата конкретно под РК ДОС, можно будет добавить либо написать конвертеры.
Stampmaker
06.09.2016, 14:50
наконец-то собрал и я этот контроллер. всё работает, грузится, запускается. но есть одно "но".
при первом запуске компьютера и выполнении команд R,100 [BK] G [BK] всё нормально.
но если перезапустить компьютер, нажав сброс, и выполнить то же самое, то при входе в shell эмулируется нажатие ВК. и получается, что если перед этим указатель стоял на каталоге, то происходит вход в каталог, если на файле, то происходит его запуск. и так по кругу.
кто что может сказать по этому поводу?
P.S.
спасает ситуацию удаление на PC с карты файла shell.in. в его содержимом указано последнее имя, с чем работал пользователь. но это как-то неправильно, имхо.
Kakos_nonos
06.09.2016, 18:23
У меня нет такого. (Апогей версия)
кто что может сказать по этому поводу?
Истинно так, причем сам vinxru подтвердил сей глюк на классическом 86РК.
Обещал заняться вопросом как-нибудь. Год назад :)
Поэтому я запускаю файлы в каталоге не наведением курсора, а набрав название.
Иначе надо каждый раз файл шелла удалять.
- - - Добавлено - - -
Сейчас проверил на Апогее, на нем действительно такого глюка нет.
Интересно, а почему этот глюк возникает?
У меня тоже такая фигня.. Причём, мне кажется, когда я только построил контроллер - такого не было.. Кстати сейчас только подумал.. возможно, такая фигня когда одновременно подключен дисковод и сд контроллер.. Надо будет проверить
Stampmaker
07.09.2016, 14:12
Вот что мне vinxru ответил:
---
Да, можно в исходники коммандера вставить проверку, нажата ли клавиша Enter.
Если нажата, подождать, пока не отпустят.
Как время появится, сделаю.
Я уже исправлял это. Но видимо на гитхаб не выложил...
---
А почему клавиша нажата? Что не так (или наоборот так) с клавиатурой РК?
Stampmaker
13.09.2016, 13:58
А почему клавиша нажата? Что не так (или наоборот так) с клавиатурой РК?
в том-то и дело, что никакая клавиша не нажата.
есть подозрение, что всё дело в новосозданном файле SHELL.IN.
возможно, что SHELL.RK при старте его считывает, а там прописаны последние выполненные команды. вот они и выполняются. если это действительно так, то непонятно, зачем было так сделано. но это только мои догадки.
Stampmaker, так на Апогее все нормально, почему глюк на РК проявляется?
Stampmaker
13.09.2016, 22:52
Stampmaker, так на Апогее все нормально, почему глюк на РК проявляется?
не могу сказать, не знаю
Истинно так, причем сам vinxru подтвердил сей глюк на классическом 86РК.
Обещал заняться вопросом как-нибудь. Год назад
Поэтому я запускаю файлы в каталоге не наведением курсора, а набрав название.
Иначе надо каждый раз файл шелла удалять.
Не только на классическом, но и на КР-01/02, мониторы которых, впрочем, отличаются только подпрограммой сканирования клавиатуры (клавиатура МС7007).
Решила проблему так:
/*
void loadState() {
...
*/
//---------------------------------------------------------------------------
/*
void saveState() {
...
}
*/
...
//saveState();
...
//loadState();
Компилятор "Си" Алексея плюется на линуксовые переводы строки (в исходниках с гитхаба). И еще какая то мелочь была.
Если кому то нужен готовый бинарник, напишите.
- - - Добавлено - - -
Сделал пока в эмуляторе работу с форматом образа, содержащим дорожки целиком (как и в эмуляторе uart). Мне этот вариант кажется наиболее логичным для этого не совсем обычного контроллера.
Как организована структура внутри трэка? Все что я поняла, по этому недокументированному формату, что размер трека фиксирован (задан скоростью диска). А вот пробелы внутри между секторами неизвестны.
Компилятор "Си" Алексея плюется на линуксовые переводы строки (в исходниках с гитхаба). И еще какая то мелочь была.
Если кому то нужен готовый бинарник, напишите.
решил проблему следующим образом
$ git config --global core.autocrlf true
ну и дальше клонирование, при этом git сам заменяет все LF на CRLF
https://github.com/vinxru/OldLines/issues/1
$ git config --global core.autocrlf true
ну и дальше клонирование, при этом git сам заменяет все LF на CRLF
Это у кого шелл есть. Для любителей m$ (и если просто "скрипт процессоры" ужасают) можно использовать notepad++ (https://notepad-plus-plus.org/). :)
Вот shell.asm, результат успешной компиляции, уже с вырезанной "save|load state". Можно сделать бинарник самостоятельно, с помощью TASM (http://www.cpcalive.com/docs/TASMMAN.HTM). :v2_dizzy_army:
Stampmaker
06.10.2016, 19:18
Если кому то нужен готовый бинарник, напишите.
если это будет готовый SHELL.RK для закидывания на SD, заберу с радостью :-)
готовый SHELL.RK для закидывания на SD
Пожалуйста, скопированный прямо со своей SD. :)
Как организована структура внутри трэка? Все что я поняла, по этому недокументированному формату, что размер трека фиксирован (задан скоростью диска). А вот пробелы внутри между секторами неизвестны.
Никак не организована, ею занимается ДОС.
- - - Добавлено - - -
Кто-нибудь может объяснить появление этого глюка на РК-86 и отсутствие на Апогее?
Никак не организована
Не представляю, как мне сделать поддержку формата в своей программе, "никак не организованного". :confused:
Ведь для моего софта, это не готовый дамп, а намеренно, исскуственно формируемая структура.
Совместимости с виндовым эмулятором Виктора (http://zx-pk.ru/members/7627-pyk.html), однозначно хотелось бы. Подожду, может он поможет с форматом.
Stampmaker
07.10.2016, 01:52
Пожалуйста, скопированный прямо со своей SD.
да
кажется, работает, как надо :v2_dizzy_roll:
спасибо
Не представляю, как мне сделать поддержку формата в своей программе, "никак не организованного".
Точно так же, как это делает ДОС, если нужен доступ к конкретным секторам. Если просто образ снять, то целиком трек прочитать, остаток скажем нулями забить.
Работа напрямую с портами в/в контроллера НГМД (написание еще одной ДОС) никогда не планировалась.
Программа работает под ДОС, как и любая другая пользуясь ее сервисами. Сектор со стороны программы, даже служебных заголовков не имеет, только содержимое блока данных и его размер. Таким образом, остальную структуру надо рисовать, по четкой схеме.
Пока нет конкретных предложений, буду планировать пять последовательных структур 58464 на трек, остаток предлагаемого размера нулями.
{Заголовок_сектора0 + R0 + Поле_данных + R1}
+ {Заголовок_сектора3 + R0 + Поле_данных + R1}
+ {Заголовок_сектора1 + R0 + Поле_данных + R1}
+ {Заголовок_сектора4 + R0 + Поле_данных + R1}
+ {Заголовок_сектора2 + R0 + Поле_данных + R1}
+ {Zero_Space[x]}
cy6, если не планируется работать с треком целиком, а только с секторами, то такой формат образа конечно не подходит. Но, как мне кажется, все это непринципиально, не думаю что где-то есть залежи старых дисков с софтом под РК.
У меня есть залежи собственного софта. :) И мне непринципиально, с какой скоростью вращается диск, нужна возможность быстрого перемещения данных FDD <-> SD.
Это копировщик, а не утилита для эмулятора. Совместимость формата, зависит только от желания разработчиков эмуляторов.
Жду именно предложений по формату, а не по способу снятия данных с диска. Вроде только об этом и шла речь, с самого начала.
cy6, образ то зачем нужен? Почему просто файлы не копировать?
Как организована структура внутри трэка? Все что я поняла, по этому недокументированному формату, что размер трека фиксирован (задан скоростью диска). А вот пробелы внутри между секторами неизвестны.
cy6, ну да, размер трека фиксирован и равен 500000 байт. А размер пробела между секторами зависит исключительно от временнОго промежутка между окончанием записи предыдущего и началом записи следующего. На сколько за это время успеет повернуться диск, такой и получится промежуток. При считывании размер промежутка тоже не очень актуален - DOS просто ждет синхробайт, указывающий на начало нового сектора. Если при записи не учитывать точные тайминги, то можно делать промежутки указанного в описании формата в журнале размера. Если же учитывать, то промежутки получаются слегка различными, так что при чтении лучше в любом случае делать ожидание синхробайта и не надеяться на фиксированный размер промежутков. (Все вышесказанное также относится к размерам промежутков между заголовками и телом секторов).
так что при чтении лучше в любом случае делать ожидание синхробайта и не надеяться на фиксированный размер промежутков
То есть, в эмуляторе будет поддерживаться любой размер промежутков между заголовками и телами секторов, я верно поняла?
Видимо, все что мне нужно, это соответствовать верной разметке внутри заголовков/тел секторов, в соотв. с описанием в журнале. Промежутки же не имеют значения, и могут быть сделаны любыми удобными в большую сторону от журнальных R0, R1.
Я бы приняла за формулу HEAD_SECT + R0 + BODY_DATA + R1 + DELTA_512. Где DELTA_512 = разнице реальной длины данных и возможным максимумом в 512 байт. Такая организация позволит не только читать, но и писать сектора в образ, не перемещая разметку, как на реальный диск.
Пять таких структур на трэк + DELTA_ZERO_TRACK, для выравнивания размера трэка по вашему формату.
Будет такое считываться в новой версии эмулятора?
SoftFelix
17.10.2016, 12:53
Кто-нить может поделиться чистой платой или готовыми шаблонами для ЛУТа (https://github.com/andykarpov/radio-86rk-sdcard)?
SoftFelix, есть готовые шаблоны для ЛУТа, но от оригинального проекта vinxru (https://github.com/vinxru/86RKSD).
https://github.com/vinxru/86RKSD/blob/master/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0%20%D0%B8%20%D0%BF%D 0%B5%D1%87%D0%B0%D1%82%D0%BD%D0%B0%D1%8F%20%D0%BF% D0%BB%D0%B0%D1%82%D0%B0%20%D0%BA%D0%BE%D0%BD%D1%82 %D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0/bottom1.bmp
https://github.com/vinxru/86RKSD/blob/master/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0%20%D0%B8%20%D0%BF%D 0%B5%D1%87%D0%B0%D1%82%D0%BD%D0%B0%D1%8F%20%D0%BF% D0%BB%D0%B0%D1%82%D0%B0%20%D0%BA%D0%BE%D0%BD%D1%82 %D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0/top1.bmp
На самом деле, электрическая схема, это обычная "ардуино" с адаптером SD карты.
Все пляски между 5в и 3.3в решает вот такой модуль:
http://roboshop.spb.ru/image/cache/catalog/demo/product/micro-sd-cart-module/micro-sd-card-module-1-300x300.jpg (http://roboshop.spb.ru/modules/micro-sd-module?filter=16)
Стоимость 50-80 руб. :)
Level conversion is done onboard using a LVC125A buffer device, allowing for 5v and 3.3v interfaces.
Минимальная обвязка меги, типа такой
https://cdn.instructables.com/FNX/1IP8/IHQ5Y8OT/FNX1IP8IHQ5Y8OT.SQUARE2.jpg (http://www.instructables.com/id/YABBAS-Yet-Another-Bare-Bones-Arduino-on-Stripb/)
У Алексея (vinxru) схема вообще простая и красивая, на резисторных делителях. :)
Хотя и на бредборде его собрать несложно, за несколько минут.
SoftFelix
17.10.2016, 23:50
cy6, спасибо, я это видел. Просто хотел собрать более совершенную версию. А ставить специально Eagle для одной платы и разбираться, как там сделать шаблоны для ЛУТа...
- - - Добавлено - - -
А ставить специально Eagle для одной платы и разбираться, как там сделать шаблоны для ЛУТа...
За 5 минут гугления набрёл на эту статью (http://we.easyelectronics.ru/HomeTech/eagle-cad-i-negativnye-shablony-esche-odno-reshenie.html). Скачал и установил Lite-версию этой софтинки. Без проблем импортировался brd от Eagle и позволил вывести на печать шаблоны для ЛУТа. Единственное, там бы дорожки потолще сделать, но не знаю как.
- - - Добавлено - - -
p.s. Не, таким нахрапом ЛУТ не получится: дорожки - как волос, переходные отверстия надо тоже увеличивать.
Не, таким нахрапом ЛУТ не получится: дорожки - как волос, переходные отверстия надо тоже увеличивать.
В режиме "Board" (режим разводки платы) жмешь кнопку "Info" (в виде буквы "i") затем на нужную дорожку/отверстие, смотришь параметр Width/Drill, ставишь нужный размер (для отверстия еще желательно параметр Diametr подправить).
- - - Добавлено - - -
Для массового изменения, выделяешь группу кнопкой Group (квадрат с прерывистой линии), затем жмем кнопку Change (в виде гаечного ключа), выбираем нужный параметр, на плате вызываем меню правой кнопкой мыши -> Change: Group.
То есть, в эмуляторе будет поддерживаться любой размер промежутков между заголовками и телами секторов, я верно поняла?
Да, но если промежуток будет слишком маленьким, то его может не хватить для ДОС, и она начнет чтение, когда сектор уже начнется. Синхробайт будет пропущен, сектор не будет прочитан, а дальше ситуация может сложиться двояко: либо все следующие по той же причине будет пропускаться, либо, если задержка при попадании на неверный сектор внутри ДОС меньше, то сектор все-таки будет считан после того, как диск совершит полный оборот, что приведет к замедлению работы с диском.
Будет такое считываться в новой версии эмулятора?
Думаю, что должно считываться. Если есть готовый образ диска в таком формате, с удовольствием потестирую. (А вообще, надеюсь, через недельку-другую уже появится некая пре-альфа сборка, пригодная для автономного использования, и которой мог бы поделиться для тестирования ;)
К сожалению, гитхаб с оригинальным проектом (github.com/vinxru) был утрачен.
Но есть оригинальные архивы с последними изменениями.
Сам проект https://c6lab.org/github_vnx/86RKSD-master.zip
Компилятор Си (который используется для сборки Коммандера) https://c6lab.org/github_vnx/C8080-master.zip
andykarpov
29.11.2016, 14:57
Спасибо, добавил эти 2 архива в репозитарий https://github.com/andykarpov/radio-86rk-sdcard/.
Также добавил описание работы прошивки, по материалам, которые проскакивали в vk.com: https://github.com/andykarpov/radio-86rk-sdcard/blob/master/description.md
cy6, спасибо! Алексей что-то совсем ушел во вконтакт...
Залил твои архивы заодно и к себе в облачный диск. Чего у меня там только нету... Порядка нету, ага.
Компилятор С для 8080 Vinxru (https://yadi.sk/d/1ka7aQeJzkGVe)
Архив с проектом (https://yadi.sk/d/uj1XNTK-zkGWT) SD-контроллера Радио-86РК Vinxru
Пускай будет в трех местах храниться :)
andykarpov, может ты поправишь ссылки в своем первом посте? А то там еще лайфжурнал даже значится.
andykarpov
29.11.2016, 15:42
andykarpov, может ты поправишь ссылки в своем первом посте? А то там еще лайфжурнал даже значится.
Поправил, спасибо!
petrov1962
09.01.2017, 11:09
На самом деле как то да, за исключением трех портов. Елси убрать LED и перенести два порта - то вполне себе хорошо
работает на Arduino Uno R3 :) При условии, что сё собрано правильно - без LED-a жить можно, на него портов ужо не хватаит:(
Спасибо Алексею (vinxru) за схемуу, простую и красивую, andykarpov-у спасибо за адаптацию под atmega328p, cy6 спасибо за поправленный шелл, и о-о-оочень большое спасибо skyther-у за помощь
с запуском этого SD-контроллера на ардуинке :-)
Попозже планирую переделать под Nano 3.0, чтобы со всем хорошо.
Поделитесь информацией (схемой, программой) как реализовать этот контроллер на ардуино?
petrov1962
09.01.2017, 21:29
С этим все понятно, наверное можно и arduino nano использовать?
petrov1962
09.01.2017, 23:39
то есть ардуиновский загрузчик не используется?
Уже сложнее...
Программирование через USB или через внешний программатор?
С CodeVisionAVR дела никогда не имел, увы...
SoftFelix
10.01.2017, 00:29
Парни, подскажите, пожалуйста, дабы дела ещё с этим не имел, а реализация понравилась. Вот это правильный комплект?
1. Nano 3.0 контроллер совместим с arduino nano CH340 USB драйвер с КАБЕЛЬ NANO V3.0 (https://ru.aliexpress.com/item/Nano-3-0-controller-compatible-with-arduino-nano-CH340-USB-driver-with-CABLE-NANO-V3-0/32478082112.html?spm=2114.30010708.3.66.dN9XZK&ws_ab_test=searchweb0_0,searchweb201602_2_10065_10 068_10000009_10084_10083_10080_10082_10081_10060_1 0062_10056_10055_10037_10054_10033_10059_10032_100 99_10078_10079_10077_10000012_10093_10103_10073_10 102_10000015_10096_10052_10108_10053_10107_10050_1 0106_10051-10050,searchweb201603_10,afswitch_4_afChannel,sing le_sort_0_default&btsid=a012c420-e4ee-42a6-968f-5e7259abcbd9)
2. Бесплатная Доставка Smart Electronics Чтение и Запись Модуль Модуль SD Card модуль Слот Разъем Читатель ARM MCU для arduino DIY Starter комплект (https://ru.aliexpress.com/item/Free-Shipping-Smart-Electronics-Reading-and-Writing-Module-SD-Card-Module-Slot-Socket-Reader-ARM-MCU/32498803667.html?spm=2114.30010708.3.11.eV5Q2Z&ws_ab_test=searchweb0_0,searchweb201602_2_10065_10 068_10000009_10084_10083_10080_10082_10081_10060_1 0062_10056_10055_10037_10054_10033_10059_10032_100 99_10078_10079_10077_10000012_10093_10103_10073_10 102_10000015_10096_10052_10108_10053_10107_10050_1 0106_10051-10050,searchweb201603_10,afswitch_4_afChannel,sing le_sort_0_total_tranpro_desc&btsid=2048fd06-27e8-4042-a3e8-f9f229d08cd8)
Это всё или ещё что-то потребуется?
SoftFelix
10.01.2017, 01:07
а контроллер немного дешевле
Согласен. Штырьки нафик не нужны, всё равно пайка будет, а USB-mini у меня и так есть. Плата под SD правильная?
https://ru.aliexpress.com/item/Free-Shipping-New-Atmega328-5v-Version-Pro-Mini-Module-16M-For-Arduino-Compatible/32531864275.html?spm=2114.13010608.0.0.juR5M5&detailNewVersion=&categoryId=400103
вот друйка без USB , нафиг он нужен, только прошить и забыть
продавец проверен не одной покупкой
petrov1962
10.01.2017, 14:01
Поставил CodeVisionAVR, загрузил проект, кучу warning при компиляции, что с ними делать?
Warning: D:\Temp\SD_RK_arduino\fs.c(946): function parameter #1 name: 'off' doesn't match its previous declaration: 'ptr' from file: 'D:\Temp\SD_RK_arduino\fs.h', line: 88
Warning: D:\Temp\SD_RK_arduino\86rksd.c(219): local variable 'n' is used before its value is set
Warning: D:\Temp\SD_RK_arduino\86rksd.c(329): local variable 'off' is used before its value is set
Warning: D:\Temp\SD_RK_arduino\86rksd.c(413): local variable 'd' was declared, but not referenced
Warning: D:\Temp\SD_RK_arduino\86rksd.c(413): local variable 'i' was declared, but not referenced
petrov1962
10.01.2017, 17:03
В CodevisionAVR встроена поддержка официальной медицины с ftdi чипом. А китайские Дуины используют чип ch341, драйвер которого почему-то не видит Codevision... И выдает ошибку коммуникации. Как с этим бороться? Кто знает? Драйвера установлены, компоновки есть, с помощью софта ардуино проблем с загрузкой нет. В настройках ,Codevision можно выбрать тип Меги и номер порта... С оригинальной uno думаю проблемы не будет.
Разобрался, грузится, мешали установленные драйвера FTDI.
Stampmaker
19.01.2017, 20:54
я захотел набить в памяти пару десятков кодов.
как мне теперь их сохранить в файле на SD средствами РК?
или текст BASIC?
может я не знаю какой-то тайны?
насколько я понимаю, если у компьютера есть накопитель, значит на него должна осуществляться помимо чтения и запись.
что-то мне подсказывает, что нужно отдельную софтину для этого писать.
и надо чтобы она как-то сохраняла данные на SD.
т.е. запускалась из-под SHELL и потом в него же возвращалась.
кто что думает по этому поводу?
на форуме эту тему что-то никто не подымает. неужели с этим до сих пор никто не столкнулся и только считывает с карты?
Я думаю, что здесь в теме есть несколько человек кто мне поможет. Я переделал опрос некоторых клавиш в программе контроллера PS/2 для Специалиста. Файл в атаче. Я не могу скомпилировать файл hex для записи. У автора спросил как это сделать, он ответил что должна быть одна из кнопок в CodeVisionAVR - я её не нашёл.
Перезалил выше в архив, хотя я думал остальные файлы не нужны.
SoftFelix
11.03.2017, 18:07
А мне так и не пришёл мой Nano (последнее событие от 21.01.2017 - Order has been Cancelled). Зато два адаптера SD и micro-SD, заказанные в тот же день, но у другого продавца, пришли очень быстро. Сейчас заказу Ардуино у другого продавца.
SoftFelix
20.05.2017, 17:03
Парни, подскажите, что дальше делать? :) Наконец-такИ пришла Ардуино-нано (https://ru.aliexpress.com/item/Nano-CH340-ATmega328P-MicroUSB-Compatible-for-Arduino-Nano-V3-0/32740641316.html?spm=2114.13010608.0.0.3fTOf8). Как и что в неё залить через mini-USB? Установил CodeVisionAVR 3.12 NEW отсюда (http://mega-avr.com.ua/codevisionavr-3-12/). Прибил дрова для FTDI, которые встали вместе с CodeVisionAVR, т.к. дрова для CH340 у меня ужЕ были установлены. Ардуина увиделась по USB и встала на СОМ15. Как и какой HEX в неё залить? Какой выбрать программатор в настройках CodeVisionAVR? Так же в наличии есть модули SD и micro-SD. Всё это потом хочу разместить на макетке вместе с разъёмом под ВВ55.
http://photo.qip.ru/photo/softfelix/3673743/xlarge/110513902.jpg (http://photo.qip.ru/users/softfelix/3673743/110513902/)
andykarpov
21.05.2017, 00:51
Для Atmega328p есть готовый hex: https://github.com/andykarpov/radio-86rk-sdcard/blob/master/firmware/src/atmega328p/Exe/86rksd.hex
и исходники прошивки под этот камень: https://github.com/andykarpov/radio-86rk-sdcard/tree/master/firmware/src/atmega328p
SoftFelix
21.05.2017, 17:35
есть готовый hex
Я, наверное, тупой, но не понимаю, как скачать этот hex с ЭТОГО сайта?
- - - Добавлено - - -
p.s. Скачал. Оказывается, отдаётся только проект целиком в zip-архиве (https://github.com/andykarpov/radio-86rk-sdcard/archive/master.zip). А как залить hex в Ардуино по USB?
- - - Добавлено - - -
Нашёл. На этой (http://www.getchip.net/posts/104-proshivka-lyubogo-hex-fajjla-v-arduino-pri-pomoshhi-shtatnogo-zagruzchika-bootloader/) странице полнО простеньких загрузчиков.
У меня получилось сдампить все свои диски в образы, в формате (назвала его RDI), совместимым с эмулятором Emu80. Получился 31 образ. :tongue: Там, конечно, предостаточно копипасты и моих всяких древних проектов.
Теперь, можно приступить к новым открытиям. Открытия требуют экспериментов (с).
размер пробела между секторами зависит исключительно от временнОго промежутка между окончанием записи предыдущего и началом записи следующего. На сколько за это время успеет повернуться диск, такой и получится промежуток.
Не верю (с) Фома. :smile: Что при форматировании диска промежутки между секторами "плавающие". Да и неравномерное торможение процессора, почему оно влияет на небольшие структуры между "телами" секторов, но не затрагивает сами большие "тела". Во всяком случае, хотелось бы воочию убедится.
Наверное, надо писать программу, отключающую экран и читающую трек целиком прямо с контроллера FDD?
Саму программу SDCOPY, и что то полезное с дисков, я опубликую после полной уверенности в формате образа.
~
В ожидании платок с Украины (https://github.com/andykarpov/radio-86rk-sdcard), которые застряли на питерском терминале, я занялась чудовищным варварством.
Выпаиванием разъема SD карты вот из таких дешевых китайских модулей.
https://robom.ru/img-medium/d6be993c993a001ad081c40a8fca7792/modul-sd-karty.jpg
Первый подопытный (после демонтажа всех smd компонентов) весело треснул под струей термофена в 320 градусов, и откуда то из его недр выпрыгнула пружинка. :v2_dizzy_botan:
Оказалось, что внутренняя начинка вся из пластика. Второй, удалось демонтировать неповрежденным, а потом модули кончились. )))
Может, есть какой то другой способ добыть эту деталь быстро и так же дешево, но не знаю.
cy6, оригинальные диски из поставки контроллера тоже? Страсть как интересно, что на них. (Просьба продублировать в теме про КНГМД)
Наверное, надо писать программу, отключающую экран и читающую трек целиком прямо с контроллера FDD
Итак, первые результаты дампера трека на SD карту.
Разрушаем легенду о "плавающем секторе".
Размер секторов вместе со служебными заголовками фиксированный. Расстояние между метками EA-D3 и DD-F3 всегда 16 + 3 байта.
EA D3 TT SS KK 00 00 00 00 00 06 06 06 06 06 0D 00 00 00 00 00 DD F3
Обратите внимание на недокументированый в журнале байт OD между синхробайтами и нулевым разделителем. Он есть в коде программы FORMAT и в образцах дампа.
Пытливый ум возможно задается вопросом, почему значение байта 0Dh, что за сакральное значение?
Все просто, двоичная версия 1101b, это управляющая команда для DD1, PC6 (110b) = 1, или отключение схемы формирования синхробайта. Оно было занесено в регистр A за мгновение до, и зачем то разработчик программы форматирования выводит на диск, после вывода в регистр управления DD1. (см. исходники команды FORMAT).
Размер трека плавающий, и никогда не будет составлять расчетные 3125 байт, так как скорость вращения необязательно 300 об/мин.
На моем дисководе размер трека составил 3090 байт, это 303 об/мин. Это допустимое отклонение скорости вращение в большую сторону от эталона (300 об/мин), но может быть и в меньшую. В последнем случае, размер трека превысит 3125 байт.
Дисковая операционная система Радио-86РК предусматривает плавающий размер трека, и потому занимает лишь ту его часть, которая в пределах допустимого отклонения вращения. Размер трека всегда меньше 3090 байт (чуть позже подробно о размере всего сектора, с образцами).
Остаток трека (после вывода пяти секторов 00-03-01-04-02 и разделителей между ними) РК ДОС просто не пишет, оставляя кусок до индексной отметки.
Разрушаем легенду о "плавающем секторе".
Проверьте на нескольких разных дисководах.
Проверьте на нескольких разных дисководах.
А что должно изменится, кроме скорости вращения (и "длины" трека, как следствие)?
Обнаружила вчера забавный баг (ну или вынос системы). Попробуйте записать кусок сектора с разметкой на сам диск. I/O ERR. :v2_dizzy_biggrin2:
Кстати, в этой теме много писанины, но мало готовых решений для работы с SD картой.
Может выложить готовый api с демо програмкой (asm) по записи файла, комплект быстрой разработки. Есть заинтересованные?
А что должно изменится, кроме скорости вращения
Ну да, тут я не прав. Честно говоря, то я уже точно не помню. Забыл я уже, давно делал. Если это так принципиально, то готов написать format, который делает валидный диск с другим промежутком между секторами.
А размер трека в эмуляторе выбран условно максимальным, для условного дисковода. В теории можно сделать дисковод, который вращается со скоростью 290 оборотов в минуту, трек у него будет длиннее, и наоборот...
Может выложить готовый api с демо програмкой (asm) по записи файла, комплект быстрой разработки. Есть заинтересованные?
Конечно, выкладывать. Я, например, заинтересованный - хотя до сих пор не сподобился собрать SD-контроллер.
SoftFelix
20.06.2017, 22:03
Всем привет.
В папке \firmware\src\atmega328p\Exe\ есть 86rksd.hex - с ним всё понятно - шьём во FLASH, а для чего в этой же папке есть файл 86rksd.rom ??? Он внутри текстовый. Это же не для прошивки в EEPROM?
для чего в этой же папке есть файл 86rksd.rom
86rksd.hex и 86rksd.rom содержат одни и те же данные. Просто разный формат записи прошивки в файл, для разных программаторов, возможно.
Уже спаяли платку? :)
SoftFelix
20.06.2017, 23:39
86rksd.hex и 86rksd.rom содержат одни и те же данные. Просто разный формат записи прошивки в файл, для разных программаторов, возможно.
Вот теперь понятно!
Уже спаяли платку?
Да. Большую часть деталей "сдул" строительным феном (грел обратную сторону платы) с Arduino Mini (https://ru.aliexpress.com/item/Free-Shipping-New-Atmega328-5v-Version-Pro-Mini-Module-16M-For-Arduino-Compatible/32531864275.html) (она всё-таки пришла спустя 4 месяца!) и адаптера SD (https://ru.aliexpress.com/item/Free-Shipping-Smart-Electronics-Reading-and-Writing-Module-SD-Card-Module-Slot-Socket-Reader-ARM-MCU/32498803667.html) для этих же Arduino. С платы Arduino взял Atmega328p и два танталовых электролита 10мкФ х 16В. С платы SD-адаптера взял слот и стабилизатор на 3.3В. 4050 "сдул" с какой-то платы от МФУ Samsung.
Получилось вот так.
http://photo.qip.ru/photo/softfelix/4250329/large/110596742.jpg (http://photo.qip.ru/users/softfelix/4250329/110596742/)
НО! Сделал одну ошибку при переносе Атмеги! УжЕ догадались какую? :) Т.е. я всё собрал, подключаю программатор (https://ru.aliexpress.com/item/USBasp-USB-ISP-3-3V-5V-AVR-Programmer-USB-ATMEGA8-ATMEGA128-New-10PIN-Wire-Support-Win7/32536193605.html) к ISP через переходник (https://ru.aliexpress.com/item/C18-10Pin-Convert-To-Standard-6-Pin-Adapter-Board-For-ATMEL-STK500-USBASP-AVRISP/32667090236.html), а программатор не видит МК... Правильно! МК надо было перешить дефолтными фьюзами, пока он был на платке Arduino с подключенным кварцем!
Пришлось городить кварц (16МГц) на разъёмах и двух конденсаторов (24 пФ). Хорошо, что ноги 7-8 МК выведены без обвязки на разъём к ВВ55 (справа вверху на фото). Внизу платы доноры.
http://photo.qip.ru/photo/softfelix/4250329/large/110596741.jpg (http://photo.qip.ru/users/softfelix/4250329/110596741/)
Программу-программатор для avrasp использовал AVRdudeProg v3.3 (http://www.yourdevice.net/proekty/avrdude-prog). С кварцем МК моментально определился. Выставил дефлтные фьюзы, убрал галку с CKDIV8 и прошил их. После этого МК нормально заработал без кварца. Окончательные фьюзы получились такие.
http://photo.qip.ru/photo/softfelix/4250329/xlarge/110596743.jpg (http://photo.qip.ru/users/softfelix/4250329/110596743/)
Потом залил \firmware\src\atmega328p\Exe\86rksd.hex. И платка тут же замигала светодиодиком! Отформатировал SD под FAT32 записал на неё всё из каталога SDCARD. Теперь при установленной карте и подаче питания, светодиод зажигается на 1 сек. и гаснет. К своему РК (http://zx-pk.ru/threads/21290-sborka-radio-86rk-sram.html?p=662357&viewfull=1#post662357) пока не подключал - надо сделать шлейф. Завтра этим займусь.
SoftFelix
21.06.2017, 22:36
На удивление, всё заработало с первого раза. И очень стабильно.
http://photo.qip.ru/photo/softfelix/4250329/large/110597842.jpg (http://photo.qip.ru/users/softfelix/4250329/110597842/)
http://photo.qip.ru/photo/softfelix/4250329/large/110597841.jpg (http://photo.qip.ru/users/softfelix/4250329/110597841/)
http://photo.qip.ru/photo/softfelix/4250329/large/110597840.jpg (http://photo.qip.ru/users/softfelix/4250329/110597840/)
Хотелось бы отметить, что при повторении данного девайса, столкнулся с крайне скудной информацией по программированию Атмеги (фьюзы, какая прошивка последняя для РК), какие именно версии файлов для РК нужны в BOOT, и, собственно, как работать с девайсом (только тут случайно выудил, что нужно R0,100; G. а я, наивный, пытался через U...). Всю инфу собирал по крупицам в этой теме. Думаю, это связано с тем, что автор (vinxru) почему-то удалил везде всю информацию о своей разработке и перестал появляться в данном форуме. К большому сожалению.
А есть оболочка для сабжа, где управление сделано стрелками (курсором), а не QAOP?
andykarpov
21.06.2017, 23:03
А есть оболочка для сабжа, где управление сделано стрелками (курсором), а не QAOP?
По-идее, авторские оригинальные версии shell.rk для разных компов, включая РК86, лежат в виде архива тут: https://github.com/andykarpov/radio-86rk-sdcard/tree/master/firmware/src/orig
- - - Добавлено - - -
и тут у автора в новом git: https://github.com/alemorf/retro/tree/master/radio_86rk-sd_controller/Радио%2086РК/Записать%20на%20флешку/BOOT
marinovsoft
23.10.2017, 19:35
Всем привет.
Собрал SD-контроллер для Апогей БК01Ц. Не взлетел.
Читаю R0,100, потом проверяю прочитанное D0,100.
должно быть
0E 00 CD 69 00 C3 17 00 23 36 20 36 00 2B 7E C9
CF FE 41 CA 10 00 C9 2C 36 00 36 44 36 40 36 00
читается
0E 00 CD 69 0E 00 CD 69 0E 00 CD 69 00 2B 7E C9
CF FE 41 CA CF FE 41 CA CF FE 41 CA 36 40 36 00
и так далее, в чем ошибка?
SoftFelix
23.10.2017, 21:41
Собрал SD-контроллер для Апогей БК01Ц. Не взлетел.
Показал бы фото монтажа, комплектующих. Что как и куда шил.
и так далее, в чем ошибка?
Кто-то ужЕ отписывал про нечто подобное, но в упор не помню где.
Монтаж проверял? Атмега прошита правильно? Точно задан внутренний генератор на 8МГц? 3.3В на плате есть?
SergeyLLL
23.10.2017, 22:12
Я собрал такой контроллер, на макетке, вопросов по сборке, прошивке вообще не возникло. По началу я не правильно соединил контроллер с 86РК, и он не заработал. Потом все исправил и все работает отлично!
У меня вопрос, может кто знает:
Может ли этот контроллер сохранять мои файлы?
Или по другому:
Я написал что либо, например на ассемблере, набрал на клавиатуре. Как это все сохранить на этом контроллере?
andykarpov
23.10.2017, 22:13
Кто-то ужЕ отписывал про нечто подобное, но в упор не помню где.
Я описывал подобную фигню (http://zx-pk.ru/threads/24092-sd-kontroller-ot-vinxru.html?p=752405&viewfull=1#post752405), виной всему был кривой шлейф (http://zx-pk.ru/threads/24092-sd-kontroller-ot-vinxru.html?p=752540&viewfull=1#post752540) :)
SoftFelix
23.10.2017, 22:24
Я описывал подобную фигню, виной всему был кривой шлейф
О, точно!
marinovsoft
24.10.2017, 04:32
Показал бы фото монтажа, комплектующих. Что как и куда шил.
Что ожидается увидеть на фото?
Монтаж проверял? Атмега прошита правильно? Точно задан внутренний генератор на 8МГц? 3.3В на плате есть?
командная строка для прошивки, сама прошивка https://github.com/alemorf/retro/blob/master/radio_86rk-sd_controller/%D0%98%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D 0%B8%20%D0%B8%20%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0% B2%D0%BA%D0%B0%20%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0 %BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0/Exe/86rksd.hex
..\avrdude -Pcom1 -b 19200 -p atmega8 -c siprog -U flash:w:86rksd.hex -U lfuse:w:0xE4:m -U hfuse:w:0xD9:m
содержимое sd
https://github.com/alemorf/retro/tree/master/radio_86rk-sd_controller/%D0%90%D0%BF%D0%BE%D0%B3%D0%B5%D0%B9/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C%2 0%D0%BD%D0%B0%20%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D1% 83
"Кривой шлейф" исключен в виду отсутствия как такового.
3.3 есть, получается из 5.0 с помощью стабилизатора 1117.
https://thumb.ibb.co/iLsg6R/DSCN8079.jpg (https://ibb.co/iLsg6R)
https://thumb.ibb.co/hWi4RR/DSCN8081.jpg (https://ibb.co/hWi4RR)
SoftFelix
24.10.2017, 08:59
Что ожидается увидеть на фото?
Теперь хотя бы то, что сабж собран на самодельной ЛУТ-плате. Минувшим летом тут активно собирали сабжи на очередной партии заводских плат. А на них, при исправных деталях, монтаже и прошивке, всё работает сразу после включения питания.
lfuse:w:0xE4:m -U hfuse:w:0xD9
У меня получилось Е2 и D9 (http://zx-pk.ru/threads/24092-sd-kontroller-ot-vinxru.html?p=917178&viewfull=1#post917178).
marinovsoft
24.10.2017, 09:19
У меня atmega8, знание, какие фьюзы должны быть на atmega328 мне ничем не поможет.
http://www.spetsialist-mx.ru/schemes/Atmega8_fuses.png
SoftFelix
24.10.2017, 09:26
"Кривой шлейф" исключен в виду отсутствия как такового.
Тогда только монтаж (залипоны, неотмытый флюс, номиналы деталей).
marinovsoft
24.10.2017, 09:34
Сможете объяснить как неотмытый флюс и отличающиеся номиналы деталей дают такое поведение:
должно быть
0E 00 CD 69 00 C3 17 00 23 36 20 36 00 2B 7E C9
CF FE 41 CA 10 00 C9 2C 36 00 36 44 36 40 36 00
читается
0E 00 CD 69 0E 00 CD 69 0E 00 CD 69 00 2B 7E C9
CF FE 41 CA CF FE 41 CA CF FE 41 CA 36 40 36 00
SoftFelix
24.10.2017, 09:49
Сможете объяснить как неотмытый флюс
Утечка между соседними контактами.
marinovsoft
24.10.2017, 09:56
Какого на какой?
HardWareMan
24.10.2017, 10:12
0E 00 CD 69 | 0E 00 CD 69 | 0E 00 CD 69 | 00 2B 7E C9
CF FE 41 CA | CF FE 41 CA | CF FE 41 CA | 36 40 36 00
Судя по характеру повторений, это замыкание между A2 и A3 (при счете от A0), которые складываются по монтажному И. Присмотритесь: 3 повторения а потом правильные данные (когда оба A2=A3=1).
marinovsoft
24.10.2017, 10:59
А вот это проверю.
marinovsoft
24.10.2017, 15:42
100% попадание. Замыкание было на печатной плате компьютера.
http://thumb.ibb.co/idSPbR/DSCN8084_1.png (http://ibb.co/idSPbR)
andykarpov
24.10.2017, 15:48
100% попадание. Замыкание было на печатной плате компьютера.
Вот это квест! )))
marinovsoft
24.10.2017, 18:47
Во вложении схема, печатка в формате Eagle 7 (слой top показан условно, в реальности он сделан МГТФ-ом), модифицированная прошивка (отличается от оригинальной тем, что светодиод перенесен на другой вывод порта). Фото можно увидеть здесь
http://zx-pk.ru/threads/24092-sd-kontroller-ot-vinxru.html?p=933600&viewfull=1#post933600
shurik-ua
24.10.2017, 23:13
HardWareMan снял порчу на расстоянии )
Vladimir_S
25.10.2017, 07:05
HardWareMan снял порчу на расстоянии
Опыт, его же не пропьешь.
CodeMaster
25.10.2017, 08:51
HardWareMan снял порчу на расстоянии )
"Привороты, снятие порчи по фотографии" ждём HardWareMan'а на битве экстрасексов ;-)
HardWareMan
25.10.2017, 11:43
CodeMaster, экстрасекс я еще не освоил. Увы. Ремонт по телефону делал, диагностирование по фотографии тоже. Да и вот, диагностирование по тексту тоже сработало, но вот экстрасекс увы, не дается. (:
Vladimir_S
25.10.2017, 14:07
но вот экстрасекс увы, не дается. (:
держу пари, даже не пробовал.
HardWareMan
25.10.2017, 14:54
Vladimir_S,
http://otvet.imgsmail.ru/download/u_754ac5d888a427220ae8d91f70be5f2d_800.jpg
crackintosh
22.02.2018, 12:19
C FuseBit-ами полнй конфуз в теме. Поясню!
CKSEL3…0 = 0000 – Внешний тактовый сигнал;
CKSEL3…0 = 0010 – Внутренний тактовый генератор — частота 4 МГц;
CKSEL3…0 = 0100 – Внутренний тактовый генератор — частота 8 МГц;
CKSEL3…0 = 1101 – Внешний тактовый генератор — кварц частотой от 3 до 8 МГц;
CKSEL3…0 = 1111 – Внешний тактовый генератор — кварц частотой больше 8 МГц.
В программе указанна частота 8 Мгц. Значит у нас значение битов должно быть CKSEL3…0 = 0100
Но SoftFelix выставил биты CKSEL3…0 = 0010 что означает внутреннюю такт.частоту = 4Мгц.
http://zx-pk.ru/threads/24092-sd-kontroller-ot-vinxru.html?p=917178&viewfull=1#post917178
Как это у Вас заработало ???
SoftFelix
22.02.2018, 13:08
Как это у Вас заработало ???
Что здесь (http://www.engbedded.com/fusecalc/), что здесь (http://homes-smart.ru/fusecalc/?prog=avrstudio&part=ATmega328P) - всегда выходит D9 - E2. По умолчанию в данной АТМеге включён встроенный тактовый генератор на 8МГц с делителем на 8. Т.е. грузим фьюзы по умолчанию и только отключаем делитель на 8. Всё работает.
crackintosh
22.02.2018, 13:58
Теперь я понял. Очень важно правильно выставить FuseBit's для Atmega8A(L) и Atmega328Р. Они разные!!!!
Для Atmega8A(L):
Правильно Е4 D9: Внутренний RC генератор 8Мгц; Запуск 6СК+64мс; [СКSEL=0100, SUT=10]
Для Atmega328P:
Правильно Е2 D9: Внутренний RC генератор 8Мгц; Запуск PWRDWN/RESET 6СК/14CK+65мс; [СКSEL=0010, SUT=10]
SoftFelix, ваша картинка с фюзами ввела меня в заблуждение... придется перешивать.
Но LED мигает и на тактовой 2Мгц (так будет если прошить фюзами от 328-й) :) Так что будьте внимательны.
SoftFelix
22.02.2018, 14:27
Теперь я понял. Очень важно правильно выставить FuseBit's для Atmega8A(L) и Atmega328Р. Они разные!!!!
А при чём тут 8А? В сабже ведь 328-ая используется.
Для Atmega328P:
Правильно Е2 D9:
Так и получается.
SoftFelix, ваша картинка с фюзами ввела меня в заблуждение... придется перешивать.
Но LED мигает и на тактовой 2Мгц (так будет если прошить фюзами от 328-й) Так что будьте внимательны.
Ничего не понял... У меня же всё правильно для 328-ой...
crackintosh
22.02.2018, 15:23
В оригинале - Atmega8A(L). У меня тоже. Я искал фюзы для оригинальной версии. Наткнулся на вашу картинку... прошил.
Потом понял что неправильный набор фюзов прошил.
SoftFelix
22.02.2018, 16:03
Наткнулся на вашу картинку... прошил.
Потом понял что неправильный набор фюзов прошил.
Всё, разобрались: правильные фьюзы от 328-ой пытались использовать для 8-ой, к которой они не подходят.
crackintosh
22.02.2018, 16:24
Перепрошил. Теперь LED мигает в 4 раза быстрее :v2_dizzy_punk:
Помогите подружить SHELL для 86РК c Vga режимом с этой темы http://zx-pk.ru/threads/13148-radio-rk-86-kompyuter-s-protsessorom-1821vm85/page13.html
sasa1965
31.03.2019, 21:24
У меня тоже не работает!
fedorov.police80
04.06.2019, 22:26
Я тут очень заинтересовался разработкой 86RKSD от vinxru и решил запилить платку, которую можно будет воткнуть шлейфиком в разъем Radio-86RK_SRAM. Детали проекта с моей версией платки тут: https://github.com/andykarpov/radio-86rk-sdcard
Из плюшек / отличий:
1) вместо делителей для согласования уровней 5В <-> 3.3В используется 74HC4050D
2) для получения 3.3В вместо диодов используется LDO преобразователь LM1117 3.3
3) есть 6-контактный разъем для программатора
4) для подключения к Radio-86RK_SRAM используется 26-контактный угловой разъем
Платка получилась размером 5x5см, как раз вписывается в один из размеров для изготовления прототипов / мелких партий печатных плат, которые предлагают китайцы (iteadstudio, seeedstudio, dfrobot и другие).
Собранное устройство выглядит примерно так:
https://c2.staticflickr.com/8/7503/15748066262_4a058c6886.jpg
Попалась мне тут ваша плата. Вопрос. Распиновка системного разъёма есть? Как его к вв55 цеплять? Комп кр-03. Плату собрал прошил. Файлы для sd карты Алексея Морозова подойдут?
Спасибо
andykarpov
04.06.2019, 23:36
Распиновка системного разъёма есть? Как его к вв55 цеплять? Комп кр-03.
Так как платка была изначально задумана как раз под 86RK_SRAM, то и распиновку искать тут: http://radio86rk.pbworks.com/w/file/fetch/58468507/Radio-86RK-SRAM-SCH.pdf
Файлы для sd карты Алексея Морозова подойдут?
Конечно, ибо это его проект, схема та же, я всего лишь платку развел и с 3.3В уровнями чуток иначе решил вопрос.
fedorov.police80
05.06.2019, 00:21
Так как платка была изначально задумана как раз под 86RK_SRAM, то и распиновку искать тут: http://radio86rk.pbworks.com/w/file/fetch/58468507/Radio-86RK-SRAM-SCH.pdf
Конечно, ибо это его проект, схема та же, я всего лишь платку развел и с 3.3В уровнями чуток иначе решил вопрос.
Я такие схемы ну не очень понимаю, всю жизнь по советским гостам работал и работаю. Вы можете просто на фото платки нарисавать, какие пины с вашей платки идут на адреса, данные и питание?
Буду очень признателен.
andykarpov
05.06.2019, 14:07
Я такие схемы ну не очень понимаю, всю жизнь по советским гостам работал и работаю. Вы можете просто на фото платки нарисавать, какие пины с вашей платки идут на адреса, данные и питание?
Буду очень признателен.
Так понятней? :)
http://i.piccy_.info/i9/28176208d57df3a3ebae0be52c3633dd/1559733588/50906/1321596/Snymok_ekrana_ot_2019_06_05_14_11_31_800.jpg (http://piccy_.info/view3/13216520/fc2c86b12c2bf334a15b09d1884557d3/1200/)http://i.piccy_.info/a3/2019-06-05-11-19/i9-13216520/800x370-r/i.gif (http://i.piccy_.info/a3c/2019-06-05-11-19/i9-13216520/800x370-r)
ЗЫ: чтоб прочитать названия сигналов, нужно кликнуть на ссылку и открыть картинку в максимальном разрешении.
Обратите внимание, что линии A8-A15 вообще не используются. Их не надо никуда паять.
Загрузчик занимает не более 128 байт, даже 7 бит адреса достаточно, но используем восемь.
Итого, выбираем любые два порта ВВ55. Один под ША, другой под ШД.
По умолчанию, порт А это данные, а порт В - адрес.
У меня подгорел порт В, и я переделала загрузчик на работу с портом C.
Запускается контроллер последовательными директивами R и G.
А можно немного переделать монитор, и сделать директиву U без параметров. Включаете РК, набираете U, и сразу видите оболочку с SD карты.
Что я и сделала. Кому интересно "how to", пишите.
с 3.3В уровнями чуток иначе решил вопрос
Вот как раз на вашей платке, можно тоже воткнуть резисторы, вместо чипа согласования уровней. Паяются прямо на места, предназначенные для ножек микросхемы. :)
Так что, только два отличия от платы Алексея. Это расчет на производство (а не на ЛУТ), и компоненты smd.
Ах да, ну и разъем другой. Морозовский вариант сделан под переходник на Апогей.
Обе эти платы можно использовать на любой ПЭВМ, с интерфейсом ВВ55. Адаптировать нужно только программную часть (загрузчик, SDBIOS и оболочку).
У платки есть небольшой недостаток, держатель карты находится не на краю печатной платы.
Предполагается ведь, что это будет в закрытом корпусе. Доступ нужен только к держателю карты.
Можно вообще спроектировать держатель платки, чтобы был по дизайну как маленький дисковод.
Вот только не будет ли мешать углубленная позиция замене носителя (SD карты). Расстояние в 5мм не маленькое, при таких масштабах.
P. S. Судя по рисунку, ничто не мешает сдвинуть к краю держатель карты. Только видимо нужна программа, подходящая к исходникам (https://github.com/andykarpov/radio-86rk-sdcard).
cy6, how to по переделке монитора опубликуйте пожалуйста
Как сделать старт SD-BIOS автоматическим, по директиве монитора.
Исходные данные.
Имеем директиву U
CPI 055H ; U
JZ MF000
Которая стартует в адреса портов В/В контроллера НГМД, что нам совершенно не надо.
И имеем директиву R, для которой надо вручную вводить параметры.
Имеем, стартовый адрес загрузчика (boot.rk) 0h и длину, не превышающую 128 байт (0000 - 007F).
Задача.
По директиве U выполнить директиву R с параметрами 0,7F,0 ("R0,7F,0"), а также директиву G0.
Решение.
Чтобы сэкономить на команде старта, перемещаем блок старта в конец монитора, где по умолчанию неиспользуемые байты.
.DB 0FFH,0FFH
.END
После адреса 0FFFFh счетчик команд (регистр PC) автоматически становится 0.
Чтобы изыскать дополнительное место под вызов директивы R с параметрами, можно упаковать какие нибудь символьные данные, например, от директивы X.
Меняем вектор директивы U на адрес нашего кода.
CPI 055H ; U - загрузка SD vixru
JZ MV001
Параметры для директивы R, нужно внести в регистры: HL - адрес начала загрузки в ПЗУ (у нас 0), BC - адрес начала загрузки в ОЗУ (у нас 0) и DE - длина блока данных (у нас 007Fh).
ПЗУ (в нашем случае адаптер SD карты) подключается: порт А - шина данных, порт B - младший байт адреса и порт C - старший байт адреса.
В нашем случае, старший байт адреса всегда будет равен НУЛЮ, и на плате адаптера SD карты не используется.
Наш код в самом конце монитора (6 байт, вместо двух)
MV001:
LXI H,0000H
CALL MFA68z
; .DB 0FFH,0FFH
.END
Добавка (3 байта) в начало кода подпрограммы исполнения директивы R, родной адрес старта которой 0FA68h.
MFA68z: LXI D,007FH
MFA68:
Также, нужно обеспечить содержимое регистра BC (= 0). Для этого применяется немного "магии вуду" (или можно потратить еще три байта).
В мониторе, первой обрабатывается директива Х, в которой сохраняются все оригинальные значения регистров.
Второй обрабатывается наша директива U
CPI 058H ; X
JZ MFFD3
CPI 055H ; U
JZ MF000
Далее, идет блок кода, общий для всех остальных директив. После исполнения которого BC = 0 (адрес по умолчанию 0000h).
PUSH PSW
CALL MF92C
LHLD M762B
MOV C,L
MOV B,H
LHLD M7629
XCHG
LHLD M7627
POP PSW
Наша задача, сдвинуть директиву U под этот блок кода. И тогда, на нее тоже будет действовать правило адреса по умолчанию.
andykarpov
23.06.2019, 21:59
У платки есть небольшой недостаток, держатель карты находится не на краю печатной платы.
Предполагается ведь, что это будет в закрытом корпусе. Доступ нужен только к держателю карты.
Можно вообще спроектировать держатель платки, чтобы был по дизайну как маленький дисковод.
Вот только не будет ли мешать углубленная позиция замене носителя (SD карты). Расстояние в 5мм не маленькое, при таких масштабах.
P. S. Судя по рисунку, ничто не мешает сдвинуть к краю держатель карты. Только видимо нужна программа, подходящая к исходникам (https://github.com/andykarpov/radio-86rk-sdcard).
Если честно, то платка вообще разрабатывалась на скорую руку, автороутером :)
Вообще удивительно, что она работает, с нитками вместо линий питания :)))
Если кому-то надо, можно вообще переделать платку под microSD, сделать ее меньше раза в 1.5 так точно, с правильной разводкой и достаточным количеством крепежных отверстий :)
А исходники - под Autodesk Eagle, в любой современной бесплатной версии откроется и даст себя поредактировать :)
можно вообще переделать платку под microSD
Тогда обратная совместимость пропадет, большую карту не вставить.
Большой слот для карты в ноутбуках, это пока что стандарт.
У меня давно мысли, что на ней нужен RESET и часы реального времени. В коммандере, время стоит никакое, часы точно нужны.
И, естественно, мега328 на борт, вместо меги8.
А еще, можно сделать симуляцию ROM-диска. :)
andykarpov
28.06.2019, 19:33
Переразвел платку:
http://i.piccy_.info/i9/6fe4f9d1591868b7bb81c7e5c63612d7/1561740005/12529/1321596/1e1b3832_ab79_47d4_9b9b_353cb36e16d9_1_0_2_240.jpg (http://piccy_.info/view3/13256954/b490463ca24c85d832018121348218a4/)http://i.piccy_.info/a3/2019-06-28-16-40/i9-13256954/196x240-r/i.gif (http://i.piccy_.info/a3c/2019-06-28-16-40/i9-13256954/196x240-r)
http://i.piccy_.info/i9/16d42156dbcee08ef83bf2a78812ddb8/1561740030/7450/1321596/1e1b3832_ab79_47d4_9b9b_353cb36e16d9_2_0_2_240.jpg (http://piccy_.info/view3/13256956/85ca01d9dabe362e754e92c233b33f4d/)http://i.piccy_.info/a3/2019-06-28-16-40/i9-13256956/196x240-r/i.gif (http://i.piccy_.info/a3c/2019-06-28-16-40/i9-13256956/196x240-r)
Хоть РК-шки у меня уже нет, но может кому пригодится :)
Вроде дороги уже не нитками сделал, разводил ручками.
Герберы тут: 69406
Переразвел платку
Вы оба варианта держателей карт сделали. Шикарно :v2_thumb:
А под микрошу никто софт пока не правил?
- - - Добавлено - - -
Переразвел платку:
http://i.piccy_.info/i9/6fe4f9d1591868b7bb81c7e5c63612d7/1561740005/12529/1321596/1e1b3832_ab79_47d4_9b9b_353cb36e16d9_1_0_2_240.jpg (http://piccy_.info/view3/13256954/b490463ca24c85d832018121348218a4/)http://i.piccy_.info/a3/2019-06-28-16-40/i9-13256954/196x240-r/i.gif (http://i.piccy_.info/a3c/2019-06-28-16-40/i9-13256954/196x240-r)
http://i.piccy_.info/i9/16d42156dbcee08ef83bf2a78812ddb8/1561740030/7450/1321596/1e1b3832_ab79_47d4_9b9b_353cb36e16d9_2_0_2_240.jpg (http://piccy_.info/view3/13256956/85ca01d9dabe362e754e92c233b33f4d/)http://i.piccy_.info/a3/2019-06-28-16-40/i9-13256956/196x240-r/i.gif (http://i.piccy_.info/a3c/2019-06-28-16-40/i9-13256956/196x240-r)
Хоть РК-шки у меня уже нет, но может кому пригодится :)
Вроде дороги уже не нитками сделал, разводил ручками.
Герберы тут: 69406
А эта плата под какой чит 328P?
А под микрошу никто софт пока не правил?
под Микрошу саму Микрошу править надо, Монитор.
Разведу немного оффтоп, кто знает куда делся сам vinxru? Ни в ВК, ни сайт не пашет, даже гитхаб 404 дает
firerock
02.04.2021, 07:27
Ну, как раз гитхаб-то ещё живой, а остальные концы опять обрублены, да...
https://github.com/alemorf
под Микрошу саму Микрошу править надо, Монитор.
Монитор править не надо. Сама Микроша должна оставаться изначальной.
В разъем можно воткнуть ПЗУ и еще одну ВВ55. Загрузчик и все остальное можно туда и прописать. Единственное не явно sdbios и shell расчитаны ли на работу в ПЗУ, но если нет, то впринципе только загрузчиком можно ограничиться.
В разъем можно воткнуть ПЗУ и еще одну ВВ55. Загрузчик и все остальное можно туда и прописать. Единственное не явно sdbios и shell расчитаны ли на работу в ПЗУ, но если нет, то впринципе только загрузчиком можно ограничиться.
Смысл городить огороды, когда можно поправить Мон и всё, Микроша сохранит всю свою аутентичность, просто добавится директива и всё!
Впрочем дело хозяйское.
так в Микроше на разъеме вв55го все равно 5 вольт нету. Его не запитаешь подключившись только туда.
Разведу немного оффтоп, кто знает куда делся сам vinxru? Ни в ВК, ни сайт не пашет, даже гитхаб 404 дает
Работает неподалеку, если надо чего спросить, стучи мне в личку - передам
такой вопрос еще интересует, а почему в архиве две прошивки под контроллер atmega 8 одна
.hex 21 кб
вторая .rom 46 кб
в этой atmega разве есть столько места внутри ?
такой вопрос еще интересует, а почему в архиве две прошивки под контроллер atmega 8 одна
.hex 21 кб
вторая .rom 46 кб
в этой atmega разве есть столько места внутри ?
Конечно нет, там же адрес:значение
то есть там не просто дампы, как с ПЗУ, а еще а адресами? А зачем два файла? Под епром контроллера что ли ? Так он тоже слишком большой вроде.
andykarpov
02.04.2021, 14:17
А эта плата под какой чит 328P?
Плата под любой, в авторской прошивке - мега8, вот ее и ставьте :)
Мой порт под мегу328 - то был эксперимент больше, меги8 с головой хватает :)
Плата под любой, в авторской прошивке - мега8, вот ее и ставьте :)
Мой порт под мегу328 - то был эксперимент больше, меги8 с головой хватает :)
Мегу8 еще добыть надо у меня только 328 и 168 остались, 8-х даавно не видел
Есть меги 8, я купил пару штук правда в dip.
Ну, как раз гитхаб-то ещё живой, а остальные концы опять обрублены, да...
https://github.com/alemorf
Спокуха, система зависает и перегружается уже не первый раз, и бэкапы всего есть. :)
Я восстановила даже блог разработки этого чудного девайса.
Подключаем SD карту к Радио-86РК (https://vk.com/retropk?w=page-131665221_52740891)
Добрый день!
как все таки правильно выставить fuse на atmega8. И прошивка только flash, епрома там нету ?
- - - Добавлено - - -
p.s. а какого объема sd карту можно вообще использовать ?
спаял вот таким образом:
чего то пока не работает? Там sd карту какую надо? А у то у меня самая маленькая 16 гб, может с ней не идет и какой системой должна быть отформатирована ?
а у atmega8 не надо ничего там на массу через резисторы сажать? reset например ?
https://i.ibb.co/m6kqP36/IMG-20210421-184854.jpg
Насколько помнюю - надо FAT16 облизательно.
Большие SD можно, но лучше сделать на ней маленький раздел, 2Гб. Например.
переформатировал, но пока все равно не работает.
- - - Добавлено - - -
припаял светодиод, который был в схеме на pb0 после этого заработало, правда не ясно от него это или нет? сейчас попробую отключить посмотреть...
- - - Добавлено - - -
а следующее включение перестало, но светодиод теперь мигает достаточно быстро, что это значит ?
Serg6845
21.04.2021, 21:17
а у atmega8 не надо ничего там на массу через резисторы сажать? reset например ?
reset как раз неплохо бы к плюсу через резистор подтянуть. и еще длинные провода до флешки могут глюкодром вызвать...
судя по всему он все таки сам работает.
один раз запустился, но больше повторить не удалось.
когда мигает это флешку вообще не видит ? насколько я понял
с некоторыми sd картами удалось добиться, что сетодиод гаснет потом загарается и горит, но загрузчик оттуда все равно не считывается.
что вообще должно быть ? Должен мигнуть и погаснуть ?
- - - Добавлено - - -
провода отрезал, удалось запустить еще раз с другой sd картой на 128 гб, но отформатировал на 128 мб раздел фат 16. Посмотрим стабильно будет работать или нет...
- - - Добавлено - - -
не не работает ...
когда мигает это флешку вообще не видит ? насколько я понял
с некоторыми sd картами удалось добиться, что сетодиод гаснет потом загарается и горит, но загрузчик оттуда все равно не считывается.
что вообще должно быть ? Должен мигнуть и погаснуть ?
Даааааавноооо это было... :((
У меня был особый путь и голову морочил я дОльше. Если часто мигает, насколько помню, это он чего то не нашел... (сперва то у меня и мигать невкуда было :))
я в мониторе дамп загрузчика смотрел, что он прочел с sd-карты. У меня там "каша" была, но немного похожая на правду, через ВВ55 как то не так читалось...
вообщем интересный эффект. иногда она запускается, ну или сбросом atmeg можно запустить. но потом если запустил допустим какую то игру. то дальше даже выключив комп и потом включив запускается дос а потом через пару секунд эта игра и так далее... видимо пока sdкарту по новой не перепишешь. видать на ней что то меняется.
да после перезаписи карты запускается этот дос, но после запуска первой программы, потом сначала запускается дос, а через пару секунд она.
Kakos_nonos
22.04.2021, 20:15
У меня наоборот, на fat16 не запустилась, переформатировал на fat32 - запустилось.
надо попробовать, может лучше будет...
- - - Добавлено - - -
с fat32 работает, но таже фигня - одну игру запустишь. и потом она постоянна запускается через пару секунд после включения доса. Только sd карту стереть и по новой записать от этого помогает.
хмм, про ФАТ32 не знал, что работает. А если защиту от записи на SD включить, чтобы портить не пыталось ??
Serg6845
22.04.2021, 21:23
хмм, про ФАТ32 не знал, что работает. А если защиту от записи на SD включить, чтобы портить не пыталось ??
разочарую - ее там нет (защиты). там только флажок в корпусе, который нажимает (или не нажимает) на контакт в разъеме. что с этим контактом делать если он есть - решает девайс, в который воткнута карта.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot