📄 startup.asz
字号:
;/*****************************************************************************/
;/* [NAME] :STARTUP.asz */
;/* [OUTLINE]:僗僞乕僩傾僢僾儖乕僠儞 */
;/* [HISTORY]: */
;/* [NOTE] :TAB=8 */
;/* :This file must be located at address 0x0000 */
;/*****************************************************************************/
EXTERNAL gu08_flg_IntrTimer0_
EXTERNAL gu08_flg_IntrTimer02_
; EXTERNAL gu08_flg_IntrTimer03_ ; SDC 050107
EXTERNAL gu08_Timer1_10ms_ ; YTC006 20050105
EXTERNAL gu08_intr_Subsyq_
EXTERNAL gu08_intr_SubsyqMark_
EXTERNAL gu08_flg_intrclk_ ;clk flg,shu,20051031
; EXTERNAL gu08_flg_IntrTimer04_ ;2ms timer flg,for LED_COM,shu,051213
external gu08_RCR_data_
external gu08_RCR_sts_
external DrvLED_ComPort_
CSEG
ORG 0000H
START:
; LD SP,0
; LD SP,0C7FFh
DI
JP STARTUP
ORG 8H
JP RST08
ORG 10H
JP RST10
ORG 18H
JP RST18
ORG 20H
JP RST20
ORG 28H
JP RST28
ORG 30H
JP RST30
ORG 38H
JP RST38
ORG 66H
JP NMI
ORG 0080H
;S000 Ireg=0, ICU_IVR=80h
VECTORS:
DW INT00
DW INT01
DW INT02
DW INT03
DW INT04
DW INT05
DW INT06
DW INT07
DW INT08
DW INT09
DW INT0A
DW INT0B
DW INT0C
DW INT0D
DW INT0E
DW INT0F
;interrupt handlers
RST08:
HALT
RST10:
HALT
RST18:
HALT
RST20:
HALT
RST28:
HALT
RST30:
HALT
RST38:
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Rst38_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
NMI:
RETN ;S000 NMI枹巊梡
; PUSH AF
; PUSH BC
; PUSH DE
; PUSH HL
; CALL nmi_handler_## ;call NMI handler
; POP HL
; POP DE
; POP BC
; POP AF
; RETN
INT00: ;IRQ0:PIO0 bit2-0
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr00_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT01: ;IRQ1:TMR0 8bitH/16bit
PUSH AF
; PUSH BC ;20041028柍懯嶍彍
; PUSH DE
; PUSH HL
LD A,(gu08_flg_IntrTimer0_)
ADD A,1
LD (gu08_flg_IntrTimer0_),A
LD A,(gu08_flg_IntrTimer02_) ; sdc
ADD A,1 ;
LD (gu08_flg_IntrTimer02_),A ;
; LD A,(gu08_flg_IntrTimer03_) ; SDC 050107
; ADD A,1 ;
; LD (gu08_flg_IntrTimer03_),A ;
; LD A,(gu08_flg_IntrTimer04_) ; shu 051213,for LED_COM
; ADD A,1 ;
; LD (gu08_flg_IntrTimer04_),A ;
; LD HL, 0FF75H
; LD A, (hl)
; XOR 01H
; LD (hl), a
; POP HL
; POP DE
; POP BC
POP AF
EI
RETI
INT02: ;IRQ2:TMR0 8bitL
PUSH AF
PUSH BC
PUSH DE
PUSH HL
; CALL Intr02_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT03: ;IRQ3:SIOF
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr03_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT04: ;IRQ4:SIO0
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr04_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT05: ;IRQ5:SIO1
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr05_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT06: ;IRQ6:SIO2
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr06_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT07: ;IRQ7:PIO0 bit3
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr07_Handler_## ;call interrupt handler
; LD A,(gu08_intr_Wakeup_) ;shu,051229
; ADD A,1 ;shu,051229
; LD (gu08_intr_Wakeup_),A ;shu,051229
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT08: ;IRQ8:PIO0 bit4
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr08_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT09: ;IRQ9:PIO0 bit5
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr09_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT0A: ;IRQ10:PIO0 bit6
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr10_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT0B: ;IRQ11:PIO0 bit7
PUSH AF
; PUSH BC ;20041028 柍懯嶍彍
; PUSH DE
; PUSH HL
;; CALL Intr11_Handler_## ;call interrupt handler
LD A,(gu08_intr_Subsyq_) ;;
ADD A,1 ;;
LD (gu08_intr_Subsyq_),A ;;
LD A,(gu08_intr_SubsyqMark_) ; YTC006 20050105
ADD A,1
LD (gu08_intr_SubsyqMark_),A
; POP HL
; POP DE
; POP BC
POP AF
EI
RETI
INT0C: ;IRQ12:CLK
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr12_Handler_## ;call interrupt handler
LD A,(gu08_flg_intrclk_) ;SHU,20051031
ADD A,1 ;SHU,20051031
LD (gu08_flg_intrclk_),A ;SHU,20051031
POP HL
POP DE
POP BC
POP AF
EI
RETI
; YTC008 20050105 >>>
INT0D: ;IRQ13:TMR1 8bitH/16bit
PUSH AF
; PUSH BC
; PUSH DE
; PUSH HL
;; CALL Intr13_Handler_## ;call interrupt handler
; LD A, (gu08_Timer1_10ms_)
; CP 0
; JP Z, INT0D_1
LD A, (gu08_Timer1_10ms_)
ADD A, 0X01
LD (gu08_Timer1_10ms_),A
call DrvLED_ComPort_
; DEC A
; LD (gu08_Timer1_10ms_), A
INT0D_1:
; POP HL
; POP DE
; POP BC
POP AF
EI
RETI
; YTC008 20050105 <<<
INT0E: ;IRQ14:TMR1 8bitL
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;; CALL Intr14_Handler_## ;call interrupt handler
POP HL
POP DE
POP BC
POP AF
EI
RETI
INT0F: ;IRQ15:RCR
PUSH AF
; PUSH BC
; PUSH DE
; PUSH HL
;; CALL Intr15_Handler_## ;call interrupt handler
PUSH ix
ld ix, 0FF98h
ld a, (ix+1)
cpl
cp (ix+0)
jr nz, INTOFEnd
ld a,(ix+1)
ld (gu08_RCR_data_), a
ld a, 1
ld (gu08_RCR_sts_), a
INTOFEnd:
POP ix
; POP HL
; POP DE
; POP BC
POP AF
EI
RETI
; HALT
STARTUP: ;嶥杫幃偺僷僋儕
; ------------------------------------------------
; 儚乕僋乮俼俙俵乯僄儕傾僋儕傾
;x ld hl, R_RAM_TOP ;work area clear
;x ld de, R_RAM_TOP+1 ;
;x ld bc, E_DS_BYTE-E_PTNR_RAMB-1
;x ld (hl), 000h ;
;x ldir ;仸 僗僞僢僋僄儕傾傕僋儕傾偡傞偺偱拲堄
;仸 PARTNER 偺娭學忋僋儕傾屻僗僞僢僋傪
; 愝掕偡傞丅
LD HL, 0C000h ;俠俹倀侾俉俈侽俁寛傔懪偪
LD DE, 0C001h ;
LD BC, 007FFh ;
LD (HL), 000h ;
LDIR
; ------------------------------------------------
; 僗僞僢僋億僀儞僞愝掕
;x ld sp, E_DS_END+1 ;偙偺愝掕傛傝 PARTNER 偑儐乕僓乕僄儕傾偺
;x ;僗僞僢僋傪巊梡偡傞
LD SP, 0C7FFh+1 ;
; ------------------------------------------------
; 妱崬愝掕
;x ld a, high E_IV_TOP ; 儀僋僞傾僪儗僗僙僢僩
;x ld i, a ;
;x ld a, low E_IV_TOP ;
;x ld (E_ICU_IVR), a ;
LD A,10000000B ;
LD (0FFF0h),a ;ICU_IVR
LD A,0 ;
LD I,A ;
IM 2 ;
; ------------------------------------------------
; ;clear DATA segment
; LD HL,DATATOP
; LD DE,_endx_## ; _endx_ is defined in romlib
; LD A,E
; SUB L
; LD C,A
; LD A,D
; SBC A,H
; LD B,A
; _1: LD A,B
; OR C
; JP Z,_2
; LD (HL),0
; INC HL
; DEC BC
; JP _1
; _2:
;set interrupt vector register
; LD A,HIGH VECTORS
; LD I,A
; LD A,10000000B ;
; LD (0FFF0h),a ;
; LD A,0 ;
; LD I,A ;
; IM 2 ;
;;;; your initialization code
EI
JP main_##
;VECTOR CSEG ON 256 ;interrupt vector must be on 256-byte align
; DSEG
;DATATOP::
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -