summaryrefslogtreecommitdiff
path: root/1_hello_world/startup.c
diff options
context:
space:
mode:
Diffstat (limited to '1_hello_world/startup.c')
-rw-r--r--1_hello_world/startup.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/1_hello_world/startup.c b/1_hello_world/startup.c
new file mode 100644
index 0000000..3b3c017
--- /dev/null
+++ b/1_hello_world/startup.c
@@ -0,0 +1,122 @@
+typedef void (*ptr_func_t)();
+
+struct smd_header {
+ char console_name[16];
+ char copyright[16];
+ char domestic_name[48];
+ char international_name[48];
+ char version[14];
+ unsigned short checksum;
+ char io_support[16];
+ unsigned long rom_start;
+ unsigned long rom_end;
+ unsigned long ram_start;
+ unsigned long ram_end;
+ unsigned long sram_enabled;
+ unsigned long unused1;
+ unsigned long sram_start;
+ unsigned long sram_end;
+ unsigned long unused2;
+ unsigned long unused3;
+ char notes[40];
+ char country_codes[16];
+};
+
+extern void __start(void);
+static void HSYNC_handler(void);
+static void VSYNC_handler(void);
+
+extern unsigned __stacktop;
+
+__attribute__((section(".stack"), used)) unsigned *__stack_init = &__stacktop;
+
+__attribute__((section(".vectors"), used)) ptr_func_t __isr_vectors[] = {
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ HSYNC_handler,
+ __start,
+ VSYNC_handler,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+ __start,
+};
+
+__attribute__((section(".smd_header"), used)) struct smd_header __smd_header = {
+ .console_name = "SEGA MEGA DRIVE ",
+ .copyright = "BIGEVILCORP. ",
+ .domestic_name = "HELLO WORLD ",
+ .international_name = "HELLO WORLD ",
+ .version = "GM XXXXXXXX-XX",
+ .checksum = 0x0000,
+ .io_support = "J ",
+ .rom_start = 0,
+ .rom_end = 0xfffff,
+ .ram_start = 0xff0000,
+ .ram_end = 0xffffff,
+ .sram_enabled = 0x00000000,
+ .unused1 = 0x00000000,
+ .sram_start = 0x00000000,
+ .sram_end = 0x00000000,
+ .unused2 = 0x00000000,
+ .unused3 = 0x00000000,
+ .notes = " ",
+ .country_codes = " E ",
+};
+
+void HSYNC_handler(void) {}
+void VSYNC_handler(void) {}