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

📄 sched.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                Sta     Itemheadlentab          ;;Init Itemheadlentab Buffor

                Lda     #80H
                Sta     Itemlan                 ;;Init Itemlan Buffor

		Lda     #0E9H
                Ldy     <Schselectno
                Cpy	#3
                Bcc	Seteditlen
                Lda	#0E9H+20		;后两种类型多了一行
Seteditlen:	Sta     <Editlen                ;;Inputbuff Max Length
                Stz     <Editlenh

                Jsr     Ljsr
                Dw      Cardbank
                Dw      Initeditcardbox-1
                Jmp     Exitwithupdate

Selectstate:    Lclearcursor
                Ldy     <Schselectno
                Lda     Curposoff,Y
                Sta     <Tempcount

                Lda     Schesetitem
                Asl
                Clc
                Adc     <Tempcount
                Tay
                Ldx     Daycurpos,Y
                Stx     <Curxpos
                Lda     Daycurpos+1,Y
                Sta     <Curypos
                Tay
                Lsetcur
                Lcursoron
                Jmp     Exitwithupdate

Curposoff:      Db      0,4,10,16,24

Daycurpos:      Db      6,1,10,1
Weekcurpos:     Db      8,1,10,1,14,1
Monthcurpos:    Db      6,1,10,1,14,1
Yearcurpos:     Db      6,1,10,1,14,1,18,1
Onecurpos:      Db      6,1,10,1,14,1,18,1,2,2

Typeheadlentab  Db      46,46,46,66,66
;;[P]--------------------------------------[P]
;;   更新画面後, 进入 Schedule Normal Mode.
;;[P]--------------------------------------[P]
Scheenter:
                Lda     Schesetitem
                Cmp     <Setitemmax
                Bcs     Scheenter2
                Jmp     Schesetrightitem
Scheenter2:
                Ldy     <Schselectno
                Lda     Typeheadlentab,Y
                Tay
                Lda     Inputbuff,Y
                Bne     Havecontext
                Jmp     Scheeditescp              ;;无内容输入不保存
Havecontext:
        Lexitscanf

        Lcls
        Bbs4    <Schflag,Notappondfile_0
        Lda     <Totalcardnol
        Cmp     #17     ;;10
        Bcc     Notappondfile_0
        Jmp     Scheduletomany
Notappondfile_0:
        Lda     <Editcurlen
        Sta     <Endpointl
        Lda     <Editcurlenh
        Sta     <Endpointh

        Lda     #>Flashbank
        Sta     <Drrh
        Lda     #<Flashbank
        Sta     <Drrl
        Jsr     Ljsr
        Dw      Remarkbank
        Dw      Searchsparedir-1
        Bbr1    <Sysf,?_0000
        Jmp     Flashfullmsg
?_0000: Jsr     Ljsr
        Dw      Remarkbank
        Dw      Searchsparedata-1
        Bbs1    <Sysf,Flashfullmsg

        Lda     #>Ds0Bank
        Sta     <Drrh
        Lda     #<Ds0Bank
        Sta     <Drrl
        Lprint  Savehintmsg
        jsr	CALL_LUpdateScreen

        Bbr4    <Schflag,Notappondfile
        Jsr     Ljsr
        Dw      Remarkbank
        Dw      Deletecurrecord-1
        Jsr     Deletescdata            ;;02-4-18 8:33

        Dec     Screcordcounter
        Rmb4    <Schflag
Notappondfile:
        Inc     Screcordcounter      ;; Schedule Record Counter += 1.
        Inc     <Totalcardnol
        Jsr     Puttoscdata             ;;02-4-18 8:33

        Lda     #>Flashbank
        Sta     <Drrh
        Lda     #<Flashbank
        Sta     <Drrl
        Jsr     Ljsr
        Dw      Remarkbank
        Dw      Searchsparedir-1

        Jsr     Ljsr
        Dw      Remarkbank
        Dw      Searchsparedata-1

        Jsr     Ljsr
        Dw      Remarkbank
        Dw      Filldirname-1

        Jsr     Ljsr
        Dw      Remarkbank
        Dw      Putfatflag-1

        Jsr     Ljsr
        Dw      Remarkbank
        Dw      Putdatatoflash-1

        ;Jsr      Chkscdata
        ;Jsr     Ljsr
        ;Dw      Biosbank
        ;Dw      Checkschedule_In_Bios-1
        Jsr     Checkschedule
        ;;Lda     #Ds0Bank
        ;;Sta     <Drr
        Jmp     Initscnsche1

Flashfullmsg:
        Lda     #>Ds0Bank
        Sta     <Drrh
        Lda     #<Ds0Bank
        Sta     <Drrl
        Lprint  Flashover
Hlt_0:  jsr	CALL_LUpdateScreen
        Bbr0    <Eflag,$
        Rmb0    <Eflag
        Bbr0    <Eflag,$
        Rmb0    <Eflag
        Jmp     Initscnsche1

Scheduletomany:
        Lda     #>Ds0Bank
        Sta     <Drrh
        Lda     #<Ds0Bank
        Sta     <Drrl
        Lprint  Lesstenmsg
        Bra     Hlt_0

;;[P]----------------------------------------------[P]
;;   Display Initial Screen Of "Schedule" Function.
;;[P]----------------------------------------------[P]
Initscnsche:
;        ;startuart
                Lda     #5
                Sta     <Fileclase

                Lreadsecretcodetobuff           ;;2-4-25 17:10 Su
                Lda     #0Ffh                   ;; Load A = 0Ffh
                Cmp     Datasecretcode
                Beq     Initscnsche1            ;; Skip If Don't Need Secret Code.
                Ldx     #0                      ;; Initial Secretcode.
Initcodeloop:   Sta     <Secretcode0,X
                Inx
                Cpx     #8
                Bne     Initcodeloop
                Stz     <Sccounter              ;; Secret Code Counter = 0.
                Lda     #Schseccodeinn        ;;=9
                Sta     <Gamestate
                Jsr     Schhelpprc
                Lsetscreen 14
                Lprint  Checkinto
                Lcheckcrlf
                Lprint  Schintmsg1              ;; Print "请输入密码" On Textbuffor.
                Lcheckcrlf                      ;; Check & Skip To Next Line.
                Lprint  Schintmsg2              ;; Print "--------" On Textbuffor.
                Lsetcur 0,4
                Lprint  Starstring
                Jmp     Exitwithupdate

Initscnsche1:   Lda     #(Schedulehelp-Helptable)
                Sta     <Helpoffset             ;; Set To Schedule Help.
                ;;Lda     #46                    ;;变成取表???
                ;;Sta     <Startnamepos
                ;;Stz     <Schselectno
                ;;Stz    <Schselectnobak
                Stz     <Schflag

                Jsr     Ljsr
                Dw      Remarkbank
                Dw      Readcardno-1

                Lda     <Totalcardnol
                Sta     Screcordcounter
                Bne     Initscnsche3            ;; Skip Schedule's Record.
                ;;Lda    <Totalcardnoh
                ;;Bne    Initscnsche3

                Jsr     Initschdataff
                Lda     #Insertaskschn
                Sta     <Gamestate
                Jsr     Schhelpprc
                Lda     #>Ds0Bank
                Sta     <Drrh
                Lda     #<Ds0Bank
                Sta     <Drrl
                Lsetscreen      14
                Lsetcur 7,1
                ;;Lprint  Addornotequire          ;;添加询问
                Lprint  Norecordmessage
                Bra     Exitwithupdate
Initscnsche3:
;;==========================================================================
                Stz     <Curcardnol
                Stz     <Curcardnoh
                Stz     <Curcardoff
                Stz     <Curcardoffbak
                ;;Lda     #2
                ;;Sta     <Schflag          ;;Cdata.1=1 Name View
