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

📄 ui_directory.s01

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

⌨️ 快捷键说明

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