📄 cd64k.asm
字号:
SETB SEDCTLCS
MOV A,#00H
LCALL DISPWIN
LCALL DELAY200MS
LCALL DELAY200MS
LCALL DELAY200MS
LCALL DELAY200MS
LCALL DELAY200MS
LCALL DELAY200MS
CLR ENBMUTE
CLR MUTEPORT
LJMP PF001
;-------------------------------------------------------------
;主窗口
STARTGR32B: NOP
SETB DISPMODEOREFT
MOV MASTEFMODE,#00H
MOV MASTSETMODE,#00H
MOV MASTDSNAME,#00H
MOV MASTDSFORMAT,#00H
MOV MASTINPUT,#10H
SETB ENBNIGHT
LCALL PF030 ;初始化输入源
LCALL PF038 ;读取输入源
; MOV HSBERRNUMTCR,#05H ;200ms
; CLR HSBERRENB ;出错使能
; WLPST001: JB HSBERRENB,WLPST008
; NOP
; JNB HSBCMDENB,WLPST001
; MOV A,HSBCMDBUF
; MOV MASTSETMODE,HSBCMDBUF+1
WLPST008: LCALL PF018 ;读取主音量
LCALL PF461 ;设置RL-SPEAKER
LCALL GETDSFORMAT ;读取音频格式
WLPSTRT01: MOV R6,#7EH ;初始化完成
MOV R7,#03H
LCALL HSBMSGRET
JB HSBERRENB,WLPSTRT0F
JNZ WLPSTRT01
WLPSTRT0F: RET
PF001: MOV A,#02H
LCALL DISPWIN ;显示一窗口
LCALL CLRWINBCK ;清窗口背景
MOV A,MASTVALUME
LCALL DISPDTL ;显示主量
LCALL DISPVOLBAR
LCALL PF03B ;显示输入源
LCALL DISPDFMSG ;显示静噪开关
LCALL DISPSPKSTATE ;显示声道信息
LCALL DISPMODE ;显示聆听模式
LCALL DISPEFMODE ;显示效果模式
LCALL DISPNIGHT ;
NOP
LJMP WLOOP
;-------------------------------------------------------------
;设置VALUME
;--
PF020: MOV A,#02H
LCALL DISPWIN
PF021: NOP
PF022: JB HSBERRENB,PF014
MOV R6,#08H
MOV R7,#80H
LCALL HSBMSGRET
JNZ PF022
MOV A,R4
XRL A,#38H
JZ PF013
SJMP PF014
;-------------------------------------------------------------
;设置VALUME
;++
PF010: MOV A,#02H
LCALL DISPWIN
PF011: NOP
PF012: JB HSBERRENB,PF014
MOV R6,#08H
MOV R7,#0C0H
LCALL HSBMSGRET
JNZ PF012
MOV A,R4
XRL A,#38H
JZ PF013
PF014: LCALL PF018
MOV A,MASTVALUME
LCALL DISPDTL
LCALL DISPVOLBAR
LJMP WLOOP
PF013: LCALL PF01A
MOV A,MASTVALUME
LCALL DISPDTL
LCALL DISPVOLBAR
LJMP WLOOP
;-------------------------------------------------------------
;读取主音量
PF018: MOV R6,#08H
MOV R7,#00H
LCALL HSBMSGRET
JB HSBERRENB,PF01F
JNZ PF018
MOV A,R4
XRL A,#38H
JNZ PF018
PF01A: MOV A,R5
CLR C
SUBB A,#50H
JC PF01B
MOV R5,#50H
PF01B: MOV MASTVALUME,R5
PF01F: RET
;-------------------------------------------------------------
;系统语言切换
PF261: JNB MULTILANGUAGE,PF26E
CPL ISCHINESE
MOV C,ISCHINESE
MOV LANCHANGE,C
LJMP PF206
PF26E: LJMP WLEND
;-------------------------------------------------------------
PF241: MOV A,B
ANL A,#0FH
MOV R1,A
SUBB A,#05H
JC PF242
LJMP WLEND
PF242: MOV A,R1
MOV PROGPRTM,A
LJMP PF221
;-------------------------------------------------------------
;设置选择功能
;++
PF202: INC PROGPRTM
CLR C
MOV A,PROGPRTM
SUBB A,#05H
JC PF203
MOV PROGPRTM,#00H
PF203: LJMP PF20A
;--
PF204: DEC PROGPRTM
MOV A,PROGPRTM
CLR C
SUBB A,#05H
JC PF205
MOV PROGPRTM,#04H
PF205: LJMP PF20A
;显示设置窗口
PF201: MOV PROGPRTM,#00H
PF206: MOV A,#03H
LCALL DISPWIN ;显示一窗口
LCALL DISPLAYLANMARK
LCALL CLRWINBCK ;清窗口背景
PF20A: MOV DPX0,#36
MOV DPX1,#124
MOV DPY0,#32
MOV DPY1,#149
LCALL ClrRect
MOV DPX0,#36
MOV DPX1,#124
MOV A,PROGPRTM
ADD A,#PF20FH-PF20B
MOVC A,@A+PC
PF20B: MOV DPY0,A
ADD A,#21
MOV DPY1,A
LCALL FilRect
LJMP WLEND
PF20FH: DB 32,56,80,104,128
;-------------------------------------------------------------
;选择菜单
PF221: MOV A,PROGPRTM
CJNE A,#00H,PF223
MOV PROGSTATE,#03H
LJMP PF301
PF223: CJNE A,#01H,PF225
MOV PROGSTATE,#04H
LJMP PF401
PF225: CJNE A,#02H,PF227
MOV PROGSTATE,#05H
LJMP PF501
PF227: CJNE A,#03H,PF229
MOV PROGSTATE,#06H
LJMP PF601
PF229: MOV PROGSTATE,#00H
LJMP PF001
;-------------------------------------------------------------
PF321: MOV A,PROGPRTM
CJNE A,#00H,PF323
LCALL PF328
LJMP WLOOP
PF323: CJNE A,#01H,PF325
LCALL PF328
LJMP WLOOP
PF325:
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
LCALL PF328
MOV PROGSTATE,#00H
LJMP PF001
;-------------------------------------------------------------
PF341: MOV A,B
ANL A,#0FH
MOV R1,A
SUBB A,#03H
JC PF342
LJMP WLEND
PF342: MOV A,R1
MOV PROGPRTM,A
MOV A,PROGPRTM
CJNE A,#00H,PF343
LCALL PF328
LJMP PF308
PF343: CJNE A,#01H,PF345
LCALL PF328
LJMP PF308
PF345:
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
LCALL PF328
MOV PROGSTATE,#00H
LJMP PF001
;-------------------------------------------------------------
;DO TONE TEST
PF328: JB HSBERRENB,PF32F
MOV A,PROGPRTM
CJNE A,#00H,PF329
MOV R6,#10H
MOV R7,#0C0H
SJMP PF32B
PF329: CJNE A,#01H,PF32A
MOV R6,#10H
MOV R7,#0C0H
SJMP PF32B
PF32A: MOV R6,#10H
MOV R7,#80H
SJMP PF32B
PF32B: LCALL HSBMSGRET
JNZ PF328
PF32F: RET
;-------------------------------------------------------------
;TONE TEST 显示
PF301: MOV PROGPRTM,#00H
PF308: MOV A,#04H
LCALL DISPWIN ;显示一窗口
LCALL CLRWINBCK
PF30A: MOV DPX0,#28
MOV DPX1,#132
MOV DPY0,#59
MOV DPY1,#126
LCALL ClrRect
MOV A,PROGPRTM
ADD A,#PF30FH-PF30B
MOVC A,@A+PC
PF30B: MOV DPY0,A
ADD A,#19
MOV DPY1,A
MOV DPX0,#28
MOV DPX1,#132
LCALL FilRect
LJMP WLEND
PF30FH: DB 59,83,107
;-------------------------------------------------------------
;TONE TEST 设置选择功能
;++
PF302: INC PROGPRTM
CLR C
MOV A,PROGPRTM
SUBB A,#03H
JC PF303
MOV PROGPRTM,#00H
PF303: LJMP PF30A
;--
PF304: DEC PROGPRTM
MOV A,PROGPRTM
CLR C
SUBB A,#03H
JC PF305
MOV PROGPRTM,#02H
PF305: LJMP PF30A
;-------------------------------------------------------------
PF4A1: MOV A,B
ANL A,#0FH
MOV R1,A
SUBB A,#05H
JC PF4A2
LJMP WLEND
PF4A2: MOV A,R1
MOV PROGPRTM,A
LJMP PF421
;-------------------------------------------------------------
;DO SPEAKER SETUP
PF421: MOV A,PROGPRTM
CJNE A,#00H,PF423
LJMP PF42A
PF423: CJNE A,#01H,PF425
LJMP PF42A
PF425: CJNE A,#02H,PF427
LJMP PF42A
PF427: CJNE A,#03H,PF429
LJMP PF42A
PF429: MOV PROGSTATE,#00H
LJMP PF001
PF42A:
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
LCALL PF461
LCALL PF431
LCALL PF441
LCALL PF451
LJMP PF402K1
;----------------------------------------------------------------
;REAR SPEAKER
PF431: JB HSBERRENB,PF43E
MOV A,PROGPRTM
CLR C
SUBB A,#04H
JNC PF43E
MOV A,PROGPRTM
ADD A,#PF43FD-PF43B
MOVC A,@A+PC
PF43B: MOV R7,A
MOV C,ACC.0
MOV A,PROGPRTS
MOV ACC.1,C
MOV PROGPRTS,A
MOV R6,#43H
LCALL HSBMSGRET
JNZ PF431
MOV A,R4
XRL A,#43H
JNZ PF431
PF43E: RET
PF43FD: DB 81H,80H,81H,80H ;小/无/小/无
;CENTER SPEAKER
PF441: JB HSBERRENB,PF44E
MOV A,PROGPRTM
CLR C
SUBB A,#04H
JNC PF44E
MOV A,PROGPRTM
ADD A,#PF44FD-PF44B
MOVC A,@A+PC
PF44B: MOV R7,A
MOV C,ACC.0
MOV A,PROGPRTS
MOV ACC.0,C
MOV PROGPRTS,A
MOV R6,#42H
LCALL HSBMSGRET
JNZ PF441
MOV A,R4
XRL A,#42H
JNZ PF441
PF44E: RET
PF44FD: DB 81H,81H,80H,80H ;小/小/无/无
;SW SPEAKER
PF451: JB HSBERRENB,PF455
MOV R7,#81H ;有
MOV R6,#44H
LCALL HSBMSGRET
JNZ PF451
MOV A,R4
XRL A,#44H
JNZ PF451
ORL PROGPRTS,#08H
PF455: RET
;RL SPEAKER
PF461: JB HSBERRENB,PF465
MOV R7,#81H ;小
MOV R6,#41H
LCALL HSBMSGRET
JNZ PF461
MOV A,R4
XRL A,#41H
JNZ PF461
ORL PROGPRTS,#04H
PF465: RET
;GET SPEAKER SETUP DATA
;DATA PROGPRTS:X/X/X/X/SW/MAIN/REAR/CENTER
PF471: JB HSBERRENB,PF47F
MOV R6,#11H ;MAIN
MOV R7,#00H
LCALL HSBMSGRET
JNZ PF471
MOV A,R4
XRL A,#41H
JNZ PF471
MOV A,R5
CLR C
JZ PF472
SETB C
PF472: MOV A,PROGPRTS
MOV ACC.2,C
MOV PROGPRTS,A
PF473: JB HSBERRENB,PF47F
MOV R6,#12H ;CENTER
MOV R7,#00H
LCALL HSBMSGRET
JNZ PF473
MOV A,R4
XRL A,#42H
JNZ PF473
MOV A,R5
CLR C
JZ PF474
SETB C
PF474: MOV A,PROGPRTS
MOV ACC.0,C
MOV PROGPRTS,A
PF475: JB HSBERRENB,PF47F
MOV R6,#13H ;RR
MOV R7,#00H
LCALL HSBMSGRET
JNZ PF475
MOV A,R4
XRL A,#43H
JNZ PF475
MOV A,R5
CLR C
JZ PF476
SETB C
PF476: MOV A,PROGPRTS
MOV ACC.1,C
MOV PROGPRTS,A
PF477: JB HSBERRENB,PF47F
MOV R6,#14H ;RR
MOV R7,#00H
LCALL HSBMSGRET
JNZ PF477
MOV A,R4
XRL A,#44H
JNZ PF477
MOV A,R5
CLR C
JZ PF478
SETB C
PF478: MOV A,PROGPRTS
MOV ACC.3,C
MOV PROGPRTS,A
PF47F: RET
;----------------------------------------------------------------
;DISPLAY SPEAKER STATE
PF481: MOV DPX0,#58 ;CENTER
MOV DPX1,#100
MOV DPY0,#2
MOV DPY1,#20
MOV A,PROGPRTS
JNB ACC.0,PF482
LCALL FilRect
SJMP PF483
PF482: LCALL ClrRect
PF483: MOV DPX0,#2 ;REAR
MOV DPX1,#28
MOV DPY0,#130
MOV DPY1,#156
MOV A,PROGPRTS
JNB ACC.1,PF483K1
LCALL FilRect
SJMP PF484
PF483K1: LCALL ClrRect
PF484: MOV DPX0,#130 ;REAR
MOV DPX1,#156
MOV DPY0,#130
MOV DPY1,#156
MOV A,PROGPRTS
JNB ACC.1,PF484K1
LCALL FilRect
SJMP PF485
PF484K1: LCALL ClrRect
PF485: MOV DPX0,#2 ;MAIN
MOV DPX1,#28
MOV DPY0,#2
MOV DPY1,#28
MOV A,PROGPRTS
JNB ACC.2,PF485K1
LCALL FilRect
SJMP PF486
PF485K1: LCALL ClrRect
PF486: MOV DPX0,#130 ;MAIN
MOV DPX1,#156
MOV DPY0,#2
MOV DPY1,#28
MOV A,PROGPRTS
JNB ACC.2,PF486K1
LCALL FilRect
SJMP PF487
PF486K1: LCALL ClrRect
PF487: MOV DPX0,#132 ;SW
MOV DPX1,#154
MOV DPY0,#34
MOV DPY1,#62
MOV A,PROGPRTS
JNB ACC.3,PF488
LCALL FilRect
SJMP PF489
PF488: LCALL ClrRect
PF489: RET
;----------------------------------------------------------------
;SPEAKER 设置选择功能
;++
PF412: INC PROGPRTM
CLR C
MOV A,PROGPRTM
SUBB A,#05H
JC PF413
MOV PROGPRTM,#00H
PF413: LJMP PF403
;--
PF414: DEC PROGPRTM
MOV A,PROGPRTM
CLR C
SUBB A,#05H
JC PF415
MOV PROGPRTM,#04H
PF415: LJMP PF403
;SPEAKER
PF401: MOV PROGPRTM,#00H
LCALL PF471
MOV A,PROGPRTS
MOV C,ACC.0
RR A
ANL A,#01H
CPL ACC.0
CPL C
MOV ACC.1,C
MOV PROGPRTM,A
PF402: MOV A,#05H
LCALL DISPWIN ;显示一窗口
LCALL CLRWINBCK
PF402K1: LCALL PF481
PF403: MOV DPX0,#49
MOV DPX1,#110
MOV DPY0,#57
MOV DPY1,#156
LCALL ClrRect
MOV A,PROGPRTM
ADD A,#PF40FH-PF40B
MOVC A,@A+PC
PF40B: MOV DPY0,A
ADD A,#19
MOV DPY1,A
MOV DPX0,#49
MOV DPX1,#110
LCALL FilRect
LJMP WLEND
PF40FH: DB 57,77,97,117,137
;-------------------------------------------------------------
;设置DELAY TIME
;++
PF512: MOV A,PROGPRTM
CLR C
SUBB A,#02H
JC PF513
LJMP PF50E
PF513: JB HSBERRENB,PF513K
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
MOV A,#05H
ADD A,PROGPRTM
MOV R6,A
MOV R7,#0C0H
LCALL HSBMSGRET
JNZ PF513
PF513K: LJMP PF50D
;--
PF514: MOV A,PROGPRTM
CLR C
SUBB A,#02H
JC PF515
LJMP PF50E
PF515: JB HSBERRENB,PF513K
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
MOV A,#05H
ADD A,PROGPRTM
MOV R6,A
MOV R7,#80H
LCALL HSBMSGRET
JNZ PF515
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -