User Tag List

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

Тема: Монолоадер для чайников.

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

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

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

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Этот код можно просто скопировать в Sublime Text?
    Нет, есть несколько проблем.
    Проблема №1: учимся сразу писать правильно, потом переделываться будет тяжко. В начало модуля пихаем (хотя бы так, все подряд, но лучше разделить на константы системных переменных и процедур ПЗУ):
    Код:
    PROG equ #5c53
    STKEND equ #5c65
    RECLAIM_1 equ #19e5
    Тогда у тебя PROG, STKEND и RECLAIM_1 становятся понятными и говорящими именами в программе (вместо hex-значений). Олсо SjAsm пихает в error output сообшения об ошибках а sublime, по идее, их должен ловить. Либо настраиваем это, либо учимся их не игнорить (sjasm, если не знает метку RECLAIM-1, пихает в место нее 0, что превращает call RACLAIM-1 в RANDOMIZE USR 0). Ахтунг - моя лажа, "-" использовать в метках нельзя, меняем на "_", но RANDOMIZE USR 65535 (0 - 1) примерно то же самое
    Проблема №2 (потенциальная): если у тебя загрузчик в машкодах, встроенных в первую BASIC-строку, а ты стираешь весь BASIC, то программа твоя может пострадать (я не помню уже сколько на самом деле занимает "пустая" программа).
    Проблема №3: учимся пользоваться отладчиком Unreal Spectrum - как минимум он показывает что у тебя скомпилировалось, а еще от него можно узнать в каком месте происходит Большой взрыв с возвратом в начало эволюции;
    Проблема №4 (у меня в мозгу): я так понимаю, тебе всей ценой нужно сделать честный CLEAR перед стартом программы. А ты говоришь,
    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    после него поставил JP на адрес автораспаковки-автостарта игры
    Получается, машинный стек у тебя остается там, где его придумал BASIC, он затирается кодом игры и у TR-DOS при загрузке снесет крышку.
    Смотри, суть оператора CLEAR в следующем:
    • убийство всех BASIC-переменных (кстати, код очистки всего и вся я взял именно из реализации CLEAR);
    • очистка экрана;
    • установка системной переменной RAMTOP;
    • инициализация стека GO SUB по адресу RAMTOP (он занимает там 1 байт);
    • перенос машинного стека под стек GO SUB;

    Фактически, CLEAR в BASIC-загрузчике чаще всего нужен для переноса машинного стека до, собственно, самой загрузки. Если не нужен остальной "сервис" от CLEAR, то CLEAR #nnnn заменяется на ассемблерную команду ld sp,#nnnn, при этом никаких проверок, разумеется, не делается, никаких RAMTOP no good, но в BASIC уже не вернуться - он ситает, что машинный стек в другом месте.

    Там вот, объясни уже всем тут, после твоего кодового загрузчика надо попасть в игру или опять вернуться в BASIC?

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

  3. #2

    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,605
    Спасибо Благодарностей отдано 
    254
    Спасибо Благодарностей получено 
    268
    Поблагодарили
    187 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Так вот, объясни уже всем тут, после твоего кодового загрузчика надо попасть в игру или опять вернуться в BASIC?
    кодовый загрузчик не при делах. В нем не нужно никаких "аналогов CLEAR". Он просто загрузит что надо в память. Далее, например, из под бейсика я внесу нужные покесы в распакованный блок, вернее в распакованную часть блока. После этого и нужен, поидее, некий обман CLEAR, нужен USR кода, который похерит бейсик, высвободив память, а после должен идти JP на оставшуюся (запакованную) часть кода игры. Она распакуется (склеившись с тем куском, который мы "покесили") и автостартанет (так как этот кусок запакован хрустом, то там можно выставить автостарт с адреса - и следовательно для первой части выставлен 24600).
    ___________

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

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

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

Похожие темы

  1. Ответов: 206
    Последнее: 19.08.2020, 10:36
  2. TS Conf прошивка для Чайников
    от AAA в разделе Софт
    Ответов: 157
    Последнее: 10.01.2015, 04:46
  3. Ответов: 35
    Последнее: 01.12.2006, 10:06
  4. монолоадер.
    от Sinus в разделе Программирование
    Ответов: 17
    Последнее: 07.02.2006, 14:25

Ваши права

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