68k vector table: Difference between revisions

From NeoGeo Development Wiki
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