;;; 
;;; 
;;; ctt0.S 
;;; 
;;; \file
;;;     C runtime startup routine
;;; 
;;; \author
;;;     Takahide Matsutsuka <markn@markn.org>
;;; 
        .module crt0
       	.globl	_main

 	.area	_HEADER (ABS)
	.org 	0
	jp	init

	;; Ordering of segments for the linker.
	.area	_HOME
	.area	_CODE
	.area   _GSINIT
	.area   _GSFINAL
 	.area	_DATA
 	.area	_DATAFINAL
	.area   _BSS
	.area   _HEAP

        .area   _CODE
init::
        ;; Clear global variables
	ld	hl, #_datastart
 	ld	bc, #_dataend
_clear_loop:
	ld	a, h
	sub	b
	jr	nz, _clear_next
	ld	a, l
	sub	c
	jr	z, _clear_exit
_clear_next:
	ld	(hl), #0
	inc	hl
	jr	_clear_loop
_clear_exit:	
        ;; Initialize global variables
        call    gsinit
	jp	_main

        .area   _GSINIT
gsinit::

        .area   _GSFINAL
        ret
	.area	_DATA
_datastart::
	.area	_DATAFINAL
_dataend::
