siz Creative Commons License 2018.10.05 0 0 8962

A BRK kezelője szerintem visszaállítja a KERNAL ROM-t. Van a PLA-nak egy KERNAL nevű kimenete, ami akkor lesz aktív, ha $fc00-$ffff címeket szólítasz meg és ez minden ROM olvasásnál ebben a címtartományban a KERNAL kiválasztását kényszeríti. Az IRQ kezelő meg így indul:

. FCB3 48        PHA                                                       

. FCB4 8A        TXA                                                       

. FCB5 48        PHA                                                       

. FCB6 98        TYA                                                       

. FCB7 48        PHA                                                       

. FCB8 8D D0 FD  STA $FDD0                                                 

. FCBB 4C 00 CE  JMP $CE00                                                 

 

$ce00-nál megnézi, hogy BRK volt-e:

. CE00 BA        TSX                                                       

. CE01 BD 04 01  LDA $0104,X                                               

. CE04 29 10     AND #$10                                                  

. CE06 D0 03     BNE $CE0B                                                 

. CE08 6C 14 03  JMP ($0314)                                               

. CE0B 6C 16 03  JMP ($0316)

 

Most azt hirtelen nem találom, hogy mit csinál a BRK kezelő a ROM bankkal, de az IRQ vége biztosan az, hogy

. FCC9 A6 FB     LDX $FB                                                   

. FCCB 9D D0 FD  STA $FDD0,X

 

Tehát ha nem tiltod le a megszakításokat és JMP * -al fejezed be a programodat, akkor valaki később garantáltan visszaállítja a $0-s ROM bankot (BASIC+KERNAL). Ha $FB-re $05-öt írsz, akkor a megszakítás végén az visszaállítja neked a saját bankodat. Kivéve, ha a BRK rutin valahol $0-t ír a $FB-re.

 

Előzmény: Törölt nick (8960)