Subject: Re: [stella] BRK instruction: Request for clarification! From: "Eckhard Stolberg" <Eckhard_Stolberg@xxxxxx> Date: Tue, 26 Jul 2005 09:55:29 -0400 |
>> 1) When a BRK instruction is executed, is the existing >> status register altered? > > Yes: the B flag is set. Actually the B flag should always be set, except when a hardware interrupt occurs. I think in this case a BRK instruction will be executed but with the B flag cleared during execution so that it gets pushed to the stack in this state. The B flag is wired directly to the interrupt input pin on the 6502. In the 6507 this pin is internally set high, so on the VCS the B flag should always be set. The BRK instruction sets the I flag after pushing the status byte to the stack though, as you mentioned below. >> 2) Where and how should the BRK flag be cleared? Or is this >> done automatically? > > In your interrupt handler. As you said, you have to clear it by masking > the bit manually. None of the instructions in the 6502 affects the B flag. It's hardwired to the interrupt input pin, so you can't change the bit yourself. >> 3) What happens to the IRQ flag during execution of the BRK? >> is it ever changed? (It should normally be inactive when a >> BRK occurs, but since it is ignored by BRK it could be in >> any state.) > > According to the Stella code above (and according to "cpu.asm" in the > z26 source), the I flag gets set *after* the PC and status are pushed, > so an RTI restores its original state. I didn't know/remember that until > I looked at the code just now (it's been a long time since I used a 6502 > system that actually has interrupts: on the 2600, I just SEI at startup > and ignore the I flag thereafter). > > I doubt both Stella and z26 are wrong though, not when they're doing > exactly the same thing. This behaviour is described in many 6502 manuals, including the tutorial on 6502.org that you pointed to. So I suppose both emulators are handling it correctly. ;-) Ciao, Eckhard Stolberg Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://stella.biglist.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [stella] BRK instruction: Reque, B. Watson | Thread | Re: [stella] BRK instruction: Reque, B. Watson |
[stella] Stella debugger minimum wi, B. Watson | Date | Re: [stella] BRK instruction: Reque, B. Watson |
Month |