FrOSt-Foundation / FrOSt

Dépôt officiel de FrOSt - OS communautaire Français pour 0x10c
GNU General Public License v3.0
13 stars 5 forks source link

[FS] Implémentation du FAT16 #23

Closed L3nn0x closed 8 years ago

L3nn0x commented 11 years ago

Il faut que quelqu'un code le(s) fs. On peut commencer soit par implémenter un fs existant, soit en inventant le notre. Aucune préférence, si ce n'est une priorité aux fs connus sur dcpu (utilisés par une majorité de personnes).

azertyfun commented 11 years ago

Je laisse ça à yama, je n'y connais strictement rien :/

azertyfun commented 11 years ago

Ah, j'ai trouvé un truc sympa quand même. Bon ben je vais commencer à coder tout ça :)

Yamakaky commented 11 years ago

Tu pense faire quoi ?

azertyfun commented 11 years ago

Un système de fichiers en FAT-16. Par contre pour une questionde performance, je n'implémenterai que les trucs capitaux (genre les fichiers n'ont pas un besoin primordial de données de date par exemple).

Yamakaky commented 11 years ago

Poste d'abord les specs avant de commencer à coder.

De toute façon, on a pas d'horloge ^

azertyfun commented 11 years ago

Ouais mais on pourrait en implémenter la lecture tout de même, ce que je ne ferai pas :p

Yamakaky commented 11 years ago

Je suis d'accord. Yamakaky, seal of approval.

L3nn0x commented 11 years ago

Très très bien tout ça. :D

Yamakaky commented 11 years ago

Du coup, quelle spec?

azertyfun commented 11 years ago

Voilà pour les specs (dites moi si je dois modifier quelque chose ^^) : http://azertyfun.tk/private/FAT16_FrOStSpecs.html

Yamakaky commented 11 years ago

Utilise plutôt gist ;)

Je vais voir à quel point tu es génial.

azertyfun commented 11 years ago

Ca va me faire un poil chier pour faire des tableaux ^^

Yamakaky commented 11 years ago

C'est vrai que c'est pas l'idéal ^^

Petite remarque pour commencer : tu devrait plutôt utiliser des mots de 16 bits, et non des bytes (à moi que tu ne comptes des bytes de 16 bits ?)

L3nn0x commented 11 years ago

Et fais gaffe, il faut essayer de tenir compte des limitations du hw, qui sont une lecture par blocs de je-sais-plus-combien.

Yamakaky commented 11 years ago

Il en a tenu compte, ce FS gère des blocs de 512 mots.

L3nn0x commented 11 years ago

Ok. J'aime tes idées Yama, même si dans un premier temps les sous-dossiers ne sont pas les plus importants.

azertyfun commented 11 years ago

J'espère avoir répondu à tes questions :p

Yamakaky commented 11 years ago
azertyfun commented 11 years ago
Yamakaky commented 11 years ago

… Du coup, comment on fait pour retrouver un faitchier à partir de son chemin ?

azertyfun commented 11 years ago

Tu récup le nom de fichier en parsant et tu compares son arborescence à celle des fichiers qui ont le même nom que lui :p

Par contre se pose la question de la défragmentation, je suppose que le mieux est d'intégrer defrag.exe à la racine. Enfin, je fait le VF et le VFS avant :p

azertyfun commented 11 years ago

Ah oui, au fait, j'utilise bien des bytes de 8 bits, pas trop le choix c'est la norme officielle. Ca va me faire chier mais pas le choix :/

Yamakaky commented 11 years ago

Oui, mais tu utilise la table ou pas ?

Bah non, une simple fonction dans le driver ^^. De toute façon, tous drivers confondus, le plus simple est de cloner le disque sur un autre. Comme ça le driver remet tout bien. Et puis on s'en fout un peu de la défragmentation, l'accès est à temps constant XD

Dommage…

azertyfun commented 11 years ago

Rhâ tu me fait douter je vais voir x)

Pour la défrag, le truc c'est que c'est une fonction "optionnelle", elle ne sert pas à l'utilisateur lambda qui n'utilise pas de disque, et une fonction driver prendrait autant de place que le fs en lui-même ^^

azertyfun commented 11 years ago

Ok je me sujs emmêlé les pinceaux avec la FAT, regarde plutôt ça avant que je màj les specs : http://www.tavi.co.uk/phobos/fat.html#file_allocation_table EDIT : Ok c'est bon j'ai updaté mes specs avec un petit schéma en plus :p

Yamakaky commented 11 years ago

Alors c'est pas la peine d'en écrire une, suffit de clone le disque. ^^

azertyfun commented 11 years ago

Ben je doute que quiconque aie envie de payer des disques à tour de bras pour faire une défragmentation ^^

Yamakaky commented 11 years ago

Pas besoin d'une masse, juste un en plus ^^

azertyfun commented 11 years ago

