diff options
Diffstat (limited to '1_hello_world/startup.c')
-rw-r--r-- | 1_hello_world/startup.c | 122 |
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) {} |