⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 5 页
字号:
; ***************************************************************************
; *     Project : Electronic Dictionary                                     *
; *        Date : 2003.9                                                    *
; *   File Name : MAIN.ASM                                                  *
; ***************************************************************************

        pw      128
        case    off
        externs on
        include st2202.def
        include st2202.mac
        include Data.def
        include Bios.h
        include Graphics.h
        include Graph.def
        include KeyDef.def
        include DataBank.def
        public	Main_Bug
        public	MainU_Bug
        public	WriteFlashByte_Bug
        public  SetMode5_bug

Minu1   equ     60              ;; Auto. power off time for alarm sound.
EventNo equ     9               ;; Event numbers.
;=================================================================================
;		copy of bios.asm
;
;=================================================================================
DS0     .SECTION

FunKTab_bug:
        db      caltalogkey	;;0/1
        db      timekey         ;;2/3
        db      newenchkey      ;;4/5
        db      JiSuanKey       ;;6/7
        db      libKey          ;;8/9
        db      PowerKey        ;;10/11
        db      chinesekey	;netkey          ;;
        db      yingyingkey	;CardKey         ;;
        db      HelpKey         ;;
        db      NullKey         ;;

EventTab_bug:
        dw      Catalogevent    ;0;总目录		0
        dw      Catalogevent    ;1;总目录                1

        dw      clockEvent      ;2; 时间事件处理向量表	2
        dw      CardEvent       ;3; 名片簿事件处理向量表	14

        dw      newEnChEvent    ;4; 英翻中事件处理向量表。       4
        dw      DicChEnEvent    ;5; 中翻英事件处理向量表。     5

        dw      CalculatorEvent ;6; 计算机事件处理向量表。 6
        dw      StudyEvent      ;7; 学习事件处理向量表。   7

        dw      LibEvent        ;8; 资料事件处理向量表	8
	dw      OtherEvent      ;9; Other事件处理向量表	9

	dw	0		;10;power key 占去了
	dw	0		;11;

	dw	CH_Dic_Event	;12;
	dw	CH_Idiom_Event	;13;

	dw	YYZDEVent	;14;
	dw	YYZDEVent	;15;

	dw      NetEvent        ;16;			12
        dw      GameEvent       ;17; Game事件处理向量表	13

        dw      CardEvent       ;18; 名片簿事件处理向量表	14
        dw      RemarkEvent     ;19; 备忘事件处理向量表	15

        dw      AlarmEvent      ;20; 闹铃事件处理向量表	16
	dw      fu_lu_event     ;21;		17

	dw      card_bak_Event   ;22;	18
	dw      alarm_bak_event  ;23;	19

MenuEventTab_bug:
        dw      MenuEvent       ;24; 目录事件处理向量表。20
        dw      HelpEvent       ;25; 帮助(求助)事件处理向量表。21
        dw      AlarmViewEvent  ;26; 测试Mode事件处理向量表。22
        dw      DelDataEvent    ;27; Delete data mode23
        dw      ChangeEvent     ;28; 换算事件处理向量表。         24
	dw	CH_Dic_Event	;29;	25
	dw	CH_Idiom_Event	;30;	26

;;;;;//////////////////////////////////////////////////////////
;;=======================================================
;;       Event mask table.
;;=======================================================
CEFlagTab_bug:
        db      11111110b
        db      11111101b
        db      11111011b
        db      11110111b
        db      11101111b
        db      11011111b
        db      10111111b
        db      01111111b

;;=======================================================
;;       Extera mode index look-up table.
;;=======================================================
SubExModeMulTab_bug:
        db      0*(EventNo*2+2)
        db      1*(EventNo*2+2)
        db      2*(EventNo*2+2)
        db      3*(EventNo*2+2)
        db      4*(EventNo*2+2)
        db      5*(EventNo*2+2)
        db      6*(EventNo*2+2)
        db      7*(EventNo*2+2)



;=================================================================================
;		copy of bios.asm
;
;=================================================================================

ps0a    .section
bankno  equ     updatesc_bank

;///////////// Main Loop Start /////////////////////
;
Main_Bug:
        cld                     ;; Clear decimal mode.
        bbs7    <sysf,MainU_Bug
        jsr	UpdateScreen_bug
        bra     MainU_Bug
Main0_Bug:
        wai                     ;; CPU sleeping now.
        nop
        nop
        nop
        nop
        nop
        nop

        bbr2    <sf1,?POWER_OK
        lda     #icon_battery&0ffh
        trb     icon_battery>>8
        LDA     <PC
        AND     #02H
        BNE     ?POWER_OK
        lda     #icon_battery&0ffh
        tsb     icon_battery>>8
?POWER_OK:

MainU_Bug:
        LDA     <PFC            ; J.A. 2003-6-23
        AND     #11000000B      ; J.A. 2003-6-23
        CMP     #11000000B      ; J.A. 2003-6-23
        BEQ     ?SKIP_SET       ; J.A. 2003-6-23
        SMB6	<portc_bak
	lda	<portc_bak
	sta	<pc   		; J.A. 2003-6-23
?SKIP_SET:                      ; J.A. 2003-6-23

        RMB2    <SysF   ; J.A.: Yes, do not forget to have some break.

        bbr4    <sf1,?1
        rmb4    <sf1            ;; 星期与日期同步

	jsr	LJSR
        dw      ClockBank
        dw      bios_GetWeek-1
?1:
        bbr6    <sf1,?2
        rmb6    <sf1

        jsr	LJSR
        dw	BiosBank
        dw      SysMin-1          ;;每分钟检测alarm 及提醒
?2:
        cld                     ;; Clear decimal mode.
        sei                     ;; Disable interrupt.
        ldx     #0ffh           ;; Reset stack pointer.
        txs                     ;;
        cli                     ;; Enable all interrupt.

        bbr7    <SysF,?main02    ;; Branch if not power off event.
        jmp     PowerOffPrc_xx     ;; Branch power process.
?main02:
        bbr6    <SysF,?main03    ;; Branch not power off process.
        jmp     EntPowOff_xx       ;; Entry power off process.
;;================================================
;;点亮或灭掉SHIFT图标:
?main03:
        lda     #>DS0Bank        ;; Select data bank #2
        sta     <DRRh
        lda     #<DS0Bank        ;; Select data bank #2
        sta     <DRRl

        lda     event_kill
        and     <eflag
        sta     <eflag
        bbr3    <EFlag,main2    ;; Branch if not Key down event.
        lda     <KeyNo
        cmp     #ShiftKey
        bne     ?IsNotShiftKey

        lda     IconShift>>8
        eor     #(0ffh.and.IconShift)
        sta     IconShift>>8

        jsr     update_all_icon_bug

?IsNotShiftKey:
	bbr3	<EFlag,?main1
        ldx     <Mode
        cpx     #ShowBatLowMode ;; Show low battry mode ?
        beq     ?main1           ;; Branch if show low battry mde.

	ldx     #0ffh
?main05:
	inx
        lda     FunKTab_bug,x
        bmi     ?main1           ;; Branch if end of table.
        cmp     <KeyNo
        bne     ?main05

        cpx	#5
        bne	?0
        jmp     EntPowOff_xx       ;; Entry power off process.
?0:     phx
	jsr	LJSR
        dw      testbank
        dw      LowBatDetect-1
        plx
        jmp     ExMode_Bug          ;; Mode exchange功能键处理!
;==================================
?main1:
	  bbr7    <ScanFF,main2   ;; Branch if not on ScanF mode.
        rmb3    <EFlag          ;; Clear KeyDown event flag.
        jmp     CharInput_Bug   ;; Char input from keyboard.

main2:  bbr5    <SysF,main3     ;; Branch if cursor off.
        bbr2    <sf1,main3    ;; Branch if not 0.5 SEC event.
        rmb2    <sf1

        jsr     CurFlash_Bug    ;; Cursor flash.

main3:  lda     <EFlag          ;; Get Event occur flag.
        beq     to_Main0           ;; No any event occur.

        and     event_kill
        beq     to_Main0        ;; No any event occur.
main_fun_bug:
        ldx     #7
main32:
        asl
        bcs     main33_Bug          ;; Event active.
        dex
        bpl     main32
to_Main0:
        jmp     Main0_Bug

main33_Bug:
        lda     CEFlagTab_bug,x
        and     <EFlag          ;; Clear event flag.
        sta     <EFlag
?1:
Main4:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        lda     <Mode
        cmp     #90h
        bne     ?IsNormalGame
        lda     #<NData
        sta     <INDL
        lda     #>NData
        sta     <INDH
        bra     ?Main4x
?IsNormalGame:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        lda     <Mode
        bpl     ?main45          ;; It's normal mode.
        and     #7fh
        asl
        clc
        adc     #MenuEventTab_bug-EventTab_bug  ;; It's menu function select mode.
        bra     ?main47

?main45:
        asl                     ;; Mode *= 2.
