ui_userlist.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,141 行 · 第 1/4 页
LST
1,141 行
91 output8(0x27,IO27);
92 return TRUE;
93 }
\ 00F2 ?0018:
\ 00F2 ?0015:
94 }
95 if(FS_FSeek(1+offset/4,FS_SEEK_FFROMSTART,fpview))
\ 00F2 2AC002 LD HL,(fpview)
\ 00F5 E5 PUSH HL
\ 00F6 0E00 LD C,0
\ 00F8 C5 PUSH BC
\ 00F9 CB3A SRL D
\ 00FB CB1B RR E
\ 00FD CB3A SRL D
\ 00FF CB1B RR E
\ 0101 13 INC DE
\ 0102 41 LD B,C
\ 0103 CD0000 CALL LWRD FS_FSeek
\ 0106 E1 POP HL
\ 0107 E1 POP HL
\ 0108 B7 OR A
\ 0109 2818 JR Z,?0020
\ 010B ?0019:
96 {
97 FS_FRead(vbuff,1,fpview);
\ 010B 2AC002 LD HL,(fpview)
\ 010E E5 PUSH HL
\ 010F 0E01 LD C,1
\ 0111 110000 LD DE,vbuff
\ 0114 CD0000 CALL LWRD FS_FRead
\ 0117 E1 POP HL
98 output8(0x27,IO27);
\ 0118 ?0100:
\ 0118 210000 LD HL,0
\ 011B 39 ADD HL,SP
\ 011C 7E LD A,(HL)
\ 011D D327 OUT (39),A
99 return TRUE;
\ 011F 2E01 LD L,1
100 }
\ 0121 1808 JR ?0021
\ 0123 ?0020:
101 else
102 {
103 output8(0x27,IO27);
\ 0123 6F LD L,A
\ 0124 67 LD H,A
\ 0125 39 ADD HL,SP
\ 0126 7E LD A,(HL)
\ 0127 D327 OUT (39),A
104 return FALSE;
\ 0129 2E00 LD L,0
105 }
\ 012B ?0021:
\ 012B F1 POP AF
\ 012C DDE1 POP IX
\ 012E C1 POP BC
\ 012F C30000 JP LWRD ?BANK_FAST_LEAVE_L08
106 }
\ 0132 Process_onePage:
107
108 void Process_onePage(WORD *offset,char direct,char last_one)
109 {
\ 0132 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0135 FEFF DEFW -2
\ 0137 FDE5 PUSH IY
110 WORD temp;
111 char i;
112 ui_Read_Data(*offset);
\ 0139 CD0002 CALL LWRD ?0109
113 if(direct==0)
\ 013C 0C INC C
\ 013D 0D DEC C
\ 013E 2005 JR NZ,?0023
\ 0140 ?0022:
114 i=0;
\ 0140 DD71FE LD (IX-2),C
115 else
\ 0143 1811 JR ?0027
\ 0145 ?0023:
116 {
117 if(last_one==0)
\ 0145 AF XOR A
\ 0146 DDB60A OR (IX+10)
\ 0149 2006 JR NZ,?0026
\ 014B ?0025:
118 i=MENU_GROUP-1;
\ 014B DD36FE05 LD (IX-2),5
119 else
\ 014F 1805 JR ?0027
\ 0151 ?0026:
120 i=last_one-1;
\ 0151 C6FF ADD A,255
\ 0153 DD77FE LD (IX-2),A
\ 0156 ?0027:
\ 0156 ?0024:
\ 0156 ?0029:
121 }
122 while(1)
123 {
124 temp = (*offset%4)*USER_PLAYLIST_SIZE;
\ 0156 DD6E02 LD L,(IX+2)
\ 0159 DD6603 LD H,(IX+3)
\ 015C 7E LD A,(HL)
\ 015D E603 AND 3
\ 015F 6F LD L,A
\ 0160 2600 LD H,0
\ 0162 EB EX DE,HL
\ 0163 0607 LD B,7
\ 0165 CD0000 CALL LWRD ?S_LSH_L02
\ 0168 D5 PUSH DE
\ 0169 FDE1 POP IY
125 memcpy(disbuff+i*30,vbuff+temp+43,25);
\ 016B 011900 LD BC,25
\ 016E DD5EFE LD E,(IX-2)
\ 0171 50 LD D,B
\ 0172 0E1E LD C,30
\ 0174 CD0000 CALL LWRD ?S_MUL_L02
\ 0177 210002 LD HL,disbuff
\ 017A 19 ADD HL,DE
\ 017B EB EX DE,HL
\ 017C 212B00 LD HL,vbuff+43
\ 017F FDE5 PUSH IY
\ 0181 C1 POP BC
\ 0182 09 ADD HL,BC
\ 0183 011900 LD BC,25
\ 0186 EDB0 LDIR
126 memcpy(disbuff+i*30+26,vbuff+temp+39,4);
\ 0188 211A02 LD HL,disbuff+26
\ 018B DD5EFE LD E,(IX-2)
\ 018E 50 LD D,B
\ 018F 0E1E LD C,30
\ 0191 CD0000 CALL LWRD ?S_MUL_L02
\ 0194 19 ADD HL,DE
\ 0195 EB EX DE,HL
\ 0196 212700 LD HL,vbuff+39
\ 0199 FDE5 PUSH IY
\ 019B C1 POP BC
\ 019C 09 ADD HL,BC
\ 019D 010400 LD BC,4
\ 01A0 EDB0 LDIR
127 if(direct==0)
\ 01A2 AF XOR A
\ 01A3 DDB604 OR (IX+4)
\ 01A6 DD6E02 LD L,(IX+2)
\ 01A9 DD6603 LD H,(IX+3)
\ 01AC 46 LD B,(HL)
\ 01AD 23 INC HL
\ 01AE 66 LD H,(HL)
\ 01AF 68 LD L,B
\ 01B0 201F JR NZ,?0032
\ 01B2 ?0031:
128 {
129 if(*offset!=vLastOffset)
\ 01B2 ED4BC402 LD BC,(vLastOffset)
\ 01B6 ED42 SBC HL,BC
\ 01B8 2841 JR Z,?0028
\ 01BA ?0033:
130 memcpy(offset,vbuff+temp+41,2);
\ 01BA DD5E02 LD E,(IX+2)
\ 01BD DD5603 LD D,(IX+3)
\ 01C0 212900 LD HL,vbuff+41
\ 01C3 FDE5 PUSH IY
\ 01C5 C1 POP BC
\ 01C6 09 ADD HL,BC
\ 01C7 010200 LD BC,2
\ 01CA EDB0 LDIR
131 else
\ 01CC ?0034:
132 break;
\ 01CC ?0035:
133 i++;
\ 01CC DD34FE INC (IX-2)
134
135 }
136 else
\ 01CF 181D JR ?0036
\ 01D1 ?0032:
137 {
138 if(*offset!=vFirstOffset)
\ 01D1 ED4BC202 LD BC,(vFirstOffset)
\ 01D5 ED42 SBC HL,BC
\ 01D7 2822 JR Z,?0028
\ 01D9 ?0037:
139 memcpy(offset,vbuff+temp+39,2);
\ 01D9 DD5E02 LD E,(IX+2)
\ 01DC DD5603 LD D,(IX+3)
\ 01DF 212700 LD HL,vbuff+39
\ 01E2 FDE5 PUSH IY
\ 01E4 C1 POP BC
\ 01E5 09 ADD HL,BC
\ 01E6 010200 LD BC,2
\ 01E9 EDB0 LDIR
140 else
\ 01EB ?0038:
141 break;
\ 01EB ?0039:
142 i--;
\ 01EB DD35FE DEC (IX-2)
\ 01EE ?0036:
143 }
144 if(i>=MENU_GROUP)
\ 01EE DD7EFE LD A,(IX-2)
\ 01F1 FE06 CP 6
\ 01F3 3006 JR NC,?0028
\ 01F5 ?0040:
145 break;
\ 01F5 ?0041:
146 if(i<0)
\ 01F5 ?0042:
147 break;
\ 01F5 ?0043:
148 ui_Read_Data(*offset);
\ 01F5 CD0002 CALL LWRD ?0109
149 }
150 }
\ 01F8 C35601 JP LWRD ?0027
\ 01FB ?0028:
\ 01FB FDE1 POP IY
\ 01FD C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0200 ?0109:
\ 0200 DD6E02 LD L,(IX+2)
\ 0203 DD6603 LD H,(IX+3)
\ 0206 5E LD E,(HL)
\ 0207 23 INC HL
\ 0208 56 LD D,(HL)
\ 0209 3E00 LD A,BYTE3 ui_Read_Data
\ 020B 21B700 LD HL,LWRD ui_Read_Data
\ 020E C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0211 ui_userplaylist:
151
152 int ui_userplaylist(file_location_t *location,char type)
153 {
\ 0211 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0214 F4FF DEFW -12
\ 0216 FDE5 PUSH IY
154 char old_active,new_active;
155 char key;
156 WORD g_list_count;
157 BOOL need_read=TRUE;
158 BOOL need_draw=TRUE;
159 char direct=0;
160 char list_num;
161 char last_list =0;
162 WORD CurOffset;
163 char IO27 = input8(0x27);
\ 0218 DB27 IN A,(39)
\ 021A DD77F7 LD (IX-9),A
164 vsave_offset = 0xFFFF;
\ 021D 21FFFF LD HL,65535
\ 0220 22C802 LD (vsave_offset),HL
165 if(!Open_view())
\ 0223 DD36F901 LD (IX-7),1
\ 0227 DD36F501 LD (IX-11),1
\ 022B DD36FB00 LD (IX-5),0
\ 022F DD36FE00 LD (IX-2),0
\ 0233 3E00 LD A,BYTE3 Open_view
\ 0235 210000 LD HL,LWRD Open_view
\ 0238 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 023B 2C INC L
\ 023C 2D DEC L
\ 023D CA9904 JP Z,?0104
\ 0240 ?0044:
166 return RESULT_IGNORE;
\ 0240 ?0045:
167 CurOffset = vFirstOffset;
\ 0240 2AC202 LD HL,(vFirstOffset)
\ 0243 DD75FC LD (IX-4),L
\ 0246 DD74FD LD (IX-3),H
168 new_active=0;
169 old_active = 0;
170 g_list_count = 0;
171 //Process_onePage(&CurOffset,0);
172 list_num =vTotal-g_list_count;
\ 0249 3AC602 LD A,(vTotal)
\ 024C DD77F8 LD (IX-8),A
\ 024F DD36F400 LD (IX-12),0
\ 0253 DD36F600 LD (IX-10),0
\ 0257 FD210000 LD IY,0
\ 025B ?0047:
173
174 while(1)
175 {
176 if(need_read)
\ 025B AF XOR A
\ 025C DDB6F9 OR (IX-7)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?