📄 disp96x64.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
.include Disp.inc
;;==============================================
.Global F_Disp_Program_A
.Global F_Disp_ABCFull_A
.Global T_NorFlahNoPragramTab_A
.Global T_NoPhotoTab_A
;;==============================================
MINUS_SIGN .EQU 045 ; '-' ASCII
COLON_SIGN .EQU 058 ; ':' ASCII
ARROW_SIGN .EQU 016 ; '->' ASCII
;;; benny add 12/04/2006 96X64(ST7624,ST7626,ST7628)
Page_Display_Line .EQU 4 ; 64/16
Line_Display_Char .EQU 12 ; 96/8
MENU_ADDR_X .EQU C_ST7626_X_Off
MENU_ADDR_Y .EQU C_ST7626_Y_Off
YEAR_ADDR_X .EQU C_ST7626_X_Off+008H
YEAR_ADDR_Y .EQU C_ST7626_Y_Off+010H
HOUR_ADDR_X .EQU C_ST7626_X_Off+010H
HOUR_ADDR_Y .EQU YEAR_ADDR_Y+010H
WEEK_ADDR_X .EQU C_ST7626_X_Off+008H
WEEK_ADDR_Y .EQU YEAR_ADDR_Y+020H
AUTO_SLIDE_ADDR_X .EQU C_ST7626_X_Off
AUTO_SLIDE_ADDR_Y .EQU C_ST7626_Y_Off
AUTO_SLIDE_SEC_ADDR_X .EQU C_ST7626_X_Off+008H
AUTO_SLIDE_SEC_ADDR_Y .EQU C_ST7626_Y_Off+020H
ON_TIME_ADDR_X .EQU C_ST7626_X_Off+010H
ON_TIME_ADDR_Y .EQU C_ST7626_Y_Off
OFF_TIME_ADDR_X .EQU ON_TIME_ADDR_X
OFF_TIME_ADDR_Y .EQU ON_TIME_ADDR_Y+020H
;;==============================================
;;==============================================
PS2_5000 .SECTION
;;==============================================
F_Disp_Program_A:
F_Disp_Program:
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_A
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_A
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:
BBR5 <R_SysFlag1,L_Disp_Program_Mode0_
LDA #<T_NoPhotoTab_A
STA <R_TempL
LDA #>T_NoPhotoTab_A
STA <R_TempH
JSR F_Disp_ABCFull_A
BRA L_Disp_Program_Mode0_End
L_Disp_Program_Mode0_:
; JSR F_Disp_AutoRun
JSR 820H
.IF MaskUpDate=0
DW 03H
.ELSE
; DW 03H
DW 03H+C_NorFlash_CS_Drr+C_NorFlash_CS_Drr
.ENDIF ;MaskUpDate=0
DW F_Disp_AutoRun-1
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
JSR 820H
.IF MaskUpDate=0
DW 03H
.ELSE
; DW 03H
DW 03H+C_NorFlash_CS_Drr+C_NorFlash_CS_Drr
.ENDIF ;MaskUpDate=0
DW F_Disp_NorFlashPic-1
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_A
STA <R_TempL
LDA #>T_NoPhotoTab_A
STA <R_TempH
JSR F_Disp_ABCFull_A
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
STZ R_Page
JSR Main_Menu
JMP L_Disp_Program_Mode1_End
L_Disp_Program_Mode11:
JMP 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
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
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
; STZ R_Disp_CharH
JSR F_Disp_NumOrABC_96X64
LDA #AUTO_SLIDE_SEC_ADDR_X+008H
STA <R_CursorX
LDA #AUTO_SLIDE_SEC_ADDR_Y
STA <R_CursorY
CLC
LDA <R_TempL
ADC #30H
STA R_Disp_CharL
; STZ R_Disp_CharH
JSR F_Disp_NumOrABC_96X64
LDA #AUTO_SLIDE_SEC_ADDR_X
STA <R_CursorX
LDA #AUTO_SLIDE_SEC_ADDR_Y
STA <R_CursorY
CLC
LDA <R_TempH
ADC #30H
STA R_Disp_CharL
; STZ R_Disp_CharH
JSR F_Disp_NumOrABC_96X64
JMP L_Disp_Program_Mode2_End
L_Disp_Program_Mode21_1:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode2_End
RESB 0,R_Disp_Flag
LDA #<T_MenuTab10
STA <R_TempL
LDA #>T_MenuTab10
STA <R_TempH
JSR F_Disp_ABCFull_A
BRA L_Disp_Program_Mode2_End
L_Disp_Program_Mode22:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode2_End
RESB 0,R_Disp_Flag
LDA #<T_MenuTab11
STA <R_TempL
LDA #>T_MenuTab11
STA <R_TempH
JSR F_Disp_ABCFull_A
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
; STZ R_Disp_CharH
LDA #YEAR_ADDR_X
STA <R_CursorX
LDA #YEAR_ADDR_Y
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #YEAR_ADDR_X+008H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #YEAR_ADDR_X+010H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #YEAR_ADDR_X+018H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
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
; STZ R_Disp_CharH
LDA #YEAR_ADDR_X+028H
STA <R_CursorX
LDA #YEAR_ADDR_Y
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #YEAR_ADDR_X+030H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
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
; STZ R_Disp_CharH
LDA #YEAR_ADDR_X+040H
STA <R_CursorX
LDA #YEAR_ADDR_Y
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #YEAR_ADDR_X+048H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
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
; STZ R_Disp_CharH
LDA #HOUR_ADDR_X
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #HOUR_ADDR_X+008H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
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
; STZ R_Disp_CharH
LDA #HOUR_ADDR_X+018H
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #HOUR_ADDR_X+020H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
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
; STZ R_Disp_CharH
LDA #HOUR_ADDR_X+030H
STA <R_CursorX
LDA #HOUR_ADDR_Y
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #HOUR_ADDR_X+038H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
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
LDA #<T_AutoOnOFF_Off
STA <R_TempL
LDA #>T_AutoOnOFF_Off
STA <R_TempH
JSR F_Disp_ABCFull_A
JMP L_Disp_Program_Mode4_End
L_Disp_Program_Mode41_:
LDA R_Mode2
BNE L_Disp_Program_Mode41_001
L_Disp_Program_Mode41_000:
BBR0 <R_Disp_Flag,L_Disp_Program_Mode4_End_
RESB 0,R_Disp_Flag
LDA #<T_AutoOnOFF_On
STA <R_TempL
LDA #>T_AutoOnOFF_On
STA <R_TempH
JSR F_Disp_ABCFull_A
JMP L_Disp_Program_Mode4_End
L_Disp_Program_Mode41_001:
RESB 0,R_Disp_Flag
LDA R_Mode2
CMP #01H
BNE L_Disp_Program_Mode42
BBR1 <R_SysFlag1,L_Disp_Program_Mode411
L_Disp_Program_Mode410:
STZ R_Disp_CharL
; STZ R_Disp_CharH
LDA #ON_TIME_ADDR_X+010H
STA <R_CursorX
LDA #ON_TIME_ADDR_Y+010H
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #ON_TIME_ADDR_X+018H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
BRA L_Disp_Program_Mode412
L_Disp_Program_Mode411:
JSR F_Disp_OnTime
JSR F_Disp_OffTime
L_Disp_Program_Mode412:
JMP L_Disp_Program_Mode4_End
L_Disp_Program_Mode42:
CMP #02H
BNE L_Disp_Program_Mode43
BBR1 <R_SysFlag1,L_Disp_Program_Mode421
L_Disp_Program_Mode420:
STZ R_Disp_CharL
; STZ R_Disp_CharH
LDA #ON_TIME_ADDR_X+028H
STA <R_CursorX
LDA #ON_TIME_ADDR_Y+010H
STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
LDA #ON_TIME_ADDR_X+030H
STA <R_CursorX
; STA <R_CursorY
JSR F_Disp_NumOrABC_96X64
BRA L_Disp_Program_Mode422
L_Disp_Program_Mode421:
JSR F_Disp_OnTime
JSR F_Disp_OffTime
L_Disp_Program_Mode422:
JMP L_Disp_Program_Mode4_End
L_Disp_Program_Mode43:
CMP #03H
BNE L_Disp_Program_Mode44
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -