Mercurial > public > hwos_code
diff src/hwos.inc @ 582:b455b31ce022
work on 2.97 stable
author | heinrichsweikamp |
---|---|
date | Mon, 26 Feb 2018 16:40:28 +0100 |
parents | 1ab93aca7fa9 |
children | e81cf407261a |
line wrap: on
line diff
--- a/src/hwos.inc Sun Feb 25 18:25:38 2018 +0100 +++ b/src/hwos.inc Mon Feb 26 16:40:28 2018 +0100 @@ -1,6 +1,6 @@ ;============================================================================= ; -; File hwos.inc REFACTORED VERSION V2.95a1 +; File hwos.inc REFACTORED VERSION V2.98 ; ; OSTC Platform definitions ; @@ -11,173 +11,156 @@ ;============================================================================= - LIST P=18F87K22 ; change also: Configure->SelectDevice from Mplab + LIST P=18F87K22 ; change also: Configure->SelectDevice from Mplab ;#DEFINE __DEBUG -;#DEFINE french_italian ; If defined, use french and italian instead of english and german - +;#DEFINE french_italian ; If defined, use french and italian instead of english and german + #include <p18f87k22.inc> -#include <ports.inc> ; Portmap +#include <ports.inc> ; Portmap ; Firmware definition -#DEFINE softwareversion_x d'2' ; Software version XX.YY -#DEFINE softwareversion_y d'97' ; Software version XX.YY -#DEFINE softwareversion_beta 0 ; (and 0 for release) +#DEFINE softwareversion_x .2 ; Software version XX.YY +#DEFINE softwareversion_y .97 ; Software version XX.YY +#DEFINE softwareversion_beta .0 ; (and 0 for release) ; Firmware version will appear in "Change Firmware" style -#DEFINE firmware_expire_year .18 -#DEFINE firmware_expire_month .2 -#DEFINE firmware_expire_day .22 +#DEFINE firmware_expire_year .19 +#DEFINE firmware_expire_month .2 +#DEFINE firmware_expire_day .24 -#DEFINE comm_service_key 0xABCDEF +#DEFINE comm_service_key 0xABCDEF +;-----------------------------EEPROM DATA ------------------------------------ +; Automatic reset of all options when this is changed: +#define eeprom_opt_serial 0x0006 ; Version 0.6 ;----------------------------------------------------------------------------- -#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) +#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) ; 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 +#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 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_ceiling .5 -#DEFINE warn_gas_in_gaslist .6 -#DEFINE warn_ppo2_hud .7 -#DEFINE warn_battery .8 -#DEFINE warn_stop .9 +#DEFINE FT_TINY .0 +#DEFINE FT_SMALL .1 +#DEFINE FT_MEDIUM .2 ; not used +#DEFINE FT_LARGE .3 ; not used ; 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) +#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 0x24 -#DEFINE samplingrate_apnoe .1 ; [seconds] +#DEFINE logbook_profile_version 0x24 +#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] +#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] +#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) +#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_default .5 ; [min] -#DEFINE divemode_menu_timeout .30 ; [s] +#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_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] ## V2.94 moved to p2_deco.c -#DEFINE ppo2_warning_high .160 ; [cbar] (Default value) for bottom/travel gases -#DEFINE ppo2_warning_high_deco .160 ; [cbar] (Default value) for deco gases -#DEFINE ppo2_highest_setting .160 ; [cbar] (Max. Value) for bottom/travel gases -#DEFINE ppo2_highest_setting_deco .160 ; [cbar] (Max. Value) for deco gases +#DEFINE ppo2_warning_low_lowest .16 ; [cbar] (Min. value) for minimum on OC +#DEFINE ppo2_warning_low_default .19 ; [cbar] (Default value) for minimum on OC +#DEFINE ppo2_warning_low_highest .21 ; [cbar] (Max. value) for minimum on OC + +#DEFINE ppo2_warning_loop_lowest .20 ; [cbar] (Min. value) for minimum on loop +#DEFINE ppo2_warning_loop_default .40 ; [cbar] (Default Value) for minimum on loop +#DEFINE ppo2_warning_loop_highest .60 ; [cbar] (Max. value) for minimum on loop -; NEW ## min ppO2 CC -#DEFINE ppo2_warning_low_cc .40 ; [cbar] Default value for loop -#DEFINE ppo2_warning_low_cc_min .20 ; [cbar] Default value for loop -#DEFINE ppo2_warning_low_cc_max .60 ; [cbar] Default value for loop +#DEFINE ppo2_warning_high_lowest .120 ; [cbar] (Min. value) for maximum in none-deco phase +#DEFINE ppo2_warning_high_default .140 ; [cbar] (Default value) for maximum in none-deco phase +#DEFINE ppo2_warning_high_highest .160 ; [cbar] (Max. value) for maximum in none-deco phase -;#DEFINE cns_display_high .70 ; [%] ## V2.94 moved to p2_deco.c -;#DEFINE cns_warning_high .100 ; [%] ## V2.94 moved to p2_deco.c -;#DEFINE gf_display_high .75 ; [%] ## V2.94 moved to p2_deco.c -;#DEFINE gf_warning_high .100 ; [%] ## V2.94 moved to p2_deco.c -#DEFINE depth_warn_mbar .13000 ; [mbar] -#DEFINE wake_up_from_sleep .1160 ; [mbar] -#DEFINE gf_display_threshold .20 ; [%] -#DEFINE simulator_timeout .15 ; [s] +#DEFINE ppo2_warning_deco_lowest .120 ; [cbar] (Min. value) for maximum in deco phase +#DEFINE ppo2_warning_deco_default .160 ; [cbar] (Default Value) for maximum in deco phase +#DEFINE ppo2_warning_deco_highest .160 ; [cbar] (Max. value) for maximum in deco phase -#DEFINE sensor_voting_logic_threshold .10 ; Threshold in 0.01bar +#DEFINE depth_warn_mbar .13000 ; [mbar] +#DEFINE wake_up_from_sleep .1160 ; [mbar] +#DEFINE simulator_timeout .15 ; [s] + +#DEFINE sensor_voting_logic_threshold .10 ; 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] +#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 deco_distance .10 ; [dm] +#DEFINE deco_distance .10 ; [dm] ; Color-code parameters for the divemode -;#DEFINE color_code_cns_high .100 ; [%] ## V2.94 moved to p2_deco.c -;#DEFINE color_code_gf_warn_high .101 ; [%] ## V2.94 moved to p2_deco.c -#DEFINE color_code_velocity_warn_high .11 ;[m/min] -#DEFINE color_code_velocity_attn_high .10 ;[m/min] - -; Velocity threshold -#DEFINE velocity_display_threshold_1 .3 ; [m/min] +#DEFINE color_code_velocity_warn_high .11 ; [m/min] +#DEFINE color_code_velocity_attn_high .10 ; [m/min] +#DEFINE velocity_display_threshold_1 .3 ; [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 ; [%] +#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 lithium_36v_75 .3000 ; [mV] +#DEFINE lithium_36v_50 .2900 ; [mV] +#DEFINE lithium_36v_25 .2600 ; [mV] +#DEFINE lithium_36v_10 .2500 ; [mV] ; Capacity for 2.4Ah Saft LS14500 and 0.8Ah Panasonic UR14500P ; battery_gauge:6 is nAs @@ -186,719 +169,799 @@ ; or b) devide through 121 -> Result is in percent of a 0.8Ah Battery ; For internal battery gauging -#DEFINE internal_saft_capacity .364 -#DEFINE internal_panasonic_capacity .121 +#DEFINE internal_saft_capacity .364 +#DEFINE internal_panasonic_capacity .121 ; For gauge IC -#DEFINE saft_capacity .281 ; 2.4Ah/0.085mAh/100 [%] -#DEFINE saft_offset .37300 ; 65536-(2.4Ah/0.085mAh) +#DEFINE saft_capacity .281 ; 2.4Ah/0.085mAh/100 [%] +#DEFINE saft_offset .37300 ; 65536-(2.4Ah/0.085mAh) -#DEFINE panasonic_capacity .94 ; 0.8Ah/0.085mAh/100 [%] -#DEFINE panasonic_offset .56124 ; 65536-(0.8Ah/0.085mAh) +#DEFINE panasonic_capacity .94 ; 0.8Ah/0.085mAh/100 [%] +#DEFINE panasonic_offset .56124 ; 65536-(0.8Ah/0.085mAh) + +#DEFINE ncr18650_capacity .364 ; 3.1Ah/0.085mAh/100 [%] +#DEFINE ncr18650_offset .29065 ; 65536-(3.1Ah/0.085mAh) -#DEFINE ncr18650_capacity .364 ; 3.1Ah/0.085mAh/100 [%] -#DEFINE ncr18650_offset .29065 ; 65536-(3.1Ah/0.085mAh) - -#DEFINE ur16650_capacity .271 ; 2.3Ah/0.085mAh/100 [%] -#DEFINE ur16650_offset .38477 ; 65536-(2.3Ah/0.085mAh) - -#DEFINE current_sleepmode .31 -#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 +#DEFINE ur16650_capacity .271 ; 2.3Ah/0.085mAh/100 [%] +#DEFINE ur16650_offset .38477 ; 65536-(2.3Ah/0.085mAh) + +#DEFINE current_sleepmode .31 +#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_receiver .139 +#DEFINE current_compass .28 ; Brightness thresholds (between zero (off) and 255 (max. power)) -#DEFINE ambient_light_max_high_36V .170 -#DEFINE ambient_light_max_high_cr .240 -#DEFINE ambient_light_max_high_15V .140 -#DEFINE ambient_light_min_high .35 -#DEFINE ambient_light_max_medium .125 -#DEFINE ambient_light_min_medium .25 -#DEFINE ambient_light_max_eco .70 -#DEFINE ambient_light_min_eco .10 ; Must be the lowest value! +#DEFINE ambient_light_max_high_36V .170 +#DEFINE ambient_light_max_high_cr .240 +#DEFINE ambient_light_max_high_15V .140 +#DEFINE ambient_light_min_high .35 +#DEFINE ambient_light_max_medium .125 +#DEFINE ambient_light_min_medium .25 +#DEFINE ambient_light_max_eco .70 +#DEFINE ambient_light_min_eco .10 ; must be the lowest value! ; IR Link timeout -#DEFINE ir_timeout_value .64 ; multiples of 62,5ms +#DEFINE ir_timeout_value .64 ; multiples of 62,5ms ; Sp control constants -#DEFINE surface_sp .50 ; in cbar +#DEFINE surface_sp .50 ; in cbar ; 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] +#DEFINE gaslist_min_o2 .5 ; Minimum O2 [%] +#DEFINE gaslist_max_He .100-gaslist_min_o2 ; Maximum He [%] + +#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 battery_gauge_available hardware_flag,0 ; OSTC has rechargeable battery with battery management chip -#DEFINE ambient_sensor hardware_flag,1 ; OSTC has an ambient light 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 -#DEFINE ostc_rx_present hardware_flag,5 ; OSTC_RX circuity present -;unused -;unused - -; Hardware flag byte: -; BIT0 = OSTC has rechargeable battery with battery management chip -; BIT1 = OSTC has an ambient light sensor -; BIT2 = OSTC has analog inputs and S8 digital -; BIT3 = OSTC has an digital optical input -; BIT4 = OSTC has an BLE module -; BIT5 = OSTC_RX circuity present -; BIT6 = unused -; BIT7 = 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 +#DEFINE compass_fast_treshold .9 ; show new heading instantly if new and old > compass_fast_treshold +#DEFINE compass_averaging .10 ; numbers of extra averaging -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 -avg_rel_pressure res 2 -avg_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 +; Bit Masks for communication with p2_deco.c - char_O_deco_status +#define DECO_STATUS_MASK .3 -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 around 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 - -speed_setting res 1 ; =1: Eco, =2: Normal, =3: Fastest - -;---- 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 +; Bit Flags for communication with p2_deco.c - char_O_deco_status +#define DECO_STATUS_0_FLAG .0 +#define DECO_STATUS_1_FLAG .1 +#define DECO_MODE_LOOP_FLAG .2 +#define DECO_MODE_PSCR_FLAG .3 +#define DECO_PLAN_FLAG .4 +#define DECO_CNS_FLAG .5 +#define DECO_VOLUME_FLAG .6 +#define DECO_ASCENT_FLAG .7 -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 -flag13 res 1 -flag14 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 -uart3_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 2 -ignore_digits res 1 +; Bit Flags for communication with p2_deco.c - char_O_main_status +; .0 ; unused +; .1 ; unused +; DECO_MODE_LOOP_FLAG .2 ; defined below, also used for char_O_main_status +; DECO_MODE_PSCR_FLAG .3 ; defined below, also used for char_O_main_status +#define DECO_GASCHANGE_OVRD .4 +; .5 ; unused +#define DECO_BOTTOM_FLAG .6 +; .7 ; unused -#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 -#DEFINE screen_type cvt_flags,5 ; =1: display1, =0; display0 -#DEFINE compass_type cvt_flags,6 ; =1: compass1, =0: compass0 -#DEFINE analog_switches cvt_flags,7 ; =1: Analog switches available - -#DEFINE compass_type2 cvt_flags+1,0 ; =1: Compass2, =0: Compass1 or compass0 - - -;---- Misc. -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 -convert_value_temp res 3 ; used in menu_battery_state_convert_date -active_gas res 1 ; the currently breathed gas (1-5) -active_diluent res 1 ; backup when switching back from bailout to CCR/pSCR loop -warning_counter res 1 ; Counts amount of warning in divemode -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_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 -tft_update_flags res 3 ; probably more then needed... - -; bank common 1 Byte left here... - - -;---------------------------- 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 0x05F ; RESERVED area. - -;---------------------------- Common2 DATA ------------------------------------ +; Bit Values for communication with p2_deco.c +#define DECO_STATUS_INIT .3 +#define DECO_MODE_LOOP .4 +#define DECO_MODE_PSCR .8 +#define DECO_PLAN_ALTERNATE .16 +#define DECO_CNS_CALCULATE .32 +#define DECO_VOLUME_CALCULATE .64 +#define DECO_ASCENT_DELAYED .128 -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 - -hud_battery_mv res 2 ; hud/ppo2 monitor battery voltage in mV -start_day res 1 ; At start of dive (For logbook) -start_month res 1 ; At start of dive (For logbook) -start_year res 1 ; At start of dive (For logbook) -start_hours res 1 ; At start of dive (For logbook) -start_mins res 1 ; At start of dive (For logbook) - -old_velocity res 4 ; Stores the last 4 speeds (8 seconds) in m/min -opt_gas_type_backup res 5 ; 0=Disabled, 1=First, 2=Travel, 3=Deco -opt_dil_type_backup res 5 ; 0=Disabled, 1=First, 2=Normal - -opt_OC_bail_gas_change_backup res 5 ; Gas change depths OC/Bailout -opt_dil_change_backup res 5 ; Gas change depths Diluents - -internal_battery_capacity res 2 ; For internal battery gauging -battery_capacity res 2 ; For battery gauge IC -battery_offset res 2 ; For battery gauge IC - -analog_sw1_raw res 2 ; idle values (average) -analog_sw2_raw res 2 ; idle values (average) -analog_counter res 1 ; for averaging -analog_sw1 res 1 ; analog value for switch 1 -analog_sw2 res 1 ; analog value for switch 2 -battery_type res 1 ; =0:1.5V, =1:3,6V Saft, =2:LiIon 3,7V/0.8Ah, =3:LiIon 3,7V/3.1Ah, =4: LiIon 3,7V/2.3Ah -uptime res 4 ; Uptime [s] -lastdive_time res 4 ; Time since last dive [s] -lastdive_duration res 3 ; mins:2 and secs -lastdive_maxdepth res 2 ; in mbar -battery_acumulated_charge res 2 ; Raw values in battery gauge IC -gauge_status_byte res 1 ; Gauge IC status byte -button_polarity res 1 ; 0xFF (Both normal), 0x00 (Both inverted), 0x01 (Left inverted only), 0x02 (Right inverted only) -gaslist_gas_global res 1 ; for color coding the gas lists -;active_gas_type res 1 ; 0=Disabled, 1=First, 2=Travel, 3=Deco for OC gases and 0=Disabled, 1=First, 2=Normal for diluents -rx_buffer res .48 ; Buffer for RX data (Slots 0-7) -rx_firmware res 2 ; The RX firmware version xx.yy - -gas6_O2_ratio res 1 ; gas6 O2 ratio -gas6_He_ratio res 1 ; gas6 He ratio -gas6_temp res 1 ; temp used in divemenu_tree.asm - - -;----------------------------------------------------------------------------- -; 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 +; Bit Flags for char_O_deco_warnings +#define IBCD_warning .0 +#define IBCD_warning_lock .1 +#define mbubble_warning .2 +#define mbubble_warning_lock .3 +#define outside_warning .4 +#define outside_warning_lock .5 +#define stoptable_overflow .6 +#define deco_flag .7 -;---- 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 -> ; Must be in line with opt_gas_type -opt_dive_mode res 1 ; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR -opt_ccr_mode res 1 ; =0: Fixed SP, =1: Sensor -opt_OC_bail_gas_change res 5 ; Gas change depths OC/Bailout -char_I_dil_change res 5 ; Work-Around for 2.97 stable - -;---- 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 ; NOT USED ANY MORE, KEPT FOR COMPATIBILITY WITH EEPROM IMAGE -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) -opt_modwarning res 1 ; =1:do a red blinking warning, =0:default behaviour -opt_vsitextv2 res 1 ; =1:use the depth dependent ascend rate limits -opt_vsigraph res 1 ; =1:draw the graphical VSI bar -opt_showppo2 res 1 ; =1:always show the ppO2 value in the warning position -opt_temperature_adjust res 1 ; SIGNED int (two's complement), -2.0/+2.0 °C max. -opt_safety_stop_length res 1 ; [s] -opt_safety_stop_start res 1 ; [cbar] -opt_safety_stop_end res 1 ; [cbar] -opt_safety_stop_reset res 1 ; [cbar] -opt_diveTimeout res 1 ; Timeout for Divemode [min] -opt_sim_setpoint_number res 1 ; NEW setpoint to use for deco calculation -opt_calc_asc_gasvolume res 1 ; NEW calculate OC gas volume needs for ascent -opt_sim_use_aGF res 1 ; NEW use GF (no) or aGF (yes) for deco calculation -opt_enable_IBCD res 1 ; NEW enable IBCD warning -opt_sat_multiplier_gf res 1 ; Bühlmann safety factor for GF deco -opt_desat_multiplier_gf res 1 ; Bühlmann safety factor for GF deco -opt_sat_multiplier_non_gf res 1 ; Bühlmann safety factor for NON-GF deco -opt_desat_multiplier_non_gf res 1 ; Bühlmann safety factor for NON-GF deco +; Bit Flags for status on CHARs +#define char_invalid_flag .7 -;-----------------------------EEPROM DATA ------------------------------------ -; Automatic reset of all options when this is changed: -#define eeprom_opt_serial 0x0006 ; Version 0.6 +; Bit Flags for status on INTs +#define int_invalid_flag .2 +#define int_not_yet_computed .3 +#define int_is_zero .3 +#define int_low_flag .4 +#define int_high_flag .5 +#define int_attention_flag .6 +#define int_warning_flag .7 ;----------------------------------------------------------------------------- ; 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 + +; Hardware defines +#DEFINE battery_gauge_available hardware_flag,0 ; =1: OSTC has rechargeable battery with battery management chip +#DEFINE ambient_sensor hardware_flag,1 ; =1: OSTC has an ambient light sensor +#DEFINE analog_o2_input hardware_flag,2 ; =1: OSTC has analog inputs and S8 digital +#DEFINE optical_input hardware_flag,3 ; =1: OSTC has an digital optical input +#DEFINE ble_available hardware_flag,4 ; =1: OSTC has an BLE module +#DEFINE ostc_rx_present hardware_flag,5 ; =1: OSTC RX circuity present +; hardware_flag,6 ; unused +; hardware_flag,7 ; unused + +#DEFINE leftbind cvt_flags+0,0 +#DEFINE ignore_digit3 cvt_flags+0,1 +#DEFINE ignore_digit4 cvt_flags+0,2 +#DEFINE ignore_digit5 cvt_flags+0,3 +#DEFINE enable_screen_dumps cvt_flags+0,4 ; =1: Ignore vin_usb, wait for "l" command (Screen dump +#DEFINE screen_type cvt_flags+0,5 ; =1: display1, =0; display0 +#DEFINE compass_type cvt_flags+0,6 ; =1: compass1, =0: compass0 +#DEFINE analog_switches cvt_flags+0,7 ; =1: Analog switches available -#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 pre_zero_flag cvt_flags+1,0 +#define all_zeros_flag cvt_flags+1,1 +#define DP_done cvt_flags+1,2 +#define DP_done2 cvt_flags+1,3 +#define show_last3 cvt_flags+1,4 +#define leading_zeros cvt_flags+1,5 +#define show_last4 cvt_flags+1,6 +#DEFINE compass_type2 cvt_flags+1,7 ; =1: Compass2, =0: Compass1 or compass0 + -#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 +; HUD Status Byte +#DEFINE hud_connection_ok hud_status_byte,0 ; =1 -> HUD connection ok +; hud_status_byte,1 ; =1 -> HUD is calibrated +; hud_status_byte,2 ; =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 +; hud_status_byte,6 ; unused in stand-alone HUD +; hud_status_byte,7 ; unused in stand-alone HUD -#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 switch_left flag1,0 ; =1: left button was pressed +#DEFINE switch_right flag1,1 ; =1: right button was pressed +#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 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 rs232_receive_overflow flag2,0 ; =1: a 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 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 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 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 ## NOT USED ANYMORE ## -#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 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 than 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 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 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 FLAG_back_to_loop flag6,6 ; =1: a switchback from bailout to loop occured +#DEFINE FLAG_set_marker flag6,7 ; =1: set a marker in the logbook + +; flag7,0 ; unused +#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 space_gas_decriptions flag7,5 ; =1: add a space in front of gas numbers < 9 for alignment +#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 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 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 (probably not used for anything useful) +#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 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 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 received +#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 +#DEFINE use_O2_sensor2 flag10,3 ; =1: Use this sensor +#DEFINE use_O2_sensor3 flag10,4 ; =1: Use this sensor +#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 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? -#DEFINE blinking_depth_warning flag12,5 ; set by the color_depth. =1: warning color -#DEFINE blinking_depth_prev flag12,6 ; set by the TFT_depth. =1: prev display had warning color -#DEFINE blinking_depth_toggle flag12,7 ; toggle to blink +#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? +#DEFINE blinking_depth_warning flag12,5 ; set by the color_depth. =1: warning color +#DEFINE blinking_depth_prev flag12,6 ; set by the TFT_depth. =1: prev display had warning color +#DEFINE blinking_depth_toggle flag12,7 ; toggle to blink -#DEFINE neg_flag_velocity flag13,0 ; neg_flag backup for velocity logic -#DEFINE analog_sw1_pressed flag13,1 ; =1: Analog switch 1 pressed -#DEFINE analog_sw2_pressed flag13,2 ; =1: Analog switch 2 pressed -#DEFINE sp2_switched flag13,3 ; =1: This setpoint has been autoselected already -#DEFINE sp3_switched flag13,4 ; =1: This setpoint has been autoselected already -#DEFINE sp4_switched flag13,5 ; =1: This setpoint has been autoselected already -#DEFINE sp5_switched flag13,6 ; =1: This setpoint has been autoselected already -#DEFINE use_old_batt_flag flag13,7 ; =1: load old battery information after power-on reset - -#DEFINE FLAG_pscr_mode flag14,0 ; =1: OSTC is in PSCR mode -#DEFINE deep_sleep flag14,1 ; OSTC is in deep sleep (ignore buttons, etc) -#DEFINE sensors_agree flag14,2 ; =1: the ppO2 of all sensors are within the threshold range -#DEFINE gas_needs_attention flag14,3 ; =1: the gas needs attention has been raised before -#DEFINE gas_needs_warning flag14,4 ; =1: the gas needs warning has been raised before -#DEFINE sensor_warning flag14,5 ; =1: the sensors disagree warning has been raised before -#DEFINE alternative_divelayout flag14,6 ; =1: the alternative divelayout is used (aka Blind Mode) -#DEFINE i2c_error_flag flag14,7 ; =1: An I2C error occured +#DEFINE neg_flag_velocity flag13,0 ; neg_flag backup for velocity logic +#DEFINE analog_sw1_pressed flag13,1 ; =1: Analog switch 1 pressed +#DEFINE analog_sw2_pressed flag13,2 ; =1: Analog switch 2 pressed +#DEFINE sp2_switched flag13,3 ; =1: This setpoint has been autoselected already +#DEFINE sp3_switched flag13,4 ; =1: This setpoint has been autoselected already +#DEFINE sp4_switched flag13,5 ; =1: This setpoint has been autoselected already +#DEFINE sp5_switched flag13,6 ; =1: This setpoint has been autoselected already +#DEFINE use_old_batt_flag flag13,7 ; =1: load old battery information after power-on reset + +#DEFINE FLAG_pscr_mode flag14,0 ; =1: OSTC is in PSCR mode +#DEFINE deep_sleep flag14,1 ; =1: OSTC is in deep sleep (ignore buttons, etc) +#DEFINE sensors_agree flag14,2 ; =1: the ppO2 of all sensors are within the threshold range +#DEFINE gas_needs_attention flag14,3 ; =1: the gas needs attention has been raised before +#DEFINE gas_needs_warning flag14,4 ; =1: the gas needs warning has been raised before +#DEFINE sensor_warning flag14,5 ; =1: the sensors disagree warning has been raised before +#DEFINE alternative_divelayout flag14,6 ; =1: the alternative divelayout is used (aka Blind Mode) +#DEFINE i2c_error_flag flag14,7 ; =1: an I2C error occured + +#define aa_antialias aa_flags,0 ; used by aa_wordprocessor +#define aa_color_quart aa_flags,1 ; used by aa_wordprocessor +#define aa_color_half aa_flags,2 ; used by aa_wordprocessor +; aa_flags,3 ; unused +; aa_flags,4 ; unused +; aa_flags,5 ; unused +; aa_flags,6 ; unused +; aa_flags,7 ; unused ; Update flags in divemode, =1: Update the screen -#DEFINE FLAG_TFT_divemode_mask tft_update_flags+0,0 -#DEFINE FLAG_TFT_display_ndl_mask tft_update_flags+0,1 +#DEFINE FLAG_TFT_divemode_mask tft_update_flags+0,0 +#DEFINE FLAG_TFT_display_ndl_mask tft_update_flags+0,1 #DEFINE FLAG_TFT_depth tft_update_flags+0,2 #DEFINE FLAG_TFT_divemins tft_update_flags+0,3 -#DEFINE FLAG_TFT_show_safety_stop tft_update_flags+0,4 -#DEFINE FLAG_TFT_display_ndl tft_update_flags+0,5 -#DEFINE FLAG_TFT_display_deko_mask tft_update_flags+0,6 -#DEFINE FLAG_TFT_display_deko tft_update_flags+0,7 -#DEFINE FLAG_TFT_display_tts tft_update_flags+1,0 -#DEFINE FLAG_TFT_temp_divemode tft_update_flags+1,1 -#DEFINE FLAG_TFT_divemode_warning tft_update_flags+1,2 -#DEFINE FLAG_TFT_divemode_warning_clear tft_update_flags+1,3 -#DEFINE FLAG_TFT_active_gas_divemode tft_update_flags+1,4 -#DEFINE FLAG_TFT_clear_safety_stop tft_update_flags+1,5 -#DEFINE FLAG_TFT_max_depth tft_update_flags+1,6 -#DEFINE FLAG_TFT_divemode_mask_alt tft_update_flags+1,7 -#DEFINE FLAG_TFT_dive_warning_text_clear tft_update_flags+2,0 -#DEFINE FLAG_TFT_dive_warning_text_clr2 tft_update_flags+2,1 -#DEFINE FLAG_TFT_max_depth_alt tft_update_flags+2,2 -#DEFINE FLAG_TFT_big_deco_alt tft_update_flags+2,3 -#define FLAG_TFT_not_defined_yet tft_update_flags+2,7 ; last usable flag within tft_update_flags memory space +#DEFINE FLAG_TFT_show_safety_stop tft_update_flags+0,4 +#DEFINE FLAG_TFT_display_ndl tft_update_flags+0,5 +#DEFINE FLAG_TFT_display_deko_mask tft_update_flags+0,6 +#DEFINE FLAG_TFT_display_deko tft_update_flags+0,7 +#DEFINE FLAG_TFT_display_tts tft_update_flags+1,0 +#DEFINE FLAG_TFT_temp_divemode tft_update_flags+1,1 +#DEFINE FLAG_TFT_divemode_warning tft_update_flags+1,2 +#DEFINE FLAG_TFT_divemode_warning_clear tft_update_flags+1,3 +#DEFINE FLAG_TFT_active_gas_divemode tft_update_flags+1,4 +#DEFINE FLAG_TFT_clear_safety_stop tft_update_flags+1,5 +#DEFINE FLAG_TFT_max_depth tft_update_flags+1,6 +#DEFINE FLAG_TFT_divemode_mask_alt tft_update_flags+1,7 +#DEFINE FLAG_TFT_dive_warning_text_clear tft_update_flags+2,0 +#DEFINE FLAG_TFT_dive_warning_text_clr2 tft_update_flags+2,1 +#DEFINE FLAG_TFT_max_depth_alt tft_update_flags+2,2 +#DEFINE FLAG_TFT_big_deco_alt tft_update_flags+2,3 +; tft_update_flags+2,4 ; unused +; tft_update_flags+2,5 ; unused +; tft_update_flags+2,6 ; unused +; tft_update_flags+2,7 ; unused + + +;---------------------------- Macros ------------------------------------ + +TSTOSS macro opt_reg ; TeST Option Skip if not Zero + movff opt_reg,WREG + tstfsz WREG,A + bra $+4 + endm + +;---------------------------- C-code Routines ---------------------------- + + extern deco_calc_desaturation_time + extern deco_calc_hauptroutine + extern deco_calc_dive_interval_1min + extern deco_calc_dive_interval_10min + extern deco_calc_dive_interval + extern deco_clear_tissue + extern deco_pull_tissues_from_vault + extern deco_push_tissues_to_vault -; Bit Masks for communication with p2_deco.c -#define DECO_STATUS_MASK .3 +;---------------------------- 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 +avg_rel_pressure res 2 +avg_rel_pressure_total res 2 + +;---- Data for ISR math subroutines +isr_xC res 4 +isr_xA res 2 +isr_xB res 2 -; Bit Flags for communication with p2_deco.c - char_O_deco_status -#define DECO_STATUS_0_FLAG .0 -#define DECO_STATUS_1_FLAG .1 -#define DECO_MODE_LOOP_FLAG .2 -#define DECO_MODE_PSCR_FLAG .3 -#define DECO_PLAN_FLAG .4 -#define DECO_CNS_FLAG .5 -#define DECO_VOLUME_FLAG .6 -#define DECO_ASCENT_FLAG .7 +;---- 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 -; Bit Flags for communication with p2_deco.c - char_O_main_status -;#define DECO_MODE_LOOP_FLAG .2 -;#define DECO_MODE_PSCR_FLAG .3 -#define DECO_GASCHANGE_OVRD .4 -#define DECO_BOTTOM_FLAG .6 +; 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 around 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 + +speed_setting res 1 ; =1: Eco, =2: Normal, =3: Fastest -; Bit Values for communication with p2_deco.c -#define DECO_STATUS_INIT .3 -#define DECO_MODE_LOOP .4 -#define DECO_MODE_PSCR .8 -#define DECO_PLAN_ALTERNATE .16 -#define DECO_CNS_CALCULATE .32 -#define DECO_VOLUME_CALCULATE .64 -#define DECO_ASCENT_DELAYED .128 +;---- 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 ; Bank 1 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 + +;---- State Information +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 +flag13 res 1 +flag14 res 1 +hardware_flag res 1 ; hardware descriptor flag +tft_update_flags res 3 + +;---- Interface to Data Conversion & +;---- Output Functions, as well as +;---- General-Purpose Temp Storage +lo res 1 +hi res 1 +up res 1 +ignore_digits res 1 + +;---- Interface to Graphic Functions +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 -; Bit Flags for char_O_deco_warnings -#define IBCD_warning .0 -#define IBCD_warning_lock .1 -#define mbubble_warning .2 -#define mbubble_warning_lock .3 -#define outside_warning .4 -#define outside_warning_lock .5 -#define stoptable_overflow .6 -#define deco_flag .7 +;---- Interface to Math Functions +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 + +;---- Misc. +timeout_counter1 res 2 ; timeout for dive operations +timeout_counter2 res 1 ; timeout for menu operations +batt_voltage res 2 ; battery voltage in mV +batt_percent res 1 ; battery in percent (1-100) +warning_counter res 1 ; counts amount of warning in divemode +warning_page res 1 ; current # of warning page + +;---- Dive Mode / General +divemins res 2 +divesecs res 1 +total_divetime_seconds res 2 +average_divesecs res 2 ; for the resettable stopwatch +safety_stop_countdown res 1 ; counts seconds of safety stop +gaslist_gas res 1 ; used for transfer between gaslist.asm and menu_tree.asm +active_gas res 1 ; the currently breathed gas (1-5) +;active_gas_type res 1 ; 0=Disabled, 1=First, 2=Travel, 3=Deco for OC gases and 0=Disabled, 1=First, 2=Normal for diluents -#define char_invalid_flag .7 +;---- Dive Mode / Apnoe +apnoe_surface_mins res 1 +apnoe_surface_secs res 1 +apnoe_mins res 1 +apnoe_secs res 1 +apnoe_max_pressure res 2 + +;---- Profile Recording +samplingrate res 1 +samplesecs res 1 +samplesecs_value res 1 +AlarmType res 1 +EventByte1 res 1 +EventByte2 res 1 -#define int_invalid_flag .2 -#define int_not_yet_computed .3 -#define int_is_zero .3 -#define int_low_flag .4 -#define int_high_flag .5 -#define int_prewarning_flag .6 -#define int_warning_flag .7 +;---- External Flash +ext_flash_rw res 1 ; transfer register for data read / write +ext_flash_address res 3 ; 24 bit address +ext_flash_log_pointer res 3 ; 24 bit address for logbook profile storing +ext_flash_end_pointer res 3 ; 24 bit address for logbook profile storing +ext_flash_dive_counter res 3 ; 24 bit counter for dive length (increased in write_byte_ext_flash_plus) + +;---- 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_status_byte res 1 +;========================= privte Variables =================================== +; do not access from outside of the respective source files! -;============================================================================= -; C-code Routines -; PART 2 - extern deco_calc_CNS_decrease_15min - extern deco_calc_desaturation_time - extern deco_calc_hauptroutine - extern deco_calc_wo_deco_step_1_min - extern deco_calc_dive_interval - extern deco_clear_tissue - extern deco_pull_tissues_from_vault - extern deco_push_tissues_to_vault - \ No newline at end of file +;---- aa_wordprocessor.asm +aa_flags res 1 ; various flags for aa_wordprocessor +aa_bitlen res 1 ; count of pixels when decoding bitmaps +aa_start res 2 ; PROM ptr to start of encoded bitmap +aa_end res 2 ; and end of it +aa_temp res 2 ; current color, divided by 2 or 4 + +;--- adc_lightsensor.asm +get_bat_volt_counter res 1 ; counter for 10x reading the charger chip + +;---- convert.asm +cvt_flags res 2 +cvt_temp1 res 1 +cvt_temp2 res 1 +cvt_temp3 res 1 +cvt_temp4 res 1 +lo_temp res 1 +hi_temp res 1 + +;---- color_processor.asm +img_pixels res 3 ; used by color_processor.asm +img_count res 2 ; used by color_processor.asm + +;---- comm.asm +comm_timeout res 1 ; timeout for communication + +;---- eeprom_rs232.asm +uart1_temp res 1 +uart2_temp res 1 +uart3_temp res 1 + +;---- i2c.asm +i2c_temp1 res 1 ; temporary data +i2c_temp2 res 1 ; temporary data + +;---- menu_processor.asm +menupos1 res 1 ; logbook and divemode menu +menupos2 res 1 ; used for dive mode simulator and pre-menu +menupos3 res 1 ; used for Customviews +menupos4 res 1 ; used for divemode menu +menu_flags res 1 ; flags for menu entries +menu_item res 1 ; index of the current item +start_item res 1 ; index of the first item (scrolling) +item_max res 1 ; number of items in menu +selected_item res 1 ; index of the current item +value_type res 1 ; type for vertical menu +dynamic_item res 3 ; callback addr +menu_block res 3 ; address of the menu block (i.e. item 0) +menu_title res 3 ; text or proc for dynamic menu +menu_center res 1 ; centering for line menu +proc_item res 3 ; address of the current proc +text_item res 2 ; address of the current text + +;---- options.asm +opt_type res 1 ; +opt_default res 1 ; +opt_inc res 1 ; also used for default+1 (string) and enum low +opt_min res 1 ; also used for enum high +opt_max res 1 ; +opt_unit res 2 ; multi-lingual unit text +opt_eeprom res 1 ; +opt_backup_tbl res 3 ; buffer for table pointer + +;---- tft.asm +save_top res 1 +save_height res 1 +save_left res 1 +save_width res 1 +ds_line res 1 ; current line (0..239) +ds_column res 1 ; current columnx2 (0..159) +ds_pixel res 2 ; current pixel color +ds_count res 1 ; repetition count +tft_temp1 res 1 +tft_temp2 res 1 +tft_temp3 res 1 +tft_temp4 res 1 + +;---- wait.asm +wait_counter res 1 + +; ==> 187 bytes used - 21 bytes free + + +;============================ LOCAL DATA ====================================== +; Space for various overlayed local data from top-level applications, +; i.e. applications that never run in parallel to each other +; +; --------------------- local Data Users -------------------------------------- +; -------------- Applications using ------------- +; Mode local1 local2 local3 +; ----------------------------------------------------------------------------- +; sleepmode sleepmode.asm (unused) (unused) +; surfmode surfmode.asm* (unused) (unused) +; simulator simulator.asm (unused) (unused) +; divemode divemode.asm ghostwriter.asm (unused) +; logbook logboock.asm logbook.asm logbook.asm +; +; * assigned to this slot, but currently no local memory used + +local1 equ 0x1D0 ; Alias for CBLOCK directive +local1 udata_ovr 0x1D0 ; Bank1 shared local space + res 0x10 ; 16 Byte (0x1D0 ... 0x1DF) + +local2 equ 0x1E0 ; Alias for CBLOCK directive +local2 udata_ovr 0x1E0 ; Bank1 shared local space + res 0x10 ; 16 Byte (0x1E0 ... 0x1EF) + +local3 equ 0x1F0 ; Alias for CBLOCK directive +local3 udata_ovr 0x1F0 ; Bank1 shared local space + res 0x10 ; 16 Byte (0x1F0 ... 0x1FF) + + +;---------------------------- Common2 DATA ------------------------------------ +common2 equ 0xA00 ; Alias for "banksel common2" +common2 udata_ovr common2 ; Bank 10 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 +hud_battery_mv res 2 ; hud/ppo2 monitor battery voltage in mV + +start_day res 1 ; At start of dive (For logbook) +start_month res 1 ; At start of dive (For logbook) +start_year res 1 ; At start of dive (For logbook) +start_hours res 1 ; At start of dive (For logbook) +start_mins res 1 ; At start of dive (For logbook) + +opt_gas_type_backup res 5 ; 0=Disabled, 1=First, 2=Travel, 3=Deco * need to be in same bank +opt_dil_type_backup res 5 ; 0=Disabled, 1=First, 2=Normal + need to be in same bank +opt_OC_bail_gas_change_backup res 5 ; Gas change depths OC/Bailout * +opt_dil_change_backup res 5 ; Gas change depths Diluents + + +internal_battery_capacity res 2 ; For internal battery gauging +battery_capacity res 2 ; For battery gauge IC +battery_offset res 2 ; For battery gauge IC +battery_type res 1 ; =0:1.5V, =1:3,6V Saft, =2:LiIon 3,7V/0.8Ah, =3:LiIon 3,7V/3.1Ah, =4: LiIon 3,7V/2.3Ah +battery_acumulated_charge res 2 ; Raw values in battery gauge IC +gauge_status_byte res 1 ; Gauge IC status byte + +analog_sw1_raw res 2 ; idle values (average) +analog_sw2_raw res 2 ; idle values (average) +analog_counter res 1 ; for averaging +analog_sw1 res 1 ; analog value for switch 1 +analog_sw2 res 1 ; analog value for switch 2 +button_polarity res 1 ; 0xFF (Both normal), 0x00 (Both inverted), 0x01 (Left inverted only), 0x02 (Right inverted only) + +uptime res 4 ; Uptime [s] +lastdive_time res 4 ; Time since last dive [s] +lastdive_duration res 3 ; mins:2 and secs +lastdive_maxdepth res 2 ; in mbar + +rx_buffer res .48 ; Buffer for RX data (Slots 0-7) +rx_firmware res 2 ; The RX firmware version xx.yy + +customview_surfmode res 1 ; storage to remember last selected custom view in surface mode +customview_divemode res 1 ; storage to remember last selected custom view in dive mode + +ambient_light res 2 ; ambient_light level +better_gas_number res 1 ; number (1-5) of the "better gas" in divemode, =0: no better gas available +old_velocity res 4 ; Stores the last 4 speeds (8 seconds) in m/min + +menustack res 5 ; menu stack from menu_processor.asm + +gas6_O2_ratio res 1 ; gas6 O2 ratio +gas6_He_ratio res 1 ; gas6 He ratio +gas6_temp res 1 ; temp used in divemenu_tree.asm + +; ==> 134 bytes used - 122 bytes free + + +;---------------------------- Bank 2 general purpose buffer ------------------- +; Reserved 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 + + +;---------------------------- Bank 14 for options table ----------------------- +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 ; Must be in line with opt_gas_type +opt_dive_mode res 1 ; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR +opt_ccr_mode res 1 ; =0: Fixed SP, =1: Sensor +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 char (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 ; NOT USED ANY MORE, KEPT FOR COMPATIBILITY WITH EEPROM IMAGE +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) +opt_modwarning res 1 ; =1:do a red blinking warning, =0:default behaviour +opt_vsitextv2 res 1 ; =1:use the depth dependent ascend rate limits +opt_vsigraph res 1 ; =1:draw the graphical VSI bar +opt_showppo2 res 1 ; =1:always show the ppO2 value in the warning position +opt_temperature_adjust res 1 ; SIGNED char (two's complement), -2.0/+2.0 °C max. +opt_safety_stop_length res 1 ; [s] +opt_safety_stop_start res 1 ; [cbar] +opt_safety_stop_end res 1 ; [cbar] +opt_safety_stop_reset res 1 ; [cbar] +opt_diveTimeout res 1 ; Timeout for Divemode [min] +opt_sim_setpoint_number res 1 ; setpoint to use for deco calculation +opt_calc_asc_gasvolume res 1 ; calculate OC gas volume needs for ascent +opt_sim_use_aGF res 1 ; =0: use GF, =1: use aGF for deco calculation +opt_enable_IBCD res 1 ; enable IBCD warning +opt_sat_multiplier_gf res 1 ; Buhlmann safety factor for GF deco +opt_desat_multiplier_gf res 1 ; Buhlmann safety factor for GF deco +opt_sat_multiplier_non_gf res 1 ; Buhlmann safety factor for NON-GF deco +opt_desat_multiplier_non_gf res 1 ; Buhlmann safety factor for NON-GF deco + +;-----------------------------------------------------------------------------