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

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 32

Тема: Помогите начинающему с кодами.

  1. #1
    Member Аватар для Black1980
    Регистрация
    09.03.2006
    Адрес
    Тольятти
    Сообщений
    165
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Unhappy Помогите начинающему с кодами.

    Имею вот такой код, назовем его cod для проигрывания компилированного AY музона:

    ORG 30000
    CALL 40000
    LOOP CALL 40006
    HALT
    XOR A
    IN A,(#FE)
    CPL
    AND #1F
    JR Z,LOOP
    CALL 40000
    RET

    Музон откомпилирован в ProTracker с плеером, назовем его muz.
    Бейсик загрузчик всего этого добра следующий:


    5 CLEAR 29999
    10 RANDOMIZE USR 15619: REM: LOAD "cod" CODE 30000
    20 RANDOMIZE USR 15619: REM: LOAD "muz" CODE 40000
    30 RANDOMIZE USR 30000

    Помогите, в чем подвох??? Не хочет играть не под эмулятор, не на реальном спектруме. Заранее спасибо!

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

  3. #2
    Member
    Регистрация
    28.01.2005
    Адрес
    г. Владимир
    Сообщений
    58
    Благодарностей: 1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black1980
    Имею вот такой код, назовем его cod для проигрывания компилированного AY музона:

    ORG 30000
    CALL 40000
    LOOP CALL 40006
    HALT
    XOR A
    IN A,(#FE)
    CPL
    AND #1F
    JR Z,LOOP
    CALL 40000
    RET

    Музон откомпилирован в ProTracker с плеером, назовем его muz.
    Бейсик загрузчик всего этого добра следующий:


    5 CLEAR 29999
    10 RANDOMIZE USR 15619: REM: LOAD "cod" CODE 30000
    20 RANDOMIZE USR 15619: REM: LOAD "muz" CODE 40000
    30 RANDOMIZE USR 30000

    Помогите, в чем подвох??? Не хочет играть не под эмулятор, не на реальном спектруме. Заранее спасибо!
    Дело в том, что плееры обычно играют не сами по себе, а вызываются из цикла, чаще всего из цикла обработки прерывания.
    У Вас же CALL 40000 - насколько я помню, инициализация плеера? Затем начинается цикл, и в нем команда HALT. Процессор останавливается и ждет прерывания. При этом он в режиме обработки прерываний 1го типа. По этому по приходу прерывания он переходит по адресу 38Н. Т.е. командой CALL 40006 Вы один раз вызвали плеер, и всё - больше процессор туда не попадает. Ради прикола попробуйте убрать HALT .
    Вам нужно:
    1) записать некоторое число в рег-р I (это число будет старшим байтом адреса, откуда возьмется адрес перехода по прерыванию. Младший байт - всегда ff)
    Например при I=EEH адрес, по которому передастся управление по прерыванию будет взят с адресов EEFFh и EF00h
    2) перевести процессор в режим обработки прерываний 2 (IM 2)
    3) программа должна быть расположена по определенному адресу в памяти, который определяется в соответствии с числом из п1.

    Очень хорошо и подробно описано использование прерываний в книге "Программирование в машинных кодах и на языке ассемблера", которая есть на trd.speccy.cz. Очень рекомендую, как и другие книги Инфоркома.
    Turbo 2+; Scorpion ZS 256 turbo+

  4. #3
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,948
    Благодарностей: 1520
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black1980
    ORG 30000
    CALL 40000
    LOOP CALL 40006
    HALT
    XOR A
    IN A,(#FE)
    CPL
    AND #1F
    JR Z,LOOP
    CALL 40000
    RET
    ORG 30000
    CALL 40000
    EI
    LOOP HALT
    CALL 40006
    XOR A
    IN A,(#FE)
    CPL
    AND #1F
    JR Z,LOOP
    JP 40000

    Будет играть.

  5. #4
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кста, судя по адресу проигрывания (START+6) это PT2.
    имхо лучше компилить музоны под 49152 (#C000)
    а саму прогу под 32768 (#8000)
    [target] [zemu] [js8x] [pouet 1, 2]
    KAY-1024, 5''FDD, 3''FDD, HDD

  6. #5
    Member Аватар для Black1980
    Регистрация
    09.03.2006
    Адрес
    Тольятти
    Сообщений
    165
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus
    кста, судя по адресу проигрывания (START+6) это PT2.
    имхо лучше компилить музоны под 49152 (#C000)
    а саму прогу под 32768 (#8000)
    У PT2, ST и PT3 адресса одинаковые... Не скажешь чем лучше, чтобы уж делать, так на верника...

  7. #6
    Member Аватар для Black1980
    Регистрация
    09.03.2006
    Адрес
    Тольятти
    Сообщений
    165
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart
    ORG 30000
    CALL 40000
    EI
    LOOP HALT
    CALL 40006
    XOR A
    IN A,(#FE)
    CPL
    AND #1F
    JR Z,LOOP
    JP 40000

    Будет играть.
    Не работает... (

  8. #7
    Member
    Регистрация
    14.02.2005
    Адрес
    Владивосток
    Сообщений
    111
    Благодарностей: 4
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black1980
    Не работает... (
    а так
    ORG 30000
    CALL 40000
    LOOP
    EI
    HALT
    CALL 40006
    XOR A
    IN A,(#FE)
    CPL
    AND #1F
    JR Z,LOOP (здесь может быть nz - не помню)
    JP 40000

  9. #8
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,948
    Благодарностей: 1520
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black1980
    Не работает...
    А так?

    ORG 30000
    CALL 40000
    LOOP
    EI
    HALT
    CALL 40006
    XOR A
    IN A,(#FE)
    CPL
    AND #1F
    JR Z,LOOP
    JP 40000

  10. #9
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black1980
    У PT2, ST и PT3 адресса одинаковые... Не скажешь чем лучше, чтобы уж делать, так на верника...
    у PT2 играть - START+6
    у PT3 - START+5
    у ST зависит от компилятора, точно не помню, но вроде START+5
    где START - куда компилировался музон (обычно #C000 или 49152)

    и ещё, приаттачь свой музон сюда, а то телепаты в отпуске.
    [target] [zemu] [js8x] [pouet 1, 2]
    KAY-1024, 5''FDD, 3''FDD, HDD

  11. #10
    Member Аватар для Black1980
    Регистрация
    09.03.2006
    Адрес
    Тольятти
    Сообщений
    165
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus
    и ещё, приаттачь свой музон сюда, а то телепаты в отпуске.
    Бес проблем, музон PT2... В архиве оба музоны, компиленный и нет.
    Вложения Вложения
    • Тип файла: rar music.rar (1.7 Кб, Просмотров: 165)

Страница 1 из 4 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Помогите начинающему
    от Striker в разделе Музыка
    Ответов: 1
    Последнее: 25.03.2005, 13:25

Ваши права

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