wszystko juz chyba dziala, nie mam tylko pewnosci co do wartosi, ktore wpisuje do $d40e(NMI),$d301(OS) poniewaz zrobilem tak jak mowil Swiety odczytalem wartosci bitow tych komorek przed wylaczeniem OS tyle ,ze sa to chyba komorki TYLKO DO ZAPISU wiedz moglem otrzymac jakas zla wartosc - odczytalo mi z obu komorek wartosc $FF, taka tesz wpisalem no i dziala! ;) OS zostal znowu przepisany z ROM->RAM
Odczytywanie $d301 (portb) jest jak najbardziej na miejscu: ten rejestr jest R/W. $d40e (nmien) jest tylko do zapisu i odczytywanie go nie ma sensu. Ale to zadna strata, bo odpowiada on tylko za wlaczenie/wylaczenie przerwan VBL/DLI przy czym DLI standardowo w systemie nie jest uzywane wiec wystarczy zezwolic tylko na VBL wpisujac tam $80.
Tak na przyszlosc mam tylko uwage, ze NIE NALEZY jednoczesnie wylaczac ROMU i ustawiac banku, gdyz istnieja rozszerzenia, ktore do przelaczania bankow wykorzystuja wlasnie bit ROMU (przez to poleglo moje interko 1k na forever 2004 :) )
Wkleje teraz procedurki wyrzniete z loadera do FLOVE, ktore w zamierzeniu mialy nie zmieniac ustawionego banku (i sa troche na wyrost, ale najprawdopodobniej dzialaja, skoro demo przynajmniej sie laduje)
ROMOff
sei
lda #0
sta nmien ;wylaczamy przerwania
lda portb
ldy #%11111110
sty portb ;odlaczenie ROMu przy wylaczonych bankach
and #%11111110 ;maska bez ROMu
sta portb ;zapisanie maski bez ROMu
rts
ROMOn
lda portb
ldy #%11111111
sty portb ;podlaczenie ROMu przy wylaczonych bankach
ora #%00000001 ;maska z ROMem
sta portb ;zapis maski z ROMem
lda #%11000000 ;maska VBL i DLI
sta nmien ;uruchamiamy przerwania
cli
rts
PS sei/cli blokuja tez przerwania IRQ
PS kurcze. i nawet je teraz zoptymalizowalem, wiec nie wiem, czy wciaz dzialaja ;)