Dzięki Skull za cynka, jednak nie o to do końca mi chodziło.
Sprawa jest tego typu, że mam już przerwanie IRQ pod ($0314), które odtwarza muzykę, następuje więc z niego powrót przez skok do $EA31. I w trakcie odtwarzania tej muzyki program doczytuje dane z dyskietki takie jak plansze czy zmieniające się charsety, etc. Wtedy właśnie następuje ten problem.
Wydedukowałem, że zawiesza mi muzykę nawet przy próbie otwierania i zamykania pliku bez pobierania z niego danych.
Postanowiłem więc samemu wymyśleć co i jak. Kombinowałem więc z włożeniem loadera do IRQ, który odczytuje sobie np: wartość spod $7000. W niej zapisuję poszczególne kroki a w każdym kroku po jednym odwołaniu do jakiegoś JSR. A jest trochę tych JSR: $FFBA, $FFBD, $FFC0, $FFC6, w końcu input czyli $FFCF (wykonywane więc co przerwanie po odegraniu kawałka muzyki) no i $FFCC i $FFC3. I udało mi się. Co prawda wczytuje się teraz o wiele wolniej niestety i zdarzają się jakieś dwa czy trzy momenty, w których lekko szarpie, ale prawie tego nie słychać (powiedzmy
).
Dodatkowo pod $7001 ustawiłem bramkę, która przepuszcza do następnego kroku dopiero po wykonaniu danego JSR. Dopiero po dobrej pół godzinie zauważyłem, że pewnie o to chodzi, bo przechodziło mi wszystkie kroki i zamykało plik zanim zdążyło coś z niego odczytać
. No i oczywiście przy każdym wejściu do odczytu danych muszę odwoływać się do JSR $FFC6 z numerem logicznym urządzenia.
Nie jest to piękna metoda, zajmuje troszkę miejsca w IRQ, choć akurat tymi IRQ zamierzam przełączać w zależności od tego czy ma być coś wczytywane czy wykonywana inna część programu.
Jeżeli jest jakaś prostsza metoda \'chackingowa\' - proszę o garść kodu lub cynk
.
Dzięki Skull BARDZO SERDECZNIE za tego linka, co prawda nie skorzystałem z tego kodu ale i tak wyłapałem z niego to co najlepsze. Chodzi mi o wartość jaka znajduje się pod $BA. Rewelacja.
Pozdrawiam!! Dzięki!