|
Marier
le RPL système et l'assembleur
Tout programmeur
averti sait comment lancer un programme en assembleur depuis
un programme en RPL système, il suffit d'inclure le code
assembleur dans la structure en RPL système.
Mais comment
exécuter une tâche pourtant simple grâce à un programme
en RPL au cours du déroulement d'un code en assembleur ?
Le problème
s'est posé pour la réalisation d' Icq HP (cf icqhp.multimania.com)
et j'ai le plaisir de livrer ici le fruit de mes réflexions...
La routine
dont le source suit s'insère dans votre source assembleur
à un moment où les registres sont soit rétablis (routine
LOAD en 067D2), soit encore inchangés (début du programme).
Elle utilise 15 quartets en #80539 inutilisés par la HP49G
car anciennement affectés à la gestion des cartes mémoire
dans la HP48G(X).
L'exécution du programme évalue l'objet dont les quartets
sont inclus après le caractère $ puis poursuit au label
*Suite.
Registres
utilisés:
A champ A, C champ A, 1 étage de RSTK
...mais le RPL modifie potentiellement tous les registres
(y compris R0,R1,R2,R3 et R4).
En fait, lorsque la HP49 parvient au label *Suite, seul
D0 est nécessairement conservé depuis le label Exe.RPL.
*Exe.RPL
LC 80543
CD0EX
DAT0=C A
GOSUB SkipObj
$Quartets_de_l'objet
*SkipObj
D0= 80539
LC 8053E
DAT0=C A
D0+5
A=PC
GOINC Back
A+C A
DAT0=A A
D0-5
C=RSTK
A=C A
PC=(A)
*Back
D0= 80543
C=DAT0 A
D0=C
*Suite
@
Cette routine
(utile) est freeware, vous êtes libre de l'utiliser, la
modifier et de la distribuer en toute liberté !
Yoann
Désir
08/07/01
hp49g.multimania.com
|