Page 1 of 2

TS-Bios FAT driver

PostPosted: Sat, 15.12.2012 23:24:32
by Koshi
Доступ к функционалу осуществляется через RST16. Номер функции задается в регистре A.

Основные функции:
.потоковая запись/чтение
.поиск и открытие файла/каталога (игнорирует регистр, понимает имена типа: "a.txt")
.создание файла/каталога
.удаление файла/каталога (каталог должен быть пустым!)
.работа с потоками (пока-что только один поток)

Документация:
TS-Bios FAT Engine

Пример использования:
example1.asm

BIOS под конфиг от TS-Labs:
TS-Bios - 64кб ROM файл. шить в 0й блок из ROM_PROG или как Custom ROM из ERS
TS-Bios-gluk - версия с GLUK'ом вместо Basic128
TS-Bios-qc311 - версия с Quick Commander вместо Basic128
TS-Bios-rc196 - версия с Real Commander вместо Basic128

P.S. задаём вопросы, если что-то не понятно. баг-репорты и пожелания тоже приветствуются.

Re: TS-Bios FAT driver

PostPosted: Sat, 15.12.2012 23:31:21
by TS-Labs
Во всех функциях драйвера используется ДМА, ибо скорость и ниибёт, но в связи с этим небольшое ограничение: все адреса должны быть чётные. Алсо, вся работа происходит по физическим адресам (в формате ДМА), т.е. никакие #4000 не канают. Чтоб загрузить ебанутэ синклероадрес 0х4000 надо указать значение 0х050000, т.е. 5-я пага, 0-й оффсет. Take it or leave it.
Сделано так, чтоб не раздувать код сотнями чекеров и не проебывать скорость.

Re: TS-Bios FAT driver

PostPosted: Sat, 15.12.2012 23:41:07
by amixgris
TS-Labs wrote:все адреса должны быть чётные

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

Re: TS-Bios FAT driver

PostPosted: Sun, 16.12.2012 22:06:02
by Koshi
апдейт FAT драйвера:
.добавлены защиты в функции чения/записи (от неправильных оффсетов)
.доработана функция удаления файла/каталога (увеличена скорость работы и исправлены статусы на выходе)
.уменьшен размер драйвера до 4033 байт

P.S. все ссылки в первом посте

Re: TS-Bios FAT driver

PostPosted: Mon, 17.12.2012 00:03:31
by N_S
сырцыдровзасекреченыесть?

Re: TS-Bios FAT driver

PostPosted: Fri, 01.03.2013 17:27:51
by shurik-ua
в MKDIR и MKFILE hl должен по идее указывать на структуру FES+1, потому как сама функция указывает что это будет файл или каталог.
из пожеланий: из MKFILE убрать длину создаваемого файла, и добавить функции:
1. дописать к файлу стока-то байт оттуда-то ) и
2. прочитать из файла стока-то байт туда-то

P.S. кстати есть уже проги которые его (драйвер) юзают?, WC смотрел вроде не эзает )

Re: TS-Bios FAT driver

PostPosted: Tue, 27.08.2013 18:17:54
by Koshi
небольшой багфикс: на выходе из функций выживали только флаги ТТ

P.S. ссылки на ROMы в первом посте!

Re: TS-Bios FAT driver

PostPosted: Tue, 27.08.2013 18:26:56
by Koshi
rrurrer wrote:в MKDIR и MKFILE hl должен по идее указывать на структуру FES+1, потому как сама функция указывает что это будет файл или каталог.


про MKdir очепятко, там указывается тупо dirname без флага.
а вот в MKfile таки флаг учитывается - тупо прописывается в ентри.

Re: TS-Bios FAT driver

PostPosted: Fri, 20.09.2013 13:43:07
by shurik-ua
как должен выглядеть FES и что должно быть в регистре А перед вызовом драйвера чтобы выйти на директорию вверх ?
пробовал разные комбинации:
FES:
db 0x10,"..",0
или
db 0x10,".. ",0
с первым байтом и без, с регистром А = 0x10 или 0x11

везде выдаёт ошибку "1" - entry not found

ЧЯДНТ ?

P.S. из корневой папки в любую выбранную директорию входит нормально, а вот назад не получается )

Re: TS-Bios FAT driver

PostPosted: Fri, 20.09.2013 14:15:01
by LessNick
Боюсь, что и не получится. Я лично сохраняю путь, где мы находимся "/dir1/dir2/dir3/dir4" и когда надо вернутся, сбрасываю на root, и прохожу ещё раз, на уже на директорию меньше "/dir1/dir2/dir3/"

Нет, стрындел :) Всё работает. Но я работаю с API WC, так что в драйвере может косяк?

Дядьку, а может стоит попробовать вот так (8+3)?

Code: Select all
        ;0123456789AB
db 0x10,"..          ",0

Re: TS-Bios FAT driver

PostPosted: Fri, 20.09.2013 17:47:12
by Koshi
структура FES не должна попадать в область #8000-#BFFF, как вариант (косяк оный вскоре поправлю).
плюс не уверен, что фильтр пропустит "..", надо проверить ТТ

Re: TS-Bios FAT driver

PostPosted: Fri, 20.09.2013 20:08:50
by shurik-ua
Разобрался )
я не делал вызов функции SETDIR - после того как добавил вызов этой функции всё заработало как надо.
кстати имхо логичнее чтобы она вызывалась автоматически, после вызова функции FENTRY при FES описывающем dir ))

Koshi wrote:структура FES не должна попадать в область #8000-#BFFF

у меня не пентева, поэтому я выпилил из драйвера всё что касается аппаратных примочек пентевы - кстати размер:
> Size of FAT is: 0x0ACA, 2762
> Size of FAT BUFFERS is: 0x1611, 5649
пользуюсь версией полугодовой давности, судя по дате поста №5, возможно сейчас уже не актуально.

P.S.
breeze wrote:Дядьку, а может стоит попробовать вот так (8+3)?

как выяснилось оно работает с любым количеством пробелов )

Re: TS-Bios FAT driver

PostPosted: Fri, 20.09.2013 21:42:41
by LessNick
rrurrer wrote:кстати имхо логичнее чтобы она вызывалась автоматически,…


Не логично! мне например нужно прочитать содержимое каталога, я его «ищу», а зачем читаю как файл!

Re: TS-Bios FAT driver

PostPosted: Fri, 20.09.2013 21:59:07
by shurik-ua
так ведь "прочитать содержимое каталога" это и есть "читать как файл", не знаю как там в WC API, но здесь это именно так.

Хотя возможно у меня просто устаревшая версия.

Re: TS-Bios FAT driver

PostPosted: Thu, 26.09.2013 17:29:35
by amixgris
breeze wrote:Но я работаю с API WC, так что в драйвере может косяк?

Воооот.
Драйвер для wc и драйвер в ПЗУ - две большие разницы. :)
ПЗУшный не-ра-бо-та-ет, так что не питайте надежд. Сам жду - не дождусь, когда Коши всё исправит.

Re: TS-Bios FAT driver

PostPosted: Sat, 28.09.2013 21:08:42
by shurik-ua
Нет ну ПЗУ'шный работает кое-как, запись не проверял - но файлы читает. Единственное что не совсем понятно назначение функции SETDIR, может автор просветит нас ))
Koshi wrote:.работа с потоками (пока-что только один поток)

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

Re: TS-Bios FAT driver

PostPosted: Sun, 12.03.2017 19:48:11
by Grey
Koshi wrote:Документация:
TS-Bios FAT Engine

Дико извиняюсь, может я по ошибке не туда попал? 4 года тему ни кто не трогал и тут вот он я. Но где, собственно, документация по функциям BIOS ? Как то не хочется черз порты самому SD карту читать и тем более писать.
И что такое WC API, а то может я вообще не с той стороны копаю и есть уже, что то более функциональное и стандартизированное ?

Re: TS-Bios FAT driver

PostPosted: Sun, 12.03.2017 19:59:15
by Koshi
Grey wrote:Дико извиняюсь, может я по ошибке не туда попал? 4 года тему ни кто не трогал и тут вот он я. Но где, собственно, документация по функциям BIOS ? Как то не хочется черз порты самому SD карту читать и тем более писать.

поправил ссылки, с гуглокода остались старые...

Grey wrote:И что такое WC API, а то может я вообще не с той стороны копаю и есть уже, что то более функциональное и стандартизированное ?

апи доступное для плагинов из вц, полный функционал тока там.
в роме апи давно не менялось, плюс есть ряд ограничений...

Re: TS-Bios FAT driver

PostPosted: Sun, 12.03.2017 20:19:40
by Grey
Спасибо.
А в будущем не планируется в WC доступ к API из приложений? Чем в принципе плагин от приложения отличается - пусть WC будет в качестве OS

Re: TS-Bios FAT driver

PostPosted: Mon, 13.03.2017 05:51:18
by SfS
По-хорошему, от WC надо отделить работу с файлами в виде отдельного ФАТ-драйвера, чтобы можно было использовать этот фат-драйвер как самостоятельную сущность.
Это было бы самое оно. Тогда, заменив драйвера устройств на не-DMAшные можно было бы работать с фат хоть на спеке128, хоть на фениксе, а не только на Pentevo. Так сказать, кросс-плотформенность:)

Re: TS-Bios FAT driver

PostPosted: Mon, 13.03.2017 10:36:23
by VBI
SfS, does WC needs to be subdivided?
всё это замечательно, в теории

Re: TS-Bios FAT driver

PostPosted: Mon, 13.03.2017 13:16:01
by WBC
SfS wrote:По-хорошему, от WC надо отделить работу с файлами в виде отдельного ФАТ-драйвера, чтобы можно было использовать этот фат-драйвер как самостоятельную сущность.

Категорически плюсую! :) все же 4мб для SPG - не так уж и много, если делать достаточно серьезный прод с кучей ресурсов, то логичнее организовать подгрузки стандартным интерфейсом, а не возить за собой кучу драйверов.

Re: TS-Bios FAT driver

PostPosted: Mon, 13.03.2017 15:56:30
by psb
SfS wrote:Это было бы самое оно. Тогда, заменив драйвера устройств на не-DMAшные можно было бы работать с фат хоть на спеке128

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

Re: TS-Bios FAT driver

PostPosted: Mon, 13.03.2017 17:40:14
by SfS
это ? http://elm-chan.org/fsw/ff/00index_e.html

я пробовал FATFS компилить на SDCC. результат не впечатлил)

Re: TS-Bios FAT driver

PostPosted: Mon, 13.03.2017 17:42:05
by SfS
VBI wrote:SfS, does WC needs to be subdivided?
всё это замечательно, в теории


А почему бы нет? Фактически есть три сущности: драйвер устройства (DMA-неDMA, NEMO, ZConrtoller etc), драйвер файловой системы и все остальное, что к нему обращается.
Люблю когда мухи отдельно, котлеты отдельно:)

К сожалению, практики по расчленению драйвера ФАТ не имею) Я не единственный любитель высказывать идеи)