DCMOTO - Emulateur universel Thomson 8 bits : Forum - Programmation - [TO7-70]EXEC 1216
Retour : Accueil » Programmation
Auteur Message
FabriceFABS
Visiteur
Date : 12/09/2004 à 15h39
Voilà, je suis désireux de transferrer un max de progs sur cassette sur des disquettes 3P1/2 de 320Ko/Face.

Mais j'en ai pas mal qui sont protégés, et c un peu embêttant, car je n'ai aucune autre action que le simple transfert pour des raisons pratiques.
Exec 1216 marche qquefois mais pas toujours.

Il y aurait-il une soluce ?
Merci !
en haut - en bas
Daniel
Visiteur
Date : 12/09/2004 à 18h08
Ce que tu veux faire est très compliqué.

Pour les programmes Basic simples (qui n'en chargent pas d'autres), pas de problème, ton exec 1216 fonctionne.

Pour les jeux plus complexes, même non protégés, tu auras des problèmes car souvent la version cassette n'est pas transposable sur disquette sans modifications. Tu peux espérer y arriver pour les programme Basic. Par contre s'il y a des programmes en langage machine c'est en général plus difficile.

Enfin, les jeux sur cassette bien protégés sont pratiquement impossibles à copier sur disquette. Tu n'arriveras même pas à lire les fichiers de la cassette avec les commandes Basic.

Le plus simple est alors de télécharger la version disquette du jeu au format .sap, et de la copier sur une disquette Thomson avec l'utilitaire saptools2 d'Eric Botcazou (site Nostalgies Thomsonistes).

Daniel
en haut - en bas
FabriceFABS
Visiteur
Date : 12/09/2004 à 18h33
A vrai dire, c des progs qui sont issus de qqun à qui j'ai acheté un énorme ensomble thomson.

Sinon, il m'est arrivé de taper :
Citation :
Exec 1216

et d'obtenir :
Citation :
Protected Program (Ou ?PP Error)

Donc apparement une double protection...

Non, à vrai dire, il s'agit surtout de soft d'éducation que je recense un peu pour mettre des K7 un peu de coté...

Voili voilu
en haut - en bas
nouvelhermes
Visiteur
Date : 12/09/2004 à 19h42
Excuse moi, c'est peut-être une connerie, mais il y a très longtemps, je me souviens avoir utilisé la cartouche assmbleur pour faire de tels transferts (mais c'était sur MO5), si ça peut t'aider...
en haut - en bas
FabriceFABS
Visiteur
Date : 12/09/2004 à 19h57
Tu sais, faut pas t'excuser, toutes les idées sont les bienvenues et justement je ne sais pas si la tienne est valable, mais ça me fais penser que je me demande si, une fois le programme chargé en mémoire via le basic, si on pouvais faire une sauvegarde des baques en langage machine justement par
Citation :
SAVEM
mais peut-être faut-il connaitre d'autres choses... et les adresses justement.

Mais ton idée n'est pas mauvaise, vraiment pas !
en haut - en bas
Daniel
Visiteur
Date : 12/09/2004 à 21h38
Vous êtes partis tous les deux dans des délires pas possibles
Je ne sais pas ce que vous fumez, mais ça doit être nouveau
Relisez bien mon post, je crois avoir écrit l'essentiel.

Il est vrai qu'on peut protéger un programme par d'autres procédés que le système standard du Basic. Par exemple en créant des lignes de plus de 255 octets. L'exec 1216 n'enlèvera que la protection du Basic.

Le SAVEM peut effectivement permettre de récupérer en mémoire des morceaux ou même la totalité d'un programme en langage machine. Encore faut-il pouvoir revenir au Basic sans l'écraser. En général ce n'est pas possible quand le programme est protégé.

Daniel
en haut - en bas
FabriceFABS
Visiteur
Date : 12/09/2004 à 22h13
Ah bon tu crois ?
en haut - en bas
Daniel
Visiteur
Date : 13/09/2004 à 08h47
Pour revenir à la cartouche assembleur :

C'est vrai qu'elle peut être utile pour modifier un programme binaire protégé (comme dans certains jeux).

Mais les programmes éducatifs sont le plus souvent en Basic, et protégés uniquement par la protection standard du Basic. Le problème n'est pas de les déprotéger, mais de les modifier pour qu'ils tournent sur disquette.

Dans ces softs sur cassette, on trouve des RUN" et des LOADM" sans nom de fichier. Sur disquette le nom de fichier est obligatoire. Idem pour les ouvertures de fichiers en lecture.

Daniel
en haut - en bas
FabriceFABS
Visiteur
Date : 13/09/2004 à 12h15
C vrai tu as raison, c un prog qui fait qques lignes (le premier chargé) avec ces instructions là.
Mais un simple
Citation :
SKIPF
permet d'identifier le nom du prog qui suit.
Un simple
Citation :
5 INPUT "Périphérique par défaut : ",A$:DEVICE A$
au début de ce petit prog peut rédoudre bcp et même bien marcher, n'est-ce pas ?
en haut - en bas
Daniel
Visiteur
Date : 13/09/2004 à 13h34
Tu as raison, ça peut marcher, mais pas dans tous les cas.

En particulier, un RUN"CASS:" marche bien.
Par contre, un RUN"0:" donnera toujours une erreur.

Il faut donc relire tout le programme pour vérifier tous les appels de programmes et ouvertures de fichiers.

Daniel
en haut - en bas
FabriceFABS
Visiteur
Date : 21/09/2004 à 14h35
Une petite astuce bizarre que je viens de constater... :

Exec 1216 semble plutot bien marcher en Basic 1.0 alors que sous Basic 128, impossible (Protected Program)...

Etrange...

J'ai dailleurs remarqué qu'un PP empêchait la commande SAVEM aussi... Maline la machine
en haut - en bas
Daniel
Visiteur
Date : 21/09/2004 à 15h46
Il y a une foule de solutions !

- Transférer le programme protégé sur PC et le déprotéger par l'utilitaire DCPROBAS (en téléchargement sur dcmoto)

- Faire un fichier .fd avec DCFDUTIL, le charger avec DCMOTO, aller dans le debugger, décocher la case "programme protégé", sauver le programme

- Sur TO7/70 ajouter une nouvelle instruction au Basic, pour remettre à zéro le bit de protection. Quand le programme protégé est chargé tu ne peux plus faire de POKE, par contre tu peux lancer ton instruction qui le déprotège. Une variante est de détourner une instruction Basic existante peu utilisée, c'est beaucoup plus simple que d'en créer une nouvelle.

- Tu peux aussi écrire un programme Basic TO7/70, équivalent à DCPROBAS, qui décrypte le fichier protégé en le lisant sur la disquette et le réécrit sous un autre nom.

J'arrête là, mais il y a certainement plusieurs dizaines d'autres solutions

Daniel
en haut - en bas
Daniel
Visiteur
Date : 21/09/2004 à 16h26
En Basic 128, le cryptage d'un programme Basic protégé est identique, par contre l'adresse de l'octet indiquant la protection est différente. C'est pourquoi dans le debugger de DCMOTO il y a deux cases différentes pour la protection des programmes : Basic 1 d'une part, Basic 128, 256 et 512 d'autre part.

Pareil pour l' EXEC 1216. L'organisation des "vecteurs Basic" en RAM est totalement différente. Je ne sais même pas s'il existe l'équivalent en Basic 128. De toutes façon, c'est une méthode pas très propre pour déprotéger un programme : si mes souvenirs sont exacts, après un exec 1216 les erreurs ne sont plus détectées. Il vaut mieux interrompre immédiatement le programme, sauver la version déprotégée, puis la recharger.

Daniel
en haut - en bas
Daniel
Visiteur
Date : 21/09/2004 à 16h34
J'ai oublié de citer une méthode de déprotection géniale, inventée par mon ami Michele pour son Olivetti Prodest PC128. Elle marche très bien sur MO6 et MO5NR, et doit pouvoir se transposer facilement sur TO7/70. Elle est décrite en bas de la page mo6export

Daniel
en haut - en bas
FabriceFABS
Visiteur
Date : 21/09/2004 à 23h00
Oui c vrai Daniel, le TO a desfois qques réactions bizarres après celà et j'ai pris l'habitude de faire comme tu as dis, car des choses étranges arrivent vites (platages, mauvaises lectures de DIR, ?SN Error pour un list ou dir, etc)
Sinon, pour Michèle, je ne connais pas la commande "BANK". Existe-elle bien sur TO ?

@++

FABS
en haut - en bas
Daniel
Visiteur
Date : 22/09/2004 à 08h39
BANK existe en Basic 128, pas en Basic 1.

Daniel
en haut - en bas
FabriceFABS
Visiteur
Date : 22/09/2004 à 10h40
Franchement, je découvre cette commade...
Quel est son but ? Comme Clear ?

FABS
en haut - en bas
Daniel
Visiteur
Date : 22/09/2004 à 12h16
Pour comprendre l'instruction BANK, je conseille la lecture de la doc du Basic 128 ou 256 ou 512.

Je n'ai pas le manuel de la cartouche Basic 128, par contre le guide du MO6 et le Basic du TO9 sont en téléchargement sur le site dcmoto (dossier documentation). A part la taille mémoire, qui est différente, c'est à peu près le même fonctionnement sur TO7/70.

Daniel
en haut - en bas