Каждый раз, когда я собираю приложение для калькулятора TI-83+ (процессор Z80), оно перестает запускаться на CALL. Вот пример («Hello») — запускается нормально, но калькулятор зависает на инструкции CALL. Все, что я ставлю перед CALL, работает нормально, а все, что я ставлю после, не запускается. Это дизассемблирование кода для отображения адресов, а не меток. Я «подправил» его, чтобы показать строки БД, куда они попадают, чтобы их было легче читать.
У меня никогда не было этой проблемы при написании ассемблерных «программ» (которые загружаются в оперативную память). Единственные известные мне проблемы с запуском «приложений» (которые хранятся во флэш-памяти) заключаются в том, что они не могут самомодифицироваться, а поскольку разбиение по страницам необходимо, доступ к данным на отдельной странице невозможен. Это не самоизменяющийся и имеет только одну страницу... Что я сделал не так?
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