Snippets

ScorpionIlluminati Crash Handler

Updated by ScorpionIlluminati

File Comments Modified

  • Ignore whitespace
  • Hide word diff
 
 Do we need these?
 
-Reset Initial Stack
-Reset Initial PC
-Line 1010 Emulator
-Line 1111 Emulator
-Spurious Interrupt
-Level 1 interrupt autovector
-Level 2 interrupt autovector
-Level 3 interrupt autovector
-Level 4 interrupt autovector
-Level 5 interrupt autovector
-Level 6 interrupt autovector
-Level 7 interrupt autovector
-TRAP instruction vectors
-User interrupt vectors
+Line 1010 Emulator - Keep
+Line 1111 Emulator - Keep
+Spurious Interrupt - Remove, Not Possible To Trigger
+TRAPV, CHK & TRACE instruction vectors - Keep For Debug Use
 
 Source: https://www.dropbox.com/s/94wn18h7qt4ly88/ExVecTab.pdf?dl=0

File Debug.asm Modified

  • Ignore whitespace
  • Hide word diff
 
 TraceString:
       dc.b "Trace",0
+
+LineAEmulatorString:
+      dc.b "Line-A Emulator",0
+
+LineFEmulatorString:
+      dc.b "Line-F Emulator",0
+
+Trap00ExceptionString:
+      dc.b "Trap 00 Exception",0
+
+Trap01ExceptionString:
+      dc.b "Trap 01 Exception",0
+
+Trap02ExceptionString:
+      dc.b "Trap 02 Exception",0
+
+Trap03ExceptionString:
+      dc.b "Trap 03 Exception",0
+
+Trap04ExceptionString:
+      dc.b "Trap 04 Exception",0
+
+Trap05ExceptionString:
+      dc.b "Trap 05 Exception",0
+
+Trap06ExceptionString:
+      dc.b "Trap 06 Exception",0
+
+Trap07ExceptionString:
+      dc.b "Trap 07 Exception",0
+
+Trap08ExceptionString:
+      dc.b "Trap 08 Exception",0
+
+Trap09ExceptionString:
+      dc.b "Trap 09 Exception",0
+
+Trap10ExceptionString:
+      dc.b "Trap 10 Exception",0
+
+Trap11ExceptionString:
+      dc.b "Trap 11 Exception",0
+
+Trap12ExceptionString:
+      dc.b "Trap 12 Exception",0
+
+Trap13ExceptionString:
+      dc.b "Trap 13 Exception",0
+
+Trap14ExceptionString:
+      dc.b "Trap 14 Exception",0
+
+Trap15ExceptionString:
+      dc.b "Trap 15 Exception",0
       even

File interpts.asm Added

  • Ignore whitespace
  • Hide word diff
+;==============================================================
+;   BIG EVIL CORPORATION .co.uk
+;==============================================================
+;   SEGA Genesis Framework (c) Matt Phillips 2014
+;==============================================================
+;   interpts.asm - Interrupts and exceptions
+;==============================================================
+
+HBlankInterrupt:
+   addi.l #0x1, hblank_counter    ; Increment hinterrupt counter
+   rte
+
+VBlankInterrupt:
+   ; Backup registers
+   movem.l d0-a7,-(sp)
+
+   ; Cache Joypad inputs
+   jsr ReadPadA
+   jsr ReadPadB
+
+   addi.l #0x1, vblank_counter    ; Increment vinterrupt counter
+   TRAP #0 ; Sync with debugger - NOT FOR RELEASE
+
+   ; Restore registers
+   movem.l (sp)+,d0-a7
+   rte
+
+Exception:
+   TRAP #0 ; Sync with debugger - NOT FOR RELEASE
+   stop #$2700 ; Halt CPU
+   TRAP #0 ; Sync with debugger - NOT FOR RELEASE
+   jmp Exception
+   rte
+
+BusErrorException:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+AddressErrorException:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+ZeroDivideException:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRACEException:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+LineAEmulator:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+LineFEmulator:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP00Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP01Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP02Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP03Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP04Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP05Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP06Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP07Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP08Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP09Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+TRAP10Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP11Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP12Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP13Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP14Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+TRAP15Exception:
+   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
+   stop #$2700                                                                 ; Halt CPU
+   rte
+
+NullInterrupt:
+   rte
Updated by ScorpionIlluminati

File Comments Modified

  • Ignore whitespace
  • Hide word diff
-I am writting a crash handler and want to display a crash screen when my game crashes.
+I am writting a crash handler and want to display a crash screen when my game crashes. Some exceptions are not possible to trigger in normal certain curcumstances, but are included nevertheless as it's possible for them to occur due to abitary data execution due to the crash.
 
 Do we need these?
 
Updated by ScorpionIlluminati

File Comments Modified

  • Ignore whitespace
  • Hide word diff
 Level 6 interrupt autovector
 Level 7 interrupt autovector
 TRAP instruction vectors
-user interrupt vectors
+User interrupt vectors
+
+Source: https://www.dropbox.com/s/94wn18h7qt4ly88/ExVecTab.pdf?dl=0
Updated by ScorpionIlluminati

File Comments Added

  • Ignore whitespace
  • Hide word diff
+I am writting a crash handler and want to display a crash screen when my game crashes.
+
+Do we need these?
+
+Reset Initial Stack
+Reset Initial PC
+Line 1010 Emulator
+Line 1111 Emulator
+Spurious Interrupt
+Level 1 interrupt autovector
+Level 2 interrupt autovector
+Level 3 interrupt autovector
+Level 4 interrupt autovector
+Level 5 interrupt autovector
+Level 6 interrupt autovector
+Level 7 interrupt autovector
+TRAP instruction vectors
+user interrupt vectors
Updated by ScorpionIlluminati

File Debug.asm Modified

  • Ignore whitespace
  • Hide word diff
 PrivilegeViolationString:
       dc.b "Privilege Violation",0
 
-TraceInstructionString:
-      dc.b "Trace Instruction",0
+TraceString:
+      dc.b "Trace",0
       even
  1. 1
  2. 2
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.