PROGRAMS= program
OBJS_program= vectors.o panic.o routines-led.o i2clib.o \
misc.o detect.o variables.o points.o serout.o \
- syncwrite.o reverse.o nmra-stream.o mascan.o
+ syncwrite.o mascan.o reverse.o nmra-stream.o
XCODEN_program= morse
XCODE1_program= ours+pindata
panic morse_UI
;======================================================================
-; PROCESSING OF INCOMING BYTES
+; PROCESSING OF INCOMING BYTES - CORE AND DETECTION
;----------------------------------------
i2cmu_read_got_byte
bt_f_if0 b, 7 ; any more ?
bc_f cbyte, 7
bc_f b, 7
- rcall process_got_extra
+ call process_got_extra
bra i2c_arrange_next_byte
-;----------------------------------------
-process_got_extra
- mov_fw b
-loopback_read_byte
-;...
-; W message
- xor_lw 0x00 ^ 0x20
- bra_z got_pointed
- xor_lw 0x20 ^ 0xb0
- bra_z got_aargh
- panic morse_MX
-
;----------
read_got_detectbyte_prep
;
; figure out what to do next - which pic to address, etc.
panic morse_UG
+;======================================================================
+; PROCESSING OF INCOMING BYTES - EXTRA (NON-DETECTION)
+
+near_gots code
+;----------------------------------------
+process_got_extra
+ mov_fw b
+loopback_read_byte
+;...
+; W message
+ xor_lw 0x00 ^ 0x20
+ bra_z got_pointed
+ xor_lw 0x20 ^ 0xb0
+ bra_z got_aargh
+ panic morse_MX
+
;======================================================================
; GENERATION OF DETECTION MESSAGES FOR HOST - MAD BT_F_IF1 TABLES
bs_f panicst, panicst_acked ; since we were asked to
panic morse_E
-;----------
-got_aargh
- panic morse_T
-
;----------
i2csu_read_begin_panicd
mov_lw 0x80 ; M0000000
mov_lw 0x0b ; AARGH
goto i2cs_read_data
+near_gots code
+;----------
+got_aargh
+ panic morse_T
+
;***************************************************************************
include final.inc
pointmsg res 1
;======================================================================
- code
;======================================================================
; LOCAL POINTS
;----------------------------------------------------------------------
; LOCAL POINTS - ACTUALLY DOING
+near_local_do code
;----------------------------------------
point_local_do
; On slave, called during i2c receive, ie High ISR
mov_wf pointmsg ; pointmsg = SS zz zz pp pp pp pp pp
intrh_fsr0_save ; point_set_pin uses FSR0, see below
- rcall point_set_pin
+ call point_set_pin
intrh_fsr0_restore
clr_f TMR3L ; also copies TMR3H into actual timer register
bs_f T3CON, TMR3ON
return
+;----------
+point_clash
+ panic morse_PB
+
+ code
;----------------------------------------
points_local_intrl
bt_f_if0 PIR2, TMR3IF
xor_wff INDF0 ; pin = !pin
return
+;----------
point_nonexistent
panic morse_PU
-;----------
-point_clash
- panic morse_PB
-
;----------------------------------------------------------------------
; LOCAL POINTS - INITIALISATION
;======================================================================
+near_gots code
+
cdu_init panic morse_UCI
; For master pic only. Sorts out the CDU's pin.
command_crashed
panic morse_UC
-code2 code
-
;======================================================================
; SLAVE
i2csu_write_begin
return
+near_local_do code
;----------------------------------------
i2csu_write_data
call led_green
bra i2csu_write_if_bad
goto panic_crashread_commanded
+code2 code
;======================================================================
; MASTER/SLAVE deviations
; 000000000 we have written any relevant command
; 000000002 sentinel
- code
;======================================================================
; LOCAL REVERSERS
; on slave, or master's own
+near_local_do code
;----------
polarity_local_do
; On slave, called during i2c receive, ie High ISR
; v<n> is new reverse bit
return
+ code
;----------
polarity_local_init
load_perpic_tblptr picno2revmasks, 2
mov_wf maske
clr_w
- rcall polarity_local_do
+ call polarity_local_do
com_fw maska
and_wff TRISA