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

📄 alarm.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                tax
                lda     THSecFuncTable+1,y
                pha
                phx
                rts                             ; Jump to key process routine.

;[P]--------------------[P]
;   一秒钟事件处理程序 :
;[P]--------------------[P]
TSec:           jmp     ExitNoUpdate
;[P]--------------------[P]
;   一分钟事件处理程序 :
;[P]--------------------[P]
TMin:           bbr0    <AlarmFlag0,TSec        ; Skip if alarm menu.
                lda     ItemNo
                dec
                cmp     #07h
                beq     tmin1                   ; Skip if "AD2000" function.
                cmp     #04h
                bne     TSec                    ; Skip if not "WORLD TIME" function.
;--<< World time function >>--
                jsr     DisplayWTimeA            ; Update world time function screen.
                bra     TSec
;--<< Multi-Alarm function >>--
tmin1:          jsr     CalAD2KCounter          ; Calculate days between now and AD2000.
                jsr     DisplayAD2000           ; Update AD2000 function screen.
                bra     TSec

AlarmLoad:
TLoad:
        lsetscreen  1
        lda     #<alarm_menu
        sta     StrAddrL
        lda     #>alarm_menu
        sta     StrAddrH
        stz     ItemStart
        stz     ItemOffset
        stz     MenuBufNO
TLoad_0:
AlarmLoad1:
        ldx     #20     ;#19+4
                ;ldx     <Mode           ; Ji Ang.
                ;ldx     #Alarm_yiMode
        stx     <ModeSave       ; Save last mode.
        lda     #MenuMode
        sta     <Mode           ; Enter Menu Select Mode
        smb7    <EFlag
        stz     <SchFlag          ;02-4-6 9:16
        stz     MenuFlag        ;02-4-6 9:16

        jmp     ExitNoUpdate
;[P]-----------------------[P]
;   Key Down 事件处理程序 :
;[P]-----------------------[P]
;==================================
        include     Sched.asm
;==================================
TKeyDown:
        lread_key_again
        ;bbr0    <CData,Firtkeydown     ;menu.asm-->OtherFlag[0]
        lda     MenuFlag                ;02-4-6 9:24
        beq     Firtkeydown             ;02-4-6 9:24
        stz     MenuFlag                ;02-4-6 9:25
        stz     <SchFlag

        jmp     EnterSub                ;First Init

Firtkeydown:
        LKeyTone
        lda     ItemNo
        cmp     #SchItemNo
        bne     Un_SchItem
        jmp     SchAllStateKeyDown

Un_SchItem:
;--<< Check key code and set y = process number >>--
tkeydown7:
        lda     #00100000b
        bit     AlarmFlag2
        beq     tkeydown8               ; Skip if not alarm tone.
        lda     #11011111b              ; Reset multi-alarm go flag.
        and     AlarmFlag2
        sta     AlarmFlag2
        stz     ToneCounter             ; Reset multi-alarm tone counter.
        jmp     ExitNoUpdate
tkeydown8:
        ldy     #0FFh                   ; Initial y.
tkeydown9:
        iny
        lda     ActiveKeyTable,y
        bmi     NullProc                ; Skip if invalid key number.
        cmp     <KeyNo
        bne     tkeydown9               ; Skip if not active keyin.

;--<< Alarm mode function >>--
tkeydownfunc:
        lda     ItemNo
        dec
        asl                             ; x = Process NO# * 2.
        tax
        lda     KeyProcFuncTab,x        ; Load key process routine table to INS.
        sta     <INSL
        lda     KeyProcFuncTab+1,x
        sta     <INSH
                ;yiadd 2-8-28 9:43
                ;cpy     #7
        cpy     #9
        bcc     tkeydownfunc1           ; Skip if valid keyin.
        bra     NullProc
tkeydownfunc1:
        tya                             ; y = Process NO# * 2.
        asl
        tay
        lda     (<INS),y                ; Push process routine address to stack.
        tax
        iny
        lda     (<INS),y
        pha
        phx
        rts                             ; Jump to key process routine.

;--<< Don't do anything >>--
NullProc:
        jmp     ExitNoUpdate

;[P]---------------------[P]
;   Key Up 事件处理程序 :
;[P]---------------------[P]
TKeyUp:
                ;lda     itemstart               ; Load page register to a.
                ;clc
                ;adc     itemoffset              ; Process NO# = itemstart + itemoffset.
                lda     ItemNo
                dec
                cmp     #1
                bne     tkeyup1                 ; Skip if not schedule function.
                bbs6    <AlarmFlag0,tkeyup3     ; Skip if pass secret code.
                bra     tkeyup2                 ; Return to main program.
tkeyup1:        ldx     #00h                    ; Stop timer.
                LSetTimer
                rmb7    <AlarmFlag0             ; Reset to normal adjust.
tkeyup2:
               jmp      ExitNoUpdate
tkeyup3:        bbs3    <AlarmFlag1,tkeyup1     ; Skip if schedule set screen.
                bra     tkeyup2                 ; Return to main program.

;[P]--------------------[P]
;   Timer 事件处理程序 :
;[P]--------------------[P]
TTimer:
                lda     ItemNo
                dec
                cmp     #1
                bne     ttimer1                 ; Skip if not schedule function.
                jmp     ExitNoUpdate

ttimer1:
                ldx     #40h                    ; Set timer = 7.8125mS x 20h = 250mS.(4Hz)
                LSetTimer
                jmp     (FastReg)               ; Jump to operate process routine again.

;[P]--------------------------[P]
;   进入此 Mode 事件处理程序 :
;[P]--------------------------[P]
;[P]-----------------------[P]
;   Help 返回事件处理程序 :
;[P]-----------------------[P]
AlarmBack:
                lda     ItemNo
                cmp     #SchItemNo
                bne     alarmback1
                ;jmp    InitScnSche1

                lda     HelpRtPrc+1
                pha
                lda     HelpRtPrc
                pha
                rts

alarmback1:     jmp     EnterSub1               ; Reload alarm function.

;[P]-------------------------------------[P]
;   Half-second function for multi-alarm.
;[P]-------------------------------------[P]
THSecMAlarm:    bbr1    <AlarmFlag1,THSecHAlarm ; Skip if multi-alarm normal screen.
                bbs7    <AlarmFlag0,THSecHalarm ; Skip if fast adjust.
                jsr     FlashMALM               ; Flash multi-alarm's setting item.
THSecSchedule:
THSecHAlarm:    jmp     ExitNoUpdate            ; Return to main program.
;[P]----------------------------------[P]
;   Half-second function for calendar.
;[P]----------------------------------[P]
THSecCalendar:
                ;;bra     THSecHAlarm
                bbr0    <AlarmFlag1,THSecHAlarm         ; Skip if calendar browse stop.
                bbs7    <AlarmFlag0,thseccalendar1      ; Skip if fast adjust.
                bbr0    <SysF,thseccalendar2            ; Skip if 0.5 second.

thseccalendar1: jsr     DisplayDate                     ; Display calendar date on screen.

                jmp     THSecAD2K1                      ; Return to main program without update screen.
thseccalendar2:
               stz     <ox
               lda     #16
               sta     <oy
               ljprintimage  nulldraw
               lda     #8
               sta     <ox
               lda     #16
               sta     <oy
               ljprintimage  nulldraw
               lda     #16
               sta     <ox
               lda     #16
               sta     <oy
               ljprintimage  nulldraw
               lda      #24
               sta     <ox
               lda     #16
               sta     <oy
               ljprintimage  nulldraw
               lda      #8
               sta     <ox
               lda     #32
               sta     <oy
               ljprintimage  nulldraw
               lda      #16
               sta     <ox
               lda     #32
               sta     <oy
               ljprintimage  nulldraw

               jmp     THSecHAlarm
;[P]------------------------------------[P]
;   Half-second function for world time.
;[P]------------------------------------[P]
THSecWTime:     lda     #SpaceChar              ; Blank ":" on TextBuffor.
                sta     TextBuffor+4ah ;;+2*16+11
                bbr0    <SysF,THSecHAlarm00       ; Skip if 0.5 second.
                lda     #':'                    ; Display ":" on TextBuffor.
                sta     TextBuffor+4ah  ;;+2*16+11
                jmp     THSecHAlarm
THSecHAlarm00:
                jmp   THSecHAlarm
;[P]------------------------------------[P]
;   Half-second function for stop-watch.
;[P]------------------------------------[P]
THSecSWatch:    ;jsr     DisplaySWatch           ; Update stop-watch's screen.
                ;bra     THSecAD2K1

;[P]-------------------------------[P]
;   Half-second function for timer.
;[P]-------------------------------[P]
THSecTimer:     bbr4    <AlarmFlag1,thsectimer1 ; Skip if timer normal screen.
                bbs7    <AlarmFlag0,thsectimer1 ; Skip if fast adjust.
                jsr     FlashTimer              ; Flash timer setting item.
                bra     THSecAD2K1
thsectimer1:    jsr     DisplayTimer            ; Update timer's screen.
                bra     THSecAD2K1

;[P]--------------------------------[P]
;   Half-second function for AD2000.
;[P]--------------------------------[P]
THSecAD2K:      bbr3    <AlarmFlag0,THSecAD2K1  ; Skip if AD2000 normal mode.
                bbs7    <AlarmFlag0,THSecAD2K1  ; Skip if fast adjust.
                jsr     FlashAD2K               ; Flash AD2000 setting item.
THSecAD2K1:     jmp     ExitNoUpdate            ; Return to main menu without update screen.

;[S]-------------------------------[S]
;   Flash multi-alarm setting item.
;[S]-------------------------------[S]
FlashMALM:
                lda     #01000000b
                bit     AlarmFlag2
                bne     flashmalm1

                ;Skip if setting MALMMinute.
                bbs0    <SysF,flashmalm3        ; Skip if complete second.

                lda     #SpaceChar              ; Blank MALMHour.
                sta     TextBuffor+42H+3  ;;2*16+5
                sta     TextBuffor+43H+3 ;;2*16+6

⌨️ 快捷键说明

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