0
|
1 /*
|
60
|
2 * p2_deco_main_c_v108.c
|
0
|
3 *
|
60
|
4 * Created on: 12.05.2009
|
|
5 * Author: chsw
|
0
|
6 *
|
60
|
7 * Changes: debug / plausibiliy output
|
0
|
8 */
|
|
9
|
|
10 //#include <p2_deco_header_c_v102d.h>
|
|
11
|
60
|
12
|
0
|
13 // OSTC - diving computer code
|
60
|
14 // Copyright (C) 2008 HeinrichsWeikamp GbR
|
0
|
15
|
|
16 // This program is free software: you can redistribute it and/or modify
|
|
17 // it under the terms of the GNU General Public License as published by
|
|
18 // the Free Software Foundation, either version 3 of the License, or
|
|
19 // (at your option) any later version.
|
|
20
|
|
21 // This program is distributed in the hope that it will be useful,
|
|
22 // but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
24 // GNU General Public License for more details.
|
|
25
|
|
26 // You should have received a copy of the GNU General Public License
|
|
27 // along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
28
|
|
29
|
|
30 // *****************************
|
|
31 // ** I N T R O D U C T I O N **
|
|
32 // *****************************
|
|
33 //
|
|
34 // OSTC
|
|
35 //
|
|
36 // code:
|
|
37 // p2_deco_main_c_v101.c
|
|
38 // part2 of the OSTC code
|
|
39 // code with constant O2 partial pressure routines
|
|
40 // under construction !!
|
|
41 //
|
|
42 // summary:
|
|
43 // decompression routines
|
|
44 // for the OSTC experimental project
|
|
45 // written by Christian Weikamp
|
|
46 // last revision __________
|
|
47 // comments added _________
|
|
48 //
|
|
49 // additional files:
|
|
50 // p2_tables_v100.romdata (other files)
|
|
51 // 18f4685_ostc_v100.lkr (linker script)
|
|
52 //
|
|
53 // history:
|
|
54 // 01/03/08 v100: first release candidate
|
|
55 // 03/13/08 v101: start of programming ppO2 code
|
|
56 // 03/13/25 v101a: backup of interrim version with ppO2 calculation
|
|
57 // 03/13/25 v101: open circuit gas change during deco
|
|
58 // 03/13/25 v101: CNS_fraction calculation
|
|
59 // 03/13/26 v101: optimization of tissue calc routines
|
|
60 // 07/xx/08 v102a: debug of bottom time routine
|
|
61 // 09/xx/08 v102d: Gradient Factor Model implemenation
|
|
62 // 10/10/08 v104: renamed to build v103 for v118 stable
|
|
63 // 10/14/08 v104: integration of temp_depth_last_deco for Gradient Model
|
60
|
64 // 03/31/09 v107: integration of FONT Incon24
|
|
65 // 05/23/10 v109: 5 gas changes & 1 min timer
|
|
66 // 07/13/10 v110: cns vault added
|
0
|
67
|
|
68 //
|
|
69 // literature:
|
|
70 // B"uhlmann, Albert: Tauchmedizin; 4. Auflage;
|
|
71 // Schr"oder, Kai & Reith, Steffen; 2000; S"attigungsvorg"ange beim Tauchen, das Modell ZH-L16, Funktionsweise von Tauchcomputern; http://www.achim-und-kai.de/kai/tausim/saett_faq
|
|
72 // Morrison, Stuart; 2000; DIY DECOMPRESSION; http://www.lizardland.co.uk/DIYDeco.html
|
|
73 // Balthasar, Steffen; Dekompressionstheorie I: Neo Haldane Modelle; http://www.txfreak.de/dekompressionstheorie_1.pdf
|
|
74 // Baker, Erik C.; Clearing Up The Confusion About "Deep Stops"
|
|
75 // Baker, Erik C.; Understanding M-values; http://www.txfreak.de/understanding_m-values.pdf
|
|
76
|
|
77
|
|
78 // *********************
|
|
79 // ** I N C L U D E S **
|
|
80 // *********************
|
|
81 #include <p18f4685.h>
|
|
82 #include <math.h>
|
|
83
|
|
84 // ********************************
|
|
85 // ** C O N F I G U R A T I O N **
|
|
86 // ** for simulation without asm **
|
|
87 // ********************************
|
|
88 #pragma config OSC = IRCIO67
|
|
89 #pragma config FCMEN = OFF
|
|
90 #pragma config IESO = OFF
|
|
91 #pragma config PWRT = ON
|
|
92 #pragma config BOREN = OFF
|
|
93 #pragma config WDT = OFF
|
|
94 #pragma config WDTPS = 128
|
|
95 #pragma config MCLRE = ON
|
|
96 #pragma config LPT1OSC = OFF
|
|
97 #pragma config PBADEN = OFF
|
|
98 #pragma config DEBUG = OFF
|
|
99 #pragma config XINST = OFF
|
|
100 #pragma config LVP = OFF
|
|
101 #pragma config STVREN = OFF
|
|
102
|
|
103 // ****************************
|
|
104 // ** D E F I N E S **
|
|
105 // ** missing in p18f4685.h **
|
|
106 // ****************************
|
|
107 #define INT0IF 1
|
|
108 #define INT1IF 0
|
|
109 #define TMR1IF 0
|
60
|
110
|
|
111 #define oled_clk PORTD, 0,0
|
|
112 #define oled_data PORTD, 1,0
|
|
113 #define oled_en PORTE, 0,0
|
|
114 #define oled_rs PORTE, 1,0
|
|
115 #define flag5 0x29 // in Bank1
|
|
116 //#define no_sensor_int flag5,7,1 // ; block any further access to pressure sensor
|
0
|
117
|
|
118 # define DBG_c_gas 0b0000000000000001
|
|
119 # define DBG_c_ppO2 0b0000000000000010
|
|
120 # define DBG_RUN 0b0000000000000100
|
|
121 # define DBG_RESTART 0b0000000000001000
|
|
122
|
|
123 # define DBG_CdeSAT 0b0000000000010000
|
|
124 # define DBG_C_MODE 0b0000000000100000
|
|
125 # define DBG_C_SURF 0b0000000001000000
|
|
126 # define DBG_HEwoHE 0b0000000010000000
|
|
127
|
|
128 # define DBG_C_DPPO2 0b0000000100000000
|
|
129 # define DBG_C_DGAS 0b0000001000000000
|
|
130 # define DBG_C_DIST 0b0000010000000000
|
|
131 # define DBG_C_LAST 0b0000100000000000
|
|
132
|
|
133 # define DBG_C_GF 0b0001000000000000
|
|
134 # define DBG_ZH16ERR 0b0010000000000000
|
|
135 # define DBG_PHIGH 0b0100000000000000
|
|
136 # define DBG_PLOW 0b1000000000000000
|
|
137
|
|
138
|
|
139 # define DBS_mode 0b0000000000000001
|
|
140 # define DBS_ppO2 0b0000000000000010
|
|
141 # define DBS_HE_sat 0b0000000000000100
|
|
142 # define DBS_ppO2chg 0b0000000000001000
|
|
143
|
|
144 # define DBS_SAT2l 0b0000000000010000
|
|
145 # define DBS_SAT2h 0b0000000000100000
|
|
146 # define DBS_GFLOW2l 0b0000000001000000
|
|
147 # define DBS_GFLOW2h 0b0000000010000000
|
|
148
|
|
149 # define DBS_GFHGH2l 0b0000000100000000
|
|
150 # define DBS_GFHGH2h 0b0000001000000000
|
|
151 # define DBS_GASO22l 0b0000010000000000
|
|
152 # define DBS_GASO22h 0b0000100000000000
|
|
153
|
|
154 # define DBS_DIST2h 0b0001000000000000
|
|
155 # define DBS_LAST2h 0b0010000000000000
|
|
156 # define DBS_DECOO2l 0b0100000000000000
|
|
157 # define DBS_DECOO2h 0b1000000000000000
|
|
158
|
|
159
|
|
160 # define DBS2_PRES2h 0b0000000000000001
|
|
161 # define DBS2_PRES2l 0b0000000000000010
|
|
162 # define DBS2_SURF2l 0b0000000000000100
|
|
163 # define DBS2_SURF2h 0b0000000000001000
|
|
164
|
|
165 # define DBS2_DESAT2l 0b0000000000010000
|
|
166 # define DBS2_DESAT2h 0b0000000000100000
|
|
167 # define DBS2_GFDneg 0b0000000001000000
|
|
168 # define DBS2_ 0b000000000000000
|
|
169
|
|
170 # define DBS2_ 0b000000000000000
|
|
171 # define DBS2_ 0b000000000000000
|
|
172 # define DBS2_ 0b000000000000000
|
|
173 # define DBS2_ 0b000000000000000
|
|
174
|
|
175 // NDL_at_20mtr
|
|
176
|
60
|
177 # define MBAR_REACH_GASCHANGE_AUTO_CHANGE_OFF 150
|
0
|
178
|
|
179 // ***********************
|
|
180 // ** V A R I A B L E S **
|
|
181 // ***********************
|
|
182 // prefixes etc:
|
|
183 // _O_ = output for use in the assembler code
|
|
184 // _I_ = input from the assembler code for the c code
|
|
185 // char_ and int_ = used to identify output and input size
|
|
186 // var = variable (from b"uhlmann)
|
|
187 // pres = pressure
|
|
188 // gtissue = guiding tissue, the one limiting the ascent
|
|
189 // e2secs = exp of the b"uhlmann formula precalculated for a 2 second step
|
|
190 // e1min = same for 1 minute step
|
|
191 // sim = used in simulating the ascent to the surface
|
|
192 // nullzeit = remaining ground/bottom time for "no deco"
|
|
193 // hauptroutine = main
|
|
194
|
|
195 #pragma udata bank0a=0x060
|
60
|
196 volatile unsigned char dd2_stringstore[17];
|
|
197 #pragma udata bank0b=0x071
|
|
198 volatile unsigned char keep_free_bank0[21];
|
|
199
|
|
200 #pragma udata bank0c=0x086
|
|
201 volatile unsigned char dd2_left; // 1 - 64
|
|
202 volatile unsigned char dd2_top; // 1 - 64
|
|
203 volatile unsigned char dd2_heightmax; // 1 - 37
|
|
204 volatile unsigned char dd2_oled_brightness_offset; // 0 - 15 (15 is pitch black always)
|
|
205 volatile unsigned char dd2_fontwidth; // 8, 12, 21 for Incon16, Incon24, Incon42
|
|
206 volatile unsigned char dd2_fontheight; // 14, 21, 37 for "
|
|
207 volatile unsigned long dd2_pointer; // for font lut
|
|
208 volatile unsigned char dd2_i;
|
|
209 volatile unsigned char dd2_j;
|
|
210 volatile unsigned char dd2_k;
|
|
211 volatile unsigned char dd2_char;
|
|
212 volatile unsigned char dd2_lowbyte;
|
|
213 volatile unsigned char dd2_temp;
|
|
214 volatile unsigned char dd2_data;
|
|
215 volatile unsigned long dd2_base; // for font lut
|
|
216 volatile unsigned char dd2_start; // for font lut
|
|
217 volatile unsigned char dd2_end; // for font lut
|
|
218
|
|
219
|
|
220 #pragma udata bank1=0x100
|
|
221 const unsigned char keep_free_bank1[256]; // used by the assembler code
|
0
|
222
|
|
223 #pragma udata bank2a=0x200
|
|
224 // output:
|
|
225 static unsigned int int_O_tissue_for_debug[32];
|
|
226 static unsigned int int_O_GF_spare____; // 0x240
|
|
227 static unsigned int int_O_GF_step; // 0x242
|
|
228 static unsigned int int_O_gtissue_limit; // 0x244
|
|
229 static unsigned int int_O_gtissue_press; // 0x246
|
|
230 static unsigned int int_O_limit_GF_low; // 0x248
|
|
231 static unsigned int int_O_gtissue_press_at_GF_low; // 0x24A
|
60
|
232 volatile unsigned char char_I_step_is_1min; // 0x24C
|
|
233
|
|
234 // ...
|
0
|
235 #pragma udata bank2b=0x24E
|
|
236 static unsigned char char_O_GF_low_pointer; // 0x24E
|
|
237 static unsigned char char_O_actual_pointer; // 0x24F
|
|
238 #pragma udata bank2c=0x250
|
|
239 static unsigned char char_O_deco_table[32]; // 0x250
|
|
240 #pragma udata bank2d=0x270
|
|
241 static unsigned char char_I_table_deco_done[32];
|
|
242 #pragma udata bank2e=0x290
|
|
243 static unsigned int int_O_calc_tissue_call_counter; // 0x290
|
|
244 // internal:
|
|
245 unsigned char lock_GF_depth_list;
|
|
246 static float temp_limit;
|
|
247 static float GF_low;
|
|
248 static float GF_high;
|
|
249 static float GF_delta;
|
|
250 static float GF_temp;
|
|
251 static float GF_step;
|
|
252 static float GF_step2;
|
|
253 static float temp_pres_gtissue;
|
|
254 static float temp_pres_gtissue_diff;
|
|
255 static float temp_pres_gtissue_limit_GF_low;
|
|
256 static float temp_pres_gtissue_limit_GF_low_below_surface;
|
|
257 static unsigned int temp_depth_limit;
|
|
258 static unsigned char temp_decotime;
|
|
259 static unsigned char temp_gtissue_no;
|
|
260 static unsigned int temp_depth_last_deco; // new in v.101
|
|
261
|
|
262 static unsigned char temp_depth_GF_low_meter;
|
|
263 static unsigned char temp_depth_GF_low_number;
|
|
264 static unsigned char internal_deco_pointer;
|
60
|
265
|
|
266 #pragma udata bank2f=0x2C8
|
|
267 static unsigned char internal_deco_table[32]; // 0x2C8
|
0
|
268 static float temp_pres_deco_GF_low;
|
|
269
|
|
270 static unsigned int debug_temp;
|
|
271
|
|
272
|
|
273 #pragma udata bank3a=0x300
|
|
274 static char output[32];
|
|
275 // used by the math routines
|
60
|
276 #pragma udata bank3b=0x37C
|
|
277 volatile float cns_vault;
|
|
278 #pragma udata bank3c=0x380
|
0
|
279 volatile float pres_tissue_vault[32];
|
|
280 #pragma udata bank4a=0x400
|
|
281 // internal:
|
|
282 unsigned char ci ; // don't move - used in _asm routines - if moved then modify movlb commands
|
|
283 unsigned char x;
|
|
284 unsigned int main_i;
|
|
285 unsigned int int_temp;
|
60
|
286 unsigned int int_temp2;
|
0
|
287 unsigned int int_temp_decostatus;
|
|
288 static float pres_respiration;
|
|
289 static float pres_surface;
|
|
290 static float temp1;
|
|
291 static float temp2;
|
|
292 static float temp3;
|
|
293 static float temp4;
|
|
294 static float temp_deco;
|
|
295 static float temp_atem;
|
|
296 static float temp2_atem;
|
|
297 static float temp_tissue;
|
|
298 static float temp_surface;
|
|
299 static float N2_ratio;
|
|
300 static float He_ratio;
|
|
301 static float temp_ratio;
|
|
302 static float var_a;
|
|
303 static float var2_a;
|
|
304 static float var_b;
|
|
305 static float var2_b;
|
|
306 static float var_t05nc;
|
|
307 static float var2_t05nc;
|
|
308 static float var_e2secs;
|
|
309 static float var2_e2secs;
|
|
310 static float var_e1min;
|
|
311 static float var2_e1min;
|
|
312 static float var_halftimes;
|
|
313 static float var2_halftimes;
|
|
314 static float pres_gtissue_limit;
|
|
315 static float temp_pres_gtissue_limit;
|
|
316 static float actual_ppO2; // new in v.102
|
60
|
317
|
0
|
318 #pragma udata bank4b=0x480
|
|
319 static float pres_tissue[32];
|
|
320
|
|
321 #pragma udata bank5=0x500
|
|
322 // don't move positions in this bank, the registers are addressed directly from assembler code
|
|
323 // input:
|
|
324 static unsigned int int_I_pres_respiration; // 0x500
|
|
325 static unsigned int int_I_pres_surface; // 0x502
|
|
326 static unsigned int int_I_temp; // 0x504 new in v101
|
|
327 static unsigned char char_I_temp; // 0x506 new in v101
|
|
328 static unsigned char char_I_actual_ppO2; // 0x507
|
60
|
329 static unsigned char char_I_deco_N2_ratio2; // 0x508 new in v.109
|
|
330 static unsigned char char_I_deco_He_ratio2; // 0x509 new in v.109
|
|
331 static unsigned char char_I_deco_N2_ratio3; // 0x50A new in v.109
|
|
332 static unsigned char char_I_deco_He_ratio3; // 0x50B new in v.109
|
|
333 static unsigned char char_I_deco_N2_ratio4; // 0x50C new in v.109
|
|
334 static unsigned char char_I_deco_He_ratio4; // 0x50D new in v.109
|
|
335 static unsigned char char_I_deco_N2_ratio5; // 0x50E new in v.109
|
|
336 static unsigned char char_I_deco_He_ratio5; // 0x50F new in v.109
|
0
|
337 static unsigned char char_I_N2_ratio; // 0x510
|
|
338 static unsigned char char_I_He_ratio; // 0x511
|
|
339 static unsigned char char_I_saturation_multiplier; // for conservatism/safety values 1.0 (no conservatism) to 1.5 (50% faster saturation
|
|
340 static unsigned char char_I_desaturation_multiplier; // for conservatism/safety values 0.66 (50% slower desaturation) to 1.0 (no conservatism)// consveratism used in calc_tissue(), calc_tissue_step_1_min() and sim_tissue_1min()
|
|
341 static unsigned char char_I_GF_High_percentage; // 0x514 new in v.102
|
|
342 static unsigned char char_I_GF_Low_percentage; // 0x515 new in v.102
|
|
343 static unsigned char char_I_spare; // 0x516
|
|
344 static unsigned char char_I_deco_distance; // 0x517
|
|
345 static unsigned char char_I_const_ppO2; // 0x518 new in v.101
|
|
346 static unsigned char char_I_deco_ppO2_change; // 0x519 new in v.101
|
|
347 static unsigned char char_I_deco_ppO2; // 0x51A new in v.101
|
|
348 static unsigned char char_I_deco_gas_change; // 0x51B new in v.101
|
|
349 static unsigned char char_I_deco_N2_ratio; // 0x51C new in v.101
|
|
350 static unsigned char char_I_deco_He_ratio; // 0x51D new in v.101
|
|
351 static unsigned char char_I_depth_last_deco; // 0x51E new in v.101 unit: [m]
|
|
352 static unsigned char char_I_deco_model; // 0x51F new in v.102 ( 1 = MultiGraF, sonst Std. mit (de-)saturation_multiplier)
|
60
|
353
|
|
354
|
|
355 // output:
|
0
|
356 static unsigned int int_O_desaturation_time; // 0x520
|
|
357 static unsigned char char_O_nullzeit; // 0x522
|
|
358 static unsigned char char_O_deco_status; // 0x523
|
|
359 static unsigned char char_O_array_decotime[7]; // 0x524
|
|
360 static unsigned char char_O_array_decodepth[6]; // 0x52B
|
|
361 static unsigned char char_O_ascenttime; // 0x531
|
|
362 static unsigned char char_O_gradient_factor; // 0x532
|
|
363 static unsigned char char_O_tissue_saturation[32]; // 0x533
|
|
364 static unsigned char char_O_array_gradient_weighted[16]; // 0x553
|
|
365 static unsigned char char_O_gtissue_no; // 0x563
|
|
366 static unsigned char char_O_diluent; // 0x564 new in v.101
|
|
367 static unsigned char char_O_CNS_fraction; // 0x565 new in v.101
|
|
368 static unsigned char char_O_relative_gradient_GF; // 0x566 new in v.102
|
60
|
369 static unsigned char char_I_deco_gas_change2; // 0x567 new in v.109
|
|
370 static unsigned char char_I_deco_gas_change3; // 0x568 new in v.109
|
|
371 static unsigned char char_I_deco_gas_change4; // 0x569 new in v.109
|
|
372 static unsigned char char_I_deco_gas_change5; // 0x56A new in v.109
|
0
|
373 // internal:
|
|
374 static float pres_tissue_limit[16];
|
|
375 static float sim_pres_tissue_limit[16];
|
|
376 static float pres_diluent; // new in v.101
|
|
377 static float deco_diluent; // new in v.101
|
|
378 static float const_ppO2; // new in v.101
|
|
379 static float deco_ppO2_change; // new in v.101
|
|
380 static float deco_ppO2; // new in v.101
|
|
381
|
|
382
|
|
383
|
|
384 #pragma udata bank6=0x600
|
|
385 // internal:
|
|
386 static float sim_pres_tissue[32];
|
|
387 static float sim_pres_tissue_backup[32];
|
|
388
|
60
|
389 #pragma udata bank7=0x700
|
|
390 const unsigned char keep_free_bank7[256]; // used by the assembler code (DD font2display)
|
0
|
391
|
|
392 #pragma udata bank8=0x800
|
|
393 static char md_pi_subst[256];
|
|
394
|
|
395 #pragma udata bank9a=0x900
|
|
396 // output:
|
|
397 static char md_state[48]; // DONT MOVE !! // has to be at the beginning of bank 9 for the asm code!!!
|
|
398 #pragma udata bank9b=0x930
|
|
399 // output:
|
|
400 static unsigned int int_O_DBS_bitfield; // 0x930 new in v.108
|
|
401 static unsigned int int_O_DBS2_bitfield; // 0x932 new in v.108
|
|
402 static unsigned int int_O_DBG_pre_bitfield; // 0x934 new in v.108
|
|
403 static unsigned int int_O_DBG_post_bitfield; // 0x936 new in v.108
|
|
404 static char char_O_NDL_at_20mtr; // 0x938 new in v.108 // 0xFF == undefined, max. 254
|
|
405 // internal:
|
|
406 static char md_t;
|
|
407 static char md_buffer[16];
|
|
408 static char md_cksum[16];
|
|
409 static char md_i;
|
|
410 static char md_j;
|
|
411 static char md_temp;
|
|
412 static unsigned int md_pointer;
|
|
413 static float deco_N2_ratio; // new in v.101
|
|
414 static float deco_He_ratio; // new in v.101
|
|
415 static float calc_N2_ratio; // new in v.101
|
|
416 static float calc_He_ratio; // new in v.101
|
|
417 static float deco_gas_change; // new in v.101
|
|
418 static float CNS_fraction; // new in v.101
|
|
419 static float float_saturation_multiplier; // new in v.101
|
|
420 static float float_desaturation_multiplier; // new in v.101
|
|
421 static float float_deco_distance; // new in v.101
|
60
|
422 // internal, dbg:
|
0
|
423 static unsigned char DBG_char_I_deco_model; // new in v.108
|
|
424 static unsigned char DBG_char_I_depth_last_deco; // new in v.108
|
|
425 static float DBG_pres_surface; // new in v.108
|
|
426 static float DBG_GF_low; // new in v.108
|
|
427 static float DBG_GF_high; // new in v.108
|
|
428 static float DBG_const_ppO2; // new in v.108
|
|
429 static float DBG_deco_ppO2_change; // new in v.108
|
|
430 static float DBG_deco_ppO2; // new in v.108
|
|
431 static float DBG_deco_N2_ratio; // new in v.108
|
|
432 static float DBG_deco_He_ratio; // new in v.108
|
|
433 static float DBG_deco_gas_change; // new in v.108
|
|
434 static float DBG_float_saturation_multiplier; // new in v.108
|
|
435 static float DBG_float_desaturation_multiplier; // new in v.108
|
|
436 static float DBG_float_deco_distance; // new in v.108
|
|
437 static float DBG_deco_N2_ratio; // new in v.108
|
|
438 static float DBG_deco_He_ratio; // new in v.108
|
|
439 static float DBG_N2_ratio; // new in v.108
|
|
440 static float DBG_He_ratio; // new in v.108
|
|
441 static char flag_in_divemode; // new in v.108
|
|
442 static int int_dbg_i; // new in v.108
|
|
443 unsigned int temp_DBS;
|
|
444
|
60
|
445 static float deco_gas_change2; // new in v.109
|
|
446 static float deco_gas_change3; // new in v.109
|
|
447 static float deco_gas_change4; // new in v.109
|
|
448 static float deco_gas_change5; // new in v.109
|
|
449
|
|
450 static float deco_N2_ratio2; // new in v.109
|
|
451 static float deco_N2_ratio3; // new in v.109
|
|
452 static float deco_N2_ratio4; // new in v.109
|
|
453 static float deco_N2_ratio5; // new in v.109
|
|
454 static float deco_He_ratio2; // new in v.109
|
|
455 static float deco_He_ratio3; // new in v.109
|
|
456 static float deco_He_ratio4; // new in v.109
|
|
457 static float deco_He_ratio5; // new in v.109
|
|
458
|
|
459
|
0
|
460 // *************************
|
|
461 // ** P R O T O T Y P E S **
|
|
462 // *************************
|
|
463 void main_calc_hauptroutine(void);
|
|
464 void main_calc_without_deco(void);
|
|
465 void main_clear_tissue(void);
|
|
466 void main_calc_percentage(void);
|
|
467 void main_calc_wo_deco_step_1_min(void);
|
|
468 void main_debug(void);
|
|
469 void main_gradient_array(void);
|
|
470 void main_hash(void);
|
|
471
|
|
472 void calc_hauptroutine(void);
|
|
473 void calc_tissue(void);
|
|
474 void calc_nullzeit(void);
|
|
475 void backup_sim_pres_tissue(void);
|
|
476 void restore_sim_pres_tissue(void);
|
|
477
|
|
478 void calc_without_deco(void);
|
|
479 void clear_tissue(void);
|
|
480 void calc_ascenttime(void);
|
|
481 void update_startvalues(void);
|
|
482 void clear_decoarray(void);
|
|
483 void update_decoarray(void);
|
|
484 void sim_tissue_1min(void);
|
|
485 void sim_tissue_10min(void);
|
|
486 void calc_gradient_factor(void);
|
|
487 void calc_gradient_array_only(void);
|
|
488 void calc_desaturation_time(void);
|
|
489 void calc_wo_deco_step_1_min(void);
|
|
490 void calc_tissue_step_1_min(void);
|
60
|
491 //void debug(void);
|
0
|
492 void hash(void);
|
|
493 void clear_CNS_fraction(void);
|
|
494 void calc_CNS_fraction(void);
|
|
495 void calc_CNS_decrease_15min(void);
|
|
496 void calc_percentage(void);
|
|
497 void main(void);
|
|
498 void calc_hauptroutine_data_input(void);
|
|
499 void calc_hauptroutine_update_tissues(void);
|
|
500 void calc_hauptroutine_calc_deco(void);
|
|
501 void calc_hauptroutine_calc_ascend_to_deco(void);
|
60
|
502 //void build_debug_output(void);
|
0
|
503 void calc_nextdecodepth_GF(void);
|
|
504 void copy_deco_table_GF(void);
|
|
505 void clear_internal_deco_table_GF(void);
|
|
506 void update_internal_deco_table_GF(void);
|
|
507 void DD2_write(void);
|
|
508 void DD2_write_incon42(void);
|
60
|
509 void DD2_get_pointer_to_char(void);//dd2_char, &dd2_pointer);
|
|
510 void DD2_set_column(void);//top, dd2_k);void DD2_load_background(void);//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax);
|
0
|
511 void DD2_load_background(void);
|
60
|
512 void DD2_build_one_line_of_char(void);//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte);
|
|
513 void DD2_print_column(void);//&dd2_columnstore, dd2_heightmax);
|
0
|
514 void DD2_CmdWrite(void);
|
|
515 void DD2_DataWrite(void);
|
|
516 void push_tissues_to_vault(void);
|
|
517 void pull_tissues_from_vault(void);
|
|
518 void main_push_tissues_to_vault(void);
|
|
519 void main_pull_tissues_from_vault(void);
|
|
520
|
|
521 // *******************************
|
|
522 // ** start **
|
|
523 // ** necessary for compilation **
|
|
524 // *******************************
|
|
525 #pragma romdata der_code = 0x0000
|
|
526 #pragma code der_start = 0x0000
|
|
527 void der_start(void)
|
|
528 {
|
|
529 _asm
|
|
530 goto main
|
|
531 _endasm
|
|
532 }
|
|
533
|
|
534 // ***********************************
|
|
535 // ** main code for simulation / **
|
|
536 // ** tests without assembler code **
|
|
537 // ** is NOT a part of the OSTC **
|
|
538 // ***********************************
|
|
539 #pragma code main = 0x9000
|
|
540 void main(void)
|
|
541 {
|
|
542 #if 1
|
|
543 // new main to test DR-5
|
|
544
|
60
|
545 char_I_deco_model = 0;
|
0
|
546
|
|
547 GF_low = 1.0;
|
|
548 GF_high = 1.0;
|
|
549
|
|
550 GF_temp = GF_low * GF_high;
|
|
551
|
|
552 clear_CNS_fraction();
|
|
553 //char_I_const_ppO2 = 100;
|
|
554 //for (main_i=0;main_i<255;main_i++)
|
|
555 //{
|
|
556 //calc_CNS_fraction();
|
|
557 //} //for
|
|
558
|
|
559
|
|
560
|
|
561
|
|
562 int_I_pres_respiration = 1000;//980;
|
|
563 int_I_pres_surface = 1000;//980;
|
60
|
564 char_I_N2_ratio = 79; //38;
|
|
565 char_I_He_ratio = 0; //50;
|
|
566 char_I_deco_distance = 10; // 10 = 1 meter
|
0
|
567 char_I_depth_last_deco = 3; // values below 3 (meter) are ignored
|
|
568
|
|
569 char_I_const_ppO2 = 0;
|
|
570 char_I_deco_ppO2_change = 0; // [dm] 10 = 1 meter
|
|
571 char_I_deco_ppO2 = 0;
|
|
572
|
60
|
573 char_I_deco_gas_change = 20; // [m] 1 = 1 meter
|
|
574 char_I_deco_N2_ratio = 50;
|
0
|
575 char_I_deco_He_ratio = 0;
|
|
576
|
60
|
577 char_I_deco_gas_change2 = 6; // [m] 1 = 1 meter
|
|
578 char_I_deco_N2_ratio2 = 0;
|
|
579 char_I_deco_He_ratio2 = 0;
|
|
580
|
|
581 char_I_deco_gas_change3 = 0; // [m] 1 = 1 meter
|
|
582 char_I_deco_gas_change4 = 0; // [m] 1 = 1 meter
|
|
583 char_I_deco_gas_change5 = 0; // [m] 1 = 1 meter
|
|
584
|
0
|
585 //char_I_actual_ppO2; // 0x507
|
|
586 char_I_GF_High_percentage = 100; // 0x514 new in v.102
|
|
587 char_I_GF_Low_percentage = 100; // 0x515 new in v.102
|
|
588
|
|
589 char_I_saturation_multiplier = 110;
|
|
590 char_I_desaturation_multiplier = 90;
|
|
591
|
|
592
|
|
593 main_clear_tissue();
|
|
594
|
60
|
595 char_I_step_is_1min = 1;
|
|
596 int_I_pres_respiration = 4500 + int_I_pres_surface;
|
|
597
|
|
598 for (main_i=0;main_i<29;main_i++)
|
|
599 {
|
|
600 main_calc_hauptroutine();
|
|
601 }
|
|
602
|
|
603 char_I_step_is_1min = 0;
|
|
604 char_O_deco_status = 255;
|
|
605 while (char_O_deco_status)
|
|
606 main_calc_hauptroutine();
|
|
607 _asm
|
|
608 nop
|
|
609 _endasm
|
0
|
610
|
|
611 char_O_deco_status = 255;
|
|
612 while (char_O_deco_status)
|
|
613 main_calc_hauptroutine();
|
|
614 _asm
|
|
615 nop
|
|
616 _endasm
|
|
617
|
|
618 int_I_pres_respiration = 10000;
|
|
619 for (main_i=0;main_i<1500;main_i++)
|
|
620 {
|
|
621 main_calc_hauptroutine();
|
|
622 }
|
|
623
|
|
624 _asm
|
|
625 nop
|
|
626 _endasm
|
|
627
|
|
628
|
|
629 int_I_pres_respiration = 3000;
|
|
630 for (main_i=0;main_i<150;main_i++)
|
|
631 {
|
|
632 calc_hauptroutine_data_input();
|
|
633 calc_hauptroutine_update_tissues();
|
|
634 } //for
|
|
635
|
|
636 update_startvalues();
|
|
637 clear_decoarray();
|
|
638 clear_internal_deco_table_GF();
|
|
639 calc_hauptroutine_calc_ascend_to_deco();
|
|
640 if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot
|
|
641 {
|
|
642 char_O_deco_status = 2;
|
|
643 // char_O_lock_depth_list = 255;
|
|
644 }
|
|
645 else
|
|
646 {
|
|
647 // char_O_lock_depth_list = lock_GF_depth_list;
|
|
648 calc_hauptroutine_calc_deco();
|
|
649 }
|
|
650 // build_debug_output();
|
|
651
|
|
652 _asm
|
|
653 nop
|
|
654 _endasm
|
|
655 while (char_O_deco_status == 1)
|
|
656 {
|
|
657 char_O_deco_status = 0;
|
|
658 // char_O_lock_depth_list = 255;
|
|
659 calc_hauptroutine_calc_deco();
|
|
660 // build_debug_output();
|
|
661 _asm
|
|
662 nop
|
|
663 _endasm
|
|
664 };
|
|
665 debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min]
|
|
666 int_I_pres_respiration = 9980;
|
|
667 for (main_i=0;main_i<debug_temp;main_i++)
|
|
668 {
|
|
669 int_I_pres_respiration = int_I_pres_respiration - 33;
|
|
670 calc_hauptroutine_data_input();
|
|
671 calc_hauptroutine_update_tissues();
|
|
672 int_I_pres_respiration = int_I_pres_respiration - 33;
|
|
673 calc_hauptroutine_data_input();
|
|
674 calc_hauptroutine_update_tissues();
|
|
675 int_I_pres_respiration = int_I_pres_respiration - 34;
|
|
676 calc_hauptroutine_data_input();
|
|
677 calc_hauptroutine_update_tissues();
|
|
678 } //for
|
|
679 _asm
|
|
680 nop
|
|
681 _endasm
|
|
682
|
|
683 update_startvalues();
|
|
684 clear_decoarray();
|
|
685 clear_internal_deco_table_GF();
|
|
686 calc_hauptroutine_calc_ascend_to_deco();
|
|
687 if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot
|
|
688 {
|
|
689 char_O_deco_status = 2;
|
|
690 // char_O_lock_depth_list = 255;
|
|
691 }
|
|
692 else
|
|
693 {
|
|
694 // char_O_lock_depth_list = lock_GF_depth_list;
|
|
695 calc_hauptroutine_calc_deco();
|
|
696 }
|
|
697 // build_debug_output();
|
|
698
|
|
699 _asm
|
|
700 nop
|
|
701 _endasm
|
|
702 while (char_O_deco_status == 1)
|
|
703 {
|
|
704 char_O_deco_status = 0;
|
|
705 // char_O_lock_depth_list = 255;
|
|
706 calc_hauptroutine_calc_deco();
|
|
707 // build_debug_output();
|
|
708 _asm
|
|
709 nop
|
|
710 _endasm
|
|
711 };
|
|
712 _asm
|
|
713 nop
|
|
714 _endasm
|
|
715 debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min]
|
|
716 int_I_pres_respiration = 9980;
|
|
717 debug_temp = debug_temp * 3;
|
|
718 for (main_i=0;main_i<debug_temp;main_i++)
|
|
719 {
|
|
720 calc_hauptroutine_data_input();
|
|
721 calc_hauptroutine_update_tissues();
|
|
722 } //for
|
|
723 _asm
|
|
724 nop
|
|
725 _endasm
|
|
726 #endif
|
|
727 // -----------------------
|
|
728
|
|
729 } // main
|
|
730
|
|
731 // ******************************************************
|
|
732 // ******************************************************
|
|
733 // ** THE FOLLOWING CODE HAS TO BE COPPIED TO THE OSTC **
|
|
734 // ******************************************************
|
|
735 // ******************************************************
|
|
736
|
|
737 // ***********************
|
|
738 // ***********************
|
|
739 // ** THE SUBROUTINES 2 **
|
|
740 // ***********************
|
|
741 // ***********************
|
|
742 // all new in v.102
|
|
743 // moved from 0x0D000 to 0x0C000 in v.108
|
|
744
|
|
745 #pragma code subroutines2 = 0x0C000 // can be adapted to fit the romdata tables ahead
|
|
746
|
|
747 // -------------------------------
|
|
748 // DBS - debug on start of dive //
|
|
749 // -------------------------------
|
|
750 void create_dbs_set_dbg_and_ndl20mtr(void)
|
|
751 {
|
|
752 int_O_DBS_bitfield = 0;
|
|
753 int_O_DBS2_bitfield = 0;
|
|
754 if(int_O_DBG_pre_bitfield & DBG_RUN)
|
|
755 int_O_DBG_pre_bitfield = DBG_RESTART;
|
|
756 else
|
|
757 int_O_DBG_pre_bitfield = DBG_RUN;
|
|
758 int_O_DBG_post_bitfield = 0;
|
|
759 char_O_NDL_at_20mtr = 255;
|
|
760
|
|
761 DBG_N2_ratio = N2_ratio;
|
|
762 DBG_He_ratio = He_ratio;
|
|
763 DBG_char_I_deco_model = char_I_deco_model;
|
|
764 DBG_char_I_depth_last_deco = char_I_depth_last_deco;
|
|
765 DBG_pres_surface = pres_surface;
|
|
766 DBG_GF_low = GF_low;
|
|
767 DBG_GF_high = GF_high;
|
|
768 DBG_const_ppO2 = const_ppO2;
|
|
769 DBG_deco_ppO2_change = deco_ppO2_change;
|
|
770 DBG_deco_ppO2 = deco_ppO2;
|
|
771 DBG_deco_N2_ratio = deco_N2_ratio;
|
|
772 DBG_deco_He_ratio = deco_He_ratio;
|
|
773 DBG_deco_gas_change = deco_gas_change;
|
|
774 DBG_float_saturation_multiplier = float_saturation_multiplier;
|
|
775 DBG_float_desaturation_multiplier = float_desaturation_multiplier;
|
|
776 DBG_float_deco_distance = float_deco_distance;
|
|
777
|
|
778 if(char_I_deco_model)
|
|
779 int_O_DBS_bitfield |= DBS_mode;
|
|
780 if(const_ppO2)
|
|
781 int_O_DBS_bitfield |= DBS_ppO2;
|
|
782 for(int_dbg_i = 16; int_dbg_i < 32; int_dbg_i++)
|
|
783 if(pres_tissue[int_dbg_i])
|
|
784 int_O_DBS_bitfield |= DBS_HE_sat;
|
|
785 if(deco_ppO2_change)
|
|
786 int_O_DBS_bitfield |= DBS_ppO2chg;
|
|
787 if(float_saturation_multiplier < 0.99)
|
|
788 int_O_DBS_bitfield |= DBS_SAT2l;
|
|
789 if(float_saturation_multiplier > 1.3)
|
|
790 int_O_DBS_bitfield |= DBS_SAT2h;
|
|
791 if(GF_low < 0.19)
|
|
792 int_O_DBS_bitfield |= DBS_GFLOW2l;
|
|
793 if(GF_low > 1.01)
|
|
794 int_O_DBS_bitfield |= DBS_GFLOW2h;
|
|
795 if(GF_high < 0.6)
|
|
796 int_O_DBS_bitfield |= DBS_GFHGH2l;
|
|
797 if(GF_high > 1.01)
|
|
798 int_O_DBS_bitfield |= DBS_GFHGH2h;
|
|
799 if((N2_ratio + He_ratio) > 0.95)
|
|
800 int_O_DBS_bitfield |= DBS_GASO22l;
|
|
801 if((N2_ratio + He_ratio) < 0.05)
|
|
802 int_O_DBS_bitfield |= DBS_GASO22h;
|
|
803 if(float_deco_distance > 0.25)
|
|
804 int_O_DBS_bitfield |= DBS_DIST2h;
|
|
805 if(char_I_depth_last_deco > 8)
|
|
806 int_O_DBS_bitfield |= DBS_LAST2h;
|
|
807 if(DBG_deco_gas_change && ((deco_N2_ratio + deco_He_ratio) > 0.95))
|
|
808 int_O_DBS_bitfield |= DBS_DECOO2l;
|
|
809 if(DBG_deco_gas_change && ((deco_N2_ratio + deco_He_ratio) < 0.05))
|
|
810 int_O_DBS_bitfield |= DBS_DECOO2h;
|
|
811 if(pres_respiration > 3.0)
|
|
812 int_O_DBS2_bitfield |= DBS2_PRES2h;
|
|
813 if(pres_surface - pres_respiration > 0.2)
|
|
814 int_O_DBS2_bitfield |= DBS2_PRES2l;
|
|
815 if(pres_surface < 0.75)
|
|
816 int_O_DBS2_bitfield |= DBS2_SURF2l;
|
|
817 if(pres_surface > 1.11)
|
|
818 int_O_DBS2_bitfield |= DBS2_SURF2h;
|
|
819 if(float_desaturation_multiplier < 0.70)
|
|
820 int_O_DBS2_bitfield |= DBS2_DESAT2l;
|
|
821 if(float_desaturation_multiplier > 1.01)
|
|
822 int_O_DBS2_bitfield |= DBS2_DESAT2h;
|
|
823 if(GF_low > GF_high)
|
|
824 int_O_DBS2_bitfield |= DBS2_GFDneg;
|
|
825 }
|
|
826
|
|
827 // -------------------------------
|
|
828 // DBG - set DBG to end_of_dive //
|
|
829 // -------------------------------
|
|
830 void set_dbg_end_of_dive(void)
|
|
831 {
|
|
832 int_O_DBG_pre_bitfield &= (~DBG_RUN);
|
|
833 int_O_DBG_post_bitfield &= (~DBG_RUN);
|
|
834 }
|
|
835
|
|
836 // -------------------------------
|
|
837 // DBG - NDL at first 20 m. hit //
|
|
838 // -------------------------------
|
|
839 void check_ndl(void)
|
|
840 {
|
|
841 if((char_O_NDL_at_20mtr == -1) && (int_I_pres_respiration > 3000))
|
|
842 {
|
|
843 char_O_NDL_at_20mtr = char_O_nullzeit;
|
|
844 if(char_O_NDL_at_20mtr == 255)
|
|
845 char_O_NDL_at_20mtr == 254;
|
|
846 }
|
|
847 }
|
|
848
|
|
849 // -------------------------------
|
|
850 // DBG - multi main during dive //
|
|
851 // -------------------------------
|
|
852 void check_dbg(char is_post_check)
|
|
853 {
|
|
854 temp_DBS = 0;
|
|
855 if( (DBG_N2_ratio != N2_ratio) || (DBG_He_ratio != He_ratio) )
|
|
856 temp_DBS |= DBG_c_gas;
|
|
857 if(DBG_const_ppO2 != const_ppO2)
|
|
858 temp_DBS |= DBG_c_ppO2;
|
|
859 if((DBG_float_saturation_multiplier != float_saturation_multiplier) || (DBG_float_desaturation_multiplier != float_desaturation_multiplier))
|
|
860 temp_DBS |= DBG_CdeSAT;
|
|
861 if(DBG_char_I_deco_model != char_I_deco_model)
|
|
862 temp_DBS |= DBG_C_MODE;
|
|
863 if(DBG_pres_surface != pres_surface)
|
|
864 temp_DBS |= DBG_C_SURF;
|
|
865 if((!DBS_HE_sat) && (!He_ratio))
|
|
866 for(int_dbg_i = 16; int_dbg_i < 32; int_dbg_i++)
|
|
867 if(pres_tissue[int_dbg_i])
|
|
868 temp_DBS |= DBG_HEwoHE;
|
|
869 if(DBG_deco_ppO2 != deco_ppO2)
|
|
870 temp_DBS |= DBG_C_DPPO2;
|
|
871 if((DBG_deco_gas_change != deco_gas_change) || (DBG_deco_N2_ratio != deco_N2_ratio) || (DBG_deco_He_ratio != deco_He_ratio))
|
|
872 temp_DBS |= DBG_C_DGAS;
|
|
873 if(DBG_float_deco_distance != float_deco_distance)
|
|
874 temp_DBS |= DBG_C_DIST;
|
|
875 if(DBG_char_I_depth_last_deco != char_I_depth_last_deco)
|
|
876 temp_DBS |= DBG_C_LAST;
|
|
877 if((DBG_GF_low != GF_low) || (DBG_GF_high != GF_high))
|
|
878 temp_DBS |= DBG_C_GF;
|
|
879 if(pres_respiration > 13.0)
|
|
880 temp_DBS |= DBG_PHIGH;
|
|
881 if(pres_surface - pres_respiration > 0.2)
|
|
882 temp_DBS |= DBG_PLOW;
|
|
883 /*
|
|
884 if()
|
|
885 temp_DBS |= ;
|
|
886 if()
|
|
887 temp_DBS |= ;
|
|
888 */
|
|
889 if(is_post_check)
|
|
890 int_O_DBG_post_bitfield |= temp_DBS;
|
|
891 else
|
|
892 int_O_DBG_pre_bitfield |= temp_DBS;
|
|
893 }
|
|
894
|
|
895 // -------------------------------
|
|
896 // DBG - prior to calc. of dive //
|
|
897 // -------------------------------
|
|
898 void check_pre_dbg(void)
|
|
899 {
|
|
900 check_dbg(0);
|
|
901 }
|
|
902
|
|
903 // -------------------------------
|
|
904 // DBG - after decocalc of dive //
|
|
905 // -------------------------------
|
|
906 void check_post_dbg(void)
|
|
907 {
|
|
908 check_dbg(1);
|
|
909 }
|
|
910
|
|
911
|
|
912
|
|
913 // -------------------------
|
|
914 // calc_next_decodepth_GF //
|
|
915 // -------------------------
|
|
916 // new in v.102
|
|
917 void calc_nextdecodepth_GF(void)
|
|
918 {
|
|
919 // INPUT, changing during dive:
|
|
920 // temp_pres_gtissue_limit_GF_low
|
|
921 // temp_pres_gtissue_limit_GF_low_below_surface
|
|
922 // temp_pres_gtissue
|
|
923 // temp_pres_gtissue_diff
|
|
924 // lock_GF_depth_list
|
|
925
|
|
926 // INPUT, fixed during dive:
|
|
927 // pres_surface
|
|
928 // GF_delta
|
|
929 // GF_high
|
|
930 // GF_low
|
|
931 // temp_depth_last_deco
|
|
932 // float_deco_distance
|
|
933
|
|
934 // OUTPUT
|
|
935 // GF_step
|
|
936 // temp_deco
|
|
937 // temp_depth_limt
|
|
938 // lock_GF_depth_list
|
|
939
|
|
940 // USES
|
|
941 // temp1
|
|
942 // temp2
|
|
943 // int_temp
|
|
944
|
|
945 char_I_table_deco_done[0] = 0; // safety if changed somewhere else. Needed for exit
|
|
946 if (char_I_deco_model == 1)
|
|
947 {
|
|
948 if (lock_GF_depth_list == 0)
|
|
949 {
|
|
950 temp2 = temp_pres_gtissue_limit_GF_low_below_surface / 0.29985; // = ... / 99.95 / 0.003;
|
|
951 int_temp = (int) (temp2 + 0.99);
|
|
952 if (int_temp > 31)
|
|
953 int_temp = 31; // deepest deco at 93 meter (31 deco stops)
|
|
954 if (int_temp < 0)
|
|
955 int_temp = 0;
|
|
956 temp_depth_GF_low_number = int_temp;
|
|
957 temp_depth_GF_low_meter = 3 * temp_depth_GF_low_number;
|
|
958 temp2 = (float)temp_depth_GF_low_meter * 0.09995;
|
|
959 temp_pres_deco_GF_low = temp2 + float_deco_distance + pres_surface;
|
|
960 if (temp_depth_GF_low_number == 0)
|
|
961 GF_step = 0;
|
|
962 else
|
|
963 GF_step = GF_delta / (float)temp_depth_GF_low_number;
|
|
964 if (GF_step < 0)
|
|
965 GF_step = 0;
|
|
966 if (GF_step > GF_delta)
|
|
967 GF_step = GF_delta;
|
|
968 int_O_GF_step = (int)(GF_step * 10000);
|
|
969 int_O_limit_GF_low = (int)(temp_pres_deco_GF_low * 1000);
|
|
970 int_O_gtissue_press_at_GF_low = (int)(temp_pres_gtissue * 1000);
|
|
971 char_O_GF_low_pointer = temp_depth_GF_low_number;
|
|
972 lock_GF_depth_list = 1;
|
|
973 internal_deco_pointer = 0;
|
|
974 }
|
|
975 if (internal_deco_pointer == 0) // new run
|
|
976 {
|
|
977 internal_deco_pointer = temp_depth_GF_low_number;
|
|
978 GF_temp = GF_high - ((float)internal_deco_pointer * GF_step);
|
|
979 int_temp = char_I_table_deco_done[internal_deco_pointer];
|
|
980 output[8] = int_temp;
|
|
981 output[9] = 33;
|
|
982 }
|
|
983 else
|
|
984 {
|
|
985 int_temp = 1;
|
|
986 }
|
|
987 while (int_temp == 1)
|
|
988 {
|
|
989 int_temp = internal_deco_pointer - 1;
|
|
990 if (int_temp == 1) // new in v104
|
|
991 {
|
|
992 temp2 = (float)(temp_depth_last_deco * int_temp) * 0.09995;
|
|
993 GF_step2 = GF_step/3.0 * ((float)(6 - temp_depth_last_deco));
|
|
994 }
|
|
995 else
|
|
996 if (int_temp == 0)
|
|
997 {
|
|
998 temp2 = 0.0;
|
|
999 GF_step2 = GF_high - GF_temp;
|
|
1000 }
|
|
1001 else
|
|
1002 {
|
|
1003 temp2 = (float)(3 *int_temp) * 0.09995;
|
|
1004 GF_step2 = GF_step;
|
|
1005 }
|
|
1006 temp2 = temp2 + pres_surface; // next deco stop to be tested
|
|
1007 temp1 = ((GF_temp + GF_step2)* temp_pres_gtissue_diff) + temp_pres_gtissue; // upper limit (lowest pressure allowed) // changes GF_step2 in v104
|
|
1008 if (temp1 > temp2) // check if ascent to next deco stop is ok
|
|
1009 {
|
|
1010 int_temp = 0; // no
|
|
1011 }
|
|
1012 else
|
|
1013 {
|
|
1014 internal_deco_pointer = int_temp;
|
|
1015 GF_temp = GF_temp + GF_step2; // changed in v104
|
|
1016 int_temp = char_I_table_deco_done[internal_deco_pointer]; // yes and check for ascent to even next stop if deco_done is set
|
|
1017 }
|
|
1018 } // while
|
|
1019 if (internal_deco_pointer > 0)
|
|
1020 {
|
|
1021 temp2 = (float)(0.29985 * internal_deco_pointer);
|
|
1022 temp_deco = temp2 + float_deco_distance + pres_surface;
|
|
1023 if (internal_deco_pointer == 1) // new in v104
|
|
1024 temp_depth_limit = temp_depth_last_deco;
|
|
1025 else
|
|
1026 temp_depth_limit = 3 * internal_deco_pointer;
|
|
1027 if (output[9] == 33)
|
|
1028 {
|
|
1029 output[9] = internal_deco_pointer;
|
|
1030 output[10] = char_I_table_deco_done[internal_deco_pointer];
|
|
1031 output[12] = output[12] + 1;
|
|
1032 if (output[12] == 100)
|
|
1033 output[12] = 0;
|
|
1034 }
|
|
1035 }
|
|
1036 else // if (char_I_deco_model == 1)
|
|
1037 {
|
|
1038 temp_deco = pres_surface;
|
|
1039 temp_depth_limit = 0;
|
|
1040 }
|
|
1041 }
|
|
1042 else
|
|
1043 {
|
|
1044 // calc_nextdecodepth - original
|
|
1045 // optimized in v.101
|
|
1046 // depth_last_deco included in v.101
|
|
1047
|
|
1048 temp1 = temp_pres_gtissue_limit - pres_surface;
|
|
1049 if (temp1 >= 0)
|
|
1050 {
|
|
1051 temp1 = temp1 / 0.29985; // = temp1 / 99.95 / 0.003;
|
|
1052 temp_depth_limit = (int) (temp1 + 0.99);
|
|
1053 temp_depth_limit = 3 * temp_depth_limit; // depth for deco [m]
|
|
1054 if (temp_depth_limit == 0)
|
|
1055 temp_deco = pres_surface;
|
|
1056 else
|
|
1057 {
|
|
1058 if (temp_depth_limit < temp_depth_last_deco)
|
|
1059 temp_depth_limit = temp_depth_last_deco;
|
|
1060 temp1 = (float)temp_depth_limit * 0.09995;
|
|
1061 temp_deco = temp1 + float_deco_distance + pres_surface; // depth for deco [bar]
|
|
1062 } // if (temp_depth_limit == 0)
|
|
1063 } // if (temp1 >= 0)
|
|
1064 else
|
|
1065 {
|
|
1066 temp_deco = pres_surface;
|
|
1067 temp_depth_limit = 0;
|
|
1068 } // if (temp1 >= 0)
|
|
1069 } // calc_nextdecodepth original
|
|
1070 } // calc_nextdecodepth_GF
|
|
1071
|
|
1072
|
|
1073 #if 0
|
|
1074 void build_debug_output(void)
|
|
1075 {
|
|
1076 output[0] = 0; // not used in asm PLED output
|
|
1077 output[1] = (int) (GF_low * 100);
|
|
1078 output[2] = (int) (GF_high * 100);
|
|
1079 output[3] = (int) (GF_step * 100);
|
|
1080 output[4] = (int) temp_depth_GF_low_number;
|
|
1081 output[5] = (int) temp_depth_GF_low_meter;
|
|
1082 //output[6]
|
|
1083 output[7] = (int) internal_deco_pointer;
|
|
1084 //output[8] = char_I_table_deco_done[temp_depth_GF_low_number]
|
|
1085 //output[9] = internal_deco_pointer @ new run
|
|
1086 //output[10] = char_I_table_deco_done[internal_deco_pointer] @ new run
|
|
1087 output [11] = (int) (temp_pres_deco_GF_low * 10);
|
|
1088 } // build_debug_output
|
|
1089 #endif
|
|
1090
|
|
1091 // ---------------------
|
|
1092 // copy_deco_table_GF //
|
|
1093 // ---------------------
|
|
1094 // new in v.102
|
|
1095 void copy_deco_table_GF(void)
|
|
1096 {
|
|
1097 if (char_I_deco_model == 1)
|
|
1098 {
|
|
1099 int_temp = 32;
|
|
1100 for (ci=0;ci<int_temp;ci++)
|
|
1101 char_O_deco_table[ci] = internal_deco_table[ci];
|
|
1102 }
|
|
1103 } // copy_deco_table_GF
|
|
1104
|
|
1105
|
|
1106 // ------------------------------
|
|
1107 // clear_internal_deco_table_GF//
|
|
1108 // ------------------------------
|
|
1109 // new in v.102
|
|
1110 void clear_internal_deco_table_GF(void)
|
|
1111 {
|
|
1112 if (char_I_deco_model == 1)
|
|
1113 {
|
|
1114 for (ci=0;ci<32;ci++) // cycle through the 16 b"uhlmann tissues for Helium
|
|
1115 {
|
|
1116 internal_deco_table[ci] = 0;
|
|
1117 }
|
|
1118 }
|
|
1119 } // clear_internal_deco_table_GF
|
|
1120
|
|
1121
|
|
1122 // --------------------------------
|
|
1123 // update_internal_deco_table_GF //
|
|
1124 // --------------------------------
|
|
1125 // new in v.102
|
|
1126 void update_internal_deco_table_GF(void)
|
|
1127 {
|
|
1128 if ((char_I_deco_model == 1) && (internal_deco_table[internal_deco_pointer] < 255))
|
|
1129 internal_deco_table[internal_deco_pointer] = internal_deco_table[internal_deco_pointer] + 1;
|
|
1130 } // update_internal_deco_table_GF
|
|
1131
|
|
1132
|
|
1133 // ---------------------
|
|
1134 // temp_tissue_safety //
|
|
1135 // ---------------------
|
|
1136 // outsourced in v.102
|
|
1137 void temp_tissue_safety(void)
|
|
1138 {
|
|
1139 if (char_I_deco_model == 1)
|
|
1140 {
|
|
1141 }
|
|
1142 else
|
|
1143 {
|
|
1144 if (temp_tissue < 0.0)
|
|
1145 temp_tissue = temp_tissue * float_desaturation_multiplier;
|
|
1146 else
|
|
1147 temp_tissue = temp_tissue * float_saturation_multiplier;
|
|
1148 }
|
|
1149 } // temp_tissue_safety
|
|
1150
|
60
|
1151 // ---------------------
|
|
1152 // dd2_write_incon42 //
|
|
1153 // ---------------------
|
0
|
1154 void DD2_write_incon42(void)
|
|
1155 {
|
60
|
1156 //dd2_fontwidth = 21;
|
|
1157 //dd2_fontheight = 30;
|
|
1158 dd2_fontwidth = 19;
|
|
1159 dd2_fontheight = 28;
|
|
1160 dd2_base = 0x0F500;
|
|
1161 dd2_start = '0';
|
|
1162 dd2_end = '9';
|
|
1163 DD2_write();
|
0
|
1164 }
|
|
1165
|
60
|
1166 // ---------------------
|
|
1167 // dd2_write_incon24 //
|
|
1168 // ---------------------
|
0
|
1169 void DD2_write_incon24(void)
|
|
1170 {
|
60
|
1171 dd2_fontwidth = 12;
|
|
1172 dd2_fontheight = 16;
|
|
1173 dd2_base = 0x0E100;
|
|
1174 dd2_start = '.';
|
|
1175 dd2_end = '9' + 5;
|
|
1176 DD2_write();
|
0
|
1177 }
|
60
|
1178
|
|
1179
|
|
1180 void DD2_write(void)
|
0
|
1181 {
|
60
|
1182 dd2_i = 0;
|
|
1183 _asm
|
|
1184 movff dd2_i, POSTINC2 // write 0x00 at the end of dd2_strinstore[]
|
|
1185 bsf oled_rs
|
|
1186 _endasm
|
|
1187 dd2_stringstore[16] = 0; // safety if more than 16 letters (max at font incon16) are written, the other space is used by font remap
|
|
1188 if (dd2_top == 0) dd2_top = 1;
|
|
1189 if (dd2_left == 0) dd2_left = 1;
|
|
1190 if (dd2_heightmax > dd2_fontheight) dd2_heightmax = dd2_fontheight;
|
|
1191 if ((dd2_top + dd2_heightmax) > 65) dd2_heightmax = 65 - dd2_top;
|
|
1192
|
|
1193 dd2_k = dd2_left;
|
|
1194 dd2_j = 0;
|
|
1195 dd2_char = dd2_stringstore[dd2_j++];
|
|
1196 DD2_get_pointer_to_char();//dd2_char, &dd2_pointer);
|
|
1197 dd2_i = 0;
|
|
1198 dd2_lowbyte = 1;
|
|
1199
|
|
1200 while (dd2_char != 0)
|
0
|
1201 {
|
60
|
1202 if (dd2_lowbyte == 1) DD2_load_background();//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax);
|
|
1203 DD2_build_one_line_of_char(); //&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); // dd2_heightmax
|
|
1204 dd2_lowbyte = dd2_lowbyte ^ 1;
|
|
1205 if (dd2_lowbyte == 1)
|
|
1206 {
|
|
1207 DD2_set_column();//top, dd2_k); //
|
|
1208 if(dd2_k < 64) dd2_k++;
|
|
1209 DD2_print_column();//&dd2_columnstore, dd2_heightmax); // dd2_column_store, dd2_heightmax
|
|
1210 }
|
|
1211 dd2_i++;
|
|
1212 if ((dd2_i >= dd2_fontwidth) | (((dd2_char == '.') |(dd2_char == ':') | (dd2_char == '<')) & (dd2_i >= 4)))
|
|
1213 {
|
|
1214 dd2_char = dd2_stringstore[dd2_j++];
|
|
1215 DD2_get_pointer_to_char();//dd2_char, &dd2_pointer);
|
|
1216 dd2_i = 0;
|
|
1217 }
|
0
|
1218 }
|
60
|
1219 } // void dd2_write(void)
|
|
1220
|
|
1221 void DD2_get_pointer_to_char(void)//dd2_char, &dd2_pointer);
|
0
|
1222 {
|
60
|
1223 if((dd2_char < dd2_start) | (dd2_char > dd2_end))
|
|
1224 {
|
|
1225 dd2_pointer = 0;
|
|
1226 dd2_temp = 0;
|
|
1227 }
|
|
1228 else
|
|
1229 {
|
|
1230 dd2_pointer = dd2_char - dd2_start;
|
|
1231 dd2_pointer = dd2_pointer * ((dd2_fontheight+1)/2);
|
|
1232 dd2_pointer = dd2_pointer * dd2_fontwidth;
|
|
1233 dd2_pointer += dd2_base;
|
|
1234 if((dd2_char == '.') | (dd2_char == ':') | (dd2_char == '<'))
|
|
1235 {
|
|
1236 dd2_pointer += 2 * dd2_fontheight;
|
|
1237 }
|
|
1238
|
|
1239 }
|
|
1240 } // void DD2_get_pointer_to_char(void)
|
|
1241
|
|
1242 void DD2_set_column(void)//top, dd2_k);
|
|
1243 {
|
|
1244 dd2_data = 0x75;
|
|
1245 DD2_CmdWrite();
|
|
1246 dd2_data = dd2_top - 1;
|
|
1247 DD2_CmdWrite();
|
|
1248 dd2_data = 0x3f;
|
|
1249 DD2_CmdWrite();
|
|
1250
|
|
1251 dd2_data = 0x15;
|
|
1252 DD2_CmdWrite();
|
|
1253 dd2_data = dd2_k - 1;
|
|
1254 DD2_CmdWrite();
|
|
1255 dd2_data = dd2_k - 1;
|
|
1256 DD2_CmdWrite();
|
|
1257 } // DD2_set_column()
|
|
1258
|
|
1259 void DD2_load_background(void)//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax);
|
|
1260 {
|
|
1261 for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++)
|
|
1262 md_pi_subst[dd2_temp] = 0x00;
|
|
1263 } // void DD2_load_background()
|
|
1264
|
|
1265 void DD2_build_one_line_of_char(void)//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte);
|
0
|
1266 {
|
60
|
1267 if (dd2_pointer != 0)
|
|
1268 {
|
|
1269 dd2_temp = (char)(dd2_pointer & 255);
|
|
1270 _asm
|
|
1271 movff dd2_temp,TBLPTRL
|
|
1272 _endasm
|
|
1273 dd2_temp = (char)((dd2_pointer >> 8) & 255);
|
|
1274 _asm
|
|
1275 movff dd2_temp,TBLPTRH
|
|
1276 _endasm
|
|
1277 dd2_temp = (char)((dd2_pointer >> 16)& 255);
|
|
1278 _asm
|
|
1279 movff dd2_temp,TBLPTRU
|
|
1280 _endasm
|
|
1281
|
|
1282 for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp += 2)
|
|
1283 {
|
|
1284 _asm
|
|
1285 TBLRDPOSTINC
|
|
1286 movff TABLAT,dd2_data
|
|
1287 _endasm
|
|
1288 if (dd2_oled_brightness_offset != 0)
|
|
1289 {
|
|
1290 if ((dd2_oled_brightness_offset << 4) < (dd2_data & 0xF0))
|
|
1291 dd2_data = dd2_data - (dd2_oled_brightness_offset << 4);
|
|
1292 if ((dd2_oled_brightness_offset) < (dd2_data & 0x0F))
|
|
1293 dd2_data = dd2_data - dd2_oled_brightness_offset;
|
|
1294 }
|
|
1295 if (dd2_lowbyte == 1)
|
|
1296 {
|
|
1297 md_pi_subst[dd2_temp] = dd2_data & 0xF0;
|
|
1298 md_pi_subst[dd2_temp+1] = (dd2_data << 4) & 0xF0;
|
|
1299 }
|
|
1300 else
|
|
1301 {
|
|
1302 md_pi_subst[dd2_temp] = (md_pi_subst[dd2_temp] & 0xF0) | ((dd2_data >> 4) & 0x0F);
|
|
1303 md_pi_subst[dd2_temp+1] = (md_pi_subst[dd2_temp+1] & 0xF0) | (dd2_data & 0x0F);
|
|
1304 }
|
|
1305 }//for
|
|
1306 dd2_pointer += (dd2_fontheight+1)/2;
|
|
1307 }//if
|
|
1308 } //
|
|
1309
|
|
1310 void DD2_print_column(void)//&dd2_columnstore, dd2_heightmax);
|
0
|
1311 {
|
60
|
1312 _asm
|
|
1313 bsf oled_rs
|
|
1314 _endasm
|
|
1315 for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++)
|
|
1316 {
|
|
1317 dd2_data = md_pi_subst[dd2_temp];
|
|
1318 DD2_DataWrite();
|
|
1319 }
|
|
1320 } // void DD2_print_column(void)
|
|
1321
|
|
1322 //; -----------------------------
|
|
1323 //; DD Write Cmd via W
|
|
1324 //; two jump_ins:
|
|
1325 //; DD_CmdWrite and DD_CmdWrite2
|
|
1326 //; -----------------------------
|
0
|
1327 void DD2_CmdWrite(void)
|
|
1328 {
|
60
|
1329 _asm
|
|
1330 bcf oled_rs
|
|
1331 _endasm
|
|
1332 DD2_DataWrite();
|
0
|
1333 }
|
60
|
1334
|
0
|
1335 void DD2_DataWrite(void)
|
|
1336 {
|
60
|
1337 _asm
|
|
1338 movlb 1
|
|
1339 // bsf no_sensor_int // flag5, no_sensor_int
|
|
1340 bcf oled_en
|
|
1341 movlb 0
|
|
1342 bcf oled_clk //; CLK=0
|
|
1343 btfsc dd2_data,7,1 //; Bit
|
|
1344 bsf oled_data
|
|
1345 bcf oled_clk //; CLK=0
|
|
1346 btfss dd2_data,7,1
|
|
1347 bcf oled_data
|
|
1348 bsf oled_clk //; CLK=1
|
|
1349 btfsc dd2_data,6,1 //; Bit
|
|
1350 bsf oled_data
|
|
1351 bcf oled_clk //; CLK=0
|
|
1352 btfss dd2_data,6,1
|
|
1353 bcf oled_data
|
|
1354 bsf oled_clk //; CLK=1
|
|
1355 btfsc dd2_data,5,1 //; Bit
|
|
1356 bsf oled_data
|
|
1357 bcf oled_clk //; CLK=0
|
|
1358 btfss dd2_data,5,1
|
|
1359 bcf oled_data //;
|
|
1360 bsf oled_clk //; CLK=1
|
|
1361 btfsc dd2_data,4,1 //; Bit
|
|
1362 bsf oled_data
|
|
1363 bcf oled_clk //; CLK=0
|
|
1364 btfss dd2_data,4,1
|
|
1365 bcf oled_data
|
|
1366 bsf oled_clk //; CLK=1
|
|
1367 btfsc dd2_data,3,1 //; Bit
|
|
1368 bsf oled_data
|
|
1369 bcf oled_clk //; CLK=0
|
|
1370 btfss dd2_data,3,1
|
|
1371 bcf oled_data
|
|
1372 bsf oled_clk //; CLK=1
|
|
1373 btfsc dd2_data,2,1 //; Bit
|
|
1374 bsf oled_data
|
|
1375 bcf oled_clk //; CLK=0
|
|
1376 btfss dd2_data,2,1
|
|
1377 bcf oled_data
|
|
1378 bsf oled_clk //; CLK=1
|
|
1379 btfsc dd2_data,1,1 //; Bit
|
|
1380 bsf oled_data
|
|
1381 bcf oled_clk //; CLK=0
|
|
1382 btfss dd2_data,1,1
|
|
1383 bcf oled_data
|
|
1384 bsf oled_clk //; CLK=1
|
|
1385 btfsc dd2_data,0,1 //; Bit
|
|
1386 bsf oled_data
|
|
1387 bcf oled_clk //; CLK=0
|
|
1388 btfss dd2_data,0,1
|
|
1389 bcf oled_data
|
|
1390 bsf oled_clk //; CLK=1
|
|
1391 bsf oled_en //; CS#=1
|
|
1392 movlb 1
|
|
1393 // bcf no_sensor_int // flag5, no_sensor_int
|
|
1394 movlb 0
|
|
1395 _endasm
|
|
1396 dd2_data = 0; // to be sure that C knows we are in Bank0
|
0
|
1397 }
|
60
|
1398 #pragma romdata font_incon_24h15 = 0x0E100
|
|
1399 rom const rom unsigned char incon24h15[] =
|
|
1400 {
|
|
1401 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1402 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1403 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1404 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1405 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80
|
|
1406 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf0
|
|
1407 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0
|
|
1408 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1409 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1410 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1411 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1412 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1413 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1414 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20
|
|
1415 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xf0
|
|
1416 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xa0
|
|
1417 ,0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0x91, 0x00
|
|
1418 ,0x00, 0x00, 0x00, 0x6d, 0xfe, 0x71, 0x00, 0x00
|
|
1419 ,0x00, 0x01, 0x7e, 0xfd, 0x60, 0x00, 0x00, 0x00
|
|
1420 ,0x01, 0x8f, 0xfd, 0x50, 0x00, 0x00, 0x00, 0x00
|
|
1421 ,0x9f, 0xfb, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1422 ,0xfa, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1423 ,0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1424 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1425 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1426 ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x72, 0x00, 0x00
|
|
1427 ,0x00, 0x9f, 0xfe, 0xdc, 0xdf, 0xff, 0xb2, 0x00
|
|
1428 ,0x1d, 0xf8, 0x20, 0x00, 0x05, 0xfd, 0xff, 0x30
|
|
1429 ,0xaf, 0x30, 0x00, 0x00, 0x9f, 0x90, 0x2e, 0xd0
|
|
1430 ,0xf8, 0x00, 0x00, 0x2c, 0xf5, 0x00, 0x06, 0xf0
|
|
1431 ,0xf8, 0x00, 0x04, 0xed, 0x30, 0x00, 0x05, 0xf0
|
|
1432 ,0xaf, 0x30, 0x8f, 0xb1, 0x00, 0x00, 0x0c, 0xe0
|
|
1433 ,0x1d, 0xfd, 0xf8, 0x00, 0x00, 0x16, 0xdf, 0x40
|
|
1434 ,0x00, 0x9f, 0xff, 0xdc, 0xde, 0xff, 0xc3, 0x00
|
|
1435 ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x73, 0x00, 0x00
|
|
1436 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1437 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1438 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1439 ,0x02, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30
|
|
1440 ,0x0a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0
|
|
1441 ,0x2f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0
|
|
1442 ,0xaf, 0x97, 0x77, 0x77, 0x77, 0x77, 0x79, 0xf0
|
|
1443 ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
|
|
1444 ,0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x26, 0xf0
|
|
1445 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0
|
|
1446 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0
|
|
1447 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1448 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1449 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1450 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40
|
|
1451 ,0x07, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0
|
|
1452 ,0x4f, 0x80, 0x00, 0x00, 0x00, 0x1c, 0xfe, 0xf0
|
|
1453 ,0xcc, 0x00, 0x00, 0x00, 0x02, 0xef, 0x57, 0xf0
|
|
1454 ,0xf7, 0x00, 0x00, 0x00, 0x2e, 0xe2, 0x07, 0xf0
|
|
1455 ,0xf8, 0x00, 0x00, 0x01, 0xde, 0x20, 0x07, 0xf0
|
|
1456 ,0xce, 0x10, 0x00, 0x2d, 0xe2, 0x00, 0x07, 0xf0
|
|
1457 ,0x4f, 0xd6, 0x58, 0xfe, 0x30, 0x00, 0x07, 0xf0
|
|
1458 ,0x06, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x07, 0xf0
|
|
1459 ,0x00, 0x14, 0x52, 0x00, 0x00, 0x00, 0x05, 0x80
|
|
1460 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1461 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1462 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00
|
|
1463 ,0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x50
|
|
1464 ,0x6f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xd0
|
|
1465 ,0xdb, 0x00, 0x00, 0x59, 0x00, 0x00, 0x07, 0xf0
|
|
1466 ,0xf8, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x04, 0xf0
|
|
1467 ,0xea, 0x00, 0x00, 0xcf, 0x10, 0x00, 0x06, 0xf0
|
|
1468 ,0x9f, 0x30, 0x07, 0xff, 0x90, 0x00, 0x1e, 0xe0
|
|
1469 ,0x1e, 0xfc, 0xdf, 0x87, 0xfb, 0x79, 0xef, 0x50
|
|
1470 ,0x01, 0x9d, 0xc6, 0x00, 0x7e, 0xff, 0xd5, 0x00
|
|
1471 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00
|
|
1472 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1473 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1474 ,0x00, 0x00, 0x00, 0x00, 0x2b, 0xb0, 0x00, 0x00
|
|
1475 ,0x00, 0x00, 0x00, 0x06, 0xff, 0xe0, 0x00, 0x00
|
|
1476 ,0x00, 0x00, 0x02, 0xcf, 0x69, 0xe0, 0x00, 0x00
|
|
1477 ,0x00, 0x00, 0x7f, 0xb1, 0x09, 0xe0, 0x00, 0x00
|
|
1478 ,0x00, 0x2c, 0xe6, 0x00, 0x09, 0xe0, 0x00, 0x00
|
|
1479 ,0x07, 0xfb, 0x10, 0x00, 0x09, 0xe0, 0x00, 0x00
|
|
1480 ,0xcf, 0xfc, 0xcc, 0xcc, 0xce, 0xfd, 0xdd, 0xd0
|
|
1481 ,0xde, 0xee, 0xee, 0xee, 0xef, 0xfe, 0xee, 0xe0
|
|
1482 ,0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00
|
|
1483 ,0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x00
|
|
1484 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1485 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1486 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00
|
|
1487 ,0x78, 0xab, 0xcd, 0xed, 0x00, 0x00, 0xce, 0x20
|
|
1488 ,0xff, 0xed, 0xcc, 0xfa, 0x00, 0x00, 0x5f, 0xb0
|
|
1489 ,0xf9, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x08, 0xf0
|
|
1490 ,0xf9, 0x00, 0x0a, 0xb0, 0x00, 0x00, 0x04, 0xf0
|
|
1491 ,0xf9, 0x00, 0x0a, 0xc0, 0x00, 0x00, 0x04, 0xf0
|
|
1492 ,0xf9, 0x00, 0x08, 0xf3, 0x00, 0x00, 0x0b, 0xf0
|
|
1493 ,0xf9, 0x00, 0x01, 0xfe, 0x62, 0x13, 0xbf, 0x90
|
|
1494 ,0xf9, 0x00, 0x00, 0x4e, 0xff, 0xff, 0xfb, 0x00
|
|
1495 ,0x11, 0x00, 0x00, 0x01, 0x6a, 0xa9, 0x40, 0x00
|
|
1496 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1497 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1498 ,0x00, 0x00, 0x03, 0x56, 0x65, 0x30, 0x00, 0x00
|
|
1499 ,0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xa2, 0x00
|
|
1500 ,0x08, 0xfe, 0x96, 0x8f, 0x95, 0x6a, 0xff, 0x30
|
|
1501 ,0x6f, 0x90, 0x01, 0xf8, 0x00, 0x00, 0x3e, 0xd0
|
|
1502 ,0xec, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x06, 0xf0
|
|
1503 ,0xf6, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x04, 0xf0
|
|
1504 ,0xf7, 0x00, 0x07, 0xf3, 0x00, 0x00, 0x09, 0xf0
|
|
1505 ,0xcd, 0x10, 0x01, 0xef, 0x72, 0x13, 0xaf, 0x90
|
|
1506 ,0x4d, 0x20, 0x00, 0x2d, 0xff, 0xff, 0xf9, 0x00
|
|
1507 ,0x00, 0x00, 0x00, 0x00, 0x47, 0x86, 0x10, 0x00
|
|
1508 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1509 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1510 ,0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1511 ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1512 ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x90
|
|
1513 ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x39, 0xef, 0xf0
|
|
1514 ,0xfa, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xe9, 0x40
|
|
1515 ,0xfa, 0x00, 0x05, 0xbf, 0xff, 0x94, 0x00, 0x00
|
|
1516 ,0xfa, 0x18, 0xef, 0xfb, 0x50, 0x00, 0x00, 0x00
|
|
1517 ,0xfe, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00
|
|
1518 ,0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1519 ,0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1520 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1521 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1522 ,0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x50, 0x00
|
|
1523 ,0x03, 0xad, 0xb4, 0x00, 0x7f, 0xff, 0xfc, 0x00
|
|
1524 ,0x3f, 0xfc, 0xff, 0x66, 0xfa, 0x43, 0xaf, 0xa0
|
|
1525 ,0xcd, 0x10, 0x1c, 0xfe, 0x70, 0x00, 0x0b, 0xf0
|
|
1526 ,0xf5, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x05, 0xf0
|
|
1527 ,0xf5, 0x00, 0x00, 0xbf, 0x10, 0x00, 0x04, 0xf0
|
|
1528 ,0xec, 0x00, 0x07, 0xff, 0xb0, 0x00, 0x0a, 0xf0
|
|
1529 ,0x6f, 0xd9, 0xcf, 0x78, 0xfb, 0x32, 0x9f, 0x90
|
|
1530 ,0x07, 0xef, 0xe6, 0x00, 0x9f, 0xff, 0xfb, 0x00
|
|
1531 ,0x00, 0x01, 0x00, 0x00, 0x03, 0x88, 0x50, 0x00
|
|
1532 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1533 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1534 ,0x00, 0x03, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00
|
|
1535 ,0x04, 0xdf, 0xff, 0xfb, 0x10, 0x00, 0x0b, 0x60
|
|
1536 ,0x4f, 0xd7, 0x45, 0x9f, 0xd0, 0x00, 0x1c, 0xe0
|
|
1537 ,0xdd, 0x00, 0x00, 0x05, 0xf5, 0x00, 0x05, 0xf0
|
|
1538 ,0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0xf0
|
|
1539 ,0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x08, 0xf0
|
|
1540 ,0xbe, 0x20, 0x00, 0x06, 0xf2, 0x00, 0x5f, 0xa0
|
|
1541 ,0x2e, 0xf9, 0x54, 0x7f, 0x94, 0x7c, 0xfc, 0x00
|
|
1542 ,0x02, 0xaf, 0xff, 0xff, 0xff, 0xfe, 0x70, 0x00
|
|
1543 ,0x00, 0x01, 0x46, 0x77, 0x75, 0x30, 0x00, 0x00
|
|
1544 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1545 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1546 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1547 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1548 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1549 ,0x00, 0x00, 0x06, 0xa1, 0x00, 0x00, 0x09, 0x80
|
|
1550 ,0x00, 0x00, 0x1f, 0xf9, 0x00, 0x00, 0x6f, 0xf0
|
|
1551 ,0x00, 0x00, 0x0d, 0xf5, 0x00, 0x00, 0x3f, 0xe0
|
|
1552 ,0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00
|
|
1553 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1554 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1555 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1556 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1557 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1558 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1559 ,0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1560 ,0xba, 0xae, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1561 ,0xff, 0xe9, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1562 ,0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1563 ,0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1564 ,0x97, 0x8c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1565 ,0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1566 ,0x75, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1567 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1568 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1569 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1570 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1571 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1572 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1573 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1574 ,0x75, 0x6a, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1575 ,0xff, 0xfd, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1576 ,0xa8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1577 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1578 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1579 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1580 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1581 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1582 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1583 ,0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1584 ,0x2c, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1585 ,0xdd, 0x78, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1586 ,0xf2, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1587 ,0xf0, 0x00, 0x4f, 0x10, 0x00, 0x00, 0x00, 0x00
|
|
1588 ,0xea, 0x23, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1589 ,0x4f, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1590 ,0x01, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1591 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1592 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1593 ,0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10
|
|
1594 ,0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
|
|
1595 ,0x00, 0x00, 0x9f, 0xa7, 0x77, 0x77, 0x77, 0x70
|
|
1596 ,0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1597 ,0x00, 0x02, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1598 ,0x00, 0x01, 0xff, 0xcb, 0xbb, 0xbb, 0xbb, 0xb0
|
|
1599 ,0x00, 0x00, 0x4f, 0xfe, 0xee, 0xee, 0xee, 0xe0
|
|
1600 ,0x00, 0x00, 0xab, 0x20, 0x00, 0x00, 0x00, 0x00
|
|
1601 ,0x00, 0x01, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1602 ,0x00, 0x02, 0xfa, 0x55, 0x55, 0x55, 0x55, 0x50
|
|
1603 ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf0
|
|
1604 ,0x00, 0x00, 0x02, 0x44, 0x44, 0x44, 0x44, 0x40
|
|
1605 };
|
|
1606
|
|
1607 #pragma romdata font_incon_42 = 0x0F500
|
|
1608 rom const rom unsigned char incon42[] =
|
|
1609 {
|
|
1610 // 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1611 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1612 ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00
|
|
1613 ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00
|
|
1614 ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00
|
|
1615 ,0x00, 0xbf, 0xff, 0xc7, 0x65, 0x43, 0x22, 0x33, 0x57, 0xbf, 0xff, 0xfd, 0x20, 0x00
|
|
1616 ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x6e, 0xff, 0xd1, 0x00
|
|
1617 ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xfa, 0x00
|
|
1618 ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x20
|
|
1619 ,0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x60
|
|
1620 ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70
|
|
1621 ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50
|
|
1622 ,0xcf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10
|
|
1623 ,0x4f, 0xfe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00
|
|
1624 ,0x07, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00
|
|
1625 ,0x00, 0x5e, 0xff, 0xfb, 0x98, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00
|
|
1626 ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00
|
|
1627 ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00
|
|
1628 ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1629 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1630 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1631
|
|
1632 #if 0
|
|
1633 // 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1634 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1635 ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00
|
|
1636 ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00
|
|
1637 ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00
|
|
1638 ,0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00
|
|
1639 ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00
|
|
1640 ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00
|
|
1641 ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20
|
|
1642 ,0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60
|
|
1643 ,0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70
|
|
1644 ,0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50
|
|
1645 ,0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10
|
|
1646 ,0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00
|
|
1647 ,0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00
|
|
1648 ,0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00
|
|
1649 ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00
|
|
1650 ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00
|
|
1651 ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1652 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1653 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1654 #endif
|
|
1655 //
|
|
1656 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1657 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1658 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1659 ,0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1660 ,0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00
|
|
1661 ,0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1662 ,0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1663 ,0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1664 ,0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1665 ,0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00
|
|
1666 ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1667 ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1668 ,0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00
|
|
1669 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1670 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1671 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1672 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00
|
|
1673 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1674 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1675 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1676 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1677 //
|
|
1678 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1679 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1680 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1681 ,0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00
|
|
1682 ,0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00
|
|
1683 ,0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00
|
|
1684 ,0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00
|
|
1685 ,0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00
|
|
1686 ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00
|
|
1687 ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00
|
|
1688 ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00
|
|
1689 ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1690 ,0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1691 ,0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1692 ,0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1693 ,0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1694 ,0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1695 ,0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00
|
|
1696 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1697 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1698 //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1699 //
|
|
1700 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1701 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1702 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1703 ,0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00
|
|
1704 ,0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00
|
|
1705 ,0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00
|
|
1706 ,0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00
|
|
1707 ,0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30
|
|
1708 ,0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1709 ,0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70
|
|
1710 ,0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1711 ,0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30
|
|
1712 ,0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00
|
|
1713 ,0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00
|
|
1714 ,0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00
|
|
1715 ,0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00
|
|
1716 ,0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00
|
|
1717 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00
|
|
1718 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1719 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1720 //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1721 //
|
|
1722 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1723 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1724 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1725 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1726 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1727 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1728 ,0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1729 ,0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1730 ,0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1731 ,0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1732 ,0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1733 ,0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1734 ,0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00
|
|
1735 ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1736 ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1737 ,0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00
|
|
1738 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1739 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1740 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00
|
|
1741 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1742 //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1743 //
|
|
1744 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1745 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1746 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
|
|
1747 ,0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00
|
|
1748 ,0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00
|
|
1749 ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00
|
|
1750 ,0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00
|
|
1751 ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10
|
|
1752 ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50
|
|
1753 ,0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70
|
|
1754 ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70
|
|
1755 ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1756 ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30
|
|
1757 ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00
|
|
1758 ,0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00
|
|
1759 ,0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00
|
|
1760 ,0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00
|
|
1761 ,0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00
|
|
1762 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00
|
|
1763 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1764 //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1765 //
|
|
1766 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1767 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1768 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1769 ,0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00
|
|
1770 ,0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00
|
|
1771 ,0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00
|
|
1772 ,0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00
|
|
1773 ,0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00
|
|
1774 ,0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10
|
|
1775 ,0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50
|
|
1776 ,0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70
|
|
1777 ,0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60
|
|
1778 ,0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30
|
|
1779 ,0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00
|
|
1780 ,0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00
|
|
1781 ,0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00
|
|
1782 ,0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00
|
|
1783 ,0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00
|
|
1784 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1785 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1786 //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1787 //
|
|
1788 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1789 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1790 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1791 ,0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1792 ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1793 ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00
|
|
1794 ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00
|
|
1795 ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00
|
|
1796 ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00
|
|
1797 ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00
|
|
1798 ,0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00
|
|
1799 ,0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00
|
|
1800 ,0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1801 ,0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1802 ,0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1803 ,0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1804 ,0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1805 ,0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1806 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1807 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1808 //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1809 //
|
|
1810 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1811 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1812 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00
|
|
1813 ,0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00
|
|
1814 ,0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00
|
|
1815 ,0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00
|
|
1816 ,0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00
|
|
1817 ,0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00
|
|
1818 ,0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40
|
|
1819 ,0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1820 ,0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60
|
|
1821 ,0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50
|
|
1822 ,0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20
|
|
1823 ,0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00
|
|
1824 ,0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00
|
|
1825 ,0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00
|
|
1826 ,0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00
|
|
1827 ,0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00
|
|
1828 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00
|
|
1829 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1830 //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1831 //
|
|
1832 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1833 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1834 ,0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1835 ,0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00
|
|
1836 ,0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00
|
|
1837 ,0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00
|
|
1838 ,0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10
|
|
1839 ,0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50
|
|
1840 ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1841 ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1842 ,0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40
|
|
1843 ,0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00
|
|
1844 ,0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00
|
|
1845 ,0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00
|
|
1846 ,0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00
|
|
1847 ,0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00
|
|
1848 ,0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00
|
|
1849 ,0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00
|
|
1850 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1851 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1852 // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1853 };
|
|
1854
|
|
1855 #if 0
|
|
1856 #pragma romdata font_incon_42 = 0x0E000
|
|
1857 rom const rom unsigned char incon42[] =
|
|
1858 {
|
|
1859 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1860 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1861 ,0x00, 0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00
|
|
1862 ,0x00, 0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00
|
|
1863 ,0x00, 0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00
|
|
1864 ,0x00, 0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00
|
|
1865 ,0x00, 0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00
|
|
1866 ,0x00, 0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00
|
|
1867 ,0x00, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20
|
|
1868 ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60
|
|
1869 ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70
|
|
1870 ,0x02, 0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50
|
|
1871 ,0x00, 0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10
|
|
1872 ,0x00, 0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00
|
|
1873 ,0x00, 0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00
|
|
1874 ,0x00, 0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00
|
|
1875 ,0x00, 0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00
|
|
1876 ,0x00, 0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00
|
|
1877 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1878 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1879 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1880 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1881 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1882 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1883 ,0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1884 ,0x00, 0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00
|
|
1885 ,0x00, 0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1886 ,0x00, 0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1887 ,0x00, 0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1888 ,0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1889 ,0x00, 0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00
|
|
1890 ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1891 ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1892 ,0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00
|
|
1893 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1894 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1895 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00
|
|
1896 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00
|
|
1897 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1898 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1899 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1900 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1901 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1902 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1903 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1904 ,0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00
|
|
1905 ,0x00, 0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00
|
|
1906 ,0x00, 0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00
|
|
1907 ,0x00, 0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00
|
|
1908 ,0x00, 0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00
|
|
1909 ,0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00
|
|
1910 ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00
|
|
1911 ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00
|
|
1912 ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1913 ,0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1914 ,0x00, 0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1915 ,0x00, 0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1916 ,0x00, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1917 ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00
|
|
1918 ,0x00, 0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00
|
|
1919 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1920 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1921 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1922 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1923 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1924 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1925 ,0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00
|
|
1926 ,0x00, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00
|
|
1927 ,0x00, 0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00
|
|
1928 ,0x00, 0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00
|
|
1929 ,0x00, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30
|
|
1930 ,0x01, 0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1931 ,0x03, 0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70
|
|
1932 ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1933 ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30
|
|
1934 ,0x00, 0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00
|
|
1935 ,0x00, 0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00
|
|
1936 ,0x00, 0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00
|
|
1937 ,0x00, 0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00
|
|
1938 ,0x00, 0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00
|
|
1939 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00
|
|
1940 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1941 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1942 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1943 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1944 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1945 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1946 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1947 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1948 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1949 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1950 ,0x00, 0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1951 ,0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1952 ,0x00, 0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1953 ,0x00, 0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1954 ,0x00, 0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1955 ,0x00, 0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00
|
|
1956 ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1957 ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
|
|
1958 ,0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00
|
|
1959 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1960 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00
|
|
1961 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00
|
|
1962 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1963 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1964 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1965 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1966 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
|
|
1967 ,0x00, 0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00
|
|
1968 ,0x01, 0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00
|
|
1969 ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00
|
|
1970 ,0x02, 0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00
|
|
1971 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10
|
|
1972 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50
|
|
1973 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70
|
|
1974 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70
|
|
1975 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
1976 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30
|
|
1977 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00
|
|
1978 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00
|
|
1979 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00
|
|
1980 ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00
|
|
1981 ,0x01, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00
|
|
1982 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00
|
|
1983 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1984 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1985 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1986 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1987 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
1988 ,0x00, 0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00
|
|
1989 ,0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00
|
|
1990 ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00
|
|
1991 ,0x00, 0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00
|
|
1992 ,0x00, 0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00
|
|
1993 ,0x00, 0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10
|
|
1994 ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50
|
|
1995 ,0x04, 0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70
|
|
1996 ,0x06, 0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60
|
|
1997 ,0x06, 0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30
|
|
1998 ,0x03, 0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00
|
|
1999 ,0x00, 0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00
|
|
2000 ,0x00, 0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00
|
|
2001 ,0x00, 0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00
|
|
2002 ,0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00
|
|
2003 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2004 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2005 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2006 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2007 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2008 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2009 ,0x02, 0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2010 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2011 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00
|
|
2012 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00
|
|
2013 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00
|
|
2014 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00
|
|
2015 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00
|
|
2016 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00
|
|
2017 ,0x02, 0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00
|
|
2018 ,0x02, 0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2019 ,0x02, 0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2020 ,0x02, 0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2021 ,0x02, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2022 ,0x02, 0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2023 ,0x02, 0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2024 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2025 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2026 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2027 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2028 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2029 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00
|
|
2030 ,0x00, 0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00
|
|
2031 ,0x00, 0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00
|
|
2032 ,0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00
|
|
2033 ,0x00, 0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00
|
|
2034 ,0x00, 0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00
|
|
2035 ,0x01, 0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40
|
|
2036 ,0x05, 0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
2037 ,0x06, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60
|
|
2038 ,0x06, 0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50
|
|
2039 ,0x03, 0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20
|
|
2040 ,0x00, 0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00
|
|
2041 ,0x00, 0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00
|
|
2042 ,0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00
|
|
2043 ,0x00, 0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00
|
|
2044 ,0x00, 0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00
|
|
2045 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00
|
|
2046 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2047 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2048 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2049 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2050 ,0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2051 ,0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00
|
|
2052 ,0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00
|
|
2053 ,0x00, 0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00
|
|
2054 ,0x00, 0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10
|
|
2055 ,0x00, 0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50
|
|
2056 ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
2057 ,0x05, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60
|
|
2058 ,0x06, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40
|
|
2059 ,0x04, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00
|
|
2060 ,0x00, 0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00
|
|
2061 ,0x00, 0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00
|
|
2062 ,0x00, 0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00
|
|
2063 ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00
|
|
2064 ,0x00, 0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00
|
|
2065 ,0x00, 0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00
|
|
2066 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2067 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2068 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
2069 };
|
|
2070 #endif
|
0
|
2071
|
|
2072 // **********************
|
|
2073 // **********************
|
|
2074 // ** THE JUMP-IN CODE **
|
|
2075 // ** for the asm code **
|
|
2076 // **********************
|
|
2077 // **********************
|
60
|
2078 #pragma code main_calc_hauptroutine = 0x10000
|
|
2079 void main_calc_hauptroutine(void)
|
0
|
2080 {
|
|
2081 calc_hauptroutine();
|
|
2082 int_O_desaturation_time = 65535;
|
|
2083 } // divemode
|
60
|
2084 #pragma code main_without_deco = 0x10020
|
0
|
2085 void main_calc_without_deco(void)
|
|
2086 {
|
|
2087 calc_without_deco();
|
|
2088 calc_desaturation_time();
|
|
2089 }
|
|
2090
|
60
|
2091 #pragma code main_clear_CNS_fraction = 0x10030
|
0
|
2092 void main_clear_CNS_fraction(void)
|
|
2093 {
|
|
2094 clear_CNS_fraction();
|
|
2095 }
|
|
2096
|
60
|
2097 #pragma code main_calc_CNS_decrease_15min = 0x10034
|
|
2098 void main_calc_CNS_decrease_15min(void)
|
0
|
2099 {
|
|
2100 calc_CNS_decrease_15min();
|
|
2101 }
|
|
2102
|
60
|
2103 #pragma code main_calc_percentage = 0x10038
|
|
2104 void main_calc_percentage (void)
|
0
|
2105 {
|
|
2106 calc_percentage();
|
|
2107 }
|
|
2108
|
60
|
2109 #pragma code main_clear_tissue = 0x10040
|
0
|
2110 void main_clear_tissue(void)
|
|
2111 {
|
|
2112 clear_tissue();
|
|
2113 char_I_depth_last_deco = 0; // for compatibility with v.101pre_no_last_deco
|
|
2114 }
|
|
2115
|
60
|
2116 #pragma code main_calc_CNS_fraction = 0x10050
|
0
|
2117 void main_calc_CNS_fraction(void)
|
|
2118 {
|
|
2119 calc_CNS_fraction();
|
|
2120 }
|
|
2121
|
60
|
2122 #pragma code main_calc_desaturation_time = 0x10060
|
0
|
2123 void main_calc_desaturation_time(void)
|
|
2124 {
|
|
2125 calc_desaturation_time();
|
|
2126 }
|
|
2127
|
60
|
2128 #pragma code main_calc_wo_deco_step_1_min = 0x10080
|
0
|
2129 void main_calc_wo_deco_step_1_min(void)
|
|
2130 {
|
|
2131 calc_wo_deco_step_1_min();
|
|
2132 char_O_deco_status = 3; // surface new in v.102 overwrites value of calc_wo_deco_step_1_min
|
|
2133 calc_desaturation_time();
|
|
2134 } // surface mode
|
|
2135
|
60
|
2136 #pragma code main_debug = 0x100A0
|
|
2137 void main_debug(void)
|
|
2138 {
|
|
2139 //debug();
|
|
2140 }
|
|
2141
|
|
2142 #pragma code main_DD2_write_incon42 = 0x100B0
|
|
2143 void main_DD2_write_incon42(void)
|
0
|
2144 {
|
60
|
2145 DD2_write_incon42();
|
0
|
2146 }
|
|
2147
|
60
|
2148 #pragma code main_DD2_write_incon24 = 0x100B4
|
|
2149 void main_DD2_write_incon24(void)
|
|
2150 {
|
|
2151 DD2_write_incon24();
|
|
2152 }
|
|
2153
|
|
2154 #pragma code main_gradient_array = 0x100C0
|
0
|
2155 void main_gradient_array(void)
|
|
2156 {
|
60
|
2157 calc_gradient_array_only();
|
0
|
2158 }
|
60
|
2159 #pragma code main_push_tissues = 0x100C4
|
0
|
2160 void main_push_tissues_to_vault(void)
|
|
2161 {
|
|
2162 push_tissues_to_vault();
|
|
2163 }
|
60
|
2164 #pragma code main_pull_tissues = 0x100C8
|
0
|
2165 void main_pull_tissues_from_vault(void)
|
|
2166 {
|
|
2167 pull_tissues_from_vault();
|
|
2168 }
|
|
2169
|
60
|
2170 #pragma code main_hash = 0x100E0
|
0
|
2171 void main_hash(void)
|
|
2172 {
|
|
2173 hash();
|
|
2174 }
|
|
2175
|
|
2176 // ***********************
|
|
2177 // ***********************
|
|
2178 // ** THE LOOKUP TABLES **
|
|
2179 // ***********************
|
|
2180 // ***********************
|
|
2181
|
|
2182 #pragma romdata tables = 0x10200
|
60
|
2183 #include "p2_tables.romdata" // new table for deco_main_v.101 (var_a modified)
|
0
|
2184
|
|
2185 #pragma romdata tables2 = 0x10600
|
|
2186 rom const rom unsigned int md_pi[] =
|
|
2187 {
|
|
2188 0x292E, 0x43C9, 0xA2D8, 0x7C01, 0x3D36, 0x54A1, 0xECF0, 0x0613
|
|
2189 , 0x62A7, 0x05F3, 0xC0C7, 0x738C, 0x9893, 0x2BD9, 0xBC4C, 0x82CA
|
|
2190 , 0x1E9B, 0x573C, 0xFDD4, 0xE016, 0x6742, 0x6F18, 0x8A17, 0xE512
|
|
2191 , 0xBE4E, 0xC4D6, 0xDA9E, 0xDE49, 0xA0FB, 0xF58E, 0xBB2F, 0xEE7A
|
|
2192 , 0xA968, 0x7991, 0x15B2, 0x073F, 0x94C2, 0x1089, 0x0B22, 0x5F21
|
|
2193 , 0x807F, 0x5D9A, 0x5A90, 0x3227, 0x353E, 0xCCE7, 0xBFF7, 0x9703
|
|
2194 , 0xFF19, 0x30B3, 0x48A5, 0xB5D1, 0xD75E, 0x922A, 0xAC56, 0xAAC6
|
|
2195 , 0x4FB8, 0x38D2, 0x96A4, 0x7DB6, 0x76FC, 0x6BE2, 0x9C74, 0x04F1
|
|
2196 , 0x459D, 0x7059, 0x6471, 0x8720, 0x865B, 0xCF65, 0xE62D, 0xA802
|
|
2197 , 0x1B60, 0x25AD, 0xAEB0, 0xB9F6, 0x1C46, 0x6169, 0x3440, 0x7E0F
|
|
2198 , 0x5547, 0xA323, 0xDD51, 0xAF3A, 0xC35C, 0xF9CE, 0xBAC5, 0xEA26
|
|
2199 , 0x2C53, 0x0D6E, 0x8528, 0x8409, 0xD3DF, 0xCDF4, 0x4181, 0x4D52
|
|
2200 , 0x6ADC, 0x37C8, 0x6CC1, 0xABFA, 0x24E1, 0x7B08, 0x0CBD, 0xB14A
|
|
2201 , 0x7888, 0x958B, 0xE363, 0xE86D, 0xE9CB, 0xD5FE, 0x3B00, 0x1D39
|
|
2202 , 0xF2EF, 0xB70E, 0x6658, 0xD0E4, 0xA677, 0x72F8, 0xEB75, 0x4B0A
|
|
2203 , 0x3144, 0x50B4, 0x8FED, 0x1F1A, 0xDB99, 0x8D33, 0x9F11, 0x8314
|
|
2204 };
|
|
2205
|
|
2206 // *********************
|
|
2207 // *********************
|
|
2208 // ** THE SUBROUTINES **
|
|
2209 // *********************
|
|
2210 // *********************
|
|
2211
|
|
2212 #pragma code subroutines = 0x10700 // can be adapted to fit the romdata tables ahead
|
|
2213
|
|
2214
|
|
2215 // ---------------
|
|
2216 // CLEAR tissue //
|
|
2217 // ---------------
|
|
2218 // optimized in v.101 (var_a)
|
|
2219
|
|
2220 void clear_tissue(void) // preload tissues with standard pressure for the given ambient pressure
|
|
2221 {
|
|
2222
|
|
2223 flag_in_divemode = 0;
|
|
2224 int_O_DBS_bitfield = 0;
|
|
2225 int_O_DBS2_bitfield = 0;
|
|
2226 int_O_DBG_pre_bitfield = 0;
|
|
2227 int_O_DBG_post_bitfield = 0;
|
|
2228 char_O_NDL_at_20mtr = 255;
|
|
2229
|
|
2230 _asm
|
|
2231 lfsr 1, 0x300 // C math routines shall use this variable bank
|
|
2232 movlw 0x01
|
|
2233 movwf TBLPTRU,0
|
|
2234 _endasm
|
|
2235
|
|
2236 // N2_ratio = (float)char_I_N2_ratio; // the 0.0002 of 0.7902 are missing with standard air
|
|
2237 N2_ratio = 0.7902; // N2_ratio / 100.0;
|
|
2238 pres_respiration = (float)int_I_pres_respiration / 1000.0;
|
|
2239 for (ci=0;ci<16;ci++) // cycle through the 16 b"uhlmann tissues
|
|
2240 {
|
|
2241 pres_tissue[ci] = N2_ratio * (pres_respiration - 0.0627) ;
|
|
2242 _asm
|
|
2243 movlw 0x02
|
|
2244 movwf TBLPTRH,0
|
|
2245 movlb 4 // fuer ci
|
|
2246 movf ci,0,1
|
|
2247 addwf ci,0,1
|
|
2248 addwf ci,0,1
|
|
2249 addwf ci,0,1
|
|
2250 addlw 0x80
|
|
2251 movwf TBLPTRL,0
|
|
2252 TBLRDPOSTINC
|
|
2253 movff TABLAT,var_a+1
|
|
2254 TBLRDPOSTINC
|
|
2255 movff TABLAT,var_a
|
|
2256 TBLRDPOSTINC
|
|
2257 movff TABLAT,var_a+3
|
|
2258 TBLRD
|
|
2259 movff TABLAT,var_a+2
|
|
2260 addlw 0x80
|
|
2261 movwf TBLPTRL,0
|
|
2262 incf TBLPTRH,1,0
|
|
2263 TBLRDPOSTINC
|
|
2264 movff TABLAT,var_b+1
|
|
2265 TBLRDPOSTINC
|
|
2266 movff TABLAT,var_b
|
|
2267 TBLRDPOSTINC
|
|
2268 movff TABLAT,var_b+3
|
|
2269 TBLRD
|
|
2270 movff TABLAT,var_b+2
|
|
2271 _endasm
|
|
2272
|
|
2273 pres_tissue_limit[ci] = (pres_tissue[ci] - var_a) * var_b ;
|
|
2274 // now update the guiding tissue
|
|
2275 if (pres_tissue_limit[ci] < 0)
|
|
2276 pres_tissue_limit[ci] = 0;
|
|
2277 } // for 0 to 16
|
|
2278
|
|
2279 for (ci=16;ci<32;ci++) // cycle through the 16 b"uhlmann tissues for Helium
|
|
2280 {
|
|
2281 pres_tissue[ci] = 0.0;
|
|
2282 } // for
|
|
2283
|
|
2284 clear_decoarray();
|
|
2285 char_O_deco_status = 0;
|
|
2286 char_O_nullzeit = 0;
|
|
2287 char_O_ascenttime = 0;
|
|
2288 char_O_gradient_factor = 0;
|
|
2289 char_O_relative_gradient_GF = 0;
|
|
2290 } // clear_tissue(void)
|
|
2291
|
|
2292
|
|
2293 // --------------------
|
|
2294 // calc_without_deco //
|
|
2295 // fixed N2_ratio ! //
|
|
2296 // --------------------
|
|
2297 // optimized in v.101 (float_..saturation_multiplier)
|
|
2298
|
|
2299 void calc_without_deco(void)
|
|
2300 {
|
|
2301 _asm
|
|
2302 lfsr 1, 0x300
|
|
2303 _endasm
|
|
2304 N2_ratio = 0.7902; // FIXED RATIO !! sum as stated in b"uhlmann
|
|
2305 pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system
|
|
2306 pres_surface = (float)int_I_pres_surface / 1000.0;
|
|
2307 temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body
|
|
2308 temp2_atem = 0.0;
|
|
2309 temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does apply to the pressure without any inert ratio
|
|
2310 float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0;
|
|
2311 float_saturation_multiplier = char_I_saturation_multiplier / 100.0;
|
|
2312
|
|
2313 calc_tissue(); // update the pressure in the 16 tissues in accordance with the new ambient pressure
|
|
2314
|
|
2315 clear_decoarray();
|
|
2316 char_O_deco_status = 0;
|
|
2317 char_O_nullzeit = 0;
|
|
2318 char_O_ascenttime = 0;
|
|
2319 calc_gradient_factor();
|
|
2320
|
|
2321 } // calc_without_deco
|
|
2322
|
|
2323
|
|
2324 // --------------------
|
|
2325 // calc_hauptroutine //
|
|
2326 // --------------------
|
|
2327 // this is the major code in dive mode
|
|
2328 // calculates:
|
|
2329 // the tissues,
|
|
2330 // the bottom time
|
|
2331 // and simulates the ascend with all deco stops
|
|
2332
|
|
2333 void calc_hauptroutine(void)
|
|
2334 {
|
|
2335 calc_hauptroutine_data_input();
|
|
2336
|
|
2337 if(!flag_in_divemode)
|
|
2338 {
|
|
2339 flag_in_divemode = 1;
|
|
2340 create_dbs_set_dbg_and_ndl20mtr();
|
|
2341 }
|
|
2342 else
|
|
2343 check_pre_dbg();
|
|
2344
|
|
2345 calc_hauptroutine_update_tissues();
|
|
2346 calc_gradient_factor();
|
|
2347
|
|
2348
|
|
2349 switch (char_O_deco_status) // toggle between calculation for nullzeit (bottom time), deco stops and more deco stops (continue)
|
|
2350 {
|
|
2351 case 0:
|
|
2352 update_startvalues();
|
|
2353 calc_nullzeit();
|
|
2354 check_ndl();
|
|
2355 char_O_deco_status = 255; // calc deco next time
|
|
2356 break;
|
|
2357 case 1:
|
|
2358 if (char_O_deco_status == 3)
|
|
2359 break;
|
|
2360 char_O_deco_status = 0;
|
|
2361 // char_O_lock_depth_list = 255;
|
|
2362 calc_hauptroutine_calc_deco();
|
|
2363 // build_debug_output();
|
|
2364 break;
|
|
2365 case 3: // new dive
|
|
2366 clear_decoarray();
|
|
2367 clear_internal_deco_table_GF();
|
|
2368 copy_deco_table_GF();
|
|
2369 internal_deco_pointer = 0;
|
|
2370 lock_GF_depth_list = 0;
|
|
2371 update_startvalues();
|
|
2372 calc_nextdecodepth_GF();
|
|
2373 char_O_deco_status = 0;
|
|
2374 break;
|
|
2375 default:
|
|
2376 update_startvalues();
|
|
2377 clear_decoarray();
|
|
2378 clear_internal_deco_table_GF();
|
|
2379 output[6] = 1;
|
|
2380 calc_hauptroutine_calc_ascend_to_deco();
|
|
2381 if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot
|
|
2382 {
|
|
2383 char_O_deco_status = 2;
|
|
2384 // char_O_lock_depth_list = 255;
|
|
2385 }
|
|
2386 else
|
|
2387 {
|
|
2388 // char_O_lock_depth_list = lock_GF_depth_list;
|
|
2389 calc_hauptroutine_calc_deco();
|
|
2390 }
|
|
2391 // build_debug_output();
|
|
2392 break;
|
|
2393 }
|
|
2394 calc_ascenttime();
|
|
2395 check_post_dbg();
|
|
2396 }
|
|
2397
|
|
2398 void calc_hauptroutine_data_input(void)
|
|
2399 {
|
|
2400 pres_respiration = (float)int_I_pres_respiration / 1000.0;
|
|
2401 pres_surface = (float)int_I_pres_surface / 1000.0;
|
|
2402
|
|
2403 N2_ratio = (float)char_I_N2_ratio / 100.0;; // the 0.0002 of 0.7902 are missing with standard air
|
|
2404 He_ratio = (float)char_I_He_ratio / 100.0;;
|
|
2405 deco_N2_ratio = (float)char_I_deco_N2_ratio / 100.0;
|
|
2406 deco_He_ratio = (float)char_I_deco_He_ratio / 100.0;
|
60
|
2407 deco_N2_ratio2 = (float)char_I_deco_N2_ratio2 / 100.0;
|
|
2408 deco_He_ratio2 = (float)char_I_deco_He_ratio2 / 100.0;
|
|
2409 deco_N2_ratio3 = (float)char_I_deco_N2_ratio3 / 100.0;
|
|
2410 deco_He_ratio3 = (float)char_I_deco_He_ratio3 / 100.0;
|
|
2411 deco_N2_ratio4 = (float)char_I_deco_N2_ratio4 / 100.0;
|
|
2412 deco_He_ratio4 = (float)char_I_deco_He_ratio4 / 100.0;
|
|
2413 deco_N2_ratio5 = (float)char_I_deco_N2_ratio5 / 100.0;
|
|
2414 deco_He_ratio5 = (float)char_I_deco_He_ratio5 / 100.0;
|
0
|
2415 float_deco_distance = (float)char_I_deco_distance / 100.0;
|
60
|
2416
|
|
2417 // ____________________________________________________
|
|
2418 //
|
|
2419 // _____________ G A S _ C H A N G E S ________________
|
|
2420 // ____________________________________________________
|
|
2421
|
|
2422 int_temp = (int_I_pres_respiration - int_I_pres_surface) + MBAR_REACH_GASCHANGE_AUTO_CHANGE_OFF;
|
|
2423
|
|
2424 deco_gas_change = 0;
|
|
2425 deco_gas_change2 = 0;
|
|
2426 deco_gas_change3 = 0;
|
|
2427 deco_gas_change4 = 0;
|
|
2428 deco_gas_change5 = 0;
|
|
2429
|
0
|
2430 if(char_I_deco_gas_change)
|
|
2431 {
|
60
|
2432 int_temp2 = ((int)char_I_deco_gas_change) * 100;
|
|
2433 if(int_temp > int_temp2)
|
|
2434 {
|
|
2435 deco_gas_change = (float)char_I_deco_gas_change / 9.995 + pres_surface;
|
|
2436 deco_gas_change += float_deco_distance;
|
|
2437 }
|
|
2438 }
|
|
2439 if(char_I_deco_gas_change2)
|
|
2440 {
|
|
2441 int_temp2 = ((int)char_I_deco_gas_change2) * 100;
|
|
2442 if(int_temp > int_temp2)
|
|
2443 {
|
|
2444 deco_gas_change2 = (float)char_I_deco_gas_change2 / 9.995 + pres_surface;
|
|
2445 deco_gas_change2 += float_deco_distance;
|
|
2446 }
|
0
|
2447 }
|
60
|
2448 if(char_I_deco_gas_change3)
|
|
2449 {
|
|
2450 int_temp2 = ((int)char_I_deco_gas_change3) * 100;
|
|
2451 if(int_temp > int_temp2)
|
|
2452 {
|
|
2453 deco_gas_change3 = (float)char_I_deco_gas_change3 / 9.995 + pres_surface;
|
|
2454 deco_gas_change3 += float_deco_distance;
|
|
2455 }
|
|
2456 }
|
|
2457 if(char_I_deco_gas_change4)
|
|
2458 {
|
|
2459 int_temp2 = ((int)char_I_deco_gas_change4) * 100;
|
|
2460 if(int_temp > int_temp2)
|
|
2461 {
|
|
2462 deco_gas_change4 = (float)char_I_deco_gas_change4 / 9.995 + pres_surface;
|
|
2463 deco_gas_change4 += float_deco_distance;
|
|
2464 }
|
|
2465 }
|
|
2466 if(char_I_deco_gas_change5)
|
|
2467 {
|
|
2468 int_temp2 = ((int)char_I_deco_gas_change5) * 100;
|
|
2469 if(int_temp > int_temp2)
|
|
2470 {
|
|
2471 deco_gas_change5 = (float)char_I_deco_gas_change5 / 9.995 + pres_surface;
|
|
2472 deco_gas_change5 += float_deco_distance;
|
|
2473 }
|
|
2474 }
|
|
2475
|
0
|
2476 const_ppO2 = (float)char_I_const_ppO2 / 100.0;
|
|
2477 deco_ppO2_change = (float)char_I_deco_ppO2_change / 99.95 + pres_surface;
|
|
2478 deco_ppO2_change = deco_ppO2_change + float_deco_distance;
|
|
2479 deco_ppO2 = (float)char_I_deco_ppO2 / 100.0;
|
|
2480 float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0;
|
|
2481 float_saturation_multiplier = char_I_saturation_multiplier / 100.0;
|
|
2482 GF_low = (float)char_I_GF_Low_percentage / 100.0;
|
|
2483 GF_high = (float)char_I_GF_High_percentage / 100.0;
|
|
2484 GF_delta = GF_high - GF_low;
|
|
2485
|
|
2486 temp2 = (pres_respiration - pres_surface) / 0.29985;
|
|
2487 int_temp = (int)(temp2);
|
|
2488 if (int_temp < 0)
|
|
2489 int_temp = 0;
|
|
2490 if (int_temp > 255)
|
|
2491 int_temp = 255;
|
|
2492 char_O_actual_pointer = int_temp;
|
|
2493
|
|
2494 temp_depth_last_deco = (int)char_I_depth_last_deco;
|
|
2495 }
|
|
2496
|
|
2497 void calc_hauptroutine_update_tissues(void)
|
|
2498 {
|
|
2499 int_O_calc_tissue_call_counter = int_O_calc_tissue_call_counter + 1;
|
|
2500 if (char_I_const_ppO2 == 0) // new in v.101
|
|
2501 pres_diluent = pres_respiration; // new in v.101
|
|
2502 else // new in v.101
|
|
2503 pres_diluent = ((pres_respiration - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101
|
|
2504 if (pres_diluent > pres_respiration) // new in v.101
|
|
2505 pres_diluent = pres_respiration; // new in v.101
|
|
2506 if (pres_diluent > 0.0627) // new in v.101
|
|
2507 {
|
|
2508 temp_atem = N2_ratio * (pres_diluent - 0.0627); // changed in v.101
|
|
2509 temp2_atem = He_ratio * (pres_diluent - 0.0627); // changed in v.101
|
|
2510 char_O_diluent = (char)(pres_diluent/pres_respiration*100.0);
|
|
2511 }
|
|
2512 else // new in v.101
|
|
2513 {
|
|
2514 temp_atem = 0.0; // new in v.101
|
|
2515 temp2_atem = 0.0; // new in v.101
|
|
2516 char_O_diluent = 0;
|
|
2517 }
|
|
2518 temp_surface = pres_surface;
|
60
|
2519
|
|
2520 if(!char_I_step_is_1min)
|
|
2521 calc_tissue();
|
|
2522 else
|
|
2523 calc_tissue_step_1_min();
|
|
2524
|
0
|
2525 int_O_gtissue_limit = (int)(pres_tissue_limit[char_O_gtissue_no] * 1000);
|
|
2526 int_O_gtissue_press = (int)((pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]) * 1000);
|
|
2527 if (char_I_deco_model == 1)
|
|
2528 {
|
|
2529 temp1 = temp1 * GF_high;
|
|
2530 }
|
|
2531 else
|
|
2532 {
|
|
2533 temp1 = temp_surface;
|
|
2534 }
|
|
2535 if (pres_gtissue_limit > temp1 && char_O_deco_status == 0) // if guiding tissue can not be exposed to surface pressure immediately
|
|
2536 {
|
|
2537 char_O_nullzeit = 0; // deco necessary
|
|
2538 char_O_deco_status = 255; // calculate deco skip nullzeit calculation
|
|
2539 }
|
|
2540 } // calc_hauptroutine_update_tissues
|
|
2541 void calc_hauptroutine_calc_deco(void)
|
|
2542 {
|
|
2543 do
|
|
2544 {
|
|
2545 int_temp_decostatus = 0;
|
|
2546 calc_nextdecodepth_GF();
|
|
2547 if (temp_depth_limit > 0)
|
|
2548 {
|
60
|
2549 calc_N2_ratio = N2_ratio;
|
|
2550 calc_He_ratio = He_ratio;
|
|
2551
|
|
2552 if (char_I_const_ppO2 == 0) // new in v.101
|
0
|
2553 {
|
|
2554 deco_diluent = temp_deco; // new in v.101
|
60
|
2555
|
|
2556 if(deco_gas_change && (temp_deco < deco_gas_change))
|
|
2557 {
|
|
2558 calc_N2_ratio = deco_N2_ratio;
|
|
2559 calc_He_ratio = deco_He_ratio;
|
|
2560 }
|
|
2561 if(deco_gas_change2 && (temp_deco < deco_gas_change2))
|
|
2562 {
|
|
2563 calc_N2_ratio = deco_N2_ratio2;
|
|
2564 calc_He_ratio = deco_He_ratio2;
|
|
2565 }
|
|
2566 if(deco_gas_change3 && (temp_deco < deco_gas_change3))
|
|
2567 {
|
|
2568 calc_N2_ratio = deco_N2_ratio3;
|
|
2569 calc_He_ratio = deco_He_ratio3;
|
|
2570 }
|
|
2571 if(deco_gas_change4 && (temp_deco < deco_gas_change4))
|
|
2572 {
|
|
2573 calc_N2_ratio = deco_N2_ratio4;
|
|
2574 calc_He_ratio = deco_He_ratio4;
|
|
2575 }
|
|
2576 if(deco_gas_change5 && (temp_deco < deco_gas_change5))
|
|
2577 {
|
|
2578 calc_N2_ratio = deco_N2_ratio5;
|
|
2579 calc_He_ratio = deco_He_ratio5;
|
|
2580 }
|
0
|
2581 }
|
|
2582 else // new in v.101
|
|
2583 {
|
|
2584 if (temp_deco > deco_ppO2_change)
|
|
2585 {
|
|
2586 deco_diluent = ((temp_deco - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101
|
|
2587 }
|
|
2588 else
|
|
2589 {
|
|
2590 deco_diluent = ((temp_deco - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101
|
|
2591 }
|
|
2592 }
|
|
2593 if (deco_diluent > temp_deco) // new in v.101
|
|
2594 deco_diluent = temp_deco; // new in v.101
|
|
2595 if (deco_diluent > 0.0627) // new in v.101
|
|
2596 {
|
|
2597 temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101
|
|
2598 temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101
|
|
2599 }
|
|
2600 else // new in v.101
|
|
2601 {
|
|
2602 temp_atem = 0.0; // new in v.101
|
|
2603 temp2_atem = 0.0; // new in v.101
|
|
2604 }
|
|
2605 sim_tissue_1min();
|
|
2606 update_internal_deco_table_GF();
|
|
2607 temp_decotime = 1;
|
|
2608 update_decoarray();
|
|
2609 char_O_deco_status = char_O_deco_status + 1;
|
|
2610 if (char_O_deco_status < 16)
|
|
2611 int_temp_decostatus = 1;
|
|
2612 }
|
|
2613 else // if (temp_depth_limit > 0)
|
|
2614 {
|
|
2615 char_O_deco_status = 0;
|
|
2616 }
|
|
2617 } while (int_temp_decostatus == 1);
|
|
2618 if (char_O_deco_status > 15)
|
|
2619 {
|
|
2620 char_O_deco_status = 1;
|
|
2621 }
|
|
2622 else
|
|
2623 {
|
|
2624 copy_deco_table_GF();
|
|
2625 char_O_deco_status = 0;
|
|
2626 }
|
|
2627 }
|
|
2628
|
|
2629 void calc_hauptroutine_calc_ascend_to_deco(void)
|
|
2630 {
|
|
2631 update_startvalues();
|
|
2632 char_O_deco_status = 0;
|
|
2633 temp_deco = pres_respiration;
|
|
2634 lock_GF_depth_list = 1; // new in v.102
|
|
2635 do // go up to first deco
|
|
2636 {
|
|
2637 int_temp_decostatus = 0;
|
|
2638 temp_deco = temp_deco - 1.0;
|
|
2639 if ( char_I_deco_model == 1) // new in v.102 , 4 = deep stops
|
|
2640 temp_limit = temp_pres_gtissue_limit_GF_low;
|
|
2641 else
|
|
2642 temp_limit = temp_pres_gtissue_limit;
|
|
2643 if ((temp_deco > temp_limit) && (temp_deco > pres_surface)) // changes in v.102
|
|
2644 {
|
|
2645 lock_GF_depth_list = 0; // new in v.102, distance to first stop > 10 mtr.
|
|
2646 output[6] = 0;
|
60
|
2647 temp_deco += 0.5;
|
|
2648
|
|
2649 calc_N2_ratio = N2_ratio;
|
|
2650 calc_He_ratio = He_ratio;
|
|
2651
|
|
2652 if (char_I_const_ppO2 == 0) // new in v.101 // calculate at half of the ascent
|
0
|
2653 {
|
60
|
2654 deco_diluent = temp_deco; // new in v.101
|
|
2655
|
|
2656 if(deco_gas_change && (temp_deco < deco_gas_change))
|
|
2657 {
|
0
|
2658 calc_N2_ratio = deco_N2_ratio;
|
|
2659 calc_He_ratio = deco_He_ratio;
|
|
2660 }
|
60
|
2661 if(deco_gas_change2 && (temp_deco < deco_gas_change2))
|
|
2662 {
|
|
2663 calc_N2_ratio = deco_N2_ratio2;
|
|
2664 calc_He_ratio = deco_He_ratio2;
|
|
2665 }
|
|
2666 if(deco_gas_change3 && (temp_deco < deco_gas_change3))
|
|
2667 {
|
|
2668 calc_N2_ratio = deco_N2_ratio3;
|
|
2669 calc_He_ratio = deco_He_ratio3;
|
|
2670 }
|
|
2671 if(deco_gas_change4 && (temp_deco < deco_gas_change4))
|
|
2672 {
|
|
2673 calc_N2_ratio = deco_N2_ratio4;
|
|
2674 calc_He_ratio = deco_He_ratio4;
|
|
2675 }
|
|
2676 if(deco_gas_change5 && (temp_deco < deco_gas_change5))
|
|
2677 {
|
|
2678 calc_N2_ratio = deco_N2_ratio5;
|
|
2679 calc_He_ratio = deco_He_ratio5;
|
|
2680 }
|
0
|
2681 }
|
|
2682 else // new in v.101
|
|
2683 {
|
60
|
2684 if (temp_deco > deco_ppO2_change)
|
|
2685 deco_diluent = ((temp_deco - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent
|
0
|
2686 else
|
60
|
2687 deco_diluent = ((temp_deco - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent
|
|
2688 if (deco_diluent > (temp_deco)) // new in v.101
|
|
2689 deco_diluent = temp_deco; // new in v.101 // calculate at half of the ascent
|
0
|
2690 }
|
60
|
2691 temp_deco -= 0.5;
|
0
|
2692 if (deco_diluent > 0.0627) // new in v.101
|
|
2693 {
|
|
2694 temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101
|
|
2695 temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101
|
|
2696 }
|
|
2697 else // new in v.101
|
|
2698 {
|
|
2699 temp_atem = 0.0; // new in v.101
|
|
2700 temp2_atem = 0.0; // new in v.101
|
|
2701 }
|
|
2702 sim_tissue_1min();
|
|
2703 char_O_deco_status = char_O_deco_status + 1;
|
|
2704 if (char_O_deco_status < 16) // 16 is the limit of calculations for one time slot
|
|
2705 int_temp_decostatus = 1;
|
|
2706 }
|
|
2707 } while (int_temp_decostatus == 1);
|
|
2708 } // calc_hauptroutine_calc_ascend_to_deco
|
|
2709
|
|
2710 // --------------
|
|
2711 // calc_tissue //
|
|
2712 // --------------
|
|
2713 // optimized in v.101
|
|
2714
|
|
2715 void calc_tissue(void)
|
|
2716 {
|
|
2717 _asm
|
|
2718 lfsr 1, 0x300
|
|
2719 movlw 0x01
|
|
2720 movwf TBLPTRU,0
|
|
2721 _endasm
|
|
2722
|
|
2723 char_O_gtissue_no = 255;
|
|
2724 pres_gtissue_limit = 0.0;
|
|
2725
|
|
2726 for (ci=0;ci<16;ci++)
|
|
2727 {
|
|
2728 _asm
|
|
2729 movlw 0x02
|
|
2730 movwf TBLPTRH,0
|
|
2731 movlb 4 // fuer ci
|
|
2732 movf ci,0,1
|
|
2733 addwf ci,0,1
|
|
2734 addwf ci,0,1
|
|
2735 addwf ci,0,1
|
|
2736 movwf TBLPTRL,0
|
|
2737 TBLRDPOSTINC
|
|
2738 movff TABLAT,var_e2secs+1 // the order is confussing
|
|
2739 TBLRDPOSTINC
|
|
2740 movff TABLAT,var_e2secs // low byte first, high afterwards
|
|
2741 TBLRDPOSTINC
|
|
2742 movff TABLAT,var_e2secs+3
|
|
2743 TBLRD
|
|
2744 movff TABLAT,var_e2secs+2
|
|
2745 addlw 0x40
|
|
2746 movwf TBLPTRL,0
|
|
2747 TBLRDPOSTINC
|
|
2748 movff TABLAT,var2_e2secs+1
|
|
2749 TBLRDPOSTINC
|
|
2750 movff TABLAT,var2_e2secs
|
|
2751 TBLRDPOSTINC
|
|
2752 movff TABLAT,var2_e2secs+3
|
|
2753 TBLRD
|
|
2754 movff TABLAT,var2_e2secs+2
|
|
2755 addlw 0x40
|
|
2756 movwf TBLPTRL,0
|
|
2757 TBLRDPOSTINC
|
|
2758 movff TABLAT,var_a+1
|
|
2759 TBLRDPOSTINC
|
|
2760 movff TABLAT,var_a
|
|
2761 TBLRDPOSTINC
|
|
2762 movff TABLAT,var_a+3
|
|
2763 TBLRD
|
|
2764 movff TABLAT,var_a+2
|
|
2765 addlw 0x40
|
|
2766 movwf TBLPTRL,0
|
|
2767 TBLRDPOSTINC
|
|
2768 movff TABLAT,var2_a+1
|
|
2769 TBLRDPOSTINC
|
|
2770 movff TABLAT,var2_a
|
|
2771 TBLRDPOSTINC
|
|
2772 movff TABLAT,var2_a+3
|
|
2773 TBLRD
|
|
2774 movff TABLAT,var2_a+2
|
|
2775 addlw 0x40
|
|
2776 movwf TBLPTRL,0
|
|
2777 incf TBLPTRH,1,0
|
|
2778 TBLRDPOSTINC
|
|
2779 movff TABLAT,var_b+1
|
|
2780 TBLRDPOSTINC
|
|
2781 movff TABLAT,var_b
|
|
2782 TBLRDPOSTINC
|
|
2783 movff TABLAT,var_b+3
|
|
2784 TBLRD
|
|
2785 movff TABLAT,var_b+2
|
|
2786 addlw 0x40
|
|
2787 movwf TBLPTRL,0
|
|
2788 TBLRDPOSTINC
|
|
2789 movff TABLAT,var2_b+1
|
|
2790 TBLRDPOSTINC
|
|
2791 movff TABLAT,var2_b
|
|
2792 TBLRDPOSTINC
|
|
2793 movff TABLAT,var2_b+3
|
|
2794 TBLRD
|
|
2795 movff TABLAT,var2_b+2
|
|
2796 _endasm
|
|
2797 // the start values are the previous end values // write new values in temp
|
|
2798
|
|
2799 if( (var_e2secs < 0.0000363)
|
|
2800 || (var_e2secs > 0.00577)
|
|
2801 || (var2_e2secs < 0.0000961)
|
|
2802 || (var2_e2secs > 0.150)
|
|
2803 || (var_a < 0.231)
|
|
2804 || (var_a > 1.27)
|
|
2805 || (var_b < 0.504)
|
|
2806 || (var_b > 0.966)
|
|
2807 || (var2_a < 0.510)
|
|
2808 || (var2_a > 1.75)
|
|
2809 || (var2_b < 0.423)
|
|
2810 || (var2_b > 0.927)
|
|
2811 )
|
|
2812 int_O_DBG_pre_bitfield |= DBG_ZH16ERR;
|
|
2813
|
|
2814 // N2
|
|
2815 temp_tissue = (temp_atem - pres_tissue[ci]) * var_e2secs;
|
|
2816 temp_tissue_safety();
|
|
2817 pres_tissue[ci] = pres_tissue[ci] + temp_tissue;
|
|
2818
|
|
2819 // He
|
|
2820 temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e2secs;
|
|
2821 temp_tissue_safety();
|
|
2822 pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue;
|
|
2823
|
|
2824 temp_tissue = pres_tissue[ci] + pres_tissue[ci+16];
|
|
2825
|
|
2826 var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue;
|
|
2827 var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue;
|
|
2828 pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b;
|
|
2829 if (pres_tissue_limit[ci] < 0)
|
|
2830 pres_tissue_limit[ci] = 0;
|
|
2831 if (pres_tissue_limit[ci] > pres_gtissue_limit)
|
|
2832 {
|
|
2833 pres_gtissue_limit = pres_tissue_limit[ci];
|
|
2834 char_O_gtissue_no = ci;
|
|
2835 }//if
|
|
2836 } // for
|
|
2837 }//calc_tissue(void)
|
|
2838
|
|
2839 // ----------------
|
|
2840 // calc_nullzeit //
|
|
2841 // ----------------
|
|
2842 // calculates the remaining bottom time
|
|
2843
|
|
2844 // unchanged in v.101
|
|
2845
|
|
2846 void calc_nullzeit(void)
|
|
2847 {
|
|
2848 char_O_nullzeit = 0;
|
|
2849 int_temp = 1;
|
|
2850 do
|
|
2851 {
|
|
2852 backup_sim_pres_tissue();
|
|
2853 sim_tissue_10min();
|
|
2854 char_O_nullzeit = char_O_nullzeit + 10;
|
|
2855 int_temp = int_temp + 1;
|
|
2856 if (char_I_deco_model == 1)
|
|
2857 temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue;
|
|
2858 else
|
|
2859 temp1 = temp_pres_gtissue_limit;
|
|
2860 if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately
|
|
2861 int_temp = 255;
|
|
2862 } while (int_temp < 17);
|
|
2863 if (int_temp == 255)
|
|
2864 {
|
|
2865 restore_sim_pres_tissue();
|
|
2866 char_O_nullzeit = char_O_nullzeit - 10;
|
|
2867 } //if int_temp == 255]
|
|
2868 int_temp = 1;
|
|
2869 if (char_O_nullzeit < 60)
|
|
2870 {
|
|
2871 do
|
|
2872 {
|
|
2873 sim_tissue_1min();
|
|
2874 char_O_nullzeit = char_O_nullzeit + 1;
|
|
2875 int_temp = int_temp + 1; // new in v.102a
|
|
2876 if (char_I_deco_model == 1)
|
|
2877 temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue;
|
|
2878 else
|
|
2879 temp1 = temp_pres_gtissue_limit;
|
|
2880 if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately
|
|
2881 int_temp = 255;
|
|
2882 } while (int_temp < 10);
|
|
2883 if (int_temp == 255)
|
|
2884 char_O_nullzeit = char_O_nullzeit - 1;
|
|
2885 } // if char_O_nullzeit < 60
|
|
2886 } //calc_nullzeit
|
|
2887
|
|
2888 // -------------------------
|
|
2889 // backup_sim_pres_tissue //
|
|
2890 // -------------------------
|
|
2891 void backup_sim_pres_tissue(void)
|
|
2892 {
|
|
2893 for (x = 0;x<16;x++)
|
|
2894 {
|
|
2895 sim_pres_tissue_backup[x] = sim_pres_tissue[x];
|
|
2896 sim_pres_tissue_backup[x+16] = sim_pres_tissue[x+16];
|
|
2897 }
|
|
2898 } // backup_sim
|
|
2899
|
|
2900 // --------------------------
|
|
2901 // restore_sim_pres_tissue //
|
|
2902 // --------------------------
|
|
2903 void restore_sim_pres_tissue(void)
|
|
2904 {
|
|
2905 for (x = 0;x<16;x++)
|
|
2906 {
|
|
2907 sim_pres_tissue[x] = sim_pres_tissue_backup[x];
|
|
2908 sim_pres_tissue[x+16] = sim_pres_tissue_backup[x+16];
|
|
2909 }
|
|
2910 } // restore_sim
|
|
2911
|
|
2912 // ------------------
|
|
2913 // calc_ascenttime //
|
|
2914 // ------------------
|
|
2915
|
|
2916 void calc_ascenttime(void)
|
|
2917 {
|
|
2918 if (pres_respiration > pres_surface)
|
|
2919 {
|
|
2920 switch (char_O_deco_status)
|
|
2921 {
|
|
2922 case 2:
|
|
2923 char_O_ascenttime = 255;
|
|
2924 break;
|
|
2925 case 1:
|
|
2926 break;
|
|
2927 default:
|
|
2928 temp1 = pres_respiration - pres_surface + 0.6; // + 0.6 hence 1 minute ascent time from a depth of 4 meter on
|
|
2929 if (temp1 < 0)
|
|
2930 temp1 = 0;
|
|
2931 if (temp1 > 255)
|
|
2932 temp1 = 255;
|
|
2933 char_O_ascenttime = (char)temp1;
|
|
2934
|
|
2935 for(ci=0;ci<7;ci++)
|
|
2936 {
|
|
2937 x = char_O_ascenttime + char_O_array_decotime[ci];
|
|
2938 if (x < char_O_ascenttime)
|
|
2939 char_O_ascenttime = 255;
|
|
2940 else
|
|
2941 char_O_ascenttime = x;
|
|
2942 }
|
|
2943 }
|
|
2944 }
|
|
2945 else
|
|
2946 char_O_ascenttime = 0;
|
|
2947 } // calc_ascenttime()
|
|
2948
|
|
2949
|
|
2950 // ---------------------
|
|
2951 // update_startvalues //
|
|
2952 // ---------------------
|
|
2953 // updated in v.102
|
|
2954
|
|
2955 void update_startvalues(void)
|
|
2956 {
|
|
2957 temp_pres_gtissue_limit = pres_gtissue_limit;
|
|
2958 temp_pres_gtissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16];
|
|
2959 temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number
|
|
2960 temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue;
|
|
2961 temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface;
|
|
2962 if (temp_pres_gtissue_limit_GF_low_below_surface < 0)
|
|
2963 temp_pres_gtissue_limit_GF_low_below_surface = 0;
|
|
2964
|
|
2965 temp_gtissue_no = char_O_gtissue_no;
|
|
2966 for (x = 0;x<16;x++)
|
|
2967 {
|
|
2968 sim_pres_tissue[x] = pres_tissue[x];
|
|
2969 sim_pres_tissue[x+16] = pres_tissue[x+16];
|
|
2970 sim_pres_tissue_limit[x] = pres_tissue_limit[x];
|
|
2971 }
|
|
2972 } // update_startvalues
|
|
2973
|
|
2974
|
|
2975 // ------------------
|
|
2976 // sim_tissue_1min //
|
|
2977 // ------------------
|
|
2978 // optimized in v.101
|
|
2979
|
|
2980 void sim_tissue_1min(void)
|
|
2981 {
|
|
2982 temp_pres_gtissue_limit = 0.0;
|
|
2983 temp_gtissue_no = 255;
|
|
2984
|
|
2985 _asm
|
|
2986 lfsr 1, 0x300
|
|
2987 movlw 0x01
|
|
2988 movwf TBLPTRU,0
|
|
2989 _endasm
|
|
2990
|
|
2991
|
|
2992 for (ci=0;ci<16;ci++)
|
|
2993 {
|
|
2994 _asm
|
|
2995 movlw 0x02
|
|
2996 movwf TBLPTRH,0
|
|
2997 movlb 4 // fuer ci
|
|
2998 movf ci,0,1
|
|
2999 addwf ci,0,1
|
|
3000 addwf ci,0,1
|
|
3001 addwf ci,0,1
|
|
3002 addlw 0x80
|
|
3003 movwf TBLPTRL,0
|
|
3004 TBLRDPOSTINC
|
|
3005 movff TABLAT,var_a+1
|
|
3006 TBLRDPOSTINC
|
|
3007 movff TABLAT,var_a
|
|
3008 TBLRDPOSTINC
|
|
3009 movff TABLAT,var_a+3
|
|
3010 TBLRD
|
|
3011 movff TABLAT,var_a+2
|
|
3012 addlw 0x40
|
|
3013 movwf TBLPTRL,0
|
|
3014 TBLRDPOSTINC
|
|
3015 movff TABLAT,var2_a+1
|
|
3016 TBLRDPOSTINC
|
|
3017 movff TABLAT,var2_a
|
|
3018 TBLRDPOSTINC
|
|
3019 movff TABLAT,var2_a+3
|
|
3020 TBLRD
|
|
3021 movff TABLAT,var2_a+2
|
|
3022 addlw 0x40
|
|
3023 movwf TBLPTRL,0
|
|
3024 incf TBLPTRH,1,0
|
|
3025 TBLRDPOSTINC
|
|
3026 movff TABLAT,var_b+1
|
|
3027 TBLRDPOSTINC
|
|
3028 movff TABLAT,var_b
|
|
3029 TBLRDPOSTINC
|
|
3030 movff TABLAT,var_b+3
|
|
3031 TBLRD
|
|
3032 movff TABLAT,var_b+2
|
|
3033 addlw 0x40
|
|
3034 movwf TBLPTRL,0
|
|
3035 TBLRDPOSTINC
|
|
3036 movff TABLAT,var2_b+1
|
|
3037 TBLRDPOSTINC
|
|
3038 movff TABLAT,var2_b
|
|
3039 TBLRDPOSTINC
|
|
3040 movff TABLAT,var2_b+3
|
|
3041 TBLRD
|
|
3042 movff TABLAT,var2_b+2
|
|
3043 addlw 0xC0
|
|
3044 movwf TBLPTRL,0
|
|
3045 incf TBLPTRH,1,0
|
|
3046 TBLRDPOSTINC
|
|
3047 movff TABLAT,var_e1min+1
|
|
3048 TBLRDPOSTINC
|
|
3049 movff TABLAT,var_e1min
|
|
3050 TBLRDPOSTINC
|
|
3051 movff TABLAT,var_e1min+3
|
|
3052 TBLRD
|
|
3053 movff TABLAT,var_e1min+2
|
|
3054 addlw 0x40
|
|
3055 movwf TBLPTRL,0
|
|
3056 TBLRDPOSTINC
|
|
3057 movff TABLAT,var2_e1min+1
|
|
3058 TBLRDPOSTINC
|
|
3059 movff TABLAT,var2_e1min
|
|
3060 TBLRDPOSTINC
|
|
3061 movff TABLAT,var2_e1min+3
|
|
3062 TBLRD
|
|
3063 movff TABLAT,var2_e1min+2
|
|
3064 _endasm
|
|
3065 // N2
|
|
3066 temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min;
|
|
3067 temp_tissue_safety();
|
|
3068 sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue;
|
|
3069 // He
|
|
3070 temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min;
|
|
3071 temp_tissue_safety();
|
|
3072 sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue;
|
|
3073 // pressure limit
|
|
3074 temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16];
|
|
3075 var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue;
|
|
3076 var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue;
|
|
3077 sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b;
|
|
3078
|
|
3079 if (sim_pres_tissue_limit[ci] < 0)
|
|
3080 sim_pres_tissue_limit[ci] = 0;
|
|
3081 if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit)
|
|
3082 {
|
|
3083 temp_pres_gtissue = temp_tissue;
|
|
3084 temp_pres_gtissue_limit = sim_pres_tissue_limit[ci];
|
|
3085 temp_gtissue_no = ci;
|
|
3086 }
|
|
3087 } // for
|
|
3088 temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue;
|
|
3089 temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue;
|
|
3090 temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface;
|
|
3091 if (temp_pres_gtissue_limit_GF_low_below_surface < 0)
|
|
3092 temp_pres_gtissue_limit_GF_low_below_surface = 0;
|
|
3093 } //sim_tissue_1min()
|
|
3094
|
|
3095 //--------------------
|
|
3096 // sim_tissue_10min //
|
|
3097 //--------------------
|
|
3098
|
|
3099 // Attention!! uses var_e1min und var2_e1min to load 10min data !!!
|
|
3100 // is identical to sim_tissue_1min routine except for the different load of those variables
|
|
3101
|
|
3102 // optimized in v.101
|
|
3103
|
|
3104 void sim_tissue_10min(void)
|
|
3105 {
|
|
3106 temp_pres_gtissue_limit = 0.0;
|
|
3107 temp_gtissue_no = 255;
|
|
3108
|
|
3109 _asm
|
|
3110 lfsr 1, 0x300
|
|
3111 movlw 0x01
|
|
3112 movwf TBLPTRU,0
|
|
3113 _endasm
|
|
3114
|
|
3115 for (ci=0;ci<16;ci++)
|
|
3116 {
|
|
3117 _asm
|
|
3118 movlw 0x02
|
|
3119 movwf TBLPTRH,0
|
|
3120 movlb 4 // fuer ci
|
|
3121 movf ci,0,1
|
|
3122 addwf ci,0,1
|
|
3123 addwf ci,0,1
|
|
3124 addwf ci,0,1
|
|
3125 addlw 0x80
|
|
3126 movwf TBLPTRL,0
|
|
3127 TBLRDPOSTINC
|
|
3128 movff TABLAT,var_a+1
|
|
3129 TBLRDPOSTINC
|
|
3130 movff TABLAT,var_a
|
|
3131 TBLRDPOSTINC
|
|
3132 movff TABLAT,var_a+3
|
|
3133 TBLRD
|
|
3134 movff TABLAT,var_a+2
|
|
3135 addlw 0x40
|
|
3136 movwf TBLPTRL,0
|
|
3137 TBLRDPOSTINC
|
|
3138 movff TABLAT,var2_a+1
|
|
3139 TBLRDPOSTINC
|
|
3140 movff TABLAT,var2_a
|
|
3141 TBLRDPOSTINC
|
|
3142 movff TABLAT,var2_a+3
|
|
3143 TBLRD
|
|
3144 movff TABLAT,var2_a+2
|
|
3145 addlw 0x40
|
|
3146 movwf TBLPTRL,0
|
|
3147 incf TBLPTRH,1,0
|
|
3148 TBLRDPOSTINC
|
|
3149 movff TABLAT,var_b+1
|
|
3150 TBLRDPOSTINC
|
|
3151 movff TABLAT,var_b
|
|
3152 TBLRDPOSTINC
|
|
3153 movff TABLAT,var_b+3
|
|
3154 TBLRD
|
|
3155 movff TABLAT,var_b+2
|
|
3156 addlw 0x40
|
|
3157 movwf TBLPTRL,0
|
|
3158 TBLRDPOSTINC
|
|
3159 movff TABLAT,var2_b+1
|
|
3160 TBLRDPOSTINC
|
|
3161 movff TABLAT,var2_b
|
|
3162 TBLRDPOSTINC
|
|
3163 movff TABLAT,var2_b+3
|
|
3164 TBLRD
|
|
3165 movff TABLAT,var2_b+2
|
|
3166 addlw 0xC0 // different to 1 min
|
|
3167 movwf TBLPTRL,0
|
|
3168 incf TBLPTRH,1,0
|
|
3169 incf TBLPTRH,1,0 // different to 1 min
|
|
3170 TBLRDPOSTINC
|
|
3171 movff TABLAT,var_e1min+1
|
|
3172 TBLRDPOSTINC
|
|
3173 movff TABLAT,var_e1min
|
|
3174 TBLRDPOSTINC
|
|
3175 movff TABLAT,var_e1min+3
|
|
3176 TBLRD
|
|
3177 movff TABLAT,var_e1min+2
|
|
3178 addlw 0x40
|
|
3179 movwf TBLPTRL,0
|
|
3180 //incf TBLPTRH,1,0 // different to 1 min
|
|
3181 TBLRDPOSTINC
|
|
3182 movff TABLAT,var2_e1min+1
|
|
3183 TBLRDPOSTINC
|
|
3184 movff TABLAT,var2_e1min
|
|
3185 TBLRDPOSTINC
|
|
3186 movff TABLAT,var2_e1min+3
|
|
3187 TBLRD
|
|
3188 movff TABLAT,var2_e1min+2
|
|
3189 _endasm
|
|
3190 // N2
|
|
3191 temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min;
|
|
3192 temp_tissue_safety();
|
|
3193 sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue;
|
|
3194 // He
|
|
3195 temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min;
|
|
3196 temp_tissue_safety();
|
|
3197 sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue;
|
|
3198 // pressure limit
|
|
3199 temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16];
|
|
3200 var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue;
|
|
3201 var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue;
|
|
3202
|
|
3203 sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b;
|
|
3204 if (sim_pres_tissue_limit[ci] < 0)
|
|
3205 sim_pres_tissue_limit[ci] = 0;
|
|
3206 if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit)
|
|
3207 {
|
|
3208 temp_pres_gtissue = temp_tissue;
|
|
3209 temp_pres_gtissue_limit = sim_pres_tissue_limit[ci];
|
|
3210 temp_gtissue_no = ci;
|
|
3211 }
|
|
3212 } // for
|
|
3213 temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number
|
|
3214 temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue;
|
|
3215 temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface;
|
|
3216 if (temp_pres_gtissue_limit_GF_low_below_surface < 0)
|
|
3217 temp_pres_gtissue_limit_GF_low_below_surface = 0;
|
|
3218 } //sim_tissue_10min()
|
|
3219
|
|
3220
|
|
3221 // ------------------
|
|
3222 // clear_decoarray //
|
|
3223 // ------------------
|
|
3224 // unchanged in v.101
|
|
3225
|
|
3226 void clear_decoarray(void)
|
|
3227 {
|
|
3228 char_O_array_decodepth[0] = 0;
|
|
3229 char_O_array_decodepth[1] = 0;
|
|
3230 char_O_array_decodepth[2] = 0;
|
|
3231 char_O_array_decodepth[3] = 0;
|
|
3232 char_O_array_decodepth[4] = 0;
|
|
3233 char_O_array_decodepth[5] = 0;
|
|
3234 char_O_array_decotime[0] = 0;
|
|
3235 char_O_array_decotime[1] = 0;
|
|
3236 char_O_array_decotime[2] = 0;
|
|
3237 char_O_array_decotime[3] = 0;
|
|
3238 char_O_array_decotime[4] = 0;
|
|
3239 char_O_array_decotime[5] = 0;
|
|
3240 char_O_array_decotime[6] = 0;
|
|
3241 } // clear_decoarray
|
|
3242
|
|
3243
|
|
3244 // -------------------
|
|
3245 // update_decoarray //
|
|
3246 // -------------------
|
|
3247 // unchanged in v.101
|
|
3248
|
|
3249 void update_decoarray()
|
|
3250 {
|
|
3251 x = 0;
|
|
3252 do
|
|
3253 {
|
|
3254 if (char_O_array_decodepth[x] == temp_depth_limit)
|
|
3255 {
|
|
3256 int_temp = char_O_array_decotime[x] + temp_decotime;
|
|
3257 if (int_temp < 0)
|
|
3258 int_temp = 0;
|
|
3259 if (int_temp > 240)
|
|
3260 int_temp = 240;
|
|
3261 char_O_array_decotime[x] = int_temp;
|
|
3262 x = 10; // exit
|
|
3263 } // if
|
|
3264 else
|
|
3265 {
|
|
3266 if (char_O_array_decodepth[x] == 0)
|
|
3267 {
|
|
3268 if (temp_depth_limit > 255)
|
|
3269 char_O_array_decodepth[x] = 255;
|
|
3270 else
|
|
3271 char_O_array_decodepth[x] = (char)temp_depth_limit;
|
|
3272 int_temp = char_O_array_decotime[x] + temp_decotime;
|
|
3273 if (int_temp > 240)
|
|
3274 char_O_array_decotime[x] = 240;
|
|
3275 else
|
|
3276 char_O_array_decotime[x] = (char)int_temp;
|
|
3277 x = 10; // exit
|
|
3278 } // if
|
|
3279 else
|
|
3280 x++;
|
|
3281 } // else
|
|
3282 } while (x<6);
|
|
3283 if (x == 6)
|
|
3284 {
|
|
3285 int_temp = char_O_array_decotime[6] + temp_decotime;
|
|
3286 if (int_temp > 220)
|
|
3287 char_O_array_decotime[6] = 220;
|
|
3288 else
|
|
3289 char_O_array_decotime[6] = (char)int_temp;
|
|
3290 } // if x == 6
|
|
3291 } // update_decoarray
|
|
3292
|
|
3293
|
|
3294 // -----------------------
|
|
3295 // calc_gradient_factor //
|
|
3296 // -----------------------
|
|
3297 // optimized in v.101 (var_a)
|
|
3298 // new code in v.102
|
|
3299
|
|
3300 void calc_gradient_factor(void)
|
|
3301 {
|
|
3302 // tissue > respiration (entsaettigungsvorgang)
|
|
3303 // gradient ist wieviel prozent an limit mit basis tissue
|
|
3304 // dh. 0% = respiration == tissue
|
|
3305 // dh. 100% = respiration == limit
|
|
3306 temp_tissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16];
|
|
3307 temp1 = temp_tissue - pres_respiration;
|
|
3308 temp2 = temp_tissue - pres_tissue_limit[char_O_gtissue_no]; // changed in v.102
|
|
3309 temp2 = temp1/temp2;
|
|
3310 temp2 = temp2 * 100; // displayed in percent
|
|
3311 if (temp2 < 0)
|
|
3312 temp2 = 0;
|
|
3313 if (temp2 > 255)
|
|
3314 temp2 = 255;
|
|
3315 if (temp1 < 0)
|
|
3316 char_O_gradient_factor = 0;
|
|
3317 else
|
|
3318 char_O_gradient_factor = (char)temp2;
|
|
3319
|
|
3320 temp3 = temp2;
|
|
3321
|
|
3322 if (char_I_deco_model == 1) // calculate relative gradient factor
|
|
3323 {
|
|
3324 temp1 = (float)temp_depth_GF_low_meter * 0.09995;
|
|
3325 temp2 = pres_respiration - pres_surface;
|
|
3326 if (temp2 <= 0)
|
|
3327 temp1 = GF_high;
|
|
3328 else
|
|
3329 if (temp2 >= temp1)
|
|
3330 temp1 = GF_low;
|
|
3331 else
|
|
3332 temp1 = GF_low + (temp1 - temp2)/temp1*GF_delta;
|
|
3333 if (temp_depth_GF_low_meter == 0)
|
|
3334 temp1 = GF_high;
|
|
3335 temp2 = temp3 / temp1; // temp3 is already in percent
|
|
3336 if (temp2 < 0)
|
|
3337 temp2 = 0;
|
|
3338 if (temp2 > 255)
|
|
3339 temp2 = 255;
|
|
3340 char_O_relative_gradient_GF = (char)temp2;
|
|
3341 } // calc relative gradient factor
|
|
3342 else
|
|
3343 {
|
|
3344 char_O_relative_gradient_GF = char_O_gradient_factor;
|
|
3345 }
|
|
3346 } // calc_gradient
|
|
3347
|
|
3348 // ---------------------------
|
|
3349 // calc_gradient_array_only //
|
|
3350 // ---------------------------
|
|
3351 // optimized in v.101 (var_a)
|
|
3352 // new code in v.102
|
|
3353
|
|
3354 void calc_gradient_array_only()
|
|
3355 {
|
|
3356 pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system
|
|
3357 for (ci=0;ci<16;ci++)
|
|
3358 {
|
|
3359 temp_tissue = pres_tissue[ci] + pres_tissue[ci+16];
|
|
3360 temp1 = temp_tissue - pres_respiration;
|
|
3361 temp2 = temp_tissue - pres_tissue_limit[ci];
|
|
3362 temp2 = temp1/temp2;
|
|
3363 temp2 = temp2 * 200; // because of output in (Double-)percentage
|
|
3364 if (temp2 < 0)
|
|
3365 temp2 = 0;
|
|
3366 if (temp2 > 255)
|
|
3367 temp2 = 255;
|
|
3368 if (temp1 < 0)
|
|
3369 char_O_array_gradient_weighted[ci] = 0;
|
|
3370 else
|
|
3371 char_O_array_gradient_weighted[ci] = (char)temp2;
|
|
3372 } // for
|
|
3373 } // calc_gradient_array_only
|
|
3374
|
|
3375
|
|
3376 // -------------------------
|
|
3377 // calc_desaturation_time //
|
|
3378 // -------------------------
|
|
3379 // FIXED N2_ratio
|
|
3380 // unchanged in v.101
|
|
3381
|
|
3382 void calc_desaturation_time(void)
|
|
3383 {
|
|
3384 _asm
|
|
3385 lfsr 1, 0x300
|
|
3386 movlw 0x01
|
|
3387 movwf TBLPTRU,0
|
|
3388 _endasm
|
|
3389 N2_ratio = 0.7902; // FIXED sum as stated in b"uhlmann
|
|
3390 pres_surface = (float)int_I_pres_surface / 1000.0;
|
|
3391 temp_atem = N2_ratio * (pres_surface - 0.0627);
|
|
3392 int_O_desaturation_time = 0;
|
|
3393 float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142)
|
|
3394
|
|
3395 for (ci=0;ci<16;ci++)
|
|
3396 {
|
|
3397 _asm
|
|
3398 movlw 0x04
|
|
3399 movwf TBLPTRH,0
|
|
3400 movlb 4 // fuer ci
|
|
3401 movf ci,0,1
|
|
3402 addwf ci,0,1
|
|
3403 addwf ci,0,1
|
|
3404 addwf ci,0,1
|
|
3405 addlw 0x80
|
|
3406 movwf TBLPTRL,0
|
|
3407 TBLRDPOSTINC
|
|
3408 movff TABLAT,var_halftimes+1
|
|
3409 TBLRDPOSTINC
|
|
3410 movff TABLAT,var_halftimes
|
|
3411 TBLRDPOSTINC
|
|
3412 movff TABLAT,var_halftimes+3
|
|
3413 TBLRD
|
|
3414 movff TABLAT,var_halftimes+2
|
|
3415 addlw 0x40
|
|
3416 movwf TBLPTRL,0
|
|
3417 TBLRDPOSTINC
|
|
3418 movff TABLAT,var2_halftimes+1
|
|
3419 TBLRDPOSTINC
|
|
3420 movff TABLAT,var2_halftimes
|
|
3421 TBLRDPOSTINC
|
|
3422 movff TABLAT,var2_halftimes+3
|
|
3423 TBLRD
|
|
3424 movff TABLAT,var2_halftimes+2
|
|
3425 _endasm
|
|
3426
|
|
3427 // saturation_time (for flight) and N2_saturation in multiples of halftime
|
|
3428 // version v.100: 1.1 = 10 percent distance to totally clean (totally clean is not possible, would take infinite time )
|
|
3429 // new in version v.101: 1.07 = 7 percent distance to totally clean (totally clean is not possible, would take infinite time )
|
|
3430 // changes in v.101: 1.05 = 5 percent dist to totally clean is new desaturation point for display and noFly calculations
|
|
3431 // N2
|
|
3432 temp1 = 1.05 * temp_atem;
|
|
3433 temp1 = temp1 - pres_tissue[ci];
|
|
3434 temp2 = temp_atem - pres_tissue[ci];
|
|
3435 if (temp2 >= 0.0)
|
|
3436 {
|
|
3437 temp1 = 0;
|
|
3438 temp2 = 0;
|
|
3439 }
|
|
3440 else
|
|
3441 temp1 = temp1 / temp2;
|
|
3442 if (temp1 > 0.0)
|
|
3443 {
|
|
3444 temp1 = log(1.0 - temp1);
|
|
3445 temp1 = temp1 / -0.6931; // temp1 is the multiples of half times necessary.
|
|
3446 // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested.
|
|
3447 // minus because log is negative
|
|
3448 temp2 = var_halftimes * temp1 / float_desaturation_multiplier; // time necessary (in minutes ) for complete desaturation (see comment about 10 percent) , new in v.101: float_desaturation_multiplier
|
|
3449 }
|
|
3450 else
|
|
3451 {
|
|
3452 temp1 = 0;
|
|
3453 temp2 = 0;
|
|
3454 }
|
|
3455
|
|
3456 // He
|
|
3457 temp3 = 0.1 - pres_tissue[ci+16];
|
|
3458 if (temp3 >= 0.0)
|
|
3459 {
|
|
3460 temp3 = 0;
|
|
3461 temp4 = 0;
|
|
3462 }
|
|
3463 else
|
|
3464 temp3 = -1.0 * temp3 / pres_tissue[ci+16];
|
|
3465 if (temp3 > 0.0)
|
|
3466 {
|
|
3467 temp3 = log(1.0 - temp3);
|
|
3468 temp3 = temp3 / -0.6931; // temp1 is the multiples of half times necessary.
|
|
3469 // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested.
|
|
3470 // minus because log is negative
|
|
3471 temp4 = var2_halftimes * temp3 / float_desaturation_multiplier; // time necessary (in minutes ) for "complete" desaturation, new in v.101 float_desaturation_multiplier
|
|
3472 }
|
|
3473 else
|
|
3474 {
|
|
3475 temp3 = 0;
|
|
3476 temp4 = 0;
|
|
3477 }
|
|
3478
|
|
3479 // saturation_time (for flight)
|
|
3480 if (temp4 > temp2)
|
|
3481 int_temp = (int)temp4;
|
|
3482 else
|
|
3483 int_temp = (int)temp2;
|
|
3484 if(int_temp > int_O_desaturation_time)
|
|
3485 int_O_desaturation_time = int_temp;
|
|
3486
|
|
3487 // N2 saturation in multiples of halftime for display purposes
|
|
3488 temp2 = temp1 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8
|
|
3489 temp2 = temp2 + 80.0; // set center
|
|
3490 if (temp2 < 0.0)
|
|
3491 temp2 = 0.0;
|
|
3492 if (temp2 > 255.0)
|
|
3493 temp2 = 255.0;
|
|
3494 char_O_tissue_saturation[ci] = (char)temp2;
|
|
3495 // He saturation in multiples of halftime for display purposes
|
|
3496 temp4 = temp3 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8
|
|
3497 temp4 = temp4 + 80.0; // set center
|
|
3498 if (temp4 < 0.0)
|
|
3499 temp4 = 0.0;
|
|
3500 if (temp4 > 255.0)
|
|
3501 temp4 = 255.0;
|
|
3502 char_O_tissue_saturation[ci+16] = (char)temp4;
|
|
3503 } // for
|
|
3504 } // calc_desaturation_time
|
|
3505
|
|
3506
|
|
3507 // --------------------------
|
|
3508 // calc_wo_deco_step_1_min //
|
|
3509 // --------------------------
|
|
3510 // FIXED N2 Ratio
|
|
3511 // optimized in v.101 (...saturation_multiplier)
|
|
3512 // desaturation slowed down to 70,42%
|
|
3513
|
|
3514 void calc_wo_deco_step_1_min(void)
|
|
3515 {
|
|
3516 if(flag_in_divemode)
|
|
3517 {
|
|
3518 flag_in_divemode = 0;
|
|
3519 set_dbg_end_of_dive();
|
|
3520 }
|
|
3521 _asm
|
|
3522 lfsr 1, 0x300
|
|
3523 _endasm
|
|
3524 N2_ratio = 0.7902; // FIXED, sum lt. buehlmann
|
|
3525 pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system
|
|
3526 pres_surface = (float)int_I_pres_surface / 1000.0;
|
|
3527 temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body
|
|
3528 temp2_atem = 0.0;
|
|
3529 temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does not use the N2_ratio
|
|
3530 float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142)
|
|
3531 float_saturation_multiplier = char_I_saturation_multiplier / 100.0;
|
|
3532
|
|
3533 calc_tissue_step_1_min(); // update the pressure in the 16 tissues in accordance with the new ambient pressure
|
|
3534 clear_decoarray();
|
|
3535 char_O_deco_status = 0;
|
|
3536 char_O_nullzeit = 0;
|
|
3537 char_O_ascenttime = 0;
|
|
3538 calc_gradient_factor();
|
|
3539
|
|
3540 } // calc_wo_deco_step_1_min(void)
|
|
3541
|
|
3542
|
|
3543 // -------------------------
|
|
3544 // calc_tissue_step_1_min //
|
|
3545 // -------------------------
|
|
3546 // optimized in v.101
|
|
3547
|
|
3548 void calc_tissue_step_1_min(void)
|
|
3549 {
|
|
3550 _asm
|
|
3551 lfsr 1, 0x300
|
|
3552 movlw 0x01
|
|
3553 movwf TBLPTRU,0
|
|
3554 _endasm
|
|
3555
|
|
3556 char_O_gtissue_no = 255;
|
|
3557 pres_gtissue_limit = 0.0;
|
|
3558
|
|
3559 for (ci=0;ci<16;ci++)
|
|
3560 {
|
|
3561 _asm
|
|
3562 movlw 0x02
|
|
3563 movwf TBLPTRH,0
|
|
3564 movlb 4 // fuer ci
|
|
3565 movf ci,0,1
|
|
3566 addwf ci,0,1
|
|
3567 addwf ci,0,1
|
|
3568 addwf ci,0,1
|
|
3569 addlw 0x80
|
|
3570 movwf TBLPTRL,0
|
|
3571 TBLRDPOSTINC
|
|
3572 movff TABLAT,var_a+1
|
|
3573 TBLRDPOSTINC
|
|
3574 movff TABLAT,var_a
|
|
3575 TBLRDPOSTINC
|
|
3576 movff TABLAT,var_a+3
|
|
3577 TBLRD
|
|
3578 movff TABLAT,var_a+2
|
|
3579 addlw 0x40
|
|
3580 movwf TBLPTRL,0
|
|
3581 TBLRDPOSTINC
|
|
3582 movff TABLAT,var2_a+1
|
|
3583 TBLRDPOSTINC
|
|
3584 movff TABLAT,var2_a
|
|
3585 TBLRDPOSTINC
|
|
3586 movff TABLAT,var2_a+3
|
|
3587 TBLRD
|
|
3588 movff TABLAT,var2_a+2
|
|
3589 addlw 0x40
|
|
3590 movwf TBLPTRL,0
|
|
3591 incf TBLPTRH,1,0
|
|
3592 TBLRDPOSTINC
|
|
3593 movff TABLAT,var_b+1
|
|
3594 TBLRDPOSTINC
|
|
3595 movff TABLAT,var_b
|
|
3596 TBLRDPOSTINC
|
|
3597 movff TABLAT,var_b+3
|
|
3598 TBLRD
|
|
3599 movff TABLAT,var_b+2
|
|
3600 addlw 0x40
|
|
3601 movwf TBLPTRL,0
|
|
3602 TBLRDPOSTINC
|
|
3603 movff TABLAT,var2_b+1
|
|
3604 TBLRDPOSTINC
|
|
3605 movff TABLAT,var2_b
|
|
3606 TBLRDPOSTINC
|
|
3607 movff TABLAT,var2_b+3
|
|
3608 TBLRD
|
|
3609 movff TABLAT,var2_b+2
|
|
3610 addlw 0xC0
|
|
3611 movwf TBLPTRL,0
|
|
3612 incf TBLPTRH,1,0
|
|
3613 TBLRDPOSTINC
|
|
3614 movff TABLAT,var_e1min+1
|
|
3615 TBLRDPOSTINC
|
|
3616 movff TABLAT,var_e1min
|
|
3617 TBLRDPOSTINC
|
|
3618 movff TABLAT,var_e1min+3
|
|
3619 TBLRD
|
|
3620 movff TABLAT,var_e1min+2
|
|
3621 addlw 0x40
|
|
3622 movwf TBLPTRL,0
|
|
3623 TBLRDPOSTINC
|
|
3624 movff TABLAT,var2_e1min+1
|
|
3625 TBLRDPOSTINC
|
|
3626 movff TABLAT,var2_e1min
|
|
3627 TBLRDPOSTINC
|
|
3628 movff TABLAT,var2_e1min+3
|
|
3629 TBLRD
|
|
3630 movff TABLAT,var2_e1min+2
|
|
3631 _endasm
|
|
3632
|
|
3633 // N2 1 min
|
|
3634 temp_tissue = (temp_atem - pres_tissue[ci]) * var_e1min;
|
|
3635 temp_tissue_safety();
|
|
3636 pres_tissue[ci] = pres_tissue[ci] + temp_tissue;
|
|
3637
|
|
3638 // He 1 min
|
|
3639 temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e1min;
|
|
3640 temp_tissue_safety();
|
|
3641 pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue;
|
|
3642
|
|
3643 temp_tissue = pres_tissue[ci] + pres_tissue[ci+16];
|
|
3644 var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue;
|
|
3645 var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue;
|
|
3646 pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b;
|
|
3647 if (pres_tissue_limit[ci] < 0)
|
|
3648 pres_tissue_limit[ci] = 0;
|
|
3649 if (pres_tissue_limit[ci] > pres_gtissue_limit)
|
|
3650 {
|
|
3651 pres_gtissue_limit = pres_tissue_limit[ci];
|
|
3652 char_O_gtissue_no = ci;
|
|
3653 }//if
|
|
3654
|
60
|
3655 if(!char_I_step_is_1min)
|
|
3656 {
|
|
3657 // gradient factor array for graphical display
|
|
3658 // display range is 0 to 250! in steps of 5 for 1 pixel
|
|
3659 // the display is divided in 6 blocks
|
|
3660 // -> double the gradient 100% = 200
|
|
3661 // tissue > respiration (entsaettigungsvorgang)
|
|
3662 // gradient ist wieviel prozent an limit von tissue aus
|
|
3663 // dh. 0% = respiration == tissue
|
|
3664 // dh. 100% = respiration == limit
|
|
3665 temp1 = temp_tissue - pres_respiration;
|
|
3666 temp2 = temp_tissue - pres_tissue_limit[ci]; // changed in v.102
|
|
3667 temp2 = temp1/temp2;
|
|
3668 temp2 = temp2 * 200; // because of output in (Double-)percentage
|
|
3669 if (temp2 < 0)
|
|
3670 temp2 = 0;
|
|
3671 if (temp2 > 255)
|
|
3672 temp2 = 255;
|
|
3673 if (temp1 < 0)
|
|
3674 char_O_array_gradient_weighted[ci] = 0;
|
|
3675 else
|
|
3676 char_O_array_gradient_weighted[ci] = (char)temp2;
|
|
3677 }
|
0
|
3678 } // for
|
|
3679 } // calc wo deco 1min
|
|
3680
|
|
3681 #if 0
|
|
3682 // --------
|
|
3683 // debug //
|
|
3684 // --------
|
|
3685 void debug(void)
|
|
3686 {
|
|
3687 for (ci=0;ci<32;ci++)
|
|
3688 {
|
|
3689 int_O_tissue_for_debug[ci] = (unsigned int)(pres_tissue[ci] *1000);
|
|
3690 }
|
|
3691 } // void debug(void)
|
|
3692 #endif
|
|
3693
|
|
3694 // ----------
|
|
3695 // md hash //
|
|
3696 // ----------
|
|
3697 void hash(void)
|
|
3698 {
|
|
3699 // init
|
|
3700 for (md_i=0;md_i<16;md_i++)
|
|
3701 {
|
|
3702 md_state[md_i] = 0;
|
|
3703 md_cksum[md_i] = 0;
|
|
3704 } // for md_i 16
|
|
3705
|
|
3706 _asm
|
|
3707 movlw 0x01
|
|
3708 movwf TBLPTRU,0
|
|
3709 movlw 0x06
|
|
3710 movwf TBLPTRH,0
|
|
3711 movlw 0x00
|
|
3712 movwf TBLPTRL,0
|
60
|
3713 _endasm;
|
0
|
3714 for (md_i=0;md_i<127;md_i++)
|
|
3715 {
|
|
3716 _asm
|
|
3717 TBLRDPOSTINC
|
|
3718 movff TABLAT,md_temp
|
|
3719 _endasm
|
|
3720 md_pi_subst[md_i] = md_temp;
|
|
3721 } // for md_i 256
|
|
3722 _asm
|
|
3723 TBLRDPOSTINC
|
|
3724 movff TABLAT,md_temp
|
60
|
3725 _endasm;
|
0
|
3726 md_pi_subst[127] = md_temp;
|
|
3727 for (md_i=0;md_i<127;md_i++)
|
|
3728 {
|
|
3729 _asm
|
|
3730 TBLRDPOSTINC
|
|
3731 movff TABLAT,md_temp
|
|
3732 _endasm
|
|
3733 md_pi_subst[md_i+128] = md_temp;
|
|
3734 } // for md_i 256
|
|
3735 _asm
|
|
3736 TBLRD
|
|
3737 movff TABLAT,md_temp
|
|
3738 _endasm
|
|
3739 md_pi_subst[255] = md_temp;
|
|
3740
|
|
3741 _asm
|
|
3742 movlw 0x00
|
|
3743 movwf TBLPTRU,0
|
|
3744 movlw 0x00
|
|
3745 movwf TBLPTRH,0
|
|
3746 movlw 0x00
|
|
3747 movwf TBLPTRL,0
|
|
3748 _endasm
|
|
3749 // cycle buffers
|
|
3750 for (md_pointer=0x0000;md_pointer<0x17f3;md_pointer++)
|
|
3751 {
|
|
3752 md_t = 0;
|
|
3753 for (md_i=0;md_i<16;md_i++)
|
|
3754 {
|
|
3755 if(md_pointer == 9)
|
|
3756 md_temp = md_cksum[md_i];
|
|
3757 else
|
|
3758 {
|
|
3759 _asm
|
|
3760 TBLRDPOSTINC
|
|
3761 movff TABLAT,md_temp
|
|
3762 _endasm
|
|
3763 } // else
|
|
3764 md_buffer[md_i] = md_temp;
|
|
3765 md_state[md_i+16] = md_buffer[md_i];
|
|
3766 md_state[md_i+32] = (unsigned char)(md_buffer[md_i] ^ md_state[md_i]);
|
|
3767 } // for md_i 16
|
|
3768
|
|
3769 for (md_i=0;md_i<18;md_i++)
|
|
3770 {
|
|
3771 for (md_j=0;md_j<48;md_j++)
|
|
3772 {
|
|
3773 md_state[md_j] = (unsigned char)(md_state[md_j] ^ md_pi_subst[md_t]);
|
|
3774 md_t = md_state[md_j];
|
|
3775 } // for md_j 48
|
|
3776 md_t = (unsigned char)(md_t+1);
|
|
3777 } // for md_i 18
|
|
3778 md_t = md_cksum[15];
|
|
3779
|
|
3780 for (md_i=0;md_i<16;md_i++)
|
|
3781 {
|
|
3782 md_cksum[md_i] = (unsigned char)(md_cksum[md_i] ^ md_pi_subst[(md_buffer[md_i] ^ md_t)]);
|
|
3783 md_t = md_cksum[md_i];
|
|
3784 } // for md_i 16
|
|
3785 } // for md_pointer
|
|
3786 } // void hash(void)
|
|
3787
|
|
3788 // ---------------------
|
|
3789 // clear_CNS_fraction //
|
|
3790 // ---------------------
|
|
3791 // new in v.101
|
|
3792
|
|
3793 void clear_CNS_fraction(void)
|
|
3794 {
|
|
3795 CNS_fraction = 0.0;
|
|
3796 char_O_CNS_fraction = 0;
|
|
3797 } // void clear_CNS_fraction(void)
|
|
3798
|
|
3799
|
|
3800 // --------------------
|
|
3801 // calc_CNS_fraction //
|
|
3802 // --------------------
|
|
3803 // new in v.101
|
|
3804 // optimized in v.102 : with new variables char_I_actual_ppO2 and actual_ppO2
|
|
3805
|
|
3806 // Input: char_I_actual_ppO2
|
|
3807 // Output: char_O_CNS_fraction
|
|
3808 // Uses and Updates: CNS_fraction
|
|
3809 // Uses: acutal_ppO2
|
|
3810
|
|
3811 void calc_CNS_fraction(void)
|
|
3812 {
|
|
3813 actual_ppO2 = (float)char_I_actual_ppO2 / 100.0;
|
|
3814
|
|
3815 if (char_I_actual_ppO2 < 50)
|
|
3816 CNS_fraction = CNS_fraction;// no changes
|
|
3817 else if (char_I_actual_ppO2 < 60)
|
|
3818 CNS_fraction = 1/(-54000.0 * actual_ppO2 + 54000.0) + CNS_fraction;
|
|
3819 else if (char_I_actual_ppO2 < 70)
|
|
3820 CNS_fraction = 1/(-45000.0 * actual_ppO2 + 48600.0) + CNS_fraction;
|
|
3821 else if (char_I_actual_ppO2 < 80)
|
|
3822 CNS_fraction = 1/(-36000.0 * actual_ppO2 + 42300.0) + CNS_fraction;
|
|
3823 else if (char_I_actual_ppO2 < 90)
|
|
3824 CNS_fraction = 1/(-27000.0 * actual_ppO2 + 35100.0) + CNS_fraction;
|
|
3825 else if (char_I_actual_ppO2 < 110)
|
|
3826 CNS_fraction = 1/(-18000.0 * actual_ppO2 + 27000.0) + CNS_fraction;
|
|
3827 else if (char_I_actual_ppO2 < 150)
|
|
3828 CNS_fraction = 1/(-9000.0 * actual_ppO2 + 17100.0) + CNS_fraction;
|
|
3829 else if (char_I_actual_ppO2 < 160)
|
|
3830 CNS_fraction = 1/(-22500.0 * actual_ppO2 + 37350.0) + CNS_fraction;
|
|
3831 else if (char_I_actual_ppO2 < 165)
|
|
3832 CNS_fraction = 0.000755 + CNS_fraction; // Arieli et all.(2002): Modeling pulmonary and CNS O2 toxicity... Formula (A1) based on value for 1.55 and c=20
|
|
3833 else if (char_I_actual_ppO2 < 170)
|
|
3834 CNS_fraction = 0.00102 + CNS_fraction; // example calculation: Sqrt((1.7/1.55)^20)*0.000404
|
|
3835 else if (char_I_actual_ppO2 < 175)
|
|
3836 CNS_fraction = 0.00136 + CNS_fraction;
|
|
3837 else if (char_I_actual_ppO2 < 180)
|
|
3838 CNS_fraction = 0.00180 + CNS_fraction;
|
|
3839 else if (char_I_actual_ppO2 < 185)
|
|
3840 CNS_fraction = 0.00237 + CNS_fraction;
|
|
3841 else if (char_I_actual_ppO2 < 190)
|
|
3842 CNS_fraction = 0.00310 + CNS_fraction;
|
|
3843 else if (char_I_actual_ppO2 < 195)
|
|
3844 CNS_fraction = 0.00401 + CNS_fraction;
|
|
3845 else if (char_I_actual_ppO2 < 200)
|
|
3846 CNS_fraction = 0.00517 + CNS_fraction;
|
|
3847 else if (char_I_actual_ppO2 < 230)
|
|
3848 CNS_fraction = 0.0209 + CNS_fraction;
|
|
3849 else
|
|
3850 CNS_fraction = 0.0482 + CNS_fraction; // value for 2.5
|
|
3851
|
|
3852 if (CNS_fraction > 2.5)
|
|
3853 CNS_fraction = 2.5;
|
|
3854 if (CNS_fraction < 0.0)
|
|
3855 CNS_fraction = 0.0;
|
|
3856 char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0);
|
|
3857 } // void calc_CNS_fraction(void)
|
|
3858
|
|
3859 // --------------------------
|
|
3860 // calc_CNS_decrease_15min //
|
|
3861 // --------------------------
|
|
3862 // new in v.101
|
|
3863
|
|
3864 // calculates the half time of 90 minutes in 6 steps of 15 min
|
|
3865
|
|
3866 // Output: char_O_CNS_fraction
|
|
3867 // Uses and Updates: CNS_fraction
|
|
3868
|
|
3869 void calc_CNS_decrease_15min(void)
|
|
3870 {
|
|
3871 CNS_fraction = 0.890899 * CNS_fraction;
|
|
3872 char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0);
|
|
3873 }// calc_CNS_decrease_15min(void)
|
|
3874
|
|
3875
|
|
3876 // ------------------
|
|
3877 // calc_percentage //
|
|
3878 // ------------------
|
|
3879 // new in v.101
|
|
3880
|
|
3881 // calculates int_I_temp * char_I_temp / 100
|
|
3882 // output is int_I_temp
|
|
3883
|
|
3884 void calc_percentage(void)
|
|
3885 {
|
|
3886 temp1 = (float)int_I_temp;
|
|
3887 temp2 = (float)char_I_temp / 100.0;
|
|
3888 temp3 = temp1 * temp2;
|
|
3889 int_I_temp = (int)temp3;
|
|
3890 }
|
|
3891 void push_tissues_to_vault(void)
|
|
3892 {
|
60
|
3893 cns_vault = CNS_fraction;
|
0
|
3894 for (ci=0;ci<32;ci++)
|
|
3895 pres_tissue_vault[ci] = pres_tissue[ci];
|
|
3896 }
|
|
3897 void pull_tissues_from_vault(void)
|
|
3898 {
|
60
|
3899 CNS_fraction = cns_vault;
|
0
|
3900 for (ci=0;ci<32;ci++)
|
|
3901 pres_tissue[ci] = pres_tissue_vault[ci];
|
|
3902 }
|
|
3903
|