User Tag List

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

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

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

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

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

    По умолчанию

    goodboy, модеров я уже попросил отщипнуть в более подходящую тему, так что продолжим :-)

    Про прерывания интересно, обсудим чуть позже. Для начала надо с кое чем другим разобраться.

    Как всё начиналось:
    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    не подскажите, что делает этот 65-байтный кусок кода? Очень странный загрузчик игры, одних только бейсик-программ две штуки. Если коротко, то эти 65 байт грузятся в буфер принтера (23296), из-за чего игра не работает в 128-ом режиме. Потом грузится основной блок игры с адреса 24137 и до упора, потом идёт usr 23296, и только потом usr на запуск игры. Короче, как сделать, чтобы игра работала и в 128-ом режиме тоже?
    Цитата Сообщение от SAM style Посмотреть сообщение
    В коде определялка, есть ли 128К или только 48К. Чтобы работало, первым делом надо включить ПЗУ бейсика 48К, а потом уже грузить код в буфер принтера
    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    SAM style, а как включить пзу бейсика 48к?
    Из бейсика принудительно включить нужное ПЗУ не получится, надо в ассемблере выполнить
    Код:
    ld bc,#7ffd
    ld a,#10
    out (c),a
    После этого я решил вообще от этой 65-ти байтной процедуры отказаться, и решил буфер принтера вообще не трогать, ничего туда не грузить, и пзу 48 не включать. А зачем? Если буфер принтера мне не нужен?.. Потом всё шло хорошо до той поры, пока я не обнаружил, что хрум портит основной блок, в конце байт 70, из-за чего в игре пропадали алмазы. Я не верил своим глазам, но факт на лицо. А хруму надо 112 байт для буфера, и он у меня юзал в качестве буфера область принтера, но с адреса 23433 (в нём это по умолчанию). И никакого конфликта не возникало из-за размещения буфера там, я проверял во всех режимах - всё тип-топ, токо без алмазов ))

    Потом я долго искал замену хруму, чуть не поседел, но вовремя вспомнил, что есть хруст1.3. Хруст блок не портил, и алмазы оставались на месте. В 48-ом и usr0 всё вообще было тип-топ! Но в 128-ом стал портится спрайт диззи. Я решил что это из-за буфера принтера, ведь хрусту уже надо под буфер не 112, а 256 байт, и он у меня занимал весь буфер принтера целиком. И я перенес буфер хруста в экранную область для теста. Тест сработал, спрайт не портился, но портился экран. Я уж думал сохранять экран в другой страничке, и потом его восстанавливать...

    Но вовремя вспомнил про
    ld bc,#7ffd
    ld a,#10
    out (c),a
    Я вставил этот код перед распаковкой основного блока в 128-ом сценарии и всё сразу резко стало тип-топ! И я подумал, что этот код убивает бейсик-128 и, соответственно, область принтера очищается, и буфер хруста в этой области теперь отрабатывает без ошибок, и именно по этому спрайт диззи теперь не портится. Но этот код у меня стоял в таком месте, что возврата к бейсику уже не было. И я не мог проверить свои догадки.

    Но у меня в коде загрузчика были переключения страниц (через out 253, а), и потом я понял, что на скорпионе будет фейл. И я заменил все проблемные места на код типа
    ld bc,#7ffd
    ld a,#10
    out (c),a
    И одно из проблемных мест было в том месте, после которого планировался возврат в бейсик. И я думал, что раз подобный код устраняет конфликт хруста и бейсика в буфере принтера, то и сам бейсик он тоже убьёт, и что по этому при попытке вернутьсяв бейсик будет глюк. А глюка нет.

    Это конечно хорошо, что теперь всё работает, и на скорпе в том числе, но плохо то, что я не понимаю почему: и конфликт в буфере принтера исчезает (хруста и 128бейсика), и 128бейсик при этом нормально работает.

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

  3. #2

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,295
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,460
    Поблагодарили
    949 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    конфликт в буфере принтера исчезает (хруста и 128бейсика), и 128бейсик при этом нормально работает.
    а почему то решил что при разжиме картинке используется буфер принтера ???

  4. #3

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

    По умолчанию

    goodboy, не при разжиме картинки, а при разжиме основного блока игры.

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

    щас попробую наглядный трд собрать.
    ___________

  5. #4

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,295
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,460
    Поблагодарили
    949 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    при разжиме основного блока игры.
    я уже понял.
    там чаще всего прерывание (между ei и im2) не успевает проскочить,
    но теоретически может.
    правильней запрещать после разжима

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

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

Эту тему просматривают: 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

Ваши права

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