nes-proj/cpu/z80/crt0.S

58 lines
837 B
ArmAsm

;;;
;;;
;;; 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::