📄 ui_playlist.s01
字号:
LD HL,(playlist_active)
DEC HL
; 127. if(playlist_active/5==cur_grouplist)
CALL LWRD ?0076
JR NZ,?0033
?0032:
; 128. {
; 129. ShowPlaylist(top,bottom,playlist_active+1,playlist_active,Strname,string_id,1);
LD C,1
PUSH BC
LD L,(IX+10)
PUSH HL
LD L,(IX-8)
LD H,(IX-7)
PUSH HL
LD A,(playlist_active)
LD C,A
PUSH BC
INC A
JR ?0069
; 130. }
; 131. else
?0033:
; 132. {
; 133. cur_grouplist=cur_grouplist-1;
LD HL,65535
; 134. top=(playlist_active/5)*5; //顶的序号
CALL LWRD ?0075
; 135. bottom=top+4; //底的序号
; 136. FSELGetLocation(location);
CALL LWRD ?0071
; 137. reinit_idm_buf_playlist(top, bottom, Strname, string_id,FALSE); //换页要重新初始化IDM数据
LD C,B
PUSH BC
LD L,(IX+10)
PUSH HL
LD L,(IX-8)
LD H,(IX-7)
PUSH HL
CALL LWRD ?0073
POP HL
POP HL
POP HL
; 138. FSELSetLocation(location);
CALL LWRD ?0072
; 139. ShowPlaylist(top,bottom,playlist_active,playlist_active,Strname,string_id,1);
LD C,1
PUSH BC
LD L,(IX+10)
PUSH HL
LD L,(IX-8)
LD H,(IX-7)
PUSH HL
LD A,(playlist_active)
LD C,A
PUSH BC
?0069:
LD C,A
PUSH BC
CALL LWRD ?0074
POP HL
POP HL
POP HL
POP HL
POP HL
?0034:
?0031:
?0036:
; 140. }
; 141. }
; 142. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JR NZ,?0034
?0037:
; 143. break;
?0035:
JP LWRD ?0015
?0038:
; 144.
; 145. case AP_KEY_PLAY | AP_KEY_UP:
; 146. FSELSetLocation(location); //restore the selecting result
CALL LWRD ?0072
; 147. result = RESULT_IGNORE;
LD (IX-6),52
; 148. goto funreturn;
JP LWRD ?0039
; 149. break;
?0040:
; 150. case AP_KEY_MODE | AP_KEY_LONG:
; 151. if ( FSELGetLocation(location) ) //store the selecting result
CALL LWRD ?0071
INC L
DEC L
JR Z,?0042
?0041:
; 152. result = RESULT_NULL;
LD (IX-6),0
; 153. else
JR ?0043
?0042:
; 154. result = RESULT_IGNORE;
LD (IX-6),52
?0043:
; 155. goto funreturn;
JP LWRD ?0039
; 156. break;
?0044:
; 157. case AP_KEY_MODE | AP_KEY_UP:
; 158. break;
?0045:
; 159. case AP_MSG_WAIT_TIMEOUT:
; 160. TimeoutCnt++;
INC (IX-4)
; 161. if ( TimeoutCnt >= 24 ) //192秒后退出,因为要看长名滚屏
LD A,(IX-4)
CP 24
JR C,?0047
?0046:
; 162. {
; 163. if (FSELGetLocation(location)) //store the selecting result
CALL LWRD ?0071
INC L
DEC L
JR Z,?0049
?0048:
; 164. result = RESULT_NULL;
LD (IX-6),0
; 165. else
JR ?0050
?0049:
; 166. result = RESULT_IGNORE;
LD (IX-6),52
?0050:
; 167. goto funreturn;
JR ?0039
?0047:
; 168. }
; 169. break;
JP LWRD ?0015
?0051:
; 170.
; 171. case AP_MSG_SD_OUT:
; 172. //如在游览SD卡,但SD卡又被拔出,就返回拔出信号
; 173. if (location->disk == 'H')
LD L,(IX+2)
LD H,(IX+3)
LD A,(HL)
CP 72
JR NZ,?0053
?0052:
; 174. {
; 175. result = RESULT_SD_OUT;
LD (IX-6),54
; 176. goto funreturn;
JR ?0039
?0053:
; 177. }
; 178. break;
JP LWRD ?0015
?0054:
; 179.
; 180. case AP_MSG_SD_IN:
; 181. break;
?0055:
; 182.
; 183. case AP_MSG_RTC:
; 184. break;
?0056:
; 185.
; 186. default:
; 187. key=ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX-5),A
; 188. if(key == RESULT_REDRAW)
CP 50
JR NZ,?0058
?0057:
; 189. {
; 190. ShowPlaylist(top,bottom,playlist_active,playlist_active,Strname,string_id,1);
LD C,1
PUSH BC
LD L,(IX+10)
PUSH HL
LD L,(IX-8)
LD H,(IX-7)
PUSH HL
LD A,(playlist_active)
LD C,A
PUSH BC
LD C,A
PUSH BC
CALL LWRD ?0074
POP HL
POP HL
POP HL
POP HL
POP HL
JR ?0061
?0058:
; 191. }
; 192. else if( key != 0 )
XOR A
OR (IX-5)
JR Z,?0061
?0060:
; 193. {
; 194. FSELGetLocation(location); //store the selecting result
CALL LWRD ?0071
; 195. result = key;
LD B,(IX-5)
LD (IX-6),B
; 196. goto funreturn;
JR ?0039
?0061:
?0059:
; 197. }
; 198. if(ScrollFlag)
LD A,(ScrollFlag)
OR A
JR Z,?0063
?0062:
; 199. ShowPlaylist(top,bottom,playlist_active,playlist_active,Strname,string_id,0);
LD C,0
PUSH BC
LD L,(IX+10)
PUSH HL
LD L,(IX-8)
LD H,(IX-7)
PUSH HL
LD A,(playlist_active)
LD C,A
PUSH BC
LD C,A
PUSH BC
CALL LWRD ?0074
POP HL
POP HL
POP HL
POP HL
POP HL
?0063:
?0017:
; 200. } //switch()
; 201. }
; 202.
; 203. funreturn:
JP LWRD ?0015
?0039:
; 204. ////////////////////////////////换页//////////////////////////////////////
; 205. DmaCpy( 0x4000, 0x07, 0x4000, 0x06, 0x2000-1 ); //恢复8K代码到第7页
LD HL,8191
PUSH HL
LD C,6
PUSH BC
LD HL,16384
PUSH HL
LD C,7
EX DE,HL
CALL LWRD DmaCpy
POP HL
POP HL
POP HL
; 206. output8(0x05, i);
LD A,(IX-2)
OUT (5),A
; 207. SetSWAPAddress(pagebak);
LD E,(IX-3)
CALL LWRD SetSWAPAddress
; 208. ////////////////////////////////换页//////////////////////////////////////
; 209.
; 210.
; 211. return result;
LD L,(IX-6)
LD H,0
; 212. }
?0064:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0071:
LD E,(IX+2)
LD D,(IX+3)
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
?0072:
LD E,(IX+2)
LD D,(IX+3)
LD A,BYTE3 fselSetLocation
LD HL,LWRD fselSetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
?0073:
PUSH IY
POP BC
LD E,(IX-10)
LD D,(IX-9)
LD A,BYTE3 reinit_idm_buf_playlist
LD HL,LWRD reinit_idm_buf_playlist
JP LWRD ?BANK_CALL_DIRECT_L08
?0074:
PUSH IY
POP HL
LD C,L
LD E,(IX-10)
LD A,BYTE3 ShowPlaylist
LD HL,LWRD ShowPlaylist
JP LWRD ?BANK_CALL_DIRECT_L08
?0075:
LD BC,(cur_grouplist)
ADD HL,BC
LD (cur_grouplist),HL
LD BC,5
LD DE,(playlist_active)
CALL LWRD ?US_DIV_L02
EX DE,HL
LD C,L
LD B,H
ADD HL,HL
ADD HL,HL
ADD HL,BC
LD (IX-10),L
LD (IX-9),H
LD BC,4
ADD HL,BC
PUSH HL
POP IY
RET
?0076:
LD (playlist_active),HL
LD BC,5
EX DE,HL
CALL LWRD ?US_DIV_L02
LD HL,(cur_grouplist)
AND A
SBC HL,DE
RET
DmaCpy:
; 213.
; 214.
; 215.
; 216.
; 217. static void DmaCpy(WORD descadd, BYTE descpg, WORD srcadd, BYTE srcpg, WORD Length)
; 218. {
CALL LWRD ?ENT_PARM_DIRECT_L09
; 219. output8(REG14_DMA2SRCAddr0, (BYTE)(srcadd));
LD A,(IX+8)
OUT (20),A
; 220. output8(REG15_DMA2SRCAddr1, (BYTE)(srcadd >> 8));
LD A,(IX+9)
OUT (21),A
; 221. output8(REG16_DMA2SRCAddr2, 0x00);
XOR A
OUT (22),A
; 222. output8(REG17_DMA2SRCAddr3, 0x40); //IDM/IPM/ZRAM2
LD A,64
OUT (23),A
; 223. output8(REG18_DMA2SRCAddrIntSramReg, srcpg); //ZRAM2PAGE
LD A,(IX+10)
OUT (24),A
; 224. output8(REG19_DMA2DSTAddr0, (BYTE)(descadd));
LD A,E
OUT (25),A
; 225. output8(REG1A_DMA2DSTAddr1, (BYTE)(descadd >> 8));
EX DE,HL
LD A,H
OUT (26),A
; 226. output8(REG1B_DMA2DSTAddr2, 0x00);
XOR A
OUT (27),A
; 227. output8(REG1C_DMA2DSTAddr3, 0x40); //IDM/IPM/ZRAM2
LD A,64
OUT (28),A
; 228. output8(REG1D_DMA2DSTAddrIntSram, descpg); //IDMHPAGE_06
LD A,C
OUT (29),A
; 229. output8(REG1E_DMA2ByteCounterLow, (BYTE)(Length));
LD A,(IX+12)
OUT (30),A
; 230. output8(REG1F_DMA2ByteCounterHi, (BYTE)(Length >> 8));
LD A,(IX+13)
OUT (31),A
; 231. output8(REG20_DMA2Mode, 0x00);
XOR A
OUT (32),A
; 232. output8(REG21_DMA2CMD, 0x01);
LD A,1
OUT (33),A
?0066:
; 233. while( input8(REG21_DMA2CMD)&0x01 != 0x00 ) {}
IN A,(33)
BIT 0,A
JR NZ,?0066
?0067:
; 234. return;
?0065:
; 235. }
JP LWRD ?LEAVE_DIRECT_L09
RSEG UDATA0
playlist_active:
DEFS 2
cur_grouplist:
DEFS 2
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -