ui_delete2.s01
来自「MP3 整个 SDK」· S01 代码 · 共 992 行 · 第 1/2 页
S01
992 行
; 138.
; 139. case AP_KEY_PLAY | AP_KEY_UP:
; 140. FSELSetLocation(location);
LD E,(IX+2)
LD D,(IX+3)
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+4)
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,12
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+4)
LD DE,277
CALL LWRD ?0082
POP AF
POP AF
; 159. fselGetLocation(location);
CALL LWRD ?0083
; 160. filetotal=filetotal-1;
LD HL,10
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-18)
OR (IX-17)
JR Z,?0079
?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-2),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 ?0085
; 172. top=cur_grouplist*6; //顶的序号
; 173. bottom=top+5;
LD BC,5
; 174. if(bottom>filetotal-1)
CALL LWRD ?0086
JR NC,?0048
?0047:
; 175. bottom=filetotal-1;
LD (IX-20),L
LD (IX-19),H
?0048:
; 176. reinit_idm_buf_filelist(top, bottom, string_id); //换页要重新初始化IDM数据
LD L,(IX+4)
PUSH HL
CALL LWRD ?0088
POP HL
; 177. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
JR ?0080
; 178. break;
?0046:
; 179. }
; 180. else
; 181. return result;
LD L,(IX-2)
LD H,A
; 182. break;
JR ?0062
?0049:
; 183.
; 184. }
; 185. case AP_MSG_WAIT_TIMEOUT:
; 186. if (FSELGetLocation(location))
CALL LWRD ?0083
INC L
DEC L
JR Z,?0051
?0050:
; 187. return RESULT_NULL;
?0079:
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+2)
LD H,(IX+3)
LD A,(HL)
CP 72
JR NZ,?0061
?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);
?0080:
LD L,(IX+4)
PUSH HL
PUSH IY
PUSH IY
LD C,(IX-20)
LD B,(IX-19)
LD E,(IX-22)
LD D,(IX-21)
LD A,BYTE3 ShowFilelist
LD HL,LWRD ShowFilelist
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
POP HL
POP HL
JR ?0061
?0058:
; 208. }
; 209. else if(key != 0)
LD A,C
OR A
JR Z,?0061
?0060:
; 210. {
; 211. FSELGetLocation(location);
CALL LWRD ?0083
; 212. return key;
LD L,C
LD H,B
; 213. }
?0062:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0061:
?0059:
?0010:
; 214. } //switch()
; 215. }// while(1)
; 216. }
JP LWRD ?0008
?0083:
LD E,(IX+2)
LD D,(IX+3)
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
?0084:
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-22),L
LD (IX-21),H
LD BC,5
ADD HL,BC
LD (IX-20),L
LD (IX-19),H
RET
?0085:
CALL LWRD ?SS_DIV_L02
LD (IX-24),E
LD (IX-23),D
EX DE,HL
ADD HL,HL
LD C,L
LD B,H
ADD HL,HL
ADD HL,BC
LD (IX-22),L
LD (IX-21),H
RET
?0086:
ADD HL,BC
LD (IX-20),L
LD (IX-19),H
?0087:
LD L,(IX-18)
LD H,(IX-17)
DEC HL
LD C,(IX-20)
LD B,(IX-19)
JP LWRD ?SS_CMP_L02
?0088:
LD C,(IX-20)
LD B,(IX-19)
?0089:
LD E,(IX-22)
LD D,(IX-21)
?0090:
LD A,BYTE3 reinit_idm_buf_filelist
LD HL,LWRD reinit_idm_buf_filelist
JP LWRD ?BANK_CALL_DIRECT_L08
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. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -42
PUSH IY
LD L,(IX+2)
LD H,(IX+3)
PUSH HL
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);
LD HL,2
ADD HL,SP
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+4)
LD DE,276
CALL LWRD ?0082
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,12
ADD HL,SP
EX DE,HL
LD L,B
CALL LWRD ?MEMSET_L11
; 266. memcpy(Longnamebuf_del,location->path,11);
LD HL,12
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,12
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-40)
LD B,(IX-39)
LD E,(IX-42)
LD D,(IX-41)
CALL LWRD SetPenColor
; 294. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,6
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. }
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
; 297.
RSEG CSTR
?0074:
DEFB 92,0
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?