OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 17:10

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 9 ] 
Autor Zpráva
 Předmět příspěvku: Struktura MZF souboru
PříspěvekNapsal: 12.01.2015, 14:42 
Offline
Prvnička

Registrován: 23.09.2014, 11:30
Příspěvky: 16
Bydliště: Pelhřimov
Has thanked: 8 times
Been thanked: 2 times
Zdravím,

chtěl bych se zeptat zkušenějších, jaká je vnitřní struktura MZF souborů?

Domníval jsem se, že to je 128 bytů hlavičky plus vlastní data, vpodstatě tak, jak to je na pásce, jen bez synchronizačních pulsů na začátku bloků. Jenže teď jsem u mnoha (jen pro zajímavost jsem si udělal statistiku, a z cca 2 tisíc MZF, které mám, se to týká asi 40%) zjistil, že jsou o trochu delší, než by měly být. Např. Open-Bas.mzf má podle hlavičky délku 0x43E1, tedy 17377 + 128 bytů hlavička dává 17505 bytů, jenže soubor má fyzicky 17536 bytů, podobně Open-Obj.mzf má v hlavičce délku 0x07D0, tedy 2000 + 128 = 2128 bytů, ale soubor má velikost 2176 bytů.
Ten kousek na koci má nějaký význam, nebo je to jen bordel, který tam odněkud zbyl? Nebo jsou do datového proudu vloženy nějaky byty navíc?

Ve skutečnosti mi jde o tohle: Protože jsem nenašel nic použitelného (viz moje jiné téma: Jak pracovat s Q-diskem), snažím se vytvořit prográmek, který by mi umožnoval vytvářet a rozebírat MZQ soubory. A zkoumáním těch pár MZQ, které mám k dispozici, jsem zjistil že struktura těch MZQ je podobně postižená jako MZF. Nejspíš je tam ten MZF vložen, tak jak je, ale údaj o délce datového bloku je braný z hlavičky a nesouhlasí. Takže se nemohu spolehnout, že za koncem datového bloku (když beru délku z hlavičky) hned začíná hlavička dalšího souboru, ale může to být o pár bytů dál a musím tedy hledat synchonizační sekvenci.

Tak nevím, jestli tohle je drobná chybka, s kterou všechny emulátory počítají, nebo jsem něco přehlédl a délka ve skutečnosti sedí, jen je tam něco, co ty data trochu nafoukne.


Díky za každou informaci!


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 12.01.2015, 16:50 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Duvod je pouze historicky. Typ souboru MZF se drive pouzival na na Sharpovi pod CP/M a zde je mozno zapisovat pouze bloky o velikosti 128 bajtu a tak kazdy soubor ma velikost delitelnou 128. Spravne ma byt konec souboru vyplneny ASCII Ctrl-Z=1AH. Takze kdyz tento soubor MZF nekdo v minulosti nacetl do CP/M napr. pomoci cmt.com tak soubor ma ty "dummy" bajty.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 12.01.2015, 19:09 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Ja ešte doplním, že vo formáte MZQ je hlavička MZF súboru kratšia. Myslím, že má len 24 bajtov. Mimochodom, má niekto po ruke štruktúru MZQ súboru? Ide mi hlavne o to, koľko presne bajtov pojme Quick Disk a čo sú tie bajty na začiatku MZQ.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 12.01.2015, 19:49 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Struktura MZQ je http://www.sharpmz.org/qdinside.htm

Oficialne je kapacita 64KB ale realne je to vice. Asi tak rok a pul nazpet ze jsem komunikoval s nekym kdo realne do QD daval data a ty pak cetl a on presne zjistil kolik dat se do QD maximalne vejde. Bohuzel uz si ted nevzpominam na jmeno ale vim ze Martin8bity byl v diskusi take, treba on si vzpomene.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 13.01.2015, 14:41 
Offline
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1198
Has thanked: 359 times
Been thanked: 304 times
Ahoj,
ten nekdo jsem byl ja. Pokusy jsem delal, kdyz jsme davali dohromady repliku radice pro QDisk.
Ja jsem to mel definovane nejak takto:
Kód:
struct QuickDiskBoot {
  char           Flag;
  char           Crc[3];
  char           Magic[5];
} __attribute__((__packed__));

struct QuickDiskEntry {
  char           ftype;
  char           name[SIZE_NAME];
  unsigned short Exec;
  unsigned short Len;
  unsigned short Start;
} __attribute__((__packed__));


kde:
Kód:
#define SIZE_NAME 17


Ale musite si to zkontrolovat, jestli je to dobre.

Jinak ta QDisketa se formatuje na $EFFF = 61439Byte, ale pri zapisu se na ni da vlozit az 70-75kB. Zalezi na tom, kdy spirala dojede na konec media. Pak to nahlasi nejakou hw chybu.

Mikes

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 14.01.2015, 11:03 
Offline
Prvnička

Registrován: 23.09.2014, 11:30
Příspěvky: 16
Bydliště: Pelhřimov
Has thanked: 8 times
Been thanked: 2 times
suksoft píše:
Duvod je pouze historicky. Typ souboru MZF se drive pouzival na na Sharpovi pod CP/M a zde je mozno zapisovat pouze bloky o velikosti 128 bajtu a tak kazdy soubor ma velikost delitelnou 128. Spravne ma byt konec souboru vyplneny ASCII Ctrl-Z=1AH. Takze kdyz tento soubor MZF nekdo v minulosti nacetl do CP/M napr. pomoci cmt.com tak soubor ma ty "dummy" bajty.


Díky moc, to bude ono. Opravdu jsou všechny "přesahující" MZF zarovnané na násobek 128. Jen s tou výplní 0x1A to nebude tak horké, vesměs je tam nejrůznější bordel. Takže, jestli to správně chápu, když MZF zkrátím o to, co je navíc, nijak ho tím nepoškodím?
Co mě mate, že do MZQ, která jsem zkoumal, je to vetšinou nacpané i s tím ocáskem a nikomu nevadí, že nesouhlasí délka datového bloklu v hlavičce (myslím MZQ hlavičku datového bloku) se skutečností.

Že hlavička souboru je na MZQ kratší vím, stránku http://www.sharpmz.org/qdinside.htm jsem také studoval.
Teď nemám před sebou svoje poznámnky, tak nevím, jestli to napíšu úplně přesně, ale na konci v popisu MZQ se zapsaným souborum je pár chybek: u popisu fileheader frame má být na začátku ještě čtvrtý byte 0xA5 a délka hlavičky je uložena ve dvou bytech, takže začátek má být 00 16 16 A5 00 40 00 xx xx...
A pak tam ještě uvádí, že u filedata frame je type byte nastaven na 01, ale já ho všude našel nastavený na 05.

Ještě jednou dík všem, až nějak pokročím se svým MZQtoolem, určitě se zase ozvu.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 31.01.2016, 22:06 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Tak jsem se koukal na QD format. Je pravda co pise Aleš Zíka ohledne toho 0a5h. Opravdu vzdy po kazdem SYNCS2 se zapisuje 0A5h. Protoze SYNCS1 se zapisuje jen v pripade prvniho bloku QD tak se toto 0a5h zapisuje vzdy a je jedno zda je to hlavicka nebo telo programu.

Dale je pravda, ze oznaceni tela se pouziva cislo 5. Duvod je ten, ze kdyz se zapisuje telo, tak je soucasne potreba zkontrolovat zda zapis byl v poradku a aktualizovat pocet bloku na QD a to opet zapsat do prvniho bloku. V pripade ze by se nastavilo cislo 0 (misto cisla 4) pri vstupu do rutiny tak by se blok zapsal (bylo by tam 1) na QD ale neprobehla by aktualizace poctu zapsanych bloku a neoveril by se zapis (verify).


Prvni (hlavicka) blok ma tuto strukturu:

1 - typ souboru
17 - jmeno souboru ukoncene 0dh
2 - dummy bajty
2 - file size
2 - data adrs
2 - exec adrs
38 - comment

celkem 40h = 64 bajtu

Zajimave je ze pri prikazu QX se ty dummy bajty vynuluji. Pri QS se sem ulozi obsah pametoveho mista 01102h a 01103h.

Take je dobre vedet ze pri prikazu QD se obsah adresare quick disku se nahraje od 0cd90h. Pocita se ze na QD je mozno ulozit maximalne 32 souboru. Prave 31x18+64 je hodnota aby ulozena data neprepsala obrazovku.


uprava1: upravil jsem hodnotu poctu souboru na 32 - realne jsem to zkusil v emulatoru. Neni ani pravda dle http://www.scav.cz/sharp_mz-800/vse_o_M ... Z-1F11.htm ze je to 34 souboru. Take vypocet 31x18+64 je spravne. Presne dva bajty pred obrazovkou se nemeni i pri plne obsazenem adresari na QD.


Naposledy upravil suksoft dne 01.02.2016, 02:40, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 01.02.2016, 00:09 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Možno to nebude pre teba dôležité, ale vytvoril som emuláciu QD do adresára v mojom emulátore. Zatiaľ len čítanie. Načítať z QD sa dá kľudne aj 300 kB. Akurát som si všimol, že vždy, keď sa prečíta pri QD 64 kB z disku, tak sa rozbije zobrazenie adresára. Niečo také, ako keby sa neodriadkovalo po zobrazení názvu súboru, pri ktorom k tomu došlo.


Přílohy:
test.png
test.png [ 8.77 KiB | Zobrazeno 12882 krát ]

_________________
Sharp MZ-821
Milsa MZ-841
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Struktura MZF souboru
PříspěvekNapsal: 01.02.2016, 02:01 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Milsa urcite mne to zajima. Jen prosimte delej neco realneho a tak nedelej image vetsi nez 75 KB. Radeji se drz tech 60 KB.

Urcite zobraz co mas na 0CD90H. Mas tam mit prvni bajt typ souboru, pak 16x jmeno + 1 ukoncovaci znak 0dh, pripadne nasleduji nesmysly. Takze techto 18 bajtu se ma pak i zobrazovat. Funguje to tak, ze se nejdrive nactou vsechny hlavicky, pak se vypne motor a zacne se postupne vypisovat obsah toho bufferu co zacina na 0CD90H.

Podle toho co vidim na obrazovce bych to tipoval ze neni v buferu znak 0dh, to zkontrolujes tim Dumpem. Nebo mas poskozenou rutinku RST 3 - takze jsi nejak prepsal systemove promenne.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 9 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz