📄 ui_playlist2.s01
字号:
NAME ui_playlist2(17)
RSEG COM_PLAYLIST(0)
RSEG IDM_COM_FSL_D(0)
EXTERN PlayListFileName
EXTERN PlayListScrollRegion
EXTERN PutS
EXTERN ResShowPic
EXTERN ScrollFlag
EXTERN Scroll_PlayList
EXTERN SetAsciiFont
EXTERN SetBackgdColor
EXTERN SetPenColor
EXTERN SetTextOutMode
EXTERN SetTextPos
PUBLIC ShowPlaylist
PUBLIC com_fname
EXTERN fselGetCurGroupL
EXTERN fselGetNextGroup
EXTERN fselGetPrevGroup
EXTERN menu_pos_list
PUBLIC read_idm_data_playlist
PUBLIC reinit_idm_buf_playlist
EXTERN unitochar
PUBLIC write_idm_data_playlist
EXTERN ?CLZ80B_4_04_L00
EXTERN ?UC_MOD_L01
EXTERN ?SS_CMP_L02
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
EXTERN ?STRLEN_L11
RSEG COM_PLAYLIST
write_idm_data_playlist:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * ap common lib, directory control file
; 5. *
; 6. * (c) Copyright, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. * $Id: ui_playlist2.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
; 10. *******************************************************************************
; 11. */
; 12. #pragma codeseg(COM_PLAYLIST)
; 13.
; 14. #include "ap_common.h"
; 15. #include "list.h"
; 16. #define Color_BULE_Scroll_def 0x0000001f//深蓝
; 17. #pragma memory=dataseg(IDM_COM_FSL_D)
; 18. char com_fname[5][LISTNAME_DISP_LENNGTH]; //可存放地址为页6的6000H-6FFFH
; 19. #pragma memory=default
; 20. //extern const char menu_pos_menu[6];
; 21. extern const char menu_pos_list[6];
; 22. extern char PlayListFileName[12];
; 23.
; 24. extern region_t PlayListScrollRegion;
; 25. extern BYTE ScrollFlag;
; 26. extern void Scroll_PlayList( char * scrollstr, bool mode ,char language,region_t *scroll);
; 27. //向IDM数组写数据
; 28. BOOL write_idm_data_playlist(char *name, int count)
; 29. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 0
; 30. byte status;
; 31. status = input8(0x05);
IN A,(5)
LD E,A
; 32. output8(0x05, 0xf6);
LD A,246
OUT (5),A
; 33. memcpy( com_fname[count], name, LISTNAME_DISP_LENNGTH);
PUSH DE
LD BC,512
LD L,(IX+4)
LD H,L
LD L,C
ADD HL,HL
LD BC,com_fname
ADD HL,BC
EX DE,HL
LD L,(IX+2)
LD H,(IX+3)
?0040:
LD BC,512
LDIR
POP DE
; 34. output8(0x05, status);
LD A,E
OUT (5),A
; 35.
; 36. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
reinit_idm_buf_playlist:
; 37.
; 38. //取一屏数据到IDM数组中
; 39. void reinit_idm_buf_playlist(int top, int bottom, char *Longnamebuf, BYTE string_id,BOOL direction)
; 40. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 0
PUSH IY
; 41. int i;
; 42. for(i = top; i <= bottom; i++)
LD L,(IX+2)
LD H,(IX+3)
PUSH HL
POP IY
?0003:
PUSH IY
POP BC
LD L,(IX+4)
LD H,(IX+5)
CALL LWRD ?SS_CMP_L02
JR C,?0002
?0004:
; 43. {
; 44. if( fselGetCurGroupL(Longnamebuf,LISTNAME_DISP_LENNGTH) )
LD BC,512
LD E,(IX+10)
LD D,(IX+11)
LD A,BYTE3 fselGetCurGroupL
LD HL,LWRD fselGetCurGroupL
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0007
?0006:
; 45. {
; 46. unitochar(Longnamebuf,LISTNAME_DISP_LENNGTH,string_id); //
LD L,(IX+12)
PUSH HL
LD BC,512
LD E,(IX+10)
LD D,(IX+11)
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0007:
; 47. }
; 48. if(direction)
XOR A
OR (IX+14)
JR Z,?0009
?0008:
; 49. write_idm_data_playlist(Longnamebuf, i - top);
LD C,(IX+2)
LD B,(IX+3)
PUSH IY
POP HL
JR ?0032
; 50. else
?0009:
; 51. write_idm_data_playlist(Longnamebuf, bottom-i);
PUSH IY
POP BC
LD L,(IX+4)
LD H,(IX+5)
?0032:
SBC HL,BC
LD C,L
LD B,H
LD E,(IX+10)
LD D,(IX+11)
LD A,BYTE3 write_idm_data_playlist
LD HL,LWRD write_idm_data_playlist
CALL LWRD ?BANK_CALL_DIRECT_L08
?0010:
; 52. if(direction)
XOR A
OR (IX+14)
LD E,(IX+10)
LD D,(IX+11)
JR Z,?0012
?0011:
; 53. fselGetNextGroup(Longnamebuf); // 取下页数据
LD A,BYTE3 fselGetNextGroup
LD HL,LWRD fselGetNextGroup
JR ?0033
; 54. else
?0012:
; 55. fselGetPrevGroup(Longnamebuf); // 取上页数据
LD A,BYTE3 fselGetPrevGroup
LD HL,LWRD fselGetPrevGroup
?0033:
CALL LWRD ?BANK_CALL_DIRECT_L08
?0013:
; 56. }
; 57.
; 58. }
INC IY
JP LWRD ?0003
?0002:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
read_idm_data_playlist:
; 59.
; 60. //读数据到数组name中
; 61. void read_idm_data_playlist(char *name, int count)
; 62. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 0
; 63. byte status;
; 64. status = input8(0x05);
IN A,(5)
LD E,A
; 65. output8(0x05 ,0xf6);
LD A,246
OUT (5),A
; 66. memcpy(name, com_fname[count], LISTNAME_DISP_LENNGTH);
PUSH DE
LD BC,512
LD E,(IX+2)
LD D,(IX+3)
LD L,(IX+4)
LD H,L
LD L,C
ADD HL,HL
LD BC,com_fname
ADD HL,BC
JP LWRD ?0040
; 67. output8(0x05, status);
; 68. }
ShowPlaylist:
; 69.
; 70.
; 71. /********************************************************************************
; 72. * Description : show the directory.
; 73. *
; 74. * Arguments :
; 75. * location: get thedisk type
; 76. * Invpath: the "\" or name
; 77. * Namebuf:the string you will display
; 78. * type : show file kind
; 79. * string_id: language type
; 80. * Returns :
; 81. * other: Successful
; 82. * 0: Fail, detail information in fselError
; 83. * Notes : only display the valid directory
; 84. *
; 85. ********************************************************************************/
; 86. void ShowPlaylist(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,char *Longnamebuf,BYTE string_id,BYTE ScrollMode)
; 87. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -2
PUSH IY
; 88.
; 89. int i,tmp;
; 90. SetAsciiFont(FONT_TYPE_LARGE);
LD E,4
CALL LWRD SetAsciiFont
; 91. SetTextOutMode(1);
LD E,1
CALL LWRD SetTextOutMode
; 92. PlayListScrollRegion.x=30;
LD A,30
LD (PlayListScrollRegion),A
; 93. PlayListScrollRegion.width=162;
LD A,162
LD (PlayListScrollRegion+2),A
; 94. PlayListScrollRegion.height=16;
LD A,16
LD (PlayListScrollRegion+3),A
; 95. if(!ScrollMode) //只需要滚动活动的项目
XOR A
OR (IX+18)
JR NZ,?0015
?0014:
; 96. {
; 97. SetTextOutMode(0);
LD E,A
CALL LWRD SetTextOutMode
; 98. SetBackgdColor(Color_BULE_Scroll_def);
CALL LWRD ?0041
; 99. Scroll_PlayList(Longnamebuf, FALSE,string_id,&PlayListScrollRegion);
PUSH HL
LD L,(IX+16)
PUSH HL
LD C,0
CALL LWRD ?0043
POP HL
POP HL
; 100. SetTextOutMode(1);
LD E,1
CALL LWRD SetTextOutMode
; 101. }
; 102. else //需要初始化活动项,判断是否需要滚动
JP LWRD ?0031
?0015:
; 103. {
; 104. if(Old_active!=active)
LD A,(IX+10)
CP (IX+12)
JP Z,?0018
?0017:
; 105.
; 106. {
; 107. //清除旧的活动列表项
; 108. tmp=Old_active%5;
LD B,5
CALL LWRD ?0045
; 109. ResShowPic(MENUBCK5-tmp ,menu_bck_x_def, menu_pos_list[tmp+1]-4); //分段刷新背景
ADD A,252
LD E,A
PUSH DE
LD C,9
PUSH IY
POP DE
LD HL,105
AND A
SBC HL,DE
EX DE,HL
CALL LWRD ?0046
POP AF
; 110. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,45
CALL LWRD ?0046
POP AF
; 111. ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[tmp+1]-1);
LD HL,menu_pos_list+1
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,255
LD E,A
PUSH DE
CALL LWRD ?0047
POP AF
; 112. SetTextPos(explorer_str_x_def, menu_pos_list[tmp+1]-2);
LD HL,menu_pos_list+1
PUSH IY
POP BC
CALL LWRD ?0048
; 113. read_idm_data_playlist(Longnamebuf,tmp);
CALL LWRD ?0050
; 114. SetPenColor(Color_WHITE_def); //取列表名
; 115. PutS(Longnamebuf, -1);
CALL LWRD ?0051
; 116.
; 117. //显示当前活动项
; 118. tmp=active%5;
LD B,5
LD A,(IX+12)
CALL LWRD ?0045
; 119. ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[tmp+1]-1);
ADD A,255
LD E,A
PUSH DE
CALL LWRD ?0047
POP AF
; 120. ResShowPic(FILEBCK, explorer_str_x_def-2, menu_pos_list[tmp+1]-4);
LD HL,menu_pos_list+1
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,252
LD E,A
PUSH DE
LD C,30
LD DE,50
CALL LWRD ?0046
POP AF
; 121. ResShowPic(DHTHK,194,menu_pos_list[tmp+1]+6);
LD HL,menu_pos_list+1
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,6
LD E,A
PUSH DE
LD C,194
LD DE,46
CALL LWRD ?0046
POP AF
; 122. read_idm_data_playlist(Longnamebuf,tmp);
CALL LWRD ?0050
; 123. SetPenColor(Color_WHITE_def); //取列表名
; 124. PlayListScrollRegion.y= menu_pos_list[tmp+1]-2;
LD HL,menu_pos_list+1
PUSH IY
POP BC
; 125.
; 126. SetBackgdColor(Color_BULE_Scroll_def);
CALL LWRD ?0042
; 127. Scroll_PlayList(Longnamebuf, TRUE,string_id,&PlayListScrollRegion);
PUSH HL
LD L,(IX+16)
PUSH HL
CALL LWRD ?0044
POP HL
POP HL
; 128. if(strlen(Longnamebuf)<20)
CALL LWRD ?0052
JR NC,?0020
?0019:
; 129. ScrollFlag=0;
XOR A
JR ?0037
; 130. else
?0020:
; 131. ScrollFlag=1;
LD A,1
?0037:
JP LWRD ?0038
?0021:
; 132. }
; 133.
; 134.
; 135. else //if(Old_active==active) 刷新一页屏
?0018:
; 136.
; 137. {
; 138. ResShowPic(MENUTWO,0,0);
LD C,0
PUSH BC
LD DE,109
CALL LWRD ?0046
POP AF
; 139. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,45
CALL LWRD ?0046
POP AF
; 140. SetPenColor(Color_WHITE_def);
CALL LWRD ?0053
; 141. //ResShowMultiString( VSTOPM1,string_id, 3, 110);
; 142. ResShowPic(MDIR, 10, POSITION_MENU6-4);
LD C,115
PUSH BC
LD C,10
LD DE,91
CALL LWRD ?0046
POP AF
; 143. SetTextPos(menu_str_x_def, POSITION_MENU6-2);
LD C,117
CALL LWRD ?0049
; 144. SetPenColor(Color_WHITE_def);
CALL LWRD ?0053
; 145. PutS(PlayListFileName, 8); //显示列表名
LD C,8
LD DE,PlayListFileName
CALL LWRD PutS
; 146. for(i=top;i<=bottom;i++)
LD C,(IX+2)
LD (IX-2),C
LD (IX-1),0
?0024:
LD L,(IX+4)
LD H,0
LD C,(IX-2)
LD B,(IX-1)
CALL LWRD ?SS_CMP_L02
LD C,(IX+2)
LD B,H
JP C,?0023
?0025:
; 147. {
; 148. ResShowPic(MFILE,explorer_pic_x_def,menu_pos_list[i-top+1]-1);
LD L,(IX-2)
LD H,(IX-1)
SBC HL,BC
LD C,L
LD B,H
LD HL,menu_pos_list+1
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
CALL LWRD ?0047
POP AF
; 149. if(i==active)
LD C,(IX+12)
LD B,0
LD L,(IX-2)
LD H,(IX-1)
AND A
SBC HL,BC
JR NZ,?0028
?0027:
; 150. {
; 151. ResShowPic(FILEBCK, explorer_str_x_def-2, menu_pos_list[i-top+1]-4);
LD C,(IX+2)
LD L,(IX-2)
LD H,(IX-1)
AND A
SBC HL,BC
LD C,L
LD B,H
LD HL,menu_pos_list+1
ADD HL,BC
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
LD C,30
LD DE,50
CALL LWRD ?0046
POP AF
; 152. ResShowPic(DHTHK,194, menu_pos_list[i-top+1]+6);
LD C,(IX+2)
LD B,0
LD L,(IX-2)
LD H,(IX-1)
AND A
SBC HL,BC
LD C,L
LD B,H
LD HL,menu_pos_list+1
ADD HL,BC
LD A,(HL)
ADD A,6
LD C,A
PUSH BC
LD C,194
LD DE,46
CALL LWRD ?0046
POP AF
; 153. SetPenColor(Color_WHITE_def);
CALL LWRD ?0053
; 154. continue;
JR ?0026
?0028:
; 155. }
; 156. else
; 157. SetPenColor(Color_WHITE_def);
LD C,B
CALL LWRD ?0054
; 158. output8(0x4e,input8(0x4e) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 159. read_idm_data_playlist(Longnamebuf,i-top);
LD C,(IX+2)
LD B,0
LD L,(IX-2)
LD H,(IX-1)
AND A
SBC HL,BC
LD C,L
LD B,H
LD E,(IX+14)
LD D,(IX+15)
LD A,BYTE3 read_idm_data_playlist
LD HL,LWRD read_idm_data_playlist
CALL LWRD ?BANK_CALL_DIRECT_L08
; 160. SetTextPos(explorer_str_x_def, menu_pos_list[i-top+1]-2);
LD C,(IX+2)
LD B,0
LD L,(IX-2)
LD H,(IX-1)
AND A
SBC HL,BC
LD BC,menu_pos_list+1
CALL LWRD ?0048
; 161. PutS(Longnamebuf,-1);
CALL LWRD ?0051
?0026:
INC (IX-2)
JR NZ,?0036
INC (IX-1)
?0036:
JP LWRD ?0024
?0023:
; 162. }
; 163. read_idm_data_playlist(Longnamebuf,active-top);
LD L,(IX+12)
AND A
SBC HL,BC
LD C,L
LD B,H
LD E,(IX+14)
LD D,(IX+15)
LD A,BYTE3 read_idm_data_playlist
LD HL,LWRD read_idm_data_playlist
CALL LWRD ?BANK_CALL_DIRECT_L08
; 164. PlayListScrollRegion.y= menu_pos_list[active-top+1]-2;
LD C,(IX+2)
LD B,0
LD H,B
LD L,(IX+12)
AND A
SBC HL,BC
LD BC,menu_pos_list+1
; 165. SetBackgdColor(Color_BULE_Scroll_def);
CALL LWRD ?0042
; 166. Scroll_PlayList(Longnamebuf, TRUE,string_id,&PlayListScrollRegion);
PUSH HL
LD L,(IX+16)
PUSH HL
CALL LWRD ?0044
POP HL
POP HL
; 167. if(strlen(Longnamebuf)<20)
CALL LWRD ?0052
JR NC,?0030
?0029:
; 168. ScrollFlag=0;
XOR A
JR ?0038
; 169. else
?0030:
; 170. ScrollFlag=1;
LD A,1
?0038:
LD (ScrollFlag),A
?0031:
?0022:
?0016:
; 171. } //else
; 172. }
; 173. // SetAsciiFont(FONT_TYPE_SMALL);
; 174. }
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0042:
ADD HL,BC
LD A,(HL)
ADD A,254
LD (PlayListScrollRegion+1),A
?0041:
LD BC,0
LD DE,31
CALL LWRD SetBackgdColor
LD HL,PlayListScrollRegion
RET
?0044:
LD C,1
?0043:
LD E,(IX+14)
LD D,(IX+15)
LD A,BYTE3 Scroll_PlayList
LD HL,LWRD Scroll_PlayList
JP LWRD ?BANK_CALL_DIRECT_L08
?0045:
CALL LWRD ?UC_MOD_L01
LD C,A
LD B,0
PUSH BC
POP IY
LD HL,menu_pos_list+1
ADD HL,BC
LD A,(HL)
RET
?0047:
LD C,13
LD DE,121
?0046:
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0048:
ADD HL,BC
LD A,(HL)
ADD A,254
LD C,A
?0049:
LD E,32
JP LWRD SetTextPos
?0050:
PUSH IY
POP BC
LD E,(IX+14)
LD D,(IX+15)
LD A,BYTE3 read_idm_data_playlist
LD HL,LWRD read_idm_data_playlist
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
RET
?0051:
LD C,255
LD E,(IX+14)
LD D,(IX+15)
JP LWRD PutS
?0052:
LD L,(IX+14)
LD H,(IX+15)
CALL LWRD ?STRLEN_L11
LD BC,20
AND A
SBC HL,BC
RET
?0053:
LD BC,0
?0054:
LD DE,65535
JP LWRD SetPenColor
; 175.
RSEG IDM_COM_FSL_D
com_fname:
DEFS 2560
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -