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

Od: Michal Hučík
Datum: 2.2.2012 11:01
Předmět: Re: cp/m filesystem


Aha, dekuji za vysvetleni ... Tak nejak na pozadi uz mi to zacina 
dochazet, ale asi se tim jeste budu muset trochu prokousat :) Pokud to 
tedy chapu spravne, tak v zavislosti na BSH, BLM a EXM se m.j. urci i 
datovy typ pro sectors v polozce adresare. Tzn., ze pokud je cluster = 
1kB, tak sectors je uint8_t, pri 2kB => uint16_t... ve chvili, kdy 
nastavim napr., ze polozka adresare popisuje 32kB, a cluster = 8kB, tak 
do jedne polozky muzu nacpat 4 alokacni bloky a sectors bude tedy 32 
bitove cislo?

Co jsem se dival napr. do NIPOSu, tak ten nastavuje u vsech disku max. 
pocet polozek adresare na 128, stejne tak to vidim i u cp/m 4.1, tak 
proto mne prekvapilo tvrzeni, ze by to melo byt jen 64...

Michal

Dne 2.2.2012 1:53, Radek Suk (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>
>
> Obecne muze byt vice polozek v adresari nez 64 ale neni bezne. Spise 
> by chtelo rozvinout diskusi na nejakem konktretnim pripade.
>
> Jinak existuje zavislost a to ta ze kdyz se kontroluje adresar coz se 
> dela u FDD ale nedela se to napr. u Ramdisku tak CKS=(DRM+1)/4. Proto 
> pri bezne diskete 720KB je DRM=127 a CKS=32.
>
> EXM rika jak velkou pamet popisuje jedna polozka adresare. Bezne se 
> popisuje 16KB ale pri vetsich ulozistich je to vice. Napr. pri kdyz je 
> zde cislo 3 tak to znamena (3+1)*16=64KB - a tak jeden zaznam v 
> adresari umi popsat 64KB dat.
>
> Co se tyce uint8_t dext - tak zde se vyuziva 5 bitu a tak povolene 
> cislo je 0..31. - Dalsi bity jsou ulozene v S2 a tam se vyuziva 4 
> bity. Jinak v CR se vyuziva 7 bitu - celkem kdyz to spocitas tak je to 
> 16 bitu a to je 2^16*128=8MB a to je max. soubor v cp/m v2.2.
>
> Az bude vice casu tak se chci podivat na to jak jaky system nastavuje 
> RD a FDD. Zatim jsem nasel jiste nedostatky a az si potvrdim ze to 
> spravne chapu tak bych to zde otevrel k diskusi.
>
> Radek
>
>
> Dne 1.2.2012 13:46, Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>>
>>
>> Ahoj,
>>
>> postupuji dale a zacinam tedy pracovat na cp/m filesystemu, ktery je jiz
>> mnohem variabilnejsi a u ktereho bude zajimave vytvorit i drivery pro
>> RD, RD image a pripadne i pro IDE - nicmene prozatim je funkcni jen IDE8
>> v NIPOSu.
>>
>> Jako zdroj informaci o specifikacich formatu jsem pouzil predevsim tuto
>> stranku http://www.sharpmz.org/succpminfo06.htm
>>
>> Popis adresarove polozky jsem asi nejak prehlednul, nebo tam neni,
>> nicmene snad jsem jej poskladal dobre i po pameti.
>>
>> I pres popis jsem bohuzel nejak nepochopil vyznam polozek EXM a CKS.
>> Taky mi vrta hlavou informace, kterou tady pred nedavnem napsal tusim
>> Radek, ze v cp/m na logickem disku nemuze byt vice jak 64 souboru. Pokud
>> vite, muzete mi prosim pomoci zodpovedet tyto 3 veci?
>>
>> Tady jsou struktury uz s mym komentarem:
>>
>> #define FS_CPM_LSECTOR_SIZE 128
>>
>> typedef struct {
>> uint16_t SPT; // SPT - sectors per track
>> uint8_t BSH; // BSH - block shift = pocet cp/m log. sectoru v jednom
>> fyzickem
>> uint8_t BLM; // BLM - block mask = pocet cp/m log. sectoru v clusteru 
>> - 1
>> uint8_t EXM; // EXM - extent mask ???
>> uint16_t DSM; // DSM - highest block number = max. pocet clusteru -
>> systemove bloky - 1
>> uint16_t DRM; // DRM - highest directory entry number = max. pocet
>> polozek adresare - 1
>> uint16_t ALD; // ALD - bitmapa prvnich 16 clusteru, 15. bit = 0.
>> cluster, '1' = pouzito jako directory
>> uint16_t CKS; // CKS - Directory checksum ???
>> uint16_t OFS; // OFS - poc. systemovych stop na zacatku disku, ktere
>> preskocime
>> } FS_CPM_DPB;
>>
>>
>> /*
>> * - fname, ani fext neni ukonceno zadnym specialnim znakem
>> * - nepouzite znaky musi byt vyplneny mezerou (0x20)
>> * - 7. bit 0. bajtu extenze indikuje priznak R/O
>> * - 7. bit 1. bajtu extenze indikuje priznak SYS
>> */
>> typedef struct {
>> uint8_t user; // 0 - 15, 0xe5 = smazana polozka
>> uint8_t fname[8];
>> uint8_t fext[3];
>> uint8_t dext; // cislo extenze (muze jich byt opravdu 256?)
>> uint8_t unused[2];
>> uint8_t sectors;
>> uint16_t clusters[8];
>> } FS_CPM_DITEM;
>>
>>
>>
>> ---
>>
>
>
> ---


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)]