Z80 (TI-83+) cesse de fonctionner sur CALL
Posted: 01 Nov 2024, 07:42
Bonjour,
Chaque fois que j'assemble une application pour la calculatrice TI-83+ (processeur Z80), elle s'arrête à CALL. Voici un exemple ("Bonjour") — il démarre très bien, mais la calculatrice se bloque à l'instruction CALL. Tout ce que je mets avant CALL fonctionne très bien, et tout ce que je mets après ne fonctionne pas. Il s'agit d'un démontage du code, pour afficher des adresses plutôt que des étiquettes. Je l'ai "retouché" pour montrer les lignes de base de données où elles se situent, afin de faciliter la lecture.
Je n'ai jamais eu ce problème pour écrire des "programmes" d'assemblage (qui sont chargés dans la RAM). Les seuls problèmes que je connais avec l'exécution des "applications" (qui sont conservées dans Flash ROM) sont qu'elles ne peuvent pas être auto-modifiables et que, parce que la pagination est nécessaire, l'accès aux données sur une page séparée n'est pas possible. Ceci n'est pas auto-modifiable et ne comporte qu'une seule page... Qu'ai-je fait de mal ?
Chaque fois que j'assemble une application pour la calculatrice TI-83+ (processeur Z80), elle s'arrête à CALL. Voici un exemple ("Bonjour") — il démarre très bien, mais la calculatrice se bloque à l'instruction CALL. Tout ce que je mets avant CALL fonctionne très bien, et tout ce que je mets après ne fonctionne pas. Il s'agit d'un démontage du code, pour afficher des adresses plutôt que des étiquettes. Je l'ai "retouché" pour montrer les lignes de base de données où elles se situent, afin de faciliter la lecture.
Je n'ai jamais eu ce problème pour écrire des "programmes" d'assemblage (qui sont chargés dans la RAM). Les seuls problèmes que je connais avec l'exécution des "applications" (qui sont conservées dans Flash ROM) sont qu'elles ne peuvent pas être auto-modifiables et que, parce que la pagination est nécessaire, l'accès aux données sur une page séparée n'est pas possible. Ceci n'est pas auto-modifiable et ne comporte qu'une seule page... Qu'ai-je fait de mal ?
- Code: Select all
0080 218900 LD HL, 0089h
0083 cd9900 CALL 0099h ; --- App stops here
0086 c38f00 JP 008fh
0089 48656c6c6f00 DB "Hello", 0
008f fd360500 LD (IY+05h), 0
0093 ef RST 28h ; B_CALL (
0094 364c DB 4C36h ; _ReloadAppEntryVecs)
0096 ef RST 28h ; B_CALL (
0097 2740 DB 4027h ; _JForceCmdNoChar) --- App should end here
0099 7e LD A, (HL) ; --- Call goes to here
009a ef RST 28h ; B_CALL (
009b 0445 DB 4504h ; _PutC)
009d fe00 CP 0
009f c8 RET Z
00a0 23 INC HL
00a1 18f6 JR 0099h