tools: bmp2tiles clearer error message
[swan-dev] / src / entry.S
1 # File              : entry.S
2 # Author            : Robin Krens <robin@robinkrens.nl>
3 # Date              : 07.06.2022
4 # Last Modified Date: 07.06.2022
5 # Last Modified By  : Robin Krens <robin@robinkrens.nl>
6
7 .org    0
8 .code16
9
10 .extern main
11 .extern _stext
12 .extern _etext
13 .extern _sdata
14 .extern _edata
15 .extern scroll_video
16
17 .global _start
18 .global dummyS_isr
19
20 _start:
21         # reset flags and registers
22         cli
23         cld
24         xor %ax,%ax
25         mov %ax,%bx
26         mov %ax,%bp
27         mov %ax,%ss
28         
29         # set correct segment (use at
30         # position 0x2000 + 0 + IP
31         mov $0x2000, %bx
32         mov %bx, %cs
33         xor %bx, %bx
34
35         # set stack pointer for wonderswan
36         # color
37         mov $0xFE00 - 2,%ax
38         mov %ax,%sp
39         
40 copy_to_ram:
41         mov $_etext, %ax
42         # set data segment to ROM bank
43         mov $0x2000, %bx
44         mov %bx, %ds
45         mov %ax, %si
46         mov $_sdata, %bx
47         mov %bx, %di
48         # calculate size
49         mov $_edata, %ax
50         mov $_sdata, %bx
51         sub %bx, %ax
52         mov %ax, %cx
53         rep movsb
54         # reset data segment to RAM
55         xor %ax, %ax
56         mov %ax, %ds
57
58
59         # jump to C
60         call main
61
62 dummyS_isr:
63         push %ax
64         call scroll_video
65         ;xor %ax, %ax
66         ;in $0x12, %al
67         ;inc %al
68         ;out %al, $0x12
69         pop %ax
70         iret
71
72         # should not be here
73 loop:   nop
74         jmp loop