changeset 633:690c48db7b5b

3.09 beta 2 release
author heinrichsweikamp
date Thu, 05 Mar 2020 15:06:14 +0100
parents 0347acdf6d8e
children 4050675965ea
files src/Docu/Performance-Measurement.txt src/Fonts/aa_font48.inc src/Fonts/aa_font48_idx.inc src/Fonts/c48_aa.png src/configuration.inc src/external_flash.asm src/start.asm src/tft_outputs.asm
diffstat 8 files changed, 340 insertions(+), 323 deletions(-) [+]
line wrap: on
line diff
--- a/src/Docu/Performance-Measurement.txt	Sat Feb 29 16:57:45 2020 +0100
+++ b/src/Docu/Performance-Measurement.txt	Thu Mar 05 15:06:14 2020 +0100
@@ -1,4 +1,3 @@
-
 Performance Measurement
 -----------------------
 
@@ -7,7 +6,7 @@
 AAAA.BBB.CC.DD.EE
 
 AAAA: Relative runtime of the last deco engine invocation, in ms,
-      signed value: positive numbers: longer than target
+      signed value: positive numbers: overrun on target runtime
                     negative numbers: unused time budget
 
 BBB:  longest runtime found, in ms
@@ -16,25 +15,23 @@
 
 DD:   Number of deco engine invocations required to complete the last normal plan
 
-EE:   as above, but for alternative plan
+EE:   as above, but for alternative plan (cave return or CCR bailout or OC fTTS plan)
 
 
 Calculation Phases
 ------------------------------------------------------------------------------------------------------
 
-PHASE_00_DONE					00	calculation cycle finished
-PHASE_10_DIVE_INIT				10	once-per-dive    initialization of the deco engine
-PHASE_11_CYCLIC_INIT			11	once-every-cycle initialization of the deco engine
-PHASE_20_EXTENDED_BOTTOM_TIME	20	calculate extended bottom time
-PHASE_30_NDL_TIME				30	calculate NDL time
-PHASE_40_CAVE_ASCENT			40	calculate cave mode return/ascent
-PHASE_50_INITIAL_ASCENT			50	calculate initial ascent
-PHASE_60_DECO_STOPS				60	calculate deco stops
-PHASE_70_RESULTS				70	results - initialization
-PHASE_71_RESULTS_STOPS_TABLE	71	results - publish stops table
-PHASE_72_RESULTS_NDL			72	results - publish data / within NDL
-PHASE_73_RESULTS_DECO			73	results - publish data / in deco
-PHASE_80_GAS_NEEDS_SWITCHES		80	calculate gas needs - find gas switches in NDL bailout mode
-PHASE_81_GAS_NEEDS_ASCENT		81	calculate gas needs - needs of bottom segment and ascent
-PHASE_82_GAS_NEEDS_PRESSURES	82	calculate gas needs - conversion from volumes to pressures
-PHASE_90_FINISH					90	finish calculation cycle
\ No newline at end of file
+PHASE_00_DONE					0x00	// calculation cycle finished
+PHASE_10_DIVE_INIT				0x10	// once-per-dive    initialization of the deco engine
+PHASE_20_CYCLIC_INIT			0x20	// once-every-cycle initialization of the deco engine
+PHASE_30_EXTENDED_BOTTOM_TIME	0x30	// calculate extended bottom time
+PHASE_40_BOTTOM_GAS_NEED		0x40	// calculate gas needs for bottom segment
+PHASE_50_NDL_TIME				0x50	// calculate NDL time
+PHASE_70_ASCENT					0x70	// calculate ascent
+PHASE_80_RESULTS				0x80	// results - initialization
+PHASE_81_RESULTS_STOPS_TABLE	0x81	// results - publish stops table
+PHASE_82_RESULTS_NDL			0x82	// results - publish data / within NDL
+PHASE_83_RESULTS_DECO			0x83	// results - publish data / in deco
+PHASE_84_GAS_NEEDS_PRESSURES	0x84	// results - convert gas needs from volumes to pressures
+PHASE_85_GAS_NEEDS_CAVE			0x85	// results - tag gas needs as calculated in cave or open water mode
+PHASE_90_FINISH					0x90	// finish calculation cycle
--- a/src/Fonts/aa_font48.inc	Sat Feb 29 16:57:45 2020 +0100
+++ b/src/Fonts/aa_font48.inc	Thu Mar 05 15:06:14 2020 +0100
@@ -1,266 +1,263 @@
 ;==========================================================================
-; Font data exported ven. janv. 13 2012 by FontIO.cpp 110 2011-06-07 11:26:40Z gascuel $ 
+; Font data exported So Nov 24 2019 by FontIO.cpp,
+; v 43ff8ad28dae 2018/04/17 16:52:12 jDG   combined next generation V3.08.3
 ;==========================================================================
-aa_font48_height	EQU	.32
-aa_font48_width		EQU	.24
-aa_font48_nbbits	EQU	.3
+aa_font48_height  EQU   .32
+aa_font48_width   EQU   .24
+aa_font48_nbbits  EQU   .3
 ;
 aa_font48_bits:
-; . dot
-			DB 0xD9, 0x40, 0x21, 0x40, 0x9A, 0x40, 0x03, 0x40
-			DB 0x98, 0x60, 0x05, 0x60, 0x97, 0x40, 0x05, 0x40
-			DB 0x97, 0x40, 0x05, 0x40, 0x98, 0x05, 0x99, 0x60
-			DB 0x20, 0x01, 0x20, 0x60, 0x9B, 0x61, 0xC2
-; / slash
-			DB 0xFF, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF
-; 0 0
-			DB 0xEB, 0x60, 0x40, 0x21, 0x03, 0x22, 0x40, 0x60
-			DB 0x8F, 0x60, 0x40, 0x0E, 0x40, 0x8C, 0x40, 0x12
-			DB 0x60, 0x89, 0x40, 0x14, 0x60, 0x87, 0x40, 0x03
-			DB 0x20, 0x40, 0x61, 0x85, 0x61, 0x40, 0x20, 0x04
-			DB 0x86, 0x60, 0x02, 0x20, 0x60, 0x8D, 0x60, 0x20
-			DB 0x02, 0x40, 0x85, 0x40, 0x01, 0x20, 0x91, 0x20
-			DB 0x01, 0x20, 0x85, 0x20, 0x01, 0x60, 0x91, 0x60
-			DB 0x01, 0x20, 0x85, 0x02, 0x93, 0x02, 0x85, 0x02
-			DB 0x93, 0x02, 0x85, 0x20, 0x01, 0x60, 0x91, 0x60
-			DB 0x01, 0x20, 0x85, 0x20, 0x01, 0x20, 0x91, 0x20
-			DB 0x01, 0x40, 0x85, 0x40, 0x02, 0x20, 0x60, 0x8D
-			DB 0x60, 0x20, 0x02, 0x87, 0x20, 0x03, 0x20, 0x40
-			DB 0x61, 0x85, 0x61, 0x40, 0x20, 0x03, 0x40, 0x87
-			DB 0x60, 0x14, 0x40, 0x89, 0x60, 0x12, 0x40, 0x8C
-			DB 0x40, 0x0E, 0x40, 0x60, 0x8F, 0x60, 0x40, 0x22
-			DB 0x03, 0x21, 0x40, 0x60, 0xE7
-; 1 1
-			DB 0xFF, 0x86, 0x40, 0x21, 0x40, 0x8F, 0x60, 0x02
-			DB 0x87, 0x20, 0x01, 0x20, 0x8F, 0x60, 0x02, 0x87
-			DB 0x02, 0x40, 0x8F, 0x60, 0x02, 0x86, 0x40, 0x02
-			DB 0x90, 0x60, 0x02, 0x86, 0x20, 0x01, 0x40, 0x90
-			DB 0x60, 0x02, 0x85, 0x60, 0x02, 0x60, 0x90, 0x60
-			DB 0x02, 0x85, 0x40, 0x01, 0x20, 0x91, 0x60, 0x02
-			DB 0x85, 0x20, 0x18, 0x85, 0x19, 0x85, 0x19, 0x85
-			DB 0x36, 0x02, 0x9B, 0x60, 0x02, 0x9B, 0x60, 0x02
-			DB 0x9B, 0x60, 0x02, 0x9B, 0x60, 0x02, 0x9B, 0x60
-			DB 0x02, 0x9B, 0x60, 0x02, 0xE0
-; 2 2
-			DB 0xDB, 0x62, 0x86, 0x60, 0x20, 0x40, 0x60, 0x90
-			DB 0x40, 0x02, 0x86, 0x40, 0x01, 0x20, 0x8F, 0x40
-			DB 0x03, 0x86, 0x02, 0x60, 0x8E, 0x40, 0x04, 0x85
-			DB 0x40, 0x01, 0x20, 0x8E, 0x40, 0x05, 0x85, 0x40
-			DB 0x01, 0x40, 0x8D, 0x40, 0x06, 0x85, 0x20, 0x01
-			DB 0x60, 0x8C, 0x40, 0x02, 0x20, 0x40, 0x02, 0x85
-			DB 0x02, 0x60, 0x8B, 0x40, 0x02, 0x20, 0x80, 0x40
-			DB 0x02, 0x85, 0x02, 0x60, 0x8A, 0x40, 0x02, 0x20
-			DB 0x81, 0x40, 0x02, 0x85, 0x02, 0x40, 0x89, 0x40
-			DB 0x03, 0x82, 0x40, 0x02, 0x85, 0x20, 0x01, 0x20
-			DB 0x88, 0x40, 0x03, 0x60, 0x82, 0x40, 0x02, 0x85
-			DB 0x40, 0x02, 0x40, 0x86, 0x20, 0x03, 0x60, 0x83
-			DB 0x40, 0x02, 0x85, 0x60, 0x03, 0x20, 0x60, 0x81
-			DB 0x60, 0x40, 0x04, 0x60, 0x84, 0x40, 0x02, 0x86
-			DB 0x20, 0x0C, 0x60, 0x85, 0x40, 0x02, 0x87, 0x0A
-			DB 0x20, 0x87, 0x40, 0x02, 0x88, 0x20, 0x07, 0x40
-			DB 0x88, 0x40, 0x02, 0x89, 0x40, 0x21, 0x01, 0x20
-			DB 0x40, 0x8A, 0x40, 0x02, 0x9B, 0x40, 0x02, 0xFF
-			DB 0x80
-; 3 3
-			DB 0xFA, 0x61, 0x40, 0x60, 0x86, 0x63, 0x90, 0x20
-			DB 0x01, 0x40, 0x86, 0x02, 0x60, 0x85, 0x42, 0x60
-			DB 0x86, 0x40, 0x01, 0x20, 0x85, 0x60, 0x01, 0x20
-			DB 0x86, 0x20, 0x01, 0x87, 0x60, 0x01, 0x20, 0x85
-			DB 0x40, 0x01, 0x40, 0x86, 0x20, 0x01, 0x88, 0x02
-			DB 0x85, 0x20, 0x01, 0x60, 0x86, 0x20, 0x01, 0x88
-			DB 0x02, 0x85, 0x20, 0x01, 0x87, 0x20, 0x01, 0x88
-			DB 0x02, 0x85, 0x02, 0x87, 0x02, 0x88, 0x01, 0x20
-			DB 0x85, 0x02, 0x86, 0x60, 0x02, 0x60, 0x86, 0x60
-			DB 0x01, 0x20, 0x85, 0x02, 0x60, 0x85, 0x40, 0x02
-			DB 0x60, 0x86, 0x40, 0x01, 0x40, 0x85, 0x20, 0x01
-			DB 0x40, 0x85, 0x20, 0x02, 0x20, 0x86, 0x20, 0x01
-			DB 0x40, 0x85, 0x40, 0x01, 0x20, 0x84, 0x40, 0x04
-			DB 0x40, 0x84, 0x40, 0x02, 0x86, 0x60, 0x02, 0x20
-			DB 0x60, 0x81, 0x40, 0x01, 0x40, 0x20, 0x02, 0x40
-			DB 0x81, 0x60, 0x40, 0x02, 0x40, 0x87, 0x20, 0x08
-			DB 0x60, 0x40, 0x0A, 0x88, 0x60, 0x07, 0x40, 0x81
-			DB 0x20, 0x08, 0x60, 0x89, 0x40, 0x05, 0x40, 0x83
-			DB 0x20, 0x06, 0x60, 0x8C, 0x40, 0x21, 0x40, 0x60
-			DB 0x85, 0x40, 0x20, 0x01, 0x20, 0x40, 0xFF, 0x85
-; 4 4
-			DB 0xB5, 0x61, 0x9B, 0x60, 0x20, 0x02, 0x99, 0x40
-			DB 0x04, 0x97, 0x60, 0x20, 0x05, 0x96, 0x40, 0x03
-			DB 0x20, 0x02, 0x94, 0x60, 0x20, 0x03, 0x40, 0x60
-			DB 0x02, 0x93, 0x40, 0x03, 0x20, 0x60, 0x80, 0x60
-			DB 0x02, 0x91, 0x60, 0x20, 0x03, 0x40, 0x82, 0x60
-			DB 0x02, 0x90, 0x40, 0x03, 0x20, 0x60, 0x83, 0x60
-			DB 0x02, 0x8E, 0x60, 0x20, 0x03, 0x40, 0x85, 0x60
-			DB 0x02, 0x8D, 0x40, 0x03, 0x20, 0x60, 0x86, 0x60
-			DB 0x02, 0x8B, 0x60, 0x20, 0x03, 0x40, 0x88, 0x60
-			DB 0x02, 0x8B, 0x03, 0x20, 0x60, 0x89, 0x60, 0x02
-			DB 0x8B, 0x03, 0x4C, 0x02, 0x45, 0x85, 0x19, 0x85
-			DB 0x19, 0x85, 0x19, 0x95, 0x60, 0x02, 0x9B, 0x60
-			DB 0x02, 0x9B, 0x60, 0x02, 0x9B, 0x60, 0x02, 0x9B
-			DB 0x60, 0x22, 0xA6
-; 5 5
-			DB 0xFF, 0x84, 0x6C, 0x88, 0x40, 0x21, 0x40, 0x85
-			DB 0x0C, 0x60, 0x87, 0x40, 0x01, 0x20, 0x85, 0x0C
-			DB 0x88, 0x60, 0x01, 0x20, 0x85, 0x0C, 0x88, 0x60
-			DB 0x02, 0x85, 0x02, 0x40, 0x85, 0x20, 0x01, 0x89
-			DB 0x02, 0x85, 0x02, 0x40, 0x85, 0x20, 0x01, 0x89
-			DB 0x02, 0x85, 0x02, 0x40, 0x85, 0x20, 0x01, 0x89
-			DB 0x02, 0x85, 0x02, 0x40, 0x85, 0x20, 0x01, 0x60
-			DB 0x87, 0x60, 0x01, 0x20, 0x85, 0x02, 0x40, 0x85
-			DB 0x40, 0x01, 0x40, 0x87, 0x40, 0x01, 0x40, 0x85
-			DB 0x02, 0x40, 0x85, 0x40, 0x01, 0x20, 0x87, 0x20
-			DB 0x01, 0x40, 0x85, 0x02, 0x40, 0x85, 0x60, 0x02
-			DB 0x40, 0x85, 0x40, 0x02, 0x86, 0x02, 0x40, 0x86
-			DB 0x20, 0x02, 0x40, 0x60, 0x81, 0x60, 0x20, 0x02
-			DB 0x40, 0x86, 0x02, 0x40, 0x86, 0x40, 0x0A, 0x20
-			DB 0x87, 0x02, 0x40, 0x87, 0x20, 0x09, 0x60, 0x87
-			DB 0x02, 0x40, 0x88, 0x20, 0x06, 0x20, 0x60, 0x96
-			DB 0x40, 0x20, 0x01, 0x21, 0x40, 0xFF, 0x85
-; 6 6
-			DB 0xED, 0x41, 0x21, 0x03, 0x20, 0x40, 0x60, 0x91
-			DB 0x60, 0x20, 0x0C, 0x40, 0x8E, 0x20, 0x0F, 0x20
-			DB 0x60, 0x8A, 0x60, 0x20, 0x04, 0x22, 0x09, 0x20
-			DB 0x8A, 0x20, 0x03, 0x40, 0x60, 0x80, 0x40, 0x01
-			DB 0x20, 0x40, 0x81, 0x60, 0x40, 0x20, 0x02, 0x20
-			DB 0x88, 0x20, 0x02, 0x40, 0x82, 0x60, 0x01, 0x20
-			DB 0x86, 0x40, 0x02, 0x60, 0x86, 0x40, 0x02, 0x40
-			DB 0x83, 0x20, 0x01, 0x88, 0x20, 0x01, 0x40, 0x86
-			DB 0x20, 0x01, 0x40, 0x83, 0x60, 0x01, 0x40, 0x88
-			DB 0x60, 0x01, 0x20, 0x85, 0x60, 0x02, 0x84, 0x40
-			DB 0x01, 0x60, 0x89, 0x20, 0x01, 0x85, 0x40, 0x01
-			DB 0x40, 0x84, 0x20, 0x01, 0x8A, 0x20, 0x01, 0x85
-			DB 0x20, 0x01, 0x60, 0x84, 0x20, 0x01, 0x8A, 0x20
-			DB 0x01, 0x85, 0x20, 0x01, 0x60, 0x84, 0x20, 0x01
-			DB 0x60, 0x88, 0x60, 0x01, 0x20, 0x85, 0x02, 0x85
-			DB 0x40, 0x01, 0x20, 0x88, 0x40, 0x01, 0x40, 0x85
-			DB 0x02, 0x85, 0x60, 0x02, 0x40, 0x86, 0x40, 0x02
-			DB 0x60, 0x85, 0x02, 0x86, 0x20, 0x02, 0x20, 0x60
-			DB 0x82, 0x60, 0x20, 0x02, 0x40, 0x86, 0x20, 0x01
-			DB 0x60, 0x85, 0x60, 0x0B, 0x20, 0x87, 0x62, 0x87
-			DB 0x40, 0x09, 0x20, 0x60, 0x93, 0x40, 0x07, 0x40
-			DB 0x97, 0x41, 0x21, 0x41, 0xC6
-; 7 7
-			DB 0xE4, 0x02, 0x40, 0x9B, 0x02, 0x40, 0x9B, 0x02
-			DB 0x40, 0x9B, 0x02, 0x40, 0x9B, 0x02, 0x40, 0x92
-			DB 0x60, 0x40, 0x00, 0x85, 0x02, 0x40, 0x90, 0x40
-			DB 0x20, 0x02, 0x85, 0x02, 0x40, 0x8D, 0x60, 0x40
-			DB 0x05, 0x85, 0x02, 0x40, 0x8B, 0x60, 0x40, 0x07
-			DB 0x85, 0x02, 0x40, 0x89, 0x60, 0x20, 0x07, 0x40
-			DB 0x60, 0x85, 0x02, 0x40, 0x87, 0x60, 0x20, 0x06
-			DB 0x20, 0x40, 0x88, 0x02, 0x40, 0x85, 0x60, 0x20
-			DB 0x06, 0x40, 0x60, 0x8A, 0x02, 0x40, 0x83, 0x60
-			DB 0x40, 0x06, 0x40, 0x8D, 0x02, 0x40, 0x81, 0x60
-			DB 0x40, 0x05, 0x20, 0x40, 0x8F, 0x02, 0x40, 0x80
-			DB 0x40, 0x05, 0x20, 0x40, 0x91, 0x02, 0x20, 0x05
-			DB 0x20, 0x40, 0x93, 0x07, 0x20, 0x40, 0x95, 0x05
-			DB 0x20, 0x40, 0x97, 0x04, 0x40, 0x99, 0x22, 0x40
-			DB 0xD6
-; 8 8
-			DB 0xE8, 0x60, 0x40, 0x21, 0x40, 0x86, 0x60, 0x40
-			DB 0x20, 0x01, 0x40, 0x60, 0x8B, 0x20, 0x05, 0x40
-			DB 0x83, 0x40, 0x06, 0x40, 0x89, 0x20, 0x07, 0x60
-			DB 0x81, 0x60, 0x08, 0x60, 0x87, 0x40, 0x09, 0x81
-			DB 0x03, 0x21, 0x04, 0x86, 0x60, 0x02, 0x40, 0x60
-			DB 0x80, 0x60, 0x20, 0x02, 0x41, 0x01, 0x20, 0x60
-			DB 0x82, 0x40, 0x02, 0x40, 0x85, 0x40, 0x01, 0x20
-			DB 0x84, 0x20, 0x05, 0x60, 0x84, 0x40, 0x01, 0x40
-			DB 0x85, 0x20, 0x01, 0x60, 0x84, 0x60, 0x04, 0x40
-			DB 0x85, 0x60, 0x01, 0x20, 0x85, 0x20, 0x01, 0x86
-			DB 0x40, 0x02, 0x20, 0x87, 0x02, 0x85, 0x01, 0x20
-			DB 0x86, 0x60, 0x02, 0x40, 0x87, 0x20, 0x01, 0x85
-			DB 0x01, 0x20, 0x87, 0x02, 0x40, 0x87, 0x20, 0x01
-			DB 0x85, 0x02, 0x86, 0x40, 0x02, 0x20, 0x87, 0x20
-			DB 0x00, 0x20, 0x85, 0x20, 0x01, 0x60, 0x85, 0x04
-			DB 0x40, 0x85, 0x60, 0x01, 0x20, 0x85, 0x40, 0x01
-			DB 0x20, 0x84, 0x40, 0x01, 0x20, 0x02, 0x85, 0x40
-			DB 0x01, 0x40, 0x85, 0x60, 0x02, 0x40, 0x60, 0x80
-			DB 0x60, 0x40, 0x01, 0x20, 0x60, 0x02, 0x20, 0x60
-			DB 0x82, 0x40, 0x02, 0x60, 0x86, 0x20, 0x08, 0x60
-			DB 0x80, 0x40, 0x03, 0x22, 0x02, 0x40, 0x87, 0x60
-			DB 0x07, 0x40, 0x82, 0x09, 0x89, 0x40, 0x05, 0x40
-			DB 0x83, 0x60, 0x07, 0x60, 0x8A, 0x60, 0x40, 0x21
-			DB 0x40, 0x60, 0x86, 0x40, 0x20, 0x01, 0x20, 0x40
-			DB 0xE4
-; 9 9
-			DB 0xC9, 0x60, 0x40, 0x21, 0x41, 0x60, 0x96, 0x60
-			DB 0x20, 0x06, 0x40, 0x88, 0x63, 0x87, 0x60, 0x09
-			DB 0x20, 0x87, 0x60, 0x01, 0x20, 0x86, 0x60, 0x0B
-			DB 0x40, 0x86, 0x60, 0x02, 0x86, 0x20, 0x02, 0x40
-			DB 0x60, 0x81, 0x60, 0x40, 0x03, 0x60, 0x86, 0x02
-			DB 0x85, 0x60, 0x02, 0x60, 0x85, 0x40, 0x02, 0x40
-			DB 0x86, 0x02, 0x85, 0x40, 0x01, 0x40, 0x87, 0x40
-			DB 0x01, 0x20, 0x86, 0x02, 0x85, 0x20, 0x01, 0x88
-			DB 0x60, 0x02, 0x85, 0x60, 0x01, 0x20, 0x85, 0x01
-			DB 0x20, 0x89, 0x02, 0x85, 0x60, 0x01, 0x20, 0x85
-			DB 0x01, 0x20, 0x89, 0x02, 0x85, 0x40, 0x01, 0x40
-			DB 0x85, 0x01, 0x20, 0x89, 0x01, 0x20, 0x84, 0x60
-			DB 0x02, 0x60, 0x85, 0x20, 0x01, 0x60, 0x87, 0x60
-			DB 0x01, 0x40, 0x84, 0x20, 0x01, 0x20, 0x86, 0x40
-			DB 0x01, 0x40, 0x87, 0x20, 0x01, 0x60, 0x83, 0x40
-			DB 0x02, 0x60, 0x86, 0x40, 0x02, 0x40, 0x85, 0x40
-			DB 0x01, 0x40, 0x82, 0x60, 0x20, 0x02, 0x20, 0x88
-			DB 0x20, 0x02, 0x40, 0x60, 0x81, 0x60, 0x40, 0x01
-			DB 0x20, 0x80, 0x60, 0x40, 0x20, 0x03, 0x20, 0x89
-			DB 0x60, 0x0A, 0x20, 0x06, 0x20, 0x8B, 0x40, 0x10
-			DB 0x40, 0x8D, 0x60, 0x20, 0x0C, 0x40, 0x60, 0x90
-			DB 0x60, 0x40, 0x21, 0x03, 0x21, 0x40, 0x60, 0xE9
-; : colon
-			DB 0xCC, 0x61, 0x8A, 0x61, 0x8F, 0x20, 0x01, 0x20
-			DB 0x60, 0x86, 0x40, 0x02, 0x40, 0x8D, 0x40, 0x03
-			DB 0x20, 0x85, 0x60, 0x04, 0x40, 0x8C, 0x05, 0x60
-			DB 0x84, 0x40, 0x04, 0x20, 0x8C, 0x05, 0x60, 0x84
-			DB 0x40, 0x04, 0x20, 0x8C, 0x40, 0x03, 0x20, 0x86
-			DB 0x04, 0x60, 0x8D, 0x40, 0x01, 0x40, 0x87, 0x60
-			DB 0x20, 0x00, 0x20, 0x60, 0xE2
-; ; semicolon
-			DB 0x8C, 0x61, 0x9D, 0x20, 0x00, 0x40, 0x9B, 0x60
-			DB 0x01, 0x40, 0x93, 0x60, 0x86, 0x20, 0x01, 0x92
-			DB 0x40, 0x01, 0x20, 0x60, 0x83, 0x40, 0x01, 0x40
-			DB 0x91, 0x60, 0x04, 0x40, 0x61, 0x40, 0x02, 0x60
-			DB 0x91, 0x40, 0x0A, 0x40, 0x92, 0x40, 0x09, 0x20
-			DB 0x94, 0x08, 0x20, 0x95, 0x60, 0x20, 0x05, 0x40
-			DB 0x98, 0x60, 0x42, 0x60, 0xB6
-; < less
-			DB 0xAB, 0x60, 0x40, 0x9D, 0x40, 0x00, 0x20, 0x9B
-			DB 0x60, 0x01, 0x40, 0x92, 0x40, 0x20, 0x40, 0x60
-			DB 0x83, 0x60, 0x01, 0x20, 0x92, 0x40, 0x03, 0x40
-			DB 0x60, 0x80, 0x40, 0x02, 0x60, 0x92, 0x0A, 0x40
-			DB 0x93, 0x09, 0x40, 0x94, 0x40, 0x07, 0x40, 0x96
-			DB 0x40, 0x20, 0x03, 0x40, 0x60, 0x99, 0x62, 0xA4
-			DB 0x60, 0x20, 0x60, 0x9C, 0x20, 0x00, 0x20, 0x9B
-			DB 0x40, 0x01, 0x40, 0x92, 0x40, 0x00, 0x20, 0x40
-			DB 0x83, 0x40, 0x01, 0x20, 0x92, 0x40, 0x03, 0x20
-			DB 0x40, 0x60, 0x40, 0x02, 0x60, 0x92, 0x0A, 0x40
-			DB 0x93, 0x20, 0x08, 0x40, 0x94, 0x40, 0x07, 0x60
-			DB 0x96, 0x60, 0x21, 0x00, 0x21, 0x40, 0xFF, 0x96
-; = equal
-			DB 0xCA, 0x13, 0x8B, 0x13, 0x8B, 0x24, 0x0E, 0x8D
-			DB 0x40, 0x01, 0x20, 0x40, 0x60, 0x98, 0x20, 0x01
-			DB 0x60, 0x9A, 0x40, 0x01, 0x60, 0x9B, 0x01, 0x20
-			DB 0x9C, 0x02, 0x40, 0x60, 0x9A, 0x20, 0x12, 0x8C
-			DB 0x20, 0x11, 0x8D, 0x60, 0x40, 0x20, 0x0E, 0x8D
-			DB 0x40, 0x02, 0x40, 0x61, 0x97, 0x40, 0x01, 0x20
-			DB 0x60, 0x99, 0x60, 0x01, 0x40, 0x9B, 0x20, 0x00
-			DB 0x20, 0x9C, 0x01, 0x20, 0x9C, 0x02, 0x40, 0x60
-			DB 0x9A, 0x40, 0x12, 0x8B, 0x60, 0x20, 0x11, 0x8D
-			DB 0x40, 0x21, 0x0E, 0xC0
-; > greater
-			DB 0x8B, 0x01, 0x20, 0x9C, 0x01, 0x20, 0x9C, 0x01
-			DB 0x20, 0x97, 0x64, 0x01, 0x20, 0x6E, 0x85, 0x40
-			DB 0x20, 0x17, 0x83, 0x60, 0x20, 0x19, 0x83, 0x20
-			DB 0x1A, 0x82, 0x40, 0x03, 0x20, 0x44, 0x02, 0x4E
-			DB 0x82, 0x02, 0x20, 0x86, 0x02, 0x90, 0x60, 0x01
-			DB 0x20, 0x87, 0x02, 0x90, 0x60, 0x01, 0x40, 0x87
-			DB 0x02, 0x90, 0x40, 0x01, 0x60, 0x87, 0x02, 0x90
-			DB 0x40, 0x01, 0x60, 0x87, 0x02, 0x90, 0x40, 0x01
-			DB 0x60, 0x80, 0x40, 0x14, 0x20, 0x40, 0x82, 0x60
-			DB 0x01, 0x40, 0x80, 0x40, 0x17, 0x60, 0x80, 0x60
-			DB 0x01, 0x40, 0x80, 0x19, 0x60, 0x80, 0x20, 0x41
-			DB 0x60, 0x26, 0x02, 0x2A, 0x04, 0x40, 0x8B, 0x01
-			DB 0x20, 0x8B, 0x40, 0x03, 0x8B, 0x01, 0x20, 0x8C
-			DB 0x40, 0x02, 0x8B, 0x01, 0x20, 0x8D, 0x02, 0x8B
-			DB 0x01, 0x20, 0x8D, 0x20, 0x01, 0x8B, 0x01, 0x20
-			DB 0x8D, 0x20, 0x01, 0x8B, 0x01, 0x20, 0x8D, 0x20
-			DB 0x01, 0x8B, 0x01, 0x20, 0x8D, 0x02
-; ? question
-			DB 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
-; TOTAL COMPRESSED SIZE = 1859
+; 2C   space, half-width
+    DB 0xFF, 0xFF, 0xFF
+; 2D - minus, half-width
+    DB 0x8C, 0x02, 0x9C, 0x02, 0x9C, 0x02, 0x9C, 0x02
+    DB 0x9C, 0x02, 0x9C, 0x02, 0x9C, 0x02, 0x9C, 0x02
+    DB 0x9C, 0x02, 0x9C, 0x02, 0x9C, 0x02, 0x9C, 0x02
+    DB 0x8F
+; 2E . dot, half-width
+    DB 0xF8, 0x20, 0x04, 0x99, 0x20, 0x04, 0x99, 0x20
+    DB 0x04, 0x99, 0x20, 0x04, 0x99, 0x20, 0x04, 0x99
+    DB 0x40, 0x24, 0xE0
+; 2F | vertical line, half-width
+    DB 0xFF, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF
+; 30 0
+    DB 0xC9, 0x60, 0x41, 0x25, 0x41, 0x60, 0x90, 0x40
+    DB 0x20, 0x0D, 0x20, 0x40, 0x8B, 0x40, 0x13, 0x40
+    DB 0x88, 0x20, 0x15, 0x20, 0x86, 0x20, 0x05, 0x20
+    DB 0x42, 0x63, 0x42, 0x21, 0x04, 0x20, 0x84, 0x20
+    DB 0x03, 0x40, 0x60, 0x8D, 0x60, 0x40, 0x03, 0x20
+    DB 0x82, 0x60, 0x02, 0x20, 0x93, 0x20, 0x02, 0x60
+    DB 0x81, 0x40, 0x01, 0x20, 0x95, 0x20, 0x01, 0x40
+    DB 0x81, 0x02, 0x60, 0x95, 0x60, 0x02, 0x81, 0x02
+    DB 0x97, 0x02, 0x81, 0x02, 0x97, 0x02, 0x81, 0x02
+    DB 0x60, 0x95, 0x60, 0x02, 0x81, 0x40, 0x01, 0x20
+    DB 0x95, 0x20, 0x01, 0x40, 0x81, 0x60, 0x02, 0x40
+    DB 0x93, 0x20, 0x02, 0x60, 0x82, 0x20, 0x02, 0x20
+    DB 0x40, 0x8F, 0x40, 0x20, 0x02, 0x20, 0x84, 0x20
+    DB 0x04, 0x20, 0x41, 0x66, 0x42, 0x20, 0x04, 0x20
+    DB 0x85, 0x60, 0x20, 0x15, 0x20, 0x60, 0x87, 0x40
+    DB 0x13, 0x40, 0x8A, 0x60, 0x40, 0x20, 0x0D, 0x20
+    DB 0x40, 0x60, 0x8E, 0x60, 0x41, 0x27, 0x41, 0x60
+    DB 0xC8
+; 31 1
+    DB 0xE4, 0x42, 0x93, 0x42, 0x84, 0x60, 0x02, 0x93
+    DB 0x02, 0x84, 0x40, 0x01, 0x40, 0x93, 0x02, 0x84
+    DB 0x02, 0x60, 0x93, 0x02, 0x83, 0x60, 0x01, 0x20
+    DB 0x94, 0x02, 0x83, 0x40, 0x01, 0x40, 0x94, 0x02
+    DB 0x83, 0x02, 0x60, 0x94, 0x02, 0x82, 0x60, 0x01
+    DB 0x20, 0x95, 0x02, 0x82, 0x40, 0x01, 0x36, 0x02
+    DB 0x82, 0x1C, 0x81, 0x60, 0x1C, 0x81, 0x40, 0x1C
+    DB 0x81, 0x7A, 0x02, 0x9C, 0x02, 0x9C, 0x02, 0x9C
+    DB 0x02, 0x9C, 0x02, 0x9C, 0x02, 0x9C, 0x02, 0x9C
+    DB 0x22, 0xA0
+; 32 2
+    DB 0xFA, 0x40, 0x22, 0x82, 0x60, 0x01, 0x20, 0x92
+    DB 0x60, 0x20, 0x03, 0x82, 0x20, 0x01, 0x60, 0x91
+    DB 0x20, 0x05, 0x81, 0x60, 0x02, 0x90, 0x60, 0x20
+    DB 0x06, 0x81, 0x40, 0x01, 0x40, 0x8F, 0x40, 0x04
+    DB 0x20, 0x02, 0x81, 0x20, 0x01, 0x60, 0x8E, 0x40
+    DB 0x03, 0x20, 0x60, 0x80, 0x02, 0x81, 0x02, 0x8E
+    DB 0x40, 0x02, 0x20, 0x60, 0x82, 0x02, 0x81, 0x02
+    DB 0x8D, 0x40, 0x02, 0x20, 0x84, 0x02, 0x81, 0x02
+    DB 0x8C, 0x20, 0x02, 0x40, 0x85, 0x02, 0x81, 0x02
+    DB 0x60, 0x8A, 0x20, 0x02, 0x40, 0x86, 0x02, 0x81
+    DB 0x20, 0x01, 0x20, 0x88, 0x60, 0x20, 0x02, 0x40
+    DB 0x87, 0x02, 0x81, 0x40, 0x02, 0x40, 0x86, 0x40
+    DB 0x03, 0x40, 0x88, 0x02, 0x82, 0x03, 0x20, 0x43
+    DB 0x20, 0x04, 0x40, 0x89, 0x02, 0x82, 0x40, 0x0C
+    DB 0x40, 0x8A, 0x02, 0x83, 0x20, 0x09, 0x20, 0x60
+    DB 0x8B, 0x02, 0x84, 0x40, 0x07, 0x40, 0x8D, 0x02
+    DB 0x85, 0x60, 0x40, 0x23, 0x40, 0x8F, 0x42, 0xFF
+    DB 0x80
+; 33 3
+    DB 0xFF, 0x9A, 0x42, 0x83, 0x02, 0x95, 0x20, 0x01
+    DB 0x60, 0x81, 0x40, 0x01, 0x40, 0x95, 0x40, 0x01
+    DB 0x40, 0x81, 0x40, 0x01, 0x40, 0x88, 0x22, 0x89
+    DB 0x40, 0x01, 0x20, 0x81, 0x02, 0x89, 0x02, 0x8A
+    DB 0x02, 0x81, 0x02, 0x89, 0x02, 0x8A, 0x02, 0x81
+    DB 0x02, 0x89, 0x02, 0x8A, 0x02, 0x81, 0x02, 0x88
+    DB 0x40, 0x02, 0x8A, 0x02, 0x81, 0x02, 0x88, 0x40
+    DB 0x02, 0x40, 0x88, 0x60, 0x02, 0x81, 0x02, 0x40
+    DB 0x87, 0x03, 0x20, 0x88, 0x40, 0x01, 0x20, 0x81
+    DB 0x40, 0x02, 0x60, 0x85, 0x20, 0x01, 0x20, 0x01
+    DB 0x60, 0x86, 0x60, 0x02, 0x40, 0x81, 0x40, 0x03
+    DB 0x40, 0x62, 0x40, 0x20, 0x01, 0x41, 0x02, 0x40
+    DB 0x84, 0x40, 0x03, 0x83, 0x20, 0x09, 0x20, 0x81
+    DB 0x04, 0x20, 0x40, 0x21, 0x03, 0x20, 0x83, 0x60
+    DB 0x09, 0x60, 0x81, 0x60, 0x0B, 0x85, 0x60, 0x20
+    DB 0x05, 0x20, 0x60, 0x83, 0x40, 0x09, 0x60, 0x87
+    DB 0x60, 0x43, 0x60, 0x86, 0x60, 0x20, 0x05, 0x40
+    DB 0x60, 0x97, 0x60, 0x42, 0x60, 0xE6
+; 34 4
+    DB 0xD1, 0x60, 0x23, 0x99, 0x40, 0x04, 0x97, 0x60
+    DB 0x20, 0x05, 0x96, 0x40, 0x03, 0x20, 0x02, 0x94
+    DB 0x60, 0x20, 0x03, 0x60, 0x80, 0x02, 0x93, 0x40
+    DB 0x03, 0x40, 0x82, 0x02, 0x91, 0x60, 0x20, 0x02
+    DB 0x20, 0x60, 0x83, 0x02, 0x90, 0x40, 0x03, 0x40
+    DB 0x85, 0x02, 0x8E, 0x60, 0x03, 0x20, 0x60, 0x86
+    DB 0x02, 0x8C, 0x60, 0x20, 0x03, 0x40, 0x88, 0x02
+    DB 0x8B, 0x40, 0x03, 0x20, 0x60, 0x89, 0x02, 0x89
+    DB 0x60, 0x20, 0x03, 0x40, 0x8B, 0x02, 0x89, 0x04
+    DB 0x2D, 0x02, 0x27, 0x81, 0x1D, 0x81, 0x1D, 0x81
+    DB 0x32, 0x02, 0x27, 0x94, 0x02, 0x9C, 0x02, 0x9C
+    DB 0x02, 0x9C, 0x22, 0xC8
+; 35 5
+    DB 0xFF, 0xA0, 0x6D, 0x8B, 0x22, 0x82, 0x0D, 0x8B
+    DB 0x40, 0x01, 0x40, 0x81, 0x0D, 0x8B, 0x40, 0x01
+    DB 0x40, 0x81, 0x0D, 0x8B, 0x60, 0x02, 0x81, 0x02
+    DB 0x67, 0x02, 0x8C, 0x02, 0x81, 0x02, 0x87, 0x02
+    DB 0x60, 0x8B, 0x02, 0x81, 0x02, 0x87, 0x02, 0x40
+    DB 0x8B, 0x02, 0x81, 0x02, 0x87, 0x40, 0x01, 0x20
+    DB 0x8A, 0x40, 0x02, 0x81, 0x02, 0x87, 0x40, 0x02
+    DB 0x60, 0x89, 0x20, 0x01, 0x40, 0x81, 0x02, 0x88
+    DB 0x03, 0x60, 0x86, 0x60, 0x20, 0x02, 0x60, 0x81
+    DB 0x02, 0x88, 0x40, 0x03, 0x40, 0x60, 0x82, 0x60
+    DB 0x40, 0x03, 0x20, 0x82, 0x02, 0x89, 0x20, 0x0D
+    DB 0x60, 0x82, 0x02, 0x89, 0x60, 0x0C, 0x60, 0x83
+    DB 0x02, 0x8A, 0x60, 0x20, 0x08, 0x20, 0x60, 0x84
+    DB 0x42, 0x8C, 0x60, 0x20, 0x04, 0x20, 0x40, 0x9A
+    DB 0x61, 0xE8
+; 36 6
+    DB 0xE9, 0x60, 0x41, 0x26, 0x41, 0x60, 0x8F, 0x60
+    DB 0x40, 0x20, 0x0D, 0x20, 0x40, 0x8B, 0x40, 0x12
+    DB 0x20, 0x60, 0x87, 0x60, 0x20, 0x15, 0x40, 0x85
+    DB 0x60, 0x05, 0x20, 0x41, 0x61, 0x20, 0x03, 0x22
+    DB 0x05, 0x60, 0x83, 0x60, 0x03, 0x20, 0x40, 0x84
+    DB 0x20, 0x01, 0x20, 0x60, 0x84, 0x60, 0x20, 0x03
+    DB 0x83, 0x20, 0x02, 0x40, 0x85, 0x20, 0x01, 0x40
+    DB 0x88, 0x40, 0x02, 0x40, 0x81, 0x60, 0x02, 0x40
+    DB 0x85, 0x60, 0x01, 0x40, 0x8A, 0x20, 0x01, 0x20
+    DB 0x81, 0x40, 0x01, 0x20, 0x86, 0x40, 0x01, 0x60
+    DB 0x8A, 0x60, 0x02, 0x81, 0x02, 0x40, 0x86, 0x02
+    DB 0x8C, 0x02, 0x81, 0x02, 0x87, 0x02, 0x8C, 0x02
+    DB 0x81, 0x02, 0x87, 0x02, 0x60, 0x8A, 0x60, 0x02
+    DB 0x81, 0x02, 0x87, 0x02, 0x20, 0x8A, 0x40, 0x01
+    DB 0x40, 0x81, 0x02, 0x87, 0x40, 0x02, 0x20, 0x88
+    DB 0x40, 0x02, 0x60, 0x81, 0x40, 0x01, 0x40, 0x86
+    DB 0x60, 0x03, 0x20, 0x40, 0x60, 0x83, 0x60, 0x20
+    DB 0x02, 0x20, 0x82, 0x40, 0x01, 0x40, 0x87, 0x40
+    DB 0x06, 0x20, 0x05, 0x20, 0x60, 0x82, 0x60, 0x01
+    DB 0x20, 0x88, 0x40, 0x0B, 0x20, 0x60, 0x84, 0x42
+    DB 0x89, 0x60, 0x20, 0x08, 0x40, 0x95, 0x40, 0x21
+    DB 0x01, 0x21, 0x40, 0x60, 0xC5
+; 37 7
+    DB 0xE0, 0x62, 0x9C, 0x02, 0x9C, 0x02, 0x97, 0x61
+    DB 0x40, 0x81, 0x02, 0x94, 0x60, 0x20, 0x03, 0x81
+    DB 0x02, 0x92, 0x40, 0x20, 0x05, 0x81, 0x02, 0x90
+    DB 0x40, 0x08, 0x81, 0x02, 0x8E, 0x40, 0x0A, 0x81
+    DB 0x02, 0x8C, 0x40, 0x08, 0x20, 0x40, 0x61, 0x81
+    DB 0x02, 0x8A, 0x40, 0x07, 0x40, 0x60, 0x86, 0x02
+    DB 0x88, 0x40, 0x20, 0x05, 0x40, 0x60, 0x89, 0x02
+    DB 0x86, 0x60, 0x20, 0x04, 0x20, 0x40, 0x8C, 0x02
+    DB 0x84, 0x60, 0x20, 0x04, 0x20, 0x60, 0x8E, 0x02
+    DB 0x82, 0x60, 0x20, 0x04, 0x40, 0x60, 0x90, 0x02
+    DB 0x80, 0x60, 0x40, 0x04, 0x40, 0x60, 0x92, 0x02
+    DB 0x40, 0x04, 0x40, 0x60, 0x94, 0x06, 0x40, 0x60
+    DB 0x96, 0x04, 0x20, 0x60, 0x98, 0x02, 0x20, 0x60
+    DB 0x9A, 0x41, 0x60, 0xDB
+; 38 8
+    DB 0xF2, 0x60, 0x40, 0x23, 0x40, 0x60, 0x8A, 0x60
+    DB 0x41, 0x60, 0x87, 0x40, 0x07, 0x40, 0x87, 0x40
+    DB 0x05, 0x40, 0x83, 0x60, 0x20, 0x09, 0x20, 0x85
+    DB 0x20, 0x07, 0x20, 0x82, 0x20, 0x0B, 0x40, 0x83
+    DB 0x40, 0x09, 0x20, 0x80, 0x20, 0x02, 0x20, 0x60
+    DB 0x82, 0x60, 0x20, 0x03, 0x82, 0x60, 0x02, 0x20
+    DB 0x40, 0x61, 0x20, 0x03, 0x20, 0x02, 0x60, 0x86
+    DB 0x40, 0x02, 0x40, 0x81, 0x40, 0x01, 0x20, 0x84
+    DB 0x40, 0x05, 0x60, 0x88, 0x20, 0x01, 0x20, 0x81
+    DB 0x20, 0x01, 0x40, 0x85, 0x40, 0x03, 0x40, 0x89
+    DB 0x60, 0x02, 0x81, 0x02, 0x87, 0x20, 0x02, 0x20
+    DB 0x8A, 0x02, 0x81, 0x02, 0x87, 0x60, 0x03, 0x40
+    DB 0x89, 0x02, 0x81, 0x02, 0x88, 0x20, 0x03, 0x89
+    DB 0x02, 0x81, 0x02, 0x40, 0x86, 0x20, 0x04, 0x20
+    DB 0x87, 0x40, 0x01, 0x20, 0x81, 0x20, 0x01, 0x20
+    DB 0x85, 0x40, 0x01, 0x20, 0x03, 0x40, 0x86, 0x20
+    DB 0x01, 0x40, 0x81, 0x40, 0x02, 0x20, 0x40, 0x61
+    DB 0x40, 0x20, 0x01, 0x20, 0x80, 0x20, 0x03, 0x40
+    DB 0x84, 0x40, 0x02, 0x60, 0x82, 0x0A, 0x60, 0x81
+    DB 0x20, 0x03, 0x20, 0x42, 0x20, 0x02, 0x20, 0x83
+    DB 0x60, 0x07, 0x20, 0x60, 0x82, 0x60, 0x0A, 0x20
+    DB 0x85, 0x60, 0x20, 0x04, 0x40, 0x85, 0x60, 0x08
+    DB 0x20, 0x60, 0x87, 0x61, 0x40, 0x60, 0x88, 0x60
+    DB 0x20, 0x05, 0x40, 0x98, 0x60, 0x42, 0x60, 0xC6
+; 39 9
+    DB 0xC9, 0x61, 0x99, 0x60, 0x20, 0x04, 0x20, 0x40
+    DB 0x60, 0x93, 0x60, 0x20, 0x09, 0x40, 0x89, 0x42
+    DB 0x84, 0x60, 0x0C, 0x20, 0x88, 0x20, 0x01, 0x60
+    DB 0x82, 0x60, 0x05, 0x22, 0x05, 0x40, 0x87, 0x40
+    DB 0x01, 0x40, 0x82, 0x20, 0x02, 0x40, 0x60, 0x84
+    DB 0x60, 0x20, 0x03, 0x60, 0x86, 0x60, 0x01, 0x40
+    DB 0x81, 0x40, 0x02, 0x60, 0x88, 0x40, 0x02, 0x40
+    DB 0x87, 0x02, 0x81, 0x40, 0x01, 0x40, 0x8A, 0x20
+    DB 0x02, 0x87, 0x02, 0x81, 0x02, 0x8B, 0x60, 0x02
+    DB 0x87, 0x02, 0x81, 0x02, 0x8C, 0x02, 0x87, 0x02
+    DB 0x81, 0x02, 0x8C, 0x02, 0x86, 0x40, 0x01, 0x20
+    DB 0x81, 0x02, 0x60, 0x8A, 0x60, 0x01, 0x40, 0x86
+    DB 0x20, 0x01, 0x40, 0x81, 0x40, 0x01, 0x20, 0x8A
+    DB 0x20, 0x01, 0x60, 0x85, 0x20, 0x02, 0x60, 0x81
+    DB 0x40, 0x02, 0x20, 0x88, 0x40, 0x01, 0x40, 0x84
+    DB 0x60, 0x20, 0x02, 0x40, 0x83, 0x20, 0x02, 0x20
+    DB 0x40, 0x84, 0x40, 0x20, 0x01, 0x20, 0x83, 0x60
+    DB 0x40, 0x03, 0x20, 0x84, 0x60, 0x06, 0x21, 0x03
+    DB 0x20, 0x42, 0x20, 0x05, 0x20, 0x60, 0x85, 0x60
+    DB 0x15, 0x20, 0x88, 0x60, 0x40, 0x11, 0x20, 0x40
+    DB 0x8B, 0x60, 0x40, 0x20, 0x0C, 0x20, 0x60, 0x91
+    DB 0x60, 0x47, 0x61, 0xCA
+; 3A : colon, half-width
+    DB 0xE8, 0x60, 0x04, 0x40, 0x88, 0x20, 0x04, 0x89
+    DB 0x60, 0x04, 0x40, 0x88, 0x20, 0x04, 0x89, 0x60
+    DB 0x04, 0x40, 0x88, 0x20, 0x04, 0x89, 0x60, 0x04
+    DB 0x40, 0x88, 0x20, 0x04, 0x89, 0x60, 0x04, 0x40
+    DB 0x88, 0x20, 0x04, 0x89, 0x60, 0x24, 0x40, 0x88
+    DB 0x40, 0x24, 0xE0
+; 3B ' inverted comma, half-width
+    DB 0xC9, 0x61, 0x93, 0x20, 0x04, 0x83, 0x01, 0x60
+    DB 0x92, 0x20, 0x04, 0x81, 0x60, 0x20, 0x01, 0x93
+    DB 0x20, 0x04, 0x20, 0x03, 0x40, 0x93, 0x20, 0x08
+    DB 0x20, 0x94, 0x20, 0x07, 0x40, 0x95, 0x40, 0x24
+    DB 0x40, 0x60, 0xF7
+; 3C "
+    DB 0xFF, 0x64, 0x83, 0x61, 0x94, 0x04, 0x82, 0x60
+    DB 0x01, 0x94, 0x04, 0x62, 0x20, 0x00, 0x40, 0x94
+    DB 0x09, 0x60, 0x94, 0x07, 0x20, 0x60, 0x95, 0x46
+    DB 0x60, 0xFF, 0x97, 0x44, 0x83, 0x41, 0x94, 0x04
+    DB 0x82, 0x40, 0x00, 0x20, 0x94, 0x04, 0x41, 0x20
+    DB 0x01, 0x40, 0x94, 0x08, 0x20, 0x95, 0x07, 0x40
+    DB 0x96, 0x66, 0xFF, 0x98
+; 3D m
+    DB 0xA8, 0x75, 0x89, 0x15, 0x89, 0x15, 0x89, 0x15
+    DB 0x89, 0x61, 0x80, 0x60, 0x20, 0x00, 0x20, 0x40
+    DB 0x6D, 0x8B, 0x40, 0x01, 0x40, 0x9A, 0x20, 0x00
+    DB 0x20, 0x60, 0x9A, 0x40, 0x01, 0x60, 0x9B, 0x02
+    DB 0x60, 0x9B, 0x03, 0x21, 0x4F, 0x89, 0x40, 0x14
+    DB 0x8A, 0x40, 0x13, 0x8C, 0x60, 0x20, 0x01, 0x2E
+    DB 0x8B, 0x60, 0x20, 0x00, 0x20, 0x40, 0x99, 0x40
+    DB 0x01, 0x40, 0x9A, 0x60, 0x01, 0x40, 0x9B, 0x20
+    DB 0x01, 0x9C, 0x02, 0x40, 0x71, 0x89, 0x15, 0x89
+    DB 0x60, 0x14, 0x8A, 0x60, 0x20, 0x12, 0x8D, 0x71
+    DB 0xA0
+; 3E ft-ligature
+    DB 0x8A, 0x20, 0x01, 0x60, 0x9B, 0x20, 0x01, 0x60
+    DB 0x97, 0x63, 0x20, 0x01, 0x40, 0x70, 0x83, 0x40
+    DB 0x20, 0x19, 0x81, 0x60, 0x20, 0x1B, 0x81, 0x20
+    DB 0x1C, 0x80, 0x40, 0x03, 0x20, 0x43, 0x20, 0x01
+    DB 0x51, 0x80, 0x20, 0x02, 0x60, 0x84, 0x02, 0x40
+    DB 0x91, 0x02, 0x60, 0x85, 0x20, 0x01, 0x60, 0x90
+    DB 0x60, 0x02, 0x86, 0x20, 0x01, 0x60, 0x90, 0x60
+    DB 0x01, 0x20, 0x86, 0x20, 0x01, 0x60, 0x90, 0x60
+    DB 0x01, 0x20, 0x86, 0x20, 0x01, 0x60, 0x90, 0x60
+    DB 0x01, 0x20, 0x82, 0x63, 0x02, 0x40, 0x6B, 0x84
+    DB 0x60, 0x01, 0x20, 0x81, 0x60, 0x14, 0x20, 0x40
+    DB 0x82, 0x02, 0x81, 0x60, 0x16, 0x20, 0x81, 0x20
+    DB 0x01, 0x60, 0x80, 0x60, 0x17, 0x40, 0x80, 0x20
+    DB 0x01, 0x60, 0x80, 0x60, 0x43, 0x02, 0x20, 0x4B
+    DB 0x20, 0x03, 0x80, 0x63, 0x85, 0x20, 0x01, 0x60
+    DB 0x8C, 0x40, 0x02, 0x8A, 0x20, 0x01, 0x60, 0x8D
+    DB 0x02, 0x8A, 0x20, 0x01, 0x60, 0x8D, 0x20, 0x01
+    DB 0x8A, 0x20, 0x01, 0x60, 0x8D, 0x40, 0x01, 0x8A
+    DB 0x20, 0x01, 0x60, 0x8D, 0x40, 0x01, 0x8A, 0x20
+    DB 0x01, 0x60, 0x8D, 0x40, 0x01, 0x8A, 0x20, 0x01
+    DB 0x60, 0x8D, 0x40, 0x01
+; 3F   space
+    DB 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+; TOTAL COMPRESSED SIZE = 1775
--- a/src/Fonts/aa_font48_idx.inc	Sat Feb 29 16:57:45 2020 +0100
+++ b/src/Fonts/aa_font48_idx.inc	Thu Mar 05 15:06:14 2020 +0100
@@ -1,27 +1,30 @@
 ;==========================================================================
-; Font index exported ven. janv. 13 2012 by FontIO.cpp 110 2011-06-07 11:26:40Z gascuel $ 
+; Font index exported So Nov 24 2019 by FontIO.cpp,
+; v 43ff8ad28dae 2018/04/17 16:52:12 jDG   combined next generation V3.08.3
 ;==========================================================================
-aa_font48_chars		EQU	.18
-aa_font48_firstChar	EQU	'.'
-aa_font48_lastChar	EQU	'?'
+aa_font48_chars     EQU .20
+aa_font48_firstChar EQU .44
+aa_font48_lastChar  EQU .63
 ;
 aa_font48_idx:
-			DW	aa_font48_bits + 0x0000	; . dot
-			DW	aa_font48_bits + 0x001F	; / slash
-			DW	aa_font48_bits + 0x0025	; 0 0
-			DW	aa_font48_bits + 0x00A2	; 1 1
-			DW	aa_font48_bits + 0x00EF	; 2 2
-			DW	aa_font48_bits + 0x0180	; 3 3
-			DW	aa_font48_bits + 0x0220	; 4 4
-			DW	aa_font48_bits + 0x028B	; 5 5
-			DW	aa_font48_bits + 0x0312	; 6 6
-			DW	aa_font48_bits + 0x03BF	; 7 7
-			DW	aa_font48_bits + 0x0430	; 8 8
-			DW	aa_font48_bits + 0x04F1	; 9 9
-			DW	aa_font48_bits + 0x05A1	; : colon
-			DW	aa_font48_bits + 0x05D6	; ; semicolon
-			DW	aa_font48_bits + 0x060B	; < less
-			DW	aa_font48_bits + 0x066B	; = equal
-			DW	aa_font48_bits + 0x06B7	; > greater
-			DW	aa_font48_bits + 0x073D	; ? question
-			DW	aa_font48_bits + 0x0743	; END OF INDEX
+    DW    aa_font48_bits + 0x0000    ; 2C   space,         half-width, access by ,
+    DW    aa_font48_bits + 0x0003    ; 2D - minus,         half-width
+    DW    aa_font48_bits + 0x001C    ; 2E . dot,           half-width
+    DW    aa_font48_bits + 0x002F    ; 2F | vertical line, half-width, access by |
+    DW    aa_font48_bits + 0x0035    ; 30 0
+    DW    aa_font48_bits + 0x00BE    ; 31 1
+    DW    aa_font48_bits + 0x0108    ; 32 2
+    DW    aa_font48_bits + 0x0191    ; 33 3
+    DW    aa_font48_bits + 0x021F    ; 34 4
+    DW    aa_font48_bits + 0x027B    ; 35 5
+    DW    aa_font48_bits + 0x02ED    ; 36 6
+    DW    aa_font48_bits + 0x039A    ; 37 7
+    DW    aa_font48_bits + 0x0406    ; 38 8
+    DW    aa_font48_bits + 0x04C6    ; 39 9
+    DW    aa_font48_bits + 0x0572    ; 3A : colon,          half-width
+    DW    aa_font48_bits + 0x059D    ; 3B ' inverted comma, half-width
+    DW    aa_font48_bits + 0x05C0    ; 3C "
+    DW    aa_font48_bits + 0x05F4    ; 3D m
+    DW    aa_font48_bits + 0x0645    ; 3E ft-ligature
+    DW    aa_font48_bits + 0x06E9    ; 3F space,            full-width
+    DW    aa_font48_bits + 0x06EF    ; END OF INDEX
Binary file src/Fonts/c48_aa.png has changed
--- a/src/configuration.inc	Sat Feb 29 16:57:45 2020 +0100
+++ b/src/configuration.inc	Thu Mar 05 15:06:14 2020 +0100
@@ -25,7 +25,7 @@
 
 #define fw_version_major		0x03
 #define fw_version_minor		0x09
-#define fw_version_beta			0x01
+#define fw_version_beta			0x02
 
 
 #ifdef xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
@@ -43,8 +43,8 @@
 #endif
 
 #define firmware_creation_year	0x14
-#define firmware_creation_month	0x02
-#define firmware_creation_day	0x1C
+#define firmware_creation_month	0x03
+#define firmware_creation_day	0x05
 
 #define firmware_expire_year	0x15
 #define firmware_expire_month	0x01
@@ -77,7 +77,7 @@
 ; 
 #endif
 
-#define _language_1		de
+#define _language_1		en
 #define _language_2		none
 
 
--- a/src/external_flash.asm	Sat Feb 29 16:57:45 2020 +0100
+++ b/src/external_flash.asm	Thu Mar 05 15:06:14 2020 +0100
@@ -174,19 +174,34 @@
 	global	ext_flash_write_range
 ext_flash_write_range:
 	movwf	eeprom_loop						; load loop counter (eeprom variable used here)
+
+;	btfsc	flash_block_write				; does the FLASH support block-write?
+;	bra		ext_flash_write_range_block		; YES - write date via block operation
+;	;bra	ext_flash_write_range_seq		; NO  - write data via sequential single writes
+
+ext_flash_write_range_seq:					; sequential write
+ext_flash_write_range_loop_s:
+	movff	POSTINC1,ext_flash_rw			; read  byte from     memory     to  ext_flash_rw
+	rcall	ext_flash_byte_write			; write byte from  ext_flash_rw  to     FLASH
+	rcall	incf_ext_flash_address_p1_0x40	; increase address with wrap-around at 0x400000
+	decfsz	eeprom_loop,F					; decrement loop counter, all done?
+	bra		ext_flash_write_range_loop_s	; NO  - continue loop
+	return									; YES - done
+
+ext_flash_write_range_block:				; block write
 	movff	POSTINC1,ext_flash_rw			; read  first byte from memory
 	rcall	ext_flash_write_block_start		; write first byte to FLASH
 	bra		ext_flash_write_range_loop_start; jump into loop
-ext_flash_write_range_loop:
+ext_flash_write_range_loop_b:
 	movff	POSTINC1,ext_flash_rw			; read  next byte from memory
 	rcall	ext_flash_write_block			; write next byte to FLASH
 ext_flash_write_range_loop_start:
 	decfsz	eeprom_loop,F					; decrement loop counter, all done?
-	bra		ext_flash_write_range_loop		; NO  - continue loop
+	bra		ext_flash_write_range_loop_b	; NO  - continue loop
 	bra		ext_flash_write_block_stop		; YES - end writing to flash (and return)
 
 ; ----------------------------------------------------------------------------
-
+	
 ;	global	write_byte_ext_flash_plus_header
 ; write_byte_ext_flash_plus_header:
 ;	movwf	ext_flash_rw					; store byte to write
--- a/src/start.asm	Sat Feb 29 16:57:45 2020 +0100
+++ b/src/start.asm	Thu Mar 05 15:06:14 2020 +0100
@@ -1,6 +1,6 @@
 ;=============================================================================
 ;
-;   File start.asm                            combined next generation V3.08.8
+;   File start.asm                            combined next generation V3.09.1 fix
 ;
 ;   Startup subroutines
 ;
@@ -282,11 +282,6 @@
 	clrf	CVT_flags1						; convert and display functions
 	clrf	CVT_flags2						; convert and display functions
 
-	; check if option values have changed and thus if the EEPROM needs to be updated
-	btfsc	options_changed					; do the options need to be stored to EEPROM ?
-	call	option_check_and_store_all		; YES - check and store all option values in EEPROM
-	bcf		options_changed					; clear flag
-
 	; configure the OSTC model descriptor (stored in HW_descriptor)
 	bcf		tft_power						; inverted, here needed for I2C_probe_OSTC_rx, to wake-up RX circuity
 	bsf		ambient_sensor					; set ambient light sensor as available by default
@@ -433,6 +428,11 @@
 	btfsc	use_old_batt_flag				; shall reload last battery data?
 	call	get_battery_data				; YES - get last battery data
 
+	; check if option values have changed and thus if the EEPROM needs to be updated
+	btfsc	options_changed					; do the options need to be stored to EEPROM ?
+	call	option_check_and_store_all		; YES - check and store all option values in EEPROM
+	bcf		options_changed					; clear flag
+
 	; set screen orientation
 	bcf		flip_screen						; set default screen orientation
 	TSTOSC	opt_flip_screen					; shall show screen outputs upside down? (=1: flip the screen)
--- a/src/tft_outputs.asm	Sat Feb 29 16:57:45 2020 +0100
+++ b/src/tft_outputs.asm	Thu Mar 05 15:06:14 2020 +0100
@@ -1,6 +1,6 @@
 ;=============================================================================
 ;
-;   File tft_outputs.asm                      next combined generation V3.08.7
+;   File tft_outputs.asm                      next combined generation V3.09.1 fix
 ;
 ;   high-level Display Outputs
 ;
@@ -1043,11 +1043,7 @@
 TFT_show_ndl:
 	btfsc	dive_main_menu				; is the dive mode menu shown?
 	return								; YES - abort
-	call	TFT_memo_color				; NO  - set color
-	movff	int_O_NDL_norm+1,lo			;     - get high byte of NDL time in normal plan
-	btfsc	lo,int_invalid_flag			;     - is the invalid flag set?
-	call	TFT_disabled_color			;       YES - switch to disabled color
-	movff	int_O_NDL_norm+0,lo			;     - get low byte of NDL time in normal plan
+	movff	int_O_NDL_norm+0,lo			; NO  - get low byte of NDL time in normal plan
 	btfsc	deco_locked					;     - was the dive in deco?
 	bra		TFT_show_ndl_norm			;       YES - use normal layout
 	btfsc	alt_layout_active			;       NO  - alternative layout active?
@@ -1056,6 +1052,7 @@
 
 TFT_show_ndl_norm:						; set position
 	WIN_MEDIUM dm_ndl_value_col_norm,dm_ndl_value_row_norm
+	rcall	TFT_show_ndl_set_color		; set color
 	output_8							; display 0...240
 TFT_show_ndl_exit_1:
 	STRCAT_PRINT "'"					; print minutes symbol
@@ -1068,16 +1065,24 @@
 										; clear potential remains from NDL normal and set position
 	WIN_BOX_BLACK dm_ndl_value_row_norm, dm_3rdrow_bot, dm_ndl_value_col_norm, dm_ndl_value_col_alt ; top, bottom, left, right
 	WIN_LARGE dm_ndl_value_col_alt, dm_ndl_value_row_alt
+	rcall	TFT_show_ndl_set_color		; set color
 	output_99							; display 0...99
 	STRCAT_PRINT ""						; finalize output
 	bra		TFT_show_ndl_exit_2			; done
 
 TFT_show_ndl_alt_safety:
 	WIN_MEDIUM dm_ndl_value_col_norm,dm_ndl_value_row_norm
+	rcall	TFT_show_ndl_set_color		; set color
 	PUTC	" "							; fill first digit position
 	output_99							; display 0...99
 	bra		TFT_show_ndl_exit_1			; print minutes symbol and done
 
+TFT_show_ndl_set_color:
+	movff	int_O_NDL_norm+1,lo			; get high byte of NDL time in normal plan
+	btfss	lo,int_invalid_flag			; is the invalid flag set?
+	goto	TFT_memo_color				; NO  - select memo     color and return
+	goto	TFT_disabled_color			; YES - select disabled color and return
+
 
 	global	TFT_divemode_sign_show
 TFT_divemode_sign_show: