| |
breeze Account closed
Registered: Mar 2009 Posts: 20 |
C64 interrupts
Hi pplz :)
Please, explain to me the principle of work interrupts in the C64:
1. The Z80 cpu has a HALT command, which allows to wait for the interruption at the main loop of code.Is there such a command to CPU 6510 or is not possible?
2. In the processor Z80 when it comes to interrupt code execution in the code of main loop is stops and execute the code of interrupt. After execute the code of interrupt, continue to execute code of the main loop. Processor 6510 operates on the same principle? Or code of main loop will continue run and the code of interupt will start parallel ? |
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
1. no such instruction on the 6502
2. thats just the basic principle of how interrupts work - on every cpu :) |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
1.
SEI (SEt I(nterrupt) flag) instruction does disable interrupts
CLI (CLear I(nterrupt) flag) instruction does enable interrupts
the 6510 can receive two types of interrupts. SEI/CLI ony affects 'Normal' interrupts (VICII generated & CIA generated), While NMI (Non Maskable Interrupt) interrupts may not be blocked (unless you use some trickery), these are generated by the 'other' CIA. the CIA chips amongst other stuff have timers which can be used to generate interrupts.
2.
works same as on z80. 6510 saves return address and CPU status register on stack, everything else you have to take care of. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
oswald: HALT is nothing like SEI/CLI :) it makes the cpu stop executing opcodes until an external interrupt occurs, which is usually used for putting the cpu into some sort of powersaving state in this time. (gameboy code uses this extensivly for example, to save battery power) |
| |
breeze Account closed
Registered: Mar 2009 Posts: 20 |
Big thanks for the clarification! |
| |
Skate
Registered: Jul 2003 Posts: 494 |
so, if we use HALT without setting any interrupts, CPU will completely stop working. I mean it's not like "jmp *", no opcodes would be fetched and executed. Did I get it right? |
| |
breeze Account closed
Registered: Mar 2009 Posts: 20 |
Quote: so, if we use HALT without setting any interrupts, CPU will completely stop working. I mean it's not like "jmp *", no opcodes would be fetched and executed. Did I get it right?
if interrupts is disabled (DI) then you right, the Z80 will HALT. But by default way interrupts is enabled. |
| |
Frantic
Registered: Mar 2003 Posts: 1648 |
When I coded the mega-stretcher in "Demontronic" (by Megaboys) for the Gameboy Color, I used HALT to get stable raster timing, since there is no jitter in the onset of the interrupt after putting the CPU in halted mode (unlike "jmp *"). On c64 this is of course a bit more complicated, since the jitter must be neutralized/compensated for in various ways if one wants perfectly stable timing of the onset of the interrupt code. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
We have a couple of op-codes which would perform a complete HALT without any wake-on-interrupt option, most commonly called JAM or HLT. :) |
| |
Mr. SID
Registered: Jan 2003 Posts: 424 |
Yeah, would be cool if you could still service an IRQ after a JAM and wake it up again... |
| |
assiduous Account closed
Registered: Jun 2007 Posts: 343 |
Quoting Mr. SIDYeah, would be cool if you could still service an IRQ after a JAM and wake it up again...
run FLI DXPP in Vice or Vice"SC" and close the jam popup window after pressing space. poof,magic ensues:)
dont hold your breath though- its one of Vice bugs and it doesnt work in Hoxs&Ccs or on the real box. |
... 3 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 - Next |