kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 1 | ;; File: crt0.s |
2 | ;; Generic crt0.s for a Z80 | ||||
3 | ;; From SDCC.. | ||||
4 | ;; Modified to suit execution on the Amstrad CPC! | ||||
5 | ;; by H. Hansen 2003 | ||||
6 | |||||
7 | .module crt0 | ||||
8 | .globl _main | ||||
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame^] | 9 | ; .globl __jpbc |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 10 | .globl _progend |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 11 | .area _HEADER (ABS) |
12 | ;; Ordering of segments for the linker. | ||||
13 | .area _CODE | ||||
14 | init: | ||||
15 | |||||
16 | ;; Initialise global variables | ||||
17 | call gsinit | ||||
18 | call _main | ||||
19 | |||||
20 | _exit:: | ||||
21 | ret | ||||
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame^] | 22 | ;__jpbc: |
23 | ; push bc | ||||
24 | ; ret | ||||
25 | |||||
26 | .area _HOME | ||||
27 | .area _CODE | ||||
28 | .area _INITIALIZER | ||||
29 | .area _GSINIT (REL) | ||||
30 | .area _GSFINAL (REL) | ||||
31 | _progend:: | ||||
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 32 | |
33 | .area _DATA (REL) | ||||
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame^] | 34 | .area _INITIALIZED |
35 | .area _BSEG | ||||
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 36 | .area _BSS (REL) |
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame^] | 37 | .area _HEAP (REL) |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 38 | |
39 | .area _GSINIT (REL) | ||||
40 | gsinit:: | ||||
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame^] | 41 | ld bc, #l__INITIALIZER |
42 | ld a, b | ||||
43 | or a, c | ||||
44 | jr Z, gsinit_next | ||||
45 | ld de, #s__INITIALIZED | ||||
46 | ld hl, #s__INITIALIZER | ||||
47 | ldir | ||||
48 | gsinit_next: | ||||
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 49 | |
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame^] | 50 | .area _GSFINAL |
51 | ret |