I'm playing around with building an Altair 8800 emulator in my free time in C#. I've read through the Operator's Manual many times in the past, and I'm refreshing my memory of late.
I'm struggling to understand exactly how interrupts work. So, presumably, some kind of signal from outside the machine is capable of triggering an interrupt. What does that do?
I can see from the operator's manual, page 44, that when the machine is HALT'd, an interrupt will allow it to resume.
Page 45 goes on to tell us than an external device can "cause a RST instruction to be executed during an interrupt". What is meant by "during an interrupt"? Isn't an interrupt an instantaneous thing, in terms of execution?
Finally, certain instructions take multiple machine cycles to be processed. If an interrupt occurs during such an instruction, is the instruction allowed to finish processing? Is it cancelled outright? Is it paused midway through the cycles and resumed? That last one definitely doesn't seem right to me.
I feel like I'm fundamentally misunderstanding something very important here, but the manual isn't much help.
EDIT: Also, what signal specifically caused the interrupt? How did this signal reach the machine?