Konference: Počítač SHARP MZ-800 a emulátory
Od: | Radek Suk |
Datum: | 16.1.2012 17:30 |
Předmět: | Re: BASIC FD filesystem |
Ahoj Michale
Podive je na
http://www.sharpmz.org/index.html
konkretne na -> programming -> disk drives -> disk in detail
at nahodou nezjistujes neco co jiz nekdo popsal. Mozna tam neco
zajimaveho najdes. Jinak je dobre ze to chces udelat. Zkus udelat nejake
web stranky kde popises co zjistis.
Radek
Dne 16.1.2012 16:40, Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>
>
> 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)]