Mercurial > public > mk2
changeset 60:3691ea95a34d
New deco code 1.10d
author | heinrichsweikamp |
---|---|
date | Thu, 05 Aug 2010 09:49:32 +0200 |
parents | 2ff1b30b1bdf |
children | f254a568e73d |
files | code_part1/OSTC_code_asm_part1/tempcomp.asm code_part1/OSTC_code_c_part2/p2_deco_main.c |
diffstat | 2 files changed, 1220 insertions(+), 574 deletions(-) [+] |
line wrap: on
line diff
--- a/code_part1/OSTC_code_asm_part1/tempcomp.asm Thu Aug 05 09:44:43 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -; 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 <http://www.gnu.org/licenses/>. ; routine for extra temperature compensation ; written by: Matthias Heinrichs, info@heinrichsweikamp.com ; written: 01/12/08 ; last updated: 08/08/31 ; known bugs: ; ToDo: ; routine echoes the "f" command as ready signal ; PC has to send 2 bytes containing the actual temperature in 0.1C ; Byte1: low ; Byte2: high compensate_temperature: bcf uart_compensate_temp ; clear flag bcf PIE1,RCIE ; no interrupt for UART ; -; call set_LEDusb ; LEDusb ON ; -; bcf PIR1,RCIF ; clear flag ; -; ; -; movlw "f" ; send echo ; -; movwf TXREG ; -; call rs232_wait_tx ; wait for UART ; -; ; -; call rs232_get_byte ; low byte ; -; movff RCREG, lo ; -; ; -; call rs232_get_byte ; high byte ; -; movff RCREG, hi ; -; ; -; clrf temperature_correction ; wait for uncompensated temperature value! ; -; WAITMS d'250' ; wait for new temperature ; -; WAITMS d'250' ; -; WAITMS d'250' ; -; WAITMS d'250' ; -; ; -; movff lo,sub_a+0 ; calculate difference ; -; movff hi,sub_a+1 ; -; movff temperature+0, sub_b+0 ; -; movff temperature+1, sub_b+1 ; -; call sub16 ; sub_c = sub_a - sub_b ; -; ; -; movf sub_c+0,W ; -; btfsc neg_flag ; compensate negative? ; -; movlw d'0' ; use zero compensation! ; -; movwf sub_c+0 ; -; ; -; movff sub_c+0,TXREG ; Send answer ; -; ; -; movff sub_c+0,EEDATA ; store low byte only! ; -; movff sub_c+0,temperature_correction ; no reboot required then... ; -; movlw 0x01 ; -; movwf EEADRH ; -; movlw 0x00 ; -; movwf EEADR ; -; call write_eeprom ; stores in internal eeprom ; -; ; -; movlw 0x00 ; -; movwf EEADRH ; reset high address byte ; -; ; -; call clear_LEDusb ; LEDusb OFF ; -; bcf PIR1,RCIF ; clear flag bsf PIE1,RCIE ; enable interrupt for UART goto surfloop_loop ; return to surface loop
--- a/code_part1/OSTC_code_c_part2/p2_deco_main.c Thu Aug 05 09:44:43 2010 +0200 +++ b/code_part1/OSTC_code_c_part2/p2_deco_main.c Thu Aug 05 09:49:32 2010 +0200 @@ -1,15 +1,17 @@ /* - * p2_deco_main.c + * p2_deco_main_c_v108.c * - * Created on: 31.08.2009 - * Author: christian.w @ heinrichsweikamp.com + * Created on: 12.05.2009 + * Author: chsw * + * Changes: debug / plausibiliy output */ //#include <p2_deco_header_c_v102d.h> + // OSTC - diving computer code -// Copyright (C) 2009 HeinrichsWeikamp GbR +// 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 @@ -59,7 +61,9 @@ // 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 +// 03/31/09 v107: integration of FONT Incon24 +// 05/23/10 v109: 5 gas changes & 1 min timer +// 07/13/10 v110: cns vault added // // literature: @@ -100,11 +104,16 @@ // ** 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 @@ -165,7 +174,7 @@ // NDL_at_20mtr - +# define MBAR_REACH_GASCHANGE_AUTO_CHANGE_OFF 150 // *********************** // ** V A R I A B L E S ** @@ -183,50 +192,33 @@ // nullzeit = remaining ground/bottom time for "no deco" // hauptroutine = main -#define WP_FONT_SMALL_HEIGHT 24 -#define WP_FONT_MEDIUM_HEIGHT 32 -#define WP_FONT_LARGE_HEIGHT 58 - -#define oled_rw PORTA,2,0 -#define oled_rs PORTE,0,0 - -#define U8 unsigned char -#define U16 unsigned int - -// IO assembler #pragma udata bank0a=0x060 -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; -// internal C -#pragma udata bank0b=0x081 -volatile U8 wp_txtptr; -volatile unsigned char wp_char; -volatile U8 wp_command; -volatile U16 wp_data_16bit; -volatile U8 wp_data_8bit_one; -volatile U8 wp_data_8bit_two; -volatile U16 wp_start; -volatile U16 wp_end; -volatile U16 wp_i; -volatile U8 wp_black; -// some spare -volatile U8 wp_debug_U8; - -// asm only -#pragma udata bank0c=0x0D0 -#define LENGTH_kf_bank0 48 -volatile unsigned char keep_free_bank0[LENGTH_kf_bank0]; - - -#pragma udata bank1=0x100 -#define LENGTH_kf_bank1 256 -volatile unsigned char keep_free_bank1[LENGTH_kf_bank1]; // used by the assembler code +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: @@ -237,8 +229,9 @@ 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 -// 0x24C + 0x24D noch unbenutzt - + volatile unsigned char char_I_step_is_1min; // 0x24C + + // ... #pragma udata bank2b=0x24E static unsigned char char_O_GF_low_pointer; // 0x24E static unsigned char char_O_actual_pointer; // 0x24F @@ -269,7 +262,9 @@ 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]; + + #pragma udata bank2f=0x2C8 + static unsigned char internal_deco_table[32]; // 0x2C8 static float temp_pres_deco_GF_low; static unsigned int debug_temp; @@ -278,7 +273,9 @@ #pragma udata bank3a=0x300 static char output[32]; // used by the math routines -#pragma udata bank3b=0x380 +#pragma udata bank3b=0x37C +volatile float cns_vault; +#pragma udata bank3c=0x380 volatile float pres_tissue_vault[32]; #pragma udata bank4a=0x400 // internal: @@ -286,6 +283,7 @@ unsigned char x; unsigned int main_i; unsigned int int_temp; + unsigned int int_temp2; unsigned int int_temp_decostatus; static float pres_respiration; static float pres_surface; @@ -316,6 +314,7 @@ 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]; @@ -327,10 +326,14 @@ 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_deco_N2_ratio2; // 0x508 new in v.109 + static unsigned char char_I_deco_He_ratio2; // 0x509 new in v.109 + static unsigned char char_I_deco_N2_ratio3; // 0x50A new in v.109 + static unsigned char char_I_deco_He_ratio3; // 0x50B new in v.109 + static unsigned char char_I_deco_N2_ratio4; // 0x50C new in v.109 + static unsigned char char_I_deco_He_ratio4; // 0x50D new in v.109 + static unsigned char char_I_deco_N2_ratio5; // 0x50E new in v.109 + static unsigned char char_I_deco_He_ratio5; // 0x50F new in v.109 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 @@ -347,7 +350,9 @@ 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: + + + // output: static unsigned int int_O_desaturation_time; // 0x520 static unsigned char char_O_nullzeit; // 0x522 static unsigned char char_O_deco_status; // 0x523 @@ -361,7 +366,10 @@ 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 - + static unsigned char char_I_deco_gas_change2; // 0x567 new in v.109 + static unsigned char char_I_deco_gas_change3; // 0x568 new in v.109 + static unsigned char char_I_deco_gas_change4; // 0x569 new in v.109 + static unsigned char char_I_deco_gas_change5; // 0x56A new in v.109 // internal: static float pres_tissue_limit[16]; static float sim_pres_tissue_limit[16]; @@ -378,8 +386,8 @@ 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 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]; @@ -411,7 +419,7 @@ 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: + // 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 @@ -434,6 +442,21 @@ static int int_dbg_i; // new in v.108 unsigned int temp_DBS; + static float deco_gas_change2; // new in v.109 + static float deco_gas_change3; // new in v.109 + static float deco_gas_change4; // new in v.109 + static float deco_gas_change5; // new in v.109 + + static float deco_N2_ratio2; // new in v.109 + static float deco_N2_ratio3; // new in v.109 + static float deco_N2_ratio4; // new in v.109 + static float deco_N2_ratio5; // new in v.109 + static float deco_He_ratio2; // new in v.109 + static float deco_He_ratio3; // new in v.109 + static float deco_He_ratio4; // new in v.109 + static float deco_He_ratio5; // new in v.109 + + // ************************* // ** P R O T O T Y P E S ** // ************************* @@ -465,6 +488,7 @@ 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); @@ -475,24 +499,24 @@ 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); -void DD2_set_column(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); -void DD2_print_column(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); -void wordprocessor(void); // ******************************* // ** start ** @@ -515,29 +539,10 @@ #pragma code main = 0x9000 void main(void) { - for(wp_temp_U8=0;wp_temp_U8<LENGTH_kf_bank0 - 1;wp_temp_U8++) - keep_free_bank0[wp_temp_U8] = 7; - keep_free_bank0[LENGTH_kf_bank0 - 1] = 7; - - for(wp_temp_U8=0;wp_temp_U8<LENGTH_kf_bank1 - 1;wp_temp_U8++) - keep_free_bank1[wp_temp_U8] = 7; - keep_free_bank1[LENGTH_kf_bank1 - 1] = 7; - #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] = ' '; -wp_stringstore[2] = '1'; -wp_stringstore[3] = ':'; -wp_stringstore[4] = 0; -wordprocessor(); +char_I_deco_model = 0; GF_low = 1.0; GF_high = 1.0; @@ -556,19 +561,27 @@ 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_N2_ratio = 79; //38; +char_I_He_ratio = 0; //50; +char_I_deco_distance = 10; // 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_gas_change = 20; // [m] 1 = 1 meter +char_I_deco_N2_ratio = 50; char_I_deco_He_ratio = 0; +char_I_deco_gas_change2 = 6; // [m] 1 = 1 meter +char_I_deco_N2_ratio2 = 0; +char_I_deco_He_ratio2 = 0; + +char_I_deco_gas_change3 = 0; // [m] 1 = 1 meter +char_I_deco_gas_change4 = 0; // [m] 1 = 1 meter +char_I_deco_gas_change5 = 0; // [m] 1 = 1 meter + //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 @@ -576,22 +589,24 @@ 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_I_step_is_1min = 1; +int_I_pres_respiration = 4500 + int_I_pres_surface; + +for (main_i=0;main_i<29;main_i++) +{ +main_calc_hauptroutine(); +} + +char_I_step_is_1min = 0; +char_O_deco_status = 255; +while (char_O_deco_status) + main_calc_hauptroutine(); +_asm +nop +_endasm char_O_deco_status = 255; while (char_O_deco_status) @@ -600,10 +615,6 @@ 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++) { @@ -723,50 +734,6 @@ // ****************************************************** // ****************************************************** -// *************** -// *************** -// ** THE FONTS ** -// *************** -// *************** -// all new for bigscreen - -#pragma romdata font_data_large = 0x09A00 -rom const rom U16 wp_large_data[] = -{ -#include "ostc90.drx.txt" // length 0x59A -}; - -#pragma romdata font_table_large = 0x09FA0 -rom const rom U16 wp_large_table[] = -{ -#include "ostc90.tbl.txt" // length 0x18 -}; - -#pragma romdata font_table_medium = 0x0A000 -rom const rom U16 wp_medium_table[] = -{ -#include "ostc48.tbl.txt" // length 0x22 -}; - -#pragma romdata font_data_medium = 0x0A024 -rom const rom U16 wp_medium_data[] = -{ -#include "ostc48.drx.txt" // length 0x374 // geht bis einschl. 0xA398 -}; - -#pragma romdata font_table_small = 0x0A39A -rom const rom U16 wp_small_table[] = -{ -#include "ostc28.tbl.txt" // length 0xE8 -}; - -#pragma romdata font_data_small = 0x0A484 -rom const rom U16 wp_small_data[] = -{ -#include "ostc28.drx.txt" -}; - - // *********************** // *********************** // ** THE SUBROUTINES 2 ** @@ -1181,52 +1148,926 @@ } } // temp_tissue_safety -// ----------- -// dd2 OLD // -// ----------- -void DD2_write(void) -{ - _asm - nop - _endasm -} +// --------------------- +// dd2_write_incon42 // +// --------------------- void DD2_write_incon42(void) { - DD2_write(); +//dd2_fontwidth = 21; +//dd2_fontheight = 30; +dd2_fontwidth = 19; +dd2_fontheight = 28; +dd2_base = 0x0F500; +dd2_start = '0'; +dd2_end = '9'; +DD2_write(); } +// --------------------- +// dd2_write_incon24 // +// --------------------- void DD2_write_incon24(void) { - DD2_write(); +dd2_fontwidth = 12; +dd2_fontheight = 16; +dd2_base = 0x0E100; +dd2_start = '.'; +dd2_end = '9' + 5; +DD2_write(); } -void DD2_get_pointer_to_char(void) + + +void DD2_write(void) { - DD2_write(); -} -void DD2_set_column(void) + dd2_i = 0; +_asm + movff dd2_i, POSTINC2 // write 0x00 at the end of dd2_strinstore[] + bsf oled_rs +_endasm + dd2_stringstore[16] = 0; // safety if more than 16 letters (max at font incon16) are written, the other space is used by font remap + if (dd2_top == 0) dd2_top = 1; + if (dd2_left == 0) dd2_left = 1; + if (dd2_heightmax > 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) { - DD2_write(); + 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_load_background(void) +} // void dd2_write(void) + +void DD2_get_pointer_to_char(void)//dd2_char, &dd2_pointer); { - DD2_write(); -} -void DD2_build_one_line_of_char(void) + 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); { - DD2_write(); -} -void DD2_print_column(void) + 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); { - DD2_write(); -} +_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) { - DD2_write(); +_asm + bcf oled_rs +_endasm + DD2_DataWrite(); } + void DD2_DataWrite(void) { - DD2_write(); +_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 // ********************** // ********************** @@ -1234,59 +2075,57 @@ // ** for the asm code ** // ********************** // ********************** -#pragma code main_calc_hauptroutine = 0x10000 -void main_calc_hauptroutine(void) // length 0x0A +#pragma code main_calc_hauptroutine = 0x10000 +void main_calc_hauptroutine(void) { calc_hauptroutine(); int_O_desaturation_time = 65535; } // divemode - -#pragma code main_without_deco = 0x1000C // length 0x06 +#pragma code main_without_deco = 0x10020 void main_calc_without_deco(void) { calc_without_deco(); calc_desaturation_time(); } - -#pragma code main_clear_CNS_fraction = 0x10016 +#pragma code main_clear_CNS_fraction = 0x10030 void main_clear_CNS_fraction(void) { clear_CNS_fraction(); } -#pragma code main_calc_CNS_decrease_15min = 0x1001C -void main_calc_CNS_decrease_15min(void) // length 0x06 +#pragma code main_calc_CNS_decrease_15min = 0x10034 +void main_calc_CNS_decrease_15min(void) { calc_CNS_decrease_15min(); } -#pragma code main_calc_percentage = 0x10022 -void main_calc_percentage(void) +#pragma code main_calc_percentage = 0x10038 +void main_calc_percentage (void) { calc_percentage(); } -#pragma code main_clear_tissue = 0x10028 +#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 = 0x10032 +#pragma code main_calc_CNS_fraction = 0x10050 void main_calc_CNS_fraction(void) { calc_CNS_fraction(); } -#pragma code main_calc_desaturation_time = 0x10038 +#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 = 0x1003E +#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(); @@ -1294,42 +2133,45 @@ calc_desaturation_time(); } // surface mode -#pragma code main_wordprocessor = 0x1004E -void main_wordprocessor(void) +#pragma code main_debug = 0x100A0 +void main_debug(void) +{ +//debug(); +} + +#pragma code main_DD2_write_incon42 = 0x100B0 +void main_DD2_write_incon42(void) { - wordprocessor(); + DD2_write_incon42(); } -#pragma code main_gradient_array = 0x10054 +#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(); +calc_gradient_array_only(); } - -#pragma code main_push_tissues = 0x1005A +#pragma code main_push_tissues = 0x100C4 void main_push_tissues_to_vault(void) { push_tissues_to_vault(); } - -#pragma code main_pull_tissues = 0x10060 +#pragma code main_pull_tissues = 0x100C8 void main_pull_tissues_from_vault(void) { pull_tissues_from_vault(); } -#pragma code main_hash = 0x10066 +#pragma code main_hash = 0x100E0 void main_hash(void) { hash(); } -/* -#pragma code main_debug = 0x1004E -void main_debug(void) -{ -// debug(); -} -*/ // *********************** // *********************** @@ -1338,7 +2180,7 @@ // *********************** #pragma romdata tables = 0x10200 -#include <p2_tables.romdata> // new table for deco_main_v.101 (var_a modified) +#include "p2_tables.romdata" // new table for deco_main_v.101 (var_a modified) #pragma romdata tables2 = 0x10600 rom const rom unsigned int md_pi[] = @@ -1562,14 +2404,75 @@ 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; + deco_N2_ratio2 = (float)char_I_deco_N2_ratio2 / 100.0; + deco_He_ratio2 = (float)char_I_deco_He_ratio2 / 100.0; + deco_N2_ratio3 = (float)char_I_deco_N2_ratio3 / 100.0; + deco_He_ratio3 = (float)char_I_deco_He_ratio3 / 100.0; + deco_N2_ratio4 = (float)char_I_deco_N2_ratio4 / 100.0; + deco_He_ratio4 = (float)char_I_deco_He_ratio4 / 100.0; + deco_N2_ratio5 = (float)char_I_deco_N2_ratio5 / 100.0; + deco_He_ratio5 = (float)char_I_deco_He_ratio5 / 100.0; float_deco_distance = (float)char_I_deco_distance / 100.0; + +// ____________________________________________________ +// +// _____________ G A S _ C H A N G E S ________________ +// ____________________________________________________ + +int_temp = (int_I_pres_respiration - int_I_pres_surface) + MBAR_REACH_GASCHANGE_AUTO_CHANGE_OFF; + + deco_gas_change = 0; + deco_gas_change2 = 0; + deco_gas_change3 = 0; + deco_gas_change4 = 0; + deco_gas_change5 = 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; + int_temp2 = ((int)char_I_deco_gas_change) * 100; + if(int_temp > int_temp2) + { + deco_gas_change = (float)char_I_deco_gas_change / 9.995 + pres_surface; + deco_gas_change += float_deco_distance; + } + } + if(char_I_deco_gas_change2) + { + int_temp2 = ((int)char_I_deco_gas_change2) * 100; + if(int_temp > int_temp2) + { + deco_gas_change2 = (float)char_I_deco_gas_change2 / 9.995 + pres_surface; + deco_gas_change2 += float_deco_distance; + } } - else - deco_gas_change = 0; + if(char_I_deco_gas_change3) + { + int_temp2 = ((int)char_I_deco_gas_change3) * 100; + if(int_temp > int_temp2) + { + deco_gas_change3 = (float)char_I_deco_gas_change3 / 9.995 + pres_surface; + deco_gas_change3 += float_deco_distance; + } + } + if(char_I_deco_gas_change4) + { + int_temp2 = ((int)char_I_deco_gas_change4) * 100; + if(int_temp > int_temp2) + { + deco_gas_change4 = (float)char_I_deco_gas_change4 / 9.995 + pres_surface; + deco_gas_change4 += float_deco_distance; + } + } + if(char_I_deco_gas_change5) + { + int_temp2 = ((int)char_I_deco_gas_change5) * 100; + if(int_temp > int_temp2) + { + deco_gas_change5 = (float)char_I_deco_gas_change5 / 9.995 + pres_surface; + deco_gas_change5 += 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; @@ -1613,7 +2516,12 @@ char_O_diluent = 0; } temp_surface = pres_surface; - calc_tissue(); + + if(!char_I_step_is_1min) + calc_tissue(); + else + calc_tissue_step_1_min(); + 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) @@ -1638,24 +2546,41 @@ calc_nextdecodepth_GF(); if (temp_depth_limit > 0) { - if (char_I_const_ppO2 == 0) // new in v.101 + calc_N2_ratio = N2_ratio; + calc_He_ratio = He_ratio; + + 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; - } + + if(deco_gas_change && (temp_deco < deco_gas_change)) + { + calc_N2_ratio = deco_N2_ratio; + calc_He_ratio = deco_He_ratio; + } + if(deco_gas_change2 && (temp_deco < deco_gas_change2)) + { + calc_N2_ratio = deco_N2_ratio2; + calc_He_ratio = deco_He_ratio2; + } + if(deco_gas_change3 && (temp_deco < deco_gas_change3)) + { + calc_N2_ratio = deco_N2_ratio3; + calc_He_ratio = deco_He_ratio3; + } + if(deco_gas_change4 && (temp_deco < deco_gas_change4)) + { + calc_N2_ratio = deco_N2_ratio4; + calc_He_ratio = deco_He_ratio4; + } + if(deco_gas_change5 && (temp_deco < deco_gas_change5)) + { + calc_N2_ratio = deco_N2_ratio5; + calc_He_ratio = deco_He_ratio5; + } } 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 @@ -1719,31 +2644,51 @@ { 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 + temp_deco += 0.5; + + calc_N2_ratio = N2_ratio; + calc_He_ratio = He_ratio; + + 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 - { + deco_diluent = temp_deco; // new in v.101 + + if(deco_gas_change && (temp_deco < deco_gas_change)) + { calc_N2_ratio = deco_N2_ratio; calc_He_ratio = deco_He_ratio; } + if(deco_gas_change2 && (temp_deco < deco_gas_change2)) + { + calc_N2_ratio = deco_N2_ratio2; + calc_He_ratio = deco_He_ratio2; + } + if(deco_gas_change3 && (temp_deco < deco_gas_change3)) + { + calc_N2_ratio = deco_N2_ratio3; + calc_He_ratio = deco_He_ratio3; + } + if(deco_gas_change4 && (temp_deco < deco_gas_change4)) + { + calc_N2_ratio = deco_N2_ratio4; + calc_He_ratio = deco_He_ratio4; + } + if(deco_gas_change5 && (temp_deco < deco_gas_change5)) + { + calc_N2_ratio = deco_N2_ratio5; + calc_He_ratio = deco_He_ratio5; + } } 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 + if (temp_deco > deco_ppO2_change) + deco_diluent = ((temp_deco - 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 + deco_diluent = ((temp_deco - deco_ppO2)/(N2_ratio + He_ratio)); // new in v.101 // calculate at half of the ascent + if (deco_diluent > (temp_deco)) // new in v.101 + deco_diluent = temp_deco; // new in v.101 // calculate at half of the ascent } + temp_deco -= 0.5; if (deco_diluent > 0.0627) // new in v.101 { temp_atem = calc_N2_ratio * (deco_diluent - 0.0627); // changed in v.101 @@ -2707,27 +3652,29 @@ 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; - + if(!char_I_step_is_1min) + { + // 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 @@ -2763,7 +3710,7 @@ movwf TBLPTRH,0 movlw 0x00 movwf TBLPTRL,0 -_endasm +_endasm; for (md_i=0;md_i<127;md_i++) { _asm @@ -2775,7 +3722,7 @@ _asm TBLRDPOSTINC movff TABLAT,md_temp -_endasm +_endasm; md_pi_subst[127] = md_temp; for (md_i=0;md_i<127;md_i++) { @@ -2943,269 +3890,14 @@ } void push_tissues_to_vault(void) { + cns_vault = CNS_fraction; for (ci=0;ci<32;ci++) pres_tissue_vault[ci] = pres_tissue[ci]; } void pull_tissues_from_vault(void) { + CNS_fraction = cns_vault; for (ci=0;ci<32;ci++) pres_tissue[ci] = pres_tissue_vault[ci]; } -void wp_write_command(void) -{ -_asm - bcf oled_rs - nop - movff wp_command,PORTD - bcf oled_rw - nop - 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 - nop - movff wp_data_8bit_one,PORTD - bcf oled_rw - nop - bsf oled_rw - nop - movff wp_data_8bit_two,PORTD - nop - bcf oled_rw - nop - bsf oled_rw -_endasm -} - -void wp_write_black(void) -{ -_asm - movff wp_black,PORTD - bcf oled_rw - nop - bsf oled_rw - nop - bcf oled_rw - nop - bsf oled_rw -_endasm -} - -void wp_write_color(void) -{ -_asm - movff wp_color1,PORTD - bcf oled_rw - nop - bsf oled_rw - nop - movff wp_color2,PORTD - bcf oled_rw - nop - 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 == 2) - wp_data_16bit += WP_FONT_LARGE_HEIGHT; - else if(wp_font == 1) - wp_data_16bit += WP_FONT_MEDIUM_HEIGHT; - else - 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 == ' ') - wp_char = '¶'; - - if (wp_char > 0x7E) // skip space between ~ and ¡ - wp_char -= 34; - - if((wp_char < '!') || (wp_char > 0xA1)) // font has 34 chars after ~ // ¾ + 4 chars limit to end of battery at the moment - wp_char = 0x82; // ¤ - - wp_start = wp_small_table[wp_char - '!']; - wp_end = wp_small_table[1 + wp_char - '!']; -} - -void wp_set_char_font_medium(void) -{ - // space is 3E - 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 = 0x3E; - - if((wp_char < '.') || (wp_char > 0x3E)) - wp_char = 0x3E; - wp_start = wp_medium_table[wp_char - '.']; - wp_end = wp_medium_table[1 + wp_char - '.']; -} - -void wp_set_char_font_large(void) -{ - // space is / = 0x2F - if (wp_char == ' ') - wp_char = 0x2F; - - if((wp_char < '.') || (wp_char > '9')) - wp_char = 0x2F; - wp_start = wp_large_table[wp_char - '.']; - wp_end = wp_large_table[1 + wp_char - '.']; -} - -void wordprocessor(void) -{ - wp_set_window(); - - // access to GRAM - wp_command = 0x22; - wp_write_command(); - _asm - bsf oled_rs - nop - _endasm - - wp_txtptr = 0; - wp_char = wp_stringstore[wp_txtptr]; - - while(wp_char) - { - if(wp_font == 2) - wp_set_char_font_large(); - else if(wp_font == 1) - wp_set_char_font_medium(); - else - wp_set_char_font_small(); - - wp_black = 0; - - for(wp_i = wp_start; wp_i<wp_end;wp_i++) - { - if(wp_font == 2) - wp_data_16bit = wp_large_data[wp_i / 2]; - else if(wp_font == 1) - wp_data_16bit = wp_medium_data[wp_i / 2]; - else - wp_data_16bit = wp_small_data[wp_i / 2]; - if(wp_i & 1) - wp_temp_U8 = wp_data_16bit & 0xFF; - else - wp_temp_U8 = wp_data_16bit >> 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 - while(wp_temp_U8 > 0) - { - wp_temp_U8--; - _asm - bcf oled_rw - nop - bsf oled_rw - nop - bcf oled_rw - nop - bsf oled_rw - _endasm - } - } - } - else - { - wp_temp_U8++; - if(wp_invert) - { - _asm - movff wp_black,PORTD - _endasm - while(wp_temp_U8 > 0) - { - wp_temp_U8--; - _asm - bcf oled_rw - nop - bsf oled_rw - nop - bcf oled_rw - nop - 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(); -} -