# File : entry.S # Author : Robin Krens # Date : 07.06.2022 # Last Modified Date: 07.06.2022 # Last Modified By : Robin Krens .org 0 .code16 .extern main .extern _stext .extern _etext .extern _sdata .extern _edata .extern scroll_video .global _start .global dummyS_isr _start: # reset flags and registers cli cld xor %ax,%ax mov %ax,%bx mov %ax,%bp mov %ax,%ss # set correct segment (use at # position 0x2000 + 0 + IP mov $0x2000, %bx mov %bx, %cs xor %bx, %bx # set stack pointer for wonderswan # color mov $0xFE00 - 2,%ax mov %ax,%sp copy_to_ram: mov $_etext, %ax # set data segment to ROM bank mov $0x2000, %bx mov %bx, %ds mov %ax, %si mov $_sdata, %bx mov %bx, %di # calculate size mov $_edata, %ax mov $_sdata, %bx sub %bx, %ax mov %ax, %cx rep movsb # reset data segment to RAM xor %ax, %ax mov %ax, %ds # jump to C call main dummyS_isr: push %ax call scroll_video ;xor %ax, %ax ;in $0x12, %al ;inc %al ;out %al, $0x12 pop %ax iret # should not be here loop: nop jmp loop