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();
-}
-