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