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 |
| 9 | .globl _progend |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 10 | .area _HEADER (ABS) |
| 11 | ;; Ordering of segments for the linker. |
| 12 | .area _CODE |
| 13 | init: |
| 14 | |
| 15 | ;; Initialise global variables |
| 16 | call gsinit |
| 17 | call _main |
| 18 | |
| 19 | _exit:: |
| 20 | ret |
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame] | 21 | |
| 22 | .area _HOME |
| 23 | .area _CODE |
| 24 | .area _INITIALIZER |
| 25 | .area _GSINIT (REL) |
| 26 | .area _GSFINAL (REL) |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 27 | |
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame] | 28 | .area _INITIALIZED |
PulkoMandy | 2bb86d9 | 2014-06-28 17:09:59 +0200 | [diff] [blame] | 29 | .area _DATA |
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame] | 30 | .area _BSEG |
PulkoMandy | 2bb86d9 | 2014-06-28 17:09:59 +0200 | [diff] [blame] | 31 | .area _BSS (REL) |
| 32 | .area _HEAP (REL) |
| 33 | _progend:: |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 34 | |
PulkoMandy | 2bb86d9 | 2014-06-28 17:09:59 +0200 | [diff] [blame] | 35 | .area _GSINIT (REL) |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 36 | gsinit:: |
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame] | 37 | ld bc, #l__INITIALIZER |
| 38 | ld a, b |
| 39 | or a, c |
| 40 | jr Z, gsinit_next |
| 41 | ld de, #s__INITIALIZED |
| 42 | ld hl, #s__INITIALIZER |
| 43 | ldir |
| 44 | gsinit_next: |
PulkoMandy | 2bb86d9 | 2014-06-28 17:09:59 +0200 | [diff] [blame] | 45 | ; Clear BSS sections |
| 46 | ld hl,#s__DATA |
| 47 | ld (hl),#0 |
| 48 | ld de,#s__DATA |
| 49 | inc de |
| 50 | ld bc,#l__DATA |
| 51 | ldir |
| 52 | |
| 53 | ; Initialize disk ROM |
| 54 | ld hl,#0xabff |
| 55 | ld de,#0x40 |
| 56 | ld c,#7 |
| 57 | call 0xbcce |
kthacker | 62e146c | 2006-04-17 15:11:35 +0000 | [diff] [blame] | 58 | |
PulkoMandy | d4445ca | 2014-06-28 11:43:26 +0200 | [diff] [blame] | 59 | .area _GSFINAL |
PulkoMandy | 2bb86d9 | 2014-06-28 17:09:59 +0200 | [diff] [blame] | 60 | ; After the ROMs are initialized, initialize the heap. |
| 61 | jp __sdcc_heap_init |