📄 navi_read.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:58:36 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_music\navi_read.c #
# List file = d:\case_i_d913f\ap\ap_music\list\navi_read.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\navi_read.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\navi_read.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_read.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME navi_read(17)
\ 0000 RSEG APC_NAVI_UI_READ(0)
\ 0000 RSEG APD_NAVI_READ(0)
\ 0000 EXTERN CurListoffset
\ 0000 EXTERN CurTotalNum
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FSeek
\ 0000 EXTERN Navfileoffset
\ 0000 PUBLIC Navi_read
\ 0000 PUBLIC Navi_read_head
\ 0000 EXTERN Navifp
\ 0000 EXTERN buffer
\ 0000 PUBLIC file_info
\ 0000 PUBLIC g_path_info
\ 0000 EXTERN navi_buff
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_LSH_L02
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?L_LSH_L03
\ 0000 EXTERN ?SL_DIV_L03
\ 0000 EXTERN ?SL_MOD_L03
\ 0000 EXTERN ?SL_CMP_L03
\ 0000 EXTERN ?L_ADDASG_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 RSEG APC_NAVI_UI_READ
\ 0000 Navi_read:
1 #include "ap_music.h"
2 extern handle Navifp;
3 extern long CurListoffset; //每个表的偏移量
4 extern long CurTotalNum;
5 extern long Navfileoffset; //当前表的已经读的偏移量
6 extern BOOL Navi_read(long fileoffset);
7 #pragma memory=dataseg(APD_NAVI)
8 extern char navi_buff[NAVI_GROUP*30];
9 extern char buffer[512];
10 #pragma memory=default
11
12 #pragma memory=dataseg(APD_NAVI_READ)
13
14 file_info_t file_info;
15 Location_Path_t g_path_info;
16 #pragma memory=default
17
18
19 #pragma codeseg(APC_NAVI_UI_READ)
20
21
22
23
24 BOOL Navi_read(long fileoffset)
25 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 F5 PUSH AF
26 BOOL result=TRUE;
27 char IO27Bak = input8(0x27);
\ 0003 DB27 IN A,(39)
\ 0005 210100 LD HL,1
\ 0008 39 ADD HL,SP
\ 0009 77 LD (HL),A
28 output8(0x27,0); //关DSP中断
\ 000A AF XOR A
\ 000B D327 OUT (39),A
29 if(FS_FSeek(fileoffset/512,FS_SEEK_FFROMSTART,Navifp))
\ 000D 2B DEC HL
\ 000E 3601 LD (HL),1
\ 0010 2A0000 LD HL,(Navifp)
\ 0013 E5 PUSH HL
\ 0014 6F LD L,A
\ 0015 E5 PUSH HL
\ 0016 65 LD H,L
\ 0017 E5 PUSH HL
\ 0018 2602 LD H,2
\ 001A E5 PUSH HL
\ 001B EB EX DE,HL
\ 001C CD0000 CALL LWRD ?SL_DIV_L03
\ 001F EB EX DE,HL
\ 0020 CD0000 CALL LWRD FS_FSeek
\ 0023 E1 POP HL
\ 0024 E1 POP HL
\ 0025 B7 OR A
\ 0026 2810 JR Z,?0003
\ 0028 ?0002:
30 {
31 if(!FS_FRead(buffer,1,Navifp))
\ 0028 2A0000 LD HL,(Navifp)
\ 002B E5 PUSH HL
\ 002C 0E01 LD C,1
\ 002E 110000 LD DE,buffer
\ 0031 CD0000 CALL LWRD FS_FRead
\ 0034 E1 POP HL
\ 0035 B7 OR A
\ 0036 2004 JR NZ,?0006
\ 0038 ?0004:
32 result= FALSE;
\ 0038 ?0005:
33 }
34 else
\ 0038 ?0003:
35 result= FALSE;
\ 0038 6F LD L,A
\ 0039 67 LD H,A
\ 003A 39 ADD HL,SP
\ 003B 77 LD (HL),A
\ 003C ?0006:
36 output8(0x27,IO27Bak);
\ 003C 210100 LD HL,1
\ 003F 39 ADD HL,SP
\ 0040 7E LD A,(HL)
\ 0041 D327 OUT (39),A
37 return result;
\ 0043 2B DEC HL
\ 0044 6E LD L,(HL)
38 }
\ 0045 F1 POP AF
\ 0046 F1 POP AF
\ 0047 F1 POP AF
\ 0048 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 004B Navi_read_head:
39
40 BOOL Navi_read_head(long fileoffset,char direct,WORD *DelNum)
41 {
\ 004B CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 004E EEFF DEFW 65518
42
43
44 BOOL result=TRUE;
45 char msz_temp[12];
46 char count=0;
47 long End;
48
49 memset(msz_temp,0,11);
\ 0050 010B00 LD BC,11
\ 0053 210600 LD HL,6
\ 0056 39 ADD HL,SP
\ 0057 EB EX DE,HL
\ 0058 68 LD L,B
\ 0059 60 LD H,B
\ 005A CD0000 CALL LWRD ?MEMSET_L11
50 memset(&file_info,0,sizeof(file_info_t));
\ 005D 014000 LD BC,64
\ 0060 110000 LD DE,file_info
\ 0063 CD0000 CALL LWRD ?MEMSET_L11
51 if(fileoffset==0)
\ 0066 DD7E02 LD A,(IX+2)
\ 0069 DDB603 OR (IX+3)
\ 006C DDB604 OR (IX+4)
\ 006F DDB605 OR (IX+5)
\ 0072 2015 JR NZ,?0008
\ 0074 ?0007:
52 {
53 msz_temp[0]='R';
\ 0074 DD36F452 LD (IX-12),82
54 msz_temp[1]='O';
\ 0078 DD36F54F LD (IX-11),79
55 msz_temp[2]='O';
\ 007C DD36F64F LD (IX-10),79
56 msz_temp[3]='T';
\ 0080 DD36F754 LD (IX-9),84
57 msz_temp[4]=0;
\ 0084 DD74F8 LD (IX-8),H
58 file_info.PathorFile =1 ; //root
\ 0087 1807 JR ?0037
59 }
60 else
\ 0089 ?0008:
61 {
62 msz_temp[0]='\\';
\ 0089 DD36F45C LD (IX-12),92
63 msz_temp[1]=0;
\ 008D DD74F5 LD (IX-11),H
64 file_info.PathorFile =1 ; //parent
\ 0090 ?0037:
\ 0090 3E01 LD A,1
\ 0092 320000 LD (file_info),A
\ 0095 ?0009:
65 }
66
67
68
69 result= Navi_read(fileoffset);
\ 0095 DD4E04 LD C,(IX+4)
\ 0098 DD4605 LD B,(IX+5)
\ 009B DD5E02 LD E,(IX+2)
\ 009E DD5603 LD D,(IX+3)
\ 00A1 CD9D03 CALL LWRD ?0039
\ 00A4 DD75EF LD (IX-17),L
70
71 if(direct==0)
\ 00A7 AF XOR A
\ 00A8 DDB60A OR (IX+10)
\ 00AB C2F801 JP NZ,?0011
\ 00AE ?0010:
72 {
73 CurListoffset=fileoffset;
\ 00AE DD4E04 LD C,(IX+4)
\ 00B1 DD4605 LD B,(IX+5)
\ 00B4 DD6E02 LD L,(IX+2)
\ 00B7 DD6603 LD H,(IX+3)
\ 00BA 220000 LD (CurListoffset),HL
\ 00BD ED430200 LD (CurListoffset+2),BC
74 if(fileoffset%512+sizeof(Location_Path_t)<512)
\ 00C1 6F LD L,A
\ 00C2 67 LD H,A
\ 00C3 E5 PUSH HL
\ 00C4 2602 LD H,2
\ 00C6 E5 PUSH HL
\ 00C7 65 LD H,L
\ 00C8 E5 PUSH HL
\ 00C9 2602 LD H,2
\ 00CB E5 PUSH HL
\ 00CC CDAB03 CALL LWRD ?0040
\ 00CF C5 PUSH BC
\ 00D0 E5 PUSH HL
\ 00D1 214000 LD HL,64
\ 00D4 C1 POP BC
\ 00D5 09 ADD HL,BC
\ 00D6 EB EX DE,HL
\ 00D7 6F LD L,A
\ 00D8 67 LD H,A
\ 00D9 C1 POP BC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -