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> <font><br/> Ahoj,<br/> <br/> 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.<br/> <br/> Jako zdroj informaci o specifikacich formatu jsem pouzil predevsim tuto stranku <a href="http://www.sharpmz.org/succpminfo06.htm">http://www.sharpmz.org/succpminfo06.htm</a><br/> <br/> Popis adresarove polozky jsem asi nejak prehlednul, nebo tam neni, nicmene snad jsem jej poskladal dobre i po pameti.<br/> <br/> 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?<br/> <br/> Tady jsou struktury uz s mym komentarem:<br/> <br/> #define FS_CPM_LSECTOR_SIZE 128<br/> <br/> typedef struct {<br/> uint16_t SPT; // SPT - sectors per track<br/> uint8_t BSH; // BSH - block shift = pocet cp/m log. sectoru v jednom fyzickem<br/> uint8_t BLM; // BLM - block mask = pocet cp/m log. sectoru v clusteru - 1<br/> uint8_t EXM; // EXM - extent mask ???<br/> uint16_t DSM; // DSM - highest block number = max. pocet clusteru - systemove bloky - 1<br/> uint16_t DRM; // DRM - highest directory entry number = max. pocet polozek adresare - 1<br/> uint16_t ALD; // ALD - bitmapa prvnich 16 clusteru, 15. bit = 0. cluster, '1' = pouzito jako directory<br/> uint16_t CKS; // CKS - Directory checksum ???<br/> uint16_t OFS; // OFS - poc. systemovych stop na zacatku disku, ktere preskocime<br/> } FS_CPM_DPB;<br/> <br/> <br/> /*<br/> * - fname, ani fext neni ukonceno zadnym specialnim znakem<br/> * - nepouzite znaky musi byt vyplneny mezerou (0x20)<br/> * - 7. bit 0. bajtu extenze indikuje priznak R/O<br/> * - 7. bit 1. bajtu extenze indikuje priznak SYS<br/> */<br/> typedef struct {<br/> uint8_t user; // 0 - 15, 0xe5 = smazana polozka<br/> uint8_t fname[8];<br/> uint8_t fext[3];<br/> uint8_t dext; // cislo extenze (muze jich byt opravdu 256?)<br/> uint8_t unused[2];<br/> uint8_t sectors;<br/> uint16_t clusters[8];<br/> } FS_CPM_DITEM; <br/> <br/> <br/> </font>