ui_delete2.s01
来自「MP3 整个 SDK」· S01 代码 · 共 1,007 行 · 第 1/2 页
S01
1,007 行
LD A,BYTE3 fselSetLocation
LD HL,LWRD fselSetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 141. return RESULT_IGNORE;
JP LWRD ?0051
; 142. break;
?0036:
; 143.
; 144. case AP_KEY_MODE | AP_KEY_UP:
; 145. //YES时按下MODE键的处理
; 146. {
; 147. bool result;
; 148. result=show_delete_menu(string_id);
LD E,(IX-2)
LD A,BYTE3 show_delete_menu
LD HL,LWRD show_delete_menu
CALL LWRD ?BANK_CALL_DIRECT_L08
; 149. if(result==0)
INC L
DEC L
JR NZ,?0044
?0037:
; 150. {
; 151. fselGetByNO(name, filelist_active+1); //through file no get the name
PUSH IY
POP BC
INC BC
LD HL,10
ADD HL,SP
EX DE,HL
LD A,BYTE3 fselGetByNO
LD HL,LWRD fselGetByNO
CALL LWRD ?BANK_CALL_DIRECT_L08
; 152. if ( fselDelFile(FSEL_DEL_FILE) ) //更新文件选择器
LD E,0
LD A,BYTE3 fselDelFile
LD HL,LWRD fselDelFile
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0044
?0039:
; 153.
; 154. {
; 155. ResShowPic(MENUTWO,0,0);
LD C,0
PUSH BC
LD DE,109
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 156. SetTextOutMode(1); //设字体透明
LD E,1
CALL LWRD SetTextOutMode
; 157. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 158. ResShowMultiString(CDELING,string_id, 255, 80);
LD C,80
PUSH BC
LD C,255
PUSH BC
LD C,(IX-2)
LD DE,277
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 159. fselGetLocation(location);
CALL LWRD ?0090
; 160. filetotal=filetotal-1;
LD HL,8
ADD HL,SP
LD A,(HL)
ADD A,255
LD (HL),A
INC HL
LD A,(HL)
ADC A,255
LD (HL),A
; 161. if(filetotal==0)
LD A,(IX-22)
OR (IX-21)
JR Z,?0084
?0041:
; 162. return RESULT_NULL;
?0042:
; 163. if(filelist_active!=0)
PUSH IY
POP HL
LD A,L
OR H
JR Z,?0044
?0043:
; 164. filelist_active=filelist_active-1;
DEC IY
?0044:
?0040:
; 165. }
; 166. result=RESULT_IGNORE;
?0038:
; 167. }
; 168.
; 169. if(result=RESULT_IGNORE)
LD (IX-6),52
XOR A
INC A
JR Z,?0046
?0045:
; 170. {
; 171. cur_grouplist=filelist_active/6;
LD BC,6
PUSH IY
POP DE
CALL LWRD ?0092
; 172. top=cur_grouplist*6; //顶的序号
; 173. bottom=top+5;
LD BC,5
ADD HL,BC
LD (IX-24),L
LD (IX-23),H
; 174. if(bottom>filetotal-1)
LD L,(IX-22)
LD H,(IX-21)
DEC HL
LD C,(IX-24)
LD B,(IX-23)
OR 128
SBC HL,BC
JP PO,?0080
XOR H
?0080:
JP P,?0048
?0047:
; 175. bottom=filetotal-1;
LD L,(IX-22)
LD H,(IX-21)
DEC HL
LD (IX-24),L
LD (IX-23),H
?0048:
; 176. reinit_idm_buf_filelist(top, bottom, string_id); //换页要重新初始化IDM数据
LD L,(IX-2)
PUSH HL
CALL LWRD ?0095
POP HL
; 177. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
JR ?0085
; 178. break;
?0046:
; 179. }
; 180. else
; 181. return result;
LD L,(IX-6)
LD H,A
; 182. break;
JR ?0062
?0049:
; 183.
; 184. }
; 185. case AP_MSG_WAIT_TIMEOUT:
; 186. if (FSELGetLocation(location))
CALL LWRD ?0090
INC L
DEC L
JR Z,?0051
?0050:
; 187. return RESULT_NULL;
?0084:
LD HL,0
; 188. else
JR ?0062
?0051:
; 189. return RESULT_IGNORE;
LD HL,52
; 190. break;
JR ?0062
?0052:
; 191. //}
; 192. case AP_MSG_SD_OUT:
; 193. //如在游览SD卡,但SD卡又被拔出,就返回拔出信号
; 194. if (location->disk == 'H')
LD L,(IX-4)
LD H,(IX-3)
LD A,(HL)
CP 72
JP NZ,?0008
?0053:
; 195. {
; 196. return RESULT_SD_OUT;
LD HL,54
; 197. }
JR ?0062
?0054:
; 198. break;
?0055:
; 199.
; 200. case AP_MSG_SD_IN:
; 201. break;
?0056:
; 202.
; 203. default:
; 204. key=ap_handle_hotkey(key);
LD E,C
CALL LWRD ap_handle_hotkey
LD C,A
; 205. if(key == RESULT_REDRAW)
LD A,50
XOR C
JR NZ,?0058
?0057:
; 206. {
; 207. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
?0085:
LD L,(IX-2)
PUSH HL
PUSH IY
PUSH IY
CALL LWRD ?0093
POP HL
POP HL
POP HL
JP LWRD ?0008
?0058:
; 208. }
; 209. else if(key != 0)
LD A,C
OR A
JP Z,?0008
?0060:
; 210. {
; 211. FSELGetLocation(location);
CALL LWRD ?0090
; 212. return key;
LD L,C
LD H,B
; 213. }
?0062:
LD SP,IX
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
?0090:
LD E,(IX-4)
LD D,(IX-3)
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
?0091:
PUSH IY
POP DE
CALL LWRD ?SS_DIV_L02
EX DE,HL
ADD HL,HL
LD C,L
LD B,H
ADD HL,HL
ADD HL,BC
LD (IX-26),L
LD (IX-25),H
LD BC,5
ADD HL,BC
LD (IX-24),L
LD (IX-23),H
RET
?0092:
CALL LWRD ?SS_DIV_L02
LD (IX-28),E
LD (IX-27),D
EX DE,HL
ADD HL,HL
LD C,L
LD B,H
ADD HL,HL
ADD HL,BC
LD (IX-26),L
LD (IX-25),H
RET
?0093:
LD C,(IX-24)
LD B,(IX-23)
?0094:
LD E,(IX-26)
LD D,(IX-25)
LD A,BYTE3 ShowFilelist
LD HL,LWRD ShowFilelist
JP LWRD ?BANK_CALL_DIRECT_L08
?0095:
LD C,(IX-24)
LD B,(IX-23)
?0096:
LD E,(IX-26)
LD D,(IX-25)
?0097:
LD A,BYTE3 reinit_idm_buf_filelist
LD HL,LWRD reinit_idm_buf_filelist
JP LWRD ?BANK_CALL_DIRECT_L08
?0061:
?0059:
?0010:
; 214. } //switch()
; 215. }// while(1)
; 216. }
draw_del_dir:
; 217.
; 218. /********************************************************************************
; 219. /* Description : draw the selector directory.
; 220. *
; 221. * Arguments : location :keep the file selector parament
; 222. string_id :display language type
; 223. * Returns :
; 224. *
; 225. * Notes :
; 226. *
; 227. ********************************************************************************/
; 228. void draw_del_dir(file_location_t *location, BYTE string_id)
; 229. {
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
PUSH BC
LD HL,65494
ADD HL,SP
LD SP,HL
PUSH DE
POP IY
; 230. char Longnamebuf_del[31];
; 231. char buf[5];
; 232. BYTE NameNum,Cardflag=0;
; 233.
; 234. DC oldDC_sav;
; 235.
; 236. GetDCStatus(&oldDC_sav);
EX DE,HL
CALL LWRD GetDCStatus
; 237. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 238. SetTextOutMode(1); //设字体透明
LD E,1
CALL LWRD SetTextOutMode
; 239.
; 240. // SetAsciiFont(FONT_TYPE_LARGE); //ASCII码用大字体
; 241.
; 242. ResShowPic(SSBCK,0,0);
LD C,0
PUSH BC
LD DE,221
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 243. ResShowMultiString(CDELALL,string_id, list_str_x_def, list_str_y_def);
LD C,148
PUSH BC
LD C,22
PUSH BC
LD C,(IX-2)
LD DE,276
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 244. ResShowPic(DELNO,78,60);
LD C,60
PUSH BC
LD C,78
LD DE,1
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 245. //ResShowPic(MDIR,10,95);
; 246. // SetTextPos(32,95);
; 247. // SetPenColor(Color_WHITE_def);
; 248.
; 249.
; 250. if(location->disk == 'H');//Cardflag=DIRROOT-DIRCARD;
?0063:
?0064:
; 251. else if(location->disk != 'C')ASSERT(FALSE);
?0066:
?0067:
?0065:
; 252.
; 253. // SetAsciiFont(FONT_TYPE_LARGE);
; 254.
; 255. if(location->path[0] == ':') //根目录显示
LD A,(IY+14)
CP 58
JR Z,?0073
?0068:
; 256. {
; 257.
; 258. // strcpy(buf, "ROOT");
; 259. // buf[4] = 0x00;
; 260. //PutS(buf, -1);
; 261. }
; 262. else //子目录显示,会获取子目录的长名
?0069:
; 263. {
; 264.
; 265. memset(Longnamebuf_del,0x00,31);
LD BC,31
LD HL,10
ADD HL,SP
EX DE,HL
LD L,B
CALL LWRD ?MEMSET_L11
; 266. memcpy(Longnamebuf_del,location->path,11);
LD HL,10
ADD HL,SP
EX DE,HL
LD HL,14
PUSH IY
POP BC
ADD HL,BC
LD BC,11
LDIR
; 267. NameNum=FS_GetName(Longnamebuf_del,14);
LD C,14
LD HL,10
ADD HL,SP
EX DE,HL
CALL LWRD FS_GetName
; 268. if(NameNum!=0)
OR A
JR NZ,?0073
?0071:
; 269. {
; 270. // unitochar(Longnamebuf_del,NameNum*2+2,string_id);
; 271. //PutS(Longnamebuf_del,-1);
; 272. }
; 273. else
?0072:
; 274. {
; 275. FS_CD("\\");
LD DE,?0074
CALL LWRD FS_CD
; 276. // NameNum=FS_GetName(Longnamebuf_del,14);
; 277. // if (NameNum != 0)
; 278. // {
; 279. // unitochar(Longnamebuf_del,NameNum*2+2,string_id);
; 280. //PutS(Longnamebuf_del,-1);
; 281. // }
; 282. // else
; 283. //PutS(location->path, 11);
; 284. FS_SetCurDir(location->ClusterNo);
LD C,(IY+11)
LD B,(IY+12)
LD E,(IY+9)
LD D,(IY+10)
CALL LWRD FS_SetCurDir
?0073:
?0070:
; 285. }
; 286. }
; 287. FS_CD(location->path); //CD到删除所在目录
LD HL,14
PUSH IY
POP BC
ADD HL,BC
EX DE,HL
CALL LWRD FS_CD
; 288.
; 289.
; 290. // SetAsciiFont(FONT_TYPE_SMALL);
; 291.
; 292. SetTextOutMode(0); //设字体不透明
LD E,0
CALL LWRD SetTextOutMode
; 293. SetPenColor(oldDC_sav.PenColor);
LD C,(IX-42)
LD B,(IX-41)
LD E,(IX-44)
LD D,(IX-43)
CALL LWRD SetPenColor
; 294. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,4
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetBackgdColor
; 295.
; 296. }
JP LWRD ?0062
; 297.
RSEG CSTR
?0074:
DEFB 92,0
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?