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

📄 graphics.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 3 页
字号:
        sbc     #0aeh  ;;#0b0h
        sta     <INSL
        stz     <INSH

        stz     <INDL
        stz     <INDH

        ldx     #0
?1Multi_94:
        clc
        lda     <INSL
        adc     <INDL
        sta     <INDL
        lda     <INDH
        adc     #0
        sta     <INDH
        inx
        cpx     #94
        bne     ?1Multi_94

        clc
        tya
        adc     <INDL
        sta     <INDL
        lda     <INDH
        adc     #0
        sta     <INDH

        stz     <DRR
        stz     <drrh
        asl     <INDL
        rol     <INDH

        asl     <INDL
        rol     <INDH

        asl     <INDL
        rol     <INDH
        asl     <INDL
        rol     <INDH
        rol     <DRR
        rol     <DRRh

        asl     <INDL
        rol     <INDH
        rol     <DRR
        rol     <DRRh

        ldy     <INDL
        lda     <INDH
        ora     #80h
        tax
        asl     <INDH
        rol     <DRR
        rol     <DRRh
        clc
        lda     #<CFontBank
        adc     <DRR
        sta     <DRR
        lda     <DRRh
        adc     #>CFontBank
        sta     <DRRh
        rts

;;=========================================
?2222_next_rom:
        tya
        sec
        sbc     #0a1h
        tay

        txa
        sec
        sbc     #0a1h  ;;#0b0h
        sta     <INSL
        stz     <INSH

        stz     <INDL
        stz     <INDH

        ldx     #0
?2Multi_94:
        clc
        lda     <INSL
        adc     <INDL
        sta     <INDL
        lda     <INDH
        adc     #0
        sta     <INDH
        inx
        cpx     #94
        bne     ?2Multi_94

        clc
        tya
        adc     <INDL
        sta     <INDL
        lda     <INDH
        adc     #0
        sta     <INDH

        stz     <DRR
        stz     <drrh
        asl     <INDL
        rol     <INDH

        asl     <INDL
        rol     <INDH

        asl     <INDL
        rol     <INDH
        asl     <INDL
        rol     <INDH
        rol     <DRR
        rol     <DRRh

        asl     <INDL
        rol     <INDH
        rol     <DRR
        rol     <DRRh

        ldy     <INDL
        lda     <INDH
        ora     #80h
        tax
        asl     <INDH
        rol     <DRR
        rol     <DRRh
        clc
        lda     #<CFontBank2
        adc     <DRR
        sta     <DRR
        lda     <DRRh
        adc     #>CFontBank2
        sta     <DRRh
        rts

Draw8x16Phonetic:
        txa
        sec
        sbc     #51h
        ldx     #>DJFont8x16_yh ;;DJFont8x16
        ldy     #<DJFont8x16_yh ;;DJFont8x16
        bra     drawcharxxx
;;===============================================
DrawChar16:
        txa
        ldx     #>ASC816Font_yh
        ldy     #<ASC816Font_yh
        bra     drawcharxxx
DrawChar12:
        txa
        ldx     #>ASC816FontD
        ldy     #<ASC816FontD
drawcharxxx_slow:    ;;任意位置,显示速度慢
        jsr     A2FontA
        stx     <image_addrh
        sty     <image_addrl
        lda     <drr
        pha
        lda     <drrh
        pha
        lda     #>FontBank
        sta     <DRRh
        lda     #<FontBank
        sta     <DRR
        lda     #8
        sta     <image_width
        lda     #16
        sta     <image_hight_temp
        jsr     print_block_at_anywhere
        pla
        sta     <drrh
        pla
        sta     <drr
        rts

drawcharxxx:          ;;非任意位置,ox,oy必须以8为单位,显示速度快
        jsr     A2FontA
        stx     <image_addrh
        sty     <image_addrl
        lda     <drr
        pha
        lda     <drrh
        pha
        lda     #>FontBank
        sta     <DRRh
        lda     #<FontBank
        sta     <DRR
        jsr     speed_print_8_x_16
        pla
        sta     <drrh
        pla
        sta     <drr
        rts

SetScreen_to_ds0:
        jsr     set_to_ds0bank
        bra     SetScreen
SetScreenU_to_ds0:
        jsr     set_to_ds0bank
SetScreenU:
        stx     <ScreenMode
        txa
        bne     ?SetCur00       ;; Set cursor=(0,0)
        rts
?SetCur00:
SetScreen:
        stx     <ScreenMode
        txa
        bne     Cls          ;; Clear screen if mode #0.
;;      stz     <ox
;;      stz     <oy
        jmp     ClrLCD
Cls:
        jsr     SetCur00        ;; Set cursor=(0,0)

        lda     <ScreenMode
        bne     Cls0
        jmp     ClrLCD      ;; Branch if mode 0.
Cls0:
        ldx     #0
        lda     #' '            ;; 'Space'
?cls1:
        sta     TextBuffor,x
        inx
        cpx     #textbuffer_num
        bcc     ?cls1
clrallicon:
        jmp     clear_all_icon
SetCur00:
        ldx     #0
        ldy     #0
SetCur: stx     <CurX
        sty     <CurY
        rts

CursorSizeTbl:
        db      0,3,81h
SetCursorSize:
        lda     CursorSizeTbl,x
        sta     <CursorSize
        rts

OYAd1:
        lda     #1
        bra     oyad25
OYAd2:
        lda     #2
oyad25: clc
        adc     <OY
        sta     <OY
        stz     <OX
        rts

OXAd16: lda     #16
        clc
        adc     <OX
        sta     <OX
        cmp     #LCD_SEG
        bcc     oxa8e
        stz     <OX
        lda     <OY
        adc     #15
        bra     OXxx81

OXAd8:  lda     #8
        clc
        adc     <OX
        sta     <OX
        cmp     #LCD_SEG
        bcc     oxa8e
        stz     <OX
        lda     <OY
        adc     #15
OXxx81:
        sta     <OY
oxa8e:  rts

;;[S]-----------------------------------------------[S]
;;       Draw font 8X8 (phonetic code).
;;[S]-----------------------------------------------[S]
DrawFont8Phonetic:
        cpx     #20h
        bne     DrawFont8Phonetic_0
        bra     DrawFont8
DrawFont8Phonetic_0:
        lda     #>FontBank
        sta     <DRRh
        lda     #<FontBank
        sta     <DRR

        txa
        ldx     #>DJFont_yh
        ldy     #<DJFont_yh

        sec
        sbc     #44h  ;5ah
        bra     dwf83
;;[S]-----------------------------------------------[S]
;;       Draw font 8X8 (ASCII code).
;;[S]-----------------------------------------------[S]
DrawFont8:
        lda     #>FontBank
        sta     <DRRh
        lda     #<FontBank
        sta     <DRR

        txa
        ldy     #<Asc88Font_yh ;;ASC88Font
        ldx     #>Asc88Font_yh ;;ASC88Font

      ;;sec
      ;;sbc     #10h
Dwf83:;;
      ;;bcs     dwf85
      ;;lda     #0

dwf85:  stx     <INSH
        sty     <INSL

        stz     <INDH           ;; ASCII code *= 8.
        asl
        rol     <INDH
        asl
        rol     <INDH
        asl
        rol     <INDH

        clc
        adc     <INSL
        sta     <image_addrl
        lda     <INDH
        adc     <INSH
        sta     <image_addrh

        jsr     speed_print_8_x_8

        lda     <OX
        clc
        adc     #8
        cmp     #LCD_SEG
        bcc     DrawFont_0
        lda     <OY
        adc     #7
        cmp     #LCD_COM
        bcc     DrawFont_1
        rts

;;[S]-----------------------------------------------[S]
;;       Draw out X(,Y)(ASCII code).
;;[S]-----------------------------------------------[S]
DrawFont:
        phx
        jsr     A2FontAddr      ;; Font code -> Font patten address.
        stx     <image_addrh
        sty     <image_addrl
        pla                     ;; Get org. font code.
        cmp     #0a1h
        bcc     DrawFont_2
        jsr     speed_print_16_x_16
        lda     <OX
        sec
        adc     #15
        cmp     #LCD_SEG
        bcc     DrawFont_0
        lda     <OY
        adc     #15
        cmp     #LCD_COM
        bcc     DrawFont_1
        rts
DrawFont_1:
        stz     <OX
        sta     <OY
        rts
DrawFont_0:
        sta     <OX
        rts

DrawFont_2:
        jsr     speed_print_8_x_16
        lda     <OX
        sec
        adc     #7
        cmp     #LCD_SEG
        bcc     DrawFont_0
        lda     <OY
        adc     #15
        cmp     #LCD_COM
        bcc     DrawFont_1
        rts

DrawFont0:
        phx
        jsr     A2FontAddr      ;; Font code -> Font patten address.
        stx     <image_addrh
        sty     <image_addrl
        pla                     ;; Get org. font code.
        cmp     #0a1h
        bcc     ?DrawFont_2

        lda     #16
        sta     <image_width
        sta     <image_hight_temp
        jsr     print_block_at_anywhere

        lda     <OX
        sec
        adc     #15
        cmp     #LCD_SEG
        bcc     ?DrawFont_0
        lda     <OY
        adc     #15
        cmp     #LCD_COM
        bcc     ?DrawFont_1
        rts
?DrawFont_1:
        stz     <OX
        sta     <OY
        rts
?DrawFont_0:
        sta     <OX
        rts

?DrawFont_2:
        lda     #8
        sta     <image_width
        lda     #16
        sta     <image_hight_temp
        jsr     print_block_at_anywhere

        lda     <OX
        sec
        adc     #7
        cmp     #LCD_SEG
        bcc     ?DrawFont_0
        lda     <OY
        adc     #15
        cmp     #LCD_COM
        bcc     ?DrawFont_1
        rts

ClearCursor:
BackSpace:
        rts
tab_oytab:
        db      72,72,72,72,72,72,72,72,64,64,64,64,64,64,64,64
DrawNxLoc:
        clc
        txa
        adc     <OX             ;; OX += width.
        cmp     #LCD_SEG
        bcc     draw95          ;; Branch if OX < 112
        tya                     ;; Get height.
        clc
        adc     <OY             ;; OY += height.
        cmp     #LCD_COM         ;; OY >= 6 ?
        bcc     draw92          ;; Branch if OY < 6 (0..5)
        lda     tab_oytab,y
draw92: sta     <OY
        lda     #0              ;; Clear OX.
draw95: sta     <OX
        rts

;;[S]-----------------------------------------------[S]
;;       OX,OY -> LCD address.(IND) fine
;;[S]-----------------------------------------------[S]
;oybittab:
;        db      00000001b
;        db      00000010b
;        db      00000100b
;        db      00001000b
;        db      00010000b
;        db      00100000b
;        db      01000000b
;        db      10000000b

OXY2IND:
        lda     <oy
        asl
        tax

        lda     <ox
        lsr
        lsr
        lsr
        sta     <indl
        lda	y_col_address_tab_5x10,x
        sec
        sbc     <indl
        sta     <indl
        
        lda     y_col_address_tab_5x10+1,x
        sbc	#0
        sta     <indh
        
        rts
;;============================================================================
;;

⌨️ 快捷键说明

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