FE30 is write-only. The read value isn't useful. That's why we have &F4 and why routines that change FE30 need to ensure F4 is correct. Do it in the right order; set F4 before FE30 (to handle possible race conditions with interrupts).÷?&FE30 return &FE, not &0F as expected.
eg
Code:
\ Save current value of which ROM is selectedLDA &F4PHA\ Page in ROM 10LDA #10STA &F4STA &FE30\ Do something. In this case read and print the copyright stringLDX &8007 \ copyright offset.loopLDA &8001,XBEQ endJSR &FFEEINXBNE loop.end\ Restore the original ROMPLASTA &F4STA &FE30RTSThat's because Monitor is also a ROM, so if you use it to change FE30 you will page the ROM out.Attempting to chance FE30 in Monitor still fails.
Manipulating FE30 is typically done from assembler code running in RAM, or from the OS ROM. You can't do it from another ROM ('cos it will page itself out) except in very very special circumstances (both ROMs have the same code in the same location).
Statistics: Posted by sweh — Tue Jan 27, 2026 11:15 pm