view src/divemode.inc @ 623:c40025d8e750

3.03 beta released
author heinrichsweikamp
date Mon, 03 Jun 2019 14:01:48 +0200
parents 7b3903536213
children cd58f7fc86db
line wrap: on
line source

;=============================================================================
;
;   File divemode.inc                         combined next generation V3.03.2
;
;
;   Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
;=============================================================================
; HISTORY
;  2011-08-15 : [mH] moving from OSTC code

	extern	set_dive_modes
	extern	diveloop
	extern	apnoe_calc_maxdepth

 IFDEF _external_sensor
	extern	calc_deko_divemode_sensor
 ENDIF


; Divemode layout:
; row    = 0...239
; column = 0...159 (x2)

; Divemode has multiple layouts but basicly splits the screen into 3 rows:
;   - upper  content row: depth, max depth, dive time, etc.
;   - custom content row: selectable views
;   - bottom content row: temp, gas, ndl, tts, etc.

; I. The upper content row (0-99)
;    The top row is divided in 2 areas:
;    - header : holds the titles (mask)
;    - content: holds the values

;******* upper content / header row *******

#DEFINE dm_mask_depth_row						.0
#DEFINE dm_mask_depth_column					.2
#DEFINE dm_mask_depth_column_alt				.64

#DEFINE dm_mask_maxdepth_row					.0
#DEFINE dm_mask_maxdepth_col					.73
#DEFINE dm_mask_maxdepth_col_nvsi				.63

#DEFINE dm_mask_divetime_row					.0
#DEFINE dm_mask_divetime_column					.122


;   The content row contains 3 columns:
;   - depth and ascend rate warning
;   - max depth and warning messages
;   - dive time, apnea dive times and warning icon

;******* upper content / content row / 1st col *******

; GLOBAL
#DEFINE dm_offset								.14								;  14  start of content row

; Depth - full meters or feet
#DEFINE dm_depth_row_large						dm_offset						;  14
#DEFINE dm_depth_col_large						.0								;   0
#DEFINE dm_depth_bot_large						dm_depth_row_large+.61			;  75
#DEFINE dm_depth_rgt_large						dm_depth_col_large+.59			;  59
#DEFINE dm_depth_row_huge						.7								;   7
#DEFINE dm_depth_col_huge						.0								;   0
#DEFINE dm_depth_bot_huge						dm_depth_row_huge+.90			;  97
#DEFINE dm_depth_rgt_huge						dm_depth_col_huge+.90			;  90

; Depth - position of decimeters (shown if depth < 100 m)
#DEFINE dm_depth_dm_row_medium					dm_depth_row_large+.25			;  39
#DEFINE dm_depth_dm_col_medium					dm_depth_col_large+.40			;  40
#DEFINE dm_depth_dm_row_large					.37								;  37
#DEFINE dm_depth_dm_col_large					dm_depth_col_large+.58			;  58

; ascend rate - textual display
#DEFINE dm_velocity_text_row_norm				dm_depth_row_large+.62			;  76
#DEFINE dm_velocity_text_col_norm				dm_depth_col_large				;   0
#DEFINE dm_velocity_text_bot_norm				dm_velocity_text_row_norm+.23	;  99
#DEFINE dm_velocity_text_rgt_norm				dm_depth_rgt_large				;  59

; ascend/descend rate - graphical display
#DEFINE dm_velocity_graph_top					dm_offset+.10					;  24
#DEFINE dm_velocity_graph_lft					dm_depth_rgt_large+.3			;  61		+2 / 61
#DEFINE dm_velocity_graph_bot					dm_velocity_graph_top+.70		;  94
#DEFINE dm_velocity_graph_rgt					dm_upcnt_2ndcol-.3				;  72		-2 / 72
#DEFINE dm_velocity_graph_width					.10								;  12		12


;******* upper content / content row / 2nd col *******

; Start column
#DEFINE dm_upcnt_2ndcol							.74								;  74 - with vertical speed indicator enabled
#DEFINE dm_upcnt_2ndcol_nvsi					.64								;  64 - with vertical speed indicator disabled

; max depth
#DEFINE dm_max_depth_row						dm_offset						;  14
#DEFINE dm_max_depth_column						dm_upcnt_2ndcol					;  74
#DEFINE dm_max_depth_column_nvsi				dm_upcnt_2ndcol_nvsi			;  64
#DEFINE dm_max_depth_bot						dm_max_depth_row+.34			;  48
#DEFINE dm_max_depth_rgt						dm_max_depth_column+.36			; 100
#DEFINE dm_max_depth_dm_row						dm_max_depth_row+.11			;  25
#DEFINE dm_max_depth_dm_column					dm_max_depth_column+.23			;  87
#DEFINE dm_max_depth_dm_column_nvsi				dm_max_depth_column_nvsi+.23	;  77
#DEFINE dm_max_alt_column						.0								;   0
#DEFINE dm_max_alt_row							.170							; 170
#DEFINE dm_max_dm_alt_column					dm_max_alt_column+.60			;  60

; Warning area (combined)
#DEFINE dm_warning_row							dm_offset+.36					;  50
#DEFINE dm_warning_column						dm_upcnt_2ndcol+.23				;  97	ex +.0
#DEFINE dm_warning_bot							dm_warning_row+.49				;  99
#DEFINE dm_warning_rgt							dm_warning_column+.62			; 136
#DEFINE dm_warning_length						.9								;      total string length in number of characters

; Warning row #1
#DEFINE dm_warning1_row							dm_warning_row					;  50
#DEFINE dm_warning1_column						dm_warning_column				;  64
#DEFINE dm_warning1_bot							dm_warning1_row+.23				;  73
#DEFINE dm_warning1_rgt							dm_warning_rgt					; 136

; Warning row #2
#DEFINE dm_warning2_row							dm_warning_row+.24				;  74
#DEFINE dm_warning2_column						dm_warning_column				;  64
#DEFINE dm_warning2_bot							dm_warning2_row+.23				;  97
#DEFINE dm_warning2_rgt							dm_warning_rgt					; 136


;******* upper content / content row / 3rd col *******

; Dive time
#DEFINE dm_divetime_row							dm_offset						;  14
#DEFINE dm_divetime_col_medium					.115							; 115
#DEFINE dm_divetime_col_large					.91								;  91
#DEFINE dm_divetime_bot_medium					dm_divetime_row+.34				;  48
#DEFINE dm_divetime_bot_large					dm_divetime_row+.57				;  71
#DEFINE dm_divetime_rgt							.159							; 159

#DEFINE dm_divetime_sec_row_small				dm_divetime_row+.11				;  25
#DEFINE dm_divetime_sec_col_small				dm_divetime_col_medium+.23		; 138
#DEFINE dm_divetime_minonly_col_medium			.111							; 111

#DEFINE dm_divetime_sec_row_medium				dm_divetime_sec_row_small+.13	;  38
#DEFINE dm_divetime_sec_col_medium				dm_divetime_col_large+.39		; 130
#DEFINE dm_divetime_minonly_col_large			dm_divetime_col_large+.8		;  99

; Sign - normal layout
#DEFINE dm_sign_row_norm						dm_offset+.41					;  55
#DEFINE dm_sign_col_norm						.74								;  74
#DEFINE dm_sign_bot_norm						dm_sign_row_norm+.38			;  93
#DEFINE dm_sign_rgt_norm						dm_sign_col_norm+.22			;  96

; Apnea dive time
#DEFINE dm_divetime_apnoe_row					dm_offset						;  14
#DEFINE dm_divetime_apnoe_col					.115							; 115
#DEFINE dm_divetime_apnoe_secs_row				dm_divetime_apnoe_row+.11		;  25
#DEFINE dm_divetime_apnoe_secs_col				dm_divetime_apnoe_col+.24		; 139

; Apnea total time
#DEFINE dm_apnoe_total_divetime_row				dm_divetime_apnoe_row+.50		;  64
#DEFINE dm_apnoe_total_divetime_col				.103							; 103
#DEFINE dm_apnoe_total_divetime_secs_row		dm_apnoe_total_divetime_row+.11	;  75
#DEFINE dm_apnoe_total_divetime_secs_col		dm_apnoe_total_divetime_col+.36	; 139
#DEFINE dm_total_apnoe_text_row					dm_apnoe_total_divetime_row-.11	;  53
#DEFINE dm_total_apnoe_text_col					.132							; 132

; I. end of the upper content row. (0-99)

