📄 string.s
字号:
include h/mori.h
include ../bios/h/graph.h
public show_talk
public show_talk0
public data_string
public bin_10
extrn gblcd12x_0
extrn wait_key
extrn refreshmap
extrn block_draw
extrn squre_draw
extrn scroll_to_lcd
extrn clear_attr
show_talk:
jsr show_talk0
jmp refreshmap
show_talk0:
jsr clear_attr
ldy #0
show_talk10:
lda #20h
sta ScreenBuffer+26*4,y
iny
cpy #52
bcc show_talk10
ldy #0
ldx #0
show_talk11:
lda (string_ptr),y
beq show_talk2
cmp #1
beq show_talk2
cmp #2
bne show_talk12
cpx #27
bcs show_talk2
ldx #26
iny
bne show_talk11
show_talk12:
sta ScreenBuffer+26*4,x
iny
inx
cpx #52
bne show_talk11
show_talk2:
tya
adda2 string_ptr
lda #0f0h
sta line_mode+1
lm x0,#1
lm x1,#159
lm y0,#51
lm y1,#79
lm lcmd,#0
jsr block_draw
jsr gblcd12x_0
lm lcmd,#1
jsr squre_draw
jsr scroll_to_lcd
jsr wait_key
ldy #0
lda (string_ptr),y
beq show_talk5
cmp #20h
bcs show_talk4
inc2 string_ptr
show_talk4:
jmp show_talk10
show_talk5:
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;二进制转10进制字符串:
; Input: c 0:左对齐,1:右对齐
; x 相对ScreenBuffer的偏移
; binbuf 2byte二进制数据
; Output: ScreenBuffer
; Destory: a1,a2,a3,a4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BCD_LEN equ 5
bin_10:
php
txa
pha
BIN2BCD
ldy #0ffh
jump_0:
iny
cpy #BCD_LEN-1
bcs put_it
lda bcdbuf,y
cmp #'0'
beq jump_0
put_it:
pla
tax
plp
bcs bin_right
put_it1:
lda bcdbuf,y
sta ScreenBuffer,x
iny
inx
cpy #BCD_LEN
bcc put_it1
rts
bin_right:
dey
sty a1
ldy #BCD_LEN-1
put_it2:
lda bcdbuf,y
sta ScreenBuffer,x
dex
dey
cpy a1
bne put_it2
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;批量二进制转10进制字符串:
; Input: a6 批量二进制数据格式及相对ScreenBuffer的偏移
; a7 批量二进制数据地址
; Output: ScreenBuffer
; Destory: a1,a2,a3,a4,a6,a7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
data_string:
ldy #0
sty binbuf+1
lda (a7),y
sta binbuf
inc2 a7
lda (a6),y
cmp #0ffh
beq data_string_rts
and #1
beq data_string1
lda (a7),y
sta binbuf+1
inc2 a7
data_string1:
lda (a6),y
asl a
php
iny
lda (a6),y
tax
lda #2
adda2 a6
plp
jsr bin_10
jmp data_string
data_string_rts:
rts
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -