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

Od: Michal Hučík
Datum: 1.2.2012 12: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;  



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