Dspschmenuentry:
                Lda     #Scanschmenun
                Sta     <Gamestate
                Jsr     Schhelpprc
                Lda     #>Bcardtload_1-1
                Pha
                Lda     #<Bcardtload_1-1
                Pha
                Lda     #>Remarkbank
                Pha
                Lda     #<Remarkbank
                Jmp     Longgo
Exitwithupdate: Lmain                           ;; Return To Main Program.

;;--------------------------------

;;*******************Subprogram********************

;;[S]-------------------------------------[S]
;;       Init Schedule Select Menu
;;Input:Schselectno
;;[S]-------------------------------------[S]
Initschselectmenu:
                Lsetscreen      14
                ;;Lprint  Schselectmenu
                Lprint  Selectschetype
                jsr	CALL_LUpdateScreen
                ;;=============Draw Type
                Ldy     #0Ffh
                Sty     <Tempcount

?Loop:          Inc     <Tempcount
                Ldy     <Tempcount
                Lda     Typelocatxtab,Y
                Sta     <Ox
                Lda     Typelocatytab,Y
                Sta     <Oy

                Lda     <Tempcount
                Asl
                Asl
                Clc
                Adc     <Tempcount
                Adc     #<Schselectmenu
                Tay
                Lda     #0
                Adc     #>Schselectmenu
                Tax
                Ldrawtext
                Lda     <Tempcount
                Cmp     #4
                Bcc     ?Loop

                ;;=============Draw Tuo Yuan
                Ldy     #0

Tuoyuanloop:    Lda    Tuoyuanoxtab,Y
                Sta     <Ox
                Lda     Typelocatytab,Y
                Sta     <Oy
                Phy
                Loprintimage    Tuoyuan
                Ply
                Iny
                Cpy     #5
                Bcc     Tuoyuanloop
                ;;==========Draw Tuo Yuan Xin
Drawyuanxin:
                Ldy     <Schselectno
                Lda    Yuanxinoxtab,Y
                Sta     <Ox
                Lda     Yuanxinoytab,Y
                Sta     <Oy
                Loprintimage    Tuoyuanxin
                Rts

Typelocatxtab:  Db      08+8,88+8,08+8,88+8,08+8

Yuanxinoytab:
Typelocatytab:  Db      20,20,40,40,60

Yuanxinoxtab:
Tuoyuanoxtab:   Db      48,128,48,128,48

;;[S]------------------------[S]
;;  Clear Yuan Xin Graphics
;;Input:Y(Schselectno)
;;[S]------------------------[S]
Clsschyuanxin:
                Lda    Yuanxinoxtab,Y
                Sta     <Ox
                Lda     Yuanxinoytab,Y
                Sta     <Oy
                Loprintimage    Tuoyuan
                ;Loclrimage      Tuoyuanxin
                Rts

;;[S]-------------------------------------------[S]
;;       初始化行程提醒时间的转化(Ascii-->Bcd)
;;Input:Y(Locationg Of Inputbuff)
;;Output:A(Bcd)
;;[S]-------------------------------------------[S]
Inittimesche:
                Lda     Inputbuff,Y
                Sec
                Sbc     #30H
                Asl
                Asl
                Asl
                Asl
                Sta     <Insl
                Lda     Inputbuff+1,Y
                Sec
                Sbc     #30H
                Ora     <Insl
                Rts
;;[S]--------------------------------------------[S]
;;       纠正日期(天)且送到Inputbuff和Textbuffor里
;;Input:1.Schemonth 2.Schyear 3.Scheday 4.十进制模式
;;Output:1.Scheday,2.Inputbuff,3.Textbuffor
;;       4.十六进制模式
;;[S]--------------------------------------------[S]
Corretsetupday:
                Jsr     Corretscheday

                Ldx     Scheday
                La2Xy
                Phy
                Phx
                Ldx     <Schselectno
                Lda     Dayinputbuffpos,X
                Tay
                Pla     ;;X
                Sta     Inputbuff,Y
                Sta     Textbuffor,Y
                Pla     ;;Y
                Sta     Inputbuff+1,Y
                Sta     Textbuffor+1,Y
                Rts

