Voilà ma proposition (l'assembleur est un peu différent dans la syntaxe, mais la transcription est aisée)
Comme indiqué dans la documentation ci-dessus, il faut ajouter sur la pile, après l'adresse de retour mise par le call, une valeur qui ne servira pas.
Ceci est du à la manière dont la commande est appelée (et que je n'ai pas fini d'analyser).
L'astuce classique est donc de mettre sur la pile l'adresse de retour avec un call (l'interprêteur BASIC lui, fait ça à la main, ça serait aussi une solution valide, cf. $250a dans la ROM 1.1), puis d'embrayer sur un JP (qui lui ne touche pas la pile), avec la manipulation de la pile entre temps.
Code : Tout sélectionner
org $6000
_debut:
ld bc,_buffer ; buffet ou sont stockés les notes
ld e,6 ; longueur du buffer
call play
ret
play:
push hl
jp $008F
_buffer:
defb $54,$32,$30,$43,$44,$45