Не во всех ПЗУ по адресу #3fff считывается #ffff. Было много самописных прошивок.
Вид для печати
2VNN> Ай ай ай, такой большой, а табличку для прерываний упрощённую используешь... :)
---------- Post added at 15:02 ---------- Previous post was at 15:01 ----------
Залог надёжного ИМ2. Сокращайте, убирайте, делайте по-своему. А потом будете удивляться, что даже в эмуле через раз работает.
есть разные куски, тут и там - может есть один но полный кусок кода для проигрывания на AY?
неважно насколько много циклов занимает, но важно исходники, что бы себе подключить проще и собрать прогу.
Ну вот например. Это я кусок кода cj покромсал, который он мне когда-то давал. Если такую кучу не надо сохранять на прерываниях - убери. Можно вообще сразу поместить куда надо обработчик и обойтись без ldir. Код для sjasmplus.
Это если я правильно понял, что ты хочешь проигрывать с прерываний. Если просто проигрывать - сделай тупо loop call music+5: jr loop и всё.
Код:imtab equ #be00 //таблица вектора прерываний (257 байт)
int_jump equ #bdbd //обработчик
start
di:ld sp,#6000
xor a:out (#fe),a
// прерывания
ld hl,imtab:ld a,h,i,a
ld a,low int_jump
ld (hl),a:inc l:jr nz,$-2
inc h:ld (hl),a
ld hl,obrab,e,a,d,a,bc,obrab_len:ldir
im 2
call music // init music
ei
loop
halt
jr loop
obrab //обработчик прерываний (работает с адреса #bdbd)
push af,hl,bc,de,ix,iy
exx
push hl,de,bc
ex af,af'
push af
call music+5
pop af
ex af,af'
pop bc,de,hl
exx
pop iy,ix,de,bc,hl,af
ei
ret
obrab_len equ $-obrab
music incbin "music.cod" //пт3-модуль с плеером
2 Shadow Maker
спасибо, нашел исходники
//пт3-модуль с плеером
щас переделаю для IAR или другого , но на PC ...
Добрый день. Есть такая проблема - ну никак не получается проиграть музыку, экспортированную из Vortex Tracker II. Экспортирую в формате hobeta with player, на адрес #C000. Из Бейсика загружаю на адрес 49152. Длина музыки с плеером из VT немногим меньше 6 КБ. Кодовый кусочек загружаю по адресу 45000, длина... да вот он, собственно, весь (как рекомендует и VT, и в этой теме был такой же кусочек кода):
CALL #C000
EI
LOOP CALL #C005
HALT
JP LOOP
RET
Результат - эмулятор сбрасывается.
Собственно, вопрос: что я делаю не так? Понятно, что причина ошибки на моей стороне, но в чем она заключается - никак не могу понять.