📄 disp.asm
字号:
;;==============================================
;;==============================================
;;==============================================
chip W65C02S ; Define chip : ST2024C base on 65c02.
pw 128 ; .LST's page width = 128 characters.
case on ; Don't care Upper-case or lower-case.
externs on ; Make all labels public.
;;==============================================
;;==============================================
.include ST2203U.DEF
.include RAM_ext.inc
.include CONSTANT.inc
.include macro.inc
;;==============================================
.include Main.inc
.include ST7636R.inc
;;==============================================
.Global F_Disp_Program
.Global F_Disp_ABCFull
.Global T_NorFlahNoPragramTab
.Global T_NoPhotoTab
.Global T_AutoPlayModeTab
.Global T_SinglePhotoTab
.Global F_Disp_NumOrABC
.Global F_Clear_MenuOtherArea
.Global F_Disp_AutoRun
.Global F_Disp_NorFlashPic
.Global F_Disp_NumOrABC_Boot
;;==============================================
.Extern F_Disp_Program_B
;;==============================================
MINUS_SIGN .EQU 045 ; '-' ASCII
COLON_SIGN .EQU 058 ; ':' ASCII
ARROW_SIGN .EQU 016 ; '->' ASCII
;;; benny add 12/06/2006 128X128 (ST7636R)
;Page_Display_Line .EQU 8 ; 128/16
Page_Display_Line .EQU 6 ; 128/16
Line_Display_Char .EQU 16 ; 128/8
MENU_ADDR_X .EQU C_ST7636R_X_Off
MENU_ADDR_Y .EQU C_ST7636R_Y_Off
YEAR_ADDR_X .EQU C_ST7636R_X_Off+018H
YEAR_ADDR_Y .EQU C_ST7636R_Y_Off+020H
HOUR_ADDR_X .EQU C_ST7636R_X_Off+020H
HOUR_ADDR_Y .EQU YEAR_ADDR_Y+010H
WEEK_ADDR_X .EQU C_ST7636R_X_Off+018H
WEEK_ADDR_Y .EQU YEAR_ADDR_Y+030H
AUTO_SLIDE_ADDR_X .EQU C_ST7636R_X_Off
AUTO_SLIDE_ADDR_Y .EQU C_ST7636R_Y_Off
AUTO_SLIDE_SEC_ADDR_X .EQU C_ST7636R_X_Off+008H
AUTO_SLIDE_SEC_ADDR_Y .EQU C_ST7636R_Y_Off+050H
ON_TIME_ADDR_X .EQU C_ST7636R_X_Off+010H
ON_TIME_ADDR_Y .EQU C_ST7636R_Y_Off
OFF_TIME_ADDR_X .EQU ON_TIME_ADDR_X
OFF_TIME_ADDR_Y .EQU ON_TIME_ADDR_Y+040H
;;==============================================
;;==============================================
PS3_4800 .SECTION
;;==============================================
;;==============================================
;;==============================================
F_Disp_Program:
LDA <R_SysFlag2
AND #0F0H
BNE L_Disp_Program_1
L_Disp_Program_0:
BRA L_Disp_Program_ST7636R
L_Disp_Program_1:
CMP #080H
BCC L_Disp_Program_2
BRA L_Disp_Program_ST7637
L_Disp_Program_2:
CMP #010H
BNE L_Disp_Program_3
BRA L_Disp_Program_ST7669
L_Disp_Program_3:
CMP #020H
BNE L_Disp_Program_4
BRA L_Disp_Program_ST7787
L_Disp_Program_4:
CMP #030H
BNE L_Disp_Program_5
BRA L_Disp_Program_0_
L_Disp_Program_5:
; CMP #040H
; BNE L_Disp_Program_6
; BRA L_Disp_Program_ST7624
;L_Disp_Program_6:
; CMP #050H
; BNE L_Disp_Program_7
; BRA L_Disp_Program_ST7626
;L_Disp_Program_7:
; CMP #060H
; BNE L_Disp_Program_8
; BRA L_Disp_Program_ST7628
;L_Disp_Program_8:
BRA L_Disp_Program_OLED
L_Disp_Program_ST7624:
L_Disp_Program_ST7626:
L_Disp_Program_ST7628:
L_Disp_Program_OLED:
;;; JSR F_Disp_Program_A
JSR 820H
.IF MaskUpDate=0
DW 02H
.ELSE
; DW 02H
DW 02H+C_NorFlash_CS_Drr+C_NorFlash_CS_Drr
.ENDIF ;MaskUpDate=0
DW F_Disp_Program_A-1
RTS
L_Disp_Program_ST7669:
;;; JSR F_Disp_Program_C
JSR 820H
.IF MaskUpDate=0
DW 02H
.ELSE
; DW 02H
DW 02H+C_NorFlash_CS_Drr+C_NorFlash_CS_Drr
.ENDIF ;MaskUpDate=0
DW F_Disp_Program_C-1
RTS
L_Disp_Program_ST7787:
JSR F_Disp_Program_B
RTS
L_Disp_Program_0_:
; JSR F_Disp_Program_A
JSR 820H
.IF MaskUpDate=0
DW 02H
.ELSE
; DW 02H
DW 02H+C_NorFlash_CS_Drr+C_NorFlash_CS_Drr
.ENDIF ;MaskUpDate=0
DW F_Disp_Program_A-1
RTS
;;==============================================
F_R_CursorY_37_XY_Off:
LDA <R_SysFlag2
AND #0F0H
BEQ L_R_CursorY_37_XY_Off_End
CLC
LDA <R_CursorY
ADC #C_ST7637_Y_Off
SEC
SBC #C_ST7636R_Y_Off
STA <R_CursorY
CLC
LDA <R_CursorX
ADC #C_ST7637_X_Off
SEC
SBC #C_ST7636R_X_Off
STA <R_CursorX
L_R_CursorY_37_XY_Off_End:
RTS
;;==============================================
L_Disp_Program_ST7637:
L_Disp_Program_ST7636R:
F_Disp_Program1:
BBS3 <R_SysFlag1,L_Disp_Program
LDA <USBCON
AND #02H
BEQ L_Disp_Program
L_Disp_Program_USB:
BBR0 <R_Disp_Flag,L_Disp_Program_USB_End
RESB 0,R_Disp_Flag
BBS4 <R_SysFlag1,L_Disp_Program_USB_1
L_Disp_Program_USB_0:
LDA #<T_MenuTabUSB_OnLine0
STA <R_TempL
LDA #>T_MenuTabUSB_OnLine0
STA <R_TempH
JSR F_Disp_ABCFull
JSR F_Clear_MenuOtherArea
JMP L_Disp_Program_End
L_Disp_Program_USB_1:
LDA #<T_MenuTabUSB_OnLine1
STA <R_TempL
LDA #>T_MenuTabUSB_OnLine1
STA <R_TempH
JSR F_Disp_ABCFull
JSR F_Clear_MenuOtherArea
L_Disp_Program_USB_End:
JMP L_Disp_Program_End
L_Disp_Program:
LDA R_Mode
BNE L_Disp_Program_Mode1
L_Disp_Program_Mode0:
; LDA R_TabNum
; BEQ L_Disp_Program_Mode1_End
; LDA R_TabNum
; BNE L_Disp_Program_Mode0_
BBR5 <R_SysFlag1,L_Disp_Program_Mode0_
LDA #<T_NoPhotoTab
STA <R_TempL
LDA #>T_NoPhotoTab
STA <R_TempH
JSR F_Disp_ABCFull
JSR F_Clear_MenuOtherArea
BRA L_Disp_Program_Mode1_End
L_Disp_Program_Mode0_:
JSR F_Disp_AutoRun
BBR0 <R_Disp_Flag,L_Disp_Program_Mode0_End
RESB 0,R_Disp_Flag
BBS5 <R_SysFlag1,L_Disp_Program_Mode0_NoPhoto
SETB 3,R_Disp_Flag
BBR7 <R_Disp_Flag,L_Disp_NoDecompression
L_Disp_Decompression:
JSR 820H
.IF MaskUpDate=0
DW 01H
.ELSE
; DW 01H
DW 01H+C_NorFlash_CS_Drr+C_NorFlash_CS_Drr
.ENDIF ;MaskUpDate=0
DW F_DispDecompression-1
BRA L_Disp_NoDecompression_End
L_Disp_NoDecompression:
JSR F_Disp_NorFlashPic
L_Disp_NoDecompression_End:
JSR 820H
.IF MaskUpDate=0
DW 01H
.ELSE
; DW 01H
DW 01H+C_NorFlash_CS_Drr+C_NorFlash_CS_Drr
.ENDIF ;MaskUpDate=0
DW F_ReadLCMDispRam-1
BRA L_Disp_Program_Mode0_End
L_Disp_Program_Mode0_NoPhoto:
LDA #<T_NoPhotoTab
STA <R_TempL
LDA #>T_NoPhotoTab
STA <R_TempH
JSR F_Disp_ABCFull
JSR F_Clear_MenuOtherArea
L_Disp_Program_Mode0_End:
JMP L_Disp_Program_End
L_Disp_Program_Mode1:
CMP #01H
BEQ L_Disp_Program_Mode1_
JMP L_Disp_Program_Mode2
L_Disp_Program_Mode1_:
LDA R_Mode1
BEQ L_Disp_Program_Mode10
JMP L_Disp_Program_Mode11
L_Disp_Program_Mode10:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode1_End
JSR Main_Menu
JSR F_Clear_MenuOtherArea
JMP L_Disp_Program_Mode1_End
L_Disp_Program_Mode11:
BRA L_Disp_Program_Mode1_End
L_Disp_Program_Mode1_End:
JMP L_Disp_Program_End
L_Disp_Program_Mode2:
CMP #02H
BEQ L_Disp_Program_Mode2_
JMP L_Disp_Program_Mode3
L_Disp_Program_Mode2_:
LDA R_Mode1
BEQ L_Disp_Program_Mode20
JMP L_Disp_Program_Mode21
L_Disp_Program_Mode20:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode2_End_
JSR Main_Menu
L_Disp_Program_Mode2_End_:
JMP L_Disp_Program_Mode2_End
L_Disp_Program_Mode21:
CMP #01H
BEQ L_Disp_Program_Mode21_0_
JMP L_Disp_Program_Mode22
L_Disp_Program_Mode21_0_:
LDA R_Mode2
BNE L_Disp_Program_Mode21_0
JMP L_Disp_Program_Mode21_1
L_Disp_Program_Mode21_0:
RESB 0,R_Disp_Flag
JSR F_Disp_AutoSlideTime
BBR1 <R_SysFlag1,L_Disp_Program_Mode21_01
L_Disp_Program_Mode21_00:
LDA #AUTO_SLIDE_ADDR_X
STA <R_CursorX
LDA #AUTO_SLIDE_SEC_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
LDA #<Slide_MenuTab3
STA <R_TempL
LDA #>Slide_MenuTab3
STA <R_TempH
LDX #05 ; SHOW 5 Character.
jsr Show_X_Char
JMP L_Disp_Program_Mode2_End
L_Disp_Program_Mode21_01:
LDA #AUTO_SLIDE_SEC_ADDR_X+010H
STA <R_CursorX
LDA #AUTO_SLIDE_SEC_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
STZ R_Disp_CharL
STZ <R_TempL
STZ <R_TempH
LDA R_AutoSlideTime
L_Disp_Program_Mode21_010:
CMP #100
BCC L_Disp_Program_Mode21_011
INC <R_TempH
SEC
SBC #100
BRA L_Disp_Program_Mode21_010
L_Disp_Program_Mode21_011:
CMP #10
BCC L_Disp_Program_Mode21_012
INC <R_TempL
SEC
SBC #10
BRA L_Disp_Program_Mode21_011
L_Disp_Program_Mode21_012:
CLC
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #AUTO_SLIDE_SEC_ADDR_X+008H
STA <R_CursorX
LDA #AUTO_SLIDE_SEC_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
CLC
LDA <R_TempL
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
LDA #AUTO_SLIDE_SEC_ADDR_X
STA <R_CursorX
LDA #AUTO_SLIDE_SEC_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
CLC
LDA <R_TempH
ADC #30H
STA R_Disp_CharL
JSR F_Disp_NumOrABC
JMP L_Disp_Program_Mode2_End
L_Disp_Program_Mode21_1:
L_Disp_Program_Mode22:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode2_End
JSR SUB_MENU2
BRA L_Disp_Program_Mode2_End
L_Disp_Program_Mode2_End:
JMP L_Disp_Program_End
L_Disp_Program_Mode3:
CMP #03H
BEQ L_Disp_Program_Mode3_
JMP L_Disp_Program_Mode4
L_Disp_Program_Mode3_:
LDA R_Mode1
BEQ L_Disp_Program_Mode30
JMP L_Disp_Program_Mode31
L_Disp_Program_Mode30:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode3_End_
JSR Main_Menu
L_Disp_Program_Mode3_End_:
JMP L_Disp_Program_Mode3_End
L_Disp_Program_Mode31:
RESB 0,R_Disp_Flag
CMP #01H
BNE L_Disp_Program_Mode32
BBR1 <R_SysFlag1,L_Disp_Program_Mode311
L_Disp_Program_Mode310:
RESB 2,R_Disp_Flag
STZ R_Disp_CharL
LDA #YEAR_ADDR_X
STA <R_CursorX
LDA #YEAR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
JSR F_Disp_NumOrABC
LDA #YEAR_ADDR_X+008H
STA <R_CursorX
JSR F_Disp_NumOrABC
LDA #YEAR_ADDR_X+010H
STA <R_CursorX
JSR F_Disp_NumOrABC
LDA #YEAR_ADDR_X+018H
STA <R_CursorX
JSR F_Disp_NumOrABC
BRA L_Disp_Program_Mode312
L_Disp_Program_Mode311:
SETB 2,R_Disp_Flag
JSR F_Disp_Clock
JSR F_Disp_Week
L_Disp_Program_Mode312:
JMP L_Disp_Program_Mode3_End
L_Disp_Program_Mode32:
CMP #02H
BNE L_Disp_Program_Mode33
BBR1 <R_SysFlag1,L_Disp_Program_Mode321
L_Disp_Program_Mode320:
RESB 2,R_Disp_Flag
STZ R_Disp_CharL
LDA #YEAR_ADDR_X+028H
STA <R_CursorX
LDA #YEAR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
JSR F_Disp_NumOrABC
LDA #YEAR_ADDR_X+030H
STA <R_CursorX
JSR F_Disp_NumOrABC
BRA L_Disp_Program_Mode322
L_Disp_Program_Mode321:
SETB 2,R_Disp_Flag
JSR F_Disp_Clock
JSR F_Disp_Week
L_Disp_Program_Mode322:
JMP L_Disp_Program_Mode3_End
L_Disp_Program_Mode33:
CMP #03H
BNE L_Disp_Program_Mode34
BBR1 <R_SysFlag1,L_Disp_Program_Mode331
L_Disp_Program_Mode330:
RESB 2,R_Disp_Flag
STZ R_Disp_CharL
LDA #YEAR_ADDR_X+040H
STA <R_CursorX
LDA #YEAR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
JSR F_Disp_NumOrABC
LDA #YEAR_ADDR_X+048H
STA <R_CursorX
JSR F_Disp_NumOrABC
BRA L_Disp_Program_Mode332
L_Disp_Program_Mode331:
SETB 2,R_Disp_Flag
JSR F_Disp_Clock
JSR F_Disp_Week
L_Disp_Program_Mode332:
JMP L_Disp_Program_Mode3_End
L_Disp_Program_Mode34:
CMP #04H
BNE L_Disp_Program_Mode35
BBR1 <R_SysFlag1,L_Disp_Program_Mode341
L_Disp_Program_Mode340:
RESB 2,R_Disp_Flag
STZ R_Disp_CharL
LDA #HOUR_ADDR_X
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+008H
STA <R_CursorX
JSR F_Disp_NumOrABC
BRA L_Disp_Program_Mode342
L_Disp_Program_Mode341:
SETB 2,R_Disp_Flag
JSR F_Disp_Clock
JSR F_Disp_Week
L_Disp_Program_Mode342:
JMP L_Disp_Program_Mode3_End
L_Disp_Program_Mode35:
CMP #05H
BNE L_Disp_Program_Mode36
BBR1 <R_SysFlag1,L_Disp_Program_Mode351
L_Disp_Program_Mode350:
RESB 2,R_Disp_Flag
STZ R_Disp_CharL
LDA #HOUR_ADDR_X+018H
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+020H
STA <R_CursorX
JSR F_Disp_NumOrABC
BRA L_Disp_Program_Mode352
L_Disp_Program_Mode351:
SETB 2,R_Disp_Flag
JSR F_Disp_Clock
JSR F_Disp_Week
L_Disp_Program_Mode352:
JMP L_Disp_Program_Mode3_End
L_Disp_Program_Mode36:
BBR1 <R_SysFlag1,L_Disp_Program_Mode361
L_Disp_Program_Mode360:
RESB 2,R_Disp_Flag
STZ R_Disp_CharL
LDA #HOUR_ADDR_X+030H
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_R_CursorY_37_XY_Off
JSR F_Disp_NumOrABC
LDA #HOUR_ADDR_X+038H
STA <R_CursorX
JSR F_Disp_NumOrABC
BRA L_Disp_Program_Mode362
L_Disp_Program_Mode361:
SETB 2,R_Disp_Flag
JSR F_Disp_Clock
JSR F_Disp_Week
L_Disp_Program_Mode362:
JMP L_Disp_Program_Mode3_End
L_Disp_Program_Mode3_End:
JMP L_Disp_Program_End
L_Disp_Program_Mode4:
CMP #04H
BEQ L_Disp_Program_Mode4_
JMP L_Disp_Program_Mode5
L_Disp_Program_Mode4_:
LDA R_Mode1
BEQ L_Disp_Program_Mode40
JMP L_Disp_Program_Mode41
L_Disp_Program_Mode40:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode4_End_
JSR Main_Menu
L_Disp_Program_Mode4_End_:
JMP L_Disp_Program_Mode4_End
L_Disp_Program_Mode41:
LDA R_Mode1
CMP #01H
BEQ L_Disp_Program_Mode41_
L_Disp_Program_Mode45:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode4_End_
RESB 0,R_Disp_Flag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -