; H8/300H start up file.
; Customized for H8/3052 on AKI-LAN target
.h8300h
.equ SYSCR, 0xFFFFF2
.equ BRCR, 0xFFFFF3
.equ P1DDR, 0xFFFFC0
.equ P2DDR, 0xFFFFC1
.equ P1DR, 0xFFFFC2
.equ P2DR, 0xFFFFC3
.equ P3DDR, 0xFFFFC4
.equ P4DDR, 0xFFFFC5
.equ P3DR, 0xFFFFC6
.equ P4DR, 0xFFFFC7
.equ P5DDR, 0xFFFFC8
.equ P6DDR, 0xFFFFC9
.equ P5DR, 0xFFFFCA
.equ P6DR, 0xFFFFCB
.equ P7DDR, 0xFFFFCC
.equ P8DDR, 0xFFFFCD
.equ P7DR, 0xFFFFCE
.equ P8DR, 0xFFFFCF
.equ P9DDR, 0xFFFFD0
.equ PADDR, 0xFFFFD1
.equ P9DR, 0xFFFFD2
.equ PADR, 0xFFFFD3
.equ PBDDR, 0xFFFFD4
.equ PBDR, 0xFFFFD6
.equ ADCR, 0xFFFFE9
.section .text
.global _start
_start:
;; Setup BUS
mov.b #0x03,r0l
mov.b r0l,@SYSCR:8
mov.b #0xfe,r0l
mov.b r0l,@BRCR:8
mov.b #0xff,r0l
mov.b r0l,@P1DDR:8
mov.b r0l,@P2DDR:8
mov.b r0l,@P5DDR:8
mov.b #0xf0,r0l
mov.b r0l,@PADDR:8
mov.b #0xff,r0l
mov.b r0l,@PBDDR:8
mov.b #0xfe,r0l
mov.b r0l,@P8DDR:8
mov.b r0l,@P8DR:8
;; Setup stack
mov.l #_stack,sp
;; Copy data section
mov.l #_data_start,er0
mov.l #_data_end,er1
mov.l #_text_end,er2
.Ldata: cmp.l er1,er0
beq .Ldataend
mov.w @er2,r3
mov.w r3,@er0
adds #2,er2
adds #2,er0
bra .Ldata
.Ldataend:
;; Clear bss section
mov.l #_bss_start,er0
mov.l #_bss_end,er1
sub.w r3,r3
.Lbss: cmp.l er0,er1
beq .Lbssend
mov.w r3,@er0
adds #2,er0
bra .Lbss
.Lbssend:
;; Go to the main
.Lmain:
ldc #0:8,ccr
jsr @_main
bra .Lmain
.section .vectors
.org 0 ; RESET
.long _start
.org 0x0060 ; ITU0-IMFA
.long _timer0_interrupt