1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 1023
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000020 = shared___globals equ 32
7    00000000 = __indf equ 0
8    00000002 = __pcl equ 2
9    00000003 = __status equ 3
10   00000004 = __fsr equ 4
11   00000003 = __c___byte equ 3
12   00000000 = __c___bit equ 0
13   00000003 = __z___byte equ 3
14   00000002 = __z___bit equ 2
15   00000003 = __rp0___byte equ 3
16   00000005 = __rp0___bit equ 5
17   00000003 = __rp1___byte equ 3
18   00000006 = __rp1___bit equ 6
19   00000003 = __irp___byte equ 3
20   00000007 = __irp___bit equ 7
21   0000000a = __pclath equ 10
22   0000000a = __cb0___byte equ 10
23   00000003 = __cb0___bit equ 3
24   0000000a = __cb1___byte equ 10
25   00000004 = __cb1___bit equ 4
26              
27                      ; # Copyright (c) 2000-2004 by Wayne C. Gramlich & William T. Benson.
28                      ; # All rights reserved.
29              
30                      ; buffer = 'iredge4'
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 = 'iredge4'
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 = 'iredge4'
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 = 'iredge4'
980                     ; line_number = 8
981                     ; library bit_bang exited
982                     ; line_number = 9
983                     ; library debug_port entered
984             
985                     ; # Copyright (c) 2004 by Wayne C. Gramlich
986                     ; # All rights reserved.
987             
988                     ; # This library contains a debug port service routine for
989                     ; # streaming output to a debug port.
990             
991                     ; # This procedure requires that there be an array called {state}
992                     ; # which has a size of {state_size}.
993             
994                     ; buffer = 'debug_port'
995                     ; line_number = 12
996                     ; global debug_character byte
997  00000024 = debug_character equ shared___globals+4
998                     ; line_number = 13
999                     ; global debug_counter byte
1000 00000025 = debug_counter equ shared___globals+5
1001                    ; line_number = 14
1002                    ; global debug_index byte
1003 00000026 = debug_index equ shared___globals+6
1004            
1005                    ; Delaying code generation for procedure  debug_port_reset
1006                    ; #FIXME: The code generated for the case clauses could be much better!!!
1007                    ; # 1)  if var > k should be converted to var >= k-1 to improve test.
1008                    ; # 2)  The MOVLW k in a two instruction "then" clause can be pulled
1009                    ; #     before the BTFSx instruction.   This causes the code to collapse
1010                    ; #     into a single instruction after the BTFSx instruction.
1011            
1012                    ; Delaying code generation for procedure  debug_port_service
1013            
1014                    ; buffer = 'iredge4'
1015                    ; line_number = 9
1016                    ; library debug_port exited
1017            
1018                    ; line_number = 11
1019                    ; package pdip
1020                    ; line_number = 12
1021                    ; pin 1 = power_supply
1022                    ; line_number = 13
1023                    ;  pin 2 = ra5_out, name = serial_out
1024 00000005 = serial_out___byte equ _porta
1025 00000005 = serial_out___bit equ 5
1026                    ; line_number = 14
1027                    ;  pin 3 = ra4_out, name = led1
1028 00000005 = led1___byte equ _porta
1029 00000004 = led1___bit equ 4
1030                    ; line_number = 15
1031                    ;  pin 4 = ra3_in, name = serial_in
1032 00000005 = serial_in___byte equ _porta
1033 00000004 = serial_in___bit equ 4
1034                    ; line_number = 16
1035                    ;  pin 5 = rc5_out, name = led2
1036 00000007 = led2___byte equ _portc
1037 00000005 = led2___bit equ 5
1038                    ; line_number = 17
1039                    ;  pin 6 = rc4_out, name = led3
1040 00000007 = led3___byte equ _portc
1041 00000004 = led3___bit equ 4
1042                    ; line_number = 18
1043                    ;  pin 7 = rc3_out, name = led4
1044 00000007 = led4___byte equ _portc
1045 00000003 = led4___bit equ 3
1046                    ; line_number = 19
1047                    ;  pin 8 = rc2_out, name = debug_out
1048 00000007 = debug_out___byte equ _portc
1049 00000002 = debug_out___bit equ 2
1050                    ; line_number = 20
1051                    ;  pin 9 = an5, name = in0
1052 00000007 = in0___byte equ _portc
1053 00000001 = in0___bit equ 1
1054                    ; line_number = 21
1055                    ;  pin 10 = an4, name = in1
1056 00000007 = in1___byte equ _portc
1057 00000000 = in1___bit equ 0
1058                    ; line_number = 22
1059                    ;  pin 11 = an2, name = cal
1060 00000005 = cal___byte equ _porta
1061 00000002 = cal___bit equ 2
1062                    ; line_number = 23
1063                    ;  pin 12 = an1, name = in2
1064 00000005 = in2___byte equ _porta
1065 00000001 = in2___bit equ 1
1066                    ; line_number = 24
1067                    ;  pin 13 = an0, name = in3
1068 00000005 = in3___byte equ _porta
1069 00000000 = in3___bit equ 0
1070                    ; line_number = 25
1071                    ;  pin 14 = ground
1072            
1073                    ; line_number = 27
1074                    ; constant analogs_size = 4
1075 00000004 = analogs_size equ 4
1076                    ; line_number = 28
1077                    ; constant io_mask = 0xf
1078 0000000f = io_mask equ 15
1079                    ; line_number = 29
1080                    ; constant threshold_default = 0x80
1081 00000080 = threshold_default equ 128
1082            
1083                    ; line_number = 31
1084                    ; constant state_size = 16 + 12
1085 0000001c = state_size equ 28
1086                    ; line_number = 32
1087                    ; constant state_size2 = state_size << 1
1088 00000038 = state_size2 equ 56
1089                    ; line_number = 33
1090                    ; global state[state_size] array[byte]
1091 00000027 = state equ shared___globals+7
1092                    ; line_number = 34
1093                    ; bind command_previous = state[0]
1094 00000027 = command_previous equ shared___globals+7
1095                    ; line_number = 35
1096                    ; bind command_last = state[1]
1097 00000028 = command_last equ shared___globals+8
1098                    ; line_number = 36
1099                    ; bind sent_previous = state[2]
1100 00000029 = sent_previous equ shared___globals+9
1101                    ; line_number = 37
1102                    ; bind sent_last = state[3]
1103 0000002a = sent_last equ shared___globals+10
1104                    ; line_number = 38
1105                    ; bind threshold_trim_pot = state[4]
1106 0000002b = threshold_trim_pot equ shared___globals+11
1107                    ; line_number = 39
1108                    ; bind inputs = state[5]
1109 0000002c = inputs equ shared___globals+12
1110                    ; line_number = 40
1111                    ; bind complement = state[6]
1112 0000002d = complement equ shared___globals+13
1113                    ; line_number = 41
1114                    ; bind command = state[7]
1115 0000002e = command equ shared___globals+14
1116                    ; line_number = 42
1117                    ; bind raw_inputs = state[8]
1118 0000002f = raw_inputs equ shared___globals+15
1119                    ; line_number = 43
1120                    ; bind interrupt_bits = state[9]
1121 00000030 = interrupt_bits equ shared___globals+16
1122                    ; line_number = 44
1123                    ; bind falling = state[10]
1124 00000031 = falling equ shared___globals+17
1125                    ; line_number = 45
1126                    ; bind high = state[11]
1127 00000032 = high equ shared___globals+18
1128                    ; line_number = 46
1129                    ; bind low = state[12]
1130 00000033 = low equ shared___globals+19
1131                    ; line_number = 47
1132                    ; bind raising = state[13]
1133 00000034 = raising equ shared___globals+20
1134                    ; line_number = 48
1135                    ; bind threshold_enables = state[14]
1136 00000035 = threshold_enables equ shared___globals+21
1137                    ; line_number = 49
1138                    ; bind thresholds_low[0] = state[16]
1139 00000037 = thresholds_low equ shared___globals+23
1140                    ; line_number = 50
1141                    ; bind thresholds_high[0] = state[20]
1142 0000003b = thresholds_high equ shared___globals+27
1143                    ; line_number = 51
1144                    ; bind analogs[0] = state[24]
1145 0000003f = analogs equ shared___globals+31
1146            
1147                    ; line_number = 53
1148                    ; global delay_counter byte
1149 00000043 = delay_counter equ shared___globals+35
1150                    ; line_number = 54
1151                    ; global channel byte
1152 00000044 = channel equ shared___globals+36
1153                    ; line_number = 55
1154                    ; global glitch byte
1155 00000045 = glitch equ shared___globals+37
1156                    ; line_number = 56
1157                    ; global id_index byte
1158 00000046 = id_index equ shared___globals+38
1159            
1160                    ; line_number = 58
1161                    ; bind interrupt_enable = interrupt_bits@1
1162 00000030 = interrupt_enable___byte equ shared___globals+16
1163 00000001 = interrupt_enable___bit equ 1
1164                    ; line_number = 59
1165                    ; bind interrupt_pending = interrupt_bits@0
1166 00000030 = interrupt_pending___byte equ shared___globals+16
1167 00000000 = interrupt_pending___bit equ 0
1168            
1169                    ; line_number = 61
1170                    ; procedure main
1171   0000 :   main:
1172                    ; Need to calibrate the oscillator
1173 0000 23ff          call    1023
1174 0001 1683          bsf     __rp0___byte, __rp0___bit
1175 0002 0090          movwf   _osccal
1176                    ; Initialize some registers
1177 0003 3001          movlw   1
1178 0004 1283          bcf     __rp0___byte, __rp0___bit
1179 0005 009f          movwf   _adcon0
1180 0006 3007          movlw   7
1181 0007 1683          bsf     __rp0___byte, __rp0___bit
1182 0008 0085          movwf   _trisa
1183 0009 3003          movlw   3
1184 000a 0087          movwf   _trisc
1185                    ; arguments_none
1186                    ; line_number = 63
1187                    ;  returns_nothing
1188            
1189                    ; line_number = 65
1190                    ;  local bit byte
1191 00000047 = main__bit equ shared___globals+39
1192                    ; line_number = 66
1193                    ;  local temporary byte
1194 00000048 = main__temporary equ shared___globals+40
1195            
1196                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X1 code:XX=>XX)
1197                    ; line_number = 68
1198                    ;  call debug_port_reset()
1199 000b 1283          bcf     __rp0___byte, __rp0___bit
1200 000c 2312          call    debug_port_reset
1201                    ; line_number = 69
1202                    ;  call reset()
1203 000d 2236          call    reset
1204            
1205                    ; # Set the direction:
1206                    ; line_number = 72
1207                    ;  loop_forever start
1208   000e :   main__1:
1209                    ; # Wait for a command:
1210                    ; line_number = 74
1211                    ;  command := byte_get()
1212 000e 22bc          call    byte_get
1213 000f 00ae          movwf   command
1214            
1215                    ; # Dispatch on command:
1216                    ; line_number = 77
1217                    ;  switch command >> 6 start
1218 0010 3000          movlw   main__84>>8
1219 0011 008a          movwf   __pclath
1220 00000055 = main__85 equ shared___globals+53
1221 0012 0e2e          swapf   command,w
1222 0013 00d5          movwf   main__85
1223 0014 0cd5          rrf     main__85,f
1224 0015 0c55          rrf     main__85,w
1225 0016 3903          andlw   3
1226 0017 3e19          addlw   main__84
1227 0018 0082          movwf   __pcl
1228                    ; page_group 4
1229   0019 :   main__84:
1230 0019 281d          goto    main__80
1231 001a 289f          goto    main__81
1232 001b 28b8          goto    main__82
1233 001c 28ce          goto    main__83
1234                    ; line_number = 78
1235                    ; case 0
1236   001d :   main__80:
1237                    ; # 00xx xxxx:
1238                    ; line_number = 80
1239                    ;  switch command >> 3 start
1240 001d 3000          movlw   main__33>>8
1241 001e 008a          movwf   __pclath
1242 00000055 = main__34 equ shared___globals+53
1243 001f 0c2e          rrf     command,w
1244 0020 00d5          movwf   main__34
1245 0021 0cd5          rrf     main__34,f
1246 0022 0c55          rrf     main__34,w
1247 0023 391f          andlw   31
1248 0024 3e26          addlw   main__33
1249 0025 0082          movwf   __pcl
1250                    ; page_group 8
1251   0026 :   main__33:
1252 0026 282e          goto    main__28
1253 0027 284d          goto    main__29
1254 0028 286b          goto    main__30
1255 0029 286b          goto    main__30
1256 002a 289a          goto    main__31
1257 002b 289a          goto    main__31
1258 002c 289e          goto    main__32
1259 002d 289e          goto    main__32
1260                    ; line_number = 81
1261                    ; case 0
1262   002e :   main__28:
1263                    ; # 0000 0xxx:
1264                    ; line_number = 83
1265                    ;  switch command & 7 start
1266 002e 3000          movlw   main__7>>8
1267 002f 008a          movwf   __pclath
1268 0030 3007          movlw   7
1269 0031 052e          andwf   command,w
1270 0032 3e34          addlw   main__7
1271 0033 0082          movwf   __pcl
1272                    ; page_group 8
1273   0034 :   main__7:
1274 0034 283c          goto    main__2
1275 0035 283c          goto    main__2
1276 0036 283c          goto    main__2
1277 0037 283c          goto    main__2
1278 0038 2842          goto    main__3
1279 0039 2845          goto    main__4
1280 003a 2848          goto    main__5
1281 003b 284b          goto    main__6
1282                    ; line_number = 84
1283                    ; case 0, 1, 2, 3
1284   003c :   main__2:
1285                    ; # 0000 00bb (Read Pin):
1286                    ; line_number = 86
1287                    ;  call byte_put(analogs[command])
1288 003c 082e          movf    command,w
1289 003d 3e3f          addlw   analogs
1290 003e 0084          movwf   __fsr
1291 003f 0800          movf    __indf,w
1292 0040 22e5          call    byte_put
1293 0041 284c          goto    main__8
1294                    ; line_number = 87
1295                    ; case 4
1296   0042 :   main__3:
1297                    ; # 0000 01000 (Read Binary Values):
1298                    ; line_number = 89
1299                    ;  call byte_put(inputs)
1300 0042 082c          movf    inputs,w
1301 0043 22e5          call    byte_put
1302 0044 284c          goto    main__8
1303                    ; line_number = 90
1304                    ; case 5
1305   0045 :   main__4:
1306                    ; # 0000 0101 (Read Raw Binary):
1307                    ; line_number = 92
1308                    ;  call byte_put(raw_inputs)
1309 0045 082f          movf    raw_inputs,w
1310 0046 22e5          call    byte_put
1311 0047 284c          goto    main__8
1312                    ; line_number = 93
1313                    ; case 6
1314   0048 :   main__5:
1315                    ; # 0000 0110 (Read Threshold Enables):
1316                    ; line_number = 95
1317                    ;  call byte_put(threshold_enables)
1318 0048 0835          movf    threshold_enables,w
1319 0049 22e5          call    byte_put
1320 004a 284c          goto    main__8
1321                    ; line_number = 96
1322                    ; case 7
1323   004b :   main__6:
1324                    ; # 0000 0111 (Reset):
1325                    ; line_number = 98
1326                    ;  call reset()
1327 004b 2236          call    reset
1328   004c :   main__8:
1329                    ; switch end:(data:X0=>X0 code:XX=>XX)
1330                    ; line_number = 83
1331                    ;  switch command & 7 done
1332 004c 289e          goto    main__35
1333                    ; line_number = 99
1334                    ; case 1
1335   004d :   main__29:
1336                    ; # 0000 1xxx:
1337                    ; line_number = 101
1338                    ;  switch command & 7 start
1339 004d 3000          movlw   main__15>>8
1340 004e 008a          movwf   __pclath
1341 004f 3007          movlw   7
1342 0050 052e          andwf   command,w
1343 0051 3e53          addlw   main__15
1344 0052 0082          movwf   __pcl
1345                    ; page_group 8
1346   0053 :   main__15:
1347 0053 285b          goto    main__9
1348 0054 285e          goto    main__10
1349 0055 2861          goto    main__11
1350 0056 2864          goto    main__12
1351 0057 2867          goto    main__13
1352 0058 286a          goto    main__14
1353 0059 286a          goto    main__14
1354 005a 286a          goto    main__14
1355                    ; line_number = 102
1356                    ; case 0
1357   005b :   main__9:
1358                    ; # 0000 1000 (Read Complement Mask):
1359                    ; line_number = 104
1360                    ;  call byte_put(complement)
1361 005b 082d          movf    complement,w
1362 005c 22e5          call    byte_put
1363 005d 286a          goto    main__16
1364                    ; line_number = 105
1365                    ; case 1
1366   005e :   main__10:
1367                    ; # 0000 1001 (Read High Mask):
1368                    ; line_number = 107
1369                    ;  call byte_put(high)
1370 005e 0832          movf    high,w
1371 005f 22e5          call    byte_put
1372 0060 286a          goto    main__16
1373                    ; line_number = 108
1374                    ; case 2
1375   0061 :   main__11:
1376                    ; # 0000 1010 (Read Low Mask):
1377                    ; line_number = 110
1378                    ;  call byte_put(low)
1379 0061 0833          movf    low,w
1380 0062 22e5          call    byte_put
1381 0063 286a          goto    main__16
1382                    ; line_number = 111
1383                    ; case 3
1384   0064 :   main__12:
1385                    ; # 0000 1011 (Read Raising Mask):
1386                    ; line_number = 113
1387                    ;  call byte_put(raising)
1388 0064 0834          movf    raising,w
1389 0065 22e5          call    byte_put
1390 0066 286a          goto    main__16
1391                    ; line_number = 114
1392                    ; case 4
1393   0067 :   main__13:
1394                    ; # 0000 1100 (Read Falling Mask):
1395                    ; line_number = 116
1396                    ;  call byte_put(falling)
1397 0067 0831          movf    falling,w
1398 0068 22e5          call    byte_put
1399 0069 286a          goto    main__16
1400                    ; line_number = 117
1401                    ; case 5, 6, 7
1402   006a :   main__14:
1403                    ; # 0000 111x or 0000 1101
1404                    ; line_number = 119
1405                    ;  do_nothing
1406   006a :   main__16:
1407                    ; switch end:(data:X0=>X? code:XX=>XX)
1408                    ; line_number = 101
1409                    ;  switch command & 7 done
1410 006a 289e          goto    main__35
1411                    ; line_number = 120
1412                    ; case 2, 3
1413   006b :   main__30:
1414                    ; # 0001 ccbb:
1415                    ; line_number = 122
1416                    ;  bit := command & 3
1417 006b 3003          movlw   3
1418 006c 052e          andwf   command,w
1419 006d 00c7          movwf   main__bit
1420                    ; line_number = 123
1421                    ;  switch (command >> 2) & 3 start
1422 006e 3000          movlw   main__25>>8
1423 006f 008a          movwf   __pclath
1424 00000055 = main__26 equ shared___globals+53
1425 0070 0c2e          rrf     command,w
1426 0071 00d5          movwf   main__26
1427 0072 0c55          rrf     main__26,w
1428 0073 3903          andlw   3
1429 0074 3e76          addlw   main__25
1430 0075 0082          movwf   __pcl
1431                    ; page_group 4
1432   0076 :   main__25:
1433 0076 287a          goto    main__21
1434 0077 2880          goto    main__22
1435 0078 2886          goto    main__23
1436 0079 2890          goto    main__24
1437                    ; line_number = 124
1438                    ; case 0
1439   007a :   main__21:
1440                    ; # 0001 00bb (Read High Threshold):
1441                    ; line_number = 126
1442                    ;  call byte_put(thresholds_high[bit])
1443 007a 0847          movf    main__bit,w
1444 007b 3e3b          addlw   thresholds_high
1445 007c 0084          movwf   __fsr
1446 007d 0800          movf    __indf,w
1447 007e 22e5          call    byte_put
1448 007f 2899          goto    main__27
1449                    ; line_number = 127
1450                    ; case 1
1451   0080 :   main__22:
1452                    ; # 0001 01bb (Read Low Threshold):
1453                    ; line_number = 129
1454                    ;  call byte_put(thresholds_low[bit])
1455 0080 0847          movf    main__bit,w
1456 0081 3e37          addlw   thresholds_low
1457 0082 0084          movwf   __fsr
1458 0083 0800          movf    __indf,w
1459 0084 22e5          call    byte_put
1460 0085 2899          goto    main__27
1461                    ; line_number = 130
1462                    ; case 2
1463   0086 :   main__23:
1464                    ; # 0001 10bb (Set High Threshold):
1465                    ; line_number = 132
1466                    ;  thresholds_high[bit] := byte_get()
1467                    ; index_temporary_first
1468 00000055 = main__17 equ shared___globals+53
1469 00000056 = main__18 equ shared___globals+54
1470 0086 0847          movf    main__bit,w
1471 0087 00d5          movwf   main__17
1472 0088 22bc          call    byte_get
1473 0089 00d6          movwf   main__18
1474 008a 0855          movf    main__17,w
1475 008b 3e3b          addlw   thresholds_high
1476 008c 0084          movwf   __fsr
1477 008d 0856          movf    main__18,w
1478 008e 0080          movwf   __indf
1479 008f 2899          goto    main__27
1480                    ; line_number = 133
1481                    ; case 3
1482   0090 :   main__24:
1483                    ; # 0001 11bb (Set Low Threshold):
1484                    ; line_number = 135
1485                    ;  thresholds_low[bit] := byte_get()
1486                    ; index_temporary_first
1487 00000055 = main__19 equ shared___globals+53
1488 00000056 = main__20 equ shared___globals+54
1489 0090 0847          movf    main__bit,w
1490 0091 00d5          movwf   main__19
1491 0092 22bc          call    byte_get
1492 0093 00d6          movwf   main__20
1493 0094 0855          movf    main__19,w
1494 0095 3e37          addlw   thresholds_low
1495 0096 0084          movwf   __fsr
1496 0097 0856          movf    main__20,w
1497 0098 0080          movwf   __indf
1498   0099 :   main__27:
1499                    ; switch end:(data:X0=>X0 code:XX=>XX)
1500                    ; line_number = 123
1501                    ;  switch (command >> 2) & 3 done
1502 0099 289e          goto    main__35
1503                    ; line_number = 136
1504                    ; case 4, 5
1505   009a :   main__31:
1506                    ; # 0010 cccc (Set Complement Mask):
1507                    ; line_number = 138
1508                    ;  complement := command & io_mask
1509 009a 300f          movlw   15
1510 009b 052e          andwf   command,w
1511 009c 00ad          movwf   complement
1512 009d 289e          goto    main__35
1513                    ; line_number = 139
1514                    ; case 6, 7
1515   009e :   main__32:
1516                    ; # 0011 xxxx:
1517                    ; line_number = 141
1518                    ;  do_nothing
1519   009e :   main__35:
1520                    ; switch end:(data:X0=>X? code:XX=>XX)
1521                    ; line_number = 80
1522                    ;  switch command >> 3 done
1523 009e 294b          goto    main__86
1524                    ; line_number = 142
1525                    ; case 1
1526   009f :   main__81:
1527                    ; # 01cc mmmm:
1528                    ; line_number = 144
1529                    ;  temporary := command & io_mask
1530 009f 300f          movlw   15
1531 00a0 052e          andwf   command,w
1532 00a1 00c8          movwf   main__temporary
1533                    ; line_number = 145
1534                    ;  switch (command >> 4) & 3 start
1535 00a2 3000          movlw   main__40>>8
1536 00a3 008a          movwf   __pclath
1537 00000055 = main__41 equ shared___globals+53
1538 00a4 0e2e          swapf   command,w
1539 00a5 3903          andlw   3
1540 00a6 3ea8          addlw   main__40
1541 00a7 0082          movwf   __pcl
1542                    ; page_group 4
1543   00a8 :   main__40:
1544 00a8 28ac          goto    main__36
1545 00a9 28af          goto    main__37
1546 00aa 28b2          goto    main__38
1547 00ab 28b5          goto    main__39
1548                    ; line_number = 146
1549                    ; case 0
1550   00ac :   main__36:
1551                    ; # 0100 hhhh (Set High Mask):
1552                    ; line_number = 148
1553                    ;  high := temporary
1554 00ac 0848          movf    main__temporary,w
1555 00ad 00b2          movwf   high
1556 00ae 28b7          goto    main__42
1557                    ; line_number = 149
1558                    ; case 1
1559   00af :   main__37:
1560                    ; # 0101 llll (Set Low Mask):
1561                    ; line_number = 151
1562                    ;  low := temporary
1563 00af 0848          movf    main__temporary,w
1564 00b0 00b3          movwf   low
1565 00b1 28b7          goto    main__42
1566                    ; line_number = 152
1567                    ; case 2
1568   00b2 :   main__38:
1569                    ; # 0110 rrrr (Set Raising Mask):
1570                    ; line_number = 154
1571                    ;  raising := temporary
1572 00b2 0848          movf    main__temporary,w
1573 00b3 00b4          movwf   raising
1574 00b4 28b7          goto    main__42
1575                    ; line_number = 155
1576                    ; case 3
1577   00b5 :   main__39:
1578                    ; # 0111 ffff (Set Falling Mask):
1579                    ; line_number = 157
1580                    ;  falling := temporary
1581 00b5 0848          movf    main__temporary,w
1582 00b6 00b1          movwf   falling
1583   00b7 :   main__42:
1584                    ; switch end:(data:X0=>X0 code:XX=>XX)
1585                    ; line_number = 145
1586                    ;  switch (command >> 4) & 3 done
1587 00b7 294b          goto    main__86
1588                    ; line_number = 158
1589                    ; case 2
1590   00b8 :   main__82:
1591                    ; # 10xx xxxx:
1592                    ; line_number = 160
1593                    ;  switch (command >> 3) & 7 start
1594 00b8 3000          movlw   main__45>>8
1595 00b9 008a          movwf   __pclath
1596 00000055 = main__46 equ shared___globals+53
1597 00ba 0c2e          rrf     command,w
1598 00bb 00d5          movwf   main__46
1599 00bc 0cd5          rrf     main__46,f
1600 00bd 0c55          rrf     main__46,w
1601 00be 3907          andlw   7
1602 00bf 3ec1          addlw   main__45
1603 00c0 0082          movwf   __pcl
1604                    ; page_group 8
1605   00c1 :   main__45:
1606 00c1 28c9          goto    main__43
1607 00c2 28c9          goto    main__43
1608 00c3 28cd          goto    main__44
1609 00c4 28cd          goto    main__44
1610 00c5 28cd          goto    main__44
1611 00c6 28cd          goto    main__44
1612 00c7 28cd          goto    main__44
1613 00c8 28cd          goto    main__44
1614                    ; line_number = 161
1615                    ; case 0, 1
1616   00c9 :   main__43:
1617                    ; # 1000 eeee (Set Threshold Enables):
1618                    ; line_number = 163
1619                    ;  threshold_enables := command & 0xf
1620 00c9 300f          movlw   15
1621 00ca 052e          andwf   command,w
1622 00cb 00b5          movwf   threshold_enables
1623 00cc 28cd          goto    main__47
1624                    ; line_number = 164
1625                    ; case 2, 3, 4, 5, 6, 7
1626   00cd :   main__44:
1627                    ; # 1001 xxxx or 101x xxxx:
1628                    ; line_number = 166
1629                    ;  do_nothing
1630   00cd :   main__47:
1631                    ; switch end:(data:X0=>X? code:XX=>XX)
1632                    ; line_number = 160
1633                    ;  switch (command >> 3) & 7 done
1634 00cd 294b          goto    main__86
1635                    ; line_number = 167
1636                    ; case 3
1637   00ce :   main__83:
1638                    ; # Command = 11xx xxxx:
1639                    ; line_number = 169
1640                    ;  switch (command >> 3) & 7 start
1641 00ce 3000          movlw   main__77>>8
1642 00cf 008a          movwf   __pclath
1643 00000055 = main__78 equ shared___globals+53
1644 00d0 0c2e          rrf     command,w
1645 00d1 00d5          movwf   main__78
1646 00d2 0cd5          rrf     main__78,f
1647 00d3 0c55          rrf     main__78,w
1648 00d4 3907          andlw   7
1649 00d5 3ed7          addlw   main__77
1650 00d6 0082          movwf   __pcl
1651                    ; page_group 8
1652   00d7 :   main__77:
1653 00d7 28df          goto    main__73
1654 00d8 28df          goto    main__73
1655 00d9 28df          goto    main__73
1656 00da 28df          goto    main__73
1657 00db 28df          goto    main__73
1658 00dc 28e0          goto    main__74
1659 00dd 28f4          goto    main__75
1660 00de 2917          goto    main__76
1661                    ; line_number = 170
1662                    ; case 0, 1, 2, 3, 4
1663   00df :   main__73:
1664                    ; # 1100 xxxx or 1110 0xxx:
1665                    ; line_number = 172
1666                    ;  do_nothing
1667 00df 294b          goto    main__79
1668                    ; line_number = 173
1669                    ; case 5
1670   00e0 :   main__74:
1671                    ; # Read Interrupt Bits (Command = 1110 1111):
1672                    ; line_number = 175
1673                    ;  switch command & 7 start
1674 00e0 3000          movlw   main__51>>8
1675 00e1 008a          movwf   __pclath
1676 00e2 3007          movlw   7
1677 00e3 052e          andwf   command,w
1678 00e4 3ee6          addlw   main__51
1679 00e5 0082          movwf   __pcl
1680                    ; page_group 8
1681   00e6 :   main__51:
1682 00e6 28ee          goto    main__48
1683 00e7 28ee          goto    main__48
1684 00e8 28ee          goto    main__48
1685 00e9 28ee          goto    main__48
1686 00ea 28ee          goto    main__48
1687 00eb 28ee          goto    main__48
1688 00ec 28ef          goto    main__49
1689 00ed 28f1          goto    main__50
1690                    ; line_number = 176
1691                    ; case 0, 1, 2, 3, 4, 5
1692   00ee :   main__48:
1693                    ; # 1110 10xx or 1110 1110x:
1694 00ee 28f3          goto    main__52
1695                    ; line_number = 178
1696                    ; case 6
1697   00ef :   main__49:
1698                    ; # 1110 1110 (Reset):
1699                    ; line_number = 180
1700                    ;  call reset()
1701 00ef 2236          call    reset
1702 00f0 28f3          goto    main__52
1703                    ; line_number = 181
1704                    ; case 7
1705   00f1 :   main__50:
1706                    ; # 1110 1111 (Return Interrupt Bits):
1707                    ; line_number = 183
1708                    ;  call byte_put(interrupt_bits)
1709 00f1 0830          movf    interrupt_bits,w
1710 00f2 22e5          call    byte_put
1711   00f3 :   main__52:
1712                    ; switch end:(data:X0=>X? code:XX=>XX)
1713                    ; line_number = 175
1714                    ;  switch command & 7 done
1715 00f3 294b          goto    main__79
1716                    ; line_number = 184
1717                    ; case 6
1718   00f4 :   main__75:
1719                    ; # Shared Interrupt commands (Command = 1111 0xxx):
1720                    ; line_number = 186
1721                    ;  switch command & 7 start
1722 00f4 3001          movlw   main__60>>8
1723 00f5 008a          movwf   __pclath
1724 00f6 3007          movlw   7
1725 00f7 052e          andwf   command,w
1726 00f8 3e00          addlw   main__60
1727 00f9 0082          movwf   __pcl
1728                    ; page_group 8
1729                    ; Add 6 NOP's until start of new page 
1730 00fa 0000          nop     
1731 00fb 0000          nop     
1732 00fc 0000          nop     
1733 00fd 0000          nop     
1734 00fe 0000          nop     
1735 00ff 0000          nop     
1736   0100 :   main__60:
1737 0100 2908          goto    main__57
1738 0101 2908          goto    main__57
1739 0102 2908          goto    main__57
1740 0103 2908          goto    main__57
1741 0104 290f          goto    main__58
1742 0105 290f          goto    main__58
1743 0106 2913          goto    main__59
1744 0107 2913          goto    main__59
1745                    ; line_number = 187
1746                    ; case 0, 1, 2, 3
1747   0108 :   main__57:
1748                    ; # 1111 10ep (Set interrupt bits):
1749                    ; line_number = 189
1750                    ;  interrupt_enable := command@1
1751 0108 10b0          bcf     interrupt_enable___byte, interrupt_enable___bit
1752 0000002e = main__select__53___byte equ command
1753 00000001 = main__select__53___bit equ 1
1754                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1755                    ; CASE: True.size=1 False.size=0
1756 0109 18ae          btfsc   main__select__53___byte, main__select__53___bit
1757 010a 14b0          bsf     interrupt_enable___byte, interrupt_enable___bit
1758                    ; Recombine size1 = 0 || size2 = 0
1759                    ; code.delay=4294967295 back_code.delay=4294967295
1760                    ; <=bit_code_emit@symbol; sym=main__select__53 (data:X0=>X0 code:XX=>XX)
1761                    ; line_number = 190
1762                    ;  interrupt_pending := command@0
1763 010b 1030          bcf     interrupt_pending___byte, interrupt_pending___bit
1764 0000002e = main__select__54___byte equ command
1765 00000000 = main__select__54___bit equ 0
1766                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1767                    ; CASE: True.size=1 False.size=0
1768 010c 182e          btfsc   main__select__54___byte, main__select__54___bit
1769 010d 1430          bsf     interrupt_pending___byte, interrupt_pending___bit
1770                    ; Recombine size1 = 0 || size2 = 0
1771                    ; code.delay=4294967295 back_code.delay=4294967295
1772                    ; <=bit_code_emit@symbol; sym=main__select__54 (data:X0=>X0 code:XX=>XX)
1773 010e 2916          goto    main__61
1774                    ; line_number = 191
1775                    ; case 4, 5
1776   010f :   main__58:
1777                    ; # 1111 110p (Set Interrupt Pending):
1778                    ; line_number = 193
1779                    ;  interrupt_pending := command@0
1780 010f 1030          bcf     interrupt_pending___byte, interrupt_pending___bit
1781 0000002e = main__select__55___byte equ command
1782 00000000 = main__select__55___bit equ 0
1783                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1784                    ; CASE: True.size=1 False.size=0
1785 0110 182e          btfsc   main__select__55___byte, main__select__55___bit
1786 0111 1430          bsf     interrupt_pending___byte, interrupt_pending___bit
1787                    ; Recombine size1 = 0 || size2 = 0
1788                    ; code.delay=4294967295 back_code.delay=4294967295
1789                    ; <=bit_code_emit@symbol; sym=main__select__55 (data:X0=>X0 code:XX=>XX)
1790 0112 2916          goto    main__61
1791                    ; line_number = 194
1792                    ; case 6, 7
1793   0113 :   main__59:
1794                    ; # 1110 111e (Set Interrupt Enable):
1795                    ; line_number = 196
1796                    ;  interrupt_enable := command@0
1797 0113 10b0          bcf     interrupt_enable___byte, interrupt_enable___bit
1798 0000002e = main__select__56___byte equ command
1799 00000000 = main__select__56___bit equ 0
1800                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1801                    ; CASE: True.size=1 False.size=0
1802 0114 182e          btfsc   main__select__56___byte, main__select__56___bit
1803 0115 14b0          bsf     interrupt_enable___byte, interrupt_enable___bit
1804                    ; Recombine size1 = 0 || size2 = 0
1805                    ; code.delay=4294967295 back_code.delay=4294967295
1806                    ; <=bit_code_emit@symbol; sym=main__select__56 (data:X0=>X0 code:XX=>XX)
1807   0116 :   main__61:
1808                    ; switch end:(data:X0=>X0 code:XX=>XX)
1809                    ; line_number = 186
1810                    ;  switch command & 7 done
1811 0116 294b          goto    main__79
1812                    ; line_number = 197
1813                    ; case 7
1814   0117 :   main__76:
1815                    ; # Shared commands (Command = 1111 1xxx):
1816                    ; line_number = 199
1817                    ;  switch command & 7 start
1818 0117 3001          movlw   main__71>>8
1819 0118 008a          movwf   __pclath
1820 0119 3007          movlw   7
1821 011a 052e          andwf   command,w
1822 011b 3e1d          addlw   main__71
1823 011c 0082          movwf   __pcl
1824                    ; page_group 8
1825   011d :   main__71:
1826 011d 2925          goto    main__63
1827 011e 2929          goto    main__64
1828 011f 292d          goto    main__65
1829 0120 2932          goto    main__66
1830 0121 2935          goto    main__67
1831 0122 2940          goto    main__68
1832 0123 2943          goto    main__69
1833 0124 2948          goto    main__70
1834                    ; line_number = 200
1835                    ; case 0
1836   0125 :   main__63:
1837                    ; This case body wants this bit set
1838 0125 1683          bsf     __rp0___byte, __rp0___bit
1839                    ; # 1111 1000 (Clock Decrement):
1840                    ; line_number = 202
1841                    ;  _osccal := _osccal - _osccal_lsb
1842 0126 30fc          movlw   252
1843 0127 0790          addwf   _osccal,f
1844 0128 294b          goto    main__72
1845                    ; line_number = 203
1846                    ; case 1
1847   0129 :   main__64:
1848                    ; This case body wants this bit set
1849 0129 1683          bsf     __rp0___byte, __rp0___bit
1850                    ; # 1111 1001 (Clock Increment):
1851                    ; line_number = 205
1852                    ;  _osccal := _osccal + _osccal_lsb
1853 012a 3004          movlw   4
1854 012b 0790          addwf   _osccal,f
1855 012c 294b          goto    main__72
1856                    ; line_number = 206
1857                    ; case 2
1858   012d :   main__65:
1859                    ; This case body wants this bit set
1860 012d 1683          bsf     __rp0___byte, __rp0___bit
1861                    ; # 1111 1010 (Clock Read):
1862                    ; line_number = 208
1863                    ;  call byte_put(_osccal)
1864 012e 0810          movf    _osccal,w
1865 012f 1283          bcf     __rp0___byte, __rp0___bit
1866 0130 22e5          call    byte_put
1867 0131 294b          goto    main__72
1868                    ; line_number = 209
1869                    ; case 3
1870   0132 :   main__66:
1871                    ; # 1111 1011 (Clock Pulse):
1872                    ; line_number = 211
1873                    ;  call byte_put(0)
1874 0132 3000          movlw   0
1875 0133 22e5          call    byte_put
1876 0134 294b          goto    main__72
1877                    ; line_number = 212
1878                    ; case 4
1879   0135 :   main__67:
1880                    ; # 1111 1100 (ID Next):
1881                    ; line_number = 214
1882                    ;  call byte_put(id[id_index])
1883 0135 0846          movf    id_index,w
1884 0136 2272          call    id
1885 0137 22e5          call    byte_put
1886                    ; line_number = 215
1887                    ;  id_index := id_index + 1
1888 0138 0ac6          incf    id_index,f
1889                    ; line_number = 216
1890                    ;  if id_index >= id.size start
1891 0139 302f          movlw   47
1892 013a 0246          subwf   id_index,w
1893                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1894                    ; CASE: true_code.size = 0 && false_code.size > 1
1895                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
1896 013b 1c03          btfss   __c___byte, __c___bit
1897 013c 293f          goto    main__62
1898                    ; line_number = 217
1899                    ; id_index := 0
1900 013d 3000          movlw   0
1901 013e 00c6          movwf   id_index
1902                    ; Recombine size1 = 0 || size2 = 0
1903   013f :   main__62:
1904                    ; code.delay=4294967295 back_code.delay=4294967295
1905                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
1906                    ; line_number = 216
1907                    ;  if id_index >= id.size done
1908 013f 294b          goto    main__72
1909                    ; line_number = 218
1910                    ; case 5
1911   0140 :   main__68:
1912                    ; # 1111 1101 (ID Reset):
1913                    ; line_number = 220
1914                    ;  id_index := 0
1915 0140 3000          movlw   0
1916 0141 00c6          movwf   id_index
1917 0142 294b          goto    main__72
1918                    ; line_number = 221
1919                    ; case 6
1920   0143 :   main__69:
1921                    ; # 1111 1110 (Glitch Read):
1922                    ; line_number = 223
1923                    ;  call byte_put(glitch)
1924 0143 0845          movf    glitch,w
1925 0144 22e5          call    byte_put
1926                    ; line_number = 224
1927                    ;  glitch := 0
1928 0145 3000          movlw   0
1929 0146 00c5          movwf   glitch
1930 0147 294b          goto    main__72
1931                    ; line_number = 225
1932                    ; case 7
1933   0148 :   main__70:
1934                    ; # 1111 1111 (Glitch):
1935                    ; line_number = 227
1936                    ;  if glitch != 0xff start
1937                    ; Left minus Right
1938 0148 0a45          incf    glitch,w
1939                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1940                    ; CASE: true_code.size=0 && false_code.size=1
1941 0149 1d03          btfss   __z___byte, __z___bit
1942                    ; line_number = 228
1943                    ; glitch := glitch + 1
1944 014a 0ac5          incf    glitch,f
1945            
1946            
1947                    ; Recombine size1 = 0 || size2 = 0
1948                    ; code.delay=4294967295 back_code.delay=4294967295
1949                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1950                    ; line_number = 227
1951                    ;  if glitch != 0xff done
1952   014b :   main__72:
1953                    ; switch end:(data:X0=>X? code:XX=>XX)
1954                    ; line_number = 199
1955                    ;  switch command & 7 done
1956   014b :   main__79:
1957                    ; switch end:(data:X0=>X? code:XX=>XX)
1958                    ; line_number = 169
1959                    ;  switch (command >> 3) & 7 done
1960   014b :   main__86:
1961                    ; switch end:(data:X0=>X? code:XX=>XX)
1962                    ; line_number = 77
1963                    ;  switch command >> 6 done
1964                    ; line_number = 72
1965                    ;  loop_forever wrap-up
1966                    ; Need to adjust code banks to match front of loop
1967 014b 1283          bcf     __rp0___byte, __rp0___bit
1968 014c 280e          goto    main__1
1969                    ; line_number = 72
1970                    ;  loop_forever done
1971                    ; delay after procedure statements=non-uniform
1972            
1973            
1974            
1975            
1976                    ; line_number = 231
1977                    ; procedure delay
1978   014d :   delay:
1979                    ; arguments_none
1980                    ; line_number = 233
1981                    ;  returns_nothing
1982                    ; line_number = 234
1983                    ;  exact_delay delay_instructions
1984            
1985                    ; line_number = 236
1986                    ;  local chan byte
1987 00000049 = delay__chan equ shared___globals+41
1988                    ; line_number = 237
1989                    ;  local changed byte
1990 0000004a = delay__changed equ shared___globals+42
1991                    ; line_number = 238
1992                    ;  local current byte
1993 0000004b = delay__current equ shared___globals+43
1994                    ; line_number = 239
1995                    ;  local hexify bit
1996 0000005f = delay__hexify___byte equ shared___globals+63
1997 00000002 = delay__hexify___bit equ 2
1998                    ; line_number = 240
1999                    ;  local index byte
2000 0000004c = delay__index equ shared___globals+44
2001                    ; line_number = 241
2002                    ;  local mask byte
2003 0000004d = delay__mask equ shared___globals+45
2004                    ; line_number = 242
2005                    ;  local not_current byte
2006 0000004e = delay__not_current equ shared___globals+46
2007                    ; line_number = 243
2008                    ;  local previous byte
2009 0000004f = delay__previous equ shared___globals+47
2010                    ; line_number = 244
2011                    ;  local temp byte
2012 00000050 = delay__temp equ shared___globals+48
2013                    ; line_number = 245
2014                    ;  local thresholds_index byte
2015 00000051 = delay__thresholds_index equ shared___globals+49
2016                    ; line_number = 246
2017                    ;  local high byte
2018 00000052 = delay__high equ shared___globals+50
2019                    ; line_number = 247
2020                    ;  local low byte
2021 00000053 = delay__low equ shared___globals+51
2022            
2023                    ; before procedure statements delay=0, bit states=(data:X0=>X0 code:XX=>XX)
2024                    ; line_number = 249
2025                    ;  watch_dog_reset done
2026                    ; Delay at watch_dog_reset is 0
2027 014d 0064          clrwdt  
2028            
2029                    ; line_number = 251
2030                    ;  call debug_port_service()
2031                    ; Delay at call is 1
2032 014e 2319          call    debug_port_service
2033            
2034                    ; line_number = 253
2035                    ;  switch delay_counter start
2036 014f 3001          movlw   delay__49>>8
2037 0150 008a          movwf   __pclath
2038 0151 0843          movf    delay_counter,w
2039 0152 3e54          addlw   delay__49
2040 0153 0082          movwf   __pcl
2041                    ; page_group 4
2042   0154 :   delay__49:
2043 0154 2958          goto    delay__45
2044 0155 297c          goto    delay__46
2045 0156 29e9          goto    delay__47
2046 0157 2a2e          goto    delay__48
2047                    ; case_data[0] delay=89{0 }
2048                    ; case_data[1] delay=93{1 }
2049                    ; case_data[2] delay=58{2 }
2050                    ; case_data[3] delay=0{3 }
2051                    ; Maximum Case Delay = 93
2052                    ; line_number = 254
2053                    ; case 0
2054   0158 :   delay__45:
2055                    ; # Perform A/D:
2056                    ; line_number = 256
2057                    ;  chan := chans[channel]
2058                    ; Delay at assignment is 0
2059 0158 0844          movf    channel,w
2060 0159 22a7          call    chans
2061 015a 00c9          movwf   delay__chan
2062            
2063                    ; # Acquiring the signal takes approximately 20uS.
2064                    ; # We'll pad that out a little to 30uS to be safe:
2065                    ; line_number = 260
2066                    ;  _adcon0 := (chan << 2) | 1
2067                    ; Delay at assignment is 13
2068 00000057 = delay__1 equ shared___globals+55
2069 015b 0d49          rlf     delay__chan,w
2070 015c 00d7          movwf   delay__1
2071 015d 0d57          rlf     delay__1,w
2072 015e 39fc          andlw   252
2073 015f 3801          iorlw   1
2074 0160 009f          movwf   _adcon0
2075                    ; Delay at delay is 19
2076                    ; line_number = 261
2077                    ;  delay 30 start
2078                    ; Delay expression evaluates to 30
2079                    ; line_number = 262
2080                    ; do_nothing
2081            
2082                    ; Delay 30 cycles
2083                    ; Delay loop takes 7 * 4 = 28 cycles
2084 0161 3007          movlw   7
2085   0162 :   delay__2:
2086 0162 3eff          addlw   255
2087 0163 1d03          btfss   __z___byte, __z___bit
2088 0164 2962          goto    delay__2
2089 0165 2966          goto    delay__3
2090   0166 :   delay__3:
2091                    ; line_number = 261
2092                    ;  delay 30 done
2093                    ; # Getting the value takes 11 & Tad, where Tad = 2uS = 22uS.
2094                    ; # We'll add 5uS for a little pad:
2095                    ; line_number = 266
2096                    ;  _go := 1
2097                    ; Delay at assignment is 49
2098 0166 149f          bsf     _go___byte, _go___bit
2099                    ; Delay at delay is 50
2100                    ; line_number = 267
2101                    ;  delay 28 start
2102                    ; Delay expression evaluates to 28
2103                    ; line_number = 268
2104                    ; do_nothing
2105            
2106                    ; Delay 28 cycles
2107                    ; Delay loop takes 7 * 4 = 28 cycles
2108 0167 3007          movlw   7
2109   0168 :   delay__4:
2110 0168 3eff          addlw   255
2111 0169 1d03          btfss   __z___byte, __z___bit
2112 016a 2968          goto    delay__4
2113                    ; line_number = 267
2114                    ;  delay 28 done
2115                    ; # A/D result is ready:
2116                    ; line_number = 271
2117                    ;  temp := 0xff - _adresh
2118                    ; Delay at assignment is 78
2119 016b 091e          comf    _adresh,w
2120 016c 00d0          movwf   delay__temp
2121            
2122                    ; # Store the result away:
2123                    ; line_number = 274
2124                    ;  if channel@2 start
2125                    ; Delay at if is 80
2126 00000044 = delay__select__5___byte equ channel
2127 00000002 = delay__select__5___bit equ 2
2128                    ; (after recombine) true_delay=2, false_delay=5 uniform_delay=true
2129                    ; CASE: true_code_size > 1 && false_code_size > 1
2130                    ; true_code_size=2 false_code_size=5
2131 016d 1d44          btfss   delay__select__5___byte, delay__select__5___bit
2132 016e 2973          goto    delay__6
2133                    ; # Deal with threshold trim pot:
2134                    ; line_number = 276
2135                    ;  threshold_trim_pot := temp
2136                    ; Delay at assignment is 0
2137 016f 0850          movf    delay__temp,w
2138 0170 00ab          movwf   threshold_trim_pot
2139                    ; Delay 2 cycles
2140 0171 2972          goto    delay__8
2141   0172 :   delay__8:
2142 0172 2978          goto    delay__7
2143   0173 :   delay__6:
2144                    ; line_number = 278
2145                    ; analogs[channel] := temp
2146                    ; Delay at assignment is 0
2147                    ; index_fsr_first
2148 0173 0844          movf    channel,w
2149 0174 3e3f          addlw   analogs
2150 0175 0084          movwf   __fsr
2151 0176 0850          movf    delay__temp,w
2152 0177 0080          movwf   __indf
2153            
2154   0178 :   delay__7:
2155                    ; code.delay=88 back_code.delay=0
2156                    ; <=bit_code_emit@symbol; sym=delay__select__5 (data:X0=>X0 code:XX=>XX)
2157                    ; if final true delay=2 false delay=5 code delay=88
2158                    ; line_number = 274
2159                    ;  if channel@2 done
2160                    ; # Next time around, do case 1:
2161                    ; line_number = 281
2162                    ;  delay_counter := delay_counter + 1
2163                    ; Delay at assignment is 88
2164 0178 0ac3          incf    delay_counter,f
2165                    ; Delay 4 cycles
2166 0179 297a          goto    delay__51
2167   017a :   delay__51:
2168 017a 297b          goto    delay__52
2169   017b :   delay__52:
2170 017b 2a34          goto    delay__50
2171                    ; line_number = 282
2172                    ; case 1
2173   017c :   delay__46:
2174                    ; #  Process A/D result
2175                    ; line_number = 284
2176                    ;  if !(channel@2) start
2177                    ; Delay at if is 0
2178 00000044 = delay__select__16___byte equ channel
2179 00000002 = delay__select__16___bit equ 2
2180                    ; (after recombine) true_delay=0, false_delay=39 uniform_delay=true
2181                    ; CASE: true.size=0 && false.size>1
2182                    ; bit_code_emit_helper1: body_code.size=37 true_test=false body_code.delay=39 (uniform delay)
2183 017c 1d44          btfss   delay__select__16___byte, delay__select__16___bit
2184 017d 2984          goto    delay__17
2185                    ; Delay 38 cycles
2186                    ; Delay loop takes 9 * 4 = 36 cycles
2187 017e 3009          movlw   9
2188   017f :   delay__19:
2189 017f 3eff          addlw   255
2190 0180 1d03          btfss   __z___byte, __z___bit
2191 0181 297f          goto    delay__19
2192 0182 2983          goto    delay__20
2193   0183 :   delay__20:
2194 0183 29a9          goto    delay__18
2195   0184 :   delay__17:
2196                    ; line_number = 285
2197                    ; mask := masks[channel]
2198                    ; Delay at assignment is 0
2199 0184 0844          movf    channel,w
2200 0185 22b2          call    masks
2201 0186 00cd          movwf   delay__mask
2202                    ; line_number = 286
2203                    ;  temp := analogs[channel]
2204                    ; Delay at assignment is 13
2205 0187 0844          movf    channel,w
2206 0188 3e3f          addlw   analogs
2207 0189 0084          movwf   __fsr
2208 018a 0800          movf    __indf,w
2209 018b 00d0          movwf   delay__temp
2210                    ; line_number = 287
2211                    ;  if (temp >= thresholds_high[channel]) start
2212                    ; Delay at if is 18
2213 018c 0844          movf    channel,w
2214 018d 3e3b          addlw   thresholds_high
2215 018e 0084          movwf   __fsr
2216 018f 0800          movf    __indf,w
2217 0190 0250          subwf   delay__temp,w
2218                    ; (after recombine) true_delay=2, false_delay=13 uniform_delay=true
2219                    ; CASE: true_code_size > 1 && false_code_size > 1
2220                    ; true_code_size=2 false_code_size=14
2221 0191 1c03          btfss   __c___byte, __c___bit
2222 0192 299b          goto    delay__12
2223                    ; line_number = 288
2224                    ; raw_inputs := raw_inputs | mask
2225                    ; Delay at assignment is 0
2226 0193 084d          movf    delay__mask,w
2227 0194 04af          iorwf   raw_inputs,f
2228                    ; Delay 10 cycles
2229                    ; Delay loop takes 2 * 4 = 8 cycles
2230 0195 3002          movlw   2
2231   0196 :   delay__14:
2232 0196 3eff          addlw   255
2233 0197 1d03          btfss   __z___byte, __z___bit
2234 0198 2996          goto    delay__14
2235 0199 299a          goto    delay__15
2236   019a :   delay__15:
2237 019a 29a9          goto    delay__13
2238   019b :   delay__12:
2239                    ; line_number = 289
2240 019b 0844          movf    channel,w
2241 019c 3e37          addlw   thresholds_low
2242 019d 0084          movwf   __fsr
2243 019e 0800          movf    __indf,w
2244 019f 0250          subwf   delay__temp,w
2245 01a0 1903          btfsc   __z___byte, __z___bit
2246 01a1 1003          bcf     __c___byte, __c___bit
2247                    ; (after recombine) true_delay=0, false_delay=3 uniform_delay=true
2248                    ; CASE: true.size=0 && false.size>1
2249                    ; bit_code_emit_helper1: body_code.size=3 true_test=false body_code.delay=3 (uniform delay)
2250 01a2 1c03          btfss   __c___byte, __c___bit
2251 01a3 29a6          goto    delay__9
2252                    ; Delay 2 cycles
2253 01a4 29a5          goto    delay__11
2254   01a5 :   delay__11:
2255 01a5 29a9          goto    delay__10
2256   01a6 :   delay__9:
2257                    ; line_number = 290
2258                    ; raw_inputs := raw_inputs & (0xff ^ mask)
2259                    ; Delay at assignment is 0
2260 01a6 30ff          movlw   255
2261 01a7 064d          xorwf   delay__mask,w
2262 01a8 05af          andwf   raw_inputs,f
2263            
2264   01a9 :   delay__10:
2265                    ; code.delay=13 back_code.delay=0
2266                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2267                    ; Uniform delay broke in relation_code_emit
2268   01a9 :   delay__13:
2269                    ; code.delay=39 back_code.delay=0
2270                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2271                    ; Uniform delay broke in relation_code_emit
2272                    ; if final true delay=2 false delay=13 code delay=39
2273                    ; line_number = 287
2274                    ;  if (temp >= thresholds_high[channel]) done
2275   01a9 :   delay__18:
2276                    ; code.delay=42 back_code.delay=0
2277                    ; <=bit_code_emit@symbol; sym=delay__select__16 (data:X0=>X0 code:XX=>XX)
2278                    ; if final true delay=39 false delay=0 code delay=42
2279                    ; line_number = 284
2280                    ;  if !(channel@2) done
2281                    ; # Bump to next channel:
2282                    ; line_number = 293
2283                    ;  channel := channel + 1
2284                    ; Delay at assignment is 42
2285 01a9 0ac4          incf    channel,f
2286                    ; line_number = 294
2287                    ;  if channel >= chans.size start
2288                    ; Delay at if is 43
2289 01aa 3005          movlw   5
2290 01ab 0244          subwf   channel,w
2291                    ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
2292                    ; CASE: true_code.size = 0 && false_code.size > 1
2293                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
2294 01ac 1803          btfsc   __c___byte, __c___bit
2295 01ad 29b0          goto    delay__21
2296                    ; Delay 1 cycles
2297 01ae 0000          nop     
2298 01af 29b2          goto    delay__22
2299   01b0 :   delay__21:
2300                    ; line_number = 295
2301                    ; channel := 0
2302                    ; Delay at assignment is 0
2303 01b0 3000          movlw   0
2304 01b1 00c4          movwf   channel
2305            
2306   01b2 :   delay__22:
2307                    ; code.delay=50 back_code.delay=0
2308                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2309                    ; Uniform delay broke in relation_code_emit
2310                    ; if final true delay=2 false delay=0 code delay=50
2311                    ; line_number = 294
2312                    ;  if channel >= chans.size done
2313                    ; # Light up the LED's:
2314                    ; line_number = 298
2315                    ;  inputs := raw_inputs ^ complement
2316                    ; Delay at assignment is 50
2317 01b2 082f          movf    raw_inputs,w
2318 01b3 062d          xorwf   complement,w
2319 01b4 00ac          movwf   inputs
2320                    ; line_number = 299
2321                    ;  led1 := inputs@0
2322                    ; Delay at assignment is 53
2323 01b5 1205          bcf     led1___byte, led1___bit
2324 0000002c = delay__select__23___byte equ inputs
2325 00000000 = delay__select__23___bit equ 0
2326                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2327                    ; CASE: True.size=1 False.size=0
2328 01b6 182c          btfsc   delay__select__23___byte, delay__select__23___bit
2329 01b7 1605          bsf     led1___byte, led1___bit
2330                    ; code.delay=56 back_code.delay=0
2331                    ; <=bit_code_emit@symbol; sym=delay__select__23 (data:X0=>X0 code:XX=>XX)
2332                    ; line_number = 300
2333                    ;  led2 := inputs@1
2334                    ; Delay at assignment is 56
2335 01b8 1287          bcf     led2___byte, led2___bit
2336 0000002c = delay__select__24___byte equ inputs
2337 00000001 = delay__select__24___bit equ 1
2338                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2339                    ; CASE: True.size=1 False.size=0
2340 01b9 18ac          btfsc   delay__select__24___byte, delay__select__24___bit
2341 01ba 1687          bsf     led2___byte, led2___bit
2342                    ; code.delay=59 back_code.delay=0
2343                    ; <=bit_code_emit@symbol; sym=delay__select__24 (data:X0=>X0 code:XX=>XX)
2344                    ; line_number = 301
2345                    ;  led3 := inputs@2
2346                    ; Delay at assignment is 59
2347 01bb 1207          bcf     led3___byte, led3___bit
2348 0000002c = delay__select__25___byte equ inputs
2349 00000002 = delay__select__25___bit equ 2
2350                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2351                    ; CASE: True.size=1 False.size=0
2352 01bc 192c          btfsc   delay__select__25___byte, delay__select__25___bit
2353 01bd 1607          bsf     led3___byte, led3___bit
2354                    ; code.delay=62 back_code.delay=0
2355                    ; <=bit_code_emit@symbol; sym=delay__select__25 (data:X0=>X0 code:XX=>XX)
2356                    ; line_number = 302
2357                    ;  led4 := inputs@3
2358                    ; Delay at assignment is 62
2359 01be 1187          bcf     led4___byte, led4___bit
2360 0000002c = delay__select__26___byte equ inputs
2361 00000003 = delay__select__26___bit equ 3
2362                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
2363                    ; CASE: True.size=1 False.size=0
2364 01bf 19ac          btfsc   delay__select__26___byte, delay__select__26___bit
2365 01c0 1587          bsf     led4___byte, led4___bit
2366                    ; code.delay=65 back_code.delay=0
2367                    ; <=bit_code_emit@symbol; sym=delay__select__26 (data:X0=>X0 code:XX=>XX)
2368            
2369                    ; # Setup for interrupts:
2370                    ; line_number = 305
2371                    ;  previous := current
2372                    ; Delay at assignment is 65
2373 01c1 084b          movf    delay__current,w
2374 01c2 00cf          movwf   delay__previous
2375                    ; # Read the I/O port once:
2376                    ; line_number = 307
2377                    ;  current := inputs ^ complement
2378                    ; Delay at assignment is 67
2379 01c3 082c          movf    inputs,w
2380 01c4 062d          xorwf   complement,w
2381 01c5 00cb          movwf   delay__current
2382                    ; line_number = 308
2383                    ;  not_current := current ^ 0xf
2384                    ; Delay at assignment is 70
2385 01c6 300f          movlw   15
2386 01c7 064b          xorwf   delay__current,w
2387 01c8 00ce          movwf   delay__not_current
2388                    ; line_number = 309
2389                    ;  changed := current ^ previous
2390                    ; Delay at assignment is 73
2391 01c9 084b          movf    delay__current,w
2392 01ca 064f          xorwf   delay__previous,w
2393 01cb 00ca          movwf   delay__changed
2394            
2395                    ; # See about triggering the interrupt_pending flag:
2396                    ; line_number = 312
2397                    ;  if (low & not_current) | (high & current) | (changed & current & raising) | (changed & not_current & falling) != 0 start
2398                    ; Delay at if is 76
2399                    ; Left minus Right
2400 00000057 = delay__27 equ shared___globals+55
2401 01cc 0853          movf    delay__low,w
2402 01cd 054e          andwf   delay__not_current,w
2403 01ce 00d7          movwf   delay__27
2404 01cf 0852          movf    delay__high,w
2405 01d0 054b          andwf   delay__current,w
2406 01d1 04d7          iorwf   delay__27,f
2407 01d2 084a          movf    delay__changed,w
2408 01d3 054b          andwf   delay__current,w
2409 01d4 0534          andwf   raising,w
2410 01d5 04d7          iorwf   delay__27,f
2411 01d6 084a          movf    delay__changed,w
2412 01d7 054e          andwf   delay__not_current,w
2413 01d8 0531          andwf   falling,w
2414 01d9 0457          iorwf   delay__27,w
2415                    ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
2416                    ; CASE: true_code.size=0 && false_code.size=1
2417 01da 1d03          btfss   __z___byte, __z___bit
2418                    ; line_number = 315
2419                    ; interrupt_pending := 1
2420                    ; Delay at assignment is 0
2421 01db 1430          bsf     interrupt_pending___byte, interrupt_pending___bit
2422            
2423                    ; code.delay=92 back_code.delay=0
2424                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2425                    ; Uniform delay broke in relation_code_emit
2426                    ; if final true delay=1 false delay=0 code delay=92
2427                    ; line_number = 312
2428                    ;  if (low & not_current) | (high & current) | (changed & current & raising) | (changed & not_current & falling) != 0 done
2429            
2430                    ; # Send an interrupt if interrupts are enabled:
2431                    ; line_number = 318
2432                    ;  if interrupt_pending && interrupt_enable start
2433                    ; Delay at if is 92
2434                    ; (after recombine) true_delay=5, false_delay=2 uniform_delay=true
2435                    ; CASE: true.size>1 false.size=1; false=GOTO
2436                    ; Uniform delay
2437 01dc 1830          btfsc   interrupt_pending___byte, interrupt_pending___bit
2438 01dd 29e1          goto    delay__31
2439 01de 29e7          goto    delay__28
2440                    ; Delay 2 cycles
2441 01df 29e0          goto    delay__33
2442   01e0 :   delay__33:
2443 01e0 29e7          goto    delay__32
2444   01e1 :   delay__31:
2445                    ; &&||: index=1 true_delay=2 false_delay=0 goto_delay=2
2446                    ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
2447                    ; CASE: true_code.size = 0 && false_code.size > 1
2448                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
2449 01e1 18b0          btfsc   interrupt_enable___byte, interrupt_enable___bit
2450 01e2 29e5          goto    delay__29
2451                    ; Delay 1 cycles
2452 01e3 0000          nop     
2453 01e4 29e7          goto    delay__30
2454   01e5 :   delay__29:
2455                    ; # Shove serial out to low:
2456                    ; line_number = 320
2457                    ;  interrupt_enable := 0
2458                    ; Delay at assignment is 0
2459 01e5 10b0          bcf     interrupt_enable___byte, interrupt_enable___bit
2460                    ; line_number = 321
2461                    ;  serial_out := 0
2462                    ; Delay at assignment is 1
2463 01e6 1285          bcf     serial_out___byte, serial_out___bit
2464            
2465   01e7 :   delay__30:
2466   01e7 :   delay__28:
2467                    ; code.delay=5 back_code.delay=0
2468                    ; <=bit_code_emit@symbol; sym=interrupt_enable (data:X0=>X0 code:XX=>XX)
2469                    ; &&||: index=0 true_delay=2 false_delay=0 goto_delay=2
2470                    ; &&||:: index=0 new_delay=5 goto_delay=2
2471   01e7 :   delay__32:
2472                    ; code.delay=4294967295 back_code.delay=0
2473                    ; <=bit_code_emit@symbol; sym=interrupt_pending (data:X0=>X0 code:XX=>XX)
2474                    ; if final true delay=2 false delay=0 code delay=92
2475                    ; line_number = 318
2476                    ;  if interrupt_pending && interrupt_enable done
2477                    ; # Next time around, perform case 2:
2478                    ; line_number = 324
2479                    ;  delay_counter := delay_counter + 1
2480                    ; Delay at assignment is 92
2481 01e7 0ac3          incf    delay_counter,f
2482 01e8 2a34          goto    delay__50
2483                    ; line_number = 325
2484                    ; case 2
2485   01e9 :   delay__47:
2486                    ; # Process threshold trim pot:
2487                    ; line_number = 327
2488                    ;  thresholds_index := (thresholds_index + 1) & 3
2489                    ; Delay at assignment is 0
2490 01e9 0a51          incf    delay__thresholds_index,w
2491 01ea 3903          andlw   3
2492 01eb 00d1          movwf   delay__thresholds_index
2493                    ; line_number = 328
2494                    ;  mask := masks[thresholds_index]
2495                    ; Delay at assignment is 3
2496 01ec 0851          movf    delay__thresholds_index,w
2497 01ed 22b2          call    masks
2498 01ee 00cd          movwf   delay__mask
2499                    ; line_number = 329
2500                    ;  if threshold_enables & mask != 0 start
2501                    ; Delay at if is 16
2502                    ; Left minus Right
2503 01ef 0835          movf    threshold_enables,w
2504 01f0 054d          andwf   delay__mask,w
2505                    ; (after recombine) true_delay=0, false_delay=36 uniform_delay=true
2506                    ; CASE: true.size=0 && false.size>1
2507                    ; bit_code_emit_helper1: body_code.size=44 true_test=false body_code.delay=36 (uniform delay)
2508 01f1 1d03          btfss   __z___byte, __z___bit
2509 01f2 29fa          goto    delay__41
2510                    ; Delay 35 cycles
2511                    ; Delay loop takes 8 * 4 = 32 cycles
2512 01f3 3008          movlw   8
2513   01f4 :   delay__43:
2514 01f4 3eff          addlw   255
2515 01f5 1d03          btfss   __z___byte, __z___bit
2516 01f6 29f4          goto    delay__43
2517 01f7 29f8          goto    delay__44
2518   01f8 :   delay__44:
2519 01f8 0000          nop     
2520 01f9 2a26          goto    delay__42
2521   01fa :   delay__41:
2522                    ; line_number = 330
2523                    ; low := thresholds_low[thresholds_index]
2524                    ; Delay at assignment is 0
2525 01fa 0851          movf    delay__thresholds_index,w
2526 01fb 3e37          addlw   thresholds_low
2527 01fc 0084          movwf   __fsr
2528 01fd 0800          movf    __indf,w
2529 01fe 00d3          movwf   delay__low
2530                    ; line_number = 331
2531                    ;  high := thresholds_high[thresholds_index]
2532                    ; Delay at assignment is 5
2533 01ff 0851          movf    delay__thresholds_index,w
2534 0200 3e3b          addlw   thresholds_high
2535 0201 0084          movwf   __fsr
2536 0202 0800          movf    __indf,w
2537 0203 00d2          movwf   delay__high
2538                    ; line_number = 332
2539                    ;  if threshold_trim_pot > low start
2540                    ; Delay at if is 10
2541 0204 0853          movf    delay__low,w
2542 0205 022b          subwf   threshold_trim_pot,w
2543 0206 1903          btfsc   __z___byte, __z___bit
2544 0207 1003          bcf     __c___byte, __c___bit
2545                    ; (after recombine) true_delay=4, false_delay=9 uniform_delay=true
2546                    ; CASE: true_code_size > 1 && false_code_size > 1
2547                    ; true_code_size=4 false_code_size=11
2548 0208 1c03          btfss   __c___byte, __c___bit
2549 0209 2a11          goto    delay__37
2550                    ; line_number = 333
2551                    ; low := low + 1
2552                    ; Delay at assignment is 0
2553 020a 0ad3          incf    delay__low,f
2554                    ; line_number = 334
2555                    ;  if high != 255 start
2556                    ; Delay at if is 1
2557                    ; Left minus Right
2558 020b 0a52          incf    delay__high,w
2559                    ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
2560                    ; CASE: true_code.size=0 && false_code.size=1
2561 020c 1d03          btfss   __z___byte, __z___bit
2562                    ; line_number = 335
2563                    ; high := high + 1
2564                    ; Delay at assignment is 0
2565 020d 0ad2          incf    delay__high,f
2566                    ; code.delay=4 back_code.delay=0
2567                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2568                    ; Uniform delay broke in relation_code_emit
2569                    ; if final true delay=1 false delay=0 code delay=4
2570                    ; line_number = 334
2571                    ;  if high != 255 done
2572                    ; Delay 4 cycles
2573 020e 2a0f          goto    delay__39
2574   020f :   delay__39:
2575 020f 2a10          goto    delay__40
2576   0210 :   delay__40:
2577 0210 2a1c          goto    delay__38
2578   0211 :   delay__37:
2579                    ; line_number = 336
2580 0211 0850          movf    delay__temp,w
2581 0212 022b          subwf   threshold_trim_pot,w
2582                    ; (after recombine) true_delay=0, false_delay=4 uniform_delay=true
2583                    ; CASE: true.size=0 && false.size>1
2584                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=4 (uniform delay)
2585 0213 1c03          btfss   __c___byte, __c___bit
2586 0214 2a18          goto    delay__34
2587                    ; Delay 3 cycles
2588 0215 2a16          goto    delay__36
2589   0216 :   delay__36:
2590 0216 0000          nop     
2591 0217 2a1c          goto    delay__35
2592   0218 :   delay__34:
2593                    ; line_number = 337
2594                    ; low := low - 1
2595                    ; Delay at assignment is 0
2596 0218 03d3          decf    delay__low,f
2597                    ; line_number = 338
2598                    ;  if high != 0 start
2599                    ; Delay at if is 1
2600                    ; Left minus Right
2601 0219 0852          movf    delay__high,w
2602                    ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
2603                    ; CASE: true_code.size=0 && false_code.size=1
2604 021a 1d03          btfss   __z___byte, __z___bit
2605                    ; line_number = 339
2606                    ; high := high - 1
2607                    ; Delay at assignment is 0
2608 021b 03d2          decf    delay__high,f
2609                    ; code.delay=4 back_code.delay=0
2610                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2611                    ; Uniform delay broke in relation_code_emit
2612                    ; if final true delay=1 false delay=0 code delay=4
2613                    ; line_number = 338
2614                    ;  if high != 0 done
2615   021c :   delay__35:
2616                    ; code.delay=9 back_code.delay=0
2617                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2618                    ; Uniform delay broke in relation_code_emit
2619   021c :   delay__38:
2620                    ; code.delay=26 back_code.delay=0
2621                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2622                    ; Uniform delay broke in relation_code_emit
2623                    ; if final true delay=4 false delay=9 code delay=26
2624                    ; line_number = 332
2625                    ;  if threshold_trim_pot > low done
2626                    ; line_number = 340
2627                    ; thresholds_low[thresholds_index] := low
2628                    ; Delay at assignment is 26
2629                    ; index_fsr_first
2630 021c 0851          movf    delay__thresholds_index,w
2631 021d 3e37          addlw   thresholds_low
2632 021e 0084          movwf   __fsr
2633 021f 0853          movf    delay__low,w
2634 0220 0080          movwf   __indf
2635                    ; line_number = 341
2636                    ;  thresholds_high[thresholds_index] := high
2637                    ; Delay at assignment is 31
2638                    ; index_fsr_first
2639 0221 0851          movf    delay__thresholds_index,w
2640 0222 3e3b          addlw   thresholds_high
2641 0223 0084          movwf   __fsr
2642 0224 0852          movf    delay__high,w
2643 0225 0080          movwf   __indf
2644            
2645   0226 :   delay__42:
2646                    ; code.delay=57 back_code.delay=0
2647                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2648                    ; Uniform delay broke in relation_code_emit
2649                    ; if final true delay=36 false delay=0 code delay=57
2650                    ; line_number = 329
2651                    ;  if threshold_enables & mask != 0 done
2652                    ; # Next time around, perform case 3:
2653                    ; line_number = 344
2654                    ;  delay_counter := delay_counter + 1
2655                    ; Delay at assignment is 57
2656 0226 0ac3          incf    delay_counter,f
2657                    ; Delay 35 cycles
2658                    ; Delay loop takes 8 * 4 = 32 cycles
2659 0227 3008          movlw   8
2660   0228 :   delay__53:
2661 0228 3eff          addlw   255
2662 0229 1d03          btfss   __z___byte, __z___bit
2663 022a 2a28          goto    delay__53
2664 022b 2a2c          goto    delay__54
2665   022c :   delay__54:
2666 022c 0000          nop     
2667 022d 2a34          goto    delay__50
2668                    ; line_number = 345
2669                    ; case 3
2670   022e :   delay__48:
2671                    ; line_number = 346
2672                    ; do_nothing
2673            
2674            
2675                    ; Delay 93 cycles
2676                    ; Delay loop takes 23 * 4 = 92 cycles
2677 022e 3017          movlw   23
2678   022f :   delay__55:
2679 022f 3eff          addlw   255
2680 0230 1d03          btfss   __z___byte, __z___bit
2681 0231 2a2f          goto    delay__55
2682 0232 0000          nop     
2683 0233 2a34          goto    delay__50
2684   0234 :   delay__50:
2685                    ; switch end:(data:X0=>X? code:XX=>XX)
2686                    ; line_number = 253
2687                    ;  switch delay_counter done
2688                    ; delay after procedure statements=130
2689 0234 1283          bcf     __rp0___byte, __rp0___bit
2690                    ; Delay 0 cycles
2691                    ; Implied return
2692 0235 3400          retlw   0
2693                    ; Final delay = 133
2694            
2695            
2696            
2697            
2698                    ; line_number = 349
2699                    ; procedure reset
2700   0236 :   reset:
2701                    ; arguments_none
2702                    ; line_number = 351
2703                    ;  returns_nothing
2704            
2705                    ; # This procedure will initialize all of the registers:
2706            
2707                    ; line_number = 355
2708                    ;  local index byte
2709 00000054 = reset__index equ shared___globals+52
2710            
2711                    ; # Initialize the A/D module:
2712                    ; # A/D Conversion clock is Fosc/8 (Tad=2uS) and AD is on:
2713                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
2714                    ; line_number = 359
2715                    ;  _adcon0 := 1
2716 0236 3001          movlw   1
2717 0237 009f          movwf   _adcon0
2718                    ; line_number = 360
2719                    ;  _adcon1 := 0
2720 0238 3000          movlw   0
2721 0239 1683          bsf     __rp0___byte, __rp0___bit
2722 023a 009f          movwf   _adcon1
2723                    ; line_number = 361
2724                    ;  _adcs0 := 1
2725 023b 161f          bsf     _adcs0___byte, _adcs0___bit
2726                    ; line_number = 362
2727                    ;  _adif := 0
2728 023c 1283          bcf     __rp0___byte, __rp0___bit
2729 023d 130c          bcf     _adif___byte, _adif___bit
2730                    ; line_number = 363
2731                    ;  _adie := 0
2732 023e 1683          bsf     __rp0___byte, __rp0___bit
2733 023f 130c          bcf     _adie___byte, _adie___bit
2734                    ; line_number = 364
2735                    ;  _gie := 0
2736 0240 1283          bcf     __rp0___byte, __rp0___bit
2737 0241 138b          bcf     _gie___byte, _gie___bit
2738                    ; line_number = 365
2739                    ;  _adsel := (1 | 2 | 4 | 16 | 32)
2740                    ; Expression is strictly a constant
2741 0242 3037          movlw   55
2742 0243 1683          bsf     __rp0___byte, __rp0___bit
2743 0244 0091          movwf   _adsel
2744            
2745                    ; line_number = 367
2746                    ;  channel := 0
2747 0245 3000          movlw   0
2748 0246 1283          bcf     __rp0___byte, __rp0___bit
2749 0247 00c4          movwf   channel
2750                    ; line_number = 368
2751                    ;  complement := 0
2752 0248 3000          movlw   0
2753 0249 00ad          movwf   complement
2754                    ; line_number = 369
2755                    ;  command := 0
2756 024a 3000          movlw   0
2757 024b 00ae          movwf   command
2758                    ; line_number = 370
2759                    ;  delay_counter := 0
2760 024c 3000          movlw   0
2761 024d 00c3          movwf   delay_counter
2762                    ; line_number = 371
2763                    ;  falling := 0
2764 024e 3000          movlw   0
2765 024f 00b1          movwf   falling
2766                    ; line_number = 372
2767                    ;  glitch := 0
2768 0250 3000          movlw   0
2769 0251 00c5          movwf   glitch
2770                    ; line_number = 373
2771                    ;  high := 0
2772 0252 3000          movlw   0
2773 0253 00b2          movwf   high
2774                    ; line_number = 374
2775                    ;  id_index := 0
2776 0254 3000          movlw   0
2777 0255 00c6          movwf   id_index
2778                    ; line_number = 375
2779                    ;  interrupt_bits := 0
2780 0256 3000          movlw   0
2781 0257 00b0          movwf   interrupt_bits
2782                    ; line_number = 376
2783                    ;  low := 0
2784 0258 3000          movlw   0
2785 0259 00b3          movwf   low
2786                    ; line_number = 377
2787                    ;  raising := 0
2788 025a 3000          movlw   0
2789 025b 00b4          movwf   raising
2790                    ; line_number = 378
2791                    ;  raw_inputs := 0
2792 025c 3000          movlw   0
2793 025d 00af          movwf   raw_inputs
2794            
2795                    ; # Initialize threshold vectors:
2796                    ; line_number = 381
2797                    ;  index := 0
2798 025e 3000          movlw   0
2799 025f 00d4          movwf   reset__index
2800                    ; line_number = 382
2801                    ;  while index < 4 start
2802   0260 :   reset__1:
2803 0260 3004          movlw   4
2804 0261 0254          subwf   reset__index,w
2805                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2806                    ; CASE: true.size=0 && false.size>1
2807                    ; bit_code_emit_helper1: body_code.size=12 true_test=false body_code.delay=0 (non-uniform delay)
2808 0262 1803          btfsc   __c___byte, __c___bit
2809 0263 2a70          goto    reset__2
2810                    ; line_number = 383
2811                    ; thresholds_high[index] := threshold_default
2812                    ; index_fsr_first
2813 0264 0854          movf    reset__index,w
2814 0265 3e3b          addlw   thresholds_high
2815 0266 0084          movwf   __fsr
2816 0267 3080          movlw   128
2817 0268 0080          movwf   __indf
2818                    ; line_number = 384
2819                    ;  thresholds_low[index] := threshold_default
2820                    ; index_fsr_first
2821 0269 0854          movf    reset__index,w
2822 026a 3e37          addlw   thresholds_low
2823 026b 0084          movwf   __fsr
2824 026c 3080          movlw   128
2825 026d 0080          movwf   __indf
2826                    ; line_number = 385
2827                    ;  index := index + 1
2828 026e 0ad4          incf    reset__index,f
2829            
2830 026f 2a60          goto    reset__1
2831   0270 :   reset__2:
2832                    ; Recombine size1 = 0 || size2 = 0
2833                    ; code.delay=4294967295 back_code.delay=4294967295
2834                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2835                    ; line_number = 382
2836                    ;  while index < 4 done
2837                    ; # Bit resets:
2838                    ; line_number = 388
2839                    ;  serial_out := 1
2840 0270 1685          bsf     serial_out___byte, serial_out___bit
2841            
2842            
2843                    ; delay after procedure statements=non-uniform
2844                    ; Implied return
2845 0271 3400          retlw   0
2846            
2847            
2848            
2849            
2850                    ; line_number = 391
2851                    ; constant zero8 = "\0,0,0,0,0,0,0,0\"
2852                    ; zero8 = '\0,0,0,0,0,0,0,0\'
2853                    ; line_number = 392
2854                    ; constant module_name = "\8\IREdge4C"
2855                    ; module_name = '\8\IREdge4C'
2856                    ; line_number = 393
2857                    ; constant vendor_name = "\13\Mondo-tronics"
2858                    ; vendor_name = '\13\Mondo-tronics'
2859                    ; line_number = 394
2860                    ; string id = "\1,0,25,2,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
2861                    ; id = '\1,0,25,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8\IREdge4C\13\Mondo-tronics'
2862   0272 :   id:
2863                    ; Temporarily save index into FSR
2864 0272 0084          movwf   __fsr
2865                    ; Initialize PCLATH to point to this code page
2866 0273 3002          movlw   id___base>>8
2867 0274 008a          movwf   __pclath
2868                    ; Restore index from FSR
2869 0275 0804          movf    __fsr,w
2870 0276 3e78          addlw   id___base
2871                    ; Index to the correct return value
2872 0277 0082          movwf   __pcl
2873                    ; page_group 47
2874   0278 :   id___base:
2875 0278 3401          retlw   1
2876 0279 3400          retlw   0
2877 027a 3419          retlw   25
2878 027b 3402          retlw   2
2879 027c 3400          retlw   0
2880 027d 3400          retlw   0
2881 027e 3400          retlw   0
2882 027f 3400          retlw   0
2883 0280 3400          retlw   0
2884 0281 3400          retlw   0
2885 0282 3400          retlw   0
2886 0283 3400          retlw   0
2887 0284 3400          retlw   0
2888 0285 3400          retlw   0
2889 0286 3400          retlw   0
2890 0287 3400          retlw   0
2891 0288 3400          retlw   0
2892 0289 3400          retlw   0
2893 028a 3400          retlw   0
2894 028b 3400          retlw   0
2895 028c 3400          retlw   0
2896 028d 3400          retlw   0
2897 028e 3400          retlw   0
2898 028f 3400          retlw   0
2899 0290 3408          retlw   8
2900 0291 3449          retlw   73
2901 0292 3452          retlw   82
2902 0293 3445          retlw   69
2903 0294 3464          retlw   100
2904 0295 3467          retlw   103
2905 0296 3465          retlw   101
2906 0297 3434          retlw   52
2907 0298 3443          retlw   67
2908 0299 340d          retlw   13
2909 029a 344d          retlw   77
2910 029b 346f          retlw   111
2911 029c 346e          retlw   110
2912 029d 3464          retlw   100
2913 029e 346f          retlw   111
2914 029f 342d          retlw   45
2915 02a0 3474          retlw   116
2916 02a1 3472          retlw   114
2917 02a2 346f          retlw   111
2918 02a3 346e          retlw   110
2919 02a4 3469          retlw   105
2920 02a5 3463          retlw   99
2921 02a6 3473          retlw   115
2922                    ; line_number = 394
2923                    ; string id = "\1,0,25,2,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
2924            
2925                    ; line_number = 396
2926                    ; string chans = "\4,1,0,2,5\" start
2927                    ; chans = '\4,1,0,2,5\'
2928   02a7 :   chans:
2929                    ; Temporarily save index into FSR
2930 02a7 0084          movwf   __fsr
2931                    ; Initialize PCLATH to point to this code page
2932 02a8 3002          movlw   chans___base>>8
2933 02a9 008a          movwf   __pclath
2934                    ; Restore index from FSR
2935 02aa 0804          movf    __fsr,w
2936 02ab 3ead          addlw   chans___base
2937                    ; Index to the correct return value
2938 02ac 0082          movwf   __pcl
2939                    ; page_group 5
2940   02ad :   chans___base:
2941 02ad 3404          retlw   4
2942 02ae 3401          retlw   1
2943 02af 3400          retlw   0
2944 02b0 3402          retlw   2
2945 02b1 3405          retlw   5
2946                    ; line_number = 396
2947                    ; string chans = "\4,1,0,2,5\" start
2948                    ; line_number = 397
2949                    ; string masks = "\1,2,4,8\" start
2950                    ; masks = '\1,2,4,8\'
2951   02b2 :   masks:
2952                    ; Temporarily save index into FSR
2953 02b2 0084          movwf   __fsr
2954                    ; Initialize PCLATH to point to this code page
2955 02b3 3002          movlw   masks___base>>8
2956 02b4 008a          movwf   __pclath
2957                    ; Restore index from FSR
2958 02b5 0804          movf    __fsr,w
2959 02b6 3eb8          addlw   masks___base
2960                    ; Index to the correct return value
2961 02b7 0082          movwf   __pcl
2962                    ; page_group 4
2963   02b8 :   masks___base:
2964 02b8 3401          retlw   1
2965 02b9 3402          retlw   2
2966 02ba 3404          retlw   4
2967 02bb 3408          retlw   8
2968                    ; line_number = 397
2969                    ; string masks = "\1,2,4,8\" start
2970            
2971            
2972            
2973                    ; Appending 4 delayed procedures to code bank 0
2974                    ; buffer = 'bit_bang'
2975                    ; line_number = 33
2976                    ; procedure byte_get
2977   02bc :   byte_get:
2978                    ; arguments_none
2979                    ; line_number = 35
2980                    ;  returns byte
2981            
2982                    ; # This procedure will wait for a byte to be received from
2983                    ; # serial_in_bit.  It calls the delay procedure for all delays.
2984                    ; # This procedure will keep calling the {delay} routine until
2985                    ; # data is received.
2986            
2987                    ; line_number = 42
2988                    ;  local count byte
2989 00000020 = byte_get__count equ shared___globals
2990                    ; line_number = 43
2991                    ;  local byte byte
2992 00000021 = byte_get__byte equ shared___globals+1
2993            
2994                    ; # Why does the delay procedure wait for a third of bit?  Well, it
2995                    ; # has to do with the loop immediately below.  If we catch the
2996                    ; # start bit at the beginning of a 1/3 bit time, we will be
2997                    ; # sampling data at approximately 1/3 of the way into each bit.
2998                    ; # Conversely, if we catch the start near the end of a 1/3 bit
2999                    ; # bit time, we will be sampling data at approximately 2/3 of the
3000                    ; # way into each bit.  So, what this means is that our bit sample
3001                    ; # times will be somewhere between 1/3 and 2/3 of bit (i.e. in
3002                    ; # the middle of the bit.
3003            
3004                    ; # It would be nice to tweak the code to shorter delay times
3005                    ; # (1/4 bit, 1/5 bit, etc.) but then it gets too hard to get
3006                    ; # the bookeeping done in the delay routine.  A PIC running at
3007                    ; # 4MHz (=1MIPS), only has 138 instructions available for the
3008                    ; # delay routine when at 1/3 of bit.
3009            
3010                    ; # Wait for a start bit:
3011                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3012                    ; line_number = 62
3013                    ;  waiting := 1
3014 02bc 14df          bsf     waiting___byte, waiting___bit
3015                    ; line_number = 63
3016                    ;  receiving := 1
3017 02bd 145f          bsf     receiving___byte, receiving___bit
3018                    ; line_number = 64
3019                    ;  while serial_in start
3020   02be :   byte_get__1:
3021                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
3022                    ; CASE: true_code.size = 0 && false_code.size > 1
3023                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
3024 02be 1e05          btfss   serial_in___byte, serial_in___bit
3025 02bf 2ac2          goto    byte_get__2
3026                    ; line_number = 65
3027                    ; delay instructions_per_delay - 3 start
3028                    ; Delay expression evaluates to 135
3029                    ; line_number = 66
3030                    ; call delay()
3031                    ; Delay at call is 0
3032 02c0 214d          call    delay
3033                    ; line_number = 65
3034                    ; delay instructions_per_delay - 3 done
3035 02c1 2abe          goto    byte_get__1
3036                    ; Recombine size1 = 0 || size2 = 0
3037   02c2 :   byte_get__2:
3038                    ; code.delay=4294967295 back_code.delay=4294967295
3039                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
3040                    ; line_number = 64
3041                    ;  while serial_in done
3042                    ; line_number = 67
3043                    ; waiting := 0
3044 02c2 10df          bcf     waiting___byte, waiting___bit
3045            
3046                    ; # Clear out any preceeding interrupt condition:
3047                    ; line_number = 70
3048                    ;  serial_out := 1
3049 02c3 1685          bsf     serial_out___byte, serial_out___bit
3050            
3051                    ; # Skip over start bit:
3052                    ; line_number = 73
3053                    ;  delay instructions_per_bit - 2 start
3054                    ; Delay expression evaluates to 414
3055                    ; # There are two instructions of set-up for following loop_exactly:
3056                    ; line_number = 75
3057                    ;  call delay()
3058                    ; Delay at call is 0
3059 02c4 214d          call    delay
3060                    ; line_number = 76
3061                    ;  call delay()
3062                    ; Delay at call is 135
3063 02c5 214d          call    delay
3064                    ; line_number = 77
3065                    ;  call delay()
3066                    ; Delay at call is 270
3067 02c6 214d          call    delay
3068                    ; line_number = 78
3069                    ;  byte := 0
3070                    ; Delay at assignment is 405
3071 02c7 3000          movlw   0
3072 02c8 00a1          movwf   byte_get__byte
3073            
3074                    ; Delay 7 cycles
3075 02c9 2aca          goto    byte_get__3
3076   02ca :   byte_get__3:
3077 02ca 2acb          goto    byte_get__4
3078   02cb :   byte_get__4:
3079 02cb 2acc          goto    byte_get__5
3080   02cc :   byte_get__5:
3081 02cc 0000          nop     
3082                    ; line_number = 73
3083                    ;  delay instructions_per_bit - 2 done
3084                    ; # Read in 8 bits of data:
3085                    ; line_number = 81
3086                    ;  loop_exactly 8 start
3087 00000058 = byte_get__6 equ shared___globals+56
3088 02cd 3008          movlw   8
3089 02ce 00d8          movwf   byte_get__6
3090   02cf :   byte_get__7:
3091                    ; # There are 3 instrucitons of loop_exactly overhead:
3092                    ; line_number = 83
3093                    ;  delay instructions_per_bit - 3 start
3094                    ; Delay expression evaluates to 413
3095                    ; line_number = 84
3096                    ; call delay()
3097                    ; Delay at call is 0
3098 02cf 214d          call    delay
3099                    ; line_number = 85
3100                    ;  byte := byte >> 1
3101                    ; Delay at assignment is 135
3102                    ; Assignment of variable to self (no code needed)
3103 02d0 0ca1          rrf     byte_get__byte,f
3104 02d1 13a1          bcf     byte_get__byte, 7
3105                    ; line_number = 86
3106                    ;  if serial_in start
3107                    ; Delay at if is 137
3108                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
3109                    ; CASE: True.size=1 False.size=0
3110 02d2 1a05          btfsc   serial_in___byte, serial_in___bit
3111                    ; line_number = 87
3112                    ; byte@7 := 1
3113                    ; Delay at assignment is 0
3114 00000021 = byte_get__select__8___byte equ byte_get__byte
3115 00000007 = byte_get__select__8___bit equ 7
3116 02d3 17a1          bsf     byte_get__select__8___byte, byte_get__select__8___bit
3117                    ; code.delay=139 back_code.delay=0
3118                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
3119                    ; if final true delay=1 false delay=0 code delay=139
3120                    ; line_number = 86
3121                    ;  if serial_in done
3122                    ; line_number = 88
3123                    ; call delay()
3124                    ; Delay at call is 139
3125 02d4 214d          call    delay
3126                    ; line_number = 89
3127                    ;  call delay()
3128                    ; Delay at call is 274
3129 02d5 214d          call    delay
3130            
3131                    ; Delay 4 cycles
3132 02d6 2ad7          goto    byte_get__9
3133   02d7 :   byte_get__9:
3134 02d7 2ad8          goto    byte_get__10
3135   02d8 :   byte_get__10:
3136                    ; line_number = 83
3137                    ;  delay instructions_per_bit - 3 done
3138                    ; line_number = 81
3139                    ;  loop_exactly 8 wrap-up
3140 02d8 0bd8          decfsz  byte_get__6,f
3141 02d9 2acf          goto    byte_get__7
3142                    ; line_number = 81
3143                    ;  loop_exactly 8 done
3144                    ; # Skip over 2/3's of stop bit; 3 cycles for return:
3145                    ; line_number = 92
3146                    ;  delay instructions_per_delay*2 - 3 start
3147                    ; Delay expression evaluates to 273
3148                    ; line_number = 93
3149                    ; call delay()
3150                    ; Delay at call is 0
3151 02da 214d          call    delay
3152                    ; line_number = 94
3153                    ;  call delay()
3154                    ; Delay at call is 135
3155 02db 214d          call    delay
3156                    ; Delay 3 cycles
3157 02dc 2add          goto    byte_get__11
3158   02dd :   byte_get__11:
3159 02dd 0000          nop     
3160                    ; line_number = 92
3161                    ;  delay instructions_per_delay*2 - 3 done
3162                    ; line_number = 95
3163                    ; command_previous := command_last
3164 02de 0828          movf    command_last,w
3165 02df 00a7          movwf   command_previous
3166                    ; line_number = 96
3167                    ;  command_last := byte
3168 02e0 0821          movf    byte_get__byte,w
3169 02e1 00a8          movwf   command_last
3170                    ; line_number = 97
3171                    ;  serial_out := 1
3172 02e2 1685          bsf     serial_out___byte, serial_out___bit
3173                    ; line_number = 98
3174                    ;  return byte start
3175                    ; line_number = 98
3176 02e3 0821          movf    byte_get__byte,w
3177 02e4 0008          return  
3178                    ; line_number = 98
3179                    ;  return byte done
3180            
3181            
3182                    ; delay after procedure statements=non-uniform
3183            
3184            
3185            
3186            
3187                    ; line_number = 101
3188                    ; procedure byte_put
3189   02e5 :   byte_put:
3190                    ; Last argument is sitting in W; save into argument variable
3191 02e5 00a3          movwf   byte_put__byte
3192                    ; delay=4294967295
3193                    ; line_number = 102
3194                    ; argument byte byte
3195 00000023 = byte_put__byte equ shared___globals+3
3196                    ; line_number = 103
3197                    ;  returns_nothing
3198            
3199                    ; # This procedure will send {byte} to {serial_out} pin.  The {delay}
3200                    ; # procedure is called to provide the appropriate bit timing.
3201            
3202                    ; line_number = 108
3203                    ;  local count byte
3204 00000022 = byte_put__count equ shared___globals+2
3205            
3206                    ; # {receiving} will be 1 if the last get/put routine was a get.
3207                    ; # Before we start transmitting a response back, we want to ensure
3208                    ; # that there has been enough time to turn the line around.
3209                    ; # We delay the first 1/3 of a bit to pad out the 9-2/3 bits
3210                    ; # from get_byte to 10 bits.  We delay another 3 bits just to
3211                    ; # ensure that slow interpreters do not get overrun.
3212                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3213                    ; line_number = 116
3214                    ;  sent_previous := sent_last
3215 02e6 082a          movf    sent_last,w
3216 02e7 00a9          movwf   sent_previous
3217                    ; line_number = 117
3218                    ;  sent_last := byte
3219 02e8 0823          movf    byte_put__byte,w
3220 02e9 00aa          movwf   sent_last
3221                    ; line_number = 118
3222                    ;  if receiving start
3223                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
3224                    ; CASE: true_code.size = 0 && false_code.size > 1
3225                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
3226 02ea 1c5f          btfss   receiving___byte, receiving___bit
3227 02eb 2af2          goto    byte_put__3
3228                    ; line_number = 119
3229                    ; receiving := 0
3230 02ec 105f          bcf     receiving___byte, receiving___bit
3231                    ; # 10 = 1 + 3*3 = 3-1/3 extra bits of delay:
3232                    ; line_number = 121
3233                    ;  loop_exactly 10 start
3234 00000059 = byte_put__1 equ shared___globals+57
3235 02ed 300a          movlw   10
3236 02ee 00d9          movwf   byte_put__1
3237   02ef :   byte_put__2:
3238                    ; line_number = 122
3239                    ; call delay()
3240 02ef 214d          call    delay
3241            
3242                    ; line_number = 121
3243                    ;  loop_exactly 10 wrap-up
3244 02f0 0bd9          decfsz  byte_put__1,f
3245 02f1 2aef          goto    byte_put__2
3246                    ; line_number = 121
3247                    ;  loop_exactly 10 done
3248                    ; Recombine size1 = 0 || size2 = 0
3249   02f2 :   byte_put__3:
3250                    ; code.delay=4294967295 back_code.delay=4294967295
3251                    ; <=bit_code_emit@symbol; sym=receiving (data:X0=>X0 code:XX=>XX)
3252                    ; line_number = 118
3253                    ;  if receiving done
3254                    ; # Send the start bit:
3255                    ; line_number = 125
3256                    ;  delay instructions_per_bit - 2 start
3257                    ; Delay expression evaluates to 414
3258                    ; # The loop_exactly setup after this is 2 instructions:
3259                    ; line_number = 127
3260                    ;  serial_out := 0
3261                    ; Delay at assignment is 0
3262 02f2 1285          bcf     serial_out___byte, serial_out___bit
3263                    ; line_number = 128
3264                    ;  call delay()
3265                    ; Delay at call is 1
3266 02f3 214d          call    delay
3267                    ; line_number = 129
3268                    ;  call delay()
3269                    ; Delay at call is 136
3270 02f4 214d          call    delay
3271                    ; line_number = 130
3272                    ;  call delay()
3273                    ; Delay at call is 271
3274 02f5 214d          call    delay
3275            
3276                    ; Delay 8 cycles
3277                    ; Delay loop takes 2 * 4 = 8 cycles
3278 02f6 3002          movlw   2
3279   02f7 :   byte_put__4:
3280 02f7 3eff          addlw   255
3281 02f8 1d03          btfss   __z___byte, __z___bit
3282 02f9 2af7          goto    byte_put__4
3283                    ; line_number = 125
3284                    ;  delay instructions_per_bit - 2 done
3285                    ; # Send the data:
3286                    ; line_number = 133
3287                    ;  loop_exactly 8 start
3288 00000059 = byte_put__5 equ shared___globals+57
3289 02fa 3008          movlw   8
3290 02fb 00d9          movwf   byte_put__5
3291   02fc :   byte_put__6:
3292                    ; # Loop_exactly overhead is 3 instructions:
3293                    ; line_number = 135
3294                    ;  delay instructions_per_bit - 3 start
3295                    ; Delay expression evaluates to 413
3296                    ; line_number = 136
3297                    ; if byte@0 start
3298                    ; Delay at if is 0
3299 00000023 = byte_put__select__7___byte equ byte_put__byte
3300 00000000 = byte_put__select__7___bit equ 0
3301                    ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
3302                    ; CASE: true_size=1 && false_size=1
3303                    ; SUBCASE: Double test; true, then false
3304 02fc 1823          btfsc   byte_put__select__7___byte, byte_put__select__7___bit
3305                    ; line_number = 137
3306                    ; serial_out := 1
3307                    ; Delay at assignment is 0
3308 02fd 1685          bsf     serial_out___byte, serial_out___bit
3309 02fe 1c23          btfss   byte_put__select__7___byte, byte_put__select__7___bit
3310                    ; line_number = 139
3311                    ; serial_out := 0
3312                    ; Delay at assignment is 0
3313 02ff 1285          bcf     serial_out___byte, serial_out___bit
3314                    ; code.delay=4 back_code.delay=0
3315                    ; <=bit_code_emit@symbol; sym=byte_put__select__7 (data:X0=>X0 code:XX=>XX)
3316                    ; if final true delay=1 false delay=1 code delay=4
3317                    ; line_number = 136
3318                    ; if byte@0 done
3319                    ; line_number = 140
3320                    ; byte := byte >> 1
3321                    ; Delay at assignment is 4
3322                    ; Assignment of variable to self (no code needed)
3323 0300 0ca3          rrf     byte_put__byte,f
3324 0301 13a3          bcf     byte_put__byte, 7
3325                    ; line_number = 141
3326                    ;  call delay()
3327                    ; Delay at call is 6
3328 0302 214d          call    delay
3329                    ; line_number = 142
3330                    ;  call delay()
3331                    ; Delay at call is 141
3332 0303 214d          call    delay
3333                    ; line_number = 143
3334                    ;  call delay()
3335                    ; Delay at call is 276
3336 0304 214d          call    delay
3337            
3338                    ; Delay 2 cycles
3339 0305 2b06          goto    byte_put__8
3340   0306 :   byte_put__8:
3341                    ; line_number = 135
3342                    ;  delay instructions_per_bit - 3 done
3343                    ; line_number = 133
3344                    ;  loop_exactly 8 wrap-up
3345 0306 0bd9          decfsz  byte_put__5,f
3346 0307 2afc          goto    byte_put__6
3347                    ; line_number = 133
3348                    ;  loop_exactly 8 done
3349                    ; # Send the stop bit:
3350                    ; line_number = 146
3351                    ;  delay instructions_per_bit start
3352                    ; Delay expression evaluates to 416
3353                    ; line_number = 147
3354                    ; serial_out := 1
3355                    ; Delay at assignment is 0
3356 0308 1685          bsf     serial_out___byte, serial_out___bit
3357                    ; line_number = 148
3358                    ;  call delay()
3359                    ; Delay at call is 1
3360 0309 214d          call    delay
3361                    ; line_number = 149
3362                    ;  call delay()
3363                    ; Delay at call is 136
3364 030a 214d          call    delay
3365                    ; line_number = 150
3366                    ;  call delay()
3367                    ; Delay at call is 271
3368 030b 214d          call    delay
3369            
3370            
3371                    ; Delay 10 cycles
3372                    ; Delay loop takes 2 * 4 = 8 cycles
3373 030c 3002          movlw   2
3374   030d :   byte_put__9:
3375 030d 3eff          addlw   255
3376 030e 1d03          btfss   __z___byte, __z___bit
3377 030f 2b0d          goto    byte_put__9
3378 0310 2b11          goto    byte_put__10
3379   0311 :   byte_put__10:
3380                    ; line_number = 146
3381                    ;  delay instructions_per_bit done
3382                    ; delay after procedure statements=non-uniform
3383                    ; Implied return
3384 0311 3400          retlw   0
3385            
3386            
3387            
3388            
3389                    ; buffer = 'debug_port'
3390                    ; line_number = 16
3391                    ; procedure debug_port_reset
3392   0312 :   debug_port_reset:
3393                    ; arguments_none
3394                    ; line_number = 18
3395                    ;  returns_nothing
3396            
3397                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3398                    ; line_number = 20
3399                    ;  debug_counter := 0xff
3400 0312 30ff          movlw   255
3401 0313 00a5          movwf   debug_counter
3402                    ; line_number = 21
3403                    ;  debug_index := 0
3404 0314 3000          movlw   0
3405 0315 00a6          movwf   debug_index
3406                    ; line_number = 22
3407                    ;  debug_character := 0
3408 0316 3000          movlw   0
3409 0317 00a4          movwf   debug_character
3410            
3411            
3412                    ; delay after procedure statements=non-uniform
3413                    ; Implied return
3414 0318 3400          retlw   0
3415            
3416            
3417            
3418            
3419                    ; line_number = 31
3420                    ; procedure debug_port_service
3421   0319 :   debug_port_service:
3422                    ; arguments_none
3423                    ; line_number = 33
3424                    ;  returns_nothing
3425                    ; line_number = 34
3426                    ;  exact_delay 24
3427            
3428                    ; # This procedure will service the debug port.
3429            
3430                    ; # Provide debug information:
3431                    ; before procedure statements delay=0, bit states=(data:X0=>X0 code:XX=>XX)
3432                    ; line_number = 39
3433                    ;  switch debug_counter start
3434 0319 3003          movlw   debug_port_service__31>>8
3435 031a 008a          movwf   __pclath
3436 031b 0825          movf    debug_counter,w
3437 031c 3e1e          addlw   debug_port_service__31
3438 031d 0082          movwf   __pcl
3439                    ; page_group 37
3440   031e :   debug_port_service__31:
3441 031e 2b43          goto    debug_port_service__18
3442 031f 2bae          goto    debug_port_service__30
3443 0320 2bae          goto    debug_port_service__30
3444 0321 2b49          goto    debug_port_service__19
3445 0322 2b51          goto    debug_port_service__20
3446 0323 2bae          goto    debug_port_service__30
3447 0324 2b49          goto    debug_port_service__19
3448 0325 2b51          goto    debug_port_service__20
3449 0326 2bae          goto    debug_port_service__30
3450 0327 2b49          goto    debug_port_service__19
3451 0328 2b51          goto    debug_port_service__20
3452 0329 2bae          goto    debug_port_service__30
3453 032a 2b49          goto    debug_port_service__19
3454 032b 2b51          goto    debug_port_service__20
3455 032c 2bae          goto    debug_port_service__30
3456 032d 2b49          goto    debug_port_service__19
3457 032e 2b51          goto    debug_port_service__20
3458 032f 2bae          goto    debug_port_service__30
3459 0330 2b49          goto    debug_port_service__19
3460 0331 2b51          goto    debug_port_service__20
3461 0332 2bae          goto    debug_port_service__30
3462 0333 2b49          goto    debug_port_service__19
3463 0334 2b51          goto    debug_port_service__20
3464 0335 2bae          goto    debug_port_service__30
3465 0336 2b49          goto    debug_port_service__19
3466 0337 2b51          goto    debug_port_service__20
3467 0338 2bae          goto    debug_port_service__30
3468 0339 2b49          goto    debug_port_service__19
3469 033a 2b58          goto    debug_port_service__21
3470 033b 2b5f          goto    debug_port_service__22
3471 033c 2b67          goto    debug_port_service__23
3472 033d 2b71          goto    debug_port_service__24
3473 033e 2b79          goto    debug_port_service__25
3474 033f 2b84          goto    debug_port_service__26
3475 0340 2b8e          goto    debug_port_service__27
3476 0341 2b98          goto    debug_port_service__28
3477 0342 2ba3          goto    debug_port_service__29
3478                    ; case_data[0] delay=1{0 }
3479                    ; case_data[1] delay=4{3 6 9 12 15 18 21 24 27 }
3480                    ; case_data[2] delay=3{4 7 10 13 16 19 22 25 }
3481                    ; case_data[3] delay=3{28 }
3482                    ; case_data[4] delay=5{29 }
3483                    ; case_data[5] delay=6{30 }
3484                    ; case_data[6] delay=4{31 }
3485                    ; case_data[7] delay=9{32 }
3486                    ; case_data[8] delay=7{33 }
3487                    ; case_data[9] delay=7{34 }
3488                    ; case_data[10] delay=8{35 }
3489                    ; case_data[11] delay=6{36 }
3490                    ; case_data[12] delay=0
3491                    ; Maximum Case Delay = 9
3492                    ; line_number = 40
3493                    ; case 0
3494   0343 :   debug_port_service__18:
3495                    ; # Send out start bit:
3496                    ; line_number = 42
3497                    ;  debug_out := 0
3498                    ; Delay at assignment is 0
3499 0343 1107          bcf     debug_out___byte, debug_out___bit
3500                    ; Delay 8 cycles
3501                    ; Delay loop takes 2 * 4 = 8 cycles
3502 0344 3002          movlw   2
3503   0345 :   debug_port_service__33:
3504 0345 3eff          addlw   255
3505 0346 1d03          btfss   __z___byte, __z___bit
3506 0347 2b45          goto    debug_port_service__33
3507 0348 2bb4          goto    debug_port_service__32
3508                    ; line_number = 43
3509                    ; case 3, 6, 9, 12, 15, 18, 21, 24, 27
3510   0349 :   debug_port_service__19:
3511                    ; # Send out data bit or stop bit:
3512                    ; line_number = 45
3513                    ;  if debug_character@0 start
3514                    ; Delay at if is 0
3515 00000024 = debug_port_service__select__1___byte equ debug_character
3516 00000000 = debug_port_service__select__1___bit equ 0
3517                    ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
3518                    ; CASE: true_size=1 && false_size=1
3519                    ; SUBCASE: Double test; true, then false
3520 0349 1824          btfsc   debug_port_service__select__1___byte, debug_port_service__select__1___bit
3521                    ; line_number = 46
3522                    ; debug_out := 1
3523                    ; Delay at assignment is 0
3524 034a 1507          bsf     debug_out___byte, debug_out___bit
3525 034b 1c24          btfss   debug_port_service__select__1___byte, debug_port_service__select__1___bit
3526                    ; line_number = 48
3527                    ; debug_out := 0
3528                    ; Delay at assignment is 0
3529 034c 1107          bcf     debug_out___byte, debug_out___bit
3530                    ; code.delay=4 back_code.delay=0
3531                    ; <=bit_code_emit@symbol; sym=debug_port_service__select__1 (data:X0=>X0 code:XX=>XX)
3532                    ; if final true delay=1 false delay=1 code delay=4
3533                    ; line_number = 45
3534                    ;  if debug_character@0 done
3535                    ; Delay 5 cycles
3536 034d 2b4e          goto    debug_port_service__34
3537   034e :   debug_port_service__34:
3538 034e 2b4f          goto    debug_port_service__35
3539   034f :   debug_port_service__35:
3540 034f 0000          nop     
3541 0350 2bb4          goto    debug_port_service__32
3542                    ; line_number = 49
3543                    ; case 4, 7, 10, 13, 16, 19, 22, 25
3544   0351 :   debug_port_service__20:
3545                    ; # Select next bit of debug_character:
3546                    ; line_number = 51
3547                    ;  debug_character := debug_character >> 1
3548                    ; Delay at assignment is 0
3549                    ; Assignment of variable to self (no code needed)
3550 0351 0ca4          rrf     debug_character,f
3551 0352 13a4          bcf     debug_character, 7
3552                    ; line_number = 52
3553                    ;  debug_character@7 := 1
3554                    ; Delay at assignment is 2
3555 00000024 = debug_port_service__select__2___byte equ debug_character
3556 00000007 = debug_port_service__select__2___bit equ 7
3557 0353 17a4          bsf     debug_port_service__select__2___byte, debug_port_service__select__2___bit
3558                    ; Delay 6 cycles
3559 0354 2b55          goto    debug_port_service__36
3560   0355 :   debug_port_service__36:
3561 0355 2b56          goto    debug_port_service__37
3562   0356 :   debug_port_service__37:
3563 0356 2b57          goto    debug_port_service__38
3564   0357 :   debug_port_service__38:
3565 0357 2bb4          goto    debug_port_service__32
3566                    ; line_number = 53
3567                    ; case 28
3568   0358 :   debug_port_service__21:
3569                    ; # Temporarily use {debug_character} as an index.  Note that
3570                    ; # {debug_index} is allowed to go past the end of {state} by 2
3571                    ; # (see cases 33 and 34).  These two values are overwritten
3572                    ; # latter on, so it does not matter:
3573                    ; line_number = 58
3574                    ;  debug_character := debug_index >> 1
3575                    ; Delay at assignment is 0
3576 0358 0c26          rrf     debug_index,w
3577 0359 00a4          movwf   debug_character
3578 035a 13a4          bcf     debug_character, 7
3579                    ; Delay 6 cycles
3580 035b 2b5c          goto    debug_port_service__39
3581   035c :   debug_port_service__39:
3582 035c 2b5d          goto    debug_port_service__40
3583   035d :   debug_port_service__40:
3584 035d 2b5e          goto    debug_port_service__41
3585   035e :   debug_port_service__41:
3586 035e 2bb4          goto    debug_port_service__32
3587                    ; line_number = 59
3588                    ; case 29
3589   035f :   debug_port_service__22:
3590                    ; # See previous comment about reading past the end of {state}:
3591                    ; line_number = 61
3592                    ;  debug_character := state[debug_character]
3593                    ; Delay at assignment is 0
3594 035f 0824          movf    debug_character,w
3595 0360 3e27          addlw   state
3596 0361 0084          movwf   __fsr
3597 0362 0800          movf    __indf,w
3598 0363 00a4          movwf   debug_character
3599                    ; Delay 4 cycles
3600 0364 2b65          goto    debug_port_service__42
3601   0365 :   debug_port_service__42:
3602 0365 2b66          goto    debug_port_service__43
3603   0366 :   debug_port_service__43:
3604 0366 2bb4          goto    debug_port_service__32
3605                    ; line_number = 62
3606                    ; case 30
3607   0367 :   debug_port_service__23:
3608                    ; line_number = 63
3609                    ; if !(debug_index@0) start
3610                    ; Delay at if is 0
3611 00000026 = debug_port_service__select__3___byte equ debug_index
3612 00000000 = debug_port_service__select__3___bit equ 0
3613                    ; (after recombine) true_delay=0, false_delay=3 uniform_delay=true
3614                    ; CASE: true.size=0 && false.size>1
3615                    ; bit_code_emit_helper1: body_code.size=3 true_test=false body_code.delay=3 (uniform delay)
3616 0367 1c26          btfss   debug_port_service__select__3___byte, debug_port_service__select__3___bit
3617 0368 2b6b          goto    debug_port_service__4
3618                    ; Delay 2 cycles
3619 0369 2b6a          goto    debug_port_service__6
3620   036a :   debug_port_service__6:
3621 036a 2b6e          goto    debug_port_service__5
3622   036b :   debug_port_service__4:
3623                    ; line_number = 64
3624                    ; debug_character := debug_character >> 4
3625                    ; Delay at assignment is 0
3626                    ; Assignment of variable to self (no code needed)
3627 036b 0ea4          swapf   debug_character,f
3628 036c 300f          movlw   15
3629 036d 05a4          andwf   debug_character,f
3630   036e :   debug_port_service__5:
3631                    ; code.delay=6 back_code.delay=0
3632                    ; <=bit_code_emit@symbol; sym=debug_port_service__select__3 (data:X0=>X0 code:XX=>XX)
3633                    ; if final true delay=3 false delay=0 code delay=6
3634                    ; line_number = 63
3635                    ; if !(debug_index@0) done
3636                    ; Delay 3 cycles
3637 036e 2b6f          goto    debug_port_service__44
3638   036f :   debug_port_service__44:
3639 036f 0000          nop     
3640 0370 2bb4          goto    debug_port_service__32
3641                    ; line_number = 65
3642                    ; case 31
3643   0371 :   debug_port_service__24:
3644                    ; line_number = 66
3645                    ; debug_character := (debug_character & 0xf) + '0'
3646                    ; Delay at assignment is 0
3647 0371 300f          movlw   15
3648 0372 0524          andwf   debug_character,w
3649 0373 3e30          addlw   48
3650 0374 00a4          movwf   debug_character
3651                    ; Delay 5 cycles
3652 0375 2b76          goto    debug_port_service__45
3653   0376 :   debug_port_service__45:
3654 0376 2b77          goto    debug_port_service__46
3655   0377 :   debug_port_service__46:
3656 0377 0000          nop     
3657 0378 2bb4          goto    debug_port_service__32
3658                    ; line_number = 67
3659                    ; case 32
3660   0379 :   debug_port_service__25:
3661                    ; line_number = 68
3662                    ; if debug_character > '9' start
3663                    ; Delay at if is 0
3664 0379 3039          movlw   57
3665 037a 0224          subwf   debug_character,w
3666 037b 1903          btfsc   __z___byte, __z___bit
3667 037c 1003          bcf     __c___byte, __c___bit
3668                    ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
3669                    ; CASE: true_code.size = 0 && false_code.size > 1
3670                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
3671 037d 1803          btfsc   __c___byte, __c___bit
3672 037e 2b81          goto    debug_port_service__7
3673                    ; Delay 1 cycles
3674 037f 0000          nop     
3675 0380 2b83          goto    debug_port_service__8
3676   0381 :   debug_port_service__7:
3677                    ; line_number = 69
3678                    ; debug_character := debug_character + 'A' - '0' - 10
3679                    ; Delay at assignment is 0
3680 0381 3007          movlw   7
3681 0382 07a4          addwf   debug_character,f
3682   0383 :   debug_port_service__8:
3683                    ; code.delay=9 back_code.delay=0
3684                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3685                    ; Uniform delay broke in relation_code_emit
3686                    ; if final true delay=2 false delay=0 code delay=9
3687                    ; line_number = 68
3688                    ; if debug_character > '9' done
3689 0383 2bb4          goto    debug_port_service__32
3690                    ; line_number = 70
3691                    ; case 33
3692   0384 :   debug_port_service__26:
3693                    ; # If we are beyond the end of {state}, force {debug_character}
3694                    ; # to eaither ...
3695                    ; line_number = 73
3696                    ;  if debug_index >= state_size2 start
3697                    ; Delay at if is 0
3698 0384 3038          movlw   56
3699 0385 0226          subwf   debug_index,w
3700                    ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
3701                    ; CASE: true_code.size = 0 && false_code.size > 1
3702                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
3703 0386 1803          btfsc   __c___byte, __c___bit
3704 0387 2b8a          goto    debug_port_service__9
3705                    ; Delay 1 cycles
3706 0388 0000          nop     
3707 0389 2b8c          goto    debug_port_service__10
3708   038a :   debug_port_service__9:
3709                    ; # ... a return character, or ...
3710                    ; line_number = 75
3711                    ;  debug_character := '\r\'
3712                    ; Delay at assignment is 0
3713 038a 300d          movlw   13
3714 038b 00a4          movwf   debug_character
3715   038c :   debug_port_service__10:
3716                    ; code.delay=7 back_code.delay=0
3717                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3718                    ; Uniform delay broke in relation_code_emit
3719                    ; if final true delay=2 false delay=0 code delay=7
3720                    ; line_number = 73
3721                    ;  if debug_index >= state_size2 done
3722                    ; Delay 2 cycles
3723 038c 2b8d          goto    debug_port_service__47
3724   038d :   debug_port_service__47:
3725 038d 2bb4          goto    debug_port_service__32
3726                    ; line_number = 76
3727                    ; case 34
3728   038e :   debug_port_service__27:
3729                    ; line_number = 77
3730                    ; if debug_index >= state_size2 + 1 start
3731                    ; Delay at if is 0
3732                    ; Expression is strictly a constant
3733 038e 3039          movlw   57
3734 038f 0226          subwf   debug_index,w
3735                    ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
3736                    ; CASE: true_code.size = 0 && false_code.size > 1
3737                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
3738 0390 1803          btfsc   __c___byte, __c___bit
3739 0391 2b94          goto    debug_port_service__11
3740                    ; Delay 1 cycles
3741 0392 0000          nop     
3742 0393 2b96          goto    debug_port_service__12
3743   0394 :   debug_port_service__11:
3744                    ; # Turn off cursor and blink mode:
3745                    ; # ... a cursor control command.
3746                    ; line_number = 80
3747                    ;  debug_character := 0x88
3748                    ; Delay at assignment is 0
3749 0394 3088          movlw   136
3750 0395 00a4          movwf   debug_character
3751   0396 :   debug_port_service__12:
3752                    ; code.delay=7 back_code.delay=0
3753                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3754                    ; Uniform delay broke in relation_code_emit
3755                    ; if final true delay=2 false delay=0 code delay=7
3756                    ; line_number = 77
3757                    ; if debug_index >= state_size2 + 1 done
3758                    ; Delay 2 cycles
3759 0396 2b97          goto    debug_port_service__48
3760   0397 :   debug_port_service__48:
3761 0397 2bb4          goto    debug_port_service__32
3762                    ; line_number = 81
3763                    ; case 35
3764   0398 :   debug_port_service__28:
3765                    ; # Fetch the next byte:
3766                    ; line_number = 83
3767                    ;  if debug_index >= state_size2 + 2 start
3768                    ; Delay at if is 0
3769                    ; Expression is strictly a constant
3770 0398 303a          movlw   58
3771 0399 0226          subwf   debug_index,w
3772                    ; (after recombine) true_delay=2, false_delay=1 uniform_delay=true
3773                    ; CASE: true.size>1 false.size=1; no GOTO's
3774 039a 1c03          btfss   __c___byte, __c___bit
3775 039b 2b9f          goto    debug_port_service__13
3776                    ; line_number = 84
3777                    ; debug_index := 0
3778                    ; Delay at assignment is 0
3779 039c 3000          movlw   0
3780 039d 00a6          movwf   debug_index
3781 039e 2ba1          goto    debug_port_service__14
3782   039f :   debug_port_service__13:
3783                    ; line_number = 86
3784                    ; debug_index := debug_index + 1
3785                    ; Delay at assignment is 0
3786 039f 0aa6          incf    debug_index,f
3787                    ; Delay 2 cycles
3788 03a0 2ba1          goto    debug_port_service__15
3789   03a1 :   debug_port_service__15:
3790   03a1 :   debug_port_service__14:
3791                    ; code.delay=8 back_code.delay=0
3792                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3793                    ; Uniform delay broke in relation_code_emit
3794                    ; if final true delay=2 false delay=1 code delay=8
3795                    ; line_number = 83
3796                    ;  if debug_index >= state_size2 + 2 done
3797                    ; Delay 1 cycles
3798 03a1 0000          nop     
3799 03a2 2bb4          goto    debug_port_service__32
3800                    ; line_number = 87
3801                    ; case 36
3802   03a3 :   debug_port_service__29:
3803                    ; # Do not output a character until we are in {byte_get} waiting
3804                    ; # for a start bit.  Remember, the last statement increments
3805                    ; # {debug_character}:
3806                    ; line_number = 91
3807                    ;  if waiting start
3808                    ; Delay at if is 0
3809                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
3810                    ; CASE: true_code_size > 1 && false_code_size > 1
3811                    ; true_code_size=2 false_code_size=2
3812 03a3 1cdf          btfss   waiting___byte, waiting___bit
3813 03a4 2ba8          goto    debug_port_service__16
3814                    ; # Go send the next character:
3815                    ; line_number = 93
3816                    ;  debug_counter := 0xff
3817                    ; Delay at assignment is 0
3818 03a5 30ff          movlw   255
3819 03a6 00a5          movwf   debug_counter
3820 03a7 2bab          goto    debug_port_service__17
3821   03a8 :   debug_port_service__16:
3822                    ; # Stay here until we reenter the waiting state:
3823                    ; line_number = 96
3824                    ;  debug_counter := 35
3825                    ; Delay at assignment is 0
3826 03a8 3023          movlw   35
3827 03a9 00a5          movwf   debug_counter
3828 03aa 0000          nop     
3829   03ab :   debug_port_service__17:
3830                    ; code.delay=6 back_code.delay=0
3831                    ; <=bit_code_emit@symbol; sym=waiting (data:X0=>X0 code:XX=>XX)
3832                    ; if final true delay=2 false delay=2 code delay=6
3833                    ; line_number = 91
3834                    ;  if waiting done
3835                    ; Delay 3 cycles
3836 03ab 2bac          goto    debug_port_service__49
3837   03ac :   debug_port_service__49:
3838 03ac 0000          nop     
3839 03ad 2bb4          goto    debug_port_service__32
3840                    ; line_number = 97
3841                    ; default
3842   03ae :   debug_port_service__30:
3843                    ; line_number = 98
3844                    ; do_nothing
3845                    ; Delay 9 cycles
3846                    ; Delay loop takes 2 * 4 = 8 cycles
3847 03ae 3002          movlw   2
3848   03af :   debug_port_service__50:
3849 03af 3eff          addlw   255
3850 03b0 1d03          btfss   __z___byte, __z___bit
3851 03b1 2baf          goto    debug_port_service__50
3852 03b2 0000          nop     
3853 03b3 2bb4          goto    debug_port_service__32
3854   03b4 :   debug_port_service__32:
3855                    ; switch end:(data:X0=>X? code:XX=>XX)
3856                    ; line_number = 39
3857                    ;  switch debug_counter done
3858                    ; line_number = 99
3859                    ; debug_counter := debug_counter + 1
3860                    ; Delay at assignment is 19
3861 03b4 1283          bcf     __rp0___byte, __rp0___bit
3862 03b5 0aa5          incf    debug_counter,f
3863            
3864            
3865                    ; delay after procedure statements=21
3866                    ; Delay 1 cycles
3867 03b6 0000          nop     
3868                    ; Implied return
3869 03b7 3400          retlw   0
3870                    ; Final delay = 24
3871            
3872            
3873            
3874            
3875                    ; Configuration bits
3876                    ; fill = 0x0
3877                    ; bg = bg11 (0x3000)
3878                    ; cpd = off (0x100)
3879                    ; cp = off (0x80)
3880                    ; boden = off (0x0)
3881                    ; mclre = off (0x0)
3882                    ; pwrte = off (0x10)
3883                    ; wdte = off (0x0)
3884                    ; fosc = int_no_clk (0x4)
3885                    ; 12692 = 0x3194
3886   3194 =           __config 12692
3887                    ; Define start addresses for data regions
3888                    ; Region="shared___globals" Address=32" Size=64 Bytes=58 Bits=3 Available=5
3889                    ; Region="shared___globals" Address=32" Size=64 Bytes=58 Bits=3 Available=5
3890                    ; Region="shared___globals" Address=32" Size=64 Bytes=58 Bits=3 Available=5
3891                    end
