From: Spiro Trikaliotis (trik-news_at_gmx.de)
Date: 2003-11-07 07:05:24
Hello,
On Thu, Nov 06, 2003 at 08:32:36AM +0100, Anders Carlsson wrote:
> How does the 6800 do BRK (if it has a similar op-code at all)?
According to my manual (I never programmed a 6800, I "only" worked with
6809), the 6800 has the "SWI" command ("SoftWare Interrupt").
Its opcode is $3F, it takes 1 byte and 12 cycles for execution.
(Compared to the 6502: $00, 1 byte with the "anomalie" 2 bytes, 7
cycles)
Executing SWI, the CPU does the following:
1. PC is incremented by 1
2. All registers are put on the stack
3. The flag "I" is set to 1, preventing further IRQs
3. $FFFA/$FFFB is read to get the interrupt vector
   Note: Since the 6800 is big endian, $FFFA is the high-byte,
   while $FFFB is the low-byte.
4. The PC is set to that interrupt vector
There is no B-Flag as with the 6502; the CPU distinguishes between IRQ
and SWI by the interrupt vector ($FFF8/9 for IRQ, $FFFA/$FFFB for the
SWI; BTW: $FFFC/$FFFD for NMI, $FFFE/$FFFF for RESET)
Thus, the 6800 does not show the "BRK-anomalie" of the 6502.
I think the explanation of Gideon should tell everything: It seems that
it was just easier chip design that led to this behaviour.
Spiro.
       Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.