;; File: crt0.s
;; Generic crt0.s for a Z80
;; From SDCC..
;; Modified to suit execution on the Amstrad CPC!
;; by H. Hansen 2003

    .module crt0
	.globl	_main
	.globl _progend

	;; Ordering of segments for the linker.
	; Things that go in RAM
	.area _INITIALIZED

	.area _DATA
	.area _BSS
    .area _HEAP
_progend::

	;; Things that go in ROM
	.area _HOME
	.area	_CODE (REL,CON)
	.area _INITIALIZER (REL,CON)
	.area   _GSINIT (REL,CON)
    .area   _GSFINAL (REL,CON)

	.area	_CODE (REL,CON)

	.db #1  ; Background ROM
	.db #1  ; Version 1.4
	.db #4
	.db #0
	.dw rsx_table

	jp do_nothing
	jp init

rsx_table:

	.db 'K' + #0x80
	.ascii "CONTIK"
	.db 'I' + #0x80
	.db #0

init:
; This is the program entry point. Execution starts here
;; Initialise global variables, clear BSS areas, initialize AMSDOS and setup heap.
	ld	bc, #l__INITIALIZER
	ld	a, b
	or	a, c
	jr	Z, gsinit_next
	ld	de, #s__INITIALIZED
	ld	hl, #s__INITIALIZER
	ldir
gsinit_next:
; Clear BSS sections
	ld hl,#s__DATA
	ld (hl),#0
	ld de,#s__DATA + #1
	ld bc,#s__DATA + #0x200
	ldir

; Initialize disk ROM
	ld hl,#0xabff
	ld de,#0x40
	ld c,#7
	call 0xbcce

	; Init the heap. Do it after the disk ROM is ready, because that may change HIMEM
	call __sdcc_heap_init
; Enter the C main.
	jp	_main

do_nothing:
	scf
	ret

_exit::
	rst #0

; -----------------------------------------------------------------------------
