9752
UTILITY -> Floppy disc and tape tool
© GPA (2000)
 
 
 
Mastertronic To Disk 1.0
cpc
 
 

Manual n° 1

Mastertronic to disk 1.0 * (c) Tom et Jerry of GPA - 05/2000 ! ------------------------ Ce petit utilitaire va vous permettre de transferer facilement sur disquette certains jeux K7 publies par Mastertronic. Son utilisation est relativement simple et ne necessite pas de connaissance particuliere. Afin de ne pas vous laisser sombrer betement dans le cote sombre de l'informatique (cracking...), on va essayer de comprendre ce que l'on fait ! Si vous voulez aller plus loin, les sources (tres courts !) des routines assembleur sont dans le fichier MASTODSK.ASM. 1) Que peux-t'on transferer avec MastoDsk ? ---------------------------------------- Le programme permet de copier sur disquette les jeux dont le chargeur K7 a les caracteristiques suivantes : * Adresse de chargement en &A200 * Le chargeur n'occupe qu'un seul bloc. * Mnemonique LD DE,&BF38 en &A267 (&11 &38 &BF) A ma connaissance, seul l'editeur anglais Mastertronic a utilise ce type de chargeur, a partir de 1987/1988, je pense... Ce chargeur ne constitue pas a proprement parler une protection. Il permet de charger des fichiers monobloc 'a la queue leu leu'. De fait, on peut decomposer son fonctionnement comme suit : - Chargement du header du fichier - Recuperation des parametres du fichier (depart, longueur, execution) - Chargement du fichier - Execution du programme charge - Si le programme 'rend la main', on recommence avec le fichier suivant. Il est important de noter que tous les programmes charges sont forcement executables, y compris la page de copyright de certains jeux et les pages de presentation. Meme s'il n'est pas complexe, il est interessant de bricoler ce chargeur pour pouvoir transferer rapidement les jeux l'utilisant. Je ne comprends d'ailleurs pas pourquoi a l'epoque ou je faisais des transferts a la pelle (hum hum..), je n'avais pas programme un tel utilitaire ! 2) Je suis nul en informatique mais j'ai des K7 Mastertronic a la maison ! ----------------------------------------------------------------------- Un petit exemple : on veux passer sur disquette le jeu 'Gregory looses his clock', un petit jeu assez mignon finalement, et qui utilise le chargeur K7 pour lequel MastoDsk a ete concu. Important : Apres chaque chargement K7, MastoDsk arrete automatiquement le magnetophone (cela evite d'avoir a repositionner la cassette sur le fichier suivant). Si vous n'avez pas de magnetophone avec un cordon informatique (3 cables) ou un CPC 464, il va vous falloir arreter a la main le magnetophone apres chaque chargement.. Si vous voulez repositionner la bande alors que le magnetophone est 'bloque' par le cpc, faites un CALL &BC6E. 1ere etape : Analyse de la cassette ----------------------------------- a) Mettre la K7 dans le magnetophone (on suit ?) b) Copier sur une disquette vierge le fichier MASTODSK.BAS c) Lancer MASTODSK.BAS d) Dans le menu, choisir l'option <1> Scan & Save K7 Loader e) Appuyez sur la touche <Play> du lecteur de K7, puis sur une touche. Attendre un peu... f) Si le message "Mastertronic loader detected" s'affiche, c'est tout bon. Appuyez sur une touche pour sauvegarder le loader : un fichier MASTODSK.LOA sera cree. Si le loader n'est pas le bon, le programme se plante ou affiche une erreur de chargement ou une erreur memoire. Dommage ! 2eme etape : Chargement des fichiers K7 --------------------------------------- a) Lancer MASTODSK.BAS b) Dans le menu, choisir l'option <2> Save a K7 file to disk c) Saisir le nom du fichier a enregistrer sur disquette. Il est fortement conseille de donner une valeur sequentielle au dernier caractere du fichier (nom ou extension) pour pouvoir ensuite se servir du generateur de loader disquette (ex : GREGORY.1 pour le premier fichier, GREGORY.2 pour le deuxieme, etc... ). On pourrait pourquoi pas les appeler GREGORY.CH1 et GREGORY.CH2 :-) ou bien GREGORY1 et GREGORY2. d) Appuyer la touche <Play> du magnetophone puis sur une touche du clavier. Le loader K7 fait son office (oh, les belles bandes multicolores dans le Border). e) A la fin du chargement, le magnetophone s'arrete, puis le fichier est sauvegarde. Le cpc s'initialise. Un CAT permet de verifier la presence du fichier sur la disquette. Ca marche ! f) On recommence l'operation a partir du point a) jusqu'a ce qu'il n'y ait plus rien a charger... Pour notre exemple, il y aura deux fichiers : GREGORY.1 : la page de copyright compactee GREGORY.2 : le jeu ! Bon, c'est bien gentil, tout ca, mais qu'est ce que je fais de ces fichiers ? Pas de panique, le programme MASTLOAD.BAS vient a la rescousse. Si vous avez bien nomme vos fichiers avec une extension sequentielle, il suffit de modifier la variable FILELOAD$ (ligne 30) en donnant le nom du premier fichier a charger sauvegarder le tout sous un nouveau nom. Encore notre exemple : on charge MASTLOAD.BAS, on modifie la ligne 30 comme suit : 30 FILELOAD$="GREGORY.1" On sauvegarde le fichier sous le nom GREGORY.BAS, et hop, un jeu disquette ! 3) Que fait exactement MastoDsk ? ------------------------------ Les fichiers sur K7 ne sont evidemment pas lisibles directement par l'Amsdos. C'est pour cette raison qu'il nous faut utiliser le chargeur Mastertronic a notre profit. Le programme Basic se content simplement de detourner le loader. Au lieu d'executer le programme qu'il a charge, on demande au cpc d'aller en &BE86 faire les operations suivantes : - recuperation des parametres du fichier charge en memoire (gentiment laisse en clair par le chargeur...). - initialisation du systeme disque - sauvegarde du fichier. - initialisation du cpc une fois que tout est ok. C'est pas plus complique ce cela ! Evidemment, si le programme se compose de plusieurs fichiers (au minimum la page Copyright et le jeu), il faudra lancer autant de fois MastoDsk que necessaire (voir l'exemple plus loin). MastoDsk a ete teste avec succes sur les jeux suivants : Gregory looses his clock Jungle Warfare Octoplex Reveal Super stock car D'autres softs ne 'passent' pas comme Super Nudge 2000, Enterprise, T-bird ou Dynamix, le systeme de chargement n'etant pas le meme. 4) Les limites de MastoDsk... -------------------------- Si le programme K7 est trop gros (utilise la memoire au dessus de &A67B), la sauvegarde du fichier sur disquette plantera. En bricolant un peu le programme assembleur de MastoDsk, il est neanmoins possible de sauvegarder cette zone (recopie en memoire video puis sauvegarde par exemple), mais il faut deja avoir un minimum de notions en assembleur pour pouvoir ensuite faire un chargeur disquette pour le jeu. Si le programme K7 utilise un systeme de chargement de niveaux, MastoDsk ne peut pas les recuperer. Pourquoi ? Parce que ces niveaux ne sont pas charges avec le loader Mastertronic ! La aussi, ca se bricole, mais cela devient complique... Si la zone memoire &BE80-&BEDx est utilise par le programme charge, ca plante, car la routine de sauvegarde est logee a cet endroit (emcore jamais vu sur les cassettes transferees... ).

Manual n° 2

Mastertronic to disk 1.0 * (c) Tom et Jerry of GPA - 05/2000 ! ------------------------ Like many 'budget' games have been sold in U.K, I have decided to realize an international release of the MastoDsk notice. I suppose it can be more useful for you than for french guys... Enjoy, European cpc user ! This tiny utility allows you to copy onto disk some K7 games published by Mastertronic in the early nighneteens. It is quite friendly to use and doesn't need any knowledge in machine language. If you want to understand how MastoDsk proceeds, you can edit the source files MASTODSK.ASM and MASTLOAD.ASM. 1) What kind of software MastoDsk transfers ? ------------------------------------------ The program can copy onto disk games whose k7 loader gets these typical features... * file loading adress in &A200 * file size is ONLY one block * Mnemonic LD DE,&BF38 in &A267 (&11 &38 &BF) As I know, only Mastertronic used to sell games with this loader (but some games from this editor have different loaders, grrr... ). This piece of code cannot be considered like a real protection system. It just loads files in indian file (of course, not Amsdos files !). We can explain its logic like this : - Load header's file - Get file parameters (start, length, exec adress) - Load file - Exec file in memory - If the file is not the main program, we go again ! Note that ALL loaded programs are OBLIGATORY executable ones, even the "copyright advert" in a few games and the intro screens. Well, nothing really tricky... So, why making MastoDsk ? Because it is easier and faster to transfer games with it, even if you possess a Hacker ! 2) So I am not a bug killer on cpc and I get some Mastertronic games ! ------------------------------------------------------------------- Okay, so you want some more explanations ? Let's try to copy the famous (?) 'Gregory looses his clock' game. Important : Each time a K7 file is loaded by MastoDsk, it automaticaly stops the tape recorder (no need to push <Stop> key). To 'unlock' the tape under Basic if you, need it, type CALL &BC6E then <RETURN>. If you don't own a cpc 464 or a tape recorder with a 'remote' plug, you must manually stop the tape each time a file is fitted in memory... 1st step : cassette analysis ---------------------------- a) Put the cassette in the tape recorder (still there ? :-)) b) Copy file MASTODSK.BAS on a blank diskette c) Start MASTODSK.BAS d) Choose option <1> Copy a K7 file to disk e) Push <Play> key on the tape recorder, then press a keyboard key. Wait and see... f) If the cpc displays a message "Mastertronic loader detected", you can use MastoDsk to copy the game onto disk ! Press a key to save the cassette loader : MASTODSK.LOA file will be created. Reset the cpc. If the cassette loader is not MASTODSK compatible, there will be a loading or a memory error. 2nd step : load cassette files ------------------------------ a) Start MASTODSK.BAS b) Choose option <2> Load and save file c) Type in filename to create on the diskette. You must give a name whose last character is 'ASCII sequential' (ex : GREGORY.1 for the first file, GREGORY.2 for the second one). You also could name them GREGORY.CH1 and GREGORY.CH2 :-) or GREGORY1 and GREGORY2. d) Push <Play> key on the tape recorder then press key... e) At the end of the process, the tape stops. Then, the file is saved and the cpc resets. If you look at the diskette directory (CAT command !), you might discover a new file. Oh my god, it is really amazing ! f) Repeat the second step until there is nothing to load on the cassette.. Let's consider our little exemple. At the end of the transfer, there will be two files on the diskette : GREGORY.1 : copyright advert GREGORY.2 : main game ! Fine.. What can I do with theses files, if I don't have any disk loader... Don't panic, everything is under control... If you have named the right way these files, you just have to put in memory MASTLOAD.BAS file. Edit the line 30 and put in FILENAME$ the name of the first file to load. Then, save the new Basic loader ! Our exemple again : we load in memory MASTLOAD.BAS, we update ligne 30 : 30 FILENAME$="GREGORY.1" We save the file with the name GREGORY.BAS. Done ! 3) How MastoDsk can fool the loader ? ---------------------------------- Files stored on the cassette cannot be read directly by Amsdos. So, we use the Mastertronic loader to do this boring job ! MastoDsk just patches it so that, at the end of the loading, your cpc jumps in &BE86 to a save routine. This piece of code to the following operations : - read file parameters (stored in memory by the Mastertronic loader) - init disk system - save file - resets cpc Quite simple, isn't it ? Of course, if the original game has several files, you have to repeat this operation as soon as there is nothing to load. MastoDsk has been succesfully tested with these games : Gregory looses his clock Jungle Warfare Octoplex Reveal Super stock car Unfortunately, it can't transfer Super Nudge 2000, Enterprise, T-bird, Rugby manager or Dynamix. Why ? Their loaders are not the good one... 4) MastoDsk limits... ------------------ If the main program on the cassette needs too much memory (upper &A67B), the save routine will crash. If you deal with assembler, you can modify it. A good technic is to save all the cpc memory using the video memory as temporary buffer. If the game uses file levels, MastoDsk should not be able to copy them onto disk. Why ? Just because theses files are not loaded with the Mastertronic loader, games have their own routines...

Manual n° 3

; Mastertronic to file 1.0 * Diskfile loader (c) T&J 05/2000 ORG &BE80 NOLIST WRITE "MASTLOAD.BIN" buffer_load equ &C000 ; Amsdos vectors... open_file equ &BC77 load_file equ &BC83 closein_file equ &BC7A ; (buffer_load + index_exec) = exec adress of a file ! index_exec equ &A9 filelength db &0 filename db "012345678.123" main LD HL,filename LD A,(filelength) LD B,A LD DE,buffer_load CALL open_file LD BC,index_exec ADD HL,BC LD C,(HL) INC HL LD B,(HL) PUSH BC POP HL LD (save_ex+1),HL EX DE,HL CALL load_file CALL closein_file save_ex CALL &0000 ; exec file in memory CALL inc_nam JR main ; INC last character of the filename inc_nam LD HL,filename LD A,(filelength) DEC A ADD A,L LD L,A INC (HL) RET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Save Mastertronic loader on disk ; T&J of GPA (c) 05/2000 ORG &BE80 NOLIST WRITE "MASTODSK.BIN" filename_length equ &C ; usefull adresses of the Mastertronic loader loader_start equ &BF5D loader_length equ &BF5F loader_exec equ &BF61 ; Amsdos vectors init_disk equ &BCCE openout_file equ &BC8C write_file equ &BC98 closeout_file equ &BC8F ; File datas for saving... exec defw &0000 start defw &0000 length defw &0000 main LD HL,(loader_exec) LD (exec),HL LD HL,(loader_start) LD (start),HL LD HL,(loader_length) LD (length),HL inidisk LD SP,&C000 LD HL,&ABFF LD DE,&40 LD C,&7 CALL init_disk LD HL,filename LD DE,&C000 LD B,filename_length CALL openout_file LD HL,(length) PUSH HL POP DE LD HL,(exec) PUSH HL POP BC LD HL,(start) LD A,&2 ; binary file CALL write_file CALL closeout_file RST &0 filename db "12345678.123",00


Goto Top
CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2021 all rights reserved.
Reproduction forbidden without any express authorization. All the game titles used belong to their respective owners.
Hébergement Web, Mail et serveurs de jeux haute performance