Même, on a aucune idée du prix d'un disque in-game. Et franchement ça fait pas pro un OS pour qui la seule solution de défragmentation est de tout copier sur un nouveau disque xD M'bref façon ça c'est la dernière étape, avant y'a du chemin à parcourir ! ^^

Yamakaky commented 11 years ago

Bah c'est la méthode recommandée par Apple, vu que les FS unix se fragmentent très peu ^^

azertyfun commented 11 years ago

La méthode apple c'est vraiment un exemple ? Bref. Ensuite là on te parle de FS Windows. Et pas un récent en plus. Donc, si, la défragmentation est nécessaire. Ce qui me fait penser que je devrais le faire sur mon PC. Et sans jeter mon disque dur :D

azertyfun commented 11 years ago

Bullshit, je fais compter des bytes de 16 bits, je doute qu'un quelconque OS s'amuse à implémenter des bytes de 8 bits. Na.

Yamakaky commented 11 years ago

That was a :trollface:

azertyfun commented 11 years ago

On n'est jamais sûr de ce genre de chose avec apple :trollface:

L3nn0x commented 11 years ago

Sinon, une solution est de copier tout le disque en ram (ou au moins une partie) et défragmenter "par morceaux".

azertyfun commented 11 years ago

Ben oui xD

Vaasref commented 11 years ago

Missclick

azertyfun commented 11 years ago

Bon, j'ai pris un peu d'assurance avec la gestion des disques sur le DCPU. Du coup je suis en train de bosser sur le FS, et ça s'annonce très bien. Il me reste un ou deux bugs à corriger et je serai en mesure de détecter et afficher des infos sur un disque compatible avec FFAT-16 (puisque on ne sait pas comment le FAT-16 sera implémenté, j'ai préféré faire une variante que l'on pourra facilement adapter par la suite).

azertyfun commented 11 years ago

J'Y CROIS PAS ! Depuis deux heures que je debug je me suis trompé de registre pour le malloc T_T

Yamakaky commented 11 years ago

XD

L'utilisation de macros permettrait d'éviter ces problèmes. Mais bon, DevCPU a l'air un peu en veille...

azertyfun commented 11 years ago

De toute façon il faut que je puisse gérer les erreurs moi-même, parce que dans ce cas je dois passer par un bout de code qui libère la mémoire, POP les registres et retourne un code d'erreur perso. Cay pas une macro qui va faire ça xD

Mais sinon au final le malloc c'est en B ou en A ? Memoire.dasm raconte en A, mais l'interrupt handler en B ._. EDIT : Euké j'avais pas capté que B dans l'IH = A dans la fonction. My fault.

azertyfun commented 11 years ago

2c81abb J'ai ENFIN terminé l'implémentation des bases de F-FAT16. Il est maintenant possible de formater un disque valide, de lire les infos dessus et de détecter sa validité. Demain j'optimise ça et j'ajoute la gestion des fichiers (j'ai fait un petit plan et tout).

Sinon pour la routine d'initialisation (appelée uniquement au démarrage théoriquement), il faut des push regs ou pas ?

Yamakaky commented 11 years ago

Cool !

Faut voir, ça dépend de l'implémentation de la séquence de boot. Si c'est une suite de jsr, y a pas de problème ;)

azertyfun commented 11 years ago

Mhmm, pour utiliser malloc faut être dans un programme. Donc soit on indentifie le système comme un programme, soit on doit faire jsr init_disk au début du programme launché (ce que n'est pas plus bête du fait qu'un programme qui n'en a pas besoin ne le fera pas). Par contre pour l'instant les infos sur le disque sont accessibles depuis un label, il va falloir que je change ça. ^^'

Vaasref commented 11 years ago

Les meeeecs c'est pas sympa de toucher a FrOSt quand on est en piscine.

Du coup je prends du retard sur FrOSt la. (et faites pas chier sur les accents avec des clavier qwerty c'est la mort a faire)

Yamakaky commented 11 years ago

Quand TU es en piscine ^^

Vaasref commented 11 years ago

Et @FaerieFrOSt il compte pas ?

L3nn0x commented 11 years ago

Bijour, je suis en piscine, mais c'est pas grave, c'est cool que vous continuiez a avancer dessus. Azertyfun, je rajouterai ensuite des int pour l'acces au VFS. Faut maintenant un VFS qui puisse ajouter une couche d'abstraction sur le FS. Je vous fait confiance pour ca. :)

azertyfun commented 11 years ago

Houlà. D'abord faut arriver à faire le FS hein. Parce ce que je suis en train de coder la fonction newFile, et rien que ça c'est la mort. Le problème de ce genre de coding c'est que tu es obligé de chier 200 lignes avant de pouvoir tester le code, donc généralement il y a plusieurs bugs qui s’entremêlent. Je dois avoir un ratio de 15-20% de coding et 75-80% de debug... ._.

L3nn0x commented 11 years ago

XD, ça me rappelle quand je tentais de coder mon foutu ext_2 pour mon OS... Bonne chance en tout cas.