User Tag List

Показано с 21 по 30 из 105

Тема: Evacuator - help thread.

Древовидный режим

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

    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,198
    Спасибо Благодарностей отдано 
    40
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    103 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно поточне: каким редактором wham делалась мелодия? Вероятно wham! у вас для AY\YM (для 128к машин). Глянул мельком на него, там по-моему нет режима компиляции always (позволяющего играть музыку параллельно выполняя что-то еще).
    В 48к версии была такая функция. Для инициализации мелодии выполнить randomize usr n, для проигрывания следующей ноты randomize usr n+12. О втором адресе для данного режима, почему-то нигде в программе не говорится!
    ----
    Там все довольно тривиально:
    Два бейсик файла - билдер im2 и демонстрашка.
    Для работы кроме бейсик файла, у вас должна быть скомпилированная мелодия с плейером и обрабочик im2 созданный с помощью первой программы под ваши адреса.
    Для 48к версии (под бипер) при компиляции в режиме always с адресом запуска 42000 - это числа 42000, 0, 42012. Правда, скорее всего придется отрегулировать темп, занося значения в ячейку 42035!

    Принцип работы:
    первым вводим адрес вызываемый при запуске im2. В кодах это выглядит как:
    Код:
    di ; запретить прерывания
    call nn ;адрес вызова процедуры, аналог randomize usr nn
    ld a,m ;число m, вектор прерываний
    ld i,a
    im 2 ;включение режима
    ei ;разрешить прерывания
    ret
    вторым вводится адрес вызываемый при остановке im2:
    Код:
    di
    call nn ;то же, что и выше, но по другому адресу
    ld a,3F ;установка вектора прерываний для нормальной работы в tr-dos
    ld i,a
    im 1 ;выключение режима
    ei
    ret
    третьим вводится адрес вызываемый при работе im2.
    Код:
    push ix ;cохраняются на стеке значения всех регистры процессора
    push iy
    push bc 
    push de
    push hl
    push af
    exx
    push bc
    push de
    push hl
    ex af,af'
    push af
    call nn ;адрес вызываемый каждое прерывание
    pop af ;восстанавливаются значения регистров процессора
    pop hl ;до момента прихода прерывания
    pop de
    pop bc
    ex af,af'
    pop af
    exx
    pop hl
    pop de
    pop bc
    pop iy
    pop ix
    jp 38 ;переход по стандартному адресу обработки прерывания im1 (команда rst 56).
    Если вызывать ничего не надо (т.е. переход на адрес программы в кодах при запуске или остановке im2 не нужен), вводим 0. Это не будет расценено, как call 0 - будут использованы два nop'а.
    последним вводится адрес распололжения обработчика в памяти. Из-за особенностей режима im2 (и написанного мною билдера) возможны несколько вариантов:
    + использование вектора из ПЗУ.
    + смещение процедуры к ближайщему возможному адресу (клавиша 1 или 2) либо выбор иного адреса (клавиша 3).

    После ввода всех значений должен появиться экран, в первых трех строках которого указаны адреса описанные выше, адрес начала программы, обработчика прерываний, запуска и остановки режима im2. В последних строчках первая занимаемая программой ячейка памяти и длина программы.


    замечание: поскольку im2 используется системой tr-dos. Перед вызовом ее команд или входом (по usr 15619 или usr 15616), должна запускаться подпрограмма остановки im2.
    ----
    Думаю, доработать данную программулину, чтобы было более просто и наглядно. А главное универсально, например вместо ссылок на подпрограммы в кодах, подгрузка и интеграция в обработчик.. Планов, в целом - громадье!
    Цитата Сообщение от Andrey Vladimirovich Посмотреть сообщение
    И что нужно сделать что бы она была "завершенная"?
    Не совсем понятно, что под этим подразумевается?
    Последний раз редактировалось null_device; 16.02.2010 в 16:56.

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

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

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

Ваши права

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