28. 8. 2009

Rádobyseriál: TrueWare (1)

Tak jak jsem slíbil, budu zde postupně uveřejňovat kód prográmku TrueWare, který si klade za cíl se stát nativní kopírkou z/na FAT16 medium.

Takže žádné dlouhé okecávání a jdem na to:

Zde si můžete stáhnout zdorjový kód v TXT.

Co dělá tahle rutinka? Vlastně skoro nic, co by bylo vidět, ale na druhé straně připravuje samotný zápis souboru do FAT16 (víme první sektor FAT tabulky, oblast kořenoveho adresáře a první datový sektor).

Tak a co bude dál?

Chybí např. najít volný sektor ve FATce a to si ukážeme příště.

Takže kdyby někdo měl chuť, tak mi muže kód zkontrolovat. Upřímě si myslím, že tam nějaká ta chyba bude, neladil jsem ho na skutečném HW, jen jsem si ho procházel v hlavě...

btw. nevíte o nějakém linux friendly emulátoru, který by podporoval PVL porty, umožňoval si hrát s nějakou image disku (FAT16) a zároveň měl nějaký debugger?

2 komentáře:

dex řekl(a)...

OK, přečetl jsem první dvě instrukce (pseudoinstrukce nepočítám) a už vidím, že jsou blbě.
Dále, instrukce za push hl se dají zkrátit na ld bc,256. Xor a je k ničemu.
Za (bootsec+1), hl opět ld bc,256 (nebo ld bc, 256*1+0).
Taky nevím, proč se v tom úseku složitě schovává de do hl a zase zpět, když se hned hl zase přemaže něčím jiným. Uložit de by šlo jednodušeji (ld h,d, ld e,l nebo push de, pop hl a mít jen přesun jedním směrem, ze zachováním de, než tam a zase zpět).
nasobeniHLDE - počítáš, že výsledek bude vždy menší než 65536 (proč jinak by sis vyšší word hned přesmahnul popem?) Pak mi ale vracení výsledku v ixhl přijde jako lopata na komára (zaprasí celou registrovou sadu, musíš předtím pushovat vše včetně ix).
Dávat do d nulu a do e d jenom proto, abys pak mohl uložit na dvě adresy dvě nuly, mi přijde zbytečnost (xor a, ld (ix+2),a, ld (ix+3),a).
Pak je tu readsec a read_sec.

Tak jo, chutě pokračuj. Já teď budu dva týdny mimo, tak budeš mít ode mně pokoj :o)

Shrek řekl(a)...

Dexi diky, ja jsem si vcera precetl to co jsem sem poslal a zacnu asi od znova...

jsou tam sileny nedodelky, polododelany myslenky (problem je, ze uz nevim co jsem tim presne myslel) atd...

takze jsem si vcera pripravil prostredi na zkouseni (na realne masine, seru na emul) a dnes se na to vrhnu...