Az emulátorok alá többféle fájlformátum létezik, ezek leírása olvasható itt.
A .PTP FORMÁTUM
A PTP egy olyan fájlformátum, amely majdnem egy az egyben megfeleltethető a PRIMO kazettás tárolásának, mindössze a szinkronizáló blokkok azok, melyek nincsennek be. Egy teljes PRIMO kazetta tárolható benne, ezért a legjobb megnevezése szalagállomány. Ezek a fájlok egyszerűségük és zártságuk miatt DOS parancssorból összefűzhetők, tehát egy fájlban tárolható akár az összes .PTP fájl tartalma. Ez a formátum elöszőr a Primoemu-nál jelent meg, de támogatja az Ultimo emulátor is. Előnye, hogy a kazetták visszalakíthatóak.
Az összefűzés a következő DOS paranccsal végezhető el:
(A /b kapcsoló nagyon fontos, ez utasítja a copy parancsot a bináris összefűzésre.)
copy /b elso.ptp + masodik.ptp + harmadik.ptp + negyedik.ptp eredmeny.ptp
A PTP fájl belső felépítése
1 - 3 |
FFh sizeL sizeH |
Az első bájt minden esetben FFh, ezt
jelzi a primo fájl kezdetét. A következő két bájt a teljes primo fájl
mérete ezzel a három adminisztrációs bájttal együtt. A hossz nem a teljes
PTP hossza, csak ezé a PRIMO szalagállományé! Lehetséges, hogy a PTP-ben
újabb PRIMO szalagállomány következik majd! |
|
A PTP fájl ezután blokkokból épül fel, minden blokknak tároljuk a hosszát és egy azonosítót. | |||
55h sizeL sizeH | normál blokk | ||
AAh sizeL sizeH | záró blokk | ||
A méret itt is egy WORD, aminek a
felső bájtja legtöbbször 00h, mert a blokk kisebb, mint 256 bájt, de
ez nem szükségszerű. Ez a méret viszont a három adminisztrációs bájt
nélkül tartalmazza a PRIMO blokk hosszát, amit be kell olvasni. A PTP
fájl utolsó blokkja az AAh azonosítóval kezdődik, ha egy program a ROM
rutinokkal lett felvéve (vagyis PRIMO-n lett létrehozva), akkor ez a
blokk a PRIMO END blokkot tartalmazza. |
|||
Az előző 3 bájt után következik mindig maga a PRIMO kazetta blokk, ez lehet név blokk, adat-blokk és záró blokk. | |||
Név-blokk felépítése Feladata az állomány elejének jelzése, az állomány azonosítását célzó - maximálisan 16 karakter hosszúságú - állományév tárolása |
|||
1 |
83h vagy 87h |
Blokk típus |
|
2 |
00h |
Blokk sorszám értéke kötelezően 00h |
|
3 |
ns (01h-10h) (namesize) |
Állománynév-hossz értéke 1-16 lehet. |
|
4 - (4+(ns-1))
|
name |
Állománynév tetszőleges karaktereket tartalmazó 1-16 hosszú karaktersorozat, a név-hossz adja meg hogy hány karakter hosszú is. |
|
((4+ns-1)+1)
|
crc |
Ellenőrző-összeg A blokk típus utáni összes bájt (2 - n) összegének legalsó bájtja. |
|
Adat-blokk felépítése Feladata tetszőleges bináris adatsorozat tárolása |
|||
1 |
F1h, F5h, F7h vagy F9h |
Blokk típus |
|
2 |
bn (00h-99h) (block number) |
Blokk-sorszám Értéke 00h-99h közötti BCD szám. |
|
3 - 4 |
laL laH (load address) |
Betöltési cím Betöltési cím, BASIC program-blokk, BASIC program-adat blokk és képernyő tartalom-blokk esetén relatív cím (a blokkban lévő 1. bájt állományon belüli sorszáma), gépi kódú program-blokk esetén abszolút cím (a blokkban lévő 1. bájt betöltés utáni címe). |
|
5 |
nb (number of bytes) |
Blokkban lévő bájtok száma Értéke 0 - 255 közötti értéket vehet fel, ha 0 az értéke, akkor 256 bájtból álló blokkot jelez. |
|
6 - (6+nb) |
databytes |
Adatbájtok 1-256 darab |
|
(6+nb+1) |
crc |
Ellenőrző-összeg A blokk típus utáni összes bájt (2 - n) összegének legalsó bájtja. |
|
Záró-blokk felépítése Feladata az állomány végének jelzése |
|||
1 |
B1h, B5h, B7h vagy B9h |
Blokk típus |
|
2 |
bn (00h-99h) (block number) |
Blokk-sorszám Értéke 00h-99h közötti BCD szám. |
|
ha 1 = B9h |
saL saH (start address) |
Indítási cím (csak gépi kódú állomány esetén, vagyis ha az első byte=B9h !) |
|
3 - 4 |
|||
|
5 |
crc |
Ellenőrző-összeg A blokk típus utáni összes bájt (2 - n) összegének legalsó bájtja. |
Legvégül egy példa:
A Primoemu default PTP fájlja:
00000000: FF 41 00 55 0F 00 83 00 : 0B 68 65 6C 6C 6F 20 77
00000010: 6F 72 6C 64 67 55 23 00 : F1 01 00 00 1D F0 43 0A
00000020: 00 84 00 05 44 14 00 B2 : 20 22 48 65 6C 6C 6F 20
00000030: 57 6F 72 6C 64 21 22 00 : 00 00 8F AA 03 00 B1 02
00000040: 02
A .PRI (.PRG) FORMÁTUM
A Primo-hoz A típus esetén kis munkával, B és C típusok esetén pedigkönnyedén illeszthető Commodore VC-1541-es floppy drive, mely az egyik megoldás volt a lemezegység használatára a Primo számítógépeken. Egy ilyen fájl betöltéséhez vagy egy lemezkezelő program betöltése szükséges kazettáról, vagy egy ROM csere kell hozzá. (A ROM cseréje után a Primo Break gombját nyomvatartva bekapcsolás/Reset alatt, a csatlakoztatott floppy drive-ról berántja magát a lemezkezelő részt.) A Commmodore floppyn a programok PRG típusú fáljként voltak tárolva, és bár egy ilyen lemezen másfajta fájlok is tárolhatók, a SEQ és USR típusú fájlok kezeléséről egyelőre nincs információnk. Az adatfájlokat DD-s 5,25-ös lemezre Star Commanderrel visszamásolva, újra használhatjuk őket. (A CDOS .ptp programot természetesen le kell töltenünk, és kazettára másolni, vagy ROM csere és loader a lemezre a megoldás.) A .pri (.prg) megoldás hátránya, hogy utántöltős programokat nem kezel, ezért ajánlott a .D64 formátum bevezetése is.)
A .PRI (.PRG) fájl belső felépítése
Egy Primo fájl felépítése a következő:
Egy .PRI (.PRG) fájl adatblokkokból
és záróblokkból épül fel. Az adatblokkok nagyon hasonlítanak a kazettás
adatblokkokhoz, eltekintve attól hogy a szokásos méretű kazettás adatblokktól
sokkal hosszabbak is lehetnek. |
||
Adat-blokk felépítése Feladata tetszőleges bináris adatsorozat tárolása |
||
1 |
D1h, D5h vagy D9h |
Blokk típus |
2 - 3 |
laL laH (load address) |
Betöltési cím Gépi kódú programblokk esetén betöltési cím, BASIC program-blokk és képernyő tartalom-blokk esetén (valószínüleg) relatív cím. (a blokkban lévő 1. bájt állományon belüli sorszáma), gépi kódú program-blokk esetén abszolút cím (a blokkban lévő 1. bájt betöltés utáni címe). |
4 - 5 |
nb (number of bytes) |
Blokkban lévő bájtok száma |
6 - x |
databytes |
Adatbájtok |
A záró-blokk felépítése |
||
1 |
C3h vagy C9h |
Indítás módja |
2 - 3 |
saL saH (start address) |
Indítási cím (csak ha az első byte=C3h!) |
Egyes fájlok ezek után még tartalmaznak egy 0Dh értéket, de mivel használatuk nem jellemző egyik típusra sem, és nem következetes, ezért valószínüleg konvertálási marad is lehet. |
A .PP FORMÁTUM
A PP egy olyan fájlformátum, amely nem más mint egy bináris memória snapshot, és az Ultimo emulátor tartalmazza. Felépítése egyszerű, mert néhány bevezető bájt után csak simán a program bájtjai következnek.
1 - 2 |
load address |
A program betöltési címe a memóriában |
3 - 4 |
start address |
A program indítási címe a memóriában |
4 - EOF-ig |
program |
A program |
A program betöltésekor annyit történik, hogy egyszerűen beírásra kerül a fájl az emulátor RAM-jába, majd az IP átállításra kerül, az indítási címre. Igazából gépi kódra jó főleg, BASIC progik esetén valószínüleg a RUN parancs ROM-beli indítócímét kellene megadni (meg nem volt kipróbálva). |
(László József, Varga Viktor, Grósz Attila)