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