Вопрос

Каждый раз, когда я собираю приложение для калькулятора TI-83 + (процессор Z80), оно перестает запускаться при вызове.Вот пример ("Привет") — он начинает работать просто отлично, но калькулятор зависает при выполнении команды ВЫЗОВА.Все, что я ставлю перед вызовом, работает просто отлично, а все, что я ставлю после, не запускается.Это дизассемблирование кода, чтобы показывать адреса, а не метки.Я "подправил это", чтобы показать строки базы данных, в которые они попадают, чтобы их было легче читать.

У меня никогда не возникало такой проблемы при написании ассемблерных "программ" (которые загружаются в оперативную память).Единственные проблемы, о которых я знаю при запуске "приложений" (которые хранятся во флэш-ПЗУ), заключаются в том, что они не могут самоизменяться и что, поскольку необходима подкачка, доступ к данным на отдельной странице невозможен.Это не самоизменяющийся файл и содержит только одну страницу...Что я сделал не так?

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
Это было полезно?

Решение

По-видимому, вы выполняете сборку по адресу 0080h.Это не может быть правильным, потому что диапазон адресов 0000h--3FFFh заблокирован на странице 0 ПЗУ.Действительно, согласно этот пример, вы собираете до 4000 часов.Итак, ваша проблема в том, что ваш вызов переходит в прошивку, а не является частью вашего приложения.

Другие советы

Вот такой карта памяти Я нашел для Ti-83+.Вы не можете загружать эту программу по адресу $ 0080, именно там находится ROM.Он загружается в другое место.Это работает некоторое время, пока вы не сделаете заказ или звонок.Вызов $ 0099 не переходит на ваш ожидаемый адрес перехода, он переходит в ПЗУ.Это быстрый конец.

Вам нужно выбрать правильную директиву ORG в вашем .asm, чтобы она загружалась в оперативную память по ожидаемому адресу.Где бы это ни было.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top