📄 main.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:39:41 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_amv\main.c #
# List file = d:\case_i_d913f\ap\ap_amv\list\main.lst #
# Object file = d:\case_i_d913f\ap\ap_amv\obj\main.r01 #
# ASM file = d:\case_i_d913f\ap\ap_amv\list\main.s01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_amv\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d913f\ap\ap_amv\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_amv\List\ #
# -ND:\case_i_d913f\ap\ap_amv\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\ap\ap_amv\main.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME main(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 PUBLIC ActiveDriveOK
\ 0000 EXTERN AmvDecSetCMD
\ 0000 EXTERN BankSwitch
\ 0000 EXTERN ClearScreen
\ 0000 PUBLIC Current_time
\ 0000 EXTERN DRV_ActiveDrive
\ 0000 EXTERN DRV_ActiveUD
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN DealErrCase
\ 0000 EXTERN DisableDAC
\ 0000 EXTERN DisablePA
\ 0000 EXTERN InitFileSelector
\ 0000 PUBLIC PlayStatus
\ 0000 EXTERN ResClose
\ 0000 EXTERN ResOpen
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 PUBLIC Total_time
\ 0000 PUBLIC Totaltime
\ 0000 EXTERN VMWrite
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_sleep
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselInit
\ 0000 PUBLIC g_2HZFlag
\ 0000 PUBLIC g_2HZ_CNT
\ 0000 PUBLIC g_BatteryType
\ 0000 PUBLIC g_DiskStateFlag
\ 0000 PUBLIC g_FadeInStatusFlag
\ 0000 PUBLIC g_FadeInStepFlag
\ 0000 PUBLIC g_PAOpenFlag
\ 0000 PUBLIC g_Resfp_Sav
\ 0000 PUBLIC g_TagInfoBuf
\ 0000 PUBLIC g_TagInfoBuf1
\ 0000 PUBLIC g_amv_vars
\ 0000 PUBLIC g_changevolume
\ 0000 PUBLIC g_comval
\ 0000 PUBLIC g_currentMusicType
\ 0000 PUBLIC g_from_browser
\ 0000 PUBLIC g_introCNT
\ 0000 PUBLIC g_introCntMode
\ 0000 PUBLIC g_langid
\ 0000 PUBLIC g_menu_active
\ 0000 PUBLIC g_musicamount
\ 0000 PUBLIC g_musicsequence
\ 0000 PUBLIC g_result
\ 0000 PUBLIC main
\ 0000 PUBLIC menu
\ 0000 PUBLIC need_draw
\ 0000 EXTERN openDAC
\ 0000 EXTERN read_var
\ 0000 PUBLIC slider
\ 0000 PUBLIC temp_buffer
\ 0000 EXTERN ui_show_a
\ 0000 EXTERN ui_show_msg
\ 0000 EXTERN ui_stop
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG CODE
\ 0000 main:
1 /*
2 *******************************************************************************
3 * SDK30F_D1
4 * music player main sub
5 *
6 * (c) Copyright 2002, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * File: main.c
10 * By : rcmai
11 * Version: 1> v1.00 first version 2004-3-19 8:28
12 *******************************************************************************
13 * $Id: main.c,v 1.2 2006/07/14 06:43:08 tangwh Exp $
14 *******************************************************************************
15 */
16 #include "ap_amv.h"
17
18 comval_t g_comval; //系统变量,ap不能更改
19 BYTE g_langid ;//记录系统语言
20 BYTE g_BatteryType;//记录电池类型
21 bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
22 amv_vars_t g_amv_vars;//本AP的公共变量
23 char g_TagInfoBuf[66];//用于放TAG信息的BUF
24 char g_TagInfoBuf1[21]; //下一首信息
25 char temp_buffer[9];
26 bool ActiveDriveOK;//磁盘可用标志
27 BYTE g_DiskStateFlag = 0;
28 time_t Totaltime;
29
30 BYTE g_introCNT;
31 bool g_introCntMode;
32
33 bool need_draw;
34
35 function_menu_t menu;
36 slider_t slider;
37 Play_status_t PlayStatus = StopSta; //停止状态
38
39 Music_type_t g_currentMusicType;//标志当前音乐的类型(mp3/wma/asf/wmv)
40 BYTE g_musicamount;//当前目录歌曲总数
41 BYTE g_musicsequence;//当前歌曲序号
42
43 //BYTE testTimer_Sav;//test
44 SD_FILE* g_Resfp_Sav;
45
46 WORD g_2HZ_CNT;//2hz 中断计数器(0.5秒加一)
47 bool g_2HZFlag = TRUE;//2HZ中断到标志
48
49 char g_FadeInStatusFlag = 1;//处在淡入状标志 true 表示在淡入中。
50 bool g_FadeInStepFlag = TRUE;//
51 bool g_PAOpenFlag = FALSE; //标志PA的开关状态
52 //bool g_CardInFlag = FALSE;//卡是否插上,为真时表示插上,可用
53
54 //---如下两变量只用作临时变量,主要目的是节省指令及
55 // 省代码空间,因为局部变量较费代码及指令时间
56 int g_result;//表示16位变量
57 int Total_time;
58 int Current_time;
59 BYTE g_changevolume=0;
60 bool g_from_browser = FALSE;
61
62 int main( int param )
63 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
\ 0003 D5 PUSH DE
\ 0004 F5 PUSH AF
\ 0005 F5 PUSH AF
64 int mainresult;
65 int result;
66 BYTE status;
67 if(param)
\ 0006 7B LD A,E
\ 0007 B2 OR D
\ 0008 2805 JR Z,?0003
\ 000A ?0002:
68 {
69 g_from_browser = TRUE;
\ 000A 3E01 LD A,1
\ 000C 320700 LD (g_from_browser),A
\ 000F ?0003:
70 }
71 g_DiskStateFlag = 0;
\ 000F AF XOR A
\ 0010 320000 LD (g_DiskStateFlag),A
72 ///-output8(0x2f,input8(0x2f)&0xfb); //CE3 enable
73
74 //-------安装ud驱动------------
75 g_Resfp_Sav = ResOpen("ui30.res");
\ 0013 110000 LD DE,?0004
\ 0016 3E00 LD A,BYTE3 ResOpen
\ 0018 210000 LD HL,LWRD ResOpen
\ 001B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 001E 22DA00 LD (g_Resfp_Sav),HL
76
77 DRV_ActiveUD(0,MODE_SLOW);
\ 0021 0E01 LD C,1
\ 0023 1E00 LD E,0
\ 0025 CD0000 CALL LWRD DRV_ActiveUD
78 /* 读入公共变量 */
79 read_var();
\ 0028 3E00 LD A,BYTE3 read_var
\ 002A 210000 LD HL,LWRD read_var
\ 002D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
80
81 ActiveDriveOK = DRV_ActiveDrive('C', MODE_SLOW); //04-2-28 16:29
\ 0030 0E01 LD C,1
\ 0032 1E43 LD E,67
\ 0034 CD0000 CALL LWRD DRV_ActiveDrive
\ 0037 32BB00 LD (ActiveDriveOK),A
82 if (!ActiveDriveOK)
\ 003A B7 OR A
\ 003B 202A JR NZ,?0006
\ 003D ?0005:
83 {
84 ui_show_msg (MREADERR, MREADERR, g_langid); //temp ybfu
\ 003D ED4B2000 LD BC,(g_langid)
\ 0041 47 LD B,A
\ 0042 C5 PUSH BC
\ 0043 01FC01 LD BC,508
\ 0046 59 LD E,C
\ 0047 50 LD D,B
\ 0048 3E00 LD A,BYTE3 ui_show_msg
\ 004A 210000 LD HL,LWRD ui_show_msg
\ 004D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0050 F1 POP AF
\ 0051 ?0008:
85 while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
\ 0051 CD0000 CALL LWRD ap_get_message
\ 0054 B7 OR A
\ 0055 20FA JR NZ,?0008
\ 0057 ?0009:
\ 0057 ?0007:
86 ap_sleep(4);
\ 0057 110400 LD DE,4
\ 005A 3E00 LD A,BYTE3 ap_sleep
\ 005C 210000 LD HL,LWRD ap_sleep
\ 005F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
87 g_amv_vars.location.disk='H'; //磁盘出错 从卡上读文件 zxs add
\ 0062 3E48 LD A,72
\ 0064 322800 LD (g_amv_vars+5),A
\ 0067 ?0006:
88 }
89 g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
\ 0067 210000 LD HL,g_DiskStateFlag
\ 006A CBFE SET 7,(HL)
90
91 if (DRV_DetectUD(1) == 0x20)
\ 006C 1E01 LD E,1
\ 006E CD0000 CALL LWRD DRV_DetectUD
\ 0071 FE20 CP 32
\ 0073 204B JR NZ,?0011
\ 0075 ?0010:
92 { //有卡
93 DRV_ActiveUD(1,MODE_SLOW);
\ 0075 0E01 LD C,1
\ 0077 59 LD E,C
\ 0078 CD0000 CALL LWRD DRV_ActiveUD
94 if (!DRV_ActiveDrive('H', MODE_SLOW))
\ 007B 0E01 LD C,1
\ 007D 1E48 LD E,72
\ 007F CD0000 CALL LWRD DRV_ActiveDrive
\ 0082 B7 OR A
\ 0083 210000 LD HL,g_DiskStateFlag
\ 0086 2034 JR NZ,?0013
\ 0088 ?0012:
95 {
96 g_DiskStateFlag=g_DiskStateFlag&ClrCardOKFlag_def;
\ 0088 CB9E RES 3,(HL)
97 ui_show_msg (CREADERR, CREADERR, g_langid); //temp ybfu
\ 008A ED4B2000 LD BC,(g_langid)
\ 008E 47 LD B,A
\ 008F C5 PUSH BC
\ 0090 017602 LD BC,630
\ 0093 59 LD E,C
\ 0094 50 LD D,B
\ 0095 3E00 LD A,BYTE3 ui_show_msg
\ 0097 210000 LD HL,LWRD ui_show_msg
\ 009A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 009D F1 POP AF
\ 009E ?0015:
98 while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
\ 009E CD0000 CALL LWRD ap_get_message
\ 00A1 B7 OR A
\ 00A2 20FA JR NZ,?0015
\ 00A4 ?0016:
\ 00A4 ?0014:
99 ap_sleep(4);
\ 00A4 110400 LD DE,4
\ 00A7 3E00 LD A,BYTE3 ap_sleep
\ 00A9 210000 LD HL,LWRD ap_sleep
\ 00AC CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
100 g_amv_vars.location.disk='C'; //卡出错从Flash磁盘读文件
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -