Konference: Počítač SHARP MZ-800 a emulátory

Od: Martin Frohlich
Datum: 16.1.2012 20:02
Předmět: Re: BASIC FD filesystem


Ahoj Michale a ostatní,

Nepomůže ti tenhle dokument?
Sehnal jsem ho někde když jsem sháněl podklady pro svůj MZ disk editor.
 (safra, mít tak čas se tomu pořádně věnovat).

Martin

> ------------ Původní zpráva ------------
> Od: Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) <ordoz tu byla ta zakroucena vec ordoz.com>
> Předmět: BASIC FD filesystem
> Datum: 16.1.2012 16:41:26
> ----------------------------------------
> 
> 
> Ahoj,
> 
> kdyz uz jsem se pohrabal v tech FDC, tak jsem se rozhodl, ze bych mohl 
> dale pokracovat nejakou knihovnou pro praci se
> vsemi soucasnymi souborovymi systemy, ktere jsou pouzivany na Sharpu. 
> Cilem by mely byt funkce, ktere by umoznily vypis
> adresare, cteni, zapis, smazani souboru a podle moznosti FS take 
> nastaveni jeho atributu, ci prejmenovani. Jde mi
> samozrejme predevsim o moznost bezproblemoveho prenosu souboru 
> odkudkoliv kamkoliv. Jakmile budou knihovny hotove, tak
> by samozrejme nemel byt problem vymenit driver treba za takovy, ktery 
> bude obsluhovat primo DSK, nebo ramdisk, ci jeho
> obraz z emulatoru.
> 
> Jako prvni jsem se pustil do sberu informaci o tom jak funguje zakladni 
> format BASIC disket. Tohle jsem posbiral v
> pameti a take odsledoval pruzkumem obsahu disket. Potreboval bych 
> poradit predevsim u radku, na kterych jsou otazniky:
> 
> Predpoklad: BASIC zrejme nepodporuje HD diskety. Je navic limitovany 
> velikosti bitove mapy (250 bajtu) a proto lze na disketu v tomto
> formatu pouzit pro data pouze  512 kB - 12 KB pro ucely systemu a 
> adresar = 500 kB max.
> 
> Soubory jsou ulozeny v sektorech kontinualne. To znamena, ze se po 
> smazani nekolika souboru muze stat, ze i kdyz je na
> disku dostatek mista v kB, tak jiz neni mozne ukladat vetsi soubory, 
> protoze pro ne neni na diskete k dispozici
> dostatecne velky souvisly blok volnych sektoru.
> 
> Format ma obracenou logiku zaznamu a proto se pro vypocet skutecne 
> logicke stopy musi udelat prevod pri kterem se u
> (mz) logicke_stopy invertuje 0. bit (obracena strana diskety)
> 
> Format pouziva alokacni bloky, coz je 16 bitove cislo = (mz) 
> logicka_stopa * 16) + sector - 1
> 
> 
> Zavadec:
> =======
> 
> logicka stopa 1 (v mz 0), sector 1
> 
> 
> offset        size            description
> -------------------------------------------
> 0                1                0x03 - typ souboru zavadece (musi byt 
> 0x03)
> 1                6                IPLPRO
> 7               12 <filename>
> 19               1                0x0d
> 20               2 <SIZE>
> 22               2 <START>
> 24               2 <EXEC>
> 26               4                ???? (nevyuzito?)
> 30               2                alokacni blok zacatku programu (pokud 
> je = 1, tak je zacatek ve 2 sektoru teto stopy a
>                                        program zavadece pak ovsem nesmi 
> byt vetsi jak 14 sektoru = 3584 bajtu = 0x0e00, jinak musi byt umisten v 
> souborove
>                                        casti disku)
> 32                224            ???? (nevyuzito? u nejake diskety jsem 
> od pozice 128 videl nejaky description v ASCII)
> 
> 
> 
> MZ disk info:
> ===========
> 
> logicka stopa 1 (v mz 0), sector 16
> 
> 
> offset        size            description
> -------------------------------------------
> 0                1                ???? (nejaka konstanta? nevyuzito?)
> 1                1                prvni alokacni blok, ktery je k 
> dispozici pro ulozeni filat
>                                      zpravidla 0x30 = 2. (v mz 3.) 
> stopa, 1. sektor
> 
> 2                2                pocet obsazenych alokacnich bloku
>                                      (naformatovana disketa tady ma 0x30 
> = 3 cele stopy)
> 
> 4                2                velikost disku v alokacnich blocich - 
> 1 (u 720 kB diskety = 0x07ff )
> 
> 6              250              bitova mapa disku, kazdy bit zastupuje 
> jeden konkretni alokacni blok, pokud je
>                                       nastaven, tak to znamena, ze misto 
> je obsazeno
>                                       Tady dochazi k limitu 250 * 8 = 
> maximalni pocet alokacnich bloku.
> 
> 
> 
> 
> 
> MZ adresar:
> ==========
> 
> 
> logicka stopa 0 (v mz 1), sector 1 - 10
> 
> ???? nasledujicich 6 sektoru ve stope je nevyuzito?
> 
> max pocet polozek adresare = 77 ????
> V poslednim sektoru je 64 bajtu nevyuzito ????
> 
> 
> offset        size            description
> -------------------------------------------
> 0                1                0x80 ????
> 1                1                0x01 ????
> 2               30                ???? (nepouzito?)
> 
> 32              xx                polozky adresare
> 
> 
> 
> offset        size            description
> -------------------------------------------
> 0                1                file typ - 0x00 = smazana polozka
> 1               16 <filename>
> 17               1                0x0d
> 18               2                ???? (nejaky atribut?)
> 20               2 <SIZE>
> 22               2 <START>
> 24               2 <EXEC>
> 26               4                ???? (nevyuzito?)
> 30               2                alokacni blok
> 
> 
> Cela 3. (v mz 2.) stopa je nevyuzita ???? a od 2. (v mz 3.) stopy 
> zacinaji data prvniho souboru.
> 
> 
> Potreboval bych poradit jak je to s atributy, pripadne souborovymi typy. 
> K cemu slouzi konstanty umistene v sectoru pred direktorarem a zda se 
> neco zajimaveho neskryva v bajtech, ktere jsem oznacil jako nepouzite.
> 
> Michal
> 
> 
> 
> ---
> 
> 
> 

Ostatní příspěvky vlákna:

 
[2012/1 (125)] [2012/2 (34)] [2012/3 (57)] [2012/4 (46)] [2012/5 (40)] [2012/6 (44)] [2012/7 (64)] [2012/8 (57)] [2012/9 (32)] [2012/10 (55)] [2012/11 (25)] [2012/12 (63)]


[1999 (1)] [2000 (168)] [2001 (733)] [2002 (459)] [2003 (654)] [2004 (224)] [2005 (105)] [2006 (182)] [2007 (201)] [2008 (294)] [2009 (363)] [2010 (782)] [2011 (522)] [2012 (642)] [2013 (442)]