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) 2004 by Wayne C. Gramlich
28                      ; # All rights reserved.
29              
30                      ; buffer = 'servo4'
31                      ; line_number = 6
32                      ; library _pic16f676 entered
33                      ; # Copyright (c) 2004 by Wayne C. Gramlich
34                      ; # All rights reserved.
35              
36                      ; buffer = '_pic16f676'
37                      ; line_number = 5
38                      ; processor pic16f676
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
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, an3, clkout
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                     ;  or_if an3 _trisa 8
133                     ; line_number = 53
134                     ;  or_if an3 _ansel 8
135                     ; line_number = 54
136                     ;  or_if an3 _adcon0 1
137                     ; line_number = 55
138                     ; pin ra3_in, mclr, vpp
139                     ; line_number = 56
140                     ; pin_bindings pdip=4, soic=4, tssop=4
141                     ; line_number = 57
142                     ;  bind_to _porta@4
143                     ; line_number = 58
144                     ;  or_if ra3_in _trisa 4
145                     ; line_number = 59
146                     ; pin rc5_in, rc5_out
147                     ; line_number = 60
148                     ; pin_bindings pdip=5, soic=5, tssop=5
149                     ; line_number = 61
150                     ;  bind_to _portc@5
151                     ; line_number = 62
152                     ;  or_if rc5_in _trisc 32
153                     ; line_number = 63
154                     ;  or_if rc5_out _trisc 0
155                     ; line_number = 64
156                     ; pin rc4_in, rc4_out
157                     ; line_number = 65
158                     ; pin_bindings pdip=6, soic=6, tssop=6
159                     ; line_number = 66
160                     ;  bind_to _portc@4
161                     ; line_number = 67
162                     ;  or_if rc4_in _trisc 16
163                     ; line_number = 68
164                     ;  or_if rc4_out _trisc 0
165                     ; line_number = 69
166                     ; pin rc3_in, rc3_out, an7
167                     ; line_number = 70
168                     ; pin_bindings pdip=7, soic=7, tssop=7
169                     ; line_number = 71
170                     ;  bind_to _portc@3
171                     ; line_number = 72
172                     ;  or_if rc3_in _trisc 8
173                     ; line_number = 73
174                     ;  or_if rc3_out _trisc 0
175                     ; line_number = 74
176                     ;  or_if an7 _trisc 8
177                     ; line_number = 75
178                     ;  or_if an7 _ansel 128
179                     ; line_number = 76
180                     ;  or_if an7 _adcon0 1
181                     ; line_number = 77
182                     ; pin rc2_in, rc2_out, an6
183                     ; line_number = 78
184                     ; pin_bindings pdip=8, soic=8, tssop=8
185                     ; line_number = 79
186                     ;  bind_to _portc@2
187                     ; line_number = 80
188                     ;  or_if rc2_in _trisc 4
189                     ; line_number = 81
190                     ;  or_if rc2_out _trisc 0
191                     ; line_number = 82
192                     ;  or_if an6 _trisc 4
193                     ; line_number = 83
194                     ;  or_if an6 _ansel 64
195                     ; line_number = 84
196                     ;  or_if an6 _adcon0 1
197                     ; line_number = 85
198                     ; pin rc1_in, rc1_out, an5
199                     ; line_number = 86
200                     ; pin_bindings pdip=9, soic=9, tssop=9
201                     ; line_number = 87
202                     ;  bind_to _portc@1
203                     ; line_number = 88
204                     ;  or_if rc1_in _trisc 2
205                     ; line_number = 89
206                     ;  or_if rc1_out _trisc 0
207                     ; line_number = 90
208                     ;  or_if an5 _trisc 2
209                     ; line_number = 91
210                     ;  or_if an5 _ansel 32
211                     ; line_number = 92
212                     ;  or_if an5 _adcon0 1
213                     ; line_number = 93
214                     ; pin rc0_in, rc0_out, an4
215                     ; line_number = 94
216                     ; pin_bindings pdip=10, soic=10, tssop=10
217                     ; line_number = 95
218                     ;  bind_to _portc@0
219                     ; line_number = 96
220                     ;  or_if rc0_in _trisc 1
221                     ; line_number = 97
222                     ;  or_if rc0_out _trisc 0
223                     ; line_number = 98
224                     ;  or_if an4 _trisc 1
225                     ; line_number = 99
226                     ;  or_if an4 _ansel 16
227                     ; line_number = 100
228                     ;  or_if an4 _adcon0 1
229                     ; line_number = 101
230                     ; pin ra2_in, ra2_out, an2, cout, t0cki, int
231                     ; line_number = 102
232                     ; pin_bindings pdip=11, soic=11, tssop=11
233                     ; line_number = 103
234                     ;  bind_to _porta@2
235                     ; line_number = 104
236                     ;  or_if ra2_in _trisa 4
237                     ; line_number = 105
238                     ;  or_if ra2_out _trisa 0
239                     ; line_number = 106
240                     ;  or_if an2 _trisa 4
241                     ; line_number = 107
242                     ;  or_if an2 _ansel 4
243                     ; line_number = 108
244                     ;  or_if an2 _adcon0 1
245                     ; line_number = 109
246                     ; pin ra1_in, ra1_out, an1, cin_minus, vref, icspclk
247                     ; line_number = 110
248                     ; pin_bindings pdip=12, soic=12, tssop=12
249                     ; line_number = 111
250                     ;  bind_to _porta@1
251                     ; line_number = 112
252                     ;  or_if ra1_in _trisa 2
253                     ; line_number = 113
254                     ;  or_if ra1_out _trisa 0
255                     ; line_number = 114
256                     ;  or_if an1 _trisa 2
257                     ; line_number = 115
258                     ;  or_if an1 _ansel 2
259                     ; line_number = 116
260                     ;  or_if an1 _adcon0 1
261                     ; line_number = 117
262                     ; pin ra0_in, ra0_out, an0, cin_plus, icspdat
263                     ; line_number = 118
264                     ; pin_bindings pdip=13, soic=13, tssop=13
265                     ; line_number = 119
266                     ;  bind_to _porta@0
267                     ; line_number = 120
268                     ;  or_if ra0_in _trisa 1
269                     ; line_number = 121
270                     ;  or_if ra0_out _trisa 0
271                     ; line_number = 122
272                     ;  or_if an0 _trisa 1
273                     ; line_number = 123
274                     ;  or_if an0 _ansel 1
275                     ; line_number = 124
276                     ;  or_if an0 _adcon0 1
277                     ; line_number = 125
278                     ; pin vss, ground
279                     ; line_number = 126
280                     ; pin_bindings pdip=14, soic=14, tssop=14
281             
282             
283                     ; line_number = 131
284                     ; library _pic16f630_676 entered
285                     ; # Copyright (c) 2004 by Wayne C. Gramlich
286                     ; # All rights reserved.
287             
288                     ; # Shared register definitions for the PIC16F630 and PIC16F676.
289             
290                     ; buffer = '_pic16f630_676'
291                     ; line_number = 7
292                     ; register _indf = 
293  00000000 = _indf equ 0
294             
295                     ; line_number = 9
296                     ; register _tmr0 = 
297  00000001 = _tmr0 equ 1
298             
299                     ; line_number = 11
300                     ; register _pcl = 
301  00000002 = _pcl equ 2
302             
303                     ; line_number = 13
304                     ; register _status = 
305  00000003 = _status equ 3
306                     ; line_number = 14
307                     ; bind _rp0 = _status@5
308  00000003 = _rp0___byte equ _status
309  00000005 = _rp0___bit equ 5
310                     ; line_number = 15
311                     ; bind _to = _status@4
312  00000003 = _to___byte equ _status
313  00000004 = _to___bit equ 4
314                     ; line_number = 16
315                     ; bind _pd = _status@3
316  00000003 = _pd___byte equ _status
317  00000003 = _pd___bit equ 3
318                     ; line_number = 17
319                     ; bind _z = _status@2
320  00000003 = _z___byte equ _status
321  00000002 = _z___bit equ 2
322                     ; line_number = 18
323                     ; bind _dc = _status@1
324  00000003 = _dc___byte equ _status
325  00000001 = _dc___bit equ 1
326                     ; line_number = 19
327                     ; bind _c = _status@0
328  00000003 = _c___byte equ _status
329  00000000 = _c___bit equ 0
330             
331                     ; line_number = 21
332                     ; register _fsr = 
333  00000004 = _fsr equ 4
334             
335                     ; line_number = 23
336                     ; register _porta = 
337  00000005 = _porta equ 5
338                     ; line_number = 24
339                     ; register _ra = 
340  00000005 = _ra equ 5
341                     ; line_number = 25
342                     ; bind _ra5 = _porta@5
343  00000005 = _ra5___byte equ _porta
344  00000005 = _ra5___bit equ 5
345                     ; line_number = 26
346                     ; bind _ra4 = _porta@4
347  00000005 = _ra4___byte equ _porta
348  00000004 = _ra4___bit equ 4
349                     ; line_number = 27
350                     ; bind _ra3 = _porta@3
351  00000005 = _ra3___byte equ _porta
352  00000003 = _ra3___bit equ 3
353                     ; line_number = 28
354                     ; bind _ra2 = _porta@2
355  00000005 = _ra2___byte equ _porta
356  00000002 = _ra2___bit equ 2
357                     ; line_number = 29
358                     ; bind _ra1 = _porta@1
359  00000005 = _ra1___byte equ _porta
360  00000001 = _ra1___bit equ 1
361                     ; line_number = 30
362                     ; bind _ra0 = _porta@0
363  00000005 = _ra0___byte equ _porta
364  00000000 = _ra0___bit equ 0
365             
366                     ; line_number = 32
367                     ; register _portc = 
368  00000007 = _portc equ 7
369                     ; line_number = 33
370                     ; register _rc = 
371  00000007 = _rc equ 7
372                     ; line_number = 34
373                     ; bind _rc5 = _portc@5
374  00000007 = _rc5___byte equ _portc
375  00000005 = _rc5___bit equ 5
376                     ; line_number = 35
377                     ; bind _rc4 = _portc@4
378  00000007 = _rc4___byte equ _portc
379  00000004 = _rc4___bit equ 4
380                     ; line_number = 36
381                     ; bind _rc3 = _portc@3
382  00000007 = _rc3___byte equ _portc
383  00000003 = _rc3___bit equ 3
384                     ; line_number = 37
385                     ; bind _rc2 = _portc@2
386  00000007 = _rc2___byte equ _portc
387  00000002 = _rc2___bit equ 2
388                     ; line_number = 38
389                     ; bind _rc1 = _portc@1
390  00000007 = _rc1___byte equ _portc
391  00000001 = _rc1___bit equ 1
392                     ; line_number = 39
393                     ; bind _rc0 = _portc@0
394  00000007 = _rc0___byte equ _portc
395  00000000 = _rc0___bit equ 0
396             
397                     ; line_number = 41
398                     ; register _pclath = 
399  0000000a = _pclath equ 10
400             
401                     ; line_number = 43
402                     ; register _intcon = 
403  0000000b = _intcon equ 11
404                     ; line_number = 44
405                     ; bind _gie = _intcon@7
406  0000000b = _gie___byte equ _intcon
407  00000007 = _gie___bit equ 7
408                     ; line_number = 45
409                     ; bind _peie = _intcon@6
410  0000000b = _peie___byte equ _intcon
411  00000006 = _peie___bit equ 6
412                     ; line_number = 46
413                     ; bind _t0ie = _intcon@5
414  0000000b = _t0ie___byte equ _intcon
415  00000005 = _t0ie___bit equ 5
416                     ; line_number = 47
417                     ; bind _inte = _intcon@4
418  0000000b = _inte___byte equ _intcon
419  00000004 = _inte___bit equ 4
420                     ; line_number = 48
421                     ; bind _raie = _intcon@3
422  0000000b = _raie___byte equ _intcon
423  00000003 = _raie___bit equ 3
424                     ; line_number = 49
425                     ; bind _t0if = _intcon@2
426  0000000b = _t0if___byte equ _intcon
427  00000002 = _t0if___bit equ 2
428                     ; line_number = 50
429                     ; bind _intf = _intcon@1
430  0000000b = _intf___byte equ _intcon
431  00000001 = _intf___bit equ 1
432                     ; line_number = 51
433                     ; bind _raif = _intcon@0
434  0000000b = _raif___byte equ _intcon
435  00000000 = _raif___bit equ 0
436             
437                     ; line_number = 53
438                     ; register _pir1 = 
439  0000000c = _pir1 equ 12
440                     ; line_number = 54
441                     ; bind _eeif = _pir1@7
442  0000000c = _eeif___byte equ _pir1
443  00000007 = _eeif___bit equ 7
444                     ; line_number = 55
445                     ; bind _cmif = _pir1@3
446  0000000c = _cmif___byte equ _pir1
447  00000003 = _cmif___bit equ 3
448                     ; line_number = 56
449                     ; bind _tmr1if = _pir1@0
450  0000000c = _tmr1if___byte equ _pir1
451  00000000 = _tmr1if___bit equ 0
452             
453                     ; line_number = 58
454                     ; register _tmr1l = 
455  0000000e = _tmr1l equ 14
456             
457                     ; line_number = 60
458                     ; register _tmr1h = 
459  0000000f = _tmr1h equ 15
460             
461                     ; line_number = 62
462                     ; register _t1con = 
463  00000010 = _t1con equ 16
464                     ; line_number = 63
465                     ; bind _t1ge = _t1con@6
466  00000010 = _t1ge___byte equ _t1con
467  00000006 = _t1ge___bit equ 6
468                     ; line_number = 64
469                     ; bind _t1ckps1 = _t1con@5
470  00000010 = _t1ckps1___byte equ _t1con
471  00000005 = _t1ckps1___bit equ 5
472                     ; line_number = 65
473                     ; bind _t1ckps0 = _t1con@4
474  00000010 = _t1ckps0___byte equ _t1con
475  00000004 = _t1ckps0___bit equ 4
476                     ; line_number = 66
477                     ; bind _t1oscen = _t1con@3
478  00000010 = _t1oscen___byte equ _t1con
479  00000003 = _t1oscen___bit equ 3
480                     ; line_number = 67
481                     ; bind _t1sync = _t1con@2
482  00000010 = _t1sync___byte equ _t1con
483  00000002 = _t1sync___bit equ 2
484                     ; line_number = 68
485                     ; bind _tmr1cs = _t1con@1
486  00000010 = _tmr1cs___byte equ _t1con
487  00000001 = _tmr1cs___bit equ 1
488                     ; line_number = 69
489                     ; bind _tmr1on = _t1con@0
490  00000010 = _tmr1on___byte equ _t1con
491  00000000 = _tmr1on___bit equ 0
492             
493                     ; line_number = 71
494                     ; register _cmcon = 
495  00000019 = _cmcon equ 25
496                     ; line_number = 72
497                     ; bind _cout = _cmcon@6
498  00000019 = _cout___byte equ _cmcon
499  00000006 = _cout___bit equ 6
500                     ; line_number = 73
501                     ; bind _cinv = _cmcon@4
502  00000019 = _cinv___byte equ _cmcon
503  00000004 = _cinv___bit equ 4
504                     ; line_number = 74
505                     ; bind _cis = _cmcon@3
506  00000019 = _cis___byte equ _cmcon
507  00000003 = _cis___bit equ 3
508                     ; line_number = 75
509                     ; bind _cm2 = _cmcon@2
510  00000019 = _cm2___byte equ _cmcon
511  00000002 = _cm2___bit equ 2
512                     ; line_number = 76
513                     ; bind _cm1 = _cmcon@1
514  00000019 = _cm1___byte equ _cmcon
515  00000001 = _cm1___bit equ 1
516                     ; line_number = 77
517                     ; bind _cm0 = _cmcon@0
518  00000019 = _cm0___byte equ _cmcon
519  00000000 = _cm0___bit equ 0
520             
521                     ; # Data bank 1 (0x80-0xff):
522             
523                     ; line_number = 81
524                     ; register _option_reg = 
525  00000080 = _option_reg equ 128
526                     ; line_number = 82
527                     ; bind _rapu = _option_reg@7
528  00000080 = _rapu___byte equ _option_reg
529  00000007 = _rapu___bit equ 7
530                     ; line_number = 83
531                     ; bind _intedg = _option_reg@6
532  00000080 = _intedg___byte equ _option_reg
533  00000006 = _intedg___bit equ 6
534                     ; line_number = 84
535                     ; bind _t0cs = _option_reg@5
536  00000080 = _t0cs___byte equ _option_reg
537  00000005 = _t0cs___bit equ 5
538                     ; line_number = 85
539                     ; bind _t0se = _option_reg@4
540  00000080 = _t0se___byte equ _option_reg
541  00000004 = _t0se___bit equ 4
542                     ; line_number = 86
543                     ; bind _psa = _option_reg@3
544  00000080 = _psa___byte equ _option_reg
545  00000003 = _psa___bit equ 3
546                     ; line_number = 87
547                     ; bind _ps2 = _option_reg@2
548  00000080 = _ps2___byte equ _option_reg
549  00000002 = _ps2___bit equ 2
550                     ; line_number = 88
551                     ; bind _ps1 = _option_reg@1
552  00000080 = _ps1___byte equ _option_reg
553  00000001 = _ps1___bit equ 1
554                     ; line_number = 89
555                     ; bind _ps0 = _option_reg@0
556  00000080 = _ps0___byte equ _option_reg
557  00000000 = _ps0___bit equ 0
558             
559                     ; line_number = 91
560                     ; register _trisa = 
561  00000085 = _trisa equ 133
562                     ; line_number = 92
563                     ; bind _trisa5 = _trisa@5
564  00000085 = _trisa5___byte equ _trisa
565  00000005 = _trisa5___bit equ 5
566                     ; line_number = 93
567                     ; bind _trisa4 = _trisa@4
568  00000085 = _trisa4___byte equ _trisa
569  00000004 = _trisa4___bit equ 4
570                     ; line_number = 94
571                     ; bind _trisa3 = _trisa@3
572  00000085 = _trisa3___byte equ _trisa
573  00000003 = _trisa3___bit equ 3
574                     ; line_number = 95
575                     ; bind _trisa2 = _trisa@2
576  00000085 = _trisa2___byte equ _trisa
577  00000002 = _trisa2___bit equ 2
578                     ; line_number = 96
579                     ; bind _trisa1 = _trisa@1
580  00000085 = _trisa1___byte equ _trisa
581  00000001 = _trisa1___bit equ 1
582                     ; line_number = 97
583                     ; bind _trisa0 = _trisa@0
584  00000085 = _trisa0___byte equ _trisa
585  00000000 = _trisa0___bit equ 0
586             
587                     ; line_number = 99
588                     ; register _trisc = 
589  00000087 = _trisc equ 135
590                     ; line_number = 100
591                     ; bind _trisc5 = _trisc@5
592  00000087 = _trisc5___byte equ _trisc
593  00000005 = _trisc5___bit equ 5
594                     ; line_number = 101
595                     ; bind _trisc4 = _trisc@4
596  00000087 = _trisc4___byte equ _trisc
597  00000004 = _trisc4___bit equ 4
598                     ; line_number = 102
599                     ; bind _trisc3 = _trisc@3
600  00000087 = _trisc3___byte equ _trisc
601  00000003 = _trisc3___bit equ 3
602                     ; line_number = 103
603                     ; bind _trisc2 = _trisc@2
604  00000087 = _trisc2___byte equ _trisc
605  00000002 = _trisc2___bit equ 2
606                     ; line_number = 104
607                     ; bind _trisc1 = _trisc@1
608  00000087 = _trisc1___byte equ _trisc
609  00000001 = _trisc1___bit equ 1
610                     ; line_number = 105
611                     ; bind _trisc0 = _trisc@0
612  00000087 = _trisc0___byte equ _trisc
613  00000000 = _trisc0___bit equ 0
614             
615                     ; line_number = 107
616                     ; register _pie1 = 
617  0000008c = _pie1 equ 140
618                     ; line_number = 108
619                     ; bind _eeie = _pie1@7
620  0000008c = _eeie___byte equ _pie1
621  00000007 = _eeie___bit equ 7
622                     ; line_number = 109
623                     ; bind _adie = _pie1@6
624  0000008c = _adie___byte equ _pie1
625  00000006 = _adie___bit equ 6
626                     ; line_number = 110
627                     ; bind _cmie = _pie1@3
628  0000008c = _cmie___byte equ _pie1
629  00000003 = _cmie___bit equ 3
630                     ; line_number = 111
631                     ; bind _tmr1ie = _pie1@0
632  0000008c = _tmr1ie___byte equ _pie1
633  00000000 = _tmr1ie___bit equ 0
634             
635                     ; line_number = 113
636                     ; register _pcon = 
637  0000008e = _pcon equ 142
638                     ; line_number = 114
639                     ; bind _por = _pcon@1
640  0000008e = _por___byte equ _pcon
641  00000001 = _por___bit equ 1
642                     ; line_number = 115
643                     ; bind _bor = _pcon@0
644  0000008e = _bor___byte equ _pcon
645  00000000 = _bor___bit equ 0
646             
647                     ; line_number = 117
648                     ; register _osccal = 
649  00000090 = _osccal equ 144
650                     ; line_number = 118
651                     ; bind _cal5 = _osccal@7
652  00000090 = _cal5___byte equ _osccal
653  00000007 = _cal5___bit equ 7
654                     ; line_number = 119
655                     ; bind _cal4 = _osccal@6
656  00000090 = _cal4___byte equ _osccal
657  00000006 = _cal4___bit equ 6
658                     ; line_number = 120
659                     ; bind _cal3 = _osccal@5
660  00000090 = _cal3___byte equ _osccal
661  00000005 = _cal3___bit equ 5
662                     ; line_number = 121
663                     ; bind _cal2 = _osccal@4
664  00000090 = _cal2___byte equ _osccal
665  00000004 = _cal2___bit equ 4
666                     ; line_number = 122
667                     ; bind _cal1 = _osccal@3
668  00000090 = _cal1___byte equ _osccal
669  00000003 = _cal1___bit equ 3
670                     ; line_number = 123
671                     ; bind _cal0 = _osccal@2
672  00000090 = _cal0___byte equ _osccal
673  00000002 = _cal0___bit equ 2
674                     ; line_number = 124
675                     ; constant _osccal_lsb = 4
676  00000004 = _osccal_lsb equ 4
677             
678                     ; line_number = 126
679                     ; register _wpua = 
680  00000095 = _wpua equ 149
681                     ; line_number = 127
682                     ; bind _wpua5 = _wpua@5
683  00000095 = _wpua5___byte equ _wpua
684  00000005 = _wpua5___bit equ 5
685                     ; line_number = 128
686                     ; bind _wpua4 = _wpua@4
687  00000095 = _wpua4___byte equ _wpua
688  00000004 = _wpua4___bit equ 4
689                     ; line_number = 129
690                     ; bind _wpua2 = _wpua@2
691  00000095 = _wpua2___byte equ _wpua
692  00000002 = _wpua2___bit equ 2
693                     ; line_number = 130
694                     ; bind _wpua1 = _wpua@1
695  00000095 = _wpua1___byte equ _wpua
696  00000001 = _wpua1___bit equ 1
697                     ; line_number = 131
698                     ; bind _wpua0 = _wpua@0
699  00000095 = _wpua0___byte equ _wpua
700  00000000 = _wpua0___bit equ 0
701             
702                     ; line_number = 133
703                     ; register _ioca = 
704  00000096 = _ioca equ 150
705                     ; line_number = 134
706                     ; bind _ioca5 = _ioca@5
707  00000096 = _ioca5___byte equ _ioca
708  00000005 = _ioca5___bit equ 5
709                     ; line_number = 135
710                     ; bind _ioca4 = _ioca@4
711  00000096 = _ioca4___byte equ _ioca
712  00000004 = _ioca4___bit equ 4
713                     ; line_number = 136
714                     ; bind _ioca3 = _ioca@3
715  00000096 = _ioca3___byte equ _ioca
716  00000003 = _ioca3___bit equ 3
717                     ; line_number = 137
718                     ; bind _ioca2 = _ioca@2
719  00000096 = _ioca2___byte equ _ioca
720  00000002 = _ioca2___bit equ 2
721                     ; line_number = 138
722                     ; bind _ioca1 = _ioca@1
723  00000096 = _ioca1___byte equ _ioca
724  00000001 = _ioca1___bit equ 1
725                     ; line_number = 139
726                     ; bind _ioca0 = _ioca@0
727  00000096 = _ioca0___byte equ _ioca
728  00000000 = _ioca0___bit equ 0
729             
730                     ; line_number = 141
731                     ; register _vrcon = 
732  00000099 = _vrcon equ 153
733                     ; line_number = 142
734                     ; bind _vren = _vrcon@7
735  00000099 = _vren___byte equ _vrcon
736  00000007 = _vren___bit equ 7
737                     ; line_number = 143
738                     ; bind _vrr = _vrcon@5
739  00000099 = _vrr___byte equ _vrcon
740  00000005 = _vrr___bit equ 5
741                     ; line_number = 144
742                     ; bind _vr3 = _vrcon@3
743  00000099 = _vr3___byte equ _vrcon
744  00000003 = _vr3___bit equ 3
745                     ; line_number = 145
746                     ; bind _vr2 = _vrcon@2
747  00000099 = _vr2___byte equ _vrcon
748  00000002 = _vr2___bit equ 2
749                     ; line_number = 146
750                     ; bind _vr1 = _vrcon@1
751  00000099 = _vr1___byte equ _vrcon
752  00000001 = _vr1___bit equ 1
753                     ; line_number = 147
754                     ; bind _vr0 = _vrcon@0
755  00000099 = _vr0___byte equ _vrcon
756  00000000 = _vr0___bit equ 0
757             
758                     ; line_number = 149
759                     ; register _eedata = 
760  0000009a = _eedata equ 154
761             
762                     ; line_number = 151
763                     ; register _eeadr = 
764  0000009b = _eeadr equ 155
765             
766                     ; line_number = 153
767                     ; register _eecon1 = 
768  0000009c = _eecon1 equ 156
769                     ; line_number = 154
770                     ; bind _wrerr = _eecon1@3
771  0000009c = _wrerr___byte equ _eecon1
772  00000003 = _wrerr___bit equ 3
773                     ; line_number = 155
774                     ; bind _wren = _eecon1@2
775  0000009c = _wren___byte equ _eecon1
776  00000002 = _wren___bit equ 2
777                     ; line_number = 156
778                     ; bind _wr = _eecon1@1
779  0000009c = _wr___byte equ _eecon1
780  00000001 = _wr___bit equ 1
781                     ; line_number = 157
782                     ; bind _rd = _eecon1@0
783  0000009c = _rd___byte equ _eecon1
784  00000000 = _rd___bit equ 0
785             
786                     ; line_number = 159
787                     ; register _eecon2 = 
788  0000009d = _eecon2 equ 157
789             
790             
791                     ; buffer = '_pic16f676'
792                     ; line_number = 131
793                     ; library _pic16f630_676 exited
794             
795                     ; # The only difference between the PIC16F676 and the PIC16F630 is that
796                     ; # the 'F676 has 8 channels of A/D and the 'F630 does not.
797             
798                     ; line_number = 136
799                     ; register _adresh = 
800  0000001e = _adresh equ 30
801             
802                     ; # The {_adif} flag is only avaiable for the PIC16F676:
803                     ; line_number = 139
804                     ; bind _adif = _pir1@6
805  0000000c = _adif___byte equ _pir1
806  00000006 = _adif___bit equ 6
807             
808                     ; line_number = 141
809                     ; register _adcon0 = 
810  0000001f = _adcon0 equ 31
811                     ; line_number = 142
812                     ; bind _adfm = _adcon0@7
813  0000001f = _adfm___byte equ _adcon0
814  00000007 = _adfm___bit equ 7
815                     ; line_number = 143
816                     ; bind _vcfg = _adcon0@5
817  0000001f = _vcfg___byte equ _adcon0
818  00000005 = _vcfg___bit equ 5
819                     ; line_number = 144
820                     ; bind _chs2 = _adcon0@4
821  0000001f = _chs2___byte equ _adcon0
822  00000004 = _chs2___bit equ 4
823                     ; line_number = 145
824                     ; bind _chs1 = _adcon0@3
825  0000001f = _chs1___byte equ _adcon0
826  00000003 = _chs1___bit equ 3
827                     ; line_number = 146
828                     ; bind _chs0 = _adcon0@2
829  0000001f = _chs0___byte equ _adcon0
830  00000002 = _chs0___bit equ 2
831                     ; line_number = 147
832                     ; bind _go = _adcon0@1
833  0000001f = _go___byte equ _adcon0
834  00000001 = _go___bit equ 1
835                     ; line_number = 148
836                     ; bind _adon = _adcon0@0
837  0000001f = _adon___byte equ _adcon0
838  00000000 = _adon___bit equ 0
839             
840                     ; line_number = 150
841                     ; register _adsel = 
842  00000091 = _adsel equ 145
843                     ; line_number = 151
844                     ; bind _ans7 = _adsel@7
845  00000091 = _ans7___byte equ _adsel
846  00000007 = _ans7___bit equ 7
847                     ; line_number = 152
848                     ; bind _ans6 = _adsel@6
849  00000091 = _ans6___byte equ _adsel
850  00000006 = _ans6___bit equ 6
851                     ; line_number = 153
852                     ; bind _ans5 = _adsel@5
853  00000091 = _ans5___byte equ _adsel
854  00000005 = _ans5___bit equ 5
855                     ; line_number = 154
856                     ; bind _ans4 = _adsel@4
857  00000091 = _ans4___byte equ _adsel
858  00000004 = _ans4___bit equ 4
859                     ; line_number = 155
860                     ; bind _ans3 = _adsel@3
861  00000091 = _ans3___byte equ _adsel
862  00000003 = _ans3___bit equ 3
863                     ; line_number = 156
864                     ; bind _ans2 = _adsel@2
865  00000091 = _ans2___byte equ _adsel
866  00000002 = _ans2___bit equ 2
867                     ; line_number = 157
868                     ; bind _ans1 = _adsel@1
869  00000091 = _ans1___byte equ _adsel
870  00000001 = _ans1___bit equ 1
871                     ; line_number = 158
872                     ; bind _ans0 = _adsel@0
873  00000091 = _ans0___byte equ _adsel
874  00000000 = _ans0___bit equ 0
875             
876                     ; line_number = 160
877                     ; register _adresl = 
878  0000009e = _adresl equ 158
879             
880                     ; line_number = 162
881                     ; register _adcon1 = 
882  0000009f = _adcon1 equ 159
883                     ; line_number = 163
884                     ; bind _adcs2 = _adcon1@6
885  0000009f = _adcs2___byte equ _adcon1
886  00000006 = _adcs2___bit equ 6
887                     ; line_number = 164
888                     ; bind _adcs1 = _adcon1@5
889  0000009f = _adcs1___byte equ _adcon1
890  00000005 = _adcs1___bit equ 5
891                     ; line_number = 165
892                     ; bind _adcs0 = _adcon1@4
893  0000009f = _adcs0___byte equ _adcon1
894  00000004 = _adcs0___bit equ 4
895             
896             
897                     ; buffer = 'servo4'
898                     ; line_number = 6
899                     ; library _pic16f676 exited
900                     ; line_number = 7
901                     ; library clock4mhz entered
902                     ; # Copyright (c) 2004 by Wayne C. Gramlich
903                     ; # All rights reserved.
904             
905                     ; # This library defines the contstants {clock_rate}, {instruction_rate},
906                     ; # and {clocks_per_instruction}.
907             
908                     ; # Define processor constants:
909                     ; buffer = 'clock4mhz'
910                     ; line_number = 9
911                     ; constant clock_rate = 4000000
912  003d0900 = clock_rate equ 4000000
913                     ; line_number = 10
914                     ; constant clocks_per_instruction = 4
915  00000004 = clocks_per_instruction equ 4
916                     ; line_number = 11
917                     ; constant instruction_rate = clock_rate / clocks_per_instruction
918  000f4240 = instruction_rate equ 1000000
919             
920             
921                     ; buffer = 'servo4'
922                     ; line_number = 7
923                     ; library clock4mhz exited
924                     ; line_number = 8
925                     ; library bit_bang entered
926                     ; # Copyright (c) 2004 by Wayne C. Gramlich
927                     ; # All rights reserved.
928             
929                     ; # This library provides bit bang routines for sending and receiving
930                     ; # serial data at 2400 baud in 8N1 format (1 start bit, 8 data bits,
931                     ; # No parity bit, 1 stop stop bit.)
932                     ; #
933                     ; # This library requires that the pins {serial_in} and {serial_out}
934                     ; # be defined.  In addition, the variable {instruction_rate} needs
935                     ; # to be defined.  Lastly, there needs to be a {delay} procedure
936                     ; # with an "exact_delay delay_instructions" clause in it.  The {delay}
937                     ; # routine should invoke "watch_dog_reset" so that the watch dog time
938                     ; # can be set.
939             
940                     ; # Define some constants that we will be needing:
941                     ; buffer = 'bit_bang'
942                     ; line_number = 17
943                     ; constant baud_rate = 2400
944  00000960 = baud_rate equ 2400
945                     ; line_number = 18
946                     ; constant instructions_per_bit = instruction_rate / baud_rate
947  000001a0 = instructions_per_bit equ 416
948                     ; line_number = 19
949                     ; constant delays_per_bit = 3
950  00000003 = delays_per_bit equ 3
951                     ; line_number = 20
952                     ; constant instructions_per_delay = instructions_per_bit / delays_per_bit
953  0000008a = instructions_per_delay equ 138
954                     ; line_number = 21
955                     ; constant extra_instructions = 5
956  00000005 = extra_instructions equ 5
957                     ; line_number = 22
958                     ; constant delay_instructions = instructions_per_delay - extra_instructions
959  00000085 = delay_instructions equ 133
960             
961                     ; # The {receiving} bit is sent when data is being received.
962                     ; # It gets cleared whenever data gets sent.  It is used to
963                     ; # determine whether additional delay is needed to turn a
964                     ; # line around for slow interpretted chips like the Basic
965                     ; # Stamp 2 and the OOPIC.
966             
967                     ; line_number = 30
968                     ; global receiving bit
969  0000005f = receiving___byte equ shared___globals+63
970  00000000 = receiving___bit equ 0
971                     ; line_number = 31
972                     ; global waiting bit
973  0000005f = waiting___byte equ shared___globals+63
974  00000001 = waiting___bit equ 1
975             
976                     ; Delaying code generation for procedure  byte_get
977                     ; Delaying code generation for procedure  byte_put
978             
979                     ; buffer = 'servo4'
980                     ; line_number = 8
981                     ; library bit_bang exited
982             
983                     ; line_number = 10
984                     ; package pdip
985                     ; line_number = 11
986                     ; pin 1 = power_supply
987                     ; line_number = 12
988                     ;  pin 2 = ra5_out, name = debug_out
989  00000005 = debug_out___byte equ _porta
990  00000005 = debug_out___bit equ 5
991                     ; line_number = 13
992                     ;  pin 3 = ra4_out, name = serial_out
993  00000005 = serial_out___byte equ _porta
994  00000004 = serial_out___bit equ 4
995                     ; line_number = 14
996                     ;  pin 4 = ra3_in, name = serial_in
997  00000005 = serial_in___byte equ _porta
998  00000004 = serial_in___bit equ 4
999                     ; line_number = 15
1000                    ;  pin 5 = rc5_out, name = servo3
1001 00000007 = servo3___byte equ _portc
1002 00000005 = servo3___bit equ 5
1003                    ; line_number = 16
1004                    ;  pin 6 = rc4_in, name = calibrate
1005 00000007 = calibrate___byte equ _portc
1006 00000004 = calibrate___bit equ 4
1007                    ; line_number = 17
1008                    ;  pin 7 = an7, name = sense2
1009 00000007 = sense2___byte equ _portc
1010 00000003 = sense2___bit equ 3
1011                    ; line_number = 18
1012                    ;  pin 8 = an6, name = sense3
1013 00000007 = sense3___byte equ _portc
1014 00000002 = sense3___bit equ 2
1015                    ; line_number = 19
1016                    ;  pin 9 = an5, name = sense1
1017 00000007 = sense1___byte equ _portc
1018 00000001 = sense1___bit equ 1
1019                    ; line_number = 20
1020                    ;  pin 10 = an4, name = sense0
1021 00000007 = sense0___byte equ _portc
1022 00000000 = sense0___bit equ 0
1023                    ; line_number = 21
1024                    ;  pin 11 = ra2_out, name = servo2
1025 00000005 = servo2___byte equ _porta
1026 00000002 = servo2___bit equ 2
1027                    ; line_number = 22
1028                    ;  pin 12 = ra1_out, name = servo1
1029 00000005 = servo1___byte equ _porta
1030 00000001 = servo1___bit equ 1
1031                    ; line_number = 23
1032                    ;  pin 13 = ra0_out, name = servo0
1033 00000005 = servo0___byte equ _porta
1034 00000000 = servo0___bit equ 0
1035                    ; line_number = 24
1036                    ;  pin 14 = ground
1037            
1038            
1039                    ; # Define the pin bindings:
1040                    ; line_number = 29
1041                    ; constant initial_minimum = 1000
1042 000003e8 = initial_minimum equ 1000
1043                    ; line_number = 30
1044                    ; constant initial_maximum = 2000
1045 000007d0 = initial_maximum equ 2000
1046                    ; line_number = 31
1047                    ; constant initial_scale = (initial_maximum - initial_minimum) >> 4
1048 0000003e = initial_scale equ 62
1049                    ; line_number = 32
1050                    ; constant initial_high = initial_minimum >> 8
1051 00000003 = initial_high equ 3
1052                    ; line_number = 33
1053                    ; constant initial_low = initial_minimum & 0xff
1054 000000e8 = initial_low equ 232
1055            
1056                    ; line_number = 35
1057                    ; global analogs[4] array[byte]
1058 00000024 = analogs equ shared___globals+4
1059            
1060                    ; # The next {eedata_size} bytes are saved and restored from EEData:
1061                    ; line_number = 38
1062                    ; constant eedata_size = 13
1063 0000000d = eedata_size equ 13
1064                    ; line_number = 39
1065                    ; global base_lows[4] array[byte]
1066 00000028 = base_lows equ shared___globals+8
1067                    ; line_number = 40
1068                    ; global base_highs[4] array[byte]
1069 0000002c = base_highs equ shared___globals+12
1070                    ; line_number = 41
1071                    ; global scales[4] array[byte]
1072 00000030 = scales equ shared___globals+16
1073                    ; line_number = 42
1074                    ; global address byte
1075 00000034 = address equ shared___globals+20
1076            
1077                    ; line_number = 44
1078                    ; global fines[4] array[byte]
1079 00000035 = fines equ shared___globals+21
1080                    ; line_number = 45
1081                    ; global positions[4] array[byte]
1082 00000039 = positions equ shared___globals+25
1083                    ; line_number = 46
1084                    ; global interrupts byte
1085 0000003d = interrupts equ shared___globals+29
1086                    ; line_number = 47
1087                    ; global enables byte
1088 0000003e = enables equ shared___globals+30
1089            
1090                    ; line_number = 49
1091                    ; global command_previous byte
1092 0000003f = command_previous equ shared___globals+31
1093                    ; line_number = 50
1094                    ; global command_last byte
1095 00000040 = command_last equ shared___globals+32
1096                    ; line_number = 51
1097                    ; global sent_previous byte
1098 00000041 = sent_previous equ shared___globals+33
1099                    ; line_number = 52
1100                    ; global sent_last byte
1101 00000042 = sent_last equ shared___globals+34
1102            
1103                    ; #origin 0x3ff
1104                    ; #
1105                    ; #procedure osc_cal
1106                    ; #    arguments_none
1107                    ; #    returns byte
1108                    ; #
1109                    ; #    return 0x9c
1110            
1111                    ; line_number = 62
1112                    ; origin 0
1113   0000 :           org     0
1114            
1115                    ; line_number = 64
1116                    ; procedure xmain
1117   0000 :   xmain:
1118                    ; arguments_none
1119                    ; line_number = 66
1120                    ;  returns_nothing
1121            
1122                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
1123                    ; line_number = 68
1124                    ;  call main()
1125 0000 200b          call    main
1126            
1127                    ; delay after procedure statements=non-uniform
1128                    ; Implied return
1129 0001 3400          retlw   0
1130            
1131            
1132            
1133            
1134                    ; line_number = 70
1135                    ; origin 4
1136   0004 :           org     4
1137            
1138                    ; line_number = 72
1139                    ; procedure xinterrupt
1140   0004 :   xinterrupt:
1141                    ; arguments_none
1142                    ; line_number = 74
1143                    ;  returns_nothing
1144            
1145                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
1146                    ; line_number = 76
1147                    ;  servo0 := 0
1148 0004 1005          bcf     servo0___byte, servo0___bit
1149                    ; line_number = 77
1150                    ;  servo1 := 0
1151 0005 1085          bcf     servo1___byte, servo1___bit
1152                    ; line_number = 78
1153                    ;  servo2 := 0
1154 0006 1105          bcf     servo2___byte, servo2___bit
1155                    ; line_number = 79
1156                    ;  servo3 := 0
1157 0007 1287          bcf     servo3___byte, servo3___bit
1158                    ; line_number = 80
1159                    ;  _tmr1if := 0
1160 0008 100c          bcf     _tmr1if___byte, _tmr1if___bit
1161            
1162                    ; line_number = 82
1163                    ;  assemble
1164                    ; line_number = 83
1165 0009 0009          retfie  
1166            
1167            
1168                    ; delay after procedure statements=non-uniform
1169                    ; Implied return
1170 000a 3400          retlw   0
1171            
1172            
1173            
1174            
1175                    ; line_number = 86
1176                    ; procedure main
1177   000b :   main:
1178                    ; Need to calibrate the oscillator
1179 000b 23ff          call    1023
1180 000c 1683          bsf     __rp0___byte, __rp0___bit
1181 000d 0090          movwf   _osccal
1182                    ; Initialize some registers
1183 000e 3001          movlw   1
1184 000f 1283          bcf     __rp0___byte, __rp0___bit
1185 0010 009f          movwf   _adcon0
1186 0011 3004          movlw   4
1187 0012 1683          bsf     __rp0___byte, __rp0___bit
1188 0013 0085          movwf   _trisa
1189 0014 301f          movlw   31
1190 0015 0087          movwf   _trisc
1191                    ; arguments_none
1192                    ; line_number = 88
1193                    ;  returns_nothing
1194            
1195                    ; line_number = 90
1196                    ;  local command byte
1197 00000043 = main__command equ shared___globals+35
1198                    ; line_number = 91
1199                    ;  local glitch byte
1200 00000044 = main__glitch equ shared___globals+36
1201                    ; line_number = 92
1202                    ;  local id_index byte
1203 00000045 = main__id_index equ shared___globals+37
1204                    ; line_number = 93
1205                    ;  local temporary byte
1206 00000046 = main__temporary equ shared___globals+38
1207                    ; line_number = 94
1208                    ;  local servo byte
1209 00000047 = main__servo equ shared___globals+39
1210                    ; line_number = 95
1211                    ;  local position byte
1212 00000048 = main__position equ shared___globals+40
1213            
1214                    ; # These registers are in data bank 1:
1215                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X1 code:XX=>XX)
1216                    ; line_number = 98
1217                    ;  _adcon1 := 0
1218 0016 3000          movlw   0
1219 0017 009f          movwf   _adcon1
1220                    ; line_number = 99
1221                    ;  _adsel := 0
1222 0018 3000          movlw   0
1223 0019 0091          movwf   _adsel
1224                    ; line_number = 100
1225                    ;  _psa := 0
1226 001a 1180          bcf     _psa___byte, _psa___bit
1227            
1228                    ; # These registers are in data bank 0:
1229                    ; line_number = 103
1230                    ;  _cmcon := 7
1231 001b 3007          movlw   7
1232 001c 1283          bcf     __rp0___byte, __rp0___bit
1233 001d 0099          movwf   _cmcon
1234                    ; line_number = 104
1235                    ;  _adcon0 := 0
1236 001e 3000          movlw   0
1237 001f 009f          movwf   _adcon0
1238                    ; line_number = 105
1239                    ;  _t1con := 0x00
1240 0020 3000          movlw   0
1241 0021 0090          movwf   _t1con
1242                    ; line_number = 106
1243                    ;  interrupts := 0
1244 0022 3000          movlw   0
1245 0023 00bd          movwf   interrupts
1246            
1247                    ; line_number = 108
1248                    ;  _eeadr := 0
1249 0024 3000          movlw   0
1250 0025 1683          bsf     __rp0___byte, __rp0___bit
1251 0026 009b          movwf   _eeadr
1252                    ; line_number = 109
1253                    ;  loop_exactly 13 start
1254 00000052 = main__1 equ shared___globals+50
1255 0027 300d          movlw   13
1256 0028 1283          bcf     __rp0___byte, __rp0___bit
1257 0029 00d2          movwf   main__1
1258   002a :   main__2:
1259                    ; line_number = 110
1260                    ; _rd := 1
1261 002a 1683          bsf     __rp0___byte, __rp0___bit
1262 002b 141c          bsf     _rd___byte, _rd___bit
1263                    ; line_number = 111
1264                    ;  base_lows[_eeadr] := _eedata
1265                    ; index_fsr_first
1266 002c 081b          movf    _eeadr,w
1267 002d 3e28          addlw   base_lows
1268 002e 1283          bcf     __rp0___byte, __rp0___bit
1269 002f 0084          movwf   __fsr
1270 0030 1683          bsf     __rp0___byte, __rp0___bit
1271 0031 081a          movf    _eedata,w
1272 0032 1283          bcf     __rp0___byte, __rp0___bit
1273 0033 0080          movwf   __indf
1274                    ; line_number = 112
1275                    ;  _eeadr := _eeadr + 1
1276 0034 1683          bsf     __rp0___byte, __rp0___bit
1277 0035 0a9b          incf    _eeadr,f
1278            
1279 0036 1283          bcf     __rp0___byte, __rp0___bit
1280                    ; line_number = 109
1281                    ;  loop_exactly 13 wrap-up
1282 0037 0bd2          decfsz  main__1,f
1283 0038 282a          goto    main__2
1284                    ; line_number = 109
1285                    ;  loop_exactly 13 done
1286                    ; line_number = 114
1287                    ; if base_lows[0] = 0xff start
1288                    ; Left minus Right
1289 0039 0828          movf    base_lows,w
1290 003a 3e01          addlw   1
1291                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1292                    ; CASE: true_code.size = 0 && false_code.size > 1
1293                    ; bit_code_emit_helper1: body_code.size=22 true_test=true body_code.delay=0 (non-uniform delay)
1294 003b 1d03          btfss   __z___byte, __z___bit
1295 003c 2855          goto    main__5
1296                    ; line_number = 115
1297                    ; servo := 0
1298 003d 3000          movlw   0
1299 003e 00c7          movwf   main__servo
1300                    ; line_number = 116
1301                    ;  loop_exactly 4 start
1302 00000052 = main__3 equ shared___globals+50
1303 003f 3004          movlw   4
1304 0040 00d2          movwf   main__3
1305   0041 :   main__4:
1306                    ; line_number = 117
1307                    ; base_lows[servo] := initial_low
1308                    ; index_fsr_first
1309 0041 0847          movf    main__servo,w
1310 0042 3e28          addlw   base_lows
1311 0043 0084          movwf   __fsr
1312 0044 30e8          movlw   232
1313 0045 0080          movwf   __indf
1314                    ; line_number = 118
1315                    ;  base_highs[servo] := initial_high
1316                    ; index_fsr_first
1317 0046 0847          movf    main__servo,w
1318 0047 3e2c          addlw   base_highs
1319 0048 0084          movwf   __fsr
1320 0049 3003          movlw   3
1321 004a 0080          movwf   __indf
1322                    ; line_number = 119
1323                    ;  scales[servo] := initial_scale
1324                    ; index_fsr_first
1325 004b 0847          movf    main__servo,w
1326 004c 3e30          addlw   scales
1327 004d 0084          movwf   __fsr
1328 004e 303e          movlw   62
1329 004f 0080          movwf   __indf
1330                    ; line_number = 120
1331                    ;  servo := servo + 1
1332 0050 0ac7          incf    main__servo,f
1333                    ; line_number = 116
1334                    ;  loop_exactly 4 wrap-up
1335 0051 0bd2          decfsz  main__3,f
1336 0052 2841          goto    main__4
1337                    ; line_number = 116
1338                    ;  loop_exactly 4 done
1339                    ; line_number = 121
1340                    ; address := 0xff
1341 0053 30ff          movlw   255
1342 0054 00b4          movwf   address
1343                    ; Recombine size1 = 0 || size2 = 0
1344   0055 :   main__5:
1345                    ; code.delay=4294967295 back_code.delay=4294967295
1346                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1347                    ; line_number = 114
1348                    ; if base_lows[0] = 0xff done
1349                    ; line_number = 122
1350                    ; servo := 0
1351 0055 3000          movlw   0
1352 0056 00c7          movwf   main__servo
1353                    ; line_number = 123
1354                    ;  loop_exactly 4 start
1355 00000052 = main__6 equ shared___globals+50
1356 0057 3004          movlw   4
1357 0058 00d2          movwf   main__6
1358   0059 :   main__7:
1359                    ; line_number = 124
1360                    ; positions[servo] := 0
1361                    ; index_fsr_first
1362 0059 0847          movf    main__servo,w
1363 005a 3e39          addlw   positions
1364 005b 0084          movwf   __fsr
1365 005c 3000          movlw   0
1366 005d 0080          movwf   __indf
1367                    ; line_number = 125
1368                    ;  fines[servo] := 0
1369                    ; index_fsr_first
1370 005e 0847          movf    main__servo,w
1371 005f 3e35          addlw   fines
1372 0060 0084          movwf   __fsr
1373 0061 3000          movlw   0
1374 0062 0080          movwf   __indf
1375                    ; line_number = 126
1376                    ;  servo := servo + 1
1377 0063 0ac7          incf    main__servo,f
1378            
1379                    ; line_number = 123
1380                    ;  loop_exactly 4 wrap-up
1381 0064 0bd2          decfsz  main__6,f
1382 0065 2859          goto    main__7
1383                    ; line_number = 123
1384                    ;  loop_exactly 4 done
1385                    ; # For now:
1386                    ; #enables := 0xf
1387                    ; line_number = 130
1388                    ;  enables := 0
1389 0066 3000          movlw   0
1390 0067 00be          movwf   enables
1391            
1392                    ; # According to the specification sheet, TMR1L, TRM1H, and
1393                    ; # TMR1IF must be clear before enabling TMR1IE.  Since they
1394                    ; # do not say why, it is unclear what problem that this addresses.
1395                    ; line_number = 135
1396                    ;  _tmr1l := 0
1397 0068 3000          movlw   0
1398 0069 008e          movwf   _tmr1l
1399                    ; line_number = 136
1400                    ;  _tmr1h := 0
1401 006a 3000          movlw   0
1402 006b 008f          movwf   _tmr1h
1403                    ; line_number = 137
1404                    ;  _tmr1if := 0
1405 006c 100c          bcf     _tmr1if___byte, _tmr1if___bit
1406                    ; line_number = 138
1407                    ;  _tmr1ie := 1
1408 006d 1683          bsf     __rp0___byte, __rp0___bit
1409 006e 140c          bsf     _tmr1ie___byte, _tmr1ie___bit
1410                    ; line_number = 139
1411                    ;  _peie := 1
1412 006f 1283          bcf     __rp0___byte, __rp0___bit
1413 0070 170b          bsf     _peie___byte, _peie___bit
1414                    ; line_number = 140
1415                    ;  _gie := 1
1416 0071 178b          bsf     _gie___byte, _gie___bit
1417                    ; line_number = 141
1418                    ;  _tmr1on := 1
1419 0072 1410          bsf     _tmr1on___byte, _tmr1on___bit
1420                    ; #_tmr1ie := 0
1421                    ; #_peie := 0
1422                    ; #_gie := 0
1423                    ; #_tmr1on := 1
1424            
1425                    ; # Let's initialize the servo's to off:
1426                    ; line_number = 148
1427                    ;  servo0 := 0
1428 0073 1005          bcf     servo0___byte, servo0___bit
1429                    ; line_number = 149
1430                    ;  servo1 := 0
1431 0074 1085          bcf     servo1___byte, servo1___bit
1432                    ; line_number = 150
1433                    ;  servo2 := 0
1434 0075 1105          bcf     servo2___byte, servo2___bit
1435                    ; line_number = 151
1436                    ;  servo3 := 0
1437 0076 1287          bcf     servo3___byte, servo3___bit
1438            
1439                    ; line_number = 153
1440                    ;  glitch := 0
1441 0077 3000          movlw   0
1442 0078 00c4          movwf   main__glitch
1443                    ; line_number = 154
1444                    ;  id_index := 0
1445 0079 3000          movlw   0
1446 007a 00c5          movwf   main__id_index
1447            
1448                    ; # Make sure we idle the serial output lines to "mark" (= 1):
1449                    ; line_number = 157
1450                    ;  debug_out := 1
1451 007b 1685          bsf     debug_out___byte, debug_out___bit
1452                    ; line_number = 158
1453                    ;  serial_out := 1
1454 007c 1605          bsf     serial_out___byte, serial_out___bit
1455            
1456                    ; line_number = 160
1457                    ;  loop_forever start
1458   007d :   main__8:
1459                    ; line_number = 161
1460                    ; command := byte_get()
1461 007d 232e          call    byte_get
1462 007e 00c3          movwf   main__command
1463                    ; line_number = 162
1464                    ;  servo := command & 3
1465 007f 3003          movlw   3
1466 0080 0543          andwf   main__command,w
1467 0081 00c7          movwf   main__servo
1468                    ; line_number = 163
1469                    ;  switch command >> 6 start
1470 0082 3000          movlw   main__85>>8
1471 0083 008a          movwf   __pclath
1472 00000052 = main__86 equ shared___globals+50
1473 0084 0e43          swapf   main__command,w
1474 0085 00d2          movwf   main__86
1475 0086 0cd2          rrf     main__86,f
1476 0087 0c52          rrf     main__86,w
1477 0088 3903          andlw   3
1478 0089 3e8b          addlw   main__85
1479 008a 0082          movwf   __pcl
1480                    ; page_group 4
1481   008b :   main__85:
1482 008b 288f          goto    main__81
1483 008c 28cd          goto    main__82
1484 008d 28e1          goto    main__83
1485 008e 28f5          goto    main__84
1486                    ; line_number = 164
1487                    ; case 0
1488   008f :   main__81:
1489                    ; # 00xx xxxx
1490                    ; line_number = 166
1491                    ;  switch (command >> 3) & 7 start
1492 008f 3000          movlw   main__18>>8
1493 0090 008a          movwf   __pclath
1494 00000052 = main__19 equ shared___globals+50
1495 0091 0c43          rrf     main__command,w
1496 0092 00d2          movwf   main__19
1497 0093 0cd2          rrf     main__19,f
1498 0094 0c52          rrf     main__19,w
1499 0095 3907          andlw   7
1500 0096 3e98          addlw   main__18
1501 0097 0082          movwf   __pcl
1502                    ; page_group 8
1503   0098 :   main__18:
1504 0098 28a0          goto    main__13
1505 0099 28ab          goto    main__14
1506 009a 28b6          goto    main__15
1507 009b 28c1          goto    main__16
1508 009c 28cc          goto    main__17
1509 009d 28cc          goto    main__17
1510 009e 28cc          goto    main__17
1511 009f 28cc          goto    main__17
1512                    ; line_number = 167
1513                    ; case 0
1514   00a0 :   main__13:
1515                    ; # 0000 0xxx:
1516                    ; line_number = 169
1517                    ;  temporary := byte_get()
1518 00a0 232e          call    byte_get
1519 00a1 00c6          movwf   main__temporary
1520                    ; line_number = 170
1521                    ;  if command@2 start
1522 00000043 = main__select__9___byte equ main__command
1523 00000002 = main__select__9___bit equ 2
1524                    ; # 0000 01ss (Write Base High):
1525                    ; line_number = 172
1526                    ;  base_highs[servo] := temporary
1527                    ; index_fsr_first
1528 00a2 0847          movf    main__servo,w
1529                    ; # 0000 00ss (Write Base Low):
1530                    ; line_number = 175
1531                    ;  base_lows[servo] := temporary
1532                    ; index_fsr_first
1533                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1534                    ; CASE: true_size=1 && false_size=1
1535                    ; SUBCASE: Double test; true, then false
1536 00a3 1943          btfsc   main__select__9___byte, main__select__9___bit
1537 00a4 3e2c          addlw   base_highs
1538 00a5 1d43          btfss   main__select__9___byte, main__select__9___bit
1539 00a6 3e28          addlw   base_lows
1540                    ; code.delay=4294967295 back_code.delay=4294967295
1541 00a7 0084          movwf   __fsr
1542 00a8 0846          movf    main__temporary,w
1543 00a9 0080          movwf   __indf
1544                    ; <=bit_code_emit@symbol; sym=main__select__9 (data:X0=>X0 code:XX=>XX)
1545                    ; line_number = 170
1546                    ;  if command@2 done
1547 00aa 28cc          goto    main__20
1548                    ; line_number = 176
1549                    ; case 1
1550   00ab :   main__14:
1551                    ; # 0000 1xxx:
1552                    ; line_number = 178
1553                    ;  temporary := byte_get()
1554 00ab 232e          call    byte_get
1555 00ac 00c6          movwf   main__temporary
1556                    ; line_number = 179
1557                    ;  if command@2 start
1558 00000043 = main__select__10___byte equ main__command
1559 00000002 = main__select__10___bit equ 2
1560                    ; # 0000 11ss (Write Scale):
1561                    ; line_number = 181
1562                    ;  scales[servo] := temporary
1563                    ; index_fsr_first
1564 00ad 0847          movf    main__servo,w
1565                    ; # 0000 10ss (Write Position)
1566                    ; line_number = 184
1567                    ;  positions[servo] := temporary
1568                    ; index_fsr_first
1569                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1570                    ; CASE: true_size=1 && false_size=1
1571                    ; SUBCASE: Double test; true, then false
1572 00ae 1943          btfsc   main__select__10___byte, main__select__10___bit
1573 00af 3e30          addlw   scales
1574 00b0 1d43          btfss   main__select__10___byte, main__select__10___bit
1575 00b1 3e39          addlw   positions
1576                    ; code.delay=4294967295 back_code.delay=4294967295
1577 00b2 0084          movwf   __fsr
1578 00b3 0846          movf    main__temporary,w
1579 00b4 0080          movwf   __indf
1580                    ; <=bit_code_emit@symbol; sym=main__select__10 (data:X0=>X0 code:XX=>XX)
1581                    ; line_number = 179
1582                    ;  if command@2 done
1583 00b5 28cc          goto    main__20
1584                    ; line_number = 185
1585                    ; case 2
1586   00b6 :   main__15:
1587                    ; # 0001 0xxx:
1588                    ; line_number = 187
1589                    ;  if command@2 start
1590 00000043 = main__select__11___byte equ main__command
1591 00000002 = main__select__11___bit equ 2
1592                    ; # 0001 01ss (Read Base High):
1593                    ; line_number = 189
1594                    ;  temporary := base_highs[servo]
1595 00b6 0847          movf    main__servo,w
1596                    ; # 0001 00ss (Read Base Low):
1597                    ; line_number = 192
1598                    ;  temporary := base_lows[servo]
1599                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1600                    ; CASE: true_size=1 && false_size=1
1601                    ; SUBCASE: Double test; true, then false
1602 00b7 1943          btfsc   main__select__11___byte, main__select__11___bit
1603 00b8 3e2c          addlw   base_highs
1604 00b9 1d43          btfss   main__select__11___byte, main__select__11___bit
1605 00ba 3e28          addlw   base_lows
1606                    ; code.delay=4294967295 back_code.delay=4294967295
1607 00bb 0084          movwf   __fsr
1608 00bc 0800          movf    __indf,w
1609 00bd 00c6          movwf   main__temporary
1610                    ; <=bit_code_emit@symbol; sym=main__select__11 (data:XX=>X0 code:XX=>XX)
1611                    ; line_number = 187
1612                    ;  if command@2 done
1613                    ; line_number = 193
1614                    ; call byte_put(temporary)
1615 00be 0846          movf    main__temporary,w
1616 00bf 2357          call    byte_put
1617 00c0 28cc          goto    main__20
1618                    ; line_number = 194
1619                    ; case 3
1620   00c1 :   main__16:
1621                    ; # 0001 1xxx:
1622                    ; line_number = 196
1623                    ;  if command@2 start
1624 00000043 = main__select__12___byte equ main__command
1625 00000002 = main__select__12___bit equ 2
1626                    ; # 0001 11ss (Read Scale):
1627                    ; line_number = 198
1628                    ;  temporary := scales[servo]
1629 00c1 0847          movf    main__servo,w
1630                    ; # 0001 10ss (Read Position):
1631                    ; line_number = 201
1632                    ;  temporary := positions[servo]
1633                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1634                    ; CASE: true_size=1 && false_size=1
1635                    ; SUBCASE: Double test; true, then false
1636 00c2 1943          btfsc   main__select__12___byte, main__select__12___bit
1637 00c3 3e30          addlw   scales
1638 00c4 1d43          btfss   main__select__12___byte, main__select__12___bit
1639 00c5 3e39          addlw   positions
1640                    ; code.delay=4294967295 back_code.delay=4294967295
1641 00c6 0084          movwf   __fsr
1642 00c7 0800          movf    __indf,w
1643 00c8 00c6          movwf   main__temporary
1644                    ; <=bit_code_emit@symbol; sym=main__select__12 (data:XX=>X0 code:XX=>XX)
1645                    ; line_number = 196
1646                    ;  if command@2 done
1647                    ; line_number = 202
1648                    ; call byte_put(temporary)
1649 00c9 0846          movf    main__temporary,w
1650 00ca 2357          call    byte_put
1651 00cb 28cc          goto    main__20
1652                    ; line_number = 203
1653                    ; case 4, 5, 6, 7
1654   00cc :   main__17:
1655                    ; # 001x xxxx:
1656                    ; line_number = 205
1657                    ;  do_nothing
1658   00cc :   main__20:
1659                    ; switch end:(data:X0=>X? code:XX=>XX)
1660                    ; line_number = 166
1661                    ;  switch (command >> 3) & 7 done
1662 00cc 29db          goto    main__87
1663                    ; line_number = 206
1664                    ; case 1
1665   00cd :   main__82:
1666                    ; # 01hh hhhh (Set High):
1667                    ; line_number = 208
1668                    ;  position := positions[servo]
1669 00cd 0847          movf    main__servo,w
1670 00ce 3e39          addlw   positions
1671 00cf 0084          movwf   __fsr
1672 00d0 0800          movf    __indf,w
1673 00d1 00c8          movwf   main__position
1674                    ; line_number = 209
1675                    ;  position := position & 0xf | (command << 2) & 0xf0
1676 00000052 = main__21 equ shared___globals+50
1677 00d2 300f          movlw   15
1678 00d3 0548          andwf   main__position,w
1679 00d4 00d2          movwf   main__21
1680 00000053 = main__22 equ shared___globals+51
1681 00d5 0d43          rlf     main__command,w
1682 00d6 00d3          movwf   main__22
1683 00d7 0d53          rlf     main__22,w
1684 00d8 39f0          andlw   240
1685 00d9 0452          iorwf   main__21,w
1686 00da 00c8          movwf   main__position
1687                    ; line_number = 210
1688                    ;  positions[servo] := position
1689                    ; index_fsr_first
1690 00db 0847          movf    main__servo,w
1691 00dc 3e39          addlw   positions
1692 00dd 0084          movwf   __fsr
1693 00de 0848          movf    main__position,w
1694 00df 0080          movwf   __indf
1695 00e0 29db          goto    main__87
1696                    ; line_number = 211
1697                    ; case 2
1698   00e1 :   main__83:
1699                    ; # 10ll llll (Set Low):
1700                    ; line_number = 213
1701                    ;  position := positions[servo]
1702 00e1 0847          movf    main__servo,w
1703 00e2 3e39          addlw   positions
1704 00e3 0084          movwf   __fsr
1705 00e4 0800          movf    __indf,w
1706 00e5 00c8          movwf   main__position
1707                    ; line_number = 214
1708                    ;  position := position & 0xf0 | (command >> 2) & 0xf
1709 00000052 = main__23 equ shared___globals+50
1710 00e6 30f0          movlw   240
1711 00e7 0548          andwf   main__position,w
1712 00e8 00d2          movwf   main__23
1713 00000053 = main__24 equ shared___globals+51
1714 00e9 0c43          rrf     main__command,w
1715 00ea 00d3          movwf   main__24
1716 00eb 0c53          rrf     main__24,w
1717 00ec 390f          andlw   15
1718 00ed 0452          iorwf   main__23,w
1719 00ee 00c8          movwf   main__position
1720                    ; line_number = 215
1721                    ;  positions[servo] := position
1722                    ; index_fsr_first
1723 00ef 0847          movf    main__servo,w
1724 00f0 3e39          addlw   positions
1725 00f1 0084          movwf   __fsr
1726 00f2 0848          movf    main__position,w
1727 00f3 0080          movwf   __indf
1728 00f4 29db          goto    main__87
1729                    ; line_number = 216
1730                    ; case 3
1731   00f5 :   main__84:
1732                    ; # 11xx xxxx:
1733                    ; line_number = 218
1734                    ;  switch (command >> 3) & 7 start
1735 00f5 3001          movlw   main__78>>8
1736 00f6 008a          movwf   __pclath
1737 00000052 = main__79 equ shared___globals+50
1738 00f7 0c43          rrf     main__command,w
1739 00f8 00d2          movwf   main__79
1740 00f9 0cd2          rrf     main__79,f
1741 00fa 0c52          rrf     main__79,w
1742 00fb 3907          andlw   7
1743 00fc 3e00          addlw   main__78
1744 00fd 0082          movwf   __pcl
1745                    ; page_group 8
1746                    ; Add 2 NOP's until start of new page 
1747 00fe 0000          nop     
1748 00ff 0000          nop     
1749   0100 :   main__78:
1750 0100 2908          goto    main__72
1751 0101 291d          goto    main__73
1752 0102 2929          goto    main__74
1753 0103 293c          goto    main__75
1754 0104 297e          goto    main__76
1755 0105 297e          goto    main__76
1756 0106 297e          goto    main__76
1757 0107 297f          goto    main__77
1758                    ; line_number = 219
1759                    ; case 0
1760   0108 :   main__72:
1761                    ; # 1100 0ess (Set Enable and Position):
1762                    ; line_number = 221
1763                    ;  positions[servo] := byte_get()
1764                    ; index_temporary_first
1765 00000052 = main__25 equ shared___globals+50
1766 00000053 = main__26 equ shared___globals+51
1767 0108 0847          movf    main__servo,w
1768 0109 00d2          movwf   main__25
1769 010a 232e          call    byte_get
1770 010b 00d3          movwf   main__26
1771 010c 0852          movf    main__25,w
1772 010d 3e39          addlw   positions
1773 010e 0084          movwf   __fsr
1774 010f 0853          movf    main__26,w
1775 0110 0080          movwf   __indf
1776                    ; line_number = 222
1777                    ;  temporary := mask_get(servo)
1778 0111 0847          movf    main__servo,w
1779 0112 22c6          call    mask_get
1780 0113 00c6          movwf   main__temporary
1781                    ; line_number = 223
1782                    ;  if command@2 start
1783 00000043 = main__select__27___byte equ main__command
1784 00000002 = main__select__27___bit equ 2
1785                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1786                    ; CASE: true_code_size > 1 && false_code_size > 1
1787                    ; true_code_size=2 false_code_size=3
1788 0114 1d43          btfss   main__select__27___byte, main__select__27___bit
1789 0115 2919          goto    main__28
1790                    ; line_number = 224
1791                    ; enables := enables | temporary
1792 0116 0846          movf    main__temporary,w
1793 0117 04be          iorwf   enables,f
1794 0118 291c          goto    main__29
1795   0119 :   main__28:
1796                    ; line_number = 226
1797                    ; enables := enables & (temporary ^ 0xf)
1798 0119 300f          movlw   15
1799 011a 0646          xorwf   main__temporary,w
1800 011b 05be          andwf   enables,f
1801   011c :   main__29:
1802                    ; code.delay=4294967295 back_code.delay=4294967295
1803                    ; <=bit_code_emit@symbol; sym=main__select__27 (data:X0=>X0 code:XX=>XX)
1804                    ; line_number = 223
1805                    ;  if command@2 done
1806 011c 29db          goto    main__80
1807                    ; line_number = 227
1808                    ; case 1
1809   011d :   main__73:
1810                    ; # 1100 1ess (Set Enable Flag Only):
1811                    ; line_number = 229
1812                    ;  temporary := mask_get(servo)
1813 011d 0847          movf    main__servo,w
1814 011e 22c6          call    mask_get
1815 011f 00c6          movwf   main__temporary
1816                    ; line_number = 230
1817                    ;  if command@2 start
1818 00000043 = main__select__30___byte equ main__command
1819 00000002 = main__select__30___bit equ 2
1820                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1821                    ; CASE: true_code_size > 1 && false_code_size > 1
1822                    ; true_code_size=2 false_code_size=3
1823 0120 1d43          btfss   main__select__30___byte, main__select__30___bit
1824 0121 2925          goto    main__31
1825                    ; line_number = 231
1826                    ; enables := enables | temporary
1827 0122 0846          movf    main__temporary,w
1828 0123 04be          iorwf   enables,f
1829 0124 2928          goto    main__32
1830   0125 :   main__31:
1831                    ; line_number = 233
1832                    ; enables := enables & (temporary ^ 0xf)
1833 0125 300f          movlw   15
1834 0126 0646          xorwf   main__temporary,w
1835 0127 05be          andwf   enables,f
1836   0128 :   main__32:
1837                    ; code.delay=4294967295 back_code.delay=4294967295
1838                    ; <=bit_code_emit@symbol; sym=main__select__30 (data:X0=>X0 code:XX=>XX)
1839                    ; line_number = 230
1840                    ;  if command@2 done
1841 0128 29db          goto    main__80
1842                    ; line_number = 234
1843                    ; case 2
1844   0129 :   main__74:
1845                    ; # 1101 0xxx:
1846                    ; line_number = 236
1847                    ;  if command@2 start
1848 00000043 = main__select__35___byte equ main__command
1849 00000002 = main__select__35___bit equ 2
1850                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1851                    ; CASE: true_code_size > 1 && false_code_size > 1
1852                    ; true_code_size=10 false_code_size=4
1853 0129 1d43          btfss   main__select__35___byte, main__select__35___bit
1854 012a 2936          goto    main__36
1855                    ; # 1101 01ss (Read Enable):
1856                    ; line_number = 238
1857                    ;  temporary := 0
1858 012b 3000          movlw   0
1859 012c 00c6          movwf   main__temporary
1860                    ; line_number = 239
1861                    ;  if enables & mask_get(servo) != 0 start
1862                    ; Left minus Right
1863 00000052 = main__34 equ shared___globals+50
1864 012d 083e          movf    enables,w
1865 012e 00d2          movwf   main__34
1866 012f 0847          movf    main__servo,w
1867 0130 22c6          call    mask_get
1868 0131 0552          andwf   main__34,w
1869                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1870                    ; CASE: true_code.size=0 && false_code.size=1
1871 0132 1d03          btfss   __z___byte, __z___bit
1872                    ; line_number = 240
1873                    ; temporary@0 := 1
1874 00000046 = main__select__33___byte equ main__temporary
1875 00000000 = main__select__33___bit equ 0
1876 0133 1446          bsf     main__select__33___byte, main__select__33___bit
1877                    ; Recombine size1 = 0 || size2 = 0
1878                    ; code.delay=4294967295 back_code.delay=4294967295
1879                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1880                    ; line_number = 239
1881                    ;  if enables & mask_get(servo) != 0 done
1882                    ; line_number = 241
1883                    ; call byte_put(temporary)
1884 0134 0846          movf    main__temporary,w
1885 0135 293a          goto    main__37
1886   0136 :   main__36:
1887                    ; # 1101 00ss (Read position):
1888                    ; line_number = 244
1889                    ;  call byte_put(positions[servo])
1890 0136 0847          movf    main__servo,w
1891 0137 3e39          addlw   positions
1892 0138 0084          movwf   __fsr
1893 0139 0800          movf    __indf,w
1894   013a :   main__37:
1895                    ; code.delay=4294967295 back_code.delay=4294967295
1896 013a 2357          call    byte_put
1897                    ; <=bit_code_emit@symbol; sym=main__select__35 (data:X0=>X0 code:XX=>XX)
1898                    ; line_number = 236
1899                    ;  if command@2 done
1900 013b 29db          goto    main__80
1901                    ; line_number = 245
1902                    ; case 3
1903   013c :   main__75:
1904                    ; # 1101 1xxx:
1905                    ; line_number = 247
1906                    ;  if command@2 start
1907 00000043 = main__select__52___byte equ main__command
1908 00000002 = main__select__52___bit equ 2
1909                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1910                    ; CASE: true_code_size > 1 && false_code_size > 1
1911                    ; true_code_size=5 false_code_size=55
1912 013c 1d43          btfss   main__select__52___byte, main__select__52___bit
1913 013d 2944          goto    main__53
1914                    ; # 1101 11ss (Read Current Draw):
1915                    ; line_number = 249
1916                    ;  call byte_put(analogs[servo])
1917 013e 0847          movf    main__servo,w
1918 013f 3e24          addlw   analogs
1919 0140 0084          movwf   __fsr
1920 0141 0800          movf    __indf,w
1921 0142 2357          call    byte_put
1922 0143 297d          goto    main__54
1923   0144 :   main__53:
1924                    ; # 1101 10xx:
1925                    ; line_number = 252
1926                    ;  if command@1 start
1927 00000043 = main__select__49___byte equ main__command
1928 00000001 = main__select__49___bit equ 1
1929                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1930                    ; CASE: true_code_size > 1 && false_code_size > 1
1931                    ; true_code_size=44 false_code_size=8
1932 0144 1cc3          btfss   main__select__49___byte, main__select__49___bit
1933 0145 2975          goto    main__50
1934                    ; # 1101 101x:
1935                    ; line_number = 254
1936                    ;  if command@0 start
1937 00000043 = main__select__46___byte equ main__command
1938 00000000 = main__select__46___bit equ 0
1939                    ; # 1101 1011 (Set Address):
1940                    ; line_number = 256
1941                    ;  address := byte_get()
1942 0146 232e          call    byte_get
1943                    ; # 1101 1010 (Save settings):
1944                    ; # Need magic OK byte first:
1945                    ; line_number = 260
1946                    ;  if byte_get() = 0xa5 start
1947                    ; Left minus Right
1948                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1949                    ; CASE: true.size=1 false.size>1; no GOTO
1950 0147 1c43          btfss   main__select__46___byte, main__select__46___bit
1951 0148 294b          goto    main__47
1952 0149 00b4          movwf   address
1953 014a 2974          goto    main__48
1954   014b :   main__47:
1955 014b 3e5b          addlw   91
1956                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1957                    ; CASE: true.size>1 false.size=1; no GOTO's
1958 014c 1d03          btfss   __z___byte, __z___bit
1959 014d 2972          goto    main__44
1960                    ; #FIXME: Compiler problem kludge!!!
1961                    ; line_number = 262
1962                    ;  temporary := 0
1963 014e 3000          movlw   0
1964 014f 00c6          movwf   main__temporary
1965                    ; line_number = 263
1966                    ;  _eeadr := 0
1967 0150 3000          movlw   0
1968 0151 1683          bsf     __rp0___byte, __rp0___bit
1969 0152 009b          movwf   _eeadr
1970                    ; line_number = 264
1971                    ;  _gie := 0
1972 0153 1283          bcf     __rp0___byte, __rp0___bit
1973 0154 138b          bcf     _gie___byte, _gie___bit
1974                    ; line_number = 265
1975                    ;  loop_exactly 13 start
1976 00000052 = main__41 equ shared___globals+50
1977 0155 300d          movlw   13
1978 0156 00d2          movwf   main__41
1979 0157 1683          bsf     __rp0___byte, __rp0___bit
1980   0158 :   main__42:
1981                    ; line_number = 266
1982                    ; _eedata := base_lows[_eeadr]
1983 0158 1683          bsf     __rp0___byte, __rp0___bit
1984 0159 081b          movf    _eeadr,w
1985 015a 3e28          addlw   base_lows
1986 015b 1283          bcf     __rp0___byte, __rp0___bit
1987 015c 0084          movwf   __fsr
1988 015d 0800          movf    __indf,w
1989 015e 1683          bsf     __rp0___byte, __rp0___bit
1990 015f 009a          movwf   _eedata
1991                    ; line_number = 267
1992                    ;  _wren := 1
1993 0160 151c          bsf     _wren___byte, _wren___bit
1994                    ; line_number = 268
1995                    ;  _eecon2 := 0x55
1996 0161 3055          movlw   85
1997 0162 009d          movwf   _eecon2
1998                    ; line_number = 269
1999                    ;  _eecon2 := 0xaa
2000 0163 30aa          movlw   170
2001 0164 009d          movwf   _eecon2
2002                    ; line_number = 270
2003                    ;  _wr := 1
2004 0165 149c          bsf     _wr___byte, _wr___bit
2005                    ; line_number = 271
2006                    ;  while _wr start
2007   0166 :   main__43:
2008                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2009                    ; CASE: True.size=1 False.size=0
2010 0166 189c          btfsc   _wr___byte, _wr___bit
2011                    ; true=GOTO
2012 0167 2966          goto    main__43
2013                    ; code.delay=4294967295 back_code.delay=4294967295
2014                    ; <=bit_code_emit@symbol; sym=_wr (data:XX=>XX code:XX=>XX)
2015                    ; line_number = 271
2016                    ;  while _wr done
2017                    ; line_number = 273
2018                    ; _eeadr := _eeadr + 1
2019 0168 0a9b          incf    _eeadr,f
2020 0169 1283          bcf     __rp0___byte, __rp0___bit
2021                    ; line_number = 265
2022                    ;  loop_exactly 13 wrap-up
2023 016a 0bd2          decfsz  main__41,f
2024 016b 2958          goto    main__42
2025                    ; line_number = 265
2026                    ;  loop_exactly 13 done
2027                    ; line_number = 274
2028                    ; _gie := 1
2029 016c 178b          bsf     _gie___byte, _gie___bit
2030                    ; line_number = 275
2031                    ;  _wren := 0
2032 016d 1683          bsf     __rp0___byte, __rp0___bit
2033 016e 111c          bcf     _wren___byte, _wren___bit
2034                    ; line_number = 276
2035                    ;  call byte_put(0xa5)
2036 016f 30a5          movlw   165
2037 0170 1283          bcf     __rp0___byte, __rp0___bit
2038 0171 2973          goto    main__45
2039   0172 :   main__44:
2040                    ; line_number = 278
2041                    ; call byte_put(0x11)
2042 0172 3011          movlw   17
2043   0173 :   main__45:
2044                    ; code.delay=4294967295 back_code.delay=4294967295
2045 0173 2357          call    byte_put
2046                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2047                    ; line_number = 260
2048                    ;  if byte_get() = 0xa5 done
2049   0174 :   main__48:
2050                    ; code.delay=4294967295 back_code.delay=4294967295
2051                    ; <=bit_code_emit@symbol; sym=main__select__46 (data:XX=>X0 code:XX=>XX)
2052                    ; line_number = 254
2053                    ;  if command@0 done
2054 0174 297d          goto    main__51
2055   0175 :   main__50:
2056                    ; # 1101 100x:
2057                    ; line_number = 281
2058                    ;  if command@0 start
2059 00000043 = main__select__38___byte equ main__command
2060 00000000 = main__select__38___bit equ 0
2061                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2062                    ; CASE: true_code_size > 1 && false_code_size > 1
2063                    ; true_code_size=3 false_code_size=2
2064 0175 1c43          btfss   main__select__38___byte, main__select__38___bit
2065 0176 297b          goto    main__39
2066                    ; # 1101 1001 (Set Enables):
2067                    ; line_number = 283
2068                    ;  enables := byte_get() & 0xf
2069 0177 232e          call    byte_get
2070 0178 390f          andlw   15
2071 0179 00be          movwf   enables
2072 017a 297d          goto    main__40
2073   017b :   main__39:
2074                    ; # 1101 1001 (Read Enables):
2075                    ; line_number = 286
2076                    ;  call byte_put(enables)
2077 017b 083e          movf    enables,w
2078 017c 2357          call    byte_put
2079   017d :   main__40:
2080                    ; code.delay=4294967295 back_code.delay=4294967295
2081                    ; <=bit_code_emit@symbol; sym=main__select__38 (data:X0=>X0 code:XX=>XX)
2082                    ; line_number = 281
2083                    ;  if command@0 done
2084   017d :   main__51:
2085                    ; code.delay=4294967295 back_code.delay=4294967295
2086                    ; <=bit_code_emit@symbol; sym=main__select__49 (data:XX=>XX code:XX=>XX)
2087                    ; line_number = 252
2088                    ;  if command@1 done
2089   017d :   main__54:
2090                    ; code.delay=4294967295 back_code.delay=4294967295
2091                    ; <=bit_code_emit@symbol; sym=main__select__52 (data:X0=>X0 code:XX=>XX)
2092                    ; line_number = 247
2093                    ;  if command@2 done
2094 017d 29db          goto    main__80
2095                    ; line_number = 287
2096                    ; case 4, 5, 6
2097   017e :   main__76:
2098                    ; # 1110 0xxx, 1110 1xxx, 1111 0xxx:
2099                    ; line_number = 289
2100                    ;  do_nothing
2101 017e 29db          goto    main__80
2102                    ; line_number = 290
2103                    ; case 7
2104   017f :   main__77:
2105                    ; # 1111 1xxx
2106                    ; line_number = 292
2107                    ;  switch command & 7 start
2108 017f 3001          movlw   main__70>>8
2109 0180 008a          movwf   __pclath
2110 0181 3007          movlw   7
2111 0182 0543          andwf   main__command,w
2112 0183 3e85          addlw   main__70
2113 0184 0082          movwf   __pcl
2114                    ; page_group 8
2115   0185 :   main__70:
2116 0185 298d          goto    main__62
2117 0186 2991          goto    main__63
2118 0187 2995          goto    main__64
2119 0188 299a          goto    main__65
2120 0189 299d          goto    main__66
2121 018a 29aa          goto    main__67
2122 018b 29ad          goto    main__68
2123 018c 29b2          goto    main__69
2124                    ; line_number = 293
2125                    ; case 0
2126   018d :   main__62:
2127                    ; This case body wants this bit set
2128 018d 1683          bsf     __rp0___byte, __rp0___bit
2129                    ; line_number = 294
2130                    ; _osccal := _osccal - 4
2131 018e 30fc          movlw   252
2132 018f 0790          addwf   _osccal,f
2133 0190 29db          goto    main__71
2134                    ; line_number = 295
2135                    ; case 1
2136   0191 :   main__63:
2137                    ; This case body wants this bit set
2138 0191 1683          bsf     __rp0___byte, __rp0___bit
2139                    ; line_number = 296
2140                    ; _osccal := _osccal + 4
2141 0192 3004          movlw   4
2142 0193 0790          addwf   _osccal,f
2143 0194 29db          goto    main__71
2144                    ; line_number = 297
2145                    ; case 2
2146   0195 :   main__64:
2147                    ; This case body wants this bit set
2148 0195 1683          bsf     __rp0___byte, __rp0___bit
2149                    ; line_number = 298
2150                    ; call byte_put(_osccal)
2151 0196 0810          movf    _osccal,w
2152 0197 1283          bcf     __rp0___byte, __rp0___bit
2153 0198 2357          call    byte_put
2154 0199 29db          goto    main__71
2155                    ; line_number = 299
2156                    ; case 3
2157   019a :   main__65:
2158                    ; line_number = 300
2159                    ; call byte_put(0)
2160 019a 3000          movlw   0
2161 019b 2357          call    byte_put
2162 019c 29db          goto    main__71
2163                    ; line_number = 301
2164                    ; case 4
2165   019d :   main__66:
2166                    ; line_number = 302
2167                    ; temporary := 0
2168 019d 3000          movlw   0
2169 019e 00c6          movwf   main__temporary
2170                    ; line_number = 303
2171                    ;  if id_index < id.size start
2172 019f 302e          movlw   46
2173 01a0 0245          subwf   main__id_index,w
2174                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2175                    ; CASE: true.size=0 && false.size>1
2176                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
2177 01a1 1803          btfsc   __c___byte, __c___bit
2178 01a2 29a7          goto    main__55
2179                    ; line_number = 304
2180                    ; temporary := id[id_index]
2181 01a3 0845          movf    main__id_index,w
2182 01a4 22d1          call    id
2183 01a5 00c6          movwf   main__temporary
2184                    ; line_number = 305
2185                    ;  id_index := id_index + 1
2186 01a6 0ac5          incf    main__id_index,f
2187   01a7 :   main__55:
2188                    ; Recombine size1 = 0 || size2 = 0
2189                    ; code.delay=4294967295 back_code.delay=4294967295
2190                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2191                    ; line_number = 303
2192                    ;  if id_index < id.size done
2193                    ; line_number = 306
2194                    ; call byte_put(temporary)
2195 01a7 0846          movf    main__temporary,w
2196 01a8 2357          call    byte_put
2197 01a9 29db          goto    main__71
2198                    ; line_number = 307
2199                    ; case 5
2200   01aa :   main__67:
2201                    ; line_number = 308
2202                    ; id_index := 0
2203 01aa 3000          movlw   0
2204 01ab 00c5          movwf   main__id_index
2205 01ac 29db          goto    main__71
2206                    ; line_number = 309
2207                    ; case 6
2208   01ad :   main__68:
2209                    ; line_number = 310
2210                    ; call byte_put(glitch)
2211 01ad 0844          movf    main__glitch,w
2212 01ae 2357          call    byte_put
2213                    ; line_number = 311
2214                    ;  glitch := 0
2215 01af 3000          movlw   0
2216 01b0 00c4          movwf   main__glitch
2217 01b1 29db          goto    main__71
2218                    ; line_number = 312
2219                    ; case 7
2220   01b2 :   main__69:
2221                    ; line_number = 313
2222                    ; glitch := glitch + 1
2223 01b2 0ac4          incf    main__glitch,f
2224                    ; #enables := 0xf
2225                    ; line_number = 315
2226                    ;  command := byte_get()
2227 01b3 232e          call    byte_get
2228 01b4 00c3          movwf   main__command
2229                    ; line_number = 316
2230                    ;  servo := command & 3
2231 01b5 3003          movlw   3
2232 01b6 0543          andwf   main__command,w
2233 01b7 00c7          movwf   main__servo
2234                    ; line_number = 317
2235                    ;  position := byte_get()
2236 01b8 232e          call    byte_get
2237 01b9 00c8          movwf   main__position
2238                    ; line_number = 318
2239                    ;  temporary := address
2240 01ba 0834          movf    address,w
2241 01bb 00c6          movwf   main__temporary
2242                    ; line_number = 319
2243                    ;  if address = 0xff start
2244                    ; Left minus Right
2245 01bc 0a34          incf    address,w
2246                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2247                    ; CASE: true_code.size = 0 && false_code.size > 1
2248                    ; bit_code_emit_helper1: body_code.size=12 true_test=true body_code.delay=0 (non-uniform delay)
2249 01bd 1d03          btfss   __z___byte, __z___bit
2250 01be 29cb          goto    main__59
2251                    ; line_number = 320
2252                    ; temporary := (analogs[3] >> 2) & 0x30 | (analogs[2] >> 4) & 0xc
2253 00000052 = main__56 equ shared___globals+50
2254 00000053 = main__57 equ shared___globals+51
2255 01bf 0827          movf    analogs+3,w
2256 01c0 00d3          movwf   main__57
2257 01c1 0cd3          rrf     main__57,f
2258 01c2 0c53          rrf     main__57,w
2259 01c3 3930          andlw   48
2260 01c4 00d2          movwf   main__56
2261 00000053 = main__58 equ shared___globals+51
2262 01c5 0826          movf    analogs+2,w
2263 01c6 00d3          movwf   main__58
2264 01c7 0ed3          swapf   main__58,f
2265 01c8 390c          andlw   12
2266 01c9 0452          iorwf   main__56,w
2267 01ca 00c6          movwf   main__temporary
2268            
2269                    ; Recombine size1 = 0 || size2 = 0
2270   01cb :   main__59:
2271                    ; code.delay=4294967295 back_code.delay=4294967295
2272                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2273                    ; line_number = 319
2274                    ;  if address = 0xff done
2275                    ; line_number = 322
2276                    ; if (command ^ temporary) & 0xfc = 0 start
2277                    ; Left minus Right
2278 01cb 0843          movf    main__command,w
2279 01cc 0646          xorwf   main__temporary,w
2280 01cd 39fc          andlw   252
2281                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2282                    ; CASE: true_code.size = 0 && false_code.size > 1
2283                    ; bit_code_emit_helper1: body_code.size=11 true_test=true body_code.delay=0 (non-uniform delay)
2284 01ce 1d03          btfss   __z___byte, __z___bit
2285 01cf 29db          goto    main__61
2286                    ; line_number = 323
2287                    ; positions[servo] := position
2288                    ; index_fsr_first
2289 01d0 0847          movf    main__servo,w
2290 01d1 3e39          addlw   positions
2291 01d2 0084          movwf   __fsr
2292 01d3 0848          movf    main__position,w
2293 01d4 0080          movwf   __indf
2294                    ; line_number = 324
2295                    ;  enables := enables | mask_get(servo)
2296 00000052 = main__60 equ shared___globals+50
2297 01d5 083e          movf    enables,w
2298 01d6 00d2          movwf   main__60
2299 01d7 0847          movf    main__servo,w
2300 01d8 22c6          call    mask_get
2301 01d9 0452          iorwf   main__60,w
2302 01da 00be          movwf   enables
2303            
2304            
2305                    ; Recombine size1 = 0 || size2 = 0
2306   01db :   main__61:
2307                    ; code.delay=4294967295 back_code.delay=4294967295
2308                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2309                    ; line_number = 322
2310                    ; if (command ^ temporary) & 0xfc = 0 done
2311   01db :   main__71:
2312                    ; switch end:(data:X0=>X? code:XX=>XX)
2313                    ; line_number = 292
2314                    ;  switch command & 7 done
2315   01db :   main__80:
2316                    ; switch end:(data:X0=>X? code:XX=>XX)
2317                    ; line_number = 218
2318                    ;  switch (command >> 3) & 7 done
2319   01db :   main__87:
2320                    ; switch end:(data:X0=>X? code:XX=>XX)
2321                    ; line_number = 163
2322                    ;  switch command >> 6 done
2323                    ; line_number = 160
2324                    ;  loop_forever wrap-up
2325                    ; Need to adjust code banks to match front of loop
2326 01db 1283          bcf     __rp0___byte, __rp0___bit
2327 01dc 287d          goto    main__8
2328                    ; line_number = 160
2329                    ;  loop_forever done
2330                    ; delay after procedure statements=non-uniform
2331            
2332            
2333            
2334            
2335                    ; line_number = 327
2336                    ; procedure delay
2337   01dd :   delay:
2338                    ; arguments_none
2339                    ; line_number = 329
2340                    ;  returns_nothing
2341                    ; line_number = 330
2342                    ;  exact_delay delay_instructions
2343            
2344                    ; # This procedure delays 1/3 of a bit.
2345            
2346                    ; line_number = 334
2347                    ;  local counter byte
2348 00000049 = delay__counter equ shared___globals+41
2349                    ; line_number = 335
2350                    ;  local servo byte
2351 0000004a = delay__servo equ shared___globals+42
2352                    ; line_number = 336
2353                    ;  local position_low byte
2354 0000004b = delay__position_low equ shared___globals+43
2355                    ; line_number = 337
2356                    ;  local position_high byte
2357 0000004c = delay__position_high equ shared___globals+44
2358                    ; line_number = 338
2359                    ;  local servo_low byte
2360 0000004d = delay__servo_low equ shared___globals+45
2361                    ; line_number = 339
2362                    ;  local servo_high byte
2363 0000004e = delay__servo_high equ shared___globals+46
2364                    ; line_number = 340
2365                    ;  local scale byte
2366 0000004f = delay__scale equ shared___globals+47
2367                    ; line_number = 341
2368                    ;  local temporary byte
2369 00000050 = delay__temporary equ shared___globals+48
2370            
2371                    ; before procedure statements delay=0, bit states=(data:X0=>X0 code:XX=>XX)
2372                    ; line_number = 343
2373                    ;  watch_dog_reset done
2374                    ; Delay at watch_dog_reset is 0
2375 01dd 0064          clrwdt  
2376                    ; #debug_out := 1
2377                    ; line_number = 345
2378                    ;  counter := (counter + 1) & 0x7f
2379                    ; Delay at assignment is 1
2380 01de 0a49          incf    delay__counter,w
2381 01df 397f          andlw   127
2382 01e0 00c9          movwf   delay__counter
2383                    ; line_number = 346
2384                    ;  servo := (counter >> 5) & 3
2385                    ; Delay at assignment is 4
2386 00000054 = delay__1 equ shared___globals+52
2387 01e1 0e49          swapf   delay__counter,w
2388 01e2 00d4          movwf   delay__1
2389 01e3 0c54          rrf     delay__1,w
2390 01e4 3903          andlw   3
2391 01e5 00ca          movwf   delay__servo
2392                    ; line_number = 347
2393                    ;  switch counter & 0x1f start
2394 01e6 3002          movlw   delay__43>>8
2395 01e7 008a          movwf   __pclath
2396 01e8 301f          movlw   31
2397 01e9 0549          andwf   delay__counter,w
2398 01ea 3e00          addlw   delay__43
2399 01eb 0082          movwf   __pcl
2400                    ; page_group 32
2401                    ; Add 20 NOP's until start of new page 
2402 01ec 0000          nop     
2403 01ed 0000          nop     
2404 01ee 0000          nop     
2405 01ef 0000          nop     
2406 01f0 0000          nop     
2407 01f1 0000          nop     
2408 01f2 0000          nop     
2409 01f3 0000          nop     
2410 01f4 0000          nop     
2411 01f5 0000          nop     
2412 01f6 0000          nop     
2413 01f7 0000          nop     
2414 01f8 0000          nop     
2415 01f9 0000          nop     
2416 01fa 0000          nop     
2417 01fb 0000          nop     
2418 01fc 0000          nop     
2419 01fd 0000          nop     
2420 01fe 0000          nop     
2421 01ff 0000          nop     
2422   0200 :   delay__43:
2423 0200 2a20          goto    delay__36
2424 0201 2a3c          goto    delay__37
2425 0202 2a3c          goto    delay__37
2426 0203 2a3c          goto    delay__37
2427 0204 2a3c          goto    delay__37
2428 0205 2a3c          goto    delay__37
2429 0206 2a3c          goto    delay__37
2430 0207 2a3c          goto    delay__37
2431 0208 2a3c          goto    delay__37
2432 0209 2a56          goto    delay__38
2433 020a 2a7b          goto    delay__39
2434 020b 2a95          goto    delay__40
2435 020c 2a9c          goto    delay__41
2436 020d 2ab7          goto    delay__42
2437 020e 2ab7          goto    delay__42
2438 020f 2ab7          goto    delay__42
2439 0210 2ab7          goto    delay__42
2440 0211 2ab7          goto    delay__42
2441 0212 2ab7          goto    delay__42
2442 0213 2ab7          goto    delay__42
2443 0214 2ab7          goto    delay__42
2444 0215 2ab7          goto    delay__42
2445 0216 2ab7          goto    delay__42
2446 0217 2ab7          goto    delay__42
2447 0218 2ab7          goto    delay__42
2448 0219 2ab7          goto    delay__42
2449 021a 2ab7          goto    delay__42
2450 021b 2ab7          goto    delay__42
2451 021c 2ab7          goto    delay__42
2452 021d 2ab7          goto    delay__42
2453 021e 2ab7          goto    delay__42
2454 021f 2ab7          goto    delay__42
2455                    ; case_data[0] delay=27{0 }
2456                    ; case_data[1] delay=17{1 2 3 4 5 6 7 8 }
2457                    ; case_data[2] delay=25{9 }
2458                    ; case_data[3] delay=11{10 }
2459                    ; case_data[4] delay=1{11 }
2460                    ; case_data[5] delay=16{12 }
2461                    ; case_data[6] delay=0{13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 }
2462                    ; Maximum Case Delay = 27
2463                    ; line_number = 348
2464                    ; case 0
2465   0220 :   delay__36:
2466                    ; # Set up for multiply:
2467                    ; line_number = 350
2468                    ;  position_low := positions[servo]
2469                    ; Delay at assignment is 0
2470 0220 084a          movf    delay__servo,w
2471 0221 3e39          addlw   positions
2472 0222 0084          movwf   __fsr
2473 0223 0800          movf    __indf,w
2474 0224 00cb          movwf   delay__position_low
2475                    ; line_number = 351
2476                    ;  servo_low := base_lows[servo]
2477                    ; Delay at assignment is 5
2478 0225 084a          movf    delay__servo,w
2479 0226 3e28          addlw   base_lows
2480 0227 0084          movwf   __fsr
2481 0228 0800          movf    __indf,w
2482 0229 00cd          movwf   delay__servo_low
2483                    ; line_number = 352
2484                    ;  servo_high := base_highs[servo]
2485                    ; Delay at assignment is 10
2486 022a 084a          movf    delay__servo,w
2487 022b 3e2c          addlw   base_highs
2488 022c 0084          movwf   __fsr
2489 022d 0800          movf    __indf,w
2490 022e 00ce          movwf   delay__servo_high
2491                    ; line_number = 353
2492                    ;  scale := scales[servo]
2493                    ; Delay at assignment is 15
2494 022f 084a          movf    delay__servo,w
2495 0230 3e30          addlw   scales
2496 0231 0084          movwf   __fsr
2497 0232 0800          movf    __indf,w
2498 0233 00cf          movwf   delay__scale
2499                    ; line_number = 354
2500                    ;  position_high := position_low >> 4
2501                    ; Delay at assignment is 20
2502 0234 0e4b          swapf   delay__position_low,w
2503 0235 00cc          movwf   delay__position_high
2504 0236 300f          movlw   15
2505 0237 05cc          andwf   delay__position_high,f
2506                    ; line_number = 355
2507                    ;  position_low := position_low << 4
2508                    ; Delay at assignment is 24
2509                    ; Assignment of variable to self (no code needed)
2510 0238 0ecb          swapf   delay__position_low,f
2511 0239 30f0          movlw   240
2512 023a 05cb          andwf   delay__position_low,f
2513 023b 2abe          goto    delay__44
2514                    ; line_number = 356
2515                    ; case 1, 2, 3, 4, 5, 6, 7, 8
2516   023c :   delay__37:
2517                    ; # Do one multiply cycle:
2518                    ; line_number = 358
2519                    ;  position_low := position_low >> 1
2520                    ; Delay at assignment is 0
2521                    ; Assignment of variable to self (no code needed)
2522 023c 0ccb          rrf     delay__position_low,f
2523 023d 13cb          bcf     delay__position_low, 7
2524                    ; line_number = 359
2525                    ;  if position_high@0 start
2526                    ; Delay at if is 2
2527 0000004c = delay__select__3___byte equ delay__position_high
2528 00000000 = delay__select__3___bit equ 0
2529                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2530                    ; CASE: True.size=1 False.size=0
2531 023e 184c          btfsc   delay__select__3___byte, delay__select__3___bit
2532                    ; line_number = 360
2533                    ; position_low@7 := 1
2534                    ; Delay at assignment is 0
2535 0000004b = delay__select__2___byte equ delay__position_low
2536 00000007 = delay__select__2___bit equ 7
2537 023f 17cb          bsf     delay__select__2___byte, delay__select__2___bit
2538                    ; code.delay=4 back_code.delay=0
2539                    ; <=bit_code_emit@symbol; sym=delay__select__3 (data:X0=>X0 code:XX=>XX)
2540                    ; if final true delay=1 false delay=0 code delay=4
2541                    ; line_number = 359
2542                    ;  if position_high@0 done
2543                    ; line_number = 361
2544                    ; position_high := position_high >> 1
2545                    ; Delay at assignment is 4
2546                    ; Assignment of variable to self (no code needed)
2547 0240 0ccc          rrf     delay__position_high,f
2548 0241 13cc          bcf     delay__position_high, 7
2549                    ; line_number = 362
2550                    ;  if scale@7 start
2551                    ; Delay at if is 6
2552 0000004f = delay__select__4___byte equ delay__scale
2553 00000007 = delay__select__4___bit equ 7
2554                    ; (after recombine) true_delay=6, false_delay=0 uniform_delay=true
2555                    ; CASE: true_code.size = 0 && false_code.size > 1
2556                    ; bit_code_emit_helper1: body_code.size=6 true_test=true body_code.delay=6 (uniform delay)
2557 0242 1bcf          btfsc   delay__select__4___byte, delay__select__4___bit
2558 0243 2a48          goto    delay__5
2559                    ; Delay 5 cycles
2560 0244 2a45          goto    delay__7
2561   0245 :   delay__7:
2562 0245 2a46          goto    delay__8
2563   0246 :   delay__8:
2564 0246 0000          nop     
2565 0247 2a4e          goto    delay__6
2566   0248 :   delay__5:
2567                    ; line_number = 363
2568                    ; servo_high := servo_high + position_high
2569                    ; Delay at assignment is 0
2570 0248 084c          movf    delay__position_high,w
2571 0249 07ce          addwf   delay__servo_high,f
2572                    ; line_number = 364
2573                    ;  servo_low := servo_low + position_low
2574                    ; Delay at assignment is 2
2575 024a 084b          movf    delay__position_low,w
2576 024b 07cd          addwf   delay__servo_low,f
2577                    ; line_number = 365
2578                    ;  if _c start
2579                    ; Delay at if is 4
2580                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2581                    ; CASE: True.size=1 False.size=0
2582 024c 1803          btfsc   _c___byte, _c___bit
2583                    ; line_number = 366
2584                    ; servo_high := servo_high + 1
2585                    ; Delay at assignment is 0
2586 024d 0ace          incf    delay__servo_high,f
2587                    ; code.delay=6 back_code.delay=0
2588                    ; <=bit_code_emit@symbol; sym=_c (data:X0=>X0 code:XX=>XX)
2589                    ; if final true delay=1 false delay=0 code delay=6
2590                    ; line_number = 365
2591                    ;  if _c done
2592   024e :   delay__6:
2593                    ; code.delay=15 back_code.delay=0
2594                    ; <=bit_code_emit@symbol; sym=delay__select__4 (data:X0=>X0 code:XX=>XX)
2595                    ; if final true delay=6 false delay=0 code delay=15
2596                    ; line_number = 362
2597                    ;  if scale@7 done
2598                    ; line_number = 367
2599                    ; scale := scale << 1
2600                    ; Delay at assignment is 15
2601                    ; Assignment of variable to self (no code needed)
2602 024e 0dcf          rlf     delay__scale,f
2603 024f 104f          bcf     delay__scale, 0
2604                    ; Delay 10 cycles
2605                    ; Delay loop takes 2 * 4 = 8 cycles
2606 0250 3002          movlw   2
2607   0251 :   delay__45:
2608 0251 3eff          addlw   255
2609 0252 1d03          btfss   __z___byte, __z___bit
2610 0253 2a51          goto    delay__45
2611 0254 2a55          goto    delay__46
2612   0255 :   delay__46:
2613 0255 2abe          goto    delay__44
2614                    ; line_number = 368
2615                    ; case 9
2616   0256 :   delay__38:
2617                    ; # Do final wrap-up on multiply:
2618                    ; line_number = 370
2619                    ;  servo_low := servo_low + fines[servo]
2620                    ; Delay at assignment is 0
2621 0256 084a          movf    delay__servo,w
2622 0257 3e35          addlw   fines
2623 0258 0084          movwf   __fsr
2624 0259 0800          movf    __indf,w
2625 025a 07cd          addwf   delay__servo_low,f
2626                    ; line_number = 371
2627                    ;  if _c start
2628                    ; Delay at if is 5
2629                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2630                    ; CASE: True.size=1 False.size=0
2631 025b 1803          btfsc   _c___byte, _c___bit
2632                    ; line_number = 372
2633                    ; servo_high := servo_high + 1
2634                    ; Delay at assignment is 0
2635 025c 0ace          incf    delay__servo_high,f
2636                    ; code.delay=7 back_code.delay=0
2637                    ; <=bit_code_emit@symbol; sym=_c (data:X0=>X0 code:XX=>XX)
2638                    ; if final true delay=1 false delay=0 code delay=7
2639                    ; line_number = 371
2640                    ;  if _c done
2641                    ; #servo_high := 6
2642                    ; #servo_low := 0
2643                    ; line_number = 375
2644                    ;  _tmr1l := 0
2645                    ; Delay at assignment is 7
2646 025d 3000          movlw   0
2647 025e 008e          movwf   _tmr1l
2648                    ; line_number = 376
2649                    ;  _tmr1h := servo_high ^ 0xff
2650                    ; Delay at assignment is 9
2651 025f 30ff          movlw   255
2652 0260 064e          xorwf   delay__servo_high,w
2653 0261 008f          movwf   _tmr1h
2654                    ; line_number = 377
2655                    ;  _tmr1l := servo_low ^ 0xff
2656                    ; Delay at assignment is 12
2657 0262 30ff          movlw   255
2658 0263 064d          xorwf   delay__servo_low,w
2659 0264 008e          movwf   _tmr1l
2660                    ; line_number = 378
2661                    ;  if servo@1 start
2662                    ; Delay at if is 15
2663 0000004a = delay__select__19___byte equ delay__servo
2664 00000001 = delay__select__19___bit equ 1
2665                    ; (after recombine) true_delay=6, false_delay=6 uniform_delay=true
2666                    ; CASE: true_code_size > 1 && false_code_size > 1
2667                    ; true_code_size=8 false_code_size=8
2668 0265 1cca          btfss   delay__select__19___byte, delay__select__19___bit
2669 0266 2a70          goto    delay__20
2670                    ; line_number = 379
2671                    ; if servo@0 start
2672                    ; Delay at if is 0
2673 0000004a = delay__select__16___byte equ delay__servo
2674 00000000 = delay__select__16___bit equ 0
2675                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2676                    ; CASE: true_code_size > 1 && false_code_size > 1
2677                    ; true_code_size=2 false_code_size=2
2678 0267 1c4a          btfss   delay__select__16___byte, delay__select__16___bit
2679 0268 2a6c          goto    delay__17
2680                    ; line_number = 380
2681                    ; if enables@3 start
2682                    ; Delay at if is 0
2683 0000003e = delay__select__15___byte equ enables
2684 00000003 = delay__select__15___bit equ 3
2685                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2686                    ; CASE: True.size=1 False.size=0
2687 0269 19be          btfsc   delay__select__15___byte, delay__select__15___bit
2688                    ; line_number = 381
2689                    ; servo3 := 1
2690                    ; Delay at assignment is 0
2691 026a 1687          bsf     servo3___byte, servo3___bit
2692                    ; code.delay=2 back_code.delay=0
2693                    ; <=bit_code_emit@symbol; sym=delay__select__15 (data:X0=>X0 code:XX=>XX)
2694                    ; if final true delay=1 false delay=0 code delay=2
2695                    ; line_number = 380
2696                    ; if enables@3 done
2697 026b 2a6f          goto    delay__18
2698   026c :   delay__17:
2699                    ; line_number = 383
2700                    ; if enables@2 start
2701                    ; Delay at if is 0
2702 0000003e = delay__select__14___byte equ enables
2703 00000002 = delay__select__14___bit equ 2
2704                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2705                    ; CASE: True.size=1 False.size=0
2706 026c 193e          btfsc   delay__select__14___byte, delay__select__14___bit
2707                    ; line_number = 384
2708                    ; servo2 := 1
2709                    ; Delay at assignment is 0
2710 026d 1505          bsf     servo2___byte, servo2___bit
2711                    ; code.delay=2 back_code.delay=0
2712                    ; <=bit_code_emit@symbol; sym=delay__select__14 (data:X0=>X0 code:XX=>XX)
2713                    ; if final true delay=1 false delay=0 code delay=2
2714                    ; line_number = 383
2715                    ; if enables@2 done
2716 026e 0000          nop     
2717   026f :   delay__18:
2718                    ; code.delay=6 back_code.delay=0
2719                    ; <=bit_code_emit@symbol; sym=delay__select__16 (data:X0=>X0 code:XX=>XX)
2720                    ; if final true delay=2 false delay=2 code delay=6
2721                    ; line_number = 379
2722                    ; if servo@0 done
2723 026f 2a79          goto    delay__21
2724   0270 :   delay__20:
2725                    ; line_number = 386
2726                    ; if servo@0 start
2727                    ; Delay at if is 0
2728 0000004a = delay__select__11___byte equ delay__servo
2729 00000000 = delay__select__11___bit equ 0
2730                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2731                    ; CASE: true_code_size > 1 && false_code_size > 1
2732                    ; true_code_size=2 false_code_size=2
2733 0270 1c4a          btfss   delay__select__11___byte, delay__select__11___bit
2734 0271 2a75          goto    delay__12
2735                    ; line_number = 387
2736                    ; if enables@1 start
2737                    ; Delay at if is 0
2738 0000003e = delay__select__10___byte equ enables
2739 00000001 = delay__select__10___bit equ 1
2740                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2741                    ; CASE: True.size=1 False.size=0
2742 0272 18be          btfsc   delay__select__10___byte, delay__select__10___bit
2743                    ; line_number = 388
2744                    ; servo1 := 1
2745                    ; Delay at assignment is 0
2746 0273 1485          bsf     servo1___byte, servo1___bit
2747                    ; code.delay=2 back_code.delay=0
2748                    ; <=bit_code_emit@symbol; sym=delay__select__10 (data:X0=>X0 code:XX=>XX)
2749                    ; if final true delay=1 false delay=0 code delay=2
2750                    ; line_number = 387
2751                    ; if enables@1 done
2752 0274 2a78          goto    delay__13
2753   0275 :   delay__12:
2754                    ; line_number = 390
2755                    ; if enables@0 start
2756                    ; Delay at if is 0
2757 0000003e = delay__select__9___byte equ enables
2758 00000000 = delay__select__9___bit equ 0
2759                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2760                    ; CASE: True.size=1 False.size=0
2761 0275 183e          btfsc   delay__select__9___byte, delay__select__9___bit
2762                    ; line_number = 391
2763                    ; servo0 := 1
2764                    ; Delay at assignment is 0
2765 0276 1405          bsf     servo0___byte, servo0___bit
2766                    ; code.delay=2 back_code.delay=0
2767                    ; <=bit_code_emit@symbol; sym=delay__select__9 (data:X0=>X0 code:XX=>XX)
2768                    ; if final true delay=1 false delay=0 code delay=2
2769                    ; line_number = 390
2770                    ; if enables@0 done
2771 0277 0000          nop     
2772   0278 :   delay__13:
2773                    ; code.delay=6 back_code.delay=0
2774                    ; <=bit_code_emit@symbol; sym=delay__select__11 (data:X0=>X0 code:XX=>XX)
2775                    ; if final true delay=2 false delay=2 code delay=6
2776                    ; line_number = 386
2777                    ; if servo@0 done
2778 0278 0000          nop     
2779   0279 :   delay__21:
2780                    ; code.delay=25 back_code.delay=0
2781                    ; <=bit_code_emit@symbol; sym=delay__select__19 (data:X0=>X0 code:XX=>XX)
2782                    ; if final true delay=6 false delay=6 code delay=25
2783                    ; line_number = 378
2784                    ;  if servo@1 done
2785                    ; Delay 2 cycles
2786 0279 2a7a          goto    delay__47
2787   027a :   delay__47:
2788 027a 2abe          goto    delay__44
2789                    ; line_number = 392
2790                    ; case 10
2791   027b :   delay__39:
2792                    ; line_number = 393
2793                    ; if servo@1 start
2794                    ; Delay at if is 0
2795 0000004a = delay__select__28___byte equ delay__servo
2796 00000001 = delay__select__28___bit equ 1
2797                    ; (after recombine) true_delay=6, false_delay=6 uniform_delay=true
2798                    ; CASE: true_code_size > 1 && false_code_size > 1
2799                    ; true_code_size=8 false_code_size=8
2800 027b 1cca          btfss   delay__select__28___byte, delay__select__28___bit
2801 027c 2a86          goto    delay__29
2802                    ; line_number = 394
2803                    ; if servo@0 start
2804                    ; Delay at if is 0
2805 0000004a = delay__select__25___byte equ delay__servo
2806 00000000 = delay__select__25___bit equ 0
2807                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2808                    ; CASE: true_code_size > 1 && false_code_size > 1
2809                    ; true_code_size=2 false_code_size=2
2810 027d 1c4a          btfss   delay__select__25___byte, delay__select__25___bit
2811 027e 2a82          goto    delay__26
2812                    ; line_number = 395
2813                    ; _adcon0 := 0x1c
2814                    ; Delay at assignment is 0
2815 027f 301c          movlw   28
2816 0280 009f          movwf   _adcon0
2817 0281 2a85          goto    delay__27
2818   0282 :   delay__26:
2819                    ; line_number = 397
2820                    ; _adcon0 := 0x18
2821                    ; Delay at assignment is 0
2822 0282 3018          movlw   24
2823 0283 009f          movwf   _adcon0
2824 0284 0000          nop     
2825   0285 :   delay__27:
2826                    ; code.delay=6 back_code.delay=0
2827                    ; <=bit_code_emit@symbol; sym=delay__select__25 (data:X0=>X0 code:XX=>XX)
2828                    ; if final true delay=2 false delay=2 code delay=6
2829                    ; line_number = 394
2830                    ; if servo@0 done
2831 0285 2a8f          goto    delay__30
2832   0286 :   delay__29:
2833                    ; line_number = 399
2834                    ; if servo@0 start
2835                    ; Delay at if is 0
2836 0000004a = delay__select__22___byte equ delay__servo
2837 00000000 = delay__select__22___bit equ 0
2838                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2839                    ; CASE: true_code_size > 1 && false_code_size > 1
2840                    ; true_code_size=2 false_code_size=2
2841 0286 1c4a          btfss   delay__select__22___byte, delay__select__22___bit
2842 0287 2a8b          goto    delay__23
2843                    ; line_number = 400
2844                    ; _adcon0 := 0x4
2845                    ; Delay at assignment is 0
2846 0288 3004          movlw   4
2847 0289 009f          movwf   _adcon0
2848 028a 2a8e          goto    delay__24
2849   028b :   delay__23:
2850                    ; line_number = 402
2851                    ; _adcon0 := 0x10
2852                    ; Delay at assignment is 0
2853 028b 3010          movlw   16
2854 028c 009f          movwf   _adcon0
2855 028d 0000          nop     
2856   028e :   delay__24:
2857                    ; code.delay=6 back_code.delay=0
2858                    ; <=bit_code_emit@symbol; sym=delay__select__22 (data:X0=>X0 code:XX=>XX)
2859                    ; if final true delay=2 false delay=2 code delay=6
2860                    ; line_number = 399
2861                    ; if servo@0 done
2862 028e 0000          nop     
2863   028f :   delay__30:
2864                    ; code.delay=10 back_code.delay=0
2865                    ; <=bit_code_emit@symbol; sym=delay__select__28 (data:X0=>X0 code:XX=>XX)
2866                    ; if final true delay=6 false delay=6 code delay=10
2867                    ; line_number = 393
2868                    ; if servo@1 done
2869                    ; line_number = 403
2870                    ; _adon := 1
2871                    ; Delay at assignment is 10
2872 028f 141f          bsf     _adon___byte, _adon___bit
2873                    ; Delay 16 cycles
2874                    ; Delay loop takes 4 * 4 = 16 cycles
2875 0290 3004          movlw   4
2876   0291 :   delay__48:
2877 0291 3eff          addlw   255
2878 0292 1d03          btfss   __z___byte, __z___bit
2879 0293 2a91          goto    delay__48
2880 0294 2abe          goto    delay__44
2881                    ; line_number = 404
2882                    ; case 11
2883   0295 :   delay__40:
2884                    ; line_number = 405
2885                    ; _go := 1
2886                    ; Delay at assignment is 0
2887 0295 149f          bsf     _go___byte, _go___bit
2888                    ; Delay 26 cycles
2889                    ; Delay loop takes 6 * 4 = 24 cycles
2890 0296 3006          movlw   6
2891   0297 :   delay__49:
2892 0297 3eff          addlw   255
2893 0298 1d03          btfss   __z___byte, __z___bit
2894 0299 2a97          goto    delay__49
2895 029a 2a9b          goto    delay__50
2896   029b :   delay__50:
2897 029b 2abe          goto    delay__44
2898                    ; line_number = 406
2899                    ; case 12
2900   029c :   delay__41:
2901                    ; line_number = 407
2902                    ; analogs[servo] := _adresh
2903                    ; Delay at assignment is 0
2904                    ; index_fsr_first
2905 029c 084a          movf    delay__servo,w
2906 029d 3e24          addlw   analogs
2907 029e 0084          movwf   __fsr
2908 029f 081e          movf    _adresh,w
2909 02a0 0080          movwf   __indf
2910                    ; line_number = 408
2911                    ;  if !calibrate start
2912                    ; Delay at if is 5
2913                    ; (after recombine) true_delay=0, false_delay=8 uniform_delay=true
2914                    ; CASE: true.size=0 && false.size>1
2915                    ; bit_code_emit_helper1: body_code.size=8 true_test=false body_code.delay=8 (uniform delay)
2916 02a1 1e07          btfss   calibrate___byte, calibrate___bit
2917 02a2 2aa8          goto    delay__31
2918                    ; Delay 7 cycles
2919 02a3 2aa4          goto    delay__33
2920   02a4 :   delay__33:
2921 02a4 2aa5          goto    delay__34
2922   02a5 :   delay__34:
2923 02a5 2aa6          goto    delay__35
2924   02a6 :   delay__35:
2925 02a6 0000          nop     
2926 02a7 2ab0          goto    delay__32
2927   02a8 :   delay__31:
2928                    ; line_number = 409
2929                    ; enables := 3
2930                    ; Delay at assignment is 0
2931 02a8 3003          movlw   3
2932 02a9 00be          movwf   enables
2933                    ; line_number = 410
2934                    ;  temporary := analogs[2]
2935                    ; Delay at assignment is 2
2936 02aa 0826          movf    analogs+2,w
2937 02ab 00d0          movwf   delay__temporary
2938                    ; line_number = 411
2939                    ;  positions[0] := temporary
2940                    ; Delay at assignment is 4
2941 02ac 0850          movf    delay__temporary,w
2942 02ad 00b9          movwf   positions
2943                    ; line_number = 412
2944                    ;  positions[1] := analogs[3]
2945                    ; Delay at assignment is 6
2946 02ae 0827          movf    analogs+3,w
2947 02af 00ba          movwf   positions+1
2948   02b0 :   delay__32:
2949                    ; code.delay=16 back_code.delay=0
2950                    ; <=bit_code_emit@symbol; sym=calibrate (data:X0=>X0 code:XX=>XX)
2951                    ; if final true delay=8 false delay=0 code delay=16
2952                    ; line_number = 408
2953                    ;  if !calibrate done
2954                    ; Delay 11 cycles
2955                    ; Delay loop takes 2 * 4 = 8 cycles
2956 02b0 3002          movlw   2
2957   02b1 :   delay__51:
2958 02b1 3eff          addlw   255
2959 02b2 1d03          btfss   __z___byte, __z___bit
2960 02b3 2ab1          goto    delay__51
2961 02b4 2ab5          goto    delay__52
2962   02b5 :   delay__52:
2963 02b5 0000          nop     
2964 02b6 2abe          goto    delay__44
2965                    ; line_number = 413
2966                    ; case 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
2967   02b7 :   delay__42:
2968                    ; line_number = 415
2969                    ; do_nothing
2970                    ; Delay 27 cycles
2971                    ; Delay loop takes 6 * 4 = 24 cycles
2972 02b7 3006          movlw   6
2973   02b8 :   delay__53:
2974 02b8 3eff          addlw   255
2975 02b9 1d03          btfss   __z___byte, __z___bit
2976 02ba 2ab8          goto    delay__53
2977 02bb 2abc          goto    delay__54
2978   02bc :   delay__54:
2979 02bc 0000          nop     
2980 02bd 2abe          goto    delay__44
2981   02be :   delay__44:
2982                    ; switch end:(data:X0=>X? code:XX=>XX)
2983                    ; line_number = 347
2984                    ;  switch counter & 0x1f done
2985                    ; #debug_out := 0
2986            
2987            
2988                    ; delay after procedure statements=47
2989 02be 1283          bcf     __rp0___byte, __rp0___bit
2990                    ; Delay 83 cycles
2991                    ; Delay loop takes 20 * 4 = 80 cycles
2992 02bf 3014          movlw   20
2993   02c0 :   delay__55:
2994 02c0 3eff          addlw   255
2995 02c1 1d03          btfss   __z___byte, __z___bit
2996 02c2 2ac0          goto    delay__55
2997 02c3 2ac4          goto    delay__56
2998   02c4 :   delay__56:
2999 02c4 0000          nop     
3000                    ; Implied return
3001 02c5 3400          retlw   0
3002                    ; Final delay = 133
3003            
3004            
3005            
3006            
3007                    ; line_number = 419
3008                    ; procedure mask_get
3009   02c6 :   mask_get:
3010                    ; Last argument is sitting in W; save into argument variable
3011 02c6 00d1          movwf   mask_get__bit_number
3012                    ; delay=4294967295
3013                    ; line_number = 420
3014                    ; argument bit_number byte
3015 00000051 = mask_get__bit_number equ shared___globals+49
3016                    ; line_number = 421
3017                    ;  returns byte
3018            
3019                    ; # This procedure will return the mask for {bit_number}.
3020            
3021                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3022                    ; line_number = 425
3023                    ;  switch bit_number start
3024 02c7 3002          movlw   mask_get__5>>8
3025 02c8 008a          movwf   __pclath
3026 02c9 0851          movf    mask_get__bit_number,w
3027 02ca 3ecc          addlw   mask_get__5
3028 02cb 0082          movwf   __pcl
3029                    ; page_group 4
3030   02cc :   mask_get__5:
3031                    ; line_number = 427
3032                    ; return 1 start
3033                    ; line_number = 427
3034 02cc 3401          retlw   1
3035                    ; line_number = 427
3036                    ; return 1 done
3037                    ; line_number = 429
3038                    ; return 2 start
3039                    ; line_number = 429
3040 02cd 3402          retlw   2
3041                    ; line_number = 429
3042                    ; return 2 done
3043                    ; line_number = 431
3044                    ; return 4 start
3045                    ; line_number = 431
3046 02ce 3404          retlw   4
3047                    ; line_number = 431
3048                    ; return 4 done
3049                    ; line_number = 433
3050                    ; return 8 start
3051                    ; line_number = 433
3052 02cf 3408          retlw   8
3053                    ; line_number = 433
3054                    ; return 8 done
3055            
3056            
3057   02d0 :   mask_get__6:
3058                    ; switch end:(data:X0=>X0 code:XX=>XX)
3059                    ; line_number = 425
3060                    ;  switch bit_number done
3061                    ; delay after procedure statements=non-uniform
3062                    ; Exiting procedure with no return(s); fail with infinite loop
3063   02d0 :   mask_get__7:
3064 02d0 2ad0          goto    mask_get__7
3065            
3066            
3067            
3068            
3069                    ; line_number = 436
3070                    ; constant zero8 = "\0,0,0,0,0,0,0,0\"
3071                    ; zero8 = '\0,0,0,0,0,0,0,0\'
3072                    ; line_number = 437
3073                    ; constant module_name = "\7\Servo4H"
3074                    ; module_name = '\7\Servo4H'
3075                    ; line_number = 438
3076                    ; constant vendor_name = "\13\Mondo-tronics"
3077                    ; vendor_name = '\13\Mondo-tronics'
3078            
3079                    ; line_number = 440
3080                    ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
3081                    ; id = '\1,0,15,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\Servo4H\13\Mondo-tronics'
3082   02d1 :   id:
3083                    ; Temporarily save index into FSR
3084 02d1 0084          movwf   __fsr
3085                    ; Initialize PCLATH to point to this code page
3086 02d2 3003          movlw   id___base>>8
3087 02d3 008a          movwf   __pclath
3088                    ; Restore index from FSR
3089 02d4 0804          movf    __fsr,w
3090 02d5 3e00          addlw   id___base
3091                    ; Index to the correct return value
3092 02d6 0082          movwf   __pcl
3093                    ; page_group 46
3094                    ; Add 41 NOP's until start of new page 
3095 02d7 0000          nop     
3096 02d8 0000          nop     
3097 02d9 0000          nop     
3098 02da 0000          nop     
3099 02db 0000          nop     
3100 02dc 0000          nop     
3101 02dd 0000          nop     
3102 02de 0000          nop     
3103 02df 0000          nop     
3104 02e0 0000          nop     
3105 02e1 0000          nop     
3106 02e2 0000          nop     
3107 02e3 0000          nop     
3108 02e4 0000          nop     
3109 02e5 0000          nop     
3110 02e6 0000          nop     
3111 02e7 0000          nop     
3112 02e8 0000          nop     
3113 02e9 0000          nop     
3114 02ea 0000          nop     
3115 02eb 0000          nop     
3116 02ec 0000          nop     
3117 02ed 0000          nop     
3118 02ee 0000          nop     
3119 02ef 0000          nop     
3120 02f0 0000          nop     
3121 02f1 0000          nop     
3122 02f2 0000          nop     
3123 02f3 0000          nop     
3124 02f4 0000          nop     
3125 02f5 0000          nop     
3126 02f6 0000          nop     
3127 02f7 0000          nop     
3128 02f8 0000          nop     
3129 02f9 0000          nop     
3130 02fa 0000          nop     
3131 02fb 0000          nop     
3132 02fc 0000          nop     
3133 02fd 0000          nop     
3134 02fe 0000          nop     
3135 02ff 0000          nop     
3136   0300 :   id___base:
3137 0300 3401          retlw   1
3138 0301 3400          retlw   0
3139 0302 340f          retlw   15
3140 0303 3407          retlw   7
3141 0304 3401          retlw   1
3142 0305 3400          retlw   0
3143 0306 3400          retlw   0
3144 0307 3400          retlw   0
3145 0308 3400          retlw   0
3146 0309 3400          retlw   0
3147 030a 3400          retlw   0
3148 030b 3400          retlw   0
3149 030c 3400          retlw   0
3150 030d 3400          retlw   0
3151 030e 3400          retlw   0
3152 030f 3400          retlw   0
3153 0310 3400          retlw   0
3154 0311 3400          retlw   0
3155 0312 3400          retlw   0
3156 0313 3400          retlw   0
3157 0314 3400          retlw   0
3158 0315 3400          retlw   0
3159 0316 3400          retlw   0
3160 0317 3400          retlw   0
3161 0318 3407          retlw   7
3162 0319 3453          retlw   83
3163 031a 3465          retlw   101
3164 031b 3472          retlw   114
3165 031c 3476          retlw   118
3166 031d 346f          retlw   111
3167 031e 3434          retlw   52
3168 031f 3448          retlw   72
3169 0320 340d          retlw   13
3170 0321 344d          retlw   77
3171 0322 346f          retlw   111
3172 0323 346e          retlw   110
3173 0324 3464          retlw   100
3174 0325 346f          retlw   111
3175 0326 342d          retlw   45
3176 0327 3474          retlw   116
3177 0328 3472          retlw   114
3178 0329 346f          retlw   111
3179 032a 346e          retlw   110
3180 032b 3469          retlw   105
3181 032c 3463          retlw   99
3182 032d 3473          retlw   115
3183                    ; line_number = 440
3184                    ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
3185            
3186                    ; Appending 2 delayed procedures to code bank 0
3187                    ; buffer = 'bit_bang'
3188                    ; line_number = 33
3189                    ; procedure byte_get
3190   032e :   byte_get:
3191                    ; arguments_none
3192                    ; line_number = 35
3193                    ;  returns byte
3194            
3195                    ; # This procedure will wait for a byte to be received from
3196                    ; # serial_in_bit.  It calls the delay procedure for all delays.
3197                    ; # This procedure will keep calling the {delay} routine until
3198                    ; # data is received.
3199            
3200                    ; line_number = 42
3201                    ;  local count byte
3202 00000020 = byte_get__count equ shared___globals
3203                    ; line_number = 43
3204                    ;  local byte byte
3205 00000021 = byte_get__byte equ shared___globals+1
3206            
3207                    ; # Why does the delay procedure wait for a third of bit?  Well, it
3208                    ; # has to do with the loop immediately below.  If we catch the
3209                    ; # start bit at the beginning of a 1/3 bit time, we will be
3210                    ; # sampling data at approximately 1/3 of the way into each bit.
3211                    ; # Conversely, if we catch the start near the end of a 1/3 bit
3212                    ; # bit time, we will be sampling data at approximately 2/3 of the
3213                    ; # way into each bit.  So, what this means is that our bit sample
3214                    ; # times will be somewhere between 1/3 and 2/3 of bit (i.e. in
3215                    ; # the middle of the bit.
3216            
3217                    ; # It would be nice to tweak the code to shorter delay times
3218                    ; # (1/4 bit, 1/5 bit, etc.) but then it gets too hard to get
3219                    ; # the bookeeping done in the delay routine.  A PIC running at
3220                    ; # 4MHz (=1MIPS), only has 138 instructions available for the
3221                    ; # delay routine when at 1/3 of bit.
3222            
3223                    ; # Wait for a start bit:
3224                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3225                    ; line_number = 62
3226                    ;  waiting := 1
3227 032e 14df          bsf     waiting___byte, waiting___bit
3228                    ; line_number = 63
3229                    ;  receiving := 1
3230 032f 145f          bsf     receiving___byte, receiving___bit
3231                    ; line_number = 64
3232                    ;  while serial_in start
3233   0330 :   byte_get__1:
3234                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
3235                    ; CASE: true_code.size = 0 && false_code.size > 1
3236                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
3237 0330 1e05          btfss   serial_in___byte, serial_in___bit
3238 0331 2b34          goto    byte_get__2
3239                    ; line_number = 65
3240                    ; delay instructions_per_delay - 3 start
3241                    ; Delay expression evaluates to 135
3242                    ; line_number = 66
3243                    ; call delay()
3244                    ; Delay at call is 0
3245 0332 21dd          call    delay
3246                    ; line_number = 65
3247                    ; delay instructions_per_delay - 3 done
3248 0333 2b30          goto    byte_get__1
3249                    ; Recombine size1 = 0 || size2 = 0
3250   0334 :   byte_get__2:
3251                    ; code.delay=4294967295 back_code.delay=4294967295
3252                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
3253                    ; line_number = 64
3254                    ;  while serial_in done
3255                    ; line_number = 67
3256                    ; waiting := 0
3257 0334 10df          bcf     waiting___byte, waiting___bit
3258            
3259                    ; # Clear out any preceeding interrupt condition:
3260                    ; line_number = 70
3261                    ;  serial_out := 1
3262 0335 1605          bsf     serial_out___byte, serial_out___bit
3263            
3264                    ; # Skip over start bit:
3265                    ; line_number = 73
3266                    ;  delay instructions_per_bit - 2 start
3267                    ; Delay expression evaluates to 414
3268                    ; # There are two instructions of set-up for following loop_exactly:
3269                    ; line_number = 75
3270                    ;  call delay()
3271                    ; Delay at call is 0
3272 0336 21dd          call    delay
3273                    ; line_number = 76
3274                    ;  call delay()
3275                    ; Delay at call is 135
3276 0337 21dd          call    delay
3277                    ; line_number = 77
3278                    ;  call delay()
3279                    ; Delay at call is 270
3280 0338 21dd          call    delay
3281                    ; line_number = 78
3282                    ;  byte := 0
3283                    ; Delay at assignment is 405
3284 0339 3000          movlw   0
3285 033a 00a1          movwf   byte_get__byte
3286            
3287                    ; Delay 7 cycles
3288 033b 2b3c          goto    byte_get__3
3289   033c :   byte_get__3:
3290 033c 2b3d          goto    byte_get__4
3291   033d :   byte_get__4:
3292 033d 2b3e          goto    byte_get__5
3293   033e :   byte_get__5:
3294 033e 0000          nop     
3295                    ; line_number = 73
3296                    ;  delay instructions_per_bit - 2 done
3297                    ; # Read in 8 bits of data:
3298                    ; line_number = 81
3299                    ;  loop_exactly 8 start
3300 00000055 = byte_get__6 equ shared___globals+53
3301 033f 3008          movlw   8
3302 0340 00d5          movwf   byte_get__6
3303   0341 :   byte_get__7:
3304                    ; # There are 3 instrucitons of loop_exactly overhead:
3305                    ; line_number = 83
3306                    ;  delay instructions_per_bit - 3 start
3307                    ; Delay expression evaluates to 413
3308                    ; line_number = 84
3309                    ; call delay()
3310                    ; Delay at call is 0
3311 0341 21dd          call    delay
3312                    ; line_number = 85
3313                    ;  byte := byte >> 1
3314                    ; Delay at assignment is 135
3315                    ; Assignment of variable to self (no code needed)
3316 0342 0ca1          rrf     byte_get__byte,f
3317 0343 13a1          bcf     byte_get__byte, 7
3318                    ; line_number = 86
3319                    ;  if serial_in start
3320                    ; Delay at if is 137
3321                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
3322                    ; CASE: True.size=1 False.size=0
3323 0344 1a05          btfsc   serial_in___byte, serial_in___bit
3324                    ; line_number = 87
3325                    ; byte@7 := 1
3326                    ; Delay at assignment is 0
3327 00000021 = byte_get__select__8___byte equ byte_get__byte
3328 00000007 = byte_get__select__8___bit equ 7
3329 0345 17a1          bsf     byte_get__select__8___byte, byte_get__select__8___bit
3330                    ; code.delay=139 back_code.delay=0
3331                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
3332                    ; if final true delay=1 false delay=0 code delay=139
3333                    ; line_number = 86
3334                    ;  if serial_in done
3335                    ; line_number = 88
3336                    ; call delay()
3337                    ; Delay at call is 139
3338 0346 21dd          call    delay
3339                    ; line_number = 89
3340                    ;  call delay()
3341                    ; Delay at call is 274
3342 0347 21dd          call    delay
3343            
3344                    ; Delay 4 cycles
3345 0348 2b49          goto    byte_get__9
3346   0349 :   byte_get__9:
3347 0349 2b4a          goto    byte_get__10
3348   034a :   byte_get__10:
3349                    ; line_number = 83
3350                    ;  delay instructions_per_bit - 3 done
3351                    ; line_number = 81
3352                    ;  loop_exactly 8 wrap-up
3353 034a 0bd5          decfsz  byte_get__6,f
3354 034b 2b41          goto    byte_get__7
3355                    ; line_number = 81
3356                    ;  loop_exactly 8 done
3357                    ; # Skip over 2/3's of stop bit; 3 cycles for return:
3358                    ; line_number = 92
3359                    ;  delay instructions_per_delay*2 - 3 start
3360                    ; Delay expression evaluates to 273
3361                    ; line_number = 93
3362                    ; call delay()
3363                    ; Delay at call is 0
3364 034c 21dd          call    delay
3365                    ; line_number = 94
3366                    ;  call delay()
3367                    ; Delay at call is 135
3368 034d 21dd          call    delay
3369                    ; Delay 3 cycles
3370 034e 2b4f          goto    byte_get__11
3371   034f :   byte_get__11:
3372 034f 0000          nop     
3373                    ; line_number = 92
3374                    ;  delay instructions_per_delay*2 - 3 done
3375                    ; line_number = 95
3376                    ; command_previous := command_last
3377 0350 0840          movf    command_last,w
3378 0351 00bf          movwf   command_previous
3379                    ; line_number = 96
3380                    ;  command_last := byte
3381 0352 0821          movf    byte_get__byte,w
3382 0353 00c0          movwf   command_last
3383                    ; line_number = 97
3384                    ;  serial_out := 1
3385 0354 1605          bsf     serial_out___byte, serial_out___bit
3386                    ; line_number = 98
3387                    ;  return byte start
3388                    ; line_number = 98
3389 0355 0821          movf    byte_get__byte,w
3390 0356 0008          return  
3391                    ; line_number = 98
3392                    ;  return byte done
3393            
3394            
3395                    ; delay after procedure statements=non-uniform
3396            
3397            
3398            
3399            
3400                    ; line_number = 101
3401                    ; procedure byte_put
3402   0357 :   byte_put:
3403                    ; Last argument is sitting in W; save into argument variable
3404 0357 00a3          movwf   byte_put__byte
3405                    ; delay=4294967295
3406                    ; line_number = 102
3407                    ; argument byte byte
3408 00000023 = byte_put__byte equ shared___globals+3
3409                    ; line_number = 103
3410                    ;  returns_nothing
3411            
3412                    ; # This procedure will send {byte} to {serial_out} pin.  The {delay}
3413                    ; # procedure is called to provide the appropriate bit timing.
3414            
3415                    ; line_number = 108
3416                    ;  local count byte
3417 00000022 = byte_put__count equ shared___globals+2
3418            
3419                    ; # {receiving} will be 1 if the last get/put routine was a get.
3420                    ; # Before we start transmitting a response back, we want to ensure
3421                    ; # that there has been enough time to turn the line around.
3422                    ; # We delay the first 1/3 of a bit to pad out the 9-2/3 bits
3423                    ; # from get_byte to 10 bits.  We delay another 3 bits just to
3424                    ; # ensure that slow interpreters do not get overrun.
3425                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3426                    ; line_number = 116
3427                    ;  sent_previous := sent_last
3428 0358 0842          movf    sent_last,w
3429 0359 00c1          movwf   sent_previous
3430                    ; line_number = 117
3431                    ;  sent_last := byte
3432 035a 0823          movf    byte_put__byte,w
3433 035b 00c2          movwf   sent_last
3434                    ; line_number = 118
3435                    ;  if receiving start
3436                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
3437                    ; CASE: true_code.size = 0 && false_code.size > 1
3438                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
3439 035c 1c5f          btfss   receiving___byte, receiving___bit
3440 035d 2b64          goto    byte_put__3
3441                    ; line_number = 119
3442                    ; receiving := 0
3443 035e 105f          bcf     receiving___byte, receiving___bit
3444                    ; # 10 = 1 + 3*3 = 3-1/3 extra bits of delay:
3445                    ; line_number = 121
3446                    ;  loop_exactly 10 start
3447 00000056 = byte_put__1 equ shared___globals+54
3448 035f 300a          movlw   10
3449 0360 00d6          movwf   byte_put__1
3450   0361 :   byte_put__2:
3451                    ; line_number = 122
3452                    ; call delay()
3453 0361 21dd          call    delay
3454            
3455                    ; line_number = 121
3456                    ;  loop_exactly 10 wrap-up
3457 0362 0bd6          decfsz  byte_put__1,f
3458 0363 2b61          goto    byte_put__2
3459                    ; line_number = 121
3460                    ;  loop_exactly 10 done
3461                    ; Recombine size1 = 0 || size2 = 0
3462   0364 :   byte_put__3:
3463                    ; code.delay=4294967295 back_code.delay=4294967295
3464                    ; <=bit_code_emit@symbol; sym=receiving (data:X0=>X0 code:XX=>XX)
3465                    ; line_number = 118
3466                    ;  if receiving done
3467                    ; # Send the start bit:
3468                    ; line_number = 125
3469                    ;  delay instructions_per_bit - 2 start
3470                    ; Delay expression evaluates to 414
3471                    ; # The loop_exactly setup after this is 2 instructions:
3472                    ; line_number = 127
3473                    ;  serial_out := 0
3474                    ; Delay at assignment is 0
3475 0364 1205          bcf     serial_out___byte, serial_out___bit
3476                    ; line_number = 128
3477                    ;  call delay()
3478                    ; Delay at call is 1
3479 0365 21dd          call    delay
3480                    ; line_number = 129
3481                    ;  call delay()
3482                    ; Delay at call is 136
3483 0366 21dd          call    delay
3484                    ; line_number = 130
3485                    ;  call delay()
3486                    ; Delay at call is 271
3487 0367 21dd          call    delay
3488            
3489                    ; Delay 8 cycles
3490                    ; Delay loop takes 2 * 4 = 8 cycles
3491 0368 3002          movlw   2
3492   0369 :   byte_put__4:
3493 0369 3eff          addlw   255
3494 036a 1d03          btfss   __z___byte, __z___bit
3495 036b 2b69          goto    byte_put__4
3496                    ; line_number = 125
3497                    ;  delay instructions_per_bit - 2 done
3498                    ; # Send the data:
3499                    ; line_number = 133
3500                    ;  loop_exactly 8 start
3501 00000056 = byte_put__5 equ shared___globals+54
3502 036c 3008          movlw   8
3503 036d 00d6          movwf   byte_put__5
3504   036e :   byte_put__6:
3505                    ; # Loop_exactly overhead is 3 instructions:
3506                    ; line_number = 135
3507                    ;  delay instructions_per_bit - 3 start
3508                    ; Delay expression evaluates to 413
3509                    ; line_number = 136
3510                    ; if byte@0 start
3511                    ; Delay at if is 0
3512 00000023 = byte_put__select__7___byte equ byte_put__byte
3513 00000000 = byte_put__select__7___bit equ 0
3514                    ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
3515                    ; CASE: true_size=1 && false_size=1
3516                    ; SUBCASE: Double test; true, then false
3517 036e 1823          btfsc   byte_put__select__7___byte, byte_put__select__7___bit
3518                    ; line_number = 137
3519                    ; serial_out := 1
3520                    ; Delay at assignment is 0
3521 036f 1605          bsf     serial_out___byte, serial_out___bit
3522 0370 1c23          btfss   byte_put__select__7___byte, byte_put__select__7___bit
3523                    ; line_number = 139
3524                    ; serial_out := 0
3525                    ; Delay at assignment is 0
3526 0371 1205          bcf     serial_out___byte, serial_out___bit
3527                    ; code.delay=4 back_code.delay=0
3528                    ; <=bit_code_emit@symbol; sym=byte_put__select__7 (data:X0=>X0 code:XX=>XX)
3529                    ; if final true delay=1 false delay=1 code delay=4
3530                    ; line_number = 136
3531                    ; if byte@0 done
3532                    ; line_number = 140
3533                    ; byte := byte >> 1
3534                    ; Delay at assignment is 4
3535                    ; Assignment of variable to self (no code needed)
3536 0372 0ca3          rrf     byte_put__byte,f
3537 0373 13a3          bcf     byte_put__byte, 7
3538                    ; line_number = 141
3539                    ;  call delay()
3540                    ; Delay at call is 6
3541 0374 21dd          call    delay
3542                    ; line_number = 142
3543                    ;  call delay()
3544                    ; Delay at call is 141
3545 0375 21dd          call    delay
3546                    ; line_number = 143
3547                    ;  call delay()
3548                    ; Delay at call is 276
3549 0376 21dd          call    delay
3550            
3551                    ; Delay 2 cycles
3552 0377 2b78          goto    byte_put__8
3553   0378 :   byte_put__8:
3554                    ; line_number = 135
3555                    ;  delay instructions_per_bit - 3 done
3556                    ; line_number = 133
3557                    ;  loop_exactly 8 wrap-up
3558 0378 0bd6          decfsz  byte_put__5,f
3559 0379 2b6e          goto    byte_put__6
3560                    ; line_number = 133
3561                    ;  loop_exactly 8 done
3562                    ; # Send the stop bit:
3563                    ; line_number = 146
3564                    ;  delay instructions_per_bit start
3565                    ; Delay expression evaluates to 416
3566                    ; line_number = 147
3567                    ; serial_out := 1
3568                    ; Delay at assignment is 0
3569 037a 1605          bsf     serial_out___byte, serial_out___bit
3570                    ; line_number = 148
3571                    ;  call delay()
3572                    ; Delay at call is 1
3573 037b 21dd          call    delay
3574                    ; line_number = 149
3575                    ;  call delay()
3576                    ; Delay at call is 136
3577 037c 21dd          call    delay
3578                    ; line_number = 150
3579                    ;  call delay()
3580                    ; Delay at call is 271
3581 037d 21dd          call    delay
3582            
3583            
3584                    ; Delay 10 cycles
3585                    ; Delay loop takes 2 * 4 = 8 cycles
3586 037e 3002          movlw   2
3587   037f :   byte_put__9:
3588 037f 3eff          addlw   255
3589 0380 1d03          btfss   __z___byte, __z___bit
3590 0381 2b7f          goto    byte_put__9
3591 0382 2b83          goto    byte_put__10
3592   0383 :   byte_put__10:
3593                    ; line_number = 146
3594                    ;  delay instructions_per_bit done
3595                    ; delay after procedure statements=non-uniform
3596                    ; Implied return
3597 0383 3400          retlw   0
3598            
3599            
3600            
3601            
3602                    ; Configuration bits
3603                    ; fill = 0x0
3604                    ; bg = bg11 (0x3000)
3605                    ; cpd = off (0x100)
3606                    ; cp = on (0x0)
3607                    ; boden = off (0x0)
3608                    ; mclre = off (0x0)
3609                    ; pwrte = off (0x10)
3610                    ; wdte = on (0x8)
3611                    ; fosc = int_no_clk (0x4)
3612                    ; 12572 = 0x311c
3613   311c =           __config 12572
3614                    ; Define start addresses for data regions
3615                    ; Region="shared___globals" Address=32" Size=64 Bytes=55 Bits=2 Available=8
3616                    ; Region="shared___globals" Address=32" Size=64 Bytes=55 Bits=2 Available=8
3617                    ; Region="shared___globals" Address=32" Size=64 Bytes=55 Bits=2 Available=8
3618                    end
