|
 |
Conversion
ASM |
 |
Ce
tutorial peut être utilise par tous les utilisateurs HP, mais une petite
connaissance en programmation est tout de même necessaire. En effet, cette
documentation a pour but de vous expliquer comment convertir un programme
en assembleur prevu pour la HP 48 ou la HP 49 vers la HP 40. Mais elle
peut aussi servir à convertir de la HP 48 à la HP 49. Pour realiser cela
vous aurez besoin d'un certain nombre de programmes qui vous seront donnes
à telecharger ci-dessous. Alors en premier, toutes les explications seront
donnees pour la HP 49 car on ne peut programmer sur la HP 40. Et en ce
qui concerne la HP 48 vous pouvez utiliser Jazz
qui realise toute la conversion
.
Recommandations
:
-
Mettez vous en RPN
-
Utilisez la Rom 1.19-5
-
Faites une sauvegarde de votre memoire
-
Envoyez moi un e-mail en cas de probleme (neo)
JE
VOUS ANNONCE QUE TOUS LES PROGRAMMES CITES SONT A TELECHARGER DANS CE PAQUETAGE.
Utilitaires
I.
La source
Tout
d'abord, pour convertir un programme, il vous faut les sources. Pour cela
deux moyens: le plus simple est de demander à l'auteur lui-même les sources,
en cherchant un peu on trouve facilement leurs e-mails ou une adresse
où les trouver. Deuxieme technique, il faut decompiler le programme à
l'aide d'un desassembleur. Si vous possedez la source vous pouvez directement
aller au II.
1. Comment desassembler
un programme:
En
premier lieu, il faut attacher le menu de developpement integre à la HP
49. Pour cela, mettez vous en mode RPN et tapez 257 ATTACH.
Ensuite envoyez sur votre HP tous les programmes et
les librairies que je vais vous citer ci-apres. Tout d'abord, il vous
faut CQIF et Xasm qui sont les desassembleurs. Ensuite il faut Objfix et pour finir Extable,
mais il y a trois Extables (HP 48, HP 49 ET
HP 40) donc choisissez celui qui correspond au programme que
vous allez desassembler et non à votre calculatrice.
Ensuite
envoyez sur votre HP le jeu pour HP 48 ou HP 49, s'il est pour HP 48 vous
aurez besoin de Objfix pour obtenir un programme lisible sur HP 49.
Donc, une fois que votre programme est sur la pile, executez Objfix
(surtout n'executez pas le programme de HP 48 sous peine de perte de toute
la memoire)
Apres avoir installe CQIF qui integre pour moi le meilleur desassembleur et extable
qui correspond à votre type de prog en l'occurrence HP 48, pensez à desactiver
le Flag 71 en allant dans MODE et FLAGS de façon
à ne pas avoir les adresses dans votre source.
Ensuite, mettez sur votre pile le programme: pour cela, taper sur VAR et NEXT jusqu'à ce
que vous voyiez votre programme dans les menus et taper sur SHIFT et sur F1..F6 (ce
qui correspond à votre prog).
Puis
tapez ->S3, ainsi CQIF
va decompiler tout votre programme (RPL
et ASM). Apres quelques minutes de travail, vous obtenez
une source sur la pile, sauvegardez la sous le nom de votre choix. Si votre
programme est un fichier CODE et non un programme
vous allez être oblige d'utiliser la commande xASM-> de CQIF.
II.
Modification
de la source
Dans
cette partie, je vais vous expliquer les differentes modifications à effectuer
sur les sources pour obtenir un programme qui se compile sur toutes les calculatrices.
1. Gestion des touches:
Il
faut savoir que pour la conversion de la HP 48 à la HP 49, il faut changer
toutes les valeurs OUT/IN du clavier de la calculatrice
(utiliser le fichier keybit.zip). Pour
la conversion de la HP 49 à la HP 40 cela est inutile car elles ont les mêmes
adresses pour les touches du clavier.
Voici
quelques exemples:
HP
48
%|DROP|010|0|
DROP (il faut changer les out et les in du clavier)
LC
010
OUT=C
GOSBVL
"CINRTN"
?CBIT=0.0
SKIPYES
{
GOSUBL wait_no_touche
GOTO INTRO
}
HP
49
%|DROP|001|6| DROP (le 010
devient 001 pour les out et le 0.0
devient 0.6 (IN))
LC
001
OUT=C
GOSBVL
"CINRTN"
?CBIT=0.6
SKIPYES
{
GOSUBL wait_no_touche
GOTO INTRO
}
HP
40
%|DROP|001|6|
DROP (pas de changement entre la 49 et la 40)
LC
001
OUT=C
GOSBVL
"$jCINRTN"
?CBIT=0.6
SKIPYES
{
GOSUBL wait_no_touche
GOTO INTRO
}
2. Gestion des GOSBVL
et des GOVLNG:
La
seconde chose à changer est uniquement pour la conversion de HP 49 à HP 40:
il faut rajouter $j devant le nom des entries
des GOSBVL (et non GOSUBL) ainsi que devant le nom des entries
des GOVLNG, sauf exception.
Voici quelques exemples:
HP 48
(On ne change rien)
GOSBVL "SAVPTR"
GOSBVL "DisableIntr"
HP 49
(On ne change rien)
GOSBVL "SAVPTR"
GOSBVL "DisableIntr"
HP 40
GOSBVL "$jSAVPTR"
(on ajoute $j devant l'adresse)
GOSBVL "DisableIntr"
c'est la seule où on ne met pas de $j (oublie de l'ACO)
Attention
les GOVLNG ont aussi besoin du $j
III.
Compilation
Pour
compiler, nous allons utiliser MASD : pour cela, il faut verifier que le kit de
developpement est installe sur votre calculatrice comme auparavant: taper 257 ATTACH en mode RPN. Ensuite, il faut savoir que la commande ASM compile la source, que la commande ER debug votre source et que la commande ASM2 realise la compilation et le debuggage en même temps.
1. Compilation pour HP 49:
Pour compiler pour une HP 49 vous aurez besoin de l'extable HP 49.
Donc,
une fois que la librairie extable 49
est installee sur votre port 2, mettez votre source HP49 sur la pile et tapez
ASM2, Masd
va assembler et debugger votre programme en utilisant les adresses de l'extable.
Si tout s'est bien passe, vous obtenez un programme ou "Code" sur votre pile, sinon, verifiez votre source
en corrigeant les erreurs que vous annonce masd.
Sauvegardez le sous le nom de votre choix. Voila, l'operation
est terminee pour les programmes HP 49, sachez que si vous travaillez sur HP
48 avec Jazz vous aurez besoin d'effectuer un Objfix une fois que vous enverrez votre programme
sur la HP 49.
2. Compilation pour HP 40
Pour compiler pour une HP 40 vous aurez besoin de l'extable HP 40.
Donc,
une fois que la librairie extable 40
est installee sur votre port 2, mettez votre source HP40 sur la pile et tapez
ASM2, Masd
va assembler et debugger votre programme en utilisant les adresses de l'extable.
Si tout s'est bien passe, vous obtenez un programme ou "Code" sur
votre pile; sinon verifiez votre source en corrigeant les erreurs que vous annonce
masd.
Sauvegardez
sous le nom Conv.39 et non pas sous le nom de
votre choix, car une fois le programme compile, on a besoin de creer une applet.
Pour cela, il faut envoyer le fichier code Conv.39
sur l'ordinateur et à l'aide de l'applet convertor
creer l'applet. Cette partie est expliquee dans le IV.
IV.
Utilisation de
l'applet convertor pour HP 40
Pour
que votre programme compile (Conv.39) sur HP 49 fonctionne sur une HP 40 il
est necessaire de le mettre dans une applet.
Donc,
dezippez le fichier Applet convertor.zip et effectuez les modifications
suivantes qui correspondent à votre programme:
Tout d'abord, il faut renommer l'applet
donc à la ligne 23 du fichier conv.s
modifiez le titre (conversion)
par le nom de votre prog et le nombre de lettres du nom de votre prog (size
of the name) (10). Il faut noter que le N° de librairie est inutile.
Ensuite
il faut ouvrir le fichier conv.m et modifier uniquement le titre (title) par le nom de votre programme.
Vous devez renommer votre programme Conv.39 (c'est imperatif !) et le placer dans le même
repertoire que le fichier make.bat. Maintenant,
vous pouvez executer make.bat qui va
transformer votre prog en applet.
A la fin, vous obtenez 5 fichiers. Recuperez alors Conv0000.000, renommez-le si vous le desirez et envoyez-le
sur votre calculatrice HP 40. En principe cela devrait fonctionner si ce n'est
pas le cas reessayer.
V.
Future modification
En
fait, ce tutorial n'est pas totalement termine, je compte ajouter la gestion
des interruptions sur HP 48, HP 49 et HP 40. Pour cela toute aide est la bienvenue.
Je compte
aussi ajouter une explication pour casser les librairies. Car, une librairie
est assez difficile à decompiler.
Je desire
aussi inserer des captures d'ecran pour ameliorer la comprehension et ajouter
des exemples de source à compiler.(Pour l'instant il y a Jezz-Pack )
Toutes
suggestions, questions ou appreciations sont les bienvenues.
Pierre
Podgorski
1,
rue Emile Heraud
83510
Lorgues
Neo@hp-network.com
VI.
Remerciements
Tout
d'abord, je desire remercier la societe HP (Hewlett Packard) qui m'a fourni
le materiel necessaire à la realisation de cette documentation.
Ensuite,
je voudrais remercier tous les auteurs des programmes que je cite et ils sont
nombreux!
Je
remercie egalement mes potes (HP-Network.com),
ainsi que tous les membres de l'ACO.
Et
pour finir Lilian Pigallio sans qui cette doc n'aurait pas existe.
Accueil
|