User Tag List

Показано с 1 по 10 из 11

Тема: Возврат в Бэйсик

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не надо делать все сразу! Тем более, не понимая откуда какие проблемы возникают. Итак, по порядку:
    1. LD (QUIT+1),SP: QUIT LD SP,0
    Не надо писать программы, в которых SP на выходе не равен SP на входе!!! Если есть разбаланс стека, это серьезный баг, иногда очень трудноуловимый! Оставьте SP в покое - если он у вас в программе портится, путь лучше выход в из нее в BASIC (скорее всего, печальный) это покажет после очередного изменения программы, приведшего к разбалансу стека.
    2. Если в программе есть DI, на выходе в BASIC должен быть EI, иначе остаемся без кнопок в BASIC'е. Зачем принудительно включать прерывания, если их не выключали?
    3. Не понятно зачем при каждом выходе устанавливать IM1. Если Вы его меняли, то сами знаете, когда надо его вернуть обратно. Если нет - либо больше некому его менять, либо тот, кто поменял, знает зачем это сделал, когда надо вернуть обратно, и расстроится, если вы сами принудительно это сделаете когда оно не ожидает такой подставы. Кстати, IM 1 правильно возвращать так: DI: LD A,#3F: LD I,A: IM 1: EI.
    4. LD IY,23610 - эта инструкция стоит в ПЗУ сразу после возврата из подпрограммы пользователя. На выходе этого делать не надо. Ограничение на использование IY состоит в том, что в обработчике прерывания IM 1 есть инструкция INC (IY + 40), увеличивающая старший байт переменной FRAMES. И, если Вы не запретили прерывания, переписав IY, то при переполнении младших байт FRAMES у Вас в программе что-то увеличится без вашей на то воли. Регистр IY можно использовать свободно только если прерывания запрещены или если установлен режим IM 2, но стандартная процедура обработки прерываний не зовется когда в IY Ваше значение.
    5. А вот по поводу 10072 в HL' - это правда, без этого значения там хужает калькулятору, который "досчитывает" функцию USR после возврата из Вашей подпрограммы. Это значение точно портится, если вы зовете подпрограммы, реализующие команды Бэйсика DRAW, CIRCLE, ну, или портите его сами.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Корректный возврат в Basic
    от AndTorp в разделе Программирование
    Ответов: 2
    Последнее: 26.04.2009, 14:19
  2. Есть ли такой редактор бэйсик прог -
    от fan в разделе Зарубежные компьютеры
    Ответов: 6
    Последнее: 11.06.2007, 00:49

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •