;	start up rouchine for H8/3664F

	.h8300h
	.section .text
	.extern 
	.global _start		; entry
_start:
	mov.l	#_stack, sp

	mov.l	#_data_top, er0
	mov.l	#_data_end, er1
	mov.l	#_ini_data_top, er2
	cmp.l	er0, er1
	beq	.skip_copy
.loop_copy:
	mov.w	@er2+, r3
	mov.w	r3, @er0	; copy ini.data
	adds	#2, er0
	cmp.l	er1, er0
	blo	.loop_copy
.skip_copy:
	mov.l	#_bss_top, er0
	mov.l	#_bss_end, er1
	cmp.l	er0, er1
	beq	.skip_fill
	sub.w	r2, r2
.loop_fill:
	mov.w	r2, @er0	; fill 0x0000
	adds	#2, er0
	cmp.l	er1, er0
	blo	.loop_fill
.skip_fill:
	jsr	@_main		; main()
	bra	.		; trap
	.end

