Важная информация

User Tag List

Страница 34 из 43 ПерваяПервая ... 303132333435363738 ... ПоследняяПоследняя
Показано с 331 по 340 из 426

Тема: Бейсик-помощь

  1. #331
    Master Аватар для Prusak
    Регистрация
    28.02.2005
    Адрес
    г.Минск
    Сообщений
    643
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сначала инициализировал системные переменные (взял код из ПЗУ по адресам по адресам 11EF-12A2).

    Дальше взял кусок кода из процедуры LD-PROG. Формирую header бейсик файла, подставляю туда нужные данные (длина файла, длина бейсик-части, стартовая строка), дальше, если я правильно понял, в коде резервируется место для альтернативного header'а, куда сохраняются данные о текущей бейсик-программе в памяти, на основании которых удаляется текущая бейсик-программа и резервируется место для новой программы.

    Потом загружаю бейсик программу в нужные адреса памяти, загружаю указатель стека из системной переменной ERR-SP: LD SP,(23613) и делаю переход на 0x1B7d, "STMT-R-1".

    Программа запускается (у меня простейшая программа, выводящая числа на экран в цикле). Но как только я её останавливаю через Break, всё виснет.
    Заяц-прусак
    zxbyte.ru- компьютер Байт и прочий хлам

  2. Этот пользователь поблагодарил Prusak за это полезное сообщение:

    Barmaley_m (18.10.2020)

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

  4. #332
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Понятно. В таком случае, думаю, нужно после LD SP,(23613) сделать следующее:
    Код:
    POP HL
    LD HL,1303H ; MAIN-4 Error entry point
    PUSH HL
    JP 1B7DH
    тем самым прописывается нужный адрес возврата при ошибке (в том числе 0 OK).

  5. Этот пользователь поблагодарил Barmaley_m за это полезное сообщение:

    Prusak (28.10.2020)

  6. #333
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Насколько я помню по книге "Как написать игру на ассемблере", при выходе в Бейсик нужно восстанавливать регистровые пары IY и HL' вроде. Но лучше уточнить в книге.
    Последний раз редактировалось Andrew771; 18.10.2020 в 00:37.

  7. Этот пользователь поблагодарил Andrew771 за это полезное сообщение:

    Barmaley_m (18.10.2020)

  8. #334
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    при выходе в Бейсик нужно восстанавливать регистровые пары IY и HL'
    Хорошо, что напомнил. Устанавливать IY на значение 0x5C3A - это, конечно, необходимо при любых делах с бейсиком. Даже при работе прерываний для опроса клавиатуры бейсик использует этот регистр и требует, чтобы в нём содержалось это значение.

    Но вот насчёт HL' - это зависит от точки входа в бейсик. Вероятно, в книге "Как написать игру" имелся в виду возврат из функции USR - а это происходит куда-то в недра "калькулятора" и процедуры вычисления выражений. Вход же в бейсик на точку STMT-R-1 - это совсем другое дело, и там содержимое регистра HL' роли не играет.
    Последний раз редактировалось Barmaley_m; 18.10.2020 в 11:51.

  9. #335
    Master Аватар для Prusak
    Регистрация
    28.02.2005
    Адрес
    г.Минск
    Сообщений
    643
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Устанавливать IY на значение 0x5C3A - это, конечно, необходимо при любых делах с бейсиком. Даже при работе прерываний для опроса клавиатуры бейсик использует этот регистр и требует, чтобы в нём содержалось это значение.
    Да, этот момент я помню, и, если мне память не изменяет "правильное" значение для IY устанавливается при инициализации системных переменных.
    Заяц-прусак
    zxbyte.ru- компьютер Байт и прочий хлам

  10. #336
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,153
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А почему не посмотрите архив исходников TR-DOS Navigator'а?
    Там как-раз так BASIC-программа и запускается.
    Файл TRDNC.ASM: процедура EXIT.
    Файл COMMENTS.TXT: описание в разделе "Запуск файлов и выход из TRDN".

  11. Этот пользователь поблагодарил Grand за это полезное сообщение:

    Prusak (22.10.2020)

  12. #337
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Grand Посмотреть сообщение
    А почему не посмотрите архив исходников TR-DOS Navigator'а?
    Дело в том, что из бутов, коммандеров и навигаторов программа часто запускается путём исполнения команды "RUN" в TR-DOS. Это самый простой способ. И тогда уже TR-DOS занимается выделением памяти и запуском, а не коммандер. Если ты уверен, что в коммандере программа запускается именно на низком уровне, наподобие того, как я рекомендовал - то подскажи. В противном случае жизни не хватит копаться во всех коммандерах и разочаровываться.

    Prusak, как твои успехи? Ты поборол проблему сбоя по завершении программы?

  13. #338
    Junior
    Регистрация
    22.01.2006
    Адрес
    Москва
    Сообщений
    19
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ребят хочу сделать девушке романтический мини-сюрприз . Скинте плз листинг отрисовки сердца в zxbasic . Кому не сложно

  14. #339
    Master Аватар для Prusak
    Регистрация
    28.02.2005
    Адрес
    г.Минск
    Сообщений
    643
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Prusak, как твои успехи? Ты поборол проблему сбоя по завершении программы?
    По методике из исходников TRDN, к сожалению, не получается. На выходе компьютер просто "повисает".
    Заяц-прусак
    zxbyte.ru- компьютер Байт и прочий хлам

  15. #340
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,153
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m
    ...жизни не хватит копаться во всех коммандерах и разочаровываться.
    Поэтому я и порекомендавал почитать файл COMMENTS.TXT в архиве исходников TRDN. Не зря же мы его писали. Там все кратко и по-русски. Если информация заинтересует - можно посмотреть и сами исходники. А появятся вопросы - спрашивайте. Лучше в теме про TRDN.

    - - - Добавлено - - -

    Цитата Сообщение от Prusak Посмотреть сообщение
    По методике из исходников TRDN, к сожалению, не получается. На выходе компьютер просто "повисает".
    Теперь надо проверить правильно ли выставлен RAMTOP и указывает ли на дно машинного стека 23613; на дне должен быть адрес системной процедуры обработки ошибки.

Страница 34 из 43 ПерваяПервая ... 303132333435363738 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Руссифицированный бейсик
    от Den1982 в разделе Программирование
    Ответов: 17
    Последнее: 23.02.2022, 22:58
  2. Специалист: Бейсик
    от Prusak в разделе Специалист
    Ответов: 28
    Последнее: 26.07.2019, 16:07
  3. Про бейсик
    от yur в разделе Программирование
    Ответов: 23
    Последнее: 17.02.2014, 21:26
  4. напомните про бейсик
    от goblinish в разделе Программирование
    Ответов: 7
    Последнее: 22.06.2012, 06:14

Ваши права

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