📄 gsearch.lst
字号:
C51 COMPILER V7.50 GSEARCH 12/14/2005 10:05:33 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE GSEARCH
OBJECT MODULE PLACED IN .\OBJ\gsearch.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE gsearch.c LARGE OPTIMIZE(9,SIZE) BROWSE PRINT(.\LST\gsearch.lst) OBJECT(.\O
-BJ\gsearch.obj)
line level source
1 /*
2 ********************************************************************************
3 *
4 * (c) Copyright 2002, Vineyard Technologies, Inc.
5 *
6 * Filename : gsearch.c
7 * Programmer(s): Steve KyeongHyeon Lee
8 * Created : 2003/05/07
9 * Modified :
10 *
11 * Description :
12 ********************************************************************************
13 */
14 #include "types.h"
15
16 #include <stdio.h> /* standard I/O .h-file */
17 #include "eprom.h"
18 #include "ghdd.h"
19 #include "gio.h"
20 #include "gsearch.h"
21 #include "lib.h"
22
23 //######################################################################
24 //
25 //######################################################################
26 extern xdata u8 gv_time_data[6];
27
28 //######################################################################
29 //
30 //######################################################################
31 #define REW_TIME 100
32
33 //######################################################################
34 //
35 //######################################################################
36
37 //===============================================================================
38 //
39 //===============================================================================
40 u32 mktime(u8 timedate[])
41 {
42 1 xdata u32 year;
43 1 xdata char mon;
44 1
45 1 year = timedate[5]+2000;
46 1 mon = timedate[4];
47 1
48 1 if (0 >= (int)(mon -= 2))
49 1 {
50 2 mon += 12;
51 2 year -= 1;
52 2 }
53 1 return (((u32) (year/4 - year/100 + year/400 + 367*mon/12 + timedate[3] +
54 1 year*365 - 719499)
C51 COMPILER V7.50 GSEARCH 12/14/2005 10:05:33 PAGE 2
55 1 *24 + timedate[2])
56 1 *60 + timedate[1])
57 1 *60 + timedate[0];
58 1 }
59
60 //===============================================================================
61 //
62 //===============================================================================
63 u8 check_range(u32 srcTime, u8 hddIndex, u32 startLBA, u32 endLBA)
64 {
65 1 xdata u8 i;
66 1 xdata u32 stTime, edTime;
67 1
68 1 u32 curLBA;
69 1
70 1 #ifdef DEBUG_SEARCH_BLOCK
printf("\n\rcheck_range:");
#endif
73 1
74 1 HDD_Search_LBA(hddIndex,startLBA);
75 1 stTime = mktime(gv_time_data);
76 1
77 1 #ifdef DEBUG_SEARCH_BLOCK
printf("\n\r [%lu] %lu ", startLBA, stTime); disp_time(gv_time_data);
#endif
80 1
81 1 HDD_Search_LBA(hddIndex,endLBA);
82 1 edTime = mktime(gv_time_data);
83 1
84 1 #ifdef DEBUG_SEARCH_BLOCK
printf("\n\r~[%lu] %lu ", endLBA, edTime); disp_time(gv_time_data);
#endif
87 1
88 1
89 1 if( (srcTime >= stTime)&&
90 1 (srcTime <= edTime))
91 1 {
92 2 gv_HDD_play_hdd_index = hddIndex;
93 2
94 2 for(i=0; i<20;i++)
95 2 {
96 3 curLBA = startLBA + ((float)(endLBA-startLBA))/2;
97 3 HDD_Search_LBA(hddIndex,curLBA);
98 3 stTime = mktime(gv_time_data);
99 3
100 3 #ifdef DEBUG_SEARCH_BLOCK
printf("\n\r <%lu> %lu ", curLBA, stTime); disp_time(gv_time_data);
#endif
103 3 if(srcTime == stTime)
104 3 {
105 4 gv_RCurrent_LBA[gv_HDD_play_hdd_index] = curLBA;
106 4 break;
107 4 }
108 3 else if(srcTime < stTime)
109 3 {
110 4 endLBA = curLBA;
111 4 gv_RCurrent_LBA[gv_HDD_play_hdd_index] = curLBA;
112 4 }
113 3 else if(srcTime > stTime)
114 3 {
115 4 startLBA = curLBA;
116 4 gv_RCurrent_LBA[gv_HDD_play_hdd_index] = startLBA;
C51 COMPILER V7.50 GSEARCH 12/14/2005 10:05:33 PAGE 3
117 4 }
118 3 }
119 2
120 2 #ifdef DEBUG_SEARCH_BLOCK
printf("\n\rFound target LBA");
#endif
123 2 return 1;
124 2 }
125 1
126 1 #ifdef DEBUG_SEARCH_BLOCK
printf("\n\rFail to find target LBA");
#endif
129 1
130 1 return 0;
131 1 }
132
133 //===============================================================================
134 //
135 //===============================================================================
136 u8 search_block()
137 {
138 1 xdata u32 src_time;
139 1 //xdata u8 tempWrappingFlag;
140 1 //xdata u32 tempWCurrentLBA;
141 1
142 1 dv03_enable();
143 1 #ifdef DEBUG_SEARCH_BLOCK
printf("\n\rTarget time: "); disp_time(gv_time_data);
#endif
146 1
147 1 src_time = mktime(gv_time_data); // user input time from TIME_SEARCH_input() // [AVH]
148 1
149 1 // check master top ~ wp-1
150 1 if(gv_WCurrent_LBA[gv_HDD_play_hdd_index]>1)
151 1 {
152 2 if( check_range(
153 2 src_time,
154 2 gv_HDD_play_hdd_index,
155 2 HDD_TOP,
156 2 (gv_WCurrent_LBA[gv_HDD_play_hdd_index]-1)
157 2 )
158 2 )// if hit
159 2 {
160 3 return 1;
161 3 }
162 2 }
163 1
164 1 if(Val_EPROM_WRAPPING_FLAG[gv_HDD_play_hdd_index])
165 1 { // if hdd full
166 2 if(gv_WCurrent_LBA[gv_HDD_play_hdd_index]<gv_HDD_size[gv_HDD_play_hdd_index])
167 2 {
168 3 if( check_range(
169 3 src_time,
170 3 gv_HDD_play_hdd_index,
171 3 gv_WCurrent_LBA[gv_HDD_play_hdd_index],
172 3 (gv_HDD_size[gv_HDD_play_hdd_index]-1)
173 3 )
174 3 )// if hit
175 3 {
176 4 return 1;
177 4 }
178 3 }
C51 COMPILER V7.50 GSEARCH 12/14/2005 10:05:33 PAGE 4
179 2 }
180 1 return 0;
181 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 917 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 38
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -