www.iDNES.cz Zprávy | Sport | Kultura | Ekonomika | Finance | Bydlení | Cestování | Auto | Hobby | Mobil | Technet | Ona | Xman | Revue | Blog | Video | Hry | více
reklama

nepřihlášen










reklama

ikonka pro Vás

 
   
     
Od:
Michal Hučík
Datum:
1.2.2012 13:46
Předmět:
cp/m filesystem




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;  



   
     

 

Contact: ales.vondracek@volny.cz

(c) 2002-2010, MAFRA a.s.
Všechna práva vyhrazena. Společnost MAFRA a.s. nenese jakoukoliv zodpovědnost
za obsah rozesílaných příspěvků, nesou ji výlučně jejich autoři. Autoři jsou povinni respektovat pravidla