saturn/m68k/vectors.s
Zack Buhman 25828417c1 m68k: more sensible stack pointer value
This accidentally worked as long as the Sound CPU program did not do
meaningful stack manipulation. Indeed, none of the Sound CPU programs
I have written so far do anything with the stack.

Despite this "accidentally working" on real hardware, mednafen's m68k
emulation appears to "stall" the Sound CPU when the stack pointer
wraps around to a memory that does not exist.

This table was originally written when I was first learning about the
Saturn "sound block" memory map. I did not know exactly how large the
installed sound RAM was, as the manual mentions 8Mbit, 4Mbit, and
1Mbit as being possibilities. Now that I know the production Saturns
have 4Mbit installed, I am able to come up with a reasonable value for
the stack pointer.
2023-05-16 23:11:05 +00:00

68 lines
2.8 KiB
ArmAsm

.section .vectors
.long 0x7fffc /* Reset - initial stack pointer */
.long start /* Reset - initial program counter */
.long start /* Bus error */
.long start /* Address error */
.long start /* Illegal command */
.long start /* Divide by zero */
.long start /* CHK exception */
.long start /* TRAPV exception */
.long start /* Privilege violation */
.long start /* Trace */
.long start /* Line 1010 emulator */
.long start /* Line 1111 emulator */
.long start /* reserved 12 */
.long start /* reserved 13 */
.long start /* reserved 14 */
.long start /* Uninitialized interrupt vector */
.long start /* reserved 16 */
.long start /* reserved 17 */
.long start /* reserved 18 */
.long start /* reserved 19 */
.long start /* reserved 20 */
.long start /* reserved 21 */
.long start /* reserved 22 */
.long start /* reserved 23 */
.long start /* Spurious interrupt */
.long start /* Auto vector level 1 interrupt */
.long start /* Auto vector level 2 interrupt */
.long start /* Auto vector level 3 interrupt */
.long start /* Auto vector level 4 interrupt */
.long start /* Auto vector level 5 interrupt */
.long start /* Auto vector level 6 interrupt */
.long start /* Auto vector level 7 interrupt */
.long start /* Trap #0 vector */
.long start /* Trap #1 vector */
.long start /* Trap #2 vector */
.long start /* Trap #3 vector */
.long start /* Trap #4 vector */
.long start /* Trap #5 vector */
.long start /* Trap #6 vector */
.long start /* Trap #7 vector */
.long start /* Trap #8 vector */
.long start /* Trap #9 vector */
.long start /* Trap #10 vector */
.long start /* Trap #11 vector */
.long start /* Trap #12 vector */
.long start /* Trap #13 vector */
.long start /* Trap #14 vector */
.long start /* Trap #15 vector */
.long start /* reserved 48 */
.long start /* reserved 49 */
.long start /* reserved 50 */
.long start /* reserved 51 */
.long start /* reserved 52 */
.long start /* reserved 53 */
.long start /* reserved 54 */
.long start /* reserved 55 */
.long start /* reserved 56 */
.long start /* reserved 57 */
.long start /* reserved 58 */
.long start /* reserved 59 */
.long start /* reserved 60 */
.long start /* reserved 61 */
.long start /* reserved 62 */
.long start /* reserved 63 */
.align 0x400, 0xee