Copie des logiciels VG5000 protégés

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Mokona
Messages : 1041
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Copie des logiciels VG5000 protégés

Message par Mokona »

joaopa a écrit : 16 juil. 2019 12:39 Sinon, la méthode la plus rapide avec les outils actuels est de prendre un éditeur hexa et de mettre les octets de lignes de démarrage et de protection à 0. Mais ce n'est pas drôle.
... en effet. Je suis allé chercher trop loin.
Markerror
Messages : 2123
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: Copie des logiciels VG5000 protégés

Message par Markerror »

Merci pour les explications sur le Basic Mokona, ce sont des informations à conserver ! Après, pourquoi 6552 et pas 6554, seul Microsoft pourrait nous le dire (enfin, les très vieux de chez Microsoft)...

[Edit]
Hum, je devais être fatigué que j'ai écris ça... Si on utilise une valeur au dessus de 6552, avec le calcul que fait le Basic, on peut utiliser des lignes dont la valeur tiendrait sur plus de 16 bits... Bref, mystère résolu :-).
Markerror
Messages : 2123
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: Copie des logiciels VG5000 protégés

Message par Markerror »

Bon, après avoir gentiment galéré avec le smartphone Samsung récupéré pour l'occasion à mon boulot (le port casque est trop "petit" pour les jack d'un cordon VG5000 officiel grrrr... Je m'en suis sorti avec un cordon MSX récent acheté sur E-Bay), j'ai pu enfin charger en mémoire le déprotecteur Basic et charger ensuite Carnet d'adresses).

Résultat des courses :
PEEK(18474)=129
PEEK(18475)=19

Taille du fichier : 4993 octets

A noter que le VG5000 a du mal afficher certaines parties du listing (effacement de l'écran par exemple entre 1020 et 1040) et qu'il essaie de décoder les routines en langage machine stockées à la fin du programme.
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: Copie des logiciels VG5000 protégés

Message par joaopa »

Merci Markerror,
c'est comme celle sur le fichier k7 pour dcvg5k. Vraiment intéressant comment a été fabriquée cette cassette.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Copie des logiciels VG5000 protégés

Message par Carl »

Quelques rappels sur la protections des programmes VG5000 :
Image4.jpg
Image4.jpg (344.86 Kio) Consulté 2446 fois
Image3.jpg
Image3.jpg (316.08 Kio) Consulté 2446 fois
Image5.jpg
Image5.jpg (312.36 Kio) Consulté 2446 fois
Image6.jpg
Image6.jpg (143.38 Kio) Consulté 2446 fois
Avatar de l’utilisateur
Mokona
Messages : 1041
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Copie des logiciels VG5000 protégés

Message par Mokona »

Markerror a écrit : 17 juil. 2019 20:41 Merci pour les explications sur le Basic Mokona, ce sont des informations à conserver ! Après, pourquoi 6552 et pas 6554, seul Microsoft pourrait nous le dire (enfin, les très vieux de chez Microsoft)...

[Edit]
Hum, je devais être fatigué que j'ai écris ça... Si on utilise une valeur au dessus de 6552, avec le calcul que fait le Basic, on peut utiliser des lignes dont la valeur tiendrait sur plus de 16 bits... Bref, mystère résolu :-).
Mais on peut se demander pourquoi ne pas faire un test d'un overflow pour vérifier si on passe au-dessus de 65535. Je m'étais posé la question quand j'étais tombé dessus et puis je me suis dit "bah... ça devait être plus simple à écrire comme ça...".

Mias tout à l'heure, en regardant le code de fin de programme (fin de ligne, END, STOP ou BREAK), je suis retombé sur deux choses, l'une que je connaissais déjà et l'autre non, mais liées au numéro de ligne.

Première chose (celle que je connaissais) : le numéro de ligne -1 (donc 65535) est une valeur réservée pour l’interpréteur. Cela signifie que l'on est en mode direct, et non en exécution de programme. C'est testé par-ci par-là pour brancher sur le comportement à prendre en fonction du mode.

La seconde chose, que je ne connaissais pas, c'est que le numéro de ligne -2 (donc 65534) est aussi une valeur réservée par l'interpréteur. Si jamais un programme s'arrête (autrement que naturellement) et que la ligne courante est -2, alors le système reboot. On voit ça entre les adresses $227b et $2282, qui terminé pas un beau (JP Z,$0000) (après comparaison, par le RST qui précède, de DE et HL)

Je n'ai pas trouvé dans quelle situation cela se produisait. En sachant que l'on trouve ce morceau de code dans d'autres BASIC Microsoft, et que ce n'est pas le système qui s'occupe du RESET lors d'un break sur un programme protégé, partie spécifique au VG5000µ.

Bref, les numéros de lignes ne peuvent aller que jusqu'à 65533 (si je n'ai pas loupé d'autres numéro magiques) et peut-être qu'à quatre lignes près, c'était effectivement plus simple de s'arrêter à 65529.

(pour ce qui est de conserver ces informations, je note tout ce que je trouve dans la ROM depuis que j'en ai commencé l'étude ligne par ligne, je publierai ça bien entendu... c'est juste un peu long, mais parfois on trouve des trucs marrants/louches)
Avatar de l’utilisateur
Mokona
Messages : 1041
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Copie des logiciels VG5000 protégés

Message par Mokona »

Je suis allé vérifier dans une ROM de MSX (Canon V20, que j'avais sous la main). Je n'ai pas retrouvé de traitement pour la ligne "-2" (mais bon, je ne suis pas familier de la ROM et elle fait 32ko... c'est un peu plus gros que celle du VG5000).

Par contre, le décodage de numéro de ligne est quasi similaire et la partie de test pour la sortie de l'accumulateur est le même. Donc forcément, lorsque l'on tape au clavier "65530 PRINT" ça donne... Syntax Error.

Notre VG5000 n'est pas tout seul.

Si vous voulez aller regarder, la routine de récupération du numéro de ligne est en $256c sur VG5000 ROM 1.1 et en $4769 dans la ROM du V20 ; RST $10, c'est l'acquisition d'un caractère sur les deux plateformes.

La boucle elle-même est entre $257c et $2595 pour le VG5000 et $4780 et $4799 sur le MSX. Cette partie la est rigoureusement identique.
Répondre