📄 main.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 16:59:02 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_amv\main.c #
# List file = d:\case_i_d90f\ap\ap_amv\list\main.lst #
# Object file = d:\case_i_d90f\ap\ap_amv\obj\main.r01 #
# ASM file = d:\case_i_d90f\ap\ap_amv\list\main.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_amv\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d90f\ap\ap_amv\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_amv\List\ #
# -ND:\case_i_d90f\ap\ap_amv\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\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_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
19
20 comval_t g_comval; //系统变量,ap不能更改
21 BYTE g_langid ;//记录系统语言
22 BYTE g_BatteryType;//记录电池类型
23 bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
24 amv_vars_t g_amv_vars;//本AP的公共变量
25 char g_TagInfoBuf[66];//用于放TAG信息的BUF
26 char g_TagInfoBuf1[21]; //下一首信息
27 char temp_buffer[9];
28 bool ActiveDriveOK;//磁盘可用标志
29 BYTE g_DiskStateFlag = 0;
30 time_t Totaltime;
31
32 BYTE g_introCNT;
33 bool g_introCntMode;
34
35 bool need_draw;
36
37 function_menu_t menu;
38 slider_t slider;
39 Play_status_t PlayStatus = StopSta; //停止状态
40
41 Music_type_t g_currentMusicType;//标志当前音乐的类型(mp3/wma/asf/wmv)
42 BYTE g_musicamount;//当前目录歌曲总数
43 BYTE g_musicsequence;//当前歌曲序号
44
45 //BYTE testTimer_Sav;//test
46 SD_FILE* g_Resfp_Sav;
47
48 WORD g_2HZ_CNT;//2hz 中断计数器(0.5秒加一)
49 bool g_2HZFlag = TRUE;//2HZ中断到标志
50
51 char g_FadeInStatusFlag = 1;//处在淡入状标志 true 表示在淡入中。
52 bool g_FadeInStepFlag = TRUE;//
53 bool g_PAOpenFlag = FALSE; //标志PA的开关状态
54 //bool g_CardInFlag = FALSE;//卡是否插上,为真时表示插上,可用
55
56 //---如下两变量只用作临时变量,主要目的是节省指令及
57 // 省代码空间,因为局部变量较费代码及指令时间
58 int g_result;//表示16位变量
59 int Total_time;
60 int Current_time;
61 BYTE g_changevolume=0;
62
63 int main( void )
64 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 DDE5 PUSH IX
\ 0004 F5 PUSH AF
\ 0005 F5 PUSH AF
65 int mainresult;
66 int result;
67 BYTE status;
68
69 g_DiskStateFlag = 0;
\ 0006 AF XOR A
\ 0007 320000 LD (g_DiskStateFlag),A
70
71 //-------安装ud驱动------------
72 g_Resfp_Sav = ResOpen("ui30.res");
\ 000A 110000 LD DE,?0002
\ 000D 3E00 LD A,BYTE3 ResOpen
\ 000F 210000 LD HL,LWRD ResOpen
\ 0012 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0015 22D800 LD (g_Resfp_Sav),HL
73
74 DRV_ActiveUD(0,MODE_SLOW);
\ 0018 0E01 LD C,1
\ 001A 1E00 LD E,0
\ 001C CD0000 CALL LWRD DRV_ActiveUD
75 /* 读入公共变量 */
76 read_var();
\ 001F 3E00 LD A,BYTE3 read_var
\ 0021 210000 LD HL,LWRD read_var
\ 0024 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
77
78 ActiveDriveOK = DRV_ActiveDrive('C', MODE_SLOW); //04-2-28 16:29
\ 0027 0E01 LD C,1
\ 0029 1E43 LD E,67
\ 002B CD0000 CALL LWRD DRV_ActiveDrive
\ 002E 32B900 LD (ActiveDriveOK),A
79 if (!ActiveDriveOK)
\ 0031 B7 OR A
\ 0032 202A JR NZ,?0004
\ 0034 ?0003:
80 {
81 ui_show_msg (MREADERR, MREADERR, g_langid); //temp ybfu
\ 0034 ED4B2000 LD BC,(g_langid)
\ 0038 47 LD B,A
\ 0039 C5 PUSH BC
\ 003A 018901 LD BC,393
\ 003D 59 LD E,C
\ 003E 50 LD D,B
\ 003F 3E00 LD A,BYTE3 ui_show_msg
\ 0041 210000 LD HL,LWRD ui_show_msg
\ 0044 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0047 F1 POP AF
\ 0048 ?0006:
82 while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
\ 0048 CD0000 CALL LWRD ap_get_message
\ 004B B7 OR A
\ 004C 20FA JR NZ,?0006
\ 004E ?0007:
\ 004E ?0005:
83 ap_sleep(4);
\ 004E 110400 LD DE,4
\ 0051 3E00 LD A,BYTE3 ap_sleep
\ 0053 210000 LD HL,LWRD ap_sleep
\ 0056 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
84 g_amv_vars.location.disk='H'; //磁盘出错 从卡上读文件 zxs add
\ 0059 3E48 LD A,72
\ 005B 322800 LD (g_amv_vars+5),A
\ 005E ?0004:
85 }
86 g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
\ 005E 210000 LD HL,g_DiskStateFlag
\ 0061 CBFE SET 7,(HL)
87
88 if (DRV_DetectUD(1) == 0x20)
\ 0063 1E01 LD E,1
\ 0065 CD0000 CALL LWRD DRV_DetectUD
\ 0068 FE20 CP 32
\ 006A 204B JR NZ,?0009
\ 006C ?0008:
89 { //有卡
90 DRV_ActiveUD(1,MODE_SLOW);
\ 006C 0E01 LD C,1
\ 006E 59 LD E,C
\ 006F CD0000 CALL LWRD DRV_ActiveUD
91 if (!DRV_ActiveDrive('H', MODE_SLOW))
\ 0072 0E01 LD C,1
\ 0074 1E48 LD E,72
\ 0076 CD0000 CALL LWRD DRV_ActiveDrive
\ 0079 B7 OR A
\ 007A 210000 LD HL,g_DiskStateFlag
\ 007D 2034 JR NZ,?0011
\ 007F ?0010:
92 {
93 g_DiskStateFlag=g_DiskStateFlag&ClrCardOKFlag_def;
\ 007F CB9E RES 3,(HL)
94 ui_show_msg (CREADERR, CREADERR, g_langid); //temp ybfu
\ 0081 ED4B2000 LD BC,(g_langid)
\ 0085 47 LD B,A
\ 0086 C5 PUSH BC
\ 0087 019401 LD BC,404
\ 008A 59 LD E,C
\ 008B 50 LD D,B
\ 008C 3E00 LD A,BYTE3 ui_show_msg
\ 008E 210000 LD HL,LWRD ui_show_msg
\ 0091 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0094 F1 POP AF
\ 0095 ?0013:
95 while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
\ 0095 CD0000 CALL LWRD ap_get_message
\ 0098 B7 OR A
\ 0099 20FA JR NZ,?0013
\ 009B ?0014:
\ 009B ?0012:
96 ap_sleep(4);
\ 009B 110400 LD DE,4
\ 009E 3E00 LD A,BYTE3 ap_sleep
\ 00A0 210000 LD HL,LWRD ap_sleep
\ 00A3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
97 g_amv_vars.location.disk='C'; //卡出错从Flash磁盘读文件
\ 00A6 3E43 LD A,67
\ 00A8 322800 LD (g_amv_vars+5),A
98 if (!ActiveDriveOK)
\ 00AB 3AB900 LD A,(ActiveDriveOK)
\ 00AE B7 OR A
\ 00AF 2023 JR NZ,?0020
\ 00B1 ?0015:
99 {
100 ResClose(g_Resfp_Sav);
\ 00B1 180F JR ?0027
101 return 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -