📄 ui_play.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 16:59:08 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_amv\ui_play.c #
# List file = d:\case_i_d90f\ap\ap_amv\list\ui_play.lst #
# Object file = d:\case_i_d90f\ap\ap_amv\obj\ui_play.r01 #
# ASM file = d:\case_i_d90f\ap\ap_amv\list\ui_play.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\ui_play.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_play(17)
\ 0000 RSEG AP_UI_PLY(0)
\ 0000 RSEG UDATA0(0)
\ 0000 EXTERN AmvDecModPolling
\ 0000 EXTERN AmvDecSetCMD
\ 0000 EXTERN AmvDecStart
\ 0000 EXTERN AmvRegion
\ 0000 EXTERN ChangeMusic
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN DealMusicFileEnd
\ 0000 EXTERN DisablePA
\ 0000 EXTERN DisplayErrMsg
\ 0000 PUBLIC Dscinf
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FOpen
\ 0000 EXTERN GetInformation
\ 0000 PUBLIC InitLcmDeviceInfor
\ 0000 EXTERN PlayStatus
\ 0000 PUBLIC PrevMusicInPlay
\ 0000 EXTERN ReadOnePageFromDisk
\ 0000 PUBLIC SetAmvWin
\ 0000 EXTERN SetPAVolume
\ 0000 EXTERN SetWindow
\ 0000 PUBLIC ShowNowTime
\ 0000 PUBLIC Show_Bitrate
\ 0000 PUBLIC ToNextMusic
\ 0000 EXTERN Totaltime
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN fp
\ 0000 EXTERN g_amv_vars
\ 0000 EXTERN g_introCNT
\ 0000 EXTERN g_result
\ 0000 EXTERN itoa_1
\ 0000 EXTERN itoa_2
\ 0000 EXTERN main_ResShowPic
\ 0000 EXTERN need_draw
\ 0000 EXTERN openPA
\ 0000 EXTERN temp_buffer
\ 0000 PUBLIC ui_play
\ 0000 EXTERN ui_show_d
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?L_MUL_L03
\ 0000 EXTERN ?SL_DIV_L03
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG AP_UI_PLY
\ 0000 ui_play:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * voice player stop program.
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ui_play.c,v 1.1.1.1 2006/05/22 03:24:02 selina Exp $
10 *******************************************************************************
11 */
12 #include "ap_amv.h"
13 #include "AMVDec.h"
14 #define IntCntValDef 10
15
16 #include "display.h"
17 ColorLcmInfor Dscinf;
18
19
20 #pragma codeseg(AP_UI_PLY)
21
22 #pragma memory=constseg(APC_UI_PLY)
23 #pragma memory=default
24
25 extern bool g_introCntMode; //是从头开始还是从中途开始,TRUE 为从头开始
26 extern region_t AmvRegion;
27 int InitLcmDeviceInfor(ColorLcmInfor *infor);
28
29 /*
30 ********************************************************************************
31 * int ui_play( void )
32 *
33 * Description : 显示时间,滚屏,AB闪
34 *
35 * Arguments : void
36 *
37 * Returns : void
38 *
39 * Notes :
40 *
41 ********************************************************************************
42 */
43 int ui_play( void )
44 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 DDE5 PUSH IX
\ 0004 F5 PUSH AF
\ 0005 F5 PUSH AF
\ 0006 F5 PUSH AF
\ 0007 F5 PUSH AF
45 char key;
46 int i;
47 signed char tmp;
48 int result;
49
50 need_draw = TRUE;/* need play file */
\ 0008 3E01 LD A,1
\ 000A 320000 LD (need_draw),A
51
52 InitLcmDeviceInfor(&Dscinf);
\ 000D 110000 LD DE,Dscinf
\ 0010 3E00 LD A,BYTE3 InitLcmDeviceInfor
\ 0012 211C04 LD HL,LWRD InitLcmDeviceInfor
\ 0015 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
53 openPA(g_amv_vars.volume);
\ 0018 ED5B0200 LD DE,(g_amv_vars+2)
\ 001C 3E00 LD A,BYTE3 openPA
\ 001E 210000 LD HL,LWRD openPA
\ 0021 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0024 ?0003:
54 while (1)
55 {
56
57 if (need_draw)
\ 0024 3A0000 LD A,(need_draw)
\ 0027 B7 OR A
\ 0028 2838 JR Z,?0006
\ 002A ?0005:
58 {
59 fp=FS_FOpen(g_amv_vars.location.filename,FS_OPEN_NORMAL);
\ 002A 0E00 LD C,0
\ 002C 111F00 LD DE,g_amv_vars+31
\ 002F CD0000 CALL LWRD FS_FOpen
\ 0032 220000 LD (fp),HL
60 ClearScreen(NULL);
\ 0035 110000 LD DE,0
\ 0038 CD0000 CALL LWRD ClearScreen
61 AmvDecStart(&Dscinf,fp,&g_amv_vars.amvfilebreakpoint);
\ 003B 212E00 LD HL,g_amv_vars+46
\ 003E E5 PUSH HL
\ 003F ED4B0000 LD BC,(fp)
\ 0043 110000 LD DE,Dscinf
\ 0046 3E00 LD A,BYTE3 AmvDecStart
\ 0048 210000 LD HL,LWRD AmvDecStart
\ 004B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 004E F1 POP AF
62 g_introCNT=0;
\ 004F AF XOR A
\ 0050 320000 LD (g_introCNT),A
\ 0053 ?0008:
63 while(ap_get_message() != 0);
\ 0053 CD0000 CALL LWRD ap_get_message
\ 0056 B7 OR A
\ 0057 20FA JR NZ,?0008
\ 0059 ?0009:
\ 0059 ?0007:
64 PlayStatus = PlaySta;
\ 0059 3E02 LD A,2
\ 005B 320000 LD (PlayStatus),A
65 need_draw = FALSE;
\ 005E AF XOR A
\ 005F 320000 LD (need_draw),A
\ 0062 ?0006:
\ 0062 ?0012:
66 }
67
68 do
69 {
70 // output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
71 key = ap_get_message(); //读键值
\ 0062 CD0000 CALL LWRD ap_get_message
\ 0065 210000 LD HL,0
\ 0068 39 ADD HL,SP
\ 0069 77 LD (HL),A
72 //这里是处理快退大文件时可能丢掉KEYUP键的问题
73 }while(((PlayStatus == FFPlaySta) || (PlayStatus == FBPlaySta))
74 &&(key!=0)
75 &&(key!=(AP_KEY_PREV | AP_KEY_UP))
76 &&(key!=(AP_KEY_NEXT | AP_KEY_UP)));
\ 006A 3A0000 LD A,(PlayStatus)
\ 006D FE03 CP 3
\ 006F 2804 JR Z,?0013
\ 0071 FE04 CP 4
\ 0073 200C JR NZ,?0010
\ 0075 ?0013:
\ 0075 ?0014:
\ 0075 AF XOR A
\ 0076 B6 OR (HL)
\ 0077 2808 JR Z,?0010
\ 0079 FE25 CP 37
\ 007B 2804 JR Z,?0010
\ 007D FE26 CP 38
\ 007F 20E1 JR NZ,?0006
\ 0081 ?0010:
77 // key = ap_get_message(); //读键值
78 switch(key)
\ 0081 5E LD E,(HL)
\ 0082 CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 0085 0B00 DEFW 11
\ 0087 03 DEFB 3
\ 0088 04 DEFB 4
\ 0089 1C DEFB 28
\ 008A 1D DEFB 29
\ 008B 21 DEFB 33
\ 008C 25 DEFB 37
\ 008D 26 DEFB 38
\ 008E 43 DEFB 67
\ 008F 44 DEFB 68
\ 0090 85 DEFB 133
\ 0091 86 DEFB 134
\ 0092 6501 DEFW ?0049
\ 0094 D500 DEFW ?0025
\ 0096 E900 DEFW ?0028
\ 0098 B200 DEFW ?0019
\ 009A AA00 DEFW ?0018
\ 009C 1701 DEFW ?0037
\ 009E 0101 DEFW ?0031
\ 00A0 3501 DEFW ?0043
\ 00A2 8801 DEFW ?0054
\ 00A4 4901 DEFW ?0044
\ 00A6 B200 DEFW ?0019
\ 00A8 AA00 DEFW ?0018
\ 00AA ?0018:
79 {
80
81 case AP_KEY_VOLSUB:
82 case AP_KEY_VOLSUB | AP_KEY_HOLD:
83 g_amv_vars.volume-=2;
\ 00AA 3A0200 LD A,(g_amv_vars+2)
\ 00AD C6FE ADD A,254
\ 00AF 320200 LD (g_amv_vars+2),A
\ 00B2 ?0019:
84 case AP_KEY_VOLADD:
85 case AP_KEY_VOLADD | AP_KEY_HOLD:
86 g_amv_vars.volume++;
\ 00B2 210200 LD HL,g_amv_vars+2
\ 00B5 34 INC (HL)
87 if(g_amv_vars.volume==0xff)g_amv_vars.volume=0;
\ 00B6 3A0200 LD A,(g_amv_vars+2)
\ 00B9 3C INC A
\ 00BA 2003 JR NZ,?0021
\ 00BC ?0020:
\ 00BC 320200 LD (g_amv_vars+2),A
\ 00BF ?0021:
88 if(g_amv_vars.volume>=31)g_amv_vars.volume=31;
\ 00BF 3A0200 LD A,(g_amv_vars+2)
\ 00C2 FE1F CP 31
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -