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 Fri, 29.11.2013 16:02:17, edited 2 times in total.
MGN Group
User avatar
Koshi
 
Posts: 95
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: 2637
Joined: Thu, 26.07.2012 01:29:56

Postby amixgris » Sat, 15.12.2012 23:41:07

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

Правильное решеееение...
Нечентые адреса нафиг не нужны для загрузки с внешних носителей.
Кто скорбит по ним, тот ламер, пусть пойдёт и убьётся головой об стену!
User avatar
amixgris
 
Posts: 138
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: 95
Joined: Thu, 26.07.2012 16:41:52

Postby N_S » Mon, 17.12.2012 00:03:31

сырцыдровзасекреченыесть?
User avatar
N_S
 
Posts: 227
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: 20
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: 95
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: 95
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: 20
Joined: Fri, 01.03.2013 16:54:09

Postby breeze » 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 breeze on Fri, 20.09.2013 18:07:19, edited 1 time in total.
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
breeze
 
Posts: 540
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: 95
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: 20
Joined: Fri, 01.03.2013 16:54:09

Postby breeze » Fri, 20.09.2013 21:42:41

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


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

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

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

Хотя возможно у меня просто устаревшая версия.
shurik-ua
 
Posts: 20
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: 138
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: 20
Joined: Fri, 01.03.2013 16:54:09


Return to Coding

Who is online

Users browsing this forum: No registered users and 1 guest

x