Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Původní podoba příspěvku

Michal Hučík Zpět na příspěvek

Surová data tak, jak byla v roce 2013 stažena z Pandory (HTML zdroj bez úprav, osobní e-mailové adresy jsou maskované).

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