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

📄 st22xx.inc

📁 Sitronix电子词典ST2202芯片的Zardoz汇编程序。
💻 INC
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;     Macros                                                ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;; for touch panel
TP_CS_LOW
        MACRO
        pha
        lda     <PC
        ora     #PORTC_MASK
        and     #(TP_CS^ffh)
        sta     <PC
        pla
        ENDM
TP_CS_HIGH
        macro
        pha
        lda     <PC
        ora     #PORTC_MASK|TP_CS
        sta     <PC
        pla
        endm
TP_CLK_LOW
        macro
        pha
        lda     <PC
        ora     #PORTC_MASK
        and     #(TP_CLK^ffh)
        sta     <PC
        pla
        endm
TP_CLK_HIGH
        macro
        pha
        lda     <PC
        ora     #PORTC_MASK|TP_CLK
        sta     <PC
        pla
        endm
TP_DATA_LOW
        macro
        pha
        lda     <PC
        ora     #PORTC_MASK
        and     #(TP_DOUT^ffh)
        sta     <PC
        pla
        endm
TP_DATA_HIGH
        macro
        pha
        lda     <PC
        ora     #PORTC_MASK|TP_DOUT
        sta     <PC
        pla
        endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;                  for display (ST7565)                     ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CURSOR_HOME
        macro
        pha
        lda     #10110000B+00h
        sta     ST7565CommandPort       ;;Set display RAM page address
        lda     #00010000B+00h
        sta     ST7565CommandPort       ;;Set MSB of column address
        lda     #00000000B+00h
        sta     ST7565CommandPort       ;;Set LSB of column address
        pla
        endm
SHOW_A_IN_HEX_XY
        macro xx,yy
        pha
        lda     xx
        sta     <CursorX
        lda     yy
        sta     <CursorY
        pla
        SHOW_A_IN_HEX
        endm
SA_XY
        macro xx,yy
        pha
        lda     xx
        sta     <CursorX
        lda     yy
        sta     <CursorY
        pla
        SHOW_A_IN_HEX
        endm
SHOW_A_IN_NIBBLE_XY
        macro xx,yy
        pha
        lda     xx
        sta     <CursorX
        lda     yy
        sta     <CursorY
        pla
        SHOW_A_IN_NIBBLE
        endm
SHOW_A_IN_OCT_XY
        macro xx,yy
        pha
        lda     xx
        sta     <CursorX
        lda     yy
        sta     <CursorY
        pla
        SHOW_A_IN_OCT
        endm
SHOW_A_IN_HEX
        macro
        pha
        pha
        lsr     a
        lsr     a
        lsr     a
        lsr     a
        jsr     Draw8x8Font
        pla
        and     #0fh
        jsr     Draw8x8Font
        pla
        endm
SA
        macro
        pha
        pha
        lsr     a
        lsr     a
        lsr     a
        lsr     a
        jsr     Draw8x8Font
        pla
        and     #0fh
        jsr     Draw8x8Font
        pla
        endm
SHOW_A_IN_NIBBLE
        macro
        pha
        and     #0fh
        jsr     Draw8x8Font
        pla
        endm
SHOW_A_IN_OCT
        macro
        pha
        phx
        tax
        lda     Hex2BcdTab,x
        jsr     Draw8x8Font
        lda     Hex2BcdTab+256,x
        jsr     Draw8x8Font
        lda     Hex2BcdTab+512,x
        jsr     Draw8x8Font
        plx
        pla
        endm
SHOW_A_IN_TIME_XY
        macro xx,yy
        PUSH_REG
        ldx     xx
        ldy     yy
        jsr     Set8x8CursorXY
        tax
        lda     Hex2BcdTab,x
        jsr     Draw8x8Font
        phx
        ldx     xx+2
        ldy     yy
        jsr     Set8x8CursorXY
        plx
        lda     Hex2BcdTab+256,x
        jsr     Draw8x8Font
        lda     Hex2BcdTab+512,x
        jsr     Draw8x8Font
        PULL_REG
        endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;                  HWR                                      ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHOW_CANDIDATE
        macro n
        PUSH_ALL
        ;;; move nth candidate GB_code to (x,y)
        ldx     n*4
        lda     HWRCandidateBuffer+2,x
        ldy     HWRCandidateBuffer+3,x
        tax
        jsr     ConvertGBCode
        ldx     n*2
        ldy     n
        jsr     SetCandidateXY
        jsr     Draw12x12Font
        PULL_ALL
        endm
SHOW_CANDIDATE_ASC
        macro n
        PUSH_ALL
        ldx     n*4
        lda     HWRCandidateBuffer+2,x
        ldx     n*2
        jsr     SetEditLineXY
        jsr     Draw6x12Font75
        PULL_ALL
        endm
SHOW_EDIT_LINE
        macro n
        PUSH_ALL
        ;;; move nth candidate GB_code to (x,y)
        ldx     n*4
        lda     HWRCandidateBuffer+2,x
        ldy     HWRCandidateBuffer+3,x
        tax
        jsr     ConvertGBCode
        ldx     n*2
        jsr     SetEditLineXY
        jsr     Draw12x12Font75
        PULL_ALL
        endm
INC_BUFFER_PTR
        macro ptrl,ptrh,buffer_start
        ;;; increment stroke buffer ptr
        inc     ptrl
        bne     label#
        inc     ptrh
        bbr4    ptrh,label#
        pha
        lda     #>buffer_start
        sta     ptrh
        pla
label#
        endm
DEC_BUFFER_PTR
        macro ptrl,ptrh,buffer_start
        ;;; decrement stroke buffer ptr
        pha
        dec     ptrl
        lda     ptrl
        cmp     #ffh
        bne     label#
        dec     ptrh
        lda     ptrh
        cmp     #>buffer_start-0100h
        bne     label#
        lda     #0fh
        sta     ptrh
label#  pla
        endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;                  others                                   ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLEAR_MEMORY
        macro base,size
        phx
        ldx     size
label#  stz     base-1,x
        dex
        bne     label#
        plx
        endm
FILL_MEMORY
        macro base,size,constant
        pha
        phx
        lda     constant
        ldx     size
label#  sta     base-1,x
        dex
        bne     label#
        plx
        pla
        endm
MOVE_MEMORY
        macro source,destination,size
        pha
        phy
        ldy     #0
label#  lda     source,y
        sta     destination,y
        iny
        cpy     size
        bne     label#
        ply
        pla
        endm
DUMP_MEMORY
        macro base,number
        pha
        phy
        ldy     #0
?label# lda     base,y
        SHOW_A_IN_HEX
        iny
        cpy     number
        bne     ?label#
        ply
        pla
        endm
DUMP_MEMORY_XY
        macro base,number,xx,yy
        pha
        phy
        lda     xx
        sta     <CursorX
        lda     yy
        sta     <CursorY
        ldy     #0
?label# lda     base,y
        SHOW_A_IN_HEX
        iny
        cpy     number
        bne     ?label#
        ply
        pla
        endm
DISTANCE
        macro  variable
        sec
        sbc     variable
        bcs     end#
        ;; negative
        eor     #ffh
        inc     a
end#
        endm
PUSH_REG
        macro
        pha
        phx
        phy
        endm
PUSH_ALL
        macro
        pha
        phx
        phy
        sta     <StackTmp
        lda     <PtrH
        pha
        lda     <PtrL
        pha
        lda     <TmpH
        pha
        lda     <TmpL
        pha
        lda     <StackTmp
        endm
PULL_REG
        macro
        ply
        plx
        pla
        endm
PULL_ALL
        macro
        pla
        sta     <TmpL
        pla
        sta     <TmpH
        pla
        sta     <PtrL
        pla
        sta     <PtrH
        ply
        plx
        pla
        endm
PUSH_DRR
        macro
        sta     <StackTmp
        lda     <DRR
        pha
        lda     <StackTmp
        endm
PULL_DRR
        macro
        sta     <StackTmp
        pla
        sta     <DRR
        lda     <StackTmp
        endm
PUSH_PRR
        macro
        sta     <StackTmp
        lda     <PRR
        pha
        lda     <StackTmp
        endm
PULL_PRR
        macro
        sta     <StackTmp
        pla
        sta     <PRR
        lda     <StackTmp
        endm
PAUSE0
        macro
        bbr7    <PA,$
        endm
PAUSE1
        macro
        bbs7    <PA,$
        endm
STOP
        macro
        bra     $
        endm

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; for Danny's adpcm test program
SETB:           .MACRO   BITN,ADDR
                .IF     BITN=0
                SMB0    <ADDR
                .ENDIF
                .IF     BITN=1
                SMB1    <ADDR
                .ENDIF
                .IF     BITN=2
                SMB2    <ADDR
                .ENDIF
                .IF     BITN=3
                SMB3    <ADDR
                .ENDIF
                .IF     BITN=4
                SMB4    <ADDR
                .ENDIF
                .IF     BITN=5
                SMB5    <ADDR
                .ENDIF
                .IF     BITN=6
                SMB6    <ADDR
                .ENDIF
                .IF     BITN=7
                SMB7    <ADDR
                .ENDIF
                .ENDM

RESB:           .MACRO   BITN,ADDR
                .IF     BITN=0
                RMB0    <ADDR
                .ENDIF
                .IF     BITN=1
                RMB1    <ADDR
                .ENDIF
                .IF     BITN=2
                RMB2    <ADDR
                .ENDIF
                .IF     BITN=3
                RMB3    <ADDR
                .ENDIF
                .IF     BITN=4
                RMB4    <ADDR
                .ENDIF
                .IF     BITN=5
                RMB5    <ADDR
                .ENDIF
                .IF     BITN=6
                RMB6    <ADDR
                .ENDIF
                .IF     BITN=7
                RMB7    <ADDR
                .ENDIF
                .ENDM

JBS:            .MACRO   BITN,ADDR,LAB
                .IF     BITN=0
                BBS0    <ADDR,LAB
                .ENDIF
                .IF     BITN=1
                BBS1    <ADDR,LAB
                .ENDIF
                .IF     BITN=2
                BBS2    <ADDR,LAB
                .ENDIF
                .IF     BITN=3
                BBS3    <ADDR,LAB
                .ENDIF
                .IF     BITN=4
                BBS4    <ADDR,LAB
                .ENDIF
                .IF     BITN=5
                BBS5    <ADDR,LAB
                .ENDIF
                .IF     BITN=6
                BBS6    <ADDR,LAB
                .ENDIF
                .IF     BITN=7
                BBS7    <ADDR,LAB
                .ENDIF
                .ENDM

JBR:            .MACRO   BITN,ADDR,LAB
                .IF     BITN=0
                BBR0    <ADDR,LAB
                .ENDIF
                .IF     BITN=1
                BBR1    <ADDR,LAB
                .ENDIF
                .IF     BITN=2
                BBR2    <ADDR,LAB
                .ENDIF
                .IF     BITN=3
                BBR3    <ADDR,LAB
                .ENDIF
                .IF     BITN=4
                BBR4    <ADDR,LAB
                .ENDIF
                .IF     BITN=5
                BBR5    <ADDR,LAB
                .ENDIF
                .IF     BITN=6
                BBR6    <ADDR,LAB
                .ENDIF
                .IF     BITN=7
                BBR7    <ADDR,LAB
                .ENDIF
                .ENDM

SIGN_LIMIT:     .MACRO
                BVC     NO_OVERFS#      ;
                BMI     P_OVER#         ;
                LDA     #$80            ;MIN
                BRA     NO_OVERFS#      ;
P_OVER#         LDA     #$7F            ;MAX
NO_OVERFS#                              ;
                .ENDM
BUTTON
        macro
        lda     #ffh
        sta     <PA
        stz     <PCA
        bbs0    <PA,$
        endm

⌨️ 快捷键说明

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