userlist_del.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 527 行 · 第 1/2 页
LST
527 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:59:05 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_music\userlist_del.c #
# List file = d:\case_i_d913f\ap\ap_music\list\userlist_del.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\userlist_del.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\userlist_del.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\userlist_del.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME userlist_del(17)
\ 0000 RSEG APC_USERPL_DEL(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG APD_USERPL_DEL(0)
\ 0000 EXTERN FS_CD
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FOpen
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FSeek
\ 0000 EXTERN FS_FWrite
\ 0000 EXTERN FirstOffset
\ 0000 EXTERN LastOffset
\ 0000 EXTERN PlaylistCount
\ 0000 PUBLIC Read_Data
\ 0000 PUBLIC buff
\ 0000 PUBLIC fileA
\ 0000 PUBLIC fp1
\ 0000 EXTERN need_WPL
\ 0000 PUBLIC pl_list
\ 0000 PUBLIC save_offset1
\ 0000 PUBLIC user_pl_del
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_LSH_L02
\ 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 RSEG APC_USERPL_DEL
\ 0000 Read_Data:
1 #include "ap_music.h"
2 #ifdef ACTIVE_USERPL
3 #pragma memory=dataseg(APD_USERPL_DEL)
4 char buff[512];
5 char fileA[12];
6 user_playlist_t pl_list;
7 WORD save_offset1;
8 handle fp1;
9 #pragma memory=default
10 #pragma codeseg(APC_USERPL_DEL)
11 BOOL Read_Data(WORD offset)
12 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FEFF DEFW 65534
13 char IO27;
14 IO27 = input8(0x27);
\ 0005 DB27 IN A,(39)
\ 0007 DD77FE LD (IX-2),A
15 output8(0x27,00);
\ 000A AF XOR A
\ 000B D327 OUT (39),A
16 if(save_offset1==0xffff)
\ 000D 2A3702 LD HL,(save_offset1)
\ 0010 7D LD A,L
\ 0011 A4 AND H
\ 0012 3C INC A
\ 0013 2824 JR Z,?0031
\ 0015 ?0002:
17 {
18 save_offset1 = offset/4;
19 }
20 else
\ 0015 ?0003:
21 {
22 if(save_offset1!=(offset/4))
\ 0015 DD6E02 LD L,(IX+2)
\ 0018 DD6603 LD H,(IX+3)
\ 001B CB3C SRL H
\ 001D CB1D RR L
\ 001F CB3C SRL H
\ 0021 CB1D RR L
\ 0023 ED4B3702 LD BC,(save_offset1)
\ 0027 A7 AND A
\ 0028 ED42 SBC HL,BC
\ 002A 284A JR Z,?0032
\ 002C ?0005:
23 {
24 FS_FWrite(buff,1,fp1);
\ 002C 2A3902 LD HL,(fp1)
\ 002F E5 PUSH HL
\ 0030 0E01 LD C,1
\ 0032 110000 LD DE,buff
\ 0035 CD0000 CALL LWRD FS_FWrite
\ 0038 E1 POP HL
25 save_offset1 = offset/4;
\ 0039 ?0031:
\ 0039 DD6E02 LD L,(IX+2)
\ 003C DD6603 LD H,(IX+3)
\ 003F CB3C SRL H
\ 0041 CB1D RR L
\ 0043 CB3C SRL H
\ 0045 CB1D RR L
\ 0047 223702 LD (save_offset1),HL
26 }
27 else
\ 004A ?0006:
28 {
29 output8(0x27,IO27);
30 return TRUE;
31 }
\ 004A ?0007:
\ 004A ?0004:
32 }
33 if(FS_FSeek(1+offset/4,FS_SEEK_FFROMSTART,fp1))
\ 004A 2A3902 LD HL,(fp1)
\ 004D E5 PUSH HL
\ 004E 0E00 LD C,0
\ 0050 C5 PUSH BC
\ 0051 DD5E02 LD E,(IX+2)
\ 0054 DD5603 LD D,(IX+3)
\ 0057 CB3A SRL D
\ 0059 CB1B RR E
\ 005B CB3A SRL D
\ 005D CB1B RR E
\ 005F 13 INC DE
\ 0060 41 LD B,C
\ 0061 CD0000 CALL LWRD FS_FSeek
\ 0064 E1 POP HL
\ 0065 E1 POP HL
\ 0066 B7 OR A
\ 0067 2816 JR Z,?0009
\ 0069 ?0008:
34 {
35 FS_FRead(buff,1,fp1);
\ 0069 2A3902 LD HL,(fp1)
\ 006C E5 PUSH HL
\ 006D 0E01 LD C,1
\ 006F 110000 LD DE,buff
\ 0072 CD0000 CALL LWRD FS_FRead
\ 0075 E1 POP HL
36 output8(0x27,IO27);
\ 0076 ?0032:
\ 0076 DD7EFE LD A,(IX-2)
\ 0079 D327 OUT (39),A
37 return TRUE;
\ 007B 2E01 LD L,1
38 }
\ 007D 1807 JR ?0010
\ 007F ?0009:
39 else
40 {
41 output8(0x27,IO27);
\ 007F DD7EFE LD A,(IX-2)
\ 0082 D327 OUT (39),A
42 return FALSE;
\ 0084 2E00 LD L,0
43 }
\ 0086 ?0010:
\ 0086 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
44 }
\ 0089 user_pl_del:
45
46 BOOL user_pl_del(WORD offset)
47 {
\ 0089 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 008C FAFF DEFW -6
\ 008E FDE5 PUSH IY
48 WORD next;
49 WORD prev;
50 WORD FreeList;
51 // char Backbuf[32];
52 char IO27 = input8(0x27);
\ 0090 DB27 IN A,(39)
\ 0092 DD77FE LD (IX-2),A
53 if(PlaylistCount==0)
\ 0095 2A0000 LD HL,(PlaylistCount)
\ 0098 7D LD A,L
\ 0099 B4 OR H
\ 009A 2859 JR Z,?0036
\ 009C ?0011:
54 return FALSE;
\ 009C ?0012:
55 need_WPL=TRUE;
\ 009C 3E01 LD A,1
\ 009E 320000 LD (need_WPL),A
56 memset(fileA,0x20,12);
\ 00A1 010C00 LD BC,12
\ 00A4 110002 LD DE,fileA
\ 00A7 212000 LD HL,32
\ 00AA CD0000 CALL LWRD ?MEMSET_L11
57 fileA[0]='U';
\ 00AD 3E55 LD A,85
\ 00AF 320002 LD (fileA),A
58 fileA[1]='S';
\ 00B2 3E53 LD A,83
\ 00B4 320102 LD (fileA+1),A
59 fileA[2]='E';
\ 00B7 3E45 LD A,69
\ 00B9 320202 LD (fileA+2),A
60 fileA[3]='R';
\ 00BC 3E52 LD A,82
\ 00BE 320302 LD (fileA+3),A
61 fileA[4]='P';
\ 00C1 3E50 LD A,80
\ 00C3 320402 LD (fileA+4),A
62 fileA[5]='L';
\ 00C6 3E4C LD A,76
\ 00C8 320502 LD (fileA+5),A
63 fileA[8]='P';
\ 00CB 3E50 LD A,80
\ 00CD 320802 LD (fileA+8),A
64 fileA[9]='L';
\ 00D0 3E4C LD A,76
\ 00D2 320902 LD (fileA+9),A
65 fileA[11]=0;
\ 00D5 AF XOR A
\ 00D6 320B02 LD (fileA+11),A
66 output8(0x27,0x00);
\ 00D9 D327 OUT (39),A
67 // FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
68 FS_CD(FS_CD_ROOT);
\ 00DB 110000 LD DE,?0013
\ 00DE CD0000 CALL LWRD FS_CD
69 fp1=FS_FOpen(fileA,0);
\ 00E1 0E00 LD C,0
\ 00E3 110002 LD DE,fileA
\ 00E6 CD0000 CALL LWRD FS_FOpen
\ 00E9 223902 LD (fp1),HL
70
71 if(fp1==NULL)
\ 00EC 7D LD A,L
\ 00ED B4 OR H
\ 00EE DD7EFE LD A,(IX-2)
\ 00F1 D327 OUT (39),A
\ 00F3 2005 JR NZ,?0015
\ 00F5 ?0014:
72 {
73 // FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
74 output8(0x27,IO27);
75 return FALSE ;
\ 00F5 ?0036:
\ 00F5 2E00 LD L,0
76 }
\ 00F7 C32102 JP LWRD ?0030
\ 00FA ?0015:
77 output8(0x27,IO27);
78 PlaylistCount--;
\ 00FA 2A0000 LD HL,(PlaylistCount)
\ 00FD 2B DEC HL
\ 00FE 220000 LD (PlaylistCount),HL
79 //先处理最后item
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?