TS-Bios FAT driver

CALL'ы и RET'ы

Postby Koshi » Sat, 15.12.2012 23:24:32

Доступ к функционалу осуществляется через 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. задаём вопросы, если что-то не понятно. баг-репорты и пожелания тоже приветствуются.
Last edited by Koshi on Sun, 12.03.2017 19:57:40, edited 4 times in total.
MGN Group
User avatar
Koshi
 
Posts: 256
Joined: Thu, 26.07.2012 16:41:52

Postby TS-Labs » Sat, 15.12.2012 23:31:21

Во всех функциях драйвера используется ДМА, ибо скорость и ниибёт, но в связи с этим небольшое ограничение: все адреса должны быть чётные. Алсо, вся работа происходит по физическим адресам (в формате ДМА), т.е. никакие #4000 не канают. Чтоб загрузить ебанутэ синклероадрес 0х4000 надо указать значение 0х050000, т.е. 5-я пага, 0-й оффсет. Take it or leave it.
Сделано так, чтоб не раздувать код сотнями чекеров и не проебывать скорость.
User avatar
TS-Labs
 
Posts: 4967
Joined: Thu, 26.07.2012 01:29:56

Postby amixgris » Sat, 15.12.2012 23:41:07

TS-Labs wrote:все адреса должны быть чётные

Правильное решеееение...
Нечентые адреса нафиг не нужны для загрузки с внешних носителей.
Кто скорбит по ним, тот ламер, пусть пойдёт и убьётся головой об стену!
User avatar
amixgris
 
Posts: 161
Joined: Mon, 30.07.2012 03:22:48
Location: Самара

Postby Koshi » Sun, 16.12.2012 22:06:02

апдейт FAT драйвера:
.добавлены защиты в функции чения/записи (от неправильных оффсетов)
.доработана функция удаления файла/каталога (увеличена скорость работы и исправлены статусы на выходе)
.уменьшен размер драйвера до 4033 байт

P.S. все ссылки в первом посте
MGN Group
User avatar
Koshi
 
Posts: 256
Joined: Thu, 26.07.2012 16:41:52

Postby N_S » Mon, 17.12.2012 00:03:31

сырцыдровзасекреченыесть?
User avatar
N_S
 
Posts: 229
Joined: Sun, 05.08.2012 22:39:51

Postby shurik-ua » Fri, 01.03.2013 17:27:51

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

P.S. кстати есть уже проги которые его (драйвер) юзают?, WC смотрел вроде не эзает )
shurik-ua
 
Posts: 22
Joined: Fri, 01.03.2013 16:54:09

Postby Koshi » Tue, 27.08.2013 18:17:54

небольшой багфикс: на выходе из функций выживали только флаги ТТ

P.S. ссылки на ROMы в первом посте!
Last edited by Koshi on Tue, 27.08.2013 18:47:22, edited 1 time in total.
MGN Group
User avatar
Koshi
 
Posts: 256
Joined: Thu, 26.07.2012 16:41:52

Postby Koshi » Tue, 27.08.2013 18:26:56

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


про MKdir очепятко, там указывается тупо dirname без флага.
а вот в MKfile таки флаг учитывается - тупо прописывается в ентри.
MGN Group
User avatar
Koshi
 
Posts: 256
Joined: Thu, 26.07.2012 16:41:52

Postby shurik-ua » Fri, 20.09.2013 13:43:07

как должен выглядеть FES и что должно быть в регистре А перед вызовом драйвера чтобы выйти на директорию вверх ?
пробовал разные комбинации:
FES:
db 0x10,"..",0
или
db 0x10,".. ",0
с первым байтом и без, с регистром А = 0x10 или 0x11

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

ЧЯДНТ ?

P.S. из корневой папки в любую выбранную директорию входит нормально, а вот назад не получается )
shurik-ua
 
Posts: 22
Joined: Fri, 01.03.2013 16:54:09

Postby LessNick » Fri, 20.09.2013 14:15:01

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

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

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

Code: Select all
        ;0123456789AB
db 0x10,"..          ",0
Last edited by LessNick on Fri, 20.09.2013 18:07:19, edited 1 time in total.
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 864
Joined: Thu, 26.07.2012 15:00:53

Postby Koshi » Fri, 20.09.2013 17:47:12

структура FES не должна попадать в область #8000-#BFFF, как вариант (косяк оный вскоре поправлю).
плюс не уверен, что фильтр пропустит "..", надо проверить ТТ
MGN Group
User avatar
Koshi
 
Posts: 256
Joined: Thu, 26.07.2012 16:41:52

Postby shurik-ua » Fri, 20.09.2013 20:08:50

Разобрался )
я не делал вызов функции 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)?

