+;==============================================================
+; BIG EVIL CORPORATION .co.uk
+;==============================================================
+; SEGA Genesis Framework (c) Matt Phillips 2014
+;==============================================================
+; interpts.asm - Interrupts and exceptions
+;==============================================================
+ addi.l #0x1, hblank_counter ; Increment hinterrupt counter
+ addi.l #0x1, vblank_counter ; Increment vinterrupt counter
+ TRAP #0 ; Sync with debugger - NOT FOR RELEASE
+ TRAP #0 ; Sync with debugger - NOT FOR RELEASE
+ TRAP #0 ; Sync with debugger - NOT FOR RELEASE
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l BusErrorString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 8(sp), (backup_pc) ; save pc state
+ move.l AddressErrorString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+IllegalInstructionException:
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l IllegalInstructionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l ZeroDivideString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+CHKInstructionException:
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l CHKInstructionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+TRAPVInstructionException:
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAPVInstructionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+PrivilegeViolationException:
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l PrivilegeViolationString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRACEString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l LineAEmulatorString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l LineFEmulatorString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP00ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP01ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP02ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP03ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP04ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP05ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP06ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP07ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP08ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP09ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP10ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP11ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP12ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP13ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP14ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler
+ move.w 2(sp), (backup_pc) ; save pc state
+ move.l TRAP15ExceptionString, (error_code) ; store error code in ram
+ jmp CrashHandler_Init ; jump to crash handler