navi_select.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 528 行 · 第 1/2 页
LST
528 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:58:40 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_music\navi_select.c #
# List file = d:\case_i_d913f\ap\ap_music\list\navi_select.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\navi_select.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\navi_select.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\navi_select.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME navi_select(17)
\ 0000 RSEG APC_NAVI_UI_SELECT(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG APD_NAVI_SELECT(0)
\ 0000 RSEG AP_NAVI_UI_SELECT(0)
\ 0000 EXTERN CurListoffset
\ 0000 PUBLIC Deal_play_Navi
\ 0000 EXTERN FS_CD
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FOpen
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FSeek
\ 0000 EXTERN FS_GetCurDir
\ 0000 EXTERN FS_SetCurDir
\ 0000 PUBLIC Navi_ext
\ 0000 PUBLIC Navi_read_S
\ 0000 EXTERN Navifp
\ 0000 EXTERN UI_play_Navi
\ 0000 EXTERN VMWrite
\ 0000 EXTERN buffer
\ 0000 PUBLIC check_file_type
\ 0000 PUBLIC ext
\ 0000 EXTERN g_music_vars
\ 0000 PUBLIC location
\ 0000 PUBLIC msz_temp
\ 0000 PUBLIC navi_offset
\ 0000 PUBLIC temp_browser_vars
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?L_LSH_L03
\ 0000 EXTERN ?SL_DIV_L03
\ 0000 EXTERN ?SL_MOD_L03
\ 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 ?MEMSET_L11
\ 0000 EXTERN ?STRCMP_L11
\ 0000 RSEG APC_NAVI_UI_SELECT
\ 0000 Navi_read_S:
1 #include "ap_music.h"
2 const char msz_temp[12]="NAVI 0 " ;
3 extern handle Navifp;
4 extern long CurListoffset; //每个表的偏移量
5 extern long CurTotalNum;
6 extern long Navfileoffset; //当前表的已经读的偏移量
7 extern BOOL Navi_read(long fileoffset);
8 #pragma memory=dataseg(APD_NAVI)
9 extern char navi_buff[NAVI_GROUP*30];
10 extern char buffer[512];
11
12 #pragma memory=default
13 #pragma memory=dataseg(APD_NAVI_SELECT)
14 BYTE ext[4];
15 file_location_t location;
16 browser_vars_t temp_browser_vars;
17 long navi_offset;
18 #pragma memory=default
19 #pragma memory=constseg(AP_NAVI_UI_SELECT)
20 const char Navi_ext[][4] = {"MP3", "WMA", "ASF", "WMV", "OGG","APE","WAV","ACT","JPG","BMP","GIF","TXT","AMV"};
21 #pragma memory=default
22
23 #pragma codeseg(APC_NAVI_UI_SELECT)
24 void Navi_read_S(long fileoffset)
25 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 F5 PUSH AF
26 char IO27Bak = input8(0x27);
\ 0003 DB27 IN A,(39)
\ 0005 210000 LD HL,0
\ 0008 39 ADD HL,SP
\ 0009 77 LD (HL),A
27 output8(0x27,0); //关DSP中断
\ 000A AF XOR A
\ 000B D327 OUT (39),A
28 FS_FSeek(fileoffset/512,FS_SEEK_FFROMSTART,Navifp);
\ 000D 2A0000 LD HL,(Navifp)
\ 0010 E5 PUSH HL
\ 0011 6F LD L,A
\ 0012 E5 PUSH HL
\ 0013 65 LD H,L
\ 0014 E5 PUSH HL
\ 0015 2602 LD H,2
\ 0017 E5 PUSH HL
\ 0018 EB EX DE,HL
\ 0019 CD0000 CALL LWRD ?SL_DIV_L03
\ 001C EB EX DE,HL
\ 001D CD0000 CALL LWRD FS_FSeek
\ 0020 E1 POP HL
\ 0021 E1 POP HL
29 FS_FRead(buffer,1,Navifp);
\ 0022 2A0000 LD HL,(Navifp)
\ 0025 E5 PUSH HL
\ 0026 0E01 LD C,1
\ 0028 110000 LD DE,buffer
\ 002B CD0000 CALL LWRD FS_FRead
\ 002E E1 POP HL
30 output8(0x27,IO27Bak);
\ 002F 210000 LD HL,0
\ 0032 39 ADD HL,SP
\ 0033 7E LD A,(HL)
\ 0034 D327 OUT (39),A
31 }
\ 0036 E1 POP HL
\ 0037 E1 POP HL
\ 0038 E1 POP HL
\ 0039 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 003C check_file_type:
32
33 int check_file_type(long active)
34 {
\ 003C CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 003F FEFF DEFW 65534
35 char i;
36 char IO27Bak = input8(0x27);
\ 0041 DB27 IN A,(39)
\ 0043 DD77FF LD (IX-1),A
37 navi_offset = (active-1)*sizeof(file_info_t)+CurListoffset+sizeof(Location_Path_t);
\ 0046 21FFFF LD HL,65535
\ 0049 E5 PUSH HL
\ 004A E5 PUSH HL
\ 004B DD6E02 LD L,(IX+2)
\ 004E DD6603 LD H,(IX+3)
\ 0051 C1 POP BC
\ 0052 09 ADD HL,BC
\ 0053 EB EX DE,HL
\ 0054 DD6E04 LD L,(IX+4)
\ 0057 DD6605 LD H,(IX+5)
\ 005A C1 POP BC
\ 005B ED4A ADC HL,BC
\ 005D 4D LD C,L
\ 005E 44 LD B,H
\ 005F EB EX DE,HL
\ 0060 3E06 LD A,6
\ 0062 CD0000 CALL LWRD ?L_LSH_L03
\ 0065 C5 PUSH BC
\ 0066 E5 PUSH HL
\ 0067 2A0000 LD HL,(CurListoffset)
\ 006A C1 POP BC
\ 006B 09 ADD HL,BC
\ 006C EB EX DE,HL
\ 006D 2A0200 LD HL,(CurListoffset+2)
\ 0070 C1 POP BC
\ 0071 ED4A ADC HL,BC
\ 0073 E5 PUSH HL
\ 0074 D5 PUSH DE
\ 0075 214000 LD HL,64
\ 0078 C1 POP BC
\ 0079 09 ADD HL,BC
\ 007A EB EX DE,HL
\ 007B 210000 LD HL,0
\ 007E C1 POP BC
\ 007F ED4A ADC HL,BC
\ 0081 4D LD C,L
\ 0082 44 LD B,H
\ 0083 EB EX DE,HL
\ 0084 225C00 LD (navi_offset),HL
\ 0087 ED435E00 LD (navi_offset+2),BC
38 memset(&location,0,sizeof(file_location_t));
\ 008B 012B00 LD BC,43
\ 008E 110400 LD DE,location
\ 0091 68 LD L,B
\ 0092 CD0000 CALL LWRD ?MEMSET_L11
39 Navi_read_S(CurListoffset);
\ 0095 ED4B0200 LD BC,(CurListoffset+2)
\ 0099 ED5B0000 LD DE,(CurListoffset)
\ 009D 3E00 LD A,BYTE3 Navi_read_S
\ 009F 210000 LD HL,LWRD Navi_read_S
\ 00A2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
40 memcpy(&location,buffer+CurListoffset%512+1,sizeof(file_location_t)-2);
\ 00A5 012900 LD BC,41
\ 00A8 48 LD C,B
\ 00A9 C5 PUSH BC
\ 00AA 0602 LD B,2
\ 00AC C5 PUSH BC
\ 00AD ED4B0200 LD BC,(CurListoffset+2)
\ 00B1 2A0000 LD HL,(CurListoffset)
\ 00B4 CD0000 CALL LWRD ?SL_MOD_L03
\ 00B7 EB EX DE,HL
\ 00B8 210100 LD HL,buffer+1
\ 00BB 19 ADD HL,DE
\ 00BC 110400 LD DE,location
\ 00BF 012900 LD BC,41
\ 00C2 EDB0 LDIR
41 Navi_read_S(navi_offset);
\ 00C4 ED4B5E00 LD BC,(navi_offset+2)
\ 00C8 ED5B5C00 LD DE,(navi_offset)
\ 00CC 3E00 LD A,BYTE3 Navi_read_S
\ 00CE 210000 LD HL,LWRD Navi_read_S
\ 00D1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
42 memcpy(location.filename,buffer+navi_offset%512+1,11);
\ 00D4 010B00 LD BC,11
\ 00D7 48 LD C,B
\ 00D8 C5 PUSH BC
\ 00D9 0602 LD B,2
\ 00DB C5 PUSH BC
\ 00DC ED4B5E00 LD BC,(navi_offset+2)
\ 00E0 2A5C00 LD HL,(navi_offset)
\ 00E3 CD0000 CALL LWRD ?SL_MOD_L03
\ 00E6 EB EX DE,HL
\ 00E7 210100 LD HL,buffer+1
\ 00EA 19 ADD HL,DE
\ 00EB 111E00 LD DE,location+26
\ 00EE 010B00 LD BC,11
\ 00F1 EDB0 LDIR
43 memcpy(ext, buffer+navi_offset%512+1+8, 3);
\ 00F3 C5 PUSH BC
\ 00F4 0602 LD B,2
\ 00F6 C5 PUSH BC
\ 00F7 ED4B5E00 LD BC,(navi_offset+2)
\ 00FB 2A5C00 LD HL,(navi_offset)
\ 00FE CD0000 CALL LWRD ?SL_MOD_L03
\ 0101 EB EX DE,HL
\ 0102 210900 LD HL,buffer+9
\ 0105 19 ADD HL,DE
\ 0106 110000 LD DE,ext
\ 0109 010300 LD BC,3
\ 010C EDB0 LDIR
44 ext[0] = (ext[0]>='a' && ext[0]<='z') ? ext[0] - 'a' + 'A' : ext[0];
\ 010E 3A0000 LD A,(ext)
\ 0111 FE61 CP 97
\ 0113 3810 JR C,?0005
\ 0115 3A0000 LD A,(ext)
\ 0118 47 LD B,A
\ 0119 3E7A LD A,122
\ 011B B8 CP B
\ 011C 3807 JR C,?0005
\ 011E 3A0000 LD A,(ext)
\ 0121 C6E0 ADD A,224
\ 0123 1803 JR ?0006
\ 0125 ?0005:
\ 0125 3A0000 LD A,(ext)
\ 0128 ?0006:
\ 0128 320000 LD (ext),A
45 ext[1] = (ext[1]>='a' && ext[1]<='z') ? ext[1] - 'a' + 'A' : ext[1];
\ 012B 3A0100 LD A,(ext+1)
\ 012E FE61 CP 97
\ 0130 3810 JR C,?0011
\ 0132 3A0100 LD A,(ext+1)
\ 0135 47 LD B,A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?