1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 1023
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000020 = shared___globals equ 32
7    00000000 = __indf equ 0
8    00000002 = __pcl equ 2
9    00000003 = __status equ 3
10   00000004 = __fsr equ 4
11   00000003 = __c___byte equ 3
12   00000000 = __c___bit equ 0
13   00000003 = __z___byte equ 3
14   00000002 = __z___bit equ 2
15   00000003 = __rp0___byte equ 3
16   00000005 = __rp0___bit equ 5
17   00000003 = __rp1___byte equ 3
18   00000006 = __rp1___bit equ 6
19   00000003 = __irp___byte equ 3
20   00000007 = __irp___bit equ 7
21   0000000a = __pclath equ 10
22   0000000a = __cb0___byte equ 10
23   00000003 = __cb0___bit equ 3
24   0000000a = __cb1___byte equ 10
25   00000004 = __cb1___bit equ 4
26              
27                      ; # Copyright (c) 2000-2004 by Wayne C. Gramlich & William T. Benson.
28                      ; # All rights reserved.
29              
30                      ; buffer = 'compass8'
31                      ; line_number = 6
32                      ; library _pic16f630 entered
33                      ; # Copyright (c) 2004 by Wayne C. Gramlich
34                      ; # All rights reserved.
35              
36                      ; buffer = '_pic16f630'
37                      ; line_number = 5
38                      ; processor pic16f630
39                      ; line_number = 6
40                      ; configure_address 0x2007
41                      ; line_number = 7
42                      ;  configure_fill 0x0000
43                      ; line_number = 8
44                      ;  configure_option bg: bg11 = 0x3000
45                      ; line_number = 9
46                      ;  configure_option bg: bg10 = 0x2000
47                      ; line_number = 10
48                      ;  configure_option bg: bg01 = 0x1000
49                      ; line_number = 11
50                      ;  configure_option bg: bg00 = 0x0000
51                      ; line_number = 12
52                      ;  configure_option cpd: on = 0x000
53                      ; line_number = 13
54                      ;  configure_option cpd: off = 0x100
55                      ; line_number = 14
56                      ;  configure_option cp: on = 0x00
57                      ; line_number = 15
58                      ;  configure_option cp: off = 0x80
59                      ; line_number = 16
60                      ;  configure_option boden: on = 0x40
61                      ; line_number = 17
62                      ;  configure_option boden: off = 0x00
63                      ; line_number = 18
64                      ;  configure_option mclre: on = 0x20
65                      ; line_number = 19
66                      ;  configure_option mclre: off = 0x00
67                      ; line_number = 20
68                      ;  configure_option pwrte: on = 0x00
69                      ; line_number = 21
70                      ;  configure_option pwrte: off = 0x10
71                      ; line_number = 22
72                      ;  configure_option wdte: on = 8
73                      ; line_number = 23
74                      ;  configure_option wdte: off = 0
75                      ; line_number = 24
76                      ;  configure_option fosc: rc_clk = 7
77                      ; line_number = 25
78                      ;  configure_option fosc: rc_no_clk = 6
79                      ; line_number = 26
80                      ;  configure_option fosc: int_clk = 5
81                      ; line_number = 27
82                      ;  configure_option fosc: int_no_clk = 4
83                      ; line_number = 28
84                      ;  configure_option fosc: ec = 3
85                      ; line_number = 29
86                      ;  configure_option fosc: hs = 2
87                      ; line_number = 30
88                      ;  configure_option fosc: xt = 1
89                      ; line_number = 31
90                      ;  configure_option fosc: lp = 0
91                      ; line_number = 32
92                      ;  code_bank 0x0 : 0x3ff
93                      ; line_number = 33
94                      ;  data_bank 0x0 : 0x7f
95                      ; line_number = 34
96                      ;  data_bank 0x80 : 0xff
97                      ; line_number = 35
98                      ;  shared_region 0x20 : 0x5f
99                      ; line_number = 36
100                     ;  interrupts_possible
101                     ; line_number = 37
102                     ;  osccal_register_symbol _osccal
103                     ; line_number = 38
104                     ;  osccal_at_address 0x3ff
105                     ; line_number = 39
106                     ;  packages pdip=14, soic=14, tssop=14
107                     ; line_number = 40
108                     ;  pin vdd, power_supply
109                     ; line_number = 41
110                     ; pin_bindings pdip=1, soic=1, tssop=1
111                     ; line_number = 42
112                     ; pin ra5_in, ra5_out, t1cki, osc1, clkin, ra5_unused
113                     ; line_number = 43
114                     ; pin_bindings pdip=2, soic=2, tssop=2
115                     ; line_number = 44
116                     ;  bind_to _porta@5
117                     ; line_number = 45
118                     ;  or_if ra5_in _trisa 16
119                     ; line_number = 46
120                     ;  or_if ra5_out _trisa 0
121                     ; line_number = 47
122                     ; pin ra4_in, ra4_out, t1g, osc2, clkout, ra4_unused
123                     ; line_number = 48
124                     ; pin_bindings pdip=3, soic=3, tssop=3
125                     ; line_number = 49
126                     ;  bind_to _porta@4
127                     ; line_number = 50
128                     ;  or_if ra4_in _trisa 8
129                     ; line_number = 51
130                     ;  or_if ra4_out _trisa 0
131                     ; line_number = 52
132                     ; pin ra3_in, mclr, vpp, ra3_unused
133                     ; line_number = 53
134                     ; pin_bindings pdip=4, soic=4, tssop=4
135                     ; line_number = 54
136                     ;  bind_to _porta@3
137                     ; line_number = 55
138                     ;  or_if ra3_in _trisa 4
139                     ; line_number = 56
140                     ; pin rc5_in, rc5_out, rc5_unused
141                     ; line_number = 57
142                     ; pin_bindings pdip=5, soic=5, tssop=5
143                     ; line_number = 58
144                     ;  bind_to _portc@5
145                     ; line_number = 59
146                     ;  or_if rc5_in _trisc 32
147                     ; line_number = 60
148                     ;  or_if rc5_out _trisc 0
149                     ; line_number = 61
150                     ; pin rc4_in, rc4_out, rc4_unused
151                     ; line_number = 62
152                     ; pin_bindings pdip=6, soic=6, tssop=6
153                     ; line_number = 63
154                     ;  bind_to _portc@4
155                     ; line_number = 64
156                     ;  or_if rc4_in _trisc 16
157                     ; line_number = 65
158                     ;  or_if rc4_out _trisc 0
159                     ; line_number = 66
160                     ; pin rc3_in, rc3_out, r3_unused
161                     ; line_number = 67
162                     ; pin_bindings pdip=7, soic=7, tssop=7
163                     ; line_number = 68
164                     ;  bind_to _portc@3
165                     ; line_number = 69
166                     ;  or_if rc3_in _trisc 8
167                     ; line_number = 70
168                     ;  or_if rc3_out _trisc 0
169                     ; line_number = 71
170                     ; pin rc2_in, rc2_out, rc2_unused
171                     ; line_number = 72
172                     ; pin_bindings pdip=8, soic=8, tssop=8
173                     ; line_number = 73
174                     ;  bind_to _portc@2
175                     ; line_number = 74
176                     ;  or_if rc2_in _trisc 4
177                     ; line_number = 75
178                     ;  or_if rc2_out _trisc 0
179                     ; line_number = 76
180                     ; pin rc1_in, rc1_out, rc1_unused
181                     ; line_number = 77
182                     ; pin_bindings pdip=9, soic=9, tssop=9
183                     ; line_number = 78
184                     ;  bind_to _portc@1
185                     ; line_number = 79
186                     ;  or_if rc1_in _trisc 2
187                     ; line_number = 80
188                     ;  or_if rc1_out _trisc 0
189                     ; line_number = 81
190                     ; pin rc0_in, rc0_out, rc0_unused
191                     ; line_number = 82
192                     ; pin_bindings pdip=10, soic=10, tssop=10
193                     ; line_number = 83
194                     ;  bind_to _portc@0
195                     ; line_number = 84
196                     ;  or_if rc0_in _trisc 1
197                     ; line_number = 85
198                     ;  or_if rc0_out _trisc 0
199                     ; line_number = 86
200                     ; pin ra2_in, ra2_out, cout, t0cki, int, ra2_unused
201                     ; line_number = 87
202                     ; pin_bindings pdip=11, soic=11, tssop=11
203                     ; line_number = 88
204                     ;  bind_to _porta@2
205                     ; line_number = 89
206                     ;  or_if ra2_in _trisa 4
207                     ; line_number = 90
208                     ;  or_if ra2_out _trisa 0
209                     ; line_number = 91
210                     ; pin ra1_in, ra1_out, cin_minus, vref, icspclk, ra1_unused
211                     ; line_number = 92
212                     ; pin_bindings pdip=12, soic=12, tssop=12
213                     ; line_number = 93
214                     ;  bind_to _porta@1
215                     ; line_number = 94
216                     ;  or_if ra1_in _trisa 2
217                     ; line_number = 95
218                     ;  or_if ra1_out _trisa 0
219                     ; line_number = 96
220                     ; pin ra0_in, ra0_out, cin_plus, icspdat, ra0_unused
221                     ; line_number = 97
222                     ; pin_bindings pdip=13, soic=13, tssop=13
223                     ; line_number = 98
224                     ;  bind_to _porta@0
225                     ; line_number = 99
226                     ;  or_if ra0_in _trisa 1
227                     ; line_number = 100
228                     ;  or_if ra0_out _trisa 0
229                     ; line_number = 101
230                     ; pin vss, ground
231                     ; line_number = 102
232                     ; pin_bindings pdip=14, soic=14, tssop=14
233             
234             
235                     ; line_number = 107
236                     ; library _pic16f630_676 entered
237                     ; # Copyright (c) 2004 by Wayne C. Gramlich
238                     ; # All rights reserved.
239             
240                     ; # Shared register definitions for the PIC16F630 and PIC16F676.
241             
242                     ; buffer = '_pic16f630_676'
243                     ; line_number = 7
244                     ; register _indf = 
245  00000000 = _indf equ 0
246             
247                     ; line_number = 9
248                     ; register _tmr0 = 
249  00000001 = _tmr0 equ 1
250             
251                     ; line_number = 11
252                     ; register _pcl = 
253  00000002 = _pcl equ 2
254             
255                     ; line_number = 13
256                     ; register _status = 
257  00000003 = _status equ 3
258                     ; line_number = 14
259                     ; bind _rp0 = _status@5
260  00000003 = _rp0___byte equ _status
261  00000005 = _rp0___bit equ 5
262                     ; line_number = 15
263                     ; bind _to = _status@4
264  00000003 = _to___byte equ _status
265  00000004 = _to___bit equ 4
266                     ; line_number = 16
267                     ; bind _pd = _status@3
268  00000003 = _pd___byte equ _status
269  00000003 = _pd___bit equ 3
270                     ; line_number = 17
271                     ; bind _z = _status@2
272  00000003 = _z___byte equ _status
273  00000002 = _z___bit equ 2
274                     ; line_number = 18
275                     ; bind _dc = _status@1
276  00000003 = _dc___byte equ _status
277  00000001 = _dc___bit equ 1
278                     ; line_number = 19
279                     ; bind _c = _status@0
280  00000003 = _c___byte equ _status
281  00000000 = _c___bit equ 0
282             
283                     ; line_number = 21
284                     ; register _fsr = 
285  00000004 = _fsr equ 4
286             
287                     ; line_number = 23
288                     ; register _porta = 
289  00000005 = _porta equ 5
290                     ; line_number = 24
291                     ; register _ra = 
292  00000005 = _ra equ 5
293                     ; line_number = 25
294                     ; bind _ra5 = _porta@5
295  00000005 = _ra5___byte equ _porta
296  00000005 = _ra5___bit equ 5
297                     ; line_number = 26
298                     ; bind _ra4 = _porta@4
299  00000005 = _ra4___byte equ _porta
300  00000004 = _ra4___bit equ 4
301                     ; line_number = 27
302                     ; bind _ra3 = _porta@3
303  00000005 = _ra3___byte equ _porta
304  00000003 = _ra3___bit equ 3
305                     ; line_number = 28
306                     ; bind _ra2 = _porta@2
307  00000005 = _ra2___byte equ _porta
308  00000002 = _ra2___bit equ 2
309                     ; line_number = 29
310                     ; bind _ra1 = _porta@1
311  00000005 = _ra1___byte equ _porta
312  00000001 = _ra1___bit equ 1
313                     ; line_number = 30
314                     ; bind _ra0 = _porta@0
315  00000005 = _ra0___byte equ _porta
316  00000000 = _ra0___bit equ 0
317             
318                     ; line_number = 32
319                     ; register _portc = 
320  00000007 = _portc equ 7
321                     ; line_number = 33
322                     ; register _rc = 
323  00000007 = _rc equ 7
324                     ; line_number = 34
325                     ; bind _rc5 = _portc@5
326  00000007 = _rc5___byte equ _portc
327  00000005 = _rc5___bit equ 5
328                     ; line_number = 35
329                     ; bind _rc4 = _portc@4
330  00000007 = _rc4___byte equ _portc
331  00000004 = _rc4___bit equ 4
332                     ; line_number = 36
333                     ; bind _rc3 = _portc@3
334  00000007 = _rc3___byte equ _portc
335  00000003 = _rc3___bit equ 3
336                     ; line_number = 37
337                     ; bind _rc2 = _portc@2
338  00000007 = _rc2___byte equ _portc
339  00000002 = _rc2___bit equ 2
340                     ; line_number = 38
341                     ; bind _rc1 = _portc@1
342  00000007 = _rc1___byte equ _portc
343  00000001 = _rc1___bit equ 1
344                     ; line_number = 39
345                     ; bind _rc0 = _portc@0
346  00000007 = _rc0___byte equ _portc
347  00000000 = _rc0___bit equ 0
348             
349                     ; line_number = 41
350                     ; register _pclath = 
351  0000000a = _pclath equ 10
352             
353                     ; line_number = 43
354                     ; register _intcon = 
355  0000000b = _intcon equ 11
356                     ; line_number = 44
357                     ; bind _gie = _intcon@7
358  0000000b = _gie___byte equ _intcon
359  00000007 = _gie___bit equ 7
360                     ; line_number = 45
361                     ; bind _peie = _intcon@6
362  0000000b = _peie___byte equ _intcon
363  00000006 = _peie___bit equ 6
364                     ; line_number = 46
365                     ; bind _t0ie = _intcon@5
366  0000000b = _t0ie___byte equ _intcon
367  00000005 = _t0ie___bit equ 5
368                     ; line_number = 47
369                     ; bind _inte = _intcon@4
370  0000000b = _inte___byte equ _intcon
371  00000004 = _inte___bit equ 4
372                     ; line_number = 48
373                     ; bind _raie = _intcon@3
374  0000000b = _raie___byte equ _intcon
375  00000003 = _raie___bit equ 3
376                     ; line_number = 49
377                     ; bind _t0if = _intcon@2
378  0000000b = _t0if___byte equ _intcon
379  00000002 = _t0if___bit equ 2
380                     ; line_number = 50
381                     ; bind _intf = _intcon@1
382  0000000b = _intf___byte equ _intcon
383  00000001 = _intf___bit equ 1
384                     ; line_number = 51
385                     ; bind _raif = _intcon@0
386  0000000b = _raif___byte equ _intcon
387  00000000 = _raif___bit equ 0
388             
389                     ; line_number = 53
390                     ; register _pir1 = 
391  0000000c = _pir1 equ 12
392                     ; line_number = 54
393                     ; bind _eeif = _pir1@7
394  0000000c = _eeif___byte equ _pir1
395  00000007 = _eeif___bit equ 7
396                     ; line_number = 55
397                     ; bind _cmif = _pir1@3
398  0000000c = _cmif___byte equ _pir1
399  00000003 = _cmif___bit equ 3
400                     ; line_number = 56
401                     ; bind _tmr1if = _pir1@0
402  0000000c = _tmr1if___byte equ _pir1
403  00000000 = _tmr1if___bit equ 0
404             
405                     ; line_number = 58
406                     ; register _tmr1l = 
407  0000000e = _tmr1l equ 14
408             
409                     ; line_number = 60
410                     ; register _tmr1h = 
411  0000000f = _tmr1h equ 15
412             
413                     ; line_number = 62
414                     ; register _t1con = 
415  00000010 = _t1con equ 16
416                     ; line_number = 63
417                     ; bind _t1ge = _t1con@6
418  00000010 = _t1ge___byte equ _t1con
419  00000006 = _t1ge___bit equ 6
420                     ; line_number = 64
421                     ; bind _t1ckps1 = _t1con@5
422  00000010 = _t1ckps1___byte equ _t1con
423  00000005 = _t1ckps1___bit equ 5
424                     ; line_number = 65
425                     ; bind _t1ckps0 = _t1con@4
426  00000010 = _t1ckps0___byte equ _t1con
427  00000004 = _t1ckps0___bit equ 4
428                     ; line_number = 66
429                     ; bind _t1oscen = _t1con@3
430  00000010 = _t1oscen___byte equ _t1con
431  00000003 = _t1oscen___bit equ 3
432                     ; line_number = 67
433                     ; bind _t1sync = _t1con@2
434  00000010 = _t1sync___byte equ _t1con
435  00000002 = _t1sync___bit equ 2
436                     ; line_number = 68
437                     ; bind _tmr1cs = _t1con@1
438  00000010 = _tmr1cs___byte equ _t1con
439  00000001 = _tmr1cs___bit equ 1
440                     ; line_number = 69
441                     ; bind _tmr1on = _t1con@0
442  00000010 = _tmr1on___byte equ _t1con
443  00000000 = _tmr1on___bit equ 0
444             
445                     ; line_number = 71
446                     ; register _cmcon = 
447  00000019 = _cmcon equ 25
448                     ; line_number = 72
449                     ; bind _cout = _cmcon@6
450  00000019 = _cout___byte equ _cmcon
451  00000006 = _cout___bit equ 6
452                     ; line_number = 73
453                     ; bind _cinv = _cmcon@4
454  00000019 = _cinv___byte equ _cmcon
455  00000004 = _cinv___bit equ 4
456                     ; line_number = 74
457                     ; bind _cis = _cmcon@3
458  00000019 = _cis___byte equ _cmcon
459  00000003 = _cis___bit equ 3
460                     ; line_number = 75
461                     ; bind _cm2 = _cmcon@2
462  00000019 = _cm2___byte equ _cmcon
463  00000002 = _cm2___bit equ 2
464                     ; line_number = 76
465                     ; bind _cm1 = _cmcon@1
466  00000019 = _cm1___byte equ _cmcon
467  00000001 = _cm1___bit equ 1
468                     ; line_number = 77
469                     ; bind _cm0 = _cmcon@0
470  00000019 = _cm0___byte equ _cmcon
471  00000000 = _cm0___bit equ 0
472             
473                     ; # Data bank 1 (0x80-0xff):
474             
475                     ; line_number = 81
476                     ; register _option_reg = 
477  00000080 = _option_reg equ 128
478                     ; line_number = 82
479                     ; bind _rapu = _option_reg@7
480  00000080 = _rapu___byte equ _option_reg
481  00000007 = _rapu___bit equ 7
482                     ; line_number = 83
483                     ; bind _intedg = _option_reg@6
484  00000080 = _intedg___byte equ _option_reg
485  00000006 = _intedg___bit equ 6
486                     ; line_number = 84
487                     ; bind _t0cs = _option_reg@5
488  00000080 = _t0cs___byte equ _option_reg
489  00000005 = _t0cs___bit equ 5
490                     ; line_number = 85
491                     ; bind _t0se = _option_reg@4
492  00000080 = _t0se___byte equ _option_reg
493  00000004 = _t0se___bit equ 4
494                     ; line_number = 86
495                     ; bind _psa = _option_reg@3
496  00000080 = _psa___byte equ _option_reg
497  00000003 = _psa___bit equ 3
498                     ; line_number = 87
499                     ; bind _ps2 = _option_reg@2
500  00000080 = _ps2___byte equ _option_reg
501  00000002 = _ps2___bit equ 2
502                     ; line_number = 88
503                     ; bind _ps1 = _option_reg@1
504  00000080 = _ps1___byte equ _option_reg
505  00000001 = _ps1___bit equ 1
506                     ; line_number = 89
507                     ; bind _ps0 = _option_reg@0
508  00000080 = _ps0___byte equ _option_reg
509  00000000 = _ps0___bit equ 0
510             
511                     ; line_number = 91
512                     ; register _trisa = 
513  00000085 = _trisa equ 133
514                     ; line_number = 92
515                     ; bind _trisa5 = _trisa@5
516  00000085 = _trisa5___byte equ _trisa
517  00000005 = _trisa5___bit equ 5
518                     ; line_number = 93
519                     ; bind _trisa4 = _trisa@4
520  00000085 = _trisa4___byte equ _trisa
521  00000004 = _trisa4___bit equ 4
522                     ; line_number = 94
523                     ; bind _trisa3 = _trisa@3
524  00000085 = _trisa3___byte equ _trisa
525  00000003 = _trisa3___bit equ 3
526                     ; line_number = 95
527                     ; bind _trisa2 = _trisa@2
528  00000085 = _trisa2___byte equ _trisa
529  00000002 = _trisa2___bit equ 2
530                     ; line_number = 96
531                     ; bind _trisa1 = _trisa@1
532  00000085 = _trisa1___byte equ _trisa
533  00000001 = _trisa1___bit equ 1
534                     ; line_number = 97
535                     ; bind _trisa0 = _trisa@0
536  00000085 = _trisa0___byte equ _trisa
537  00000000 = _trisa0___bit equ 0
538             
539                     ; line_number = 99
540                     ; register _trisc = 
541  00000087 = _trisc equ 135
542                     ; line_number = 100
543                     ; bind _trisc5 = _trisc@5
544  00000087 = _trisc5___byte equ _trisc
545  00000005 = _trisc5___bit equ 5
546                     ; line_number = 101
547                     ; bind _trisc4 = _trisc@4
548  00000087 = _trisc4___byte equ _trisc
549  00000004 = _trisc4___bit equ 4
550                     ; line_number = 102
551                     ; bind _trisc3 = _trisc@3
552  00000087 = _trisc3___byte equ _trisc
553  00000003 = _trisc3___bit equ 3
554                     ; line_number = 103
555                     ; bind _trisc2 = _trisc@2
556  00000087 = _trisc2___byte equ _trisc
557  00000002 = _trisc2___bit equ 2
558                     ; line_number = 104
559                     ; bind _trisc1 = _trisc@1
560  00000087 = _trisc1___byte equ _trisc
561  00000001 = _trisc1___bit equ 1
562                     ; line_number = 105
563                     ; bind _trisc0 = _trisc@0
564  00000087 = _trisc0___byte equ _trisc
565  00000000 = _trisc0___bit equ 0
566             
567                     ; line_number = 107
568                     ; register _pie1 = 
569  0000008c = _pie1 equ 140
570                     ; line_number = 108
571                     ; bind _eeie = _pie1@7
572  0000008c = _eeie___byte equ _pie1
573  00000007 = _eeie___bit equ 7
574                     ; line_number = 109
575                     ; bind _adie = _pie1@6
576  0000008c = _adie___byte equ _pie1
577  00000006 = _adie___bit equ 6
578                     ; line_number = 110
579                     ; bind _cmie = _pie1@3
580  0000008c = _cmie___byte equ _pie1
581  00000003 = _cmie___bit equ 3
582                     ; line_number = 111
583                     ; bind _tmr1ie = _pie1@0
584  0000008c = _tmr1ie___byte equ _pie1
585  00000000 = _tmr1ie___bit equ 0
586             
587                     ; line_number = 113
588                     ; register _pcon = 
589  0000008e = _pcon equ 142
590                     ; line_number = 114
591                     ; bind _por = _pcon@1
592  0000008e = _por___byte equ _pcon
593  00000001 = _por___bit equ 1
594                     ; line_number = 115
595                     ; bind _bor = _pcon@0
596  0000008e = _bor___byte equ _pcon
597  00000000 = _bor___bit equ 0
598             
599                     ; line_number = 117
600                     ; register _osccal = 
601  00000090 = _osccal equ 144
602                     ; line_number = 118
603                     ; bind _cal5 = _osccal@7
604  00000090 = _cal5___byte equ _osccal
605  00000007 = _cal5___bit equ 7
606                     ; line_number = 119
607                     ; bind _cal4 = _osccal@6
608  00000090 = _cal4___byte equ _osccal
609  00000006 = _cal4___bit equ 6
610                     ; line_number = 120
611                     ; bind _cal3 = _osccal@5
612  00000090 = _cal3___byte equ _osccal
613  00000005 = _cal3___bit equ 5
614                     ; line_number = 121
615                     ; bind _cal2 = _osccal@4
616  00000090 = _cal2___byte equ _osccal
617  00000004 = _cal2___bit equ 4
618                     ; line_number = 122
619                     ; bind _cal1 = _osccal@3
620  00000090 = _cal1___byte equ _osccal
621  00000003 = _cal1___bit equ 3
622                     ; line_number = 123
623                     ; bind _cal0 = _osccal@2
624  00000090 = _cal0___byte equ _osccal
625  00000002 = _cal0___bit equ 2
626                     ; line_number = 124
627                     ; constant _osccal_lsb = 4
628  00000004 = _osccal_lsb equ 4
629             
630                     ; line_number = 126
631                     ; register _wpua = 
632  00000095 = _wpua equ 149
633                     ; line_number = 127
634                     ; bind _wpua5 = _wpua@5
635  00000095 = _wpua5___byte equ _wpua
636  00000005 = _wpua5___bit equ 5
637                     ; line_number = 128
638                     ; bind _wpua4 = _wpua@4
639  00000095 = _wpua4___byte equ _wpua
640  00000004 = _wpua4___bit equ 4
641                     ; line_number = 129
642                     ; bind _wpua2 = _wpua@2
643  00000095 = _wpua2___byte equ _wpua
644  00000002 = _wpua2___bit equ 2
645                     ; line_number = 130
646                     ; bind _wpua1 = _wpua@1
647  00000095 = _wpua1___byte equ _wpua
648  00000001 = _wpua1___bit equ 1
649                     ; line_number = 131
650                     ; bind _wpua0 = _wpua@0
651  00000095 = _wpua0___byte equ _wpua
652  00000000 = _wpua0___bit equ 0
653             
654                     ; line_number = 133
655                     ; register _ioca = 
656  00000096 = _ioca equ 150
657                     ; line_number = 134
658                     ; bind _ioca5 = _ioca@5
659  00000096 = _ioca5___byte equ _ioca
660  00000005 = _ioca5___bit equ 5
661                     ; line_number = 135
662                     ; bind _ioca4 = _ioca@4
663  00000096 = _ioca4___byte equ _ioca
664  00000004 = _ioca4___bit equ 4
665                     ; line_number = 136
666                     ; bind _ioca3 = _ioca@3
667  00000096 = _ioca3___byte equ _ioca
668  00000003 = _ioca3___bit equ 3
669                     ; line_number = 137
670                     ; bind _ioca2 = _ioca@2
671  00000096 = _ioca2___byte equ _ioca
672  00000002 = _ioca2___bit equ 2
673                     ; line_number = 138
674                     ; bind _ioca1 = _ioca@1
675  00000096 = _ioca1___byte equ _ioca
676  00000001 = _ioca1___bit equ 1
677                     ; line_number = 139
678                     ; bind _ioca0 = _ioca@0
679  00000096 = _ioca0___byte equ _ioca
680  00000000 = _ioca0___bit equ 0
681             
682                     ; line_number = 141
683                     ; register _vrcon = 
684  00000099 = _vrcon equ 153
685                     ; line_number = 142
686                     ; bind _vren = _vrcon@7
687  00000099 = _vren___byte equ _vrcon
688  00000007 = _vren___bit equ 7
689                     ; line_number = 143
690                     ; bind _vrr = _vrcon@5
691  00000099 = _vrr___byte equ _vrcon
692  00000005 = _vrr___bit equ 5
693                     ; line_number = 144
694                     ; bind _vr3 = _vrcon@3
695  00000099 = _vr3___byte equ _vrcon
696  00000003 = _vr3___bit equ 3
697                     ; line_number = 145
698                     ; bind _vr2 = _vrcon@2
699  00000099 = _vr2___byte equ _vrcon
700  00000002 = _vr2___bit equ 2
701                     ; line_number = 146
702                     ; bind _vr1 = _vrcon@1
703  00000099 = _vr1___byte equ _vrcon
704  00000001 = _vr1___bit equ 1
705                     ; line_number = 147
706                     ; bind _vr0 = _vrcon@0
707  00000099 = _vr0___byte equ _vrcon
708  00000000 = _vr0___bit equ 0
709             
710                     ; line_number = 149
711                     ; register _eedata = 
712  0000009a = _eedata equ 154
713             
714                     ; line_number = 151
715                     ; register _eeadr = 
716  0000009b = _eeadr equ 155
717             
718                     ; line_number = 153
719                     ; register _eecon1 = 
720  0000009c = _eecon1 equ 156
721                     ; line_number = 154
722                     ; bind _wrerr = _eecon1@3
723  0000009c = _wrerr___byte equ _eecon1
724  00000003 = _wrerr___bit equ 3
725                     ; line_number = 155
726                     ; bind _wren = _eecon1@2
727  0000009c = _wren___byte equ _eecon1
728  00000002 = _wren___bit equ 2
729                     ; line_number = 156
730                     ; bind _wr = _eecon1@1
731  0000009c = _wr___byte equ _eecon1
732  00000001 = _wr___bit equ 1
733                     ; line_number = 157
734                     ; bind _rd = _eecon1@0
735  0000009c = _rd___byte equ _eecon1
736  00000000 = _rd___bit equ 0
737             
738                     ; line_number = 159
739                     ; register _eecon2 = 
740  0000009d = _eecon2 equ 157
741             
742             
743                     ; buffer = '_pic16f630'
744                     ; line_number = 107
745                     ; library _pic16f630_676 exited
746             
747             
748                     ; buffer = 'compass8'
749                     ; line_number = 6
750                     ; library _pic16f630 exited
751                     ; line_number = 7
752                     ; library clock4mhz entered
753                     ; # Copyright (c) 2004 by Wayne C. Gramlich
754                     ; # All rights reserved.
755             
756                     ; # This library defines the contstants {clock_rate}, {instruction_rate},
757                     ; # and {clocks_per_instruction}.
758             
759                     ; # Define processor constants:
760                     ; buffer = 'clock4mhz'
761                     ; line_number = 9
762                     ; constant clock_rate = 4000000
763  003d0900 = clock_rate equ 4000000
764                     ; line_number = 10
765                     ; constant clocks_per_instruction = 4
766  00000004 = clocks_per_instruction equ 4
767                     ; line_number = 11
768                     ; constant instruction_rate = clock_rate / clocks_per_instruction
769  000f4240 = instruction_rate equ 1000000
770             
771             
772                     ; buffer = 'compass8'
773                     ; line_number = 7
774                     ; library clock4mhz exited
775                     ; line_number = 8
776                     ; library bit_bang entered
777                     ; # Copyright (c) 2004 by Wayne C. Gramlich
778                     ; # All rights reserved.
779             
780                     ; # This library provides bit bang routines for sending and receiving
781                     ; # serial data at 2400 baud in 8N1 format (1 start bit, 8 data bits,
782                     ; # No parity bit, 1 stop stop bit.)
783                     ; #
784                     ; # This library requires that the pins {serial_in} and {serial_out}
785                     ; # be defined.  In addition, the variable {instruction_rate} needs
786                     ; # to be defined.  Lastly, there needs to be a {delay} procedure
787                     ; # with an "exact_delay delay_instructions" clause in it.  The {delay}
788                     ; # routine should invoke "watch_dog_reset" so that the watch dog time
789                     ; # can be set.
790             
791                     ; # Define some constants that we will be needing:
792                     ; buffer = 'bit_bang'
793                     ; line_number = 17
794                     ; constant baud_rate = 2400
795  00000960 = baud_rate equ 2400
796                     ; line_number = 18
797                     ; constant instructions_per_bit = instruction_rate / baud_rate
798  000001a0 = instructions_per_bit equ 416
799                     ; line_number = 19
800                     ; constant delays_per_bit = 3
801  00000003 = delays_per_bit equ 3
802                     ; line_number = 20
803                     ; constant instructions_per_delay = instructions_per_bit / delays_per_bit
804  0000008a = instructions_per_delay equ 138
805                     ; line_number = 21
806                     ; constant extra_instructions = 5
807  00000005 = extra_instructions equ 5
808                     ; line_number = 22
809                     ; constant delay_instructions = instructions_per_delay - extra_instructions
810  00000085 = delay_instructions equ 133
811             
812                     ; # The {receiving} bit is sent when data is being received.
813                     ; # It gets cleared whenever data gets sent.  It is used to
814                     ; # determine whether additional delay is needed to turn a
815                     ; # line around for slow interpretted chips like the Basic
816                     ; # Stamp 2 and the OOPIC.
817             
818                     ; line_number = 30
819                     ; global receiving bit
820  0000005f = receiving___byte equ shared___globals+63
821  00000000 = receiving___bit equ 0
822                     ; line_number = 31
823                     ; global waiting bit
824  0000005f = waiting___byte equ shared___globals+63
825  00000001 = waiting___bit equ 1
826             
827                     ; Delaying code generation for procedure  byte_get
828                     ; Delaying code generation for procedure  byte_put
829             
830                     ; buffer = 'compass8'
831                     ; line_number = 8
832                     ; library bit_bang exited
833             
834                     ; line_number = 10
835                     ; package pdip
836                     ; line_number = 11
837                     ; pin 1 = power_supply
838                     ; line_number = 12
839                     ;  pin 2 = ra5_in, name = south, mask = south_pin_mask
840  00000005 = south___byte equ _porta
841  00000005 = south___bit equ 5
842  00000020 = south_pin_mask equ 32
843                     ; line_number = 13
844                     ;  pin 3 = ra4_in, name = west, mask = west_pin_mask
845  00000005 = west___byte equ _porta
846  00000004 = west___bit equ 4
847  00000010 = west_pin_mask equ 16
848                     ; line_number = 14
849                     ;  pin 4 = ra3_in, name = serial_in
850  00000005 = serial_in___byte equ _porta
851  00000003 = serial_in___bit equ 3
852                     ; line_number = 15
853                     ;  pin 5 = rc5_out, name = east_led
854  00000007 = east_led___byte equ _portc
855  00000005 = east_led___bit equ 5
856                     ; line_number = 16
857                     ;  pin 6 = rc4_out, name = north_led
858  00000007 = north_led___byte equ _portc
859  00000004 = north_led___bit equ 4
860                     ; line_number = 17
861                     ;  pin 7 = rc3_out, name = west_led
862  00000007 = west_led___byte equ _portc
863  00000003 = west_led___bit equ 3
864                     ; line_number = 18
865                     ;  pin 8 = rc2_out, name = sout_led
866  00000007 = sout_led___byte equ _portc
867  00000002 = sout_led___bit equ 2
868                     ; line_number = 19
869                     ;  pin 9 = rc1_unused
870                     ; line_number = 20
871                     ;  pin 10 = rc0_out, name = debug_out
872  00000007 = debug_out___byte equ _portc
873  00000000 = debug_out___bit equ 0
874                     ; line_number = 21
875                     ;  pin 11 = ra2_out, name = serial_out
876  00000005 = serial_out___byte equ _porta
877  00000002 = serial_out___bit equ 2
878                     ; line_number = 22
879                     ;  pin 12 = ra1_in, name = east, mask = east_pin_mask
880  00000005 = east___byte equ _porta
881  00000001 = east___bit equ 1
882  00000002 = east_pin_mask equ 2
883                     ; line_number = 23
884                     ;  pin 13 = ra0_in, name = north, mask = north_pin_mask
885  00000005 = north___byte equ _porta
886  00000000 = north___bit equ 0
887  00000001 = north_pin_mask equ 1
888                     ; line_number = 24
889                     ;  pin 14 = ground
890             
891                     ; line_number = 26
892                     ; constant port_mask = north_pin_mask | east_pin_mask | south_pin_mask | west_pin_mask
893  00000033 = port_mask equ 51
894             
895                     ; # Bearing constants:
896                     ; line_number = 30
897                     ; constant north_bearing = 0
898  00000000 = north_bearing equ 0
899                     ; line_number = 31
900                     ; constant north_east_bearing = 1
901  00000001 = north_east_bearing equ 1
902                     ; line_number = 32
903                     ; constant east_bearing = 2
904  00000002 = east_bearing equ 2
905                     ; line_number = 33
906                     ; constant south_east_bearing = 3
907  00000003 = south_east_bearing equ 3
908                     ; line_number = 34
909                     ; constant south_bearing = 4
910  00000004 = south_bearing equ 4
911                     ; line_number = 35
912                     ; constant south_west_bearing = 5
913  00000005 = south_west_bearing equ 5
914                     ; line_number = 36
915                     ; constant west_bearing = 6
916  00000006 = west_bearing equ 6
917                     ; line_number = 37
918                     ; constant north_west_bearing = 7
919  00000007 = north_west_bearing equ 7
920             
921                     ; # Bearing mask constants:
922                     ; line_number = 40
923                     ; constant north_mask = 1 << north_bearing
924  00000001 = north_mask equ 1
925                     ; line_number = 41
926                     ; constant north_east_mask = 1 << north_east_bearing
927  00000002 = north_east_mask equ 2
928                     ; line_number = 42
929                     ; constant east_mask = 1 << east_bearing
930  00000004 = east_mask equ 4
931                     ; line_number = 43
932                     ; constant south_east_mask = 1 << south_east_bearing
933  00000008 = south_east_mask equ 8
934                     ; line_number = 44
935                     ; constant south_mask = 1 << south_bearing
936  00000010 = south_mask equ 16
937                     ; line_number = 45
938                     ; constant south_west_mask = 1 << south_west_bearing
939  00000020 = south_west_mask equ 32
940                     ; line_number = 46
941                     ; constant west_mask = 1 << west_bearing
942  00000040 = west_mask equ 64
943                     ; line_number = 47
944                     ; constant north_west_mask = 1 << north_west_bearing
945  00000080 = north_west_mask equ 128
946             
947                     ; # Global variables go here:
948                     ; line_number = 50
949                     ; global raw byte
950  00000024 = raw equ shared___globals+4
951                     ; line_number = 51
952                     ; global interrupts byte
953  00000025 = interrupts equ shared___globals+5
954                     ; line_number = 52
955                     ; global mask byte
956  00000026 = mask equ shared___globals+6
957                     ; line_number = 53
958                     ; global bearing byte
959  00000027 = bearing equ shared___globals+7
960             
961                     ; # Interrupt and shaft direction bits:
962                     ; line_number = 56
963                     ; global interrupt_pending bit
964  0000005f = interrupt_pending___byte equ shared___globals+63
965  00000002 = interrupt_pending___bit equ 2
966                     ; line_number = 57
967                     ; global interrupt_enable bit
968  0000005f = interrupt_enable___byte equ shared___globals+63
969  00000003 = interrupt_enable___bit equ 3
970             
971                     ; line_number = 59
972                     ; global command_previous byte
973  00000028 = command_previous equ shared___globals+8
974                     ; line_number = 60
975                     ; global command_last byte
976  00000029 = command_last equ shared___globals+9
977                     ; line_number = 61
978                     ; global sent_previous byte
979  0000002a = sent_previous equ shared___globals+10
980                     ; line_number = 62
981                     ; global sent_last byte
982  0000002b = sent_last equ shared___globals+11
983             
984                     ; line_number = 64
985                     ; procedure main
986    0000 :   main:
987                     ; Need to calibrate the oscillator
988  0000 23ff          call    1023
989  0001 1683          bsf     __rp0___byte, __rp0___bit
990  0002 0090          movwf   _osccal
991                     ; Initialize some registers
992  0003 301f          movlw   31
993  0004 0085          movwf   _trisa
994  0005 0187          clrf    _trisc
995                     ; arguments_none
996                     ; line_number = 66
997                     ;  returns_nothing
998             
999                     ; line_number = 68
1000                    ;  local command byte
1001 0000002c = main__command equ shared___globals+12
1002                    ; line_number = 69
1003                    ;  local glitch byte
1004 0000002d = main__glitch equ shared___globals+13
1005                    ; line_number = 70
1006                    ;  local id_index byte
1007 0000002e = main__id_index equ shared___globals+14
1008                    ; line_number = 71
1009                    ;  local high byte
1010 0000002f = main__high equ shared___globals+15
1011                    ; line_number = 72
1012                    ;  local index byte
1013 00000030 = main__index equ shared___globals+16
1014                    ; line_number = 73
1015                    ;  local result byte
1016 00000031 = main__result equ shared___globals+17
1017                    ; line_number = 74
1018                    ;  local temp byte
1019 00000032 = main__temp equ shared___globals+18
1020            
1021                    ; # Initialize everything:
1022                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X1 code:XX=>XX)
1023                    ; line_number = 77
1024                    ;  interrupts := 0
1025 0006 3000          movlw   0
1026 0007 1283          bcf     __rp0___byte, __rp0___bit
1027 0008 00a5          movwf   interrupts
1028                    ; line_number = 78
1029                    ;  interrupt_enable := 0
1030 0009 11df          bcf     interrupt_enable___byte, interrupt_enable___bit
1031                    ; line_number = 79
1032                    ;  interrupt_pending := 0
1033 000a 115f          bcf     interrupt_pending___byte, interrupt_pending___bit
1034                    ; line_number = 80
1035                    ;  glitch := 0
1036 000b 3000          movlw   0
1037 000c 00ad          movwf   main__glitch
1038                    ; line_number = 81
1039                    ;  id_index := 0
1040 000d 3000          movlw   0
1041 000e 00ae          movwf   main__id_index
1042            
1043                    ; # Loop waiting for commands:
1044                    ; line_number = 84
1045                    ;  loop_forever start
1046   000f :   main__1:
1047                    ; # Get a command byte:
1048                    ; line_number = 86
1049                    ;  command := byte_get()
1050 000f 2166          call    byte_get
1051 0010 00ac          movwf   main__command
1052            
1053                    ; # Dispatch on command:
1054                    ; line_number = 89
1055                    ;  switch command >> 6 start
1056 0011 3000          movlw   main__47>>8
1057 0012 008a          movwf   __pclath
1058 00000034 = main__48 equ shared___globals+20
1059 0013 0e2c          swapf   main__command,w
1060 0014 00b4          movwf   main__48
1061 0015 0cb4          rrf     main__48,f
1062 0016 0c34          rrf     main__48,w
1063 0017 3903          andlw   3
1064 0018 3e1a          addlw   main__47
1065 0019 0082          movwf   __pcl
1066                    ; page_group 4
1067   001a :   main__47:
1068 001a 281e          goto    main__44
1069 001b 284b          goto    main__45
1070 001c 284b          goto    main__45
1071 001d 284c          goto    main__46
1072                    ; line_number = 90
1073                    ; case 0
1074   001e :   main__44:
1075                    ; # Command = 00xx xxxx:
1076                    ; line_number = 92
1077                    ;  switch (command >> 3) & 7 start
1078 001e 3000          movlw   main__11>>8
1079 001f 008a          movwf   __pclath
1080 00000034 = main__12 equ shared___globals+20
1081 0020 0c2c          rrf     main__command,w
1082 0021 00b4          movwf   main__12
1083 0022 0cb4          rrf     main__12,f
1084 0023 0c34          rrf     main__12,w
1085 0024 3907          andlw   7
1086 0025 3e27          addlw   main__11
1087 0026 0082          movwf   __pcl
1088                    ; page_group 8
1089   0027 :   main__11:
1090 0027 282f          goto    main__9
1091 0028 284a          goto    main__10
1092 0029 284a          goto    main__10
1093 002a 284a          goto    main__10
1094 002b 284a          goto    main__10
1095 002c 284a          goto    main__10
1096 002d 284a          goto    main__10
1097 002e 284a          goto    main__10
1098                    ; line_number = 93
1099                    ; case 0
1100   002f :   main__9:
1101                    ; # Command = 0000 0xxx:
1102                    ; line_number = 95
1103                    ;  switch command & 7 start
1104 002f 3000          movlw   main__7>>8
1105 0030 008a          movwf   __pclath
1106 0031 3007          movlw   7
1107 0032 052c          andwf   main__command,w
1108 0033 3e35          addlw   main__7
1109 0034 0082          movwf   __pcl
1110                    ; page_group 8
1111   0035 :   main__7:
1112 0035 283d          goto    main__2
1113 0036 2840          goto    main__3
1114 0037 2843          goto    main__4
1115 0038 2846          goto    main__5
1116 0039 2849          goto    main__6
1117 003a 2849          goto    main__6
1118 003b 2849          goto    main__6
1119 003c 2849          goto    main__6
1120                    ; line_number = 96
1121                    ; case 0
1122   003d :   main__2:
1123                    ; # Read Bearing (Command = 0000 0000):
1124                    ; line_number = 98
1125                    ;  call byte_put(bearing)
1126 003d 0827          movf    bearing,w
1127 003e 218f          call    byte_put
1128 003f 2849          goto    main__8
1129                    ; line_number = 99
1130                    ; case 1
1131   0040 :   main__3:
1132                    ; # Read Interrupt Mask (Command = 0000 0001):
1133                    ; line_number = 101
1134                    ;  call byte_put(interrupts)
1135 0040 0825          movf    interrupts,w
1136 0041 218f          call    byte_put
1137 0042 2849          goto    main__8
1138                    ; line_number = 102
1139                    ; case 2
1140   0043 :   main__4:
1141                    ; # Read Raw (Command = 0000 0010):
1142                    ; line_number = 104
1143                    ;  call byte_put(raw)
1144 0043 0824          movf    raw,w
1145 0044 218f          call    byte_put
1146 0045 2849          goto    main__8
1147                    ; line_number = 105
1148                    ; case 3
1149   0046 :   main__5:
1150                    ; # Set Intterupt Mask (Command = 0000 0011):
1151                    ; line_number = 107
1152                    ;  interrupts := byte_get()
1153 0046 2166          call    byte_get
1154 0047 00a5          movwf   interrupts
1155 0048 2849          goto    main__8
1156                    ; line_number = 108
1157                    ; case 4, 5, 6, 7
1158   0049 :   main__6:
1159                    ; line_number = 109
1160                    ; do_nothing
1161   0049 :   main__8:
1162                    ; switch end:(data:X0=>X? code:XX=>XX)
1163                    ; line_number = 95
1164                    ;  switch command & 7 done
1165 0049 284a          goto    main__13
1166                    ; line_number = 110
1167                    ; case 1, 2, 3, 4, 5, 6, 7
1168   004a :   main__10:
1169                    ; line_number = 111
1170                    ; do_nothing
1171   004a :   main__13:
1172                    ; switch end:(data:X0=>X? code:XX=>XX)
1173                    ; line_number = 92
1174                    ;  switch (command >> 3) & 7 done
1175 004a 28ba          goto    main__49
1176                    ; line_number = 112
1177                    ; case 1, 2
1178   004b :   main__45:
1179                    ; # Command = 01xx xxxx or10xx xxxx:
1180                    ; line_number = 114
1181                    ;  do_nothing
1182 004b 28ba          goto    main__49
1183                    ; line_number = 115
1184                    ; case 3
1185   004c :   main__46:
1186                    ; # Command = 11xx xxxx:
1187                    ; line_number = 117
1188                    ;  switch (command >> 3) & 7 start
1189 004c 3000          movlw   main__41>>8
1190 004d 008a          movwf   __pclath
1191 00000034 = main__42 equ shared___globals+20
1192 004e 0c2c          rrf     main__command,w
1193 004f 00b4          movwf   main__42
1194 0050 0cb4          rrf     main__42,f
1195 0051 0c34          rrf     main__42,w
1196 0052 3907          andlw   7
1197 0053 3e55          addlw   main__41
1198 0054 0082          movwf   __pcl
1199                    ; page_group 8
1200   0055 :   main__41:
1201 0055 28ba          goto    main__43
1202 0056 28ba          goto    main__43
1203 0057 28ba          goto    main__43
1204 0058 28ba          goto    main__43
1205 0059 28ba          goto    main__43
1206 005a 285d          goto    main__38
1207 005b 286b          goto    main__39
1208 005c 2884          goto    main__40
1209                    ; line_number = 118
1210                    ; case 5
1211   005d :   main__38:
1212                    ; # Command = 1110 1xxx:
1213                    ; line_number = 120
1214                    ;  if (command & 7) = 7 start
1215                    ; Left minus Right
1216 005d 3007          movlw   7
1217 005e 052c          andwf   main__command,w
1218 005f 3ef9          addlw   249
1219                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1220                    ; CASE: true_code.size = 0 && false_code.size > 1
1221                    ; bit_code_emit_helper1: body_code.size=8 true_test=true body_code.delay=0 (non-uniform delay)
1222 0060 1d03          btfss   __z___byte, __z___bit
1223 0061 286a          goto    main__16
1224                    ; # Return Interrupt Bits (Command = 1110 1111):
1225                    ; line_number = 122
1226                    ;  result := 0
1227 0062 3000          movlw   0
1228 0063 00b1          movwf   main__result
1229                    ; line_number = 123
1230                    ;  if interrupt_enable start
1231                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1232                    ; CASE: True.size=1 False.size=0
1233 0064 19df          btfsc   interrupt_enable___byte, interrupt_enable___bit
1234                    ; line_number = 124
1235                    ; result@1 := 1
1236 00000031 = main__select__14___byte equ main__result
1237 00000001 = main__select__14___bit equ 1
1238 0065 14b1          bsf     main__select__14___byte, main__select__14___bit
1239                    ; Recombine size1 = 0 || size2 = 0
1240                    ; code.delay=4294967295 back_code.delay=4294967295
1241                    ; <=bit_code_emit@symbol; sym=interrupt_enable (data:X0=>X0 code:XX=>XX)
1242                    ; line_number = 123
1243                    ;  if interrupt_enable done
1244                    ; line_number = 125
1245                    ; if interrupt_pending start
1246                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1247                    ; CASE: True.size=1 False.size=0
1248 0066 195f          btfsc   interrupt_pending___byte, interrupt_pending___bit
1249                    ; line_number = 126
1250                    ; result@0 := 1
1251 00000031 = main__select__15___byte equ main__result
1252 00000000 = main__select__15___bit equ 0
1253 0067 1431          bsf     main__select__15___byte, main__select__15___bit
1254                    ; Recombine size1 = 0 || size2 = 0
1255                    ; code.delay=4294967295 back_code.delay=4294967295
1256                    ; <=bit_code_emit@symbol; sym=interrupt_pending (data:X0=>X0 code:XX=>XX)
1257                    ; line_number = 125
1258                    ; if interrupt_pending done
1259                    ; line_number = 127
1260                    ; call byte_put(result)
1261 0068 0831          movf    main__result,w
1262 0069 218f          call    byte_put
1263                    ; Recombine size1 = 0 || size2 = 0
1264   006a :   main__16:
1265                    ; code.delay=4294967295 back_code.delay=4294967295
1266                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1267                    ; line_number = 120
1268                    ;  if (command & 7) = 7 done
1269 006a 28ba          goto    main__43
1270                    ; line_number = 128
1271                    ; case 6
1272   006b :   main__39:
1273                    ; # Shared Interrupt commands.
1274                    ; line_number = 130
1275                    ;  switch (command >> 1) & 3 start
1276 006b 3000          movlw   main__24>>8
1277 006c 008a          movwf   __pclath
1278 00000034 = main__25 equ shared___globals+20
1279 006d 0c2c          rrf     main__command,w
1280 006e 3903          andlw   3
1281 006f 3e71          addlw   main__24
1282 0070 0082          movwf   __pcl
1283                    ; page_group 4
1284   0071 :   main__24:
1285 0071 2875          goto    main__21
1286 0072 2875          goto    main__21
1287 0073 287c          goto    main__22
1288 0074 2880          goto    main__23
1289                    ; line_number = 131
1290                    ; case 0, 1
1291   0075 :   main__21:
1292                    ; # Set Interrupt Bits (Command = 1110 00ep):
1293                    ; line_number = 133
1294                    ;  interrupt_enable := command@1
1295 0075 11df          bcf     interrupt_enable___byte, interrupt_enable___bit
1296 0000002c = main__select__17___byte equ main__command
1297 00000001 = main__select__17___bit equ 1
1298                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1299                    ; CASE: True.size=1 False.size=0
1300 0076 18ac          btfsc   main__select__17___byte, main__select__17___bit
1301 0077 15df          bsf     interrupt_enable___byte, interrupt_enable___bit
1302                    ; Recombine size1 = 0 || size2 = 0
1303                    ; code.delay=4294967295 back_code.delay=4294967295
1304                    ; <=bit_code_emit@symbol; sym=main__select__17 (data:X0=>X0 code:XX=>XX)
1305                    ; line_number = 134
1306                    ;  interrupt_pending := command@0
1307 0078 115f          bcf     interrupt_pending___byte, interrupt_pending___bit
1308 0000002c = main__select__18___byte equ main__command
1309 00000000 = main__select__18___bit equ 0
1310                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1311                    ; CASE: True.size=1 False.size=0
1312 0079 182c          btfsc   main__select__18___byte, main__select__18___bit
1313 007a 155f          bsf     interrupt_pending___byte, interrupt_pending___bit
1314                    ; Recombine size1 = 0 || size2 = 0
1315                    ; code.delay=4294967295 back_code.delay=4294967295
1316                    ; <=bit_code_emit@symbol; sym=main__select__18 (data:X0=>X0 code:XX=>XX)
1317 007b 2883          goto    main__26
1318                    ; line_number = 135
1319                    ; case 2
1320   007c :   main__22:
1321                    ; # Set Interrupt Pending (Command = 1110 010p):
1322                    ; line_number = 137
1323                    ;  interrupt_pending := command@0
1324 007c 115f          bcf     interrupt_pending___byte, interrupt_pending___bit
1325 0000002c = main__select__19___byte equ main__command
1326 00000000 = main__select__19___bit equ 0
1327                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1328                    ; CASE: True.size=1 False.size=0
1329 007d 182c          btfsc   main__select__19___byte, main__select__19___bit
1330 007e 155f          bsf     interrupt_pending___byte, interrupt_pending___bit
1331                    ; Recombine size1 = 0 || size2 = 0
1332                    ; code.delay=4294967295 back_code.delay=4294967295
1333                    ; <=bit_code_emit@symbol; sym=main__select__19 (data:X0=>X0 code:XX=>XX)
1334 007f 2883          goto    main__26
1335                    ; line_number = 138
1336                    ; case 3
1337   0080 :   main__23:
1338                    ; # Set Interrupt Enable (Command = 1110 011e):
1339                    ; line_number = 140
1340                    ;  interrupt_enable := command@0
1341 0080 11df          bcf     interrupt_enable___byte, interrupt_enable___bit
1342 0000002c = main__select__20___byte equ main__command
1343 00000000 = main__select__20___bit equ 0
1344                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1345                    ; CASE: True.size=1 False.size=0
1346 0081 182c          btfsc   main__select__20___byte, main__select__20___bit
1347 0082 15df          bsf     interrupt_enable___byte, interrupt_enable___bit
1348                    ; Recombine size1 = 0 || size2 = 0
1349                    ; code.delay=4294967295 back_code.delay=4294967295
1350                    ; <=bit_code_emit@symbol; sym=main__select__20 (data:X0=>X0 code:XX=>XX)
1351   0083 :   main__26:
1352                    ; switch end:(data:X0=>X0 code:XX=>XX)
1353                    ; line_number = 130
1354                    ;  switch (command >> 1) & 3 done
1355 0083 28ba          goto    main__43
1356                    ; line_number = 141
1357                    ; case 7
1358   0084 :   main__40:
1359                    ; # Shared commands (Command = 1111 1ccc):
1360                    ; line_number = 143
1361                    ;  switch command & 7 start
1362 0084 3000          movlw   main__36>>8
1363 0085 008a          movwf   __pclath
1364 0086 3007          movlw   7
1365 0087 052c          andwf   main__command,w
1366 0088 3e8a          addlw   main__36
1367 0089 0082          movwf   __pcl
1368                    ; page_group 8
1369   008a :   main__36:
1370 008a 2892          goto    main__28
1371 008b 2896          goto    main__29
1372 008c 289a          goto    main__30
1373 008d 289f          goto    main__31
1374 008e 28a2          goto    main__32
1375 008f 28af          goto    main__33
1376 0090 28b2          goto    main__34
1377 0091 28b7          goto    main__35
1378                    ; line_number = 144
1379                    ; case 0
1380   0092 :   main__28:
1381                    ; This case body wants this bit set
1382 0092 1683          bsf     __rp0___byte, __rp0___bit
1383                    ; # Clock Decrement (Command = 1111 1000):
1384                    ; line_number = 146
1385                    ;  _osccal := _osccal - _osccal_lsb
1386 0093 30fc          movlw   252
1387 0094 0790          addwf   _osccal,f
1388 0095 28ba          goto    main__37
1389                    ; line_number = 147
1390                    ; case 1
1391   0096 :   main__29:
1392                    ; This case body wants this bit set
1393 0096 1683          bsf     __rp0___byte, __rp0___bit
1394                    ; # Clock Increment (Command = 1111 1001):
1395                    ; line_number = 149
1396                    ;  _osccal := _osccal + _osccal_lsb
1397 0097 3004          movlw   4
1398 0098 0790          addwf   _osccal,f
1399 0099 28ba          goto    main__37
1400                    ; line_number = 150
1401                    ; case 2
1402   009a :   main__30:
1403                    ; This case body wants this bit set
1404 009a 1683          bsf     __rp0___byte, __rp0___bit
1405                    ; # Clock Read (Command = 1111 1010):
1406                    ; line_number = 152
1407                    ;  call byte_put(_osccal)
1408 009b 0810          movf    _osccal,w
1409 009c 1283          bcf     __rp0___byte, __rp0___bit
1410 009d 218f          call    byte_put
1411 009e 28ba          goto    main__37
1412                    ; line_number = 153
1413                    ; case 3
1414   009f :   main__31:
1415                    ; # Clock Pulse (Command = 1111 1011):
1416                    ; line_number = 155
1417                    ;  call byte_put(0)
1418 009f 3000          movlw   0
1419 00a0 218f          call    byte_put
1420 00a1 28ba          goto    main__37
1421                    ; line_number = 156
1422                    ; case 4
1423   00a2 :   main__32:
1424                    ; # ID Next (Command = 1111 1100):
1425                    ; line_number = 158
1426                    ;  temp := 0
1427 00a2 3000          movlw   0
1428 00a3 00b2          movwf   main__temp
1429                    ; line_number = 159
1430                    ;  if id_index < id.size start
1431 00a4 3032          movlw   50
1432 00a5 022e          subwf   main__id_index,w
1433                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1434                    ; CASE: true.size=0 && false.size>1
1435                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
1436 00a6 1803          btfsc   __c___byte, __c___bit
1437 00a7 28ac          goto    main__27
1438                    ; line_number = 160
1439                    ; temp := id[id_index]
1440 00a8 082e          movf    main__id_index,w
1441 00a9 212e          call    id
1442 00aa 00b2          movwf   main__temp
1443                    ; line_number = 161
1444                    ;  id_index := id_index + 1
1445 00ab 0aae          incf    main__id_index,f
1446   00ac :   main__27:
1447                    ; Recombine size1 = 0 || size2 = 0
1448                    ; code.delay=4294967295 back_code.delay=4294967295
1449                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
1450                    ; line_number = 159
1451                    ;  if id_index < id.size done
1452                    ; line_number = 162
1453                    ; call byte_put(temp)
1454 00ac 0832          movf    main__temp,w
1455 00ad 218f          call    byte_put
1456 00ae 28ba          goto    main__37
1457                    ; line_number = 163
1458                    ; case 5
1459   00af :   main__33:
1460                    ; # ID Reset (Command = 1111 1101):
1461                    ; line_number = 165
1462                    ;  id_index := 0
1463 00af 3000          movlw   0
1464 00b0 00ae          movwf   main__id_index
1465 00b1 28ba          goto    main__37
1466                    ; line_number = 166
1467                    ; case 6
1468   00b2 :   main__34:
1469                    ; # Glitch Read (Command = 1111 1110):
1470                    ; line_number = 168
1471                    ;  call byte_put(glitch)
1472 00b2 082d          movf    main__glitch,w
1473 00b3 218f          call    byte_put
1474                    ; line_number = 169
1475                    ;  glitch := 0
1476 00b4 3000          movlw   0
1477 00b5 00ad          movwf   main__glitch
1478 00b6 28ba          goto    main__37
1479                    ; line_number = 170
1480                    ; case 7
1481   00b7 :   main__35:
1482                    ; # Glitch (Command = 1111 1111):
1483                    ; line_number = 172
1484                    ;  if glitch != 0xff start
1485                    ; Left minus Right
1486 00b7 0a2d          incf    main__glitch,w
1487                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1488                    ; CASE: true_code.size=0 && false_code.size=1
1489 00b8 1d03          btfss   __z___byte, __z___bit
1490                    ; line_number = 173
1491                    ; glitch := glitch + 1
1492 00b9 0aad          incf    main__glitch,f
1493            
1494            
1495                    ; Recombine size1 = 0 || size2 = 0
1496                    ; code.delay=4294967295 back_code.delay=4294967295
1497                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1498                    ; line_number = 172
1499                    ;  if glitch != 0xff done
1500   00ba :   main__37:
1501                    ; switch end:(data:X0=>X? code:XX=>XX)
1502                    ; line_number = 143
1503                    ;  switch command & 7 done
1504   00ba :   main__43:
1505                    ; switch end:(data:X0=>X? code:XX=>XX)
1506                    ; line_number = 117
1507                    ;  switch (command >> 3) & 7 done
1508   00ba :   main__49:
1509                    ; switch end:(data:X0=>X? code:XX=>XX)
1510                    ; line_number = 89
1511                    ;  switch command >> 6 done
1512                    ; line_number = 84
1513                    ;  loop_forever wrap-up
1514                    ; Need to adjust code banks to match front of loop
1515 00ba 1283          bcf     __rp0___byte, __rp0___bit
1516 00bb 280f          goto    main__1
1517                    ; line_number = 84
1518                    ;  loop_forever done
1519                    ; delay after procedure statements=non-uniform
1520            
1521            
1522            
1523            
1524                    ; line_number = 176
1525                    ; procedure delay
1526   00bc :   delay:
1527                    ; arguments_none
1528                    ; line_number = 178
1529                    ;  returns_nothing
1530                    ; line_number = 179
1531                    ;  exact_delay delay_instructions
1532            
1533                    ; # This procedure will delay for 1/3 of a bit time.
1534            
1535                    ; line_number = 183
1536                    ;  local temp byte
1537 00000033 = delay__temp equ shared___globals+19
1538            
1539                    ; # Kick the dog:
1540                    ; before procedure statements delay=0, bit states=(data:X0=>X0 code:XX=>XX)
1541                    ; line_number = 186
1542                    ;  watch_dog_reset done
1543                    ; Delay at watch_dog_reset is 0
1544 00bc 0064          clrwdt  
1545            
1546                    ; line_number = 188
1547                    ;  raw := (_porta & port_mask) ^ port_mask
1548                    ; Delay at assignment is 1
1549 00bd 3033          movlw   51
1550 00be 0505          andwf   _porta,w
1551 00bf 3a33          xorlw   51
1552 00c0 00a4          movwf   raw
1553                    ; line_number = 189
1554                    ;  if raw & north_pin_mask != 0 start
1555                    ; Delay at if is 5
1556                    ; Left minus Right
1557 00c1 3001          movlw   1
1558 00c2 0524          andwf   raw,w
1559                    ; (after recombine) true_delay=15, false_delay=9 uniform_delay=true
1560                    ; CASE: true_code_size > 1 && false_code_size > 1
1561                    ; true_code_size=58 false_code_size=23
1562 00c3 1903          btfsc   __z___byte, __z___bit
1563 00c4 28e0          goto    delay__21
1564                    ; Delay 5 cycles
1565 00c5 28c6          goto    delay__23
1566   00c6 :   delay__23:
1567 00c6 28c7          goto    delay__24
1568   00c7 :   delay__24:
1569 00c7 0000          nop     
1570                    ; line_number = 190
1571                    ; if raw & east_pin_mask != 0 start
1572                    ; Delay at if is 0
1573                    ; Left minus Right
1574 00c8 3002          movlw   2
1575 00c9 0524          andwf   raw,w
1576                    ; (after recombine) true_delay=9, false_delay=4 uniform_delay=true
1577                    ; CASE: true_code_size > 1 && false_code_size > 1
1578                    ; true_code_size=12 false_code_size=4
1579 00ca 1903          btfsc   __z___byte, __z___bit
1580 00cb 28d3          goto    delay__17
1581                    ; Delay 4 cycles
1582 00cc 28cd          goto    delay__19
1583   00cd :   delay__19:
1584 00cd 28ce          goto    delay__20
1585   00ce :   delay__20:
1586                    ; line_number = 191
1587                    ; bearing := north_east_bearing
1588                    ; Delay at assignment is 0
1589 00ce 3001          movlw   1
1590 00cf 00a7          movwf   bearing
1591                    ; line_number = 192
1592                    ;  mask := north_east_mask
1593                    ; Delay at assignment is 2
1594 00d0 3002          movlw   2
1595 00d1 00a6          movwf   mask
1596 00d2 28df          goto    delay__18
1597   00d3 :   delay__17:
1598                    ; line_number = 193
1599                    ; Left minus Right
1600 00d3 3010          movlw   16
1601 00d4 0524          andwf   raw,w
1602                    ; (after recombine) true_delay=3, false_delay=4 uniform_delay=true
1603                    ; CASE: true_code_size > 1 && false_code_size > 1
1604                    ; true_code_size=3 false_code_size=4
1605 00d5 1d03          btfss   __z___byte, __z___bit
1606 00d6 28db          goto    delay__15
1607                    ; line_number = 197
1608                    ; bearing := north_bearing
1609                    ; Delay at assignment is 0
1610 00d7 01a7          clrf    bearing
1611                    ; line_number = 198
1612                    ;  mask := north_mask
1613                    ; Delay at assignment is 1
1614 00d8 3001          movlw   1
1615 00d9 00a6          movwf   mask
1616                    ; Delay 0 cycles
1617 00da 28df          goto    delay__16
1618   00db :   delay__15:
1619                    ; line_number = 194
1620                    ; bearing := north_west_bearing
1621                    ; Delay at assignment is 0
1622 00db 3007          movlw   7
1623 00dc 00a7          movwf   bearing
1624                    ; line_number = 195
1625                    ;  mask := north_west_mask
1626                    ; Delay at assignment is 2
1627 00dd 3080          movlw   128
1628 00de 00a6          movwf   mask
1629   00df :   delay__16:
1630                    ; code.delay=9 back_code.delay=0
1631                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1632                    ; Uniform delay broke in relation_code_emit
1633   00df :   delay__18:
1634                    ; code.delay=9 back_code.delay=0
1635                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1636                    ; Uniform delay broke in relation_code_emit
1637                    ; if final true delay=4 false delay=9 code delay=9
1638                    ; line_number = 190
1639                    ; if raw & east_pin_mask != 0 done
1640 00df 291a          goto    delay__22
1641   00e0 :   delay__21:
1642                    ; line_number = 199
1643                    ; Left minus Right
1644 00e0 3020          movlw   32
1645 00e1 0524          andwf   raw,w
1646                    ; (after recombine) true_delay=9, false_delay=9 uniform_delay=true
1647                    ; CASE: true_code_size > 1 && false_code_size > 1
1648                    ; true_code_size=26 false_code_size=26
1649 00e2 1d03          btfss   __z___byte, __z___bit
1650 00e3 28ff          goto    delay__13
1651                    ; line_number = 209
1652                    ; Left minus Right
1653 00e4 3002          movlw   2
1654 00e5 0524          andwf   raw,w
1655                    ; (after recombine) true_delay=10, false_delay=4 uniform_delay=true
1656                    ; CASE: true_code_size > 1 && false_code_size > 1
1657                    ; true_code_size=14 false_code_size=4
1658 00e6 1903          btfsc   __z___byte, __z___bit
1659 00e7 28f0          goto    delay__3
1660                    ; Delay 5 cycles
1661 00e8 28e9          goto    delay__5
1662   00e9 :   delay__5:
1663 00e9 28ea          goto    delay__6
1664   00ea :   delay__6:
1665 00ea 0000          nop     
1666                    ; line_number = 210
1667                    ; bearing := east_bearing
1668                    ; Delay at assignment is 0
1669 00eb 3002          movlw   2
1670 00ec 00a7          movwf   bearing
1671                    ; line_number = 211
1672                    ;  mask := east_mask
1673                    ; Delay at assignment is 2
1674 00ed 3004          movlw   4
1675 00ee 00a6          movwf   mask
1676 00ef 28fe          goto    delay__4
1677   00f0 :   delay__3:
1678                    ; line_number = 212
1679                    ; Left minus Right
1680 00f0 3010          movlw   16
1681 00f1 0524          andwf   raw,w
1682                    ; (after recombine) true_delay=4, false_delay=4 uniform_delay=true
1683                    ; CASE: true_code_size > 1 && false_code_size > 1
1684                    ; true_code_size=4 false_code_size=4
1685 00f2 1d03          btfss   __z___byte, __z___bit
1686 00f3 28f9          goto    delay__1
1687                    ; line_number = 216
1688                    ; bearing := 0xff
1689                    ; Delay at assignment is 0
1690 00f4 30ff          movlw   255
1691 00f5 00a7          movwf   bearing
1692                    ; line_number = 217
1693                    ;  mask := 0xff
1694                    ; Delay at assignment is 2
1695 00f6 30ff          movlw   255
1696 00f7 00a6          movwf   mask
1697            
1698 00f8 28fe          goto    delay__2
1699   00f9 :   delay__1:
1700                    ; line_number = 213
1701                    ; bearing := west_bearing
1702                    ; Delay at assignment is 0
1703 00f9 3006          movlw   6
1704 00fa 00a7          movwf   bearing
1705                    ; line_number = 214
1706                    ;  mask := west_mask
1707                    ; Delay at assignment is 2
1708 00fb 3040          movlw   64
1709 00fc 00a6          movwf   mask
1710 00fd 0000          nop     
1711   00fe :   delay__2:
1712                    ; code.delay=10 back_code.delay=0
1713                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1714                    ; Uniform delay broke in relation_code_emit
1715   00fe :   delay__4:
1716                    ; code.delay=9 back_code.delay=0
1717                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1718                    ; Uniform delay broke in relation_code_emit
1719 00fe 291a          goto    delay__14
1720   00ff :   delay__13:
1721                    ; line_number = 200
1722                    ; if raw & east_pin_mask != 0 start
1723                    ; Delay at if is 0
1724                    ; Left minus Right
1725 00ff 3002          movlw   2
1726 0100 0524          andwf   raw,w
1727                    ; (after recombine) true_delay=10, false_delay=4 uniform_delay=true
1728                    ; CASE: true_code_size > 1 && false_code_size > 1
1729                    ; true_code_size=14 false_code_size=4
1730 0101 1903          btfsc   __z___byte, __z___bit
1731 0102 290b          goto    delay__9
1732                    ; Delay 5 cycles
1733 0103 2904          goto    delay__11
1734   0104 :   delay__11:
1735 0104 2905          goto    delay__12
1736   0105 :   delay__12:
1737 0105 0000          nop     
1738                    ; line_number = 201
1739                    ; bearing := south_east_bearing
1740                    ; Delay at assignment is 0
1741 0106 3003          movlw   3
1742 0107 00a7          movwf   bearing
1743                    ; line_number = 202
1744                    ;  mask := south_east_mask
1745                    ; Delay at assignment is 2
1746 0108 3008          movlw   8
1747 0109 00a6          movwf   mask
1748 010a 2919          goto    delay__10
1749   010b :   delay__9:
1750                    ; line_number = 203
1751                    ; Left minus Right
1752 010b 3010          movlw   16
1753 010c 0524          andwf   raw,w
1754                    ; (after recombine) true_delay=4, false_delay=4 uniform_delay=true
1755                    ; CASE: true_code_size > 1 && false_code_size > 1
1756                    ; true_code_size=4 false_code_size=4
1757 010d 1d03          btfss   __z___byte, __z___bit
1758 010e 2914          goto    delay__7
1759                    ; line_number = 207
1760                    ; bearing := south_bearing
1761                    ; Delay at assignment is 0
1762 010f 3004          movlw   4
1763 0110 00a7          movwf   bearing
1764                    ; line_number = 208
1765                    ;  mask := south_mask
1766                    ; Delay at assignment is 2
1767 0111 3010          movlw   16
1768 0112 00a6          movwf   mask
1769 0113 2919          goto    delay__8
1770   0114 :   delay__7:
1771                    ; line_number = 204
1772                    ; bearing := south_west_bearing
1773                    ; Delay at assignment is 0
1774 0114 3005          movlw   5
1775 0115 00a7          movwf   bearing
1776                    ; line_number = 205
1777                    ;  mask := south_west_mask
1778                    ; Delay at assignment is 2
1779 0116 3020          movlw   32
1780 0117 00a6          movwf   mask
1781 0118 0000          nop     
1782   0119 :   delay__8:
1783                    ; code.delay=10 back_code.delay=0
1784                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1785                    ; Uniform delay broke in relation_code_emit
1786   0119 :   delay__10:
1787                    ; code.delay=9 back_code.delay=0
1788                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1789                    ; Uniform delay broke in relation_code_emit
1790                    ; if final true delay=4 false delay=10 code delay=9
1791                    ; line_number = 200
1792                    ; if raw & east_pin_mask != 0 done
1793 0119 0000          nop     
1794   011a :   delay__14:
1795                    ; code.delay=15 back_code.delay=0
1796                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1797                    ; Uniform delay broke in relation_code_emit
1798   011a :   delay__22:
1799                    ; code.delay=19 back_code.delay=0
1800                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1801                    ; Uniform delay broke in relation_code_emit
1802                    ; if final true delay=9 false delay=15 code delay=19
1803                    ; line_number = 189
1804                    ;  if raw & north_pin_mask != 0 done
1805                    ; # Deal with interrupts:
1806                    ; line_number = 220
1807                    ;  if interrupts & mask != 0 start
1808                    ; Delay at if is 19
1809                    ; Left minus Right
1810 011a 0825          movf    interrupts,w
1811 011b 0526          andwf   mask,w
1812                    ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
1813                    ; CASE: true_code.size=0 && false_code.size=1
1814 011c 1d03          btfss   __z___byte, __z___bit
1815                    ; line_number = 221
1816                    ; interrupt_pending := 1
1817                    ; Delay at assignment is 0
1818 011d 155f          bsf     interrupt_pending___byte, interrupt_pending___bit
1819                    ; code.delay=23 back_code.delay=0
1820                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1821                    ; Uniform delay broke in relation_code_emit
1822                    ; if final true delay=1 false delay=0 code delay=23
1823                    ; line_number = 220
1824                    ;  if interrupts & mask != 0 done
1825                    ; line_number = 222
1826                    ; if interrupt_enable && interrupt_pending start
1827                    ; Delay at if is 23
1828                    ; (after recombine) true_delay=5, false_delay=2 uniform_delay=true
1829                    ; CASE: true.size>1 false.size=1; false=GOTO
1830                    ; Uniform delay
1831 011e 19df          btfsc   interrupt_enable___byte, interrupt_enable___bit
1832 011f 2923          goto    delay__28
1833 0120 2929          goto    delay__25
1834                    ; Delay 2 cycles
1835 0121 2922          goto    delay__30
1836   0122 :   delay__30:
1837 0122 2929          goto    delay__29
1838   0123 :   delay__28:
1839                    ; &&||: index=1 true_delay=2 false_delay=0 goto_delay=2
1840                    ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
1841                    ; CASE: true_code.size = 0 && false_code.size > 1
1842                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
1843 0123 195f          btfsc   interrupt_pending___byte, interrupt_pending___bit
1844 0124 2927          goto    delay__26
1845                    ; Delay 1 cycles
1846 0125 0000          nop     
1847 0126 2929          goto    delay__27
1848   0127 :   delay__26:
1849                    ; line_number = 223
1850                    ; serial_out := 0
1851                    ; Delay at assignment is 0
1852 0127 1105          bcf     serial_out___byte, serial_out___bit
1853                    ; line_number = 224
1854                    ;  interrupt_enable := 0
1855                    ; Delay at assignment is 1
1856 0128 11df          bcf     interrupt_enable___byte, interrupt_enable___bit
1857            
1858            
1859   0129 :   delay__27:
1860   0129 :   delay__25:
1861                    ; code.delay=5 back_code.delay=0
1862                    ; <=bit_code_emit@symbol; sym=interrupt_pending (data:X0=>X0 code:XX=>XX)
1863                    ; &&||: index=0 true_delay=2 false_delay=0 goto_delay=2
1864                    ; &&||:: index=0 new_delay=5 goto_delay=2
1865   0129 :   delay__29:
1866                    ; code.delay=4294967295 back_code.delay=0
1867                    ; <=bit_code_emit@symbol; sym=interrupt_enable (data:X0=>X0 code:XX=>XX)
1868                    ; if final true delay=2 false delay=0 code delay=23
1869                    ; line_number = 222
1870                    ; if interrupt_enable && interrupt_pending done
1871                    ; delay after procedure statements=23
1872                    ; Delay 108 cycles
1873                    ; Delay loop takes 27 * 4 = 108 cycles
1874 0129 301b          movlw   27
1875   012a :   delay__31:
1876 012a 3eff          addlw   255
1877 012b 1d03          btfss   __z___byte, __z___bit
1878 012c 292a          goto    delay__31
1879                    ; Implied return
1880 012d 3400          retlw   0
1881                    ; Final delay = 133
1882            
1883            
1884            
1885            
1886                    ; line_number = 227
1887                    ; constant zero8 = "\0,0,0,0,0,0,0,0\"
1888                    ; zero8 = '\0,0,0,0,0,0,0,0\'
1889                    ; line_number = 228
1890                    ; constant module_name = "\9\Compass8D"
1891                    ; module_name = '\9\Compass8D'
1892                    ; line_number = 229
1893                    ; constant vendor_name = "\15\Gramlich&Benson"
1894                    ; vendor_name = '\15\Gramlich&Benson'
1895            
1896                    ; line_number = 231
1897                    ; string id = "\1,0,22,0,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
1898                    ; id = '\1,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9\Compass8D\15\Gramlich&Benson'
1899   012e :   id:
1900                    ; Temporarily save index into FSR
1901 012e 0084          movwf   __fsr
1902                    ; Initialize PCLATH to point to this code page
1903 012f 3001          movlw   id___base>>8
1904 0130 008a          movwf   __pclath
1905                    ; Restore index from FSR
1906 0131 0804          movf    __fsr,w
1907 0132 3e34          addlw   id___base
1908                    ; Index to the correct return value
1909 0133 0082          movwf   __pcl
1910                    ; page_group 50
1911   0134 :   id___base:
1912 0134 3401          retlw   1
1913 0135 3400          retlw   0
1914 0136 3416          retlw   22
1915 0137 3400          retlw   0
1916 0138 3400          retlw   0
1917 0139 3400          retlw   0
1918 013a 3400          retlw   0
1919 013b 3400          retlw   0
1920 013c 3400          retlw   0
1921 013d 3400          retlw   0
1922 013e 3400          retlw   0
1923 013f 3400          retlw   0
1924 0140 3400          retlw   0
1925 0141 3400          retlw   0
1926 0142 3400          retlw   0
1927 0143 3400          retlw   0
1928 0144 3400          retlw   0
1929 0145 3400          retlw   0
1930 0146 3400          retlw   0
1931 0147 3400          retlw   0
1932 0148 3400          retlw   0
1933 0149 3400          retlw   0
1934 014a 3400          retlw   0
1935 014b 3400          retlw   0
1936 014c 3409          retlw   9
1937 014d 3443          retlw   67
1938 014e 346f          retlw   111
1939 014f 346d          retlw   109
1940 0150 3470          retlw   112
1941 0151 3461          retlw   97
1942 0152 3473          retlw   115
1943 0153 3473          retlw   115
1944 0154 3438          retlw   56
1945 0155 3444          retlw   68
1946 0156 340f          retlw   15
1947 0157 3447          retlw   71
1948 0158 3472          retlw   114
1949 0159 3461          retlw   97
1950 015a 346d          retlw   109
1951 015b 346c          retlw   108
1952 015c 3469          retlw   105
1953 015d 3463          retlw   99
1954 015e 3468          retlw   104
1955 015f 3426          retlw   38
1956 0160 3442          retlw   66
1957 0161 3465          retlw   101
1958 0162 346e          retlw   110
1959 0163 3473          retlw   115
1960 0164 346f          retlw   111
1961 0165 346e          retlw   110
1962                    ; line_number = 231
1963                    ; string id = "\1,0,22,0,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
1964            
1965            
1966                    ; Appending 2 delayed procedures to code bank 0
1967                    ; buffer = 'bit_bang'
1968                    ; line_number = 33
1969                    ; procedure byte_get
1970   0166 :   byte_get:
1971                    ; arguments_none
1972                    ; line_number = 35
1973                    ;  returns byte
1974            
1975                    ; # This procedure will wait for a byte to be received from
1976                    ; # serial_in_bit.  It calls the delay procedure for all delays.
1977                    ; # This procedure will keep calling the {delay} routine until
1978                    ; # data is received.
1979            
1980                    ; line_number = 42
1981                    ;  local count byte
1982 00000020 = byte_get__count equ shared___globals
1983                    ; line_number = 43
1984                    ;  local byte byte
1985 00000021 = byte_get__byte equ shared___globals+1
1986            
1987                    ; # Why does the delay procedure wait for a third of bit?  Well, it
1988                    ; # has to do with the loop immediately below.  If we catch the
1989                    ; # start bit at the beginning of a 1/3 bit time, we will be
1990                    ; # sampling data at approximately 1/3 of the way into each bit.
1991                    ; # Conversely, if we catch the start near the end of a 1/3 bit
1992                    ; # bit time, we will be sampling data at approximately 2/3 of the
1993                    ; # way into each bit.  So, what this means is that our bit sample
1994                    ; # times will be somewhere between 1/3 and 2/3 of bit (i.e. in
1995                    ; # the middle of the bit.
1996            
1997                    ; # It would be nice to tweak the code to shorter delay times
1998                    ; # (1/4 bit, 1/5 bit, etc.) but then it gets too hard to get
1999                    ; # the bookeeping done in the delay routine.  A PIC running at
2000                    ; # 4MHz (=1MIPS), only has 138 instructions available for the
2001                    ; # delay routine when at 1/3 of bit.
2002            
2003                    ; # Wait for a start bit:
2004                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
2005                    ; line_number = 62
2006                    ;  waiting := 1
2007 0166 14df          bsf     waiting___byte, waiting___bit
2008                    ; line_number = 63
2009                    ;  receiving := 1
2010 0167 145f          bsf     receiving___byte, receiving___bit
2011                    ; line_number = 64
2012                    ;  while serial_in start
2013   0168 :   byte_get__1:
2014                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2015                    ; CASE: true_code.size = 0 && false_code.size > 1
2016                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
2017 0168 1d85          btfss   serial_in___byte, serial_in___bit
2018 0169 296c          goto    byte_get__2
2019                    ; line_number = 65
2020                    ; delay instructions_per_delay - 3 start
2021                    ; Delay expression evaluates to 135
2022                    ; line_number = 66
2023                    ; call delay()
2024                    ; Delay at call is 0
2025 016a 20bc          call    delay
2026                    ; line_number = 65
2027                    ; delay instructions_per_delay - 3 done
2028 016b 2968          goto    byte_get__1
2029                    ; Recombine size1 = 0 || size2 = 0
2030   016c :   byte_get__2:
2031                    ; code.delay=4294967295 back_code.delay=4294967295
2032                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
2033                    ; line_number = 64
2034                    ;  while serial_in done
2035                    ; line_number = 67
2036                    ; waiting := 0
2037 016c 10df          bcf     waiting___byte, waiting___bit
2038            
2039                    ; # Clear out any preceeding interrupt condition:
2040                    ; line_number = 70
2041                    ;  serial_out := 1
2042 016d 1505          bsf     serial_out___byte, serial_out___bit
2043            
2044                    ; # Skip over start bit:
2045                    ; line_number = 73
2046                    ;  delay instructions_per_bit - 2 start
2047                    ; Delay expression evaluates to 414
2048                    ; # There are two instructions of set-up for following loop_exactly:
2049                    ; line_number = 75
2050                    ;  call delay()
2051                    ; Delay at call is 0
2052 016e 20bc          call    delay
2053                    ; line_number = 76
2054                    ;  call delay()
2055                    ; Delay at call is 135
2056 016f 20bc          call    delay
2057                    ; line_number = 77
2058                    ;  call delay()
2059                    ; Delay at call is 270
2060 0170 20bc          call    delay
2061                    ; line_number = 78
2062                    ;  byte := 0
2063                    ; Delay at assignment is 405
2064 0171 3000          movlw   0
2065 0172 00a1          movwf   byte_get__byte
2066            
2067                    ; Delay 7 cycles
2068 0173 2974          goto    byte_get__3
2069   0174 :   byte_get__3:
2070 0174 2975          goto    byte_get__4
2071   0175 :   byte_get__4:
2072 0175 2976          goto    byte_get__5
2073   0176 :   byte_get__5:
2074 0176 0000          nop     
2075                    ; line_number = 73
2076                    ;  delay instructions_per_bit - 2 done
2077                    ; # Read in 8 bits of data:
2078                    ; line_number = 81
2079                    ;  loop_exactly 8 start
2080 00000035 = byte_get__6 equ shared___globals+21
2081 0177 3008          movlw   8
2082 0178 00b5          movwf   byte_get__6
2083   0179 :   byte_get__7:
2084                    ; # There are 3 instrucitons of loop_exactly overhead:
2085                    ; line_number = 83
2086                    ;  delay instructions_per_bit - 3 start
2087                    ; Delay expression evaluates to 413
2088                    ; line_number = 84
2089                    ; call delay()
2090                    ; Delay at call is 0
2091 0179 20bc          call    delay
2092                    ; line_number = 85
2093                    ;  byte := byte >> 1
2094                    ; Delay at assignment is 135
2095                    ; Assignment of variable to self (no code needed)
2096 017a 0ca1          rrf     byte_get__byte,f
2097 017b 13a1          bcf     byte_get__byte, 7
2098                    ; line_number = 86
2099                    ;  if serial_in start
2100                    ; Delay at if is 137
2101                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2102                    ; CASE: True.size=1 False.size=0
2103 017c 1985          btfsc   serial_in___byte, serial_in___bit
2104                    ; line_number = 87
2105                    ; byte@7 := 1
2106                    ; Delay at assignment is 0
2107 00000021 = byte_get__select__8___byte equ byte_get__byte
2108 00000007 = byte_get__select__8___bit equ 7
2109 017d 17a1          bsf     byte_get__select__8___byte, byte_get__select__8___bit
2110                    ; code.delay=139 back_code.delay=0
2111                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
2112                    ; if final true delay=1 false delay=0 code delay=139
2113                    ; line_number = 86
2114                    ;  if serial_in done
2115                    ; line_number = 88
2116                    ; call delay()
2117                    ; Delay at call is 139
2118 017e 20bc          call    delay
2119                    ; line_number = 89
2120                    ;  call delay()
2121                    ; Delay at call is 274
2122 017f 20bc          call    delay
2123            
2124                    ; Delay 4 cycles
2125 0180 2981          goto    byte_get__9
2126   0181 :   byte_get__9:
2127 0181 2982          goto    byte_get__10
2128   0182 :   byte_get__10:
2129                    ; line_number = 83
2130                    ;  delay instructions_per_bit - 3 done
2131                    ; line_number = 81
2132                    ;  loop_exactly 8 wrap-up
2133 0182 0bb5          decfsz  byte_get__6,f
2134 0183 2979          goto    byte_get__7
2135                    ; line_number = 81
2136                    ;  loop_exactly 8 done
2137                    ; # Skip over 2/3's of stop bit; 3 cycles for return:
2138                    ; line_number = 92
2139                    ;  delay instructions_per_delay*2 - 3 start
2140                    ; Delay expression evaluates to 273
2141                    ; line_number = 93
2142                    ; call delay()
2143                    ; Delay at call is 0
2144 0184 20bc          call    delay
2145                    ; line_number = 94
2146                    ;  call delay()
2147                    ; Delay at call is 135
2148 0185 20bc          call    delay
2149                    ; Delay 3 cycles
2150 0186 2987          goto    byte_get__11
2151   0187 :   byte_get__11:
2152 0187 0000          nop     
2153                    ; line_number = 92
2154                    ;  delay instructions_per_delay*2 - 3 done
2155                    ; line_number = 95
2156                    ; command_previous := command_last
2157 0188 0829          movf    command_last,w
2158 0189 00a8          movwf   command_previous
2159                    ; line_number = 96
2160                    ;  command_last := byte
2161 018a 0821          movf    byte_get__byte,w
2162 018b 00a9          movwf   command_last
2163                    ; line_number = 97
2164                    ;  serial_out := 1
2165 018c 1505          bsf     serial_out___byte, serial_out___bit
2166                    ; line_number = 98
2167                    ;  return byte start
2168                    ; line_number = 98
2169 018d 0821          movf    byte_get__byte,w
2170 018e 0008          return  
2171                    ; line_number = 98
2172                    ;  return byte done
2173            
2174            
2175                    ; delay after procedure statements=non-uniform
2176            
2177            
2178            
2179            
2180                    ; line_number = 101
2181                    ; procedure byte_put
2182   018f :   byte_put:
2183                    ; Last argument is sitting in W; save into argument variable
2184 018f 00a3          movwf   byte_put__byte
2185                    ; delay=4294967295
2186                    ; line_number = 102
2187                    ; argument byte byte
2188 00000023 = byte_put__byte equ shared___globals+3
2189                    ; line_number = 103
2190                    ;  returns_nothing
2191            
2192                    ; # This procedure will send {byte} to {serial_out} pin.  The {delay}
2193                    ; # procedure is called to provide the appropriate bit timing.
2194            
2195                    ; line_number = 108
2196                    ;  local count byte
2197 00000022 = byte_put__count equ shared___globals+2
2198            
2199                    ; # {receiving} will be 1 if the last get/put routine was a get.
2200                    ; # Before we start transmitting a response back, we want to ensure
2201                    ; # that there has been enough time to turn the line around.
2202                    ; # We delay the first 1/3 of a bit to pad out the 9-2/3 bits
2203                    ; # from get_byte to 10 bits.  We delay another 3 bits just to
2204                    ; # ensure that slow interpreters do not get overrun.
2205                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
2206                    ; line_number = 116
2207                    ;  sent_previous := sent_last
2208 0190 082b          movf    sent_last,w
2209 0191 00aa          movwf   sent_previous
2210                    ; line_number = 117
2211                    ;  sent_last := byte
2212 0192 0823          movf    byte_put__byte,w
2213 0193 00ab          movwf   sent_last
2214                    ; line_number = 118
2215                    ;  if receiving start
2216                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2217                    ; CASE: true_code.size = 0 && false_code.size > 1
2218                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
2219 0194 1c5f          btfss   receiving___byte, receiving___bit
2220 0195 299c          goto    byte_put__3
2221                    ; line_number = 119
2222                    ; receiving := 0
2223 0196 105f          bcf     receiving___byte, receiving___bit
2224                    ; # 10 = 1 + 3*3 = 3-1/3 extra bits of delay:
2225                    ; line_number = 121
2226                    ;  loop_exactly 10 start
2227 00000036 = byte_put__1 equ shared___globals+22
2228 0197 300a          movlw   10
2229 0198 00b6          movwf   byte_put__1
2230   0199 :   byte_put__2:
2231                    ; line_number = 122
2232                    ; call delay()
2233 0199 20bc          call    delay
2234            
2235                    ; line_number = 121
2236                    ;  loop_exactly 10 wrap-up
2237 019a 0bb6          decfsz  byte_put__1,f
2238 019b 2999          goto    byte_put__2
2239                    ; line_number = 121
2240                    ;  loop_exactly 10 done
2241                    ; Recombine size1 = 0 || size2 = 0
2242   019c :   byte_put__3:
2243                    ; code.delay=4294967295 back_code.delay=4294967295
2244                    ; <=bit_code_emit@symbol; sym=receiving (data:X0=>X0 code:XX=>XX)
2245                    ; line_number = 118
2246                    ;  if receiving done
2247                    ; # Send the start bit:
2248                    ; line_number = 125
2249                    ;  delay instructions_per_bit - 2 start
2250                    ; Delay expression evaluates to 414
2251                    ; # The loop_exactly setup after this is 2 instructions:
2252                    ; line_number = 127
2253                    ;  serial_out := 0
2254                    ; Delay at assignment is 0
2255 019c 1105          bcf     serial_out___byte, serial_out___bit
2256                    ; line_number = 128
2257                    ;  call delay()
2258                    ; Delay at call is 1
2259 019d 20bc          call    delay
2260                    ; line_number = 129
2261                    ;  call delay()
2262                    ; Delay at call is 136
2263 019e 20bc          call    delay
2264                    ; line_number = 130
2265                    ;  call delay()
2266                    ; Delay at call is 271
2267 019f 20bc          call    delay
2268            
2269                    ; Delay 8 cycles
2270                    ; Delay loop takes 2 * 4 = 8 cycles
2271 01a0 3002          movlw   2
2272   01a1 :   byte_put__4:
2273 01a1 3eff          addlw   255
2274 01a2 1d03          btfss   __z___byte, __z___bit
2275 01a3 29a1          goto    byte_put__4
2276                    ; line_number = 125
2277                    ;  delay instructions_per_bit - 2 done
2278                    ; # Send the data:
2279                    ; line_number = 133
2280                    ;  loop_exactly 8 start
2281 00000036 = byte_put__5 equ shared___globals+22
2282 01a4 3008          movlw   8
2283 01a5 00b6          movwf   byte_put__5
2284   01a6 :   byte_put__6:
2285                    ; # Loop_exactly overhead is 3 instructions:
2286                    ; line_number = 135
2287                    ;  delay instructions_per_bit - 3 start
2288                    ; Delay expression evaluates to 413
2289                    ; line_number = 136
2290                    ; if byte@0 start
2291                    ; Delay at if is 0
2292 00000023 = byte_put__select__7___byte equ byte_put__byte
2293 00000000 = byte_put__select__7___bit equ 0
2294                    ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
2295                    ; CASE: true_size=1 && false_size=1
2296                    ; SUBCASE: Double test; true, then false
2297 01a6 1823          btfsc   byte_put__select__7___byte, byte_put__select__7___bit
2298                    ; line_number = 137
2299                    ; serial_out := 1
2300                    ; Delay at assignment is 0
2301 01a7 1505          bsf     serial_out___byte, serial_out___bit
2302 01a8 1c23          btfss   byte_put__select__7___byte, byte_put__select__7___bit
2303                    ; line_number = 139
2304                    ; serial_out := 0
2305                    ; Delay at assignment is 0
2306 01a9 1105          bcf     serial_out___byte, serial_out___bit
2307                    ; code.delay=4 back_code.delay=0
2308                    ; <=bit_code_emit@symbol; sym=byte_put__select__7 (data:X0=>X0 code:XX=>XX)
2309                    ; if final true delay=1 false delay=1 code delay=4
2310                    ; line_number = 136
2311                    ; if byte@0 done
2312                    ; line_number = 140
2313                    ; byte := byte >> 1
2314                    ; Delay at assignment is 4
2315                    ; Assignment of variable to self (no code needed)
2316 01aa 0ca3          rrf     byte_put__byte,f
2317 01ab 13a3          bcf     byte_put__byte, 7
2318                    ; line_number = 141
2319                    ;  call delay()
2320                    ; Delay at call is 6
2321 01ac 20bc          call    delay
2322                    ; line_number = 142
2323                    ;  call delay()
2324                    ; Delay at call is 141
2325 01ad 20bc          call    delay
2326                    ; line_number = 143
2327                    ;  call delay()
2328                    ; Delay at call is 276
2329 01ae 20bc          call    delay
2330            
2331                    ; Delay 2 cycles
2332 01af 29b0          goto    byte_put__8
2333   01b0 :   byte_put__8:
2334                    ; line_number = 135
2335                    ;  delay instructions_per_bit - 3 done
2336                    ; line_number = 133
2337                    ;  loop_exactly 8 wrap-up
2338 01b0 0bb6          decfsz  byte_put__5,f
2339 01b1 29a6          goto    byte_put__6
2340                    ; line_number = 133
2341                    ;  loop_exactly 8 done
2342                    ; # Send the stop bit:
2343                    ; line_number = 146
2344                    ;  delay instructions_per_bit start
2345                    ; Delay expression evaluates to 416
2346                    ; line_number = 147
2347                    ; serial_out := 1
2348                    ; Delay at assignment is 0
2349 01b2 1505          bsf     serial_out___byte, serial_out___bit
2350                    ; line_number = 148
2351                    ;  call delay()
2352                    ; Delay at call is 1
2353 01b3 20bc          call    delay
2354                    ; line_number = 149
2355                    ;  call delay()
2356                    ; Delay at call is 136
2357 01b4 20bc          call    delay
2358                    ; line_number = 150
2359                    ;  call delay()
2360                    ; Delay at call is 271
2361 01b5 20bc          call    delay
2362            
2363            
2364                    ; Delay 10 cycles
2365                    ; Delay loop takes 2 * 4 = 8 cycles
2366 01b6 3002          movlw   2
2367   01b7 :   byte_put__9:
2368 01b7 3eff          addlw   255
2369 01b8 1d03          btfss   __z___byte, __z___bit
2370 01b9 29b7          goto    byte_put__9
2371 01ba 29bb          goto    byte_put__10
2372   01bb :   byte_put__10:
2373                    ; line_number = 146
2374                    ;  delay instructions_per_bit done
2375                    ; delay after procedure statements=non-uniform
2376                    ; Implied return
2377 01bb 3400          retlw   0
2378            
2379            
2380            
2381            
2382                    ; Configuration bits
2383                    ; fill = 0x0
2384                    ; bg = bg11 (0x3000)
2385                    ; cpd = off (0x100)
2386                    ; cp = off (0x80)
2387                    ; boden = off (0x0)
2388                    ; mclre = off (0x0)
2389                    ; pwrte = off (0x10)
2390                    ; wdte = off (0x0)
2391                    ; fosc = int_no_clk (0x4)
2392                    ; 12692 = 0x3194
2393   3194 =           __config 12692
2394                    ; Define start addresses for data regions
2395                    ; Region="shared___globals" Address=32" Size=64 Bytes=23 Bits=4 Available=40
2396                    ; Region="shared___globals" Address=32" Size=64 Bytes=23 Bits=4 Available=40
2397                    ; Region="shared___globals" Address=32" Size=64 Bytes=23 Bits=4 Available=40
2398                    end
