PDA

Просмотр полной версии : SD-карты и контроллеры, реализации FAT



makbar
09.01.2018, 15:39
Идею я дернул отсюда,
хорошее замечание:

This code only provides the ability to access raw sectors. It does not implement a filesystem, such as FAT16 or FAT32 or even Linux romfs. If you want to access data stored by DOS/Windows, or store data that will be readable without special drivers... well, you'll have a lot of code to write! If your project is well funded, you could buy the filesystem code from a company such as US Software (now defunct).
Кто то тут грозился на раз-два реализовать MS FAT на Орионе?
А вы как организовываете доступ raw секторам?

Error404
09.01.2018, 16:47
хорошее замечание:

Кто то тут грозился на раз-два реализовать MS FAT на Орионе?
А вы как организовываете доступ raw секторам?

Уже есть такие проекты: FAT16 с адресацией CHS в ORDOS7 (http://zx-pk.ru/threads/28492-orion-arkhiv-mikhalovskogo-v-f.html) и есть портированная FATfs от ELM Chan с поддержкой FAT12/16/32, CHS/LBA (например в моем исполнении (https://github.com/serge-404/AltairDOS/tree/master/App/source/fat) или в ветке ATM в исполнении DimkaM {искать лень}), есть читалка FAT32 от b2m для РК86 и она же доработанная PVV в ветке для Специалиста.

Порты FATfs - наиболее полные по функционалу, т.к. поддерживают запись/чтение/создание/дозапись файлов и каталогов в т.ч. и с датами файлов, FAT всех типов (12/16/32) с поддержкой MBR-разделов, умеет создавать файловые системы FAT на голом диске/разделе. Но оно на С со всеми вытекающими.

Остальные - попроще (функционал урезан до FAT16+CHS) или существенно попроще (где реально пользовать только чтение, запись только "поверх" без изменения размера файла и без создания каких-либо структур в каталоге), но они на ассемблере и поэтому компактнее и быстрее (вариант от b2m/PVV вообще в 2 кб влезает, причем в коде 8080).

Низовые (RAW, 512байтные сектора) подпрограммы уже туда можно подложить на свой вкус, их тоже есть - и для IDE (ссылки в моем посте страницей ранее), и для SD (например тут в соседней теме SPI-контроллера), и для флоппи разных вариантов контроллеров. Всё есть, желания у людей уже нет что-то делать: повзрослели (если не сказать состарились). :)

- - - Добавлено - - -


Встречал на ALIexpress и SSD c PATA IDE (ноутбучный формфактор разъема на 44 пина) (https://ru.aliexpress.com/item/2014-Sale-Kingspec-2-5-44PIN-PATA-IDE-SSD-128GB-MLC-Solid-State-Disk-Flash-Drive/1906885604.html?ws_ab_test=searchweb0_0,searchweb2 01602_1_10152_10151_10065_10344_10068_10342_10343_ 10340_10341_10543_10084_10083_10613_10615_10307_10 614_10301_10059_10314_10534_100031_10604_10103_106 07_10606_10142_10125-10152,searchweb201603_6,ppcSwitch_4&algo_expid=c123ccc4-d010-4b5b-9ad8-eb1e431ae068-0&algo_pvid=c123ccc4-d010-4b5b-9ad8-eb1e431ae068&priceBeautifyAB=0), но ценник далек от гуманности: они раза в полтора дороже SATA SSD - минимум 1659,49 руб за 8GB (для сравнения SDHC флешка из Ашана/Глобуса на те же 8Гб будет стоить 200 рублей).

Еще вот такие есть (нам же емкость не критична): Disk On Modules (https://ru.aliexpress.com/item/128MB-DOM-40-PIN-40pins-IDE-interface-Disk-ON-Module-Flash-Disk-Industrial/32728072480.html?ws_ab_test=searchweb0_0,searchweb 201602_1_10152_10151_10065_10344_10068_10342_10343 _10340_10341_10543_10084_10083_10613_10615_10307_1 0614_10301_10059_10314_10534_100031_10604_10103_10 607_10606_10142_10125,searchweb201603_6,ppcSwitch_ 4&algo_expid=07811171-ad3c-4ab2-95ee-9d2b187b3efe-5&algo_pvid=07811171-ad3c-4ab2-95ee-9d2b187b3efe&priceBeautifyAB=0)
но получчается дороже чем CF+переходникIDE

ivagor
09.01.2018, 17:28
есть читалка FAT32 от b2m для РК86
Опс, как же я пропустил, что он до 32 доделал. Можно ссылку (я не смог найти)?

Denn
09.01.2018, 17:38
Всё есть, желания у людей уже нет что-то делать: повзрослели (если не сказать состарились).

Сие есть большая пичалька ((

Error404
09.01.2018, 18:08
Опс, как же я пропустил, что он до 32 доделал. Можно ссылку (я не смог найти)?

Конкретно тутошний дистриб от b2m я не помню где (я видел на nedopc - см. ниже поссылкам PVV), уже доделки от PVV можно посмотреть в этих сообщениях(отдельный тред он не делал, а зря ИМХО):
http://zx-pk.ru/threads/28485-rk-kngmd-dlya-quot-spetsialista-quot.html?p=938978&viewfull=1#post938978
http://zx-pk.ru/threads/19554-galaksiya-(plyus)-tekhnicheskij-razdel/page5.html?highlight=pvv


Код sd_dos открыт - http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&p=141316#p141316

У b2m я видел поддержку и FAT32, что оставил в своем проекте PVV я ХЗ (оно там на дефайнах отключается)

b2m
09.01.2018, 18:35
как же я пропустил, что он до 32 доделал
В моём коде на FAT32 стояла заглушка. Т.е. первый кластер прочитается (его номер в записи каталога), а последующих как бы нет. Там довольно скудная 32-битная арифметика реализована (чтобы посчитать номер сектора FAT и вытащить номер следующего кластера).
К тому-же, я исходил из того, что если имеем FAT32, то это большой диск, и скорее всего размер кластера не менее 16Кб, а для РК-шки мало программ больше 16Кб. ;)
Хотя может PVV уже доделал. Основная проблема в моём коде - упрощённая инициализация SD карты, у Error404 есть получше код для работы с SD.

ivagor
09.01.2018, 19:50
Хотя может PVV уже доделал.
Нет, не доделал.

Error404, спасибо за ссылки, их я находил, увидел ту же заглушку, что у b2mа и поэтому поинтересовался.

А я уже раскатал губу, что смогу заменить в проектах, где использовал читалку b2mа на новый вариант. Хотя я согласен, что мало смысла в FAT32 без поддержки SDHC

- - - Добавлено - - -

Злостный оффтоп - читалка b2ma + z-controller (украл из проекта какого-то спека) - это весьма быстро (речь про ПЛИСовые девборды, типа DE1 и т.п.).

- - - Добавлено - - -


у Error404 есть получше код для работы с SD
У Errora404 все круто, но на C. Если я правильно понял, то взять и откомпилировать можно под z80 с использованием Hitech C compiler v3.09. И получится FAT.COM 40 Кб.
А хотелось бы под 8080 и покомпактнее.

Error404
10.01.2018, 09:16
В моём коде на FAT32 стояла заглушка. Т.е. первый кластер прочитается (его номер в записи каталога), а последующих как бы нет. Там довольно скудная 32-битная арифметика реализована (чтобы посчитать номер сектора FAT и вытащить номер следующего кластера).
К тому-же, я исходил из того, что если имеем FAT32, то это большой диск, и скорее всего размер кластера не менее 16Кб, а для РК-шки мало программ больше 16Кб. ;)
Хотя может PVV уже доделал. Основная проблема в моём коде - упрощённая инициализация SD карты, у Error404 есть получше код для работы с SD.


Нет, не доделал.

Error404, спасибо за ссылки, их я находил, увидел ту же заглушку, что у b2mа и поэтому поинтересовался.

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


Так что именно не сделано? Поддержка кластеров разного размера? На каких картах это проявится, на маленьких но отформатировнных в FAT32? Я ознакомился с sdOS b2m/PVV по диагонали, вроде отложилось в памяти что для FAT32 там что-то сделано.



Хотя я согласен, что мало смысла в FAT32 без поддержки SDHC

- - - Добавлено - - -

Злостный оффтоп - читалка b2ma + z-controller (украл из проекта какого-то спека) - это весьма быстро (речь про ПЛИСовые девборды, типа DE1 и т.п.).

- - - Добавлено - - -


У Errora404 все круто, но на C. Если я правильно понял, то взять и откомпилировать можно под z80 с использованием Hitech C compiler v3.09. И получится FAT.COM 40 Кб.
А хотелось бы под 8080 и покомпактнее.

b2m тут подразумевал не тот мой проект на C (кода FAT там 20 кб, остальное - интерфейс: командный и панельный, хотя соглашусь: 20 кб тоже много), а доработанные низовые подпрограммы инициализации карты и чтения/записи 512б блока с как раз таки поддержкой SDHC объемом до 32Gb вот отсюда (http://zx-pk.ru/threads/27393-spi-kontroller-dlya-oriona-na-diskretnykh-is.html?p=940066&viewfull=1#post940066) (а в первом посте той темы контроллер проверить который в работе никак не доходят руки и который будет не медленнее проектов на ПЛИС или Z-контроллера, впрочем как и контроллер от PVV у которого он чуть посложнее)

ivagor
10.01.2018, 09:51
Так что именно не сделано?

В моём коде на FAT32 стояла заглушка. Т.е. первый кластер прочитается (его номер в записи каталога), а последующих как бы нет.

Спасибо за ссылку (http://zx-pk.ru/threads/27393-spi-kontroller-dlya-oriona-na-diskretnykh-is.html?p=940066&viewfull=1#post940066). Может соберусь перетащить инициализацию в xsd. К этому бы еще FAT32 для 8080 приемлемого размера.
В принципе я давно качал что-то спековское с инициализацией SDHC и вроде даже FAT32. Но скачал и даже не разбирался. Тем более еще надо в 8080 переводить.

Error404
10.01.2018, 10:19
первый кластер прочитается (его номер в записи каталога), а последующих как бы нет.


А, теперь понял откуда растет упомянутое ограничение в 16кб. А для FAT16 сделано всё? Тогда в чем проблема, там же как я понимаю принцип одинаковый, только разрядность адресации кластеров увличена с 16 до 32 бит? Надо доделывать, коллеги.

PVV
10.01.2018, 22:27
Тк sdOS здесь упоминалась, вставлю свои пять копеек, хотя это здесь offtop.
Мои доработки sd_dos от b2m шли по двум направлениям, не считая доработки под 'железную' реализацию sd интерфейса.
Первое это доработка командного интерфейса - под нужный мне ПК (изначально из РК-86 в Специалист/МХ, сейчас и другие ПК), - а так как мне хотелось не только запускать программы, но и загружать данные по нужным адресам без запуска (например прошивку ПЗУ для программатора) то я ввел команду чтения файла (R файл,...) в виде данных с указанием по какому адресу и сколько их сложить. Здесь возникло желание таким же образом данные сохранить(прочитанную программатором ПЗУ), что и было сделано, и чтение (R) превратилось в запись (W файл,...) только сектор надо было теперь не читать, а писать, и здесь переход ко второму направлению.
Второе направление - работа с файловой системой и носителем данных. Добавление функции записи сектора с выполнением всех предшествующих этой записи действий по поиску требуемого файла и кластеров\секторов, которые этот файл занимает. В последствии, в целях экономии около полу сотни байт я исключил из кода поддержку FAT12(можно вернуть через define), оставив только FAT16, посчитав, что в реале карты меньше 32МБ врядли кто будет использовать.
А вот FAT32 изначально у b2m не реализована, и, как по мне, это правильно, найдется ли для наших 8 битных ПК ПО с сумарным объемом более 2ГБ? Что же до карт размером более 2ГБ, то кто мешает создать на них раздел не более 2ГБ и отформатировать его в FAT16?

еще больший offtop:
у меня давно крутится идея навеянная этим http://www.nedopc.org/forum/viewtopic.php?f=90&t=11548 только не копировать образ диска в отдельную память, а работать с файлами образов на самой SD карте, выполняя 'монтирование' этих образов в виде или сохранения двухбайтового указателя в ОЗУ ПК на первый сектор данных образа(при условии непрерывности файла, те отсутствия его фрагментации, что вполне можно обеспечить) или, сложнее, если файл допускает фрагментацию, то сохранения всех занимаемых им кластеров( а цепочка кластеров для файла образа диска в 800КБ, при кластере в 16КБ займет 100 байт ОЗУ ПК). Ну и соответствующим образом нужно доработать процедуры работы с такой 'виртуальной' дискетой хоть CP/M, хоть любой другой ОС, работающей с реальным дисководом... работать с таким образом, естественно, можно в режиме R/W.
Если у кого есть к этому интерес, то надо создать новый топик и это обсудить, только я не знаю в каком разделе...

ivagor
11.01.2018, 08:30
Что же до карт размером более 2ГБ, то кто мешает создать на них раздел не более 2ГБ и отформатировать его в FAT16?
Даже если отформатировать SDHC (а "старых" карт объемом >2 Гб, насколько я знаю, не бывает) в FAT16 на 2 или 1 Гб, xsd ведь все равно не сможет с ней работать. Давно не интересовался, продаются ли еще "старые" SD, наверно продаются, но задача поддержки SDHC все равно актуальна.


найдется ли для наших 8 битных ПК ПО с сумарным объемом более 2ГБ?
Почему обязательно для наших? Карта может использоваться сразу для нескольких компьютеров.
Или наоборот, если независимо от объема данных на каждый компьютер (или семейство) выделять свою карту, то в наличии может не оказаться достаточно карт "старого образца", и при наличии SDHC не очень бы хотелось докупать еще старые карты.

Наверно это оффтоп, но перечислю пожелания к xsd в порядке убывания важности (для меня):
1. Поддержка SDHC
2. Поддержка FAT32
3. Поддержка фрагментированных файлов

PVV
11.01.2018, 09:13
Даже если отформатировать SDHC (а "старых" карт объемом >2 Гб, насколько я знаю, не бывает) в FAT16 на 2 или 1 Гб, xsd ведь все равно не сможет с ней работать. Давно не интересовался, продаются ли еще "старые" SD, наверно продаются, но задача поддержки SDHC все равно актуальна.

как так не сможет работать?На али продается SD на 4ГБ старого типа, я себе такую купил. Вопрос поддержки SDHC лишь вопрос доработки функции init при инициализации карты, Error404 провел эксперименты с несколькими картами разных производителей, и выложил наработки, интегрировать эти наработки в существующий код достаточно легко.


Наверно это оффтоп, но перечислю пожелания к xsd в порядке убывания важности (для меня):
1. Поддержка SDHC
2. Поддержка FAT32
3. Поддержка фрагментированных файлов
1 - надо потратить 30 минут времени и будет, кто займется тестированием?
2 - сделать можно, но не вижу смысла, а код из текущего в 2КБ вырастет до 4х, как минимум, заниматься не хочу.
3 - а разве есть эта проблема? все поддерживается.

ivagor
11.01.2018, 09:20
как так не сможет работать?На али продается SD на 4ГБ старого типа, я себе такую купил.
Да, ошибся (у меня самого таких карт нет), SD 1.1 м.б. до 4 Гб. Сам я такие карты сейчас уже покупать не буду, но это мои проблемы.


Вопрос поддержки SDHC лишь вопрос доработки функции init при инициализации карты, Error404 провел эксперименты с несколькими картами разных производителей, и выложил наработки, интегрировать эти наработки в существующий код достаточно легко.

Спасибо за ссылку. Может соберусь перетащить инициализацию в xsd.

Error404
11.01.2018, 13:57
как так не сможет работать?На али продается SD на 4ГБ старого типа, я себе такую купил. Вопрос поддержки SDHC лишь вопрос доработки функции init при инициализации карты, Error404 провел эксперименты с несколькими картами разных производителей, и выложил наработки, интегрировать эти наработки в существующий код достаточно легко.


Там два места: init и позиционирование (это уже проще поправить). В картах MMC и SDC позиционирование осуществляется с точностью до байта (и поэтому 32-битной адресации хватает только на 4Gb), а в картах SDHC - c точностью до сектора (который не менее 512 байт), поэтому того же 32-битного адреса хватает адресовать до 2Тб. В коде это выражается в том, что при ините карты надо определить и запомнить ее тип (SDC/SDHC), и позже при каждом позиционировании в случае SDC номер LBA умножать на 512 (т.е. адресоваться до байта), а в случае SDHC с ним ничего не делать т.е. после инита размер блока у SDHC равен 512 байт (это все есть в моем драйвере).



1 - надо потратить 30 минут времени и будет, кто займется тестированием?


Я бы потестировал, карточек в ассортименте есть. Просьба:
- аппаратнозависмые части (терминальный ввод/вывод, обращение к процедурам OC или ROMBIOS) вынести в одно место и/или ограничить IF <platform> {code1} ELSE {code2} <ENDIF> (ибо буду тестировать на Орионе и это придется адаптировать)
- процедуры байтового обращения к SD(SPI)-контроллеру (SD_PUT, SD_GET, SD_WIGGLE, SD_FINI), которые правятся при использовании прочих схем контроллеров, тоже вынести в одно место и/или ограничить IF <controller> {code1} ELSE {code2} <ENDIF> (ибо буду тестировать скорее всего на простейшей схеме "N8VEM" - других так и не спаял пока)

- - - Добавлено - - -



- процедуры байтового обращения к SD(SPI)-контроллеру (SD_PUT, SD_GET, SD_WIGGLE, SD_FINI), которые правятся при использовании прочих схем контроллеров, тоже вынести в одно место и/или ограничить IF <controller> {code1} ELSE {code2} <ENDIF>


Или как вариант, вот тут (http://zx-pk.ru/threads/17329-tekh-razdel-orion-128-reviziya-512.html?p=838469#post838469) мы помнится обсуждали как использовать разные схемы контроллеров, там это делалось методом добавления в код драйверов для всех схем и применения кернали вызовов, которая правилась на конкретную схему при инициализации (получался автодетект схемы). Но этот способ конечно более ресурсоемкий.

- - - Добавлено - - -

как думаете, не надо ли отцепить сообщения по SD/FAT в отдельную тему?

- - - Добавлено - - -



у меня давно крутится идея навеянная этим http://www.nedopc.org/forum/viewtopic.php?f=90&t=11548 только не копировать образ диска в отдельную память, а работать с файлами образов на самой SD карте, выполняя 'монтирование' этих образов в виде или сохранения двухбайтового указателя в ОЗУ ПК на первый сектор данных образа(при условии непрерывности файла, те отсутствия его фрагментации, что вполне можно обеспечить) или, сложнее, если файл допускает фрагментацию, то сохранения всех занимаемых им кластеров( а цепочка кластеров для файла образа диска в 800КБ, при кластере в 16КБ займет 100 байт ОЗУ ПК). Ну и соответствующим образом нужно доработать процедуры работы с такой 'виртуальной' дискетой хоть CP/M, хоть любой другой ОС, работающей с реальным дисководом... работать с таким образом, естественно, можно в режиме R/W.


Да, тоже такую идею давно обдумываю. В этом случае в файловой системе FAT можно хранить несколько образов ODI и их монтировать. Трудности реализации вижу такие: файлы могут быть фрагментированы, и в то же время позиционирование должно быть быстрым, а процедура "пробегания" по цепочке кластеров д отребуемого зная только начальный из них - медленная. Поэтому при монтировании образа надо в орионовской операционке сохранять все кластеры принадлежащие этому файлу. Тогда позиционирование на произвольный секотор орионовской ОС будет выполняться в 2 простых действия с массивами (для больших фалов образов {а ограничиваться размером в 800к совсем не хочется} разница по скорости будет на порядок). Но тут придется и разный размер кластеров FAT учесть (в разделах разного размера) и может чего то еще.

b2m
11.01.2018, 15:52
надо в орионовской операционке сохранять все кластеры принадлежащие этому файлу
...
для больших фалов образов {а ограничиваться размером в 800к совсем не хочется}
А если кластер будет 4Кб то даже при минимальном файле 800к это 200 номеров, а в случае FAT32 аж по 4 байта (можно кстати заранее посчитать номер сектора и хранить его, а не номер кластера). Не жалко 800 байт драгоценной памяти ради поддержки фрагментированных файлов?

- - - Добавлено - - -


тоже такую идею давно обдумываю
Кстати, подобная идея (без поддержки фрагментированных файлов) используется у меня в проекте Башкирии-2м для DE1.

Error404
11.01.2018, 17:13
А если кластер будет 4Кб то даже при минимальном файле 800к это 200 номеров, а в случае FAT32 аж по 4 байта (можно кстати заранее посчитать номер сектора и хранить его, а не номер кластера). Не жалко 800 байт драгоценной памяти ради поддержки фрагментированных файлов?


Жалко, но не так чтобы очень. А на большие диски этот массив будет еще больше. С другой стороны, на Орионе памяти на это достаточно (в доп. страницах). Было бы куда жальче, если бы это надо было отрезать от TPA (у меня там буфера ALV как раз под 800 байт, больше опускать уровень BIOS жаба душила) - вот от этого никуда не деться, а служебные буфера BIOS (в т.ч. и этот список кластеров) можно и унести куда-то в доп. страницы.



Кстати, подобная идея (без поддержки фрагментированных файлов) используется у меня в проекте Башкирии-2м для DE1.

Без поддержки фрагментирования вообще неинтересно, хотя делается это, конечно, просто (все готово уже: сейчас у меня в CP/M при адресации секторов добавляется смещение к началу смонтированной партиции, а в случае нефрагментированного файла это будет смещение к началу файла). Потому что цель такая: на любую карточку с уже имеющимся содержимым (допустим, я ее еще где-то использую, в телефоне например, и содержимое мне дорого как память :) ) скинуть образ диска, сунуть ее в Орион, поработать с ней на Орионе, затем унести на РС (или в телефон) и поработать с ней еще и там. А работа с нефрагментированными файлами ODI со всеми их ограничениями по сути ничуть не удобнее чем записывать образ целых партиций/HDD из файлов OHI c той разницей, что в OHI файловые системы уже большие (что дико удобно).

PVV
11.01.2018, 19:57
Вариант работы с не фрагментированным файлом образа гораздо привлекательней и в скорости работы (простая математика) и в требовании к занимаемой памяти (только номер начального сектора ) и в размере кода ( нет обработки фрагментации), а тк сам файл образа будет готовиться на 'большом' ПК, то кто мешает нам этот образ создать так, как нам надо, те без фрагментации? Можно сделать программу дефрагментатор файла образа, или программу для создания такого не фрагментированного образа...написать такую программу легче, чем реализовывать работу с фрагментированным образом, а вообще-то, можно и функцию 'монтирования' образа заставить заниматься этой дефрагментацией (сложнее, но не невозможно, а тк операция дефрагментации разовая, то вполне можно и так сделать).

По поводу адаптации sdOS к Ориону. Думаю, что для Ориона есть уже устоявшиеся адреса для размещения системных программ, соответственно нужно определиться с вот такими вопросами, прежде чем начинать:
1. для работы с FAT нужен буфер ~2КБ ОЗУ, в каких адресах разместить этот буфер?
2. для размещения кода самой sdOS нужно ~3КБ (с запасом на все доработки по SDHC) в каких адресах её размещать?
3. где будет храниться бинарник этой ОС, на РОМдиске? как будет выглядеть её запуск? - просто я с Орионом совсем не знаком в программной части.
4. адрес для порта данных и порта конфигурации, те два адреса - какие?
5. еще нужна информация по адресам и параметрам вызовов стандартных функций, печать символа на экран, ввод с клавиатуры и тп. Подозреваю, что они совпадают с РК-86, но уточниться нужно.
6. Для СпециалистаМХ с его ОС RAMFOS я добавлял к sdOS функционал по копированию файлов с SD в РАМдиск RAMFOS_а и обратно, нужно ли что то подобное для Ориона? опять же, РАМдиск у Ориона есть?

И еще, на фоне того, что я о программах и ОС для Ориона не знаю ничего (но по форуму вижу, что существует несколько ОС), у меня возникает вопрос, а нужна ли эта sdOS Ориону, может нужны только процедуры работы с SDHC картами? В этом случае я отлажусь на Специалисте с SDHC и все?

Error404
11.01.2018, 21:12
С дефрагментированными файлами получится фигня сразу же, как только встанет вопрос использования нескольких файлов разных размеров (а это именно то чего я хочу). И удаление файла одного размера чтобы записать файл другого размера в 99% случаев будет приводить к фрагментации, а значит нужно будет натравливать утилиту дефрагментации после каждого копирования на карту. Костыли ТАКОГО размера заложенные в проект уже при планировании мне как инженеру-системотехнику не дадут спокойного сна, отчего появятся круги под глазами и т.п. Если жалко памяти (хотя чего там жалеть, я вот уверен что большие файлы нужны только мне для программирования, остальные только игрушки будут запускать с 800к образов), то проще карточку переформатировать на максимальный размер блока (таких блоков будет меньше). Хотя я за буфер в доп. странице.

- - - Добавлено - - -

Но в качестве времянки для проверки идеи годится и способ с дефрагментированным файлом. Главное сделать для начала хоть что-то. :)

PVV
11.01.2018, 21:53
Может я не понимаю что-то, если файлы образов разных размеров, то тогда надо хранить не только номер первого сектора, но и номер последнего сектора этого образа и все, разве нет?
Хотя я согласен, что можно начать с не дефрагментированного варианта, а дальше, при необходимости, можно и доработать по полной.

PVV
15.01.2018, 21:20
Так никто и не ответил на мои вопросы :(, тогда делаю сам, как понимаю.
Что бы двигаться дальше, надо вообще разобраться со сборкой для Ориона. Попробовал запустить RKO файлы в эмуляторе b2m, а они не запускаются... в emu.ext написано, что RKO файлы загружаются в mem2 область, а таковой в конфиге нет, только mem1 !? В общем, поплясал с бубном немного, выбросил файл ROMдиска, и вместо него прицепил свой бинарник, собранный по правилам как грузит ROMдиск биос Ориона, все получилось, благо sdOS меньше 2КБ пока. Закинул на образ SD карты несколько RKO файлов, запустил их с SD в эмуляторе.
Файлы для эмулятора b2m во вложении.
Эта версия без поддержки SDHC карт.
63709

Error404
16.01.2018, 15:43
Так никто и не ответил на мои вопросы :(, тогда делаю сам, как понимаю.
Что бы двигаться дальше, надо вообще разобраться со сборкой для Ориона. Попробовал запустить RKO файлы в эмуляторе b2m, а они не запускаются... в emu.ext написано, что RKO файлы загружаются в mem2 область, а таковой в конфиге нет, только mem1 !? В общем, поплясал с бубном немного, выбросил файл ROMдиска, и вместо него прицепил свой бинарник, собранный по правилам как грузит ROMдиск биос Ориона, все получилось, благо sdOS меньше 2КБ пока. Закинул на образ SD карты несколько RKO файлов, запустил их с SD в эмуляторе.
Файлы для эмулятора b2m во вложении.
Эта версия без поддержки SDHC карт.
63709

А что за вопросы то были? Вроде все обсудили.

PVV
16.01.2018, 16:03
А что за вопросы то были? Вроде все обсудили.

4 сообщения назад, пост 18. Почти все вопросы все еще актуальны...

Error404
16.01.2018, 16:56
Вариант работы с не фрагментированным файлом образа гораздо привлекательней и в скорости работы (простая математика) и в требовании к занимаемой памяти (только номер начального сектора ) и в размере кода ( нет обработки фрагментации), а тк сам файл образа будет готовиться на 'большом' ПК, то кто мешает нам этот образ создать так, как нам надо, те без фрагментации? Можно сделать программу дефрагментатор файла образа, или программу для создания такого не фрагментированного образа...написать такую программу легче, чем реализовывать работу с фрагментированным образом, а вообще-то, можно и функцию 'монтирования' образа заставить заниматься этой дефрагментацией (сложнее, но не невозможно, а тк операция дефрагментации разовая, то вполне можно и так сделать).

По поводу адаптации sdOS к Ориону. Думаю, что для Ориона есть уже устоявшиеся адреса для размещения системных программ, соответственно нужно определиться с вот такими вопросами, прежде чем начинать:
1. для работы с FAT нужен буфер ~2КБ ОЗУ, в каких адресах разместить этот буфер?
2. для размещения кода самой sdOS нужно ~3КБ (с запасом на все доработки по SDHC) в каких адресах её размещать?
3. где будет храниться бинарник этой ОС, на РОМдиске? как будет выглядеть её запуск? - просто я с Орионом совсем не знаком в программной части.
4. адрес для порта данных и порта конфигурации, те два адреса - какие?
5. еще нужна информация по адресам и параметрам вызовов стандартных функций, печать символа на экран, ввод с клавиатуры и тп. Подозреваю, что они совпадают с РК-86, но уточниться нужно.
6. Для СпециалистаМХ с его ОС RAMFOS я добавлял к sdOS функционал по копированию файлов с SD в РАМдиск RAMFOS_а и обратно, нужно ли что то подобное для Ориона? опять же, РАМдиск у Ориона есть?

И еще, на фоне того, что я о программах и ОС для Ориона не знаю ничего (но по форуму вижу, что существует несколько ОС), у меня возникает вопрос, а нужна ли эта sdOS Ориону, может нужны только процедуры работы с SDHC картами? В этом случае я отлажусь на Специалисте с SDHC и все?

Как я вижу:
По-хорошему, оформить бы sdOS в виде приложения Ордос и хранить ее в ROM-диске. Но тут детали я не подскажу, т.к. собственный опыт работы с Ордос 2.4 через ее декларированнные файловы функции вызвал у меня дикое неприятие ввиду их убогости и невозможности штатно номально в обе стороны блочно обрабатывать файл (ЕМНИП в каком то из направлений функция обрабатывала только целый файл, т.е. одним вызовом то ли читала весь файл в память, причем всегда в страницу 0 и по адресу посадки, то ли писала оттуда сразу весь кусок от себя финализируя файл, толи еще какая дикость при невозможности штатно использовать файл на дозапись).

Размещение обычно такое:
C000...EFFF - экран
B800...BFFF - Ordos
0000...АFFF - область приложений

на B000...B7FF планируй sdOS, ниже ее сразу под ней - буфера, в остальное ОЗУ грузить приложения при непосредственном исполнении (большинство их стратует в нижних адресах ОЗУ), приложения перекрывающие sdOS пускай копируют в RAM-диск (функции копирования туда должны быть обязательно, без них теряется смысл) и уже оттуда запускают при помощи Ордос.

С CP/M все было бы проще: там все приложения стартуют с 100h и sdOS выазилась бы в обычный копировщик с sd-карт на файловые системы CP/M без запуска (там BDOS вменяемый, копировщики пишутся на раз-два, но почему-то многие ее боятся).

С п.п Монитора и адресами контроллера похоже уже разобрался?

shurik-ua
16.01.2018, 17:51
ещё есть FAT драйвер на асме z80 от Koshi (TS-Labs) - шас он вроде бы и длинные имена умеет и довольно компактный.

PVV
16.01.2018, 19:37
п1 и 2, ок, понял,
п3 - я сам за РОМдиск, только как туда закинуть свою программу, не прибегая к hex редактору?, просто каждый раз после компиляции собирать РОМдиск руками весьма муторно...
п4 - взял из уже существующего проекта SD для Ориона,
п5 - все совпало с РК-86, разве что удаление получилось не кнопкой Del, а курсором назад и не понятно как выйти в монитор, по X идет выход, но запускается повторная загрузка РОМдиска, в котором сейчас sdOS :),
п6 - как я понял RAMFOS Специалиста и Ордос похожи, так что здесь нужно сделать аналогично...
ну и глобально - а нужна ли sdOS Ориону?
как запустить RKO файл из эмулятора b2m?

to Error404:
я сейчас займусь прикручиванием интерфейса n8vem к этому проекту (буду проверять в Протеусе на Специалисте), что бы можно было протестировать на реальном железе на старых картах, а затем буду делать поддержку SDHC (что в Протеусе уже не проверить, как и в b2m), файл sdOS в таком виде пойдет или надо что-то другое?

Error404
16.01.2018, 19:54
ещё есть FAT драйвер на асме z80 от Koshi (TS-Labs) - шас он вроде бы и длинные имена умеет и довольно компактный.

Я смотрел его, слишком шизоидный стиль, нунафиг с таким разбираться (здоровье дороже).

- - - Добавлено - - -


п1 и 2, ок, понял,
п3 - я сам за РОМдиск, только как туда закинуть свою программу, не прибегая к hex редактору?, просто каждый раз после компиляции собирать РОМдиск руками весьма муторно...
п4 - взял из уже существующего проекта SD для Ориона,
п5 - все совпало с РК-86, разве что удаление получилось не кнопкой Del, а курсором назад и не понятно как выйти в монитор, по X идет выход, но запускается повторная загрузка РОМдиска, в котором сейчас sdOS :),
п6 - как я понял RAMFOS Специалиста и Ордос похожи, так что здесь нужно сделать аналогично...
ну и глобально - а нужна ли sdOS Ориону?
как запустить RKO файл из эмулятора b2m?

to Error404:
я сейчас займусь прикручиванием интерфейса n8vem к этому проекту (буду проверять в Протеусе на Специалисте), что бы можно было протестировать на реальном железе на старых картах, а затем буду делать поддержку SDHC (что в Протеусе уже не проверить, как и в b2m), файл sdOS в таком виде пойдет или надо что-то другое?

Программа нужна, особенно если ее удастся допилить до нормальной поддержки FAT32 (а не только с первым кластером). Потому что во первых она для 8080 (а это нынче редкость), компактная, и в голой ПЗУ-шной ордос пока нет средств для файлового чтения с носителей отличных от дисковода (которые уже отходят).



п4 - взял из уже существующего проекта SD для Ориона,

А это из какого? С контроллером по какой схеме? Из конфига b2m похоже что порт F762.
С имеющимися схемами n8vem(теперь вижу это видимо не она) и MSXv1 у эта программа в эмуляторе (свой) никаких файлов на подключенном образе не увидела (команда D выдает NoFiles), а их там есть. Порт у меня эмулируется тот же - F762 для n8vem и F762+F763 для MSXv1.

PVV
16.01.2018, 20:37
Программа нужна, особенно если ее удастся допилить до нормальной поддержки FAT32 (а не только с первым кластером). Потому что во первых она для 8080 (а это нынче редкость), компактная, и в голой ПЗУ-шной ордос пока нет средств для файлового чтения с носителей отличных от дисковода (которые уже отходят).
ок, с программой понятно.
Вот только FAT32 делать нет желания... пусть даже и будут SDHC карты, но размечать раздел в 2ГБ и использовать и форматировать в fat16.


А это из какого? С контроллером по какой схеме? Из конфига b2m похоже что порт F762.
С имеющимися схемами n8vem(теперь вижу это видимо не она) и MSXv1 у эта программа в эмуляторе (свой) никаких файлов на подключенном образе не увидела (команда D выдает NoFiles), а их там есть. Порт у меня эмулируется тот же - F762 для n8vem и F762+F763 для MSXv1.
b2m понимает две схемы SD интерфейсов, первый - ХардВареМана(СпециалистМХ2 )[ну и моя реализация на дискретах] и второй - msx, сейчас sdOS собрана под первый вариант.

Тогда, я сделаю под второй вариант для проверки. Адреса F762+F763.
команды sdOS - DIR, CD ИмяКаталога, X - надо так использовать, сокращений нет. Ну а запуск RKO файлов просто имя файла, расширение можно опустить(в конце имени символ 'солнышка' нужен, он на кнопке 4 с шифтом вводится).

- - - Добавлено - - -

вариант sdOS под интерфейс msx, на реале никогда не проверялось только в b2m -
63717

- - - Добавлено - - -

здесь F762 включение карты, F763 данные карты, так надо или наоборот?

b2m
17.01.2018, 10:50
как запустить RKO файл из эмулятора b2m?
Пока никак. Я однажды оптимизировал конфиг Ориона (убрал mem2..mem4, увеличил mem1), а про загрузку файлов забыл. Теперь думаю, как исправить, старый конфиг возвращать не хочется.

PVV
17.01.2018, 12:21
Пока никак. Я однажды оптимизировал конфиг Ориона (убрал mem2..mem4, увеличил mem1), а про загрузку файлов забыл. Теперь думаю, как исправить, старый конфиг возвращать не хочется.

так если mem1 это все поле памяти по старому конфигу mem1-mem4, то mem2 == mem1[10000] должно быть, разве нет? но я такую замену попробовал, не помогло :( (есть еще параметр loadaddr=хххх, как я понимаю, он эквивалентен записи в [хххх] ? )

Error404
17.01.2018, 12:48
b2m понимает две схемы SD интерфейсов, первый - ХардВареМана(СпециалистМХ2 )[ну и моя реализация на дискретах] и второй - msx, сейчас sdOS собрана под первый вариант.

Тогда, я сделаю под второй вариант для проверки. Адреса F762+F763.
команды sdOS - DIR, CD ИмяКаталога, X - надо так использовать, сокращений нет. Ну а запуск RKO файлов просто имя файла, расширение можно опустить(в конце имени символ 'солнышка' нужен, он на кнопке 4 с шифтом вводится).

- - - Добавлено - - -

вариант sdOS под интерфейс msx, на реале никогда не проверялось только в b2m -


Что-то в моем эмуляторе оно не работает. Команда DIR всегда выдает NoFiles, хотя подключен образ содранный с реальной 64кб флешки с FAT16 (предположительно - карточка старая {2006 год примерно} и малого объема, но не исключаю и FAT32 - давно дело было) с одной партицией (схема MBR), и файлы там точно есть (как и каталоги). В sdOS результаты инита карты проверяются? При ошибке инита выводится сообщение?



здесь F762 включение карты, F763 данные карты, так надо или наоборот?

F762 - включение питания на карте (бит D3) и выборка карты (бит D2)
F763 - регистр данных (D7=на карту, D0..D7=с карты)
схемы тут (http://zx-pk.ru/attachment.php?attachmentid=59751&d=1487070131)

У меня эмулятор эмулирует полную схему. Т.е. если питание на карте не включено (бит D3) то ничего работать не будет даже если подается выборка карты (бит D2). Это нужно для горячей замены карточек, и все драйвера что я делал, обычно это поддерживали (например при выполнении команды MNT в CP/M). Как это сделано в sdOS?

- - - Добавлено - - -

{
N8VEM:
SD_PWR equ 08h reserved - SD poweron/poweroff
SD_CS equ 04h NPN inverter, positive logic.
SD_CLK equ 02h
SD_DOUT equ 01h
SD_DIN equ 80h
MSX:
MSXSD_PWR = F602.D3.WR reserved - SD poweron/poweroff
MSXSD_CS = F602.D2.WR
MSXSD_CLK = F603.WR
MSXSD_RD = F603.RD
MSXSD_WR = F603.D7.WR
}

b2m
17.01.2018, 13:58
mem2 == mem1[10000] должно быть, разве нет? но я такую замену попробовал, не помогло
Не всё так просто. Файл привязки к расширениям практически никак не связан с конфигами. Могло бы помочь loadaddr=10000, но он там двухбайтный (это была защита от дурака).

Error404
17.01.2018, 16:08
Что-то в моем эмуляторе оно не работает. Команда DIR всегда выдает NoFiles, хотя подключен образ содранный с реальной 64кб флешки с FAT16 (предположительно - карточка старая {2006 год примерно} и малого объема, но не исключаю и FAT32 - давно дело было) с одной партицией (схема MBR), и файлы там точно есть (как и каталоги). В sdOS результаты инита карты проверяются? При ошибке инита выводится сообщение?


Вот с этим FAT-oбразом пробовал и не работает:
https://drive.google.com/open?id=10Hpz_6_xCFCPM4OrYFOmlyltcHc9VeWg
ЧЯДНТ?

PVV
17.01.2018, 21:45
Что-то в моем эмуляторе оно не работает. Команда DIR всегда выдает NoFiles, хотя подключен образ содранный с реальной 64кб флешки с FAT16 (предположительно - карточка старая {2006 год примерно} и малого объема, но не исключаю и FAT32 - давно дело было) с одной партицией (схема MBR), и файлы там точно есть (как и каталоги). В sdOS результаты инита карты проверяются? При ошибке инита выводится сообщение?

проверок и сообщений нет, нет места. Если карта опозналась, то приглашение появляется практически сразу, если нет, то пару секунд задержка получается перед приглашением, в реальной работе это сразу заметно :).


F762 - включение питания на карте (бит D3) и выборка карты (бит D2)
F763 - регистр данных (D7=на карту, D0..D7=с карты)
схемы тут (http://zx-pk.ru/attachment.php?attachmentid=59751&d=1487070131)

У меня эмулятор эмулирует полную схему. Т.е. если питание на карте не включено (бит D3) то ничего работать не будет даже если подается выборка карты (бит D2). Это нужно для горячей замены карточек, и все драйвера что я делал, обычно это поддерживали (например при выполнении команды MNT в CP/M). Как это сделано в sdOS?

ну я то о включении питания и не знал, в коде выше этого нет. И почему выборка карты (бит D2) если в msx это D1 ?!, у меня D1 используется...

процедуры работы со схемой msx я взял из оригинального кода этой sdOS от b2m для RK-86, они должны работать, ну и в эмуляторе b2m они и работают.
попробовал я схему mxs промоделировать в Протеусе, а она не работает... пакет инициализации уходит ( ff 40 00 00 00 .. 95), а в ответ карта присылает 09, вместо 01 !?
зато схема n8vem в Протеусе заработала, я все процедуры с ней в коде для ВМ80 переписал, вот [удалил] Орионовский вариант sdOS для этой схемы. Это бинарник, как и предыдущие, который грузится вместо Ордос с РАМдиска.

- - - Добавлено - - -

Образ, кстати, правильный fat16, все открывается, 3 каталога, zip и txt. Не нашел как в эмуляторе ввести нижнее подчеркивание '_' ,а в TEST зашел, там текстовые файлы.

Error404
17.01.2018, 22:35
проверок и сообщений нет, нет места. Если карта опозналась, то приглашение появляется практически сразу, если нет, то пару секунд задержка получается перед приглашением, в реальной работе это сразу заметно :).

ну я то о включении питания и не знал, в коде выше этого нет. И почему выборка карты (бит D2) если в msx это D1 ?!, у меня D1 используется...

процедуры работы со схемой msx я взял из оригинального кода этой sdOS от b2m для RK-86, они должны работать, ну и в эмуляторе b2m они и работают.
попробовал я схему mxs промоделировать в Протеусе, а она не работает... пакет инициализации уходит ( ff 40 00 00 00 .. 95), а в ответ карта присылает 09, вместо 01 !?
зато схема n8vem в Протеусе заработала, я все процедуры с ней в коде для ВМ80 переписал, вот 63721 Орионовский вариант sdOS для этой схемы. Это бинарник, как и предыдущие, который грузится вместо Ордос с РАМдиска.

Образ, кстати, правильный fat16, все открывается, 3 каталога, zip и txt. Не нашел как в эмуляторе ввести нижнее подчеркивание '_' ,а в TEST зашел, там текстовые файлы.

А в этом варианте тоже не выставляется бит управления питанием (D3)? Карта не определяется (при инициализации задержка 5 секунд), DIR выдает "ERR"
Выбор карты по F762.D2 был сделан D2 для того, чтобы обе схемы были совместимы (так было у N8VEM с которой я начинал, а D1 там DOUT) или как минимум чтобы CS не смотрел в DOUT (если вдруг код выполняется от одной схемы, а в железе там на портах другая схема). Вообще странно, у b2m в эмуляторе должны такие же биты эмулироваться что и у меня, иначе у него не работали бы мои сборки CP/M версий SD (аналогично тому как как у меня сейчас не работает SDOSN8.BIN), а они же работают.

PVV
17.01.2018, 22:47
А в этом варианте тоже не выставляется бит управления питанием (D3)? Карта не определяется (при инициализации задержка 5 секунд), DIR выдает "ERR"

Здесь все выставляется.
Только я вижу число просмотров:0 у файла SDOSN8.zip, это как?, а DIR выдает ERR правильно, тк нет места под текст NO FILE(S) - в варианте n8vem в 2КБ, что бы загружался как Ордос с РАМдиска я сделал такую заглушку сейчас, те файл то правильный тестируется :)

вот, изменил инициализацию карты [удалил]

Error404
17.01.2018, 23:35
Не, в эмуляторе не работает. Возможно дело в эмуляции (и в частности, ините карты).
А какой загрузочный адрес? B800?

PVV
18.01.2018, 11:59
Да, стартовый адрес b800, на bffd стоит jmp 0b800h, как это сделано Ордос.
Немного изменил инициализацию и сделал отладочный вывод того, что уходит в карту.

Error404
18.01.2018, 12:27
Да, стартовый адрес b800, на bffd стоит jmp 0b800h, как это сделано Ордос.
Немного изменил инициализацию и сделал отладочный вывод того, что уходит в карту.

Выдает такое:

http://www.imageup.ru/img62/2967798/screenhunter_01-jan-18-1225.gif (http://www.imageup.ru/img62/2967798/screenhunter_01-jan-18-1225.gif.html)

PVV
18.01.2018, 13:05
Ура, это значит, что сам интерфейс работает! 40..95 -это cmd0, 77..95 -это cmd55 и 69..95 -это acmd41, и на этом у меня инициализация заканчивается (для всех реальных карт, с которыми я работал этого было достаточно, и в b2m этого тоже достаточно) . Именно это туда и посылается, и каждая посылка возможна только при условии получения правильного ответа, иначе дальше 40..95 ничего бы больше не посылалось.
В таком случае, что именно ожидает получить Ваш эмулятор в качестве инициализации? ну или чего ему еще не хватает? исходник работающего примера я то вижу, просто это не так быстро все поддержать, и там же SDHC уже накручено сверху...

Error404
18.01.2018, 14:13
Ура, это значит, что сам интерфейс работает! 40..95 -это cmd0, 77..95 -это cmd55 и 69..95 -это acmd41, и на этом у меня инициализация заканчивается (для всех реальных карт, с которыми я работал этого было достаточно, и в b2m этого тоже достаточно) . Именно это туда и посылается, и каждая посылка возможна только при условии получения правильного ответа, иначе дальше 40..95 ничего бы больше не посылалось.
В таком случае, что именно ожидает получить Ваш эмулятор в качестве инициализации? ну или чего ему еще не хватает? исходник работающего примера я то вижу, просто это не так быстро все поддержать, и там же SDHC уже накручено сверху...

Я действительно вижу вхождение исходного когда в ветки эмуляции команд CMD0,CMD55,ACMD41, но дальше все вхождения только в SPI_IDLE, как будто после ACMD41 из внешнего кода команды больше не поступают. При этом оно там чего-то ожидает, потом я нажимаю DIR... и ничего, SPI_IDLE без конца. Где-то рассогласуется автомат передающий биты, и в уме сложить чего там во входящем потоке битов недостает - я не осилю. По логике, если считаны 3 команды, то должны читаться и остальные, в худшем случае при неизвестных командах автомат выдаст ошибку (как и было когда я отлаживал SDHC расширяя алгоритм инициализации новыми командами), но он же после третьей команды просто перестает заходить в это ветвление команд как если бы они перестали со входа поступать или "уплыл" CLC.

PVV
18.01.2018, 14:13
скорее всего нужны cmd08 и cmd16 ?
на картинке схема подключения SD n8vem, которая работает в Протеусе...

добавил отладочный вывод и переданных на карту байт и принятых от карты

Error404
18.01.2018, 14:49
скорее всего нужны cmd08 и cmd16 ?
на картинке схема подключения SD n8vem, которая работает в Протеусе...

добавил отладочный вывод и переданных на карту байт и принятых от карты

выдает такое:

http://www.imageup.ru/img62/2967964/11.jpg (http://www.imageup.ru/img62/2967964/11.jpg.html)

После этого DIR в ответ получает только бесконечный 01010101

shurik-ua
18.01.2018, 21:40
я когдато писал на VHDL чтение карты в SPI режиме - вот фрагмент инициализации



--INITIALISATION start
when SD_INIT =>
sd_stage <= CS_HI_80_PULSES;
counter <= 127; --128 pulses while CS is high, CMD must be high too
when CS_HI_80_PULSES =>
counter <= counter - 1;
if counter = 0 then
sd_stage <= SEND_CMD_00;
SD_CS_n <= '0';
end if;
when SEND_CMD_00 =>
sd_stage <= SEND_CMD;
next_stage <= SEND_CMD_08;
command <= X"FF400000000095";
recv_bits <= 8; -- responce 8 bits
when SEND_CMD_08 =>
next_stage <= SEND_CMD_55;
sd_stage <= SEND_CMD;
command <= X"FF48000001AA87";
recv_bits <= 40; -- responce 40 bits
when SEND_CMD_55 =>
sd_ver_2 <= not responce(34);
sd_stage <= SEND_CMD;
next_stage <= SEND_ACMD_41;
command <= X"FF7700000000FF";
recv_bits <= 8;
when SEND_ACMD_41 =>
sd_stage <= SEND_CMD;
next_stage <= PROCESSING_INIT_1;
command <= X"FF69" & '0' & sd_ver_2 & "000000" & X"000000FF";
recv_bits <= 8;
when PROCESSING_INIT_1 =>
if responce(0) = '0' then
if sd_ver_2 = '0' then
sd_stage <= READY;
sdhc <= '0';
else
sd_stage <= SEND_CMD_59;
end if;
else
sd_stage <= SEND_CMD_55;
end if;
when SEND_CMD_59 =>
sd_stage <= SEND_CMD;
next_stage <= PROCESSING_INIT_2;
command <= X"FF7B00000000FF";
recv_bits <= 8;
when PROCESSING_INIT_2 =>
if responce (6 downto 0) = "0000000" then
sd_stage <= SEND_CMD_16;
else
sd_stage <= SEND_CMD_59;
end if;
when SEND_CMD_16 =>
sd_stage <= SEND_CMD;
next_stage <= PROCESSING_INIT_3;
command <= X"FF5000000200FF";
recv_bits <= 8;
when PROCESSING_INIT_3 =>
if responce (6 downto 0) = "0000000" then
-- if sd_ver_2 = '0' then
-- sd_stage <= READY;
-- sdhc <= '0';
-- else
sd_stage <= SEND_CMD;
next_stage <= PROCESSING_INIT_4;
command <= X"FF7A00000000FF";
recv_bits <= 40;
-- end if;
else
sd_stage <= SEND_CMD_16;
end if;
when PROCESSING_INIT_4 =>
sdhc <= responce(30);
sd_stage <= READY;
--INITIALISATION end



вдруг пригодится ) - писал по даташиту на сд карты и даже работало )

PVV
18.01.2018, 23:15
кто сможет ответить на такой вопрос -
карта получила командную последовательность ACMD41, ответила 0х00, те все ОК, но чтение из карты продолжается, что в таком случае должно приходить из карты? 0xFF или что-то другое, например 0х01 (IDLE) ?

За код инициализации спасибо, просто на данный момент sdOS поддерживает только карты V1, и шаг в сторону - ничего не видит. Вот я и хочу сделать поддержку всех типов карт, но изначально запустить на одном типе, и в опытах выше идет 'пристрелка' к этому одному типу.

Error404
19.01.2018, 13:11
В первоначальном варианте последовательность инициализации работоспособная, хотя и не для всех карт (только для SDC v1.0):
CMD0, CMD55, ACMD41
На CMD1 я бы переделывать не советовал, т.к. эта команда, введенная во времена древнючих MMC-карт и оставленная для совместимости у SDC v1.0, для новых карт (SDC v2.0, SDHC) считается obsolete (устаревшей, не поддерживаемой) и ХЗ какие из новых ее поддерживают (не исключаю что некоторые и понимают ее).

Сам я, знакомясь с даташитом на SD (на сайте SD-ассоциации) и готовыми реализациями в Инете (много исходников на С встречается) пришел в итоге к такой последовательности инициализации (поддержку MMC я не стал делать, только SD всех версий): CMD0, CMD8, CMD59, CMD55, ACMD41, CMD58, CMD9. Опционально еще CMD16 (установить размер блока с параметром для размера в 512байт). Плюс там есть анализы ответов карты и ветвления в зависимости от них, также не забываем что для разных типов карт (определяется по CMD8) надо подавать разный параметр при вызове ACMD41, и что CMD0 и CMD8 имеют разные CRC и это критично, а для прочих команд CRC большинство карт не проверяют и можно использовать 095h или другие. Что в итоге получилось, выкладывал тут (http://zx-pk.ru/threads/27393-spi-kontroller-dlya-oriona-na-diskretnykh-is.html?p=940066&viewfull=1#post940066) (работает и на реале с большинством карт, и в эмуляторе).

- - - Добавлено - - -


кто сможет ответить на такой вопрос -
карта получила командную последовательность ACMD41, ответила 0х00, те все ОК, но чтение из карты продолжается, что в таком случае должно приходить из карты? 0xFF или что-то другое, например 0х01 (IDLE) ?


после того как карта на ACMD41 ответила "00", туда надо слать следующие команды. Если туда вместо этого начать слать коды не являющиеся командами, или кучу FF (т.е. например читая в цикле карту ничего туда не отправляя), то карта переходит в IDLE и начинает отвечать 0х01. И вывести ее из IDLE можно только опять прогнав всю последовательность инициализации. Такое у меня остаточное знание, т.е. "но это не точно"{как теперь любят добавлять к ответам :) }

- - - Добавлено - - -

К сожалению, пока не могу проверить sdOS на реале, т.к. схема подключения SD у меня спаяна только на Орионе-ПРО, а в нем у меня нет ROM-диска и соответственно нет Ordos вместо которой можно было бы поставить sdOS. (На ПРО без ROM-диска Ордос запускаеться откуда-то из потрохов ROM-BIOS, по простому ее не заменить). Ближайший вариант это когда sdOS будет в виде приложения Ordos (т.е. с 16-байтным заголовком и посадочным адресом ниже Ордос чтобы ордос могла ее загрузить) - тогда смогу попробовать и на ПРО: дополнительные Ордос программы объемом до 8кб я научился (http://zx-pk.ru/threads/24285-orion-pro-softvernye-dela.html?p=881319&viewfull=1#post881319) автоматизированно запихивать прямо в "пустоты" 64к-шного ROM-BIOS Ориона-ПРО и обходиться без всяких дополнительных ROM-дисков.

PVV
19.01.2018, 13:50
вот собранный ROMдиск с sdOS (в самом низу) для работы в b2m и бинарник с Ордос заголовком под интерфейс n8vem.

PS: теперь в b2m можно загружать RKO файлы через SD :)

архив здесь (http://zx-pk.ru/threads/28704-sd-karty-i-kontrollery-realizatsii-fat.html?p=953635&viewfull=1#post953635)

shurik-ua
19.01.2018, 14:33
ещё появились карты SDXC, там тоже видимо ветвление появится.
вообще чтобы сделать инит для вер.1 карт - нужно эти самые карты иметь - что сейчас наверное большая редкость.

p.s. вот тут на 12 странице алгоритм инита карт - https://drive.google.com/file/d/17ZLJQjxha1VD1kkmgQ8Y-KC6-kqtYNqs/view?usp=sharing

PVV
09.03.2018, 13:22
Добавил возможность обмена RKO файлами с SD на RAMдиск Ориона и обратно.
В этой версии поддерживаются SDHC карты, но с одним первичным разделом отформатированным в FAT16.
дополнительные команды:
L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKO с SD в RAM диск Orion
(пример: L TEST$.RKO - читает файл TEST$.RKO в память начиная
с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST$
с именем, стартовым адресом и размером взятыми из хеадера RKO файла на карте.

S ИМЯфайлаНаRAMдиске,ИМЯфайла НаSD.РАСШИРЕНИЕ, - записать файл из RAM диска
на SD в формате RKO (пример: S TEST$,TEST1$.BIN -читает файл TEST$ из RAM диска в память
начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в
существующий файл с таким же именем TEST1$.BIN, размер не изменяется, формат RKO!).

в архиве ROMдиск с версиями SDOS для всех трех возможных вариантов SD интерфейсов и пример конфига для эмулятора b2m.

64531
исходники здесь - http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=240#p143547

Error404
10.03.2018, 10:48
Добавил возможность обмена RKO файлами с SD на RAMдиск Ориона и обратно.
В этой версии поддерживаются SDHC карты, но с одним первичным разделом отформатированным в FAT16.
дополнительные команды:
L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKO с SD в RAM диск Orion
(пример: L TEST$.RKO - читает файл TEST$.RKO в память начиная
с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST$
с именем, стартовым адресом и размером взятыми из хеадера RKO файла на карте.

S ИМЯфайлаНаRAMдиске,ИМЯфайла НаSD.РАСШИРЕНИЕ, - записать файл из RAM диска
на SD в формате RKO (пример: S TEST$,TEST1$.BIN -читает файл TEST$ из RAM диска в память
начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в
существующий файл с таким же именем TEST1$.BIN, размер не изменяется, формат RKO!).

в архиве ROMдиск с версиями SDOS для всех трех возможных вариантов SD интерфейсов и пример конфига для эмулятора b2m.

64531
исходники здесь - http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=240#p143547

Привет!

Опубликуй пожалуйста финальную версию схемы твоего контроллера на ИР24. А то уже не нахожу ее в темах. Если вдруг схема будет в элементах по ГОСТ (не знаю как у кого, а я до крайности плохо читаю импортные овалы), то сразу +146 в карму. :)

PVV
10.03.2018, 12:17
Опубликуй пожалуйста финальную версию схемы твоего контроллера на ИР24. А то уже не нахожу ее в темах.
Как полностью самостоятельную схему я этот интерфейс не оформлял, а вот как самостоятельная схема в составе ПК, равно как односторонняя печатная плата интерфейса под LUT(200x50мм), она здесь http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=225#p143285 или, то же самое на сайте fifan_а http://www.spetsialist-mx.ru/Galaksija/index6.html , там на схему можно посмотреть сразу, не скачивая весь архив, она в нижней части схемы (U20,U21,U22,U23,U24,U25,U26,X5,X6).

У меня нет базы с элементами по ГОСТу в моем схемном редакторе.

fifan
10.03.2018, 14:23
Как полностью самостоятельную схему я этот интерфейс не оформлял, а вот как самостоятельная схема в составе ПК, равно как односторонняя печатная плата интерфейса под LUT(200x50мм), она здесь на сайте fifan_а (U20,U21,U22,U23,U24,U25,U26,X5,X6).

Сразу ссылка на схему (http://www.spetsialist-mx.ru/Galaksija/schemes/GalaksijaNewSD.png).

HardWareMan
10.03.2018, 18:10
Сразу ссылка на схему (http://www.spetsialist-mx.ru/Galaksija/schemes/GalaksijaNewSD.png).
Только увы она не соответствует:

Если вдруг схема будет в элементах по ГОСТ (не знаю как у кого, а я до крайности плохо читаю импортные овалы), то сразу +146 в карму. :)

OrionExt
10.03.2018, 18:32
Опубликуй пожалуйста финальную версию схемы твоего контроллера на ИР24. А то уже не нахожу ее в темах. Если вдруг схема будет в элементах по ГОСТ (не знаю как у кого, а я до крайности плохо читаю импортные овалы), то сразу +146 в карму. :)
Вот где разворот (и заворот) мышления наступает:) И ничего.

Error404
10.03.2018, 19:37
Вот где разворот (и заворот) мышления наступает:) И ничего.

не-не, ГОСТ это не только И-ИЛИ-MOD (которые и верно - заворачивают мозги вглядыванием в схему прямая там слева стеночка или скругленная), это еще функциональное заполнение рисунка (квадратика элемента) для триггеров, регистров, счетчиком, мультиплексоров полями и обозначениями чтобы сразу было видно функцию или блоки элемента, а у иносранцев одни безликие белые квадраты с подписями одинаковыми четырьмя буквами для всех функций.

- - - Добавлено - - -

Это как в мнемониках ассемблера что мы тут обсуждали (когда в одном случае за тебя для облегчения осмысления всё сделали авторы Z80, и чтобы понимать листинг надо знать 4 мнемоники и позиции операндов (не более двух), или же как у 8080 - надо знать мнемоник чуть больше чем опкодов во Вселенной, т.е. всю работу ассемблера как языка-транслятора переложить на читателя)

- - - Добавлено - - -

Я думаю рисование по ANSI сделали спецом для сегрегации - чтобы негры не понимали. Но это не спасло от китайцев, индусов, и даже я читаю (просто не люблю когда из-за каких-то джонов с их расизмом моим мозгам надо делать двойную работу в сравнении с православным расововерным славянским ГОСТ)

fifan
10.03.2018, 20:01
Специально для дотошных ценителей гостовских схем привожу схему SD интерфейса для Галаксии от PVV. Я рисую только по ГОСТу, но меня не бросает в жар от схем, нарисованных не по ГОСТу.

HardWareMan
10.03.2018, 20:50
OrionExt, а где ИСКЛЮЧАЮЩЕЕ ИЛИ?

OrionExt
10.03.2018, 21:59
OrionExt, а где ИСКЛЮЧАЮЩЕЕ ИЛИ?
Где-то потерялось:) А так вроде XOR уже не относится к базовой логике.

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

TomaTLAB
10.03.2018, 22:53
С отрицательной логикой последнее время часто сталкиваюсь, японцы ее полюбляють.
Ну она удобна когда разруливаешь всякие /CS, /RD, /WR и т.п. сигналы с активным низким уровнем. Вон МПИ так вообще почти вся инверсная.



заворачивают мозги вглядыванием в схему прямая там слева стеночка или скругленная
Там не только слева, но и справа круглое или заостренное.
Кстати при говенном качестве сканов буржуйские легче разобрать чем ГОСТовские, на которых иногда вообще не поймешь, что там клякса означала "=1", или "≥1", или вообще "&"
Примерно как цветными колечками.

andreil
10.03.2018, 23:10
Табличка интересна другим. Элемент ИЛИ в отрицательной логике тождественный элементу И в позитивной логике.
С отрицательной логикой последнее время часто сталкиваюсь, японцы ее полюбляють.
Если у ИЛИ проинверсировать входные сигналы с сохранением таблицы истинности, то на выходе получим И-НЕ. Если у И - получим ИЛИ-НЕ.
Сам рисовал таблички для этого, когда в своей схеме упрощал логику - часто бывало что один сигнал уже инверсирован, но при инверсии другого сигнала будет экономия на 1 элемент НЕ, так и убирал корпуса :)

Error404
10.03.2018, 23:17
Табличка интересна другим. Элемент ИЛИ в отрицательной логике тождественный элементу И в позитивной логике.


Ну, это как бэ правила Буля. Примерно второй семестр обучения на 2201. :rolleyes:

Вот вам, за дотошного
http://studlab.com/pictures/matemat/algebrabulia.gif

TomaTLAB
11.03.2018, 03:08
В общем Булева алгебра, а конкретно эти де Моргана
!(A | B) = !A & !B
!(A & B) = !A | !B

HardWareMan
11.03.2018, 07:17
Блин, парни, это же элементарно. Но я спрашивал не об этом. И, кстати, тот же Кактус в RTL переносит инверсию с выхода на вход, т.к. она легче формируется матрицей (там набор инверторов на каждый входной сигнал есть).

Error404
11.03.2018, 10:27
Блин, парни, это же элементарно. Но я спрашивал не об этом. И, кстати, тот же Кактус в RTL переносит инверсию с выхода на вход, т.к. она легче формируется матрицей (там набор инверторов на каждый входной сигнал есть).

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

HardWareMan
11.03.2018, 11:19
Error404, да там толерастия проникла уже не только в мозги, но и в каждую клеточку.
http://jpegshare.net/images/8c/96/8c96f93f371bcf4b8652930166214593.png

