	.h8300h
	.section .text
	.global	_start

_start:

	/* 増設DRAMを使用可能にする */
;	P1DDR = 0xff
	mov.l #0xfee000,er0
	mov.b #0xff,r1l
	mov.b r1l,@er0:8
;	P2DDR = 0x07	
	mov.l #0xfee001,er0
	mov.b #0x07,r1l
	mov.b r1l,@er0:8
;	P8DDR = 0x06
	mov.l #0xfee007,er0
	mov.b #0x06,r1l
	mov.b r1l,@er0:8
;	RTCOR = 10
	mov.l #0xfee02a,er0
	mov.b #10,r1l
	mov.b r1l,@er0:8
;	RTMCSR = 0x30
	mov.l #0xfee028,er0
	mov.b #0x30,r1l
	mov.b r1l,@er0:8
;	DRCRB = 0x90
	mov.l #0xfee027,er0
	mov.b #0x90,r1l
	mov.b r1l,@er0:8
;	DRCRA = 0x3c
	mov.l #0xfee026,er0
	mov.b #0x3c,r1l
	mov.b r1l,@er0:8
	mov.l #400000,er0
.wait2:
	subs #1,er0
	cmp.l #0,er0
	bne .wait2

	/* スタックポインタ設定 */
	mov.l #_initial_stack_point,sp

	/* 初期値0の領域(.bss)の0クリア */
	mov.l #_bss_begin,er0
	mov.l #_bss_end,er1
	sub.w r2,r2
.loop:
	mov.w r2,@er0
	adds #2,er0
	cmp.l er1,er0
	blo .loop
	
	/* 初期値付データ領域(.data)の書き込み */
	mov.l #_dtors_end,er0
	mov.l #_data_begin,er1
	mov.l #_data_end,er2
.loop2:
	mov.w @er0,r3
	mov.w r3,@er1
	adds #2,er0
	adds #2,er1
	cmp.l er2,er1
	blo .loop2

/* main()コール */
	jsr @_main
	rts
