Czesc,
po ćwierćwieczu wróciłem do zabawy z kodem na zx pewnie jak wielu z was bo jest to dobra metoda na oderwanie sie od prozy życia:-)
I teraz konkretny problem, stworzyłem sobie obsługę przerwań IM2, wszystko ładnie chodzi i kolejny krok to próba odgrywania muzyki na ay poprzez ten mechanizm jednak nie moge sobie poradzic z formatem AY, generalnie przeczytałem juz wiekszosc rzeczy które sa w necie na ten temat i dalej tego jednoznacznie nie rozgryzlem.
Załóżmy że mam plik .ay z muzyką, importuje go do pasmo przez INCBIN, analizator formatu .ay pokazuje mi np że inicjacja playera w pliku ay to $C000 a odgrywanie muzyki to $C005, SP=0000 jednak nie znam adresu w ktory powinienem wgrać .ay do pamieci, jesli to zrobie od $C000 to wiadomo że na poczatku .ay mamy naglowek i ten adres inicjacji musi byc w innym miejscu, rozumiem ze powinienem agrac .ay w taki adres zeby wlasnie w $C000 byl kod inicjujacy, jak to zrobic? skad moza sie dowiedziec jaki jest offset procedury init w pliku.ay
Druga proba to wykorzystanie kodu dla pasmo - Arkos Tracker Player V1.0 ale on potrzebuje danych muzyki w formie surowej i tez mam probem z tym jak te dane uzyskac, probowalem z plikami .stc ale poniewaz robie to po omacku nie znajac dokladniej tych formatow to rowniez zaliczylem porazke:-)
ps:
w obsludze przerwan uzywam rst 56 zeby przerwania nie zawieszały basica, czy to moze miec jakis wplyw na calosc?
tak wyglada obsluga im2:
Interrupt: DI
PUSH AF
PUSH BC
PUSH DE
PUSH HL
PUSH IX
EXX
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
PUSH IY
RST 56
LD HL, $5800
LD (HL),$CC ;testowanie poprawnosci dzialania obslugi wyswietlajac atrybut $CC
CALL atPlay
POP IY
POP HL
POP DE
POP BC
POP AF
EXX
EX AF,AF'
POP IX
POP HL
POP DE
POP BC
POP AF
EI
RETI
RET
i samo wywolanie:
start:
LD DE,$C000
CALL atInit
DI
LD A,$80
LD I,A
IM 2
EI
ret
org $c000
INCBIN "/Users/varna/Documents/zx spectrum/assembler/music-intro.stc"
end start
Ma ktos z was doswiadczenie w tych kwestiach i moglby pomoc?
pozdrawiam