3 * implementation of safety algorithm's decisions
8 static PicInsn polarityinsn= { { 0x90 }, 0 };
10 #define OPONBIT_BYTE (polarityinsn.d[bytenum])
11 #define OPONBIT(body) do{ \
13 int bytenum, bitnum; \
18 bytenum= (bo + 3) / 7; \
19 bitnum= bytenum ? 6 - (bo + 3) % 7 : 3 - bo; \
25 int picinsn_polarity_testbit(const PicInsn *pi, const SegmentInfo *segi) {
27 return !!(OPONBIT_BYTE & bitv);
31 void actual_inversions_start(void) {
32 polarityinsn.l= (info_maxreverse + 4 + 6) / 7;
35 void actual_inversions_segment(Segment *seg) {
36 const SegmentInfo *segi= seg->i;
39 Byte *insnbyte= &OPONBIT_BYTE;
40 if (seg->seg_inverted) *insnbyte |= bitv;
41 else *insnbyte &= ~bitv;
45 void actual_inversions_done(void) {
46 serial_transmit(&polarityinsn);