fifan
11.03.2018, 20:23
Господа, а вы не отклонились от темы обсуждения?

HardWareMan
12.03.2018, 09:17
Нет, мы только отошли покурить. А сейчас вернулись обратно в основную беседу.

Denn
13.03.2018, 15:11
Я конечно понимаю, что это не по-феньшую и даже наверное не 8-битно, но оказывается в природе есть такие штуки (https://aziada.ru/products/perekhodnik-adapter-sd-sdhc-mmc-na-ide-3-5-40-pin-dlya-pc)

https://aziada.ru/pictures/product/big/2017_big.JPG

Получается, что на 8-битке достаточно написать поддержку протокола ATA (интерфейс IDE), и это гораздо проще и менее ресурсозатратно, чем поддержка SDHC... Вот такая вот прогресс-пичалька... ну, в смысле, радость /-)

Denn
13.03.2018, 15:31
barsik, да. Вот другая аналогичная (http://moskva.regmarkets.ru/product/4bdfce202593835ef55e96e8e2ea6d57/).

Вот ещё (https://sun-store.ru/90--sd-sdhc-mmc-ide-3_5-40-pin)

А уж на этих всяких Али (https://ru.aliexpress.com/item/SD-SDHC-SDXC-MMC-Card-to-IDE-40Pin-3-5inch-Male-Adapter/32826649176.html), так там вообще пруд пруди такого барахла.

Error404
13.03.2018, 16:06
Я конечно понимаю, что это не по-феньшую и даже наверное не 8-битно, но оказывается в природе есть такие штуки (https://aziada.ru/products/perekhodnik-adapter-sd-sdhc-mmc-na-ide-3-5-40-pin-dlya-pc)

Получается, что на 8-битке достаточно написать поддержку протокола ATA (интерфейс IDE), и это гораздо проще и менее ресурсозатратно, чем поддержка SDHC... Вот такая вот прогресс-пичалька... ну, в смысле, радость /-)

Я вам больше скажу, у меня такая есть - один из тех четырех моих контроллеров SD->PATA, что работают с вариантом IDE на ВВ55 и на этом же компе не работают с платой HDD ПРО (проверял на моем Орионе-ПРО где порт принтера перепилен в IDE на ВВ55). Но у меня плата HDD ПРО не доработана - там где-то надо вентиль ИЛИ воткнуть (пролетала в теме картинка с правкой от руки), да только я уже потерял где эта доработка была. Если напомните, добавлю в первый пост темы по ПРО.

Что до полезности самодельного контроллера, там же киллер-фича в том что это общеупотребимый SPI (но надо добавить ИЕ7 как в моей версии для пакетов не кратных 8), т.е. этот же контроллер кроме SD (а точнее одновременно с ним, только /CS добавочные развести по девайсам) может реализовать интерфейс с кучей датчиков, ПЗУ, Ethernet-контролеров и т.п. чего нельзя с SD-only адаптером.

- - - Добавлено - - -

Например, вот допилит камрад SFS свой ESP8266-адаптер, и мы его подключим по SPI. Или те же Визнеты W5500. Разные флешки ( в виде МСХ, а не sd-карт) тоже можно использользовать (они не шибко емкие - десятки Мб, но стоят сущие копейки) или RTC со SPI-интерфейсом. SPI очень хорош и быстр, и за счет отдельного селекта он не требует прожорливой протокольной обвязки (как например у тормозного I2C).

HardWareMan
13.03.2018, 16:55
http://jpegshare.net/images/ea/28/ea2815eb03e74bb88a287c4d8c1302a6.png
http://jpegshare.net/images/ae/be/aebe4fba785a65913b2c86880cfda87e.png
Denn
http://forum-nt.ru/thumb/63851.jpg

Error404
13.03.2018, 17:29
HardWareMan, а что собственно тебя так удивило? Следование сообщений от Denn?

Там между сообщениями Denn были еще сообщения от barsik, сейчас они почему-то удалены.

Denn
13.03.2018, 17:54
HardWareMan, там были посты от барсика о неоткрываемости ссылок, их цитировать я уж не стал. Куда они исчезли - я х/з.

- - - Добавлено - - -


Но у меня плата HDD ПРО не доработана - там где-то надо вентиль ИЛИ воткнуть (пролетала в теме картинка с правкой от руки), да только я уже потерял где эта доработка была. Если напомните, добавлю в первый пост темы по ПРО.

Вот тут - http://zx-pk.ru/threads/25327-periferiya-quot-orionpro-quot.html?p=897811&viewfull=1#post897811

Я эту доработку сделал.

HardWareMan
14.03.2018, 07:22
Там между сообщениями Denn были еще сообщения от barsik, сейчас они почему-то удалены.

HardWareMan, там были посты от барсика о неоткрываемости ссылок, их цитировать я уж не стал. Куда они исчезли - я х/з.
Нууу, вы хотите чтобы я поверил, что Барсик написал короткий пост, и что он не ноет по поводу удаления его поста? Ну не знаю... Ну, хорошо.

fifan
15.03.2018, 06:46
Пользователь может сам удалить свой пост. А может и модератор удалить. Я здесь не модератор, в Специалисте мы с Барсиком цацкаемся, а здесь может местный модератор удалил без объяснения причин.

Error404
15.03.2018, 10:00
Не, он сам поудалял.

Ewgeny7
06.09.2018, 13:20
Что-то оно не очень работает на моем реале...
Зашил ромдиск с теми тремя вариантами SDOS.
SD-адаптер по схеме MSX.
На карточке создан раздел FAT16 с парой файлов BRU и RKO.
Методом тыка нашел, что для моего варианта подходит запуск SDOS84M$
После запуска и прочих операций остается гореть светодиод активности (сигнал SD_CS).
Каталог читается.
Ввожу имя файла - сообщает о загрузке (моментально!).
Ввожу команду L с именем файла - вроде как тоже считалось (тоже моментально).
В реальности ни файл не загружен, ни в рамдиске ничего нет.
Что я делаю не так?
https://a.radikal.ru/a11/1809/e1/862aadd6314b.png (https://radikal.ru)

- - - Добавлено - - -

И кстати, из скромных пожеланий - убрать неоходимость ввода расширения файла. Оно вызывает тоску.... :)

PVV
06.09.2018, 13:34
Что я делаю не так?

SDOS работает, карту и файлы на ней видит, здесь все хорошо.

Вероятнее всего проблема в самом формате конкретного файла RKO, а именно, если посмотреть исходник, что я и сделал сейчас, то: команда L подразумевает чтение файла, который состоит в начале из 8+64 байт чего-то, затем должен быть байт 0E6h - проверяется на это! и если этого байта нет, то просто выход без предупреждения... что очень похоже на ситуацию выше -
сообщает о загрузке (моментально!)
Вот как я работаю с RKO:


8 байт имя
64 нулевых байт, потом 0E6h (синхробайты)
2 байта начало (обычно 0000)
2 байта конец (старший байт первый)
16 байт ORDOS-заголовок
(конец-начало-10h) данные
3 нулевых байта, потом 0E6h (синхробайты)
2 байта контрольная сумма

хвост после данных (нулевые байты, Е6, контрольную сумму) я не проверяю.

Ориона у меня нет и по форматам файлов я не в курсе что и как, потому сделал так.

Вообще проверить работает ли чтение с карты можно так:
R ИМЯфайла.РАСШИРЕНИЕфайла,А ДРЕСкуда,СКОЛЬКОбайт - прочитать не
запуская данные файла, начиная с указанного адреса в памяти и сколько
байт (пример: R TEST.BIN,0ACD,5FE0 - читает файл TEST.BIN в память
начиная с адреса 0х0ACD и до адреса 0х0ACD+0х5FE0=0х6AAD)
после выйти по Х из SDOS и посмотреть дамп памяти, считался ли файл.
(для записи R меняется на W)
на данный момент с таким чтением у меня есть только одна проблема - не хватает режима skip начала файла, дабы можно было пробросить чтение всех начальных заголовков, прочитать тело самой программы в нужные адреса и выполнить запуск этой программы... но это не относится к данному вопросу :)

- - - Добавлено - - -

автоподстановка расширения для запуска файлов RKO есть...

Ewgeny7
06.09.2018, 15:06
Виталий, спасибо за разъяснения!
Да, файл РКО на карте - сильно сомнительного происхождения.
Применительно к ориону было бы очень неплохо поддержать родной для него формат BRU (ORD), он по сути подобен симуляторному RKO.
Попробую отыскать нормальный файл и погонять данные.

- - - Добавлено - - -


Попробую отыскать нормальный файл и погонять данные.
Поискать не получилось, дело бесполезное.
Сделал файл, приклеив к файлу .BRU необходимый "бампер" из 77 байт согласно описания.
Загрузилось, поехало.

- - - Добавлено - - -

А как сохранять файл на карту? Синтаксис какой?

- - - Добавлено - - -

Нашел в описании следущее -
только Orion:
- L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKO с SD в RAM диск;
- S ИМЯфайлаНаRAMдиске,ИМЯфайла НаSD.РАСШИРЕНИЕ, - записать данные файла из RAM диска на
SD в формате RKO.

На диске В имеем файл LOADER$.
Запускаем SDOS, ввожу -
A:\S LOADER$,LOADER.RKO
Получаю
NO FILE(S).

WTF?
Пробовал вместо запятой пробел - то же самое.

- - - Добавлено - - -


автоподстановка расширения для запуска файлов RKO есть...
Возможно и есть, но QUAZA не грузится (нет файла), а вот QUAZA.RKO - работает.

Error404
06.09.2018, 15:07
Пожалуйста, выложите в теме самые козырные варианты SDOS для схемы N8VEM и схемы на 555ИР26 (SPI-контроллера)

PVV
06.09.2018, 15:58
А как сохранять файл на карту? Синтаксис какой?

- - - Добавлено - - -

Нашел в описании следущее -
только Orion:
- L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKO с SD в RAM диск;
- S ИМЯфайлаНаRAMдиске,ИМЯфайла НаSD.РАСШИРЕНИЕ, - записать данные файла из RAM диска на
SD в формате RKO.

На диске В имеем файл LOADER$.
Запускаем SDOS, ввожу -
A:\S LOADER$,LOADER.RKO
Получаю
NO FILE(S).

WTF?
Пробовал вместо запятой пробел - то же самое.

- - - Добавлено - - -

SDOS не умеет создавать файлы и не умеет изменять размер уже существующих файлов!
для записи нужно, что бы на карте уже был создан файл с размером не меньше, чем необходимо записать в него данные!
нужно записать на карту на PC файлы размером ~64КБ с именами TMP1,TMP2 и тд, и в них писать все что угодно в SDOS, а потом эти файлы скопировать-переименовать на PC в то, что надо... SDOS ~2КБ только, и для реализации полноценной записи файлов надо ее сильно дорабатывать и увеличивать размер.


Пожалуйста, выложите в теме самые козырные варианты SDOS для схемы N8VEM и схемы на 555ИР26 (SPI-контроллера)
не ир26, а 555ир24
тут на форуме, в какой то ветке, fifan выкладывал эту схему, в Галаксии изначально встроенную, изменений на данный момент нет, поищу вставлю ссылку.
SDOS я менял версии, с доработками больше к другим ПК относящимся, а не Ориону, там только один момент существенный был - на вычитку 2х байт crc при чтении блока в 512 байт, это в 8.6 появилось. Это может проявится на некоторых картах. Я под Орион новые версии не собирал, обратной связи по использованию не было :). Необходимость возникнет, сделать проблем нет.

- - - Добавлено - - -

Да, и еще, по автоподстановку, там в имени файла есть признак автозапуска у Ориона - # -черепашка или как там она называется, вот с ней может что не так, толи ее надо добавлять толи нет, может в этом дело.
Я в Специалисте и Галаксии этой автоподстановкой пользуюсь все время, и на этот кусок кода уже давно не смотрел...

- - - Добавлено - - -

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

Error404
06.09.2018, 16:31
тут на форуме, в какой то ветке, fifan выкладывал эту схему, в Галаксии изначально встроенную, изменений на данный момент нет, поищу вставлю ссылку.
SDOS я менял версии, с доработками больше к другим ПК относящимся, а не Ориону, там только один момент существенный был - на вычитку 2х байт crc при чтении блока в 512 байт, это в 8.6 появилось. Это может проявится на некоторых картах. Я под Орион новые версии не собирал, обратной связи по использованию не было :). Необходимость возникнет, сделать проблем нет.


Я не про схему, схема есть, а про программный код SDOS (также можно и исходник разместить если нет возражений).
Обратная связь вот она только что и пошла :) , так что таки есть необходимость собрать с последними изменениями (лично мне понадобятся варианты для N8VEM и ИР24, MSX собирать не стану - оно по сложности такое же как ИР24, а работает медленнее).

PVV
06.09.2018, 18:54
Я не про схему, схема есть, а про программный код SDOS (также можно и исходник разместить если нет возражений).

Исходники я, периодически, выкладываю, вот актуальная на данный момент, я для ЮТ-88 его собирал-
66152

Ewgeny7
06.09.2018, 21:45
PVV, что за функция в дефайне RWR?
С остальным разобрался, перекомпилировал под Орион, играюсь в эмуляторе.

PVV
06.09.2018, 22:26
PVV, что за функция в дефайне RWR?

Позволяет исключить из кода функционал записи на карту, ну и чтение по R filename..., что почти на 0.5КБ уменьшает размер SDOS и позволяет записать ее в ПЗУ на 2КБ (это актуально для Специалиста и РК-86).

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

b2m
07.09.2018, 09:43
Касательно функционала этого дефайна у меня вообще мысль крутится - оформить как загружаемый с карты код
Даёшь подгружаемые драйверы!
:)

Error404
07.09.2018, 11:51
тут философская проблема курицы и яйца: чтобы подгрузить драйвер с SD, надо чтобы уже был драйвер (иначе читать не будет). :)
так что как мне видится, максимум для того что изначально не было в ПЗУ - SD-оверлеи для доп. функционала более высокого уровня (что и описывал PVV), где мы в итоге приходим к идеологии транзитных команд ОС (как в CP/M, MSDOS, UNIX и проч.)

