ui_userlist.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,141 行 · 第 1/4 页
LST
1,141 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:58:49 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_music\ui_userlist.c #
# List file = d:\case_i_d913f\ap\ap_music\list\ui_userlist.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\ui_userlist.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\ui_userlist.s01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_music\Obj\ -e -K #
# -w -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_music\List\ #
# -ND:\case_i_d913f\ap\ap_music\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# D:\CASE_I_D913F\AP\AP_MUSIC\ui_userlist.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_userlist(17)
\ 0000 RSEG AP_UI_PLAYLIST(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG APD_UI_PLAYLIST(0)
\ 0000 EXTERN FS_CD
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FOpen
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FSeek
\ 0000 EXTERN FirstOffset
\ 0000 EXTERN LastOffset
\ 0000 PUBLIC Open_view
\ 0000 EXTERN PlaylistCount
\ 0000 PUBLIC Process_onePage
\ 0000 EXTERN ScrollFlag
\ 0000 EXTERN WrHead_PL
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC disbuff
\ 0000 PUBLIC fpview
\ 0000 EXTERN g_music_vars
\ 0000 PUBLIC ui_Read_Data
\ 0000 PUBLIC ui_userplaylist
\ 0000 EXTERN ui_viewlist
\ 0000 EXTERN user_pl_del
\ 0000 PUBLIC vFirstOffset
\ 0000 PUBLIC vLastOffset
\ 0000 PUBLIC vTotal
\ 0000 PUBLIC vbuff
\ 0000 PUBLIC vfilename
\ 0000 PUBLIC vsave_offset
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?UC_MOD_L01
\ 0000 EXTERN ?S_LSH_L02
\ 0000 EXTERN ?US_MOD_L02
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 EXTERN ?MEMSET_L11
\ 0000 EXTERN ?MEMCMP_L11
\ 0000 RSEG AP_UI_PLAYLIST
\ 0000 Open_view:
1 #include "ap_music.h"
2 extern void ui_viewlist(char old_active,char new_active,char num,char type,bool scroll_flag);
3 extern BOOL Clear_PL(void);
4 extern char ScrollFlag; //滚动标志位
5 #pragma memory=dataseg(APD_UI_PLAYLIST)
6 char vbuff[512];
7 char disbuff[MENU_GROUP*30];
8 char vfilename[12];
9 handle fpview;
10 WORD vFirstOffset;
11 WORD vLastOffset;
12 WORD vTotal;
13 WORD vsave_offset;
14 #pragma memory=default
15 #pragma codeseg(AP_UI_PLAYLIST)
16 BOOL Open_view()
17 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FEFF DEFW 65534
18 char IO27;
19 // char Backbuf[32];
20 IO27 = input8(0x27);
\ 0005 DB27 IN A,(39)
\ 0007 DD77FE LD (IX-2),A
21 memset(vfilename,0x20,12);
\ 000A 010C00 LD BC,12
\ 000D 11B402 LD DE,vfilename
\ 0010 212000 LD HL,32
\ 0013 CD0000 CALL LWRD ?MEMSET_L11
22 vfilename[0]='U';
\ 0016 3E55 LD A,85
\ 0018 32B402 LD (vfilename),A
23 vfilename[1]='S';
\ 001B 3E53 LD A,83
\ 001D 32B502 LD (vfilename+1),A
24 vfilename[2]='E';
\ 0020 3E45 LD A,69
\ 0022 32B602 LD (vfilename+2),A
25 vfilename[3]='R';
\ 0025 3E52 LD A,82
\ 0027 32B702 LD (vfilename+3),A
26 vfilename[4]='P';
\ 002A 3E50 LD A,80
\ 002C 32B802 LD (vfilename+4),A
27 vfilename[5]='L';
\ 002F 3E4C LD A,76
\ 0031 32B902 LD (vfilename+5),A
28 vfilename[8]='P';
\ 0034 3E50 LD A,80
\ 0036 32BC02 LD (vfilename+8),A
29 vfilename[9]='L';
\ 0039 3E4C LD A,76
\ 003B 32BD02 LD (vfilename+9),A
30 vfilename[11]=0;
\ 003E AF XOR A
\ 003F 32BF02 LD (vfilename+11),A
31
32
33 // if(FS_Init())
34 // {
35 output8(0x27,00);
\ 0042 D327 OUT (39),A
36 // FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
37 FS_CD(FS_CD_ROOT);
\ 0044 110000 LD DE,?0002
\ 0047 CD0000 CALL LWRD FS_CD
38 fpview=FS_FOpen(vfilename,0);
\ 004A 0E00 LD C,0
\ 004C 11B402 LD DE,vfilename
\ 004F CD0000 CALL LWRD FS_FOpen
\ 0052 22C002 LD (fpview),HL
39 if(fpview == NULL)
\ 0055 7D LD A,L
\ 0056 B4 OR H
\ 0057 2854 JR Z,?0011
\ 0059 ?0003:
40 {
41 // FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
42 output8(0x27,IO27);
43 return FALSE;
44 }
\ 0059 ?0004:
45
46 if(FS_FRead(vbuff,1,fpview))
\ 0059 E5 PUSH HL
\ 005A 0E01 LD C,1
\ 005C 110000 LD DE,vbuff
\ 005F CD0000 CALL LWRD FS_FRead
\ 0062 E1 POP HL
\ 0063 B7 OR A
\ 0064 2847 JR Z,?0011
\ 0066 ?0005:
47 {
48 if(memcmp(vbuff,vfilename,6)==0)
\ 0066 010600 LD BC,6
\ 0069 110000 LD DE,vbuff
\ 006C 21B402 LD HL,vfilename
\ 006F CD0000 CALL LWRD ?MEMCMP_L11
\ 0072 7D LD A,L
\ 0073 B4 OR H
\ 0074 2037 JR NZ,?0011
\ 0076 ?0007:
49 {
50 memcpy(&vFirstOffset,vbuff+6,2);
\ 0076 0E02 LD C,2
\ 0078 11C202 LD DE,vFirstOffset
\ 007B 210600 LD HL,vbuff+6
\ 007E EDB0 LDIR
51 memcpy(&vLastOffset,vbuff+6+2,2);
\ 0080 03 INC BC
\ 0081 03 INC BC
\ 0082 11C402 LD DE,vLastOffset
\ 0085 210800 LD HL,vbuff+8
\ 0088 EDB0 LDIR
52 memcpy(&vTotal,vbuff+6+2+2,2);
\ 008A 03 INC BC
\ 008B 03 INC BC
\ 008C 11C602 LD DE,vTotal
\ 008F 210A00 LD HL,vbuff+10
\ 0092 EDB0 LDIR
53 if(vTotal == 0)
\ 0094 2AC602 LD HL,(vTotal)
\ 0097 7D LD A,L
\ 0098 B4 OR H
\ 0099 2009 JR NZ,?0010
\ 009B ?0009:
54 {
55 FS_FClose(fpview);
\ 009B ED5BC002 LD DE,(fpview)
\ 009F CD0000 CALL LWRD FS_FClose
56 }
57 else
\ 00A2 1809 JR ?0011
\ 00A4 ?0010:
58 {
59 // FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
60 output8(0x27,IO27);
\ 00A4 DD7EFE LD A,(IX-2)
\ 00A7 D327 OUT (39),A
61 return TRUE;
\ 00A9 2E01 LD L,1
62 }
\ 00AB 1807 JR ?0012
\ 00AD ?0011:
\ 00AD ?0008:
\ 00AD ?0006:
63 }
64 }
65 // }
66 //FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
67 output8(0x27,IO27);
\ 00AD DD7EFE LD A,(IX-2)
\ 00B0 D327 OUT (39),A
68 return FALSE;
\ 00B2 2E00 LD L,0
69
70 }
\ 00B4 ?0012:
\ 00B4 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 00B7 ui_Read_Data:
71
72 BOOL ui_Read_Data(WORD offset)
73 {
\ 00B7 C5 PUSH BC
\ 00B8 DDE5 PUSH IX
\ 00BA F5 PUSH AF
\ 00BB D5 PUSH DE
\ 00BC DDE1 POP IX
74 char IO27;
75 IO27 = input8(0x27);
\ 00BE DB27 IN A,(39)
\ 00C0 210000 LD HL,0
\ 00C3 39 ADD HL,SP
\ 00C4 77 LD (HL),A
76 output8(0x27,00);
\ 00C5 AF XOR A
\ 00C6 D327 OUT (39),A
77
78 if(vsave_offset==0xffff)
\ 00C8 2AC802 LD HL,(vsave_offset)
\ 00CB 7D LD A,L
\ 00CC A4 AND H
\ 00CD 3C INC A
\ 00CE 2814 JR Z,?0099
\ 00D0 ?0013:
79 {
80 vsave_offset = offset/4;
81 }
82 else
\ 00D0 ?0014:
83 {
84 if(vsave_offset!=(offset/4))
\ 00D0 DDE5 PUSH IX
\ 00D2 E1 POP HL
\ 00D3 CB3C SRL H
\ 00D5 CB1D RR L
\ 00D7 CB3C SRL H
\ 00D9 CB1D RR L
\ 00DB ED4BC802 LD BC,(vsave_offset)
\ 00DF A7 AND A
\ 00E0 ED42 SBC HL,BC
\ 00E2 2834 JR Z,?0100
\ 00E4 ?0016:
85 {
86
87 vsave_offset = offset/4;
\ 00E4 ?0099:
\ 00E4 DDE5 PUSH IX
\ 00E6 E1 POP HL
\ 00E7 CB3C SRL H
\ 00E9 CB1D RR L
\ 00EB CB3C SRL H
\ 00ED CB1D RR L
\ 00EF 22C802 LD (vsave_offset),HL
88 }
89 else
\ 00F2 ?0017:
90 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?