diff code_part1/OSTC_code_asm_part1/menu_ppO2.asm @ 639:2ab9e9a8a189

New CCR Setup Menu (In work)
author heinrichsweikamp
date Thu, 20 Sep 2012 10:06:19 +0200
parents ab2686087bce
children 50ba6255f53e
line wrap: on
line diff
--- a/code_part1/OSTC_code_asm_part1/menu_ppO2.asm	Tue Sep 18 09:15:54 2012 +0200
+++ b/code_part1/OSTC_code_asm_part1/menu_ppO2.asm	Thu Sep 20 10:06:19 2012 +0200
@@ -19,13 +19,250 @@
 ; Constant ppO2 Setup menu
 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
 ; written: 08/04/04
-; last updated: 080904
+; last updated: 120920
 ; known bugs:
 ; ToDo: 
+;
+; New in 2.52 Diluents stored seperately in EEPROM Bank1
+; EEPROM BANK1 Byte96-97:
+; Diluent 1 (%O2,%He)
+; EEPROM BANK1 Byte98-99:
+; Diluent 2 (%O2,%He)
+; EEPROM BANK1 Byte100-101:
+; Diluent 3 (%O2,%He)
+; EEPROM BANK1 Byte102-103:
+; Diluent 4 (%O2,%He)
+; EEPROM BANK1 Byte104-105:
+; Diluent 5 (%O2,%He)
+
 
 menu_const_ppO2:
 	movlw	d'1'
 	movwf	menupos
+menu_const_ppO2_return:
+    call	PLED_ClearScreen
+    call    PLED_ccr_setup_menu_mask
+	call	refresh_cursor
+    call    menu_pre_loop_common
+
+menu_const_ppO2_preloop:
+	call	check_switches_menu
+	movlw	d'3'
+	cpfseq	menupos
+	bra		menu_const_ppO2_preloop2	; Returns
+	movlw	d'6'
+    movwf   menupos
+    call    PLED_menu_cursor
+
+menu_const_ppO2_preloop2:
+	btfsc	menubit2
+	bra		do_ccr_pre_menu             ; call submenu
+	btfss	menubit
+	goto	restart						; exit menu, restart
+	btfsc	onesecupdate
+	call	menu_check_dive_and_timeout	; "Goto restart" or sets sleepmode flag
+	bcf		onesecupdate				; End of one second tasks
+	btfsc	sleepmode
+	goto	restart
+	bra		menu_const_ppO2_preloop
+
+do_ccr_pre_menu:
+    dcfsnz	menupos,F
+	goto	menu_diluentsetup
+	dcfsnz	menupos,F
+	goto	menu_const_ppO2_setpoints
+	dcfsnz	menupos,F
+	goto	exit_menu_const_ppO2			; exit...
+	dcfsnz	menupos,F
+	goto	exit_menu_const_ppO2			; exit...
+	dcfsnz	menupos,F
+	goto	exit_menu_const_ppO2			; exit...
+exit_menu_const_ppO2:			; exit...
+	movlw	d'2'
+	movwf	menupos
+	goto	more_menu2
+
+menu_diluentsetup:
+	movlw	d'1'
+	movwf	menupos
+
+menu_diluentsetup_prelist:
+	call	PLED_ClearScreen
+	call	menu_pre_loop_common		; Clear some menu flags, timeout and switches
+	call	PLED_topline_box
+	WIN_INVERT	.1	; Init new Wordprocessor
+	DISPLAYTEXT	.106			; Gas List
+	WIN_INVERT	.0	; Init new Wordprocessor
+	clrf	decodata+0				; Here: # of gas 0-4
+	clrf	divemins+0				; Here: # of Gas * 4
+	movlw	d'5'
+	movwf	waitms_temp		; here: stores row for gas list
+	movlw	d'94'
+	movwf	wait_temp			; here: stores eeprom address for gas list
+    movlw   .1
+    movwf   EEADRH
+
+menu_diluentsetup_list:
+	WIN_LEFT	.20
+	movlw	d'2'
+	addwf	wait_temp,F			; Increase eeprom address for gas list
+	movlw	d'30'
+	addwf	waitms_temp,F		; Increase row
+	movf	waitms_temp,W		; Load row into WREG
+	movff	WREG,win_top
+	lfsr	FSR2,letter
+	PUTC	TXT_GAS_C
+	movff	decodata+0,lo
+	incf	lo,F
+	bsf		leftbind
+	output_99
+	PUTC	':'
+
+menu_diluentsetup_Tx:
+	call	word_processor
+
+	WIN_LEFT	.48
+	movf	waitms_temp,W		; Load row into WREG
+	movff	WREG,win_top
+	lfsr	FSR2,letter
+
+	movff	wait_temp, EEADR	; Gas %He - Set address in internal EEPROM
+	incf	EEADR,F				; Gas %He - Set address in internal EEPROM
+	call	read_eeprom			; Read He value from EEPROM
+	movff	EEDATA,lo			; Move EEDATA -> lo
+	movf	lo,f				; Move lo -> f
+	movlw	d'0'				; Move 0 -> WREG
+	cpfsgt	lo					; He > 0?
+	bra 	menu_diluentsetup_Nx	; NO check o2
+
+	; YES Write TX 15/55
+	call 	gassetup_write_Tx
+	movff	wait_temp, EEADR	; Gas %O2 - Set address in internal EEPROM
+	call	read_eeprom			; O2 value
+	movff	EEDATA,lo
+	output_8
+	PUTC	'/'
+	incf	EEADR,F				; Gas #hi: %He - Set address in internal EEPROM
+	call	read_eeprom			; He value
+	movff	EEDATA,lo
+	output_8
+	bra 	menu_diluentsetup_list0
+
+; New v1.44se
+menu_diluentsetup_Nx:
+	movff	wait_temp, EEADR	; Gas %O2 - Set address in internal EEPROM
+	call	read_eeprom			; Read O2 value from EEPROM
+	movff	EEDATA,lo			; Move EEDATA -> lo
+	movf	lo,f				; Move lo -> f
+	movlw	d'21'				; Move 21 -> WREG
+	cpfsgt	lo					; o2 > 21%
+	bra 	menu_diluentsetup_Air	; NO AIR
+	movlw	d'100'				; Move 100 -> WREG
+	cpfslt	lo					; o2 < 100%
+	bra		menu_diluentsetup_O2	; NO write O2
+
+	; YES Write NX 32
+	call	gassetup_write_Nx
+	output_8
+	bra 	menu_diluentsetup_list0
+
+menu_diluentsetup_O2:
+    STRCAT  TXT_O2_3
+	output_8
+	bra 	menu_diluentsetup_list0
+
+menu_diluentsetup_Air:
+	cpfseq	lo					; o2 = 21%
+	call    menu_gassetup_Err
+
+    STRCAT  TXT_AIR4
+	output_8
+	bra 	menu_diluentsetup_list0
+
+menu_diluentsetup_Err:
+    STRCAT  TXT_ERR4
+	output_8
+
+menu_diluentsetup_list0:
+	call	word_processor
+
+	incf	decodata+0,F
+	movlw	d'5'
+	cpfseq	decodata+0
+	goto	menu_diluentsetup_list
+
+	DISPLAYTEXT	.11                     ; Exit
+	call	wait_switches               ; Waits until switches are released, resets flag if button stays pressed!
+	call	PLED_menu_cursor
+
+menu_diluentsetup_loop:
+	call	check_switches_logbook
+
+	btfsc	menubit3
+	bra		menu_diluentsetup_list2              ; move cursor
+
+	btfsc	menubit2
+	bra		do_diluentsetup_list        ; call gas-specific submenu
+
+	btfsc	onesecupdate
+	call	menu_check_dive_and_timeout	; "Goto restart" or sets sleepmode flag
+
+	bcf		onesecupdate                ; 1 sec. functions done
+
+	btfsc	sleepmode
+	bra		menu_const_ppO2
+
+	bra		menu_diluentsetup_loop
+
+menu_diluentsetup_list2:
+	incf	menupos,F
+	movlw	d'7'
+	cpfseq	menupos			; =7?
+	bra		menu_diluentsetup_list3	; No
+	movlw	d'1'
+	movwf	menupos
+
+menu_diluentsetup_list3:
+	clrf	timeout_counter2
+	call	PLED_menu_cursor
+
+	call	wait_switches		; Waits until switches are released, resets flag if button stays pressed!
+
+	bcf		menubit3		; clear flag
+	bra		menu_diluentsetup_loop
+
+
+do_diluentsetup_list:
+	dcfsnz	menupos,F
+	bra		diluent_list_edit_gas1
+	dcfsnz	menupos,F
+	bra		diluent_list_edit_gas1
+	dcfsnz	menupos,F
+	bra		diluent_list_edit_gas1
+	dcfsnz	menupos,F
+	bra		diluent_list_edit_gas1
+	dcfsnz	menupos,F
+	bra		diluent_list_edit_gas1
+	bra		menu_const_ppO2             ; Exit List
+
+diluent_list_edit_gas1:
+diluent_list_edit_gas2:
+diluent_list_edit_gas3:
+diluent_list_edit_gas4:
+diluent_list_edit_gas5:
+    bra		menu_const_ppO2             ; Exit List
+
+; ***
+
+
+
+
+
+
+
+menu_const_ppO2_setpoints:          ; Setpoint menu
+	movlw	d'1'
+	movwf	menupos
 
 	bcf		menubit4
 	clrf	decodata+0				; Here: # of SP
@@ -177,10 +414,9 @@
 	bra		change_ppo2_minus
 	dcfsnz	menupos,F
 	bra		change_ppo2_reset
-exit_menu_const_ppO2:			; exit...
 	movlw	d'2'
 	movwf	menupos
-	goto	more_menu2
+    bra     menu_const_ppO2_return
 
 change_ppo2_plus:
 	movf	decodata+0,W		; read current value