sub_function2.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,392 行 · 第 1/5 页
LST
1,392 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:57:17 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_music\sub_function2.c #
# List file = d:\case_i_d913f\ap\ap_music\list\sub_function2.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\sub_function2.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\sub_function2.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\sub_function2.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sub_function2(17)
\ 0000 RSEG AP_SUB_FUN2(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 RSEG AP_FUN2_CONST(0)
\ 0000 EXTERN BankSwitch
\ 0000 PUBLIC ChangeVolume
\ 0000 PUBLIC CheckMusicType
\ 0000 PUBLIC CheckPlayrateLimit
\ 0000 PUBLIC CheckReplaygapLimit
\ 0000 PUBLIC CheckReplaytimesLimit
\ 0000 PUBLIC CheckVolumeLimit
\ 0000 EXTERN ClearScreen
\ 0000 PUBLIC ClearTimePara
\ 0000 PUBLIC ClosePA
\ 0000 EXTERN DisablePA
\ 0000 PUBLIC DisplayTimeRollback
\ 0000 EXTERN EnableDAC
\ 0000 EXTERN EnablePA
\ 0000 PUBLIC ExtMusicstr
\ 0000 EXTERN FS_Backup
\ 0000 EXTERN FS_CD
\ 0000 EXTERN FS_GetName
\ 0000 EXTERN FS_Restore
\ 0000 EXTERN GetAPEInfoByNo
\ 0000 EXTERN GetDefaultComval
\ 0000 PUBLIC GetInformation
\ 0000 EXTERN OutPutVolume
\ 0000 EXTERN RePlayStatus
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN UpDisplayFlag
\ 0000 EXTERN VMRead
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN ap_sleep
\ 0000 EXTERN dir_name
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN g_OldSecTempBackup
\ 0000 EXTERN g_PAOpenFlag
\ 0000 EXTERN g_PowerOffFlag
\ 0000 EXTERN g_TagInfoBuf
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_currentMusicType
\ 0000 EXTERN g_from_browser
\ 0000 EXTERN g_introCNT
\ 0000 EXTERN g_introCntMode
\ 0000 EXTERN g_lyricflag
\ 0000 EXTERN g_music_vars
\ 0000 EXTERN g_result
\ 0000 EXTERN list
\ 0000 EXTERN lyricLoad
\ 0000 EXTERN lyricQueryExist
\ 0000 PUBLIC make_dirname
\ 0000 EXTERN mp3GetID3Info
\ 0000 EXTERN musicpSendCommand
\ 0000 EXTERN need_draw
\ 0000 PUBLIC openDAC
\ 0000 PUBLIC openPA
\ 0000 PUBLIC read_var
\ 0000 EXTERN return_to_play
\ 0000 EXTERN speed_callback
\ 0000 PUBLIC temp_buffer
\ 0000 EXTERN ui_auto_update
\ 0000 EXTERN ui_slider
\ 0000 EXTERN unitochar
\ 0000 EXTERN volume_callback
\ 0000 EXTERN wmaGetTAGInfo
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 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 ?STRCPY_L11
\ 0000 EXTERN ?STRCAT_L11
\ 0000 EXTERN ?MEMSET_L11
\ 0000 EXTERN ?STRCMP_L11
\ 0000 RSEG AP_SUB_FUN2
\ 0000 CheckVolumeLimit:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * This program demostrates how to build an AP
5 *
6 * (c) Copyright Actions Co,Ld.
7 *
8 * $Id: sub_function2.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
9 *******************************************************************************
10 */
11 #include "ap_music.h"
12
13 extern char g_TagInfoBuf[90];
14 extern SD_FILE* g_Resfp_Sav;
15 extern char return_to_play ;
16
17 char temp_buffer[9] = { 0 };
18 void OutPutVolume(int vol);
19 int DealForDRMsong(void);
20 int ui_dialog(dialog_t *dialog,int string_id);
21 BOOL GetAPEInfoByNo(char *filename, ID3Info_t *ID3, BYTE mode);
22 #pragma memory=constseg(AP_FUN2_CONST)
23 const char ExtMusicstr [] [4] =
24 {
25 "MP3", "WMA", "ASF", "WMV", "OGG", "APE"
26 };
27
28 #pragma memory=default
29 #pragma codeseg(AP_SUB_FUN2)
30 void CheckVolumeLimit( void )
31 {
\ 0000 C5 PUSH BC
32 if (g_music_vars.volume>31) g_music_vars.volume = 31;
\ 0001 3A0000 LD A,(g_music_vars)
\ 0004 47 LD B,A
\ 0005 3E1F LD A,31
\ 0007 90 SUB B
\ 0008 E20D00 JP PO,?0129
\ 000B EE80 XOR 128
\ 000D ?0129:
\ 000D F21500 JP P,?0003
\ 0010 ?0002:
\ 0010 3E1F LD A,31
\ 0012 320000 LD (g_music_vars),A
\ 0015 ?0003:
33
34 if (g_music_vars.volume<0) g_music_vars.volume = 0;
\ 0015 3A0000 LD A,(g_music_vars)
\ 0018 B7 OR A
\ 0019 F22000 JP P,?0005
\ 001C ?0004:
\ 001C AF XOR A
\ 001D 320000 LD (g_music_vars),A
\ 0020 ?0005:
35 }
\ 0020 C1 POP BC
\ 0021 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0024 CheckPlayrateLimit:
36
37 void CheckPlayrateLimit( void )
38 {
\ 0024 C5 PUSH BC
39 if (g_music_vars.play_rate > 8)
\ 0025 3A0300 LD A,(g_music_vars+3)
\ 0028 47 LD B,A
\ 0029 3E08 LD A,8
\ 002B 90 SUB B
\ 002C E23100 JP PO,?0130
\ 002F EE80 XOR 128
\ 0031 ?0130:
\ 0031 F23900 JP P,?0007
\ 0034 ?0006:
40 {
41 g_music_vars.play_rate = 8;
\ 0034 3E08 LD A,8
\ 0036 320300 LD (g_music_vars+3),A
\ 0039 ?0007:
42 }
43 if (g_music_vars.play_rate < -8)
\ 0039 3A0300 LD A,(g_music_vars+3)
\ 003C EE80 XOR 128
\ 003E FE78 CP 120
\ 0040 3005 JR NC,?0009
\ 0042 ?0008:
44 {
45 g_music_vars.play_rate = -8;
\ 0042 3EF8 LD A,248
\ 0044 320300 LD (g_music_vars+3),A
\ 0047 ?0009:
46 }
47 }
\ 0047 C1 POP BC
\ 0048 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 004B CheckReplaygapLimit:
48
49 void CheckReplaygapLimit( void )
50 {
\ 004B C5 PUSH BC
51 if (g_music_vars.replaygap<1)
\ 004C 3A0500 LD A,(g_music_vars+5)
\ 004F FE01 CP 1
\ 0051 3005 JR NC,?0011
\ 0053 ?0010:
52 {
53 g_music_vars.replaygap = 1;
\ 0053 3E01 LD A,1
\ 0055 320500 LD (g_music_vars+5),A
\ 0058 ?0011:
54 }
55 if (g_music_vars.replaygap>10)
\ 0058 47 LD B,A
\ 0059 3E0A LD A,10
\ 005B B8 CP B
\ 005C 3003 JR NC,?0013
\ 005E ?0012:
56 {
57 g_music_vars.replaygap = 10;
\ 005E 320500 LD (g_music_vars+5),A
\ 0061 ?0013:
58 }
59 }
\ 0061 C1 POP BC
\ 0062 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0065 CheckReplaytimesLimit:
60
61 void CheckReplaytimesLimit( void )
62 {
\ 0065 C5 PUSH BC
63 if (g_music_vars.replaytimes<1)
\ 0066 3A0400 LD A,(g_music_vars+4)
\ 0069 FE01 CP 1
\ 006B 3005 JR NC,?0015
\ 006D ?0014:
64 {
65 g_music_vars.replaytimes = 1;
\ 006D 3E01 LD A,1
\ 006F 320400 LD (g_music_vars+4),A
\ 0072 ?0015:
66 }
67 if (g_music_vars.replaytimes>10)
\ 0072 47 LD B,A
\ 0073 3E0A LD A,10
\ 0075 B8 CP B
\ 0076 3003 JR NC,?0017
\ 0078 ?0016:
68 {
69 g_music_vars.replaytimes = 10;
\ 0078 320400 LD (g_music_vars+4),A
\ 007B ?0017:
70 }
71 }
\ 007B C1 POP BC
\ 007C C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 007F CheckMusicType:
72
73 //-------------------------------------
74 /*
75 * Music_type_t CheckMusicType(char *filename)
76 *
77 * Description : 检测当前是哪种类型的MUSIC文件
78 *
79 * Arguments : char *filename 文件名
80 *
81 * Returns : Music_type_t 文件类型
82 *
83 * Notes :
84 *
85 ********************************************************************************
86 */
87 Music_type_t CheckMusicType( char * filename )
88 {
\ 007F C5 PUSH BC
\ 0080 DDE5 PUSH IX
\ 0082 F5 PUSH AF
\ 0083 F5 PUSH AF
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?