![]() |
Помогите начинающему с кодами.
Имею вот такой код, назовем его 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 Помогите, в чем подвох??? Не хочет играть не под эмулятор, не на реальном спектруме. Заранее спасибо! |
Quote:
У Вас же CALL 40000 - насколько я помню, инициализация плеера? Затем начинается цикл, и в нем команда HALT. Процессор останавливается и ждет прерывания. При этом он в режиме обработки прерываний 1го типа. По этому по приходу прерывания он переходит по адресу 38Н. Т.е. командой CALL 40006 Вы один раз вызвали плеер, и всё - больше процессор туда не попадает. Ради прикола попробуйте убрать HALT :). Вам нужно: 1) записать некоторое число в рег-р I (это число будет старшим байтом адреса, откуда возьмется адрес перехода по прерыванию. Младший байт - всегда ff) Например при I=EEH адрес, по которому передастся управление по прерыванию будет взят с адресов EEFFh и EF00h 2) перевести процессор в режим обработки прерываний 2 (IM 2) 3) программа должна быть расположена по определенному адресу в памяти, который определяется в соответствии с числом из п1. Очень хорошо и подробно описано использование прерываний в книге "Программирование в машинных кодах и на языке ассемблера", которая есть на trd.speccy.cz. Очень рекомендую, как и другие книги Инфоркома. |
Quote:
CALL 40000 EI LOOP HALT CALL 40006 XOR A IN A,(#FE) CPL AND #1F JR Z,LOOP JP 40000 Будет играть. |
кста, судя по адресу проигрывания (START+6) это PT2.
имхо лучше компилить музоны под 49152 (#C000) а саму прогу под 32768 (#8000) |
Quote:
|
Quote:
|
Quote:
ORG 30000 CALL 40000 LOOP EI HALT CALL 40006 XOR A IN A,(#FE) CPL AND #1F JR Z,LOOP (здесь может быть nz - не помню) JP 40000 |
Quote:
ORG 30000 CALL 40000 LOOP EI HALT CALL 40006 XOR A IN A,(#FE) CPL AND #1F JR Z,LOOP JP 40000 |
Quote:
у PT3 - START+5 у ST зависит от компилятора, точно не помню, но вроде START+5 где START - куда компилировался музон (обычно #C000 или 49152) и ещё, приаттачь свой музон сюда, а то телепаты в отпуске. |
1 Attachment(s)
Quote:
|
| All times are GMT +4. The time now is 21:17. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.