ui_play.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,122 行 · 第 1/4 页
LST
1,122 行
\ 00BC AF XOR A
\ 00BD 320900 LD (err_id),A
\ 00C0 ?0151:
\ 00C0 DD36FC01 LD (IX-4),1
\ 00C4 ?0029:
83
84 while(1)
85 {
86 if(need_draw)
\ 00C4 DDB6FC OR (IX-4)
\ 00C7 CA7E01 JP Z,?0057
\ 00CA ?0031:
87 {
88 SetBackgdColor(Color_BLACK_def);
\ 00CA CD4202 CALL LWRD ?0167
89 //fselGetByNO(g_viewpic_vars.location.filename, active+1);
90 BankSwitch((ulong)address_24_of(PicViewInit) >> 16);
91 fp=FS_FOpen(g_viewpic_vars.location.filename,FS_OPEN_NORMAL);
92 PictureType=CheckPicType(g_viewpic_vars.location.filename);
93 ClearScreen(NULL);
94 tmp=JpegDec(&Dscinf,PictureType,fp,0); // decoder the jpeg file
\ 00CD 0E00 LD C,0
\ 00CF C5 PUSH BC
\ 00D0 2A0700 LD HL,(fp)
\ 00D3 E5 PUSH HL
\ 00D4 ED4B1D00 LD BC,(PictureType)
\ 00D8 110000 LD DE,Dscinf
\ 00DB CD0000 CALL LWRD JpegDec
\ 00DE E1 POP HL
\ 00DF E1 POP HL
\ 00E0 DD77FD LD (IX-3),A
95 FS_FClose(fp);
\ 00E3 ED5B0700 LD DE,(fp)
\ 00E7 CD0000 CALL LWRD FS_FClose
96 if(tmp==0)
\ 00EA AF XOR A
\ 00EB DDB6FD OR (IX-3)
\ 00EE 2008 JR NZ,?0034
\ 00F0 ?0033:
97 {
98 err_id=1;
\ 00F0 3E01 LD A,1
\ 00F2 320900 LD (err_id),A
99 return 0;
\ 00F5 C31902 JP LWRD ?0150
100 }
\ 00F8 ?0034:
101 need_draw = FALSE;
\ 00F8 DD36FC00 LD (IX-4),0
102 if(tmp==55)
\ 00FC FE37 CP 55
\ 00FE 2033 JR NZ,?0036
\ 0100 ?0035:
103 {
104 if(active > 0)active--;
\ 0100 ED4B0000 LD BC,(active)
\ 0104 210000 LD HL,0
\ 0107 F680 OR 128
\ 0109 ED42 SBC HL,BC
\ 010B E20F01 JP PO,?0140
\ 010E AC XOR H
\ 010F ?0140:
\ 010F F21601 JP P,?0038
\ 0112 ?0037:
\ 0112 69 LD L,C
\ 0113 60 LD H,B
\ 0114 1803 JR ?0144
105 else
\ 0116 ?0038:
106 active = g_file_total - 1;
\ 0116 2A0000 LD HL,(g_file_total)
\ 0119 ?0144:
\ 0119 2B DEC HL
\ 011A 220000 LD (active),HL
\ 011D ?0039:
107 need_draw = TRUE;
108 sel_prev(TRUE);
\ 011D 1E01 LD E,1
\ 011F 3E00 LD A,BYTE3 sel_prev
\ 0121 210000 LD HL,LWRD sel_prev
\ 0124 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0127 DD36FC01 LD (IX-4),1
\ 012B ?0041:
109 //清除多出的HOLD消息,防止按键停了还跳几曲
110 while(ap_get_message() != 0);
\ 012B CD0000 CALL LWRD ap_get_message
\ 012E B7 OR A
\ 012F 2893 JR Z,?0029
\ 0131 ?0042:
111 continue;
\ 0131 18F8 JR ?0041
\ 0133 ?0040:
\ 0133 ?0036:
112 }
113
114 if(tmp==56)
\ 0133 FE38 CP 56
\ 0135 202C JR NZ,?0044
\ 0137 ?0043:
115 {
116 if(active < g_file_total - 1)active++;
\ 0137 ED4B0000 LD BC,(g_file_total)
\ 013B 0B DEC BC
\ 013C 2A0000 LD HL,(active)
\ 013F F680 OR 128
\ 0141 ED42 SBC HL,BC
\ 0143 E24701 JP PO,?0141
\ 0146 AC XOR H
\ 0147 ?0141:
\ 0147 F25001 JP P,?0046
\ 014A ?0045:
\ 014A 2A0000 LD HL,(active)
\ 014D 23 INC HL
\ 014E 1803 JR ?0145
117 else
\ 0150 ?0046:
118 active = 0;
\ 0150 210000 LD HL,0
\ 0153 ?0145:
\ 0153 ?0047:
119 need_draw = TRUE;
120 sel_next(TRUE);
\ 0153 CD7102 CALL LWRD ?0168
\ 0156 DD36FC01 LD (IX-4),1
\ 015A ?0049:
121 //清除多出的HOLD消息,防止按键停了还跳几曲
122 while(ap_get_message() != 0);
\ 015A CD0000 CALL LWRD ap_get_message
\ 015D B7 OR A
\ 015E CAC400 JP Z,?0029
\ 0161 ?0050:
123 continue;
\ 0161 18F7 JR ?0049
\ 0163 ?0048:
\ 0163 ?0044:
124 }
125
126 if(tmp==57)return 0;
\ 0163 FE39 CP 57
\ 0165 CA1902 JP Z,?0150
\ 0168 ?0051:
\ 0168 ?0052:
127
128 if(tmp == RESULT_REDRAW) need_draw = TRUE;
\ 0168 FE32 CP 50
\ 016A 2006 JR NZ,?0054
\ 016C ?0053:
\ 016C DD36FC01 LD (IX-4),1
129 else
\ 0170 180C JR ?0057
\ 0172 ?0054:
130 {
131 if(tmp!=1)return tmp;
\ 0172 47 LD B,A
\ 0173 05 DEC B
\ 0174 2808 JR Z,?0057
\ 0176 ?0056:
\ 0176 DD6EFD LD L,(IX-3)
\ 0179 2600 LD H,0
132 }
\ 017B C33702 JP LWRD ?0083
\ 017E ?0057:
\ 017E ?0055:
\ 017E ?0032:
133 }
134
135 key=ap_get_message(); // get the user message
\ 017E CD7E02 CALL LWRD ?0169
136 switch(key)
\ 0181 CD0000 CALL LWRD ?S_V_SWITCH_L06
\ 0184 0600 DEFW 6
\ 0186 0500 DEFW 5
\ 0188 0600 DEFW 6
\ 018A 2100 DEFW 33
\ 018C 3700 DEFW 55
\ 018E 4500 DEFW 69
\ 0190 4600 DEFW 70
\ 0192 1E02 DEFW ?0076
\ 0194 D301 DEFW ?0066
\ 0196 A001 DEFW ?0059
\ 0198 FE01 DEFW ?0074
\ 019A 1902 DEFW ?0150
\ 019C D301 DEFW ?0066
\ 019E A001 DEFW ?0059
\ 01A0 ?0059:
137 {
138 case AP_KEY_PREV :
139 case AP_KEY_PREV | AP_KEY_HOLD:
140 if(active > 0)active--;
\ 01A0 ED4B0000 LD BC,(active)
\ 01A4 6A LD L,D
\ 01A5 62 LD H,D
\ 01A6 F680 OR 128
\ 01A8 ED42 SBC HL,BC
\ 01AA E2AE01 JP PO,?0142
\ 01AD AC XOR H
\ 01AE ?0142:
\ 01AE F2B501 JP P,?0061
\ 01B1 ?0060:
\ 01B1 69 LD L,C
\ 01B2 60 LD H,B
\ 01B3 1803 JR ?0146
141 else
\ 01B5 ?0061:
142 active = g_file_total - 1;
\ 01B5 2A0000 LD HL,(g_file_total)
\ 01B8 ?0146:
\ 01B8 2B DEC HL
\ 01B9 220000 LD (active),HL
\ 01BC ?0062:
143 need_draw = TRUE;
144 sel_prev(TRUE);
\ 01BC 1E01 LD E,1
\ 01BE 3E00 LD A,BYTE3 sel_prev
\ 01C0 210000 LD HL,LWRD sel_prev
\ 01C3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01C6 DD36FC01 LD (IX-4),1
\ 01CA ?0064:
145 //清除多出的HOLD消息,防止按键停了还跳几曲
146 while(ap_get_message() != 0);
\ 01CA CD0000 CALL LWRD ap_get_message
\ 01CD B7 OR A
\ 01CE CAC400 JP Z,?0029
\ 01D1 ?0065:
147 //need_draw=TRUE; // set the decoer flag
148 break;
\ 01D1 18F7 JR ?0064
\ 01D3 ?0063:
\ 01D3 ?0066:
149 case AP_KEY_NEXT :
150 case AP_KEY_NEXT | AP_KEY_HOLD:
151 if(active < g_file_total - 1)active++;
\ 01D3 ED4B0000 LD BC,(g_file_total)
\ 01D7 0B DEC BC
\ 01D8 2A0000 LD HL,(active)
\ 01DB F680 OR 128
\ 01DD ED42 SBC HL,BC
\ 01DF E2E301 JP PO,?0143
\ 01E2 AC XOR H
\ 01E3 ?0143:
\ 01E3 F2EC01 JP P,?0068
\ 01E6 ?0067:
\ 01E6 2A0000 LD HL,(active)
\ 01E9 23 INC HL
\ 01EA 1802 JR ?0147
152 else
\ 01EC ?0068:
153 active = 0;
\ 01EC 6A LD L,D
\ 01ED 62 LD H,D
\ 01EE ?0147:
\ 01EE ?0069:
154 need_draw = TRUE;
155 sel_next(TRUE);
\ 01EE CD7102 CALL LWRD ?0168
\ 01F1 DD36FC01 LD (IX-4),1
\ 01F5 ?0071:
156 //清除多出的HOLD消息,防止按键停了还跳几曲
157 while(ap_get_message() != 0);
\ 01F5 CD0000 CALL LWRD ap_get_message
\ 01F8 B7 OR A
\ 01F9 CAC400 JP Z,?0029
\ 01FC ?0072:
158 break;
\ 01FC 18F7 JR ?0071
\ 01FE ?0070:
\ 01FE ?0073:
159 case AP_KEY_PLAY | AP_KEY_UP:
160 return 0;
161
162 case AP_MSG_SD_OUT:
\ 01FE ?0074:
163 if (g_viewpic_vars.location.disk == 'H')
\ 01FE 3A0400 LD A,(g_viewpic_vars+4)
\ 0201 FE48 CP 72
\ 0203 2019 JR NZ,?0076
\ 0205 ?0075:
164 {
165 g_viewpic_vars.location.disk = 'C';
\ 0205 3E43 LD A,67
\ 0207 320400 LD (g_viewpic_vars+4),A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?