Elkészült végre a formátumok közötti oda-vissza konvertáló program és az ellenőrző összeg generáló program.

Miért készült ellenőrző összeg generáló program is?

Ugyanaz a program PTP és PRI formában teljesen más fájlstruktúrával rendelkezik, mégis megyezik a tartalmuk. Ugyanazt a fájlt kazettán különböző blokkmérettel tárolva, szintén eltérő állományt kapunk. Ezért vezettem be a RAW CRC fogalmát, amely a program összes adatbájtjának, de csakis azoknak az összege. Vagyis az az állomány, ami ténylegesen a Primo memóriájába kerül. Ha ez két programnál megegyezik, akkor azok bájtról bájtra egyeznek, függetlenül a fájlok belső blokkméretétől.

PRI2PTP

PRI2PTP prifile.pri ptpfile.ptp [-n]

prifile.pri
a konvertálandó .PRI (PRG) file

ptpfile.ptp
az eredmény fájl neve (ha már létezik ilyen file, hozzáírja mint a PTP-ben az lehetséges)

- n
opcionális paraméter, ha megadjuk, akkor a konverter futásidőben bekér egy nevet ami a fájl neve lesz a PTP fájlban (a PTP file tartalmazza a fájlnevet a PRI nem). Ha nem adjuk meg, akkor a fájlnév a konvertált PTP fájlban automatikusan "pri2ptp conv." lesz.

Hogyan működik?

A konverter megnyit egy PRI fájlt olvasásra és természetesen megnyit egy másik fájlt írásra, ez lesz a PTP-nk. Ebben először is létre kell hozni egy fejblokkot, mert a lemezes fájl ilyesmit nem tartalmaz. Ebbe írjuk bele vagy az alapértelmezett, vagy a bekért fájlnevet. Azután elkezdi olvasni a blokkokat a PRI fájlból. Ha egy lemezblokk nagyobb, mint egy kazettablokk (mert a kazettablokk hossza 0-256 lehet míg a lemezé 0-65535) akkor bizony ezt szét kell szabdalnia kazettablokk méretű darabokra. Minden más esetben egy az egyben átolvassuk egyik blokkból a másikba a bájtokat, a blokkazonosítót cserélve, és CRC-t számolva. Ez után a záró blokk szükséges, amit gépi kódú program esetén meg lehet határozni a PRI fájlból, de a többi blokktípus esetén döntést hoztam, vagyis a záró blokk az utolsó előtti (tehát nem a lemezes záróblokk, hanem az azt megelőző) blokk típusát veszi fel.

PTP2PRI

PTP2PRI ptpfile.ptp

ptpfile.ptp
A bemeneti fájlban található magnóállományokat konvertálja .pri fájllá. A fájlneveket a PTP állományból olvassa ki. Ha egy adott fájlnév nem érvényes, vagy már létezik, kér egy másik fájlnevet.

Hogyan működik?

Ebben az esetben nem csinálunk mást, mint a kazettás blokkokat rövid lemezes blokkokba másoljuk (a lemezes blokk 16 bit hosszú lehet, a kazettás 8 bit hosszú), mert ebben az irányban az belefér. Ehhez minddössze a blokkhosszúságot kell kétbájtosra konvertálni, vmint eldobálni a CRC értékeket, mert a lemezen ilyen nem kerül tárolásra.

CRCPRIMO

CRCPRIMO -s|-l primofile [primofile] [...]

-s
csak összegzés

-l
részletes info blokkokről, végén összegzés

primofile
lehet PTP vagy PRI file, az első bájt alapján eldönti, ha a PTP-ben több program van, azokat mind vizsgálja

Hogyan működik?

A program a paraméterben megadott fájlokat képes ellenőrizni, illetve generálni belőle RAWCRC-t. Hogy PTP vagy PRI fájllal van dolga, azt képes eldönteni. A megadott fájllistán végigmegy, és PRI fájl esetén megvizsgálja, a blokkokat, és csinál belőle egy RAWCRC-t, míg PTP fájlok esetén minden belső állományon végigmegy, ami a PTP fájlban megtalálható, és RAWCRC-t generál mindegyikhez. A PTP fájlok tartalmaznak belső PRIMO CRC-t is, természetesen ebben az esetben azokat is ellenőrzi.

Az -s paraméter az összegzett listát jelenti, ebben az esetben csak a talált hibákat illetve a RAWCRC-t generálja, míg -l paraméter esetén hosszú listát kapunk a blokkok tételenkénti felsorolásval és elemzésével is, a végén természetesen összegzéssel.

Letöltés

A pri2ptp/ptp2pri/crcprimo programok letölthetők a következő formában (forrásokkal együtt):

Továbbá letölthető még az a tesztfájl sorozat, amit a Majzik István készített (más módon) és amit ellenőrzésre használtam. A ZIP fájl mindenféle blokkokat tartalmazó fájlokat tartalmaz WAV, PRI és PTP formában. Tesztelésre bármilyen program írásánál ami ezen fájltípusok között konvertál átalakít, vígan használható. pri2ptptestfiles.zip

(Varga Viktor, Majzik István)