📄 disp.asm
字号:
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #YEAR_ADDR_X+040H
STA <R_CursorX
STZ R_Disp_CharL
LDA R_Day
L_Disp_Clock_Day0:
CMP #10
BCC L_Disp_Clock_Day1
INC R_Disp_CharL
SEC
SBC #10
BRA L_Disp_Clock_Day0
L_Disp_Clock_Day1:
CLC
LDA R_Disp_CharL
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #YEAR_ADDR_X+048H
STA <R_CursorX
LDA R_Day
L_Disp_Clock_Day2:
CMP #10
BCC L_Disp_Clock_Day3
SEC
SBC #10
BRA L_Disp_Clock_Day2
L_Disp_Clock_Day3:
CLC
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
STZ R_Disp_CharL
LDA R_Hour
L_Disp_Clock_Hour0:
CMP #10
BCC L_Disp_Clock_Hour1
INC R_Disp_CharL
SEC
SBC #10
BRA L_Disp_Clock_Hour0
L_Disp_Clock_Hour1:
CLC
LDA R_Disp_CharL
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+008H
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
LDA R_Hour
L_Disp_Clock_Hour2:
CMP #10
BCC L_Disp_Clock_Hour3
SEC
SBC #10
BRA L_Disp_Clock_Hour2
L_Disp_Clock_Hour3:
CLC
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+010H
STA <R_CursorX
LDA #COLON_SIGN
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+018H
STA <R_CursorX
STZ R_Disp_CharL
LDA R_Minute
L_Disp_Clock_Minute0:
CMP #10
BCC L_Disp_Clock_Minute1
INC R_Disp_CharL
SEC
SBC #10
BRA L_Disp_Clock_Minute0
L_Disp_Clock_Minute1:
CLC
LDA R_Disp_CharL
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+020H
STA <R_CursorX
LDA R_Minute
L_Disp_Clock_Minute2:
CMP #10
BCC L_Disp_Clock_Minute3
SEC
SBC #10
BRA L_Disp_Clock_Minute2
L_Disp_Clock_Minute3:
CLC
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+028H
STA <R_CursorX
LDA #COLON_SIGN
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+030H
STA <R_CursorX
STZ R_Disp_CharL
LDA R_Second
L_Disp_Clock_Second0:
CMP #10
BCC L_Disp_Clock_Second1
INC R_Disp_CharL
SEC
SBC #10
BRA L_Disp_Clock_Second0
L_Disp_Clock_Second1:
CLC
LDA R_Disp_CharL
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+038H
STA <R_CursorX
LDA R_Second
L_Disp_Clock_Second2:
CMP #10
BCC L_Disp_Clock_Second3
SEC
SBC #10
BRA L_Disp_Clock_Second2
L_Disp_Clock_Second3
CLC
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
L_Disp_Clock_End:
PLA
RTS
;;==============================================
F_Disp_Week:
L_Disp_Week:
LDA R_Week
BNE L_Disp_Week_1
L_Disp_Week_0:
LDA #<T_SunDay
STA <R_TempL
LDA #>T_SunDay
STA <R_TempH
JSR F_Disp_WeekSub
BRA L_Disp_Week_End
L_Disp_Week_1:
CMP #01H
BNE L_Disp_Week_2
LDA #<T_MonDay
STA <R_TempL
LDA #>T_MonDay
STA <R_TempH
JSR F_Disp_WeekSub
BRA L_Disp_Week_End
L_Disp_Week_2:
CMP #02H
BNE L_Disp_Week_3
LDA #<T_TuesDay
STA <R_TempL
LDA #>T_TuesDay
STA <R_TempH
JSR F_Disp_WeekSub
BRA L_Disp_Week_End
L_Disp_Week_3:
CMP #03H
BNE L_Disp_Week_4
LDA #<T_WednesDay
STA <R_TempL
LDA #>T_WednesDay
STA <R_TempH
JSR F_Disp_WeekSub
BRA L_Disp_Week_End
L_Disp_Week_4:
CMP #04H
BNE L_Disp_Week_5
LDA #<T_ThursDay
STA <R_TempL
LDA #>T_ThursDay
STA <R_TempH
JSR F_Disp_WeekSub
BRA L_Disp_Week_End
L_Disp_Week_5:
CMP #05H
BNE L_Disp_Week_6
LDA #<T_FriDay
STA <R_TempL
LDA #>T_FriDay
STA <R_TempH
JSR F_Disp_WeekSub
BRA L_Disp_Week_End
L_Disp_Week_6:
CMP #06H
BNE L_Disp_Week_End
LDA #<T_SaturDay
STA <R_TempL
LDA #>T_SaturDay
STA <R_TempH
JSR F_Disp_WeekSub
BRA L_Disp_Week_End
L_Disp_Week_End:
RTS
;;==============================================
F_Disp_WeekSub:
PHA
PHX
LDA #WEEK_ADDR_X
STA <R_CursorX
LDA #WEEK_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
LDX #9
JSR Show_X_Char
L_Disp_WeekSub_End:
PLX
PLA
RTS
;;==============================================
;;; BENNY ADD
F_Disp_AutoSlideTime:
LDA #AUTO_SLIDE_ADDR_X
STA <R_CursorX
LDA #AUTO_SLIDE_ADDR_Y+010H
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
LDA #<Slide_MenuTab1
STA <R_TempL
LDA #>Slide_MenuTab1
STA <R_TempH
LDX #Line_Display_Char ; SHOW 16 Character.
JSR Show_X_Char
LDA #AUTO_SLIDE_ADDR_X
STA <R_CursorX
LDA #AUTO_SLIDE_ADDR_Y+030H
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
LDA #<Slide_MenuTab2
STA <R_TempL
LDA #>Slide_MenuTab2
STA <R_TempH
LDX #Line_Display_Char ; SHOW 16 Character.
JSR Show_X_Char
LDA #AUTO_SLIDE_ADDR_X+028H
STA <R_CursorX
LDA #AUTO_SLIDE_SEC_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
LDA #<Slide_MenuTab4
STA <R_TempL
LDA #>Slide_MenuTab4
STA <R_TempH
LDX #07 ; SHOW 07 Character.
Show_X_Char:
LDA (R_TempL)
STA R_Disp_CharL
JSR F_Disp_NumOrABC
INC <R_TempL
BNE Show_X_Char_0
INC <R_TempH
Show_X_Char_0:
CLC
LDA <R_CursorX
ADC #08H
STA <R_CursorX
DEX
BNE Show_X_Char
RTS
;;==============================================
MAIN_MENU_ARROW_TAB:
DB MENU_ADDR_Y
DB MENU_ADDR_Y+010H
DB MENU_ADDR_Y+020H
DB MENU_ADDR_Y+030H
DB MENU_ADDR_Y+040H
DB MENU_ADDR_Y+050H
;;==============================================
Main_Menu:
RESB 0,R_Disp_Flag
LDA #<T_MenuTab0
STA <R_TempL
LDA #>T_MenuTab0
STA <R_TempH
JSR F_Disp_ABCFull
LDX R_Mode ; FROM 1 START
Main_Menu1:
DEX
LDA #MENU_ADDR_X+008H
STA <R_CursorX
LDA MAIN_MENU_ARROW_TAB,X
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
SHOW_ARROW:
LDA #ARROW_SIGN
STA R_Disp_CharL
JSR F_Disp_NumOrABC
RESB 0,R_Disp_Flag ; MUST ADD.
RTS
;;==============================================
SUB_MENU2:
RESB 0,R_Disp_Flag
LDA #<T_MenuTab10
STA <R_TempL
LDA #>T_MenuTab10
STA <R_TempH
JSR F_Disp_ABCFull
LDX R_Mode1
BRA Main_Menu1
;;==============================================
.include 8X16.asm
;;==============================================
F_Disp_NumOrABC:
F_Disp_NumOrABC_Boot:
PHA
PHX
PHY
LDA R_CursorY+1
PHA
LDA R_CursorY
PHA
LDA R_CursorX
PHA
LDA <R_TempL
PHA
LDA <R_TempH
PHA
M_Keep_Drr
LDA R_Disp_CharL
STA <R_TempL
STZ <R_TempH
M_Change_ST7636R_CS_Drr
LDA <R_SysFlag2
AND #0F0H
BNE L_Disp_NumOrABC_Boot_1
L_Disp_NumOrABC_Boot_0:
BRA L_Disp_NumOrABC_Boot_ST7636R
L_Disp_NumOrABC_Boot_1:
CMP #080H
BCC L_Disp_NumOrABC_Boot_2
BRA L_Disp_NumOrABC_Boot_ST7637
L_Disp_NumOrABC_Boot_2:
CMP #010H
BNE L_Disp_NumOrABC_Boot_3
BRA L_Disp_NumOrABC_Boot_ST7669
L_Disp_NumOrABC_Boot_3:
CMP #020H
BNE L_Disp_NumOrABC_Boot_4
JMP L_Disp_NumOrABC_Boot_ST7787
L_Disp_NumOrABC_Boot_4:
CMP #030H
BNE L_Disp_NumOrABC_Boot_5
JMP L_Disp_NumOrABC_Boot_0_
L_Disp_NumOrABC_Boot_5:
CMP #040H
BNE L_Disp_NumOrABC_Boot_6
JMP L_Disp_NumOrABC_Boot_ST7624
L_Disp_NumOrABC_Boot_6:
CMP #050H
BNE L_Disp_NumOrABC_Boot_7
JMP L_Disp_NumOrABC_Boot_ST7626
L_Disp_NumOrABC_Boot_7:
CMP #060H
BNE L_Disp_NumOrABC_Boot_8
JMP L_Disp_NumOrABC_Boot_ST7628
L_Disp_NumOrABC_Boot_8:
JMP L_Disp_NumOrABC_Boot_OLED
L_Disp_NumOrABC_Boot_ST7636R:
L_Disp_NumOrABC_Boot_ST7637:
M_Input R_RowAddressSet ;COM SET
M_Para R_CursorY
JSR F_ADC15_R_CursorY
M_Para R_CursorY ;END
M_Input R_ColumeAddressSet ;SEG SET
M_Para R_CursorX
JSR F_ADC7_R_CursorX
M_Para R_CursorX ;END
M_Input R_MemoryWrite
JMP L_Disp_NumOrABC_Boot
L_Disp_NumOrABC_Boot_ST7669:
M_Write_I 02BH M_Para R_CursorY+1
M_Para R_CursorY
JSR F_ADC15_R_CursorY
M_Para R_CursorY+1
M_Para R_CursorY
M_Write_I 02AH M_Write_D 000H
M_Para R_CursorX
JSR F_ADC7_R_CursorX
M_Write_D 000H
M_Para R_CursorX
M_Write_I 02CH JMP L_Disp_NumOrABC_Boot
L_Disp_NumOrABC_Boot_ST7787:
M_Write_I 02BH M_Para R_CursorY+1
M_Para R_CursorY
JSR F_ADC15_R_CursorY
M_Para R_CursorY+1
M_Para R_CursorY
M_Write_I 02AH M_Write_D 000H
M_Para R_CursorX
JSR F_ADC7_R_CursorX
M_Write_D 000H
M_Para R_CursorX
M_Write_I 02CH JMP L_Disp_NumOrABC_Boot
; M_Write_I 02AH; M_Write_D 000H
; M_Para R_CursorX
; JSR F_ADC7_R_CursorX
; M_Write_D 000H
; M_Para R_CursorX
; M_Write_I 02BH; M_Para R_CursorY+1
; M_Para R_CursorY
; JSR F_ADC15_R_CursorY
; M_Para R_CursorY+1
; M_Para R_CursorY
; M_Write_I 02CH; JMP L_Disp_NumOrABC_Boot
L_Disp_NumOrABC_Boot_0_:
; JMP L_Disp_NumOrABC_Boot
L_Disp_NumOrABC_Boot_ST7624:
L_Disp_NumOrABC_Boot_ST7626:
L_Disp_NumOrABC_Boot_ST7628:
M_Input R_RowAddressSet ;COM SET
M_Para R_CursorY
JSR F_ADC15_R_CursorY
M_Para R_CursorY ;END
M_Input R_ColumeAddressSet ;SEG SET
M_Para R_CursorX
JSR F_ADC7_R_CursorX
M_Para R_CursorX ;END
M_Input R_MemoryWrite
JMP L_Disp_NumOrABC_Boot
L_Disp_NumOrABC_Boot_OLED:
M_Write_I 075H
M_Input R_CursorY
JSR F_ADC15_R_CursorY
M_Input R_CursorY
M_Write_I 015H
M_Input R_CursorX
JSR F_ADC7_R_CursorX
M_Input R_CursorX
L_Disp_NumOrABC_Boot:
ASL <R_TempL
ROL <R_TempH
ASL <R_TempL
ROL <R_TempH
ASL <R_TempL
ROL <R_TempH
ASL <R_TempL
ROL <R_TempH
CLC
LDA #<T_8X16Tab
ADC <R_TempL
STA <R_TempL
LDA #>T_8X16Tab
ADC <R_TempH
STA <R_TempH
LDY #00H
L_Disp_NumOrABC_OneByte:
LDA (R_TempL),Y
PHA
LDX #00H
L_Disp_NumOrABC_OneBit:
PLA
ASL
PHA
BCS L_Disp_NumOrABC_Set
L_Disp_NumOrABC_Clear:
M_Para #0FFH
M_Para #0FFH
BBR6 <R_Disp_Flag,L_Clear_65K
L_Clear_262K:
M_Para #0FFH
BRA L_Clear_65K_262K
L_Clear_65K:
L_Clear_65K_262K:
BRA L_Disp_NumOrABC_OneBitEnd
L_Disp_NumOrABC_Set:
M_Para #00H
M_Para #00H
BBR6 <R_Disp_Flag,L_Set_65K
L_Set_262K:
M_Para #00H
BRA L_Set_65K_262K
L_Set_65K:
L_Set_65K_262K:
L_Disp_NumOrABC_OneBitEnd:
INX
CPX #08H
BCC L_Disp_NumOrABC_OneBit
PLA
INY
CPY #10H
BCC L_Disp_NumOrABC_OneByte
L_Disp_NumOrABC_End:
M_Relase_Drr
PLA
STA <R_TempH
PLA
STA <R_TempL
PLA
STA R_CursorX
PLA
STA R_CursorY
PLA
STA R_CursorY+1
PLY
PLX
PLA
RTS
;;==============================================
F_ADC15_R_CursorY:
CLC
LDA R_CursorY
ADC #15
STA R_CursorY
RTS
;;==============================================
F_ADC7_R_CursorX:
CLC
LDA R_CursorX
ADC #7
STA R_CursorX
RTS
;;==============================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -