📄 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 ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
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. {
PUSH BC
PUSH DE
PUSH AF
; 25. byte status;
; 26. status = input8(0x05);
IN A,(5)
LD HL,0
ADD HL,SP
LD (HL),A
; 27. output8(0x05, 0xf6);
LD A,246
OUT (5),A
; 28. memcpy( com_delname[count], name, 50);
LD DE,50
CALL LWRD ?S_MUL_L02
LD HL,com_delname
ADD HL,DE
EX DE,HL
LD HL,2
ADD HL,SP
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD BC,50
?0027:
LDIR
; 29. output8(0x05, status);
LD L,C
LD H,B
ADD HL,SP
LD A,(HL)
OUT (5),A
; 30. }
POP HL
POP HL
POP HL
JP LWRD ?BANK_FAST_LEAVE_L08
reinit_idm_buf_filelist:
; 31.
; 32. //取一屏数据到IDM数组中
; 33. void reinit_idm_buf_filelist(int top, int bottom,BYTE string_id)
; 34. {
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
PUSH BC
PUSH DE
LD HL,65472
ADD HL,SP
LD SP,HL
; 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 L,(IX-4)
LD H,(IX-3)
PUSH HL
POP IY
?0003:
PUSH IY
POP BC
LD L,(IX-2)
LD H,(IX-1)
OR 128
SBC HL,BC
JP PO,?0023
XOR H
?0023:
JP M,?0002
?0004:
; 41. {
; 42. fselGetByNO(name_buf,i+1);
INC BC
LD HL,52
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,2
ADD HL,SP
EX DE,HL
LD HL,52
ADD HL,SP
LDIR
; 44. NameNum=FS_GetName(Longnamebuf,24);
LD C,24
LD HL,2
ADD HL,SP
EX DE,HL
CALL LWRD FS_GetName
; 45. if(NameNum!=0)
OR A
JR Z,?0007
?0006:
; 46. {
; 47. unitochar(Longnamebuf,NameNum*2+2,string_id);
LD L,(IX+8)
PUSH HL
LD L,A
LD H,0
ADD HL,HL
LD C,L
LD B,H
INC BC
INC BC
LD HL,4
ADD HL,SP
EX DE,HL
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 48. }
; 49. else
JR ?0008
?0007:
; 50. {
; 51. memcpy(Longnamebuf,name_buf,11); //get one usful record
LD BC,11
LD HL,2
ADD HL,SP
EX DE,HL
LD HL,52
ADD HL,SP
LDIR
; 52. Longnamebuf[11]=0;
LD (IX-55),B
; 53. Longnamebuf[12]=0;
LD (IX-54),B
?0008:
; 54. }
; 55.
; 56. write_idm_data_filelist(Longnamebuf, i - top);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD C,L
LD B,H
LD HL,2
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
; 57.
; 58. }
; 59. }
INC IY
JP LWRD ?0003
?0002:
LD SP,IX
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
read_idm_data_filelist:
; 60.
; 61. //读数据到数组name中
; 62. void read_idm_data_filelist(char *name, int count)
; 63. {
PUSH BC
PUSH DE
PUSH AF
; 64. byte status;
; 65. status = input8(0x05);
IN A,(5)
LD HL,0
ADD HL,SP
LD (HL),A
; 66. output8(0x05 ,0xf6);
LD A,246
OUT (5),A
; 67. memcpy(name, com_delname[count], 50);
LD BC,50
PUSH DE
LD HL,6
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?S_MUL_L02
LD HL,com_delname
ADD HL,DE
POP DE
JP LWRD ?0027
; 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. {
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
PUSH BC
PUSH DE
LD HL,65484
ADD HL,SP
LD SP,HL
; 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+10)
LD H,(IX+11)
LD E,(IX+8)
LD D,(IX+9)
AND A
SBC HL,DE
JP Z,?0010
?0009:
; 96.
; 97. {
; 98. //清除旧的活动列表项
; 99.
; 100. tmp=Old_active%6;
LD BC,6
CALL LWRD ?0029
; 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 ?0030
POP AF
; 102. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,45
CALL LWRD ?0030
POP AF
; 103. ResShowPic(MFILE,13,file_pos[tmp]-1);
LD HL,file_pos
LD C,(IX-56)
LD B,(IX-55)
ADD HL,BC
LD A,(HL)
ADD A,255
LD E,A
PUSH DE
CALL LWRD ?0031
POP AF
; 104. SetTextPos(explorer_str_x_def, file_pos[tmp]-2);
CALL LWRD ?0032
; 105. read_idm_data_filelist(Longnamebuf,tmp);
LD C,(IX-56)
LD B,(IX-55)
LD HL,2
ADD HL,SP
; 106. SetPenColor(Color_WHITE_def); //取列表名
CALL LWRD ?0034
; 107. PutS(Longnamebuf, -1);
LD C,255
LD HL,2
ADD HL,SP
EX DE,HL
CALL LWRD PutS
; 108.
; 109. //显示当前活动项
; 110. tmp=active%6;
LD BC,6
LD E,(IX+10)
LD D,(IX+11)
CALL LWRD ?0029
; 111. ResShowPic(MFILE,13,file_pos[tmp]-1);
ADD A,255
LD C,A
PUSH BC
CALL LWRD ?0031
POP AF
; 112. ResShowPic(FILEBCK, explorer_str_x_def-1, file_pos[tmp]-4);
LD HL,file_pos
LD C,(IX-56)
LD B,(IX-55)
ADD HL,BC
LD A,(HL)
ADD A,252
LD E,A
PUSH DE
LD C,31
LD DE,50
CALL LWRD ?0030
POP AF
; 113. ResShowPic(DHTHK,194, file_pos[tmp]+5);
LD HL,file_pos
LD C,(IX-56)
LD B,(IX-55)
ADD HL,BC
LD A,(HL)
ADD A,5
LD E,A
PUSH DE
LD C,194
LD DE,46
CALL LWRD ?0030
POP AF
; 114. SetTextPos(explorer_str_x_def, file_pos[tmp]-2);
CALL LWRD ?0032
; 115. read_idm_data_filelist(Longnamebuf,tmp);
LD C,(IX-56)
LD B,(IX-55)
LD HL,2
ADD HL,SP
; 116. SetPenColor(Color_WHITE_def); //取列表名
CALL LWRD ?0034
; 117. PutS(Longnamebuf, -1);
LD C,255
LD HL,2
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 ?0030
POP AF
; 126. SetPenColor(Color_WHITE_def);
CALL LWRD ?0035
; 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+12)
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 ?0030
POP AF
; 129. //显示列表名
; 130. for(i=top;i<=bottom;i++)
LD L,(IX-4)
LD H,(IX-3)
PUSH HL
POP IY
?0013:
PUSH IY
POP BC
LD L,(IX-2)
LD H,(IX-1)
OR 128
SBC HL,BC
JP PO,?0025
XOR H
?0025:
JP M,?0012
?0014:
; 131. {
; 132. tmp=i%6;
LD BC,6
PUSH IY
POP DE
CALL LWRD ?SS_MOD_L02
LD (IX-56),E
LD (IX-55),D
; 133. if(i==active)
LD L,(IX+10)
LD H,(IX+11)
PUSH IY
POP BC
AND A
SBC HL,BC
JR NZ,?0017
?0016:
; 134. {
; 135. ResShowPic(FILEBCK, explorer_str_x_def-1, file_pos[i-top]-4);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
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 ?0030
POP AF
; 136. ResShowPic(DHTHK,194, file_pos[i-top]+5);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
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 ?0030
POP AF
; 137. SetPenColor(Color_WHITE_def);
; 138. }
; 139. else
?0017:
; 140. SetPenColor(Color_WHITE_def);
CALL LWRD ?0035
?0018:
; 141. output8(0x4e,input8(0x4e) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 142. read_idm_data_filelist(Longnamebuf,tmp);
LD C,(IX-56)
LD B,(IX-55)
LD HL,2
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-4)
LD B,(IX-3)
PUSH IY
POP HL
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 ?0031
POP AF
; 144. SetTextPos(explorer_str_x_def, file_pos[i-top]-2);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD BC,file_pos
CALL LWRD ?0033
; 145. PutS(Longnamebuf,-1);
LD C,255
LD HL,2
ADD HL,SP
EX DE,HL
CALL LWRD PutS
; 146. }
; 147.
; 148. } //else
INC IY
JP LWRD ?0013
?0012:
?0011:
; 149. SetPenColor(Color_WHITE_def);
CALL LWRD ?0035
; 150. }
JP LWRD ?0002
?0029:
CALL LWRD ?SS_MOD_L02
LD (IX-56),E
LD (IX-55),D
LD HL,file_pos
ADD HL,DE
LD A,(HL)
RET
?0031:
LD C,13
LD DE,121
?0030:
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0032:
LD HL,file_pos
LD C,(IX-56)
LD B,(IX-55)
?0033:
ADD HL,BC
LD A,(HL)
ADD A,254
LD C,A
LD E,32
JP LWRD SetTextPos
?0034:
EX DE,HL
LD A,BYTE3 read_idm_data_filelist
LD HL,LWRD read_idm_data_filelist
CALL LWRD ?BANK_CALL_DIRECT_L08
?0035:
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. {
PUSH BC
PUSH IX
PUSH DE
LD HL,65526
ADD HL,SP
LD SP,HL
; 157. int result;
; 158. pop_up_list_t list;
; 159. list.strid = delete_text;
LD (HL),LOW(delete_text)
INC HL
LD (HL),HIGH(delete_text)
; 160. list.total = 2;
INC HL
LD (HL),2
INC HL
LD (HL),0
; 161. list.active = 0;
INC HL
XOR A
LD (HL),A
INC HL
LD (HL),A
; 162. list.string_id =string_id;
INC HL
INC HL
INC HL
PUSH HL
LD B,E
POP HL
LD (HL),B
; 163. list.headid = CDELFILE;
LD HL,6
ADD HL,SP
LD (HL),19
INC HL
LD (HL),1
; 164. result= ui_popup_list(&list, NULL);
LD C,A
PUSH BC
LD L,C
LD H,C
PUSH HL
LD L,4
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 IX
; 165. if((result==0)&&(list.active==0))
LD A,L
OR H
JR NZ,?0020
LD HL,4
ADD HL,SP
LD A,(HL)
INC HL
LD H,(HL)
OR H
JR NZ,?0020
?0022:
?0021:
?0019:
; 166. {
; 167. result=RESULT_IGNORE;
LD IX,52
?0020:
; 168. }
; 169. return result;
PUSH IX
POP HL
; 170. }
EX DE,HL
LD HL,12
ADD HL,SP
LD SP,HL
EX DE,HL
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_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 + -