📄 ui_delete3.s01
字号:
NAME ui_delete3(17)
RSEG COM_CTRL(0)
RSEG CONST(0)
RSEG IDM_COM_FSL_D(0)
EXTERN FS_GetName
EXTERN PutS
EXTERN ResShowMultiString
EXTERN ResShowPic
EXTERN SetPenColor
EXTERN SetTextOutMode
EXTERN SetTextPos
PUBLIC ShowFilelist
PUBLIC com_delname
PUBLIC delete_text
EXTERN file_bck_pic
EXTERN file_pos
EXTERN fselGetByNO
PUBLIC read_idm_data_filelist
PUBLIC reinit_idm_buf_filelist
PUBLIC show_delete_menu
EXTERN ui_popup_list
EXTERN unitochar
PUBLIC write_idm_data_filelist
EXTERN ?CLZ80B_4_04_L00
EXTERN ?SS_MOD_L02
EXTERN ?S_MUL_L02
EXTERN ?SS_CMP_L02
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
RSEG COM_CTRL
write_idm_data_filelist:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * ap common lib file, part 2
; 5. *
; 6. * (c) Copyright, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. * $Id: ui_delete3.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
; 10. *******************************************************************************
; 11. */
; 12. #pragma codeseg(COM_CTRL)
; 13.
; 14. #include "ap_common.h"
; 15. #pragma memory=dataseg(IDM_COM_FSL_D)
; 16. char com_delname[6][50];
; 17. #pragma memory=default
; 18. extern const char file_pos[6];
; 19. extern const WORD file_bck_pic[6];
; 20. const WORD delete_text[2] ={DELENO,DELEYES};
; 21.
; 22. //向IDM数组写数据
; 23. BOOL write_idm_data_filelist(char *name, int count)
; 24. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 0
; 25. byte status;
; 26. status = input8(0x05);
IN A,(5)
LD E,A
; 27. output8(0x05, 0xf6);
LD A,246
OUT (5),A
; 28. memcpy( com_delname[count], name, 50);
PUSH DE
LD BC,50
LD E,(IX+4)
LD D,(IX+5)
CALL LWRD ?S_MUL_L02
LD HL,com_delname
ADD HL,DE
EX DE,HL
LD L,(IX+2)
LD H,(IX+3)
?0025:
LDIR
POP DE
; 29. output8(0x05, status);
LD A,E
OUT (5),A
; 30. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
reinit_idm_buf_filelist:
; 31.
; 32. //取一屏数据到IDM数组中
; 33. void reinit_idm_buf_filelist(int top, int bottom,BYTE string_id)
; 34. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -64
; 35. int i;
; 36. char NameNum;
; 37. char name_buf[12];
; 38. char Longnamebuf[50];
; 39. memcpy(name_buf,name_buf,12);
LD BC,12
LD HL,52
ADD HL,SP
EX DE,HL
LD HL,52
ADD HL,SP
LDIR
; 40. for(i = top; i <= bottom; i++)
LD E,(IX+2)
LD D,(IX+3)
?0003:
LD C,E
LD B,D
LD L,(IX+4)
LD H,(IX+5)
CALL LWRD ?SS_CMP_L02
JR C,?0002
?0004:
; 41. {
; 42. fselGetByNO(name_buf,i+1);
PUSH DE
INC BC
LD HL,54
ADD HL,SP
EX DE,HL
LD A,BYTE3 fselGetByNO
LD HL,LWRD fselGetByNO
CALL LWRD ?BANK_CALL_DIRECT_L08
; 43. memcpy(Longnamebuf,name_buf,12);
LD BC,12
LD HL,4
ADD HL,SP
EX DE,HL
LD HL,54
ADD HL,SP
LDIR
; 44. NameNum=FS_GetName(Longnamebuf,24);
LD C,24
LD HL,4
ADD HL,SP
EX DE,HL
CALL LWRD FS_GetName
POP DE
; 45. if(NameNum!=0)
OR A
PUSH DE
JR Z,?0007
?0006:
; 46. {
; 47. unitochar(Longnamebuf,NameNum*2+2,string_id);
LD L,(IX+10)
PUSH HL
LD L,A
LD H,0
ADD HL,HL
LD C,L
LD B,H
INC BC
INC BC
LD HL,6
ADD HL,SP
EX DE,HL
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP DE
; 48. }
; 49. else
JR ?0008
?0007:
; 50. {
; 51. memcpy(Longnamebuf,name_buf,11); //get one usful record
LD BC,11
LD HL,4
ADD HL,SP
EX DE,HL
LD HL,54
ADD HL,SP
LDIR
POP DE
; 52. Longnamebuf[11]=0;
LD (IX-51),B
; 53. Longnamebuf[12]=0;
LD (IX-50),B
?0008:
; 54. }
; 55.
; 56. write_idm_data_filelist(Longnamebuf, i - top);
PUSH DE
LD C,(IX+2)
LD B,(IX+3)
EX DE,HL
AND A
SBC HL,BC
LD C,L
LD B,H
LD HL,4
ADD HL,SP
EX DE,HL
LD A,BYTE3 write_idm_data_filelist
LD HL,LWRD write_idm_data_filelist
CALL LWRD ?BANK_CALL_DIRECT_L08
POP DE
INC DE
; 57.
; 58. }
; 59. }
JP LWRD ?0003
?0002:
JP LWRD ?BANK_LEAVE_DIRECT_L08
read_idm_data_filelist:
; 60.
; 61. //读数据到数组name中
; 62. void read_idm_data_filelist(char *name, int count)
; 63. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 0
; 64. byte status;
; 65. status = input8(0x05);
IN A,(5)
LD E,A
; 66. output8(0x05 ,0xf6);
LD A,246
OUT (5),A
; 67. memcpy(name, com_delname[count], 50);
PUSH DE
LD BC,50
LD E,(IX+2)
LD D,(IX+3)
PUSH DE
LD E,(IX+4)
LD D,(IX+5)
CALL LWRD ?S_MUL_L02
LD HL,com_delname
ADD HL,DE
POP DE
JP LWRD ?0025
; 68. output8(0x05, status);
; 69. }
ShowFilelist:
; 70.
; 71.
; 72. /********************************************************************************
; 73. * Description : show the directory.
; 74. *
; 75. * Arguments :
; 76. * location: get thedisk type
; 77. * Invpath: the "\" or name
; 78. * Namebuf:the string you will display
; 79. * type : show file kind
; 80. * string_id: language type
; 81. * Returns :
; 82. * other: Successful
; 83. * 0: Fail, detail information in fselError
; 84. * Notes : only display the valid directory
; 85. *
; 86. ********************************************************************************/
; 87. void ShowFilelist(int top,int bottom,int Old_active,int active,BYTE string_id)
; 88. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -52
PUSH IY
; 89.
; 90. int i,tmp;
; 91. char Longnamebuf[50];
; 92. // SetAsciiFont(FONT_TYPE_SMALL);
; 93. SetTextOutMode(1);
LD E,1
CALL LWRD SetTextOutMode
; 94.
; 95. if(Old_active!=active)
LD L,(IX+12)
LD H,(IX+13)
LD E,(IX+10)
LD D,(IX+11)
AND A
SBC HL,DE
JP Z,?0010
?0009:
; 96.
; 97. {
; 98. //清除旧的活动列表项
; 99.
; 100. tmp=Old_active%6;
LD BC,6
CALL LWRD ?0026
; 101. ResShowPic(file_bck_pic[tmp], menu_bck_x_def, file_pos[tmp]-4);
ADD A,252
LD C,A
PUSH BC
LD C,9
EX DE,HL
ADD HL,HL
LD DE,file_bck_pic
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?0027
POP AF
; 102. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,45
CALL LWRD ?0027
POP AF
; 103. ResShowPic(MFILE,13,file_pos[tmp]-1);
LD HL,file_pos
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,255
LD E,A
PUSH DE
CALL LWRD ?0028
POP AF
; 104. SetTextPos(explorer_str_x_def, file_pos[tmp]-2);
CALL LWRD ?0029
; 105. read_idm_data_filelist(Longnamebuf,tmp);
ADD HL,SP
CALL LWRD ?0030
; 106. SetPenColor(Color_WHITE_def); //取列表名
; 107. PutS(Longnamebuf, -1);
ADD HL,SP
EX DE,HL
CALL LWRD PutS
; 108.
; 109. //显示当前活动项
; 110. tmp=active%6;
LD BC,6
LD E,(IX+12)
LD D,(IX+13)
CALL LWRD ?0026
; 111. ResShowPic(MFILE,13,file_pos[tmp]-1);
ADD A,255
LD C,A
PUSH BC
CALL LWRD ?0028
POP AF
; 112. ResShowPic(FILEBCK, explorer_str_x_def-1, file_pos[tmp]-4);
LD HL,file_pos
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,252
LD E,A
PUSH DE
LD C,31
LD DE,50
CALL LWRD ?0027
POP AF
; 113. ResShowPic(DHTHK,194, file_pos[tmp]+5);
LD HL,file_pos
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,5
LD E,A
PUSH DE
LD C,194
LD DE,46
CALL LWRD ?0027
POP AF
; 114. SetTextPos(explorer_str_x_def, file_pos[tmp]-2);
CALL LWRD ?0029
; 115. read_idm_data_filelist(Longnamebuf,tmp);
ADD HL,SP
CALL LWRD ?0030
; 116. SetPenColor(Color_WHITE_def); //取列表名
; 117. PutS(Longnamebuf, -1);
ADD HL,SP
EX DE,HL
CALL LWRD PutS
; 118. }
; 119.
; 120.
; 121. else //if(Old_active==active) 刷新一页屏
JP LWRD ?0012
?0010:
; 122.
; 123. {
; 124. SetTextOutMode(1);
LD E,1
CALL LWRD SetTextOutMode
; 125. ResShowPic(MENUTWO,0,0);
LD C,0
PUSH BC
LD DE,109
CALL LWRD ?0027
POP AF
; 126. SetPenColor(Color_WHITE_def);
CALL LWRD ?0031
; 127. ResShowMultiString(CDELFILE,string_id, list_str_x_def, list_str_y_def);
LD C,148
PUSH BC
LD C,22
PUSH BC
LD C,(IX+14)
LD DE,275
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 128. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,45
CALL LWRD ?0027
POP AF
; 129. //显示列表名
; 130. for(i=top;i<=bottom;i++)
LD L,(IX+2)
LD H,(IX+3)
LD (IX-52),L
LD (IX-51),H
?0013:
LD C,(IX-52)
LD B,(IX-51)
LD L,(IX+4)
LD H,(IX+5)
CALL LWRD ?SS_CMP_L02
JP C,?0012
?0014:
; 131. {
; 132. tmp=i%6;
LD BC,6
LD E,(IX-52)
LD D,(IX-51)
CALL LWRD ?SS_MOD_L02
PUSH DE
POP IY
; 133. if(i==active)
LD L,(IX+12)
LD H,(IX+13)
LD C,(IX-52)
LD B,(IX-51)
SBC HL,BC
JR NZ,?0017
?0016:
; 134. {
; 135. ResShowPic(FILEBCK, explorer_str_x_def-1, file_pos[i-top]-4);
LD C,(IX+2)
LD B,(IX+3)
LD L,(IX-52)
LD H,(IX-51)
AND A
SBC HL,BC
LD DE,file_pos
ADD HL,DE
LD A,(HL)
ADD A,252
LD E,A
PUSH DE
LD C,31
LD DE,50
CALL LWRD ?0027
POP AF
; 136. ResShowPic(DHTHK,194, file_pos[i-top]+5);
LD C,(IX+2)
LD B,(IX+3)
LD L,(IX-52)
LD H,(IX-51)
AND A
SBC HL,BC
LD BC,file_pos
ADD HL,BC
LD A,(HL)
ADD A,5
LD C,A
PUSH BC
LD C,194
LD DE,46
CALL LWRD ?0027
POP AF
; 137. SetPenColor(Color_WHITE_def);
; 138. }
; 139. else
?0017:
; 140. SetPenColor(Color_WHITE_def);
CALL LWRD ?0031
?0018:
; 141. output8(0x4e,input8(0x4e) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 142. read_idm_data_filelist(Longnamebuf,tmp);
PUSH IY
POP BC
LD HL,4
ADD HL,SP
EX DE,HL
LD A,BYTE3 read_idm_data_filelist
LD HL,LWRD read_idm_data_filelist
CALL LWRD ?BANK_CALL_DIRECT_L08
; 143. ResShowPic(MFILE,13,file_pos[i-top]-1);
LD C,(IX+2)
LD B,(IX+3)
LD L,(IX-52)
LD H,(IX-51)
AND A
SBC HL,BC
LD DE,file_pos
ADD HL,DE
LD A,(HL)
ADD A,255
LD E,A
PUSH DE
CALL LWRD ?0028
POP AF
; 144. SetTextPos(explorer_str_x_def, file_pos[i-top]-2);
LD C,(IX+2)
LD B,(IX+3)
LD L,(IX-52)
LD H,(IX-51)
AND A
SBC HL,BC
LD BC,file_pos
ADD HL,BC
LD A,(HL)
ADD A,254
LD C,A
LD E,32
CALL LWRD SetTextPos
; 145. PutS(Longnamebuf,-1);
LD C,255
LD HL,4
ADD HL,SP
EX DE,HL
CALL LWRD PutS
INC (IX-52)
JR NZ,?0023
INC (IX-51)
?0023:
; 146. }
; 147.
; 148. } //else
JP LWRD ?0013
?0012:
?0011:
; 149. SetPenColor(Color_WHITE_def);
CALL LWRD ?0031
; 150. }
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0026:
CALL LWRD ?SS_MOD_L02
PUSH DE
POP IY
LD HL,file_pos
ADD HL,DE
LD A,(HL)
RET
?0028:
LD C,13
LD DE,121
?0027:
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0029:
LD HL,file_pos
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,254
LD C,A
LD E,32
CALL LWRD SetTextPos
PUSH IY
POP BC
LD HL,4
RET
?0030:
EX DE,HL
LD A,BYTE3 read_idm_data_filelist
LD HL,LWRD read_idm_data_filelist
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
LD C,255
LD HL,4
RET
?0031:
LD BC,0
LD DE,65535
JP LWRD SetPenColor
show_delete_menu:
; 151.
; 152. ////////////////////////
; 153.
; 154. ////////////显示删除确认菜单
; 155. int show_delete_menu(BYTE string_id)
; 156. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -10
PUSH IY
; 157. int result;
; 158. pop_up_list_t list;
; 159. list.strid = delete_text;
LD (IX-10),LOW(delete_text)
LD (IX-9),HIGH(delete_text)
; 160. list.total = 2;
LD (IX-8),2
LD (IX-7),0
; 161. list.active = 0;
XOR A
LD (IX-6),A
LD (IX-5),A
; 162. list.string_id =string_id;
LD B,(IX+2)
LD (IX-2),B
; 163. list.headid = CDELFILE;
LD (IX-4),19
LD (IX-3),1
; 164. result= ui_popup_list(&list, NULL);
LD C,A
PUSH BC
LD L,C
LD H,C
PUSH HL
LD L,6
ADD HL,SP
EX DE,HL
LD A,BYTE3 ui_popup_list
LD HL,LWRD ui_popup_list
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
PUSH HL
POP IY
; 165. if((result==0)&&(list.active==0))
LD A,L
OR H
JR NZ,?0020
LD A,(IX-6)
LD H,(IX-5)
OR H
JR NZ,?0020
?0022:
?0021:
?0019:
; 166. {
; 167. result=RESULT_IGNORE;
LD IY,52
?0020:
; 168. }
; 169. return result;
PUSH IY
POP HL
; 170. }
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
RSEG CONST
delete_text:
DEFW 280
DEFW 279
RSEG IDM_COM_FSL_D
com_delname:
DEFS 300
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -