📄 bit1611b5_v023.asm
字号:
NOT
JB REPEAT_KEY, 7
REPEAT_KEY_MODE:
; if REPEAT KEY MODE (first Up or Down key)
MOV A, R[ RAM_VS_CNT ]
JB REPEAT_INTERVAL, 6 ; Jump if reach REPEAT INTERVAL (64 VS)
INC
MOV R[ RAM_VS_CNT ], A
HALT
REPEAT_INTERVAL:
MOV R[ RAM_VS_CNT ], 0 ; Disable REPEAT KEY MODE
REPEAT_KEY:
MOV A, R[ VP_0C2_KEY_STATUS ]
JB UP_030010, KEY_BIT_UP
JB DOWN_040010, KEY_BIT_DOWN
; =====================================
; OSD Auto Vanish !
OSD_AUTO:
MOV A, R[ RAM_OSD_VANISH_CNT ]
MOV B, OSD_AUTO_VANISH
COMP
JZ EXIT_010040 ; OSD Auto Vanish if Time Out !
INC
MOV R[ RAM_OSD_VANISH_CNT ], A
HALT
; ..............................................................................
; ------------------------------------------------------------------------------
; Interrupt Service Routine
; ISR 4: Timer 1
; ISR 5: Timer 2
; ------------------------------------------------------------------------------
ISR_4_TIMER0:
ISR_5_TIMER1:
HALT
; ..............................................................................
; ------------------------------------------------------------------------------
; Interrupt Service Routine
; ISR 6: IR
; ------------------------------------------------------------------------------
ISR_6_IR:
; Speed Up
CALL SPEEDUP
CLR
MOV R[ RAM_VS_CNT ], A ; Disable REPEAT KEY MODE
MOV R[ RAM_REMAINDER ], A
MOV R[ RAM_OSD_VANISH_CNT ], A
MOV A, R[ VP_0F7_IR_DATA ]
; MENU
MOV B, IR_MENU
COMP
JZ MENU_010010
; UP
MOV B, IR_UP
COMP
JZ UP_030000
; DOWN
MOV B, IR_DOWN
COMP
JZ DOWN_040000
; SELECT
MOV B, IR_SELECT
COMP
JZ SOURCE_050000
; POWER
MOV B, IR_POWER
COMP
JZ TCON_070000
JMP HALT_090010
; ..............................................................................
; ------------------------------------------------------------------------------
; Interrupt Service Routine
; ISR 7: Key In
; ------------------------------------------------------------------------------
ISR_7_KEYIN:
; Speed Up
CALL SPEEDUP
CLR
MOV R[ RAM_VS_CNT ], A ; Disable REPEAT KEY MODE
MOV R[ RAM_REMAINDER ], A
MOV R[ RAM_OSD_VANISH_CNT ], A
MOV A, R[ VP_0C1_KEY_ACK ]
JB MENU_010000, KEY_BIT_MENU
JB UP_030000, KEY_BIT_UP ; Enable VS Int.
JB DOWN_040000, KEY_BIT_DOWN ; Enable VS Int.
JB SOURCE_050000, KEY_BIT_SELECT
JB TCON_070000, KEY_BIT_POWER
JMP HALT_090010
; Setup DEFAULT values if invalid KEY
DEFAULT_000050:
; Display Title
; Normalize RESET item
FILL R[ VP_ATTR_OSD2_ROW5 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; To set EEPROM to Read/Write mode
MOV R[ VP_009_GPO_TYPE ], BL_ON_WP_OFF
; Default BRIGTNESS
MOV A, E[ DEFAULT_BRIGHTNESS ]
MOV R[ RAM_BRIGHTNESS ], A
MOV E[ USER_BRIGHTNESS ], A
MOV B, 080h
XOR
MOV R[ VP_106_DVP_BRIGHTNESS ], A
; Default CONTRAST
MOV A, E[ DEFAULT_CONTRAST ]
MOV R[ RAM_CONTRAST ], A
MOV E[ USER_CONTRAST ], A
MOV R[ VP_107_DVP_CONTRAST ], A
; Default HUE
MOV A, E[ DEFAULT_HUE ]
MOV R[ RAM_HUE ], A
MOV E[ USER_HUE ], A
MOV B, HUE_OFFSET
SUB
MOV R[ VP_10A_DVP_HUE ], A
; Default SATURATION
MOV A, E[ DEFAULT_SATURATION ]
MOV R[ RAM_SATURATION ], A
MOV E[ USER_SATURATION ], A
MOV R[ VP_109_DVP_SATURATION ], A
; Default Video Source
MOV A, E[ DEFAULT_SOURCE ]
MOV R[ RAM_SOURCE ], A
MOV E[ USER_SOURCE ], A
CALL SVS_SetupVideoSource
; To set EEPROM to Read Only mode
MOV R[ VP_009_GPO_TYPE ], BL_ON_WP_ON
; Default Menu Cursor
MOV R[ RAM_MENU_CURSOR ], MENU_ID_STANDBY
MOV R[ VP_15F_OSD3_ATTR4 ], OSD_OFF ; Disable OSD Window3
FILL R[ VP_SHOW_OSD3 ], FONT_20_BLANK, OSD3_AREA_1
; Speed down
CALL SPEEDDOWN
MOV R[ VP_151_OSD2_ATTR4 ], OSD_OFF
MOV R[ VP_004_INT_ACK ], INT_ACK_VS_OFF ; Disable VS interrupt
JMP HALT_090010 ; HALT
; ..............................................................................
; ------------------------------------------------------------------------------
; MENU -
; ------------------------------------------------------------------------------
MENU_010000:
JB PWM_060000, KEY_BIT_PWM ; Jump if PWM (MENU + UP) for Keypad ONLY
MENU_010010:
MOV R[ VP_00B_SRST_ATTR1 ], OSD_CLK_ON
MOV A, R[ RAM_SYSTEM_STATE ]
JB HALT_090010, STATE_BIT_PWM ; Exit if the PWM fuction is running
MOV R[ VP_0FC_IR_ATTR2 ], IR_REPEAT_OFF
MOV A, R[ RAM_MENU_CURSOR ]
SHL ; Move to next Menu Item
MOV R[ RAM_MENU_CURSOR ], A ; Check Menu Cursor
JB BRIGHTNESS_011000, MENU_BIT_BRIGHTNESS
JB CONTRAST_012000, MENU_BIT_CONTRAST
JB SATURATION_013000, MENU_BIT_SATURATION
JB HUE_014000, MENU_BIT_HUE
JB MODE_015000, MENU_BIT_MODE
JB RESET_016000, MENU_BIT_RESET
JB EXIT_017000, MENU_BIT_EXIT
ITEM_RETURN:
MOV R[ RAM_MENU_CURSOR ], MENU_ID_BRIGHTNESS
JMP BRIGHTNESS_011000
; Exit OSD and Backup BCHS values if it's invalid keys
EXIT_010040:
MOV R[ VP_0FC_IR_ATTR2 ], IR_REPEAT_OFF
MOV R[ VP_143_OSD1_ATTR4 ], OSD_OFF ; Disable OSD 1
MOV R[ VP_151_OSD2_ATTR4 ], OSD_OFF ; Disable OSD 2
MOV R[ VP_15F_OSD3_ATTR4 ], OSD_OFF ; Disable OSD 3
MOV R[ RAM_SYSTEM_STATE ], STATE_NORMAL
FILL R[ VP_ATTR_OSD2 ], OSD2_NM_ATTR, OSD2_AREA_1
FILL R[ VP_SHOW_OSD3 ], FONT_20_BLANK, OSD3_AREA_1
; To set EEPROM to Read/Write mode
MOV R[ VP_009_GPO_TYPE ], BL_ON_WP_OFF
; Backup BCHS values in RAM into EEPROM !
MOV A, R[ RAM_BRIGHTNESS ] ; Backup Brightness
MOV E[ USER_BRIGHTNESS ], A
MOV A, R[ RAM_CONTRAST ] ; Backup Contrast
MOV E[ USER_CONTRAST ], A
MOV A, R[ RAM_SATURATION ] ; Backup Saturation
MOV E[ USER_SATURATION ], A
MOV A, R[ RAM_HUE ] ; Backup HUE
MOV E[ USER_HUE ], A
; To set EEPROM to Read Only mode
MOV R[ VP_009_GPO_TYPE ], BL_ON_WP_ON
MOV R[ RAM_MENU_CURSOR ], MENU_ID_STANDBY
MOV R[ VP_004_INT_ACK ], INT_ACK_VS_OFF ; Disable VS interrupt
; Speed Down
CALL SPEEDDOWN
; OSD Clock OFF for Power saving !
MOV R[ VP_00B_SRST_ATTR1 ], OSD_CLK_OFF
JMP HALT_090010 ; HALT
; =====================================
; BRIGHTNESS
BRIGHTNESS_011000:
MOV R[ RAM_OSD_OFFSET ], BRIGHTNESS_MIN ; For porgress bar offset
; Normalize previous item
FILL R[ VP_ATTR_OSD2_ROW6 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; Highlight current item
FILL R[ VP_ATTR_OSD2_ROW0 ], OSD2_HL_ATTR, OSD2_WIDTH_1
MOV A, R[ RAM_BRIGHTNESS ]
JMP MENU_DISPLAY_BAR
; =====================================
; CONTRAST
CONTRAST_012000:
MOV R[ RAM_OSD_OFFSET ], CONTRAST_MIN
; Normalize previous item
FILL R[ VP_ATTR_OSD2_ROW0 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; Highlight current item
FILL R[ VP_ATTR_OSD2_ROW1 ], OSD2_HL_ATTR, OSD2_WIDTH_1
MOV A, R[ RAM_CONTRAST ]
JMP MENU_DISPLAY_BAR
; =====================================
; SATURATION
SATURATION_013000:
MOV R[ RAM_OSD_OFFSET ], SATURATION_MIN
; Normalize previous item
FILL R[ VP_ATTR_OSD2_ROW1 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; Highlight current item
FILL R[ VP_ATTR_OSD2_ROW2 ], OSD2_HL_ATTR, OSD2_WIDTH_1
MOV A, R[ RAM_SATURATION ]
JMP MENU_DISPLAY_BAR
; =====================================
; HUE
HUE_014000:
MOV R[ RAM_OSD_OFFSET ], HUE_MIN
; Normalize previous item
FILL R[ VP_ATTR_OSD2_ROW2 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; Highlight current item
FILL R[ VP_ATTR_OSD2_ROW3 ], OSD2_HL_ATTR, OSD2_WIDTH_1
MOV A, R[ RAM_HUE ]
MENU_DISPLAY_BAR:
CALL DPB_DspProgressBar
CALL SNLZ_ShowNumber0_63
JMP HALT_090000 ; Enable OSD and HALT
; =====================================
; MODE
MODE_015000:
; Normalize previous item
FILL R[ VP_ATTR_OSD2_ROW3 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; Highlight current item
FILL R[ VP_ATTR_OSD2_ROW4 ], OSD2_HL_ATTR, OSD2_WIDTH_1
CALL SMC_ShowModeCue
JMP HALT_090000 ; Enable OSD and HALT
; =====================================
; RESET
RESET_016000:
; Normalize previous item
FILL R[ VP_ATTR_OSD2_ROW4 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; Highlight current item
FILL R[ VP_ATTR_OSD2_ROW5 ], OSD2_HL_ATTR, OSD2_WIDTH_1
MOV R[ VP_15F_OSD3_ATTR4 ], OSD_OFF ; Disable OSD
JMP HALT_090010
; =====================================
; EXIT
EXIT_017000:
; Normalize previous item
FILL R[ VP_ATTR_OSD2_ROW5 ], OSD2_NM_ATTR, OSD2_WIDTH_1
; Highlight current item
FILL R[ VP_ATTR_OSD2_ROW6 ], OSD2_HL_ATTR, OSD2_WIDTH_1
MOV R[ VP_15F_OSD3_ATTR4 ], OSD_OFF ; Disable OSD
JMP HALT_090010
; ..............................................................................
; ------------------------------------------------------------------------------
; UP -
; ------------------------------------------------------------------------------
UP_030000:
MOV R[ VP_004_INT_ACK ], INT_ACK_VS_ON ; Enable VS interrupt
MOV R[ RAM_VS_CNT ], 080h ; Enable REPEAT KEY MODE
UP_030010:
MOV A, R[ RAM_SYSTEM_STATE ]
JB UP_039010_PWM, STATE_BIT_PWM ; Jump if PWM mode
MOV A, R[ RAM_MENU_CURSOR ] ; Menu Cursor
JB UP_031010_BRIGHTNESS, MENU_BIT_BRIGHTNESS
JB UP_032010_CONTRAST, MENU_BIT_CONTRAST
JB UP_033010_SATURATION, MENU_BIT_SATURATION
JB UP_034010_HUE, MENU_BIT_HUE
JB UP_035010_MODE, MENU_BIT_MODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -