code
+;****************************************************************************
+; needs conditional for master
+
+; MASTER PIC
+; triggered whenever there is space in the serial buffer
+
+; reads detection data from subpics over i2c and sends new data out to
+; external computer
+
+
+
+
+
+; Associated registers etc.:
+; subpic s ? bits current subpic for dtction data retrieval
+; Psa-e 40 registers current state of detection data from
+; ports a-e of all subpics (including self)
+; Csa-e 40 registers current state of knowledge of
+; external computer
+; ??? ??? bits for keeping track of subpic #
+; ??? ??? bits for keeping track of detect msg creation
+; and posn in Psa-e checking
+; Ma-e 5 bytes bitmask for reading detect data from ports
+
+
+
+; ask sub-pic s for data
+; (i.e. send i2c request - will need to work out how to differentiate this
+; from requests fior other data from subpics, or make a general routine to
+; handle all sorts of data a subpic might send back)
+
+; if no change, advance subpic # and return
+
+; if change, copy data from subpic x into xa-e
+
+; compare Psa-e with Csa-e
+
+; if no change, advance subpic # and return
+
+; if change, for each different bit, create detect msg & send to serial buffer
+; also flip state of bit in C
+
+; advance subpic # and return
+
+
+; NB for self, can skip i2c and just read straight from legs according to
+; bitmask Ma-e
+
+; will need to use external routines for: i2c, serial_send
+
+
+
+
+;****************************************************************************
+; needs conditional for slave
+
+; SLAVE PIC
+; main loop of slave program
+
+; Reads from detection legs as defined by bitmasks Ma-e applied to ports a-e.
+; Writes the result into registers Pa-e. On i2c interrupt, checks that there
+; is new data to send to the master pic and if so sends it. Current state of
+; master's knowledge is stored in Ca-e for comparison with Pa-e.
+;
+; Associated registers etc.:
+; Pa-e 5 registers data from detection legs
+; Ma-e 5 registers bitmask defining detction legs
+; Ca-e 5 registers current state of data held in master
+; for this slave pic
+; ??? 1 bit 'something to send' y/n
+; ??? ? bits 'currently reading from port' 1-5 (=a-e)
+
+; disable interrupts
+
+; read data from detection legs associated with current port
+
+; invert bits; OR with Pn; AND with Mn; store in Pn
+
+; compare Pn and Cn; if different, set 'something to send'
+
+; enable interrupts
+
+; advance port #
+
+; on i2c interrupt:
+; check 'something to send'
+; if=0, send 'no change' (precise message = ?)
+; if=1, clear 'something to send'; copy Pa-e -> Ca-e; blank Pa-e; write Ca-e
+; to i2c output buffer; start sending (check whether this will be sent
+; automatically or whether I will need to pay it attention);
+; return
+
+; will need to use external i2c send function/buffers, maybe?
+
+
+
+
+
+
+
+
+
+
;****************************************************************************
vector_reset