📄 startup.asm
字号:
;/****************************************************************************
;#ifdef DOC
;File Name :startup.asm
;Description :IE Bus System Startup file
;Remark :
;Date :05/6/28
;Copyright :Matsushita Electric Industrial Co.,Ltd.
;#endif
;*****************************************************************************/
;SECTION
_STEXT SECTION CODE,PUBLIC,0
_CONST SECTION CODE,PUBLIC,1
_GCONST SECTION CODE,PUBLIC,1
_DATA SECTION DATA,PUBLIC,1
_GDATA SECTION DATA,PUBLIC,1
_ROMDATA SECTION CODE,PUBLIC,1
_GROMDATA SECTION CODE,PUBLIC,1
_ROMDATAEND SECTION CODE,PUBLIC,1
_TEXT SECTION CODE,PUBLIC,0
_BSS SECTION DATA,PUBLIC,1
_GBSS SECTION DATA,PUBLIC,1
_BSSEND SECTION DATA,PUBLIC,1
global _main
;/*-----------------------------------------------------------------*/
;/* C program function */
;/*-----------------------------------------------------------------*/
global _HU_JudgeReset
global _HU_ClockInit
global _HU_PortInit
global _HU_IoRegisterInit
global _HU_FirstSettingSFR
GLOBAL _main, _vIRQ_sc0rirq
GLOBAL _main, _vIRQ_sc0tirq
GLOBAL _main, _vIRQ_tm7irq
#ifdef _MN101E_ROMC
global _vROMCORR_main
global _SC4IRQ
global _IRQ3
#endif
_STEXT SECTION ; Specifies -T_STEXT=4000 by linker
da A(Reset) ; Sets reset vector
da A(NoIRQ) ; /* NMI */
da A(_int_irq0) ; /* IRQ0 */
da A(NoIRQ) ; /* IRQ1 */
da A(NoIRQ) ; /* IRQ2 */
da A(NoIRQ) ; /* IRQ3 */
da A(NoIRQ) ; /* IRQ4 */
da A(NoIRQ) ; /* IRQ5 */
da A(_int_tm0) ; /* TM0 */
da A(NoIRQ) ; /* TM1 */
da A(NoIRQ) ; /* TM2 */
da A(NoIRQ) ; /* TM3 */
da A(NoIRQ) ; /* TM6 */
da A(NoIRQ) ; /* TB */
da A(NoIRQ) ; /* TM8 */
da A(_vIRQ_tm7irq) ; /* TM7 */
da A(NoIRQ) ; /* T7OC */
da A(_vIRQ_sc0rirq) ; /* SCOR */
da A(_vIRQ_sc0tirq) ; /* SCOT */
da A(NoIRQ) ; /* SC1R */
da A(NoIRQ) ; /* SC1T */
da A(_int_sc2) ; /* SC2 */
da A(NoIRQ) ; /* SC3T */
da A(NoIRQ) ; /* SC3S */
da A(NoIRQ) ; /* Reserved */
da A(NoIRQ) ; /* SC4R */
#ifdef _MN101E_ROMC
da A(NoIRQ) ; /* SC4T */
#else
da A(NoIRQ) ; /* SC4T */
#endif
da A(NoIRQ) ; /* AD */
da A(NoIRQ) ; /* ATC0 */
da A(NoIRQ) ; /* ATC1 */
org 0xc0 ; To location _STEXT + 0xc0 (0x40c0)
;/*-----------------------------------------------------------------------------*/
;/* for SpecialFunction */
;/*-----------------------------------------------------------------------------*/
_DATA SECTION
_ForeignFlag dc 0 ; 偙偺僼儔僌偼巇岦偗抧愗傝懼偊帪偺敾掕僼儔僌偲偟偰巊梡偟傑偡丅
; 昁偢丄僜僼僩儕僽乕僩帪偺RAM僋儕傾奐巒億僀儞僩傛傝傕慜偵攝抲偟偰偔偩偝偄丅
; 巇岦偗抧愗傝懼偊帪偵偼丄偙偺椞堟偼僋儕傾偝傟傑偣傫丅
global _ForeignFlag
_TEXT SECTION
NoIRQ:
rti ; Function that does nothing other than return
Reset:
mov 0xB0,D0 ;/* @P2 No7 Weibo Zhang [05/07/31] *//* @P2 No19 Weibo Zhang [05/08/17] */
mov D0,PSW ;/* @P2 No7 Weibo Zhang [05/07/31] */
;movw 0x2DFF,A0 ; 僗僞僢僋億僀儞僞偺弶婜壔/* @No16 Weibo Zhang [05/06/27] */
movw 0x3E00,A0 ;/* @No16 Weibo Zhang [05/06/27] */
movw A0,SP
mov 0x00,D0
mov D0,(0x03FDF)
or 0x01,D0
mov D0,(0x03FDF)
mov 158,D1
pllloop:
sub 1,D1
nop
nop
nop
nop
nop
nop
nop
nop
bne pllloop
or 0x02,D0
mov D0,(0x03FDF)
sub D1,D1
; 惷揑曄悢偺弶婜壔
movw _BSS,A0 ; _BSS 椞堟偺愭摢傾僪儗僗 -> A0
sub D0,D0 ; D0 = 0
clear1:
mov D0,(A0)
addw 0x1,A0
cmpw _BSSEND,A0 ; RAM 椞堟偺嵟屻偐丠
blt clear1 ; _BSSEND > A0 偱 clear1 傊
; 弶婜抣晅偒惷揑曄悢偺弶婜壔
raminit:
movw _ROMDATA,A0
movw _DATA,A1
cmpw _GROMDATA,A0
beq next1
init1: ; ROMDATA(A0) -> DATA(A1)
mov (A0),D0
mov D0,(A1)
addw 0x1,A0
addw 0x1,A1
cmpw _GROMDATA,A0
bne init1
next1:
movw _GROMDATA,A0
movw _GDATA,A1
cmpw _TEXT,A0
beq next2
init2: ; GROMDATA(A0) -> GDATA(A1)
mov (A0),D0
mov D0,(A1)
addw 0x1,A0
addw 0x1,A1
cmpw _TEXT,A0
bne init2
next2: ; 儗僕僗僞偺弶婜壔
subw DW0,DW0
movw DW0,DW1
movw DW0,A0
movw DW0,A1
; 儊僀儞娭悢偺屇傃弌偟
_loop1:
jsr _main
; 廔椆張棟
pi ; 僔儈儏儗乕僞忋偱僽儗僀僋傪偐偗傞丅
rts
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -