# HG changeset patch # User heinrichsweikamp # Date 1263308848 -3600 # Node ID 210410f7c1b4ee0161a3e25040d70511a4cf735f # Parent 96a35aeda5f2d89d77df68a6c991aede7ab97d8f clean up diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/old/changes_log.txt --- a/code_part1/OSTC_code_c_part2/old/changes_log.txt Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -changes for v.101_C last deco: - -text_table_v111.asm : line 249 - DA "Last Deco [m]}" ;65 (entspricht CF29) - -menu_reset_v111.asm : -line 153 -#DEFINE last_deco_depth d'3' ; 8Bit 3m -line 253f - movlw LOW last_deco_depth - -divemode_v111.asm -line 421ff - GETCUSTOM8 d'29' ; Depth Last Deco in meter for simulation - movwf wait_temp - movff wait_temp,char_I_depth_last_deco - -definitions_v111.asm -line 302 - char_I_depth_last_deco; ; 0x51E new in v.101 diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/old/p2_deco_main - bigscreen.c --- a/code_part1/OSTC_code_c_part2/old/p2_deco_main - bigscreen.c Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3230 +0,0 @@ -/* - * p2_deco_main.c - * - * Created on: 31.08.2009 - * Author: christian.w @ heinrichsweikamp.com - * - */ - -//#include - -// OSTC - diving computer code -// Copyright (C) 2009 HeinrichsWeikamp GbR - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - - -// ***************************** -// ** I N T R O D U C T I O N ** -// ***************************** -// -// OSTC -// -// code: -// p2_deco_main_c_v101.c -// part2 of the OSTC code -// code with constant O2 partial pressure routines -// under construction !! -// -// summary: -// decompression routines -// for the OSTC experimental project -// written by Christian Weikamp -// last revision __________ -// comments added _________ -// -// additional files: -// p2_tables_v100.romdata (other files) -// 18f4685_ostc_v100.lkr (linker script) -// -// history: -// 01/03/08 v100: first release candidate -// 03/13/08 v101: start of programming ppO2 code -// 03/13/25 v101a: backup of interrim version with ppO2 calculation -// 03/13/25 v101: open circuit gas change during deco -// 03/13/25 v101: CNS_fraction calculation -// 03/13/26 v101: optimization of tissue calc routines -// 07/xx/08 v102a: debug of bottom time routine -// 09/xx/08 v102d: Gradient Factor Model implemenation -// 10/10/08 v104: renamed to build v103 for v118 stable -// 10/14/08 v104: integration of temp_depth_last_deco for Gradient Model -// 03/31/090 v107: integration of FONT Incon24 - -// -// literature: -// B"uhlmann, Albert: Tauchmedizin; 4. Auflage; -// 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 -// Morrison, Stuart; 2000; DIY DECOMPRESSION; http://www.lizardland.co.uk/DIYDeco.html -// Balthasar, Steffen; Dekompressionstheorie I: Neo Haldane Modelle; http://www.txfreak.de/dekompressionstheorie_1.pdf -// Baker, Erik C.; Clearing Up The Confusion About "Deep Stops" -// Baker, Erik C.; Understanding M-values; http://www.txfreak.de/understanding_m-values.pdf - - -// ********************* -// ** I N C L U D E S ** -// ********************* - #include - #include - -// ******************************** -// ** C O N F I G U R A T I O N ** -// ** for simulation without asm ** -// ******************************** - #pragma config OSC = IRCIO67 - #pragma config FCMEN = OFF - #pragma config IESO = OFF - #pragma config PWRT = ON - #pragma config BOREN = OFF - #pragma config WDT = OFF - #pragma config WDTPS = 128 - #pragma config MCLRE = ON - #pragma config LPT1OSC = OFF - #pragma config PBADEN = OFF - #pragma config DEBUG = OFF - #pragma config XINST = OFF - #pragma config LVP = OFF - #pragma config STVREN = OFF - -// **************************** -// ** D E F I N E S ** -// ** missing in p18f4685.h ** -// **************************** -#define INT0IF 1 -#define INT1IF 0 -#define TMR1IF 0 - - -# define DBG_c_gas 0b0000000000000001 -# define DBG_c_ppO2 0b0000000000000010 -# define DBG_RUN 0b0000000000000100 -# define DBG_RESTART 0b0000000000001000 - -# define DBG_CdeSAT 0b0000000000010000 -# define DBG_C_MODE 0b0000000000100000 -# define DBG_C_SURF 0b0000000001000000 -# define DBG_HEwoHE 0b0000000010000000 - -# define DBG_C_DPPO2 0b0000000100000000 -# define DBG_C_DGAS 0b0000001000000000 -# define DBG_C_DIST 0b0000010000000000 -# define DBG_C_LAST 0b0000100000000000 - -# define DBG_C_GF 0b0001000000000000 -# define DBG_ZH16ERR 0b0010000000000000 -# define DBG_PHIGH 0b0100000000000000 -# define DBG_PLOW 0b1000000000000000 - - -# define DBS_mode 0b0000000000000001 -# define DBS_ppO2 0b0000000000000010 -# define DBS_HE_sat 0b0000000000000100 -# define DBS_ppO2chg 0b0000000000001000 - -# define DBS_SAT2l 0b0000000000010000 -# define DBS_SAT2h 0b0000000000100000 -# define DBS_GFLOW2l 0b0000000001000000 -# define DBS_GFLOW2h 0b0000000010000000 - -# define DBS_GFHGH2l 0b0000000100000000 -# define DBS_GFHGH2h 0b0000001000000000 -# define DBS_GASO22l 0b0000010000000000 -# define DBS_GASO22h 0b0000100000000000 - -# define DBS_DIST2h 0b0001000000000000 -# define DBS_LAST2h 0b0010000000000000 -# define DBS_DECOO2l 0b0100000000000000 -# define DBS_DECOO2h 0b1000000000000000 - - -# define DBS2_PRES2h 0b0000000000000001 -# define DBS2_PRES2l 0b0000000000000010 -# define DBS2_SURF2l 0b0000000000000100 -# define DBS2_SURF2h 0b0000000000001000 - -# define DBS2_DESAT2l 0b0000000000010000 -# define DBS2_DESAT2h 0b0000000000100000 -# define DBS2_GFDneg 0b0000000001000000 -# define DBS2_ 0b000000000000000 - -# define DBS2_ 0b000000000000000 -# define DBS2_ 0b000000000000000 -# define DBS2_ 0b000000000000000 -# define DBS2_ 0b000000000000000 - -// NDL_at_20mtr - - - -// *********************** -// ** V A R I A B L E S ** -// *********************** -// prefixes etc: -// _O_ = output for use in the assembler code -// _I_ = input from the assembler code for the c code -// char_ and int_ = used to identify output and input size -// var = variable (from b"uhlmann) -// pres = pressure -// gtissue = guiding tissue, the one limiting the ascent -// e2secs = exp of the b"uhlmann formula precalculated for a 2 second step -// e1min = same for 1 minute step -// sim = used in simulating the ascent to the surface -// nullzeit = remaining ground/bottom time for "no deco" -// hauptroutine = main - -#define WP_SIZECHAR_SMALL 336 -#define WP_SIZECHAR_MEDIUM 768 -#define WP_FONT_SMALL_HEIGHT 24 -#define WP_FONT_MEDIUM_HEIGHT 32 - -#define oled_rw PORTA,2,0 -#define oled_rs PORTE,0,0 - -#define U8 unsigned char -#define U16 unsigned int - -#pragma udata bank0a=0x060 -/* - CBLOCK 0x060 ;Bank 0 - letter:.026 ;letter buffer - win_color1 - win_color2 - win_top - win_leftx2 - win_font - win_invert - win_temp -*/ - -volatile unsigned char wp_stringstore[26]; -volatile U8 wp_color1; -volatile U8 wp_color2; -volatile U8 wp_top; -volatile U8 wp_leftx2; -volatile U8 wp_font; -volatile U8 wp_invert; -volatile U8 wp_temp_U8; - -#pragma udata bank0b=0x081 -volatile unsigned char keep_free_bank0_1[5]; - -#pragma udata bank0c=0x086 -U8 wp_txtptr; -unsigned char wp_char; -U8 wp_command; -U16 wp_data_16bit; -U8 wp_data_8bit_one; -U8 wp_data_8bit_two; -U16 wp_start; -U16 wp_end; -U16 wp_i; -U8 wp_black; - -#pragma udata bank0d=0x0E0 -volatile unsigned char keep_free_bank0_2[32]; - -/* -volatile unsigned char dd2_left; // 1 - 64 -volatile unsigned char dd2_top; // 1 - 64 -volatile unsigned char dd2_heightmax; // 1 - 37 -volatile unsigned char dd2_oled_brightness_offset; // 0 - 15 (15 is pitch black always) -volatile unsigned char dd2_fontwidth; // 8, 12, 21 for Incon16, Incon24, Incon42 -volatile unsigned char dd2_fontheight; // 14, 21, 37 for " -volatile unsigned long dd2_pointer; // for font lut -volatile unsigned char dd2_i; -volatile unsigned char dd2_j; -volatile unsigned char dd2_k; -volatile unsigned char dd2_char; -volatile unsigned char dd2_lowbyte; -volatile unsigned char dd2_temp; -volatile unsigned char dd2_data; -volatile unsigned long dd2_base; // for font lut -volatile unsigned char dd2_start; // for font lut -volatile unsigned char dd2_end; // for font lut -*/ - - #pragma udata bank1=0x100 - const unsigned char keep_free_bank1[256]; // used by the assembler code - - #pragma udata bank2a=0x200 -// output: - static unsigned int int_O_tissue_for_debug[32]; - static unsigned int int_O_GF_spare____; // 0x240 - static unsigned int int_O_GF_step; // 0x242 - static unsigned int int_O_gtissue_limit; // 0x244 - static unsigned int int_O_gtissue_press; // 0x246 - static unsigned int int_O_limit_GF_low; // 0x248 - static unsigned int int_O_gtissue_press_at_GF_low; // 0x24A -// ... - #pragma udata bank2b=0x24E - static unsigned char char_O_GF_low_pointer; // 0x24E - static unsigned char char_O_actual_pointer; // 0x24F - #pragma udata bank2c=0x250 - static unsigned char char_O_deco_table[32]; // 0x250 - #pragma udata bank2d=0x270 - static unsigned char char_I_table_deco_done[32]; - #pragma udata bank2e=0x290 - static unsigned int int_O_calc_tissue_call_counter; // 0x290 -// internal: - unsigned char lock_GF_depth_list; - static float temp_limit; - static float GF_low; - static float GF_high; - static float GF_delta; - static float GF_temp; - static float GF_step; - static float GF_step2; - static float temp_pres_gtissue; - static float temp_pres_gtissue_diff; - static float temp_pres_gtissue_limit_GF_low; - static float temp_pres_gtissue_limit_GF_low_below_surface; - static unsigned int temp_depth_limit; - static unsigned char temp_decotime; - static unsigned char temp_gtissue_no; - static unsigned int temp_depth_last_deco; // new in v.101 - - static unsigned char temp_depth_GF_low_meter; - static unsigned char temp_depth_GF_low_number; - static unsigned char internal_deco_pointer; - static unsigned char internal_deco_table[32]; - static float temp_pres_deco_GF_low; - -static unsigned int debug_temp; - - -#pragma udata bank3a=0x300 -static char output[32]; -// used by the math routines -#pragma udata bank3b=0x380 -volatile float pres_tissue_vault[32]; - #pragma udata bank4a=0x400 -// internal: - unsigned char ci ; // don't move - used in _asm routines - if moved then modify movlb commands - unsigned char x; - unsigned int main_i; - unsigned int int_temp; - unsigned int int_temp_decostatus; - static float pres_respiration; - static float pres_surface; - static float temp1; - static float temp2; - static float temp3; - static float temp4; - static float temp_deco; - static float temp_atem; - static float temp2_atem; - static float temp_tissue; - static float temp_surface; - static float N2_ratio; - static float He_ratio; - static float temp_ratio; - static float var_a; - static float var2_a; - static float var_b; - static float var2_b; - static float var_t05nc; - static float var2_t05nc; - static float var_e2secs; - static float var2_e2secs; - static float var_e1min; - static float var2_e1min; - static float var_halftimes; - static float var2_halftimes; - static float pres_gtissue_limit; - static float temp_pres_gtissue_limit; - static float actual_ppO2; // new in v.102 - #pragma udata bank4b=0x480 - static float pres_tissue[32]; - - #pragma udata bank5=0x500 -// don't move positions in this bank, the registers are addressed directly from assembler code -// input: - static unsigned int int_I_pres_respiration; // 0x500 - static unsigned int int_I_pres_surface; // 0x502 - static unsigned int int_I_temp; // 0x504 new in v101 - static unsigned char char_I_temp; // 0x506 new in v101 - static unsigned char char_I_actual_ppO2; // 0x507 - static unsigned int int_I_spare_3; - static unsigned int int_I_spare_4; - static unsigned int int_I_spare_5; - static unsigned int int_I_spare_6; - static unsigned char char_I_N2_ratio; // 0x510 - static unsigned char char_I_He_ratio; // 0x511 - static unsigned char char_I_saturation_multiplier; // for conservatism/safety values 1.0 (no conservatism) to 1.5 (50% faster saturation - 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() - static unsigned char char_I_GF_High_percentage; // 0x514 new in v.102 - static unsigned char char_I_GF_Low_percentage; // 0x515 new in v.102 - static unsigned char char_I_spare; // 0x516 - static unsigned char char_I_deco_distance; // 0x517 - static unsigned char char_I_const_ppO2; // 0x518 new in v.101 - static unsigned char char_I_deco_ppO2_change; // 0x519 new in v.101 - static unsigned char char_I_deco_ppO2; // 0x51A new in v.101 - static unsigned char char_I_deco_gas_change; // 0x51B new in v.101 - static unsigned char char_I_deco_N2_ratio; // 0x51C new in v.101 - static unsigned char char_I_deco_He_ratio; // 0x51D new in v.101 - static unsigned char char_I_depth_last_deco; // 0x51E new in v.101 unit: [m] - static unsigned char char_I_deco_model; // 0x51F new in v.102 ( 1 = MultiGraF, sonst Std. mit (de-)saturation_multiplier) -// output: - static unsigned int int_O_desaturation_time; // 0x520 - static unsigned char char_O_nullzeit; // 0x522 - static unsigned char char_O_deco_status; // 0x523 - static unsigned char char_O_array_decotime[7]; // 0x524 - static unsigned char char_O_array_decodepth[6]; // 0x52B - static unsigned char char_O_ascenttime; // 0x531 - static unsigned char char_O_gradient_factor; // 0x532 - static unsigned char char_O_tissue_saturation[32]; // 0x533 - static unsigned char char_O_array_gradient_weighted[16]; // 0x553 - static unsigned char char_O_gtissue_no; // 0x563 - static unsigned char char_O_diluent; // 0x564 new in v.101 - static unsigned char char_O_CNS_fraction; // 0x565 new in v.101 - static unsigned char char_O_relative_gradient_GF; // 0x566 new in v.102 - -// internal: - static float pres_tissue_limit[16]; - static float sim_pres_tissue_limit[16]; - static float pres_diluent; // new in v.101 - static float deco_diluent; // new in v.101 - static float const_ppO2; // new in v.101 - static float deco_ppO2_change; // new in v.101 - static float deco_ppO2; // new in v.101 - - - - #pragma udata bank6=0x600 -// internal: - static float sim_pres_tissue[32]; - static float sim_pres_tissue_backup[32]; - - #pragma udata bank7=0x700 - const unsigned char keep_free_bank7[256]; // used by the assembler code (DD font2display) - - #pragma udata bank8=0x800 - static char md_pi_subst[256]; - - #pragma udata bank9a=0x900 -// output: - static char md_state[48]; // DONT MOVE !! // has to be at the beginning of bank 9 for the asm code!!! - #pragma udata bank9b=0x930 -// output: - static unsigned int int_O_DBS_bitfield; // 0x930 new in v.108 - static unsigned int int_O_DBS2_bitfield; // 0x932 new in v.108 - static unsigned int int_O_DBG_pre_bitfield; // 0x934 new in v.108 - static unsigned int int_O_DBG_post_bitfield; // 0x936 new in v.108 - static char char_O_NDL_at_20mtr; // 0x938 new in v.108 // 0xFF == undefined, max. 254 -// internal: - static char md_t; - static char md_buffer[16]; - static char md_cksum[16]; - static char md_i; - static char md_j; - static char md_temp; - static unsigned int md_pointer; - static float deco_N2_ratio; // new in v.101 - static float deco_He_ratio; // new in v.101 - static float calc_N2_ratio; // new in v.101 - static float calc_He_ratio; // new in v.101 - static float deco_gas_change; // new in v.101 - static float CNS_fraction; // new in v.101 - static float float_saturation_multiplier; // new in v.101 - static float float_desaturation_multiplier; // new in v.101 - static float float_deco_distance; // new in v.101 -// internal, dbg: - static unsigned char DBG_char_I_deco_model; // new in v.108 - static unsigned char DBG_char_I_depth_last_deco; // new in v.108 - static float DBG_pres_surface; // new in v.108 - static float DBG_GF_low; // new in v.108 - static float DBG_GF_high; // new in v.108 - static float DBG_const_ppO2; // new in v.108 - static float DBG_deco_ppO2_change; // new in v.108 - static float DBG_deco_ppO2; // new in v.108 - static float DBG_deco_N2_ratio; // new in v.108 - static float DBG_deco_He_ratio; // new in v.108 - static float DBG_deco_gas_change; // new in v.108 - static float DBG_float_saturation_multiplier; // new in v.108 - static float DBG_float_desaturation_multiplier; // new in v.108 - static float DBG_float_deco_distance; // new in v.108 - static float DBG_deco_N2_ratio; // new in v.108 - static float DBG_deco_He_ratio; // new in v.108 - static float DBG_N2_ratio; // new in v.108 - static float DBG_He_ratio; // new in v.108 - static char flag_in_divemode; // new in v.108 - static int int_dbg_i; // new in v.108 - unsigned int temp_DBS; - -// ************************* -// ** P R O T O T Y P E S ** -// ************************* -void main_calc_hauptroutine(void); -void main_calc_without_deco(void); -void main_clear_tissue(void); -void main_calc_percentage(void); -void main_calc_wo_deco_step_1_min(void); -void main_debug(void); -void main_gradient_array(void); -void main_hash(void); - -void calc_hauptroutine(void); -void calc_tissue(void); -void calc_nullzeit(void); -void backup_sim_pres_tissue(void); -void restore_sim_pres_tissue(void); - -void calc_without_deco(void); -void clear_tissue(void); -void calc_ascenttime(void); -void update_startvalues(void); -void clear_decoarray(void); -void update_decoarray(void); -void sim_tissue_1min(void); -void sim_tissue_10min(void); -void calc_gradient_factor(void); -void calc_gradient_array_only(void); -void calc_desaturation_time(void); -void calc_wo_deco_step_1_min(void); -void calc_tissue_step_1_min(void); -void hash(void); -void clear_CNS_fraction(void); -void calc_CNS_fraction(void); -void calc_CNS_decrease_15min(void); -void calc_percentage(void); -void main(void); -void calc_hauptroutine_data_input(void); -void calc_hauptroutine_update_tissues(void); -void calc_hauptroutine_calc_deco(void); -void calc_hauptroutine_calc_ascend_to_deco(void); -void calc_nextdecodepth_GF(void); -void copy_deco_table_GF(void); -void clear_internal_deco_table_GF(void); -void update_internal_deco_table_GF(void); -void DD2_write(void); -void DD2_write_incon42(void); -void DD2_get_pointer_to_char(void); -void DD2_set_column(void); -void DD2_load_background(void); -void DD2_build_one_line_of_char(void); -void DD2_print_column(void); -void DD2_CmdWrite(void); -void DD2_DataWrite(void); -void push_tissues_to_vault(void); -void pull_tissues_from_vault(void); -void main_push_tissues_to_vault(void); -void main_pull_tissues_from_vault(void); -void wordprocessor(void); - -// ******************************* -// ** start ** -// ** necessary for compilation ** -// ******************************* -#pragma romdata der_code = 0x0000 -#pragma code der_start = 0x0000 -void der_start(void) -{ -_asm - goto main -_endasm -} - -// *********************************** -// ** main code for simulation / ** -// ** tests without assembler code ** -// ** is NOT a part of the OSTC ** -// *********************************** -#pragma code main = 0x9000 -void main(void) -{ -#if 1 -// new main to test DR-5 - -wp_top = 10; -wp_leftx2 = 10; -wp_color1 = 255; -wp_color2 = 255; -wp_font = 0; -wp_invert = 0; -wp_stringstore[0] = '°'; -wp_stringstore[1] = '1'; -wp_stringstore[2] = 'a'; -wp_stringstore[3] = ':'; -wp_stringstore[4] = 0; -wordprocessor(); - -GF_low = 1.0; -GF_high = 1.0; - -GF_temp = GF_low * GF_high; - -clear_CNS_fraction(); -//char_I_const_ppO2 = 100; -//for (main_i=0;main_i<255;main_i++) -//{ -//calc_CNS_fraction(); -//} //for - - - - -int_I_pres_respiration = 1000;//980; -int_I_pres_surface = 1000;//980; -char_I_N2_ratio = 39; //38; -char_I_He_ratio = 40; //50; -char_I_deco_distance = 0; // 10 = 1 meter -char_I_depth_last_deco = 3; // values below 3 (meter) are ignored - -char_I_const_ppO2 = 0; -char_I_deco_ppO2_change = 0; // [dm] 10 = 1 meter -char_I_deco_ppO2 = 0; - -char_I_deco_gas_change = 0; // [m] 1 = 1 meter -char_I_deco_N2_ratio = 0; -char_I_deco_He_ratio = 0; - -//char_I_actual_ppO2; // 0x507 -char_I_GF_High_percentage = 100; // 0x514 new in v.102 -char_I_GF_Low_percentage = 100; // 0x515 new in v.102 - -char_I_saturation_multiplier = 110; -char_I_desaturation_multiplier = 90; - -char_I_deco_model = 0; - -main_clear_tissue(); - -int_I_pres_respiration = 1000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 3000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 5000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); - -/* -int_I_pres_respiration = 6000 + int_I_pres_surface; -for (main_i=0;main_i<27;main_i++) - main_calc_wo_deco_step_1_min(); -*/ - -char_O_deco_status = 255; -while (char_O_deco_status) - main_calc_hauptroutine(); -_asm -nop -_endasm - -for (main_i=0;main_i<50;main_i++) -{ -main_calc_hauptroutine(); -} -int_I_pres_respiration = 10000; -for (main_i=0;main_i<1500;main_i++) -{ -main_calc_hauptroutine(); -} - -_asm -nop -_endasm - - -int_I_pres_respiration = 3000; -for (main_i=0;main_i<150;main_i++) -{ - calc_hauptroutine_data_input(); - calc_hauptroutine_update_tissues(); -} //for - - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -for (main_i=0;main_i 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -_asm -nop -_endasm -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -debug_temp = debug_temp * 3; -for (main_i=0;main_i 1.3) - int_O_DBS_bitfield |= DBS_SAT2h; - if(GF_low < 0.19) - int_O_DBS_bitfield |= DBS_GFLOW2l; - if(GF_low > 1.01) - int_O_DBS_bitfield |= DBS_GFLOW2h; - if(GF_high < 0.6) - int_O_DBS_bitfield |= DBS_GFHGH2l; - if(GF_high > 1.01) - int_O_DBS_bitfield |= DBS_GFHGH2h; - if((N2_ratio + He_ratio) > 0.95) - int_O_DBS_bitfield |= DBS_GASO22l; - if((N2_ratio + He_ratio) < 0.05) - int_O_DBS_bitfield |= DBS_GASO22h; - if(float_deco_distance > 0.25) - int_O_DBS_bitfield |= DBS_DIST2h; - if(char_I_depth_last_deco > 8) - int_O_DBS_bitfield |= DBS_LAST2h; - if(DBG_deco_gas_change && ((deco_N2_ratio + deco_He_ratio) > 0.95)) - int_O_DBS_bitfield |= DBS_DECOO2l; - if(DBG_deco_gas_change && ((deco_N2_ratio + deco_He_ratio) < 0.05)) - int_O_DBS_bitfield |= DBS_DECOO2h; - if(pres_respiration > 3.0) - int_O_DBS2_bitfield |= DBS2_PRES2h; - if(pres_surface - pres_respiration > 0.2) - int_O_DBS2_bitfield |= DBS2_PRES2l; - if(pres_surface < 0.75) - int_O_DBS2_bitfield |= DBS2_SURF2l; - if(pres_surface > 1.11) - int_O_DBS2_bitfield |= DBS2_SURF2h; - if(float_desaturation_multiplier < 0.70) - int_O_DBS2_bitfield |= DBS2_DESAT2l; - if(float_desaturation_multiplier > 1.01) - int_O_DBS2_bitfield |= DBS2_DESAT2h; - if(GF_low > GF_high) - int_O_DBS2_bitfield |= DBS2_GFDneg; -} - -// ------------------------------- -// DBG - set DBG to end_of_dive // -// ------------------------------- -void set_dbg_end_of_dive(void) -{ - int_O_DBG_pre_bitfield &= (~DBG_RUN); - int_O_DBG_post_bitfield &= (~DBG_RUN); -} - -// ------------------------------- -// DBG - NDL at first 20 m. hit // -// ------------------------------- -void check_ndl(void) -{ - if((char_O_NDL_at_20mtr == -1) && (int_I_pres_respiration > 3000)) - { - char_O_NDL_at_20mtr = char_O_nullzeit; - if(char_O_NDL_at_20mtr == 255) - char_O_NDL_at_20mtr == 254; - } -} - -// ------------------------------- -// DBG - multi main during dive // -// ------------------------------- -void check_dbg(char is_post_check) -{ - temp_DBS = 0; - if( (DBG_N2_ratio != N2_ratio) || (DBG_He_ratio != He_ratio) ) - temp_DBS |= DBG_c_gas; - if(DBG_const_ppO2 != const_ppO2) - temp_DBS |= DBG_c_ppO2; - if((DBG_float_saturation_multiplier != float_saturation_multiplier) || (DBG_float_desaturation_multiplier != float_desaturation_multiplier)) - temp_DBS |= DBG_CdeSAT; - if(DBG_char_I_deco_model != char_I_deco_model) - temp_DBS |= DBG_C_MODE; - if(DBG_pres_surface != pres_surface) - temp_DBS |= DBG_C_SURF; - if((!DBS_HE_sat) && (!He_ratio)) - for(int_dbg_i = 16; int_dbg_i < 32; int_dbg_i++) - if(pres_tissue[int_dbg_i]) - temp_DBS |= DBG_HEwoHE; - if(DBG_deco_ppO2 != deco_ppO2) - temp_DBS |= DBG_C_DPPO2; - if((DBG_deco_gas_change != deco_gas_change) || (DBG_deco_N2_ratio != deco_N2_ratio) || (DBG_deco_He_ratio != deco_He_ratio)) - temp_DBS |= DBG_C_DGAS; - if(DBG_float_deco_distance != float_deco_distance) - temp_DBS |= DBG_C_DIST; - if(DBG_char_I_depth_last_deco != char_I_depth_last_deco) - temp_DBS |= DBG_C_LAST; - if((DBG_GF_low != GF_low) || (DBG_GF_high != GF_high)) - temp_DBS |= DBG_C_GF; - if(pres_respiration > 13.0) - temp_DBS |= DBG_PHIGH; - if(pres_surface - pres_respiration > 0.2) - temp_DBS |= DBG_PLOW; -/* - if() - temp_DBS |= ; - if() - temp_DBS |= ; - */ - if(is_post_check) - int_O_DBG_post_bitfield |= temp_DBS; - else - int_O_DBG_pre_bitfield |= temp_DBS; -} - -// ------------------------------- -// DBG - prior to calc. of dive // -// ------------------------------- -void check_pre_dbg(void) -{ - check_dbg(0); -} - -// ------------------------------- -// DBG - after decocalc of dive // -// ------------------------------- -void check_post_dbg(void) -{ - check_dbg(1); -} - - - -// ------------------------- -// calc_next_decodepth_GF // -// ------------------------- -// new in v.102 -void calc_nextdecodepth_GF(void) -{ -// INPUT, changing during dive: -// temp_pres_gtissue_limit_GF_low -// temp_pres_gtissue_limit_GF_low_below_surface -// temp_pres_gtissue -// temp_pres_gtissue_diff -// lock_GF_depth_list - -// INPUT, fixed during dive: -// pres_surface -// GF_delta -// GF_high -// GF_low -// temp_depth_last_deco -// float_deco_distance - -// OUTPUT -// GF_step -// temp_deco -// temp_depth_limt -// lock_GF_depth_list - -// USES -// temp1 -// temp2 -// int_temp - - char_I_table_deco_done[0] = 0; // safety if changed somewhere else. Needed for exit - if (char_I_deco_model == 1) - { - if (lock_GF_depth_list == 0) - { - temp2 = temp_pres_gtissue_limit_GF_low_below_surface / 0.29985; // = ... / 99.95 / 0.003; - int_temp = (int) (temp2 + 0.99); - if (int_temp > 31) - int_temp = 31; // deepest deco at 93 meter (31 deco stops) - if (int_temp < 0) - int_temp = 0; - temp_depth_GF_low_number = int_temp; - temp_depth_GF_low_meter = 3 * temp_depth_GF_low_number; - temp2 = (float)temp_depth_GF_low_meter * 0.09995; - temp_pres_deco_GF_low = temp2 + float_deco_distance + pres_surface; - if (temp_depth_GF_low_number == 0) - GF_step = 0; - else - GF_step = GF_delta / (float)temp_depth_GF_low_number; - if (GF_step < 0) - GF_step = 0; - if (GF_step > GF_delta) - GF_step = GF_delta; - int_O_GF_step = (int)(GF_step * 10000); - int_O_limit_GF_low = (int)(temp_pres_deco_GF_low * 1000); - int_O_gtissue_press_at_GF_low = (int)(temp_pres_gtissue * 1000); - char_O_GF_low_pointer = temp_depth_GF_low_number; - lock_GF_depth_list = 1; - internal_deco_pointer = 0; - } - if (internal_deco_pointer == 0) // new run - { - internal_deco_pointer = temp_depth_GF_low_number; - GF_temp = GF_high - ((float)internal_deco_pointer * GF_step); - int_temp = char_I_table_deco_done[internal_deco_pointer]; - output[8] = int_temp; - output[9] = 33; - } - else - { - int_temp = 1; - } - while (int_temp == 1) - { - int_temp = internal_deco_pointer - 1; - if (int_temp == 1) // new in v104 - { - temp2 = (float)(temp_depth_last_deco * int_temp) * 0.09995; - GF_step2 = GF_step/3.0 * ((float)(6 - temp_depth_last_deco)); - } - else - if (int_temp == 0) - { - temp2 = 0.0; - GF_step2 = GF_high - GF_temp; - } - else - { - temp2 = (float)(3 *int_temp) * 0.09995; - GF_step2 = GF_step; - } - temp2 = temp2 + pres_surface; // next deco stop to be tested - temp1 = ((GF_temp + GF_step2)* temp_pres_gtissue_diff) + temp_pres_gtissue; // upper limit (lowest pressure allowed) // changes GF_step2 in v104 - if (temp1 > temp2) // check if ascent to next deco stop is ok - { - int_temp = 0; // no - } - else - { - internal_deco_pointer = int_temp; - GF_temp = GF_temp + GF_step2; // changed in v104 - int_temp = char_I_table_deco_done[internal_deco_pointer]; // yes and check for ascent to even next stop if deco_done is set - } - } // while - if (internal_deco_pointer > 0) - { - temp2 = (float)(0.29985 * internal_deco_pointer); - temp_deco = temp2 + float_deco_distance + pres_surface; - if (internal_deco_pointer == 1) // new in v104 - temp_depth_limit = temp_depth_last_deco; - else - temp_depth_limit = 3 * internal_deco_pointer; - if (output[9] == 33) - { - output[9] = internal_deco_pointer; - output[10] = char_I_table_deco_done[internal_deco_pointer]; - output[12] = output[12] + 1; - if (output[12] == 100) - output[12] = 0; - } - } - else // if (char_I_deco_model == 1) - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } - } - else - { - // calc_nextdecodepth - original - // optimized in v.101 - // depth_last_deco included in v.101 - - temp1 = temp_pres_gtissue_limit - pres_surface; - if (temp1 >= 0) - { - temp1 = temp1 / 0.29985; // = temp1 / 99.95 / 0.003; - temp_depth_limit = (int) (temp1 + 0.99); - temp_depth_limit = 3 * temp_depth_limit; // depth for deco [m] - if (temp_depth_limit == 0) - temp_deco = pres_surface; - else - { - if (temp_depth_limit < temp_depth_last_deco) - temp_depth_limit = temp_depth_last_deco; - temp1 = (float)temp_depth_limit * 0.09995; - temp_deco = temp1 + float_deco_distance + pres_surface; // depth for deco [bar] - } // if (temp_depth_limit == 0) - } // if (temp1 >= 0) - else - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } // if (temp1 >= 0) - } // calc_nextdecodepth original -} // calc_nextdecodepth_GF - - -#if 0 -void build_debug_output(void) -{ -output[0] = 0; // not used in asm PLED output -output[1] = (int) (GF_low * 100); -output[2] = (int) (GF_high * 100); -output[3] = (int) (GF_step * 100); -output[4] = (int) temp_depth_GF_low_number; -output[5] = (int) temp_depth_GF_low_meter; -//output[6] -output[7] = (int) internal_deco_pointer; -//output[8] = char_I_table_deco_done[temp_depth_GF_low_number] -//output[9] = internal_deco_pointer @ new run -//output[10] = char_I_table_deco_done[internal_deco_pointer] @ new run -output [11] = (int) (temp_pres_deco_GF_low * 10); -} // build_debug_output -#endif - -// --------------------- -// copy_deco_table_GF // -// --------------------- -// new in v.102 -void copy_deco_table_GF(void) -{ - if (char_I_deco_model == 1) - { - int_temp = 32; - for (ci=0;ci // new table for deco_main_v.101 (var_a modified) - -#pragma romdata tables2 = 0x10600 -rom const rom unsigned int md_pi[] = -{ - 0x292E, 0x43C9, 0xA2D8, 0x7C01, 0x3D36, 0x54A1, 0xECF0, 0x0613 - , 0x62A7, 0x05F3, 0xC0C7, 0x738C, 0x9893, 0x2BD9, 0xBC4C, 0x82CA - , 0x1E9B, 0x573C, 0xFDD4, 0xE016, 0x6742, 0x6F18, 0x8A17, 0xE512 - , 0xBE4E, 0xC4D6, 0xDA9E, 0xDE49, 0xA0FB, 0xF58E, 0xBB2F, 0xEE7A - , 0xA968, 0x7991, 0x15B2, 0x073F, 0x94C2, 0x1089, 0x0B22, 0x5F21 - , 0x807F, 0x5D9A, 0x5A90, 0x3227, 0x353E, 0xCCE7, 0xBFF7, 0x9703 - , 0xFF19, 0x30B3, 0x48A5, 0xB5D1, 0xD75E, 0x922A, 0xAC56, 0xAAC6 - , 0x4FB8, 0x38D2, 0x96A4, 0x7DB6, 0x76FC, 0x6BE2, 0x9C74, 0x04F1 - , 0x459D, 0x7059, 0x6471, 0x8720, 0x865B, 0xCF65, 0xE62D, 0xA802 - , 0x1B60, 0x25AD, 0xAEB0, 0xB9F6, 0x1C46, 0x6169, 0x3440, 0x7E0F - , 0x5547, 0xA323, 0xDD51, 0xAF3A, 0xC35C, 0xF9CE, 0xBAC5, 0xEA26 - , 0x2C53, 0x0D6E, 0x8528, 0x8409, 0xD3DF, 0xCDF4, 0x4181, 0x4D52 - , 0x6ADC, 0x37C8, 0x6CC1, 0xABFA, 0x24E1, 0x7B08, 0x0CBD, 0xB14A - , 0x7888, 0x958B, 0xE363, 0xE86D, 0xE9CB, 0xD5FE, 0x3B00, 0x1D39 - , 0xF2EF, 0xB70E, 0x6658, 0xD0E4, 0xA677, 0x72F8, 0xEB75, 0x4B0A - , 0x3144, 0x50B4, 0x8FED, 0x1F1A, 0xDB99, 0x8D33, 0x9F11, 0x8314 -}; - -// ********************* -// ********************* -// ** THE SUBROUTINES ** -// ********************* -// ********************* - -#pragma code subroutines = 0x10700 // can be adapted to fit the romdata tables ahead - - -// --------------- -// CLEAR tissue // -// --------------- -// optimized in v.101 (var_a) - -void clear_tissue(void) // preload tissues with standard pressure for the given ambient pressure -{ - - flag_in_divemode = 0; - int_O_DBS_bitfield = 0; - int_O_DBS2_bitfield = 0; - int_O_DBG_pre_bitfield = 0; - int_O_DBG_post_bitfield = 0; - char_O_NDL_at_20mtr = 255; - -_asm -lfsr 1, 0x300 // C math routines shall use this variable bank -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -// N2_ratio = (float)char_I_N2_ratio; // the 0.0002 of 0.7902 are missing with standard air - N2_ratio = 0.7902; // N2_ratio / 100.0; - pres_respiration = (float)int_I_pres_respiration / 1000.0; -for (ci=0;ci<16;ci++) // cycle through the 16 b"uhlmann tissues -{ - pres_tissue[ci] = N2_ratio * (pres_respiration - 0.0627) ; -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x80 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -_endasm - -pres_tissue_limit[ci] = (pres_tissue[ci] - var_a) * var_b ; -// now update the guiding tissue -if (pres_tissue_limit[ci] < 0) -pres_tissue_limit[ci] = 0; -} // for 0 to 16 - -for (ci=16;ci<32;ci++) // cycle through the 16 b"uhlmann tissues for Helium -{ - pres_tissue[ci] = 0.0; -} // for - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - char_O_gradient_factor = 0; - char_O_relative_gradient_GF = 0; -} // clear_tissue(void) - - -// -------------------- -// calc_without_deco // -// fixed N2_ratio ! // -// -------------------- -// optimized in v.101 (float_..saturation_multiplier) - -void calc_without_deco(void) -{ -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED RATIO !! sum as stated in b"uhlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does apply to the pressure without any inert ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_without_deco - - -// -------------------- -// calc_hauptroutine // -// -------------------- -// this is the major code in dive mode -// calculates: -// the tissues, -// the bottom time -// and simulates the ascend with all deco stops - -void calc_hauptroutine(void) -{ - calc_hauptroutine_data_input(); - - if(!flag_in_divemode) - { - flag_in_divemode = 1; - create_dbs_set_dbg_and_ndl20mtr(); - } - else - check_pre_dbg(); - - calc_hauptroutine_update_tissues(); - calc_gradient_factor(); - - - switch (char_O_deco_status) // toggle between calculation for nullzeit (bottom time), deco stops and more deco stops (continue) - { - case 0: - update_startvalues(); - calc_nullzeit(); - check_ndl(); - char_O_deco_status = 255; // calc deco next time - break; - case 1: - if (char_O_deco_status == 3) - break; - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); - break; - case 3: // new dive - clear_decoarray(); - clear_internal_deco_table_GF(); - copy_deco_table_GF(); - internal_deco_pointer = 0; - lock_GF_depth_list = 0; - update_startvalues(); - calc_nextdecodepth_GF(); - char_O_deco_status = 0; - break; - default: - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - output[6] = 1; - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - break; - } - calc_ascenttime(); - check_post_dbg(); -} - -void calc_hauptroutine_data_input(void) -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; - pres_surface = (float)int_I_pres_surface / 1000.0; - - N2_ratio = (float)char_I_N2_ratio / 100.0;; // the 0.0002 of 0.7902 are missing with standard air - He_ratio = (float)char_I_He_ratio / 100.0;; - deco_N2_ratio = (float)char_I_deco_N2_ratio / 100.0; - deco_He_ratio = (float)char_I_deco_He_ratio / 100.0; - float_deco_distance = (float)char_I_deco_distance / 100.0; - if(char_I_deco_gas_change) - { - deco_gas_change = (float)char_I_deco_gas_change / 9.995 + pres_surface; - deco_gas_change = deco_gas_change + float_deco_distance; - } - else - deco_gas_change = 0; - const_ppO2 = (float)char_I_const_ppO2 / 100.0; - deco_ppO2_change = (float)char_I_deco_ppO2_change / 99.95 + pres_surface; - deco_ppO2_change = deco_ppO2_change + float_deco_distance; - deco_ppO2 = (float)char_I_deco_ppO2 / 100.0; - float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - GF_low = (float)char_I_GF_Low_percentage / 100.0; - GF_high = (float)char_I_GF_High_percentage / 100.0; - GF_delta = GF_high - GF_low; - - temp2 = (pres_respiration - pres_surface) / 0.29985; - int_temp = (int)(temp2); - if (int_temp < 0) - int_temp = 0; - if (int_temp > 255) - int_temp = 255; - char_O_actual_pointer = int_temp; - - temp_depth_last_deco = (int)char_I_depth_last_deco; -} - -void calc_hauptroutine_update_tissues(void) -{ - int_O_calc_tissue_call_counter = int_O_calc_tissue_call_counter + 1; - if (char_I_const_ppO2 == 0) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - else // new in v.101 - pres_diluent = ((pres_respiration - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - if (pres_diluent > pres_respiration) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - if (pres_diluent > 0.0627) // new in v.101 - { - temp_atem = N2_ratio * (pres_diluent - 0.0627); // changed in v.101 - temp2_atem = He_ratio * (pres_diluent - 0.0627); // changed in v.101 - char_O_diluent = (char)(pres_diluent/pres_respiration*100.0); - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - char_O_diluent = 0; - } - temp_surface = pres_surface; - calc_tissue(); - int_O_gtissue_limit = (int)(pres_tissue_limit[char_O_gtissue_no] * 1000); - int_O_gtissue_press = (int)((pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]) * 1000); - if (char_I_deco_model == 1) - { - temp1 = temp1 * GF_high; - } - else - { - temp1 = temp_surface; - } - if (pres_gtissue_limit > temp1 && char_O_deco_status == 0) // if guiding tissue can not be exposed to surface pressure immediately - { - char_O_nullzeit = 0; // deco necessary - char_O_deco_status = 255; // calculate deco skip nullzeit calculation - } -} // calc_hauptroutine_update_tissues -void calc_hauptroutine_calc_deco(void) -{ - do - { - int_temp_decostatus = 0; - calc_nextdecodepth_GF(); - if (temp_depth_limit > 0) - { - if (char_I_const_ppO2 == 0) // new in v.101 - { - deco_diluent = temp_deco; // new in v.101 - if (temp_deco > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco > deco_ppO2_change) - { - deco_diluent = ((temp_deco - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - else - { - deco_diluent = ((temp_deco - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - } - if (deco_diluent > temp_deco) // new in v.101 - deco_diluent = temp_deco; // new in v.101 - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - update_internal_deco_table_GF(); - temp_decotime = 1; - update_decoarray(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) - int_temp_decostatus = 1; - } - else // if (temp_depth_limit > 0) - { - char_O_deco_status = 0; - } - } while (int_temp_decostatus == 1); - if (char_O_deco_status > 15) - { - char_O_deco_status = 1; - } - else - { - copy_deco_table_GF(); - char_O_deco_status = 0; - } -} - -void calc_hauptroutine_calc_ascend_to_deco(void) -{ - update_startvalues(); - char_O_deco_status = 0; - temp_deco = pres_respiration; - lock_GF_depth_list = 1; // new in v.102 - do // go up to first deco - { - int_temp_decostatus = 0; - temp_deco = temp_deco - 1.0; - if ( char_I_deco_model == 1) // new in v.102 , 4 = deep stops - temp_limit = temp_pres_gtissue_limit_GF_low; - else - temp_limit = temp_pres_gtissue_limit; - if ((temp_deco > temp_limit) && (temp_deco > pres_surface)) // changes in v.102 - { - lock_GF_depth_list = 0; // new in v.102, distance to first stop > 10 mtr. - output[6] = 0; - if (char_I_const_ppO2 == 0) // new in v.101 // calculate at half of the ascent - { - deco_diluent = temp_deco + 0.5; // new in v.101 - if (temp_deco + 0.5 > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco + 0.5 > deco_ppO2_change) - deco_diluent = ((temp_deco + 0.5 - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - else - deco_diluent = ((temp_deco + 0.5 - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - if (deco_diluent > (temp_deco +0.5)) // new in v.101 - deco_diluent = temp_deco + 0.5; // new in v.101 // calculate at half of the ascent - } - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) // 16 is the limit of calculations for one time slot - int_temp_decostatus = 1; - } - } while (int_temp_decostatus == 1); -} // calc_hauptroutine_calc_ascend_to_deco - -// -------------- -// calc_tissue // -// -------------- -// optimized in v.101 - -void calc_tissue(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_e2secs+1 // the order is confussing -TBLRDPOSTINC -movff TABLAT,var_e2secs // low byte first, high afterwards -TBLRDPOSTINC -movff TABLAT,var_e2secs+3 -TBLRD -movff TABLAT,var_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e2secs+1 -TBLRDPOSTINC -movff TABLAT,var2_e2secs -TBLRDPOSTINC -movff TABLAT,var2_e2secs+3 -TBLRD -movff TABLAT,var2_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -_endasm - // the start values are the previous end values // write new values in temp - - if( (var_e2secs < 0.0000363) - || (var_e2secs > 0.00577) - || (var2_e2secs < 0.0000961) - || (var2_e2secs > 0.150) - || (var_a < 0.231) - || (var_a > 1.27) - || (var_b < 0.504) - || (var_b > 0.966) - || (var2_a < 0.510) - || (var2_a > 1.75) - || (var2_b < 0.423) - || (var2_b > 0.927) - ) - int_O_DBG_pre_bitfield |= DBG_ZH16ERR; - -// N2 - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e2secs; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e2secs; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if -} // for -}//calc_tissue(void) - -// ---------------- -// calc_nullzeit // -// ---------------- -// calculates the remaining bottom time - -// unchanged in v.101 - -void calc_nullzeit(void) -{ - char_O_nullzeit = 0; - int_temp = 1; - do - { - backup_sim_pres_tissue(); - sim_tissue_10min(); - char_O_nullzeit = char_O_nullzeit + 10; - int_temp = int_temp + 1; - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 17); - if (int_temp == 255) - { - restore_sim_pres_tissue(); - char_O_nullzeit = char_O_nullzeit - 10; - } //if int_temp == 255] - int_temp = 1; - if (char_O_nullzeit < 60) - { - do - { - sim_tissue_1min(); - char_O_nullzeit = char_O_nullzeit + 1; - int_temp = int_temp + 1; // new in v.102a - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 10); - if (int_temp == 255) - char_O_nullzeit = char_O_nullzeit - 1; - } // if char_O_nullzeit < 60 -} //calc_nullzeit - -// ------------------------- -// backup_sim_pres_tissue // -// ------------------------- -void backup_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue_backup[x] = sim_pres_tissue[x]; - sim_pres_tissue_backup[x+16] = sim_pres_tissue[x+16]; - } -} // backup_sim - -// -------------------------- -// restore_sim_pres_tissue // -// -------------------------- -void restore_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = sim_pres_tissue_backup[x]; - sim_pres_tissue[x+16] = sim_pres_tissue_backup[x+16]; - } -} // restore_sim - -// ------------------ -// calc_ascenttime // -// ------------------ - -void calc_ascenttime(void) -{ -if (pres_respiration > pres_surface) - { - switch (char_O_deco_status) - { - case 2: - char_O_ascenttime = 255; - break; - case 1: - break; - default: - temp1 = pres_respiration - pres_surface + 0.6; // + 0.6 hence 1 minute ascent time from a depth of 4 meter on - if (temp1 < 0) - temp1 = 0; - if (temp1 > 255) - temp1 = 255; - char_O_ascenttime = (char)temp1; - - for(ci=0;ci<7;ci++) - { - x = char_O_ascenttime + char_O_array_decotime[ci]; - if (x < char_O_ascenttime) - char_O_ascenttime = 255; - else - char_O_ascenttime = x; - } - } - } -else - char_O_ascenttime = 0; -} // calc_ascenttime() - - -// --------------------- -// update_startvalues // -// --------------------- -// updated in v.102 - -void update_startvalues(void) -{ - temp_pres_gtissue_limit = pres_gtissue_limit; - temp_pres_gtissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; - - temp_gtissue_no = char_O_gtissue_no; - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = pres_tissue[x]; - sim_pres_tissue[x+16] = pres_tissue[x+16]; - sim_pres_tissue_limit[x] = pres_tissue_limit[x]; - } -} // update_startvalues - - -// ------------------ -// sim_tissue_1min // -// ------------------ -// optimized in v.101 - -void sim_tissue_1min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit - temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_1min() - -//-------------------- -// sim_tissue_10min // -//-------------------- - -// Attention!! uses var_e1min und var2_e1min to load 10min data !!! -// is identical to sim_tissue_1min routine except for the different load of those variables - -// optimized in v.101 - -void sim_tissue_10min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 // different to 1 min -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -//incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit -temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - -sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_10min() - - -// ------------------ -// clear_decoarray // -// ------------------ -// unchanged in v.101 - -void clear_decoarray(void) -{ -char_O_array_decodepth[0] = 0; -char_O_array_decodepth[1] = 0; -char_O_array_decodepth[2] = 0; -char_O_array_decodepth[3] = 0; -char_O_array_decodepth[4] = 0; -char_O_array_decodepth[5] = 0; -char_O_array_decotime[0] = 0; -char_O_array_decotime[1] = 0; -char_O_array_decotime[2] = 0; -char_O_array_decotime[3] = 0; -char_O_array_decotime[4] = 0; -char_O_array_decotime[5] = 0; -char_O_array_decotime[6] = 0; -} // clear_decoarray - - -// ------------------- -// update_decoarray // -// ------------------- -// unchanged in v.101 - -void update_decoarray() -{ - x = 0; - do - { - if (char_O_array_decodepth[x] == temp_depth_limit) - { - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp < 0) - int_temp = 0; - if (int_temp > 240) - int_temp = 240; - char_O_array_decotime[x] = int_temp; - x = 10; // exit - } // if - else - { - if (char_O_array_decodepth[x] == 0) - { - if (temp_depth_limit > 255) - char_O_array_decodepth[x] = 255; - else - char_O_array_decodepth[x] = (char)temp_depth_limit; - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp > 240) - char_O_array_decotime[x] = 240; - else - char_O_array_decotime[x] = (char)int_temp; - x = 10; // exit - } // if - else - x++; - } // else - } while (x<6); - if (x == 6) - { - int_temp = char_O_array_decotime[6] + temp_decotime; - if (int_temp > 220) - char_O_array_decotime[6] = 220; - else - char_O_array_decotime[6] = (char)int_temp; - } // if x == 6 -} // update_decoarray - - -// ----------------------- -// calc_gradient_factor // -// ----------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_factor(void) -{ - // tissue > respiration (entsaettigungsvorgang) - // gradient ist wieviel prozent an limit mit basis tissue - // dh. 0% = respiration == tissue - // dh. 100% = respiration == limit - temp_tissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[char_O_gtissue_no]; // changed in v.102 - temp2 = temp1/temp2; - temp2 = temp2 * 100; // displayed in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_gradient_factor = 0; - else - char_O_gradient_factor = (char)temp2; - - temp3 = temp2; - - if (char_I_deco_model == 1) // calculate relative gradient factor - { - temp1 = (float)temp_depth_GF_low_meter * 0.09995; - temp2 = pres_respiration - pres_surface; - if (temp2 <= 0) - temp1 = GF_high; - else - if (temp2 >= temp1) - temp1 = GF_low; - else - temp1 = GF_low + (temp1 - temp2)/temp1*GF_delta; - if (temp_depth_GF_low_meter == 0) - temp1 = GF_high; - temp2 = temp3 / temp1; // temp3 is already in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - char_O_relative_gradient_GF = (char)temp2; - } // calc relative gradient factor - else - { - char_O_relative_gradient_GF = char_O_gradient_factor; - } -} // calc_gradient - -// --------------------------- -// calc_gradient_array_only // -// --------------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_array_only() -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system -for (ci=0;ci<16;ci++) -{ - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[ci]; - temp2 = temp1/temp2; - temp2 = temp2 * 200; // because of output in (Double-)percentage - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; - else - char_O_array_gradient_weighted[ci] = (char)temp2; -} // for -} // calc_gradient_array_only - - -// ------------------------- -// calc_desaturation_time // -// ------------------------- -// FIXED N2_ratio -// unchanged in v.101 - -void calc_desaturation_time(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - N2_ratio = 0.7902; // FIXED sum as stated in b"uhlmann - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_surface - 0.0627); - int_O_desaturation_time = 0; - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x04 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var_halftimes -TBLRDPOSTINC -movff TABLAT,var_halftimes+3 -TBLRD -movff TABLAT,var_halftimes+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var2_halftimes -TBLRDPOSTINC -movff TABLAT,var2_halftimes+3 -TBLRD -movff TABLAT,var2_halftimes+2 -_endasm - -// saturation_time (for flight) and N2_saturation in multiples of halftime -// version v.100: 1.1 = 10 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// new in version v.101: 1.07 = 7 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// changes in v.101: 1.05 = 5 percent dist to totally clean is new desaturation point for display and noFly calculations -// N2 - temp1 = 1.05 * temp_atem; - temp1 = temp1 - pres_tissue[ci]; - temp2 = temp_atem - pres_tissue[ci]; - if (temp2 >= 0.0) - { - temp1 = 0; - temp2 = 0; - } - else - temp1 = temp1 / temp2; - if (temp1 > 0.0) - { - temp1 = log(1.0 - temp1); - temp1 = temp1 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - 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 - } - else - { - temp1 = 0; - temp2 = 0; - } - -// He - temp3 = 0.1 - pres_tissue[ci+16]; -if (temp3 >= 0.0) - { - temp3 = 0; - temp4 = 0; - } - else - temp3 = -1.0 * temp3 / pres_tissue[ci+16]; - if (temp3 > 0.0) - { - temp3 = log(1.0 - temp3); - temp3 = temp3 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - temp4 = var2_halftimes * temp3 / float_desaturation_multiplier; // time necessary (in minutes ) for "complete" desaturation, new in v.101 float_desaturation_multiplier - } - else - { - temp3 = 0; - temp4 = 0; - } - -// saturation_time (for flight) - if (temp4 > temp2) - int_temp = (int)temp4; - else - int_temp = (int)temp2; - if(int_temp > int_O_desaturation_time) - int_O_desaturation_time = int_temp; - -// N2 saturation in multiples of halftime for display purposes - temp2 = temp1 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp2 = temp2 + 80.0; // set center - if (temp2 < 0.0) - temp2 = 0.0; - if (temp2 > 255.0) - temp2 = 255.0; - char_O_tissue_saturation[ci] = (char)temp2; -// He saturation in multiples of halftime for display purposes - temp4 = temp3 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp4 = temp4 + 80.0; // set center - if (temp4 < 0.0) - temp4 = 0.0; - if (temp4 > 255.0) - temp4 = 255.0; - char_O_tissue_saturation[ci+16] = (char)temp4; -} // for -} // calc_desaturation_time - - -// -------------------------- -// calc_wo_deco_step_1_min // -// -------------------------- -// FIXED N2 Ratio -// optimized in v.101 (...saturation_multiplier) -// desaturation slowed down to 70,42% - -void calc_wo_deco_step_1_min(void) -{ - if(flag_in_divemode) - { - flag_in_divemode = 0; - set_dbg_end_of_dive(); - } -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED, sum lt. buehlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does not use the N2_ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue_step_1_min(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_wo_deco_step_1_min(void) - - -// ------------------------- -// calc_tissue_step_1_min // -// ------------------------- -// optimized in v.101 - -void calc_tissue_step_1_min(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm - -// N2 1 min - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He 1 min - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if - -// gradient factor array for graphical display -// display range is 0 to 250! in steps of 5 for 1 pixel -// the display is divided in 6 blocks -// -> double the gradient 100% = 200 -// tissue > respiration (entsaettigungsvorgang) -// gradient ist wieviel prozent an limit von tissue aus -// dh. 0% = respiration == tissue -// dh. 100% = respiration == limit -temp1 = temp_tissue - pres_respiration; -temp2 = temp_tissue - pres_tissue_limit[ci]; // changed in v.102 -temp2 = temp1/temp2; -temp2 = temp2 * 200; // because of output in (Double-)percentage -if (temp2 < 0) - temp2 = 0; -if (temp2 > 255) - temp2 = 255; -if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; -else - char_O_array_gradient_weighted[ci] = (char)temp2; - -} // for -} // calc wo deco 1min - -#if 0 -// -------- -// debug // -// -------- -void debug(void) -{ -for (ci=0;ci<32;ci++) -{ - int_O_tissue_for_debug[ci] = (unsigned int)(pres_tissue[ci] *1000); -} -} // void debug(void) -#endif - -// ---------- -// md hash // -// ---------- -void hash(void) -{ -// init - for (md_i=0;md_i<16;md_i++) - { - md_state[md_i] = 0; - md_cksum[md_i] = 0; - } // for md_i 16 - -_asm - movlw 0x01 - movwf TBLPTRU,0 - movlw 0x06 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i] = md_temp; - } // for md_i 256 -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[127] = md_temp; - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i+128] = md_temp; - } // for md_i 256 -_asm - TBLRD - movff TABLAT,md_temp -_endasm - md_pi_subst[255] = md_temp; - -_asm - movlw 0x00 - movwf TBLPTRU,0 - movlw 0x00 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm -// cycle buffers -for (md_pointer=0x0000;md_pointer<0x17f3;md_pointer++) -{ - md_t = 0; - for (md_i=0;md_i<16;md_i++) - { - if(md_pointer == 9) - md_temp = md_cksum[md_i]; - else - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - } // else - md_buffer[md_i] = md_temp; - md_state[md_i+16] = md_buffer[md_i]; - md_state[md_i+32] = (unsigned char)(md_buffer[md_i] ^ md_state[md_i]); - } // for md_i 16 - - for (md_i=0;md_i<18;md_i++) - { - for (md_j=0;md_j<48;md_j++) - { - md_state[md_j] = (unsigned char)(md_state[md_j] ^ md_pi_subst[md_t]); - md_t = md_state[md_j]; - } // for md_j 48 - md_t = (unsigned char)(md_t+1); - } // for md_i 18 - md_t = md_cksum[15]; - - for (md_i=0;md_i<16;md_i++) - { - md_cksum[md_i] = (unsigned char)(md_cksum[md_i] ^ md_pi_subst[(md_buffer[md_i] ^ md_t)]); - md_t = md_cksum[md_i]; - } // for md_i 16 -} // for md_pointer -} // void hash(void) - -// --------------------- -// clear_CNS_fraction // -// --------------------- -// new in v.101 - -void clear_CNS_fraction(void) -{ - CNS_fraction = 0.0; - char_O_CNS_fraction = 0; -} // void clear_CNS_fraction(void) - - -// -------------------- -// calc_CNS_fraction // -// -------------------- -// new in v.101 -// optimized in v.102 : with new variables char_I_actual_ppO2 and actual_ppO2 - -// Input: char_I_actual_ppO2 -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction -// Uses: acutal_ppO2 - -void calc_CNS_fraction(void) -{ - actual_ppO2 = (float)char_I_actual_ppO2 / 100.0; - - if (char_I_actual_ppO2 < 50) - CNS_fraction = CNS_fraction;// no changes - else if (char_I_actual_ppO2 < 60) - CNS_fraction = 1/(-54000.0 * actual_ppO2 + 54000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 70) - CNS_fraction = 1/(-45000.0 * actual_ppO2 + 48600.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 80) - CNS_fraction = 1/(-36000.0 * actual_ppO2 + 42300.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 90) - CNS_fraction = 1/(-27000.0 * actual_ppO2 + 35100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 110) - CNS_fraction = 1/(-18000.0 * actual_ppO2 + 27000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 150) - CNS_fraction = 1/(-9000.0 * actual_ppO2 + 17100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 160) - CNS_fraction = 1/(-22500.0 * actual_ppO2 + 37350.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 165) - 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 - else if (char_I_actual_ppO2 < 170) - CNS_fraction = 0.00102 + CNS_fraction; // example calculation: Sqrt((1.7/1.55)^20)*0.000404 - else if (char_I_actual_ppO2 < 175) - CNS_fraction = 0.00136 + CNS_fraction; - else if (char_I_actual_ppO2 < 180) - CNS_fraction = 0.00180 + CNS_fraction; - else if (char_I_actual_ppO2 < 185) - CNS_fraction = 0.00237 + CNS_fraction; - else if (char_I_actual_ppO2 < 190) - CNS_fraction = 0.00310 + CNS_fraction; - else if (char_I_actual_ppO2 < 195) - CNS_fraction = 0.00401 + CNS_fraction; - else if (char_I_actual_ppO2 < 200) - CNS_fraction = 0.00517 + CNS_fraction; - else if (char_I_actual_ppO2 < 230) - CNS_fraction = 0.0209 + CNS_fraction; - else - CNS_fraction = 0.0482 + CNS_fraction; // value for 2.5 - - if (CNS_fraction > 2.5) - CNS_fraction = 2.5; - if (CNS_fraction < 0.0) - CNS_fraction = 0.0; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -} // void calc_CNS_fraction(void) - -// -------------------------- -// calc_CNS_decrease_15min // -// -------------------------- -// new in v.101 - -// calculates the half time of 90 minutes in 6 steps of 15 min - -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction - -void calc_CNS_decrease_15min(void) -{ - CNS_fraction = 0.890899 * CNS_fraction; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -}// calc_CNS_decrease_15min(void) - - -// ------------------ -// calc_percentage // -// ------------------ -// new in v.101 - -// calculates int_I_temp * char_I_temp / 100 -// output is int_I_temp - -void calc_percentage(void) -{ - temp1 = (float)int_I_temp; - temp2 = (float)char_I_temp / 100.0; - temp3 = temp1 * temp2; - int_I_temp = (int)temp3; -} -void push_tissues_to_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue_vault[ci] = pres_tissue[ci]; -} -void pull_tissues_from_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue[ci] = pres_tissue_vault[ci]; -} - -void wp_write_command(void) -{ - _asm - bcf oled_rs - movff wp_command,PORTD - bcf oled_rw - bsf oled_rw - _endasm -} - -void wp_write_data(void) -{ - wp_data_8bit_one = wp_data_16bit >> 8; - wp_data_8bit_two = wp_data_16bit; -_asm - bsf oled_rs - movff wp_data_8bit_one,PORTD - bcf oled_rw - bsf oled_rw - movff wp_data_8bit_two,PORTD - bcf oled_rw - bsf oled_rw -_endasm -} - -void wp_write_black(void) -{ -_asm - movff wp_black,PORTD - bcf oled_rw - bsf oled_rw - bcf oled_rw - bsf oled_rw -_endasm -} - -void wp_write_color(void) -{ -_asm - movff wp_color1,PORTD - bcf oled_rw - bsf oled_rw - movff wp_color2,PORTD - bcf oled_rw - bsf oled_rw -_endasm -} - -void wp_set_window(void) -{ - // x axis start ( 0 - 319) - wp_command = 0x35; - wp_write_command(); - wp_data_16bit = ((U16)wp_leftx2) << 1; - wp_write_data(); - // x axis end ( 0 - 319) - wp_command = 0x36; - wp_write_command(); - wp_data_16bit = 319; - wp_write_data(); - // y axis start + end ( 0 - 239 ) - wp_command = 0x37; - wp_write_command(); - // the bottom part - wp_data_16bit = wp_top; - if(wp_font & 1) - { - wp_data_16bit += WP_FONT_MEDIUM_HEIGHT; - if(wp_font & 2) - wp_data_16bit += WP_FONT_MEDIUM_HEIGHT; - } - else - { - wp_data_16bit += WP_FONT_SMALL_HEIGHT; - if(wp_font & 2) - wp_data_16bit += WP_FONT_SMALL_HEIGHT; - } - wp_data_16bit--; - if(wp_data_16bit > 239) - wp_data_16bit = 239; - // the top part - wp_data_16bit |= ((U16)wp_top) << 8; - // all together in one 16bit transfer - wp_write_data(); - - // start - wp_command = 0x20; - wp_write_command(); - wp_data_16bit = wp_top; - wp_write_data(); - - wp_command = 0x21; - wp_write_command(); - wp_data_16bit = ((U16)wp_leftx2) << 1; - wp_write_data(); -} - -void wp_set_char_font_small(void) -{ - if (wp_char > 0x7E) - wp_char -= 34; - if ((wp_char >= 1) && (wp_char <= 5)) // battery - wp_char += 160; - if((wp_char < '!') || (wp_char > 166)) // limit to end of battery at the moment - wp_char = ' '; - if(wp_char != ' ') - { - wp_start = wp_small_table[wp_char - '!']; - wp_end = wp_small_table[1 + wp_char - '!']; - } -} - -void wp_set_char_font_medium(void) -{ - if (wp_char == 0x27) // 0x27 == ' - wp_char = 0x3B; - if (wp_char == '"') - wp_char = 0x3C; - if (wp_char == 'm') - wp_char = 0x3D; - if((wp_char < '.') || (wp_char > 0x3D)) - wp_char = ' '; - if(wp_char != ' ') - { - wp_start = wp_medium_table[wp_char - '.']; - wp_end = wp_medium_table[1 + wp_char - '.']; - } -} - -void wordprocessor(void) -{ - wp_data_8bit_one = 0; - _asm - movff wp_data_8bit_one,POSTINC2 - _endasm - - wp_set_window(); - - // access to GRAM - wp_command = 0x22; - wp_write_command(); - _asm - bsf oled_rs - _endasm - - wp_txtptr = 0; - wp_char = wp_stringstore[wp_txtptr]; - while(wp_char) - { - if(wp_font & 1) - wp_set_char_font_medium(); - else - wp_set_char_font_small(); - - wp_black = 0; - if(wp_char == ' ') - { - _asm - movff wp_black,PORTD - _endasm - if(wp_font & 1) - for(wp_i =0; wp_i> 8; - if((wp_temp_U8 & 128)) - { - wp_temp_U8 -= 127; - if(wp_invert) - { - while(wp_temp_U8 > 0) - { - wp_temp_U8--; - wp_write_color(); - } - } - else - { - _asm - movff wp_black,PORTD - _endasm - _asm - movff wp_black,PORTD - _endasm - while(wp_temp_U8 > 0) - { - wp_temp_U8--; - _asm - bcf oled_rw - bsf oled_rw - bcf oled_rw - bsf oled_rw - _endasm - } - } - } - else - { - wp_temp_U8++; - if(wp_invert) - { - _asm - movff wp_black,PORTD - _endasm - _asm - movff wp_black,PORTD - _endasm - while(wp_temp_U8 > 0) - { - wp_temp_U8--; - _asm - bcf oled_rw - bsf oled_rw - bcf oled_rw - bsf oled_rw - _endasm - } - } - else - { - while(wp_temp_U8 > 0) - { - wp_temp_U8--; - wp_write_color(); - } - } - } - } - } - wp_txtptr++; - wp_char = wp_stringstore[wp_txtptr]; - } - wp_command = 0x00; - wp_write_command(); -} diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/old/p2_deco_main_old_v107.c --- a/code_part1/OSTC_code_c_part2/old/p2_deco_main_old_v107.c Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3453 +0,0 @@ -/* - * p2_deco_main_c_v107.c - * - * Created on: 31.03.2009 - * Author: chsw - */ - -//#include - - -// OSTC - diving computer code -// Copyright (C) 2008 HeinrichsWeikamp GbR - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - - -// ***************************** -// ** I N T R O D U C T I O N ** -// ***************************** -// -// OSTC -// -// code: -// p2_deco_main_c_v101.c -// part2 of the OSTC code -// code with constant O2 partial pressure routines -// under construction !! -// -// summary: -// decompression routines -// for the OSTC experimental project -// written by Christian Weikamp -// last revision __________ -// comments added _________ -// -// additional files: -// p2_tables_v100.romdata (other files) -// 18f4685_ostc_v100.lkr (linker script) -// -// history: -// 01/03/08 v100: first release candidate -// 03/13/08 v101: start of programming ppO2 code -// 03/13/25 v101a: backup of interrim version with ppO2 calculation -// 03/13/25 v101: open circuit gas change during deco -// 03/13/25 v101: CNS_fraction calculation -// 03/13/26 v101: optimization of tissue calc routines -// 07/xx/08 v102a: debug of bottom time routine -// 09/xx/08 v102d: Gradient Factor Model implemenation -// 10/10/08 v104: renamed to build v103 for v118 stable -// 10/14/08 v104: integration of temp_depth_last_deco for Gradient Model -// 03/31/090 v107: integration of FONT Incon24 - -// -// literature: -// B"uhlmann, Albert: Tauchmedizin; 4. Auflage; -// 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 -// Morrison, Stuart; 2000; DIY DECOMPRESSION; http://www.lizardland.co.uk/DIYDeco.html -// Balthasar, Steffen; Dekompressionstheorie I: Neo Haldane Modelle; http://www.txfreak.de/dekompressionstheorie_1.pdf -// Baker, Erik C.; Clearing Up The Confusion About "Deep Stops" -// Baker, Erik C.; Understanding M-values; http://www.txfreak.de/understanding_m-values.pdf - - -// ********************* -// ** I N C L U D E S ** -// ********************* - #include - #include - -// ******************************** -// ** C O N F I G U R A T I O N ** -// ** for simulation without asm ** -// ******************************** - #pragma config OSC = IRCIO67 - #pragma config FCMEN = OFF - #pragma config IESO = OFF - #pragma config PWRT = ON - #pragma config BOREN = OFF - #pragma config WDT = OFF - #pragma config WDTPS = 128 - #pragma config MCLRE = ON - #pragma config LPT1OSC = OFF - #pragma config PBADEN = OFF - #pragma config DEBUG = OFF - #pragma config XINST = OFF - #pragma config LVP = OFF - #pragma config STVREN = OFF - -// **************************** -// ** D E F I N E S ** -// ** missing in p18f4685.h ** -// **************************** -#define INT0IF 1 -#define INT1IF 0 -#define TMR1IF 0 - -#define oled_clk PORTD, 0,0 -#define oled_data PORTD, 1,0 -#define oled_en PORTE, 0,0 -#define oled_rs PORTE, 1,0 -#define flag5 0x29 // in Bank1 -//#define no_sensor_int flag5,7,1 // ; block any further access to pressure sensor - -// *********************** -// ** V A R I A B L E S ** -// *********************** -// prefixes etc: -// _O_ = output for use in the assembler code -// _I_ = input from the assembler code for the c code -// char_ and int_ = used to identify output and input size -// var = variable (from b"uhlmann) -// pres = pressure -// gtissue = guiding tissue, the one limiting the ascent -// e2secs = exp of the b"uhlmann formula precalculated for a 2 second step -// e1min = same for 1 minute step -// sim = used in simulating the ascent to the surface -// nullzeit = remaining ground/bottom time for "no deco" -// hauptroutine = main - -#pragma udata bank0a=0x060 -volatile unsigned char dd2_stringstore[17]; -#pragma udata bank0b=0x071 -volatile unsigned char keep_free_bank0[21]; - -#pragma udata bank0c=0x086 -volatile unsigned char dd2_left; // 1 - 64 -volatile unsigned char dd2_top; // 1 - 64 -volatile unsigned char dd2_heightmax; // 1 - 37 -volatile unsigned char dd2_oled_brightness_offset; // 0 - 15 (15 is pitch black always) -volatile unsigned char dd2_fontwidth; // 8, 12, 21 for Incon16, Incon24, Incon42 -volatile unsigned char dd2_fontheight; // 14, 21, 37 for " -volatile unsigned long dd2_pointer; // for font lut -volatile unsigned char dd2_i; -volatile unsigned char dd2_j; -volatile unsigned char dd2_k; -volatile unsigned char dd2_char; -volatile unsigned char dd2_lowbyte; -volatile unsigned char dd2_temp; -volatile unsigned char dd2_data; -volatile unsigned long dd2_base; // for font lut -volatile unsigned char dd2_start; // for font lut -volatile unsigned char dd2_end; // for font lut - - - #pragma udata bank1=0x100 - const unsigned char keep_free_bank1[256]; // used by the assembler code - - #pragma udata bank2a=0x200 -// output: - static unsigned int int_O_tissue_for_debug[32]; - static unsigned int int_O_GF_spare____; // 0x240 - static unsigned int int_O_GF_step; // 0x242 - static unsigned int int_O_gtissue_limit; // 0x244 - static unsigned int int_O_gtissue_press; // 0x246 - static unsigned int int_O_limit_GF_low; // 0x248 - static unsigned int int_O_gtissue_press_at_GF_low; // 0x24A -// ... - #pragma udata bank2b=0x24E - static unsigned char char_O_GF_low_pointer; // 0x24E - static unsigned char char_O_actual_pointer; // 0x24F - #pragma udata bank2c=0x250 - static unsigned char char_O_deco_table[32]; // 0x250 - #pragma udata bank2d=0x270 - static unsigned char char_I_table_deco_done[32]; - #pragma udata bank2e=0x290 - static unsigned int int_O_calc_tissue_call_counter; // 0x290 - - - -// internal: - unsigned char lock_GF_depth_list; - static float temp_limit; - static float GF_low; - static float GF_high; - static float GF_delta; - static float GF_temp; - static float GF_step; - static float GF_step2; - static float temp_pres_gtissue; - static float temp_pres_gtissue_diff; - static float temp_pres_gtissue_limit_GF_low; - static float temp_pres_gtissue_limit_GF_low_below_surface; - static unsigned int temp_depth_limit; - static unsigned char temp_decotime; - static unsigned char temp_gtissue_no; - static unsigned int temp_depth_last_deco; // new in v.101 - - static unsigned char temp_depth_GF_low_meter; - static unsigned char temp_depth_GF_low_number; - static unsigned char internal_deco_pointer; - static unsigned char internal_deco_table[32]; - static float temp_pres_deco_GF_low; - -static unsigned int debug_temp; - - -#pragma udata bank3a=0x300 -static char output[32]; -// used by the math routines -#pragma udata bank3b=0x380 -volatile float pres_tissue_vault[32]; - #pragma udata bank4a=0x400 -// internal: - unsigned char ci ; // don't move - used in _asm routines - if moved then modify movlb commands - unsigned char x; - unsigned int main_i; - unsigned int int_temp; - unsigned int int_temp_decostatus; - static float pres_respiration; - static float pres_surface; - static float temp1; - static float temp2; - static float temp3; - static float temp4; - static float temp_deco; - static float temp_atem; - static float temp2_atem; - static float temp_tissue; - static float temp_surface; - static float N2_ratio; - static float He_ratio; - static float temp_ratio; - static float var_a; - static float var2_a; - static float var_b; - static float var2_b; - static float var_t05nc; - static float var2_t05nc; - static float var_e2secs; - static float var2_e2secs; - static float var_e1min; - static float var2_e1min; - static float var_halftimes; - static float var2_halftimes; - static float pres_gtissue_limit; - static float temp_pres_gtissue_limit; - static float actual_ppO2; // new in v.102 - #pragma udata bank4b=0x480 - static float pres_tissue[32]; - - #pragma udata bank5=0x500 -// don't move positions in this bank, the registers are addressed directly from assembler code -// input: - static unsigned int int_I_pres_respiration; // 0x500 - static unsigned int int_I_pres_surface; // 0x502 - static unsigned int int_I_temp; // 0x504 new in v101 - static unsigned char char_I_temp; // 0x506 new in v101 - static unsigned char char_I_actual_ppO2; // 0x507 - static unsigned int int_I_spare_3; - static unsigned int int_I_spare_4; - static unsigned int int_I_spare_5; - static unsigned int int_I_spare_6; - static unsigned char char_I_N2_ratio; // 0x510 - static unsigned char char_I_He_ratio; // 0x511 - static unsigned char char_I_saturation_multiplier; // for conservatism/safety values 1.0 (no conservatism) to 1.5 (50% faster saturation - 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() - static unsigned char char_I_GF_High_percentage; // 0x514 new in v.102 - static unsigned char char_I_GF_Low_percentage; // 0x515 new in v.102 - static unsigned char char_I_spare; // 0x516 - static unsigned char char_I_deco_distance; // 0x517 - static unsigned char char_I_const_ppO2; // 0x518 new in v.101 - static unsigned char char_I_deco_ppO2_change; // 0x519 new in v.101 - static unsigned char char_I_deco_ppO2; // 0x51A new in v.101 - static unsigned char char_I_deco_gas_change; // 0x51B new in v.101 - static unsigned char char_I_deco_N2_ratio; // 0x51C new in v.101 - static unsigned char char_I_deco_He_ratio; // 0x51D new in v.101 - static unsigned char char_I_depth_last_deco; // 0x51E new in v.101 unit: [m] - static unsigned char char_I_deco_model; // 0x51F new in v.102 ( 1 = MultiGraF, sonst Std. mit (de-)saturation_multiplier) -// output: - static unsigned int int_O_desaturation_time; // 0x520 - static unsigned char char_O_nullzeit; // 0x522 - static unsigned char char_O_deco_status; // 0x523 - static unsigned char char_O_array_decotime[7]; // 0x524 - static unsigned char char_O_array_decodepth[6]; // 0x52B - static unsigned char char_O_ascenttime; // 0x531 - static unsigned char char_O_gradient_factor; // 0x532 - static unsigned char char_O_tissue_saturation[32]; // 0x533 - static unsigned char char_O_array_gradient_weighted[16]; // 0x553 - static unsigned char char_O_gtissue_no; // 0x563 - static unsigned char char_O_diluent; // 0x564 new in v.101 - static unsigned char char_O_CNS_fraction; // 0x565 new in v.101 - static unsigned char char_O_relative_gradient_GF; // 0x566 new in v.102 -// internal: - static float pres_tissue_limit[16]; - static float sim_pres_tissue_limit[16]; - static float pres_diluent; // new in v.101 - static float deco_diluent; // new in v.101 - static float const_ppO2; // new in v.101 - static float deco_ppO2_change; // new in v.101 - static float deco_ppO2; // new in v.101 - - - - #pragma udata bank6=0x600 -// internal: - static float sim_pres_tissue[32]; - static float sim_pres_tissue_backup[32]; - - #pragma udata bank7=0x700 - const unsigned char keep_free_bank7[256]; // used by the assembler code (DD font2display) - - #pragma udata bank8=0x800 - static char md_pi_subst[256]; - - #pragma udata bank9=0x900 -// output: - static char md_state[48]; // DONT MOVE !! has to be at the beginning of bank 9 for the asm code!!! -// internal: - static char md_t; - static char md_buffer[16]; - static char md_cksum[16]; - static char md_i; - static char md_j; - static char md_temp; - static unsigned int md_pointer; - static float deco_N2_ratio; // new in v.101 - static float deco_He_ratio; // new in v.101 - static float calc_N2_ratio; // new in v.101 - static float calc_He_ratio; // new in v.101 - static float deco_gas_change; // new in v.101 - static float CNS_fraction; // new in v.101 - static float float_saturation_multiplier; // new in v.101 - static float float_desaturation_multiplier; // new in v.101 - static float float_deco_distance; // new in v.101 - - - -// ************************* -// ** P R O T O T Y P E S ** -// ************************* -void main_calc_hauptroutine(void); -void main_calc_without_deco(void); -void main_clear_tissue(void); -void main_calc_percentage(void); -void main_calc_wo_deco_step_1_min(void); -void main_debug(void); -void main_gradient_array(void); -void main_hash(void); - -void calc_hauptroutine(void); -void calc_tissue(void); -void calc_nullzeit(void); -void backup_sim_pres_tissue(void); -void restore_sim_pres_tissue(void); - -void calc_without_deco(void); -void clear_tissue(void); -void calc_ascenttime(void); -void update_startvalues(void); -void clear_decoarray(void); -void update_decoarray(void); -void sim_tissue_1min(void); -void sim_tissue_10min(void); -void calc_gradient_factor(void); -void calc_gradient_array_only(void); -void calc_desaturation_time(void); -void calc_wo_deco_step_1_min(void); -void calc_tissue_step_1_min(void); -//void debug(void); -void hash(void); -void clear_CNS_fraction(void); -void calc_CNS_fraction(void); -void calc_CNS_decrease_15min(void); -void calc_percentage(void); -void main(void); -void calc_hauptroutine_data_input(void); -void calc_hauptroutine_update_tissues(void); -void calc_hauptroutine_calc_deco(void); -void calc_hauptroutine_calc_ascend_to_deco(void); -//void build_debug_output(void); -void calc_nextdecodepth_GF(void); -void copy_deco_table_GF(void); -void clear_internal_deco_table_GF(void); -void update_internal_deco_table_GF(void); -void DD2_write(void); -void DD2_write_incon42(void); -void DD2_get_pointer_to_char(void);//dd2_char, &dd2_pointer); -void DD2_set_column(void);//top, dd2_k);void DD2_load_background(void);//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); -void DD2_load_background(void); -void DD2_build_one_line_of_char(void);//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); -void DD2_print_column(void);//&dd2_columnstore, dd2_heightmax); -void DD2_CmdWrite(void); -void DD2_DataWrite(void); -void push_tissues_to_vault(void); -void pull_tissues_from_vault(void); -void main_push_tissues_to_vault(void); -void main_pull_tissues_from_vault(void); - -// ******************************* -// ** start ** -// ** necessary for compilation ** -// ******************************* -#pragma romdata der_code = 0x0000 -#pragma code der_start = 0x0000 -void der_start(void) -{ -_asm - goto main -_endasm -} - -// *********************************** -// ** main code for simulation / ** -// ** tests without assembler code ** -// ** is NOT a part of the OSTC ** -// *********************************** -#pragma code main = 0x9000 -void main(void) -{ -#if 1 -// new main to test DR-5 - -GF_low = 1.0; -GF_high = 1.0; - -GF_temp = GF_low * GF_high; - -clear_CNS_fraction(); -//char_I_const_ppO2 = 100; -//for (main_i=0;main_i<255;main_i++) -//{ -//calc_CNS_fraction(); -//} //for - - - - -int_I_pres_respiration = 1000;//980; -int_I_pres_surface = 1000;//980; -char_I_N2_ratio = 39; //38; -char_I_He_ratio = 40; //50; -char_I_deco_distance = 0; // 10 = 1 meter -char_I_depth_last_deco = 3; // values below 3 (meter) are ignored - -char_I_const_ppO2 = 0; -char_I_deco_ppO2_change = 0; // [dm] 10 = 1 meter -char_I_deco_ppO2 = 0; - -char_I_deco_gas_change = 0; // [m] 1 = 1 meter -char_I_deco_N2_ratio = 0; -char_I_deco_He_ratio = 0; - -//char_I_actual_ppO2; // 0x507 -char_I_GF_High_percentage = 100; // 0x514 new in v.102 -char_I_GF_Low_percentage = 100; // 0x515 new in v.102 - -char_I_saturation_multiplier = 110; -char_I_desaturation_multiplier = 90; - -char_I_deco_model = 0; - -main_clear_tissue(); - -int_I_pres_respiration = 1000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 3000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 5000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); - - -int_I_pres_respiration = 6000 + int_I_pres_surface; -for (main_i=0;main_i<27;main_i++) - main_calc_wo_deco_step_1_min(); - -char_O_deco_status = 255; -while (char_O_deco_status) - main_calc_hauptroutine(); -_asm -nop -_endasm - -for (main_i=0;main_i<50;main_i++) -{ -main_calc_hauptroutine(); -} -int_I_pres_respiration = 10000; -for (main_i=0;main_i<1500;main_i++) -{ -main_calc_hauptroutine(); -} - -_asm -nop -_endasm - - -int_I_pres_respiration = 3000; -for (main_i=0;main_i<150;main_i++) -{ - calc_hauptroutine_data_input(); - calc_hauptroutine_update_tissues(); -} //for - - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -for (main_i=0;main_i 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -_asm -nop -_endasm -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -debug_temp = debug_temp * 3; -for (main_i=0;main_i 31) - int_temp = 31; // deepest deco at 93 meter (31 deco stops) - if (int_temp < 0) - int_temp = 0; - temp_depth_GF_low_number = int_temp; - temp_depth_GF_low_meter = 3 * temp_depth_GF_low_number; - temp2 = (float)temp_depth_GF_low_meter * 0.09995; - temp_pres_deco_GF_low = temp2 + float_deco_distance + pres_surface; - if (temp_depth_GF_low_number == 0) - GF_step = 0; - else - GF_step = GF_delta / (float)temp_depth_GF_low_number; - if (GF_step < 0) - GF_step = 0; - if (GF_step > GF_delta) - GF_step = GF_delta; - int_O_GF_step = (int)(GF_step * 10000); - int_O_limit_GF_low = (int)(temp_pres_deco_GF_low * 1000); - int_O_gtissue_press_at_GF_low = (int)(temp_pres_gtissue * 1000); - char_O_GF_low_pointer = temp_depth_GF_low_number; - lock_GF_depth_list = 1; - internal_deco_pointer = 0; - } - if (internal_deco_pointer == 0) // new run - { - internal_deco_pointer = temp_depth_GF_low_number; - GF_temp = GF_high - ((float)internal_deco_pointer * GF_step); - int_temp = char_I_table_deco_done[internal_deco_pointer]; - output[8] = int_temp; - output[9] = 33; - } - else - { - int_temp = 1; - } - while (int_temp == 1) - { - int_temp = internal_deco_pointer - 1; - if (int_temp == 1) // new in v104 - { - temp2 = (float)(temp_depth_last_deco * int_temp) * 0.09995; - GF_step2 = GF_step/3.0 * ((float)(6 - temp_depth_last_deco)); - } - else - if (int_temp == 0) - { - temp2 = 0.0; - GF_step2 = GF_high - GF_temp; - } - else - { - temp2 = (float)(3 *int_temp) * 0.09995; - GF_step2 = GF_step; - } - temp2 = temp2 + pres_surface; // next deco stop to be tested - temp1 = ((GF_temp + GF_step2)* temp_pres_gtissue_diff) + temp_pres_gtissue; // upper limit (lowest pressure allowed) // changes GF_step2 in v104 - if (temp1 > temp2) // check if ascent to next deco stop is ok - { - int_temp = 0; // no - } - else - { - internal_deco_pointer = int_temp; - GF_temp = GF_temp + GF_step2; // changed in v104 - int_temp = char_I_table_deco_done[internal_deco_pointer]; // yes and check for ascent to even next stop if deco_done is set - } - } // while - if (internal_deco_pointer > 0) - { - temp2 = (float)(0.29985 * internal_deco_pointer); - temp_deco = temp2 + float_deco_distance + pres_surface; - if (internal_deco_pointer == 1) // new in v104 - temp_depth_limit = temp_depth_last_deco; - else - temp_depth_limit = 3 * internal_deco_pointer; - if (output[9] == 33) - { - output[9] = internal_deco_pointer; - output[10] = char_I_table_deco_done[internal_deco_pointer]; - output[12] = output[12] + 1; - if (output[12] == 100) - output[12] = 0; - } - } - else // if (char_I_deco_model == 1) - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } - } - else - { - // calc_nextdecodepth - original - // optimized in v.101 - // depth_last_deco included in v.101 - - temp1 = temp_pres_gtissue_limit - pres_surface; - if (temp1 >= 0) - { - temp1 = temp1 / 0.29985; // = temp1 / 99.95 / 0.003; - temp_depth_limit = (int) (temp1 + 0.99); - temp_depth_limit = 3 * temp_depth_limit; // depth for deco [m] - if (temp_depth_limit == 0) - temp_deco = pres_surface; - else - { - if (temp_depth_limit < temp_depth_last_deco) - temp_depth_limit = temp_depth_last_deco; - temp1 = (float)temp_depth_limit * 0.09995; - temp_deco = temp1 + float_deco_distance + pres_surface; // depth for deco [bar] - } // if (temp_depth_limit == 0) - } // if (temp1 >= 0) - else - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } // if (temp1 >= 0) - } // calc_nextdecodepth original -} // calc_nextdecodepth_GF - - -#if 0 -void build_debug_output(void) -{ -output[0] = 0; // not used in asm PLED output -output[1] = (int) (GF_low * 100); -output[2] = (int) (GF_high * 100); -output[3] = (int) (GF_step * 100); -output[4] = (int) temp_depth_GF_low_number; -output[5] = (int) temp_depth_GF_low_meter; -//output[6] -output[7] = (int) internal_deco_pointer; -//output[8] = char_I_table_deco_done[temp_depth_GF_low_number] -//output[9] = internal_deco_pointer @ new run -//output[10] = char_I_table_deco_done[internal_deco_pointer] @ new run -output [11] = (int) (temp_pres_deco_GF_low * 10); -} // build_debug_output -#endif - -// --------------------- -// copy_deco_table_GF // -// --------------------- -// new in v.102 -void copy_deco_table_GF(void) -{ - if (char_I_deco_model == 1) - { - int_temp = 32; - for (ci=0;ci dd2_fontheight) dd2_heightmax = dd2_fontheight; - if ((dd2_top + dd2_heightmax) > 65) dd2_heightmax = 65 - dd2_top; - - dd2_k = dd2_left; - dd2_j = 0; - dd2_char = dd2_stringstore[dd2_j++]; - DD2_get_pointer_to_char();//dd2_char, &dd2_pointer); - dd2_i = 0; - dd2_lowbyte = 1; - -while (dd2_char != 0) -{ - if (dd2_lowbyte == 1) DD2_load_background();//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); - DD2_build_one_line_of_char(); //&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); // dd2_heightmax - dd2_lowbyte = dd2_lowbyte ^ 1; - if (dd2_lowbyte == 1) - { - DD2_set_column();//top, dd2_k); // - if(dd2_k < 64) dd2_k++; - DD2_print_column();//&dd2_columnstore, dd2_heightmax); // dd2_column_store, dd2_heightmax - } - dd2_i++; - if ((dd2_i >= dd2_fontwidth) | (((dd2_char == '.') |(dd2_char == ':') | (dd2_char == '<')) & (dd2_i >= 4))) - { - dd2_char = dd2_stringstore[dd2_j++]; - DD2_get_pointer_to_char();//dd2_char, &dd2_pointer); - dd2_i = 0; - } -} -} // void dd2_write(void) - -void DD2_get_pointer_to_char(void)//dd2_char, &dd2_pointer); -{ - if((dd2_char < dd2_start) | (dd2_char > dd2_end)) - { - dd2_pointer = 0; - dd2_temp = 0; - } - else - { - dd2_pointer = dd2_char - dd2_start; - dd2_pointer = dd2_pointer * ((dd2_fontheight+1)/2); - dd2_pointer = dd2_pointer * dd2_fontwidth; - dd2_pointer += dd2_base; - if((dd2_char == '.') | (dd2_char == ':') | (dd2_char == '<')) - { - dd2_pointer += 2 * dd2_fontheight; - } - - } -} // void DD2_get_pointer_to_char(void) - -void DD2_set_column(void)//top, dd2_k); -{ - dd2_data = 0x75; - DD2_CmdWrite(); - dd2_data = dd2_top - 1; - DD2_CmdWrite(); - dd2_data = 0x3f; - DD2_CmdWrite(); - - dd2_data = 0x15; - DD2_CmdWrite(); - dd2_data = dd2_k - 1; - DD2_CmdWrite(); - dd2_data = dd2_k - 1; - DD2_CmdWrite(); -} // DD2_set_column() - -void DD2_load_background(void)//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); -{ - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++) - md_pi_subst[dd2_temp] = 0x00; -} // void DD2_load_background() - -void DD2_build_one_line_of_char(void)//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); -{ - if (dd2_pointer != 0) - { - dd2_temp = (char)(dd2_pointer & 255); -_asm - movff dd2_temp,TBLPTRL -_endasm - dd2_temp = (char)((dd2_pointer >> 8) & 255); -_asm - movff dd2_temp,TBLPTRH -_endasm - dd2_temp = (char)((dd2_pointer >> 16)& 255); -_asm - movff dd2_temp,TBLPTRU -_endasm - - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp += 2) - { -_asm - TBLRDPOSTINC - movff TABLAT,dd2_data -_endasm - if (dd2_oled_brightness_offset != 0) - { - if ((dd2_oled_brightness_offset << 4) < (dd2_data & 0xF0)) - dd2_data = dd2_data - (dd2_oled_brightness_offset << 4); - if ((dd2_oled_brightness_offset) < (dd2_data & 0x0F)) - dd2_data = dd2_data - dd2_oled_brightness_offset; - } - if (dd2_lowbyte == 1) - { - md_pi_subst[dd2_temp] = dd2_data & 0xF0; - md_pi_subst[dd2_temp+1] = (dd2_data << 4) & 0xF0; - } - else - { - md_pi_subst[dd2_temp] = (md_pi_subst[dd2_temp] & 0xF0) | ((dd2_data >> 4) & 0x0F); - md_pi_subst[dd2_temp+1] = (md_pi_subst[dd2_temp+1] & 0xF0) | (dd2_data & 0x0F); - } - }//for - dd2_pointer += (dd2_fontheight+1)/2; - }//if -} // - -void DD2_print_column(void)//&dd2_columnstore, dd2_heightmax); -{ -_asm - bsf oled_rs -_endasm - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++) - { - dd2_data = md_pi_subst[dd2_temp]; - DD2_DataWrite(); - } -} // void DD2_print_column(void) - -//; ----------------------------- -//; DD Write Cmd via W -//; two jump_ins: -//; DD_CmdWrite and DD_CmdWrite2 -//; ----------------------------- -void DD2_CmdWrite(void) -{ -_asm - bcf oled_rs -_endasm - DD2_DataWrite(); -} - -void DD2_DataWrite(void) -{ -_asm - movlb 1 -// bsf no_sensor_int // flag5, no_sensor_int - bcf oled_en - movlb 0 - bcf oled_clk //; CLK=0 - btfsc dd2_data,7,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,7,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,6,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,6,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,5,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,5,1 - bcf oled_data //; - bsf oled_clk //; CLK=1 - btfsc dd2_data,4,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,4,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,3,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,3,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,2,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,2,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,1,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,1,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,0,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,0,1 - bcf oled_data - bsf oled_clk //; CLK=1 - bsf oled_en //; CS#=1 - movlb 1 -// bcf no_sensor_int // flag5, no_sensor_int - movlb 0 -_endasm - dd2_data = 0; // to be sure that C knows we are in Bank0 -} -#pragma romdata font_incon_24h15 = 0x0E100 - rom const rom unsigned char incon24h15[] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xa0 - ,0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0x91, 0x00 - ,0x00, 0x00, 0x00, 0x6d, 0xfe, 0x71, 0x00, 0x00 - ,0x00, 0x01, 0x7e, 0xfd, 0x60, 0x00, 0x00, 0x00 - ,0x01, 0x8f, 0xfd, 0x50, 0x00, 0x00, 0x00, 0x00 - ,0x9f, 0xfb, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x72, 0x00, 0x00 - ,0x00, 0x9f, 0xfe, 0xdc, 0xdf, 0xff, 0xb2, 0x00 - ,0x1d, 0xf8, 0x20, 0x00, 0x05, 0xfd, 0xff, 0x30 - ,0xaf, 0x30, 0x00, 0x00, 0x9f, 0x90, 0x2e, 0xd0 - ,0xf8, 0x00, 0x00, 0x2c, 0xf5, 0x00, 0x06, 0xf0 - ,0xf8, 0x00, 0x04, 0xed, 0x30, 0x00, 0x05, 0xf0 - ,0xaf, 0x30, 0x8f, 0xb1, 0x00, 0x00, 0x0c, 0xe0 - ,0x1d, 0xfd, 0xf8, 0x00, 0x00, 0x16, 0xdf, 0x40 - ,0x00, 0x9f, 0xff, 0xdc, 0xde, 0xff, 0xc3, 0x00 - ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x73, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30 - ,0x0a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0x2f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0xaf, 0x97, 0x77, 0x77, 0x77, 0x77, 0x79, 0xf0 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x26, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40 - ,0x07, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0 - ,0x4f, 0x80, 0x00, 0x00, 0x00, 0x1c, 0xfe, 0xf0 - ,0xcc, 0x00, 0x00, 0x00, 0x02, 0xef, 0x57, 0xf0 - ,0xf7, 0x00, 0x00, 0x00, 0x2e, 0xe2, 0x07, 0xf0 - ,0xf8, 0x00, 0x00, 0x01, 0xde, 0x20, 0x07, 0xf0 - ,0xce, 0x10, 0x00, 0x2d, 0xe2, 0x00, 0x07, 0xf0 - ,0x4f, 0xd6, 0x58, 0xfe, 0x30, 0x00, 0x07, 0xf0 - ,0x06, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x07, 0xf0 - ,0x00, 0x14, 0x52, 0x00, 0x00, 0x00, 0x05, 0x80 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 - ,0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x50 - ,0x6f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xd0 - ,0xdb, 0x00, 0x00, 0x59, 0x00, 0x00, 0x07, 0xf0 - ,0xf8, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x04, 0xf0 - ,0xea, 0x00, 0x00, 0xcf, 0x10, 0x00, 0x06, 0xf0 - ,0x9f, 0x30, 0x07, 0xff, 0x90, 0x00, 0x1e, 0xe0 - ,0x1e, 0xfc, 0xdf, 0x87, 0xfb, 0x79, 0xef, 0x50 - ,0x01, 0x9d, 0xc6, 0x00, 0x7e, 0xff, 0xd5, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x2b, 0xb0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x06, 0xff, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x02, 0xcf, 0x69, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x7f, 0xb1, 0x09, 0xe0, 0x00, 0x00 - ,0x00, 0x2c, 0xe6, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0x07, 0xfb, 0x10, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0xcf, 0xfc, 0xcc, 0xcc, 0xce, 0xfd, 0xdd, 0xd0 - ,0xde, 0xee, 0xee, 0xee, 0xef, 0xfe, 0xee, 0xe0 - ,0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00 - ,0x78, 0xab, 0xcd, 0xed, 0x00, 0x00, 0xce, 0x20 - ,0xff, 0xed, 0xcc, 0xfa, 0x00, 0x00, 0x5f, 0xb0 - ,0xf9, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x08, 0xf0 - ,0xf9, 0x00, 0x0a, 0xb0, 0x00, 0x00, 0x04, 0xf0 - ,0xf9, 0x00, 0x0a, 0xc0, 0x00, 0x00, 0x04, 0xf0 - ,0xf9, 0x00, 0x08, 0xf3, 0x00, 0x00, 0x0b, 0xf0 - ,0xf9, 0x00, 0x01, 0xfe, 0x62, 0x13, 0xbf, 0x90 - ,0xf9, 0x00, 0x00, 0x4e, 0xff, 0xff, 0xfb, 0x00 - ,0x11, 0x00, 0x00, 0x01, 0x6a, 0xa9, 0x40, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x03, 0x56, 0x65, 0x30, 0x00, 0x00 - ,0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xa2, 0x00 - ,0x08, 0xfe, 0x96, 0x8f, 0x95, 0x6a, 0xff, 0x30 - ,0x6f, 0x90, 0x01, 0xf8, 0x00, 0x00, 0x3e, 0xd0 - ,0xec, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x06, 0xf0 - ,0xf6, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x04, 0xf0 - ,0xf7, 0x00, 0x07, 0xf3, 0x00, 0x00, 0x09, 0xf0 - ,0xcd, 0x10, 0x01, 0xef, 0x72, 0x13, 0xaf, 0x90 - ,0x4d, 0x20, 0x00, 0x2d, 0xff, 0xff, 0xf9, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x47, 0x86, 0x10, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x90 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x39, 0xef, 0xf0 - ,0xfa, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xe9, 0x40 - ,0xfa, 0x00, 0x05, 0xbf, 0xff, 0x94, 0x00, 0x00 - ,0xfa, 0x18, 0xef, 0xfb, 0x50, 0x00, 0x00, 0x00 - ,0xfe, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x50, 0x00 - ,0x03, 0xad, 0xb4, 0x00, 0x7f, 0xff, 0xfc, 0x00 - ,0x3f, 0xfc, 0xff, 0x66, 0xfa, 0x43, 0xaf, 0xa0 - ,0xcd, 0x10, 0x1c, 0xfe, 0x70, 0x00, 0x0b, 0xf0 - ,0xf5, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x05, 0xf0 - ,0xf5, 0x00, 0x00, 0xbf, 0x10, 0x00, 0x04, 0xf0 - ,0xec, 0x00, 0x07, 0xff, 0xb0, 0x00, 0x0a, 0xf0 - ,0x6f, 0xd9, 0xcf, 0x78, 0xfb, 0x32, 0x9f, 0x90 - ,0x07, 0xef, 0xe6, 0x00, 0x9f, 0xff, 0xfb, 0x00 - ,0x00, 0x01, 0x00, 0x00, 0x03, 0x88, 0x50, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x03, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00 - ,0x04, 0xdf, 0xff, 0xfb, 0x10, 0x00, 0x0b, 0x60 - ,0x4f, 0xd7, 0x45, 0x9f, 0xd0, 0x00, 0x1c, 0xe0 - ,0xdd, 0x00, 0x00, 0x05, 0xf5, 0x00, 0x05, 0xf0 - ,0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0xf0 - ,0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x08, 0xf0 - ,0xbe, 0x20, 0x00, 0x06, 0xf2, 0x00, 0x5f, 0xa0 - ,0x2e, 0xf9, 0x54, 0x7f, 0x94, 0x7c, 0xfc, 0x00 - ,0x02, 0xaf, 0xff, 0xff, 0xff, 0xfe, 0x70, 0x00 - ,0x00, 0x01, 0x46, 0x77, 0x75, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x06, 0xa1, 0x00, 0x00, 0x09, 0x80 - ,0x00, 0x00, 0x1f, 0xf9, 0x00, 0x00, 0x6f, 0xf0 - ,0x00, 0x00, 0x0d, 0xf5, 0x00, 0x00, 0x3f, 0xe0 - ,0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xba, 0xae, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xe9, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x97, 0x8c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x75, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x75, 0x6a, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfd, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xa8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x2c, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xdd, 0x78, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xf2, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xf0, 0x00, 0x4f, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0xea, 0x23, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x4f, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x01, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10 - ,0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x00, 0x00, 0x9f, 0xa7, 0x77, 0x77, 0x77, 0x70 - ,0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x02, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0xff, 0xcb, 0xbb, 0xbb, 0xbb, 0xb0 - ,0x00, 0x00, 0x4f, 0xfe, 0xee, 0xee, 0xee, 0xe0 - ,0x00, 0x00, 0xab, 0x20, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x02, 0xfa, 0x55, 0x55, 0x55, 0x55, 0x50 - ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x00, 0x00, 0x02, 0x44, 0x44, 0x44, 0x44, 0x40 - }; - -#pragma romdata font_incon_42 = 0x0F500 - rom const rom unsigned char incon42[] = - { - // 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0xbf, 0xff, 0xc7, 0x65, 0x43, 0x22, 0x33, 0x57, 0xbf, 0xff, 0xfd, 0x20, 0x00 - ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x6e, 0xff, 0xd1, 0x00 - ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xfa, 0x00 - ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xcf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x4f, 0xfe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x07, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x5e, 0xff, 0xfb, 0x98, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -#if 0 -// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00 - ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00 - ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00 - ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#endif -// -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00 - ,0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00 - ,0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00 - ,0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00 - ,0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00 - ,0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00 - ,0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00 - ,0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00 - ,0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00 - ,0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00 - ,0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00 - ,0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00 - ,0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00 - ,0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00 - ,0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00 - ,0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00 - ,0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00 - ,0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00 - ,0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00 - ,0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00 - ,0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00 - ,0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00 - ,0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00 - ,0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00 - ,0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00 - ,0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00 - ,0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40 - ,0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20 - ,0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00 - ,0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00 - ,0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00 - ,0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00 - ,0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00 - ,0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00 - ,0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00 - ,0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00 - ,0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00 - ,0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00 - ,0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -#if 0 -#pragma romdata font_incon_42 = 0x0E000 - rom const rom unsigned char incon42[] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00 - ,0x00, 0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00 - ,0x00, 0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00 - ,0x00, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0x02, 0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x00, 0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x00, 0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x00, 0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00 - ,0x00, 0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00 - ,0x00, 0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00 - ,0x00, 0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00 - ,0x00, 0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00 - ,0x00, 0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00 - ,0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00 - ,0x00, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00 - ,0x00, 0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00 - ,0x00, 0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x00, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0x01, 0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x03, 0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0x00, 0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x00, 0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00 - ,0x00, 0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00 - ,0x00, 0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00 - ,0x00, 0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00 - ,0x01, 0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00 - ,0x02, 0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00 - ,0x01, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00 - ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00 - ,0x00, 0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00 - ,0x00, 0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00 - ,0x00, 0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x04, 0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x06, 0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0x06, 0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30 - ,0x03, 0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x00, 0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00 - ,0x00, 0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00 - ,0x00, 0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00 - ,0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00 - ,0x00, 0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00 - ,0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00 - ,0x00, 0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00 - ,0x00, 0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00 - ,0x01, 0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40 - ,0x05, 0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x06, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0x06, 0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20 - ,0x00, 0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x00, 0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00 - ,0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00 - ,0x00, 0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00 - ,0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00 - ,0x00, 0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00 - ,0x00, 0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0x00, 0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x05, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x06, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40 - ,0x04, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00 - ,0x00, 0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00 - ,0x00, 0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00 - ,0x00, 0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00 - ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00 - ,0x00, 0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; -#endif - -// ********************** -// ********************** -// ** THE JUMP-IN CODE ** -// ** for the asm code ** -// ********************** -// ********************** -#pragma code main_calc_hauptroutine = 0x10000 -void main_calc_hauptroutine(void) -{ -calc_hauptroutine(); -int_O_desaturation_time = 65535; -} // divemode -#pragma code main_without_deco = 0x10020 -void main_calc_without_deco(void) -{ -calc_without_deco(); -calc_desaturation_time(); -} - -#pragma code main_clear_CNS_fraction = 0x10030 -void main_clear_CNS_fraction(void) -{ -clear_CNS_fraction(); -} - -#pragma code main_calc_CNS_decrease_15min = 0x10034 -void main_calc_CNS_decrease_15min(void) -{ -calc_CNS_decrease_15min(); -} - -#pragma code main_calc_percentage = 0x10038 -void main_calc_percentage (void) -{ -calc_percentage(); -} - -#pragma code main_clear_tissue = 0x10040 -void main_clear_tissue(void) -{ -clear_tissue(); -char_I_depth_last_deco = 0; // for compatibility with v.101pre_no_last_deco -} - -#pragma code main_calc_CNS_fraction = 0x10050 -void main_calc_CNS_fraction(void) -{ -calc_CNS_fraction(); -} - -#pragma code main_calc_desaturation_time = 0x10060 -void main_calc_desaturation_time(void) -{ -calc_desaturation_time(); -} - -#pragma code main_calc_wo_deco_step_1_min = 0x10080 -void main_calc_wo_deco_step_1_min(void) -{ -calc_wo_deco_step_1_min(); -char_O_deco_status = 3; // surface new in v.102 overwrites value of calc_wo_deco_step_1_min -calc_desaturation_time(); -} // surface mode - -#pragma code main_debug = 0x100A0 -void main_debug(void) -{ -//debug(); -} - -#pragma code main_DD2_write_incon42 = 0x100B0 -void main_DD2_write_incon42(void) -{ - DD2_write_incon42(); -} - -#pragma code main_DD2_write_incon24 = 0x100B4 -void main_DD2_write_incon24(void) -{ - DD2_write_incon24(); -} - -#pragma code main_gradient_array = 0x100C0 -void main_gradient_array(void) -{ -calc_gradient_array_only(); -} -#pragma code main_push_tissues = 0x100C4 -void main_push_tissues_to_vault(void) -{ - push_tissues_to_vault(); -} -#pragma code main_pull_tissues = 0x100C8 -void main_pull_tissues_from_vault(void) -{ - pull_tissues_from_vault(); -} - -#pragma code main_hash = 0x100E0 -void main_hash(void) -{ -hash(); -} - -// *********************** -// *********************** -// ** THE LOOKUP TABLES ** -// *********************** -// *********************** - -#pragma romdata tables = 0x10200 -#include // new table for deco_main_v.101 (var_a modified) - -#pragma romdata tables2 = 0x10600 -rom const rom unsigned int md_pi[] = -{ - 0x292E, 0x43C9, 0xA2D8, 0x7C01, 0x3D36, 0x54A1, 0xECF0, 0x0613 - , 0x62A7, 0x05F3, 0xC0C7, 0x738C, 0x9893, 0x2BD9, 0xBC4C, 0x82CA - , 0x1E9B, 0x573C, 0xFDD4, 0xE016, 0x6742, 0x6F18, 0x8A17, 0xE512 - , 0xBE4E, 0xC4D6, 0xDA9E, 0xDE49, 0xA0FB, 0xF58E, 0xBB2F, 0xEE7A - , 0xA968, 0x7991, 0x15B2, 0x073F, 0x94C2, 0x1089, 0x0B22, 0x5F21 - , 0x807F, 0x5D9A, 0x5A90, 0x3227, 0x353E, 0xCCE7, 0xBFF7, 0x9703 - , 0xFF19, 0x30B3, 0x48A5, 0xB5D1, 0xD75E, 0x922A, 0xAC56, 0xAAC6 - , 0x4FB8, 0x38D2, 0x96A4, 0x7DB6, 0x76FC, 0x6BE2, 0x9C74, 0x04F1 - , 0x459D, 0x7059, 0x6471, 0x8720, 0x865B, 0xCF65, 0xE62D, 0xA802 - , 0x1B60, 0x25AD, 0xAEB0, 0xB9F6, 0x1C46, 0x6169, 0x3440, 0x7E0F - , 0x5547, 0xA323, 0xDD51, 0xAF3A, 0xC35C, 0xF9CE, 0xBAC5, 0xEA26 - , 0x2C53, 0x0D6E, 0x8528, 0x8409, 0xD3DF, 0xCDF4, 0x4181, 0x4D52 - , 0x6ADC, 0x37C8, 0x6CC1, 0xABFA, 0x24E1, 0x7B08, 0x0CBD, 0xB14A - , 0x7888, 0x958B, 0xE363, 0xE86D, 0xE9CB, 0xD5FE, 0x3B00, 0x1D39 - , 0xF2EF, 0xB70E, 0x6658, 0xD0E4, 0xA677, 0x72F8, 0xEB75, 0x4B0A - , 0x3144, 0x50B4, 0x8FED, 0x1F1A, 0xDB99, 0x8D33, 0x9F11, 0x8314 -}; - -// ********************* -// ********************* -// ** THE SUBROUTINES ** -// ********************* -// ********************* - -#pragma code subroutines = 0x10700 // can be adapted to fit the romdata tables ahead - - -// --------------- -// CLEAR tissue // -// --------------- -// optimized in v.101 (var_a) - -void clear_tissue(void) // preload tissues with standard pressure for the given ambient pressure -{ -_asm -lfsr 1, 0x300 // C math routines shall use this variable bank -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -// N2_ratio = (float)char_I_N2_ratio; // the 0.0002 of 0.7902 are missing with standard air - N2_ratio = 0.7902; // N2_ratio / 100.0; - pres_respiration = (float)int_I_pres_respiration / 1000.0; -for (ci=0;ci<16;ci++) // cycle through the 16 b"uhlmann tissues -{ - pres_tissue[ci] = N2_ratio * (pres_respiration - 0.0627) ; -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x80 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -_endasm - -pres_tissue_limit[ci] = (pres_tissue[ci] - var_a) * var_b ; -// now update the guiding tissue -if (pres_tissue_limit[ci] < 0) -pres_tissue_limit[ci] = 0; -} // for 0 to 16 - -for (ci=16;ci<32;ci++) // cycle through the 16 b"uhlmann tissues for Helium -{ - pres_tissue[ci] = 0.0; -} // for - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - char_O_gradient_factor = 0; - char_O_relative_gradient_GF = 0; -} // clear_tissue(void) - - -// -------------------- -// calc_without_deco // -// fixed N2_ratio ! // -// -------------------- -// optimized in v.101 (float_..saturation_multiplier) - -void calc_without_deco(void) -{ -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED RATIO !! sum as stated in b"uhlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does apply to the pressure without any inert ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_without_deco - - -// -------------------- -// calc_hauptroutine // -// -------------------- -// this is the major code in dive mode -// calculates: -// the tissues, -// the bottom time -// and simulates the ascend with all deco stops - -void calc_hauptroutine(void) -{ - calc_hauptroutine_data_input(); - calc_hauptroutine_update_tissues(); - calc_gradient_factor(); - - - switch (char_O_deco_status) // toggle between calculation for nullzeit (bottom time), deco stops and more deco stops (continue) - { - case 0: - update_startvalues(); - calc_nullzeit(); - char_O_deco_status = 255; // calc deco next time - break; - case 1: - if (char_O_deco_status == 3) - break; - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); - break; - case 3: // new dive - clear_decoarray(); - clear_internal_deco_table_GF(); - copy_deco_table_GF(); - internal_deco_pointer = 0; - lock_GF_depth_list = 0; - update_startvalues(); - calc_nextdecodepth_GF(); - char_O_deco_status = 0; - break; - default: - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - output[6] = 1; - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - break; - } - calc_ascenttime(); -} - -void calc_hauptroutine_data_input(void) -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; - pres_surface = (float)int_I_pres_surface / 1000.0; - - N2_ratio = (float)char_I_N2_ratio / 100.0;; // the 0.0002 of 0.7902 are missing with standard air - He_ratio = (float)char_I_He_ratio / 100.0;; - deco_N2_ratio = (float)char_I_deco_N2_ratio / 100.0; - deco_He_ratio = (float)char_I_deco_He_ratio / 100.0; - float_deco_distance = (float)char_I_deco_distance / 100.0; - deco_gas_change = (float)char_I_deco_gas_change / 9.995 + pres_surface; - deco_gas_change = deco_gas_change + float_deco_distance; - const_ppO2 = (float)char_I_const_ppO2 / 100.0; - deco_ppO2_change = (float)char_I_deco_ppO2_change / 99.95 + pres_surface; - deco_ppO2_change = deco_ppO2_change + float_deco_distance; - deco_ppO2 = (float)char_I_deco_ppO2 / 100.0; - float_desaturation_multiplier = (float)char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = (float)char_I_saturation_multiplier / 100.0; - GF_low = (float)char_I_GF_Low_percentage / 100.0; - GF_high = (float)char_I_GF_High_percentage / 100.0; - GF_delta = GF_high - GF_low; - - temp2 = (pres_respiration - pres_surface) / 0.29985; - int_temp = (int)(temp2); - if (int_temp < 0) - int_temp = 0; - if (int_temp > 255) - int_temp = 255; - char_O_actual_pointer = int_temp; - - temp_depth_last_deco = (int)char_I_depth_last_deco; -} - -void calc_hauptroutine_update_tissues(void) -{ - int_O_calc_tissue_call_counter = int_O_calc_tissue_call_counter + 1; - if (char_I_const_ppO2 == 0) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - else // new in v.101 - pres_diluent = ((pres_respiration - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - if (pres_diluent > pres_respiration) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - if (pres_diluent > 0.0627) // new in v.101 - { - temp_atem = N2_ratio * (pres_diluent - 0.0627); // changed in v.101 - temp2_atem = He_ratio * (pres_diluent - 0.0627); // changed in v.101 - char_O_diluent = (char)(pres_diluent/pres_respiration*100.0); - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - char_O_diluent = 0; - } - temp_surface = pres_surface; - calc_tissue(); - int_O_gtissue_limit = (int)(pres_tissue_limit[char_O_gtissue_no] * 1000); - int_O_gtissue_press = (int)((pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]) * 1000); - if (char_I_deco_model == 1) - { - temp1 = temp1 * GF_high; - } - else - { - temp1 = temp_surface; - } - if (pres_gtissue_limit > temp1 && char_O_deco_status == 0) // if guiding tissue can not be exposed to surface pressure immediately - { - char_O_nullzeit = 0; // deco necessary - char_O_deco_status = 255; // calculate deco skip nullzeit calculation - } -} // calc_hauptroutine_update_tissues -void calc_hauptroutine_calc_deco(void) -{ - do - { - int_temp_decostatus = 0; - calc_nextdecodepth_GF(); - if (temp_depth_limit > 0) - { - if (char_I_const_ppO2 == 0) // new in v.101 - { - deco_diluent = temp_deco; // new in v.101 - if (temp_deco > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco > deco_ppO2_change) - { - deco_diluent = ((temp_deco - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - else - { - deco_diluent = ((temp_deco - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - } - if (deco_diluent > temp_deco) // new in v.101 - deco_diluent = temp_deco; // new in v.101 - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - update_internal_deco_table_GF(); - temp_decotime = 1; - update_decoarray(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) - int_temp_decostatus = 1; - } - else // if (temp_depth_limit > 0) - { - char_O_deco_status = 0; - } - } while (int_temp_decostatus == 1); - if (char_O_deco_status > 15) - { - char_O_deco_status = 1; - } - else - { - copy_deco_table_GF(); - char_O_deco_status = 0; - } -} - -void calc_hauptroutine_calc_ascend_to_deco(void) -{ - update_startvalues(); - char_O_deco_status = 0; - temp_deco = pres_respiration; - lock_GF_depth_list = 1; // new in v.102 - do // go up to first deco - { - int_temp_decostatus = 0; - temp_deco = temp_deco - 1.0; - if ( char_I_deco_model == 1) // new in v.102 , 4 = deep stops - temp_limit = temp_pres_gtissue_limit_GF_low; - else - temp_limit = temp_pres_gtissue_limit; - if ((temp_deco > temp_limit) && (temp_deco > pres_surface)) // changes in v.102 - { - lock_GF_depth_list = 0; // new in v.102, distance to first stop > 10 mtr. - output[6] = 0; - if (char_I_const_ppO2 == 0) // new in v.101 // calculate at half of the ascent - { - deco_diluent = temp_deco + 0.5; // new in v.101 - if (temp_deco + 0.5 > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco + 0.5 > deco_ppO2_change) - deco_diluent = ((temp_deco + 0.5 - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - else - deco_diluent = ((temp_deco + 0.5 - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - if (deco_diluent > (temp_deco +0.5)) // new in v.101 - deco_diluent = temp_deco + 0.5; // new in v.101 // calculate at half of the ascent - } - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) // 16 is the limit of calculations for one time slot - int_temp_decostatus = 1; - } - } while (int_temp_decostatus == 1); -} // calc_hauptroutine_calc_ascend_to_deco - -// -------------- -// calc_tissue // -// -------------- -// optimized in v.101 - -void calc_tissue(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_e2secs+1 // the order is confussing -TBLRDPOSTINC -movff TABLAT,var_e2secs // low byte first, high afterwards -TBLRDPOSTINC -movff TABLAT,var_e2secs+3 -TBLRD -movff TABLAT,var_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e2secs+1 -TBLRDPOSTINC -movff TABLAT,var2_e2secs -TBLRDPOSTINC -movff TABLAT,var2_e2secs+3 -TBLRD -movff TABLAT,var2_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -_endasm - // the start values are the previous end values // write new values in temp - -// N2 - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e2secs; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e2secs; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if -} // for -}//calc_tissue(void) - -// ---------------- -// calc_nullzeit // -// ---------------- -// calculates the remaining bottom time - -// unchanged in v.101 - -void calc_nullzeit(void) -{ - char_O_nullzeit = 0; - int_temp = 1; - do - { - backup_sim_pres_tissue(); - sim_tissue_10min(); - char_O_nullzeit = char_O_nullzeit + 10; - int_temp = int_temp + 1; - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 17); - if (int_temp == 255) - { - restore_sim_pres_tissue(); - char_O_nullzeit = char_O_nullzeit - 10; - } //if int_temp == 255] - int_temp = 1; - if (char_O_nullzeit < 60) - { - do - { - sim_tissue_1min(); - char_O_nullzeit = char_O_nullzeit + 1; - int_temp = int_temp + 1; // new in v.102a - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 10); - if (int_temp == 255) - char_O_nullzeit = char_O_nullzeit - 1; - } // if char_O_nullzeit < 60 -} //calc_nullzeit - -// ------------------------- -// backup_sim_pres_tissue // -// ------------------------- -void backup_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue_backup[x] = sim_pres_tissue[x]; - sim_pres_tissue_backup[x+16] = sim_pres_tissue[x+16]; - } -} // backup_sim - -// -------------------------- -// restore_sim_pres_tissue // -// -------------------------- -void restore_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = sim_pres_tissue_backup[x]; - sim_pres_tissue[x+16] = sim_pres_tissue_backup[x+16]; - } -} // restore_sim - -// ------------------ -// calc_ascenttime // -// ------------------ - -void calc_ascenttime(void) -{ -if (pres_respiration > pres_surface) - { - switch (char_O_deco_status) - { - case 2: - char_O_ascenttime = 255; - break; - case 1: - break; - default: - temp1 = pres_respiration - pres_surface + 0.6; // + 0.6 hence 1 minute ascent time from a depth of 4 meter on - if (temp1 < 0) - temp1 = 0; - if (temp1 > 255) - temp1 = 255; - char_O_ascenttime = (char)temp1; - - for(ci=0;ci<7;ci++) - { - x = char_O_ascenttime + char_O_array_decotime[ci]; - if (x < char_O_ascenttime) - char_O_ascenttime = 255; - else - char_O_ascenttime = x; - } - } - } -else - char_O_ascenttime = 0; -} // calc_ascenttime() - - -// --------------------- -// update_startvalues // -// --------------------- -// updated in v.102 - -void update_startvalues(void) -{ - temp_pres_gtissue_limit = pres_gtissue_limit; - temp_pres_gtissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; - - temp_gtissue_no = char_O_gtissue_no; - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = pres_tissue[x]; - sim_pres_tissue[x+16] = pres_tissue[x+16]; - sim_pres_tissue_limit[x] = pres_tissue_limit[x]; - } -} // update_startvalues - - -// ------------------ -// sim_tissue_1min // -// ------------------ -// optimized in v.101 - -void sim_tissue_1min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit - temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_1min() - -//-------------------- -// sim_tissue_10min // -//-------------------- - -// Attention!! uses var_e1min und var2_e1min to load 10min data !!! -// is identical to sim_tissue_1min routine except for the different load of those variables - -// optimized in v.101 - -void sim_tissue_10min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 // different to 1 min -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -//incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit -temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - -sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_10min() - - -// ------------------ -// clear_decoarray // -// ------------------ -// unchanged in v.101 - -void clear_decoarray(void) -{ -char_O_array_decodepth[0] = 0; -char_O_array_decodepth[1] = 0; -char_O_array_decodepth[2] = 0; -char_O_array_decodepth[3] = 0; -char_O_array_decodepth[4] = 0; -char_O_array_decodepth[5] = 0; -char_O_array_decotime[0] = 0; -char_O_array_decotime[1] = 0; -char_O_array_decotime[2] = 0; -char_O_array_decotime[3] = 0; -char_O_array_decotime[4] = 0; -char_O_array_decotime[5] = 0; -char_O_array_decotime[6] = 0; -} // clear_decoarray - - -// ------------------- -// update_decoarray // -// ------------------- -// unchanged in v.101 - -void update_decoarray() -{ - x = 0; - do - { - if (char_O_array_decodepth[x] == temp_depth_limit) - { - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp < 0) - int_temp = 0; - if (int_temp > 240) - int_temp = 240; - char_O_array_decotime[x] = int_temp; - x = 10; // exit - } // if - else - { - if (char_O_array_decodepth[x] == 0) - { - if (temp_depth_limit > 255) - char_O_array_decodepth[x] = 255; - else - char_O_array_decodepth[x] = (char)temp_depth_limit; - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp > 240) - char_O_array_decotime[x] = 240; - else - char_O_array_decotime[x] = (char)int_temp; - x = 10; // exit - } // if - else - x++; - } // else - } while (x<6); - if (x == 6) - { - int_temp = char_O_array_decotime[6] + temp_decotime; - if (int_temp > 220) - char_O_array_decotime[6] = 220; - else - char_O_array_decotime[6] = (char)int_temp; - } // if x == 6 -} // update_decoarray - - -// ----------------------- -// calc_gradient_factor // -// ----------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_factor(void) -{ - // tissue > respiration (entsaettigungsvorgang) - // gradient ist wieviel prozent an limit mit basis tissue - // dh. 0% = respiration == tissue - // dh. 100% = respiration == limit - temp_tissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[char_O_gtissue_no]; // changed in v.102 - temp2 = temp1/temp2; - temp2 = temp2 * 100; // displayed in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_gradient_factor = 0; - else - char_O_gradient_factor = (char)temp2; - - temp3 = temp2; - - if (char_I_deco_model == 1) // calculate relative gradient factor - { - temp1 = (float)temp_depth_GF_low_meter * 0.09995; - temp2 = pres_respiration - pres_surface; - if (temp2 <= 0) - temp1 = GF_high; - else - if (temp2 >= temp1) - temp1 = GF_low; - else - temp1 = GF_low + (temp1 - temp2)/temp1*GF_delta; - if (temp_depth_GF_low_meter == 0) - temp1 = GF_high; - temp2 = temp3 / temp1; // temp3 is already in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - char_O_relative_gradient_GF = (char)temp2; - } // calc relative gradient factor - else - { - char_O_relative_gradient_GF = char_O_gradient_factor; - } -} // calc_gradient - -// --------------------------- -// calc_gradient_array_only // -// --------------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_array_only() -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system -for (ci=0;ci<16;ci++) -{ - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[ci]; - temp2 = temp1/temp2; - temp2 = temp2 * 200; // because of output in (Double-)percentage - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; - else - char_O_array_gradient_weighted[ci] = (char)temp2; -} // for -} // calc_gradient_array_only - - -// ------------------------- -// calc_desaturation_time // -// ------------------------- -// FIXED N2_ratio -// unchanged in v.101 - -void calc_desaturation_time(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - N2_ratio = 0.7902; // FIXED sum as stated in b"uhlmann - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_surface - 0.0627); - int_O_desaturation_time = 0; - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x04 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var_halftimes -TBLRDPOSTINC -movff TABLAT,var_halftimes+3 -TBLRD -movff TABLAT,var_halftimes+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var2_halftimes -TBLRDPOSTINC -movff TABLAT,var2_halftimes+3 -TBLRD -movff TABLAT,var2_halftimes+2 -_endasm - -// saturation_time (for flight) and N2_saturation in multiples of halftime -// version v.100: 1.1 = 10 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// new in version v.101: 1.07 = 7 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// changes in v.101: 1.05 = 5 percent dist to totally clean is new desaturation point for display and noFly calculations -// N2 - temp1 = 1.05 * temp_atem; - temp1 = temp1 - pres_tissue[ci]; - temp2 = temp_atem - pres_tissue[ci]; - if (temp2 >= 0.0) - { - temp1 = 0; - temp2 = 0; - } - else - temp1 = temp1 / temp2; - if (temp1 > 0.0) - { - temp1 = log(1.0 - temp1); - temp1 = temp1 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - 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 - } - else - { - temp1 = 0; - temp2 = 0; - } - -// He - temp3 = 0.1 - pres_tissue[ci+16]; -if (temp3 >= 0.0) - { - temp3 = 0; - temp4 = 0; - } - else - temp3 = -1.0 * temp3 / pres_tissue[ci+16]; - if (temp3 > 0.0) - { - temp3 = log(1.0 - temp3); - temp3 = temp3 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - temp4 = var2_halftimes * temp3 / float_desaturation_multiplier; // time necessary (in minutes ) for "complete" desaturation, new in v.101 float_desaturation_multiplier - } - else - { - temp3 = 0; - temp4 = 0; - } - -// saturation_time (for flight) - if (temp4 > temp2) - int_temp = (int)temp4; - else - int_temp = (int)temp2; - if(int_temp > int_O_desaturation_time) - int_O_desaturation_time = int_temp; - -// N2 saturation in multiples of halftime for display purposes - temp2 = temp1 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp2 = temp2 + 80.0; // set center - if (temp2 < 0.0) - temp2 = 0.0; - if (temp2 > 255.0) - temp2 = 255.0; - char_O_tissue_saturation[ci] = (char)temp2; -// He saturation in multiples of halftime for display purposes - temp4 = temp3 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp4 = temp4 + 80.0; // set center - if (temp4 < 0.0) - temp4 = 0.0; - if (temp4 > 255.0) - temp4 = 255.0; - char_O_tissue_saturation[ci+16] = (char)temp4; -} // for -} // calc_desaturation_time - - -// -------------------------- -// calc_wo_deco_step_1_min // -// -------------------------- -// FIXED N2 Ratio -// optimized in v.101 (...saturation_multiplier) -// desaturation slowed down to 70,42% - -void calc_wo_deco_step_1_min(void) -{ -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED, sum lt. buehlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does not use the N2_ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue_step_1_min(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_wo_deco_step_1_min(void) - - -// ------------------------- -// calc_tissue_step_1_min // -// ------------------------- -// optimized in v.101 - -void calc_tissue_step_1_min(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm - -// N2 1 min - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He 1 min - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if - -// gradient factor array for graphical display -// display range is 0 to 250! in steps of 5 for 1 pixel -// the display is divided in 6 blocks -// -> double the gradient 100% = 200 -// tissue > respiration (entsaettigungsvorgang) -// gradient ist wieviel prozent an limit von tissue aus -// dh. 0% = respiration == tissue -// dh. 100% = respiration == limit -temp1 = temp_tissue - pres_respiration; -temp2 = temp_tissue - pres_tissue_limit[ci]; // changed in v.102 -temp2 = temp1/temp2; -temp2 = temp2 * 200; // because of output in (Double-)percentage -if (temp2 < 0) - temp2 = 0; -if (temp2 > 255) - temp2 = 255; -if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; -else - char_O_array_gradient_weighted[ci] = (char)temp2; - -} // for -} // calc wo deco 1min - -#if 0 -// -------- -// debug // -// -------- -void debug(void) -{ -for (ci=0;ci<32;ci++) -{ - int_O_tissue_for_debug[ci] = (unsigned int)(pres_tissue[ci] *1000); -} -} // void debug(void) -#endif - -// ---------- -// md hash // -// ---------- -void hash(void) -{ -// init - for (md_i=0;md_i<16;md_i++) - { - md_state[md_i] = 0; - md_cksum[md_i] = 0; - } // for md_i 16 - -_asm - movlw 0x01 - movwf TBLPTRU,0 - movlw 0x06 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i] = md_temp; - } // for md_i 256 -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[127] = md_temp; - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i+128] = md_temp; - } // for md_i 256 -_asm - TBLRD - movff TABLAT,md_temp -_endasm - md_pi_subst[255] = md_temp; - -_asm - movlw 0x00 - movwf TBLPTRU,0 - movlw 0x00 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm -// cycle buffers -for (md_pointer=0x0000;md_pointer<0x17f3;md_pointer++) -{ - md_t = 0; - for (md_i=0;md_i<16;md_i++) - { - if(md_pointer == 9) - md_temp = md_cksum[md_i]; - else - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - } // else - md_buffer[md_i] = md_temp; - md_state[md_i+16] = md_buffer[md_i]; - md_state[md_i+32] = (unsigned char)(md_buffer[md_i] ^ md_state[md_i]); - } // for md_i 16 - - for (md_i=0;md_i<18;md_i++) - { - for (md_j=0;md_j<48;md_j++) - { - md_state[md_j] = (unsigned char)(md_state[md_j] ^ md_pi_subst[md_t]); - md_t = md_state[md_j]; - } // for md_j 48 - md_t = (unsigned char)(md_t+1); - } // for md_i 18 - md_t = md_cksum[15]; - - for (md_i=0;md_i<16;md_i++) - { - md_cksum[md_i] = (unsigned char)(md_cksum[md_i] ^ md_pi_subst[(md_buffer[md_i] ^ md_t)]); - md_t = md_cksum[md_i]; - } // for md_i 16 -} // for md_pointer -} // void hash(void) - -// --------------------- -// clear_CNS_fraction // -// --------------------- -// new in v.101 - -void clear_CNS_fraction(void) -{ - CNS_fraction = 0.0; - char_O_CNS_fraction = 0; -} // void clear_CNS_fraction(void) - - -// -------------------- -// calc_CNS_fraction // -// -------------------- -// new in v.101 -// optimized in v.102 : with new variables char_I_actual_ppO2 and actual_ppO2 - -// Input: char_I_actual_ppO2 -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction -// Uses: acutal_ppO2 - -void calc_CNS_fraction(void) -{ - actual_ppO2 = (float)char_I_actual_ppO2 / 100.0; - - if (char_I_actual_ppO2 < 50) - CNS_fraction = CNS_fraction;// no changes - else if (char_I_actual_ppO2 < 60) - CNS_fraction = 1/(-54000.0 * actual_ppO2 + 54000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 70) - CNS_fraction = 1/(-45000.0 * actual_ppO2 + 48600.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 80) - CNS_fraction = 1/(-36000.0 * actual_ppO2 + 42300.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 90) - CNS_fraction = 1/(-27000.0 * actual_ppO2 + 35100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 110) - CNS_fraction = 1/(-18000.0 * actual_ppO2 + 27000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 150) - CNS_fraction = 1/(-9000.0 * actual_ppO2 + 17100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 160) - CNS_fraction = 1/(-22500.0 * actual_ppO2 + 37350.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 165) - 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 - else if (char_I_actual_ppO2 < 170) - CNS_fraction = 0.00102 + CNS_fraction; // example calculation: Sqrt((1.7/1.55)^20)*0.000404 - else if (char_I_actual_ppO2 < 175) - CNS_fraction = 0.00136 + CNS_fraction; - else if (char_I_actual_ppO2 < 180) - CNS_fraction = 0.00180 + CNS_fraction; - else if (char_I_actual_ppO2 < 185) - CNS_fraction = 0.00237 + CNS_fraction; - else if (char_I_actual_ppO2 < 190) - CNS_fraction = 0.00310 + CNS_fraction; - else if (char_I_actual_ppO2 < 195) - CNS_fraction = 0.00401 + CNS_fraction; - else if (char_I_actual_ppO2 < 200) - CNS_fraction = 0.00517 + CNS_fraction; - else if (char_I_actual_ppO2 < 230) - CNS_fraction = 0.0209 + CNS_fraction; - else - CNS_fraction = 0.0482 + CNS_fraction; // value for 2.5 - - if (CNS_fraction > 2.5) - CNS_fraction = 2.5; - if (CNS_fraction < 0.0) - CNS_fraction = 0.0; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -} // void calc_CNS_fraction(void) - -// -------------------------- -// calc_CNS_decrease_15min // -// -------------------------- -// new in v.101 - -// calculates the half time of 90 minutes in 6 steps of 15 min - -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction - -void calc_CNS_decrease_15min(void) -{ - CNS_fraction = 0.890899 * CNS_fraction; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -}// calc_CNS_decrease_15min(void) - - -// ------------------ -// calc_percentage // -// ------------------ -// new in v.101 - -// calculates int_I_temp * char_I_temp / 100 -// output is int_I_temp - -void calc_percentage(void) -{ - temp1 = (float)int_I_temp; - temp2 = (float)char_I_temp / 100.0; - temp3 = temp1 * temp2; - int_I_temp = (int)temp3; -} -void push_tissues_to_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue_vault[ci] = pres_tissue[ci]; -} -void pull_tissues_from_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue[ci] = pres_tissue_vault[ci]; -} diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/old/p2_deco_main_old_v108_pre OSTC2.c --- a/code_part1/OSTC_code_c_part2/old/p2_deco_main_old_v108_pre OSTC2.c Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3753 +0,0 @@ -/* - * p2_deco_main_c_v108.c - * - * Created on: 12.05.2009 - * Author: chsw - * - * Changes: debug / plausibiliy output - */ - -//#include - - -// OSTC - diving computer code -// Copyright (C) 2008 HeinrichsWeikamp GbR - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - - -// ***************************** -// ** I N T R O D U C T I O N ** -// ***************************** -// -// OSTC -// -// code: -// p2_deco_main_c_v101.c -// part2 of the OSTC code -// code with constant O2 partial pressure routines -// under construction !! -// -// summary: -// decompression routines -// for the OSTC experimental project -// written by Christian Weikamp -// last revision __________ -// comments added _________ -// -// additional files: -// p2_tables_v100.romdata (other files) -// 18f4685_ostc_v100.lkr (linker script) -// -// history: -// 01/03/08 v100: first release candidate -// 03/13/08 v101: start of programming ppO2 code -// 03/13/25 v101a: backup of interrim version with ppO2 calculation -// 03/13/25 v101: open circuit gas change during deco -// 03/13/25 v101: CNS_fraction calculation -// 03/13/26 v101: optimization of tissue calc routines -// 07/xx/08 v102a: debug of bottom time routine -// 09/xx/08 v102d: Gradient Factor Model implemenation -// 10/10/08 v104: renamed to build v103 for v118 stable -// 10/14/08 v104: integration of temp_depth_last_deco for Gradient Model -// 03/31/090 v107: integration of FONT Incon24 - -// -// literature: -// B"uhlmann, Albert: Tauchmedizin; 4. Auflage; -// 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 -// Morrison, Stuart; 2000; DIY DECOMPRESSION; http://www.lizardland.co.uk/DIYDeco.html -// Balthasar, Steffen; Dekompressionstheorie I: Neo Haldane Modelle; http://www.txfreak.de/dekompressionstheorie_1.pdf -// Baker, Erik C.; Clearing Up The Confusion About "Deep Stops" -// Baker, Erik C.; Understanding M-values; http://www.txfreak.de/understanding_m-values.pdf - - -// ********************* -// ** I N C L U D E S ** -// ********************* - #include - #include - -// ******************************** -// ** C O N F I G U R A T I O N ** -// ** for simulation without asm ** -// ******************************** - #pragma config OSC = IRCIO67 - #pragma config FCMEN = OFF - #pragma config IESO = OFF - #pragma config PWRT = ON - #pragma config BOREN = OFF - #pragma config WDT = OFF - #pragma config WDTPS = 128 - #pragma config MCLRE = ON - #pragma config LPT1OSC = OFF - #pragma config PBADEN = OFF - #pragma config DEBUG = OFF - #pragma config XINST = OFF - #pragma config LVP = OFF - #pragma config STVREN = OFF - -// **************************** -// ** D E F I N E S ** -// ** missing in p18f4685.h ** -// **************************** -#define INT0IF 1 -#define INT1IF 0 -#define TMR1IF 0 - -#define oled_clk PORTD, 0,0 -#define oled_data PORTD, 1,0 -#define oled_en PORTE, 0,0 -#define oled_rs PORTE, 1,0 -#define flag5 0x29 // in Bank1 -//#define no_sensor_int flag5,7,1 // ; block any further access to pressure sensor - -# define DBG_c_gas 0b0000000000000001 -# define DBG_c_ppO2 0b0000000000000010 -# define DBG_RUN 0b0000000000000100 -# define DBG_RESTART 0b0000000000001000 - -# define DBG_CdeSAT 0b0000000000010000 -# define DBG_C_MODE 0b0000000000100000 -# define DBG_C_SURF 0b0000000001000000 -# define DBG_HEwoHE 0b0000000010000000 - -# define DBG_C_DPPO2 0b0000000100000000 -# define DBG_C_DGAS 0b0000001000000000 -# define DBG_C_DIST 0b0000010000000000 -# define DBG_C_LAST 0b0000100000000000 - -# define DBG_C_GF 0b0001000000000000 -# define DBG_ZH16ERR 0b0010000000000000 -# define DBG_PHIGH 0b0100000000000000 -# define DBG_PLOW 0b1000000000000000 - - -# define DBS_mode 0b0000000000000001 -# define DBS_ppO2 0b0000000000000010 -# define DBS_HE_sat 0b0000000000000100 -# define DBS_ppO2chg 0b0000000000001000 - -# define DBS_SAT2l 0b0000000000010000 -# define DBS_SAT2h 0b0000000000100000 -# define DBS_GFLOW2l 0b0000000001000000 -# define DBS_GFLOW2h 0b0000000010000000 - -# define DBS_GFHGH2l 0b0000000100000000 -# define DBS_GFHGH2h 0b0000001000000000 -# define DBS_GASO22l 0b0000010000000000 -# define DBS_GASO22h 0b0000100000000000 - -# define DBS_DIST2h 0b0001000000000000 -# define DBS_LAST2h 0b0010000000000000 -# define DBS_DECOO2l 0b0100000000000000 -# define DBS_DECOO2h 0b1000000000000000 - - -# define DBS2_PRES2h 0b0000000000000001 -# define DBS2_PRES2l 0b0000000000000010 -# define DBS2_SURF2l 0b0000000000000100 -# define DBS2_SURF2h 0b0000000000001000 - -# define DBS2_DESAT2l 0b0000000000010000 -# define DBS2_DESAT2h 0b0000000000100000 -# define DBS2_GFDneg 0b0000000001000000 -# define DBS2_ 0b000000000000000 - -# define DBS2_ 0b000000000000000 -# define DBS2_ 0b000000000000000 -# define DBS2_ 0b000000000000000 -# define DBS2_ 0b000000000000000 - -// NDL_at_20mtr - - -// *********************** -// ** V A R I A B L E S ** -// *********************** -// prefixes etc: -// _O_ = output for use in the assembler code -// _I_ = input from the assembler code for the c code -// char_ and int_ = used to identify output and input size -// var = variable (from b"uhlmann) -// pres = pressure -// gtissue = guiding tissue, the one limiting the ascent -// e2secs = exp of the b"uhlmann formula precalculated for a 2 second step -// e1min = same for 1 minute step -// sim = used in simulating the ascent to the surface -// nullzeit = remaining ground/bottom time for "no deco" -// hauptroutine = main - -#pragma udata bank0a=0x060 -volatile unsigned char dd2_stringstore[17]; -#pragma udata bank0b=0x071 -volatile unsigned char keep_free_bank0[21]; - -#pragma udata bank0c=0x086 -volatile unsigned char dd2_left; // 1 - 64 -volatile unsigned char dd2_top; // 1 - 64 -volatile unsigned char dd2_heightmax; // 1 - 37 -volatile unsigned char dd2_oled_brightness_offset; // 0 - 15 (15 is pitch black always) -volatile unsigned char dd2_fontwidth; // 8, 12, 21 for Incon16, Incon24, Incon42 -volatile unsigned char dd2_fontheight; // 14, 21, 37 for " -volatile unsigned long dd2_pointer; // for font lut -volatile unsigned char dd2_i; -volatile unsigned char dd2_j; -volatile unsigned char dd2_k; -volatile unsigned char dd2_char; -volatile unsigned char dd2_lowbyte; -volatile unsigned char dd2_temp; -volatile unsigned char dd2_data; -volatile unsigned long dd2_base; // for font lut -volatile unsigned char dd2_start; // for font lut -volatile unsigned char dd2_end; // for font lut - - - #pragma udata bank1=0x100 - const unsigned char keep_free_bank1[256]; // used by the assembler code - - #pragma udata bank2a=0x200 -// output: - static unsigned int int_O_tissue_for_debug[32]; - static unsigned int int_O_GF_spare____; // 0x240 - static unsigned int int_O_GF_step; // 0x242 - static unsigned int int_O_gtissue_limit; // 0x244 - static unsigned int int_O_gtissue_press; // 0x246 - static unsigned int int_O_limit_GF_low; // 0x248 - static unsigned int int_O_gtissue_press_at_GF_low; // 0x24A -// ... - #pragma udata bank2b=0x24E - static unsigned char char_O_GF_low_pointer; // 0x24E - static unsigned char char_O_actual_pointer; // 0x24F - #pragma udata bank2c=0x250 - static unsigned char char_O_deco_table[32]; // 0x250 - #pragma udata bank2d=0x270 - static unsigned char char_I_table_deco_done[32]; - #pragma udata bank2e=0x290 - static unsigned int int_O_calc_tissue_call_counter; // 0x290 -// internal: - unsigned char lock_GF_depth_list; - static float temp_limit; - static float GF_low; - static float GF_high; - static float GF_delta; - static float GF_temp; - static float GF_step; - static float GF_step2; - static float temp_pres_gtissue; - static float temp_pres_gtissue_diff; - static float temp_pres_gtissue_limit_GF_low; - static float temp_pres_gtissue_limit_GF_low_below_surface; - static unsigned int temp_depth_limit; - static unsigned char temp_decotime; - static unsigned char temp_gtissue_no; - static unsigned int temp_depth_last_deco; // new in v.101 - - static unsigned char temp_depth_GF_low_meter; - static unsigned char temp_depth_GF_low_number; - static unsigned char internal_deco_pointer; - static unsigned char internal_deco_table[32]; - static float temp_pres_deco_GF_low; - -static unsigned int debug_temp; - - -#pragma udata bank3a=0x300 -static char output[32]; -// used by the math routines -#pragma udata bank3b=0x380 -volatile float pres_tissue_vault[32]; - #pragma udata bank4a=0x400 -// internal: - unsigned char ci ; // don't move - used in _asm routines - if moved then modify movlb commands - unsigned char x; - unsigned int main_i; - unsigned int int_temp; - unsigned int int_temp_decostatus; - static float pres_respiration; - static float pres_surface; - static float temp1; - static float temp2; - static float temp3; - static float temp4; - static float temp_deco; - static float temp_atem; - static float temp2_atem; - static float temp_tissue; - static float temp_surface; - static float N2_ratio; - static float He_ratio; - static float temp_ratio; - static float var_a; - static float var2_a; - static float var_b; - static float var2_b; - static float var_t05nc; - static float var2_t05nc; - static float var_e2secs; - static float var2_e2secs; - static float var_e1min; - static float var2_e1min; - static float var_halftimes; - static float var2_halftimes; - static float pres_gtissue_limit; - static float temp_pres_gtissue_limit; - static float actual_ppO2; // new in v.102 - #pragma udata bank4b=0x480 - static float pres_tissue[32]; - - #pragma udata bank5=0x500 -// don't move positions in this bank, the registers are addressed directly from assembler code -// input: - static unsigned int int_I_pres_respiration; // 0x500 - static unsigned int int_I_pres_surface; // 0x502 - static unsigned int int_I_temp; // 0x504 new in v101 - static unsigned char char_I_temp; // 0x506 new in v101 - static unsigned char char_I_actual_ppO2; // 0x507 - static unsigned int int_I_spare_3; - static unsigned int int_I_spare_4; - static unsigned int int_I_spare_5; - static unsigned int int_I_spare_6; - static unsigned char char_I_N2_ratio; // 0x510 - static unsigned char char_I_He_ratio; // 0x511 - static unsigned char char_I_saturation_multiplier; // for conservatism/safety values 1.0 (no conservatism) to 1.5 (50% faster saturation - 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() - static unsigned char char_I_GF_High_percentage; // 0x514 new in v.102 - static unsigned char char_I_GF_Low_percentage; // 0x515 new in v.102 - static unsigned char char_I_spare; // 0x516 - static unsigned char char_I_deco_distance; // 0x517 - static unsigned char char_I_const_ppO2; // 0x518 new in v.101 - static unsigned char char_I_deco_ppO2_change; // 0x519 new in v.101 - static unsigned char char_I_deco_ppO2; // 0x51A new in v.101 - static unsigned char char_I_deco_gas_change; // 0x51B new in v.101 - static unsigned char char_I_deco_N2_ratio; // 0x51C new in v.101 - static unsigned char char_I_deco_He_ratio; // 0x51D new in v.101 - static unsigned char char_I_depth_last_deco; // 0x51E new in v.101 unit: [m] - static unsigned char char_I_deco_model; // 0x51F new in v.102 ( 1 = MultiGraF, sonst Std. mit (de-)saturation_multiplier) -// output: - static unsigned int int_O_desaturation_time; // 0x520 - static unsigned char char_O_nullzeit; // 0x522 - static unsigned char char_O_deco_status; // 0x523 - static unsigned char char_O_array_decotime[7]; // 0x524 - static unsigned char char_O_array_decodepth[6]; // 0x52B - static unsigned char char_O_ascenttime; // 0x531 - static unsigned char char_O_gradient_factor; // 0x532 - static unsigned char char_O_tissue_saturation[32]; // 0x533 - static unsigned char char_O_array_gradient_weighted[16]; // 0x553 - static unsigned char char_O_gtissue_no; // 0x563 - static unsigned char char_O_diluent; // 0x564 new in v.101 - static unsigned char char_O_CNS_fraction; // 0x565 new in v.101 - static unsigned char char_O_relative_gradient_GF; // 0x566 new in v.102 - -// internal: - static float pres_tissue_limit[16]; - static float sim_pres_tissue_limit[16]; - static float pres_diluent; // new in v.101 - static float deco_diluent; // new in v.101 - static float const_ppO2; // new in v.101 - static float deco_ppO2_change; // new in v.101 - static float deco_ppO2; // new in v.101 - - - - #pragma udata bank6=0x600 -// internal: - static float sim_pres_tissue[32]; - static float sim_pres_tissue_backup[32]; - - #pragma udata bank7=0x700 - const unsigned char keep_free_bank7[256]; // used by the assembler code (DD font2display) - - #pragma udata bank8=0x800 - static char md_pi_subst[256]; - - #pragma udata bank9a=0x900 -// output: - static char md_state[48]; // DONT MOVE !! // has to be at the beginning of bank 9 for the asm code!!! - #pragma udata bank9b=0x930 -// output: - static unsigned int int_O_DBS_bitfield; // 0x930 new in v.108 - static unsigned int int_O_DBS2_bitfield; // 0x932 new in v.108 - static unsigned int int_O_DBG_pre_bitfield; // 0x934 new in v.108 - static unsigned int int_O_DBG_post_bitfield; // 0x936 new in v.108 - static char char_O_NDL_at_20mtr; // 0x938 new in v.108 // 0xFF == undefined, max. 254 -// internal: - static char md_t; - static char md_buffer[16]; - static char md_cksum[16]; - static char md_i; - static char md_j; - static char md_temp; - static unsigned int md_pointer; - static float deco_N2_ratio; // new in v.101 - static float deco_He_ratio; // new in v.101 - static float calc_N2_ratio; // new in v.101 - static float calc_He_ratio; // new in v.101 - static float deco_gas_change; // new in v.101 - static float CNS_fraction; // new in v.101 - static float float_saturation_multiplier; // new in v.101 - static float float_desaturation_multiplier; // new in v.101 - static float float_deco_distance; // new in v.101 -// internal, dbg: - static unsigned char DBG_char_I_deco_model; // new in v.108 - static unsigned char DBG_char_I_depth_last_deco; // new in v.108 - static float DBG_pres_surface; // new in v.108 - static float DBG_GF_low; // new in v.108 - static float DBG_GF_high; // new in v.108 - static float DBG_const_ppO2; // new in v.108 - static float DBG_deco_ppO2_change; // new in v.108 - static float DBG_deco_ppO2; // new in v.108 - static float DBG_deco_N2_ratio; // new in v.108 - static float DBG_deco_He_ratio; // new in v.108 - static float DBG_deco_gas_change; // new in v.108 - static float DBG_float_saturation_multiplier; // new in v.108 - static float DBG_float_desaturation_multiplier; // new in v.108 - static float DBG_float_deco_distance; // new in v.108 - static float DBG_deco_N2_ratio; // new in v.108 - static float DBG_deco_He_ratio; // new in v.108 - static float DBG_N2_ratio; // new in v.108 - static float DBG_He_ratio; // new in v.108 - static char flag_in_divemode; // new in v.108 - static int int_dbg_i; // new in v.108 - unsigned int temp_DBS; - -// ************************* -// ** P R O T O T Y P E S ** -// ************************* -void main_calc_hauptroutine(void); -void main_calc_without_deco(void); -void main_clear_tissue(void); -void main_calc_percentage(void); -void main_calc_wo_deco_step_1_min(void); -void main_debug(void); -void main_gradient_array(void); -void main_hash(void); - -void calc_hauptroutine(void); -void calc_tissue(void); -void calc_nullzeit(void); -void backup_sim_pres_tissue(void); -void restore_sim_pres_tissue(void); - -void calc_without_deco(void); -void clear_tissue(void); -void calc_ascenttime(void); -void update_startvalues(void); -void clear_decoarray(void); -void update_decoarray(void); -void sim_tissue_1min(void); -void sim_tissue_10min(void); -void calc_gradient_factor(void); -void calc_gradient_array_only(void); -void calc_desaturation_time(void); -void calc_wo_deco_step_1_min(void); -void calc_tissue_step_1_min(void); -//void debug(void); -void hash(void); -void clear_CNS_fraction(void); -void calc_CNS_fraction(void); -void calc_CNS_decrease_15min(void); -void calc_percentage(void); -void main(void); -void calc_hauptroutine_data_input(void); -void calc_hauptroutine_update_tissues(void); -void calc_hauptroutine_calc_deco(void); -void calc_hauptroutine_calc_ascend_to_deco(void); -//void build_debug_output(void); -void calc_nextdecodepth_GF(void); -void copy_deco_table_GF(void); -void clear_internal_deco_table_GF(void); -void update_internal_deco_table_GF(void); -void DD2_write(void); -void DD2_write_incon42(void); -void DD2_get_pointer_to_char(void);//dd2_char, &dd2_pointer); -void DD2_set_column(void);//top, dd2_k);void DD2_load_background(void);//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); -void DD2_load_background(void); -void DD2_build_one_line_of_char(void);//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); -void DD2_print_column(void);//&dd2_columnstore, dd2_heightmax); -void DD2_CmdWrite(void); -void DD2_DataWrite(void); -void push_tissues_to_vault(void); -void pull_tissues_from_vault(void); -void main_push_tissues_to_vault(void); -void main_pull_tissues_from_vault(void); - -// ******************************* -// ** start ** -// ** necessary for compilation ** -// ******************************* -#pragma romdata der_code = 0x0000 -#pragma code der_start = 0x0000 -void der_start(void) -{ -_asm - goto main -_endasm -} - -// *********************************** -// ** main code for simulation / ** -// ** tests without assembler code ** -// ** is NOT a part of the OSTC ** -// *********************************** -#pragma code main = 0x9000 -void main(void) -{ -#if 1 -// new main to test DR-5 - -GF_low = 1.0; -GF_high = 1.0; - -GF_temp = GF_low * GF_high; - -clear_CNS_fraction(); -//char_I_const_ppO2 = 100; -//for (main_i=0;main_i<255;main_i++) -//{ -//calc_CNS_fraction(); -//} //for - - - - -int_I_pres_respiration = 1000;//980; -int_I_pres_surface = 1000;//980; -char_I_N2_ratio = 39; //38; -char_I_He_ratio = 40; //50; -char_I_deco_distance = 0; // 10 = 1 meter -char_I_depth_last_deco = 3; // values below 3 (meter) are ignored - -char_I_const_ppO2 = 0; -char_I_deco_ppO2_change = 0; // [dm] 10 = 1 meter -char_I_deco_ppO2 = 0; - -char_I_deco_gas_change = 0; // [m] 1 = 1 meter -char_I_deco_N2_ratio = 0; -char_I_deco_He_ratio = 0; - -//char_I_actual_ppO2; // 0x507 -char_I_GF_High_percentage = 100; // 0x514 new in v.102 -char_I_GF_Low_percentage = 100; // 0x515 new in v.102 - -char_I_saturation_multiplier = 110; -char_I_desaturation_multiplier = 90; - -char_I_deco_model = 0; - -main_clear_tissue(); - -int_I_pres_respiration = 1000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 3000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 5000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); - -/* -int_I_pres_respiration = 6000 + int_I_pres_surface; -for (main_i=0;main_i<27;main_i++) - main_calc_wo_deco_step_1_min(); -*/ - -char_O_deco_status = 255; -while (char_O_deco_status) - main_calc_hauptroutine(); -_asm -nop -_endasm - -for (main_i=0;main_i<50;main_i++) -{ -main_calc_hauptroutine(); -} -int_I_pres_respiration = 10000; -for (main_i=0;main_i<1500;main_i++) -{ -main_calc_hauptroutine(); -} - -_asm -nop -_endasm - - -int_I_pres_respiration = 3000; -for (main_i=0;main_i<150;main_i++) -{ - calc_hauptroutine_data_input(); - calc_hauptroutine_update_tissues(); -} //for - - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -for (main_i=0;main_i 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -_asm -nop -_endasm -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -debug_temp = debug_temp * 3; -for (main_i=0;main_i 1.3) - int_O_DBS_bitfield |= DBS_SAT2h; - if(GF_low < 0.19) - int_O_DBS_bitfield |= DBS_GFLOW2l; - if(GF_low > 1.01) - int_O_DBS_bitfield |= DBS_GFLOW2h; - if(GF_high < 0.6) - int_O_DBS_bitfield |= DBS_GFHGH2l; - if(GF_high > 1.01) - int_O_DBS_bitfield |= DBS_GFHGH2h; - if((N2_ratio + He_ratio) > 0.95) - int_O_DBS_bitfield |= DBS_GASO22l; - if((N2_ratio + He_ratio) < 0.05) - int_O_DBS_bitfield |= DBS_GASO22h; - if(float_deco_distance > 0.25) - int_O_DBS_bitfield |= DBS_DIST2h; - if(char_I_depth_last_deco > 8) - int_O_DBS_bitfield |= DBS_LAST2h; - if(DBG_deco_gas_change && ((deco_N2_ratio + deco_He_ratio) > 0.95)) - int_O_DBS_bitfield |= DBS_DECOO2l; - if(DBG_deco_gas_change && ((deco_N2_ratio + deco_He_ratio) < 0.05)) - int_O_DBS_bitfield |= DBS_DECOO2h; - if(pres_respiration > 3.0) - int_O_DBS2_bitfield |= DBS2_PRES2h; - if(pres_surface - pres_respiration > 0.2) - int_O_DBS2_bitfield |= DBS2_PRES2l; - if(pres_surface < 0.75) - int_O_DBS2_bitfield |= DBS2_SURF2l; - if(pres_surface > 1.11) - int_O_DBS2_bitfield |= DBS2_SURF2h; - if(float_desaturation_multiplier < 0.70) - int_O_DBS2_bitfield |= DBS2_DESAT2l; - if(float_desaturation_multiplier > 1.01) - int_O_DBS2_bitfield |= DBS2_DESAT2h; - if(GF_low > GF_high) - int_O_DBS2_bitfield |= DBS2_GFDneg; -} - -// ------------------------------- -// DBG - set DBG to end_of_dive // -// ------------------------------- -void set_dbg_end_of_dive(void) -{ - int_O_DBG_pre_bitfield &= (~DBG_RUN); - int_O_DBG_post_bitfield &= (~DBG_RUN); -} - -// ------------------------------- -// DBG - NDL at first 20 m. hit // -// ------------------------------- -void check_ndl(void) -{ - if((char_O_NDL_at_20mtr == -1) && (int_I_pres_respiration > 3000)) - { - char_O_NDL_at_20mtr = char_O_nullzeit; - if(char_O_NDL_at_20mtr == 255) - char_O_NDL_at_20mtr == 254; - } -} - -// ------------------------------- -// DBG - multi main during dive // -// ------------------------------- -void check_dbg(char is_post_check) -{ - temp_DBS = 0; - if( (DBG_N2_ratio != N2_ratio) || (DBG_He_ratio != He_ratio) ) - temp_DBS |= DBG_c_gas; - if(DBG_const_ppO2 != const_ppO2) - temp_DBS |= DBG_c_ppO2; - if((DBG_float_saturation_multiplier != float_saturation_multiplier) || (DBG_float_desaturation_multiplier != float_desaturation_multiplier)) - temp_DBS |= DBG_CdeSAT; - if(DBG_char_I_deco_model != char_I_deco_model) - temp_DBS |= DBG_C_MODE; - if(DBG_pres_surface != pres_surface) - temp_DBS |= DBG_C_SURF; - if((!DBS_HE_sat) && (!He_ratio)) - for(int_dbg_i = 16; int_dbg_i < 32; int_dbg_i++) - if(pres_tissue[int_dbg_i]) - temp_DBS |= DBG_HEwoHE; - if(DBG_deco_ppO2 != deco_ppO2) - temp_DBS |= DBG_C_DPPO2; - if((DBG_deco_gas_change != deco_gas_change) || (DBG_deco_N2_ratio != deco_N2_ratio) || (DBG_deco_He_ratio != deco_He_ratio)) - temp_DBS |= DBG_C_DGAS; - if(DBG_float_deco_distance != float_deco_distance) - temp_DBS |= DBG_C_DIST; - if(DBG_char_I_depth_last_deco != char_I_depth_last_deco) - temp_DBS |= DBG_C_LAST; - if((DBG_GF_low != GF_low) || (DBG_GF_high != GF_high)) - temp_DBS |= DBG_C_GF; - if(pres_respiration > 13.0) - temp_DBS |= DBG_PHIGH; - if(pres_surface - pres_respiration > 0.2) - temp_DBS |= DBG_PLOW; -/* - if() - temp_DBS |= ; - if() - temp_DBS |= ; - */ - if(is_post_check) - int_O_DBG_post_bitfield |= temp_DBS; - else - int_O_DBG_pre_bitfield |= temp_DBS; -} - -// ------------------------------- -// DBG - prior to calc. of dive // -// ------------------------------- -void check_pre_dbg(void) -{ - check_dbg(0); -} - -// ------------------------------- -// DBG - after decocalc of dive // -// ------------------------------- -void check_post_dbg(void) -{ - check_dbg(1); -} - - - -// ------------------------- -// calc_next_decodepth_GF // -// ------------------------- -// new in v.102 -void calc_nextdecodepth_GF(void) -{ -// INPUT, changing during dive: -// temp_pres_gtissue_limit_GF_low -// temp_pres_gtissue_limit_GF_low_below_surface -// temp_pres_gtissue -// temp_pres_gtissue_diff -// lock_GF_depth_list - -// INPUT, fixed during dive: -// pres_surface -// GF_delta -// GF_high -// GF_low -// temp_depth_last_deco -// float_deco_distance - -// OUTPUT -// GF_step -// temp_deco -// temp_depth_limt -// lock_GF_depth_list - -// USES -// temp1 -// temp2 -// int_temp - - char_I_table_deco_done[0] = 0; // safety if changed somewhere else. Needed for exit - if (char_I_deco_model == 1) - { - if (lock_GF_depth_list == 0) - { - temp2 = temp_pres_gtissue_limit_GF_low_below_surface / 0.29985; // = ... / 99.95 / 0.003; - int_temp = (int) (temp2 + 0.99); - if (int_temp > 31) - int_temp = 31; // deepest deco at 93 meter (31 deco stops) - if (int_temp < 0) - int_temp = 0; - temp_depth_GF_low_number = int_temp; - temp_depth_GF_low_meter = 3 * temp_depth_GF_low_number; - temp2 = (float)temp_depth_GF_low_meter * 0.09995; - temp_pres_deco_GF_low = temp2 + float_deco_distance + pres_surface; - if (temp_depth_GF_low_number == 0) - GF_step = 0; - else - GF_step = GF_delta / (float)temp_depth_GF_low_number; - if (GF_step < 0) - GF_step = 0; - if (GF_step > GF_delta) - GF_step = GF_delta; - int_O_GF_step = (int)(GF_step * 10000); - int_O_limit_GF_low = (int)(temp_pres_deco_GF_low * 1000); - int_O_gtissue_press_at_GF_low = (int)(temp_pres_gtissue * 1000); - char_O_GF_low_pointer = temp_depth_GF_low_number; - lock_GF_depth_list = 1; - internal_deco_pointer = 0; - } - if (internal_deco_pointer == 0) // new run - { - internal_deco_pointer = temp_depth_GF_low_number; - GF_temp = GF_high - ((float)internal_deco_pointer * GF_step); - int_temp = char_I_table_deco_done[internal_deco_pointer]; - output[8] = int_temp; - output[9] = 33; - } - else - { - int_temp = 1; - } - while (int_temp == 1) - { - int_temp = internal_deco_pointer - 1; - if (int_temp == 1) // new in v104 - { - temp2 = (float)(temp_depth_last_deco * int_temp) * 0.09995; - GF_step2 = GF_step/3.0 * ((float)(6 - temp_depth_last_deco)); - } - else - if (int_temp == 0) - { - temp2 = 0.0; - GF_step2 = GF_high - GF_temp; - } - else - { - temp2 = (float)(3 *int_temp) * 0.09995; - GF_step2 = GF_step; - } - temp2 = temp2 + pres_surface; // next deco stop to be tested - temp1 = ((GF_temp + GF_step2)* temp_pres_gtissue_diff) + temp_pres_gtissue; // upper limit (lowest pressure allowed) // changes GF_step2 in v104 - if (temp1 > temp2) // check if ascent to next deco stop is ok - { - int_temp = 0; // no - } - else - { - internal_deco_pointer = int_temp; - GF_temp = GF_temp + GF_step2; // changed in v104 - int_temp = char_I_table_deco_done[internal_deco_pointer]; // yes and check for ascent to even next stop if deco_done is set - } - } // while - if (internal_deco_pointer > 0) - { - temp2 = (float)(0.29985 * internal_deco_pointer); - temp_deco = temp2 + float_deco_distance + pres_surface; - if (internal_deco_pointer == 1) // new in v104 - temp_depth_limit = temp_depth_last_deco; - else - temp_depth_limit = 3 * internal_deco_pointer; - if (output[9] == 33) - { - output[9] = internal_deco_pointer; - output[10] = char_I_table_deco_done[internal_deco_pointer]; - output[12] = output[12] + 1; - if (output[12] == 100) - output[12] = 0; - } - } - else // if (char_I_deco_model == 1) - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } - } - else - { - // calc_nextdecodepth - original - // optimized in v.101 - // depth_last_deco included in v.101 - - temp1 = temp_pres_gtissue_limit - pres_surface; - if (temp1 >= 0) - { - temp1 = temp1 / 0.29985; // = temp1 / 99.95 / 0.003; - temp_depth_limit = (int) (temp1 + 0.99); - temp_depth_limit = 3 * temp_depth_limit; // depth for deco [m] - if (temp_depth_limit == 0) - temp_deco = pres_surface; - else - { - if (temp_depth_limit < temp_depth_last_deco) - temp_depth_limit = temp_depth_last_deco; - temp1 = (float)temp_depth_limit * 0.09995; - temp_deco = temp1 + float_deco_distance + pres_surface; // depth for deco [bar] - } // if (temp_depth_limit == 0) - } // if (temp1 >= 0) - else - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } // if (temp1 >= 0) - } // calc_nextdecodepth original -} // calc_nextdecodepth_GF - - -#if 0 -void build_debug_output(void) -{ -output[0] = 0; // not used in asm PLED output -output[1] = (int) (GF_low * 100); -output[2] = (int) (GF_high * 100); -output[3] = (int) (GF_step * 100); -output[4] = (int) temp_depth_GF_low_number; -output[5] = (int) temp_depth_GF_low_meter; -//output[6] -output[7] = (int) internal_deco_pointer; -//output[8] = char_I_table_deco_done[temp_depth_GF_low_number] -//output[9] = internal_deco_pointer @ new run -//output[10] = char_I_table_deco_done[internal_deco_pointer] @ new run -output [11] = (int) (temp_pres_deco_GF_low * 10); -} // build_debug_output -#endif - -// --------------------- -// copy_deco_table_GF // -// --------------------- -// new in v.102 -void copy_deco_table_GF(void) -{ - if (char_I_deco_model == 1) - { - int_temp = 32; - for (ci=0;ci dd2_fontheight) dd2_heightmax = dd2_fontheight; - if ((dd2_top + dd2_heightmax) > 65) dd2_heightmax = 65 - dd2_top; - - dd2_k = dd2_left; - dd2_j = 0; - dd2_char = dd2_stringstore[dd2_j++]; - DD2_get_pointer_to_char();//dd2_char, &dd2_pointer); - dd2_i = 0; - dd2_lowbyte = 1; - -while (dd2_char != 0) -{ - if (dd2_lowbyte == 1) DD2_load_background();//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); - DD2_build_one_line_of_char(); //&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); // dd2_heightmax - dd2_lowbyte = dd2_lowbyte ^ 1; - if (dd2_lowbyte == 1) - { - DD2_set_column();//top, dd2_k); // - if(dd2_k < 64) dd2_k++; - DD2_print_column();//&dd2_columnstore, dd2_heightmax); // dd2_column_store, dd2_heightmax - } - dd2_i++; - if ((dd2_i >= dd2_fontwidth) | (((dd2_char == '.') |(dd2_char == ':') | (dd2_char == '<')) & (dd2_i >= 4))) - { - dd2_char = dd2_stringstore[dd2_j++]; - DD2_get_pointer_to_char();//dd2_char, &dd2_pointer); - dd2_i = 0; - } -} -} // void dd2_write(void) - -void DD2_get_pointer_to_char(void)//dd2_char, &dd2_pointer); -{ - if((dd2_char < dd2_start) | (dd2_char > dd2_end)) - { - dd2_pointer = 0; - dd2_temp = 0; - } - else - { - dd2_pointer = dd2_char - dd2_start; - dd2_pointer = dd2_pointer * ((dd2_fontheight+1)/2); - dd2_pointer = dd2_pointer * dd2_fontwidth; - dd2_pointer += dd2_base; - if((dd2_char == '.') | (dd2_char == ':') | (dd2_char == '<')) - { - dd2_pointer += 2 * dd2_fontheight; - } - - } -} // void DD2_get_pointer_to_char(void) - -void DD2_set_column(void)//top, dd2_k); -{ - dd2_data = 0x75; - DD2_CmdWrite(); - dd2_data = dd2_top - 1; - DD2_CmdWrite(); - dd2_data = 0x3f; - DD2_CmdWrite(); - - dd2_data = 0x15; - DD2_CmdWrite(); - dd2_data = dd2_k - 1; - DD2_CmdWrite(); - dd2_data = dd2_k - 1; - DD2_CmdWrite(); -} // DD2_set_column() - -void DD2_load_background(void)//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); -{ - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++) - md_pi_subst[dd2_temp] = 0x00; -} // void DD2_load_background() - -void DD2_build_one_line_of_char(void)//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); -{ - if (dd2_pointer != 0) - { - dd2_temp = (char)(dd2_pointer & 255); -_asm - movff dd2_temp,TBLPTRL -_endasm - dd2_temp = (char)((dd2_pointer >> 8) & 255); -_asm - movff dd2_temp,TBLPTRH -_endasm - dd2_temp = (char)((dd2_pointer >> 16)& 255); -_asm - movff dd2_temp,TBLPTRU -_endasm - - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp += 2) - { -_asm - TBLRDPOSTINC - movff TABLAT,dd2_data -_endasm - if (dd2_oled_brightness_offset != 0) - { - if ((dd2_oled_brightness_offset << 4) < (dd2_data & 0xF0)) - dd2_data = dd2_data - (dd2_oled_brightness_offset << 4); - if ((dd2_oled_brightness_offset) < (dd2_data & 0x0F)) - dd2_data = dd2_data - dd2_oled_brightness_offset; - } - if (dd2_lowbyte == 1) - { - md_pi_subst[dd2_temp] = dd2_data & 0xF0; - md_pi_subst[dd2_temp+1] = (dd2_data << 4) & 0xF0; - } - else - { - md_pi_subst[dd2_temp] = (md_pi_subst[dd2_temp] & 0xF0) | ((dd2_data >> 4) & 0x0F); - md_pi_subst[dd2_temp+1] = (md_pi_subst[dd2_temp+1] & 0xF0) | (dd2_data & 0x0F); - } - }//for - dd2_pointer += (dd2_fontheight+1)/2; - }//if -} // - -void DD2_print_column(void)//&dd2_columnstore, dd2_heightmax); -{ -_asm - bsf oled_rs -_endasm - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++) - { - dd2_data = md_pi_subst[dd2_temp]; - DD2_DataWrite(); - } -} // void DD2_print_column(void) - -//; ----------------------------- -//; DD Write Cmd via W -//; two jump_ins: -//; DD_CmdWrite and DD_CmdWrite2 -//; ----------------------------- -void DD2_CmdWrite(void) -{ -_asm - bcf oled_rs -_endasm - DD2_DataWrite(); -} - -void DD2_DataWrite(void) -{ -_asm - movlb 1 -// bsf no_sensor_int // flag5, no_sensor_int - bcf oled_en - movlb 0 - bcf oled_clk //; CLK=0 - btfsc dd2_data,7,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,7,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,6,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,6,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,5,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,5,1 - bcf oled_data //; - bsf oled_clk //; CLK=1 - btfsc dd2_data,4,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,4,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,3,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,3,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,2,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,2,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,1,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,1,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,0,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,0,1 - bcf oled_data - bsf oled_clk //; CLK=1 - bsf oled_en //; CS#=1 - movlb 1 -// bcf no_sensor_int // flag5, no_sensor_int - movlb 0 -_endasm - dd2_data = 0; // to be sure that C knows we are in Bank0 -} -#pragma romdata font_incon_24h15 = 0x0E100 - rom const rom unsigned char incon24h15[] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xa0 - ,0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0x91, 0x00 - ,0x00, 0x00, 0x00, 0x6d, 0xfe, 0x71, 0x00, 0x00 - ,0x00, 0x01, 0x7e, 0xfd, 0x60, 0x00, 0x00, 0x00 - ,0x01, 0x8f, 0xfd, 0x50, 0x00, 0x00, 0x00, 0x00 - ,0x9f, 0xfb, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x72, 0x00, 0x00 - ,0x00, 0x9f, 0xfe, 0xdc, 0xdf, 0xff, 0xb2, 0x00 - ,0x1d, 0xf8, 0x20, 0x00, 0x05, 0xfd, 0xff, 0x30 - ,0xaf, 0x30, 0x00, 0x00, 0x9f, 0x90, 0x2e, 0xd0 - ,0xf8, 0x00, 0x00, 0x2c, 0xf5, 0x00, 0x06, 0xf0 - ,0xf8, 0x00, 0x04, 0xed, 0x30, 0x00, 0x05, 0xf0 - ,0xaf, 0x30, 0x8f, 0xb1, 0x00, 0x00, 0x0c, 0xe0 - ,0x1d, 0xfd, 0xf8, 0x00, 0x00, 0x16, 0xdf, 0x40 - ,0x00, 0x9f, 0xff, 0xdc, 0xde, 0xff, 0xc3, 0x00 - ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x73, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30 - ,0x0a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0x2f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0xaf, 0x97, 0x77, 0x77, 0x77, 0x77, 0x79, 0xf0 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x26, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40 - ,0x07, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0 - ,0x4f, 0x80, 0x00, 0x00, 0x00, 0x1c, 0xfe, 0xf0 - ,0xcc, 0x00, 0x00, 0x00, 0x02, 0xef, 0x57, 0xf0 - ,0xf7, 0x00, 0x00, 0x00, 0x2e, 0xe2, 0x07, 0xf0 - ,0xf8, 0x00, 0x00, 0x01, 0xde, 0x20, 0x07, 0xf0 - ,0xce, 0x10, 0x00, 0x2d, 0xe2, 0x00, 0x07, 0xf0 - ,0x4f, 0xd6, 0x58, 0xfe, 0x30, 0x00, 0x07, 0xf0 - ,0x06, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x07, 0xf0 - ,0x00, 0x14, 0x52, 0x00, 0x00, 0x00, 0x05, 0x80 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 - ,0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x50 - ,0x6f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xd0 - ,0xdb, 0x00, 0x00, 0x59, 0x00, 0x00, 0x07, 0xf0 - ,0xf8, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x04, 0xf0 - ,0xea, 0x00, 0x00, 0xcf, 0x10, 0x00, 0x06, 0xf0 - ,0x9f, 0x30, 0x07, 0xff, 0x90, 0x00, 0x1e, 0xe0 - ,0x1e, 0xfc, 0xdf, 0x87, 0xfb, 0x79, 0xef, 0x50 - ,0x01, 0x9d, 0xc6, 0x00, 0x7e, 0xff, 0xd5, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x2b, 0xb0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x06, 0xff, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x02, 0xcf, 0x69, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x7f, 0xb1, 0x09, 0xe0, 0x00, 0x00 - ,0x00, 0x2c, 0xe6, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0x07, 0xfb, 0x10, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0xcf, 0xfc, 0xcc, 0xcc, 0xce, 0xfd, 0xdd, 0xd0 - ,0xde, 0xee, 0xee, 0xee, 0xef, 0xfe, 0xee, 0xe0 - ,0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00 - ,0x78, 0xab, 0xcd, 0xed, 0x00, 0x00, 0xce, 0x20 - ,0xff, 0xed, 0xcc, 0xfa, 0x00, 0x00, 0x5f, 0xb0 - ,0xf9, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x08, 0xf0 - ,0xf9, 0x00, 0x0a, 0xb0, 0x00, 0x00, 0x04, 0xf0 - ,0xf9, 0x00, 0x0a, 0xc0, 0x00, 0x00, 0x04, 0xf0 - ,0xf9, 0x00, 0x08, 0xf3, 0x00, 0x00, 0x0b, 0xf0 - ,0xf9, 0x00, 0x01, 0xfe, 0x62, 0x13, 0xbf, 0x90 - ,0xf9, 0x00, 0x00, 0x4e, 0xff, 0xff, 0xfb, 0x00 - ,0x11, 0x00, 0x00, 0x01, 0x6a, 0xa9, 0x40, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x03, 0x56, 0x65, 0x30, 0x00, 0x00 - ,0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xa2, 0x00 - ,0x08, 0xfe, 0x96, 0x8f, 0x95, 0x6a, 0xff, 0x30 - ,0x6f, 0x90, 0x01, 0xf8, 0x00, 0x00, 0x3e, 0xd0 - ,0xec, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x06, 0xf0 - ,0xf6, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x04, 0xf0 - ,0xf7, 0x00, 0x07, 0xf3, 0x00, 0x00, 0x09, 0xf0 - ,0xcd, 0x10, 0x01, 0xef, 0x72, 0x13, 0xaf, 0x90 - ,0x4d, 0x20, 0x00, 0x2d, 0xff, 0xff, 0xf9, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x47, 0x86, 0x10, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x90 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x39, 0xef, 0xf0 - ,0xfa, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xe9, 0x40 - ,0xfa, 0x00, 0x05, 0xbf, 0xff, 0x94, 0x00, 0x00 - ,0xfa, 0x18, 0xef, 0xfb, 0x50, 0x00, 0x00, 0x00 - ,0xfe, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x50, 0x00 - ,0x03, 0xad, 0xb4, 0x00, 0x7f, 0xff, 0xfc, 0x00 - ,0x3f, 0xfc, 0xff, 0x66, 0xfa, 0x43, 0xaf, 0xa0 - ,0xcd, 0x10, 0x1c, 0xfe, 0x70, 0x00, 0x0b, 0xf0 - ,0xf5, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x05, 0xf0 - ,0xf5, 0x00, 0x00, 0xbf, 0x10, 0x00, 0x04, 0xf0 - ,0xec, 0x00, 0x07, 0xff, 0xb0, 0x00, 0x0a, 0xf0 - ,0x6f, 0xd9, 0xcf, 0x78, 0xfb, 0x32, 0x9f, 0x90 - ,0x07, 0xef, 0xe6, 0x00, 0x9f, 0xff, 0xfb, 0x00 - ,0x00, 0x01, 0x00, 0x00, 0x03, 0x88, 0x50, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x03, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00 - ,0x04, 0xdf, 0xff, 0xfb, 0x10, 0x00, 0x0b, 0x60 - ,0x4f, 0xd7, 0x45, 0x9f, 0xd0, 0x00, 0x1c, 0xe0 - ,0xdd, 0x00, 0x00, 0x05, 0xf5, 0x00, 0x05, 0xf0 - ,0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0xf0 - ,0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x08, 0xf0 - ,0xbe, 0x20, 0x00, 0x06, 0xf2, 0x00, 0x5f, 0xa0 - ,0x2e, 0xf9, 0x54, 0x7f, 0x94, 0x7c, 0xfc, 0x00 - ,0x02, 0xaf, 0xff, 0xff, 0xff, 0xfe, 0x70, 0x00 - ,0x00, 0x01, 0x46, 0x77, 0x75, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x06, 0xa1, 0x00, 0x00, 0x09, 0x80 - ,0x00, 0x00, 0x1f, 0xf9, 0x00, 0x00, 0x6f, 0xf0 - ,0x00, 0x00, 0x0d, 0xf5, 0x00, 0x00, 0x3f, 0xe0 - ,0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xba, 0xae, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xe9, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x97, 0x8c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x75, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x75, 0x6a, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfd, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xa8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x2c, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xdd, 0x78, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xf2, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xf0, 0x00, 0x4f, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0xea, 0x23, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x4f, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x01, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10 - ,0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x00, 0x00, 0x9f, 0xa7, 0x77, 0x77, 0x77, 0x70 - ,0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x02, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0xff, 0xcb, 0xbb, 0xbb, 0xbb, 0xb0 - ,0x00, 0x00, 0x4f, 0xfe, 0xee, 0xee, 0xee, 0xe0 - ,0x00, 0x00, 0xab, 0x20, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x02, 0xfa, 0x55, 0x55, 0x55, 0x55, 0x50 - ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x00, 0x00, 0x02, 0x44, 0x44, 0x44, 0x44, 0x40 - }; - -#pragma romdata font_incon_42 = 0x0F500 - rom const rom unsigned char incon42[] = - { - // 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0xbf, 0xff, 0xc7, 0x65, 0x43, 0x22, 0x33, 0x57, 0xbf, 0xff, 0xfd, 0x20, 0x00 - ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x6e, 0xff, 0xd1, 0x00 - ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xfa, 0x00 - ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xcf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x4f, 0xfe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x07, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x5e, 0xff, 0xfb, 0x98, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -#if 0 -// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00 - ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00 - ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00 - ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#endif -// -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00 - ,0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00 - ,0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00 - ,0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00 - ,0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00 - ,0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00 - ,0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00 - ,0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00 - ,0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00 - ,0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00 - ,0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00 - ,0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00 - ,0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00 - ,0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00 - ,0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00 - ,0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00 - ,0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00 - ,0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00 - ,0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00 - ,0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00 - ,0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00 - ,0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00 - ,0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00 - ,0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00 - ,0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00 - ,0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00 - ,0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40 - ,0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20 - ,0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00 - ,0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00 - ,0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00 - ,0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00 - ,0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00 - ,0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00 - ,0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00 - ,0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00 - ,0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00 - ,0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00 - ,0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -#if 0 -#pragma romdata font_incon_42 = 0x0E000 - rom const rom unsigned char incon42[] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00 - ,0x00, 0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00 - ,0x00, 0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00 - ,0x00, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0x02, 0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x00, 0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x00, 0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x00, 0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00 - ,0x00, 0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00 - ,0x00, 0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00 - ,0x00, 0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00 - ,0x00, 0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00 - ,0x00, 0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00 - ,0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00 - ,0x00, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00 - ,0x00, 0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00 - ,0x00, 0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x00, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0x01, 0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x03, 0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0x00, 0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x00, 0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00 - ,0x00, 0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00 - ,0x00, 0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00 - ,0x00, 0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00 - ,0x01, 0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00 - ,0x02, 0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00 - ,0x01, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00 - ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00 - ,0x00, 0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00 - ,0x00, 0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00 - ,0x00, 0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x04, 0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x06, 0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0x06, 0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30 - ,0x03, 0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x00, 0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00 - ,0x00, 0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00 - ,0x00, 0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00 - ,0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00 - ,0x00, 0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00 - ,0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00 - ,0x00, 0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00 - ,0x00, 0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00 - ,0x01, 0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40 - ,0x05, 0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x06, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0x06, 0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20 - ,0x00, 0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x00, 0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00 - ,0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00 - ,0x00, 0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00 - ,0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00 - ,0x00, 0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00 - ,0x00, 0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0x00, 0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x05, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x06, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40 - ,0x04, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00 - ,0x00, 0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00 - ,0x00, 0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00 - ,0x00, 0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00 - ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00 - ,0x00, 0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; -#endif - -// ********************** -// ********************** -// ** THE JUMP-IN CODE ** -// ** for the asm code ** -// ********************** -// ********************** -#pragma code main_calc_hauptroutine = 0x10000 -void main_calc_hauptroutine(void) -{ -calc_hauptroutine(); -int_O_desaturation_time = 65535; -} // divemode -#pragma code main_without_deco = 0x10020 -void main_calc_without_deco(void) -{ -calc_without_deco(); -calc_desaturation_time(); -} - -#pragma code main_clear_CNS_fraction = 0x10030 -void main_clear_CNS_fraction(void) -{ -clear_CNS_fraction(); -} - -#pragma code main_calc_CNS_decrease_15min = 0x10034 -void main_calc_CNS_decrease_15min(void) -{ -calc_CNS_decrease_15min(); -} - -#pragma code main_calc_percentage = 0x10038 -void main_calc_percentage (void) -{ -calc_percentage(); -} - -#pragma code main_clear_tissue = 0x10040 -void main_clear_tissue(void) -{ -clear_tissue(); -char_I_depth_last_deco = 0; // for compatibility with v.101pre_no_last_deco -} - -#pragma code main_calc_CNS_fraction = 0x10050 -void main_calc_CNS_fraction(void) -{ -calc_CNS_fraction(); -} - -#pragma code main_calc_desaturation_time = 0x10060 -void main_calc_desaturation_time(void) -{ -calc_desaturation_time(); -} - -#pragma code main_calc_wo_deco_step_1_min = 0x10080 -void main_calc_wo_deco_step_1_min(void) -{ -calc_wo_deco_step_1_min(); -char_O_deco_status = 3; // surface new in v.102 overwrites value of calc_wo_deco_step_1_min -calc_desaturation_time(); -} // surface mode - -#pragma code main_debug = 0x100A0 -void main_debug(void) -{ -//debug(); -} - -#pragma code main_DD2_write_incon42 = 0x100B0 -void main_DD2_write_incon42(void) -{ - DD2_write_incon42(); -} - -#pragma code main_DD2_write_incon24 = 0x100B4 -void main_DD2_write_incon24(void) -{ - DD2_write_incon24(); -} - -#pragma code main_gradient_array = 0x100C0 -void main_gradient_array(void) -{ -calc_gradient_array_only(); -} -#pragma code main_push_tissues = 0x100C4 -void main_push_tissues_to_vault(void) -{ - push_tissues_to_vault(); -} -#pragma code main_pull_tissues = 0x100C8 -void main_pull_tissues_from_vault(void) -{ - pull_tissues_from_vault(); -} - -#pragma code main_hash = 0x100E0 -void main_hash(void) -{ -hash(); -} - -// *********************** -// *********************** -// ** THE LOOKUP TABLES ** -// *********************** -// *********************** - -#pragma romdata tables = 0x10200 -#include // new table for deco_main_v.101 (var_a modified) - -#pragma romdata tables2 = 0x10600 -rom const rom unsigned int md_pi[] = -{ - 0x292E, 0x43C9, 0xA2D8, 0x7C01, 0x3D36, 0x54A1, 0xECF0, 0x0613 - , 0x62A7, 0x05F3, 0xC0C7, 0x738C, 0x9893, 0x2BD9, 0xBC4C, 0x82CA - , 0x1E9B, 0x573C, 0xFDD4, 0xE016, 0x6742, 0x6F18, 0x8A17, 0xE512 - , 0xBE4E, 0xC4D6, 0xDA9E, 0xDE49, 0xA0FB, 0xF58E, 0xBB2F, 0xEE7A - , 0xA968, 0x7991, 0x15B2, 0x073F, 0x94C2, 0x1089, 0x0B22, 0x5F21 - , 0x807F, 0x5D9A, 0x5A90, 0x3227, 0x353E, 0xCCE7, 0xBFF7, 0x9703 - , 0xFF19, 0x30B3, 0x48A5, 0xB5D1, 0xD75E, 0x922A, 0xAC56, 0xAAC6 - , 0x4FB8, 0x38D2, 0x96A4, 0x7DB6, 0x76FC, 0x6BE2, 0x9C74, 0x04F1 - , 0x459D, 0x7059, 0x6471, 0x8720, 0x865B, 0xCF65, 0xE62D, 0xA802 - , 0x1B60, 0x25AD, 0xAEB0, 0xB9F6, 0x1C46, 0x6169, 0x3440, 0x7E0F - , 0x5547, 0xA323, 0xDD51, 0xAF3A, 0xC35C, 0xF9CE, 0xBAC5, 0xEA26 - , 0x2C53, 0x0D6E, 0x8528, 0x8409, 0xD3DF, 0xCDF4, 0x4181, 0x4D52 - , 0x6ADC, 0x37C8, 0x6CC1, 0xABFA, 0x24E1, 0x7B08, 0x0CBD, 0xB14A - , 0x7888, 0x958B, 0xE363, 0xE86D, 0xE9CB, 0xD5FE, 0x3B00, 0x1D39 - , 0xF2EF, 0xB70E, 0x6658, 0xD0E4, 0xA677, 0x72F8, 0xEB75, 0x4B0A - , 0x3144, 0x50B4, 0x8FED, 0x1F1A, 0xDB99, 0x8D33, 0x9F11, 0x8314 -}; - -// ********************* -// ********************* -// ** THE SUBROUTINES ** -// ********************* -// ********************* - -#pragma code subroutines = 0x10700 // can be adapted to fit the romdata tables ahead - - -// --------------- -// CLEAR tissue // -// --------------- -// optimized in v.101 (var_a) - -void clear_tissue(void) // preload tissues with standard pressure for the given ambient pressure -{ - - flag_in_divemode = 0; - int_O_DBS_bitfield = 0; - int_O_DBS2_bitfield = 0; - int_O_DBG_pre_bitfield = 0; - int_O_DBG_post_bitfield = 0; - char_O_NDL_at_20mtr = 255; - -_asm -lfsr 1, 0x300 // C math routines shall use this variable bank -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -// N2_ratio = (float)char_I_N2_ratio; // the 0.0002 of 0.7902 are missing with standard air - N2_ratio = 0.7902; // N2_ratio / 100.0; - pres_respiration = (float)int_I_pres_respiration / 1000.0; -for (ci=0;ci<16;ci++) // cycle through the 16 b"uhlmann tissues -{ - pres_tissue[ci] = N2_ratio * (pres_respiration - 0.0627) ; -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x80 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -_endasm - -pres_tissue_limit[ci] = (pres_tissue[ci] - var_a) * var_b ; -// now update the guiding tissue -if (pres_tissue_limit[ci] < 0) -pres_tissue_limit[ci] = 0; -} // for 0 to 16 - -for (ci=16;ci<32;ci++) // cycle through the 16 b"uhlmann tissues for Helium -{ - pres_tissue[ci] = 0.0; -} // for - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - char_O_gradient_factor = 0; - char_O_relative_gradient_GF = 0; -} // clear_tissue(void) - - -// -------------------- -// calc_without_deco // -// fixed N2_ratio ! // -// -------------------- -// optimized in v.101 (float_..saturation_multiplier) - -void calc_without_deco(void) -{ -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED RATIO !! sum as stated in b"uhlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does apply to the pressure without any inert ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_without_deco - - -// -------------------- -// calc_hauptroutine // -// -------------------- -// this is the major code in dive mode -// calculates: -// the tissues, -// the bottom time -// and simulates the ascend with all deco stops - -void calc_hauptroutine(void) -{ - calc_hauptroutine_data_input(); - - if(!flag_in_divemode) - { - flag_in_divemode = 1; - create_dbs_set_dbg_and_ndl20mtr(); - } - else - check_pre_dbg(); - - calc_hauptroutine_update_tissues(); - calc_gradient_factor(); - - - switch (char_O_deco_status) // toggle between calculation for nullzeit (bottom time), deco stops and more deco stops (continue) - { - case 0: - update_startvalues(); - calc_nullzeit(); - check_ndl(); - char_O_deco_status = 255; // calc deco next time - break; - case 1: - if (char_O_deco_status == 3) - break; - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); - break; - case 3: // new dive - clear_decoarray(); - clear_internal_deco_table_GF(); - copy_deco_table_GF(); - internal_deco_pointer = 0; - lock_GF_depth_list = 0; - update_startvalues(); - calc_nextdecodepth_GF(); - char_O_deco_status = 0; - break; - default: - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - output[6] = 1; - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - break; - } - calc_ascenttime(); - check_post_dbg(); -} - -void calc_hauptroutine_data_input(void) -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; - pres_surface = (float)int_I_pres_surface / 1000.0; - - N2_ratio = (float)char_I_N2_ratio / 100.0;; // the 0.0002 of 0.7902 are missing with standard air - He_ratio = (float)char_I_He_ratio / 100.0;; - deco_N2_ratio = (float)char_I_deco_N2_ratio / 100.0; - deco_He_ratio = (float)char_I_deco_He_ratio / 100.0; - float_deco_distance = (float)char_I_deco_distance / 100.0; - if(char_I_deco_gas_change) - { - deco_gas_change = (float)char_I_deco_gas_change / 9.995 + pres_surface; - deco_gas_change = deco_gas_change + float_deco_distance; - } - else - deco_gas_change = 0; - const_ppO2 = (float)char_I_const_ppO2 / 100.0; - deco_ppO2_change = (float)char_I_deco_ppO2_change / 99.95 + pres_surface; - deco_ppO2_change = deco_ppO2_change + float_deco_distance; - deco_ppO2 = (float)char_I_deco_ppO2 / 100.0; - float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - GF_low = (float)char_I_GF_Low_percentage / 100.0; - GF_high = (float)char_I_GF_High_percentage / 100.0; - GF_delta = GF_high - GF_low; - - temp2 = (pres_respiration - pres_surface) / 0.29985; - int_temp = (int)(temp2); - if (int_temp < 0) - int_temp = 0; - if (int_temp > 255) - int_temp = 255; - char_O_actual_pointer = int_temp; - - temp_depth_last_deco = (int)char_I_depth_last_deco; -} - -void calc_hauptroutine_update_tissues(void) -{ - int_O_calc_tissue_call_counter = int_O_calc_tissue_call_counter + 1; - if (char_I_const_ppO2 == 0) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - else // new in v.101 - pres_diluent = ((pres_respiration - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - if (pres_diluent > pres_respiration) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - if (pres_diluent > 0.0627) // new in v.101 - { - temp_atem = N2_ratio * (pres_diluent - 0.0627); // changed in v.101 - temp2_atem = He_ratio * (pres_diluent - 0.0627); // changed in v.101 - char_O_diluent = (char)(pres_diluent/pres_respiration*100.0); - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - char_O_diluent = 0; - } - temp_surface = pres_surface; - calc_tissue(); - int_O_gtissue_limit = (int)(pres_tissue_limit[char_O_gtissue_no] * 1000); - int_O_gtissue_press = (int)((pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]) * 1000); - if (char_I_deco_model == 1) - { - temp1 = temp1 * GF_high; - } - else - { - temp1 = temp_surface; - } - if (pres_gtissue_limit > temp1 && char_O_deco_status == 0) // if guiding tissue can not be exposed to surface pressure immediately - { - char_O_nullzeit = 0; // deco necessary - char_O_deco_status = 255; // calculate deco skip nullzeit calculation - } -} // calc_hauptroutine_update_tissues -void calc_hauptroutine_calc_deco(void) -{ - do - { - int_temp_decostatus = 0; - calc_nextdecodepth_GF(); - if (temp_depth_limit > 0) - { - if (char_I_const_ppO2 == 0) // new in v.101 - { - deco_diluent = temp_deco; // new in v.101 - if (temp_deco > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco > deco_ppO2_change) - { - deco_diluent = ((temp_deco - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - else - { - deco_diluent = ((temp_deco - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - } - if (deco_diluent > temp_deco) // new in v.101 - deco_diluent = temp_deco; // new in v.101 - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - update_internal_deco_table_GF(); - temp_decotime = 1; - update_decoarray(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) - int_temp_decostatus = 1; - } - else // if (temp_depth_limit > 0) - { - char_O_deco_status = 0; - } - } while (int_temp_decostatus == 1); - if (char_O_deco_status > 15) - { - char_O_deco_status = 1; - } - else - { - copy_deco_table_GF(); - char_O_deco_status = 0; - } -} - -void calc_hauptroutine_calc_ascend_to_deco(void) -{ - update_startvalues(); - char_O_deco_status = 0; - temp_deco = pres_respiration; - lock_GF_depth_list = 1; // new in v.102 - do // go up to first deco - { - int_temp_decostatus = 0; - temp_deco = temp_deco - 1.0; - if ( char_I_deco_model == 1) // new in v.102 , 4 = deep stops - temp_limit = temp_pres_gtissue_limit_GF_low; - else - temp_limit = temp_pres_gtissue_limit; - if ((temp_deco > temp_limit) && (temp_deco > pres_surface)) // changes in v.102 - { - lock_GF_depth_list = 0; // new in v.102, distance to first stop > 10 mtr. - output[6] = 0; - if (char_I_const_ppO2 == 0) // new in v.101 // calculate at half of the ascent - { - deco_diluent = temp_deco + 0.5; // new in v.101 - if (temp_deco + 0.5 > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco + 0.5 > deco_ppO2_change) - deco_diluent = ((temp_deco + 0.5 - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - else - deco_diluent = ((temp_deco + 0.5 - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - if (deco_diluent > (temp_deco +0.5)) // new in v.101 - deco_diluent = temp_deco + 0.5; // new in v.101 // calculate at half of the ascent - } - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) // 16 is the limit of calculations for one time slot - int_temp_decostatus = 1; - } - } while (int_temp_decostatus == 1); -} // calc_hauptroutine_calc_ascend_to_deco - -// -------------- -// calc_tissue // -// -------------- -// optimized in v.101 - -void calc_tissue(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_e2secs+1 // the order is confussing -TBLRDPOSTINC -movff TABLAT,var_e2secs // low byte first, high afterwards -TBLRDPOSTINC -movff TABLAT,var_e2secs+3 -TBLRD -movff TABLAT,var_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e2secs+1 -TBLRDPOSTINC -movff TABLAT,var2_e2secs -TBLRDPOSTINC -movff TABLAT,var2_e2secs+3 -TBLRD -movff TABLAT,var2_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -_endasm - // the start values are the previous end values // write new values in temp - - if( (var_e2secs < 0.0000363) - || (var_e2secs > 0.00577) - || (var2_e2secs < 0.0000961) - || (var2_e2secs > 0.150) - || (var_a < 0.231) - || (var_a > 1.27) - || (var_b < 0.504) - || (var_b > 0.966) - || (var2_a < 0.510) - || (var2_a > 1.75) - || (var2_b < 0.423) - || (var2_b > 0.927) - ) - int_O_DBG_pre_bitfield |= DBG_ZH16ERR; - -// N2 - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e2secs; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e2secs; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if -} // for -}//calc_tissue(void) - -// ---------------- -// calc_nullzeit // -// ---------------- -// calculates the remaining bottom time - -// unchanged in v.101 - -void calc_nullzeit(void) -{ - char_O_nullzeit = 0; - int_temp = 1; - do - { - backup_sim_pres_tissue(); - sim_tissue_10min(); - char_O_nullzeit = char_O_nullzeit + 10; - int_temp = int_temp + 1; - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 17); - if (int_temp == 255) - { - restore_sim_pres_tissue(); - char_O_nullzeit = char_O_nullzeit - 10; - } //if int_temp == 255] - int_temp = 1; - if (char_O_nullzeit < 60) - { - do - { - sim_tissue_1min(); - char_O_nullzeit = char_O_nullzeit + 1; - int_temp = int_temp + 1; // new in v.102a - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 10); - if (int_temp == 255) - char_O_nullzeit = char_O_nullzeit - 1; - } // if char_O_nullzeit < 60 -} //calc_nullzeit - -// ------------------------- -// backup_sim_pres_tissue // -// ------------------------- -void backup_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue_backup[x] = sim_pres_tissue[x]; - sim_pres_tissue_backup[x+16] = sim_pres_tissue[x+16]; - } -} // backup_sim - -// -------------------------- -// restore_sim_pres_tissue // -// -------------------------- -void restore_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = sim_pres_tissue_backup[x]; - sim_pres_tissue[x+16] = sim_pres_tissue_backup[x+16]; - } -} // restore_sim - -// ------------------ -// calc_ascenttime // -// ------------------ - -void calc_ascenttime(void) -{ -if (pres_respiration > pres_surface) - { - switch (char_O_deco_status) - { - case 2: - char_O_ascenttime = 255; - break; - case 1: - break; - default: - temp1 = pres_respiration - pres_surface + 0.6; // + 0.6 hence 1 minute ascent time from a depth of 4 meter on - if (temp1 < 0) - temp1 = 0; - if (temp1 > 255) - temp1 = 255; - char_O_ascenttime = (char)temp1; - - for(ci=0;ci<7;ci++) - { - x = char_O_ascenttime + char_O_array_decotime[ci]; - if (x < char_O_ascenttime) - char_O_ascenttime = 255; - else - char_O_ascenttime = x; - } - } - } -else - char_O_ascenttime = 0; -} // calc_ascenttime() - - -// --------------------- -// update_startvalues // -// --------------------- -// updated in v.102 - -void update_startvalues(void) -{ - temp_pres_gtissue_limit = pres_gtissue_limit; - temp_pres_gtissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; - - temp_gtissue_no = char_O_gtissue_no; - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = pres_tissue[x]; - sim_pres_tissue[x+16] = pres_tissue[x+16]; - sim_pres_tissue_limit[x] = pres_tissue_limit[x]; - } -} // update_startvalues - - -// ------------------ -// sim_tissue_1min // -// ------------------ -// optimized in v.101 - -void sim_tissue_1min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit - temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_1min() - -//-------------------- -// sim_tissue_10min // -//-------------------- - -// Attention!! uses var_e1min und var2_e1min to load 10min data !!! -// is identical to sim_tissue_1min routine except for the different load of those variables - -// optimized in v.101 - -void sim_tissue_10min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 // different to 1 min -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -//incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit -temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - -sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_10min() - - -// ------------------ -// clear_decoarray // -// ------------------ -// unchanged in v.101 - -void clear_decoarray(void) -{ -char_O_array_decodepth[0] = 0; -char_O_array_decodepth[1] = 0; -char_O_array_decodepth[2] = 0; -char_O_array_decodepth[3] = 0; -char_O_array_decodepth[4] = 0; -char_O_array_decodepth[5] = 0; -char_O_array_decotime[0] = 0; -char_O_array_decotime[1] = 0; -char_O_array_decotime[2] = 0; -char_O_array_decotime[3] = 0; -char_O_array_decotime[4] = 0; -char_O_array_decotime[5] = 0; -char_O_array_decotime[6] = 0; -} // clear_decoarray - - -// ------------------- -// update_decoarray // -// ------------------- -// unchanged in v.101 - -void update_decoarray() -{ - x = 0; - do - { - if (char_O_array_decodepth[x] == temp_depth_limit) - { - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp < 0) - int_temp = 0; - if (int_temp > 240) - int_temp = 240; - char_O_array_decotime[x] = int_temp; - x = 10; // exit - } // if - else - { - if (char_O_array_decodepth[x] == 0) - { - if (temp_depth_limit > 255) - char_O_array_decodepth[x] = 255; - else - char_O_array_decodepth[x] = (char)temp_depth_limit; - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp > 240) - char_O_array_decotime[x] = 240; - else - char_O_array_decotime[x] = (char)int_temp; - x = 10; // exit - } // if - else - x++; - } // else - } while (x<6); - if (x == 6) - { - int_temp = char_O_array_decotime[6] + temp_decotime; - if (int_temp > 220) - char_O_array_decotime[6] = 220; - else - char_O_array_decotime[6] = (char)int_temp; - } // if x == 6 -} // update_decoarray - - -// ----------------------- -// calc_gradient_factor // -// ----------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_factor(void) -{ - // tissue > respiration (entsaettigungsvorgang) - // gradient ist wieviel prozent an limit mit basis tissue - // dh. 0% = respiration == tissue - // dh. 100% = respiration == limit - temp_tissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[char_O_gtissue_no]; // changed in v.102 - temp2 = temp1/temp2; - temp2 = temp2 * 100; // displayed in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_gradient_factor = 0; - else - char_O_gradient_factor = (char)temp2; - - temp3 = temp2; - - if (char_I_deco_model == 1) // calculate relative gradient factor - { - temp1 = (float)temp_depth_GF_low_meter * 0.09995; - temp2 = pres_respiration - pres_surface; - if (temp2 <= 0) - temp1 = GF_high; - else - if (temp2 >= temp1) - temp1 = GF_low; - else - temp1 = GF_low + (temp1 - temp2)/temp1*GF_delta; - if (temp_depth_GF_low_meter == 0) - temp1 = GF_high; - temp2 = temp3 / temp1; // temp3 is already in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - char_O_relative_gradient_GF = (char)temp2; - } // calc relative gradient factor - else - { - char_O_relative_gradient_GF = char_O_gradient_factor; - } -} // calc_gradient - -// --------------------------- -// calc_gradient_array_only // -// --------------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_array_only() -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system -for (ci=0;ci<16;ci++) -{ - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[ci]; - temp2 = temp1/temp2; - temp2 = temp2 * 200; // because of output in (Double-)percentage - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; - else - char_O_array_gradient_weighted[ci] = (char)temp2; -} // for -} // calc_gradient_array_only - - -// ------------------------- -// calc_desaturation_time // -// ------------------------- -// FIXED N2_ratio -// unchanged in v.101 - -void calc_desaturation_time(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - N2_ratio = 0.7902; // FIXED sum as stated in b"uhlmann - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_surface - 0.0627); - int_O_desaturation_time = 0; - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x04 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var_halftimes -TBLRDPOSTINC -movff TABLAT,var_halftimes+3 -TBLRD -movff TABLAT,var_halftimes+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var2_halftimes -TBLRDPOSTINC -movff TABLAT,var2_halftimes+3 -TBLRD -movff TABLAT,var2_halftimes+2 -_endasm - -// saturation_time (for flight) and N2_saturation in multiples of halftime -// version v.100: 1.1 = 10 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// new in version v.101: 1.07 = 7 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// changes in v.101: 1.05 = 5 percent dist to totally clean is new desaturation point for display and noFly calculations -// N2 - temp1 = 1.05 * temp_atem; - temp1 = temp1 - pres_tissue[ci]; - temp2 = temp_atem - pres_tissue[ci]; - if (temp2 >= 0.0) - { - temp1 = 0; - temp2 = 0; - } - else - temp1 = temp1 / temp2; - if (temp1 > 0.0) - { - temp1 = log(1.0 - temp1); - temp1 = temp1 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - 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 - } - else - { - temp1 = 0; - temp2 = 0; - } - -// He - temp3 = 0.1 - pres_tissue[ci+16]; -if (temp3 >= 0.0) - { - temp3 = 0; - temp4 = 0; - } - else - temp3 = -1.0 * temp3 / pres_tissue[ci+16]; - if (temp3 > 0.0) - { - temp3 = log(1.0 - temp3); - temp3 = temp3 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - temp4 = var2_halftimes * temp3 / float_desaturation_multiplier; // time necessary (in minutes ) for "complete" desaturation, new in v.101 float_desaturation_multiplier - } - else - { - temp3 = 0; - temp4 = 0; - } - -// saturation_time (for flight) - if (temp4 > temp2) - int_temp = (int)temp4; - else - int_temp = (int)temp2; - if(int_temp > int_O_desaturation_time) - int_O_desaturation_time = int_temp; - -// N2 saturation in multiples of halftime for display purposes - temp2 = temp1 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp2 = temp2 + 80.0; // set center - if (temp2 < 0.0) - temp2 = 0.0; - if (temp2 > 255.0) - temp2 = 255.0; - char_O_tissue_saturation[ci] = (char)temp2; -// He saturation in multiples of halftime for display purposes - temp4 = temp3 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp4 = temp4 + 80.0; // set center - if (temp4 < 0.0) - temp4 = 0.0; - if (temp4 > 255.0) - temp4 = 255.0; - char_O_tissue_saturation[ci+16] = (char)temp4; -} // for -} // calc_desaturation_time - - -// -------------------------- -// calc_wo_deco_step_1_min // -// -------------------------- -// FIXED N2 Ratio -// optimized in v.101 (...saturation_multiplier) -// desaturation slowed down to 70,42% - -void calc_wo_deco_step_1_min(void) -{ - if(flag_in_divemode) - { - flag_in_divemode = 0; - set_dbg_end_of_dive(); - } -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED, sum lt. buehlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does not use the N2_ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue_step_1_min(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_wo_deco_step_1_min(void) - - -// ------------------------- -// calc_tissue_step_1_min // -// ------------------------- -// optimized in v.101 - -void calc_tissue_step_1_min(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm - -// N2 1 min - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He 1 min - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if - -// gradient factor array for graphical display -// display range is 0 to 250! in steps of 5 for 1 pixel -// the display is divided in 6 blocks -// -> double the gradient 100% = 200 -// tissue > respiration (entsaettigungsvorgang) -// gradient ist wieviel prozent an limit von tissue aus -// dh. 0% = respiration == tissue -// dh. 100% = respiration == limit -temp1 = temp_tissue - pres_respiration; -temp2 = temp_tissue - pres_tissue_limit[ci]; // changed in v.102 -temp2 = temp1/temp2; -temp2 = temp2 * 200; // because of output in (Double-)percentage -if (temp2 < 0) - temp2 = 0; -if (temp2 > 255) - temp2 = 255; -if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; -else - char_O_array_gradient_weighted[ci] = (char)temp2; - -} // for -} // calc wo deco 1min - -#if 0 -// -------- -// debug // -// -------- -void debug(void) -{ -for (ci=0;ci<32;ci++) -{ - int_O_tissue_for_debug[ci] = (unsigned int)(pres_tissue[ci] *1000); -} -} // void debug(void) -#endif - -// ---------- -// md hash // -// ---------- -void hash(void) -{ -// init - for (md_i=0;md_i<16;md_i++) - { - md_state[md_i] = 0; - md_cksum[md_i] = 0; - } // for md_i 16 - -_asm - movlw 0x01 - movwf TBLPTRU,0 - movlw 0x06 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i] = md_temp; - } // for md_i 256 -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[127] = md_temp; - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i+128] = md_temp; - } // for md_i 256 -_asm - TBLRD - movff TABLAT,md_temp -_endasm - md_pi_subst[255] = md_temp; - -_asm - movlw 0x00 - movwf TBLPTRU,0 - movlw 0x00 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm -// cycle buffers -for (md_pointer=0x0000;md_pointer<0x17f3;md_pointer++) -{ - md_t = 0; - for (md_i=0;md_i<16;md_i++) - { - if(md_pointer == 9) - md_temp = md_cksum[md_i]; - else - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - } // else - md_buffer[md_i] = md_temp; - md_state[md_i+16] = md_buffer[md_i]; - md_state[md_i+32] = (unsigned char)(md_buffer[md_i] ^ md_state[md_i]); - } // for md_i 16 - - for (md_i=0;md_i<18;md_i++) - { - for (md_j=0;md_j<48;md_j++) - { - md_state[md_j] = (unsigned char)(md_state[md_j] ^ md_pi_subst[md_t]); - md_t = md_state[md_j]; - } // for md_j 48 - md_t = (unsigned char)(md_t+1); - } // for md_i 18 - md_t = md_cksum[15]; - - for (md_i=0;md_i<16;md_i++) - { - md_cksum[md_i] = (unsigned char)(md_cksum[md_i] ^ md_pi_subst[(md_buffer[md_i] ^ md_t)]); - md_t = md_cksum[md_i]; - } // for md_i 16 -} // for md_pointer -} // void hash(void) - -// --------------------- -// clear_CNS_fraction // -// --------------------- -// new in v.101 - -void clear_CNS_fraction(void) -{ - CNS_fraction = 0.0; - char_O_CNS_fraction = 0; -} // void clear_CNS_fraction(void) - - -// -------------------- -// calc_CNS_fraction // -// -------------------- -// new in v.101 -// optimized in v.102 : with new variables char_I_actual_ppO2 and actual_ppO2 - -// Input: char_I_actual_ppO2 -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction -// Uses: acutal_ppO2 - -void calc_CNS_fraction(void) -{ - actual_ppO2 = (float)char_I_actual_ppO2 / 100.0; - - if (char_I_actual_ppO2 < 50) - CNS_fraction = CNS_fraction;// no changes - else if (char_I_actual_ppO2 < 60) - CNS_fraction = 1/(-54000.0 * actual_ppO2 + 54000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 70) - CNS_fraction = 1/(-45000.0 * actual_ppO2 + 48600.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 80) - CNS_fraction = 1/(-36000.0 * actual_ppO2 + 42300.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 90) - CNS_fraction = 1/(-27000.0 * actual_ppO2 + 35100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 110) - CNS_fraction = 1/(-18000.0 * actual_ppO2 + 27000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 150) - CNS_fraction = 1/(-9000.0 * actual_ppO2 + 17100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 160) - CNS_fraction = 1/(-22500.0 * actual_ppO2 + 37350.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 165) - 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 - else if (char_I_actual_ppO2 < 170) - CNS_fraction = 0.00102 + CNS_fraction; // example calculation: Sqrt((1.7/1.55)^20)*0.000404 - else if (char_I_actual_ppO2 < 175) - CNS_fraction = 0.00136 + CNS_fraction; - else if (char_I_actual_ppO2 < 180) - CNS_fraction = 0.00180 + CNS_fraction; - else if (char_I_actual_ppO2 < 185) - CNS_fraction = 0.00237 + CNS_fraction; - else if (char_I_actual_ppO2 < 190) - CNS_fraction = 0.00310 + CNS_fraction; - else if (char_I_actual_ppO2 < 195) - CNS_fraction = 0.00401 + CNS_fraction; - else if (char_I_actual_ppO2 < 200) - CNS_fraction = 0.00517 + CNS_fraction; - else if (char_I_actual_ppO2 < 230) - CNS_fraction = 0.0209 + CNS_fraction; - else - CNS_fraction = 0.0482 + CNS_fraction; // value for 2.5 - - if (CNS_fraction > 2.5) - CNS_fraction = 2.5; - if (CNS_fraction < 0.0) - CNS_fraction = 0.0; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -} // void calc_CNS_fraction(void) - -// -------------------------- -// calc_CNS_decrease_15min // -// -------------------------- -// new in v.101 - -// calculates the half time of 90 minutes in 6 steps of 15 min - -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction - -void calc_CNS_decrease_15min(void) -{ - CNS_fraction = 0.890899 * CNS_fraction; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -}// calc_CNS_decrease_15min(void) - - -// ------------------ -// calc_percentage // -// ------------------ -// new in v.101 - -// calculates int_I_temp * char_I_temp / 100 -// output is int_I_temp - -void calc_percentage(void) -{ - temp1 = (float)int_I_temp; - temp2 = (float)char_I_temp / 100.0; - temp3 = temp1 * temp2; - int_I_temp = (int)temp3; -} -void push_tissues_to_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue_vault[ci] = pres_tissue[ci]; -} -void pull_tissues_from_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue[ci] = pres_tissue_vault[ci]; -} - diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/ostc_bigscreen.cof Binary file code_part1/OSTC_code_c_part2/ostc_bigscreen.cof has changed diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/ostc_bigscreen.hex --- a/code_part1/OSTC_code_c_part2/ostc_bigscreen.hex Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,513 +0,0 @@ -:020000040000FA -:0600000000EF48F01200C1 -:1090000000010A0E7C6F00010A0E7D6F00017A6973 -:1090100000017B6900017E6B00017F6B0001200E67 -:10902000606F0001210E616F0001220E626F00016E -:0E9030003A0E636F0001646B90EC5BF012006F -:109A0000AF9BAFAFAFAFD1AFB205B007B008AF09F2 -:109A1000AF09AF09AF09B108B2079B049F9F9F9F91 -:109A2000AE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 -:109A3000FFFFFFFFFF8F82FFAC04A1149B1A96204B -:109A400092248F288A0E8C10940B8A0C9609870F0B -:109A5000960885129707830785079706850783076A -:109A600096068708820796058A07810696058C0761 -:109A7000810594058E088005940490078005930461 -:109A80009107800591049208800590049407800551 -:109A90008E05950780058C05960880058A06960830 -:109AA000820588069707820685079708840683073C -:109AB00097088507800898078707970F8908950DED -:109AC0008B0A8C108E0E912894269922A01CAA1520 -:109AD0009707FFFFD7FFB701B403B404B403B4047E -:109AE000B304B304B305B205B206B205B2068136BB -:109AF0008137813781378137FF37FFFFFFFFACFFA9 -:109B0000FFFF90FF8903A8008705A5038607A3052B -:109B10008508A007840A9F08840B9F06830D9F0673 -:109B2000820E9F06810882049E05830882049E049B -:109B3000840881049D05850881049C0587078104AC -:109B40009C04880781049B04890781049A048A077E -:109B5000810499048B07810498048C07810496057D -:109B60008D07810495058E07810494058F07810474 -:109B70009206900782049006910782048E0792074E -:109B800083048B07930883048609940A8404951937 -:109B900085049617860498148704991289049B0EED -:109BA0008C049D08B305BA05FFFF8EFFB7008A023B -:109BB000A8018804A5038607A3058608A5058407D0 -:109BC000A7058406A8058206AA058205AA058105BF -:109BD00091059504800591059504800591059504EE -:109BE00080059204950480059204950480059204F2 -:109BF00095048005920494058005900594068005DF -:109C00009005940680058F05920882058E059208BE -:109C100082058C06900A82068A078E0C84068707C6 -:109C200081068C06850781158907870883138918A3 -:109C300085118B16870F8D148A0C91128E07AC0E2E -:109C4000FF0AFFB88BFFB205B006AF08AD09AC0B39 -:109C5000AA0CA90E8107A7058208A6058407A405FA -:109C60008607A3058707A10589079F058A089E0522 -:109C70008C079C058D089B058F0799059008980512 -:109C80009207960594079505950793059707920502 -:109C9000813581378137813781378137A437B305E3 -:109CA000B305B305B305B305B3058F05FFFF8CFFFF -:109CB000A20192009203901085058F1C84078E1DCF -:109CC00083088E1D8308911C8207931B82068E05D4 -:109CD000950581068E05970481058E0597048105FB -:109CE0008D05980580058D05990480058D059904DD -:109CF00080058D05990480058D05990480058D05E5 -:109D0000990480058D05990480058D0599048005C9 -:109D10008D05990480058D05970581058D059705AD -:109D200081058E05950581068E05930682068E05B2 -:109D3000910782078F058D0883089005870A830B9A -:109D40009105841C9205851A930586189405A5151E -:109D5000AA11C50CFFFF11F11BA2219A269429908C -:109D60002B8E0D8C05850E850B880588098B088840 -:109D70000689088E0786058B07910784058B069355 -:109D80000683058C06950582058D05960681048D52 -:109D900006970580058D05980580058D059804803A -:109DA000048E0B99048E0B99058E0B98058E0B98DB -:109DB000058E05980480068E05960481058F05960C -:109DC0000581068E05940582078F07900583098E0D -:109DD000088C07840B8D0A8607851B8E05871990D2 -:109DE00003891792008B13960FA707ADFFC8FFFFDB -:109DF000059605B305B305B305B305B301AF0581FA -:109E000004AC058107A905810AA605810CA405817A -:109E10000FA10581129E0581139B0583139805866A -:109E2000129605891293058C1290058F118E05925A -:109E3000118B0595108905981086059B0F84059E4A -:109E4000108115A012A310A60DA80BAB09AD06AF8B -:109E500004B2A7FFFFFF03CA0BB10FAB0790118F2E -:109E60000C8D148A0F8A1688118818861486078428 -:109E7000088715850683078B068408860681068D6C -:109E8000068307890480069005820C8B0591058165 -:109E90000A8D05920481088F05940480069005952B -:109EA000048006900B9505910B9505910B950592F5 -:109EB0000B94069105940480079105930580088F03 -:109EC000049305810A8E059106810C8C068F06820B -:109ED00006890681058E088308850781068C15840E -:109EE0000883078813860A850A82118716870F89D7 -:109EF00014890C8B128C068F10900CAA06AFFFC52C -:109F0000E9FFAC09980F8D0095138A029217880417 -:109F1000901986068E1B850788098F0A83068D088F -:109F20009007820590078F078205930690058005AC -:109F300094068F06800596058F05800597058F048A -:109F4000800598048F04800598048E05980B8E0573 -:109F5000980B8F04800598048E04810597058E0464 -:109F6000810596058D05810695068E048305940569 -:109F70008D05830693068D04850690078B0586075D -:109F80008D098A058808880B8706890C8C2D8F2BF4 -:0C9F9000932796249D1FA917D30700FFFC -:109FA000000022003500D2000001A8014302AC02EB -:0A9FB0005403ED035404FF049A0566 -:069FBA0000EE00F00D0EA8 -:089FC000EE6AEA62FDD712000F -:10A0000000000F0016006B008300DC002D016601CC -:10A01000C10116024C02AB0202031B032A034403D4 -:04A020006F03750352 -:0CA024009F9F03BA049A059A0499039BBD -:10A030009F9F9FC0BF9F9F7FBF9F03CD0E96128E95 -:10A04000168A0487078B0385038C04800383048BA3 -:10A0500004820282048B03840281038B02870281C3 -:10A06000038A028802810488038902800387028BA5 -:10A0700003810385028C03820482038C03830480A2 -:10A08000038C0685048C168713890E8E0395FFCDED -:10A090000084019E029C029B029C039B029B1D9BD1 -:10A0A0001D811D81FFFFFCC0850194008403910286 -:10A0B0008305900382069003820790028103810248 -:10A0C0008F02820481028E02830481028D02840445 -:10A0D00081028D02850381028C02860381028A033C -:10A0E000870382028802880482028603890483022D -:10A0F0008A0D84028C0A85028D0887029003E00293 -:10A100009AFF8501920283049303820495028203DD -:10A110009602810289028A02810289028A028102F0 -:10A1200089028A02810289028A02810288028A03E4 -:10A130008202870289048202850387068303810ADB -:10A1400084038404810A870C84068A0A8802FF0734 -:10A15000D3849A0299049705960781039402820496 -:10A160009302840391028504900287038E0288047F -:10A170008D028A038B028B048A02811C811D811D42 -:10A18000941D9C029C029C02C80200FA068D028863 -:10A190000F8304870F82038809820281038A028168 -:10A1A0000287028C02810287028C02810187028D64 -:10A1B00002810187028E02800187038D028002875F -:10A1C000028C02810287028C02810387038A02814A -:10A1D0000388048802810588058402820E8902832F -:10A1E0000C8A0894ECE591088B1188158517840575 -:10A1F0008602840585038902830386038A0281031C -:10A2000086038C02810287028C02810287028D0202 -:10A21000800287028C02810287028C0281028702FF -:10A220008B038102880289038302870284058305E8 -:10A230008703850E8A00950CE60680FF9C029C022F -:10A240009C029702810294028105910281088F028B -:10A2500082098C0285098902880987028B08840299 -:10A260008D0982029008930B950998069A04FC01C7 -:10A2700005F4038A088807870A8509850483058110 -:10A280000B8303810485028206850388028105878A -:10A29000028902810388028A02810388028A02817C -:10A2A0000289028A02810388028A02810488028963 -:10A2B00003810686028803820383038102860B835F -:10A2C0000581048208840B84058709860597E7E5E4 -:10A2D00098048B098600890C8402880E8203880307 -:10A2E000880382028A02870381028C02870281022C -:10A2F0008C02870280038C02870281028C02870213 -:10A3000081028C02870281028A0387028203890309 -:10A3100086028303870485028504810781038708F9 -:10A320008A168F12E90C9F9F03AB038A048B048962 -:10A33000048B0589048A0489028C038B9F9F9FC02C -:10A34000C89F9401940A940A96089F05B99FA9FF93 -:10A350009B009403940A95099806FF0302830A94CC -:10A360000A9407940497BAFF15C815891589028BBA -:10A37000019B019C019D029D049C159A148A138BDC -:10A38000028A029B019C019D029D159C1589148ADD -:0AA39000118DFFA0FFFFFFFF00FF8B -:06A39A0000000E001B0094 -:10A3A00048007D00B400E700F0000D012A014B01D8 -:10A3B0006401700185018E01A301D601E20115023D -:10A3C000460267029C02CB02EA02210352036003A9 -:10A3D00071039C03CD03F8031B045C047D04B804E3 -:10A3E000E5040E05410564059705AC05CD05EA05B4 -:10A3F0000F0624063D0656067F06A406D50600076E -:10A40000390752076B0784079D07C607DF0718083F -:10A4100037084C086B087C089508A108D408F9088F -:10A42000200945097A099B09E409F909140A330A44 -:10A43000540A710A8A0A9F0AC80AED0A120B270BEE -:10A440005A0B770B8C0BA50BBE0BE30B040C390CD2 -:10A450005C0C630C860C9F0CAD0CD60C050D2A0D04 -:10A46000610D6C0DAB0DB80D050E3C0E5D0E700E42 -:10A47000730EBA0ECB0EE40E150F3C0F610F6B0F6F -:04A48000860F890FAB -:08A4880003F8018A0C85028231 -:10A490000A85028394FF00CD0591039101C70591C0 -:10A4A00003919DDA83018F0183018F018301880667 -:10A4B000870D81078F0183018F0183018F01820145 -:10A4C0008607890D83058F0183018F018301A20017 -:10A4D00002B40186048A0186018802810185008810 -:10A4E000018300860287028201851285018502842C -:10A4F000018400870185018301880284018201892A -:10A50000058403929A9F9203880585018301850142 -:10A51000860283018400890282058B0382039202F2 -:10A5200082028C02830289048402820186018503EF -:10A53000830186008701820191019D0403A4069195 -:10A5400004880281028208860185008602840185D2 -:10A5500000860384018401860582018306860282C7 -:10A560000180038803850294069201900082FF9D7A -:10A570000194069002918BFF07E70C8C03890387F7 -:10A580000286028B0184028E018201910181029177 -:10A5900000800093B0B093008100910181018F028F -:10A5A00082028D0284028B028602870389038D0B4F -:10A5B000E707009F019601950282009002810491B5 -:10A5C000078D078F04940092028101900183018F0F -:10A5D0000095A0A6950195019501950191018B0A21 -:10A5E000900B9501950195019501A40188FF8201C9 -:10A5F0008F0190069404FC0001B801950195019526 -:10A60000019501950195019501950195FFBC018783 -:10A610000295029494FF01C1039304900490049066 -:10A6200003900391039103910193A0C490028B0ABC -:10A6300085028903860187058601830186018600DC -:10A6400084018601840085028601820186028601DA -:10A6500080028701880184048B03900AA30201CA47 -:10A66000019501941095108694FF00B3018B01872A -:10A670000389018604890186028801800086018899 -:10A68000018200860187018301860185018402869B -:10A69000018301850687018604880187BFB488018C -:10A6A0008B0087018C01860185008501860185006C -:10A6B0008501860185008501860183018502860169 -:10A6C000810280018301880182049205B70300A4FE -:10A6D0000294049202910180028F0182028E018312 -:10A6E000028C0185108B1086029001940096B7A110 -:10A6F0008501880083088702820285018701840022 -:10A700008700860184008700860184008700860117 -:10A710008400860186018400850187018500870801 -:10A720008600B60608B50C8C028901820283018777 -:10A7300001830186018601830186008600840187EA -:10A7400000860184018601860283018401870884D2 -:10A75000058FB1B7960096008D0086018A008604A9 -:10A760008700880585008B0482008D059006930381 -:10A77000C30104BB04890682028702800180018331 -:10A780000187028301850086018501850086018598 -:10A790000185018602830185028601810180018392 -:10A7A0000588068102890484B3B68605880084077B -:10A7B0008701840284018601860184008601870066 -:10A7C000830186018700840086018501830187015A -:10A7D0008402820188028B0DB80901FE0186028C79 -:10A7E0000285028B028594FF01FF018601820286A9 -:10A7F0000685028704850094A0FC950193029303CB -:10A80000810091018101900183018F0184018D01FB -:10A8100085018D0186018B0187018B0188018901EA -:10A8200089019E01009E00840090008400900084B5 -:10A8300000900084009000840090008400900084C8 -:10A8400000900084009000840090008400900084B8 -:10A85000009000849AA189018A0188018A018701F8 -:10A860008C0186018C0185018E0184018E0183019A -:10A870009001810192018100920194039402A4014C -:10A8800001B101950194019501940188028201842E -:10A890000486028101850284018402860282068F79 -:10A8A00004919DBF8D0781048A04870288028B0171 -:10A8B0008701840183038700840082058601830069 -:10A8C0008201820186018300840082008601820168 -:10A8D0008400820086018102830082018701820A4E -:10A8E0008A00A10802A70491048F068F048D0182BB -:10A8F000038B0185048C0183048F018005910494EE -:10A9000004950294999C8610861085008501860125 -:10A910008500860086018500860086018500860008 -:10A9200086018500850186018301850286018301F8 -:10A9300084028702800581028902820393059F02B7 -:10A94000069E0A8E038A0385018902890187028B8C -:10A950000086018D0086018D0086018D0186018CA7 -:10A960000186018B028802880089008A999E8610E0 -:10A9700086108D0086018D0086018D0086018D0078 -:10A9800086018C0186018C0186018A02880186037A -:10A990008B028E0AA20510B1108600860185018502 -:10A9A0000086018501850086018501850086018577 -:10A9B0000185008601850185008601850185008667 -:10A9C000018501850086018DB1B486108610850051 -:10A9D0008E0185008F0085008F0085008F00850027 -:10A9E0008F0085008F0085008F00C400069E0B8DB0 -:10A9F000028A02870288018A0187018C0086018D04 -:10AA00000086018D0086008701840186008601840E -:10AA10000186008600840288068400890585B19E2F -:10AA200086108D10950195019501950195018E0176 -:10AA30008610B41000B1008E0086018D0086018D55 -:10AA40000086018D108610860086018D0086018D9E -:10AA50000086018DBFCC9601950186018D0086018F -:10AA60008D0086018C008701870F890D9600960066 -:10AA7000AC0010991086028D02930493029102801B -:10AA8000028F0282018D0385018A02880188038A70 -:10AA90000086018D0096B19C861095109501950158 -:10AAA00095019501950195019501B40110991086C4 -:10AAB00003870395039503950293029203920391F2 -:10AAC00010921086999C8610861095039502950326 -:10AAD0009503950395039502870386109C10089DA6 -:10AAE0000C8C028903870187018B0187018C00860A -:10AAF000018D0086018D0186018C0186018B028803 -:10AB000002880C89088CB1A08610861086008E0001 -:10AB100086008E0086008E0086008E0084018E01E5 -:10AB200084018E0182028F029206A702089D0C8C7E -:10AB3000028902880187028B0186018C0086028EC1 -:10AB40000084048E0182018C01810182018C0181CB -:10AB50000283028801820C8401830886B1A08610DA -:10AB6000861086008E0086008E0086008E0086008D -:10AB70008D0184018B04840180018903830788038C -:10AB800086058A028A009C0003B302860588018636 -:10AB90000187028201860186018301860086018584 -:10ABA0000185008601850185008601850185018674 -:10ABB0000185028302860284028101880585019352 -:10ABC00099A0960096009600960096008610861032 -:10ABD0009600960096009600AC000C990E8A02959D -:10ABE00001950196019501950195019402940E87B6 -:10ABF0000C8899A0950194049405940594059205F8 -:10AC00008F048F048F048F049204AB0105990A927C -:10AC100009920490058E048E05900694069406927F -:10AC20000989068AA9A686008B0186028803880303 -:10AC300084038B0381038F0391058F0581038C03AC -:10AC400085028803870387038B0196029C00009985 -:10AC500002960395039503950A94098D048B04903D -:10AC6000039002920094A9AC86008C0086028A00B0 -:10AC700086048900800286018700810386018500A1 -:10AC80008303860184008502860182008603860193 -:10AC90008000880386018A0386018B0295019C014E -:10ACA00015DF0181019101810191018101910181F2 -:10ACB0000191018101910181019100820091B0B265 -:10ACC00095019503950395039503940495049503C5 -:10ACD0009503B30100B000910182019101810191BE -:10ACE0000181019101810191018101910181019114 -:10ACF0001581CEE19401920292029402960295028D -:10AD00009503D60100AB009600960096009600963B -:10AD1000009600960096009600960096E09A95019F -:10AD2000950395029502FF00A68993018C04830187 -:10AD300080018B02830082018A01830184008A00E2 -:10AD4000830184008A00830184008A0083018300D8 -:10AD50008C00820182008C018C0BB40A12AF11842A -:10AD6000018C0186008C0188018A0188018A018892 -:10AD7000018A0188018B0286038B0283088D04906F -:10AD8000B8A08F068D0884028C0286018A02880191 -:10AD90008A0188018A0188018A0188018B01860164 -:10ADA0008C0185028D01A60004A10890028D028409 -:10ADB000018C0286018A0188018A0188018A018842 -:10ADC000008B0088018C018611861284A2B4920245 -:10ADD0008E0780048C03810182018B018201830133 -:10ADE0008A01820183018A01820183018A01820131 -:10ADF00083018B01810183018B0182058D01830415 -:10AE0000B50001B601950195109003850181018F70 -:10AE10000183008F0184018E0184018E00840190E2 -:10AE20000295AAAB8902810480018704810B860107 -:10AE300083018101830186008500820083008501F2 -:10AE400085008200830085018500820083008501E2 -:10AE500083018201830086018305830086008405C7 -:10AE600081018601890087048B009A0112AF128448 -:10AE7000018C019400950195019502950B950A8C22 -:10AE8000CDB488018A0188018A0188018501820187 -:10AE9000850C8201950C95019501CC0101C40196A8 -:10AEA0000185018D0185018D0185018D0185018C53 -:10AEB0000181108202810F810182AFDC84128F1226 -:10AEC0009402940192038001900282018E02840117 -:10AED0008C0286018A03890096019C0000B0018ED5 -:10AEE0000184018E0184018E0184018E12841284FA -:10AEF00001950195019500969DB48A0C8B0C9500E7 -:10AF0000950195018B0C8B0B9401950195018B0C90 -:10AF10009C0B0CB50C8A018C019400950195019550 -:10AF200002950B950A8CA1B491048E0782028C03C2 -:10AF300086018B0188018A0188018A0188018A01C2 -:10AF400088018B0186018C0183038D029008A00487 -:10AF500011B5108501870186008C0088018B01885E -:10AF6000018A0188018A0188018B0286028B028492 -:10AF7000088D0490A1A090048D0883028C038700A3 -:10AF80008A0288018A0188018A0188018B01880070 -:10AF90008C0086018C01860FAF110CCD0C8A018CC0 -:10AFA0000194009501950195019501960095B8A72A -:10AFB00085008C0183048C0184048A018201830151 -:10AFC0008A01820183018A01820183018A0183014E -:10AFD00082018B01830082018B0182018D05830038 -:10AFE000B60301B5019501950E920F88018A01887B -:10AFF000018A0188018A0188018A01880194B5B516 -:10B000008C0A950B950296019600950095008B0190 -:10B010008A0CB40C009D0396049404950494049443 -:10B020000393039103910490039000939DA89305CB -:10B03000930893058F038F04920495039405930559 -:10B040008C038B09A20601B50188028A0286028C54 -:10B050000382028E02800491049202910280028E89 -:10B060000383028B0286008A0189ACB486018C02BC -:10B0700085018905880187048A0184048E0191076E -:10B080008F0490048F0490049303A70100A9018A00 -:10B090000287018A0386018A0485018A028401806D -:10B0A000018A02820182018A02810183018A02806F -:10B0B0000184048A0185028A0187018A0188019539 -:10B0C000A29C960095019301810586028107830861 -:10B0D0008A06810291018101920181009201810021 -:10B0E0009201C80090FF8115FF15C8909201810060 -:10B0F0009201810092018100910182018506810106 -:10B10000830381078A0881058F019501BA01009F99 -:10B11000019501950194019501960295019501957E -:10B12000019501940195F8A6890185048103850C98 -:10B130008302FF0AA19491028E0782038C03860189 -:10B140008B0188018A0186008607860E84088701A4 -:10B15000810088018A0187018B028601B60100A95E -:10B16000018C0186048902850E8702870682018090 -:10B170000187018300860087018401860086018D96 -:10B180000186008D0186008D01950195B49C860095 -:10B190008E008F0882018F0184018F0084018E014F -:10B1A00084018E018401900082018F018E08860047 -:10B1B000B90001B100870081038901840081038BFC -:10B1C00001820081028D018100810A8F0A8C038A2D -:10B1D00001800081038B0182008103890184008149 -:10B1E0000189018600810089FFAC099008820981EC -:10B1F000088290FF02B800850486048002830784D9 -:10B20000018101840184018201830184018201831F -:10B21000018301840182018401820184008301840D -:10B2200001830182018402840780018504830480F4 -:10B23000018EC8BB94019502C50194019502DC0101 -:10B2400002890791018E0285018B02820082008BA8 -:10B2500005810082018900810183008100890181CB -:10B2600001840080008901810184008001890180BE -:10B2700000840081008A018101820081018A0081AD -:10B280000185018B0186028D02820490BC898F01A9 -:10B2900081038A01810181048A0182008101800188 -:10B2A0008A018200820080018A018200820080017E -:10B2B0008A018101810081018A0181088B01810756 -:10B2C0009501B80101BA03940292018002900182B3 -:10B2D000018F018401910394029201800290018206 -:10B2E000018F0184D0B6950190018B0C8D0A8F08D7 -:10B2F000910693049502BC00FFFF89CF91028E074F -:10B3000085018B0288018B00800081078900800104 -:10B310008107890081008200840089008100820009 -:10B32000840089008001800182038A0081008102FB -:10B3300081018A0088018B0186018D0182029002C1 -:10B34000890400C900960096009600960096009623 -:10B350000096CBDC930191058101900183018F015F -:10B3600083018F01830191009205D803009F00871C -:10B37000008D0187008C0187008C0187008C01877C -:10B380000B8701810B870181008C0187008C01876D -:10B39000008C0187008C0187008C0087CA9D860085 -:10B3A0008D0084018C0284018C03840180008C0157 -:10B3B000830180018C01820181018D0182048E0153 -:10B3C0008302D30100D1018E0184018D0186018C9D -:10B3D00000820182018C00820182018C0181018244 -:10B3E000058D0180018F0381FFD4019103930193A7 -:10B3F00000959DF68511950B960195019501950196 -:10B4000094008B02950B9502950195018500FFFF35 -:02B4100000CF6B -:06B4680090EC5BF0120005 -:02B46E000000DC -:10B47000849083C083FF80948084120085C000F094 -:10B48000016A00C086F084C087F0848086C083FF94 -:10B490008094808487C083FF8094808412008EC053 -:10B4A00083FF809480848094808412007AC083FF1C -:10B4B000809480847BC083FF80948084120000018C -:10B4C000350E836FD5DF00017D510001846F856BE0 -:10B4D0000001D89084378537D1DF0001360E836FA5 -:10B4E000C7DF00013F0E846F010E856FC7DF0001CB -:10B4F000370E836FBDDF00017C510001846F856BC7 -:10B50000020E00017E5D07E13A0E00018427000E65 -:10B510000001852310D000017E0507E1200E000107 -:10B520008427000E0001852306D0180E0001842711 -:10B53000000E0001852300018407000E855B0001D9 -:10B54000EF0ED8808455000E855504E2EF0E000101 -:10B55000846F856B7CC000F000C001F0006A005071 -:10B560000001841301500001851388DF0001200EC3 -:10B57000836F7EDF00017C510001846F856B7EDF6D -:10B580000001210E836F74DF00017D510001846F83 -:10B59000856B0001D8908437853770DF1200200E4C -:10B5A0000001825D03E10001B60E826F000182514D -:10B5B0007E0803E2220E0001825F210E0001825DFF -:10B5C00004E300018251A30803E20001820E826FAE -:10B5D000210E0001825DF66EF76AD890F636F736D6 -:10B5E0009A0EF626A30EF7220900F5CF88F00A007E -:10B5F000F5CF89F000018229DF0FF66EF76AD89047 -:10B60000F636F7369A0EF626A30EF7220900F5CF86 -:10B610008AF00A00F5CF8BF01200270E0001825D40 -:10B6200003E100013B0E826F220E0001825D03E107 -:10B6300000013C0E826F6D0E0001825D03E100018E -:10B640003D0E826F200E0001825D03E100013E0E7F -:10B65000826F2E0E0001825D04E3000182513E08DC -:10B6600003E200013E0E826F2E0E0001825DF66E37 -:10B67000F76AD890F636F736000EF626A00EF722B7 -:10B680000900F5CF88F00A00F5CF89F00001822982 -:10B69000D20FF66EF76AD890F636F736000EF62619 -:10B6A000A00EF7220900F5CF8AF00A00F5CF8BF043 -:10B6B0001200200E0001825D03E100012F0E826F57 -:10B6C0002E0E0001825D04E300018251390803E27D -:10B6D00000012F0E826F2E0E0001825DF66EF76A5A -:10B6E000D890F636F736A00EF6269F0EF722090000 -:10B6F000F5CF88F00A00F5CF89F000018229D20F3A -:10B70000F66EF76AD890F636F736A00EF6269F0E3C -:10B71000F7220900F5CF8AF00A00F5CF8BF012006E -:10B7200000017C51006E016A013404E20050E60819 -:10B73000000E015403E20001E60E7C6F00017D5112 -:10B74000006E016A013404E200509B08000E0154AF -:10B7500003E200019B0E7D6FB2DE0001220E836FBB -:10B7600087DE84800001816B00018151EA6A600FED -:10B77000E96E000EEA22EFCF82F00001825106E16D -:10B7800000013A0E826F0001190E816FF86A000104 -:10B79000825101E1DCD01A0E0001815D01E3D7D0B6 -:10B7A000020E00017E5D02E184DF06D000017E050D -:10B7B00002E133DF01D0F3DE00018E6B88C08CF034 -:10B7C00089C08DF000018A5100018C5D00018B5110 -:10B7D00000018D5901E3AFD0020E00017E5D1DE135 -:10B7E0008CC0F6FF8DC0F7FF010E0F0B05E0D8905F -:10B7F000F732F632E806FBE1010ED890F636F7365E -:10B80000E806FBE1000EF6269A0EF7220900F5CFB6 -:10B8100084F00A00F5CF85F03CD000017E051DE1E3 -:10B820008CC0F6FF8DC0F7FF010E0F0B05E0D8901E -:10B83000F732F632E806FBE1010ED890F636F7361D -:10B84000E806FBE1240EF626A00EF7220900F5CF4C -:10B8500084F00A00F5CF85F01CD08CC0F6FF8DC0B7 -:10B86000F7FF010E0F0B05E0D890F732F632E8062D -:10B87000FBE1010ED890F636F736E806FBE1880EBC -:10B88000F626A40EF7220900F5CF84F00A00F5CFC2 -:10B8900085F000018C51010B05E00001845100018D -:10B8A000806F05D085C000F0016A00C080F0000103 -:10B8B0008051006E016A0050800B1DE07F0E000178 -:10B8C000805F00017F5109E000018051000804E21F -:10B8D00000018007EBDDF8D70DD08EC083FF00019B -:10B8E0008051000807E200018007809480848094E2 -:10B8F0008084F5D71BD00001802B00017F510EE022 -:10B900008EC083FF00018051000807E2000180071C -:10B910008094808480948084F5D708D00001805181 -:10B92000000804E200018007C1DDF8D700018C2B7C -:10B93000000E8D2347D70001812B00018151EA6A57 -:10B94000600FE96E000EEA22EFCF82F020D70001EF -:06B95000836B8EDD120086 -:020000040030CA -:0100010008F6 -:0100020018E5 -:010003000EEE -:01000500807A -:010006008079 -:00000001FF diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/ostc_bigscreen.map --- a/code_part1/OSTC_code_c_part2/ostc_bigscreen.map Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1722 +0,0 @@ -MPLINK 4.33, Linker -Linker Map File - Created Thu Sep 24 11:19:30 2009 - - Section Info - Section Type Address Location Size(Bytes) - --------- --------- --------- --------- --------- - der_code romdata 0x000000 program 0x000000 - der_start code 0x000000 program 0x000006 - main code 0x009000 program 0x00003e - font_data_large romdata 0x009a00 program 0x00059c -.romdata_p3_wordprocessor.o romdata 0x009f9c program 0x000000 - .code_p3_wordprocessor.o code 0x009f9c program 0x000000 - font_table_large romdata 0x009fa0 program 0x00001a - .code code 0x009fba program 0x00000e - font_table_medium romdata 0x00a000 program 0x000024 - font_data_medium romdata 0x00a024 program 0x000376 - font_table_small romdata 0x00a39a program 0x0000ea -.idata_p3_wordprocessor.o_i romdata 0x00a484 program 0x000000 - font_data_small romdata 0x00a488 program 0x000f8a - main_wordprocessor code 0x00b468 program 0x000006 - .cinit romdata 0x00b46e program 0x000002 - subroutines2 code 0x00b470 program 0x0004e6 -.config_300001_p3_wordprocessor.o romdata 0x300001 program 0x000001 -.config_300002_p3_wordprocessor.o romdata 0x300002 program 0x000001 -.config_300003_p3_wordprocessor.o romdata 0x300003 program 0x000001 -.config_300005_p3_wordprocessor.o romdata 0x300005 program 0x000001 -.config_300006_p3_wordprocessor.o romdata 0x300006 program 0x000001 - .tmpdata udata 0x000000 data 0x000002 - MATH_DATA udata 0x000002 data 0x000000 - bank0a udata 0x000060 data 0x000030 -.udata_p3_wordprocessor.o udata 0x000090 data 0x000000 -.idata_p3_wordprocessor.o idata 0x000090 data 0x000000 - .stack udata 0x000c00 data 0x000100 - SFR_BANKED0 udata 0x000d60 data 0x00000c - SFR_BANKED1 udata 0x000d70 data 0x00000c - SFR_BANKED2 udata 0x000d80 data 0x00000c - SFR_BANKED3 udata 0x000d90 data 0x000004 - SFR_BANKED4 udata 0x000dd4 data 0x000002 - SFR_BANKED5 udata 0x000dd8 data 0x000001 - SFR_BANKED6 udata 0x000de0 data 0x000008 - SFR_BANKED7 udata 0x000df0 data 0x000004 - SFR_BANKED8 udata 0x000df8 data 0x000001 - SFR_BANKED9 udata 0x000dfa data 0x000001 - SFR_BANKED10 udata 0x000dfc data 0x000001 - SFR_BANKED11 udata 0x000e20 data 0x000060 - SFR_BANKED12 udata 0x000f00 data 0x000060 - SFR_UNBANKED0 udata 0x000f60 data 0x000018 - SFR_UNBANKED1 udata 0x000f80 data 0x000080 - - - - Program Memory Usage - Start End - --------- --------- - 0x000000 0x000005 - 0x009000 0x00903d - 0x009a00 0x009f9b - 0x009fa0 0x009fc7 - 0x00a000 0x00a483 - 0x00a488 0x00b411 - 0x00b468 0x00b955 - 0x300001 0x300003 - 0x300005 0x300006 - 7945 out of 99352 program addresses used, program memory utilization is 7% - - - - Symbols - Sorted by Name - Name Address Location Storage File - --------- --------- --------- --------- --------- - ___else_lbl00037 0x00b7b6 program static - ___else_lbl00039 0x00b7ac program static - ___else_lbl00043 0x00b85a program static - ___else_lbl00045 0x00b81a program static - ___else_lbl00047 0x00b8a4 program static - ___else_lbl00053 0x00b8da program static - ___else_lbl00059 0x00b91c program static - ___else_lbl00061 0x00b8f6 program static - ___for_lbl00040 0x00b92c program static - ___for_lbl00041 0x00b936 program static - ___for_lbl00062 0x00b7c4 program static - ___if_lbl00030 0x00b73c program static - ___if_lbl00031 0x00b758 program static - ___if_lbl00032 0x00b78c program static - ___if_lbl00036 0x00b7b8 program static - ___if_lbl00038 0x00b7b8 program static - ___if_lbl00042 0x00b892 program static - ___if_lbl00044 0x00b892 program static - ___if_lbl00046 0x00b8ae program static - ___if_lbl00052 0x00b8f4 program static - ___if_lbl00058 0x00b92c program static - ___if_lbl00060 0x00b92c program static - ___return_lbl00000 0x000004 program static - ___return_lbl00003 0x00b47a program static - ___return_lbl00004 0x00b49c program static - ___return_lbl00005 0x00b4aa program static - ___return_lbl00006 0x00b4bc program static - ___return_lbl00029 0x00b954 program static - ___while_lbl00033 0x00b78e program static - ___while_lbl00034 0x00b94e program static - ___while_lbl00048 0x00b8c8 program static - ___while_lbl00049 0x00b8d8 program static - ___while_lbl00050 0x00b8de program static - ___while_lbl00051 0x00b8f4 program static - ___while_lbl00054 0x00b904 program static - ___while_lbl00055 0x00b91a program static - ___while_lbl00056 0x00b91c program static - ___while_lbl00057 0x00b92c program static - __config_0 0x300001 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_1 0x300002 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_2 0x300003 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_3 0x300005 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_4 0x300006 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __tmplbl_6 0x00b7a0 program static - __tmplbl_7 0x00b796 program static - __zero_memory 0x009fba program extern C:\MCC18\src\traditional\proc\p18F4685.asm - clear_loop 0x009fc0 program static C:\MCC18\src\traditional\proc\p18F4685.asm - der_start 0x000000 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - main 0x009000 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - main_wordprocessor 0x00b468 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wordprocessor 0x00b720 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_large_data 0x009a00 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_large_table 0x009fa0 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_medium_data 0x00a024 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_medium_table 0x00a000 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_set_char_font_large 0x00b6b2 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_set_char_font_medium 0x00b61a program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_set_char_font_small 0x00b59e program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_set_window 0x00b4be program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_small_data 0x00a488 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_small_table 0x00a39a program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_write_black 0x00b49e program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_write_color 0x00b4ac program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_write_command 0x00b470 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_write_data 0x00b47c program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - ADCON0 0x000fc2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON0bits 0x000fc2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON1 0x000fc1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON1bits 0x000fc1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON2 0x000fc0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON2bits 0x000fc0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADRES 0x000fc3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADRESH 0x000fc4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADRESL 0x000fc3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0CON 0x000e20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0CONbits 0x000e20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D0 0x000e26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D0bits 0x000e26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D1 0x000e27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D1bits 0x000e27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D2 0x000e28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D2bits 0x000e28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D3 0x000e29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D3bits 0x000e29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D4 0x000e2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D4bits 0x000e2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D5 0x000e2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D5bits 0x000e2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D6 0x000e2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D6bits 0x000e2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D7 0x000e2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D7bits 0x000e2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0DLC 0x000e25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0DLCbits 0x000e25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDH 0x000e23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDHbits 0x000e23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDL 0x000e24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDLbits 0x000e24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDH 0x000e21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDHbits 0x000e21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDL 0x000e22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDLbits 0x000e22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1CON 0x000e30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1CONbits 0x000e30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D0 0x000e36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D0bits 0x000e36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D1 0x000e37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D1bits 0x000e37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D2 0x000e38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D2bits 0x000e38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D3 0x000e39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D3bits 0x000e39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D4 0x000e3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D4bits 0x000e3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D5 0x000e3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D5bits 0x000e3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D6 0x000e3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D6bits 0x000e3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D7 0x000e3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D7bits 0x000e3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1DLC 0x000e35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1DLCbits 0x000e35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDH 0x000e33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDHbits 0x000e33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDL 0x000e34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDLbits 0x000e34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDH 0x000e31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDHbits 0x000e31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDL 0x000e32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDLbits 0x000e32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2CON 0x000e40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2CONbits 0x000e40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D0 0x000e46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D0bits 0x000e46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D1 0x000e47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D1bits 0x000e47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D2 0x000e48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D2bits 0x000e48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D3 0x000e49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D3bits 0x000e49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D4 0x000e4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D4bits 0x000e4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D5 0x000e4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D5bits 0x000e4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D6 0x000e4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D6bits 0x000e4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D7 0x000e4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D7bits 0x000e4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2DLC 0x000e45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2DLCbits 0x000e45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDH 0x000e43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDHbits 0x000e43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDL 0x000e44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDLbits 0x000e44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDH 0x000e41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDHbits 0x000e41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDL 0x000e42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDLbits 0x000e42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3CON 0x000e50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3CONbits 0x000e50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D0 0x000e56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D0bits 0x000e56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D1 0x000e57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D1bits 0x000e57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D2 0x000e58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D2bits 0x000e58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D3 0x000e59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D3bits 0x000e59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D4 0x000e5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D4bits 0x000e5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D5 0x000e5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D5bits 0x000e5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D6 0x000e5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D6bits 0x000e5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D7 0x000e5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D7bits 0x000e5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3DLC 0x000e55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3DLCbits 0x000e55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDH 0x000e53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDHbits 0x000e53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDL 0x000e54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDLbits 0x000e54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDH 0x000e51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDHbits 0x000e51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDL 0x000e52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDLbits 0x000e52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4CON 0x000e60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4CONbits 0x000e60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D0 0x000e66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D0bits 0x000e66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D1 0x000e67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D1bits 0x000e67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D2 0x000e68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D2bits 0x000e68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D3 0x000e69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D3bits 0x000e69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D4 0x000e6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D4bits 0x000e6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D5 0x000e6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D5bits 0x000e6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D6 0x000e6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D6bits 0x000e6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D7 0x000e6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D7bits 0x000e6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4DLC 0x000e65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4DLCbits 0x000e65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDH 0x000e63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDHbits 0x000e63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDL 0x000e64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDLbits 0x000e64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDH 0x000e61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDHbits 0x000e61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDL 0x000e62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDLbits 0x000e62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5CON 0x000e70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5CONbits 0x000e70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D0 0x000e76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D0bits 0x000e76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D1 0x000e77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D1bits 0x000e77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D2 0x000e78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D2bits 0x000e78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D3 0x000e79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D3bits 0x000e79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D4 0x000e7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D4bits 0x000e7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D5 0x000e7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D5bits 0x000e7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D6 0x000e7c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D6bits 0x000e7c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D7 0x000e7d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D7bits 0x000e7d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5DLC 0x000e75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5DLCbits 0x000e75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDH 0x000e73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDHbits 0x000e73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDL 0x000e74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDLbits 0x000e74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDH 0x000e71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDHbits 0x000e71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDL 0x000e72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDLbits 0x000e72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BAUDCON 0x000fb8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BAUDCONbits 0x000fb8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BIE0 0x000dfa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BIE0bits 0x000dfa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON1 0x000f70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON1bits 0x000f70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON2 0x000f71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON2bits 0x000f71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON3 0x000f72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON3bits 0x000f72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BSEL0 0x000df8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BSEL0bits 0x000df8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BSR 0x000fe0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON 0x000f6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO0 0x000f5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO0bits 0x000f5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO1 0x000f4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO1bits 0x000f4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO2 0x000f3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO2bits 0x000f3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO3 0x000f2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO3bits 0x000f2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO4 0x000e7f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO4bits 0x000e7f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO5 0x000e6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO5bits 0x000e6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO6 0x000e5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO6bits 0x000e5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO7 0x000e4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO7bits 0x000e4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO8 0x000e3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO8bits 0x000e3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO9 0x000e2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO9bits 0x000e2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCONbits 0x000f6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT 0x000f6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO0 0x000f5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO0bits 0x000f5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO1 0x000f4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO1bits 0x000f4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO2 0x000f3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO2bits 0x000f3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO3 0x000f2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO3bits 0x000f2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO4 0x000e7e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO4bits 0x000e7e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO5 0x000e6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO5bits 0x000e6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO6 0x000e5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO6bits 0x000e5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO7 0x000e4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO7bits 0x000e4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO8 0x000e3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO8bits 0x000e3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO9 0x000e2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO9bits 0x000e2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTATbits 0x000f6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCP1CON 0x000fbd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCP1CONbits 0x000fbd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCPR1 0x000fbe data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCPR1H 0x000fbf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCPR1L 0x000fbe data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CIOCON 0x000f73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CIOCONbits 0x000f73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CMCON 0x000fb4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CMCONbits 0x000fb4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - COMSTAT 0x000f74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - COMSTATbits 0x000f74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CVRCON 0x000fb5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CVRCONbits 0x000fb5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRA 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRAbits 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRB 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRBbits 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRC 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRCbits 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRD 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRDbits 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRE 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDREbits 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECANCON 0x000f77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECANCONbits 0x000f77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1AS 0x000fb6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1ASbits 0x000fb6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1CON 0x000fba data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1CONbits 0x000fba data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1DEL 0x000fb7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1DELbits 0x000fb7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCPR1 0x000fbb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCPR1H 0x000fbc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCPR1L 0x000fbb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EEADR 0x000fa9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EEADRH 0x000faa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EECON1 0x000fa6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EECON1bits 0x000fa6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EECON2 0x000fa7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EEDATA 0x000fa8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR0 0x000fe9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR0H 0x000fea data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR0L 0x000fe9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR1 0x000fe1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR1H 0x000fe2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR1L 0x000fe1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR2 0x000fd9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR2H 0x000fda data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR2L 0x000fd9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - HLVDCON 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - HLVDCONbits 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INDF0 0x000fef data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INDF1 0x000fe7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INDF2 0x000fdf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON 0x000ff2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON2 0x000ff1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON2bits 0x000ff1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON3 0x000ff0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON3bits 0x000ff0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCONbits 0x000ff2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR1 0x000f9f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR1bits 0x000f9f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR2 0x000fa2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR2bits 0x000fa2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR3 0x000fa5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR3bits 0x000fa5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATA 0x000f89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATAbits 0x000f89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATB 0x000f8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATBbits 0x000f8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATC 0x000f8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATCbits 0x000f8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATD 0x000f8c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATDbits 0x000f8c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATE 0x000f8d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATEbits 0x000f8d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LVDCON 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LVDCONbits 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL0 0x000df0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL0bits 0x000df0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL1 0x000df1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL1bits 0x000df1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL2 0x000df2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL2bits 0x000df2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL3 0x000df3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL3bits 0x000df3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCCON 0x000fd3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCCONbits 0x000fd3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCTUNE 0x000f9b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCTUNEbits 0x000f9b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PC 0x000ff9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PCL 0x000ff9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PCLATH 0x000ffa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PCLATU 0x000ffb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE1 0x000f9d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE1bits 0x000f9d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE2 0x000fa0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE2bits 0x000fa0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE3 0x000fa3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE3bits 0x000fa3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR1 0x000f9e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR1bits 0x000f9e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR2 0x000fa1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR2bits 0x000fa1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR3 0x000fa4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR3bits 0x000fa4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PLUSW0 0x000feb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PLUSW1 0x000fe3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PLUSW2 0x000fdb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTA 0x000f80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTAbits 0x000f80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTB 0x000f81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTBbits 0x000f81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTC 0x000f82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTCbits 0x000f82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTD 0x000f83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTDbits 0x000f83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTE 0x000f84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTEbits 0x000f84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTDEC0 0x000fed data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTDEC1 0x000fe5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTDEC2 0x000fdd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTINC0 0x000fee data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTINC1 0x000fe6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTINC2 0x000fde data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PR2 0x000fcb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PREINC0 0x000fec data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PREINC1 0x000fe4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PREINC2 0x000fdc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PROD 0x000ff3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PRODH 0x000ff4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PRODL 0x000ff3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCON 0x000fd0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCONbits 0x000fd0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCREG 0x000fae data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCSTA 0x000fab data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCSTAbits 0x000fab data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0CON 0x000f60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0CONbits 0x000f60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D0 0x000f66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D0bits 0x000f66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D1 0x000f67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D1bits 0x000f67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D2 0x000f68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D2bits 0x000f68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D3 0x000f69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D3bits 0x000f69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D4 0x000f6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D4bits 0x000f6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D5 0x000f6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D5bits 0x000f6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D6 0x000f6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D6bits 0x000f6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D7 0x000f6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D7bits 0x000f6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0DLC 0x000f65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0DLCbits 0x000f65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDH 0x000f63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDHbits 0x000f63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDL 0x000f64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDLbits 0x000f64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDH 0x000f61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDHbits 0x000f61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDL 0x000f62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDLbits 0x000f62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1CON 0x000f50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1CONbits 0x000f50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D0 0x000f56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D0bits 0x000f56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D1 0x000f57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D1bits 0x000f57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D2 0x000f58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D2bits 0x000f58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D3 0x000f59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D3bits 0x000f59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D4 0x000f5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D4bits 0x000f5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D5 0x000f5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D5bits 0x000f5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D6 0x000f5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D6bits 0x000f5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D7 0x000f5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D7bits 0x000f5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1DLC 0x000f55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1DLCbits 0x000f55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDH 0x000f53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDHbits 0x000f53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDL 0x000f54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDLbits 0x000f54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDH 0x000f51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDHbits 0x000f51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDL 0x000f52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDLbits 0x000f52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXERRCNT 0x000f75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXERRCNTbits 0x000f75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDH 0x000f02 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDHbits 0x000f02 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDL 0x000f03 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDLbits 0x000f03 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDH 0x000f00 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDHbits 0x000f00 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDL 0x000f01 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDLbits 0x000f01 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDH 0x000d76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDHbits 0x000d76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDL 0x000d77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDLbits 0x000d77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDH 0x000d74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDHbits 0x000d74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDL 0x000d75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDLbits 0x000d75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDH 0x000d7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDHbits 0x000d7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDL 0x000d7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDLbits 0x000d7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDH 0x000d78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDHbits 0x000d78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDL 0x000d79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDLbits 0x000d79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDH 0x000d82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDHbits 0x000d82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDL 0x000d83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDLbits 0x000d83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDH 0x000d80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDHbits 0x000d80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDL 0x000d81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDLbits 0x000d81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDH 0x000d86 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDHbits 0x000d86 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDL 0x000d87 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDLbits 0x000d87 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDH 0x000d84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDHbits 0x000d84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDL 0x000d85 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDLbits 0x000d85 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDH 0x000d8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDHbits 0x000d8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDL 0x000d8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDLbits 0x000d8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDH 0x000d88 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDHbits 0x000d88 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDL 0x000d89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDLbits 0x000d89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDH 0x000d92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDHbits 0x000d92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDL 0x000d93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDLbits 0x000d93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDH 0x000d90 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDHbits 0x000d90 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDL 0x000d91 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDLbits 0x000d91 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDH 0x000f06 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDHbits 0x000f06 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDL 0x000f07 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDLbits 0x000f07 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDH 0x000f04 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDHbits 0x000f04 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDL 0x000f05 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDLbits 0x000f05 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDH 0x000f0a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDHbits 0x000f0a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDL 0x000f0b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDLbits 0x000f0b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDH 0x000f08 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDHbits 0x000f08 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDL 0x000f09 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDLbits 0x000f09 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDH 0x000f0e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDHbits 0x000f0e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDL 0x000f0f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDLbits 0x000f0f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDH 0x000f0c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDHbits 0x000f0c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDL 0x000f0d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDLbits 0x000f0d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDH 0x000f12 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDHbits 0x000f12 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDL 0x000f13 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDLbits 0x000f13 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDH 0x000f10 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDHbits 0x000f10 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDL 0x000f11 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDLbits 0x000f11 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDH 0x000f16 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDHbits 0x000f16 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDL 0x000f17 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDLbits 0x000f17 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDH 0x000f14 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDHbits 0x000f14 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDL 0x000f15 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDLbits 0x000f15 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDH 0x000d62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDHbits 0x000d62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDL 0x000d63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDLbits 0x000d63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6SIDH 0x000d60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6SIDHbits 0x000d60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6SIDL 0x000d61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6SIDLbits 0x000d61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDH 0x000d66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDHbits 0x000d66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDL 0x000d67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDLbits 0x000d67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDH 0x000d64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDHbits 0x000d64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDL 0x000d65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDLbits 0x000d65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDH 0x000d6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDHbits 0x000d6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDL 0x000d6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDLbits 0x000d6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDH 0x000d68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDHbits 0x000d68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDL 0x000d69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDLbits 0x000d69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDH 0x000d72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDHbits 0x000d72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDL 0x000d73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDLbits 0x000d73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDH 0x000d70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDHbits 0x000d70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDL 0x000d71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDLbits 0x000d71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON0 0x000de0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON0bits 0x000de0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON1 0x000de1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON1bits 0x000de1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON2 0x000de2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON2bits 0x000de2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON3 0x000de3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON3bits 0x000de3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON4 0x000de4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON4bits 0x000de4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON5 0x000de5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON5bits 0x000de5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON6 0x000de6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON6bits 0x000de6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON7 0x000de7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON7bits 0x000de7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON0 0x000dd4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON0bits 0x000dd4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON1 0x000dd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON1bits 0x000dd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDH 0x000f1a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDHbits 0x000f1a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDL 0x000f1b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDLbits 0x000f1b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDH 0x000f18 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDHbits 0x000f18 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDL 0x000f19 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDLbits 0x000f19 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDH 0x000f1e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDHbits 0x000f1e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDL 0x000f1f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDLbits 0x000f1f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDH 0x000f1c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDHbits 0x000f1c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDL 0x000f1d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDLbits 0x000f1d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SDFLC 0x000dd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SDFLCbits 0x000dd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SPBRG 0x000faf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SPBRGH 0x000fb0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPADD 0x000fc8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPBUF 0x000fc9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON1 0x000fc6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON1bits 0x000fc6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON2 0x000fc5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON2bits 0x000fc5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPSTAT 0x000fc7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPSTATbits 0x000fc7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STATUS 0x000fd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STATUSbits 0x000fd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STKPTR 0x000ffc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STKPTRbits 0x000ffc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T0CON 0x000fd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T0CONbits 0x000fd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T1CON 0x000fcd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T1CONbits 0x000fcd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T2CON 0x000fca data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T2CONbits 0x000fca data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T3CON 0x000fb1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T3CONbits 0x000fb1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TABLAT 0x000ff5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTR 0x000ff6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTRH 0x000ff7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTRL 0x000ff6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTRU 0x000ff8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR0H 0x000fd7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR0L 0x000fd6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR1H 0x000fcf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR1L 0x000fce data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR2 0x000fcc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR3H 0x000fb3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR3L 0x000fb2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOS 0x000ffd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOSH 0x000ffe data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOSL 0x000ffd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOSU 0x000fff data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISA 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISAbits 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISB 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISBbits 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISC 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISCbits 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISD 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISDbits 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISE 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISEbits 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0CON 0x000f40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0CONbits 0x000f40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D0 0x000f46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D0bits 0x000f46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D1 0x000f47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D1bits 0x000f47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D2 0x000f48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D2bits 0x000f48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D3 0x000f49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D3bits 0x000f49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D4 0x000f4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D4bits 0x000f4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D5 0x000f4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D5bits 0x000f4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D6 0x000f4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D6bits 0x000f4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D7 0x000f4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D7bits 0x000f4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0DLC 0x000f45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0DLCbits 0x000f45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDH 0x000f43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDHbits 0x000f43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDL 0x000f44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDLbits 0x000f44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDH 0x000f41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDHbits 0x000f41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDL 0x000f42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDLbits 0x000f42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1CON 0x000f30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1CONbits 0x000f30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D0 0x000f36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D0bits 0x000f36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D1 0x000f37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D1bits 0x000f37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D2 0x000f38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D2bits 0x000f38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D3 0x000f39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D3bits 0x000f39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D4 0x000f3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D4bits 0x000f3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D5 0x000f3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D5bits 0x000f3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D6 0x000f3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D6bits 0x000f3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D7 0x000f3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D7bits 0x000f3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1DLC 0x000f35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1DLCbits 0x000f35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDH 0x000f33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDHbits 0x000f33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDL 0x000f34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDLbits 0x000f34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDH 0x000f31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDHbits 0x000f31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDL 0x000f32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDLbits 0x000f32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2CON 0x000f20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2CONbits 0x000f20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D0 0x000f26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D0bits 0x000f26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D1 0x000f27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D1bits 0x000f27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D2 0x000f28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D2bits 0x000f28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D3 0x000f29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D3bits 0x000f29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D4 0x000f2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D4bits 0x000f2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D5 0x000f2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D5bits 0x000f2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D6 0x000f2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D6bits 0x000f2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D7 0x000f2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D7bits 0x000f2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2DLC 0x000f25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2DLCbits 0x000f25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDH 0x000f23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDHbits 0x000f23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDL 0x000f24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDLbits 0x000f24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDH 0x000f21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDHbits 0x000f21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDL 0x000f22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDLbits 0x000f22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXBIE 0x000dfc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXBIEbits 0x000dfc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXERRCNT 0x000f76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXERRCNTbits 0x000f76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXREG 0x000fad data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXSTA 0x000fac data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXSTAbits 0x000fac data extern C:\MCC18\src\traditional\proc\p18F4685.asm - WDTCON 0x000fd1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - WDTCONbits 0x000fd1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - WREG 0x000fe8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - __tmp_0 0x000000 data static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_black 0x00008e data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_char 0x000082 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_color1 0x00007a data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_color2 0x00007b data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_command 0x000083 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_data_16bit 0x000084 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_data_8bit_one 0x000086 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_data_8bit_two 0x000087 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_debug_U8 0x00008f data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_end 0x00008a data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_font 0x00007e data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_i 0x00008c data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_invert 0x00007f data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_leftx2 0x00007d data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_start 0x000088 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_stringstore 0x000060 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_temp_U8 0x000080 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_top 0x00007c data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_txtptr 0x000081 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - - - - Symbols - Sorted by Address - Name Address Location Storage File - --------- --------- --------- --------- --------- - der_start 0x000000 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - ___return_lbl00000 0x000004 program static - main 0x009000 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_large_data 0x009a00 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_large_table 0x009fa0 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __zero_memory 0x009fba program extern C:\MCC18\src\traditional\proc\p18F4685.asm - clear_loop 0x009fc0 program static C:\MCC18\src\traditional\proc\p18F4685.asm - wp_medium_table 0x00a000 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_medium_data 0x00a024 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_small_table 0x00a39a program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_small_data 0x00a488 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - main_wordprocessor 0x00b468 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_write_command 0x00b470 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - ___return_lbl00003 0x00b47a program static - wp_write_data 0x00b47c program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - ___return_lbl00004 0x00b49c program static - wp_write_black 0x00b49e program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - ___return_lbl00005 0x00b4aa program static - wp_write_color 0x00b4ac program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - ___return_lbl00006 0x00b4bc program static - wp_set_window 0x00b4be program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_set_char_font_small 0x00b59e program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_set_char_font_medium 0x00b61a program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_set_char_font_large 0x00b6b2 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wordprocessor 0x00b720 program extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - ___if_lbl00030 0x00b73c program static - ___if_lbl00031 0x00b758 program static - ___if_lbl00032 0x00b78c program static - ___while_lbl00033 0x00b78e program static - __tmplbl_7 0x00b796 program static - __tmplbl_6 0x00b7a0 program static - ___else_lbl00039 0x00b7ac program static - ___else_lbl00037 0x00b7b6 program static - ___if_lbl00036 0x00b7b8 program static - ___if_lbl00038 0x00b7b8 program static - ___for_lbl00062 0x00b7c4 program static - ___else_lbl00045 0x00b81a program static - ___else_lbl00043 0x00b85a program static - ___if_lbl00042 0x00b892 program static - ___if_lbl00044 0x00b892 program static - ___else_lbl00047 0x00b8a4 program static - ___if_lbl00046 0x00b8ae program static - ___while_lbl00048 0x00b8c8 program static - ___while_lbl00049 0x00b8d8 program static - ___else_lbl00053 0x00b8da program static - ___while_lbl00050 0x00b8de program static - ___while_lbl00051 0x00b8f4 program static - ___if_lbl00052 0x00b8f4 program static - ___else_lbl00061 0x00b8f6 program static - ___while_lbl00054 0x00b904 program static - ___while_lbl00055 0x00b91a program static - ___while_lbl00056 0x00b91c program static - ___else_lbl00059 0x00b91c program static - ___for_lbl00040 0x00b92c program static - ___while_lbl00057 0x00b92c program static - ___if_lbl00058 0x00b92c program static - ___if_lbl00060 0x00b92c program static - ___for_lbl00041 0x00b936 program static - ___while_lbl00034 0x00b94e program static - ___return_lbl00029 0x00b954 program static - __config_0 0x300001 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_1 0x300002 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_2 0x300003 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_3 0x300005 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __config_4 0x300006 program static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - __tmp_0 0x000000 data static Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_stringstore 0x000060 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_color1 0x00007a data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_color2 0x00007b data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_top 0x00007c data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_leftx2 0x00007d data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_font 0x00007e data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_invert 0x00007f data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_temp_U8 0x000080 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_txtptr 0x000081 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_char 0x000082 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_command 0x000083 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_data_16bit 0x000084 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_data_8bit_one 0x000086 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_data_8bit_two 0x000087 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_start 0x000088 data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_end 0x00008a data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_i 0x00008c data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_black 0x00008e data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - wp_debug_U8 0x00008f data extern Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c - RXF6SIDHbits 0x000d60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6SIDH 0x000d60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6SIDLbits 0x000d61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6SIDL 0x000d61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDHbits 0x000d62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDH 0x000d62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDLbits 0x000d63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF6EIDL 0x000d63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDHbits 0x000d64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDH 0x000d64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDLbits 0x000d65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7SIDL 0x000d65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDH 0x000d66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDHbits 0x000d66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDLbits 0x000d67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF7EIDL 0x000d67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDH 0x000d68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDHbits 0x000d68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDLbits 0x000d69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8SIDL 0x000d69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDH 0x000d6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDHbits 0x000d6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDL 0x000d6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF8EIDLbits 0x000d6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDHbits 0x000d70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDH 0x000d70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDL 0x000d71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9SIDLbits 0x000d71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDH 0x000d72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDHbits 0x000d72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDL 0x000d73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF9EIDLbits 0x000d73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDH 0x000d74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDHbits 0x000d74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDLbits 0x000d75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10SIDL 0x000d75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDH 0x000d76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDHbits 0x000d76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDLbits 0x000d77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF10EIDL 0x000d77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDH 0x000d78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDHbits 0x000d78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDLbits 0x000d79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11SIDL 0x000d79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDH 0x000d7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDHbits 0x000d7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDL 0x000d7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF11EIDLbits 0x000d7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDHbits 0x000d80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDH 0x000d80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDLbits 0x000d81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12SIDL 0x000d81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDH 0x000d82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDHbits 0x000d82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDL 0x000d83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF12EIDLbits 0x000d83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDHbits 0x000d84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDH 0x000d84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDL 0x000d85 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13SIDLbits 0x000d85 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDHbits 0x000d86 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDH 0x000d86 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDL 0x000d87 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF13EIDLbits 0x000d87 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDH 0x000d88 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDHbits 0x000d88 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDLbits 0x000d89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14SIDL 0x000d89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDH 0x000d8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDHbits 0x000d8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDLbits 0x000d8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF14EIDL 0x000d8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDH 0x000d90 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDHbits 0x000d90 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDL 0x000d91 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15SIDLbits 0x000d91 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDH 0x000d92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDHbits 0x000d92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDL 0x000d93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF15EIDLbits 0x000d93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON0bits 0x000dd4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON0 0x000dd4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON1bits 0x000dd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFCON1 0x000dd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SDFLC 0x000dd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SDFLCbits 0x000dd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON0 0x000de0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON0bits 0x000de0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON1 0x000de1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON1bits 0x000de1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON2 0x000de2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON2bits 0x000de2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON3 0x000de3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON3bits 0x000de3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON4 0x000de4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON4bits 0x000de4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON5 0x000de5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON5bits 0x000de5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON6bits 0x000de6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON6 0x000de6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON7bits 0x000de7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXFBCON7 0x000de7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL0bits 0x000df0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL0 0x000df0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL1bits 0x000df1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL1 0x000df1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL2bits 0x000df2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL2 0x000df2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL3bits 0x000df3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - MSEL3 0x000df3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BSEL0bits 0x000df8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BSEL0 0x000df8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BIE0bits 0x000dfa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BIE0 0x000dfa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXBIE 0x000dfc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXBIEbits 0x000dfc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0CONbits 0x000e20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0CON 0x000e20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDH 0x000e21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDHbits 0x000e21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDL 0x000e22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0SIDLbits 0x000e22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDH 0x000e23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDHbits 0x000e23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDLbits 0x000e24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0EIDL 0x000e24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0DLC 0x000e25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0DLCbits 0x000e25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D0bits 0x000e26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D0 0x000e26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D1 0x000e27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D1bits 0x000e27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D2 0x000e28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D2bits 0x000e28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D3bits 0x000e29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D3 0x000e29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D4 0x000e2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D4bits 0x000e2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D5 0x000e2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D5bits 0x000e2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D6 0x000e2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D6bits 0x000e2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D7bits 0x000e2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B0D7 0x000e2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO9bits 0x000e2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO9 0x000e2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO9 0x000e2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO9bits 0x000e2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1CON 0x000e30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1CONbits 0x000e30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDHbits 0x000e31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDH 0x000e31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDLbits 0x000e32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1SIDL 0x000e32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDH 0x000e33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDHbits 0x000e33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDL 0x000e34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1EIDLbits 0x000e34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1DLCbits 0x000e35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1DLC 0x000e35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D0bits 0x000e36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D0 0x000e36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D1bits 0x000e37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D1 0x000e37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D2bits 0x000e38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D2 0x000e38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D3bits 0x000e39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D3 0x000e39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D4bits 0x000e3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D4 0x000e3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D5 0x000e3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D5bits 0x000e3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D6 0x000e3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D6bits 0x000e3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D7 0x000e3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B1D7bits 0x000e3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO8 0x000e3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO8bits 0x000e3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO8bits 0x000e3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO8 0x000e3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2CONbits 0x000e40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2CON 0x000e40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDHbits 0x000e41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDH 0x000e41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDLbits 0x000e42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2SIDL 0x000e42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDHbits 0x000e43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDH 0x000e43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDLbits 0x000e44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2EIDL 0x000e44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2DLC 0x000e45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2DLCbits 0x000e45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D0 0x000e46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D0bits 0x000e46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D1 0x000e47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D1bits 0x000e47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D2 0x000e48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D2bits 0x000e48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D3bits 0x000e49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D3 0x000e49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D4bits 0x000e4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D4 0x000e4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D5bits 0x000e4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D5 0x000e4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D6bits 0x000e4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D6 0x000e4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D7bits 0x000e4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B2D7 0x000e4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO7 0x000e4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO7bits 0x000e4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO7bits 0x000e4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO7 0x000e4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3CON 0x000e50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3CONbits 0x000e50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDHbits 0x000e51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDH 0x000e51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDLbits 0x000e52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3SIDL 0x000e52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDHbits 0x000e53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDH 0x000e53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDLbits 0x000e54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3EIDL 0x000e54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3DLCbits 0x000e55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3DLC 0x000e55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D0bits 0x000e56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D0 0x000e56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D1 0x000e57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D1bits 0x000e57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D2 0x000e58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D2bits 0x000e58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D3 0x000e59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D3bits 0x000e59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D4 0x000e5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D4bits 0x000e5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D5 0x000e5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D5bits 0x000e5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D6 0x000e5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D6bits 0x000e5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D7 0x000e5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B3D7bits 0x000e5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO6 0x000e5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO6bits 0x000e5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO6 0x000e5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO6bits 0x000e5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4CON 0x000e60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4CONbits 0x000e60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDH 0x000e61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDHbits 0x000e61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDL 0x000e62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4SIDLbits 0x000e62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDH 0x000e63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDHbits 0x000e63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDL 0x000e64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4EIDLbits 0x000e64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4DLCbits 0x000e65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4DLC 0x000e65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D0 0x000e66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D0bits 0x000e66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D1bits 0x000e67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D1 0x000e67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D2bits 0x000e68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D2 0x000e68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D3bits 0x000e69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D3 0x000e69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D4 0x000e6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D4bits 0x000e6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D5 0x000e6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D5bits 0x000e6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D6 0x000e6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D6bits 0x000e6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D7bits 0x000e6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B4D7 0x000e6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO5bits 0x000e6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO5 0x000e6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO5 0x000e6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO5bits 0x000e6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5CONbits 0x000e70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5CON 0x000e70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDHbits 0x000e71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDH 0x000e71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDLbits 0x000e72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5SIDL 0x000e72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDHbits 0x000e73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDH 0x000e73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDL 0x000e74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5EIDLbits 0x000e74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5DLCbits 0x000e75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5DLC 0x000e75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D0 0x000e76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D0bits 0x000e76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D1 0x000e77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D1bits 0x000e77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D2bits 0x000e78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D2 0x000e78 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D3bits 0x000e79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D3 0x000e79 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D4bits 0x000e7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D4 0x000e7a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D5 0x000e7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D5bits 0x000e7b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D6 0x000e7c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D6bits 0x000e7c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D7 0x000e7d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - B5D7bits 0x000e7d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO4 0x000e7e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO4bits 0x000e7e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO4 0x000e7f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO4bits 0x000e7f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDHbits 0x000f00 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDH 0x000f00 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDLbits 0x000f01 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0SIDL 0x000f01 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDHbits 0x000f02 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDH 0x000f02 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDLbits 0x000f03 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF0EIDL 0x000f03 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDH 0x000f04 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDHbits 0x000f04 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDLbits 0x000f05 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1SIDL 0x000f05 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDH 0x000f06 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDHbits 0x000f06 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDL 0x000f07 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF1EIDLbits 0x000f07 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDHbits 0x000f08 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDH 0x000f08 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDLbits 0x000f09 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2SIDL 0x000f09 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDHbits 0x000f0a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDH 0x000f0a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDLbits 0x000f0b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF2EIDL 0x000f0b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDH 0x000f0c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDHbits 0x000f0c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDL 0x000f0d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3SIDLbits 0x000f0d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDHbits 0x000f0e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDH 0x000f0e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDLbits 0x000f0f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF3EIDL 0x000f0f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDH 0x000f10 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDHbits 0x000f10 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDL 0x000f11 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4SIDLbits 0x000f11 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDHbits 0x000f12 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDH 0x000f12 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDL 0x000f13 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF4EIDLbits 0x000f13 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDHbits 0x000f14 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDH 0x000f14 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDLbits 0x000f15 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5SIDL 0x000f15 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDHbits 0x000f16 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDH 0x000f16 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDLbits 0x000f17 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXF5EIDL 0x000f17 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDH 0x000f18 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDHbits 0x000f18 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDL 0x000f19 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0SIDLbits 0x000f19 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDH 0x000f1a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDHbits 0x000f1a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDL 0x000f1b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM0EIDLbits 0x000f1b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDHbits 0x000f1c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDH 0x000f1c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDLbits 0x000f1d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1SIDL 0x000f1d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDHbits 0x000f1e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDH 0x000f1e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDLbits 0x000f1f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXM1EIDL 0x000f1f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2CON 0x000f20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2CONbits 0x000f20 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDHbits 0x000f21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDH 0x000f21 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDLbits 0x000f22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2SIDL 0x000f22 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDHbits 0x000f23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDH 0x000f23 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDLbits 0x000f24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2EIDL 0x000f24 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2DLCbits 0x000f25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2DLC 0x000f25 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D0 0x000f26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D0bits 0x000f26 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D1bits 0x000f27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D1 0x000f27 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D2bits 0x000f28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D2 0x000f28 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D3bits 0x000f29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D3 0x000f29 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D4bits 0x000f2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D4 0x000f2a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D5 0x000f2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D5bits 0x000f2b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D6bits 0x000f2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D6 0x000f2c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D7bits 0x000f2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB2D7 0x000f2d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO3bits 0x000f2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO3 0x000f2e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO3 0x000f2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO3bits 0x000f2f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1CONbits 0x000f30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1CON 0x000f30 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDH 0x000f31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDHbits 0x000f31 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDL 0x000f32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1SIDLbits 0x000f32 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDHbits 0x000f33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDH 0x000f33 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDLbits 0x000f34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1EIDL 0x000f34 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1DLCbits 0x000f35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1DLC 0x000f35 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D0 0x000f36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D0bits 0x000f36 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D1bits 0x000f37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D1 0x000f37 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D2 0x000f38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D2bits 0x000f38 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D3bits 0x000f39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D3 0x000f39 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D4bits 0x000f3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D4 0x000f3a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D5bits 0x000f3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D5 0x000f3b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D6bits 0x000f3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D6 0x000f3c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D7bits 0x000f3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB1D7 0x000f3d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO2 0x000f3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO2bits 0x000f3e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO2bits 0x000f3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO2 0x000f3f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0CON 0x000f40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0CONbits 0x000f40 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDHbits 0x000f41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDH 0x000f41 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDLbits 0x000f42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0SIDL 0x000f42 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDHbits 0x000f43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDH 0x000f43 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDLbits 0x000f44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0EIDL 0x000f44 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0DLCbits 0x000f45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0DLC 0x000f45 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D0 0x000f46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D0bits 0x000f46 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D1bits 0x000f47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D1 0x000f47 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D2bits 0x000f48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D2 0x000f48 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D3bits 0x000f49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D3 0x000f49 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D4bits 0x000f4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D4 0x000f4a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D5bits 0x000f4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D5 0x000f4b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D6bits 0x000f4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D6 0x000f4c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D7bits 0x000f4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXB0D7 0x000f4d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO1bits 0x000f4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO1 0x000f4e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO1bits 0x000f4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO1 0x000f4f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1CON 0x000f50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1CONbits 0x000f50 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDH 0x000f51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDHbits 0x000f51 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDLbits 0x000f52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1SIDL 0x000f52 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDHbits 0x000f53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDH 0x000f53 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDLbits 0x000f54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1EIDL 0x000f54 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1DLCbits 0x000f55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1DLC 0x000f55 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D0bits 0x000f56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D0 0x000f56 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D1bits 0x000f57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D1 0x000f57 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D2bits 0x000f58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D2 0x000f58 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D3bits 0x000f59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D3 0x000f59 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D4 0x000f5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D4bits 0x000f5a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D5 0x000f5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D5bits 0x000f5b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D6 0x000f5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D6bits 0x000f5c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D7bits 0x000f5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB1D7 0x000f5d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO0bits 0x000f5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT_RO0 0x000f5e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO0bits 0x000f5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON_RO0 0x000f5f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0CON 0x000f60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0CONbits 0x000f60 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDH 0x000f61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDHbits 0x000f61 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDL 0x000f62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0SIDLbits 0x000f62 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDH 0x000f63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDHbits 0x000f63 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDL 0x000f64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0EIDLbits 0x000f64 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0DLCbits 0x000f65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0DLC 0x000f65 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D0bits 0x000f66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D0 0x000f66 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D1bits 0x000f67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D1 0x000f67 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D2bits 0x000f68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D2 0x000f68 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D3bits 0x000f69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D3 0x000f69 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D4bits 0x000f6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D4 0x000f6a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D5bits 0x000f6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D5 0x000f6b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D6bits 0x000f6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D6 0x000f6c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D7bits 0x000f6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXB0D7 0x000f6d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTATbits 0x000f6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANSTAT 0x000f6e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCON 0x000f6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CANCONbits 0x000f6f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON1 0x000f70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON1bits 0x000f70 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON2 0x000f71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON2bits 0x000f71 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON3 0x000f72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BRGCON3bits 0x000f72 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CIOCONbits 0x000f73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CIOCON 0x000f73 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - COMSTAT 0x000f74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - COMSTATbits 0x000f74 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXERRCNT 0x000f75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RXERRCNTbits 0x000f75 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXERRCNT 0x000f76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXERRCNTbits 0x000f76 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECANCONbits 0x000f77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECANCON 0x000f77 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTA 0x000f80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTAbits 0x000f80 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTB 0x000f81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTBbits 0x000f81 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTC 0x000f82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTCbits 0x000f82 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTD 0x000f83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTDbits 0x000f83 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTE 0x000f84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PORTEbits 0x000f84 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATAbits 0x000f89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATA 0x000f89 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATBbits 0x000f8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATB 0x000f8a data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATCbits 0x000f8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATC 0x000f8b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATDbits 0x000f8c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATD 0x000f8c data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATEbits 0x000f8d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LATE 0x000f8d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISA 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISAbits 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRA 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRAbits 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRBbits 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRB 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISB 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISBbits 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRC 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRCbits 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISC 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISCbits 0x000f94 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRD 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRDbits 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISD 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISDbits 0x000f95 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISE 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TRISEbits 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDRE 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - DDREbits 0x000f96 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCTUNEbits 0x000f9b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCTUNE 0x000f9b data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE1bits 0x000f9d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE1 0x000f9d data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR1 0x000f9e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR1bits 0x000f9e data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR1bits 0x000f9f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR1 0x000f9f data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE2 0x000fa0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE2bits 0x000fa0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR2 0x000fa1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR2bits 0x000fa1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR2bits 0x000fa2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR2 0x000fa2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE3 0x000fa3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIE3bits 0x000fa3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR3bits 0x000fa4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PIR3 0x000fa4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR3bits 0x000fa5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - IPR3 0x000fa5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EECON1bits 0x000fa6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EECON1 0x000fa6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EECON2 0x000fa7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EEDATA 0x000fa8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EEADR 0x000fa9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - EEADRH 0x000faa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCSTAbits 0x000fab data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCSTA 0x000fab data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXSTA 0x000fac data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXSTAbits 0x000fac data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TXREG 0x000fad data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCREG 0x000fae data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SPBRG 0x000faf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SPBRGH 0x000fb0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T3CONbits 0x000fb1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T3CON 0x000fb1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR3L 0x000fb2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR3H 0x000fb3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CMCON 0x000fb4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CMCONbits 0x000fb4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CVRCON 0x000fb5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CVRCONbits 0x000fb5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1AS 0x000fb6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1ASbits 0x000fb6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1DEL 0x000fb7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1DELbits 0x000fb7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BAUDCON 0x000fb8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BAUDCONbits 0x000fb8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1CON 0x000fba data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCP1CONbits 0x000fba data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCPR1 0x000fbb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCPR1L 0x000fbb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ECCPR1H 0x000fbc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCP1CONbits 0x000fbd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCP1CON 0x000fbd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCPR1L 0x000fbe data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCPR1 0x000fbe data extern C:\MCC18\src\traditional\proc\p18F4685.asm - CCPR1H 0x000fbf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON2 0x000fc0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON2bits 0x000fc0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON1bits 0x000fc1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON1 0x000fc1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON0bits 0x000fc2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADCON0 0x000fc2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADRESL 0x000fc3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADRES 0x000fc3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - ADRESH 0x000fc4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON2bits 0x000fc5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON2 0x000fc5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON1bits 0x000fc6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPCON1 0x000fc6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPSTATbits 0x000fc7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPSTAT 0x000fc7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPADD 0x000fc8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - SSPBUF 0x000fc9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T2CON 0x000fca data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T2CONbits 0x000fca data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PR2 0x000fcb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR2 0x000fcc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T1CON 0x000fcd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T1CONbits 0x000fcd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR1L 0x000fce data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR1H 0x000fcf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCON 0x000fd0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - RCONbits 0x000fd0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - WDTCONbits 0x000fd1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - WDTCON 0x000fd1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - HLVDCONbits 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - HLVDCON 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LVDCONbits 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - LVDCON 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCCONbits 0x000fd3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - OSCCON 0x000fd3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T0CONbits 0x000fd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - T0CON 0x000fd5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR0L 0x000fd6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TMR0H 0x000fd7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STATUS 0x000fd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STATUSbits 0x000fd8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR2L 0x000fd9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR2 0x000fd9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR2H 0x000fda data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PLUSW2 0x000fdb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PREINC2 0x000fdc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTDEC2 0x000fdd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTINC2 0x000fde data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INDF2 0x000fdf data extern C:\MCC18\src\traditional\proc\p18F4685.asm - BSR 0x000fe0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR1L 0x000fe1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR1 0x000fe1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR1H 0x000fe2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PLUSW1 0x000fe3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PREINC1 0x000fe4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTDEC1 0x000fe5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTINC1 0x000fe6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INDF1 0x000fe7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - WREG 0x000fe8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR0 0x000fe9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR0L 0x000fe9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - FSR0H 0x000fea data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PLUSW0 0x000feb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PREINC0 0x000fec data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTDEC0 0x000fed data extern C:\MCC18\src\traditional\proc\p18F4685.asm - POSTINC0 0x000fee data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INDF0 0x000fef data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON3bits 0x000ff0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON3 0x000ff0 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON2 0x000ff1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON2bits 0x000ff1 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCON 0x000ff2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - INTCONbits 0x000ff2 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PROD 0x000ff3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PRODL 0x000ff3 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PRODH 0x000ff4 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TABLAT 0x000ff5 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTRL 0x000ff6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTR 0x000ff6 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTRH 0x000ff7 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TBLPTRU 0x000ff8 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PCL 0x000ff9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PC 0x000ff9 data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PCLATH 0x000ffa data extern C:\MCC18\src\traditional\proc\p18F4685.asm - PCLATU 0x000ffb data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STKPTR 0x000ffc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - STKPTRbits 0x000ffc data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOSL 0x000ffd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOS 0x000ffd data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOSH 0x000ffe data extern C:\MCC18\src\traditional\proc\p18F4685.asm - TOSU 0x000fff data extern C:\MCC18\src\traditional\proc\p18F4685.asm - - diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/ostc_bigscreen.mcp --- a/code_part1/OSTC_code_c_part2/ostc_bigscreen.mcp Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -[HEADER] -magic_cookie={66E99B07-E706-4689-9E80-9B2582898A13} -file_version=1.0 -[PATH_INFO] -BuildDirPolicy=BuildDirIsProjectDir -dir_src= -dir_bin= -dir_tmp= -dir_sin= -dir_inc=C:\Users\chsw\Documents\avr32workspace\ostc_bigscreen -dir_lib=C:\MCC18\lib -dir_lkr= -[CAT_FILTERS] -filter_src=*.asm;*.c -filter_inc=*.h;*.inc -filter_obj=*.o -filter_lib=*.lib -filter_lkr=*.lkr -[OTHER_FILES] -file_000=no -file_001=no -file_002=yes -[FILE_INFO] -file_000=Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c -file_001=18f4685_ostc.lkr -file_002=p2_tables.romdata -[SUITE_INFO] -suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416} -suite_state= -[TOOL_SETTINGS] -TS{DD2213A8-6310-47B1-8376-9430CDFC013F}= -TS{BFD27FBA-4A02-4C0E-A5E5-B812F3E7707C}=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof" -TS{C2AF05E7-1416-4625-923D-E114DB6E2B96}=-O- -TS{ADE93A55-C7C7-4D4D-A4BA-59305F7D0391}= -[INSTRUMENTED_TRACE] -enable=0 -transport=0 -format=0 -[CUSTOM_BUILD] -Pre-Build= -Post-Build= diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/ostc_bigscreen.mcs --- a/code_part1/OSTC_code_c_part2/ostc_bigscreen.mcs Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -[Header] -MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7} -Version=1.0 -[File000] -Location=Q:\Data\OSTC2\code\OSTC_code_c_part2\p3_wordprocessor.o -Folder=Intermediary -DeviceName=PIC18F4685 -LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} -LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} -LanguageToolLocation=C:\MCC18\bin\mcc18.exe -PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)|C:\Users\chsw\Documents\avr32workspace\ostc_bigscreen||$(LIBDIR)|C:\MCC18\lib||$(LKRDIR)|| -SOLK=|Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c|||||||18f4685_ostc.lkr|| -SuiteArgsString= -ToolArgsString=-O- -TraceCmdString= -DebugOptions= -[File001] -Location=Q:\Data\OSTC2\code\OSTC_code_c_part2\ostc_bigscreen.cof -Folder=Output -DeviceName=PIC18F4685 -LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} -LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} -LanguageToolLocation=C:\MCC18\bin\mplink.exe -PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)|C:\Users\chsw\Documents\avr32workspace\ostc_bigscreen||$(LIBDIR)|C:\MCC18\lib||$(LKRDIR)|| -SOLK=|Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c|||||||18f4685_ostc.lkr|| -SuiteArgsString= -ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof" -TraceCmdString= -DebugOptions= -[File002] -Location=Q:\Data\OSTC2\code\OSTC_code_c_part2\ostc_bigscreen.hex -Folder=Output -DeviceName=PIC18F4685 -LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} -LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} -LanguageToolLocation=C:\MCC18\bin\mplink.exe -PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)|C:\Users\chsw\Documents\avr32workspace\ostc_bigscreen||$(LIBDIR)|C:\MCC18\lib||$(LKRDIR)|| -SOLK=|Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c|||||||18f4685_ostc.lkr|| -SuiteArgsString= -ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof" -TraceCmdString= -DebugOptions= -[File003] -Location=Q:\Data\OSTC2\code\OSTC_code_c_part2\ostc_bigscreen.map -Folder=Output -DeviceName=PIC18F4685 -LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} -LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} -LanguageToolLocation=C:\MCC18\bin\mplink.exe -PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)|C:\Users\chsw\Documents\avr32workspace\ostc_bigscreen||$(LIBDIR)|C:\MCC18\lib||$(LKRDIR)|| -SOLK=|Q:\Data\OSTC2\ostc_bigscreen\src\p3_wordprocessor.c|||||||18f4685_ostc.lkr|| -SuiteArgsString= -ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof" -TraceCmdString= -DebugOptions= -[TOOL_LOC_STAMPS] -tool_loc{96C98149-AA1B-4CF9-B967-FAE79CAB663C}=C:\MCC18\bin\mplink.exe -tool_loc{E56A1C86-9D32-4DF6-8C34-FE0388B1B644}=C:\MCC18\bin\mcc18.exe diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/ostc_bigscreen.mcw Binary file code_part1/OSTC_code_c_part2/ostc_bigscreen.mcw has changed diff -r 96a35aeda5f2 -r 210410f7c1b4 code_part1/OSTC_code_c_part2/p2_deco_main_old_v107.c --- a/code_part1/OSTC_code_c_part2/p2_deco_main_old_v107.c Tue Jan 12 15:05:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3453 +0,0 @@ -/* - * p2_deco_main_c_v107.c - * - * Created on: 31.03.2009 - * Author: chsw - */ - -//#include - - -// OSTC - diving computer code -// Copyright (C) 2008 HeinrichsWeikamp GbR - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - - -// ***************************** -// ** I N T R O D U C T I O N ** -// ***************************** -// -// OSTC -// -// code: -// p2_deco_main_c_v101.c -// part2 of the OSTC code -// code with constant O2 partial pressure routines -// under construction !! -// -// summary: -// decompression routines -// for the OSTC experimental project -// written by Christian Weikamp -// last revision __________ -// comments added _________ -// -// additional files: -// p2_tables_v100.romdata (other files) -// 18f4685_ostc_v100.lkr (linker script) -// -// history: -// 01/03/08 v100: first release candidate -// 03/13/08 v101: start of programming ppO2 code -// 03/13/25 v101a: backup of interrim version with ppO2 calculation -// 03/13/25 v101: open circuit gas change during deco -// 03/13/25 v101: CNS_fraction calculation -// 03/13/26 v101: optimization of tissue calc routines -// 07/xx/08 v102a: debug of bottom time routine -// 09/xx/08 v102d: Gradient Factor Model implemenation -// 10/10/08 v104: renamed to build v103 for v118 stable -// 10/14/08 v104: integration of temp_depth_last_deco for Gradient Model -// 03/31/090 v107: integration of FONT Incon24 - -// -// literature: -// B"uhlmann, Albert: Tauchmedizin; 4. Auflage; -// 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 -// Morrison, Stuart; 2000; DIY DECOMPRESSION; http://www.lizardland.co.uk/DIYDeco.html -// Balthasar, Steffen; Dekompressionstheorie I: Neo Haldane Modelle; http://www.txfreak.de/dekompressionstheorie_1.pdf -// Baker, Erik C.; Clearing Up The Confusion About "Deep Stops" -// Baker, Erik C.; Understanding M-values; http://www.txfreak.de/understanding_m-values.pdf - - -// ********************* -// ** I N C L U D E S ** -// ********************* - #include - #include - -// ******************************** -// ** C O N F I G U R A T I O N ** -// ** for simulation without asm ** -// ******************************** - #pragma config OSC = IRCIO67 - #pragma config FCMEN = OFF - #pragma config IESO = OFF - #pragma config PWRT = ON - #pragma config BOREN = OFF - #pragma config WDT = OFF - #pragma config WDTPS = 128 - #pragma config MCLRE = ON - #pragma config LPT1OSC = OFF - #pragma config PBADEN = OFF - #pragma config DEBUG = OFF - #pragma config XINST = OFF - #pragma config LVP = OFF - #pragma config STVREN = OFF - -// **************************** -// ** D E F I N E S ** -// ** missing in p18f4685.h ** -// **************************** -#define INT0IF 1 -#define INT1IF 0 -#define TMR1IF 0 - -#define oled_clk PORTD, 0,0 -#define oled_data PORTD, 1,0 -#define oled_en PORTE, 0,0 -#define oled_rs PORTE, 1,0 -#define flag5 0x29 // in Bank1 -//#define no_sensor_int flag5,7,1 // ; block any further access to pressure sensor - -// *********************** -// ** V A R I A B L E S ** -// *********************** -// prefixes etc: -// _O_ = output for use in the assembler code -// _I_ = input from the assembler code for the c code -// char_ and int_ = used to identify output and input size -// var = variable (from b"uhlmann) -// pres = pressure -// gtissue = guiding tissue, the one limiting the ascent -// e2secs = exp of the b"uhlmann formula precalculated for a 2 second step -// e1min = same for 1 minute step -// sim = used in simulating the ascent to the surface -// nullzeit = remaining ground/bottom time for "no deco" -// hauptroutine = main - -#pragma udata bank0a=0x060 -volatile unsigned char dd2_stringstore[17]; -#pragma udata bank0b=0x071 -volatile unsigned char keep_free_bank0[21]; - -#pragma udata bank0c=0x086 -volatile unsigned char dd2_left; // 1 - 64 -volatile unsigned char dd2_top; // 1 - 64 -volatile unsigned char dd2_heightmax; // 1 - 37 -volatile unsigned char dd2_oled_brightness_offset; // 0 - 15 (15 is pitch black always) -volatile unsigned char dd2_fontwidth; // 8, 12, 21 for Incon16, Incon24, Incon42 -volatile unsigned char dd2_fontheight; // 14, 21, 37 for " -volatile unsigned long dd2_pointer; // for font lut -volatile unsigned char dd2_i; -volatile unsigned char dd2_j; -volatile unsigned char dd2_k; -volatile unsigned char dd2_char; -volatile unsigned char dd2_lowbyte; -volatile unsigned char dd2_temp; -volatile unsigned char dd2_data; -volatile unsigned long dd2_base; // for font lut -volatile unsigned char dd2_start; // for font lut -volatile unsigned char dd2_end; // for font lut - - - #pragma udata bank1=0x100 - const unsigned char keep_free_bank1[256]; // used by the assembler code - - #pragma udata bank2a=0x200 -// output: - static unsigned int int_O_tissue_for_debug[32]; - static unsigned int int_O_GF_spare____; // 0x240 - static unsigned int int_O_GF_step; // 0x242 - static unsigned int int_O_gtissue_limit; // 0x244 - static unsigned int int_O_gtissue_press; // 0x246 - static unsigned int int_O_limit_GF_low; // 0x248 - static unsigned int int_O_gtissue_press_at_GF_low; // 0x24A -// ... - #pragma udata bank2b=0x24E - static unsigned char char_O_GF_low_pointer; // 0x24E - static unsigned char char_O_actual_pointer; // 0x24F - #pragma udata bank2c=0x250 - static unsigned char char_O_deco_table[32]; // 0x250 - #pragma udata bank2d=0x270 - static unsigned char char_I_table_deco_done[32]; - #pragma udata bank2e=0x290 - static unsigned int int_O_calc_tissue_call_counter; // 0x290 - - - -// internal: - unsigned char lock_GF_depth_list; - static float temp_limit; - static float GF_low; - static float GF_high; - static float GF_delta; - static float GF_temp; - static float GF_step; - static float GF_step2; - static float temp_pres_gtissue; - static float temp_pres_gtissue_diff; - static float temp_pres_gtissue_limit_GF_low; - static float temp_pres_gtissue_limit_GF_low_below_surface; - static unsigned int temp_depth_limit; - static unsigned char temp_decotime; - static unsigned char temp_gtissue_no; - static unsigned int temp_depth_last_deco; // new in v.101 - - static unsigned char temp_depth_GF_low_meter; - static unsigned char temp_depth_GF_low_number; - static unsigned char internal_deco_pointer; - static unsigned char internal_deco_table[32]; - static float temp_pres_deco_GF_low; - -static unsigned int debug_temp; - - -#pragma udata bank3a=0x300 -static char output[32]; -// used by the math routines -#pragma udata bank3b=0x380 -volatile float pres_tissue_vault[32]; - #pragma udata bank4a=0x400 -// internal: - unsigned char ci ; // don't move - used in _asm routines - if moved then modify movlb commands - unsigned char x; - unsigned int main_i; - unsigned int int_temp; - unsigned int int_temp_decostatus; - static float pres_respiration; - static float pres_surface; - static float temp1; - static float temp2; - static float temp3; - static float temp4; - static float temp_deco; - static float temp_atem; - static float temp2_atem; - static float temp_tissue; - static float temp_surface; - static float N2_ratio; - static float He_ratio; - static float temp_ratio; - static float var_a; - static float var2_a; - static float var_b; - static float var2_b; - static float var_t05nc; - static float var2_t05nc; - static float var_e2secs; - static float var2_e2secs; - static float var_e1min; - static float var2_e1min; - static float var_halftimes; - static float var2_halftimes; - static float pres_gtissue_limit; - static float temp_pres_gtissue_limit; - static float actual_ppO2; // new in v.102 - #pragma udata bank4b=0x480 - static float pres_tissue[32]; - - #pragma udata bank5=0x500 -// don't move positions in this bank, the registers are addressed directly from assembler code -// input: - static unsigned int int_I_pres_respiration; // 0x500 - static unsigned int int_I_pres_surface; // 0x502 - static unsigned int int_I_temp; // 0x504 new in v101 - static unsigned char char_I_temp; // 0x506 new in v101 - static unsigned char char_I_actual_ppO2; // 0x507 - static unsigned int int_I_spare_3; - static unsigned int int_I_spare_4; - static unsigned int int_I_spare_5; - static unsigned int int_I_spare_6; - static unsigned char char_I_N2_ratio; // 0x510 - static unsigned char char_I_He_ratio; // 0x511 - static unsigned char char_I_saturation_multiplier; // for conservatism/safety values 1.0 (no conservatism) to 1.5 (50% faster saturation - 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() - static unsigned char char_I_GF_High_percentage; // 0x514 new in v.102 - static unsigned char char_I_GF_Low_percentage; // 0x515 new in v.102 - static unsigned char char_I_spare; // 0x516 - static unsigned char char_I_deco_distance; // 0x517 - static unsigned char char_I_const_ppO2; // 0x518 new in v.101 - static unsigned char char_I_deco_ppO2_change; // 0x519 new in v.101 - static unsigned char char_I_deco_ppO2; // 0x51A new in v.101 - static unsigned char char_I_deco_gas_change; // 0x51B new in v.101 - static unsigned char char_I_deco_N2_ratio; // 0x51C new in v.101 - static unsigned char char_I_deco_He_ratio; // 0x51D new in v.101 - static unsigned char char_I_depth_last_deco; // 0x51E new in v.101 unit: [m] - static unsigned char char_I_deco_model; // 0x51F new in v.102 ( 1 = MultiGraF, sonst Std. mit (de-)saturation_multiplier) -// output: - static unsigned int int_O_desaturation_time; // 0x520 - static unsigned char char_O_nullzeit; // 0x522 - static unsigned char char_O_deco_status; // 0x523 - static unsigned char char_O_array_decotime[7]; // 0x524 - static unsigned char char_O_array_decodepth[6]; // 0x52B - static unsigned char char_O_ascenttime; // 0x531 - static unsigned char char_O_gradient_factor; // 0x532 - static unsigned char char_O_tissue_saturation[32]; // 0x533 - static unsigned char char_O_array_gradient_weighted[16]; // 0x553 - static unsigned char char_O_gtissue_no; // 0x563 - static unsigned char char_O_diluent; // 0x564 new in v.101 - static unsigned char char_O_CNS_fraction; // 0x565 new in v.101 - static unsigned char char_O_relative_gradient_GF; // 0x566 new in v.102 -// internal: - static float pres_tissue_limit[16]; - static float sim_pres_tissue_limit[16]; - static float pres_diluent; // new in v.101 - static float deco_diluent; // new in v.101 - static float const_ppO2; // new in v.101 - static float deco_ppO2_change; // new in v.101 - static float deco_ppO2; // new in v.101 - - - - #pragma udata bank6=0x600 -// internal: - static float sim_pres_tissue[32]; - static float sim_pres_tissue_backup[32]; - - #pragma udata bank7=0x700 - const unsigned char keep_free_bank7[256]; // used by the assembler code (DD font2display) - - #pragma udata bank8=0x800 - static char md_pi_subst[256]; - - #pragma udata bank9=0x900 -// output: - static char md_state[48]; // DONT MOVE !! has to be at the beginning of bank 9 for the asm code!!! -// internal: - static char md_t; - static char md_buffer[16]; - static char md_cksum[16]; - static char md_i; - static char md_j; - static char md_temp; - static unsigned int md_pointer; - static float deco_N2_ratio; // new in v.101 - static float deco_He_ratio; // new in v.101 - static float calc_N2_ratio; // new in v.101 - static float calc_He_ratio; // new in v.101 - static float deco_gas_change; // new in v.101 - static float CNS_fraction; // new in v.101 - static float float_saturation_multiplier; // new in v.101 - static float float_desaturation_multiplier; // new in v.101 - static float float_deco_distance; // new in v.101 - - - -// ************************* -// ** P R O T O T Y P E S ** -// ************************* -void main_calc_hauptroutine(void); -void main_calc_without_deco(void); -void main_clear_tissue(void); -void main_calc_percentage(void); -void main_calc_wo_deco_step_1_min(void); -void main_debug(void); -void main_gradient_array(void); -void main_hash(void); - -void calc_hauptroutine(void); -void calc_tissue(void); -void calc_nullzeit(void); -void backup_sim_pres_tissue(void); -void restore_sim_pres_tissue(void); - -void calc_without_deco(void); -void clear_tissue(void); -void calc_ascenttime(void); -void update_startvalues(void); -void clear_decoarray(void); -void update_decoarray(void); -void sim_tissue_1min(void); -void sim_tissue_10min(void); -void calc_gradient_factor(void); -void calc_gradient_array_only(void); -void calc_desaturation_time(void); -void calc_wo_deco_step_1_min(void); -void calc_tissue_step_1_min(void); -//void debug(void); -void hash(void); -void clear_CNS_fraction(void); -void calc_CNS_fraction(void); -void calc_CNS_decrease_15min(void); -void calc_percentage(void); -void main(void); -void calc_hauptroutine_data_input(void); -void calc_hauptroutine_update_tissues(void); -void calc_hauptroutine_calc_deco(void); -void calc_hauptroutine_calc_ascend_to_deco(void); -//void build_debug_output(void); -void calc_nextdecodepth_GF(void); -void copy_deco_table_GF(void); -void clear_internal_deco_table_GF(void); -void update_internal_deco_table_GF(void); -void DD2_write(void); -void DD2_write_incon42(void); -void DD2_get_pointer_to_char(void);//dd2_char, &dd2_pointer); -void DD2_set_column(void);//top, dd2_k);void DD2_load_background(void);//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); -void DD2_load_background(void); -void DD2_build_one_line_of_char(void);//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); -void DD2_print_column(void);//&dd2_columnstore, dd2_heightmax); -void DD2_CmdWrite(void); -void DD2_DataWrite(void); -void push_tissues_to_vault(void); -void pull_tissues_from_vault(void); -void main_push_tissues_to_vault(void); -void main_pull_tissues_from_vault(void); - -// ******************************* -// ** start ** -// ** necessary for compilation ** -// ******************************* -#pragma romdata der_code = 0x0000 -#pragma code der_start = 0x0000 -void der_start(void) -{ -_asm - goto main -_endasm -} - -// *********************************** -// ** main code for simulation / ** -// ** tests without assembler code ** -// ** is NOT a part of the OSTC ** -// *********************************** -#pragma code main = 0x9000 -void main(void) -{ -#if 1 -// new main to test DR-5 - -GF_low = 1.0; -GF_high = 1.0; - -GF_temp = GF_low * GF_high; - -clear_CNS_fraction(); -//char_I_const_ppO2 = 100; -//for (main_i=0;main_i<255;main_i++) -//{ -//calc_CNS_fraction(); -//} //for - - - - -int_I_pres_respiration = 1000;//980; -int_I_pres_surface = 1000;//980; -char_I_N2_ratio = 39; //38; -char_I_He_ratio = 40; //50; -char_I_deco_distance = 0; // 10 = 1 meter -char_I_depth_last_deco = 3; // values below 3 (meter) are ignored - -char_I_const_ppO2 = 0; -char_I_deco_ppO2_change = 0; // [dm] 10 = 1 meter -char_I_deco_ppO2 = 0; - -char_I_deco_gas_change = 0; // [m] 1 = 1 meter -char_I_deco_N2_ratio = 0; -char_I_deco_He_ratio = 0; - -//char_I_actual_ppO2; // 0x507 -char_I_GF_High_percentage = 100; // 0x514 new in v.102 -char_I_GF_Low_percentage = 100; // 0x515 new in v.102 - -char_I_saturation_multiplier = 110; -char_I_desaturation_multiplier = 90; - -char_I_deco_model = 0; - -main_clear_tissue(); - -int_I_pres_respiration = 1000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 3000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); -int_I_pres_respiration = 5000 + int_I_pres_surface; -main_calc_wo_deco_step_1_min(); - - -int_I_pres_respiration = 6000 + int_I_pres_surface; -for (main_i=0;main_i<27;main_i++) - main_calc_wo_deco_step_1_min(); - -char_O_deco_status = 255; -while (char_O_deco_status) - main_calc_hauptroutine(); -_asm -nop -_endasm - -for (main_i=0;main_i<50;main_i++) -{ -main_calc_hauptroutine(); -} -int_I_pres_respiration = 10000; -for (main_i=0;main_i<1500;main_i++) -{ -main_calc_hauptroutine(); -} - -_asm -nop -_endasm - - -int_I_pres_respiration = 3000; -for (main_i=0;main_i<150;main_i++) -{ - calc_hauptroutine_data_input(); - calc_hauptroutine_update_tissues(); -} //for - - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -for (main_i=0;main_i 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - -_asm -nop -_endasm -while (char_O_deco_status == 1) -{ - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); -_asm -nop -_endasm -}; -_asm -nop -_endasm -debug_temp = 60; // [mtr Aufstieg in 10 mtr/min (30steps'2sec/min] -int_I_pres_respiration = 9980; -debug_temp = debug_temp * 3; -for (main_i=0;main_i 31) - int_temp = 31; // deepest deco at 93 meter (31 deco stops) - if (int_temp < 0) - int_temp = 0; - temp_depth_GF_low_number = int_temp; - temp_depth_GF_low_meter = 3 * temp_depth_GF_low_number; - temp2 = (float)temp_depth_GF_low_meter * 0.09995; - temp_pres_deco_GF_low = temp2 + float_deco_distance + pres_surface; - if (temp_depth_GF_low_number == 0) - GF_step = 0; - else - GF_step = GF_delta / (float)temp_depth_GF_low_number; - if (GF_step < 0) - GF_step = 0; - if (GF_step > GF_delta) - GF_step = GF_delta; - int_O_GF_step = (int)(GF_step * 10000); - int_O_limit_GF_low = (int)(temp_pres_deco_GF_low * 1000); - int_O_gtissue_press_at_GF_low = (int)(temp_pres_gtissue * 1000); - char_O_GF_low_pointer = temp_depth_GF_low_number; - lock_GF_depth_list = 1; - internal_deco_pointer = 0; - } - if (internal_deco_pointer == 0) // new run - { - internal_deco_pointer = temp_depth_GF_low_number; - GF_temp = GF_high - ((float)internal_deco_pointer * GF_step); - int_temp = char_I_table_deco_done[internal_deco_pointer]; - output[8] = int_temp; - output[9] = 33; - } - else - { - int_temp = 1; - } - while (int_temp == 1) - { - int_temp = internal_deco_pointer - 1; - if (int_temp == 1) // new in v104 - { - temp2 = (float)(temp_depth_last_deco * int_temp) * 0.09995; - GF_step2 = GF_step/3.0 * ((float)(6 - temp_depth_last_deco)); - } - else - if (int_temp == 0) - { - temp2 = 0.0; - GF_step2 = GF_high - GF_temp; - } - else - { - temp2 = (float)(3 *int_temp) * 0.09995; - GF_step2 = GF_step; - } - temp2 = temp2 + pres_surface; // next deco stop to be tested - temp1 = ((GF_temp + GF_step2)* temp_pres_gtissue_diff) + temp_pres_gtissue; // upper limit (lowest pressure allowed) // changes GF_step2 in v104 - if (temp1 > temp2) // check if ascent to next deco stop is ok - { - int_temp = 0; // no - } - else - { - internal_deco_pointer = int_temp; - GF_temp = GF_temp + GF_step2; // changed in v104 - int_temp = char_I_table_deco_done[internal_deco_pointer]; // yes and check for ascent to even next stop if deco_done is set - } - } // while - if (internal_deco_pointer > 0) - { - temp2 = (float)(0.29985 * internal_deco_pointer); - temp_deco = temp2 + float_deco_distance + pres_surface; - if (internal_deco_pointer == 1) // new in v104 - temp_depth_limit = temp_depth_last_deco; - else - temp_depth_limit = 3 * internal_deco_pointer; - if (output[9] == 33) - { - output[9] = internal_deco_pointer; - output[10] = char_I_table_deco_done[internal_deco_pointer]; - output[12] = output[12] + 1; - if (output[12] == 100) - output[12] = 0; - } - } - else // if (char_I_deco_model == 1) - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } - } - else - { - // calc_nextdecodepth - original - // optimized in v.101 - // depth_last_deco included in v.101 - - temp1 = temp_pres_gtissue_limit - pres_surface; - if (temp1 >= 0) - { - temp1 = temp1 / 0.29985; // = temp1 / 99.95 / 0.003; - temp_depth_limit = (int) (temp1 + 0.99); - temp_depth_limit = 3 * temp_depth_limit; // depth for deco [m] - if (temp_depth_limit == 0) - temp_deco = pres_surface; - else - { - if (temp_depth_limit < temp_depth_last_deco) - temp_depth_limit = temp_depth_last_deco; - temp1 = (float)temp_depth_limit * 0.09995; - temp_deco = temp1 + float_deco_distance + pres_surface; // depth for deco [bar] - } // if (temp_depth_limit == 0) - } // if (temp1 >= 0) - else - { - temp_deco = pres_surface; - temp_depth_limit = 0; - } // if (temp1 >= 0) - } // calc_nextdecodepth original -} // calc_nextdecodepth_GF - - -#if 0 -void build_debug_output(void) -{ -output[0] = 0; // not used in asm PLED output -output[1] = (int) (GF_low * 100); -output[2] = (int) (GF_high * 100); -output[3] = (int) (GF_step * 100); -output[4] = (int) temp_depth_GF_low_number; -output[5] = (int) temp_depth_GF_low_meter; -//output[6] -output[7] = (int) internal_deco_pointer; -//output[8] = char_I_table_deco_done[temp_depth_GF_low_number] -//output[9] = internal_deco_pointer @ new run -//output[10] = char_I_table_deco_done[internal_deco_pointer] @ new run -output [11] = (int) (temp_pres_deco_GF_low * 10); -} // build_debug_output -#endif - -// --------------------- -// copy_deco_table_GF // -// --------------------- -// new in v.102 -void copy_deco_table_GF(void) -{ - if (char_I_deco_model == 1) - { - int_temp = 32; - for (ci=0;ci dd2_fontheight) dd2_heightmax = dd2_fontheight; - if ((dd2_top + dd2_heightmax) > 65) dd2_heightmax = 65 - dd2_top; - - dd2_k = dd2_left; - dd2_j = 0; - dd2_char = dd2_stringstore[dd2_j++]; - DD2_get_pointer_to_char();//dd2_char, &dd2_pointer); - dd2_i = 0; - dd2_lowbyte = 1; - -while (dd2_char != 0) -{ - if (dd2_lowbyte == 1) DD2_load_background();//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); - DD2_build_one_line_of_char(); //&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); // dd2_heightmax - dd2_lowbyte = dd2_lowbyte ^ 1; - if (dd2_lowbyte == 1) - { - DD2_set_column();//top, dd2_k); // - if(dd2_k < 64) dd2_k++; - DD2_print_column();//&dd2_columnstore, dd2_heightmax); // dd2_column_store, dd2_heightmax - } - dd2_i++; - if ((dd2_i >= dd2_fontwidth) | (((dd2_char == '.') |(dd2_char == ':') | (dd2_char == '<')) & (dd2_i >= 4))) - { - dd2_char = dd2_stringstore[dd2_j++]; - DD2_get_pointer_to_char();//dd2_char, &dd2_pointer); - dd2_i = 0; - } -} -} // void dd2_write(void) - -void DD2_get_pointer_to_char(void)//dd2_char, &dd2_pointer); -{ - if((dd2_char < dd2_start) | (dd2_char > dd2_end)) - { - dd2_pointer = 0; - dd2_temp = 0; - } - else - { - dd2_pointer = dd2_char - dd2_start; - dd2_pointer = dd2_pointer * ((dd2_fontheight+1)/2); - dd2_pointer = dd2_pointer * dd2_fontwidth; - dd2_pointer += dd2_base; - if((dd2_char == '.') | (dd2_char == ':') | (dd2_char == '<')) - { - dd2_pointer += 2 * dd2_fontheight; - } - - } -} // void DD2_get_pointer_to_char(void) - -void DD2_set_column(void)//top, dd2_k); -{ - dd2_data = 0x75; - DD2_CmdWrite(); - dd2_data = dd2_top - 1; - DD2_CmdWrite(); - dd2_data = 0x3f; - DD2_CmdWrite(); - - dd2_data = 0x15; - DD2_CmdWrite(); - dd2_data = dd2_k - 1; - DD2_CmdWrite(); - dd2_data = dd2_k - 1; - DD2_CmdWrite(); -} // DD2_set_column() - -void DD2_load_background(void)//&dd2_columnstore, &dd2_background, dd2_top, dd2_left, dd2_heightmax); -{ - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++) - md_pi_subst[dd2_temp] = 0x00; -} // void DD2_load_background() - -void DD2_build_one_line_of_char(void)//&dd2_columnstore, &dd2_pointer, dd2_fontheight, dd2_lowbyte); -{ - if (dd2_pointer != 0) - { - dd2_temp = (char)(dd2_pointer & 255); -_asm - movff dd2_temp,TBLPTRL -_endasm - dd2_temp = (char)((dd2_pointer >> 8) & 255); -_asm - movff dd2_temp,TBLPTRH -_endasm - dd2_temp = (char)((dd2_pointer >> 16)& 255); -_asm - movff dd2_temp,TBLPTRU -_endasm - - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp += 2) - { -_asm - TBLRDPOSTINC - movff TABLAT,dd2_data -_endasm - if (dd2_oled_brightness_offset != 0) - { - if ((dd2_oled_brightness_offset << 4) < (dd2_data & 0xF0)) - dd2_data = dd2_data - (dd2_oled_brightness_offset << 4); - if ((dd2_oled_brightness_offset) < (dd2_data & 0x0F)) - dd2_data = dd2_data - dd2_oled_brightness_offset; - } - if (dd2_lowbyte == 1) - { - md_pi_subst[dd2_temp] = dd2_data & 0xF0; - md_pi_subst[dd2_temp+1] = (dd2_data << 4) & 0xF0; - } - else - { - md_pi_subst[dd2_temp] = (md_pi_subst[dd2_temp] & 0xF0) | ((dd2_data >> 4) & 0x0F); - md_pi_subst[dd2_temp+1] = (md_pi_subst[dd2_temp+1] & 0xF0) | (dd2_data & 0x0F); - } - }//for - dd2_pointer += (dd2_fontheight+1)/2; - }//if -} // - -void DD2_print_column(void)//&dd2_columnstore, dd2_heightmax); -{ -_asm - bsf oled_rs -_endasm - for(dd2_temp = 0; dd2_temp < dd2_heightmax; dd2_temp++) - { - dd2_data = md_pi_subst[dd2_temp]; - DD2_DataWrite(); - } -} // void DD2_print_column(void) - -//; ----------------------------- -//; DD Write Cmd via W -//; two jump_ins: -//; DD_CmdWrite and DD_CmdWrite2 -//; ----------------------------- -void DD2_CmdWrite(void) -{ -_asm - bcf oled_rs -_endasm - DD2_DataWrite(); -} - -void DD2_DataWrite(void) -{ -_asm - movlb 1 -// bsf no_sensor_int // flag5, no_sensor_int - bcf oled_en - movlb 0 - bcf oled_clk //; CLK=0 - btfsc dd2_data,7,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,7,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,6,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,6,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,5,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,5,1 - bcf oled_data //; - bsf oled_clk //; CLK=1 - btfsc dd2_data,4,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,4,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,3,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,3,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,2,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,2,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,1,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,1,1 - bcf oled_data - bsf oled_clk //; CLK=1 - btfsc dd2_data,0,1 //; Bit - bsf oled_data - bcf oled_clk //; CLK=0 - btfss dd2_data,0,1 - bcf oled_data - bsf oled_clk //; CLK=1 - bsf oled_en //; CS#=1 - movlb 1 -// bcf no_sensor_int // flag5, no_sensor_int - movlb 0 -_endasm - dd2_data = 0; // to be sure that C knows we are in Bank0 -} -#pragma romdata font_incon_24h15 = 0x0E100 - rom const rom unsigned char incon24h15[] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xa0 - ,0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0x91, 0x00 - ,0x00, 0x00, 0x00, 0x6d, 0xfe, 0x71, 0x00, 0x00 - ,0x00, 0x01, 0x7e, 0xfd, 0x60, 0x00, 0x00, 0x00 - ,0x01, 0x8f, 0xfd, 0x50, 0x00, 0x00, 0x00, 0x00 - ,0x9f, 0xfb, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x72, 0x00, 0x00 - ,0x00, 0x9f, 0xfe, 0xdc, 0xdf, 0xff, 0xb2, 0x00 - ,0x1d, 0xf8, 0x20, 0x00, 0x05, 0xfd, 0xff, 0x30 - ,0xaf, 0x30, 0x00, 0x00, 0x9f, 0x90, 0x2e, 0xd0 - ,0xf8, 0x00, 0x00, 0x2c, 0xf5, 0x00, 0x06, 0xf0 - ,0xf8, 0x00, 0x04, 0xed, 0x30, 0x00, 0x05, 0xf0 - ,0xaf, 0x30, 0x8f, 0xb1, 0x00, 0x00, 0x0c, 0xe0 - ,0x1d, 0xfd, 0xf8, 0x00, 0x00, 0x16, 0xdf, 0x40 - ,0x00, 0x9f, 0xff, 0xdc, 0xde, 0xff, 0xc3, 0x00 - ,0x00, 0x01, 0x69, 0xbc, 0xca, 0x73, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30 - ,0x0a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0x2f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0xaf, 0x97, 0x77, 0x77, 0x77, 0x77, 0x79, 0xf0 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x26, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40 - ,0x07, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0 - ,0x4f, 0x80, 0x00, 0x00, 0x00, 0x1c, 0xfe, 0xf0 - ,0xcc, 0x00, 0x00, 0x00, 0x02, 0xef, 0x57, 0xf0 - ,0xf7, 0x00, 0x00, 0x00, 0x2e, 0xe2, 0x07, 0xf0 - ,0xf8, 0x00, 0x00, 0x01, 0xde, 0x20, 0x07, 0xf0 - ,0xce, 0x10, 0x00, 0x2d, 0xe2, 0x00, 0x07, 0xf0 - ,0x4f, 0xd6, 0x58, 0xfe, 0x30, 0x00, 0x07, 0xf0 - ,0x06, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x07, 0xf0 - ,0x00, 0x14, 0x52, 0x00, 0x00, 0x00, 0x05, 0x80 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 - ,0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x50 - ,0x6f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xd0 - ,0xdb, 0x00, 0x00, 0x59, 0x00, 0x00, 0x07, 0xf0 - ,0xf8, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x04, 0xf0 - ,0xea, 0x00, 0x00, 0xcf, 0x10, 0x00, 0x06, 0xf0 - ,0x9f, 0x30, 0x07, 0xff, 0x90, 0x00, 0x1e, 0xe0 - ,0x1e, 0xfc, 0xdf, 0x87, 0xfb, 0x79, 0xef, 0x50 - ,0x01, 0x9d, 0xc6, 0x00, 0x7e, 0xff, 0xd5, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x2b, 0xb0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x06, 0xff, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x02, 0xcf, 0x69, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x7f, 0xb1, 0x09, 0xe0, 0x00, 0x00 - ,0x00, 0x2c, 0xe6, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0x07, 0xfb, 0x10, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0xcf, 0xfc, 0xcc, 0xcc, 0xce, 0xfd, 0xdd, 0xd0 - ,0xde, 0xee, 0xee, 0xee, 0xef, 0xfe, 0xee, 0xe0 - ,0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00 - ,0x78, 0xab, 0xcd, 0xed, 0x00, 0x00, 0xce, 0x20 - ,0xff, 0xed, 0xcc, 0xfa, 0x00, 0x00, 0x5f, 0xb0 - ,0xf9, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x08, 0xf0 - ,0xf9, 0x00, 0x0a, 0xb0, 0x00, 0x00, 0x04, 0xf0 - ,0xf9, 0x00, 0x0a, 0xc0, 0x00, 0x00, 0x04, 0xf0 - ,0xf9, 0x00, 0x08, 0xf3, 0x00, 0x00, 0x0b, 0xf0 - ,0xf9, 0x00, 0x01, 0xfe, 0x62, 0x13, 0xbf, 0x90 - ,0xf9, 0x00, 0x00, 0x4e, 0xff, 0xff, 0xfb, 0x00 - ,0x11, 0x00, 0x00, 0x01, 0x6a, 0xa9, 0x40, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x03, 0x56, 0x65, 0x30, 0x00, 0x00 - ,0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xa2, 0x00 - ,0x08, 0xfe, 0x96, 0x8f, 0x95, 0x6a, 0xff, 0x30 - ,0x6f, 0x90, 0x01, 0xf8, 0x00, 0x00, 0x3e, 0xd0 - ,0xec, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x06, 0xf0 - ,0xf6, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x04, 0xf0 - ,0xf7, 0x00, 0x07, 0xf3, 0x00, 0x00, 0x09, 0xf0 - ,0xcd, 0x10, 0x01, 0xef, 0x72, 0x13, 0xaf, 0x90 - ,0x4d, 0x20, 0x00, 0x2d, 0xff, 0xff, 0xf9, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x47, 0x86, 0x10, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x90 - ,0xfa, 0x00, 0x00, 0x00, 0x00, 0x39, 0xef, 0xf0 - ,0xfa, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xe9, 0x40 - ,0xfa, 0x00, 0x05, 0xbf, 0xff, 0x94, 0x00, 0x00 - ,0xfa, 0x18, 0xef, 0xfb, 0x50, 0x00, 0x00, 0x00 - ,0xfe, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x50, 0x00 - ,0x03, 0xad, 0xb4, 0x00, 0x7f, 0xff, 0xfc, 0x00 - ,0x3f, 0xfc, 0xff, 0x66, 0xfa, 0x43, 0xaf, 0xa0 - ,0xcd, 0x10, 0x1c, 0xfe, 0x70, 0x00, 0x0b, 0xf0 - ,0xf5, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x05, 0xf0 - ,0xf5, 0x00, 0x00, 0xbf, 0x10, 0x00, 0x04, 0xf0 - ,0xec, 0x00, 0x07, 0xff, 0xb0, 0x00, 0x0a, 0xf0 - ,0x6f, 0xd9, 0xcf, 0x78, 0xfb, 0x32, 0x9f, 0x90 - ,0x07, 0xef, 0xe6, 0x00, 0x9f, 0xff, 0xfb, 0x00 - ,0x00, 0x01, 0x00, 0x00, 0x03, 0x88, 0x50, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x03, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00 - ,0x04, 0xdf, 0xff, 0xfb, 0x10, 0x00, 0x0b, 0x60 - ,0x4f, 0xd7, 0x45, 0x9f, 0xd0, 0x00, 0x1c, 0xe0 - ,0xdd, 0x00, 0x00, 0x05, 0xf5, 0x00, 0x05, 0xf0 - ,0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0xf0 - ,0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x08, 0xf0 - ,0xbe, 0x20, 0x00, 0x06, 0xf2, 0x00, 0x5f, 0xa0 - ,0x2e, 0xf9, 0x54, 0x7f, 0x94, 0x7c, 0xfc, 0x00 - ,0x02, 0xaf, 0xff, 0xff, 0xff, 0xfe, 0x70, 0x00 - ,0x00, 0x01, 0x46, 0x77, 0x75, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x06, 0xa1, 0x00, 0x00, 0x09, 0x80 - ,0x00, 0x00, 0x1f, 0xf9, 0x00, 0x00, 0x6f, 0xf0 - ,0x00, 0x00, 0x0d, 0xf5, 0x00, 0x00, 0x3f, 0xe0 - ,0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xba, 0xae, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xe9, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x97, 0x8c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x75, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x75, 0x6a, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfd, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xa8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x2c, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xdd, 0x78, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xf2, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xf0, 0x00, 0x4f, 0x10, 0x00, 0x00, 0x00, 0x00 - ,0xea, 0x23, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x4f, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x01, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10 - ,0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x00, 0x00, 0x9f, 0xa7, 0x77, 0x77, 0x77, 0x70 - ,0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x02, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0xff, 0xcb, 0xbb, 0xbb, 0xbb, 0xb0 - ,0x00, 0x00, 0x4f, 0xfe, 0xee, 0xee, 0xee, 0xe0 - ,0x00, 0x00, 0xab, 0x20, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x02, 0xfa, 0x55, 0x55, 0x55, 0x55, 0x50 - ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf0 - ,0x00, 0x00, 0x02, 0x44, 0x44, 0x44, 0x44, 0x40 - }; - -#pragma romdata font_incon_42 = 0x0F500 - rom const rom unsigned char incon42[] = - { - // 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0xbf, 0xff, 0xc7, 0x65, 0x43, 0x22, 0x33, 0x57, 0xbf, 0xff, 0xfd, 0x20, 0x00 - ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x6e, 0xff, 0xd1, 0x00 - ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xfa, 0x00 - ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xcf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x4f, 0xfe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x07, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x5e, 0xff, 0xfb, 0x98, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -#if 0 -// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00 - ,0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00 - ,0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00 - ,0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#endif -// -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00 - ,0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00 - ,0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00 - ,0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00 - ,0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00 - ,0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00 - ,0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00 - ,0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00 - ,0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00 - ,0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00 - ,0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00 - ,0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00 - ,0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00 - ,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00 - ,0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00 - ,0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00 - ,0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00 - ,0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00 - ,0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00 - ,0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30 - ,0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00 - ,0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00 - ,0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00 - ,0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00 - ,0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00 - ,0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00 - ,0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00 - ,0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00 - ,0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40 - ,0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20 - ,0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00 - ,0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00 - ,0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - //,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - // -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00 - ,0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00 - ,0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00 - ,0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40 - ,0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00 - ,0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00 - ,0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00 - ,0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00 - ,0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00 - ,0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -// ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -#if 0 -#pragma romdata font_incon_42 = 0x0E000 - rom const rom unsigned char incon42[] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x03, 0x7a, 0xcd, 0xee, 0xdc, 0xa8, 0x40, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x18, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x92, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x07, 0xef, 0xff, 0xff, 0xdc, 0xbb, 0xce, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00 - ,0x00, 0x00, 0xbf, 0xff, 0xc7, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xfd, 0x20, 0x00 - ,0x00, 0x0b, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x6e, 0xff, 0xd1, 0x00 - ,0x00, 0x7f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x01, 0xbf, 0xfa, 0x00 - ,0x00, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xe5, 0x00, 0x00, 0x0d, 0xff, 0x20 - ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x02, 0xcf, 0xfc, 0x20, 0x00, 0x00, 0x05, 0xff, 0x60 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xff, 0x90, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0x02, 0xff, 0x80, 0x00, 0x00, 0x08, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x00, 0xcf, 0xf3, 0x00, 0x01, 0xcf, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x00, 0x4f, 0xfe, 0x50, 0x4e, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf8, 0x00 - ,0x00, 0x07, 0xff, 0xfd, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0xff, 0xb0, 0x00 - ,0x00, 0x00, 0x5e, 0xff, 0xff, 0xd8, 0x54, 0x33, 0x34, 0x58, 0xbf, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x50, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x01, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x40, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x77, 0x65, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x1f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00 - ,0x00, 0x00, 0x9f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x02, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x0a, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0xbf, 0xfc, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0x00 - ,0x00, 0x00, 0xbf, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00 - ,0x00, 0x0a, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0x00 - ,0x00, 0x4f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xdb, 0xff, 0x00 - ,0x00, 0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf8, 0x08, 0xff, 0x00 - ,0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfe, 0x40, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0xd2, 0x00, 0x08, 0xff, 0x00 - ,0x04, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfd, 0x10, 0x00, 0x08, 0xff, 0x00 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd1, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x20, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x9f, 0xfa, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x2e, 0xff, 0xd6, 0x21, 0x38, 0xef, 0xfd, 0x20, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x59, 0xbb, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x30, 0x00 - ,0x00, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xd0, 0x00 - ,0x00, 0x1e, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xf8, 0x00 - ,0x00, 0x7f, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x00, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x95, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0x01, 0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x03, 0xff, 0x50, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x70 - ,0x03, 0xff, 0x60, 0x00, 0x00, 0x00, 0x2f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x09, 0xff, 0x30 - ,0x00, 0xbf, 0xf4, 0x00, 0x00, 0x02, 0xef, 0xff, 0x70, 0x00, 0x00, 0x00, 0x2f, 0xfe, 0x00 - ,0x00, 0x4f, 0xfe, 0x60, 0x00, 0x5e, 0xfd, 0xbf, 0xf5, 0x00, 0x00, 0x03, 0xef, 0xf7, 0x00 - ,0x00, 0x09, 0xff, 0xff, 0xdf, 0xff, 0xf3, 0x2f, 0xff, 0xb6, 0x56, 0xbf, 0xff, 0xc0, 0x00 - ,0x00, 0x00, 0x8f, 0xff, 0xff, 0xfe, 0x40, 0x04, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x00 - ,0x00, 0x00, 0x02, 0x8c, 0xdb, 0x71, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x66, 0x30, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xd4, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xf8, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0xbf, 0xfc, 0x30, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x70, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x2c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x07, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x03, 0xcf, 0xfa, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x8f, 0xff, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xef, 0xea, 0xaa, 0xaa, 0xaa, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 - ,0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xdf, 0xd4, 0x44, 0x44, 0x44, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x72, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00 - ,0x01, 0xab, 0xcd, 0xef, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x80, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x28, 0xff, 0xf3, 0x00 - ,0x02, 0xff, 0xda, 0xa9, 0x87, 0x67, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0d, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0e, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x0b, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x30 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x06, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfd, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0xdf, 0xfd, 0x40, 0x00, 0x00, 0x29, 0xff, 0xf5, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xba, 0xbd, 0xff, 0xff, 0x90, 0x00 - ,0x02, 0xff, 0x70, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00 - ,0x01, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x34, 0x42, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x33, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x49, 0xce, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x71, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x00 - ,0x00, 0x00, 0x3d, 0xff, 0xff, 0xfc, 0xba, 0xff, 0xfb, 0xab, 0xef, 0xff, 0xfd, 0x20, 0x00 - ,0x00, 0x04, 0xff, 0xfe, 0x83, 0x00, 0x1c, 0xfd, 0x20, 0x00, 0x02, 0x8e, 0xff, 0xd1, 0x00 - ,0x00, 0x1e, 0xff, 0x90, 0x00, 0x00, 0xbf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf9, 0x00 - ,0x00, 0xaf, 0xf7, 0x00, 0x00, 0x05, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x10 - ,0x01, 0xff, 0xb0, 0x00, 0x00, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x04, 0xff, 0x50, 0x00, 0x00, 0x0d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x70 - ,0x06, 0xff, 0x20, 0x00, 0x00, 0x0d, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0x06, 0xff, 0x30, 0x00, 0x00, 0x0a, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0x30 - ,0x03, 0xff, 0x70, 0x00, 0x00, 0x05, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x00, 0xef, 0xe1, 0x00, 0x00, 0x00, 0xcf, 0xfd, 0x50, 0x00, 0x00, 0x28, 0xff, 0xf4, 0x00 - ,0x00, 0x7f, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0xff, 0xff, 0xdb, 0xcd, 0xff, 0xff, 0x70, 0x00 - ,0x00, 0x0c, 0xd2, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00 - ,0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9d, 0xff, 0xfe, 0xb6, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xef, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9e, 0xff, 0xff, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xdf, 0xff, 0xff, 0xfe, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xff, 0xd9, 0x40, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xfd, 0x83, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x00, 0x39, 0xef, 0xff, 0xff, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x90, 0x00, 0x6c, 0xff, 0xff, 0xfe, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0x92, 0x8e, 0xff, 0xff, 0xfb, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xef, 0xff, 0xff, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xff, 0xfd, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x02, 0xba, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x67, 0x62, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x04, 0xdf, 0xff, 0xff, 0xb2, 0x00, 0x00 - ,0x00, 0x00, 0x3c, 0xff, 0xff, 0xc4, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x00 - ,0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xfb, 0x77, 0xaf, 0xff, 0xe1, 0x00 - ,0x00, 0x3f, 0xff, 0xa7, 0x8d, 0xff, 0xf6, 0x4f, 0xfc, 0x20, 0x00, 0x02, 0xdf, 0xf9, 0x00 - ,0x00, 0xbf, 0xe3, 0x00, 0x00, 0x8f, 0xfe, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x2e, 0xff, 0x00 - ,0x01, 0xff, 0x60, 0x00, 0x00, 0x08, 0xff, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x08, 0xff, 0x40 - ,0x05, 0xff, 0x10, 0x00, 0x00, 0x00, 0xcf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x06, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x60 - ,0x06, 0xff, 0x20, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x10, 0x00, 0x00, 0x00, 0x05, 0xff, 0x50 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x03, 0xef, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x0a, 0xff, 0x20 - ,0x00, 0xdf, 0xf6, 0x00, 0x00, 0x5e, 0xfc, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x4f, 0xfd, 0x00 - ,0x00, 0x4f, 0xff, 0xc8, 0x9d, 0xff, 0xf3, 0x3f, 0xff, 0xa2, 0x00, 0x06, 0xff, 0xf5, 0x00 - ,0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x06, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xa0, 0x00 - ,0x00, 0x00, 0x4c, 0xff, 0xff, 0x91, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x24, 0x30, 0x00, 0x00, 0x00, 0x01, 0x8e, 0xff, 0xfb, 0x40, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x01, 0x7d, 0xff, 0xff, 0xea, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00 - ,0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xe2, 0x00 - ,0x00, 0x08, 0xff, 0xff, 0xb9, 0x9b, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0xfa, 0x00 - ,0x00, 0x4f, 0xff, 0x70, 0x00, 0x00, 0x05, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0xff, 0x10 - ,0x00, 0xdf, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x10, 0x00, 0x00, 0x06, 0xff, 0x50 - ,0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0x50, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x05, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x04, 0xff, 0x60 - ,0x06, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x70, 0x00, 0x00, 0x07, 0xff, 0x40 - ,0x04, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0x40, 0x00, 0x00, 0x0d, 0xfe, 0x00 - ,0x00, 0xef, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfd, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x00 - ,0x00, 0x7f, 0xfd, 0x30, 0x00, 0x00, 0x00, 0x7f, 0xf4, 0x00, 0x00, 0x1a, 0xff, 0xd1, 0x00 - ,0x00, 0x0b, 0xff, 0xfb, 0x52, 0x00, 0x08, 0xff, 0x60, 0x13, 0x6a, 0xff, 0xfe, 0x20, 0x00 - ,0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00 - ,0x00, 0x00, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x02, 0x69, 0xcd, 0xef, 0xff, 0xed, 0xb9, 0x62, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; -#endif - -// ********************** -// ********************** -// ** THE JUMP-IN CODE ** -// ** for the asm code ** -// ********************** -// ********************** -#pragma code main_calc_hauptroutine = 0x10000 -void main_calc_hauptroutine(void) -{ -calc_hauptroutine(); -int_O_desaturation_time = 65535; -} // divemode -#pragma code main_without_deco = 0x10020 -void main_calc_without_deco(void) -{ -calc_without_deco(); -calc_desaturation_time(); -} - -#pragma code main_clear_CNS_fraction = 0x10030 -void main_clear_CNS_fraction(void) -{ -clear_CNS_fraction(); -} - -#pragma code main_calc_CNS_decrease_15min = 0x10034 -void main_calc_CNS_decrease_15min(void) -{ -calc_CNS_decrease_15min(); -} - -#pragma code main_calc_percentage = 0x10038 -void main_calc_percentage (void) -{ -calc_percentage(); -} - -#pragma code main_clear_tissue = 0x10040 -void main_clear_tissue(void) -{ -clear_tissue(); -char_I_depth_last_deco = 0; // for compatibility with v.101pre_no_last_deco -} - -#pragma code main_calc_CNS_fraction = 0x10050 -void main_calc_CNS_fraction(void) -{ -calc_CNS_fraction(); -} - -#pragma code main_calc_desaturation_time = 0x10060 -void main_calc_desaturation_time(void) -{ -calc_desaturation_time(); -} - -#pragma code main_calc_wo_deco_step_1_min = 0x10080 -void main_calc_wo_deco_step_1_min(void) -{ -calc_wo_deco_step_1_min(); -char_O_deco_status = 3; // surface new in v.102 overwrites value of calc_wo_deco_step_1_min -calc_desaturation_time(); -} // surface mode - -#pragma code main_debug = 0x100A0 -void main_debug(void) -{ -//debug(); -} - -#pragma code main_DD2_write_incon42 = 0x100B0 -void main_DD2_write_incon42(void) -{ - DD2_write_incon42(); -} - -#pragma code main_DD2_write_incon24 = 0x100B4 -void main_DD2_write_incon24(void) -{ - DD2_write_incon24(); -} - -#pragma code main_gradient_array = 0x100C0 -void main_gradient_array(void) -{ -calc_gradient_array_only(); -} -#pragma code main_push_tissues = 0x100C4 -void main_push_tissues_to_vault(void) -{ - push_tissues_to_vault(); -} -#pragma code main_pull_tissues = 0x100C8 -void main_pull_tissues_from_vault(void) -{ - pull_tissues_from_vault(); -} - -#pragma code main_hash = 0x100E0 -void main_hash(void) -{ -hash(); -} - -// *********************** -// *********************** -// ** THE LOOKUP TABLES ** -// *********************** -// *********************** - -#pragma romdata tables = 0x10200 -#include // new table for deco_main_v.101 (var_a modified) - -#pragma romdata tables2 = 0x10600 -rom const rom unsigned int md_pi[] = -{ - 0x292E, 0x43C9, 0xA2D8, 0x7C01, 0x3D36, 0x54A1, 0xECF0, 0x0613 - , 0x62A7, 0x05F3, 0xC0C7, 0x738C, 0x9893, 0x2BD9, 0xBC4C, 0x82CA - , 0x1E9B, 0x573C, 0xFDD4, 0xE016, 0x6742, 0x6F18, 0x8A17, 0xE512 - , 0xBE4E, 0xC4D6, 0xDA9E, 0xDE49, 0xA0FB, 0xF58E, 0xBB2F, 0xEE7A - , 0xA968, 0x7991, 0x15B2, 0x073F, 0x94C2, 0x1089, 0x0B22, 0x5F21 - , 0x807F, 0x5D9A, 0x5A90, 0x3227, 0x353E, 0xCCE7, 0xBFF7, 0x9703 - , 0xFF19, 0x30B3, 0x48A5, 0xB5D1, 0xD75E, 0x922A, 0xAC56, 0xAAC6 - , 0x4FB8, 0x38D2, 0x96A4, 0x7DB6, 0x76FC, 0x6BE2, 0x9C74, 0x04F1 - , 0x459D, 0x7059, 0x6471, 0x8720, 0x865B, 0xCF65, 0xE62D, 0xA802 - , 0x1B60, 0x25AD, 0xAEB0, 0xB9F6, 0x1C46, 0x6169, 0x3440, 0x7E0F - , 0x5547, 0xA323, 0xDD51, 0xAF3A, 0xC35C, 0xF9CE, 0xBAC5, 0xEA26 - , 0x2C53, 0x0D6E, 0x8528, 0x8409, 0xD3DF, 0xCDF4, 0x4181, 0x4D52 - , 0x6ADC, 0x37C8, 0x6CC1, 0xABFA, 0x24E1, 0x7B08, 0x0CBD, 0xB14A - , 0x7888, 0x958B, 0xE363, 0xE86D, 0xE9CB, 0xD5FE, 0x3B00, 0x1D39 - , 0xF2EF, 0xB70E, 0x6658, 0xD0E4, 0xA677, 0x72F8, 0xEB75, 0x4B0A - , 0x3144, 0x50B4, 0x8FED, 0x1F1A, 0xDB99, 0x8D33, 0x9F11, 0x8314 -}; - -// ********************* -// ********************* -// ** THE SUBROUTINES ** -// ********************* -// ********************* - -#pragma code subroutines = 0x10700 // can be adapted to fit the romdata tables ahead - - -// --------------- -// CLEAR tissue // -// --------------- -// optimized in v.101 (var_a) - -void clear_tissue(void) // preload tissues with standard pressure for the given ambient pressure -{ -_asm -lfsr 1, 0x300 // C math routines shall use this variable bank -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -// N2_ratio = (float)char_I_N2_ratio; // the 0.0002 of 0.7902 are missing with standard air - N2_ratio = 0.7902; // N2_ratio / 100.0; - pres_respiration = (float)int_I_pres_respiration / 1000.0; -for (ci=0;ci<16;ci++) // cycle through the 16 b"uhlmann tissues -{ - pres_tissue[ci] = N2_ratio * (pres_respiration - 0.0627) ; -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x80 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -_endasm - -pres_tissue_limit[ci] = (pres_tissue[ci] - var_a) * var_b ; -// now update the guiding tissue -if (pres_tissue_limit[ci] < 0) -pres_tissue_limit[ci] = 0; -} // for 0 to 16 - -for (ci=16;ci<32;ci++) // cycle through the 16 b"uhlmann tissues for Helium -{ - pres_tissue[ci] = 0.0; -} // for - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - char_O_gradient_factor = 0; - char_O_relative_gradient_GF = 0; -} // clear_tissue(void) - - -// -------------------- -// calc_without_deco // -// fixed N2_ratio ! // -// -------------------- -// optimized in v.101 (float_..saturation_multiplier) - -void calc_without_deco(void) -{ -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED RATIO !! sum as stated in b"uhlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does apply to the pressure without any inert ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_without_deco - - -// -------------------- -// calc_hauptroutine // -// -------------------- -// this is the major code in dive mode -// calculates: -// the tissues, -// the bottom time -// and simulates the ascend with all deco stops - -void calc_hauptroutine(void) -{ - calc_hauptroutine_data_input(); - calc_hauptroutine_update_tissues(); - calc_gradient_factor(); - - - switch (char_O_deco_status) // toggle between calculation for nullzeit (bottom time), deco stops and more deco stops (continue) - { - case 0: - update_startvalues(); - calc_nullzeit(); - char_O_deco_status = 255; // calc deco next time - break; - case 1: - if (char_O_deco_status == 3) - break; - char_O_deco_status = 0; -// char_O_lock_depth_list = 255; - calc_hauptroutine_calc_deco(); -// build_debug_output(); - break; - case 3: // new dive - clear_decoarray(); - clear_internal_deco_table_GF(); - copy_deco_table_GF(); - internal_deco_pointer = 0; - lock_GF_depth_list = 0; - update_startvalues(); - calc_nextdecodepth_GF(); - char_O_deco_status = 0; - break; - default: - update_startvalues(); - clear_decoarray(); - clear_internal_deco_table_GF(); - output[6] = 1; - calc_hauptroutine_calc_ascend_to_deco(); - if (char_O_deco_status > 15) // can't go up to first deco, too deep to calculate in the given time slot - { - char_O_deco_status = 2; -// char_O_lock_depth_list = 255; - } - else - { -// char_O_lock_depth_list = lock_GF_depth_list; - calc_hauptroutine_calc_deco(); - } -// build_debug_output(); - break; - } - calc_ascenttime(); -} - -void calc_hauptroutine_data_input(void) -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; - pres_surface = (float)int_I_pres_surface / 1000.0; - - N2_ratio = (float)char_I_N2_ratio / 100.0;; // the 0.0002 of 0.7902 are missing with standard air - He_ratio = (float)char_I_He_ratio / 100.0;; - deco_N2_ratio = (float)char_I_deco_N2_ratio / 100.0; - deco_He_ratio = (float)char_I_deco_He_ratio / 100.0; - float_deco_distance = (float)char_I_deco_distance / 100.0; - deco_gas_change = (float)char_I_deco_gas_change / 9.995 + pres_surface; - deco_gas_change = deco_gas_change + float_deco_distance; - const_ppO2 = (float)char_I_const_ppO2 / 100.0; - deco_ppO2_change = (float)char_I_deco_ppO2_change / 99.95 + pres_surface; - deco_ppO2_change = deco_ppO2_change + float_deco_distance; - deco_ppO2 = (float)char_I_deco_ppO2 / 100.0; - float_desaturation_multiplier = (float)char_I_desaturation_multiplier / 100.0; - float_saturation_multiplier = (float)char_I_saturation_multiplier / 100.0; - GF_low = (float)char_I_GF_Low_percentage / 100.0; - GF_high = (float)char_I_GF_High_percentage / 100.0; - GF_delta = GF_high - GF_low; - - temp2 = (pres_respiration - pres_surface) / 0.29985; - int_temp = (int)(temp2); - if (int_temp < 0) - int_temp = 0; - if (int_temp > 255) - int_temp = 255; - char_O_actual_pointer = int_temp; - - temp_depth_last_deco = (int)char_I_depth_last_deco; -} - -void calc_hauptroutine_update_tissues(void) -{ - int_O_calc_tissue_call_counter = int_O_calc_tissue_call_counter + 1; - if (char_I_const_ppO2 == 0) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - else // new in v.101 - pres_diluent = ((pres_respiration - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - if (pres_diluent > pres_respiration) // new in v.101 - pres_diluent = pres_respiration; // new in v.101 - if (pres_diluent > 0.0627) // new in v.101 - { - temp_atem = N2_ratio * (pres_diluent - 0.0627); // changed in v.101 - temp2_atem = He_ratio * (pres_diluent - 0.0627); // changed in v.101 - char_O_diluent = (char)(pres_diluent/pres_respiration*100.0); - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - char_O_diluent = 0; - } - temp_surface = pres_surface; - calc_tissue(); - int_O_gtissue_limit = (int)(pres_tissue_limit[char_O_gtissue_no] * 1000); - int_O_gtissue_press = (int)((pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]) * 1000); - if (char_I_deco_model == 1) - { - temp1 = temp1 * GF_high; - } - else - { - temp1 = temp_surface; - } - if (pres_gtissue_limit > temp1 && char_O_deco_status == 0) // if guiding tissue can not be exposed to surface pressure immediately - { - char_O_nullzeit = 0; // deco necessary - char_O_deco_status = 255; // calculate deco skip nullzeit calculation - } -} // calc_hauptroutine_update_tissues -void calc_hauptroutine_calc_deco(void) -{ - do - { - int_temp_decostatus = 0; - calc_nextdecodepth_GF(); - if (temp_depth_limit > 0) - { - if (char_I_const_ppO2 == 0) // new in v.101 - { - deco_diluent = temp_deco; // new in v.101 - if (temp_deco > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco > deco_ppO2_change) - { - deco_diluent = ((temp_deco - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - else - { - deco_diluent = ((temp_deco - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 - } - } - if (deco_diluent > temp_deco) // new in v.101 - deco_diluent = temp_deco; // new in v.101 - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - update_internal_deco_table_GF(); - temp_decotime = 1; - update_decoarray(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) - int_temp_decostatus = 1; - } - else // if (temp_depth_limit > 0) - { - char_O_deco_status = 0; - } - } while (int_temp_decostatus == 1); - if (char_O_deco_status > 15) - { - char_O_deco_status = 1; - } - else - { - copy_deco_table_GF(); - char_O_deco_status = 0; - } -} - -void calc_hauptroutine_calc_ascend_to_deco(void) -{ - update_startvalues(); - char_O_deco_status = 0; - temp_deco = pres_respiration; - lock_GF_depth_list = 1; // new in v.102 - do // go up to first deco - { - int_temp_decostatus = 0; - temp_deco = temp_deco - 1.0; - if ( char_I_deco_model == 1) // new in v.102 , 4 = deep stops - temp_limit = temp_pres_gtissue_limit_GF_low; - else - temp_limit = temp_pres_gtissue_limit; - if ((temp_deco > temp_limit) && (temp_deco > pres_surface)) // changes in v.102 - { - lock_GF_depth_list = 0; // new in v.102, distance to first stop > 10 mtr. - output[6] = 0; - if (char_I_const_ppO2 == 0) // new in v.101 // calculate at half of the ascent - { - deco_diluent = temp_deco + 0.5; // new in v.101 - if (temp_deco + 0.5 > deco_gas_change) - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - } - else - { - calc_N2_ratio = deco_N2_ratio; - calc_He_ratio = deco_He_ratio; - } - } - else // new in v.101 - { - calc_N2_ratio = N2_ratio; - calc_He_ratio = He_ratio; - if (temp_deco + 0.5 > deco_ppO2_change) - deco_diluent = ((temp_deco + 0.5 - const_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - else - deco_diluent = ((temp_deco + 0.5 - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent - if (deco_diluent > (temp_deco +0.5)) // new in v.101 - deco_diluent = temp_deco + 0.5; // new in v.101 // calculate at half of the ascent - } - if (deco_diluent > 0.0627) // new in v.101 - { - temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 - temp2_atem = calc_He_ratio * (deco_diluent - 0.0627); // changed in v.101 - } - else // new in v.101 - { - temp_atem = 0.0; // new in v.101 - temp2_atem = 0.0; // new in v.101 - } - sim_tissue_1min(); - char_O_deco_status = char_O_deco_status + 1; - if (char_O_deco_status < 16) // 16 is the limit of calculations for one time slot - int_temp_decostatus = 1; - } - } while (int_temp_decostatus == 1); -} // calc_hauptroutine_calc_ascend_to_deco - -// -------------- -// calc_tissue // -// -------------- -// optimized in v.101 - -void calc_tissue(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_e2secs+1 // the order is confussing -TBLRDPOSTINC -movff TABLAT,var_e2secs // low byte first, high afterwards -TBLRDPOSTINC -movff TABLAT,var_e2secs+3 -TBLRD -movff TABLAT,var_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e2secs+1 -TBLRDPOSTINC -movff TABLAT,var2_e2secs -TBLRDPOSTINC -movff TABLAT,var2_e2secs+3 -TBLRD -movff TABLAT,var2_e2secs+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -_endasm - // the start values are the previous end values // write new values in temp - -// N2 - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e2secs; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e2secs; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if -} // for -}//calc_tissue(void) - -// ---------------- -// calc_nullzeit // -// ---------------- -// calculates the remaining bottom time - -// unchanged in v.101 - -void calc_nullzeit(void) -{ - char_O_nullzeit = 0; - int_temp = 1; - do - { - backup_sim_pres_tissue(); - sim_tissue_10min(); - char_O_nullzeit = char_O_nullzeit + 10; - int_temp = int_temp + 1; - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 17); - if (int_temp == 255) - { - restore_sim_pres_tissue(); - char_O_nullzeit = char_O_nullzeit - 10; - } //if int_temp == 255] - int_temp = 1; - if (char_O_nullzeit < 60) - { - do - { - sim_tissue_1min(); - char_O_nullzeit = char_O_nullzeit + 1; - int_temp = int_temp + 1; // new in v.102a - if (char_I_deco_model == 1) - temp1 = GF_high * temp_pres_gtissue_diff + temp_pres_gtissue; - else - temp1 = temp_pres_gtissue_limit; - if (temp1 > temp_surface) // changed in v.102 , if guiding tissue can not be exposed to surface pressure immediately - int_temp = 255; - } while (int_temp < 10); - if (int_temp == 255) - char_O_nullzeit = char_O_nullzeit - 1; - } // if char_O_nullzeit < 60 -} //calc_nullzeit - -// ------------------------- -// backup_sim_pres_tissue // -// ------------------------- -void backup_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue_backup[x] = sim_pres_tissue[x]; - sim_pres_tissue_backup[x+16] = sim_pres_tissue[x+16]; - } -} // backup_sim - -// -------------------------- -// restore_sim_pres_tissue // -// -------------------------- -void restore_sim_pres_tissue(void) -{ - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = sim_pres_tissue_backup[x]; - sim_pres_tissue[x+16] = sim_pres_tissue_backup[x+16]; - } -} // restore_sim - -// ------------------ -// calc_ascenttime // -// ------------------ - -void calc_ascenttime(void) -{ -if (pres_respiration > pres_surface) - { - switch (char_O_deco_status) - { - case 2: - char_O_ascenttime = 255; - break; - case 1: - break; - default: - temp1 = pres_respiration - pres_surface + 0.6; // + 0.6 hence 1 minute ascent time from a depth of 4 meter on - if (temp1 < 0) - temp1 = 0; - if (temp1 > 255) - temp1 = 255; - char_O_ascenttime = (char)temp1; - - for(ci=0;ci<7;ci++) - { - x = char_O_ascenttime + char_O_array_decotime[ci]; - if (x < char_O_ascenttime) - char_O_ascenttime = 255; - else - char_O_ascenttime = x; - } - } - } -else - char_O_ascenttime = 0; -} // calc_ascenttime() - - -// --------------------- -// update_startvalues // -// --------------------- -// updated in v.102 - -void update_startvalues(void) -{ - temp_pres_gtissue_limit = pres_gtissue_limit; - temp_pres_gtissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; - - temp_gtissue_no = char_O_gtissue_no; - for (x = 0;x<16;x++) - { - sim_pres_tissue[x] = pres_tissue[x]; - sim_pres_tissue[x+16] = pres_tissue[x+16]; - sim_pres_tissue_limit[x] = pres_tissue_limit[x]; - } -} // update_startvalues - - -// ------------------ -// sim_tissue_1min // -// ------------------ -// optimized in v.101 - -void sim_tissue_1min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit - temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_1min() - -//-------------------- -// sim_tissue_10min // -//-------------------- - -// Attention!! uses var_e1min und var2_e1min to load 10min data !!! -// is identical to sim_tissue_1min routine except for the different load of those variables - -// optimized in v.101 - -void sim_tissue_10min(void) -{ -temp_pres_gtissue_limit = 0.0; -temp_gtissue_no = 255; - -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 // different to 1 min -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -//incf TBLPTRH,1,0 // different to 1 min -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm -// N2 - temp_tissue = (temp_atem - sim_pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci] = sim_pres_tissue[ci] + temp_tissue; -// He - temp_tissue = (temp2_atem - sim_pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - sim_pres_tissue[ci+16] = sim_pres_tissue[ci+16] + temp_tissue; -// pressure limit -temp_tissue = sim_pres_tissue[ci] + sim_pres_tissue[ci+16]; - var_a = (var_a * sim_pres_tissue[ci] + var2_a * sim_pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * sim_pres_tissue[ci] + var2_b * sim_pres_tissue[ci+16]) / temp_tissue; - -sim_pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (sim_pres_tissue_limit[ci] < 0) - sim_pres_tissue_limit[ci] = 0; - if (sim_pres_tissue_limit[ci] > temp_pres_gtissue_limit) - { - temp_pres_gtissue = temp_tissue; - temp_pres_gtissue_limit = sim_pres_tissue_limit[ci]; - temp_gtissue_no = ci; - } -} // for - temp_pres_gtissue_diff = temp_pres_gtissue_limit - temp_pres_gtissue; // negative number - temp_pres_gtissue_limit_GF_low = GF_low * temp_pres_gtissue_diff + temp_pres_gtissue; - temp_pres_gtissue_limit_GF_low_below_surface = temp_pres_gtissue_limit_GF_low - pres_surface; - if (temp_pres_gtissue_limit_GF_low_below_surface < 0) - temp_pres_gtissue_limit_GF_low_below_surface = 0; -} //sim_tissue_10min() - - -// ------------------ -// clear_decoarray // -// ------------------ -// unchanged in v.101 - -void clear_decoarray(void) -{ -char_O_array_decodepth[0] = 0; -char_O_array_decodepth[1] = 0; -char_O_array_decodepth[2] = 0; -char_O_array_decodepth[3] = 0; -char_O_array_decodepth[4] = 0; -char_O_array_decodepth[5] = 0; -char_O_array_decotime[0] = 0; -char_O_array_decotime[1] = 0; -char_O_array_decotime[2] = 0; -char_O_array_decotime[3] = 0; -char_O_array_decotime[4] = 0; -char_O_array_decotime[5] = 0; -char_O_array_decotime[6] = 0; -} // clear_decoarray - - -// ------------------- -// update_decoarray // -// ------------------- -// unchanged in v.101 - -void update_decoarray() -{ - x = 0; - do - { - if (char_O_array_decodepth[x] == temp_depth_limit) - { - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp < 0) - int_temp = 0; - if (int_temp > 240) - int_temp = 240; - char_O_array_decotime[x] = int_temp; - x = 10; // exit - } // if - else - { - if (char_O_array_decodepth[x] == 0) - { - if (temp_depth_limit > 255) - char_O_array_decodepth[x] = 255; - else - char_O_array_decodepth[x] = (char)temp_depth_limit; - int_temp = char_O_array_decotime[x] + temp_decotime; - if (int_temp > 240) - char_O_array_decotime[x] = 240; - else - char_O_array_decotime[x] = (char)int_temp; - x = 10; // exit - } // if - else - x++; - } // else - } while (x<6); - if (x == 6) - { - int_temp = char_O_array_decotime[6] + temp_decotime; - if (int_temp > 220) - char_O_array_decotime[6] = 220; - else - char_O_array_decotime[6] = (char)int_temp; - } // if x == 6 -} // update_decoarray - - -// ----------------------- -// calc_gradient_factor // -// ----------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_factor(void) -{ - // tissue > respiration (entsaettigungsvorgang) - // gradient ist wieviel prozent an limit mit basis tissue - // dh. 0% = respiration == tissue - // dh. 100% = respiration == limit - temp_tissue = pres_tissue[char_O_gtissue_no] + pres_tissue[char_O_gtissue_no+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[char_O_gtissue_no]; // changed in v.102 - temp2 = temp1/temp2; - temp2 = temp2 * 100; // displayed in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_gradient_factor = 0; - else - char_O_gradient_factor = (char)temp2; - - temp3 = temp2; - - if (char_I_deco_model == 1) // calculate relative gradient factor - { - temp1 = (float)temp_depth_GF_low_meter * 0.09995; - temp2 = pres_respiration - pres_surface; - if (temp2 <= 0) - temp1 = GF_high; - else - if (temp2 >= temp1) - temp1 = GF_low; - else - temp1 = GF_low + (temp1 - temp2)/temp1*GF_delta; - if (temp_depth_GF_low_meter == 0) - temp1 = GF_high; - temp2 = temp3 / temp1; // temp3 is already in percent - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - char_O_relative_gradient_GF = (char)temp2; - } // calc relative gradient factor - else - { - char_O_relative_gradient_GF = char_O_gradient_factor; - } -} // calc_gradient - -// --------------------------- -// calc_gradient_array_only // -// --------------------------- -// optimized in v.101 (var_a) -// new code in v.102 - -void calc_gradient_array_only() -{ - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system -for (ci=0;ci<16;ci++) -{ - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - temp1 = temp_tissue - pres_respiration; - temp2 = temp_tissue - pres_tissue_limit[ci]; - temp2 = temp1/temp2; - temp2 = temp2 * 200; // because of output in (Double-)percentage - if (temp2 < 0) - temp2 = 0; - if (temp2 > 255) - temp2 = 255; - if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; - else - char_O_array_gradient_weighted[ci] = (char)temp2; -} // for -} // calc_gradient_array_only - - -// ------------------------- -// calc_desaturation_time // -// ------------------------- -// FIXED N2_ratio -// unchanged in v.101 - -void calc_desaturation_time(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - N2_ratio = 0.7902; // FIXED sum as stated in b"uhlmann - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_surface - 0.0627); - int_O_desaturation_time = 0; - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x04 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var_halftimes -TBLRDPOSTINC -movff TABLAT,var_halftimes+3 -TBLRD -movff TABLAT,var_halftimes+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_halftimes+1 -TBLRDPOSTINC -movff TABLAT,var2_halftimes -TBLRDPOSTINC -movff TABLAT,var2_halftimes+3 -TBLRD -movff TABLAT,var2_halftimes+2 -_endasm - -// saturation_time (for flight) and N2_saturation in multiples of halftime -// version v.100: 1.1 = 10 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// new in version v.101: 1.07 = 7 percent distance to totally clean (totally clean is not possible, would take infinite time ) -// changes in v.101: 1.05 = 5 percent dist to totally clean is new desaturation point for display and noFly calculations -// N2 - temp1 = 1.05 * temp_atem; - temp1 = temp1 - pres_tissue[ci]; - temp2 = temp_atem - pres_tissue[ci]; - if (temp2 >= 0.0) - { - temp1 = 0; - temp2 = 0; - } - else - temp1 = temp1 / temp2; - if (temp1 > 0.0) - { - temp1 = log(1.0 - temp1); - temp1 = temp1 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - 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 - } - else - { - temp1 = 0; - temp2 = 0; - } - -// He - temp3 = 0.1 - pres_tissue[ci+16]; -if (temp3 >= 0.0) - { - temp3 = 0; - temp4 = 0; - } - else - temp3 = -1.0 * temp3 / pres_tissue[ci+16]; - if (temp3 > 0.0) - { - temp3 = log(1.0 - temp3); - temp3 = temp3 / -0.6931; // temp1 is the multiples of half times necessary. - // 0.6931 is ln(2), because the math function log() calculates with a base of e not 2 as requested. - // minus because log is negative - temp4 = var2_halftimes * temp3 / float_desaturation_multiplier; // time necessary (in minutes ) for "complete" desaturation, new in v.101 float_desaturation_multiplier - } - else - { - temp3 = 0; - temp4 = 0; - } - -// saturation_time (for flight) - if (temp4 > temp2) - int_temp = (int)temp4; - else - int_temp = (int)temp2; - if(int_temp > int_O_desaturation_time) - int_O_desaturation_time = int_temp; - -// N2 saturation in multiples of halftime for display purposes - temp2 = temp1 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp2 = temp2 + 80.0; // set center - if (temp2 < 0.0) - temp2 = 0.0; - if (temp2 > 255.0) - temp2 = 255.0; - char_O_tissue_saturation[ci] = (char)temp2; -// He saturation in multiples of halftime for display purposes - temp4 = temp3 * 20.0; // 0 = 1/8, 120 = 0, 249 = 8 - temp4 = temp4 + 80.0; // set center - if (temp4 < 0.0) - temp4 = 0.0; - if (temp4 > 255.0) - temp4 = 255.0; - char_O_tissue_saturation[ci+16] = (char)temp4; -} // for -} // calc_desaturation_time - - -// -------------------------- -// calc_wo_deco_step_1_min // -// -------------------------- -// FIXED N2 Ratio -// optimized in v.101 (...saturation_multiplier) -// desaturation slowed down to 70,42% - -void calc_wo_deco_step_1_min(void) -{ -_asm - lfsr 1, 0x300 -_endasm - N2_ratio = 0.7902; // FIXED, sum lt. buehlmann - pres_respiration = (float)int_I_pres_respiration / 1000.0; // assembler code uses different digit system - pres_surface = (float)int_I_pres_surface / 1000.0; - temp_atem = N2_ratio * (pres_respiration - 0.0627); // 0.0627 is the extra pressure in the body - temp2_atem = 0.0; - temp_surface = pres_surface; // the b"uhlmann formula using temp_surface does not use the N2_ratio - float_desaturation_multiplier = char_I_desaturation_multiplier / 142.0; // new in v.101 (70,42%/100.=142) - float_saturation_multiplier = char_I_saturation_multiplier / 100.0; - - calc_tissue_step_1_min(); // update the pressure in the 16 tissues in accordance with the new ambient pressure - clear_decoarray(); - char_O_deco_status = 0; - char_O_nullzeit = 0; - char_O_ascenttime = 0; - calc_gradient_factor(); - -} // calc_wo_deco_step_1_min(void) - - -// ------------------------- -// calc_tissue_step_1_min // -// ------------------------- -// optimized in v.101 - -void calc_tissue_step_1_min(void) -{ -_asm -lfsr 1, 0x300 -movlw 0x01 -movwf TBLPTRU,0 -_endasm - - char_O_gtissue_no = 255; - pres_gtissue_limit = 0.0; - -for (ci=0;ci<16;ci++) -{ -_asm -movlw 0x02 -movwf TBLPTRH,0 -movlb 4 // fuer ci -movf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addwf ci,0,1 -addlw 0x80 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var_a+1 -TBLRDPOSTINC -movff TABLAT,var_a -TBLRDPOSTINC -movff TABLAT,var_a+3 -TBLRD -movff TABLAT,var_a+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_a+1 -TBLRDPOSTINC -movff TABLAT,var2_a -TBLRDPOSTINC -movff TABLAT,var2_a+3 -TBLRD -movff TABLAT,var2_a+2 -addlw 0x40 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_b+1 -TBLRDPOSTINC -movff TABLAT,var_b -TBLRDPOSTINC -movff TABLAT,var_b+3 -TBLRD -movff TABLAT,var_b+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_b+1 -TBLRDPOSTINC -movff TABLAT,var2_b -TBLRDPOSTINC -movff TABLAT,var2_b+3 -TBLRD -movff TABLAT,var2_b+2 -addlw 0xC0 -movwf TBLPTRL,0 -incf TBLPTRH,1,0 -TBLRDPOSTINC -movff TABLAT,var_e1min+1 -TBLRDPOSTINC -movff TABLAT,var_e1min -TBLRDPOSTINC -movff TABLAT,var_e1min+3 -TBLRD -movff TABLAT,var_e1min+2 -addlw 0x40 -movwf TBLPTRL,0 -TBLRDPOSTINC -movff TABLAT,var2_e1min+1 -TBLRDPOSTINC -movff TABLAT,var2_e1min -TBLRDPOSTINC -movff TABLAT,var2_e1min+3 -TBLRD -movff TABLAT,var2_e1min+2 -_endasm - -// N2 1 min - temp_tissue = (temp_atem - pres_tissue[ci]) * var_e1min; - temp_tissue_safety(); - pres_tissue[ci] = pres_tissue[ci] + temp_tissue; - -// He 1 min - temp_tissue = (temp2_atem - pres_tissue[ci+16]) * var2_e1min; - temp_tissue_safety(); - pres_tissue[ci+16] = pres_tissue[ci+16] + temp_tissue; - - temp_tissue = pres_tissue[ci] + pres_tissue[ci+16]; - var_a = (var_a * pres_tissue[ci] + var2_a * pres_tissue[ci+16]) / temp_tissue; - var_b = (var_b * pres_tissue[ci] + var2_b * pres_tissue[ci+16]) / temp_tissue; - pres_tissue_limit[ci] = (temp_tissue - var_a) * var_b; - if (pres_tissue_limit[ci] < 0) - pres_tissue_limit[ci] = 0; - if (pres_tissue_limit[ci] > pres_gtissue_limit) - { - pres_gtissue_limit = pres_tissue_limit[ci]; - char_O_gtissue_no = ci; - }//if - -// gradient factor array for graphical display -// display range is 0 to 250! in steps of 5 for 1 pixel -// the display is divided in 6 blocks -// -> double the gradient 100% = 200 -// tissue > respiration (entsaettigungsvorgang) -// gradient ist wieviel prozent an limit von tissue aus -// dh. 0% = respiration == tissue -// dh. 100% = respiration == limit -temp1 = temp_tissue - pres_respiration; -temp2 = temp_tissue - pres_tissue_limit[ci]; // changed in v.102 -temp2 = temp1/temp2; -temp2 = temp2 * 200; // because of output in (Double-)percentage -if (temp2 < 0) - temp2 = 0; -if (temp2 > 255) - temp2 = 255; -if (temp1 < 0) - char_O_array_gradient_weighted[ci] = 0; -else - char_O_array_gradient_weighted[ci] = (char)temp2; - -} // for -} // calc wo deco 1min - -#if 0 -// -------- -// debug // -// -------- -void debug(void) -{ -for (ci=0;ci<32;ci++) -{ - int_O_tissue_for_debug[ci] = (unsigned int)(pres_tissue[ci] *1000); -} -} // void debug(void) -#endif - -// ---------- -// md hash // -// ---------- -void hash(void) -{ -// init - for (md_i=0;md_i<16;md_i++) - { - md_state[md_i] = 0; - md_cksum[md_i] = 0; - } // for md_i 16 - -_asm - movlw 0x01 - movwf TBLPTRU,0 - movlw 0x06 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i] = md_temp; - } // for md_i 256 -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[127] = md_temp; - for (md_i=0;md_i<127;md_i++) - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - md_pi_subst[md_i+128] = md_temp; - } // for md_i 256 -_asm - TBLRD - movff TABLAT,md_temp -_endasm - md_pi_subst[255] = md_temp; - -_asm - movlw 0x00 - movwf TBLPTRU,0 - movlw 0x00 - movwf TBLPTRH,0 - movlw 0x00 - movwf TBLPTRL,0 -_endasm -// cycle buffers -for (md_pointer=0x0000;md_pointer<0x17f3;md_pointer++) -{ - md_t = 0; - for (md_i=0;md_i<16;md_i++) - { - if(md_pointer == 9) - md_temp = md_cksum[md_i]; - else - { -_asm - TBLRDPOSTINC - movff TABLAT,md_temp -_endasm - } // else - md_buffer[md_i] = md_temp; - md_state[md_i+16] = md_buffer[md_i]; - md_state[md_i+32] = (unsigned char)(md_buffer[md_i] ^ md_state[md_i]); - } // for md_i 16 - - for (md_i=0;md_i<18;md_i++) - { - for (md_j=0;md_j<48;md_j++) - { - md_state[md_j] = (unsigned char)(md_state[md_j] ^ md_pi_subst[md_t]); - md_t = md_state[md_j]; - } // for md_j 48 - md_t = (unsigned char)(md_t+1); - } // for md_i 18 - md_t = md_cksum[15]; - - for (md_i=0;md_i<16;md_i++) - { - md_cksum[md_i] = (unsigned char)(md_cksum[md_i] ^ md_pi_subst[(md_buffer[md_i] ^ md_t)]); - md_t = md_cksum[md_i]; - } // for md_i 16 -} // for md_pointer -} // void hash(void) - -// --------------------- -// clear_CNS_fraction // -// --------------------- -// new in v.101 - -void clear_CNS_fraction(void) -{ - CNS_fraction = 0.0; - char_O_CNS_fraction = 0; -} // void clear_CNS_fraction(void) - - -// -------------------- -// calc_CNS_fraction // -// -------------------- -// new in v.101 -// optimized in v.102 : with new variables char_I_actual_ppO2 and actual_ppO2 - -// Input: char_I_actual_ppO2 -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction -// Uses: acutal_ppO2 - -void calc_CNS_fraction(void) -{ - actual_ppO2 = (float)char_I_actual_ppO2 / 100.0; - - if (char_I_actual_ppO2 < 50) - CNS_fraction = CNS_fraction;// no changes - else if (char_I_actual_ppO2 < 60) - CNS_fraction = 1/(-54000.0 * actual_ppO2 + 54000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 70) - CNS_fraction = 1/(-45000.0 * actual_ppO2 + 48600.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 80) - CNS_fraction = 1/(-36000.0 * actual_ppO2 + 42300.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 90) - CNS_fraction = 1/(-27000.0 * actual_ppO2 + 35100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 110) - CNS_fraction = 1/(-18000.0 * actual_ppO2 + 27000.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 150) - CNS_fraction = 1/(-9000.0 * actual_ppO2 + 17100.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 160) - CNS_fraction = 1/(-22500.0 * actual_ppO2 + 37350.0) + CNS_fraction; - else if (char_I_actual_ppO2 < 165) - 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 - else if (char_I_actual_ppO2 < 170) - CNS_fraction = 0.00102 + CNS_fraction; // example calculation: Sqrt((1.7/1.55)^20)*0.000404 - else if (char_I_actual_ppO2 < 175) - CNS_fraction = 0.00136 + CNS_fraction; - else if (char_I_actual_ppO2 < 180) - CNS_fraction = 0.00180 + CNS_fraction; - else if (char_I_actual_ppO2 < 185) - CNS_fraction = 0.00237 + CNS_fraction; - else if (char_I_actual_ppO2 < 190) - CNS_fraction = 0.00310 + CNS_fraction; - else if (char_I_actual_ppO2 < 195) - CNS_fraction = 0.00401 + CNS_fraction; - else if (char_I_actual_ppO2 < 200) - CNS_fraction = 0.00517 + CNS_fraction; - else if (char_I_actual_ppO2 < 230) - CNS_fraction = 0.0209 + CNS_fraction; - else - CNS_fraction = 0.0482 + CNS_fraction; // value for 2.5 - - if (CNS_fraction > 2.5) - CNS_fraction = 2.5; - if (CNS_fraction < 0.0) - CNS_fraction = 0.0; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -} // void calc_CNS_fraction(void) - -// -------------------------- -// calc_CNS_decrease_15min // -// -------------------------- -// new in v.101 - -// calculates the half time of 90 minutes in 6 steps of 15 min - -// Output: char_O_CNS_fraction -// Uses and Updates: CNS_fraction - -void calc_CNS_decrease_15min(void) -{ - CNS_fraction = 0.890899 * CNS_fraction; - char_O_CNS_fraction = (char)((CNS_fraction + 0.005)* 100.0); -}// calc_CNS_decrease_15min(void) - - -// ------------------ -// calc_percentage // -// ------------------ -// new in v.101 - -// calculates int_I_temp * char_I_temp / 100 -// output is int_I_temp - -void calc_percentage(void) -{ - temp1 = (float)int_I_temp; - temp2 = (float)char_I_temp / 100.0; - temp3 = temp1 * temp2; - int_I_temp = (int)temp3; -} -void push_tissues_to_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue_vault[ci] = pres_tissue[ci]; -} -void pull_tissues_from_vault(void) -{ - for (ci=0;ci<32;ci++) - pres_tissue[ci] = pres_tissue_vault[ci]; -}