Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
documentations:devices:6809 [2014/04/10 21:50] – [Instruction set and addressing modes] pulkomandy | documentations:devices:6809 [2015/02/28 18:08] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Technical description ===== | ===== Technical description ===== | ||
- | Registers: | + | ==== Registers |
- | * A and B: two 8-bit accumulators, | + | |
- | * X and Y: two index registers, used as memory pointers | + | |
- | * U and S: user and system stacks | + | |
- | * CC: condition flags register | + | |
- | * DP: direct-page pointer | + | |
==== Instruction set and addressing modes ==== | ==== Instruction set and addressing modes ==== | ||
This is already covered elsewhere on the internet. Do I need to repeat everything? | This is already covered elsewhere on the internet. Do I need to repeat everything? | ||
- | * [[http://public.logica.com/~burgins/emulator/com/m6809.html]] - Opcode summary with number of cycles, hex encoding of instruction, | + | * [[http://techheap.packetizer.com/processors/6809/6809_instruction_set.html]] - Opcode summary with number of cycles, hex encoding of instruction, |
* [[http:// | * [[http:// | ||
+ | * [[http:// | ||
====Interrupts==== | ====Interrupts==== | ||
* Reset: at system reset. | * Reset: at system reset. | ||
* NMI: non-maskable. | * NMI: non-maskable. | ||
- | * IRQ | + | * IRQ: all registers are saved on the stack before processing the interrupt. |
- | * FIQ: registers | + | * FIQ: Only PC and CC are saved (faster than IRQ, but needs manual save of registers |
- | * SWI1, 2, and 3: software interrupts triggered by the SWI instruction. | + | * SWI1, 2, and 3: software interrupts triggered by the SWI instructions. (On Thomson machines with standard ROM, only SWI1 is useable, the others are hardcoded to do nothing). |
+ | |||
+ | The 6809 interrupts fetch an address from memory, and jumps to it. The interrupt table is at a fixed address at the top of memory: | ||
+ | * FFF2: SWI3 | ||
+ | * FFF4: SWI2 | ||
+ | * FFF6: FIRQ | ||
+ | * FFF8: IRQ | ||
+ | * FFFA: SWI | ||
+ | * FFFC: NMI | ||
+ | * FFFE: Reset | ||
===== Download ===== | ===== Download ===== | ||
- | Datasheet, | + | * Complete |
+ | * {{: | ||
+ | * Datasheet |