📄 catalog.asm
字号:
; ldy #0
;?_3: lda (<StartX),y
; sta (<INS),y
; iny
; cpy #20
; bcc ?_3
; lda <StartX
; clc
; adc #20
; sta <StartX
; lda <StartY
; adc #0
; sta <StartY
; jsr Delay_xx
; jsr inc_temp_num
; lda <temp_numl
; cmp #04ch ;行数
; bne ?_0
; lda <temp_numh
; cmp #02h
; bne ?_0
; rts
Delay_xx:
phx
phy
ldy #0
?_1: ldx #0
?_0: inx
bne ?_0
iny
bne ?_1
ldy #0
?_3: ldx #0
?_2: inx
bne ?_2
iny
bne ?_3
ply
plx
rts
show_mulu:
lda #>MenuLibDataBank
sta <drrh
lda #<MenuLibDataBank
sta <drrl
lda #>mulu
sta <insh
lda #<mulu
sta <insl
stz <CurX
stz <CurY
;jsr LJSR
;dw ps1_Bank
;dw ShowAnim-1
jsr ShowAnim_Mend
jsr FreshLcd
;jsr show_one_screen
rts
DrawRowTbl:
DW 0980H+19,0994H+19,09A8H+19,09BCH+19,09D0H+19,09E4H+19,09F8H+19,0A0CH+19,0A20H+19,0A34H+19
DW 0A48H+19,0A5CH+19,0A70H+19,0A84H+19,0A98H+19,0AACH+19,0AC0H+19,0AD4H+19,0AE8H+19,0AFCH+19
DW 0B10H+19,0B24H+19,0B38H+19,0B4CH+19,0B60H+19,0B74H+19,0B88H+19,0B9CH+19,0BB0H+19,0BC4H+19
DW 0BD8H+19,0BECH+19,0C00H+19,0C14H+19,0C28H+19,0C3CH+19,0C50H+19,0C64H+19,0C78H+19,0C8CH+19
DW 0CA0H+19,0CB4H+19,0CC8H+19,0CDCH+19,0CF0H+19,0D04H+19,0D18H+19,0D2CH+19,0D40H+19,0D54H+19
DW 0D68H+19,0D7CH+19,0D90H+19,0DA4H+19,0DB8H+19,0DCCH+19,0DE0H+19,0DF4H+19,0E08H+19,0E1CH+19
DW 0E30H+19,0E44H+19,0E58H+19,0E6CH+19,0E80H+19,0E94H+19,0EA8H+19,0EBCH+19,0ED0H+19,0EE4H+19
DW 0EF8H+19,0F0CH+19,0F20H+19,0F34H+19,0F48H+19,0F5CH+19,0F70H+19,0F84H+19,0F98H+19,0FACH+19
Bit_WhiteTable:
db 11111110b
db 11111101b
db 11111011b
db 11110111b
db 11101111b
db 11011111b
db 10111111b
db 01111111b
Bit_Table:
db 00000001b
db 00000010b
db 00000100b
db 00001000b
db 00010000b
db 00100000b
db 01000000b
db 10000000b
DrawLine:
jsr SetPixel
inc <OX
lda <OX
cmp #159
bcc DrawLine
rts
;Input: (OX,OY)
;Output: 在(OX,OY)位置输出一个黑点
SetPixel:
pha
phx
lda <OY
asl
tax
lda <OX
lsr
lsr
lsr ;OX/8
sta <INDL
lda DrawRowTbl,x
sec
sbc <INDL
sta <INDL
lda DrawRowTbl+1,x
sbc #0
sta <INDH
lda <OX
and #7 ;OX mode 8
tax
lda (<IND)
ora Bit_Table,x
sta (<IND)
plx
pla
rts
;Input: (OX,OY)
;Output: 在(OX,OY)位置输出一个白点
ErasePixel:
pha
phx
lda <OY
asl
tax
lda <OX
lsr
lsr
lsr ;OX/8
sta <INDL
lda DrawRowTbl,x
sec
sbc <INDL
sta <INDL
lda DrawRowTbl+1,x
sbc #0
sta <INDH
lda <OX
and #7 ;OX mode 8
tax
lda (<IND)
and Bit_WhiteTable,x
sta (<IND)
plx
pla
rts
inc_temp_num:
inc <temp_numl
bne ?_0
inc <temp_numh
?_0:
rts
delay2s:
rmb1 <Eflag
bbr1 <Eflag,$
rmb1 <Eflag
bbr1 <Eflag,$
rmb1 <Eflag
rts
;************************************************
FrameChar equ CData+0
FrameLen equ CData+1
FrameFlag equ CData+2
Animy equ CData+3
Animx equ CData+4
Reanimh equ CData+5
Reaniml equ CData+6
StoreFrame equ CData+7
Frames equ CData+8
Repeats equ CData+9
;Input: (INSL,INSH),(CurX,CurY)
;
ShowAnim_Mend:
lda (<INS)
sta <Repeats
jsr DrawINCINS
lda (<INS)
sta <Frames
sta <StoreFrame
jsr DrawINCINS
lda <INSL
sta <ReAnimL
lda <INSH
sta <ReAnimH
lda <CurX
sta <Animx
lda <CurY
sta <Animy
frameloop:
lda (<INS)
sta <FrameFlag
and #00001111b
asl
asl
asl
clc
adc <Animy
sta <CurY
jsr DrawINCINS
lda (<INS)
clc
adc <Animx
sta <CurX
jsr DrawINCINS
lda (<INS)
sta <FrameLen
jsr DrawINCINS
lda <FrameFlag
and #40h
bne reframedata
?_0:
lda (<INS)
jsr ShowByte_H
jsr DrawINCINS
dec <FrameLen
bne ?_0
bra groupend
reframedata:
lda (<INS)
sta <FrameChar
jsr DrawINCINS
?_0: lda <FrameChar
jsr ShowByte_H
dec <FrameLen
bne ?_0
groupend:
lda <FrameFlag
and #80h
beq frameloop
lda (<INS)
jsr DrawINCINS
bbs3 <EFlag,anim_end
jsr DelayForAnim
SkipDelay:
dec <Frames
bne frameloop
lda <Repeats
cmp #2
bcc anim_end
dec
sta <Repeats
lda <ReAnimL
sta <INSL
lda <ReAnimH
sta <INSH
lda <StoreFrame
sta <Frames
jsr DelayForAnim
jsr DelayForAnim
bra frameloop ;repeatloop
anim_end:
rts
DrawINCINS:
inc <INSL
bne ?_0
inc <INSH
?_0: rts
DelayForAnim:
ldx #0
?_0: lda #0
?_1: nop
dec
bne ?_1
nop
dex
bne ?_0
rts
;Input: A (CurX,CurY)
;
ShowByte_H:
phy
ldy <CurX
sty <OX
ldy <CurY
dey
sty <OY
ldx #8-1
?_0: inc <OY
lsr
bcs ?_1
bbs4 <SF1,?_2 ;"or"模式,白点不显示
jsr ErasePixel
bra ?_2
?_1: jsr SetPixel
?_2: dex
bpl ?_0
inc <CurX
ply
rts
jmp_to_lmain:
jmp_lmain:
LMAIN
jmp_to_lmainu:
jmp_lmainu:
lmainU
;************************************************
ban_duan_if_left_icon:
ldy <lblock_item
dey
tya
sta <temp
asl
asl
asl
asl
adc <temp
adc <temp
adc <temp
adc <temp
tay
lda textbuffor+20,y
cmp #41h
bcc ban_duan_if_left_icon_end
cmp #5ah
beq clear_left_icon
bcs ban_duan_if_left_icon_end
clear_left_icon:
loff_lcd_icon iconleft
ban_duan_if_left_icon_end:
rts
ban_duan_all_icon:
jsr ban_duan_if_left_icon
jsr ban_duan_all_up_down_icon
rts
textbuffor_tab:
db 20,40,60,80
ban_duan_all_up_down_icon:
ldx #0
lda ItemNo
cmp #0ah
beq icon_yanyu
cmp #0bh
beq icon_bugui
icon_en_name:
lda textbuffor_tab,x
tay
lda textbuffor,y
cmp #'Z'
beq icon_en_name_0
inx
cpx #4
beq end_all_end
bra icon_en_name
end_all_end:
rts
icon_en_name_0:
ldx #0
icon_en_name_1:
lda textbuffor_tab,x
tay
lda textbuffor+1,y
cmp #'o'
beq icon_en_name_2
inx
cpx #4
beq end_all_end
bra icon_en_name_1
icon_en_name_2:
lda textbuffor,y
cmp #'Z'
beq is_last_off_icon
bra end_all_end
icon_yanyu:
lda textbuffor_tab,x
tay
lda textbuffor,y
cmp #'Z'
beq is_last_off_icon
inx
cpx #4
beq end_all
bra icon_yanyu
icon_bugui:
lda textbuffor_tab,x
tay
lda textbuffor,y
cmp #'w'
beq is_last_off_icon_bugui_0
inx
cpx #4
beq end_all
bra icon_bugui
is_last_off_icon_bugui_0:
ldx #0
is_last_off_icon_bugui_1:
lda textbuffor_tab,x
tay
lda textbuffor+1,y
cmp #'r'
beq is_last_off_icon_bugui_2
inx
cpx #4
beq end_all
bra is_last_off_icon_bugui_1
is_last_off_icon_bugui_2:
ldx #0
is_last_off_icon_bugui_3:
lda textbuffor_tab,x
tay
lda textbuffor+2,y
cmp #'i'
beq is_last_off_icon_bugui_4
inx
cpx #4
beq end_all
bra is_last_off_icon_bugui_3
is_last_off_icon_bugui_4:
ldx #0
is_last_off_icon_bugui_5:
lda textbuffor_tab,x
tay
lda textbuffor+3,y
cmp #'t'
beq is_last_off_icon
inx
cpx #4
beq end_all
bra is_last_off_icon_bugui_5
is_last_off_icon:
loff_lcd_icon icon_downpage
ldy <lblock_item
cpy #4
bcc end_all_00
bra end_all_11
end_all_00:
lda textbuffor_tab,y
tay
lda textbuffor,y
cmp #20h
bne end_all
end_all_11:
loff_lcd_icon icondown
end_all:
rts
ban_duan_yan_yu_end_begin:
lda <fu_lu_indxd
cmp #027h
bne ban_duan_end
lda <fu_lu_indxd+1
cmp #97h
bne ban_duan_end
loff_lcd_icon icon_uppage
rts
ban_duan_end:
lda <fu_lu_indxd
cmp #0e6h
bne ban_duan_end_end
lda <fu_lu_indxd+1
cmp #0eeh
bne ban_duan_end_end
loff_lcd_icon icon_downpage
ban_duan_end_end:
rts
ban_duan_bu_gui_end_begin:
lda <fu_lu_indxd
cmp #08h
bne ban_duan_bu_gui_end
lda <fu_lu_indxd+1
cmp #0efh
bne ban_duan_bu_gui_end
loff_lcd_icon icon_uppage
rts
ban_duan_bu_gui_end:
lda <fu_lu_indxd+2
cmp #0f5h
bne ban_duan_bu_gui_end_end
lda <fu_lu_indxd
cmp #0fch
bne ban_duan_bu_gui_end_end
lda <fu_lu_indxd+1
cmp #08eh
bne ban_duan_bu_gui_end_end
loff_lcd_icon icon_downpage
ban_duan_bu_gui_end_end:
rts
ban_duan_name_end_begin:
llight_lcd_icon icon_uppage
llight_lcd_icon icon_downpage
lda <fu_lu_indxd
cmp #0f8h
bne ban_duan_name_end
lda <fu_lu_indxd+1
cmp #0a9h
bne ban_duan_name_end
lda <fu_lu_indxd+2
cmp #0f5h
bne ban_duan_name_end
loff_lcd_icon icon_uppage
rts
ban_duan_name_end:
lda <fu_lu_indxd
cmp #067h
bne ban_duan_name_end_end
lda <fu_lu_indxd+1
cmp #0abh
bne ban_duan_name_end_end
lda <fu_lu_indxd+2
cmp #0f7h
bne ban_duan_name_end_end
loff_lcd_icon icon_downpage
ban_duan_name_end_end:
rts
FreshLcd:
lupdate_all_icon
rts
senddatatopc:
jsr LJSR
dw BiosBank
dw StartSio-1
lda #80h
sta <DrrL
stz <DRRH
lda #80h
sta <INSH
stz <INSL
?0 lda (<INS)
tax
jsr LJSR
dw BiosBank
dw SendByte-1
inc <INSL
bne ?0
inc <INSH
bne ?0
inc <DRRL
lda #80h
sta <INSH
lda <DRRL
cmp #90h
bcc ?0
bra $
; ***************************************************************************
PUBLIC lvd_turn_off
lvd_turn_off:
lda #icon_battery&0ffh
tsb icon_battery>>8
Lsetscreen 14
LDX #0
?START0:
LDA LVD_TEXT0,X
BEQ ?END0
STA TEXTBUFFOR,X
INX
BRA ?START0
?END0:
LDX #0
?START1:
LDA LVD_TEXT1,X
BEQ ?END1
STA TEXTBUFFOR+20,X
INX
BRA ?START1
?END1:
LUpdateScreen
WAI
NOP
WAI
NOP
WAI
NOP
WAI
NOP
jmp turn_off
LVD_TEXT0:
DB "电压低,",0
LVD_TEXT1:
DB "请换电池.",0
; ***************************************************************************
End
; ***************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -