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

📄 catalog.asm

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

;--<< Program imformation >>--
;[D]--------------------------------------------------------------[D]
;      Programming Status : Okay.
;             Item Number : DrCard (Electric-dictionary)
;     Development Company : MICON Electronic Co., Ltd.
;        Development Date : 1998,DEC.(Final version 2000,APR,20th)
;               Design by : Vincent Ho
;   Micro-controller unit : ST2100 (Sitronix)
;     Crystal oscillation : 32768 Hz
;          RC oscillation :    2M Hz
;       Instruction cycle : 122 uS (Slow)
;                             2 uS (Fast)
;      Symbol description :
;               ========= : Address & bank.
;               [D]---[D] : Define.
;               [T]---[T] : Table.
;               [V]---[V] : Vector.
;               [I]---[I] : Interrupt.
;               [S]---[S] : Subroutine.
;               [P]---[P] : Procedure.
;[D]--------------------------------------------------------------[D]
                chip    W65C02S                 ; Define chip : ST2100 base on 65c02.
                pw      128                     ; .LST's page width = 128 character.
                case    off                     ; Don't care Upper-case or lower-case.
                externs on                      ; Make all labels public.
                include ST2202.MAC
                include ST2202.def              ; Include ST2100 I/O define,
                include DATA.def                ; Data RAM define,
                include KEYDEF.def              ; Key define,
                include GRAPH.def               ; Graph RAM define.
                include BIOS.h                  ; BIOS's head.
                include GRAPHICS.h              ; GRAPHICS's haed.


                public	DrawLine
                public	ShowAnim_Mend
                public	FreshLcd

;=====================================================
		include fulu1.def
StartX  equ     CData+15
StartY  equ     CData+16
EndX    equ     CData+17
EndY    equ     CData+18

temp_numl   equ CData+20
temp_numh   equ CData+21

temp_leftl   equ        CData+22
temp_lefth   equ        CData+23

temp_left   equ CData+24
temp_right   equ        CData+25
temp_bit_num equ        CData+26

temp_rightl_bak   equ   CData+27
temp_righth_bak   equ   CData+28

temp_leftl_bak   equ    CData+29
temp_lefth_bak   equ    CData+30

open_flag_addr	 equ     8005h
;========================================================
        public  Catalogevent
        PUBLIC  TLoad_catalog0
        public  tempy_catalog
        public  catalog_esckey_program
        public  ban_duan_all_icon
        public  ban_duan_if_left_icon
        public  ban_duan_yan_yu_end_begin
        public  ban_duan_bu_gui_end_begin
        public  ban_duan_name_end_begin

Item_mode     equ   285h
tempy_catalog     equ   0fffh               ;;此变量应为不被破坏之变量
init_mode     equ   0	;4
fu_lu_mode    equ   17
dirmode       equ   0

;========================================================
ds0             .SECTION              ; Program ROM location 4000h

Catalogevent:
        dw      CatalogBank
        dw      THSec-1
        dw      TSec-1
        dw      TMin-1
        dw      TKeyDown-1
        dw      TKeyUp-1
        dw      TTimer-1
        dw      TUnLoad-1
        dw      tload_0_catalog-1
        dw      HelpRet-1

;;总目录帮助
catalog_help:
       db  '按上下左右键移动黑块.',0dh
       db  '[输入]键进入该功能.',0
event_table:
           ;db 21,20,9,13,18,14,11,17,15
;           db	15,Card_bakMode,16
;           db	7,13,1
;           db	8,9,12
           db	17+4,Card_bakMode,24+4
           db	7,12+4,8
           db	19+4,13+4,9

MenuLibData .SECTION                       ; Data ROM location 10000h(Bank#2)
OPENNING:
        include opening.asm
        include mainmenu.asm
;[P]=========================================[P]
PS0b             .SECTION              ; Program ROM location 4000h
BankNo          equ     CatalogBank
;================================================

;[E]-------------------------------[E]
THSec:
       jmp      jmp_to_lmainU

TUnLoad:
TKeyUp:
TSec:
TMin:
ExitNoUpdate:
TTimer:
       jmp jmp_to_lmainU
HelpRet:
        lda     HelpRtPrc+1
        pha
        lda     HelpRtPrc
        pha
        rts

tload_0_catalog:
        STZ     <SYSF

        STZ     <StartX
        STZ     <StartY

	lda     #NullHelp-HelpTable
        sta     <HelpOffset     ;; Preset null help.

	;;;yiadd 2-10-31
	lsetscreen 0

	lda     power_flag
        and     #01h		;;=1是开机
        bne	?_zxzx
        jmp	_DonotSpecial
?_zxzx:
        and     #0feh
        sta     power_flag

        LDA     <PC
        AND     #02H
        BNE     ?POWER_OK
        jmp     lvd_turn_off
?POWER_OK:

        JSR     LJSR
        DW      CardBank
        DW      RESET_SP104-1

        JSR     LJSR
        DW      CardBank
        DW      SP140_Sleep-1

	lda	#>flashbank
	sta	<drrh
	lda	#<flashbank
	sta	<drrl

	lda	#<open_flag_addr
	sta	<indl
	lda	#>open_flag_addr
	sta	<indh

	lda	(<ind)
	beq	?_donghua
	cmp	#0ffh
	beq	?_donghua
	cmp	#1
	beq	?_time
        lda     #0 ;#4
	sta tempy_catalog
	lda	#NewEnChMode
	sta  <mode
        lda #80h
        sta <Eflag
        jmp jmp_to_lmain

?_time:
	 stz tempy_catalog
	 lda	#2
	 sta  <mode
         lda #80h
         sta <Eflag
         jmp jmp_to_lmain
?_donghua:


        lda #>MenuLibDataBank
        sta <drrh
        lda #<MenuLibDataBank
        sta <drrl
        lda     #<OPENNING
        sta     <INSL
        lda     #>OPENNING
        sta     <INSH

        jsr	ShowAnim_Mend
        jsr	FreshLcd
        bbs3	<EFlag,_DonotSpecial

        ;jsr     LJSR
        ;dw      ps1_Bank
        ;dw      ShowAnim-1
        ;lcls
        ;jsr     show_one_screen  ;;显示第一屏
        WAI             ; by J.A.
        NOP
        WAI             ; by J.A.
        NOP
        ;jsr    delay2s   by J.A.
        ;jsr     OpenScrSplit

;        rmb1    <Eflag
;?_DelayOneSecond:
;        bbs1    <Eflag,?_DelayOneSecondOK
;        bbs3    <EFlag,?_DonotSpecial
;        bra     ?_DelayOneSecond
;?_DelayOneSecondOK:
;        rmb1    <Eflag
;?_zzz:  bbs3    <EFlag,?_DonotSpecial
;        bbr1	<EFlag,?_zzz

;        jsr     move_scr_up_down
;        rmb1    <Eflag
;?_xx:   bbs3    <EFlag,?_DonotSpecial
;        bbr1    <Eflag,?_xx
;        rmb0    <Eflag
;?_xxx:  bbs3    <EFlag,?_DonotSpecial
;        bbr0    <Eflag,?_xxx
;        rmb0    <Eflag
?_DonotSpecial:
_DonotSpecial:

	;;yiadd
	lda  <keyno
	cmp  #PowerKey
        bne  _not_powerK

turn_off:
	LPOWEROFF_BUG

_not_powerK:
        lda  #init_mode
        sta  tempy_catalog
TLoad_catalog0:
        lda  #fu_lu_mode
        sta  Item_mode
TLoad_catalog:

;        ;startuart

;        LDA     #80H
;        STA     <INSL
;        LDA     #09H
;        STA     <INSH

;?HERE:
;        LDA     #$FF
;        STA     (<INSL)
;        PUTSIO  <INSH
;        PUTSIO  <INSL
;
;        bbr3    <EFlag,$    ;; Branch if not Key down event.
;        RMB3    <EFlag
;
;        LDA     #0
;        STA     (<INSL)
;
;        CLC
;        LDA     <INSL
;        ADC     #20
;        STA     <INSL
;        LDA     <INSH
;        ADC     #0
;        STA     <INSH
;
;        BRA     ?HERE


        JSR     LJSR
        DW      CardBank
        DW      RESET_SP104-1

        JSR     LJSR
        DW      CardBank
        DW      SP140_Sleep-1

	LSetScreen	0
        jsr  get_help
        jsr  show_screen
        jmp jmp_to_lmainu
catalogkeytable:
        db  enterkey
        db  leftkey
        db  rightkey
        db  upkey
        db  downkey
        db  nullkey
catalogkeyprogram:
        dw  goto_enterkey-1
        dw  goto_leftkey-1
        dw  goto_rightkey-1
        dw  goto_upkey-1
        dw  goto_downkey-1
TKeyDown:
        lread_key_again
        lkeytone
        lda <keyno
        cmp	#80h
        bne	?xxxx
      	JMP	jmp_lmainU
?xxxx:
        cmp #TKey
        bne ?0

        inc <StartX
        lda <StartX
        cmp #5
        bcc ?1

        lda     #>TestTLoad-1
        pha
        lda     #<TestTLoad-1
        pha
        lda     #>TestBank
        pha
        lda     #<TestBank
        jmp     longgo
?0:
;?0:     CMP     #YKey
;        bne     ?2
;        stz <StartX
;
;        inc <StartY
;        lda <StartY
;        cmp #5
;        bcc ?1
;
;        jmp     senddatatopc
;?2      stz     <StartY
;        stz     <StartX
?1:
	lda  <keyno
        cmp  #esckey
        beq  esc_to_mulu

        bra   not_input_mima_status
        ;bbr0 <mima_flag,not_input_mima_status
        ;bra  is_input_mima_status

esc_to_mulu:
	jmp TLoad_catalog

not_input_mima_status:
         ldy    #0ffh
TKeyDown_loop:
         iny
         lda    catalogkeytable,y
         bmi    end_TKeyDown
         cmp    <KeyNo
         bne    TKeyDown_loop
         tya
         asl
         tay
         lda    catalogkeyprogram+1,y
         pha
         lda    catalogkeyprogram,y
         pha
         rts
end_TKeyDown:
         jmp jmp_to_lmainu

goto_enterkey:
         ldy  tempy_catalog
         ;cpy  #7                ;;娱乐要加密码
         ;beq  to_happy
goto_enterkey_second:
         lda  event_table,y
         sta  Item_Mode
         sta  <mode
         lda #80h
         sta <Eflag
         jmp jmp_to_lmain

goto_upkey:
	jsr	lblock_mode
	lda	tempy_catalog
	CMP	#0
	BEQ	goto_upkey00
	CMP	#2
	BEQ	goto_upkey02
	CMP	#1
	BEQ	goto_upkey01
	sec
	lda	tempy_catalog
	sbC	#3
goto_upkey_end:
	STA	tempy_catalog
	jsr	lblock_mode
	bra	goto_leftkey_end
goto_upkey02:
	LDA	#7
	bra	goto_upkey_end
goto_upkey01:
	LDA	#6
	bra	goto_upkey_end
goto_upkey00:
	LDA	#8
	bra	goto_upkey_end

         ;lda  tempy_catalog
         ;cmp  #3
         ;bcc  goto_leftkey_end
         ;jsr   lblock_mode
         ;lda  tempy_catalog
         ;sec
         ;sbc  #3
         ;sta  tempy_catalog
         ;jsr   lblock_mode
         ;bra  goto_leftkey_end
goto_downkey:
	jsr	lblock_mode
	lda	tempy_catalog
	CMP	#6
	BEQ	goto_downkey06
	CMP	#7
	BEQ	goto_downkey07
	CMP	#8
	BEQ	goto_downkey08
	CLC
	lda	tempy_catalog
	ADC	#3
goto_downkey_end:
	STA	tempy_catalog
	jsr	lblock_mode
	bra	goto_leftkey_end
goto_downkey06:
	LDA	#1
	bra	goto_downkey_end
goto_downkey07:
	LDA	#2
	bra	goto_downkey_end
goto_downkey08:
	LDA	#0
	bra	goto_downkey_end

         ;lda  tempy_catalog
         ;cmp  #6
         ;bcs  goto_leftkey_end
         ;jsr   lblock_mode
         ;lda  tempy_catalog
         ;clc
         ;adc  #3
         ;sta  tempy_catalog
         ;jsr   lblock_mode
         ;bra  goto_leftkey_end
goto_leftkey:
         jsr   lblock_mode
         lda  tempy_catalog
         beq  goto_leftkey00
         dec  tempy_catalog
         jsr   lblock_mode
goto_leftkey_end:
         jmp jmp_to_lmainu
goto_leftkey00:
	lda	#8
	jmp	goto_downkey_end

goto_rightkey:
         jsr   lblock_mode
         lda  tempy_catalog
         cmp  #8
         beq  goto_rightkey08
         inc  tempy_catalog
         jsr   lblock_mode
         bra  goto_leftkey_end
goto_rightkey08:
	lda	#0
	jmp	goto_downkey_end

show_screen:
        jsr   show_mulu
        jsr   lblock_mode
        rts

ox_table:
        db 3,55,108,3,55,108,3,55,108
oy_table:
        db 4,4,4,31,31,31,57,57,57
lblock_mode:
        ldy    tempy_catalog
        lda    ox_table,y
        sta    <ox
        lda    oy_table,y
        sta    <oy
        lblockinvert  49,18 ;32,16
        rts
catalog_esckey_program:
      jsr ljsr
      dw  biosbank
      dw  InitAll-1
      lda       #DirMode
      sta       <Mode
      lda   #08h         ;; Set mode entry event flag.
      sta   <EFlag             ;; Clear all event flag.
      lda   #0ffh
      sta   event_kill
      ldy  tempy_catalog
      lda  event_table,y
      sta  Item_Mode
      jmp   tload_catalog
get_help:
        lda     <DRRH           ;;帮助
        sta     DRR_RTH
        lda     <DRRL           ;;帮助
        sta     DRR_RTL

        lda     #Ds0Help
        sta     <HelpOffset
        lda     #<tload_0_catalog-1
        sta     HelpRtPrc
        lda     #>tload_0_catalog-1
        sta     HelpRtPrc+1
        lda     #>catalog_help
        sta     helptextph
        lda     #<catalog_help
        sta     helptextpl
        rts

incins:
        inc     <INSL
        bne     ?_1
        inc     <INSH
?_1:
        rts
incind:
        inc     <INDL
        bne     ?_0
        inc     <INDH
?_0:
        rts
decind:
        sec
        lda     <indl
        sbc     #1
        sta     <indl
        lda     <indh
        adc     #0
        sta     <indh
        rts
decins:
        sec
        lda     <insl
        sbc     #1
        sta     <insl
        lda     <insh
        adc     #0
        sta     <insh
        rts
show_one_screen:
        lda     #<lcd_start_add
        sta     <INDL
        lda     #>lcd_start_add
        sta     <INDH
?_2:
        lda     (<INS)
        sta     (<IND)
        jsr     incind
        jsr     incins

?_1:    lda     <INDL
        cmp     #0c0h ;#0adh
        bne     ?_2
        lda     <INDH
        cmp     #0fh
        bne     ?_2
        rts

;Special display ^|
;
;move_scr_up_down:
;        lda     #<Two
;        sta     <StartX
;        lda     #>Two
;        sta     <StartY

;        stz     <temp_numl
;        stz     <temp_numh
;?_0:
;        stz     <OY
;        bbr3    <Eflag,?_1
;        rts
;?_1:
;        lda     <OY
;        asl
;        tay
;        lda     draw_16,y
;        sta     <INDL
;        lda     draw_16+1,y
;        sta     <INDH
;        lda     draw_16+2,y
;        sta     <INSL
;        lda     draw_16+3,y
;        sta     <INSH

;        ldy     #0
;?_2:
;        lda     (<INS),y
;        sta     (<IND),y
;        iny
;        cpy     #20
;        bcc     ?_2

;        inc     <OY
;        lda     <OY
;        cmp     #60-1	;#47+14
;        bcc     ?_1

⌨️ 快捷键说明

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