⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_slider.s01

📁 5807收音机模块用于炬力平台
💻 S01
📖 第 1 页 / 共 2 页
字号:
	JR	?0066
	ADC	A,0
	JR	?0072
	JR	?0062
?0024:
; 126.	            }
; 127.	            else if(value >= 10)
	LD	C,10
	LD	L,(IX-28)
	LD	H,(IX-27)
	AND	A
	SBC	HL,BC
	LD	C,(IX-30)
	LD	B,(IX-29)
	LD	E,(IX-28)
	JR	C,?0027
?0026:
; 128.	            {
; 129.	                itoa_2(value, p);
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 130.	                p += 2;
	LD	HL,0
	ADD	HL,SP
	LD	A,(HL)
	ADD	A,2
?0070:
	LD	(HL),A
	INC	HL
?0066:
	LD	A,(HL)
	ADC	A,0
?0072:
	LD	(HL),A
; 131.	            }
; 132.	            else
	JR	?0062
?0027:
; 133.	            {
; 134.	                itoa_1(value, p);
	LD	A,BYTE3 itoa_1
	LD	HL,LWRD itoa_1
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 135.	                p++;
	INC	(IX-30)
	JR	NZ,?0062
	INC	(IX-29)
?0062:
?0028:
?0025:
?0022:
; 136.	            }
; 137.	            *p++ = '>';
	LD	L,(IX-30)
	LD	H,(IX-29)
	LD	(HL),62
; 138.	            *p++ = '>';
	INC	HL
	INC	HL
	LD	(IX-30),L
	LD	(IX-29),H
	DEC	HL
	LD	(HL),62
; 139.	            *p = 0;
	LD	L,(IX-30)
	LD	H,(IX-29)
	LD	(HL),0
; 140.	            
; 141.	            //show text <-xxxx>    
; 142.	            SetTextPos((SCR_WIDTH - (BYTE)get_text_width(buf)) / 2, 8);
	LD	C,8
	PUSH	BC
	LD	HL,22
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 get_text_width
	LD	HL,LWRD get_text_width
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	E,L
	LD	D,0
	LD	HL,128
	AND	A
	SBC	HL,DE
	EX	DE,HL
	LD	BC,2
	CALL	LWRD ?SS_DIV_L02
	POP	BC
	CALL	LWRD SetTextPos
; 143.	            ClearScreen(&num_region);
	LD	HL,6
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD ClearScreen
; 144.	            PutS(buf, -1);
	LD	C,255
	LD	HL,20
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD PutS
; 145.	            if(ui_auto_update) UpdateScreen(&num_region);
	LD	A,(ui_auto_update)
	OR	A
	JR	Z,?0030
?0029:
	LD	HL,6
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD UpdateScreen
?0030:
; 146.	
; 147.	            //check if auto_update
; 148.	            if(!ui_auto_update) UpdateScreen(NULL);
	LD	A,(ui_auto_update)
	OR	A
	JR	NZ,?0032
?0031:
	LD	E,A
	LD	D,A
	CALL	LWRD UpdateScreen
?0032:
; 149.	
; 150.	            need_draw = FALSE; 
	LD	(IX-12),0
?0013:
; 151.	             
; 152.	        }//need draw
; 153.	            
; 154.	        //handle message
; 155.	        key = ap_get_message();
	CALL	LWRD ap_get_message
; 156.	        switch( key)
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	11
	DEFB	3
	DEFB	4
	DEFB	5
	DEFB	6
	DEFB	30
	DEFB	33
	DEFB	39
	DEFB	67
	DEFB	68
	DEFB	69
	DEFB	70
	DEFW	?0050
	DEFW	?0034
	DEFW	?0040
	DEFW	?0034
	DEFW	?0040
	DEFW	?0069
	DEFW	?0069
	DEFW	?0047
	DEFW	?0034
	DEFW	?0040
	DEFW	?0034
	DEFW	?0040
?0034:
; 157.	        {
; 158.	        case AP_KEY_NEXT:
; 159.	        case AP_KEY_VOLADD:
; 160.	       case AP_KEY_NEXT | AP_KEY_HOLD:
; 161.	        case AP_KEY_VOLADD | AP_KEY_HOLD:
; 162.	            if((slider->value + slider->step) <= slider->max)
	LD	L,(IY+6)
	LD	H,(IY+7)
	LD	C,(IY+4)
	LD	B,(IY+5)
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	L,(IY+2)
	LD	H,(IY+3)
	OR	128
	SBC	HL,BC
	JP	PO,?0063
	XOR	H
?0063:
	JP	M,?0036
?0035:
; 163.	            {
; 164.	                slider->value += slider->step;
	LD	HL,4
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,(IY+6)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	ADC	A,(IY+7)
	LD	(HL),A
; 165.	                value_changed = TRUE;
; 166.	                need_draw = TRUE;
	LD	(IX-13),1
	LD	(IX-12),1
?0036:
?0038:
; 167.	            }
; 168.	            while(ap_get_message() != NULL);  /*clear message pool */
	CALL	LWRD ap_get_message
	OR	A
	JR	Z,?0054
?0039:
; 169.	            break;
	JR	?0036
?0037:
	JR	?0054
?0040:
; 170.	
; 171.	            
; 172.	        case AP_KEY_PREV:
; 173.	        case AP_KEY_VOLSUB:
; 174.	        case AP_KEY_PREV | AP_KEY_HOLD:
; 175.	        case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 176.	            if((slider->value - slider->step) >= slider->min)
	LD	C,(IY+0)
	LD	B,(IY+1)
	LD	E,(IY+6)
	LD	D,(IY+7)
	LD	L,(IY+4)
	LD	H,(IY+5)
	AND	A
	SBC	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0064
	XOR	H
?0064:
	JP	M,?0042
?0041:
; 177.	            {
; 178.	                slider->value -= slider->step;
	LD	HL,4
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	SUB	(IY+6)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	SBC	A,(IY+7)
	LD	(HL),A
; 179.	                value_changed = TRUE;
; 180.	                need_draw = TRUE;
	LD	(IX-13),1
	LD	(IX-12),1
?0042:
?0044:
; 181.	            }
; 182.	            while(ap_get_message() != NULL);  /*clear message pool */
	CALL	LWRD ap_get_message
	OR	A
	JR	Z,?0054
?0045:
; 183.	            break;
	JR	?0042
?0043:
	JR	?0054
?0046:
; 184.	
; 185.	//        //hold 用来控制加速开关
; 186.	//        case AP_KEY_NEXT | AP_KEY_HOLD:
; 187.	//        case AP_KEY_VOLADD | AP_KEY_HOLD:
; 188.	//            if(hold_state == 0) hold_state = 1;
; 189.	//
; 190.	//            break;
; 191.	
; 192.	//
; 193.	//        case AP_KEY_PREV | AP_KEY_HOLD:
; 194.	//        case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 195.	//            if(hold_state == 0) hold_state = 2;
; 196.	//            
; 197.	//            break;
; 198.	//            
; 199.	
; 200.	//        case AP_KEY_NEXT | AP_KEY_UP:
; 201.	//        case AP_KEY_VOLADD | AP_KEY_UP:
; 202.	//        case AP_KEY_PREV | AP_KEY_UP:
; 203.	//        case AP_KEY_VOLSUB | AP_KEY_UP:
; 204.	//            hold_state = 0;
; 205.	//            
; 206.	//            break;
; 207.	            
; 208.	            
; 209.	        case AP_KEY_MODE | AP_KEY_UP:
; 210.	        case AP_KEY_PLAY | AP_KEY_UP:
; 211.	            return 0;        //ok and return
	JR	?0069
; 212.	
; 213.	            
; 214.	        case AP_MSG_WAIT_TIMEOUT:
	JR	?0059
?0047:
; 215.	            if(ui_auto_select) return 0;
	LD	A,(ui_auto_select)
	OR	A
	JR	Z,?0054
?0048:
	JR	?0069
; 216.	        
; 217.	            break;
	JR	?0059
?0049:
	JR	?0054
?0050:
; 218.	
; 219.	            
; 220.	        default:
; 221.	            key = ap_handle_hotkey(key);
	CALL	LWRD ap_handle_hotkey
	LD	(IX-14),A
; 222.	            if(key == RESULT_REDRAW) //need_draw = TRUE;
	CP	46
	JR	NZ,?0052
?0051:
; 223.	            {
; 224.	                //直接退出,因为控件不能重画背景
; 225.	                return 0;
?0069:
	LD	HL,0
; 226.	            }
	JR	?0059
?0052:
; 227.	            else if(key != 0) return key;
	XOR	A
	OR	(IX-14)
	JR	Z,?0054
?0053:
	LD	L,A
	LD	H,0
; 228.	        }
?0059:
	LD	SP,IX
	POP	IX
	POP	IY
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0054:
?0033:
; 229.	        //ASSERT(slider->value <= slider->max);
; 230.	        //ASSERT(slider->value >= slider->min);
; 231.	//
; 232.	//        //check if holding
; 233.	//        if(hold_state == 1)        //holding up
; 234.	//        {
; 235.	//            if((slider->value + slider->step) <= slider->max)
; 236.	//            {
; 237.	//                slider->value += slider->step;
; 238.	//                value_changed = TRUE;
; 239.	//                need_draw = TRUE;
; 240.	// 
; 241.	//                while(key != NULL)
; 242.	//                {
; 243.	//                    if((key & AP_KEY_UP) != NULL)
; 244.	//                        hold_state = 0;
; 245.	//                    key = ap_get_message();
; 246.	//                }       
; 247.	//            }
; 248.	//            else
; 249.	//            {
; 250.	//                              hold_state = 0;    //disable holding
; 251.	//                              slider->value=slider->max;
; 252.	//            }
; 253.	//        }
; 254.	//        else if(hold_state == 2)    //holding down
; 255.	//        {
; 256.	//            if((slider->value - slider->step) >= slider->min)
; 257.	//            {
; 258.	//                slider->value -= slider->step;
; 259.	//                value_changed = TRUE;
; 260.	//                need_draw = TRUE;
; 261.	// 
; 262.	//                while(key != NULL)
; 263.	//                { 
; 264.	//                    if((key & AP_KEY_UP) != NULL)
; 265.	//                        hold_state = 0; 
; 266.	//                    key = ap_get_message();
; 267.	//                }
; 268.	//            }
; 269.	//            else
; 270.	//                      {
; 271.	//                              hold_state = 0;    //disable holding  
; 272.	//                              slider->value=slider->min;
; 273.	//            }
; 274.	//        }
; 275.	        //handle callback
; 276.	        if(callback != NULL && value_changed)
	LD	A,(IX+10)
	OR	(IX+11)
	OR	(IX+12)
	JP	Z,?0010
	XOR	A
	OR	(IX-13)
	JP	Z,?0010
?0058:
?0057:
?0055:
; 277.	        {
; 278.	            callback(slider->value);
	LD	E,(IY+4)
	LD	D,(IY+5)
	LD	A,(IX+12)
	LD	L,(IX+10)
	LD	H,(IX+11)
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 279.	            value_changed = FALSE;
	LD	(IX-13),0
?0056:
; 280.	        }
; 281.	        
; 282.	    }//while(1)
; 283.	    //return 0;
; 284.	}
	JP	LWRD ?0010
; 285.	
; 286.	
	RSEG	CONST
?0007:
	DEFB	0
	DEFB	16
	DEFB	128
	DEFB	16
?0008:
	DEFB	','
	DEFB	8
	DEFB	'('
	DEFB	8
	END

⌨️ 快捷键说明

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