68k vector table: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 1: | Line 1: | ||
Default ASM vector tables for [[68k]] binaries. $C00426 is a [[BIOS calls|BIOS call]] for a complete reset on every systems (?). | Default ASM vector tables for [[68k]] binaries. $C00426 is a [[BIOS calls|BIOS call]] for a complete reset on every systems (?). | ||
== For cartridge systems == | {|class="regdef" | ||
|'''Vector #''' | |||
|'''Address''' | |||
|'''Exception name''' | |||
|'''Condition''' | |||
|'''[[68k stack frames|Stack frame]]''' | |||
|- | |||
|0 | |||
|000000 | |||
|Reset SSP | |||
|Not really a vector. Stack pointer value at reset. | |||
| | |||
|- | |||
|1 | |||
|000004 | |||
|Reset PC | |||
|Reset | |||
|0 | |||
|- | |||
|2 | |||
|000008 | |||
|Bus error | |||
|Bus cycle couldn't complete properly | |||
|0 | |||
|- | |||
|3 | |||
|00000C | |||
|Address error | |||
|Misaligned word or longword memory access | |||
|0 | |||
|- | |||
|4 | |||
|000010 | |||
|Illegal instruction | |||
|Incorrect opcode for 68000 | |||
|1 | |||
|- | |||
|5 | |||
|000014 | |||
|Division by zero | |||
|DIVUed or DIVSed by zero | |||
|2 | |||
|- | |||
|6 | |||
|000018 | |||
|CHK instruction | |||
|CHK resulted in out of bounds | |||
|2 | |||
|- | |||
|7 | |||
|00001C | |||
|TRAPV instruction | |||
|TRAPV with V = 1 | |||
|2 | |||
|- | |||
|8 | |||
|000020 | |||
|Privilege violation | |||
|Use of privileged instruction. Never happens on the NeoGeo since the 68k always runs in supervisor mode. | |||
|1 | |||
|- | |||
|9 | |||
|000024 | |||
|Trace | |||
|After each executed instruction when 68k is in trace mode (debugger function). | |||
|1 | |||
|- | |||
|10 | |||
|000028 | |||
|Unimplemented instruction (line A) | |||
| | |||
|1 | |||
|- | |||
|11 | |||
|00002C | |||
|Unimplemented instruction (line F) | |||
| | |||
|1 | |||
|- | |||
|12 | |||
|000030 | |||
|rowspan=3|Reserved by Motorola | |||
|rowspan=3| | |||
|rowspan=3| | |||
|- | |||
|13 | |||
|000034 | |||
|- | |||
|14 | |||
|000038 | |||
|- | |||
|15 | |||
|00003C | |||
|Uninitialised interrupt vector | |||
| | |||
| | |||
|- | |||
|16 | |||
|000040 | |||
|rowspan=8|Reserved by Motorola | |||
|rowspan=8| | |||
|rowspan=8| | |||
|- | |||
|17 | |||
|000044 | |||
|- | |||
|18 | |||
|000048 | |||
|- | |||
|19 | |||
|00004C | |||
|- | |||
|20 | |||
|000050 | |||
|- | |||
|21 | |||
|000054 | |||
|- | |||
|22 | |||
|000058 | |||
|- | |||
|23 | |||
|00005C | |||
|- | |||
|24 | |||
|000060 | |||
|Spurious interrupt | |||
|No ACK from hardware | |||
| | |||
|- | |||
|25 | |||
|000064 | |||
|Level 1 [[68k interrupts|interrupt]] autovector | |||
|VBlank / Timer | |||
| | |||
|- | |||
|26 | |||
|000068 | |||
|Level 2 interrupt autovector | |||
|Timer / VBlank | |||
| | |||
|- | |||
|27 | |||
|00006C | |||
|Level 3 interrupt autovector | |||
|Cold boot | |||
| | |||
|- | |||
|28 | |||
|000070 | |||
|Level 4 autovector (not used) | |||
| | |||
| | |||
|- | |||
|29 | |||
|000074 | |||
|Level 5 autovector (not used) | |||
| | |||
| | |||
|- | |||
|30 | |||
|000078 | |||
|Level 6 autovector (not used) | |||
| | |||
| | |||
|- | |||
|31 | |||
|00007C | |||
|Level 7 autovector (not used) | |||
| | |||
| | |||
|- | |||
|32 | |||
|000080 | |||
|TRAP #0 instruction | |||
| | |||
|2 | |||
|- | |||
|33 | |||
|000084 | |||
|TRAP #1 instruction | |||
| | |||
|2 | |||
|- | |||
|34 | |||
|000088 | |||
|TRAP #2 instruction | |||
| | |||
|2 | |||
|- | |||
|35 | |||
|00008C | |||
|TRAP #3 instruction | |||
| | |||
|2 | |||
|- | |||
|36 | |||
|000090 | |||
|TRAP #4 instruction | |||
| | |||
|2 | |||
|- | |||
|37 | |||
|000094 | |||
|TRAP #5 instruction | |||
| | |||
|2 | |||
|- | |||
|38 | |||
|000098 | |||
|TRAP #6 instruction | |||
| | |||
|2 | |||
|- | |||
|39 | |||
|00009C | |||
|TRAP #7 instruction | |||
| | |||
|2 | |||
|- | |||
|40 | |||
|0000A0 | |||
|TRAP #8 instruction | |||
| | |||
|2 | |||
|- | |||
|41 | |||
|0000A4 | |||
|TRAP #9 instruction | |||
| | |||
|2 | |||
|- | |||
|42 | |||
|0000A8 | |||
|TRAP #10 instruction | |||
| | |||
|2 | |||
|- | |||
|43 | |||
|0000AC | |||
|TRAP #11 instruction | |||
| | |||
|2 | |||
|- | |||
|44 | |||
|0000B0 | |||
|TRAP #12 instruction | |||
| | |||
|2 | |||
|- | |||
|45 | |||
|0000B4 | |||
|TRAP #13 instruction | |||
| | |||
|2 | |||
|- | |||
|46 | |||
|0000B8 | |||
|TRAP #14 instruction | |||
| | |||
|2 | |||
|- | |||
|47 | |||
|0000BC | |||
|TRAP #15 instruction | |||
| | |||
|2 | |||
|- | |||
|48~63 | |||
|0000C0~0000FC | |||
|Reserved by Motorola | |||
| | |||
| | |||
|- | |||
|64~255 | |||
|000100~0003FF | |||
|User interrupt vectors | |||
| | |||
| | |||
|} | |||
=Default vector tables= | |||
==For cartridge systems== | |||
<syntaxhighlight> | <syntaxhighlight> | ||
org $0 | org $0 | ||
Line 34: | Line 317: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== For CD systems == | ==For CD systems== | ||
<syntaxhighlight> | <syntaxhighlight> | ||
org $0 | org $0 |
Revision as of 09:35, 4 March 2016
Default ASM vector tables for 68k binaries. $C00426 is a BIOS call for a complete reset on every systems (?).
Vector # | Address | Exception name | Condition | Stack frame |
0 | 000000 | Reset SSP | Not really a vector. Stack pointer value at reset. | |
1 | 000004 | Reset PC | Reset | 0 |
2 | 000008 | Bus error | Bus cycle couldn't complete properly | 0 |
3 | 00000C | Address error | Misaligned word or longword memory access | 0 |
4 | 000010 | Illegal instruction | Incorrect opcode for 68000 | 1 |
5 | 000014 | Division by zero | DIVUed or DIVSed by zero | 2 |
6 | 000018 | CHK instruction | CHK resulted in out of bounds | 2 |
7 | 00001C | TRAPV instruction | TRAPV with V = 1 | 2 |
8 | 000020 | Privilege violation | Use of privileged instruction. Never happens on the NeoGeo since the 68k always runs in supervisor mode. | 1 |
9 | 000024 | Trace | After each executed instruction when 68k is in trace mode (debugger function). | 1 |
10 | 000028 | Unimplemented instruction (line A) | 1 | |
11 | 00002C | Unimplemented instruction (line F) | 1 | |
12 | 000030 | Reserved by Motorola | ||
13 | 000034 | |||
14 | 000038 | |||
15 | 00003C | Uninitialised interrupt vector | ||
16 | 000040 | Reserved by Motorola | ||
17 | 000044 | |||
18 | 000048 | |||
19 | 00004C | |||
20 | 000050 | |||
21 | 000054 | |||
22 | 000058 | |||
23 | 00005C | |||
24 | 000060 | Spurious interrupt | No ACK from hardware | |
25 | 000064 | Level 1 interrupt autovector | VBlank / Timer | |
26 | 000068 | Level 2 interrupt autovector | Timer / VBlank | |
27 | 00006C | Level 3 interrupt autovector | Cold boot | |
28 | 000070 | Level 4 autovector (not used) | ||
29 | 000074 | Level 5 autovector (not used) | ||
30 | 000078 | Level 6 autovector (not used) | ||
31 | 00007C | Level 7 autovector (not used) | ||
32 | 000080 | TRAP #0 instruction | 2 | |
33 | 000084 | TRAP #1 instruction | 2 | |
34 | 000088 | TRAP #2 instruction | 2 | |
35 | 00008C | TRAP #3 instruction | 2 | |
36 | 000090 | TRAP #4 instruction | 2 | |
37 | 000094 | TRAP #5 instruction | 2 | |
38 | 000098 | TRAP #6 instruction | 2 | |
39 | 00009C | TRAP #7 instruction | 2 | |
40 | 0000A0 | TRAP #8 instruction | 2 | |
41 | 0000A4 | TRAP #9 instruction | 2 | |
42 | 0000A8 | TRAP #10 instruction | 2 | |
43 | 0000AC | TRAP #11 instruction | 2 | |
44 | 0000B0 | TRAP #12 instruction | 2 | |
45 | 0000B4 | TRAP #13 instruction | 2 | |
46 | 0000B8 | TRAP #14 instruction | 2 | |
47 | 0000BC | TRAP #15 instruction | 2 | |
48~63 | 0000C0~0000FC | Reserved by Motorola | ||
64~255 | 000100~0003FF | User interrupt vectors |
Default vector tables
For cartridge systems
org $0
dc.l $0010F300 ; Initial SP
dc.l $00C00402 ; Initial PC
dc.l $00C00408 ; Bus error
dc.l $00C0040E ; Address error
dc.l $00C0040E ; Illegal Instruction
dc.l $0000034C ; Divide by 0
dc.l $0000034E ; CHK Instruction
dc.l $0000034E ; TRAPV Instruction
dc.l $00C0041A ; Privilege Violation
dc.l $00C00420 ; Trace
dc.l $0000034E,$0000034E ; Emu
dc.l $00C00426,$00C00426,$00C00426 ; Reserved
dc.l $00C0042C ; Uninit. Int. Vector.
dc.l $00C00426,$00C00426,$00C00426,$00C00426 ; Reserved
dc.l $00C00426,$00C00426,$00C00426,$00C00426 ; Reserved
dc.l $00C00432 ; Spurious Interrupt
dc.l VBlank ; Level 1
dc.l IRQ2 ; Level 2
dc.l $00C00426 ; Level 3
dc.l $00C00426,$00C00426,$00C00426,$00C00426 ; Level 4~7
dc.l $0000056E,$0000056E,$0000056E,$0000056E ; Traps...
dc.l $0000056E,$0000056E,$FFFFFFFF,$FFFFFFFF
dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
For CD systems
org $0
dc.l $0010F300,$00C00402,$00C00408,$00C0040E
dc.l $00C00414,$00C00426,$00C00426,$00C00426
dc.l $00C0041A,$00C00420,$00C00426,$00C00426
dc.l $00C00426,$00C00426,$00C00426,$00C0042C
dc.l $00C00522,$00C00528,$00C0052E,$00C00534
dc.l $00C0053A,$00C004F2,$00C004EC,$00C004E6
dc.l $00C004E0, IRQ2, VBlank, IRQ3
dc.l Generic, Generic, Generic, Generic
dc.l Generic, Generic, Generic, Generic
dc.l Generic, Generic, Generic, Generic
dc.l Generic, Generic, Generic, Generic
dc.l Generic, Generic, Generic, Generic
dc.l $00C00426,$00C00426,$00C00426,$00C00426
dc.l $00C00426,$00C00426,$00C00426,$00C00426
dc.l $00C00426,$00C00426,$00C00426,$00C00426
dc.l $00C00426,$00C00426,$00C00426,$00C00426