; 1px space between the 1st and 2nd content rows
#DEFINE dm_sep_1_2_row							dm_offset+.86					; 100


; II. custom/selectable content row

;   The custom view display area is: 101,163,0,159 (t,b,l,r), or 0,101->159,163

;******* Custom View: Global *******

#DEFINE dm_customview_row						dm_offset+.87					; 101
#DEFINE dm_customview_column					.0								;   0
#DEFINE dm_customview_bot						dm_customview_row+.62			; 163
#DEFINE dm_customview_rgt						.159							; 159


;******* Custom View: Avg depth, stopwatch and avg depth *******

#DEFINE dm_custom_avr_stop_title_row			dm_customview_row+.1			; 102
#DEFINE dm_custom_avr_stop_row					dm_customview_row+.16			; 117
#DEFINE dm_custom_avr_stop_column1				.0								;   0
#DEFINE dm_custom_avr_stop_column2				.54								;  54
#DEFINE dm_custom_avr_stop_column3				.118							; 118


;******* Custom View: Decompressions stops *******

; Title
#DEFINE dm_custom_decoplan_title_row			dm_customview_row				; 101
#DEFINE dm_custom_decoplan_title_column			.60								;  60

; 1st col
#DEFINE dm_cust_dstop_2nd_stop_row				dm_customview_row+.14			; 115
#DEFINE dm_cust_dstop_2nd_stop_column			.0								;   0
#DEFINE dm_cust_dstop_3rd_stop_row				dm_customview_row+.37			; 138
#DEFINE dm_cust_dstop_3rd_stop_column			dm_cust_dstop_2nd_stop_column	;   0

; 2nd col
#DEFINE dm_cust_dstop_4th_stop_row				dm_cust_dstop_2nd_stop_row		; 115
#DEFINE dm_cust_dstop_4th_stop_column			.56								;  56
#DEFINE dm_cust_dstop_5th_stop_row				dm_cust_dstop_3rd_stop_row		; 138
#DEFINE dm_cust_dstop_5th_stop_column			dm_cust_dstop_4th_stop_column	;  56

; 3rd col
#DEFINE dm_cust_dstop_6th_stop_row				dm_cust_dstop_2nd_stop_row		; 115
#DEFINE dm_cust_dstop_6th_stop_column			.111							; 111
#DEFINE dm_cust_dstop_7th_stop_row				dm_cust_dstop_3rd_stop_row		; 138
#DEFINE dm_cust_dstop_7th_stop_column			dm_cust_dstop_6th_stop_column	; 111


;******* Custom View: Time, Battery, Surface Pressure *******

; Clock
#DEFINE dm_custom_clock_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_clock_row						dm_customview_row+.16			; 117
#DEFINE dm_custom_clock_column					.0								;   0

; Battery
#DEFINE dm_custom_battery_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_battery_volt_row				dm_customview_row+.16			; 117
#DEFINE dm_custom_battery_percent_row			dm_custom_ead_row+.23			; 140
#DEFINE dm_custom_battery_column				.62								;  62

; Surface Pressure
#DEFINE dm_custom_surfpres_title_row			dm_customview_row+.1			; 102
#DEFINE dm_custom_surfpres_row					dm_customview_row+.16			; 117
#DEFINE dm_custom_surfpres_column				.95								;  95


;****** Custom View: ppO2, EAD/ENDS and CNS *******

; ppO2
#DEFINE dm_custom_ppo2_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_ppo2_row						dm_customview_row+.18			; 119
#DEFINE dm_custom_ppo2_column					.2								;   2

; EAD/END
#DEFINE dm_custom_eadend_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_ead_row						dm_customview_row+.16			; 117
#DEFINE dm_custom_ead_column					.50								;  50
#DEFINE dm_custom_end_row						dm_custom_ead_row+.23			; 140
#DEFINE dm_custom_end_column					dm_custom_ead_column			;  50

; CNS
#DEFINE dm_custom_cns_title_row					dm_customview_row+.1			; 102
#DEFINE dm_custom_cns_row						dm_customview_row+.18			; 119
#DEFINE dm_custom_cns_column					.115							; 115


;****** Custom View: tripple CNS *******

#DEFINE dm_custom_cns3_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_cns3_row						dm_customview_row+.16			; 117
#DEFINE dm_custom_cns3_column1					.8								;   8
#DEFINE dm_custom_cns3_column2					.62								;  62
#DEFINE dm_custom_cns3_column3					.115							; 115


;****** Custom View: Ceiling, Tissues, (current GF)

; Ceiling
#DEFINE dm_custom_ceiling_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_ceiling_row					dm_customview_row+.18			; 119
#DEFINE dm_custom_ceiling_column				.62								;  62

; Tissue title
#DEFINE dm_custom_tissue_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_tissue_title_column			.120							; 120

; N2 / He values
#DEFINE dm_custom_tissue_N2_row					dm_custom_ead_row+.5			; 122
#DEFINE dm_custom_tissue_N2_column				.105							; 105
#DEFINE dm_custom_tissue_He_row					dm_custom_end_row+.5			; 145
#DEFINE dm_custom_tissue_He_column				dm_custom_tissue_N2_column		; 105

; Tissue diagram
#DEFINE dm_custom_tissue_diagram_top			dm_customview_row+.16			; 117
#DEFINE dm_custom_tissue_diagram_bottom			dm_custom_tissue_diagram_top+.43; 160
#DEFINE dm_custom_tissue_diagram_left			.116							; 116
#DEFINE dm_custom_tissue_diagram_frame_spacing	.8								;   8


;******* Custom View: GF-lo/hi, aGF-lo/hi, current GF value *******

; Title
#DEFINE dm_custom_gf_title_row					dm_customview_row+.1			; 102
#DEFINE dm_custom_gf_row						dm_customview_row+.18			; 119
#DEFINE dm_custom_gf_column1					.0								;   0
#DEFINE dm_custom_gf_column2					.65								;  65
#DEFINE dm_custom_gf_column3					.95								;  95


;******* Custom View: Compass *******

; Title
#DEFINE dm_custom_compass_mask_row				dm_customview_row				; 101
#DEFINE dm_custom_compass_mask_column			.65								;  65

; Head and arrows
#DEFINE dm_custom_compass_head_row				dm_customview_row+.39			; 140
#DEFINE dm_custom_compass_head_column			.62								;  62
#DEFINE dm_custom_compass_ldir_column			.5								;   5
#DEFINE dm_custom_compass_rdir_column			.140							; 140

; Ruler
#DEFINE dm_custom_compass_graph_row				dm_customview_row				; 101
#DEFINE dm_custom_compass_graph_height			.33								;  33
#DEFINE dm_custom_compass_tick_height			.3								;   3
#DEFINE dm_custom_compass_tick_top_top			dm_custom_compass_graph_row+.1	; 102
#DEFINE dm_custom_compass_tick_top_bot			dm_custom_compass_graph_row+.4	; 105
#DEFINE dm_custom_compass_label_row				dm_custom_compass_graph_row+.6	; 107
#DEFINE dm_custom_compass_label_height			.24								;  24
#DEFINE dm_custom_compass_tick_bot_top			dm_custom_compass_graph_row+.30	; 131
#DEFINE dm_custom_compass_tick_bot_bot			dm_custom_compass_graph_row+.33	; 134


;******* Custom View: O2 Sensor Values *******

#DEFINE dm_custom_hud_title_row					dm_customview_row+.1			; 102
#DEFINE dm_custom_hud_row						dm_customview_row+.16			; 117
#DEFINE dm_custom_hud_sensor1_column			.6								;   6
#DEFINE dm_custom_hud_sensor2_column			.62								;  62
#DEFINE dm_custom_hud_sensor3_column			.118							; 118


;******* Custom View: Gas Needs *******

#DEFINE dm_custom_gas_mask_row					dm_customview_row				; 101
#DEFINE dm_custom_gas_row1						dm_customview_row+.14			; 115
#DEFINE dm_custom_gas_row2						dm_customview_row+.37			; 138
#DEFINE dm_custom_gas_column_title				.29								;  29
#DEFINE dm_custom_gas_column1					.5								;   5
#DEFINE dm_custom_gas_column2					.85								;  85


; ******* Custom View: Tank Pressures *******

#DEFINE dm_custom_tankdata_mask_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_tankdata_row					dm_customview_row+.16			; 117
#DEFINE dm_custom_tankdata_pres1_col			.2								;   2
#DEFINE dm_custom_tankdata_pres2_col			.115							; 115
#DEFINE dm_custom_tankdata_SAC_col				.56								;  56


;******* Custom View: Sensor Check *******

#DEFINE dm_custom_s_check_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_s_check_row					dm_customview_row+.18			; 119
#DEFINE dm_custom_s_check_title_column			.50								;  50
#DEFINE dm_custom_ppO2_column					.115							; 115
#DEFINE dm_custom_ppDil_column					.2								;   2


;******* Custom View: PSCR Info *******

#DEFINE dm_custom_pscr_title_row				dm_customview_row+.1			; 102
#DEFINE dm_custom_pscr_row						dm_customview_row+.18			; 119
#DEFINE dm_custom_pscr_drop_column				.55								;  55
#DEFINE dm_custom_pscr_ratio_column				.105							; 105


; II. end of the custom content row (101-163)

; 1px space between the 2nd and 3rd content rows
#DEFINE dm_sep_2_3_row							dm_offset+.150					; 164


; III. The 3rd content row contains temperature, active gas, NDL/TTS time,
; simulator menu, active/dil gas, decostop, Apnea surface time and max depth
;  The content row contains 2 columns:
;   - temperature, gas names
;   - NDL/TTS, DecoStop

#DEFINE dm_3rdrow_top							dm_offset+.151					; 165
#DEFINE dm_3rdrow_bot							.239							; 239
#DEFINE dm_3rdrow_lft							.0								;   0
#DEFINE dm_3rdrow_rgt							.159							; 159


;******* Bottom content / 1st col *******

; Temperature
#DEFINE dm_temp_row								dm_3rdrow_top-.3				; 162
#DEFINE dm_temp_column							dm_3rdrow_lft					;   0

; Simulation text (pre-menu)
#DEFINE dm_premenu_row							dm_3rdrow_top-.3				; 162
#DEFINE dm_premenu_col							dm_3rdrow_lft					;   0
#DEFINE dm_premenu_bot							dm_premenu_row+.23				; 185
#DEFINE dm_premenu_rgt							dm_premenu_col+.43				;  43

; ascend rate - alternative textual display
#DEFINE dm_velocity_text_row_alt				dm_temp_row						; 162
#DEFINE dm_velocity_text_col_alt				.45								;  45
#DEFINE dm_velocity_text_bot_alt				dm_velocity_text_row_alt+.23	; 185
#DEFINE dm_velocity_text_rgt_alt				dm_velocity_text_col_alt+.34	;  79

; Diluent gas
#DEFINE dm_active_dil_row						dm_3rdrow_top+.21				; 186
#DEFINE dm_active_dil_column					dm_3rdrow_lft					;   0

; OC gas, blinking better gas, setpoint or bailout for CCR/pSCR
#DEFINE dm_active_gas_sp_value_row				.208							; 208
#DEFINE dm_active_gas_sp_value_col				dm_3rdrow_lft					;   0
#DEFINE dm_active_sp_label_row					dm_active_gas_sp_value_row		; 208
#DEFINE dm_active_sp_label_col					dm_active_gas_sp_value_col+.45	;  45

; Sign - alternative layout
#DEFINE dm_sign_row_alt							.193							; 193
#DEFINE dm_sign_col_alt							.52								;  52
#DEFINE dm_sign_bot_alt							dm_sign_row_alt+.38				; 231
#DEFINE dm_sign_rgt_alt							dm_sign_col_alt+.22				;  74

;******* Bottom content / 2nd col *******

; 1st Deco Stop
#DEFINE dm_decostop_row_norm					dm_3rdrow_top					; 165
#DEFINE dm_decostop_col_norm					.82								;  82
#DEFINE dm_decostop_row_alt_depth				dm_decostop_row_norm-.1			; 164
#DEFINE dm_decostop_col_alt_depth				dm_decostop_col_norm-.1			;  81
#DEFINE dm_decostop_row_alt_time				dm_decostop_row_norm			; 165
#DEFINE dm_decostop_col_alt_time				dm_decostop_col_norm+.47		; 129