HardWareMan
07.09.2018, 13:36
Error404, драйвера на сетевую карту скачаете с сервера, а на модем - с интернета. (с)

zx_
02.11.2018, 22:21
ваще ничо в теме нипанятна (с)
схема в галаксии по отношению к специалисту мутновата, cs куда совать

дос к спецу можно и 4 килобайтную )
или ркдос к сд карте приаттачить

PVV
02.11.2018, 22:42
Здесь тема SD-карты и контроллеры, реализации FAT, она не привязана ни к какой конкретной платформе и SD интерфейсу. SDOS, который я пытаюсь развивать, конфигурируется на разные ПК и разные аппаратные SD интерфейсы.
Самый быстрый и удобный в программном плане интерфейс, это вариант родившийся из схемы, предложенной HardWareMan_ом для СпециалистаМХ2, который применен в Галаксии.
Этот интерфейс подключается на ШД и использует любой доступный в используемом ПК CS.
Можно его подключить на порты ВВ55, будет немного медленнее.
Можно использовать схему интерфейса msx, еще немного медленнее.
Можно использовать схему n8vem, будет совсем медленно, но схема очень простая, что весьма привлекательно.
Вообщем, вариантов масса, нужна отправная точка. Что интересует?

zx_
02.11.2018, 22:54
еще более запуталась старуха! (с)

мне вот на ВВ55 интересно, и еще самую простую n8vem , к специалисту

и дос в пзу к этому делу

PVV
02.11.2018, 23:14
ВВ55 та, которая в Специалисте программатор? ПЗУ для хранения SDOS какое, или, правильнее где код размещать, минимум 2КБ, лучше немного больше, 2.1КБ(те, по факту занимать 4КБ, с n8vem интерфейсом код на ~200 байт больше)? В Специалисте ROM диска то нет. Я собирал ПЗУ для Специалиста 0xC000-0xCFFF - монитор, а 0xD000-0xDFFF - SDOS, но никто не запрещает его и с магнитофона загрузить (только я уже и не помню как это делать :)) Дальше ОЗУ, для SDOS нужно 2КБ, можно его в основном ОЗУ разместить, к примеру 0х7000-0х7800, а можно и в 0xE000-0xE7FF. Как это видится?

zx_
03.11.2018, 10:06
да, вв55 программатор которая
в основном озу не нада нав , места там выше хватает

E000H...E7FFH
E800H...EFFFH

у специалиста М здесь можно глянуть карту и адресацию
http://www.spetsialist-mx.ru/index12.html

можно платку переходник ПЗУ - SD Card , прям )
но на ВВ55 лампово весьма смотрится
скорость кабы особой роли не играет

часть ос можно на sd карте держать
ркдос
https://zx-pk.ru/threads/11319-radio-86rk-podklyuchenie-diskovoda/page5.html

PVV
03.11.2018, 17:32
Как я понимаю, мы говорим о СпециалистМ. Для организации окна ОЗУ 0хE000...0хE7FF надо перерезать дорожку DD28-6(ИД4) к DD21:3-9(ЛИ1) и в этот разрыв запаять диод, анодом к ЛИ1, затем добавить диод между DD29-6(ИД4) к DD21:3-9(ЛИ1), так же анодом к ЛИ1 и добавить резистор ~2К с DD21:3-9 на +5В.
SDOS будет сидеть в ПЗУ по адресам 0xD000-0xD7FF(0xDFFF), соответственно в каком типе ПЗУ, РФ2(5), или в одной большой? Как прошивку давать?



можно платку переходник ПЗУ - SD Card , прям )

Это не понял?

upd: я чепуху написал выше, эта переделка не откроет окно ОЗУ, исправляюсь, резать и добавлять диоды надо в другом месте. Надо так: перерезать дорожку DD14:3-8(ЛА3) к DD30-1,DD31(АП16) и в этот разрыв запаять диод, катодом к ЛА3, затем добавить диод между DD29-9(ИД4) к DD30-1,DD31(АП16), катодом к ИД4 и добавить резистор ~2К с DD30-1 на +5В.

zx_
03.11.2018, 22:15
PVV, в традиционных для Специалиста РФ2(5)
в Специалисте М есть места свободные

а в Специалисте Экспресс есть место только под РФ4

PVV
04.11.2018, 00:22
===Мой самый первый, лично собранный, компьютер был именно СпециалистМ.===
Собрал я SDOS в двух вариантах, что-бы его можно было зашить в одну РФ2 - SDOS2K.bin (нет записи на SD и вывода информации о найденной файловой системе FAT16 при инициализации) и полный вариант SDOS.bin.
Размещение в ПЗУ с 0xD000 и ОЗУ с 0xE000. SD подключается на порты ВВ55(которая сидит по адресам 0xF000-0xF7FF) на порты А7- miso (данные от карты в ВВ55), С0- mosi, С5- CLK, С6- CS (это все от ВВ55 к карте).

Во вложении исходники и конфигурационный файл для эмулятора b2m. (это та же версия, что выкладывалась несколькими сообщениями ранее, только собрана под Специалиста).

zx_
04.11.2018, 14:31
Спасибо, перенес кусочек темы в профильную
https://zx-pk.ru/threads/29710-sd-card-dlya-spetsialist-m-i-os.html?p=985070#post985070

Еще краткое описание SDOS хочется-)

PVV
04.11.2018, 23:01
Краткое описание в архиве, в файле ReadMe.txt :).

fifan
05.11.2018, 08:42
А вы разделом не ошиблись, господа?

zx_
05.11.2018, 17:17
PVV, а sdos под zx spectrum будет?

PVV
05.11.2018, 21:16
Пересобрать SDOS под ZX проблем то нет, но и смысла нет. В карте памяти ZX нет дырок, где бы можно было разместить 2КБ кода самой SDOS и 2КБ РАМ. Исключить же из основной памяти 4КБ из имеющихся 48 будет очень расточительно. Есть у меня, правда, идейка с использованием SPI RAM 23K256, но это на развитие.

to fifan - SDOS собирается под разные платформы с разными SD интерфейсами, что вполне в теме топика, а обсуждение сборки SDOS под конкретную платформу, это хороший пример, как раз показывающий, какие вопросы нужно решить при конфигурировании.

otrazhenie
21.03.2022, 11:05
собрал по схеме n8vem схемку. Откуда брать сигнал /F762? Правильно ли я понимаю, что это 80 шина по схеме Ориона?

Error404
22.03.2022, 00:04
собрал по схеме n8vem схемку. Откуда брать сигнал /F762? Правильно ли я понимаю, что это 80 шина по схеме Ориона?

Готового селекта для /F762 в стандартном журнальном Орионе нет, есть /F700 (активен при адресации F700..F7FF). Нужен дополнительный дешифратор чтобы поделить эту область на более мелкие части. Сигнал /F760 можно взять например с контроллера дисковода (обычно это ИД4/ИД7 дающая адресацию F760..F76F или F760..F77F - зависит от схемы) и на паре ЛЭ сложить младшие адреса чтобы получить /F762

otrazhenie
28.03.2022, 11:16
а почему нельзя было взять готовый контроллер сд карты от специалиста?
77180

Собрал схему дешифрации от MSX....не заработало
вот схема дешифрации:77181

Error404
28.03.2022, 22:49
а почему нельзя было взять готовый контроллер сд карты от специалиста?


вам кто-то не дает взять готовый контроллер сд карты от специалиста? руки выкручивает?

otrazhenie
29.03.2022, 08:33
взять то я могу.....и собрать тоже...а толку то? Где взять софт, который его поддерживает?
и я никого не хотел обидеть....

Error404
29.03.2022, 11:43
Ну как где взять. Написать :)

PVV
29.03.2022, 23:06
а почему нельзя было взять готовый контроллер сд карты от специалиста?

Не понятно, в чем вопрос.
Есть, как минимум, два подхода в работе с SD и файловой системе на ней.
1. Можно взять внешний процессор, (avr, stm), научить его работать с картой и файловой системой, и просто давать этому процессору команды, читать файл, сменить каталог и тп, это то, что в фразе выше подразумевается под 'контроллер сд карты от специалиста'.
2. Сделать некий аппаратный интерфейс к нашему 'маленькому ПК' работающий с SD картой и заставить этот 'маленький ПК' самостоятельно разбирать формат файловой системы, используя для этого свои системные ресурсы, в частности, ОЗУ.

Вот здесь и обсуждается второй подход, а в вопросе речь о первом...
Как по мне, использовать avr, stm и тп. это перебор, для всего лишь загрузки ВМ80 или Z80. Тогда проще сразу на этих avr и stm сделать и ВМ80 и наш 'маленький ПК'...

Sandro
30.03.2022, 08:17
Не вижу никаких проблем. Интерфейс SPI -- это 8-бит сдвиговый регистр и счётчик до 8. MMC режим в SD/MMC картах -- это и есть SPI.

otrazhenie
30.03.2022, 12:21
схемотехнически вопросов нет.....а вот програмно - вагон и телега

Sandro
30.03.2022, 12:35
Это обычное блочное устройство с блоками по 512 байт. Единственная проблема, которую я тут вижу -- это сектор в 128 байт у TR-DOS, тут придётся городить буферизацию. Поскольку карта не позволяет писать блок по частям.

PS: Если чего, то поддержку SD Card + FAT16 я когда-то давно уже делал на микроконтроллере. Ничего особо сложного там нет.

reddie
30.03.2022, 13:16
сектор в 128 байт у TR-DOS, тут придётся городить буферизацию
У TR-DOS сектора по 256, что логично для восьмибиток, но не суть. Наиболее простое решение - игнорить "лишнюю" часть сектора. То бишь драйвер пишет/читает полный 512 сектор на карту, но в комп/из компа передаётся половина, остальное добивается незначащими данными. Реальный объём данных на карте, само собой, вырастет вдвое, но, учитывая гигабайтные размеры SD-карт, никакой проблемы в этом не вижу.
Можно даже дублировать передаваемые байты, что даст некую дополнительную "защиту" от ошибок: сверяем два соседних байта, если не совпадают - ошибка. На выходе как раз будут нужные 256.

Sandro
30.03.2022, 14:20
Да, действительно, попутал.
Использовать пол-сектора можно. Выигрыша в надёжности не будет -- встроенный в карту контроллер и так занимается проверками целостности данных и исправлением одиночных ошибок чтения. В случае, если исправить не удалось, то он вообще не будет выдавать никаких данных, просто выдаст ошибку чтения.