Dayinputbuffpos:
        Db      0Ffh,0Ffh,26,30,34
;;[S]--------------------------------------------[S]
;;               纠正日期(天)
;;Input:1.Schemonth 2.Scheyear 3.Scheday 4.十进制模式
;;Output:1.Scheday 2.十六进制模式
;;[S]--------------------------------------------[S]
Corretscheday:
                Ldy     Schemonth
                Dey                     ;;表已经按16进制定义
                Lda     Scheday
                Cmp     Maxdayofmonth,Y         ;;???Note Table Define
                Bcc     Corretscheday_0         ;;没越出
                Lda     #1
                Sta     Scheday
Corretscheday_0:        ;;处理闰年2月的情况
                Lda     Schemonth
                Cmp     #2
                Bne     Corretschday_2
                Lda     Scheday
                Cmp     #29H
                Bcc     Corretschday_2
                Beq     Tojudgeleap
Setday1St:      Lda     #1
                Sta     Scheday
                Bra     Corretschday_2
Tojudgeleap:    ;;=29
                Cld
                Lda     Scheyear
                Jsr     Ljsr
                Dw      Biosbank
                Dw      Cleapyear1-1
                Bbs4    <Sf0,Corretschday_2     ;;闰年
                Lda     <Keyno
                Cmp     #Upkey
                Bne     Isdownkey
                Bra     Setday1St
Isdownkey:      Lda     #28H
                Sta     Scheday
Corretschday_2:
                Cld
                Rts

;;[S]---------------------------------[S]
;;       初始化行程提醒的Inputbuff
;;默认为每日提醒
;;[S]---------------------------------[S]
Copyinitschtoinput:
                Ldy     #0Ffh
Copyinitschtoinput_0:
                Iny
                Lda     Schinitdata,Y
                Sta     Inputbuff,Y
                Bne     Copyinitschtoinput_0
                ;;Cpy     #47

                ;;Ldx     <Month
                ;;Stx     Schemonth
                ;;La2Xy
                ;;Stx     Inputbuff+6
                ;;Sty     Inputbuff+7

                ;;Ldx     <Day
                ;;Stx     Scheday
                ;;La2Xy
                ;;Stx     Inputbuff+10
                ;;Sty     Inputbuff+11

                ;;Ldx     <Hour
                ;;Stx     Schehour
                ;;La2Xy
                ;;Stx     Inputbuff+26    ;;;;21
                ;;Sty     Inputbuff+27    ;;;;22

                ;;Ldx     <Min
                ;;Stx     Scheminute
                ;;La2Xy
                ;;Stx     Inputbuff+30    ;;;;25
                ;;Sty     Inputbuff+31    ;;;;26
                Rts
Schinitdata:
        Db      '提醒类型: 每日提醒  '
        Db      '时间:   时  分      '
        Db      '内容: ',0
;;Db      '日期:   月  日      '

;;[S]---------------------------------[S]
;;每当选中某一提醒类型时,同步更新Inputbuff
;;Input:1.Schselectnobak 2.Inputbuff
;;Output:1.Inputbuff,2.Setitemmax
;;[S]---------------------------------[S]
Dealwithinputbuff:
;;Bakdatatofdata:
                Ldy     <Schselectnobak
                Lda     Typeheadlentab,Y
                ;;Dec
                Sec
                Sbc     #7              ;;6+1
                Tax
                Ldy     #0Ffh
?Loop:          Inx
                Iny
                Lda     Inputbuff,X
                Sta     Fdata,Y
                Bne     ?Loop
;;Getschtypedata:
                Ldy     <Schselectno
                Lda     Schetypedataoff,Y
                Tax
                Ldy     #9

?2:             Lda     Schetypedata,X
                Beq     ?Getschtime
                Iny
                Sta     Inputbuff,Y
                Inx
                Bra     ?2

?Getschtime:    Ldy     <Schselectno

⌨️ 快捷键说明

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