ui_slider.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 891 行 · 第 1/2 页

S01
891
字号
	PUSH	BC
	LD	C,61
	LD	DE,(file_name)
	LD	D,B
	CALL	LWRD ?0106
	POP	AF
; 150.	                    main_ResShowPic(FMNUM0+file_name[1]-0x30,106-22,80);  
	LD	C,80
	PUSH	BC
	LD	C,84
?0097:
	LD	DE,(file_name+1)
	JR	?0098
?0040:
; 151.	                }  
; 152.	            }      
; 153.	            else 
?0037:
; 154.	            {
; 155.	                main_ResShowPic(FMNUM0+file_name[0]-0x30,75-22,80);
	LD	C,80
	PUSH	BC
	LD	C,53
	LD	DE,(file_name)
	CALL	LWRD ?0107
	POP	AF
; 156.	                main_ResShowPic(FMNUM0+file_name[1]-0x30,98-22,80);
	LD	C,80
	PUSH	BC
	LD	C,76
	LD	DE,(file_name+1)
	CALL	LWRD ?0107
	POP	AF
; 157.	                main_ResShowPic(FMNUM0+file_name[2]-0x30,121-22,80);
	LD	C,80
	PUSH	BC
	LD	C,99
	LD	DE,(file_name+2)
?0098:
	CALL	LWRD ?0107
	POP	AF
?0041:
?0035:
; 158.	            }
; 159.	            need_draw = FALSE;
	LD	(IX-5),0
?0023:
; 160.	        }
; 161.	        
; 162.	        //handle message
; 163.	        key = ap_get_message();
	CALL	LWRD ?0108
; 164.	        switch( key)
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	15
	DEFB	3
	DEFB	4
	DEFB	5
	DEFB	6
	DEFB	30
	DEFB	33
	DEFB	35
	DEFB	36
	DEFB	37
	DEFB	38
	DEFB	48
	DEFB	67
	DEFB	68
	DEFB	69
	DEFB	70
	DEFW	?0060
	DEFW	?0049
	DEFW	?0052
	DEFW	?0049
	DEFW	?0052
	DEFW	?0100
	DEFW	?0055
	DEFW	?0055
	DEFW	?0055
	DEFW	?0055
	DEFW	?0100
	DEFW	?0057
	DEFW	?0043
	DEFW	?0046
	DEFW	?0043
	DEFW	?0046
?0043:
; 165.	        {
; 166.	        case AP_KEY_NEXT:
; 167.	        case AP_KEY_VOLADD:
; 168.	            if((slider->value + slider->step) <= slider->max)
	CALL	LWRD ?0109
	JR	C,?0045
?0044:
; 169.	            {
; 170.	                slider->value += slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	ADC	A,(IY+9)
	LD	(HL),A
; 171.	                value_changed = TRUE;
; 172.	                need_draw = TRUE;
	LD	(IX-6),1
	LD	(IX-5),1
?0045:
; 173.	            }
; 174.	            
; 175.	            break;
	JR	?0064
?0046:
; 176.	
; 177.	            
; 178.	        case AP_KEY_PREV:
; 179.	        case AP_KEY_VOLSUB:
; 180.	            if((slider->value - slider->step) >= slider->min)
	LD	C,(IY+2)
	LD	B,(IY+3)
	LD	E,(IY+8)
	LD	D,(IY+9)
	LD	L,(IY+6)
	LD	H,(IY+7)
	AND	A
	SBC	HL,DE
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0064
?0047:
; 181.	            {
; 182.	                slider->value -= slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	SUB	(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	SBC	A,(IY+9)
	LD	(HL),A
; 183.	                value_changed = TRUE;
; 184.	                need_draw = TRUE;
	LD	(IX-6),1
	LD	(IX-5),1
?0048:
; 185.	            }
; 186.	            
; 187.	            break;
	JR	?0064
?0049:
; 188.	
; 189.	        //hold 用来控制加速开关
; 190.	        case AP_KEY_NEXT | AP_KEY_HOLD:
; 191.	        case AP_KEY_VOLADD | AP_KEY_HOLD:
; 192.	            if(hold_state == 0) hold_state = 1;
	XOR	A
	OR	(IX-7)
	JR	NZ,?0064
?0050:
	LD	(IX-7),1
?0051:
; 193.	
; 194.	            break;
	JR	?0064
?0052:
; 195.	
; 196.	
; 197.	        case AP_KEY_PREV | AP_KEY_HOLD:
; 198.	        case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 199.	            if(hold_state == 0) hold_state = 2;
	XOR	A
	OR	(IX-7)
	JR	NZ,?0064
?0053:
	LD	(IX-7),2
?0054:
; 200.	            
; 201.	            break;
	JR	?0064
?0055:
; 202.	            
; 203.	
; 204.	        case AP_KEY_NEXT | AP_KEY_UP:
; 205.	        case AP_KEY_VOLADD | AP_KEY_UP:
; 206.	        case AP_KEY_PREV | AP_KEY_UP:
; 207.	        case AP_KEY_VOLSUB | AP_KEY_UP:
; 208.	            hold_state = 0;
	LD	(IX-7),0
; 209.	            
; 210.	            break;
	JR	?0064
?0056:
; 211.	            
; 212.	            
; 213.	        case AP_KEY_MODE | AP_KEY_UP:
; 214.	        case AP_KEY_PLAY | AP_KEY_UP:
; 215.	            return 0;        //ok and return
; 216.	
; 217.	            
; 218.	        case AP_MSG_WAIT_TIMEOUT:
?0057:
; 219.	            if(ui_auto_select) return 0;
	LD	A,(ui_auto_select)
	OR	A
	JR	Z,?0064
?0058:
	JR	?0100
; 220.	        
; 221.	            break;
?0059:
?0060:
; 222.	
; 223.	            
; 224.	        default:
; 225.	            key = ap_handle_hotkey(key);
	CALL	LWRD ap_handle_hotkey
	LD	(IX-8),A
; 226.	            if(key == RESULT_REDRAW) //need_draw = TRUE;
	CP	50
	JR	NZ,?0062
?0061:
; 227.	            {
; 228.	                //直接退出,因为控件不能重画背景
; 229.	                return 0;
?0100:
	LD	HL,0
; 230.	            }
	JR	?0090
?0062:
; 231.	            else if(key != 0) return key;
	XOR	A
	OR	(IX-8)
	JR	Z,?0064
?0063:
	LD	L,A
	LD	H,0
; 232.	        }
?0090:
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0064:
?0042:
; 233.	 
; 234.	
; 235.	        //check if holding
; 236.	        if(hold_state == 1)        //holding up
	LD	B,(IX-7)
	DEC	B
	JR	NZ,?0066
?0065:
; 237.	        {
; 238.	            if((slider->value + slider->step) <= slider->max)
	CALL	LWRD ?0109
	JR	C,?0068
?0067:
; 239.	            {
; 240.	                slider->value += slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	ADC	A,(IY+9)
	LD	(HL),A
; 241.	                value_changed = TRUE;
; 242.	                need_draw = TRUE;
	LD	(IX-6),1
	LD	(IX-5),1
?0070:
; 243.	 
; 244.	                while(key != NULL)
	XOR	A
	OR	(IX-8)
	JR	Z,?0074
?0071:
; 245.	                {
; 246.	                    if((key & AP_KEY_UP) != NULL)
	BIT	5,(IX-8)
	JR	Z,?0073
?0072:
; 247.	                        hold_state = 0;
	LD	(IX-7),0
?0073:
; 248.	                    key = ap_get_message();
	CALL	LWRD ?0108
; 249.	                }       
; 250.	            }
	JR	?0070
?0069:
; 251.	            else
?0068:
; 252.	            {
; 253.	                                hold_state = 0;    //disable holding
; 254.	                                slider->value=slider->max;
	LD	L,(IY+4)
	LD	H,(IY+5)
	LD	(IY+6),L
	LD	(IY+7),H
	LD	(IX-7),0
?0074:
	JR	?0085
?0066:
; 255.	            }
; 256.	        }
; 257.	        else if(hold_state == 2)    //holding down
	LD	B,(IX-7)
	DEC	B
	DEC	B
	JR	NZ,?0085
?0076:
; 258.	        {
; 259.	            if((slider->value - slider->step) >= slider->min)
	LD	C,(IY+2)
	LD	B,(IY+3)
	LD	E,(IY+8)
	LD	D,(IY+9)
	LD	L,(IY+6)
	LD	H,(IY+7)
	AND	A
	SBC	HL,DE
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0079
?0078:
; 260.	            {
; 261.	                slider->value -= slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	SUB	(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	SBC	A,(IY+9)
	LD	(HL),A
; 262.	                value_changed = TRUE;
; 263.	                need_draw = TRUE;
	LD	(IX-6),1
	LD	(IX-5),1
?0081:
; 264.	 
; 265.	                while(key != NULL)
	XOR	A
	OR	(IX-8)
	JR	Z,?0085
?0082:
; 266.	                { 
; 267.	                    if((key & AP_KEY_UP) != NULL)
	BIT	5,(IX-8)
	JR	Z,?0084
?0083:
; 268.	                        hold_state = 0; 
	LD	(IX-7),0
?0084:
; 269.	                    key = ap_get_message();
	CALL	LWRD ?0108
; 270.	                }
; 271.	            }
	JR	?0081
?0080:
; 272.	            else
?0079:
; 273.	                        {
; 274.	                                hold_state = 0;    //disable holding  
; 275.	                                slider->value=slider->min;
	LD	L,(IY+2)
	LD	H,(IY+3)
	LD	(IY+6),L
	LD	(IY+7),H
	LD	(IX-7),0
?0085:
?0077:
?0075:
; 276.	            }
; 277.	        }
; 278.	
; 279.	        //handle callback
; 280.	        if(callback != NULL && value_changed)
	LD	A,(IX+10)
	OR	(IX+11)
	OR	(IX+12)
	JR	Z,?0087
	XOR	A
	OR	(IX-6)
	JR	Z,?0087
?0089:
?0088:
?0086:
; 281.	        {
; 282.	            callback(slider->value);
	LD	E,(IY+6)
	LD	D,(IY+7)
	LD	A,(IX+12)
	LD	L,(IX+10)
	LD	H,(IX+11)
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 283.	            value_changed = FALSE;
	LD	(IX-6),0
?0087:
; 284.	        }
; 285.	        
; 286.	    }//while(1)
; 287.	}
	JP	LWRD ?0020
?0107:
	LD	D,0
?0106:
	LD	HL,90
	ADD	HL,DE
	EX	DE,HL
?0105:
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0108:
	CALL	LWRD ap_get_message
	LD	(IX-8),A
	RET
?0109:
	LD	L,(IY+8)
	LD	H,(IY+9)
	LD	C,(IY+6)
	LD	B,(IY+7)
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	L,(IY+4)
	LD	H,(IY+5)
	JP	LWRD ?SS_CMP_L02
; 288.	
; 289.	
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?