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

📄 st22xx.inc

📁 FLASH烧录 麻将机。。。。 FLASH烧录 麻将机
💻 INC
字号:
.IFNDEF	_ST22XX_INC_
_ST22XX_INC_	.EQU	1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;     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
SET_XY	macro xx,yy
        pha
        lda     xx
        sta     <CursorX
        lda     yy
        sta     <CursorY
        pla
        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
	php
        endm
PULL_REG	macro
        ply
        plx
        pla
        endm
PULL_ALL	macro
	plp
        ply
        plx
        pla
        endm
PUSH_DRR	macro	tmp
        sta     tmp
        lda     <DRRL
        pha
	lda	<DRRH
	pha
        lda     tmp
        endm
PULL_DRR	macro	tmp
        sta     tmp
	pla
	sta	<DRRH
        pla
        sta     <DRRL
        lda     tmp
        endm
PUSH_PRR	macro	tmp
        sta     tmp
        lda     <PRRL
        pha
	lda     <PRRH
        pha
        lda     tmp
        endm
PULL_PRR	macro	tmp
        sta     tmp
	pla
	sta	<PRRH
        pla
        sta     <PRRL
        lda     tmp
        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

.ENDIF	;_ST22XX_INC_

⌨️ 快捷键说明

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