6

When an interrupt occurs on a Motorola 68000-family processor, it enters an interrupt acknowledge state, which continues until one of three signals are asserted:

  • An external device places the intended exception vector number on the data bus, and then asserts the DTACK# (68010 or earlier) or DSACK0-1# (68020 or later) signal.

  • The VPA# (68010 or earlier) or AVEC# (68020 or later) signal is asserted, which tells the processor to automatically calculate the exception vector number from the interrupt priority level.

  • The BERR# signal is asserted, which indicates a "spurious interrupt". Presumably, this is supposed to indicate that an interrupt was generated (possibly by electrical noise on an interrupt line), but no peripheral is claiming responsibility for the interrupt.

Did any commercially-available M68k system have hardware that was capable of generating a spurious interrupt?

(I am asking about the presence of hardware capable of generating the signal, not software that could handle such an exception.)

  • Action Replay MKIII on the amiga was able to generate a NMI interrupt and take control of a machine even when all interrupts were enabled. Does that count? – Jean-François Fabre Jul 24 at 15:37
  • @Jean-FrançoisFabre: No. A non-maskable interrupt occurs by setting the interrupt level to 7, and then autovectoring to exception vector 31. A spurious interrupt occurs when BERR is asserted during the interrupt acknowledge, triggering exception vector 24. They are not the same. – DrSheldon Jul 24 at 16:43
  • okay, I remember its vector being at address $60+VBR, and I never saw it triggered, no. – Jean-François Fabre Jul 24 at 20:25
  • The Atari ST has a special "Bomb Code" for the Spurious Interrupt vector (26 Bombs"), which suggests that could be triggered. – tofro Jul 25 at 8:29
5

You can actually generate a "spurious interrupt" condition on the Atari ST with its MFP (68901) - Not on purpose, but rather because of a glitch in the Motorola 68901 - If you disable interrupts on the MFP exactly at the point when the CPU starts an IACK cycle (i.e with the last instructions before the /INT), it will not provide a vector, the CPU will run into the "Spurious interrupt" condition.

This has apparently been mis-used (exploited?) in various ST demos.

| improve this answer | |
0

The original Mac used BERR for the "Programmers Switch", which was a small switch that could be installed (well, the switch was always there, but access to the switch could be installed). The Programmers Switch had two buttons: the interrupt button, and the reset button. Reset is pretty obvious, the Interrupt button was designed to be patched in to with a debugger, so that the developer could stop the current program and inspect it.

Out of the box, I honestly don't recall what it did anymore. It wasn't a monitor, may have been a simple dialog box to restart the machine. But with an actual debugger installed, it kicked you right to the command prompt.

Addenda:

Good heavens.

enter image description here

This is a screen grab from https://museo.freaknet.org/gallery/apple/stuff/mac/andreas.kann/MacPlus1.GIF

Which, admittedly, is apparenlty a Mac Plus schematic, not the 128K schematic. So I can't speak with any authority about the 128K (though honestly, whatever changes are between the 128K and Mac Plus, I'm guessing they're not in the programmers switch).

As should be clear from this schematic, pins 22 and 23 are wired to SW1 (cleverly labeled "INTERRUPT"). While the schematic is fuzzy on the pin labels, it's not fuzzy on the pin numbers. Pin 23 is /IPL2, Pin 22 is BERR (according to other documentation).

So I guess this can be interpreted however one wants, but sure looks like early Mac uses BERR in the process of the behavior of the "Programmers Switch". Why it would use both, I can't speculate.

| improve this answer | |
  • 1
    Although it is a theoretical possibility, it's extremely unlikely. You would have to press the switch the moment the interrupt occurred, and not before, as that would trigger a Bus Error exception instead. – DrSheldon Jul 24 at 15:01
  • I was curious and checked (I consider what you describe as an unusual use of /BERR). The "interrupt switch" is actually connected to the /IPL2 signal of the 68000 rather than /BERR, so it actually uses the Level 4 Interrupt. – tofro Jul 25 at 9:03
  • BERR doesn't seem to be used in the Classic Mac at all. And the Programmer's switch had you actually end up in MacsBug, the debugger. (en.wikipedia.org/wiki/MacsBug) – tofro Jul 25 at 9:28
  • 1
    That schematic shows BERR directly tied to +5V. There's no way you could generate a spurious interrupt exception. Perhaps you are confused by R12 -- which helps to pull IPL2 high when the switch is not pressed -- but that has no effect on BERR. – DrSheldon Jul 25 at 19:17
  • And that schematic actually proves /BERR is not used in the Classic Mac at all - Its pulled to "1", constantly. – tofro Jul 26 at 10:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.