|
@@ -1,101 +1,101 @@
|
|
|
-@********************************************************************
|
|
|
-@* crt0.s *
|
|
|
-@ This file is a hack. It is not meant for serious work. *
|
|
|
-@********************************************************************
|
|
|
- .TEXT
|
|
|
-
|
|
|
- .GLOBAL _start
|
|
|
-_start:
|
|
|
- .ALIGN
|
|
|
- .CODE 32
|
|
|
- @ Start Vector
|
|
|
-rom_header: b rom_header_end
|
|
|
-
|
|
|
- @ Nintendo Logo Character Data (8000004h)
|
|
|
- .byte 0x24,0xff,0xae,0x51,0x69,0x9a,0xa2,0x21
|
|
|
- .byte 0x3d,0x84,0x82,0x0a,0x84,0xe4,0x09,0xad
|
|
|
- .byte 0x11,0x24,0x8b,0x98,0xc0,0x81,0x7f,0x21
|
|
|
- .byte 0xa3,0x52,0xbe,0x19,0x93,0x09,0xce,0x20
|
|
|
- .byte 0x10,0x46,0x4a,0x4a,0xf8,0x27,0x31,0xec
|
|
|
- .byte 0x58,0xc7,0xe8,0x33,0x82,0xe3,0xce,0xbf
|
|
|
- .byte 0x85,0xf4,0xdf,0x94,0xce,0x4b,0x09,0xc1
|
|
|
- .byte 0x94,0x56,0x8a,0xc0,0x13,0x72,0xa7,0xfc
|
|
|
- .byte 0x9f,0x84,0x4d,0x73,0xa3,0xca,0x9a,0x61
|
|
|
- .byte 0x58,0x97,0xa3,0x27,0xfc,0x03,0x98,0x76
|
|
|
- .byte 0x23,0x1d,0xc7,0x61,0x03,0x04,0xae,0x56
|
|
|
- .byte 0xbf,0x38,0x84,0x00,0x40,0xa7,0x0e,0xfd
|
|
|
- .byte 0xff,0x52,0xfe,0x03,0x6f,0x95,0x30,0xf1
|
|
|
- .byte 0x97,0xfb,0xc0,0x85,0x60,0xd6,0x80,0x25
|
|
|
- .byte 0xa9,0x63,0xbe,0x03,0x01,0x4e,0x38,0xe2
|
|
|
- .byte 0xf9,0xa2,0x34,0xff,0xbb,0x3e,0x03,0x44
|
|
|
- .byte 0x78,0x00,0x90,0xcb,0x88,0x11,0x3a,0x94
|
|
|
- .byte 0x65,0xc0,0x7c,0x63,0x87,0xf0,0x3c,0xaf
|
|
|
- .byte 0xd6,0x25,0xe4,0x8b,0x38,0x0a,0xac,0x72
|
|
|
- .byte 0x21,0xd4,0xf8,0x07
|
|
|
-
|
|
|
- @ Software Titles (80000A0h)
|
|
|
- .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
|
- .byte 0x00,0x00,0x00,0x00
|
|
|
-
|
|
|
- @ Initial Code (80000ACh)
|
|
|
- .byte 0x00,0x00,0x00,0x00
|
|
|
-
|
|
|
- @ Maker Code (80000B0h)
|
|
|
- .byte 0x30,0x31
|
|
|
-
|
|
|
- @ Fixed Value (80000B2h)
|
|
|
- .byte 0x96
|
|
|
-
|
|
|
- @ Main Unit Code (80000B3h)
|
|
|
- .byte 0x00
|
|
|
-
|
|
|
- @ Device Type (80000B4h)
|
|
|
- .byte 0x00
|
|
|
-
|
|
|
- @ Unused Data (7Byte) (80000B5h)
|
|
|
- .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
|
-
|
|
|
- @ Software Version No (80000BCh)
|
|
|
- .byte 0x00
|
|
|
-
|
|
|
- @ Complement Check (80000BDh)
|
|
|
- .byte 0xf0
|
|
|
-
|
|
|
- @ Check Sum (80000BEh)
|
|
|
- .byte 0x00,0x00
|
|
|
-
|
|
|
-rom_header_end:
|
|
|
-
|
|
|
-@--------------------------------------------------------------------
|
|
|
-@- Reset -
|
|
|
-@--------------------------------------------------------------------
|
|
|
- .EXTERN PASCALMAIN
|
|
|
- .GLOBAL start_vector
|
|
|
- .CODE 32
|
|
|
- .ALIGN
|
|
|
-start_vector:
|
|
|
- mov r0, #0x12 @ Switch to IRQ Mode
|
|
|
- msr cpsr, r0
|
|
|
-
|
|
|
- ldr sp, sp_irq @ Set SP_irq
|
|
|
-
|
|
|
- mov r0, #0x1f @ Switch to System Mode
|
|
|
- msr cpsr, r0
|
|
|
-
|
|
|
- ldr sp, sp_usr @ Set SP_usr
|
|
|
- str r0, [r1]
|
|
|
-
|
|
|
- ldr r1, =PASCALMAIN @ Start & Switch to 16bit Code
|
|
|
- mov lr, pc
|
|
|
- bx r1
|
|
|
-
|
|
|
- b start_vector @ Reset
|
|
|
-
|
|
|
- .ALIGN
|
|
|
-sp_usr: .word 0x3008000 - 0x100
|
|
|
-sp_irq: .word 0x3008000 - 0x60
|
|
|
-
|
|
|
- .ALIGN
|
|
|
- .CODE 32
|
|
|
-
|
|
|
- .END
|
|
|
+@********************************************************************
|
|
|
+@* crt0.s *
|
|
|
+@ This file is a hack. It is not meant for serious work. *
|
|
|
+@********************************************************************
|
|
|
+ .TEXT
|
|
|
+
|
|
|
+ .GLOBAL _start
|
|
|
+_start:
|
|
|
+ .ALIGN
|
|
|
+ .CODE 32
|
|
|
+ @ Start Vector
|
|
|
+rom_header: b rom_header_end
|
|
|
+
|
|
|
+ @ Nintendo Logo Character Data (8000004h)
|
|
|
+ .byte 0x24,0xff,0xae,0x51,0x69,0x9a,0xa2,0x21
|
|
|
+ .byte 0x3d,0x84,0x82,0x0a,0x84,0xe4,0x09,0xad
|
|
|
+ .byte 0x11,0x24,0x8b,0x98,0xc0,0x81,0x7f,0x21
|
|
|
+ .byte 0xa3,0x52,0xbe,0x19,0x93,0x09,0xce,0x20
|
|
|
+ .byte 0x10,0x46,0x4a,0x4a,0xf8,0x27,0x31,0xec
|
|
|
+ .byte 0x58,0xc7,0xe8,0x33,0x82,0xe3,0xce,0xbf
|
|
|
+ .byte 0x85,0xf4,0xdf,0x94,0xce,0x4b,0x09,0xc1
|
|
|
+ .byte 0x94,0x56,0x8a,0xc0,0x13,0x72,0xa7,0xfc
|
|
|
+ .byte 0x9f,0x84,0x4d,0x73,0xa3,0xca,0x9a,0x61
|
|
|
+ .byte 0x58,0x97,0xa3,0x27,0xfc,0x03,0x98,0x76
|
|
|
+ .byte 0x23,0x1d,0xc7,0x61,0x03,0x04,0xae,0x56
|
|
|
+ .byte 0xbf,0x38,0x84,0x00,0x40,0xa7,0x0e,0xfd
|
|
|
+ .byte 0xff,0x52,0xfe,0x03,0x6f,0x95,0x30,0xf1
|
|
|
+ .byte 0x97,0xfb,0xc0,0x85,0x60,0xd6,0x80,0x25
|
|
|
+ .byte 0xa9,0x63,0xbe,0x03,0x01,0x4e,0x38,0xe2
|
|
|
+ .byte 0xf9,0xa2,0x34,0xff,0xbb,0x3e,0x03,0x44
|
|
|
+ .byte 0x78,0x00,0x90,0xcb,0x88,0x11,0x3a,0x94
|
|
|
+ .byte 0x65,0xc0,0x7c,0x63,0x87,0xf0,0x3c,0xaf
|
|
|
+ .byte 0xd6,0x25,0xe4,0x8b,0x38,0x0a,0xac,0x72
|
|
|
+ .byte 0x21,0xd4,0xf8,0x07
|
|
|
+
|
|
|
+ @ Software Titles (80000A0h)
|
|
|
+ .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
|
+ .byte 0x00,0x00,0x00,0x00
|
|
|
+
|
|
|
+ @ Initial Code (80000ACh)
|
|
|
+ .byte 0x00,0x00,0x00,0x00
|
|
|
+
|
|
|
+ @ Maker Code (80000B0h)
|
|
|
+ .byte 0x30,0x31
|
|
|
+
|
|
|
+ @ Fixed Value (80000B2h)
|
|
|
+ .byte 0x96
|
|
|
+
|
|
|
+ @ Main Unit Code (80000B3h)
|
|
|
+ .byte 0x00
|
|
|
+
|
|
|
+ @ Device Type (80000B4h)
|
|
|
+ .byte 0x00
|
|
|
+
|
|
|
+ @ Unused Data (7Byte) (80000B5h)
|
|
|
+ .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
|
+
|
|
|
+ @ Software Version No (80000BCh)
|
|
|
+ .byte 0x00
|
|
|
+
|
|
|
+ @ Complement Check (80000BDh)
|
|
|
+ .byte 0xf0
|
|
|
+
|
|
|
+ @ Check Sum (80000BEh)
|
|
|
+ .byte 0x00,0x00
|
|
|
+
|
|
|
+rom_header_end:
|
|
|
+
|
|
|
+@--------------------------------------------------------------------
|
|
|
+@- Reset -
|
|
|
+@--------------------------------------------------------------------
|
|
|
+ .EXTERN PASCALMAIN
|
|
|
+ .GLOBAL start_vector
|
|
|
+ .CODE 32
|
|
|
+ .ALIGN
|
|
|
+start_vector:
|
|
|
+ mov r0, #0x12 @ Switch to IRQ Mode
|
|
|
+ msr cpsr, r0
|
|
|
+
|
|
|
+ ldr sp, sp_irq @ Set SP_irq
|
|
|
+
|
|
|
+ mov r0, #0x1f @ Switch to System Mode
|
|
|
+ msr cpsr, r0
|
|
|
+
|
|
|
+ ldr sp, sp_usr @ Set SP_usr
|
|
|
+ str r0, [r1]
|
|
|
+
|
|
|
+ ldr r1, =PASCALMAIN @ Start & Switch to 16bit Code
|
|
|
+ mov lr, pc
|
|
|
+ bx r1
|
|
|
+
|
|
|
+ b start_vector @ Reset
|
|
|
+
|
|
|
+ .ALIGN
|
|
|
+sp_usr: .word 0x3008000 - 0x100
|
|
|
+sp_irq: .word 0x3008000 - 0x60
|
|
|
+
|
|
|
+ .ALIGN
|
|
|
+ .CODE 32
|
|
|
+
|
|
|
+ .END
|