diff src/hwos.inc @ 275:653a3ab08062

rename into hwOS
author heinrichsweikamp
date Thu, 07 May 2015 13:11:14 +0200
parents src/ostc3.inc@12ee30cbced9
children dfac47ac2e1d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hwos.inc	Thu May 07 13:11:14 2015 +0200
@@ -0,0 +1,699 @@
+;=============================================================================
+;
+;   File hwos.inc
+;
+;   OSTC Platform definitions
+;
+;   Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
+;=============================================================================
+; HISTORY
+;   2011-05-24 : [jDG] Cleanups from initial Matthias code.
+
+;=============================================================================
+
+        LIST      P=18F87K22	; change also: Configure->SelectDevice from Mplab
+
+;#DEFINE __DEBUG
+
+#include <p18f87k22.inc>
+#include <ports.inc>                        ; Portmap
+
+; Firmware definition
+#DEFINE	softwareversion_x		d'1'		; Software version  XX.YY
+#DEFINE	softwareversion_y		d'79'		; Software version  XX.YY
+#DEFINE softwareversion_beta 	1 			; (and 0 for release)
+; Firmware version will appear in "Change Firmware" style
+#DEFINE firmware_expire_year    .16
+#DEFINE firmware_expire_month   .4
+#DEFINE firmware_expire_day     .1
+
+#DEFINE comm_service_key        0xABCDEF
+
+;-----------------------------------------------------------------------------
+
+#DEFINE	CCP1CON_VALUE		b'00001100'		; PWM1 for LED dimming
+#DEFINE T2CON_ECO           b'00000100'		; 1:1 Postscaler, 1:1 Prescaler, Timer 2 start -> 980Hz (Good compromise of no-flicker and efficiency)
+#DEFINE T2CON_NORMAL        b'00001110'
+#DEFINE T2CON_FASTEST       b'00001110'		; 1:2 Postscaler, 1:16 Prescaler, Timer 2 start -> 1960Hz (no-flicker)
+
+#DEFINE TMR0H_VALUE         .245             ; RX Timeout (~3ms)
+
+; Timing for button hold-down flags
+#DEFINE TMR1H_VALUE_FIRST        .255-.128  ; in steps of 7,8125ms -> 1s
+#DEFINE TMR1H_VALUE_CONT         .255-.32   ; in steps of 7,8125ms -> 0.25s
+#DEFINE TMR1H_VALUE_CONT_DIVE    .255-.64   ; in steps of 7,8125ms -> 0.5s
+
+; Color Definitions: 8Bit RGB b'RRRGGGBB'
+#DEFINE	color_red	    	b'11100000'     ; (7,0,0)
+#DEFINE	color_dark_red	    b'10000101'     ; (4,1,1)
+#DEFINE	color_violet    	b'11101011'     ; (7,2,3)
+#DEFINE	color_blue		    b'11000111'     ; (6,1,3)
+#DEFINE	color_green	        b'00011100'     ; (0,7,0)
+#DEFINE	color_greenish      b'00111110'     ; (1,7,2)
+#DEFINE color_dark_green    b'00111001'     ; (1,6,1)
+#DEFINE	color_yellow 	    b'11111101'     ; (7,7,1)
+#DEFINE	color_white         b'11111111'     ; (7,7,3)
+#DEFINE	color_black         b'00000000'     ; (0,0,0)
+#DEFINE	color_deepblue      b'00000010'     ; (0,0,2)
+#DEFINE	color_grey	        b'11011111'     ; (6,7,3)
+#DEFINE	color_cyan	        b'11011111'     ; (6,7,3)
+#DEFINE	color_lightblue     b'11011011'     ; (6,7,3)
+#DEFINE color_orange        b'11111000'     ; (7,6,0)
+#DEFINE color_pink          b'11111010'     ; (7,6,2)
+
+#DEFINE	FT_TINY             .0
+#DEFINE	FT_SMALL            .1
+#DEFINE	FT_MEDIUM           .2
+#DEFINE	FT_LARGE            .3
+
+#DEFINE	warn_depth          .1
+#DEFINE	warn_cns            .2
+#DEFINE	warn_gf             .3
+#DEFINE	warn_ppo2           .4
+#DEFINE warn_velocity       .5
+#DEFINE warn_ceiling        .6
+#DEFINE	warn_gas_in_gaslist	.7
+#DEFINE	warn_ppo2_hud       .8
+#DEFINE warn_battery        .9
+
+; External O2 cell input parameters
+#DEFINE	min_mv				.80			; = 8mV
+#DEFINE max_mv              .2500       ; = 250mV
+#DEFINE ignore_mv           .3500       ; = 350mV (To suppress ghost readings for long, open cables)
+
+; Profile recording parameters
+#DEFINE	logbook_profile_version	0x23
+#DEFINE	samplingrate_apnoe	.1	; [seconds]
+; Warning: Divisors must be <.16 !
+#DEFINE	div_temperature		.6	; x samplingrate [s]
+#DEFINE	div_deco			.6	; x samplingrate [s]
+#DEFINE	div_gf				.12	; x samplingrate [s]
+#DEFINE	div_ppo2_sensors    .2	; x samplingrate [s]
+#DEFINE	div_decoplan		.12	; x samplingrate [s]
+#DEFINE div_cns				.12	; x samplingrate [s]
+#DEFINE div_tank			.0	; x samplingrate [s]
+; Warning: Information lengths must be <.16 !
+#DEFINE infolength_temperature  .2  ; [byte]
+#DEFINE infolength_deco         .2  ; [byte]
+#DEFINE infolength_gf           .1  ; [byte]
+#DEFINE infolength_ppo2_sensors .9  ; [byte]
+#DEFINE infolength_decoplan     .15 ; [byte]
+#DEFINE infolength_cns          .2  ; [byte]
+#DEFINE infolength_tank         .0  ; [byte]
+
+; "Better Gas" behavior
+; better_gas_window <= minimum_change_depth !
+; minimum_change_depth >=5 !
+#DEFINE	minimum_change_depth	.3 			; [m]
+#DEFINE	better_gas_window_neg   .3			; [m] (Depth above change depth)
+#DEFINE	better_gas_window_pos   .1			; [m] (Depth below change depth, if ppO2<opt_ppO2_max)
+
+; Dive mode limits and thresholds
+#DEFINE	start_dive_threshold 	.100	; [cm]
+#DEFINE	high_altitude_dive_threshold .300;[cm]
+#DEFINE	apnoe_timeout			.15 	; [min]
+#DEFINE divemode_menuview_timeout   .10 ; [s]
+#DEFINE	divemode_timeout		.300	; [s]
+#DEFINE	divemode_menu_timeout	.30		; [s]
+#DEFINE	ppo2_warning_low		.19     ; [cbar] (Default value)
+#DEFINE ppo2_lowest_setting     .16     ; [cbar] (Minimum value)
+#DEFINE	ppo2_display_high		.120	; [cbar]
+#DEFINE	ppo2_warning_high		.160    ; [cbar] (Default value)
+#DEFINE ppo2_highest_setting    .160    ; [cbar] (Max. Value)
+#DEFINE	cns_display_high		.70		; [%]
+#DEFINE	cns_warning_high		.100    ; [%]
+#DEFINE	gf_display_high     	.75		; [%]
+#DEFINE	gf_warning_high         .100    ; [%]
+#DEFINE	depth_warn_mbar 		.13000	; [mbar]
+#DEFINE	wake_up_from_sleep		.1160	; [mbar]
+#DEFINE	gf_display_threshold	.20		; [%]
+#DEFINE simulator_timeout       .15     ; [s]
+#DEFINE sensor_voting_logic_threshold   .20 ; Threshold in 0.01bar
+
+
+; Surface mode limits and thresholds
+#DEFINE	cns_display_surface_high .70	; [%]
+#DEFINE	high_altitude_threshold	 .880	; [mbar]
+#DEFINE	max_surfpressure		 .1080	; [mbar]
+#DEFINE	timeout_surfacemode		 .90	; [s]
+#DEFINE timeout_calibrate_menu   .240   ; [s]
+#DEFINE timeout_ccr_surface      .240   ; [s]
+
+; Decomodel paramters
+#DEFINE no_fly_time_ratio		.60		; [%]
+#DEFINE	deco_distance			.10		; [dm]
+
+; Safety stop parameters
+#DEFINE	safety_stop_length		.180	; [s]
+#DEFINE	safety_stop_start		.510	; [mbar]
+#DEFINE	safety_stop_end			.290	; [mbar]
+#DEFINE	safety_stop_reset		.1010	; [mbar]
+
+; Color-code parameters for the divemode
+#DEFINE	color_code_cns_high		.100	; [%]
+#DEFINE	color_code_gf_warn_high .101	; [%]
+#DEFINE	color_code_velocity_warn_high .10;[m/min]
+
+; Velocity threshold
+#DEFINE	velocity_warning_level_1	.7	; [m/min]
+
+; Battery thresholds
+#DEFINE lithium_36v_empty       .2400   ; [mV] Saft 3,6V LS14500 AA - threshold for battery percent display
+#DEFINE	lithium_36v_low			.2000	; [mV] (Must be bigger then aa_15v_high!)
+#DEFINE	aa_15v_high				.1550	; [mV] Energizer 1,5V E2 AA
+#DEFINE	aa_15v_low				.1100	; [mV] According to Energizer Datasheet EBC-4201R, Page 2
+#DEFINE color_code_battery_low  .10     ; [%]
+#DEFINE battery_show_level      .24     ; [%]
+
+; 3,6V battery sensing data points at 70mA load
+#DEFINE lithium_36v_75          .3000   ; [mV]
+#DEFINE lithium_36v_50          .2900   ; [mV]
+#DEFINE lithium_36v_25          .2600   ; [mV]
+#DEFINE lithium_36v_10          .2500   ; [mV]
+
+#DEFINE	current_sleepmode           .10
+#DEFINE	current_backlight_multi     .115    ; *CCPR1L+current_backlight_offset
+#DEFINE	current_backlight_offset    .216
+#DEFINE	current_speed_eco           .1914
+#DEFINE	current_speed_normal        .4027
+#DEFINE	current_speed_fastest       .5050
+#DEFINE current_ir_reciever         .139
+#DEFINE current_compass             .28
+
+; Brightness thresholds (between zero (off) and 255 (max. power))
+#DEFINE	ambient_light_max_high_36V	.175
+#DEFINE	ambient_light_max_high_cr  	.240
+#DEFINE	ambient_light_max_high_15V  .150
+#DEFINE	ambient_light_min_high		.35
+#DEFINE	ambient_light_max_medium 	.135
+#DEFINE	ambient_light_min_medium 	.25
+#DEFINE	ambient_light_max_eco		.75
+#DEFINE	ambient_light_min_eco		.10         ; Must be the lowest value!
+
+; IR Link timeout
+#DEFINE ir_timeout_value            .64         ; multiples of 62,5ms
+
+; Gaslist hard-coded limits
+#DEFINE gaslist_min_o2              .7          ; Minimum O2 [%]
+#DEFINE gaslist_max_change_depth    .99         ; Max. change depth [m]
+#DEFINE gaslist_sp_stepsize         .10         ; Steps for Setpoint Setup [cbar]
+#DEFINE gaslist_sp_max              .160        ; Max. Setpoint [cbar]
+#DEFINE gaslist_sp_min              .50         ; Min. Setpoint [cbar]
+
+; Compass display
+#DEFINE compass_fast_treshold       .9          ; show new heading instantly if new and old > compass_fast_treshold
+#DEFINE compass_averaging           .10         ; numbers of extra averaging
+
+; Hardware defines
+#DEFINE rechargeable        hardware_flag,0     ; OSTC has rechargeable battery with battery management chip
+#DEFINE ambient_sensor      hardware_flag,1     ; OSTC has an ambient sensor
+#DEFINE analog_o2_input     hardware_flag,2     ; OSTC has analog inputs and S8 digital
+#DEFINE optical_input       hardware_flag,3     ; OSTC has an digital optical input
+#DEFINE ble_available       hardware_flag,4     ; OSTC has an BLE module
+;unused
+;unused
+;unused
+
+;---------------------------- Macros ------------------------------------
+
+TSTOSS  macro opt_reg           ; TeST Option Skip if not Zero
+    movff   opt_reg,WREG
+    tstfsz  WREG,A
+    bra     $+4
+    endm
+
+;---------------------------- Bank0 DATA ------------------------------------
+isr_backup  equ		    0x60
+isr_backup  udata_ovr   isr_backup    ; Reserved space for interupt data
+
+;---- Backup for general registers
+isr_prod    res 2
+
+;---- MS5541 subroutines
+amb_pressure	res	2
+temperature		res	2
+
+C1              res 2           ; Decoded calibration data
+C2              res 2
+C3              res 2
+C4              res 2           ; Here: C4-250
+C5              res 2           ; Here: Reference Temperature UT1 = 8*C5 + 10000 (u16 range 10.000 .. +42.760)
+C6              res 2
+D1              res 2           ; raw pressure
+D2              res 2           ; raw temperature
+xdT				res	2
+xdT2			res	2
+OFF				res	2
+SENS			res	2
+dLSB            res 1           ;Pressure sensor interface 
+dMSB            res 1
+clock_count     res 1
+sensor_state_counter res 1		; counts to eight for state maschine
+amb_pressure_avg res 2
+temperature_avg	res	2
+minimum_temperature	res 2		; minimum temperature
+last_temperature	res 2
+last_pressure	res 2
+last_pressure_velocity	res 2   ; For velocity
+last_surfpressure res 2
+last_surfpressure_15min res 2
+last_surfpressure_30min res 2
+rel_pressure	res 2
+sim_pressure	res 2   ; hold simulated pressure in mbar if in Simulator mode
+max_pressure	res 2
+avr_rel_pressure	res 2
+avr_rel_pressure_total res 2
+;---- Data for ISR math subroutines
+isr_xC          res 4
+isr_xA          res 2
+isr_xB          res 2
+
+;---- Data for ISR routines
+isr1_temp       res 1           ; ISR temp variable, used in ms5541.asm, isr_rtcc, isr_battery_gauge
+isr2_temp       res 1           ; ISR temp variable, used isr_battery_gauge
+
+;---- Display brightness
+max_CCPR1L		res	1			; Max. brightness value for CCPR1L
+
+; Battery gauge (nAs, nC)
+battery_gauge	res	6			; 48Bit -> 78Ah max...
+
+; IR/S8-Link
+ir_s8_buffer        res .18     ; temporally used in get_calibration_data for the raw (packed) calibration data
+ir_s8_counter       res 1
+ir_S8_timeout       res 1       ; Timeout for valid data
+
+; Compass raw data
+compass_DX          res 2
+compass_DY          res 2
+compass_DZ          res 2
+
+accel_DX            res 2
+accel_DY            res 2
+accel_DZ            res 2
+
+; Compass FILTERED data
+compass_DX_f        res 2
+compass_DY_f        res 2
+compass_DZ_f        res 2
+
+accel_DX_f          res 2
+accel_DY_f          res 2
+accel_DZ_f          res 2
+
+; Compass calibration data
+compass_CX_f        res 2
+compass_CY_f        res 2
+compass_CZ_f        res 2
+
+; Compass more data
+compass_heading     res 2       ; Corrected heading (in 1°) : -180 .. 180
+compass_heading_old res 2       ; Old heading (For smoother display)
+compass_heading_shown res 2     ; Displayed heading
+;compass_roll        res 2       ; Rotation around the X axis
+;compass_pitch       res 2       ; Rotation arounf the Y axis
+
+compass_a           res 2       ; Tmp data for Q15 arithmetics
+compass_b           res 2
+compass_r           res 3
+
+CNS_start           res 2       ; CNS value at beginning of dive
+GF_start            res 1       ; GF value at beginning of dive
+
+;---- Data for graphical compass
+xRD             res 2       ; virtual compass ruler offset
+xRDr            res 2       ; virtual compass ruler offset - right end
+xRD180          res 2       ; virtual compass ruler offset for the -180 marker
+xLO             res 1       ; lo backup to prevent trashing
+xHI             res 1       ; hi backup to prevent trashing
+xCM             res 1       ; compass bearing relative position
+compass_bearing res 2       ; this is where the bearing menu stores the actual heading for bearing
+
+;---------------------------- Common DATA ------------------------------------
+
+common          equ         0x100       ; Alias for "banksel common"
+common          udata_ovr   common      ; Bank1 general variables
+
+;---- Time and Date
+secs         	   		res 1           
+mins            		res 1
+hours           		res 1
+day             		res 1
+month           		res 1
+year            		res 1
+surface_interval		res 2
+
+flag1            		res 1
+flag2           		res 1
+flag3           		res 1
+flag4           		res 1
+flag5           		res 1
+flag6           		res 1
+flag7           		res 1
+flag8           		res 1
+flag9           		res 1
+flag10           		res 1
+flag11           		res 1
+flag12           		res 1
+
+hardware_flag           res 1           ; hardware descriptor flag
+
+temp1			res 1
+temp2			res 1
+
+;---- Interface to wait macros
+wait_temp       res 1
+waitms_temp     res 1
+
+;---- Interface to graphic subroutines (aa_wordprocessor, color_processor, ...)
+win_leftx2      res 1
+win_top         res 1
+win_width       res 2
+win_height      res 1
+win_bargraph    res 1
+win_color1      res 1
+win_color2      res 1
+win_font        res 1
+
+;---- Draw subroutines
+tft_temp4       res 1
+tft_temp3       res 1
+tft_temp2       res 1
+tft_temp1       res 1
+
+;---- data conversion subroutines
+lo              res 1
+hi              res 1
+up				res 1
+
+;---- RS232 temp variables
+uart1_temp      res 1
+uart2_temp      res 1
+
+;---- Data for math subroutines
+divA            res 2
+divB            res 1
+xC              res 4
+xA              res 2
+xB              res 2
+sub_c           res 2
+sub_a           res 2
+sub_b           res 2
+
+;---- Data for conversion subroutines
+cvt_flags       res 1
+ignore_digits   res 1
+
+#define leftbind            cvt_flags,0
+#define ignore_digit3       cvt_flags,1
+#define ignore_digit4       cvt_flags,2
+#define ignore_digit5       cvt_flags,3
+#DEFINE enable_screen_dumps cvt_flags,4 ; =1: Ignore vin_usb, wait for "l" command (Screen dump)
+
+;---- Misc.
+speed_setting        	res 1           ; =1: Eco, =2: Normal, =3: Fastest
+nofly_time              res 2   		; No Fly time in Minutes (Calculated after Dive)
+timeout_counter 		res 1
+timeout_counter2		res 1
+timeout_counter3		res 1
+batt_voltage			res 2			; Battery voltage in mV
+batt_percent            res 1           ; Battery in percent (1-100)
+ambient_light			res 2			; ambient_light level
+lo_temp					res 1
+hi_temp					res 1
+desaturation_time		res 2  
+convert_value_temp      res 3           ; used in menu_battery_state_convert_date
+active_gas				res 1
+active_diluent          res 1           ; As a backup when switching back from Bailout to CCR
+warning_counter			res 1			; Counts amount of warning in divemode
+warning_counter_backup	res 1			; Backup of warning_counter
+warning_page            res 1           ; current # of warning page
+
+; Remind history for menu processor (and such):
+menustack               res 5           ; menu stack
+menupos					res 1           ; Logbook and divemode menu
+menupos2				res 1           ; For dive mode simulator and pre-menu
+menupos3				res 1           ; For Customviews
+menupos4				res 1           ; For divemode menu
+
+; Apnoe stuff that must be in bank common
+apnoe_mins				res 1
+apnoe_secs				res 1
+apnoe_max_pressure		res 2
+
+; Divemode
+divemins				res 2
+divesecs				res 1
+samplingrate            res 1
+samplesecs_value		res 1
+divisor_temperature		res 1
+divisor_deco			res 1
+divisor_gf				res 1
+divisor_ppo2_sensors	res 1
+divisor_decoplan		res 1
+divisor_cns				res 1
+divisor_tank            res 1
+average_depth_hold      res 4
+average_depth_hold_total res 4
+total_divetime_seconds	res 2
+average_divesecs        res 2   ; For the resettable stopwatch
+decodata				res 2
+apnoe_timeout_counter 	res 1
+apnoe_surface_mins 		res 1
+apnoe_surface_secs		res 1
+
+; Profile storing
+AlarmType			res 1
+samplesecs			res 1
+EventByte			res 1
+EventByte2			res 1
+ProfileFlagByte		res 1
+
+; External flash
+ext_flash_address		res 3	; 24bit Address
+ext_flash_log_pointer	res 3	; 24bit Address for logbook profile storing
+ext_flash_dive_counter  res 3   ; 24bit Counter for dive length (increased in write_byte_ext_flash_plus)
+
+; I2C
+i2c_temp            res 2       ; Temp
+
+; O2 Sensor data
+o2_mv_sensor1       res 2       ; in 0.1mV steps
+o2_mv_sensor2       res 2       ; in 0.1mV steps
+o2_mv_sensor3       res 2       ; in 0.1mV steps
+o2_ppo2_sensor1     res 1       ; Sensor1 ppO2 (in 0.01bar steps)
+o2_ppo2_sensor2     res 1       ; Sensor2 ppO2 (in 0.01bar steps)
+o2_ppo2_sensor3     res 1       ; Sensor3 ppO2 (in 0.01bar steps)
+hud_battery_mv      res 2
+hud_status_byte     res 1
+;Status Byte/
+#DEFINE hud_connection_ok       hud_status_byte,0	;Bit0 = 1 -> HUD connection ok
+;Bit1 = 1 -> HUD is calibrated
+;Bit2 = 1 -> HUD Battery is low (<3000mV)
+#DEFINE	sensor1_active          hud_status_byte,3	;=1: Sensor1 is active
+#DEFINE	sensor2_active          hud_status_byte,4   ;=1: Sensor2 is active
+#DEFINE	sensor3_active          hud_status_byte,5   ;=1: Sensor3 is active
+;Bit6 unused in stand-alone HUD
+;Bit7 unused in stand-alone HUD
+
+sensor_setpoint     res 1       ; sensor ppo2 in 0.01bar for deco routine
+
+better_gas_number	res 1       ; number (1-5) of the "better gas" in divemode, =0: no better gas available
+customview_divemode res 1       ; keeps last custom view
+customview_surfmode res 1
+safety_stop_countdown	res 1	; counts seconds of safety stop
+
+;---------------------------- TMP DATA ---------------------------------------
+; Space for various overlayed data from color, word, menu processors, etc.
+; 
+
+tmp             udata_ovr   0x1A0       ; Bank1 shared TMP space
+tmp             equ         0x1A0       ; Alias for CBLOCK directive.
+                res         0x060       ; RESERVED area.
+
+;---------------------------- Common2 DATA ------------------------------------
+
+common2          equ         0xA00       ; Alias for "banksel common"
+common2          udata_ovr   common2     ; Bank1 general variables
+
+s8_rawdata_sensor1   res 3  ; 24bit A/D raw data from S8 HUD sensor 1
+s8_rawdata_sensor2   res 3  ; 24bit A/D raw data from S8 HUD sensor 2
+s8_rawdata_sensor3   res 3  ; 24bit A/D raw data from S8 HUD sensor 3
+
+;-----------------------------------------------------------------------------
+; Reserve BANK2 for general purpose buffer (strings, images, etc).
+; NOTE: Needs to be aligned with a bank (LOW(buffer)==0).
+buffer          udata_ovr   0x200
+buffer          res .256
+
+opt_table       equ         0xE00
+opt_table       udata_ovr   opt_table
+
+;---- Dive Options
+opt_gas_O2_ratio        res 5   ; Needed because deco gaslist use N2
+opt_dil_O2_ratio        res 5   ; Must be in line with opt_gas_O2_ratio
+opt_gas_He_ratio        res 5   ; He ratio Gas1-5
+opt_dil_He_ratio        res 5   ; Must be in line with opt_gas_He_ratio
+opt_gas_type            res 5   ; 0=Disabled, 1=First, 2=Travel, 3=Deco
+opt_dil_type            res 5   ; 0=Disabled, 1=First, 2=Normal
+opt_dive_mode           res 1   ; 0=OC, 1=CC, 2=Gauge, 3=Apnea
+opt_ppO2_max            res 1   ; PPO2 Max for MOD calculation and color coding in divemode
+opt_ccr_mode            res 1   ; =0: Fixed SP, =1: Sensor
+opt_ppO2_min            res 1   ; PPO2 min for Sensors and color coding in divemode
+opt_OC_bail_gas_change  res 5   ; Gas change depths OC/Bailout
+;---- Managing Settings
+
+opt_brightness          res 1   ; =0: Eco, =1:Medium, =2:Full
+opt_salinity            res 1	; 0-5%
+#DEFINE opt_name_length    .60  ; Custom text string 5 rows with 12 chars
+opt_name                res opt_name_length
+opt_language            res 1   ; Current language. 0=EN, 1=DE, 2=FR, 3=SP
+opt_units               res 1   ; 0:m/°C, 1:ft/°F
+opt_dateformat			res	1	; =0:MMDDYY, =1:DDMMYY, =2:YYMMDD
+opt_last_stop           res 1   ; =3:3m, =4:4m, =5:5m, =6:6m
+opt_aGF_high            res 1   ; Alternative GF HIGH
+opt_aGF_low             res 1   ; Alternative GF LOW
+opt_GF_high             res 1   ; GF HIGH
+opt_GF_low              res 1   ; GF LOW
+opt_enable_aGF          res 1   ; =1: aGF can be selected underwater
+opt_compass_gain        res 1   ; 0-7 (230LSB/Gauss to 1370LSB/Gaus)
+opt_sampling_rate       res 1   ; =1: 10s, =0: 2s
+opt_dive_color_scheme   res 1   ; 0-3
+opt_pressure_adjust     res 1   ; SIGNED int (two's complement), -20/+20mbar max.
+opt_enable_safetystop   res 1   ; =1: A safety stop is shown
+opt_calibration_O2_ratio    res 1   ; %O2 of calibration gas
+opt_x_s1                res	2	; calibration factor (Not stored in EEPROM)
+opt_x_s2                res	2	; calibration factor (Not stored in EEPROM)
+opt_x_s3                res	2	; calibration factor (Not stored in EEPROM)
+opt_sensor_fallback     res 1   ; =1: Fallback to SP1 when sensor is lost
+opt_flip_screen         res 1   ; =1: Flip the screen
+opt_cR_button_left      res 1   ; Left button sensitivity (cR hardware)
+opt_cR_button_right     res 1   ; Right button sensitivity (cR hardware)
+
+;-----------------------------EEPROM DATA ------------------------------------
+; Automatic reset of all options when this is changed:
+#define    eeprom_opt_serial   0x0005   ; Version 0.5
+
+;-----------------------------------------------------------------------------
+; Flags
+#DEFINE	switch_left				flag1,0
+#DEFINE	switch_right			flag1,1			
+#DEFINE neg_flag				flag1,2	; e.g. sub16 (sub_c = sub_a - sub_b)
+#DEFINE pressure_refresh 		flag1,3	; =1: A new pressure/temperature is available
+#DEFINE	sleepmode				flag1,4	; =1: In Sleepmode
+#DEFINE	tft_is_dimming			flag1,5	; =1: The TFT is dimming, ignore light sensor
+#DEFINE	display_velocity		flag1,6	; =1: show velocity
+#DEFINE	no_sensor_int			flag1,7	; =1: block any further access to pressure sensor
+
+#DEFINE	rs232_recieve_overflow	flag2,0	; =1: An RS232 timeout overflow occoured
+#DEFINE	stored_gas_changed		flag2,1	; =1: Stored Gas changed
+#DEFINE	high_altitude_mode		flag2,2	; =1: Unit was manually turned on with ambient pressure <880mbar
+#DEFINE	FLAG_apnoe_mode			flag2,3	; =1: Apnoe mode selected
+#DEFINE	restore_deco_data		flag2,4	; =1: Restore deco data (After simulation)
+#DEFINE premenu					flag2,5	; =1: Premenu/Divemenu selected
+#DEFINE	menubit					flag2,6	; menu
+#DEFINE	simulatormode_active	flag2,7	; =1: Simulator mode active, override pressure sensor readings
+
+#DEFINE divemode_menu           flag3,0	; =1: Divemode menu is shown
+#DEFINE	onesecupdate			flag3,1	; =1 after any second
+#DEFINE twosecupdate			flag3,2	; =1: New two-second update
+#DEFINE	toggle_customview		flag3,3	; =1: Next customview
+#DEFINE	oneminupdate			flag3,4	; =1 after any minute
+#DEFINE	divemode				flag3,5	; =1: in Divemode
+#DEFINE	battery_is_36v          flag3,6	; =1: 3,6V Battery is in use
+#DEFINE	warning_active          flag3,7	; =1: A warning is active in divemode or surfacemode
+
+#DEFINE	better_gas_available	flag4,0	; =1: A better gas is available
+#DEFINE	blinking_better_gas		flag4,1	; =1: Gas is blinking
+#DEFINE menuview                flag4,2 ; =1: A menuview is shown in divemode (e.g. "Menu?")
+#DEFINE quarter_second_update   flag4,3 ; =1: A new 1/4 second has begun
+#DEFINE divemode_gaschange      flag4,4 ; =1: The gas will change very soon
+#DEFINE	decostop_active			flag4,5	; =1: Decompression stop shown
+#DEFINE depth_greater_100m      flag4,6 ; =1: Current Depth > 100m
+#DEFINE	realdive				flag4,7	; =1: A real dive during divemode
+
+#DEFINE	dive_warning_displayed	flag5,0	; =1: The warning sign is shown
+#DEFINE	reset_average_depth		flag5,1	; =1: Reset the average depth
+#DEFINE	store_sample			flag5,2	; =1: Store a new sample
+#DEFINE	divemode2				flag5,3	; =1: Dive longer then one minute
+#DEFINE	FLAG_active_descent		flag5,4	; Used in Apnoe mode
+#DEFINE	event_occured			flag5,5	; =1: An event occured, store it!
+#DEFINE	divemode_menu_active	flag5,6 ; =1: The divemode menu is shown
+#DEFINE	temp_changed			flag5,7	; =1: The temperature changed
+
+#DEFINE gas6_changed            flag6,0	; =1: Gas 6 has been selected/changed underwater
+#DEFINE	onehourupdate			flag6,1	; =1: A new hour has just begun
+#DEFINE	settime_setdate			flag6,2	; =1: In the Set Time or Set Date Menu
+#DEFINE setpoint_changed        flag6,3	; =1: Setpoint has been changed
+#DEFINE second_row_warning      flag6,4	; =1: The second row contains a warning
+#DEFINE FLAG_ccr_mode           flag6,5	; =1: CCR mode (Fixed ppO2 or Sensor) active
+#DEFINE dive_hud1_displayed     flag6,6 ; =1: The Sensor1 HUD reading is displayed
+#DEFINE dive_hud2_displayed     flag6,7 ; =1: The Sensor2 HUD reading is displayed
+
+#DEFINE dive_hud3_displayed     flag7,0 ; =1: The Sensor3 HUD reading is displayed
+#DEFINE no_more_divesecs        flag7,1 ; =1: Do no longer show seconds in divemode
+#DEFINE FLAG_gauge_mode         flag7,2 ; =1: In Gauge mode
+#DEFINE ignore_last_edited_gas  flag7,3 ; Used in gaslist_cleanup_list
+#DEFINE ccr_diluent_setup       flag7,4 ; =1: Setting up Diluents ("Gas6-10")
+#DEFINE menu_show_sensors       flag7,5 ; =1: Update HUD data in menu
+#DEFINE short_gas_decriptions   flag7,6 ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint
+#DEFINE max_depth_greater_100m  flag7,7 ; =1: Max. Depth > 100m
+
+#DEFINE is_bailout              flag8,0 ; =1: Bailout
+#DEFINE is_bailout_menu         flag8,1 ; =1: Bailout
+#DEFINE toggle_gf               flag8,2 ; =1: Toggle GF/aGF
+#DEFINE use_agf                 flag8,3 ; =1: Use aGF (instead of GF)
+#DEFINE battery_removed_in_usb  flag8,4 ; =1: The battery has been removed in USB
+#DEFINE adc_running             flag8,5 ; =1: The ADC is in use
+#DEFINE comm_service_enabled    flag8,6 ; =1: COMM Service mode unlocked
+#DEFINE compass_enabled         flag8,7 ; =1: The compass and accelerometer chip is active
+
+#DEFINE compass_fast_mode       flag9,0 ; =1: The compass is in fast mode
+#DEFINE in_color_menu           flag9,1 ; =1: In the color scheme menu
+#DEFINE bailoutgas_event        flag9,2 ; =1: bailout was selected or a gaschange during bailout
+#DEFINE win_invert              flag9,3 ; =1: Invert font output
+#DEFINE show_safety_stop		flag9,4	; =1: Show the safety stop
+#DEFINE	safety_stop_active      flag9,5	; =1: The safety stop is currently displayed
+#DEFINE new_s8_data_available   flag9,6 ; =1: New data frame recieved
+#DEFINE print_compass_label     flag9,7 ; =1: print the graphical comapss label
+
+#DEFINE s8_digital              flag10,0; =1: Digital I/O
+#DEFINE menu_show_sensors2      flag10,1; =1: Update mV data in calibration menu
+#DEFINE use_O2_sensor1          flag10,2; =1: Use this sensor for deco
+#DEFINE use_O2_sensor2          flag10,3; =1: Use this sensor for deco
+#DEFINE use_O2_sensor3          flag10,4; =1: Use this sensor for deco
+#DEFINE setpoint_fallback       flag10,5; =1: Fallback to SP1 due to external O2 sensor failure
+#DEFINE	blinking_setpoint       flag10,6; =1: SP is blinking
+#DEFINE flip_screen             flag10,7; =1: Screen is flipped by 180°
+
+#DEFINE sensor1_calibrated_ok   flag11,0; =1: This sensor has been calibrated ok
+#DEFINE sensor2_calibrated_ok   flag11,1; =1: This sensor has been calibrated ok
+#DEFINE sensor3_calibrated_ok   flag11,2; =1: This sensor has been calibrated ok
+#DEFINE voting_logic_sensor1    flag11,3; =1: This sensor is within the voting logic threshold
+#DEFINE voting_logic_sensor2    flag11,4; =1: This sensor is within the voting logic threshold
+#DEFINE voting_logic_sensor3    flag11,5; =1: This sensor is within the voting logic threshold
+#DEFINE cc_active               flag11,6; =1: Constant Current active (cR Hardware)
+#DEFINE cv_active               flag11,7; =1: Constant Voltage active (cR Hardware)
+
+#DEFINE compass_bearing_set     flag12,0    ; bearing set
+#DEFINE compass_bearing_eq      flag12,1    ; bearing is in direction? do not show << or >> 
+#DEFINE compass_bearing_lft     flag12,2    ; bearing is to the left/<< if set, otherwise to the right/>>
+#DEFINE compass_bearing_vis     flag12,3    ; bearing is visible? (either ahead or behind/-180°)
+#DEFINE compass_bearing_ahd     flag12,4    ; bearing is ahead or behind?
+
+;=============================================================================
+; C-code Routines
+; PART 2
+    extern deco_calc_CNS_decrease_15min    
+    extern deco_calc_CNS_fraction
+    extern deco_calc_desaturation_time
+    extern deco_calc_hauptroutine
+    extern deco_calc_tissue
+    extern deco_calc_percentage
+    extern deco_calc_wo_deco_step_1_min
+    extern deco_calc_dive_interval
+    extern deco_clear_CNS_fraction
+    extern deco_clear_tissue
+    extern deco_pull_tissues_from_vault
+    extern deco_push_tissues_to_vault
+	
\ No newline at end of file