Crackovanie súborov vo formáte .TRD
Pri úprave súborov z formátu .TRD (TRDOS disk image) na formát .TAP (tape image) používam nasledovný spôsob. Je založený na na princípe použitia originálneho loadera, takže je potrebné mať k dispozícii Spectrum s TRDOS diskovým systémom alebo emulátor schopný pracovať so súbormi .TRD. Najlepšia voľba je emulátor X128. Umožňuje taktiež ukladanie blokov pamäti priamo ako bytes, takže nie je potrebná konverzia so súborov .TAP. Ďalej je potrebný nejaký monitor strojového kódu. V tomto texte je popísaná práca s monitorom FOXMON (C 1990 Orion). Podrobný návod na obsluhu a možnosť downloadu je tu.
Začneme: Popis TRDOSU
TRDOS je diskový systém pre ZXS48&ZXS128. Nepoužíva FAT tabuľku, takže súbory nie sú nikdy fragmentované. To využívajú TRDOSové loadery a ich autori k tomu, aby mohli mať na disku len jeden súbor pre ten-ktorý program. Všetky potrebné súbory sú pospájané do jedného veľkého bloku. Súbor je potom veľký niekoľko desiatok kB a teda sa nedá nahrať cez štandartný basic. Ešte treba pripomenúť, že pripojený betašrot posúva BASIC o 112 bytes hore. Bez betadisku sa toto dá simulovať tak, že si spravíte riadok 0 s dĺžkou 112 bytes. Potom prihráte BASIC pomocou MERGE a je to...:)
Pokračujeme: Popis loadera
Loadery na TRDOSe sú podstatne jednoduchšie ako na D40/80. Pri nahrávaní sa nastaví disketová hlava na data, ktoré sa majú čítať a číta sa určený počet sektorov. Sektor má dĺžku 256B. Štandartný loader vyzerá nejako takto:
...
LD HL,16384 ;kam loudit
LD B,27 ;koľko sektorov
LD C,5 ;5 znamená LOAD
CALL 15635 ;tu sa to nahrá
...
Pred samotným loadom môžu byť rôzne nastavovačky ale tie môžme úspešne ignorovať. Nastavujú sa rôzne systémové premenné potrebné pre prácu TRDOSu. Väčšinou sa pri spustení loadera môžu vynechať, ale nič sa nestane, keď prebehnú.
Ideme na to: Lámeme loadery
Teraz už môžme pristúpiť k samotnému loadu dema, hry alebo nejakého programu, ktorý nutne potrebujeme k životu [:-)].
Ďalej bude popísaná práca s emulátorom X128 a monitorom FOXMON. Ak nemáte emulátor, môžete si ho stiahnuť. Taktiež si môžete prečítať manuál k programu FOXMON alebo si ho aj stiahnuť (teda, pokiaľ ho ešte nemáte...).
Tak, spustíme X128, zvolíme si disk, na ktorom je náš vysnívaný program (F12 a súbor .TRD). Teraz sa z BASICU 128 prehodíme do BASICu 48 (usr0). Dáme si nejaký RAMTOP, napr. CLEAR 3e4. Potom naštartujeme TRDOS príkazom RANDOMIZE USR 15616. Na už pripravenom disku by mal byť program, ktorý chceme previesť (ak nie, tak F12 a iný disk:). Nahráme ho príkazom MERGE "meno". Môže sa stať, že skončíme hláškou OUT OF RAM. Teraz sa musíme presvedčiť, či sa loader nahral, alebo nie. Zadáme RETURN a vrátime sa do Spectrum BASICu. Ak po LIST obdržíme hlášku Invalid color 0:1 alebo niečo podobné, je to v poriadku. Ak nie, treba zvýšiť RAMTOP príkazom CLEAR.
Loader sme už nahrali, teraz sa doňho pozrieme. Najprv treba zistiť, kde sa štartuje. To sa zistí príkazom LIST. Ak je tam RANDOMIZE USR číslo, je to v pohode, ak nie, štartovacia adresa je 23872. Klávesou F7 vyberieme .TAP súbor, v ktorom máme FOXMON a nahráme ho LOAD "FOXMON"CODE: RANDOMIZE USR 16384. Presunieme sa na štartovaciu adresu (M; ADRESS=). Na začiatku bude nejaké zmazanie obrazovky. Toto treba zrušiť, neskoršie by to vadilo.
...
LD HL,16384 ;toto hádam ani nebudem komentovať...
LD DE,16385
LD BC,6911
LD (HL),L
LDIR
...
Takto vyzerá štandartné CLS zo strojáku. Rusi ale väčšinou používajú mazanie obrazovky odzadu (teda LDDR) alebo všeliaké konštrukcie s
...
LD (HL),A
INC HL
OR (HL)
JR Z,LOOP
...
alebo podobné úchylnosti. Každopádne takéto slučky treba zrušiť, aby nemazali obrazovku a tým aj monitor.
Po CLS by mal nasledovať loader. Väčšinou je to štandartný loader popísaný vyššie. Teraz si vypíšeme čo, kde, koľko sa nahráva. Ešte sa presvedčíme, či sa niekde počas nahrávania nerozpakuje na obrazovku nejaký obrázok (ak áno, zrušiť) a nájdeme štart programu (JP adresa). Nastavíme sa na tento riadok a stlačíme W (návrat do FOXMONu). Potom už len príkazom JP (klávesa R) spustíme loader. V ľavom hornom rohu bude blikať červená "dióda". Keď nahrá všetko, vráti sa do FOXMONa. Teraz treba nastaviť RAMTOP a odchod do basicu. Ak sa hlavný blok programu nahral napr. na adresu 24576, nastavíme sa na adresu 23730 a zadáme POKE 24575(klávesa O). Teraz odštartujeme program na adrese 4535 (JP 4535). Vykoná sa NEW.
Máme zaznačené bloky ako sa nahrali do pamäti a teraz ich môžeme savnúť.
Finále: Save
Emulátor X128 umožňuje ukladať bloky pamäti ako bezhlavičkové súbory (tzv. memory dump). Toto sa deje v menu po stlačení F6. Nastavuje sa tu počiatočná adresa bloku (START) a dĺžka (LENGHT).
Sme v BASICu. Podľa toho, ako sa bloky nahrali do pamäti ich teraz savneme. Zadáme OUT 32765,číslo stránky, stlačíme F6 a savneme blok. Takto savneme celý program a hurá s ním na ozajstné spectrum. Sem to prevedieme pomocou Export Import Manažéra (v prípade D40) alebo na MB02 to tuším funguje priamo cez kábel (aspoň u Busyho). Teraz sa napíše loader (teda nie sám ale ho napíšeme), prípadne sa môže spraviť nejaký install.
Toto je jeden z možných spôsobov, ako previesť betadiskové programy, hry a demá na iný diskový/páskový systém. Prípadné otázky, updaty tejto stránky alebo len tak pokecať si môžete na mojej e-mailovej adrese:
jurica@sknet.sk.
Veľa prevedených programov želá POL/Phantasy