как выяснилось оно работает с любым количеством пробелов )
shurik-ua
 
Posts: 22
Joined: Fri, 01.03.2013 16:54:09

Postby LessNick » Fri, 20.09.2013 21:42:41

rrurrer wrote:кстати имхо логичнее чтобы она вызывалась автоматически,…


Не логично! мне например нужно прочитать содержимое каталога, я его «ищу», а зачем читаю как файл!
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 864
Joined: Thu, 26.07.2012 15:00:53

Postby shurik-ua » Fri, 20.09.2013 21:59:07

так ведь "прочитать содержимое каталога" это и есть "читать как файл", не знаю как там в WC API, но здесь это именно так.

Хотя возможно у меня просто устаревшая версия.
shurik-ua
 
Posts: 22
Joined: Fri, 01.03.2013 16:54:09

Postby amixgris » Thu, 26.09.2013 17:29:35

breeze wrote:Но я работаю с API WC, так что в драйвере может косяк?

Воооот.
Драйвер для wc и драйвер в ПЗУ - две большие разницы. :)
ПЗУшный не-ра-бо-та-ет, так что не питайте надежд. Сам жду - не дождусь, когда Коши всё исправит.
User avatar
amixgris
 
Posts: 161
Joined: Mon, 30.07.2012 03:22:48
Location: Самара

Postby shurik-ua » Sat, 28.09.2013 21:08:42

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

В принципе драйвер и сейчас можно юзать, но если сделать хотя-бы 2 потока (а лучше чтоб в опциях компиляции можно было указать), то больше ничего и не нужно для полного счастья (разве что LFN ).
shurik-ua
 
Posts: 22
Joined: Fri, 01.03.2013 16:54:09

Postby Grey » Sun, 12.03.2017 19:48:11

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

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

Postby Koshi » Sun, 12.03.2017 19:59:15

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

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

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

апи доступное для плагинов из вц, полный функционал тока там.
в роме апи давно не менялось, плюс есть ряд ограничений...
MGN Group
User avatar
Koshi
 
Posts: 256
Joined: Thu, 26.07.2012 16:41:52

Postby Grey » Sun, 12.03.2017 20:19:40

Спасибо.
А в будущем не планируется в WC доступ к API из приложений? Чем в принципе плагин от приложения отличается - пусть WC будет в качестве OS
Grey
 
Posts: 93
Joined: Fri, 29.11.2013 15:58:02

Postby SfS » Mon, 13.03.2017 05:51:18

По-хорошему, от WC надо отделить работу с файлами в виде отдельного ФАТ-драйвера, чтобы можно было использовать этот фат-драйвер как самостоятельную сущность.
Это было бы самое оно. Тогда, заменив драйвера устройств на не-DMAшные можно было бы работать с фат хоть на спеке128, хоть на фениксе, а не только на Pentevo. Так сказать, кросс-плотформенность:)
SfS
 
Posts: 108
Joined: Thu, 23.02.2017 17:13:01

Postby VBI » Mon, 13.03.2017 10:36:23

SfS, does WC needs to be subdivided?
всё это замечательно, в теории
User avatar
VBI
 
Posts: 1842
Joined: Mon, 03.06.2013 09:20:29

Postby WBC » Mon, 13.03.2017 13:16:01

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

Категорически плюсую! :) все же 4мб для SPG - не так уж и много, если делать достаточно серьезный прод с кучей ресурсов, то логичнее организовать подгрузки стандартным интерфейсом, а не возить за собой кучу драйверов.
--wbcbz7
User avatar
WBC
 
Posts: 257
Joined: Fri, 19.09.2014 10:23:23
Location: Omsk \ Russia

Postby psb » Mon, 13.03.2017 15:56:30

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

а чем fatfs не устраивает? работает даже на тостере, всё поддерживает, апи прямее некуда. единственный аргумент за драйвер коши - скорость и дма (хотя цифр я так и не увидел).
User avatar
psb
 
Posts: 715
Joined: Tue, 30.12.2014 23:22:32

Postby SfS » Mon, 13.03.2017 17:40:14

это ? http://elm-chan.org/fsw/ff/00index_e.html

я пробовал FATFS компилить на SDCC. результат не впечатлил)
SfS
 
Posts: 108
Joined: Thu, 23.02.2017 17:13:01

Postby SfS » Mon, 13.03.2017 17:42:05

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


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

К сожалению, практики по расчленению драйвера ФАТ не имею) Я не единственный любитель высказывать идеи)
SfS
 
Posts: 108
Joined: Thu, 23.02.2017 17:13:01

Next

Return to Coding

Who is online

Users browsing this forum: No registered users and 1 guest

x