; Safety Stop
#DEFINE dm_safetystop_row						dm_3rdrow_top					; 165
#DEFINE dm_safetystop_column					.118							; 118
#DEFINE dm_safetystop_bot						dm_safetystop_row+.31			; 196
#DEFINE dm_safetystop_rgt						.159							; 159
#DEFINE dm_safetystop_text_row					dm_safetystop_row+.1			; 166
#DEFINE dm_safetystop_text_column				.80								;  80  for the 4 chars "Stop"

; TTS
#DEFINE dm_tts_value_row						dm_3rdrow_top+.43				; 208
#DEFINE dm_tts_value_col_99						.129							; 129
#DEFINE dm_tts_value_col_999					.124							; 122
#DEFINE dm_tts_value_col_999x					.118							; 118
#DEFINE dm_tts_text_row_norm					dm_tts_value_row				; 208
#DEFINE dm_tts_text_col_norm					.85								;  85
#DEFINE dm_tts_text_row_alt						dm_tts_value_row+.18			; 226
#DEFINE dm_tts_text_col_alt						.86								;  86

; NDL - the same position as TTS
#DEFINE dm_ndl_value_row_norm					dm_tts_value_row				; 208
#DEFINE dm_ndl_value_col_norm					.118							; 118
#DEFINE dm_ndl_value_row_alt					.182							; 182
#DEFINE dm_ndl_value_col_alt					.120							; 120
#DEFINE dm_ndl_text_row							dm_tts_text_row_norm			; 202
#DEFINE dm_ndl_text_column						dm_tts_text_col_norm			;  85

; FTTS (only modded screen)
#DEFINE dm_ftts_value_row						dm_3rdrow_top+.64				; 215
#DEFINE dm_ftts_value_column					.97								;  97

; Grid line (only modded screen)
#DEFINE dm_gassep_row							dm_sep_2_3_row					; 164
#DEFINE dm_gassep_bot							.239							; 239
#DEFINE dm_gassep_column						.78								;  78


;******* Bottom content / Apnea mode *******

#DEFINE dm_apnoe_last_max_depth_text_row		.192							; 192
#DEFINE dm_apnoe_last_max_depth_text_col		.20								;  20
#DEFINE dm_apnoe_last_max_depth_row				.207							; 207
#DEFINE dm_apnoe_last_max_depth_column			.15								;  15

#DEFINE dm_apnoe_surface_time_text_row			.192							; 192
#DEFINE dm_apnoe_surface_time_text_col			.100							; 100
#DEFINE dm_apnoe_surface_time_row				.207							; 207
#DEFINE dm_apnoe_surface_time_column			.80								;  80


;******* Bottom content / Gauge mode *******
#DEFINE dm_gauge_max_depth_text_row				.192
#DEFINE dm_gauge_max_depth_text_col				.25
#DEFINE dm_gauge_max_depth_row					.207
#DEFINE dm_gauge_max_depth_col					.15

#DEFINE dm_gauge_avg_depth_text_row				.192
#DEFINE dm_gauge_avg_depth_text_col				.100
#DEFINE dm_gauge_avg_depth_row					.207
#DEFINE dm_gauge_avg_depth_col					.85



; IV. The last set of parameters is for the menus displayed in dive mode

; Divemode menu
#DEFINE dm_menu_row								.164							; 164  upper row, the frame's top line is the separator
#DEFINE dm_menu_lower							.239							; 239  lower border
#DEFINE dm_menu_left							.0								;   0  left
#DEFINE dm_menu_right							.159							; 159  right

#DEFINE dm_menu_item1_row						dm_menu_row+.1					; 165
#DEFINE dm_menu_item1_column					.9								;   9
#DEFINE dm_menu_item2_row						dm_menu_item1_row+.24			; 189
#DEFINE dm_menu_item2_column					dm_menu_item1_column			;   9
#DEFINE dm_menu_item3_row						dm_menu_item2_row+.24			; 213
#DEFINE dm_menu_item3_column					dm_menu_item1_column			;   9

#DEFINE dm_menu_item4_row						dm_menu_row+.1					; 165
#DEFINE dm_menu_item4_column					.89								;  89
#DEFINE dm_menu_item5_row						dm_menu_item4_row+.24			; 189
#DEFINE dm_menu_item5_column					dm_menu_item4_column			;  89
#DEFINE dm_menu_item6_row						dm_menu_item5_row+.24			; 213
#DEFINE dm_menu_item6_column					dm_menu_item4_column			;  89