?main47:
        tay
        lda     EventTab_bug,y
        sta     <INDL
        lda     EventTab_bug+1,y
        sta     <INDH
?Main4x:
        txa
        inc
        sec
        rol
        ldy     <ExtraMode
        ldx     <Mode
        bpl     ?main48
        ldy     #0
?main48:
        adc     SubExModeMulTab_bug,y
        tay

        lda     (<IND),y        ;; Get high order.
        pha
        dey
        lda     (<IND),y        ;; Get lowh order.
        pha

        ldy     <ExtraMode      ;; Index to bank index.
        lda     SubExModeMulTab_bug,y
        tay

        lda     <Mode
        bpl     ?main5
        ldy     #0
?main5:
        iny
        lda     (<IND),y        ;; Get program bank.
        pha
        dey
        lda     (<IND),y        ;; Get program bank.
        jmp     LongGo
;;======================================================
;;       Mode change.
;;======================================================
ExMode_Bug:
;        PUTSIOX
        cpx     #8             ;; 'Help' mode ?
        beq     EntHelp         ;; Entry help mode.
        txa
        asl
        tax
        lda     <Mode

;        PUTSIOX

        bpl     ?ExMode_0
        txa
        cmp     <ModeSave
        bne     ?SetMode
        inc
        bra     ?SetMode
?ExMode_0:
        txa
        cmp     <Mode
        bne     ?SetMode
        inc
;;======================================================
;;       Set mode.
;;======================================================
?SetMode:
        sta     <Mode

        lda     #0ffh
        sta     event_kill      ;;让所有事件有效!
        stz     <ExtraMode      ;; Clear extra mode.
        lda     #NullHelp-HelpTable
        sta     <HelpOffset     ;; Preset null help.
;; PreClear ZData area.
SetMode2:
        jsr     InitAll_Bug            ;; Initial all register.
SetMode3:
        lKeyTone
SetMode5_bug:
        lda     #10000000b         ;; Set mode entry event flag.
        sta     <EFlag             ;; Clear all event flag.
        lda     #0ffh
        sta     event_kill
        jmp     main_fun_bug
;;======================================================
;;       Entry help display mode.
;;======================================================
EntHelp:
        rmb3    <EFlag          ;; Clear key down event.
        lda     <HelpOffset
        cmp     #NullHelp-HelpTable
        bne     ?ehl5
        jmp     MainU_Bug           ;; Branch if null help.
?ehl5:
        lda     #HelpMode
        cmp     <Mode
        beq     ExitHelp
        pha
        lkeytone
        bbs4    <soundflag,$
        pla
;SetFixModeSave:
        ldx     <Mode
        stx     <SaveHelp

;SetFixMode:
        sta     <Mode           ;; Set mode register。
        jsr     Inia5_bug           ;; Inital register。
        jmp     SetMode5_bug
;;======================================================
;;       Exit help mode.
;;======================================================
ExitHelp:
        lKeyTone                ;; Key tone out.
        rmb3    <EFlag          ;; Clear key down event.
        lda     <SaveHelp
        stz     <SaveHelp
        sta     <Mode

;;======================================================
;;       Entry power off process.
;;======================================================
EntPowOff_xx:
	LPOWEROFF_BUG


;;======================================================
;;       Power off process.
;;======================================================
PowerOffPrc_xx:
        lda     AlarmFlag2
        and     #00100000b
        beq     ?popc1           ;; Branch if alarm sound off.

        lda     #<-Minu1        ;; Set one minute auto power off for alarm sound.
        sta     PowerT
        lda     #>-Minu1
        sta     PowerT+1
        bra     ?2popc3

?popc1:
        lda     #>DS0Bank        ;; Select data bank #2
        sta     <DRRh
        lda     #<DS0Bank        ;; Select data bank #2
        sta     <DRRl

        ldx	#5
        lda     <KeyNo
        cmp	FunKTab_bug,x
        bne     pwoend          ;; No!
?2popc3:
        sei

        jsr	LJSR
        dw	BiosBank
        dw      clear_lcd_all-1

        lda     #00000010b
        sta     <SYS            ;;OSC作主频
                                ;;使能OSC
                                ;;使能OSCX
                                ;;OSCX heavy
                                ;;256 warm-up cycles
                                ;;wai后进入wai-0模式
                                ;;irr 使能
        nop                     ;;低电压检测不使能.
        nop
        nop
        nop
        lda     #0

?1:     inc
        nop
        nop
        bne     ?1

        lda     #00010010b
        sta     <SYS            ;;OSC作主频

        cli

	jsr	LJSR

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -