В HMount такое предусмотрено - там можно или пихать всё в один блок #0, или отдавать строку монтирования для каждой точки монтирования отдельным блоком - тогда в блоке #2 должен быть список точек монтирования, а затем должно идти столько же отдельных блоков, сколько есть точек монтирования, а в каждом блоке - строка монтирования для данной точки. В MNT.SAV реализована работа только по первому варианту, но добавить второй не сложно.
Интерфейс предусматривает, что контроллер может сам решать, как отдавать список монтирования. Если общий объём списка меньше размера блока #0 - контроллер может отдавать список монтирования обоими способами (так проще начинать отлаживать, потому что MNT.SAV будет проще заставить работать), а если список не лезет в нулевой блок, тогда при чтении нулевого блока контроллер должен отдавать пустой результат и получив такой результат программа уже должна пробовать получить список монтирования более сложным способом - прочитать блок #2, сосчитать точки монтирования и затем прочитать все блоки со строками монтирования для каждой из точек.
- - - Добавлено - - -
Можно сделать ещё интереснее, превратив блоки фиксированного размера в безразмерные простым трюком - при повторных чтениях того же блока отдавать следующие 512 байт "безразмерного" блока. Это очень круто и позволяет реализовать все преимущества безразмерных блоков практически бесплатно. Понятно, что при таком подходе - первое слово в первом прочитанном блоке должно содержать общий размер данных, как это и предусмотрено "безразмерным протоколом".
Тогда переделки MNT.SAV окажутся вообще минимальными и можно будет не морочиться со вторым способом отдачи списка монтирования (этот способ сейчас даже в эмуляторе ДВК не реализован).
Как и положено крутым протоколам - HMount реализует просмотр списка файлов каталога SD-карты так, чтобы можно было передать в ДВК даже бесконечный список файлов. Для этого предусмотрен особый протокол, наиболее близкий концепции 512-байтовых блоков. Там каждое следующее имя из списка файлов передаётся при каждом следующем чтении блока #1.





Ответить с цитированием