📄 sub_function2.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:00:48 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_music\sub_function2.c #
# List file = d:\case_i_d90f\ap\ap_music\list\sub_function2.lst #
# Object file = d:\case_i_d90f\ap\ap_music\obj\sub_function2.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\sub_function2.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w #
# -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_music\List\ #
# -ND:\case_i_d90f\ap\ap_music\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\AP\AP_MUSIC\sub_function2.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sub_function2(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(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 PUBLIC DealForDRMsong
\ 0000 EXTERN DisablePA
\ 0000 EXTERN DisplayErrMsg
\ 0000 PUBLIC DisplayTimeRollback
\ 0000 EXTERN EnableDAC
\ 0000 EXTERN EnablePA
\ 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_introCNT
\ 0000 EXTERN g_introCntMode
\ 0000 EXTERN g_lyricflag
\ 0000 EXTERN g_music_vars
\ 0000 EXTERN g_result
\ 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 slider
\ 0000 EXTERN speed_callback
\ 0000 PUBLIC temp_buffer
\ 0000 EXTERN ui_auto_update
\ 0000 EXTERN ui_dialog
\ 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 CODE
\ 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 //extern bool ActiveDriveOK;
18
19 char temp_buffer[6] = { 0 };
20 void OutPutVolume(int vol);
21 int DealForDRMsong(void);
22 int ui_dialog(dialog_t *dialog,int string_id);
23 BOOL GetAPEInfoByNo(char *filename, ID3Info_t *ID3, BYTE mode);
24
25 void CheckVolumeLimit( void )
26 {
\ 0000 C5 PUSH BC
27 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,?0135
\ 000B EE80 XOR 128
\ 000D ?0135:
\ 000D F21500 JP P,?0003
\ 0010 ?0002:
\ 0010 3E1F LD A,31
\ 0012 320000 LD (g_music_vars),A
\ 0015 ?0003:
28
29 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:
30 }
\ 0020 C1 POP BC
\ 0021 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0024 CheckPlayrateLimit:
31
32 void CheckPlayrateLimit( void )
33 {
\ 0024 C5 PUSH BC
34 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,?0136
\ 002F EE80 XOR 128
\ 0031 ?0136:
\ 0031 F23900 JP P,?0007
\ 0034 ?0006:
35 {
36 g_music_vars.play_rate = 8;
\ 0034 3E08 LD A,8
\ 0036 320300 LD (g_music_vars+3),A
\ 0039 ?0007:
37 }
38 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:
39 {
40 g_music_vars.play_rate = -8;
\ 0042 3EF8 LD A,248
\ 0044 320300 LD (g_music_vars+3),A
\ 0047 ?0009:
41 }
42 }
\ 0047 C1 POP BC
\ 0048 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 004B CheckReplaygapLimit:
43
44 void CheckReplaygapLimit( void )
45 {
\ 004B C5 PUSH BC
46 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:
47 {
48 g_music_vars.replaygap = 1;
\ 0053 3E01 LD A,1
\ 0055 320500 LD (g_music_vars+5),A
\ 0058 ?0011:
49 }
50 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:
51 {
52 g_music_vars.replaygap = 10;
\ 005E 320500 LD (g_music_vars+5),A
\ 0061 ?0013:
53 }
54 }
\ 0061 C1 POP BC
\ 0062 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0065 CheckReplaytimesLimit:
55
56 void CheckReplaytimesLimit( void )
57 {
\ 0065 C5 PUSH BC
58 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:
59 {
60 g_music_vars.replaytimes = 1;
\ 006D 3E01 LD A,1
\ 006F 320400 LD (g_music_vars+4),A
\ 0072 ?0015:
61 }
62 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:
63 {
64 g_music_vars.replaytimes = 10;
\ 0078 320400 LD (g_music_vars+4),A
\ 007B ?0017:
65 }
66 }
\ 007B C1 POP BC
\ 007C C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 007F CheckMusicType:
67
68 //-------------------------------------
69 /*
70 ********************************************************************************
71 * void StartIntro( bool mode )
72 *
73 * Description : 启动INTRO模式 mode = true 为 从头开始 = false 为从当前开始
74 *
75 * Arguments : bool mode
76 *
77 * Returns : void
78 *
79 * Notes :
80 *
81 ********************************************************************************
82 */
83 //
84 //void StartIntro( bool mode )
85 //{
86 // g_introCntMode = mode;
87 // /* 用来比较出秒的变化 */
88 // //g_OldSecTempBackup = 0;
89 // g_OldSecTempBackup = g_music_vars.BreakPTDisTime.second;
90 // g_introCNT = 0;
91 //}
92 //
93 /*
94 ********************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -