;; 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
	.area	_HEADER (ABS)
	;; Ordering of segments for the linker.
	.area	_CODE
init:
; This is the program entry point. Execution starts here
;; Initialise global variables, clear BSS areas, initialize AMSDOS and setup heap.
    call    gsinit
; Enter the C main.
	call	_main

_exit::
	ret

	.area _HOME
	.area _CODE
	.area _INITIALIZED
	.area   _GSINIT (REL)
    .area   _GSFINAL (REL)

	.area _DATA
	.area _BSEG
	.area _BSS (REL)
    .area _HEAP (REL)
_progend::
	; NOTE - THE IS NOT ROM-FRIENDLY!
	; We put the initializers for initialized data in the memory that will later
	; be used for the heap. The gsinit copies it back to the CODE area above.
	; Then, we can overwrite the now unused initializers with the heap.
	; In the case of software actually running from ROM, the initializer section
	; would be in ROM, and GSINIT would copy it to RAM. Of course in that case,
	; The initializer space can't be reclaimed for the heap...
	.area _INITIALIZER
	
; -----------------------------------------------------------------------------

	.area _GSINIT (REL)
gsinit::	
	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
	inc de
	ld bc,#l__DATA
	ldir

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

	.area   _GSFINAL
	; After the ROMs are initialized, initialize the heap.
	 jp __sdcc_heap_init
