Dobra. Wszystko zrobione. Przy okazji poprawilem buga powodujacego wylaczanie BASICa mimo, że powinien zostać włączony (i tak był oznaczony na ekranie ;) ).
No i mam ciekawą zagwozdkę. W czasie testów nie odpalila mi sie gra Final Legacy. W poprzednich wersjach sie odpalala, po przelaczniu emulatora na NTSC tez sie odpala, takze w nowej wersji loadera!
Zaczalem analizowac kod tej gry i z pierwszych rozkazow wynika ze odpala sie raczej przypadkiem (dlaczego wiec odpalala sie w poprzednich wersjach MSDOS, a w nowej nie odpala sie wcale??, dlaczego chodzi w NTSC??).
Zastrzegam ze testowalem tylko pod emulatorami....
A oto ten kod z poczatku gry.... a jest to kopia z carta, a ten kawalek kodu odpala sie przed skokiem do obszaru samej gry.
7f86 LDA #$80
7f88 STA $6a ;RAMTOP
7f8a LDA #$00
7f8c TAY
7f8d TAX
7f8e STA $0200,X ; <--- zamazuje wektory przerwan!!!
7f91 INX
7f92 BNE $7f8e
7f94 STA $09 ;BOOT
7f96 STA $244 ;COLDST
7f99 LDA #$3c
7f9b STA $d302 ;PACTL
7f9e LDA #$52
7fa0 STA $02fc ;KBCODES
7fa3 JMP $8000
Jak widać gra na starcie zeruje m.in. wektory przerwań nie blokując przerwań wcześniej!!!
Sprawdziłem, ze wyklada sie wlasnie dlatego ze w miedzyczasie wywoluje sie jakies przerwanie.
Tylko dlaczego w poprzedniej wersji loadera sie nie wywolywalo, i dlaczego nie wywoluje sie w NTSC ???
Tym bardziej ze zmiany w loaderze prawie zadne.
Oczywiście problemy z uruchomieniem tej gry to nie wina loadera (SDLOAD zachowuje sie tak samo jak najnowsza wersja MSDOSa), ale intryguje mnie dlaczego w poprzednich wersjach ta gra sie wczytywała. Troszke sie jedna procedura - uruchamiana po zaladowaniu kolejnego bloku - w loaderze wydluzyla (kosztem innej) i stawiam na to wlasnie + zbieg okoliczności z czasami wykonywania się procedur i wystepowaniem przerwań.
Wlasciwie gra ta chodzi tak samo dobrze (a przy okazji odpala sie zawsze, wiec lepiej) bez wykoniania przedstawionej wyzej procedury - wystarczy po zaladowaniu skok pod $8000 :)
Dodalem w loaderze czekanie az Antic zacznie rysowac ekran (czekanie na linie nr 0) przed skokiem pod adres startu gry i Final Legacy odpala sie zawsze..... wiec byla to kwestia szczescia. Ale zamiast zmieniac loader chyba trzebaby poprawic plik gry :)
Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.