Z80 (TI-83 +) прекращает работать ПО ТРЕБОВАНИЮ

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

У меня никогда не было этой проблемы при записи блоку "программ" (которые загружаются в RAM). Единственные проблемы, о которых я знаю с запуском "приложений" (которые сохранены во Флэш-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
5
задан hippietrail 22 April 2011 в 20:45
поделиться

2 ответа

, по-видимому, вы собираетесь на адрес 0080h. Это не может быть правильным, потому что диапазон адресов 0000H - 3FFFH заблокирован на ROM Page 0. Действительно, согласно в этом примере вы собираетесь до 4000 часов. Таким образом, ваша проблема заключается в том, что ваш вызов прыгает в прошивку, а не часть вашего приложения.

9
ответ дан 13 December 2019 в 19:27
поделиться

Я решил просто попытаться использовать rput (x, y) {text} , и это сработало после некоторых проб и ошибок с координатами. Это работает пока, но мне все еще интересно, есть ли у кого-то лучший способ.:)

-121--3311456-

Вы должны ознакомиться с этими учебными пособиями,

[ http://www.asp.net/learn/data-access/] [1]

Все планируемые работы уже выполнены.

Посмотрите на этот способ того же, что и вы

  string preparedCommand =
  @"SELECT TOP 1 [SomeColumn],[SomeColumn2], [SomeColumn3]    
  FROM [Database].[dbo].[Table]
  WHERE [SomeOtherColumn] = @varValue";
  [1]: http://www.asp.net/learn/data-access/

Более лучший способ сделать то же самое выше, используя LINQ TO SQL

var result = from someObject in SomeTable
             where SomeColumnHasValue == ValueToCompare
             select new { SomeColumn, SomeColumn1, SomeColumn2};
  • No Type Safety Issues
  • Визуализация базы данных в C #, пока вы работа над ним
  • во время компиляции меньше ошибок
  • меньше кода
  • продуктивнее

Ниже приведены некоторые из отличных ресурсов для LINQ, если вы заинтересованы

Надеюсь, это поможет

-121--4213537-

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

Необходимо выбрать правильную директиву ORG в файле .asm, чтобы она загружалась в ОЗУ по ожидаемому адресу. Где бы это ни было.

2
ответ дан 13 December 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: