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

📄 ui_directory_scroll.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	CALL	LWRD ?0128
	POP	HL
	POP	HL
; 185.	                            ScrollFlag = 0;                   
	XOR	A
	LD	(ScrollFlag),A
; 186.	                            ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
	LD	L,(IX-22)
	PUSH	HL
	LD	L,(IX+8)
	PUSH	HL
	LD	HL,(list_active)
	PUSH	HL
?0116:
	PUSH	HL
	CALL	LWRD ?0126
	POP	HL
	POP	HL
	POP	HL
	POP	HL
?0050:
?0054:
; 187.	                    }              
; 188.	              while(ap_get_message() != 0);
	CALL	LWRD ap_get_message
	OR	A
	JP	Z,?0025
?0055:
; 189.	                break;
	JR	?0050
?0053:
?0056:
; 190.	
; 191.	            case AP_KEY_PLAY | AP_KEY_UP:
; 192.	                    fselSetLocationC(location);
; 193.	                return RESULT_IGNORE; 
; 194.	            break;
?0057:
; 195.	
; 196.	            case AP_KEY_MODE | AP_KEY_LONG:       
; 197.	                    key = RESULT_NULL; 
	LD	(IX-21),0
?0058:
; 198.	LongTime:
; 199.	                    output8(0x4e,input8(0x4e) | 0x08);
; 200.	                    TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine)); 
	CALL	LWRD ?0131
; 201.	                    fselDirLayer=temp_record.dirlayer;        //目录层次 0--根目录
; 202.	                    fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer];                //目录序号
	PUSH	BC
	LD	B,0
	LD	HL,fselDirNo
	ADD	HL,BC
	POP	BC
	LD	(HL),B
; 203.	                    fselFileNo=temp_record.fileno;        //文件序号
	LD	HL,(temp_record+9)
	LD	(fselFileNo),HL
; 204.	                    fselExtNo=temp_record.fselExtNo;
	LD	A,(temp_record+12)
	LD	(fselExtNo),A
; 205.	                    
; 206.	                    if(temp_record.name[0] == '\\')    //当前所处子目录首,需要返回父目录
	LD	A,(temp_record+13)
	CP	92
	JR	NZ,?0060
?0059:
; 207.	                    {    
; 208.	                                if(fselDirLayer==0)
	LD	A,(fselDirLayer)
	OR	A
	JR	NZ,?0073
?0061:
; 209.	                                    fselDirNo[fselDirLayer] = 0;
	JR	?0119
; 210.	                                else                    
?0062:
; 211.	                                    fselDirLayer--;
?0063:
; 212.	                    }
; 213.	                    else    //当前所处可能是子目录或文件,需要分别处理
?0060:
; 214.	                    {
; 215.	                        if(temp_record.filetype==TYPE_DIR)
	LD	A,(temp_record)
	OR	A
	LD	A,(fselDirLayer)
	JR	NZ,?0066
?0065:
; 216.	                        {
; 217.	                                if (fselDirLayer <= 7)         
	LD	B,A
	LD	A,7
	CP	B
	JR	C,?0074
?0067:
; 218.	                                {
; 219.	                                       if(fselEntCurrentDir(temp_record.name))
	LD	DE,temp_record+13
	LD	A,BYTE3 fselEntCurrentDir
	LD	HL,LWRD fselEntCurrentDir
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JR	Z,?0074
?0069:
; 220.	                                           fselDirLayer--; 
	JR	?0073
?0070:
?0068:
; 221.	                                }                    
; 222.	                        }
; 223.	                        else
?0066:
; 224.	                        {
; 225.	                                if(fselDirLayer==0)
	OR	A
	JR	NZ,?0073
?0072:
; 226.	                                    fselDirNo[fselDirLayer] = 0;
?0119:
	LD	C,A
	LD	B,C
	LD	HL,fselDirNo
	ADD	HL,BC
	LD	(HL),B
; 227.	                                else                    
	JR	?0074
?0073:
; 228.	                                    fselDirLayer--;
	LD	HL,fselDirLayer
	DEC	(HL)
?0074:
?0071:
?0064:
; 229.	                        }
; 230.	                    }
; 231.	                   fselGetLocation(location);    //更新location         
	LD	E,(IX-4)
	LD	D,(IX-3)
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 232.	                      return key;   
	LD	L,(IX-21)
	LD	H,0
; 233.	            case AP_KEY_MODE | AP_KEY_UP:
	JP	LWRD ?0110
?0075:
; 234.	                    output8(0x4e,input8(0x4e) | 0x08);
; 235.	                    TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine)); 
	CALL	LWRD ?0131
; 236.	                    fselDirLayer=temp_record.dirlayer;        //目录层次 0--根目录
; 237.	                    fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer];                //目录序号
	PUSH	BC
	LD	B,0
	LD	HL,fselDirNo
	ADD	HL,BC
	POP	BC
	LD	(HL),B
; 238.	                    fselFileNo=temp_record.fileno;        //文件序号
	LD	HL,(temp_record+9)
	LD	(fselFileNo),HL
; 239.	                    fselExtNo=temp_record.fselExtNo;
	LD	A,(temp_record+12)
	LD	(fselExtNo),A
; 240.	                    
; 241.	                    if(temp_record.name[0] == '\\')    //当前所处子目录首,需要返回父目录
	LD	A,(temp_record+13)
	CP	92
	JR	NZ,?0077
?0076:
; 242.	                    {    
; 243.	                            if (fselRetParentDir(Strname))
	LD	HL,8
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 fselRetParentDir
	LD	HL,LWRD fselRetParentDir
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JP	Z,?0092
?0078:
; 244.	                            {
; 245.	                                memcpy(temp_record.name,Strname, 11);
	LD	BC,11
	LD	DE,temp_record+13
	LD	HL,8
	ADD	HL,SP
	LDIR
; 246.	                                
; 247.	                                init_dir_buf(); 
	LD	A,BYTE3 init_dir_buf
	LD	HL,LWRD init_dir_buf
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 248.	                                list_active=GetActiveDirFrom(temp_record.dirno[fselDirLayer]);
	LD	HL,temp_record+1
	LD	BC,(fselDirLayer)
	LD	B,0
	ADD	HL,BC
	LD	E,(HL)
	LD	D,B
	LD	A,BYTE3 GetActiveDirFrom
	LD	HL,LWRD GetActiveDirFrom
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(list_active),HL
; 249.	                                cur_group=list_active/GroupDefine;                   
	LD	C,6
	CALL	LWRD ?0130
; 250.	                                top=(list_active/GroupDefine)*GroupDefine; ; //顶的序号
; 251.	                                bottom=top+GroupDefine-1;                  //底的序号
; 252.	                                if(bottom>(list_total_num-1)) 
	LD	HL,65535
	LD	BC,(list_total_num)
	ADD	HL,BC
	PUSH	IY
	POP	BC
	AND	A
	SBC	HL,BC
	JR	NC,?0092
?0080:
; 253.	                                bottom=list_total_num-1;
	JR	?0123
?0081:
; 254.	                            
; 255.	                            }
; 256.	                            else
?0079:
?0082:
; 257.	                            {
; 258.	                            }                
; 259.	                    }
; 260.	                    else    //当前所处可能是子目录或文件,需要分别处理
?0077:
; 261.	                    {
; 262.	                        if(temp_record.filetype==TYPE_DIR)
	LD	A,(temp_record)
	OR	A
	LD	A,(fselDirLayer)
	JR	NZ,?0085
?0084:
; 263.	                        {
; 264.	                                if (fselDirLayer >= 7)         //需实验看看是7还是8?
	CP	7
	JP	NC,?0025
?0086:
; 265.	                                {
; 266.	                                    break;            
?0087:
; 267.	                                }
; 268.	                                if (fselDirNo[fselDirLayer] > 0) 
	LD	C,A
	LD	B,0
	LD	HL,fselDirNo
	ADD	HL,BC
	LD	A,(HL)
	OR	A
	JR	Z,?0092
?0088:
; 269.	                                {
; 270.	                                        fselEntCurrentDir(temp_record.name);
	LD	DE,temp_record+13
	LD	A,BYTE3 fselEntCurrentDir
	LD	HL,LWRD fselEntCurrentDir
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 271.	                                    
; 272.	                                init_dir_buf();   
	LD	A,BYTE3 init_dir_buf
	LD	HL,LWRD init_dir_buf
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 273.	                                list_active=0; 
	LD	L,B
	LD	H,B
	LD	(list_active),HL
; 274.	                                cur_group=0;
	LD	(cur_group),HL
; 275.	                                top=0; //顶的序号
; 276.	                                bottom=top+GroupDefine-1;                  //底的序号
	LD	IY,5
; 277.	                                if(bottom>(list_total_num-1)) 
	XOR	A
	LD	(IX-24),A
	LD	(IX-23),A
	DEC	HL
	LD	BC,(list_total_num)
	ADD	HL,BC
	PUSH	IY
	POP	BC
	AND	A
	SBC	HL,BC
	JR	NC,?0092
?0090:
; 278.	                                        bottom=list_total_num-1;
?0123:
	LD	HL,65535
	LD	BC,(list_total_num)
	ADD	HL,BC
	PUSH	HL
	POP	IY
?0091:
?0089:
; 279.	                            }
; 280.	                        }
; 281.	                        else
	JR	?0092
?0085:
; 282.	                        {
; 283.	                                if(fselDirLayer==0)
	OR	A
	JR	NZ,?0094
?0093:
; 284.	                                    fselDirNo[fselDirLayer] = 0;
	LD	C,A
	LD	B,C
	LD	HL,fselDirNo
	ADD	HL,BC
	LD	(HL),B
; 285.	                                else                    
	JR	?0095
?0094:
; 286.	                                    fselDirLayer--;
	LD	HL,fselDirLayer
	DEC	(HL)
?0095:
; 287.	                                
; 288.	                                fselGetLocation(location);    //更新location
	LD	E,(IX-4)
	LD	D,(IX-3)
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 289.	                                return RESULT_NULL;
	JR	?0113
; 290.	                            }
?0092:
?0083:
; 291.	                    }
; 292.	                    DecodeOnePage(top,bottom,type,string_id); 
	LD	L,(IX+8)
	PUSH	HL
	LD	L,(IX-2)
	PUSH	HL
	CALL	LWRD ?0128
	POP	HL
	POP	HL
; 293.	                    ScrollFlag = 0;   
	XOR	A
	LD	(ScrollFlag),A
; 294.	                    ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
	JR	?0120
; 295.	                break;
?0096:
; 296.	
; 297.	            case AP_MSG_WAIT_TIMEOUT:
; 298.	                count++;
	INC	(IX-19)
; 299.	                if(count%8==0)
	LD	A,(IX-19)
	AND	7
	JP	NZ,?0025
?0097:
; 300.	                {
; 301.	                    fselSetLocationC(location);
?0114:
	LD	E,(IX-4)
	LD	D,(IX-3)
	LD	A,BYTE3 fselSetLocationC
	LD	HL,LWRD fselSetLocationC
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 302.	                    return RESULT_IGNORE; 
	LD	HL,52
; 303.	                }
	JR	?0110
?0098:
; 304.	                break;
?0099:
; 305.	            
; 306.	            case AP_MSG_SD_OUT:
; 307.	                //如在游览SD卡,但SD卡又被拔出,就返回拔出信号
; 308.	                if (location->disk == 'H')
	LD	L,(IX-4)
	LD	H,(IX-3)
	LD	A,(HL)
	CP	72
	JP	NZ,?0025
?0100:
; 309.	                {
; 310.	                    return RESULT_SD_OUT;
	LD	HL,54
; 311.	                }
	JR	?0110
?0101:
; 312.	            break;
?0102:
; 313.	            
; 314.	            case AP_MSG_SD_IN:
; 315.	            break;
?0103:
; 316.	            
; 317.	            default: 
; 318.	                key=ap_handle_hotkey(key);
	CALL	LWRD ap_handle_hotkey
	LD	(IX-21),A
; 319.	                if(key == RESULT_REDRAW)
	CP	50
	JR	NZ,?0105
?0104:
; 320.	                {    
; 321.	                   return 0;            //界面不能重画直接返回
?0113:
	LD	HL,0
; 322.	                }
?0110:
	LD	SP,IX
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0105:
; 323.	                else if(key != 0)
	XOR	A
	OR	(IX-21)
	JP	NZ,?0058
?0106:
; 324.	                {      
; 325.	                    goto  LongTime;
?0107:
; 326.	                }
; 327.	                if(ScrollFlag)
	LD	A,(ScrollFlag)
	OR	A
	JP	Z,?0025
?0108:
; 328.	                  ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag); 
?0120:
	LD	L,(IX-22)
	PUSH	HL
	LD	L,(IX+8)
	PUSH	HL
	LD	HL,(list_active)
	PUSH	HL
	PUSH	HL
	CALL	LWRD ?0126
	POP	HL
	POP	HL
	POP	HL
	POP	HL
?0109:
; 329.	                break;    
?0027:
; 330.	        } //switch() end
; 331.	    }//while(1) end           
; 332.	}
	JP	LWRD ?0025
?0126:
	PUSH	IY
	POP	BC
	LD	E,(IX-24)
	LD	D,(IX-23)
	LD	A,BYTE3 ShowDirectory
	LD	HL,LWRD ShowDirectory
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0128:
	PUSH	IY
	POP	BC
	LD	E,(IX-24)
	LD	D,(IX-23)
?0127:
	LD	A,BYTE3 DecodeOnePage
	LD	HL,LWRD DecodeOnePage
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0129:
	LD	BC,(cur_group)
	ADD	HL,BC
	LD	(cur_group),HL
	LD	BC,6
	LD	DE,(list_active)
	CALL	LWRD ?US_DIV_L02
	EX	DE,HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,BC
	LD	(IX-24),L
	LD	(IX-23),H
	LD	BC,5
	ADD	HL,BC
	PUSH	HL
	POP	IY
	LD	HL,65535
	LD	BC,(list_total_num)
	ADD	HL,BC
	PUSH	IY
	POP	BC
	AND	A
	SBC	HL,BC
	RET
?0130:
	EX	DE,HL
	CALL	LWRD ?US_DIV_L02
	LD	(cur_group),DE
	EX	DE,HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,BC
	LD	(IX-24),L
	LD	(IX-23),H
	LD	BC,5
	ADD	HL,BC
	PUSH	HL
	POP	IY
	RET
?0131:
	IN	A,(78)
	SET	3,A
	OUT	(78),A
	LD	BC,6
	LD	DE,(list_active)
	CALL	LWRD ?US_MOD_L02
	LD	C,75
	CALL	LWRD ?S_MUL_L02
	LD	HL,OnePageRecord
	ADD	HL,DE
	LD	C,L
	LD	B,H
	LD	DE,temp_record
	LD	A,BYTE3 TransOneRecord
	LD	HL,LWRD TransOneRecord
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,(temp_record+11)
	LD	(fselDirLayer),A
	LD	HL,temp_record+1
	LD	C,A
	LD	B,0
	ADD	HL,BC
	LD	B,(HL)
	RET
	RSEG	CSTR
?0011:
	DEFB	':'
	DEFB	0
	END

⌨️ 快捷键说明

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