Domanda

Ogni volta che assemblare un'applicazione per la TI-83 + calcolatrice (processore Z80), esso smette di funzionare alle CALL. Ecco un esempio ( "Ciao") - è comincia a correre bene, ma la calcolatrice si blocca con l'istruzione CALL. Tutto ciò che ho messo prima di CALL funziona bene, e tutto ciò che ho messo dopo non viene eseguito. Questo è un disassemblaggio del codice, per mostrare gli indirizzi anziché etichette. Ho "toccato it up" per mostrare le linee di DB dove coloro calo, per rendere più facile la lettura.

Non ho mai avuto questo problema di scrittura di assemblaggio "programmi" (che vengono caricati nella RAM). Gli unici problemi che io sappia con l'esecuzione di "applicazioni" (che sono tenuti in Flash ROM) sono che non possono essere auto-modifica, e che a causa di paging è necessario, l'accesso ai dati in una pagina separata non è possibile. Questo non è auto-modifica e ha una sola pagina ... Cosa ho fatto di male?

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
È stato utile?

Soluzione

A quanto pare, si sta assemblando per affrontare 0080h. Questo non può essere corretto, perché l'intervallo di indirizzi 0000H - 3FFFH è bloccata a ROM è la pagina 0. Infatti, secondo questo esempio, si riuniscono per 4000H. Quindi il problema è che la chiamata sta saltando nel firmware, non una parte della vostra applicazione.

Altri suggerimenti

Ecco un ho trovato per la TI-83 +. Non si può essere il caricamento di questo programma all'indirizzo $ 0080, è lì che vive ROM. Esso viene caricato altrove. Che funziona per un po 'fino a quando si effettua una JP o una chiamata. La chiamata $ 0099 non salta al tuo indirizzo di salto previsto, salta in ROM. Questa è una rapida fine.

È necessario scegliere una direttiva ORG corretta nel vostro .asm in modo che viene caricato nella RAM all'indirizzo previsto. Ovunque essa sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top