1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 4095
3      0000 :           org     0
4                       ; #pin 7 = rc3_in, name=io7, mask=io7_mask, bit=io7_bit
5               
6                       ; Define start addresses for data regions
7    00000070 = shared___globals equ 112
8    00000020 = globals___0 equ 32
9    000000a0 = globals___1 equ 160
10   00000120 = globals___2 equ 288
11   00000000 = __indf equ 0
12   00000002 = __pcl equ 2
13   00000003 = __status equ 3
14   00000004 = __fsr equ 4
15   00000003 = __c___byte equ 3
16   00000000 = __c___bit equ 0
17   00000003 = __z___byte equ 3
18   00000002 = __z___bit equ 2
19   00000003 = __rp0___byte equ 3
20   00000005 = __rp0___bit equ 5
21   00000003 = __rp1___byte equ 3
22   00000006 = __rp1___bit equ 6
23   00000003 = __irp___byte equ 3
24   00000007 = __irp___bit equ 7
25   0000000a = __pclath equ 10
26   0000000a = __cb0___byte equ 10
27   00000003 = __cb0___bit equ 3
28   0000000a = __cb1___byte equ 10
29   00000004 = __cb1___bit equ 4
30              
31                      ; # Copyright (c) 2000-2005 by Wayne C. Gramlich
32                      ; # All rights reserved.
33              
34                      ; buffer = 'irdistance8'
35                      ; line_number = 6
36                      ; library _robobricks_pic16f688 entered
37              
38                      ; # Copyright (c) 2000-2005 by Wayne C. Gramlich and Bill Benson
39                      ; # All rights reserved.
40              
41                      ; buffer = '_robobricks_pic16f688'
42                      ; line_number = 6
43                      ; library _pic16f688 entered
44                      ; # Copyright (c) 2004 by Wayne C. Gramlich
45                      ; # All rights reserved.
46              
47                      ; buffer = '_pic16f688'
48                      ; line_number = 5
49                      ; processor pic16f688
50                      ; line_number = 6
51                      ; configure_address 0x2007
52                      ; line_number = 7
53                      ;  configure_fill 0x3000
54                      ; line_number = 8
55                      ;  configure_option fcmen: on = 0x800
56                      ; line_number = 9
57                      ;  configure_option fcmen: off = 0x000
58                      ; line_number = 10
59                      ;  configure_option ieso: on = 0x400
60                      ; line_number = 11
61                      ;  configure_option ieso: off = 0x000
62                      ; line_number = 12
63                      ;  configure_option boden: on = 0x300
64                      ; line_number = 13
65                      ;  configure_option boden: partial = 0x200
66                      ; line_number = 14
67                      ;  configure_option boden: sboden = 0x100
68                      ; line_number = 15
69                      ;  configure_option boden: off = 0x000
70                      ; line_number = 16
71                      ;  configure_option cpd: on = 0x00
72                      ; line_number = 17
73                      ;  configure_option cpd: off = 0x80
74                      ; line_number = 18
75                      ;  configure_option cp: on = 0x00
76                      ; line_number = 19
77                      ;  configure_option cp: off = 0x40
78                      ; line_number = 20
79                      ;  configure_option mclre: on = 0x20
80                      ; line_number = 21
81                      ;  configure_option mclre: off = 0x20
82                      ; line_number = 22
83                      ;  configure_option pwrte: on = 0x00
84                      ; line_number = 23
85                      ;  configure_option pwrte: off = 0x10
86                      ; line_number = 24
87                      ;  configure_option wdte: on = 8
88                      ; line_number = 25
89                      ;  configure_option wdte: off = 0
90                      ; line_number = 26
91                      ;  configure_option fosc: rc_clk = 7
92                      ; line_number = 27
93                      ;  configure_option fosc: rc_no_clk = 6
94                      ; line_number = 28
95                      ;  configure_option fosc: int_clk = 5
96                      ; line_number = 29
97                      ;  configure_option fosc: int_no_clk = 4
98                      ; line_number = 30
99                      ;  configure_option fosc: ec = 3
100                     ; line_number = 31
101                     ;  configure_option fosc: hs = 2
102                     ; line_number = 32
103                     ;  configure_option fosc: xt = 1
104                     ; line_number = 33
105                     ;  configure_option fosc: lp = 0
106             
107                     ; line_number = 35
108                     ;  code_bank 0x0 : 0xfff
109                     ; line_number = 36
110                     ;  data_bank 0x0 : 0x7f
111                     ; line_number = 37
112                     ;  data_bank 0x80 : 0xff
113                     ; line_number = 38
114                     ;  data_bank 0x100 : 0x17f
115                     ; line_number = 39
116                     ;  data_bank 0x180 : 0x1ff
117                     ; line_number = 40
118                     ;  global_region 0x20 : 0x6f
119                     ; line_number = 41
120                     ;  global_region 0xa0 : 0xef
121                     ; line_number = 42
122                     ;  global_region 0x120 : 0x16f
123                     ; line_number = 43
124                     ;  shared_region 0x70 : 0x7f
125                     ; line_number = 44
126                     ;  interrupts_possible
127                     ; line_number = 45
128                     ;  packages pdip=14, soic=14, tssop=14
129                     ; line_number = 46
130                     ;  pin vdd, power_supply
131                     ; line_number = 47
132                     ; pin_bindings pdip=1, soic=1, tssop=1
133                     ; line_number = 48
134                     ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin
135                     ; line_number = 49
136                     ; pin_bindings pdip=2, soic=2, tssop=2
137                     ; line_number = 50
138                     ;  bind_to _porta@5
139                     ; line_number = 51
140                     ;  or_if ra5_in _trisa 32
141                     ; line_number = 52
142                     ;  or_if ra5_nc _trisa 32
143                     ; line_number = 53
144                     ;  or_if ra5_out _trisa 0
145                     ; line_number = 54
146                     ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout
147                     ; line_number = 55
148                     ; pin_bindings pdip=3, soic=3, tssop=3
149                     ; line_number = 56
150                     ;  bind_to _porta@4
151                     ; line_number = 57
152                     ;  or_if ra4_in _trisa 16
153                     ; line_number = 58
154                     ;  or_if ra4_nc _trisa 16
155                     ; line_number = 59
156                     ;  or_if ra4_out _trisa 0
157                     ; line_number = 60
158                     ;  or_if an3 _trisa 8
159                     ; line_number = 61
160                     ;  or_if ra4_in _ansel 0
161                     ; line_number = 62
162                     ;  or_if ra4_out _ansel 0
163                     ; line_number = 63
164                     ;  or_if an3 _ansel 8
165                     ; line_number = 64
166                     ;  or_if ra4_in _adcon0 0
167                     ; line_number = 65
168                     ;  or_if ra4_out _adcon0 0
169                     ; line_number = 66
170                     ;  or_if an3 _adcon0 1
171                     ; line_number = 67
172                     ; pin ra3_in, ra3_nc, mclr, vpp
173                     ; line_number = 68
174                     ; pin_bindings pdip=4, soic=4, tssop=4
175                     ; line_number = 69
176                     ;  bind_to _porta@4
177                     ; line_number = 70
178                     ;  or_if ra3_in _trisa 8
179                     ; line_number = 71
180                     ;  or_if ra3_nc _trisa 8
181                     ; line_number = 72
182                     ; pin rc5_in, rc5_nc, rc5_out, rx, dt
183                     ; line_number = 73
184                     ; pin_bindings pdip=5, soic=5, tssop=5
185                     ; line_number = 74
186                     ;  bind_to _portc@5
187                     ; line_number = 75
188                     ;  or_if rc5_in _trisc 32
189                     ; line_number = 76
190                     ;  or_if rc5_nc _trisc 32
191                     ; line_number = 77
192                     ;  or_if rc5_out _trisc 0
193                     ; line_number = 78
194                     ;  or_if rx _trisc 32
195                     ; line_number = 79
196                     ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck
197                     ; line_number = 80
198                     ; pin_bindings pdip=6, soic=6, tssop=6
199                     ; line_number = 81
200                     ;  bind_to _portc@4
201                     ; line_number = 82
202                     ;  or_if rc4_in _trisc 16
203                     ; line_number = 83
204                     ;  or_if rc4_nc _trisc 16
205                     ; line_number = 84
206                     ;  or_if rc4_out _trisc 0
207                     ; # The UART documentation says TX must be marked as in input:
208                     ; line_number = 86
209                     ;  or_if tx _trisc 16
210                     ; line_number = 87
211                     ; pin rc3_in, rc3_nc, rc3_out, an7
212                     ; line_number = 88
213                     ; pin_bindings pdip=7, soic=7, tssop=7
214                     ; line_number = 89
215                     ;  bind_to _portc@3
216                     ; line_number = 90
217                     ;  or_if rc3_in _trisc 8
218                     ; line_number = 91
219                     ;  or_if rc3_nc _trisc 8
220                     ; line_number = 92
221                     ;  or_if rc3_out _trisc 0
222                     ; line_number = 93
223                     ;  or_if an7 _trisc 8
224                     ; line_number = 94
225                     ;  or_if rc3_in _ansel 0
226                     ; line_number = 95
227                     ;  or_if rc3_out _ansel 0
228                     ; line_number = 96
229                     ;  or_if an7 _ansel 128
230                     ; line_number = 97
231                     ;  or_if rc3_in _adcon0 0
232                     ; line_number = 98
233                     ;  or_if rc3_out _adcon0 0
234                     ; line_number = 99
235                     ;  or_if an7 _adcon0 1
236                     ; line_number = 100
237                     ; pin rc2_in, rc2_nc, rc2_out, an6
238                     ; line_number = 101
239                     ; pin_bindings pdip=8, soic=8, tssop=8
240                     ; line_number = 102
241                     ;  bind_to _portc@2
242                     ; line_number = 103
243                     ;  or_if rc2_in _trisc 4
244                     ; line_number = 104
245                     ;  or_if rc2_nc _trisc 4
246                     ; line_number = 105
247                     ;  or_if rc2_out _trisc 0
248                     ; line_number = 106
249                     ;  or_if an6 _trisc 4
250                     ; line_number = 107
251                     ;  or_if rc2_in _ansel 0
252                     ; line_number = 108
253                     ;  or_if rc2_out _ansel 0
254                     ; line_number = 109
255                     ;  or_if an6 _ansel 64
256                     ; line_number = 110
257                     ;  or_if rc2_in _adcon0 0
258                     ; line_number = 111
259                     ;  or_if rc2_out _adcon0 0
260                     ; line_number = 112
261                     ;  or_if an6 _adcon0 1
262                     ; line_number = 113
263                     ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus
264                     ; line_number = 114
265                     ; pin_bindings pdip=9, soic=9, tssop=9
266                     ; line_number = 115
267                     ;  bind_to _portc@1
268                     ; line_number = 116
269                     ;  or_if rc1_in _trisc 2
270                     ; line_number = 117
271                     ;  or_if rc1_nc _trisc 2
272                     ; line_number = 118
273                     ;  or_if rc1_out _trisc 0
274                     ; line_number = 119
275                     ;  or_if rc1_in _cmcon0 7
276                     ; line_number = 120
277                     ;  or_if rc1_out _cmcon0 7
278                     ; line_number = 121
279                     ;  or_if an5 _trisc 2
280                     ; line_number = 122
281                     ;  or_if rc1_in _ansel 0
282                     ; line_number = 123
283                     ;  or_if rc1_out _ansel 0
284                     ; line_number = 124
285                     ;  or_if an5 _ansel 32
286                     ; line_number = 125
287                     ;  or_if rc1_in _adcon0 0
288                     ; line_number = 126
289                     ;  or_if rc1_out _adcon0 0
290                     ; line_number = 127
291                     ;  or_if an5 _adcon0 1
292                     ; line_number = 128
293                     ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus
294                     ; line_number = 129
295                     ; pin_bindings pdip=10, soic=10, tssop=10
296                     ; line_number = 130
297                     ;  bind_to _portc@0
298                     ; line_number = 131
299                     ;  or_if rc0_in _trisc 1
300                     ; line_number = 132
301                     ;  or_if rc0_nc _trisc 1
302                     ; line_number = 133
303                     ;  or_if rc0_out _trisc 0
304                     ; line_number = 134
305                     ;  or_if rc0_in _cmcon0 7
306                     ; line_number = 135
307                     ;  or_if rc0_out _cmcon0 7
308                     ; line_number = 136
309                     ;  or_if an4 _trisc 1
310                     ; line_number = 137
311                     ;  or_if rc0_in _ansel 0
312                     ; line_number = 138
313                     ;  or_if rc0_out _ansel 0
314                     ; line_number = 139
315                     ;  or_if an4 _ansel 16
316                     ; line_number = 140
317                     ;  or_if rc0_in _adcon0 0
318                     ; line_number = 141
319                     ;  or_if rc0_out _adcon0 0
320                     ; line_number = 142
321                     ;  or_if an4 _adcon0 1
322                     ; line_number = 143
323                     ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int
324                     ; line_number = 144
325                     ; pin_bindings pdip=11, soic=11, tssop=11
326                     ; line_number = 145
327                     ;  bind_to _porta@2
328                     ; line_number = 146
329                     ;  or_if ra2_in _trisa 4
330                     ; line_number = 147
331                     ;  or_if ra2_nc _trisa 4
332                     ; line_number = 148
333                     ;  or_if ra2_out _trisa 0
334                     ; line_number = 149
335                     ;  or_if an2 _trisa 4
336                     ; line_number = 150
337                     ;  or_if ra2_in _ansel 0
338                     ; line_number = 151
339                     ;  or_if ra2_out _ansel 0
340                     ; line_number = 152
341                     ;  or_if an2 _ansel 4
342                     ; line_number = 153
343                     ;  or_if ra2_in _adcon0 0
344                     ; line_number = 154
345                     ;  or_if ra2_out _adcon0 0
346                     ; line_number = 155
347                     ;  or_if an2 _adcon0 1
348                     ; line_number = 156
349                     ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk
350                     ; line_number = 157
351                     ; pin_bindings pdip=12, soic=12, tssop=12
352                     ; line_number = 158
353                     ;  bind_to _porta@1
354                     ; line_number = 159
355                     ;  or_if ra1_in _trisa 2
356                     ; line_number = 160
357                     ;  or_if ra1_nc _trisa 2
358                     ; line_number = 161
359                     ;  or_if ra1_out _trisa 0
360                     ; line_number = 162
361                     ;  or_if ra1_in _cmcon0 7
362                     ; line_number = 163
363                     ;  or_if ra1_out _cmcon0 7
364                     ; line_number = 164
365                     ;  or_if an1 _trisa 2
366                     ; line_number = 165
367                     ;  or_if ra1_in _ansel 0
368                     ; line_number = 166
369                     ;  or_if ra1_out _ansel 0
370                     ; line_number = 167
371                     ;  or_if an1 _ansel 2
372                     ; line_number = 168
373                     ;  or_if ra1_in _adcon0 0
374                     ; line_number = 169
375                     ;  or_if ra1_out _adcon0 0
376                     ; line_number = 170
377                     ;  or_if an1 _adcon0 1
378                     ; line_number = 171
379                     ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu
380                     ; line_number = 172
381                     ; pin_bindings pdip=13, soic=13, tssop=13
382                     ; line_number = 173
383                     ;  bind_to _porta@0
384                     ; line_number = 174
385                     ;  or_if ra0_in _trisa 1
386                     ; line_number = 175
387                     ;  or_if ra0_nc _trisa 1
388                     ; line_number = 176
389                     ;  or_if ra0_out _trisa 0
390                     ; line_number = 177
391                     ;  or_if ra0_in _cmcon0 7
392                     ; line_number = 178
393                     ;  or_if ra0_out _cmcon0 7
394                     ; line_number = 179
395                     ;  or_if an0 _trisa 1
396                     ; line_number = 180
397                     ;  or_if ra0_in _ansel 0
398                     ; line_number = 181
399                     ;  or_if ra0_out _ansel 0
400                     ; line_number = 182
401                     ;  or_if an0 _ansel 1
402                     ; line_number = 183
403                     ;  or_if ra0_in _adcon0 0
404                     ; line_number = 184
405                     ;  or_if ra0_out _adcon0 0
406                     ; line_number = 185
407                     ;  or_if an0 _adcon0 1
408                     ; line_number = 186
409                     ; pin vss, ground
410                     ; line_number = 187
411                     ; pin_bindings pdip=14, soic=14, tssop=14
412             
413             
414                     ; # Register/bit bindings:
415             
416                     ; # Databank 0 (0x0 - 0x7f):
417             
418                     ; line_number = 196
419                     ; register _indf = 
420  00000000 = _indf equ 0
421             
422                     ; line_number = 198
423                     ; register _tmr0 = 
424  00000001 = _tmr0 equ 1
425             
426                     ; line_number = 200
427                     ; register _pcl = 
428  00000002 = _pcl equ 2
429             
430                     ; line_number = 202
431                     ; register _status = 
432  00000003 = _status equ 3
433                     ; line_number = 203
434                     ; bind _irp = _status@7
435  00000003 = _irp___byte equ _status
436  00000007 = _irp___bit equ 7
437                     ; line_number = 204
438                     ; bind _rp1 = _status@5
439  00000003 = _rp1___byte equ _status
440  00000005 = _rp1___bit equ 5
441                     ; line_number = 205
442                     ; bind _rp0 = _status@5
443  00000003 = _rp0___byte equ _status
444  00000005 = _rp0___bit equ 5
445                     ; line_number = 206
446                     ; bind _to = _status@4
447  00000003 = _to___byte equ _status
448  00000004 = _to___bit equ 4
449                     ; line_number = 207
450                     ; bind _pd = _status@3
451  00000003 = _pd___byte equ _status
452  00000003 = _pd___bit equ 3
453                     ; line_number = 208
454                     ; bind _z = _status@2
455  00000003 = _z___byte equ _status
456  00000002 = _z___bit equ 2
457                     ; line_number = 209
458                     ; bind _dc = _status@1
459  00000003 = _dc___byte equ _status
460  00000001 = _dc___bit equ 1
461                     ; line_number = 210
462                     ; bind _c = _status@0
463  00000003 = _c___byte equ _status
464  00000000 = _c___bit equ 0
465             
466                     ; line_number = 212
467                     ; register _fsr = 
468  00000004 = _fsr equ 4
469             
470                     ; line_number = 214
471                     ; register _porta = 
472  00000005 = _porta equ 5
473                     ; line_number = 215
474                     ; register _ra = 
475  00000005 = _ra equ 5
476                     ; line_number = 216
477                     ; bind _ra5 = _porta@5
478  00000005 = _ra5___byte equ _porta
479  00000005 = _ra5___bit equ 5
480                     ; line_number = 217
481                     ; bind _ra4 = _porta@4
482  00000005 = _ra4___byte equ _porta
483  00000004 = _ra4___bit equ 4
484                     ; line_number = 218
485                     ; bind _ra3 = _porta@3
486  00000005 = _ra3___byte equ _porta
487  00000003 = _ra3___bit equ 3
488                     ; line_number = 219
489                     ; bind _ra2 = _porta@2
490  00000005 = _ra2___byte equ _porta
491  00000002 = _ra2___bit equ 2
492                     ; line_number = 220
493                     ; bind _ra1 = _porta@1
494  00000005 = _ra1___byte equ _porta
495  00000001 = _ra1___bit equ 1
496                     ; line_number = 221
497                     ; bind _ra0 = _porta@0
498  00000005 = _ra0___byte equ _porta
499  00000000 = _ra0___bit equ 0
500             
501                     ; line_number = 223
502                     ; register _portc = 
503  00000007 = _portc equ 7
504                     ; line_number = 224
505                     ; register _rc = 
506  00000007 = _rc equ 7
507                     ; line_number = 225
508                     ; bind _rc5 = _portc@5
509  00000007 = _rc5___byte equ _portc
510  00000005 = _rc5___bit equ 5
511                     ; line_number = 226
512                     ; bind _rc4 = _portc@4
513  00000007 = _rc4___byte equ _portc
514  00000004 = _rc4___bit equ 4
515                     ; line_number = 227
516                     ; bind _rc3 = _portc@3
517  00000007 = _rc3___byte equ _portc
518  00000003 = _rc3___bit equ 3
519                     ; line_number = 228
520                     ; bind _rc2 = _portc@2
521  00000007 = _rc2___byte equ _portc
522  00000002 = _rc2___bit equ 2
523                     ; line_number = 229
524                     ; bind _rc1 = _portc@1
525  00000007 = _rc1___byte equ _portc
526  00000001 = _rc1___bit equ 1
527                     ; line_number = 230
528                     ; bind _rc0 = _portc@0
529  00000007 = _rc0___byte equ _portc
530  00000000 = _rc0___bit equ 0
531             
532                     ; line_number = 232
533                     ; register _pclath = 
534  0000000a = _pclath equ 10
535             
536                     ; line_number = 234
537                     ; register _intcon = 
538  0000000b = _intcon equ 11
539                     ; line_number = 235
540                     ; bind _gie = _intcon@7
541  0000000b = _gie___byte equ _intcon
542  00000007 = _gie___bit equ 7
543                     ; line_number = 236
544                     ; bind _peie = _intcon@6
545  0000000b = _peie___byte equ _intcon
546  00000006 = _peie___bit equ 6
547                     ; line_number = 237
548                     ; bind _t0ie = _intcon@5
549  0000000b = _t0ie___byte equ _intcon
550  00000005 = _t0ie___bit equ 5
551                     ; line_number = 238
552                     ; bind _inte = _intcon@4
553  0000000b = _inte___byte equ _intcon
554  00000004 = _inte___bit equ 4
555                     ; line_number = 239
556                     ; bind _raie = _intcon@3
557  0000000b = _raie___byte equ _intcon
558  00000003 = _raie___bit equ 3
559                     ; line_number = 240
560                     ; bind _t0if = _intcon@2
561  0000000b = _t0if___byte equ _intcon
562  00000002 = _t0if___bit equ 2
563                     ; line_number = 241
564                     ; bind _intf = _intcon@1
565  0000000b = _intf___byte equ _intcon
566  00000001 = _intf___bit equ 1
567                     ; line_number = 242
568                     ; bind _raif = _intcon@0
569  0000000b = _raif___byte equ _intcon
570  00000000 = _raif___bit equ 0
571             
572                     ; line_number = 244
573                     ; register _pir1 = 
574  0000000c = _pir1 equ 12
575                     ; line_number = 245
576                     ; bind _eeif = _pir1@7
577  0000000c = _eeif___byte equ _pir1
578  00000007 = _eeif___bit equ 7
579                     ; line_number = 246
580                     ; bind _adif = _pir1@6
581  0000000c = _adif___byte equ _pir1
582  00000006 = _adif___bit equ 6
583                     ; line_number = 247
584                     ; bind _rcif = _pir1@5
585  0000000c = _rcif___byte equ _pir1
586  00000005 = _rcif___bit equ 5
587                     ; line_number = 248
588                     ; bind _c2if = _pir1@4
589  0000000c = _c2if___byte equ _pir1
590  00000004 = _c2if___bit equ 4
591                     ; line_number = 249
592                     ; bind _c1if = _pir1@3
593  0000000c = _c1if___byte equ _pir1
594  00000003 = _c1if___bit equ 3
595                     ; line_number = 250
596                     ; bind _osfif = _pir1@2
597  0000000c = _osfif___byte equ _pir1
598  00000002 = _osfif___bit equ 2
599                     ; line_number = 251
600                     ; bind _txif = _pir1@1
601  0000000c = _txif___byte equ _pir1
602  00000001 = _txif___bit equ 1
603                     ; line_number = 252
604                     ; bind _tmr1if = _pir1@0
605  0000000c = _tmr1if___byte equ _pir1
606  00000000 = _tmr1if___bit equ 0
607             
608                     ; line_number = 254
609                     ; register _tmr1l = 
610  0000000e = _tmr1l equ 14
611             
612                     ; line_number = 256
613                     ; register _tmr1h = 
614  0000000f = _tmr1h equ 15
615             
616                     ; line_number = 258
617                     ; register _t1con = 
618  00000010 = _t1con equ 16
619                     ; line_number = 259
620                     ; bind t1ginv = _t1con@7
621  00000010 = t1ginv___byte equ _t1con
622  00000007 = t1ginv___bit equ 7
623                     ; line_number = 260
624                     ; bind _tmr1ge = _t1con@6
625  00000010 = _tmr1ge___byte equ _t1con
626  00000006 = _tmr1ge___bit equ 6
627                     ; line_number = 261
628                     ; bind _t1ckps1 = _t1con@5
629  00000010 = _t1ckps1___byte equ _t1con
630  00000005 = _t1ckps1___bit equ 5
631                     ; line_number = 262
632                     ; bind _t1ckps0 = _t1con@4
633  00000010 = _t1ckps0___byte equ _t1con
634  00000004 = _t1ckps0___bit equ 4
635                     ; line_number = 263
636                     ; bind _t1oscen = _t1con@3
637  00000010 = _t1oscen___byte equ _t1con
638  00000003 = _t1oscen___bit equ 3
639                     ; line_number = 264
640                     ; bind _t1sync = _t1con@2
641  00000010 = _t1sync___byte equ _t1con
642  00000002 = _t1sync___bit equ 2
643                     ; line_number = 265
644                     ; bind _tmr1cs = _t1con@1
645  00000010 = _tmr1cs___byte equ _t1con
646  00000001 = _tmr1cs___bit equ 1
647                     ; line_number = 266
648                     ; bind _tmr1on = _t1con@0
649  00000010 = _tmr1on___byte equ _t1con
650  00000000 = _tmr1on___bit equ 0
651             
652                     ; line_number = 268
653                     ; register _baudctl = 
654  00000011 = _baudctl equ 17
655                     ; line_number = 269
656                     ; bind _abdovf = _baudctl@7
657  00000011 = _abdovf___byte equ _baudctl
658  00000007 = _abdovf___bit equ 7
659                     ; line_number = 270
660                     ; bind _rcidl = _baudctl@6
661  00000011 = _rcidl___byte equ _baudctl
662  00000006 = _rcidl___bit equ 6
663                     ; line_number = 271
664                     ; bind _sckp = _baudctl@4
665  00000011 = _sckp___byte equ _baudctl
666  00000004 = _sckp___bit equ 4
667                     ; line_number = 272
668                     ; bind _brg16 = _baudctl@3
669  00000011 = _brg16___byte equ _baudctl
670  00000003 = _brg16___bit equ 3
671                     ; line_number = 273
672                     ; bind _wue = _baudctl@1
673  00000011 = _wue___byte equ _baudctl
674  00000001 = _wue___bit equ 1
675                     ; line_number = 274
676                     ; bind _abden = _baudctl@0
677  00000011 = _abden___byte equ _baudctl
678  00000000 = _abden___bit equ 0
679             
680                     ; line_number = 276
681                     ; register _spbrgh = 
682  00000012 = _spbrgh equ 18
683             
684                     ; line_number = 278
685                     ; register _spbrg = 
686  00000013 = _spbrg equ 19
687             
688                     ; line_number = 280
689                     ; register _rcreg = 
690  00000014 = _rcreg equ 20
691             
692                     ; line_number = 282
693                     ; register _txreg = 
694  00000015 = _txreg equ 21
695             
696                     ; line_number = 284
697                     ; register _txsta = 
698  00000016 = _txsta equ 22
699                     ; line_number = 285
700                     ; bind _csrc = _txsta@7
701  00000016 = _csrc___byte equ _txsta
702  00000007 = _csrc___bit equ 7
703                     ; line_number = 286
704                     ; bind _tx9 = _txsta@6
705  00000016 = _tx9___byte equ _txsta
706  00000006 = _tx9___bit equ 6
707                     ; line_number = 287
708                     ; bind _txen = _txsta@5
709  00000016 = _txen___byte equ _txsta
710  00000005 = _txen___bit equ 5
711                     ; line_number = 288
712                     ; bind _sync = _txsta@4
713  00000016 = _sync___byte equ _txsta
714  00000004 = _sync___bit equ 4
715                     ; line_number = 289
716                     ; bind _sendb = _txsta@3
717  00000016 = _sendb___byte equ _txsta
718  00000003 = _sendb___bit equ 3
719                     ; line_number = 290
720                     ; bind _brgh = _txsta@2
721  00000016 = _brgh___byte equ _txsta
722  00000002 = _brgh___bit equ 2
723                     ; line_number = 291
724                     ; bind _trmt = _txsta@1
725  00000016 = _trmt___byte equ _txsta
726  00000001 = _trmt___bit equ 1
727                     ; line_number = 292
728                     ; bind _tx9d = _txsta@7
729  00000016 = _tx9d___byte equ _txsta
730  00000007 = _tx9d___bit equ 7
731             
732                     ; line_number = 294
733                     ; register _rcsta = 
734  00000017 = _rcsta equ 23
735                     ; line_number = 295
736                     ; bind _spen = _rcsta@7
737  00000017 = _spen___byte equ _rcsta
738  00000007 = _spen___bit equ 7
739                     ; line_number = 296
740                     ; bind _rx9 = _rcsta@6
741  00000017 = _rx9___byte equ _rcsta
742  00000006 = _rx9___bit equ 6
743                     ; line_number = 297
744                     ; bind _sren = _rcsta@5
745  00000017 = _sren___byte equ _rcsta
746  00000005 = _sren___bit equ 5
747                     ; line_number = 298
748                     ; bind _cren = _rcsta@4
749  00000017 = _cren___byte equ _rcsta
750  00000004 = _cren___bit equ 4
751                     ; line_number = 299
752                     ; bind _adden = _rcsta@3
753  00000017 = _adden___byte equ _rcsta
754  00000003 = _adden___bit equ 3
755                     ; line_number = 300
756                     ; bind _ferr = _rcsta@2
757  00000017 = _ferr___byte equ _rcsta
758  00000002 = _ferr___bit equ 2
759                     ; line_number = 301
760                     ; bind _oerr = _rcsta@1
761  00000017 = _oerr___byte equ _rcsta
762  00000001 = _oerr___bit equ 1
763                     ; line_number = 302
764                     ; bind _rx9d = _rcsta@0
765  00000017 = _rx9d___byte equ _rcsta
766  00000000 = _rx9d___bit equ 0
767             
768                     ; line_number = 304
769                     ; register _wdtcon = 
770  00000018 = _wdtcon equ 24
771                     ; line_number = 305
772                     ; bind _wdtps3 = _wdtcon@4
773  00000018 = _wdtps3___byte equ _wdtcon
774  00000004 = _wdtps3___bit equ 4
775                     ; line_number = 306
776                     ; bind _wdtps2 = _wdtcon@3
777  00000018 = _wdtps2___byte equ _wdtcon
778  00000003 = _wdtps2___bit equ 3
779                     ; line_number = 307
780                     ; bind _wdtps1 = _wdtcon@2
781  00000018 = _wdtps1___byte equ _wdtcon
782  00000002 = _wdtps1___bit equ 2
783                     ; line_number = 308
784                     ; bind _wdtps0 = _wdtcon@1
785  00000018 = _wdtps0___byte equ _wdtcon
786  00000001 = _wdtps0___bit equ 1
787                     ; line_number = 309
788                     ; bind _swdten = _wdtcon@0
789  00000018 = _swdten___byte equ _wdtcon
790  00000000 = _swdten___bit equ 0
791             
792                     ; line_number = 311
793                     ; register _cmcon0 = 
794  00000019 = _cmcon0 equ 25
795                     ; line_number = 312
796                     ; bind _c1out = _cmcon0@7
797  00000019 = _c1out___byte equ _cmcon0
798  00000007 = _c1out___bit equ 7
799                     ; line_number = 313
800                     ; bind _c2out = _cmcon0@6
801  00000019 = _c2out___byte equ _cmcon0
802  00000006 = _c2out___bit equ 6
803                     ; line_number = 314
804                     ; bind _c1inv = _cmcon0@5
805  00000019 = _c1inv___byte equ _cmcon0
806  00000005 = _c1inv___bit equ 5
807                     ; line_number = 315
808                     ; bind _c2inv = _cmcon0@4
809  00000019 = _c2inv___byte equ _cmcon0
810  00000004 = _c2inv___bit equ 4
811                     ; line_number = 316
812                     ; bind _cis = _cmcon0@3
813  00000019 = _cis___byte equ _cmcon0
814  00000003 = _cis___bit equ 3
815                     ; line_number = 317
816                     ; bind _cm2 = _cmcon0@2
817  00000019 = _cm2___byte equ _cmcon0
818  00000002 = _cm2___bit equ 2
819                     ; line_number = 318
820                     ; bind _cm1 = _cmcon0@1
821  00000019 = _cm1___byte equ _cmcon0
822  00000001 = _cm1___bit equ 1
823                     ; line_number = 319
824                     ; bind _cm0 = _cmcon0@0
825  00000019 = _cm0___byte equ _cmcon0
826  00000000 = _cm0___bit equ 0
827             
828                     ; line_number = 321
829                     ; register _cmcon1 = 
830  0000001a = _cmcon1 equ 26
831                     ; line_number = 322
832                     ; bind _t1gss = _cmcon1@0
833  0000001a = _t1gss___byte equ _cmcon1
834  00000000 = _t1gss___bit equ 0
835                     ; line_number = 323
836                     ; bind _c2sync = _cmcon1@1
837  0000001a = _c2sync___byte equ _cmcon1
838  00000001 = _c2sync___bit equ 1
839             
840                     ; line_number = 325
841                     ; register _adresh = 
842  0000001e = _adresh equ 30
843             
844                     ; line_number = 327
845                     ; register _adcon0 = 
846  0000001f = _adcon0 equ 31
847                     ; line_number = 328
848                     ; bind _adfm = _adcon0@7
849  0000001f = _adfm___byte equ _adcon0
850  00000007 = _adfm___bit equ 7
851                     ; line_number = 329
852                     ; bind _vcfg = _adcon0@6
853  0000001f = _vcfg___byte equ _adcon0
854  00000006 = _vcfg___bit equ 6
855                     ; line_number = 330
856                     ; bind _chs2 = _adcon0@4
857  0000001f = _chs2___byte equ _adcon0
858  00000004 = _chs2___bit equ 4
859                     ; line_number = 331
860                     ; bind _chs1 = _adcon0@3
861  0000001f = _chs1___byte equ _adcon0
862  00000003 = _chs1___bit equ 3
863                     ; line_number = 332
864                     ; bind _chs0 = _adcon0@2
865  0000001f = _chs0___byte equ _adcon0
866  00000002 = _chs0___bit equ 2
867                     ; line_number = 333
868                     ; bind _go = _adcon0@1
869  0000001f = _go___byte equ _adcon0
870  00000001 = _go___bit equ 1
871                     ; line_number = 334
872                     ; bind _adon = _adcon0@0
873  0000001f = _adon___byte equ _adcon0
874  00000000 = _adon___bit equ 0
875             
876                     ; # Data bank 1 (0x80-0xff):
877             
878                     ; line_number = 338
879                     ; register _option_reg = 
880  00000081 = _option_reg equ 129
881                     ; line_number = 339
882                     ; bind _rapu = _option_reg@7
883  00000081 = _rapu___byte equ _option_reg
884  00000007 = _rapu___bit equ 7
885                     ; line_number = 340
886                     ; bind _intedg = _option_reg@6
887  00000081 = _intedg___byte equ _option_reg
888  00000006 = _intedg___bit equ 6
889                     ; line_number = 341
890                     ; bind _t0cs = _option_reg@5
891  00000081 = _t0cs___byte equ _option_reg
892  00000005 = _t0cs___bit equ 5
893                     ; line_number = 342
894                     ; bind _t0se = _option_reg@4
895  00000081 = _t0se___byte equ _option_reg
896  00000004 = _t0se___bit equ 4
897                     ; line_number = 343
898                     ; bind _psa = _option_reg@3
899  00000081 = _psa___byte equ _option_reg
900  00000003 = _psa___bit equ 3
901                     ; line_number = 344
902                     ; bind _ps2 = _option_reg@2
903  00000081 = _ps2___byte equ _option_reg
904  00000002 = _ps2___bit equ 2
905                     ; line_number = 345
906                     ; bind _ps1 = _option_reg@1
907  00000081 = _ps1___byte equ _option_reg
908  00000001 = _ps1___bit equ 1
909                     ; line_number = 346
910                     ; bind _ps0 = _option_reg@0
911  00000081 = _ps0___byte equ _option_reg
912  00000000 = _ps0___bit equ 0
913             
914                     ; line_number = 348
915                     ; register _trisa = 
916  00000085 = _trisa equ 133
917                     ; line_number = 349
918                     ; bind _trisa5 = _trisa@5
919  00000085 = _trisa5___byte equ _trisa
920  00000005 = _trisa5___bit equ 5
921                     ; line_number = 350
922                     ; bind _trisa4 = _trisa@4
923  00000085 = _trisa4___byte equ _trisa
924  00000004 = _trisa4___bit equ 4
925                     ; line_number = 351
926                     ; bind _trisa3 = _trisa@3
927  00000085 = _trisa3___byte equ _trisa
928  00000003 = _trisa3___bit equ 3
929                     ; line_number = 352
930                     ; bind _trisa2 = _trisa@2
931  00000085 = _trisa2___byte equ _trisa
932  00000002 = _trisa2___bit equ 2
933                     ; line_number = 353
934                     ; bind _trisa1 = _trisa@1
935  00000085 = _trisa1___byte equ _trisa
936  00000001 = _trisa1___bit equ 1
937                     ; line_number = 354
938                     ; bind _trisa0 = _trisa@0
939  00000085 = _trisa0___byte equ _trisa
940  00000000 = _trisa0___bit equ 0
941             
942                     ; line_number = 356
943                     ; register _trisc = 
944  00000087 = _trisc equ 135
945                     ; line_number = 357
946                     ; bind _trisc5 = _trisc@5
947  00000087 = _trisc5___byte equ _trisc
948  00000005 = _trisc5___bit equ 5
949                     ; line_number = 358
950                     ; bind _trisc4 = _trisc@4
951  00000087 = _trisc4___byte equ _trisc
952  00000004 = _trisc4___bit equ 4
953                     ; line_number = 359
954                     ; bind _trisc3 = _trisc@3
955  00000087 = _trisc3___byte equ _trisc
956  00000003 = _trisc3___bit equ 3
957                     ; line_number = 360
958                     ; bind _trisc2 = _trisc@2
959  00000087 = _trisc2___byte equ _trisc
960  00000002 = _trisc2___bit equ 2
961                     ; line_number = 361
962                     ; bind _trisc1 = _trisc@1
963  00000087 = _trisc1___byte equ _trisc
964  00000001 = _trisc1___bit equ 1
965                     ; line_number = 362
966                     ; bind _trisc0 = _trisc@0
967  00000087 = _trisc0___byte equ _trisc
968  00000000 = _trisc0___bit equ 0
969             
970                     ; line_number = 364
971                     ; register _pie1 = 
972  0000008c = _pie1 equ 140
973                     ; line_number = 365
974                     ; bind _eeie = _pie1@7
975  0000008c = _eeie___byte equ _pie1
976  00000007 = _eeie___bit equ 7
977                     ; line_number = 366
978                     ; bind _adie = _pie1@6
979  0000008c = _adie___byte equ _pie1
980  00000006 = _adie___bit equ 6
981                     ; line_number = 367
982                     ; bind _rcie = _pie1@5
983  0000008c = _rcie___byte equ _pie1
984  00000005 = _rcie___bit equ 5
985                     ; line_number = 368
986                     ; bind _c2ie = _pie1@4
987  0000008c = _c2ie___byte equ _pie1
988  00000004 = _c2ie___bit equ 4
989                     ; line_number = 369
990                     ; bind _c1ie = _pie1@3
991  0000008c = _c1ie___byte equ _pie1
992  00000003 = _c1ie___bit equ 3
993                     ; line_number = 370
994                     ; bind _osfie = _pie1@2
995  0000008c = _osfie___byte equ _pie1
996  00000002 = _osfie___bit equ 2
997                     ; line_number = 371
998                     ; bind _txie = _pie1@1
999  0000008c = _txie___byte equ _pie1
1000 00000001 = _txie___bit equ 1
1001                    ; line_number = 372
1002                    ; bind _tmr1ie = _pie1@0
1003 0000008c = _tmr1ie___byte equ _pie1
1004 00000000 = _tmr1ie___bit equ 0
1005            
1006                    ; line_number = 374
1007                    ; register _pcon = 
1008 0000008e = _pcon equ 142
1009                    ; line_number = 375
1010                    ; bind _ulpwue = _pcon@5
1011 0000008e = _ulpwue___byte equ _pcon
1012 00000005 = _ulpwue___bit equ 5
1013                    ; line_number = 376
1014                    ; bind _sboden = _pcon@4
1015 0000008e = _sboden___byte equ _pcon
1016 00000004 = _sboden___bit equ 4
1017                    ; line_number = 377
1018                    ; bind _por = _pcon@1
1019 0000008e = _por___byte equ _pcon
1020 00000001 = _por___bit equ 1
1021                    ; line_number = 378
1022                    ; bind _bod = _pcon@0
1023 0000008e = _bod___byte equ _pcon
1024 00000000 = _bod___bit equ 0
1025            
1026                    ; line_number = 380
1027                    ; register _osccon = 
1028 0000008f = _osccon equ 143
1029                    ; line_number = 381
1030                    ; bind _ircf2 = _osccon@6
1031 0000008f = _ircf2___byte equ _osccon
1032 00000006 = _ircf2___bit equ 6
1033                    ; line_number = 382
1034                    ; bind _ircf1 = _osccon@5
1035 0000008f = _ircf1___byte equ _osccon
1036 00000005 = _ircf1___bit equ 5
1037                    ; line_number = 383
1038                    ; bind _ircf0 = _osccon@4
1039 0000008f = _ircf0___byte equ _osccon
1040 00000004 = _ircf0___bit equ 4
1041                    ; line_number = 384
1042                    ; bind _osts = _osccon@3
1043 0000008f = _osts___byte equ _osccon
1044 00000003 = _osts___bit equ 3
1045                    ; line_number = 385
1046                    ; bind _hts = _osccon@2
1047 0000008f = _hts___byte equ _osccon
1048 00000002 = _hts___bit equ 2
1049                    ; line_number = 386
1050                    ; bind _lts = _osccon@3
1051 0000008f = _lts___byte equ _osccon
1052 00000003 = _lts___bit equ 3
1053                    ; line_number = 387
1054                    ; bind _scs = _osccon@2
1055 0000008f = _scs___byte equ _osccon
1056 00000002 = _scs___bit equ 2
1057            
1058                    ; line_number = 389
1059                    ; register _osctune = 
1060 00000090 = _osctune equ 144
1061                    ; line_number = 390
1062                    ; bind _tun4 = _osctune@4
1063 00000090 = _tun4___byte equ _osctune
1064 00000004 = _tun4___bit equ 4
1065                    ; line_number = 391
1066                    ; bind _tun3 = _osctune@3
1067 00000090 = _tun3___byte equ _osctune
1068 00000003 = _tun3___bit equ 3
1069                    ; line_number = 392
1070                    ; bind _tun2 = _osctune@2
1071 00000090 = _tun2___byte equ _osctune
1072 00000002 = _tun2___bit equ 2
1073                    ; line_number = 393
1074                    ; bind _tun1 = _osctune@1
1075 00000090 = _tun1___byte equ _osctune
1076 00000001 = _tun1___bit equ 1
1077                    ; line_number = 394
1078                    ; bind _tun0 = _osctune@0
1079 00000090 = _tun0___byte equ _osctune
1080 00000000 = _tun0___bit equ 0
1081                    ; line_number = 395
1082                    ; constant _osccal_lsb = 1
1083 00000001 = _osccal_lsb equ 1
1084            
1085                    ; line_number = 397
1086                    ; register _ansel = 
1087 00000091 = _ansel equ 145
1088                    ; line_number = 398
1089                    ; bind _ans7 = _ansel@7
1090 00000091 = _ans7___byte equ _ansel
1091 00000007 = _ans7___bit equ 7
1092                    ; line_number = 399
1093                    ; bind _ans6 = _ansel@6
1094 00000091 = _ans6___byte equ _ansel
1095 00000006 = _ans6___bit equ 6
1096                    ; line_number = 400
1097                    ; bind _ans5 = _ansel@5
1098 00000091 = _ans5___byte equ _ansel
1099 00000005 = _ans5___bit equ 5
1100                    ; line_number = 401
1101                    ; bind _ans4 = _ansel@4
1102 00000091 = _ans4___byte equ _ansel
1103 00000004 = _ans4___bit equ 4
1104                    ; line_number = 402
1105                    ; bind _ans3 = _ansel@3
1106 00000091 = _ans3___byte equ _ansel
1107 00000003 = _ans3___bit equ 3
1108                    ; line_number = 403
1109                    ; bind _ans2 = _ansel@2
1110 00000091 = _ans2___byte equ _ansel
1111 00000002 = _ans2___bit equ 2
1112                    ; line_number = 404
1113                    ; bind _ans1 = _ansel@1
1114 00000091 = _ans1___byte equ _ansel
1115 00000001 = _ans1___bit equ 1
1116                    ; line_number = 405
1117                    ; bind _ans0 = _ansel@0
1118 00000091 = _ans0___byte equ _ansel
1119 00000000 = _ans0___bit equ 0
1120            
1121                    ; line_number = 407
1122                    ; register _wpua = 
1123 00000095 = _wpua equ 149
1124                    ; line_number = 408
1125                    ; bind _wpua5 = _wpua@5
1126 00000095 = _wpua5___byte equ _wpua
1127 00000005 = _wpua5___bit equ 5
1128                    ; line_number = 409
1129                    ; bind _wpua4 = _wpua@4
1130 00000095 = _wpua4___byte equ _wpua
1131 00000004 = _wpua4___bit equ 4
1132                    ; line_number = 410
1133                    ; bind _wpua2 = _wpua@2
1134 00000095 = _wpua2___byte equ _wpua
1135 00000002 = _wpua2___bit equ 2
1136                    ; line_number = 411
1137                    ; bind _wpua1 = _wpua@1
1138 00000095 = _wpua1___byte equ _wpua
1139 00000001 = _wpua1___bit equ 1
1140                    ; line_number = 412
1141                    ; bind _wpua0 = _wpua@0
1142 00000095 = _wpua0___byte equ _wpua
1143 00000000 = _wpua0___bit equ 0
1144            
1145                    ; line_number = 414
1146                    ; register _ioca = 
1147 00000096 = _ioca equ 150
1148                    ; line_number = 415
1149                    ; bind _ioca5 = _ioca@5
1150 00000096 = _ioca5___byte equ _ioca
1151 00000005 = _ioca5___bit equ 5
1152                    ; line_number = 416
1153                    ; bind _ioca4 = _ioca@4
1154 00000096 = _ioca4___byte equ _ioca
1155 00000004 = _ioca4___bit equ 4
1156                    ; line_number = 417
1157                    ; bind _ioca3 = _ioca@3
1158 00000096 = _ioca3___byte equ _ioca
1159 00000003 = _ioca3___bit equ 3
1160                    ; line_number = 418
1161                    ; bind _ioca2 = _ioca@2
1162 00000096 = _ioca2___byte equ _ioca
1163 00000002 = _ioca2___bit equ 2
1164                    ; line_number = 419
1165                    ; bind _ioca1 = _ioca@1
1166 00000096 = _ioca1___byte equ _ioca
1167 00000001 = _ioca1___bit equ 1
1168                    ; line_number = 420
1169                    ; bind _ioca0 = _ioca@0
1170 00000096 = _ioca0___byte equ _ioca
1171 00000000 = _ioca0___bit equ 0
1172            
1173                    ; line_number = 422
1174                    ; register _eedath = 
1175 00000097 = _eedath equ 151
1176            
1177                    ; line_number = 424
1178                    ; register _eeadrh = 
1179 00000098 = _eeadrh equ 152
1180            
1181                    ; line_number = 426
1182                    ; register _vrcon = 
1183 00000099 = _vrcon equ 153
1184                    ; line_number = 427
1185                    ; bind _vren = _vrcon@7
1186 00000099 = _vren___byte equ _vrcon
1187 00000007 = _vren___bit equ 7
1188                    ; line_number = 428
1189                    ; bind _vrr = _vrcon@5
1190 00000099 = _vrr___byte equ _vrcon
1191 00000005 = _vrr___bit equ 5
1192                    ; line_number = 429
1193                    ; bind _vr3 = _vrcon@3
1194 00000099 = _vr3___byte equ _vrcon
1195 00000003 = _vr3___bit equ 3
1196                    ; line_number = 430
1197                    ; bind _vr2 = _vrcon@2
1198 00000099 = _vr2___byte equ _vrcon
1199 00000002 = _vr2___bit equ 2
1200                    ; line_number = 431
1201                    ; bind _vr1 = _vrcon@1
1202 00000099 = _vr1___byte equ _vrcon
1203 00000001 = _vr1___bit equ 1
1204                    ; line_number = 432
1205                    ; bind _vr0 = _vrcon@0
1206 00000099 = _vr0___byte equ _vrcon
1207 00000000 = _vr0___bit equ 0
1208            
1209                    ; line_number = 434
1210                    ; register _eedata = 
1211 0000009a = _eedata equ 154
1212                    ; line_number = 435
1213                    ; bind _eedat7 = _eedata@7
1214 0000009a = _eedat7___byte equ _eedata
1215 00000007 = _eedat7___bit equ 7
1216                    ; line_number = 436
1217                    ; bind _eedat6 = _eedata@6
1218 0000009a = _eedat6___byte equ _eedata
1219 00000006 = _eedat6___bit equ 6
1220                    ; line_number = 437
1221                    ; bind _eedat5 = _eedata@5
1222 0000009a = _eedat5___byte equ _eedata
1223 00000005 = _eedat5___bit equ 5
1224                    ; line_number = 438
1225                    ; bind _eedat4 = _eedata@4
1226 0000009a = _eedat4___byte equ _eedata
1227 00000004 = _eedat4___bit equ 4
1228                    ; line_number = 439
1229                    ; bind _eedat3 = _eedata@3
1230 0000009a = _eedat3___byte equ _eedata
1231 00000003 = _eedat3___bit equ 3
1232                    ; line_number = 440
1233                    ; bind _eedat2 = _eedata@2
1234 0000009a = _eedat2___byte equ _eedata
1235 00000002 = _eedat2___bit equ 2
1236                    ; line_number = 441
1237                    ; bind _eedat1 = _eedata@1
1238 0000009a = _eedat1___byte equ _eedata
1239 00000001 = _eedat1___bit equ 1
1240                    ; line_number = 442
1241                    ; bind _eedat0 = _eedata@0
1242 0000009a = _eedat0___byte equ _eedata
1243 00000000 = _eedat0___bit equ 0
1244            
1245                    ; line_number = 444
1246                    ; register _eeadr = 
1247 0000009b = _eeadr equ 155
1248                    ; line_number = 445
1249                    ; bind _eeadr7 = _eeadr@7
1250 0000009b = _eeadr7___byte equ _eeadr
1251 00000007 = _eeadr7___bit equ 7
1252                    ; line_number = 446
1253                    ; bind _eeadr6 = _eeadr@6
1254 0000009b = _eeadr6___byte equ _eeadr
1255 00000006 = _eeadr6___bit equ 6
1256                    ; line_number = 447
1257                    ; bind _eeadr5 = _eeadr@5
1258 0000009b = _eeadr5___byte equ _eeadr
1259 00000005 = _eeadr5___bit equ 5
1260                    ; line_number = 448
1261                    ; bind _eeadr4 = _eeadr@4
1262 0000009b = _eeadr4___byte equ _eeadr
1263 00000004 = _eeadr4___bit equ 4
1264                    ; line_number = 449
1265                    ; bind _eeadr3 = _eeadr@3
1266 0000009b = _eeadr3___byte equ _eeadr
1267 00000003 = _eeadr3___bit equ 3
1268                    ; line_number = 450
1269                    ; bind _eeadr2 = _eeadr@2
1270 0000009b = _eeadr2___byte equ _eeadr
1271 00000002 = _eeadr2___bit equ 2
1272                    ; line_number = 451
1273                    ; bind _eeadr1 = _eeadr@1
1274 0000009b = _eeadr1___byte equ _eeadr
1275 00000001 = _eeadr1___bit equ 1
1276                    ; line_number = 452
1277                    ; bind _eeadr0 = _eeadr@0
1278 0000009b = _eeadr0___byte equ _eeadr
1279 00000000 = _eeadr0___bit equ 0
1280            
1281                    ; line_number = 454
1282                    ; register _eecon1 = 
1283 0000009c = _eecon1 equ 156
1284                    ; line_number = 455
1285                    ; bind _eepgd = _eecon1@7
1286 0000009c = _eepgd___byte equ _eecon1
1287 00000007 = _eepgd___bit equ 7
1288                    ; line_number = 456
1289                    ; bind _wrerr = _eecon1@3
1290 0000009c = _wrerr___byte equ _eecon1
1291 00000003 = _wrerr___bit equ 3
1292                    ; line_number = 457
1293                    ; bind _wren = _eecon1@2
1294 0000009c = _wren___byte equ _eecon1
1295 00000002 = _wren___bit equ 2
1296                    ; line_number = 458
1297                    ; bind _wr = _eecon1@1
1298 0000009c = _wr___byte equ _eecon1
1299 00000001 = _wr___bit equ 1
1300                    ; line_number = 459
1301                    ; bind _rd = _eecon1@0
1302 0000009c = _rd___byte equ _eecon1
1303 00000000 = _rd___bit equ 0
1304            
1305                    ; line_number = 461
1306                    ; register _eecon2 = 
1307 0000009d = _eecon2 equ 157
1308            
1309                    ; line_number = 463
1310                    ; register _adresl = 
1311 0000009e = _adresl equ 158
1312            
1313                    ; line_number = 465
1314                    ; register _adcon1 = 
1315 0000009f = _adcon1 equ 159
1316                    ; line_number = 466
1317                    ; bind _adcs2 = _adcon1@6
1318 0000009f = _adcs2___byte equ _adcon1
1319 00000006 = _adcs2___bit equ 6
1320                    ; line_number = 467
1321                    ; bind _adcs1 = _adcon1@5
1322 0000009f = _adcs1___byte equ _adcon1
1323 00000005 = _adcs1___bit equ 5
1324                    ; line_number = 468
1325                    ; bind _adcs0 = _adcon1@4
1326 0000009f = _adcs0___byte equ _adcon1
1327 00000004 = _adcs0___bit equ 4
1328            
1329                    ; # Data Bank 2 (0x100 - 0x17f):
1330            
1331                    ; buffer = '_robobricks_pic16f688'
1332                    ; line_number = 6
1333                    ; library _pic16f688 exited
1334                    ; line_number = 7
1335                    ; library clock8mhz entered
1336                    ; # Copyright (c) 2004-2005 by Wayne C. Gramlich
1337                    ; # All rights reserved.
1338            
1339                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1340                    ; # and {clocks_per_instruction}.
1341            
1342                    ; # Define processor constants:
1343                    ; buffer = 'clock8mhz'
1344                    ; line_number = 9
1345                    ; constant clock_rate = 8000000
1346 007a1200 = clock_rate equ 8000000
1347                    ; line_number = 10
1348                    ; constant clocks_per_instruction = 4
1349 00000004 = clocks_per_instruction equ 4
1350                    ; line_number = 11
1351                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1352 001e8480 = instruction_rate equ 2000000
1353                    ; line_number = 12
1354                    ; constant microsecond = 2
1355 00000002 = microsecond equ 2
1356            
1357            
1358                    ; buffer = '_robobricks_pic16f688'
1359                    ; line_number = 7
1360                    ; library clock8mhz exited
1361            
1362                    ; # Get some EUSART constants defined:
1363                    ; line_number = 10
1364                    ; constant _eusart_clock = clock_rate
1365 007a1200 = _eusart_clock equ 8000000
1366                    ; line_number = 11
1367                    ; constant _eusart_factor = 4
1368 00000004 = _eusart_factor equ 4
1369                    ; line_number = 12
1370                    ; library _eusart entered
1371            
1372                    ; # Copyright (c) 2005 by Wayne C. Gramlich
1373                    ; # All rights reserved.
1374            
1375                    ; # This library contains a bunch of definitions for the Enhanced Universal
1376                    ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available
1377                    ; # on many of the PIC microcontrollers.
1378            
1379                    ; # In order to use this module you have to get two constants defined
1380                    ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}.
1381                    ; # {_eusart_clock} should be set to the frequency oscillator for the chip.
1382                    ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether
1383                    ; # the {_brg16} and {_brgh} bits are set.  Use the table below to select:
1384                    ; #
1385                    ; #        _{brg16}	{_brgh}		_{eusart_factor}
1386                    ; #	    0		   0		      64
1387                    ; #	    0		   1		      16
1388                    ; #	    1		   0		      16
1389                    ; #	    1		   1		       
1390            
1391                    ; # 2400 baud:
1392                    ; buffer = '_eusart'
1393                    ; line_number = 23
1394                    ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1
1395 00000340 = _eusart_2400 equ 832
1396                    ; line_number = 24
1397                    ; constant _eusart_2400_low = _eusart_2400 & 0xff
1398 00000040 = _eusart_2400_low equ 64
1399                    ; line_number = 25
1400                    ; constant _eusart_2400_high = _eusart_2400 >> 8
1401 00000003 = _eusart_2400_high equ 3
1402                    ; line_number = 26
1403                    ; constant _eusart_2400_index = 0
1404 00000000 = _eusart_2400_index equ 0
1405                    ; # 4800 baud:
1406                    ; line_number = 28
1407                    ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1
1408 0000019f = _eusart_4800 equ 415
1409                    ; line_number = 29
1410                    ; constant _eusart_4800_low = _eusart_4800 & 0xff
1411 0000009f = _eusart_4800_low equ 159
1412                    ; line_number = 30
1413                    ; constant _eusart_4800_high = _eusart_4800 >> 8
1414 00000001 = _eusart_4800_high equ 1
1415                    ; line_number = 31
1416                    ; constant _eusart_4800_index = 1
1417 00000001 = _eusart_4800_index equ 1
1418                    ; # 9600 baud:
1419                    ; line_number = 33
1420                    ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1
1421 000000cf = _eusart_9600 equ 207
1422                    ; line_number = 34
1423                    ; constant _eusart_9600_low = _eusart_9600 & 0xff
1424 000000cf = _eusart_9600_low equ 207
1425                    ; line_number = 35
1426                    ; constant _eusart_9600_high = _eusart_9600 >> 8
1427 00000000 = _eusart_9600_high equ 0
1428                    ; line_number = 36
1429                    ; constant _eusart_9600_index = 2
1430 00000002 = _eusart_9600_index equ 2
1431                    ; # 19200 baud:
1432                    ; line_number = 38
1433                    ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1
1434 00000067 = _eusart_19200 equ 103
1435                    ; line_number = 39
1436                    ; constant _eusart_19200_low = _eusart_19200 & 0xff
1437 00000067 = _eusart_19200_low equ 103
1438                    ; line_number = 40
1439                    ; constant _eusart_19200_high = _eusart_19200 >> 8
1440 00000000 = _eusart_19200_high equ 0
1441                    ; line_number = 41
1442                    ; constant _eusart_19200_index = 3
1443 00000003 = _eusart_19200_index equ 3
1444                    ; # 38400 baud:
1445                    ; line_number = 43
1446                    ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1
1447 00000033 = _eusart_38400 equ 51
1448                    ; line_number = 44
1449                    ; constant _eusart_38400_low = _eusart_38400 & 0xff
1450 00000033 = _eusart_38400_low equ 51
1451                    ; line_number = 45
1452                    ; constant _eusart_38400_high = _eusart_38400 >> 8
1453 00000000 = _eusart_38400_high equ 0
1454                    ; line_number = 46
1455                    ; constant _eusart_38400_index = 4
1456 00000004 = _eusart_38400_index equ 4
1457                    ; # 57600 baud:
1458                    ; line_number = 48
1459                    ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1
1460 00000021 = _eusart_57600 equ 33
1461                    ; line_number = 49
1462                    ; constant _eusart_57600_low = _eusart_57600 & 0xff
1463 00000021 = _eusart_57600_low equ 33
1464                    ; line_number = 50
1465                    ; constant _eusart_57600_high = _eusart_57600 >> 8
1466 00000000 = _eusart_57600_high equ 0
1467                    ; line_number = 51
1468                    ; constant _eusart_57600_index = 5
1469 00000005 = _eusart_57600_index equ 5
1470                    ; # 115200 baud:
1471                    ; line_number = 53
1472                    ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1
1473 00000010 = _eusart_115200 equ 16
1474                    ; line_number = 54
1475                    ; constant _eusart_115200_low = _eusart_115200 & 0xff
1476 00000010 = _eusart_115200_low equ 16
1477                    ; line_number = 55
1478                    ; constant _eusart_115200_high = _eusart_115200 >> 8
1479 00000000 = _eusart_115200_high equ 0
1480                    ; line_number = 56
1481                    ; constant _eusart_115200_index = 6
1482 00000006 = _eusart_115200_index equ 6
1483                    ; # 203400 baud:
1484                    ; line_number = 58
1485                    ; constant _eusart_203400 = (_eusart_clock / (203400 * _eusart_factor)) - 1
1486 00000008 = _eusart_203400 equ 8
1487                    ; line_number = 59
1488                    ; constant _eusart_203400_low = _eusart_203400 & 0xff
1489 00000008 = _eusart_203400_low equ 8
1490                    ; line_number = 60
1491                    ; constant _eusart_203400_high = _eusart_203400 >> 8
1492 00000000 = _eusart_203400_high equ 0
1493                    ; line_number = 61
1494                    ; constant _eusart_203400_index = 7
1495 00000007 = _eusart_203400_index equ 7
1496            
1497            
1498                    ; buffer = '_robobricks_pic16f688'
1499                    ; line_number = 12
1500                    ; library _eusart exited
1501            
1502                    ; line_number = 14
1503                    ; global debug_mode bit
1504 0000006f = debug_mode___byte equ globals___0+79
1505 00000000 = debug_mode___bit equ 0
1506                    ; line_number = 15
1507                    ; global in_byte_get bit
1508 0000006f = in_byte_get___byte equ globals___0+79
1509 00000001 = in_byte_get___bit equ 1
1510            
1511                    ; Delaying code generation for procedure  byte_get
1512                    ; Delaying code generation for procedure  byte_put
1513                    ; Delaying code generation for procedure  baud_rate_low
1514                    ; Delaying code generation for procedure  baud_rate_high
1515            
1516                    ; buffer = 'irdistance8'
1517                    ; line_number = 6
1518                    ; library _robobricks_pic16f688 exited
1519            
1520                    ; line_number = 8
1521                    ; package pdip
1522                    ; line_number = 9
1523                    ; pin 1 = power_supply
1524                    ; line_number = 10
1525                    ;  pin 2 = ra5_in, name=debug
1526 00000005 = debug___byte equ _porta
1527 00000005 = debug___bit equ 5
1528                    ; line_number = 11
1529                    ;  pin 3 = ra4_in, name=io2, mask=io2_mask, bit=io2_bit
1530 00000005 = io2___byte equ _porta
1531 00000004 = io2___bit equ 4
1532 00000010 = io2_mask equ 16
1533 00000004 = io2_bit equ 4
1534                    ; line_number = 12
1535                    ;  pin 4 = ra3_nc, name=nc1
1536 00000005 = nc1___byte equ _porta
1537 00000004 = nc1___bit equ 4
1538                    ; line_number = 13
1539                    ;  pin 5 = rx, name=rx
1540 00000007 = rx___byte equ _portc
1541 00000005 = rx___bit equ 5
1542                    ; line_number = 14
1543                    ;  pin 6 = tx, name=tx
1544 00000007 = tx___byte equ _portc
1545 00000004 = tx___bit equ 4
1546                    ; #pin 7 = rc3_in, name=io7, mask=io7_mask, bit=io7_bit
1547                    ; line_number = 16
1548                    ;  pin 7 = rc3_out, name=io7, mask=io7_mask, bit=io7_bit
1549 00000007 = io7___byte equ _portc
1550 00000003 = io7___bit equ 3
1551 00000008 = io7_mask equ 8
1552 00000003 = io7_bit equ 3
1553                    ; line_number = 17
1554                    ;  pin 8 = rc2_in, name=io6, mask=io6_mask, bit=io6_bit
1555 00000007 = io6___byte equ _portc
1556 00000002 = io6___bit equ 2
1557 00000004 = io6_mask equ 4
1558 00000002 = io6_bit equ 2
1559                    ; line_number = 18
1560                    ;  pin 9 = rc1_in, name=io5, mask=io5_mask, bit=io5_bit
1561 00000007 = io5___byte equ _portc
1562 00000001 = io5___bit equ 1
1563 00000002 = io5_mask equ 2
1564 00000001 = io5_bit equ 1
1565                    ; line_number = 19
1566                    ;  pin 10 = rc0_in, name=io4, mask=io4_mask, bit=io4_bit
1567 00000007 = io4___byte equ _portc
1568 00000000 = io4___bit equ 0
1569 00000001 = io4_mask equ 1
1570 00000000 = io4_bit equ 0
1571                    ; line_number = 20
1572                    ;  pin 11 = ra2_in, name=io3, mask=io3_mask, bit=io3_bit
1573 00000005 = io3___byte equ _porta
1574 00000002 = io3___bit equ 2
1575 00000004 = io3_mask equ 4
1576 00000002 = io3_bit equ 2
1577                    ; line_number = 21
1578                    ;  pin 12 = ra1_in, name=io1, mask=io1_mask, bit=io1_bit
1579 00000005 = io1___byte equ _porta
1580 00000001 = io1___bit equ 1
1581 00000002 = io1_mask equ 2
1582 00000001 = io1_bit equ 1
1583                    ; line_number = 22
1584                    ;  pin 13 = ra0_in, name=io0, mask=io0_mask, bit=io0_bit
1585 00000005 = io0___byte equ _porta
1586 00000000 = io0___bit equ 0
1587 00000001 = io0_mask equ 1
1588 00000000 = io0_bit equ 0
1589                    ; line_number = 23
1590                    ;  pin 14 = ground
1591            
1592                    ; line_number = 25
1593                    ; constant millisecond = 1000 * microsecond
1594 000007d0 = millisecond equ 2000
1595                    ; line_number = 26
1596                    ; constant millisecond_high = 1000 >> 8
1597 00000003 = millisecond_high equ 3
1598                    ; line_number = 27
1599                    ; constant millisecond_low = 1000 & 0xff
1600 000000e8 = millisecond_low equ 232
1601                    ; line_number = 28
1602                    ; constant period = 20 * millisecond
1603 00009c40 = period equ 40000
1604                    ; line_number = 29
1605                    ; constant period_high = period >> 8
1606 0000009c = period_high equ 156
1607                    ; line_number = 30
1608                    ; constant period_low = period & 0xff
1609 00000040 = period_low equ 64
1610            
1611                    ; #constant initial_delay_count = 0xf
1612                    ; #constant initial_servo_delay = 25
1613                    ; #constant initial_servo_increment = 50
1614            
1615                    ; line_number = 36
1616                    ; constant initial_servo_span = 2000
1617 000007d0 = initial_servo_span equ 2000
1618                    ; line_number = 37
1619                    ; constant initial_servo_delay = 1
1620 00000001 = initial_servo_delay equ 1
1621                    ; line_number = 38
1622                    ; constant initial_servo_steps = 0x20
1623 00000020 = initial_servo_steps equ 32
1624                    ; line_number = 39
1625                    ; constant initial_servo_increment = initial_servo_span / initial_servo_steps
1626 0000003e = initial_servo_increment equ 62
1627                    ; line_number = 40
1628                    ; constant initial_servo_base = 300
1629 0000012c = initial_servo_base equ 300
1630                    ; line_number = 41
1631                    ; constant initial_servo_base_low = initial_servo_base & 0xff
1632 0000002c = initial_servo_base_low equ 44
1633                    ; line_number = 42
1634                    ; constant initial_servo_base_high = initial_servo_base >> 8
1635 00000001 = initial_servo_base_high equ 1
1636            
1637            
1638                    ; # Some globals: byte
1639                    ; line_number = 47
1640                    ; constant channels = 8
1641 00000008 = channels equ 8
1642                    ; line_number = 48
1643                    ; constant state_size = 16
1644 00000010 = state_size equ 16
1645                    ; line_number = 49
1646                    ; constant state_size2 = state_size << 1
1647 00000020 = state_size2 equ 32
1648                    ; line_number = 50
1649                    ; global state[state_size] array[byte]
1650 00000023 = state equ globals___0+3
1651                    ; line_number = 51
1652                    ; bind command_previous = state[0]
1653 00000023 = command_previous equ globals___0+3
1654                    ; line_number = 52
1655                    ; bind command_last = state[1]
1656 00000024 = command_last equ globals___0+4
1657                    ; line_number = 53
1658                    ; bind sent_last = state[2]
1659 00000025 = sent_last equ globals___0+5
1660                    ; line_number = 54
1661                    ; bind sent_previous = state[3]
1662 00000026 = sent_previous equ globals___0+6
1663                    ; line_number = 55
1664                    ; bind flags = state[4]
1665 00000027 = flags equ globals___0+7
1666                    ; line_number = 56
1667                    ; bind low_mask = state[5]
1668 00000028 = low_mask equ globals___0+8
1669                    ; line_number = 57
1670                    ; bind high_mask = state[6]
1671 00000029 = high_mask equ globals___0+9
1672                    ; line_number = 58
1673                    ; bind rising_mask = state[7]
1674 0000002a = rising_mask equ globals___0+10
1675                    ; line_number = 59
1676                    ; bind falling_mask = state[8]
1677 0000002b = falling_mask equ globals___0+11
1678                    ; line_number = 60
1679                    ; bind servo_steps = state[9]
1680 0000002c = servo_steps equ globals___0+12
1681                    ; line_number = 61
1682                    ; bind servo_base_high = state[10]
1683 0000002d = servo_base_high equ globals___0+13
1684                    ; line_number = 62
1685                    ; bind servo_base_low = state[11]
1686 0000002e = servo_base_low equ globals___0+14
1687                    ; line_number = 63
1688                    ; bind servo_increment = state[12]
1689 0000002f = servo_increment equ globals___0+15
1690                    ; line_number = 64
1691                    ; bind servo_delay = state[13]
1692 00000030 = servo_delay equ globals___0+16
1693                    ; line_number = 65
1694                    ; bind servo_high = state[14]
1695 00000031 = servo_high equ globals___0+17
1696                    ; line_number = 66
1697                    ; bind servo_low = state[15]
1698 00000032 = servo_low equ globals___0+18
1699                    ; line_number = 67
1700                    ; global analogs_high[channels] array[byte]
1701 00000033 = analogs_high equ globals___0+19
1702                    ; line_number = 68
1703                    ; global analogs_low[channels] array[byte]
1704 0000003b = analogs_low equ globals___0+27
1705                    ; line_number = 69
1706                    ; global thresholds_high[channels] array[byte]
1707 00000043 = thresholds_high equ globals___0+35
1708                    ; line_number = 70
1709                    ; global thresholds_low[channels] array[byte]
1710 0000004b = thresholds_low equ globals___0+43
1711            
1712                    ; line_number = 72
1713                    ; bind interrupt_enable = flags@0
1714 00000027 = interrupt_enable___byte equ globals___0+7
1715 00000000 = interrupt_enable___bit equ 0
1716                    ; line_number = 73
1717                    ; bind interrupt_pending = flags@1
1718 00000027 = interrupt_pending___byte equ globals___0+7
1719 00000001 = interrupt_pending___bit equ 1
1720            
1721                    ; line_number = 75
1722                    ; global glitch byte
1723 00000053 = glitch equ globals___0+51
1724                    ; line_number = 76
1725                    ; global index byte
1726 00000054 = index equ globals___0+52
1727                    ; line_number = 77
1728                    ; global chan byte
1729 00000055 = chan equ globals___0+53
1730                    ; line_number = 78
1731                    ; global channel byte
1732 00000056 = channel equ globals___0+54
1733            
1734                    ; line_number = 80
1735                    ; origin 0
1736   0000 :           org     0
1737            
1738                    ; line_number = 82
1739                    ; procedure xmain
1740   0000 :   xmain:
1741                    ; arguments_none
1742                    ; line_number = 84
1743                    ;  returns_nothing
1744            
1745                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
1746                    ; line_number = 86
1747                    ;  assemble
1748                    ; line_number = 87
1749 0000 2960          goto    main
1750            
1751                    ; delay after procedure statements=non-uniform
1752                    ; Implied return
1753 0001 3400          retlw   0
1754            
1755            
1756            
1757            
1758                    ; line_number = 89
1759                    ; origin 4
1760   0004 :           org     4
1761            
1762            
1763                    ; # Scanned distances:
1764                    ; line_number = 94
1765                    ; global analogs[64] array[byte]
1766 000000a0 = analogs equ globals___1
1767            
1768            
1769                    ; line_number = 98
1770                    ; global adjust_high byte
1771 00000120 = adjust_high equ globals___2
1772                    ; line_number = 99
1773                    ; global adjust_low byte
1774 00000121 = adjust_low equ globals___2+1
1775                    ; line_number = 100
1776                    ; global direction byte
1777 00000122 = direction equ globals___2+2
1778                    ; line_number = 101
1779                    ; global delay_count byte
1780 00000123 = delay_count equ globals___2+3
1781                    ; line_number = 102
1782                    ; global offset byte
1783 00000124 = offset equ globals___2+4
1784                    ; line_number = 103
1785                    ; global maximum byte
1786 00000125 = maximum equ globals___2+5
1787                    ; line_number = 104
1788                    ; global maximum_offset byte
1789 00000126 = maximum_offset equ globals___2+6
1790                    ; line_number = 105
1791                    ; global minimum byte
1792 00000127 = minimum equ globals___2+7
1793                    ; line_number = 106
1794                    ; global minimum_offset byte
1795 00000128 = minimum_offset equ globals___2+8
1796                    ; line_number = 107
1797                    ; global last_maximum byte
1798 00000129 = last_maximum equ globals___2+9
1799                    ; line_number = 108
1800                    ; global last_maximum_offset byte
1801 0000012a = last_maximum_offset equ globals___2+10
1802                    ; line_number = 109
1803                    ; global last_minimum byte
1804 0000012b = last_minimum equ globals___2+11
1805                    ; line_number = 110
1806                    ; global last_minimum_offset byte
1807 0000012c = last_minimum_offset equ globals___2+12
1808                    ; line_number = 111
1809                    ; global track_minimum byte
1810 0000012d = track_minimum equ globals___2+13
1811                    ; line_number = 112
1812                    ; global track_maximum byte
1813 0000012e = track_maximum equ globals___2+14
1814                    ; line_number = 113
1815                    ; global track_offset_span byte
1816 0000012f = track_offset_span equ globals___2+15
1817                    ; line_number = 114
1818                    ; global track_offset_minimum byte
1819 00000130 = track_offset_minimum equ globals___2+16
1820                    ; line_number = 115
1821                    ; global track_offset_maximum byte
1822 00000131 = track_offset_maximum equ globals___2+17
1823            
1824                    ; #data_bank 2
1825            
1826                    ; line_number = 119
1827                    ; procedure interrupt
1828   0004 :   interrupt:
1829 00000071 = interrupt___w_save equ shared___globals+1
1830 00000070 = interrupt___status_save equ shared___globals
1831                    ; Carefully save __w and __tatus into RAM
1832                    ; Save W first (easy)
1833 0004 00f1          movwf   interrupt___w_save
1834                    ; Save Status without smashing it (tricky)
1835                    ; Move swapped version of status into W
1836 0005 0e03          swapf   __status,w
1837                    ; Store swapped version of status into RAM
1838 0006 00f0          movwf   interrupt___status_save
1839                    ; arguments_none
1840                    ; line_number = 121
1841                    ;  returns_nothing
1842            
1843                    ; line_number = 123
1844                    ;  local count byte
1845 00000132 = interrupt__count equ globals___2+18
1846                    ; line_number = 124
1847                    ;  local high byte
1848 00000133 = interrupt__high equ globals___2+19
1849                    ; line_number = 125
1850                    ;  local low byte
1851 00000134 = interrupt__low equ globals___2+20
1852                    ; line_number = 126
1853                    ;  local analog byte
1854 00000135 = interrupt__analog equ globals___2+21
1855                    ; line_number = 127
1856                    ;  local restart bit
1857 0000016f = interrupt__restart___byte equ globals___2+79
1858 00000000 = interrupt__restart___bit equ 0
1859                    ; line_number = 128
1860                    ;  local temp byte
1861 00000136 = interrupt__temp equ globals___2+22
1862            
1863                    ; before procedure statements delay=non-uniform, bit states=(data:??=>?? code:XX=>XX)
1864                    ; line_number = 130
1865                    ;  if io7 start
1866                    ; =>bit_code_emit@symbol(): sym=io7
1867 0007 1283          bcf     __rp0___byte, __rp0___bit
1868                    ; CASE: true_code_size > 1 && false_code_size > 1
1869 0008 1d87          btfss   io7___byte, io7___bit
1870 0009 2813          goto    interrupt__23
1871 000a 1303          bcf     __rp1___byte, __rp1___bit
1872                    ; # Clear the servo pulse and wait 20 ms:
1873                    ; line_number = 132
1874                    ;  io7 := 0
1875 000b 1187          bcf     io7___byte, io7___bit
1876                    ; line_number = 133
1877                    ;  _tmr1l := 0
1878 000c 3000          movlw   0
1879 000d 008e          movwf   _tmr1l
1880                    ; line_number = 134
1881                    ;  _tmr1h := period_high ^ 0xff
1882                    ; Expression is strictly a constant
1883 000e 3063          movlw   99
1884 000f 008f          movwf   _tmr1h
1885                    ; line_number = 135
1886                    ;  _tmr1l := period_low ^ 0xff
1887                    ; Expression is strictly a constant
1888 0010 30bf          movlw   191
1889 0011 008e          movwf   _tmr1l
1890                    ; Recombine code1_bit_states != code2_bit_states
1891 0012 28e5          goto    interrupt__24
1892   0013 :   interrupt__23:
1893 0013 1703          bsf     __rp1___byte, __rp1___bit
1894                    ; # Set the servo pulse:
1895                    ; line_number = 138
1896                    ;  delay_count := delay_count - 1
1897 0014 03a3          decf    delay_count,f
1898                    ; line_number = 139
1899                    ;  if _z start
1900                    ; =>bit_code_emit@symbol(): sym=_z
1901 0015 1303          bcf     __rp1___byte, __rp1___bit
1902                    ; CASE: true_code.size = 0 && false_code.size > 1
1903 0016 1d03          btfss   _z___byte, _z___bit
1904 0017 28c5          goto    interrupt__20
1905                    ; # Adjust the pulse width
1906                    ; line_number = 141
1907                    ;  delay_count := servo_delay
1908 0018 0830          movf    servo_delay,w
1909 0019 1703          bsf     __rp1___byte, __rp1___bit
1910 001a 00a3          movwf   delay_count
1911            
1912                    ; # Collect the minimum and maximum:
1913                    ; line_number = 144
1914                    ;  analog := analogs_high[0]
1915 001b 1303          bcf     __rp1___byte, __rp1___bit
1916 001c 0833          movf    analogs_high,w
1917 001d 1703          bsf     __rp1___byte, __rp1___bit
1918 001e 00b5          movwf   interrupt__analog
1919                    ; line_number = 145
1920                    ;  analogs[offset] := analog
1921                    ; index_fsr_first
1922 001f 0824          movf    offset,w
1923 0020 3ea0          addlw   analogs
1924 0021 0084          movwf   __fsr
1925 0022 0835          movf    interrupt__analog,w
1926 0023 0080          movwf   __indf
1927                    ; line_number = 146
1928                    ;  if analog > maximum start
1929 0024 0825          movf    maximum,w
1930 0025 0235          subwf   interrupt__analog,w
1931 0026 1303          bcf     __rp1___byte, __rp1___bit
1932 0027 1903          btfsc   __z___byte, __z___bit
1933 0028 1003          bcf     __c___byte, __c___bit
1934                    ; =>bit_code_emit@symbol(): sym=__c
1935                    ; CASE: true_code.size = 0 && false_code.size > 1
1936 0029 1c03          btfss   __c___byte, __c___bit
1937 002a 2830          goto    interrupt__1
1938 002b 1703          bsf     __rp1___byte, __rp1___bit
1939                    ; line_number = 147
1940                    ; maximum := analog
1941 002c 0835          movf    interrupt__analog,w
1942 002d 00a5          movwf   maximum
1943                    ; line_number = 148
1944                    ;  maximum_offset := offset
1945 002e 0824          movf    offset,w
1946 002f 00a6          movwf   maximum_offset
1947                    ; Recombine size1 = 0 || size2 = 0
1948   0030 :   interrupt__1:
1949                    ; <=bit_code_emit@symbol; sym=__c (data:00=>?0 code:XX=>XX)
1950                    ; line_number = 146
1951                    ;  if analog > maximum done
1952                    ; line_number = 149
1953                    ; if analog < minimum start
1954 0030 1703          bsf     __rp1___byte, __rp1___bit
1955 0031 0827          movf    minimum,w
1956 0032 0235          subwf   interrupt__analog,w
1957                    ; =>bit_code_emit@symbol(): sym=__c
1958 0033 1303          bcf     __rp1___byte, __rp1___bit
1959                    ; CASE: true.size=0 && false.size>1
1960 0034 1803          btfsc   __c___byte, __c___bit
1961 0035 283b          goto    interrupt__2
1962 0036 1703          bsf     __rp1___byte, __rp1___bit
1963                    ; line_number = 150
1964                    ; minimum := analog
1965 0037 0835          movf    interrupt__analog,w
1966 0038 00a7          movwf   minimum
1967                    ; line_number = 151
1968                    ;  minimum_offset := offset
1969 0039 0824          movf    offset,w
1970 003a 00a8          movwf   minimum_offset
1971            
1972   003b :   interrupt__2:
1973                    ; Recombine size1 = 0 || size2 = 0
1974                    ; <=bit_code_emit@symbol; sym=__c (data:00=>?0 code:XX=>XX)
1975                    ; line_number = 149
1976                    ; if analog < minimum done
1977                    ; line_number = 153
1978                    ; restart := 0
1979 003b 1703          bsf     __rp1___byte, __rp1___bit
1980 003c 106f          bcf     interrupt__restart___byte, interrupt__restart___bit
1981                    ; line_number = 154
1982                    ;  if offset <= track_offset_minimum start
1983 003d 0830          movf    track_offset_minimum,w
1984 003e 0224          subwf   offset,w
1985 003f 1303          bcf     __rp1___byte, __rp1___bit
1986 0040 1903          btfsc   __z___byte, __z___bit
1987 0041 1003          bcf     __c___byte, __c___bit
1988                    ; =>bit_code_emit@symbol(): sym=__c
1989                    ; CASE: true_code_size > 1 && false_code_size > 1
1990 0042 1c03          btfss   __c___byte, __c___bit
1991 0043 284f          goto    interrupt__4
1992 0044 1703          bsf     __rp1___byte, __rp1___bit
1993                    ; line_number = 157
1994 0045 0831          movf    track_offset_maximum,w
1995 0046 0224          subwf   offset,w
1996                    ; =>bit_code_emit@symbol(): sym=__c
1997 0047 1303          bcf     __rp1___byte, __rp1___bit
1998                    ; CASE: true_code.size = 0 && false_code.size > 1
1999 0048 1c03          btfss   __c___byte, __c___bit
2000 0049 284e          goto    interrupt__3
2001 004a 1703          bsf     __rp1___byte, __rp1___bit
2002                    ; line_number = 158
2003                    ; restart := 1
2004 004b 146f          bsf     interrupt__restart___byte, interrupt__restart___bit
2005                    ; line_number = 159
2006                    ;  direction := 0xff
2007 004c 30ff          movlw   255
2008 004d 00a2          movwf   direction
2009                    ; Recombine size1 = 0 || size2 = 0
2010   004e :   interrupt__3:
2011                    ; <=bit_code_emit@symbol; sym=__c (data:10=>?0 code:XX=>XX)
2012                    ; Recombine code1_bit_states != code2_bit_states
2013 004e 2853          goto    interrupt__5
2014   004f :   interrupt__4:
2015 004f 1703          bsf     __rp1___byte, __rp1___bit
2016                    ; line_number = 155
2017                    ; restart := 1
2018 0050 146f          bsf     interrupt__restart___byte, interrupt__restart___bit
2019                    ; line_number = 156
2020                    ;  direction := 1
2021 0051 3001          movlw   1
2022 0052 00a2          movwf   direction
2023   0053 :   interrupt__5:
2024                    ; <=bit_code_emit@symbol; sym=__c (data:00=>?0 code:XX=>XX)
2025                    ; line_number = 154
2026                    ;  if offset <= track_offset_minimum done
2027                    ; line_number = 160
2028                    ; offset := offset + direction
2029 0053 1703          bsf     __rp1___byte, __rp1___bit
2030 0054 0822          movf    direction,w
2031 0055 07a4          addwf   offset,f
2032                    ; line_number = 161
2033                    ;  if restart start
2034                    ; =>bit_code_emit@symbol(): sym=interrupt__restart
2035                    ; CASE: true_code.size = 0 && false_code.size > 1
2036 0056 1c6f          btfss   interrupt__restart___byte, interrupt__restart___bit
2037 0057 289d          goto    interrupt__13
2038                    ; line_number = 162
2039                    ; last_maximum := maximum
2040 0058 0825          movf    maximum,w
2041 0059 00a9          movwf   last_maximum
2042                    ; line_number = 163
2043                    ;  last_minimum := minimum
2044 005a 0827          movf    minimum,w
2045 005b 00ab          movwf   last_minimum
2046                    ; line_number = 164
2047                    ;  last_maximum_offset := maximum_offset
2048 005c 0826          movf    maximum_offset,w
2049 005d 00aa          movwf   last_maximum_offset
2050                    ; line_number = 165
2051                    ;  last_minimum_offset := minimum_offset
2052 005e 0828          movf    minimum_offset,w
2053 005f 00ac          movwf   last_minimum_offset
2054                    ; # We stay in full scan mode if no tracking trigers:
2055                    ; line_number = 167
2056                    ;  track_offset_minimum := 0
2057 0060 3000          movlw   0
2058 0061 00b0          movwf   track_offset_minimum
2059                    ; line_number = 168
2060                    ;  track_offset_maximum := servo_steps
2061 0062 1303          bcf     __rp1___byte, __rp1___bit
2062 0063 082c          movf    servo_steps,w
2063 0064 1703          bsf     __rp1___byte, __rp1___bit
2064 0065 00b1          movwf   track_offset_maximum
2065                    ; line_number = 169
2066                    ;  temp := 0xff
2067 0066 30ff          movlw   255
2068 0067 00b6          movwf   interrupt__temp
2069                    ; line_number = 170
2070                    ;  if last_minimum < track_minimum start
2071 0068 082d          movf    track_minimum,w
2072 0069 022b          subwf   last_minimum,w
2073                    ; =>bit_code_emit@symbol(): sym=__c
2074 006a 1303          bcf     __rp1___byte, __rp1___bit
2075                    ; CASE: true.size=0 && false.size>1
2076 006b 1803          btfsc   __c___byte, __c___bit
2077 006c 2870          goto    interrupt__6
2078 006d 1703          bsf     __rp1___byte, __rp1___bit
2079                    ; line_number = 171
2080                    ; temp := last_minimum_offset
2081 006e 082c          movf    last_minimum_offset,w
2082 006f 00b6          movwf   interrupt__temp
2083   0070 :   interrupt__6:
2084                    ; Recombine size1 = 0 || size2 = 0
2085                    ; <=bit_code_emit@symbol; sym=__c (data:10=>?0 code:XX=>XX)
2086                    ; line_number = 170
2087                    ;  if last_minimum < track_minimum done
2088                    ; line_number = 172
2089                    ; if last_maximum > track_maximum start
2090 0070 1703          bsf     __rp1___byte, __rp1___bit
2091 0071 082e          movf    track_maximum,w
2092 0072 0229          subwf   last_maximum,w
2093 0073 1303          bcf     __rp1___byte, __rp1___bit
2094 0074 1903          btfsc   __z___byte, __z___bit
2095 0075 1003          bcf     __c___byte, __c___bit
2096                    ; =>bit_code_emit@symbol(): sym=__c
2097                    ; CASE: true_code.size = 0 && false_code.size > 1
2098 0076 1c03          btfss   __c___byte, __c___bit
2099 0077 287b          goto    interrupt__7
2100 0078 1703          bsf     __rp1___byte, __rp1___bit
2101                    ; line_number = 173
2102                    ; temp := last_maximum_offset
2103 0079 082a          movf    last_maximum_offset,w
2104 007a 00b6          movwf   interrupt__temp
2105                    ; Recombine size1 = 0 || size2 = 0
2106   007b :   interrupt__7:
2107                    ; <=bit_code_emit@symbol; sym=__c (data:10=>?0 code:XX=>XX)
2108                    ; line_number = 172
2109                    ; if last_maximum > track_maximum done
2110                    ; line_number = 174
2111                    ; if !(temp@7) start
2112 00000136 = interrupt__select__11___byte equ interrupt__temp
2113 00000007 = interrupt__select__11___bit equ 7
2114                    ; =>bit_code_emit@symbol(): sym=interrupt__select__11
2115 007b 1703          bsf     __rp1___byte, __rp1___bit
2116                    ; CASE: true.size=0 && false.size>1
2117 007c 1bb6          btfsc   interrupt__select__11___byte, interrupt__select__11___bit
2118 007d 2894          goto    interrupt__12
2119                    ; line_number = 175
2120                    ; track_offset_minimum := last_minimum_offset - track_offset_span
2121 007e 082f          movf    track_offset_span,w
2122 007f 022c          subwf   last_minimum_offset,w
2123 0080 00b0          movwf   track_offset_minimum
2124            
2125                    ; line_number = 177
2126                    ; if track_offset_minimum@7 start
2127 00000130 = interrupt__select__8___byte equ track_offset_minimum
2128 00000007 = interrupt__select__8___bit equ 7
2129                    ; =>bit_code_emit@symbol(): sym=interrupt__select__8
2130                    ; CASE: true_code.size = 0 && false_code.size > 1
2131 0081 1fb0          btfss   interrupt__select__8___byte, interrupt__select__8___bit
2132 0082 2885          goto    interrupt__9
2133                    ; line_number = 178
2134                    ; track_offset_minimum := 0
2135 0083 3000          movlw   0
2136 0084 00b0          movwf   track_offset_minimum
2137                    ; Recombine size1 = 0 || size2 = 0
2138   0085 :   interrupt__9:
2139                    ; <=bit_code_emit@symbol; sym=interrupt__select__8 (data:10=>10 code:XX=>XX)
2140                    ; line_number = 177
2141                    ; if track_offset_minimum@7 done
2142                    ; line_number = 179
2143                    ; track_offset_maximum := last_minimum_offset + track_offset_span
2144 0085 082c          movf    last_minimum_offset,w
2145 0086 072f          addwf   track_offset_span,w
2146 0087 00b1          movwf   track_offset_maximum
2147            
2148                    ; line_number = 181
2149                    ; if track_offset_maximum > servo_steps start
2150 0088 1303          bcf     __rp1___byte, __rp1___bit
2151 0089 082c          movf    servo_steps,w
2152 008a 1703          bsf     __rp1___byte, __rp1___bit
2153 008b 0231          subwf   track_offset_maximum,w
2154 008c 1303          bcf     __rp1___byte, __rp1___bit
2155 008d 1903          btfsc   __z___byte, __z___bit
2156 008e 1003          bcf     __c___byte, __c___bit
2157                    ; =>bit_code_emit@symbol(): sym=__c
2158                    ; CASE: true_code.size = 0 && false_code.size > 1
2159 008f 1c03          btfss   __c___byte, __c___bit
2160 0090 2894          goto    interrupt__10
2161                    ; line_number = 182
2162                    ; track_offset_maximum := servo_steps
2163 0091 082c          movf    servo_steps,w
2164 0092 1703          bsf     __rp1___byte, __rp1___bit
2165 0093 00b1          movwf   track_offset_maximum
2166            
2167                    ; Recombine size1 = 0 || size2 = 0
2168   0094 :   interrupt__10:
2169                    ; <=bit_code_emit@symbol; sym=__c (data:10=>?0 code:XX=>XX)
2170                    ; line_number = 181
2171                    ; if track_offset_maximum > servo_steps done
2172   0094 :   interrupt__12:
2173                    ; Recombine size1 = 0 || size2 = 0
2174                    ; <=bit_code_emit@symbol; sym=interrupt__select__11 (data:10=>?0 code:XX=>XX)
2175                    ; line_number = 174
2176                    ; if !(temp@7) done
2177                    ; line_number = 184
2178                    ; minimum_offset := 0
2179 0094 3000          movlw   0
2180 0095 1703          bsf     __rp1___byte, __rp1___bit
2181 0096 00a8          movwf   minimum_offset
2182                    ; line_number = 185
2183                    ;  maximum_offset := 0
2184 0097 3000          movlw   0
2185 0098 00a6          movwf   maximum_offset
2186                    ; line_number = 186
2187                    ;  maximum := 0
2188 0099 3000          movlw   0
2189 009a 00a5          movwf   maximum
2190                    ; line_number = 187
2191                    ;  minimum := 0xff
2192 009b 30ff          movlw   255
2193 009c 00a7          movwf   minimum
2194            
2195                    ; Recombine size1 = 0 || size2 = 0
2196   009d :   interrupt__13:
2197                    ; <=bit_code_emit@symbol; sym=interrupt__restart (data:00=>10 code:XX=>XX)
2198                    ; line_number = 161
2199                    ;  if restart done
2200                    ; # Compute {offset} * {servo_increment} as 16-bit result
2201                    ; # into {servo_high}:{servo_low}.
2202                    ; line_number = 191
2203                    ;  servo_high := 0
2204 009d 3000          movlw   0
2205 009e 1303          bcf     __rp1___byte, __rp1___bit
2206 009f 00b1          movwf   servo_high
2207                    ; line_number = 192
2208                    ;  servo_low := 0
2209 00a0 3000          movlw   0
2210 00a1 00b2          movwf   servo_low
2211                    ; line_number = 193
2212                    ;  adjust_high := 0
2213 00a2 3000          movlw   0
2214 00a3 1703          bsf     __rp1___byte, __rp1___bit
2215 00a4 00a0          movwf   adjust_high
2216                    ; line_number = 194
2217                    ;  adjust_low := servo_increment
2218 00a5 1303          bcf     __rp1___byte, __rp1___bit
2219 00a6 082f          movf    servo_increment,w
2220 00a7 1703          bsf     __rp1___byte, __rp1___bit
2221 00a8 00a1          movwf   adjust_low
2222            
2223                    ; # Only use low order 6 bits of {offset}:
2224                    ; line_number = 197
2225                    ;  temp := offset
2226 00a9 0824          movf    offset,w
2227 00aa 00b6          movwf   interrupt__temp
2228                    ; line_number = 198
2229                    ;  loop_exactly 6 start
2230 00000137 = interrupt__14 equ globals___2+23
2231 00ab 3006          movlw   6
2232 00ac 00b7          movwf   interrupt__14
2233   00ad :   interrupt__15:
2234                    ; # Add in adjust if LSB of {temp} is set:
2235                    ; line_number = 200
2236                    ;  if temp@0 start
2237 00000136 = interrupt__select__16___byte equ interrupt__temp
2238 00000000 = interrupt__select__16___bit equ 0
2239                    ; =>bit_code_emit@symbol(): sym=interrupt__select__16
2240 00ad 1283          bcf     __rp0___byte, __rp0___bit
2241 00ae 1703          bsf     __rp1___byte, __rp1___bit
2242                    ; CASE: true_code.size = 0 && false_code.size > 1
2243 00af 1c36          btfss   interrupt__select__16___byte, interrupt__select__16___bit
2244 00b0 28ba          goto    interrupt__17
2245                    ; line_number = 201
2246                    ; servo_high := servo_high + adjust_high
2247 00b1 0820          movf    adjust_high,w
2248 00b2 1303          bcf     __rp1___byte, __rp1___bit
2249 00b3 07b1          addwf   servo_high,f
2250                    ; line_number = 202
2251                    ;  servo_low := servo_low + adjust_low
2252 00b4 1703          bsf     __rp1___byte, __rp1___bit
2253 00b5 0821          movf    adjust_low,w
2254 00b6 1303          bcf     __rp1___byte, __rp1___bit
2255 00b7 07b2          addwf   servo_low,f
2256                    ; line_number = 203
2257                    ;  if _c start
2258                    ; =>bit_code_emit@symbol(): sym=_c
2259                    ; CASE: True.size=1 False.size=0
2260 00b8 1803          btfsc   _c___byte, _c___bit
2261                    ; line_number = 204
2262                    ; servo_high := servo_high + 1
2263 00b9 0ab1          incf    servo_high,f
2264            
2265                    ; Recombine size1 = 0 || size2 = 0
2266                    ; <=bit_code_emit@symbol; sym=_c (data:10=>00 code:XX=>XX)
2267                    ; line_number = 203
2268                    ;  if _c done
2269                    ; Recombine size1 = 0 || size2 = 0
2270   00ba :   interrupt__17:
2271                    ; <=bit_code_emit@symbol; sym=interrupt__select__16 (data:??=>?0 code:XX=>XX)
2272                    ; line_number = 200
2273                    ;  if temp@0 done
2274                    ; # Shift {adjust_high}:{adjust_low} left by 1:
2275                    ; line_number = 207
2276                    ;  adjust_high := adjust_high + adjust_high
2277 00ba 1703          bsf     __rp1___byte, __rp1___bit
2278 00bb 0820          movf    adjust_high,w
2279 00bc 07a0          addwf   adjust_high,f
2280                    ; line_number = 208
2281                    ;  if adjust_low@7 start
2282 00000121 = interrupt__select__19___byte equ adjust_low
2283 00000007 = interrupt__select__19___bit equ 7
2284                    ; =>bit_code_emit@symbol(): sym=interrupt__select__19
2285                    ; CASE: True.size=1 False.size=0
2286 00bd 1ba1          btfsc   interrupt__select__19___byte, interrupt__select__19___bit
2287                    ; line_number = 209
2288                    ; adjust_high@0 := 1
2289 00000120 = interrupt__select__18___byte equ adjust_high
2290 00000000 = interrupt__select__18___bit equ 0
2291 00be 1420          bsf     interrupt__select__18___byte, interrupt__select__18___bit
2292                    ; Recombine size1 = 0 || size2 = 0
2293                    ; <=bit_code_emit@symbol; sym=interrupt__select__19 (data:??=>10 code:XX=>XX)
2294                    ; line_number = 208
2295                    ;  if adjust_low@7 done
2296                    ; line_number = 210
2297                    ; adjust_low := adjust_low + adjust_low
2298 00bf 0821          movf    adjust_low,w
2299 00c0 07a1          addwf   adjust_low,f
2300                    ; line_number = 211
2301                    ;  temp := temp >> 1
2302                    ; Assignment of variable to self (no code needed)
2303 00c1 0cb6          rrf     interrupt__temp,f
2304 00c2 13b6          bcf     interrupt__temp, 7
2305            
2306                    ; line_number = 198
2307                    ;  loop_exactly 6 wrap-up
2308 00c3 0bb7          decfsz  interrupt__14,f
2309 00c4 28ad          goto    interrupt__15
2310                    ; line_number = 198
2311                    ;  loop_exactly 6 done
2312                    ; Recombine size1 = 0 || size2 = 0
2313   00c5 :   interrupt__20:
2314                    ; <=bit_code_emit@symbol; sym=_z (data:10=>?0 code:XX=>XX)
2315                    ; line_number = 139
2316                    ;  if _z done
2317                    ; # Add servo to servo base:
2318                    ; line_number = 214
2319                    ;  high := servo_base_high + servo_high
2320 00c5 1303          bcf     __rp1___byte, __rp1___bit
2321 00c6 082d          movf    servo_base_high,w
2322 00c7 0731          addwf   servo_high,w
2323 00c8 1703          bsf     __rp1___byte, __rp1___bit
2324 00c9 00b3          movwf   interrupt__high
2325                    ; line_number = 215
2326                    ;  low := servo_base_low + servo_low
2327 00ca 1303          bcf     __rp1___byte, __rp1___bit
2328 00cb 082e          movf    servo_base_low,w
2329 00cc 0732          addwf   servo_low,w
2330 00cd 1703          bsf     __rp1___byte, __rp1___bit
2331 00ce 00b4          movwf   interrupt__low
2332                    ; line_number = 216
2333                    ;  if _c start
2334                    ; =>bit_code_emit@symbol(): sym=_c
2335                    ; CASE: True.size=1 False.size=0
2336 00cf 1803          btfsc   _c___byte, _c___bit
2337                    ; line_number = 217
2338                    ; high := high + 1
2339 00d0 0ab3          incf    interrupt__high,f
2340            
2341                    ; Recombine size1 = 0 || size2 = 0
2342                    ; <=bit_code_emit@symbol; sym=_c (data:10=>10 code:XX=>XX)
2343                    ; line_number = 216
2344                    ;  if _c done
2345                    ; # Now double it because the processor runs at 2 MIPS, not 1 MIPS:
2346                    ; line_number = 220
2347                    ;  high := high + high
2348 00d1 0833          movf    interrupt__high,w
2349 00d2 07b3          addwf   interrupt__high,f
2350                    ; line_number = 221
2351                    ;  if low@7 start
2352 00000134 = interrupt__select__22___byte equ interrupt__low
2353 00000007 = interrupt__select__22___bit equ 7
2354                    ; =>bit_code_emit@symbol(): sym=interrupt__select__22
2355                    ; CASE: True.size=1 False.size=0
2356 00d3 1bb4          btfsc   interrupt__select__22___byte, interrupt__select__22___bit
2357                    ; line_number = 222
2358                    ; high@0 := 1
2359 00000133 = interrupt__select__21___byte equ interrupt__high
2360 00000000 = interrupt__select__21___bit equ 0
2361 00d4 1433          bsf     interrupt__select__21___byte, interrupt__select__21___bit
2362                    ; Recombine size1 = 0 || size2 = 0
2363                    ; <=bit_code_emit@symbol; sym=interrupt__select__22 (data:10=>10 code:XX=>XX)
2364                    ; line_number = 221
2365                    ;  if low@7 done
2366                    ; line_number = 223
2367                    ; low := low + low
2368 00d5 0834          movf    interrupt__low,w
2369 00d6 07b4          addwf   interrupt__low,f
2370            
2371                    ; # Set the servo pulse:
2372                    ; line_number = 226
2373                    ;  io7 := 1
2374 00d7 1303          bcf     __rp1___byte, __rp1___bit
2375 00d8 1587          bsf     io7___byte, io7___bit
2376                    ; line_number = 227
2377                    ;  _tmr1l := 0
2378 00d9 3000          movlw   0
2379 00da 008e          movwf   _tmr1l
2380                    ; line_number = 228
2381                    ;  _tmr1h := high ^ 0xff
2382 00db 30ff          movlw   255
2383 00dc 1703          bsf     __rp1___byte, __rp1___bit
2384 00dd 0633          xorwf   interrupt__high,w
2385 00de 1303          bcf     __rp1___byte, __rp1___bit
2386 00df 008f          movwf   _tmr1h
2387                    ; line_number = 229
2388                    ;  _tmr1l := low ^ 0xff
2389 00e0 30ff          movlw   255
2390 00e1 1703          bsf     __rp1___byte, __rp1___bit
2391 00e2 0634          xorwf   interrupt__low,w
2392 00e3 1303          bcf     __rp1___byte, __rp1___bit
2393 00e4 008e          movwf   _tmr1l
2394   00e5 :   interrupt__24:
2395                    ; <=bit_code_emit@symbol; sym=io7 (data:??=>00 code:XX=>XX)
2396                    ; line_number = 130
2397                    ;  if io7 done
2398                    ; line_number = 230
2399                    ; _tmr1if := 0
2400 00e5 100c          bcf     _tmr1if___byte, _tmr1if___bit
2401            
2402            
2403                    ; delay after procedure statements=non-uniform
2404 00e6 1703          bsf     __rp1___byte, __rp1___bit
2405                    ; Interrupt return
2406                    ; Carefully restore __w and __tatus from RAM
2407                    ; Restore swapped status into W
2408 00e7 0e70          swapf   interrupt___status_save,w
2409                    ; W now contains (unswapped) status
2410                    ; Restore W to __status
2411 00e8 0083          movwf   __status
2412                    ; From here on out, do not modify __status
2413                    ; Swap saved W register in RAM
2414 00e9 0ef1          swapf   interrupt___w_save,f
2415                    ; Unswap the saved W reg and restore to W
2416 00ea 0e71          swapf   interrupt___w_save,w
2417                    ; __w and __status are now restored
2418                    ; Return from interrupt
2419 00eb 0009          retfie  
2420            
2421            
2422            
2423            
2424            
2425                    ; line_number = 235
2426                    ; procedure reset
2427   00ec :   reset:
2428                    ; arguments_none
2429                    ; line_number = 237
2430                    ;  returns_nothing
2431            
2432                    ; # This procedure will initialize all global registers:
2433            
2434                    ; # Set the TRIS registers and analog masks:
2435                    ; #_ansel := 0xff
2436                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2437                    ; line_number = 243
2438                    ;  _ansel := 0x7f
2439 00ec 307f          movlw   127
2440 00ed 1683          bsf     __rp0___byte, __rp0___bit
2441 00ee 0091          movwf   _ansel
2442                    ; #_trisc := 0x3f
2443                    ; line_number = 245
2444                    ;  _trisc := 0x37
2445 00ef 3037          movlw   55
2446 00f0 0087          movwf   _trisc
2447                    ; line_number = 246
2448                    ;  _trisa := 0x3f
2449 00f1 303f          movlw   63
2450 00f2 0085          movwf   _trisa
2451            
2452                    ; # Initialize global registers:
2453                    ; line_number = 249
2454                    ;  index := 0
2455 00f3 3000          movlw   0
2456 00f4 1283          bcf     __rp0___byte, __rp0___bit
2457 00f5 00d4          movwf   index
2458                    ; line_number = 250
2459                    ;  loop_exactly state_size start
2460 0000005e = reset__1 equ globals___0+62
2461 00f6 3010          movlw   16
2462 00f7 00de          movwf   reset__1
2463   00f8 :   reset__2:
2464                    ; line_number = 251
2465                    ; state[index] := 0
2466                    ; index_fsr_first
2467 00f8 0854          movf    index,w
2468 00f9 3e23          addlw   state
2469 00fa 0084          movwf   __fsr
2470 00fb 3000          movlw   0
2471 00fc 0080          movwf   __indf
2472                    ; line_number = 252
2473                    ;  index := index + 1
2474 00fd 0ad4          incf    index,f
2475            
2476                    ; line_number = 250
2477                    ;  loop_exactly state_size wrap-up
2478 00fe 0bde          decfsz  reset__1,f
2479 00ff 28f8          goto    reset__2
2480                    ; line_number = 250
2481                    ;  loop_exactly state_size done
2482                    ; # Set up the timer for the servo pulses:
2483                    ; line_number = 255
2484                    ;  servo_high := 0
2485 0100 3000          movlw   0
2486 0101 00b1          movwf   servo_high
2487                    ; line_number = 256
2488                    ;  servo_low := 0
2489 0102 3000          movlw   0
2490 0103 00b2          movwf   servo_low
2491                    ; line_number = 257
2492                    ;  offset := 0
2493 0104 3000          movlw   0
2494 0105 1703          bsf     __rp1___byte, __rp1___bit
2495 0106 00a4          movwf   offset
2496                    ; line_number = 258
2497                    ;  direction := 1
2498 0107 3001          movlw   1
2499 0108 00a2          movwf   direction
2500                    ; line_number = 259
2501                    ;  servo_delay := initial_servo_delay
2502 0109 3001          movlw   1
2503 010a 1303          bcf     __rp1___byte, __rp1___bit
2504 010b 00b0          movwf   servo_delay
2505                    ; line_number = 260
2506                    ;  servo_steps := initial_servo_steps
2507 010c 3020          movlw   32
2508 010d 00ac          movwf   servo_steps
2509                    ; line_number = 261
2510                    ;  delay_count := initial_servo_delay
2511 010e 3001          movlw   1
2512 010f 1703          bsf     __rp1___byte, __rp1___bit
2513 0110 00a3          movwf   delay_count
2514                    ; line_number = 262
2515                    ;  servo_increment := initial_servo_increment
2516 0111 303e          movlw   62
2517 0112 1303          bcf     __rp1___byte, __rp1___bit
2518 0113 00af          movwf   servo_increment
2519                    ; line_number = 263
2520                    ;  servo_base_high := initial_servo_base_high
2521 0114 3001          movlw   1
2522 0115 00ad          movwf   servo_base_high
2523                    ; line_number = 264
2524                    ;  servo_base_low := initial_servo_base_low
2525 0116 302c          movlw   44
2526 0117 00ae          movwf   servo_base_low
2527                    ; line_number = 265
2528                    ;  adjust_low := initial_servo_increment
2529 0118 303e          movlw   62
2530 0119 1703          bsf     __rp1___byte, __rp1___bit
2531 011a 00a1          movwf   adjust_low
2532                    ; line_number = 266
2533                    ;  adjust_high := 0
2534 011b 3000          movlw   0
2535 011c 00a0          movwf   adjust_high
2536                    ; line_number = 267
2537                    ;  track_minimum := 0
2538 011d 3000          movlw   0
2539 011e 00ad          movwf   track_minimum
2540                    ; line_number = 268
2541                    ;  track_maximum := 0x3f
2542 011f 303f          movlw   63
2543 0120 00ae          movwf   track_maximum
2544                    ; line_number = 269
2545                    ;  track_offset_span := 5
2546 0121 3005          movlw   5
2547 0122 00af          movwf   track_offset_span
2548                    ; line_number = 270
2549                    ;  track_offset_minimum := 0
2550 0123 3000          movlw   0
2551 0124 00b0          movwf   track_offset_minimum
2552                    ; line_number = 271
2553                    ;  track_offset_maximum := initial_servo_steps
2554 0125 3020          movlw   32
2555 0126 00b1          movwf   track_offset_maximum
2556            
2557                    ; line_number = 273
2558                    ;  _tmr1l := 0
2559 0127 3000          movlw   0
2560 0128 1303          bcf     __rp1___byte, __rp1___bit
2561 0129 008e          movwf   _tmr1l
2562                    ; line_number = 274
2563                    ;  _tmr1h := 0
2564 012a 3000          movlw   0
2565 012b 008f          movwf   _tmr1h
2566                    ; line_number = 275
2567                    ;  _tmr1if := 0
2568 012c 100c          bcf     _tmr1if___byte, _tmr1if___bit
2569                    ; line_number = 276
2570                    ;  _tmr1ie := 1
2571 012d 1683          bsf     __rp0___byte, __rp0___bit
2572 012e 140c          bsf     _tmr1ie___byte, _tmr1ie___bit
2573                    ; line_number = 277
2574                    ;  _t1con := 0
2575 012f 3000          movlw   0
2576 0130 1283          bcf     __rp0___byte, __rp0___bit
2577 0131 0090          movwf   _t1con
2578                    ; line_number = 278
2579                    ;  _peie := 1
2580 0132 170b          bsf     _peie___byte, _peie___bit
2581                    ; line_number = 279
2582                    ;  _gie := 1
2583 0133 178b          bsf     _gie___byte, _gie___bit
2584                    ; line_number = 280
2585                    ;  _psa := 0
2586 0134 1683          bsf     __rp0___byte, __rp0___bit
2587 0135 1181          bcf     _psa___byte, _psa___bit
2588                    ; line_number = 281
2589                    ;  _tmr1ie := 1
2590 0136 140c          bsf     _tmr1ie___byte, _tmr1ie___bit
2591            
2592                    ; line_number = 283
2593                    ;  _tmr1on := 1
2594 0137 1283          bcf     __rp0___byte, __rp0___bit
2595 0138 1410          bsf     _tmr1on___byte, _tmr1on___bit
2596            
2597                    ; line_number = 285
2598                    ;  index := 0
2599 0139 3000          movlw   0
2600 013a 00d4          movwf   index
2601                    ; line_number = 286
2602                    ;  loop_exactly channels start
2603 0000005e = reset__3 equ globals___0+62
2604 013b 3008          movlw   8
2605 013c 00de          movwf   reset__3
2606   013d :   reset__4:
2607                    ; line_number = 287
2608                    ; thresholds_high[index] := 0x80
2609                    ; index_fsr_first
2610 013d 0854          movf    index,w
2611 013e 3e43          addlw   thresholds_high
2612 013f 0084          movwf   __fsr
2613 0140 3080          movlw   128
2614 0141 0080          movwf   __indf
2615                    ; line_number = 288
2616                    ;  thresholds_low[index] := 0x80
2617                    ; index_fsr_first
2618 0142 0854          movf    index,w
2619 0143 3e4b          addlw   thresholds_low
2620 0144 0084          movwf   __fsr
2621 0145 3080          movlw   128
2622 0146 0080          movwf   __indf
2623                    ; line_number = 289
2624                    ;  index := index + 1
2625 0147 0ad4          incf    index,f
2626            
2627                    ; line_number = 286
2628                    ;  loop_exactly channels wrap-up
2629 0148 0bde          decfsz  reset__3,f
2630 0149 293d          goto    reset__4
2631                    ; line_number = 286
2632                    ;  loop_exactly channels done
2633                    ; line_number = 291
2634                    ; interrupt_enable := 0
2635 014a 1027          bcf     interrupt_enable___byte, interrupt_enable___bit
2636                    ; line_number = 292
2637                    ;  interrupt_pending := 0
2638 014b 10a7          bcf     interrupt_pending___byte, interrupt_pending___bit
2639            
2640                    ; # Initialize the A/D module:
2641                    ; # A/D Conversion clock is Fosc/8 (Tad=2uS) and AD is on:
2642                    ; line_number = 296
2643                    ;  _adcon0 := 1
2644 014c 3001          movlw   1
2645 014d 009f          movwf   _adcon0
2646                    ; line_number = 297
2647                    ;  _adcon1 := 0x20
2648 014e 3020          movlw   32
2649 014f 1683          bsf     __rp0___byte, __rp0___bit
2650 0150 009f          movwf   _adcon1
2651                    ; line_number = 298
2652                    ;  _adcs0 := 1
2653 0151 161f          bsf     _adcs0___byte, _adcs0___bit
2654                    ; line_number = 299
2655                    ;  _adif := 0
2656 0152 1283          bcf     __rp0___byte, __rp0___bit
2657 0153 130c          bcf     _adif___byte, _adif___bit
2658                    ; line_number = 300
2659                    ;  _adie := 0
2660 0154 1683          bsf     __rp0___byte, __rp0___bit
2661 0155 130c          bcf     _adie___byte, _adie___bit
2662                    ; #_gie := 0
2663                    ; line_number = 302
2664                    ;  channel := 0
2665 0156 3000          movlw   0
2666 0157 1283          bcf     __rp0___byte, __rp0___bit
2667 0158 00d6          movwf   channel
2668                    ; line_number = 303
2669                    ;  _vcfg := 0
2670 0159 131f          bcf     _vcfg___byte, _vcfg___bit
2671            
2672                    ; # Initialize remaining registers:
2673                    ; line_number = 306
2674                    ;  glitch := 0
2675 015a 3000          movlw   0
2676 015b 00d3          movwf   glitch
2677                    ; line_number = 307
2678                    ;  index := 0
2679 015c 3000          movlw   0
2680 015d 00d4          movwf   index
2681                    ; line_number = 308
2682                    ;  _gie := 1
2683 015e 178b          bsf     _gie___byte, _gie___bit
2684            
2685            
2686                    ; delay after procedure statements=non-uniform
2687                    ; Implied return
2688 015f 3400          retlw   0
2689            
2690            
2691            
2692            
2693                    ; line_number = 311
2694                    ; procedure main
2695   0160 :   main:
2696                    ; Initialize some registers
2697 0160 019f          clrf    _adcon0
2698 0161 1683          bsf     __rp0___byte, __rp0___bit
2699 0162 0191          clrf    _ansel
2700 0163 3007          movlw   7
2701 0164 1283          bcf     __rp0___byte, __rp0___bit
2702 0165 0099          movwf   _cmcon0
2703 0166 303f          movlw   63
2704 0167 1683          bsf     __rp0___byte, __rp0___bit
2705 0168 0085          movwf   _trisa
2706 0169 3037          movlw   55
2707 016a 0087          movwf   _trisc
2708                    ; arguments_none
2709                    ; line_number = 313
2710                    ;  returns_nothing
2711            
2712                    ; line_number = 315
2713                    ;  local command byte
2714 00000057 = main__command equ globals___0+55
2715                    ; line_number = 316
2716                    ;  local temp byte
2717 00000058 = main__temp equ globals___0+56
2718                    ; line_number = 317
2719                    ;  local do_send bit
2720 0000006f = main__do_send___byte equ globals___0+79
2721 00000002 = main__do_send___bit equ 2
2722            
2723                    ; # Switch over to 8MHz:
2724                    ; before procedure statements delay=non-uniform, bit states=(data:00=>01 code:XX=>XX)
2725                    ; line_number = 320
2726                    ;  _osccon := 0x71
2727 016b 3071          movlw   113
2728 016c 008f          movwf   _osccon
2729            
2730                    ; # Warm up the UART:
2731                    ; line_number = 323
2732                    ;  _txsta := 0x24
2733 016d 3024          movlw   36
2734 016e 1283          bcf     __rp0___byte, __rp0___bit
2735 016f 0096          movwf   _txsta
2736                    ; line_number = 324
2737                    ;  _rcsta := 0x90
2738 0170 3090          movlw   144
2739 0171 0097          movwf   _rcsta
2740                    ; line_number = 325
2741                    ;  _baudctl := 0x08
2742 0172 3008          movlw   8
2743 0173 0091          movwf   _baudctl
2744                    ; line_number = 326
2745                    ;  _spbrg := _eusart_2400_low
2746 0174 3040          movlw   64
2747 0175 0093          movwf   _spbrg
2748                    ; line_number = 327
2749                    ;  _spbrgh := _eusart_2400_high
2750 0176 3003          movlw   3
2751 0177 0092          movwf   _spbrgh
2752            
2753                    ; # Initalize all of the globals:
2754                    ; line_number = 330
2755                    ;  call reset()
2756 0178 20ec          call    reset
2757            
2758                    ; #loop_forever
2759                    ; #	io7 := 0
2760                    ; #	io7 := 1
2761            
2762                    ; # Process commands:
2763                    ; line_number = 337
2764                    ;  loop_forever start
2765   0179 :   main__1:
2766                    ; # Wait for command:
2767                    ; line_number = 339
2768                    ;  command := byte_get()
2769 0179 23b8          call    byte_get
2770 017a 00d7          movwf   main__command
2771            
2772                    ; # Dispatch on command:
2773                    ; line_number = 342
2774                    ;  switch command >> 6 start
2775 017b 3001          movlw   main__98>>8
2776 017c 008a          movwf   __pclath
2777 0000005f = main__99 equ globals___0+63
2778 017d 0e57          swapf   main__command,w
2779 017e 00df          movwf   main__99
2780 017f 0cdf          rrf     main__99,f
2781 0180 0c5f          rrf     main__99,w
2782 0181 3903          andlw   3
2783 0182 3e84          addlw   main__98
2784 0183 0082          movwf   __pcl
2785                    ; page_group 4
2786   0184 :   main__98:
2787 0184 2988          goto    main__94
2788 0185 2a24          goto    main__95
2789 0186 2a92          goto    main__96
2790 0187 2a99          goto    main__97
2791                    ; line_number = 343
2792                    ; case 0
2793   0188 :   main__94:
2794                    ; # 00xx xxxx:
2795                    ; line_number = 345
2796                    ;  do_send := 1
2797 0188 156f          bsf     main__do_send___byte, main__do_send___bit
2798                    ; line_number = 346
2799                    ;  channel := command & 3
2800 0189 3003          movlw   3
2801 018a 0557          andwf   main__command,w
2802 018b 00d6          movwf   channel
2803                    ; line_number = 347
2804                    ;  switch command >> 3 start
2805 018c 3001          movlw   main__31>>8
2806 018d 008a          movwf   __pclath
2807 0000005f = main__32 equ globals___0+63
2808 018e 0c57          rrf     main__command,w
2809 018f 00df          movwf   main__32
2810 0190 0cdf          rrf     main__32,f
2811 0191 0c5f          rrf     main__32,w
2812 0192 391f          andlw   31
2813 0193 3e95          addlw   main__31
2814 0194 0082          movwf   __pcl
2815                    ; page_group 8
2816   0195 :   main__31:
2817 0195 299d          goto    main__23
2818 0196 29a3          goto    main__24
2819 0197 29ae          goto    main__25
2820 0198 29b4          goto    main__26
2821 0199 29ba          goto    main__27
2822 019a 29d6          goto    main__28
2823 019b 29f4          goto    main__29
2824 019c 2a1e          goto    main__30
2825                    ; line_number = 348
2826                    ; case 0
2827   019d :   main__23:
2828                    ; # 0000 0ccc (Read 8-bit Analog):
2829                    ; line_number = 350
2830                    ;  temp := analogs_high[channel]
2831 019d 0856          movf    channel,w
2832 019e 3e33          addlw   analogs_high
2833 019f 0084          movwf   __fsr
2834 01a0 0800          movf    __indf,w
2835 01a1 00d8          movwf   main__temp
2836 01a2 2a1f          goto    main__33
2837                    ; line_number = 351
2838                    ; case 1
2839   01a3 :   main__24:
2840                    ; # 0000 1ccc (Read 10-bit Analog):
2841                    ; line_number = 353
2842                    ;  call byte_put(analogs_high[channel])
2843 01a3 0856          movf    channel,w
2844 01a4 3e33          addlw   analogs_high
2845 01a5 0084          movwf   __fsr
2846 01a6 0800          movf    __indf,w
2847 01a7 23c4          call    byte_put
2848                    ; line_number = 354
2849                    ;  temp := analogs_low[channel]
2850 01a8 0856          movf    channel,w
2851 01a9 3e3b          addlw   analogs_low
2852 01aa 0084          movwf   __fsr
2853 01ab 0800          movf    __indf,w
2854 01ac 00d8          movwf   main__temp
2855 01ad 2a1f          goto    main__33
2856                    ; line_number = 355
2857                    ; case 2
2858   01ae :   main__25:
2859                    ; # 0001 0ccc (Read Low Threshold):
2860                    ; line_number = 357
2861                    ;  temp := thresholds_low[channel]
2862 01ae 0856          movf    channel,w
2863 01af 3e4b          addlw   thresholds_low
2864 01b0 0084          movwf   __fsr
2865 01b1 0800          movf    __indf,w
2866 01b2 00d8          movwf   main__temp
2867 01b3 2a1f          goto    main__33
2868                    ; line_number = 358
2869                    ; case 3
2870   01b4 :   main__26:
2871                    ; # 0001 1ccc (Read High Threshold):
2872                    ; line_number = 360
2873                    ;  temp := thresholds_high[channel]
2874 01b4 0856          movf    channel,w
2875 01b5 3e43          addlw   thresholds_high
2876 01b6 0084          movwf   __fsr
2877 01b7 0800          movf    __indf,w
2878 01b8 00d8          movwf   main__temp
2879 01b9 2a1f          goto    main__33
2880                    ; line_number = 361
2881                    ; case 4
2882   01ba :   main__27:
2883                    ; # 0010 0xxx:
2884                    ; line_number = 363
2885                    ;  switch command & 7 start
2886                    ; line_number = 364
2887                    ; case_maximum 7
2888 01ba 3001          movlw   main__7>>8
2889 01bb 008a          movwf   __pclath
2890 01bc 3007          movlw   7
2891 01bd 0557          andwf   main__command,w
2892 01be 3ec0          addlw   main__7
2893 01bf 0082          movwf   __pcl
2894                    ; page_group 8
2895   01c0 :   main__7:
2896 01c0 29c8          goto    main__2
2897 01c1 29cb          goto    main__3
2898 01c2 29ce          goto    main__4
2899 01c3 29d1          goto    main__5
2900 01c4 29d4          goto    main__6
2901 01c5 29d4          goto    main__6
2902 01c6 29d4          goto    main__6
2903 01c7 29d4          goto    main__6
2904                    ; line_number = 365
2905                    ; case 0
2906   01c8 :   main__2:
2907                    ; # 0010 0000 (Read High Mask):
2908                    ; line_number = 367
2909                    ;  temp := high_mask
2910 01c8 0829          movf    high_mask,w
2911 01c9 00d8          movwf   main__temp
2912 01ca 29d5          goto    main__8
2913                    ; line_number = 368
2914                    ; case 1
2915   01cb :   main__3:
2916                    ; # 0010 0001 (Read Low Mask):
2917                    ; line_number = 370
2918                    ;  temp := low_mask
2919 01cb 0828          movf    low_mask,w
2920 01cc 00d8          movwf   main__temp
2921 01cd 29d5          goto    main__8
2922                    ; line_number = 371
2923                    ; case 2
2924   01ce :   main__4:
2925                    ; # 0010 0010 (Read Rising Mask):
2926                    ; line_number = 373
2927                    ;  temp := rising_mask
2928 01ce 082a          movf    rising_mask,w
2929 01cf 00d8          movwf   main__temp
2930 01d0 29d5          goto    main__8
2931                    ; line_number = 374
2932                    ; case 3
2933   01d1 :   main__5:
2934                    ; # 0010 0011 (Read Falling Mask):
2935                    ; line_number = 376
2936                    ;  temp := falling_mask
2937 01d1 082b          movf    falling_mask,w
2938 01d2 00d8          movwf   main__temp
2939 01d3 29d5          goto    main__8
2940                    ; line_number = 377
2941                    ; default
2942   01d4 :   main__6:
2943                    ; line_number = 378
2944                    ; do_send := 0
2945 01d4 116f          bcf     main__do_send___byte, main__do_send___bit
2946   01d5 :   main__8:
2947                    ; switch end:(data:00=>00 code:XX=>XX)
2948                    ; line_number = 363
2949                    ;  switch command & 7 done
2950 01d5 2a1f          goto    main__33
2951                    ; line_number = 379
2952                    ; case 5
2953   01d6 :   main__28:
2954                    ; # 0010 1xxx:
2955                    ; line_number = 381
2956                    ;  switch command & 7 start
2957                    ; line_number = 382
2958                    ; case_maximum 7
2959 01d6 3001          movlw   main__14>>8
2960 01d7 008a          movwf   __pclath
2961 01d8 3007          movlw   7
2962 01d9 0557          andwf   main__command,w
2963 01da 3edc          addlw   main__14
2964 01db 0082          movwf   __pcl
2965                    ; page_group 8
2966   01dc :   main__14:
2967 01dc 29e4          goto    main__9
2968 01dd 29e7          goto    main__10
2969 01de 29ec          goto    main__11
2970 01df 29ef          goto    main__12
2971 01e0 29f2          goto    main__13
2972 01e1 29f2          goto    main__13
2973 01e2 29f2          goto    main__13
2974 01e3 29f2          goto    main__13
2975                    ; line_number = 383
2976                    ; case 0
2977   01e4 :   main__9:
2978                    ; # 0010 1000 (Read Servo Steps):
2979                    ; line_number = 385
2980                    ;  temp := servo_steps
2981 01e4 082c          movf    servo_steps,w
2982 01e5 00d8          movwf   main__temp
2983 01e6 29f3          goto    main__15
2984                    ; line_number = 386
2985                    ; case 1
2986   01e7 :   main__10:
2987                    ; # 0010 1001 (Read Servo Base):
2988                    ; line_number = 388
2989                    ;  call byte_put(servo_base_high)
2990 01e7 082d          movf    servo_base_high,w
2991 01e8 23c4          call    byte_put
2992                    ; line_number = 389
2993                    ;  temp := servo_base_low
2994 01e9 082e          movf    servo_base_low,w
2995 01ea 00d8          movwf   main__temp
2996 01eb 29f3          goto    main__15
2997                    ; line_number = 390
2998                    ; case 2
2999   01ec :   main__11:
3000                    ; # 0010 0010 (Read Servo Increment):
3001                    ; line_number = 392
3002                    ;  temp := servo_increment
3003 01ec 082f          movf    servo_increment,w
3004 01ed 00d8          movwf   main__temp
3005 01ee 29f3          goto    main__15
3006                    ; line_number = 393
3007                    ; case 3
3008   01ef :   main__12:
3009                    ; # 0010 0011 (Read Servo Delay):
3010                    ; line_number = 395
3011                    ;  temp := servo_delay
3012 01ef 0830          movf    servo_delay,w
3013 01f0 00d8          movwf   main__temp
3014 01f1 29f3          goto    main__15
3015                    ; line_number = 396
3016                    ; default
3017   01f2 :   main__13:
3018                    ; line_number = 397
3019                    ; do_send := 0
3020 01f2 116f          bcf     main__do_send___byte, main__do_send___bit
3021   01f3 :   main__15:
3022                    ; switch end:(data:00=>00 code:XX=>XX)
3023                    ; line_number = 381
3024                    ;  switch command & 7 done
3025 01f3 2a1f          goto    main__33
3026                    ; line_number = 398
3027                    ; case 6
3028   01f4 :   main__29:
3029                    ; # 0011 0xxx:
3030                    ; line_number = 400
3031                    ;  switch command & 7 start
3032                    ; line_number = 401
3033                    ; case_maximum 7
3034 01f4 3002          movlw   main__21>>8
3035 01f5 008a          movwf   __pclath
3036 01f6 3007          movlw   7
3037 01f7 0557          andwf   main__command,w
3038 01f8 3e00          addlw   main__21
3039 01f9 0082          movwf   __pcl
3040                    ; page_group 8
3041                    ; Add 6 NOP's until start of new page 
3042 01fa 0000          nop     
3043 01fb 0000          nop     
3044 01fc 0000          nop     
3045 01fd 0000          nop     
3046 01fe 0000          nop     
3047 01ff 0000          nop     
3048   0200 :   main__21:
3049 0200 2a1c          goto    main__20
3050 0201 2a1c          goto    main__20
3051 0202 2a1c          goto    main__20
3052 0203 2a1c          goto    main__20
3053 0204 2a08          goto    main__16
3054 0205 2a0d          goto    main__17
3055 0206 2a12          goto    main__18
3056 0207 2a17          goto    main__19
3057                    ; line_number = 402
3058                    ; case 4
3059   0208 :   main__16:
3060                    ; This case body wants this bit set
3061 0208 1703          bsf     __rp1___byte, __rp1___bit
3062                    ; # 0011 0100 (Read Minimum Distance):
3063                    ; line_number = 404
3064                    ;  temp := last_minimum
3065 0209 082b          movf    last_minimum,w
3066 020a 1303          bcf     __rp1___byte, __rp1___bit
3067 020b 00d8          movwf   main__temp
3068 020c 2a1d          goto    main__22
3069                    ; line_number = 405
3070                    ; case 5
3071   020d :   main__17:
3072                    ; This case body wants this bit set
3073 020d 1703          bsf     __rp1___byte, __rp1___bit
3074                    ; # 0011 0101 (Read Minimum Distance Index):
3075                    ; line_number = 407
3076                    ;  temp := last_minimum_offset
3077 020e 082c          movf    last_minimum_offset,w
3078 020f 1303          bcf     __rp1___byte, __rp1___bit
3079 0210 00d8          movwf   main__temp
3080 0211 2a1d          goto    main__22
3081                    ; line_number = 408
3082                    ; case 6
3083   0212 :   main__18:
3084                    ; This case body wants this bit set
3085 0212 1703          bsf     __rp1___byte, __rp1___bit
3086                    ; # 0011 0110 (Read Maximum Distance):
3087                    ; line_number = 410
3088                    ;  temp := last_maximum
3089 0213 0829          movf    last_maximum,w
3090 0214 1303          bcf     __rp1___byte, __rp1___bit
3091 0215 00d8          movwf   main__temp
3092 0216 2a1d          goto    main__22
3093                    ; line_number = 411
3094                    ; case 7
3095   0217 :   main__19:
3096                    ; This case body wants this bit set
3097 0217 1703          bsf     __rp1___byte, __rp1___bit
3098                    ; # 0011 0111 (Read Maximum Distance Index):
3099                    ; line_number = 413
3100                    ;  temp := last_maximum_offset
3101 0218 082a          movf    last_maximum_offset,w
3102 0219 1303          bcf     __rp1___byte, __rp1___bit
3103 021a 00d8          movwf   main__temp
3104 021b 2a1d          goto    main__22
3105                    ; line_number = 414
3106                    ; default
3107   021c :   main__20:
3108                    ; line_number = 415
3109                    ; do_send := 0
3110 021c 116f          bcf     main__do_send___byte, main__do_send___bit
3111   021d :   main__22:
3112                    ; switch end:(data:00=>00 code:XX=>XX)
3113                    ; line_number = 400
3114                    ;  switch command & 7 done
3115 021d 2a1f          goto    main__33
3116                    ; line_number = 416
3117                    ; case 7
3118   021e :   main__30:
3119                    ; # 0011 1xxx:
3120                    ; line_number = 418
3121                    ;  do_send := 0
3122 021e 116f          bcf     main__do_send___byte, main__do_send___bit
3123   021f :   main__33:
3124                    ; switch end:(data:00=>00 code:XX=>XX)
3125                    ; line_number = 347
3126                    ;  switch command >> 3 done
3127                    ; line_number = 419
3128                    ; if do_send start
3129                    ; =>bit_code_emit@symbol(): sym=main__do_send
3130                    ; CASE: true_code.size = 0 && false_code.size > 1
3131 021f 1d6f          btfss   main__do_send___byte, main__do_send___bit
3132 0220 2a23          goto    main__34
3133                    ; line_number = 420
3134                    ; call byte_put(temp)
3135 0221 0858          movf    main__temp,w
3136 0222 23c4          call    byte_put
3137                    ; Recombine size1 = 0 || size2 = 0
3138   0223 :   main__34:
3139                    ; <=bit_code_emit@symbol; sym=main__do_send (data:00=>00 code:XX=>XX)
3140                    ; line_number = 419
3141                    ; if do_send done
3142 0223 2b14          goto    main__100
3143                    ; line_number = 421
3144                    ; case 1
3145   0224 :   main__95:
3146                    ; # 01xx xxxx:
3147                    ; line_number = 423
3148                    ;  channel := command & 7
3149 0224 3007          movlw   7
3150 0225 0557          andwf   main__command,w
3151 0226 00d6          movwf   channel
3152                    ; line_number = 424
3153                    ;  switch (command >> 3) & 7 start
3154 0227 3002          movlw   main__59>>8
3155 0228 008a          movwf   __pclath
3156 0000005f = main__60 equ globals___0+63
3157 0229 0c57          rrf     main__command,w
3158 022a 00df          movwf   main__60
3159 022b 0cdf          rrf     main__60,f
3160 022c 0c5f          rrf     main__60,w
3161 022d 3907          andlw   7
3162 022e 3e30          addlw   main__59
3163 022f 0082          movwf   __pcl
3164                    ; page_group 8
3165   0230 :   main__59:
3166 0230 2a38          goto    main__51
3167 0231 2a39          goto    main__52
3168 0232 2a3a          goto    main__53
3169 0233 2a44          goto    main__54
3170 0234 2a4e          goto    main__55
3171 0235 2a69          goto    main__56
3172 0236 2a90          goto    main__57
3173 0237 2a91          goto    main__58
3174                    ; line_number = 425
3175                    ; case 0
3176   0238 :   main__51:
3177                    ; # 0100 0xxx:
3178 0238 2a91          goto    main__61
3179                    ; line_number = 427
3180                    ; case 1
3181   0239 :   main__52:
3182                    ; # 0100 1xxx:
3183 0239 2a91          goto    main__61
3184                    ; line_number = 429
3185                    ; case 2
3186   023a :   main__53:
3187                    ; # 0101 0ccc (Set Low Threshold):
3188                    ; line_number = 431
3189                    ;  thresholds_low[channel] := byte_get()
3190                    ; index_temporary_first
3191 0000005f = main__35 equ globals___0+63
3192 00000060 = main__36 equ globals___0+64
3193 023a 0856          movf    channel,w
3194 023b 00df          movwf   main__35
3195 023c 23b8          call    byte_get
3196 023d 00e0          movwf   main__36
3197 023e 085f          movf    main__35,w
3198 023f 3e4b          addlw   thresholds_low
3199 0240 0084          movwf   __fsr
3200 0241 0860          movf    main__36,w
3201 0242 0080          movwf   __indf
3202 0243 2a91          goto    main__61
3203                    ; line_number = 432
3204                    ; case 3
3205   0244 :   main__54:
3206                    ; # 0101 1ccc (Set High Threshold):
3207                    ; line_number = 434
3208                    ;  thresholds_high[channel] := byte_get()
3209                    ; index_temporary_first
3210 0000005f = main__37 equ globals___0+63
3211 00000060 = main__38 equ globals___0+64
3212 0244 0856          movf    channel,w
3213 0245 00df          movwf   main__37
3214 0246 23b8          call    byte_get
3215 0247 00e0          movwf   main__38
3216 0248 085f          movf    main__37,w
3217 0249 3e43          addlw   thresholds_high
3218 024a 0084          movwf   __fsr
3219 024b 0860          movf    main__38,w
3220 024c 0080          movwf   __indf
3221 024d 2a91          goto    main__61
3222                    ; line_number = 435
3223                    ; case 4
3224   024e :   main__55:
3225                    ; # 0110 0xxx:
3226                    ; line_number = 437
3227                    ;  temp := byte_get()
3228 024e 23b8          call    byte_get
3229 024f 00d8          movwf   main__temp
3230                    ; line_number = 438
3231                    ;  switch channel start
3232                    ; line_number = 439
3233                    ; case_maximum 7
3234 0250 3002          movlw   main__43>>8
3235 0251 008a          movwf   __pclath
3236 0252 0856          movf    channel,w
3237 0253 3e55          addlw   main__43
3238 0254 0082          movwf   __pcl
3239                    ; page_group 8
3240   0255 :   main__43:
3241 0255 2a5d          goto    main__39
3242 0256 2a60          goto    main__40
3243 0257 2a63          goto    main__41
3244 0258 2a66          goto    main__42
3245 0259 2a68          goto    main__44
3246 025a 2a68          goto    main__44
3247 025b 2a68          goto    main__44
3248 025c 2a68          goto    main__44
3249                    ; line_number = 440
3250                    ; case 0
3251   025d :   main__39:
3252                    ; # 0110 0000 (Set High Mask):
3253                    ; line_number = 442
3254                    ;  high_mask := temp
3255 025d 0858          movf    main__temp,w
3256 025e 00a9          movwf   high_mask
3257 025f 2a68          goto    main__44
3258                    ; line_number = 443
3259                    ; case 1
3260   0260 :   main__40:
3261                    ; # 0110 0001 (Set Low Mask):
3262                    ; line_number = 445
3263                    ;  low_mask := temp
3264 0260 0858          movf    main__temp,w
3265 0261 00a8          movwf   low_mask
3266 0262 2a68          goto    main__44
3267                    ; line_number = 446
3268                    ; case 2
3269   0263 :   main__41:
3270                    ; # 0110 0010 (Set Rising Mask):
3271                    ; line_number = 448
3272                    ;  rising_mask := temp
3273 0263 0858          movf    main__temp,w
3274 0264 00aa          movwf   rising_mask
3275 0265 2a68          goto    main__44
3276                    ; line_number = 449
3277                    ; case 3
3278   0266 :   main__42:
3279                    ; # 0110 0011 (Set Falling Mask):
3280                    ; line_number = 451
3281                    ;  falling_mask := temp
3282 0266 0858          movf    main__temp,w
3283 0267 00ab          movwf   falling_mask
3284   0268 :   main__44:
3285                    ; switch end:(data:00=>00 code:XX=>XX)
3286                    ; line_number = 438
3287                    ;  switch channel done
3288 0268 2a91          goto    main__61
3289                    ; line_number = 452
3290                    ; case 5
3291   0269 :   main__56:
3292                    ; # 0110 1xxx:
3293                    ; line_number = 454
3294                    ;  temp := byte_get()
3295 0269 23b8          call    byte_get
3296 026a 00d8          movwf   main__temp
3297                    ; line_number = 455
3298                    ;  switch command & 7 start
3299                    ; line_number = 456
3300                    ; case_maximum 7
3301 026b 3002          movlw   main__49>>8
3302 026c 008a          movwf   __pclath
3303 026d 3007          movlw   7
3304 026e 0557          andwf   main__command,w
3305 026f 3e71          addlw   main__49
3306 0270 0082          movwf   __pcl
3307                    ; page_group 8
3308   0271 :   main__49:
3309 0271 2a79          goto    main__45
3310 0272 2a81          goto    main__46
3311 0273 2a86          goto    main__47
3312 0274 2a8d          goto    main__48
3313 0275 2a8f          goto    main__50
3314 0276 2a8f          goto    main__50
3315 0277 2a8f          goto    main__50
3316 0278 2a8f          goto    main__50
3317                    ; line_number = 457
3318                    ; case 0
3319   0279 :   main__45:
3320                    ; This case body wants this bit set
3321 0279 1703          bsf     __rp1___byte, __rp1___bit
3322                    ; # 0110 1000 (Set Servo Steps):
3323                    ; line_number = 459
3324                    ;  offset := 0
3325 027a 3000          movlw   0
3326 027b 00a4          movwf   offset
3327                    ; line_number = 460
3328                    ;  servo_steps := temp & 0x1f
3329 027c 301f          movlw   31
3330 027d 1303          bcf     __rp1___byte, __rp1___bit
3331 027e 0558          andwf   main__temp,w
3332 027f 00ac          movwf   servo_steps
3333 0280 2a8f          goto    main__50
3334                    ; line_number = 461
3335                    ; case 1
3336   0281 :   main__46:
3337                    ; # 0110 1001 (Set Servo Base):
3338                    ; line_number = 463
3339                    ;  servo_base_high := temp
3340 0281 0858          movf    main__temp,w
3341 0282 00ad          movwf   servo_base_high
3342                    ; line_number = 464
3343                    ;  servo_base_low := byte_get()
3344 0283 23b8          call    byte_get
3345 0284 00ae          movwf   servo_base_low
3346 0285 2a8f          goto    main__50
3347                    ; line_number = 465
3348                    ; case 2
3349   0286 :   main__47:
3350                    ; This case body wants this bit set
3351 0286 1703          bsf     __rp1___byte, __rp1___bit
3352                    ; # 0110 1010 (Set Servo Increment):
3353                    ; line_number = 467
3354                    ;  offset := 0
3355 0287 3000          movlw   0
3356 0288 00a4          movwf   offset
3357                    ; line_number = 468
3358                    ;  servo_increment := temp
3359 0289 1303          bcf     __rp1___byte, __rp1___bit
3360 028a 0858          movf    main__temp,w
3361 028b 00af          movwf   servo_increment
3362 028c 2a8f          goto    main__50
3363                    ; line_number = 469
3364                    ; case 3
3365   028d :   main__48:
3366                    ; # 0110 1011 (Set Servo Step Delay):
3367                    ; line_number = 471
3368                    ;  servo_delay := temp
3369 028d 0858          movf    main__temp,w
3370 028e 00b0          movwf   servo_delay
3371   028f :   main__50:
3372                    ; switch end:(data:00=>00 code:XX=>XX)
3373                    ; line_number = 455
3374                    ;  switch command & 7 done
3375 028f 2a91          goto    main__61
3376                    ; line_number = 472
3377                    ; case 6
3378   0290 :   main__57:
3379                    ; # 0111 0xxx:
3380 0290 2a91          goto    main__61
3381                    ; line_number = 474
3382                    ; case 7
3383   0291 :   main__58:
3384                    ; # 0111 1xxx:
3385   0291 :   main__61:
3386                    ; switch end:(data:00=>?? code:XX=>XX)
3387                    ; line_number = 424
3388                    ;  switch (command >> 3) & 7 done
3389 0291 2b14          goto    main__100
3390                    ; line_number = 476
3391                    ; case 2
3392   0292 :   main__96:
3393                    ; # 10ii iiii (Read Scan Distance):
3394                    ; line_number = 478
3395                    ;  call byte_put(analogs[command & 0x3f])
3396 0292 303f          movlw   63
3397 0293 0557          andwf   main__command,w
3398 0294 3ea0          addlw   analogs
3399 0295 0084          movwf   __fsr
3400 0296 0800          movf    __indf,w
3401 0297 23c4          call    byte_put
3402 0298 2b14          goto    main__100
3403                    ; line_number = 479
3404                    ; case 3
3405   0299 :   main__97:
3406                    ; # 11xx xxxx:
3407                    ; line_number = 481
3408                    ;  switch (command >> 3) & 7 start
3409 0299 3002          movlw   main__91>>8
3410 029a 008a          movwf   __pclath
3411 0000005f = main__92 equ globals___0+63
3412 029b 0c57          rrf     main__command,w
3413 029c 00df          movwf   main__92
3414 029d 0cdf          rrf     main__92,f
3415 029e 0c5f          rrf     main__92,w
3416 029f 3907          andlw   7
3417 02a0 3ea2          addlw   main__91
3418 02a1 0082          movwf   __pcl
3419                    ; page_group 8
3420   02a2 :   main__91:
3421 02a2 2b14          goto    main__93
3422 02a3 2b14          goto    main__93
3423 02a4 2b14          goto    main__93
3424 02a5 2b14          goto    main__93
3425 02a6 2b14          goto    main__93
3426 02a7 2aaa          goto    main__88
3427 02a8 2ac3          goto    main__89
3428 02a9 2ae0          goto    main__90
3429                    ; line_number = 482
3430                    ; case 5
3431   02aa :   main__88:
3432                    ; # 1110 1xxx:
3433                    ; line_number = 484
3434                    ;  switch command & 7 start
3435 02aa 3002          movlw   main__66>>8
3436 02ab 008a          movwf   __pclath
3437 02ac 3007          movlw   7
3438 02ad 0557          andwf   main__command,w
3439 02ae 3eb0          addlw   main__66
3440 02af 0082          movwf   __pcl
3441                    ; page_group 8
3442   02b0 :   main__66:
3443 02b0 2ac2          goto    main__67
3444 02b1 2ac2          goto    main__67
3445 02b2 2ac2          goto    main__67
3446 02b3 2ac2          goto    main__67
3447 02b4 2ac2          goto    main__67
3448 02b5 2ac2          goto    main__67
3449 02b6 2ab8          goto    main__64
3450 02b7 2aba          goto    main__65
3451                    ; line_number = 485
3452                    ; case 6
3453   02b8 :   main__64:
3454                    ; # 1110 1110 (Reset)
3455                    ; line_number = 487
3456                    ;  call reset()
3457 02b8 20ec          call    reset
3458 02b9 2ac2          goto    main__67
3459                    ; line_number = 488
3460                    ; case 7
3461   02ba :   main__65:
3462                    ; # 1110 1111 (Read Interrupt Bits):
3463                    ; line_number = 490
3464                    ;  temp := 0
3465 02ba 3000          movlw   0
3466 02bb 00d8          movwf   main__temp
3467                    ; line_number = 491
3468                    ;  if interrupt_pending start
3469                    ; =>bit_code_emit@symbol(): sym=interrupt_pending
3470                    ; CASE: True.size=1 False.size=0
3471 02bc 18a7          btfsc   interrupt_pending___byte, interrupt_pending___bit
3472                    ; line_number = 492
3473                    ; temp@0 := 1
3474 00000058 = main__select__62___byte equ main__temp
3475 00000000 = main__select__62___bit equ 0
3476 02bd 1458          bsf     main__select__62___byte, main__select__62___bit
3477                    ; Recombine size1 = 0 || size2 = 0
3478                    ; <=bit_code_emit@symbol; sym=interrupt_pending (data:00=>00 code:XX=>XX)
3479                    ; line_number = 491
3480                    ;  if interrupt_pending done
3481                    ; line_number = 493
3482                    ; if interrupt_enable start
3483                    ; =>bit_code_emit@symbol(): sym=interrupt_enable
3484                    ; CASE: True.size=1 False.size=0
3485 02be 1827          btfsc   interrupt_enable___byte, interrupt_enable___bit
3486                    ; line_number = 494
3487                    ; temp@1 := 1
3488 00000058 = main__select__63___byte equ main__temp
3489 00000001 = main__select__63___bit equ 1
3490 02bf 14d8          bsf     main__select__63___byte, main__select__63___bit
3491                    ; Recombine size1 = 0 || size2 = 0
3492                    ; <=bit_code_emit@symbol; sym=interrupt_enable (data:00=>00 code:XX=>XX)
3493                    ; line_number = 493
3494                    ; if interrupt_enable done
3495                    ; line_number = 495
3496                    ; call byte_put(temp)
3497 02c0 0858          movf    main__temp,w
3498 02c1 23c4          call    byte_put
3499   02c2 :   main__67:
3500                    ; switch end:(data:00=>00 code:XX=>XX)
3501                    ; line_number = 484
3502                    ;  switch command & 7 done
3503 02c2 2b14          goto    main__93
3504                    ; line_number = 496
3505                    ; case 6
3506   02c3 :   main__89:
3507                    ; # 1111 0xxx:
3508                    ; line_number = 498
3509                    ;  switch command & 7 start
3510 02c3 3002          movlw   main__75>>8
3511 02c4 008a          movwf   __pclath
3512 02c5 3007          movlw   7
3513 02c6 0557          andwf   main__command,w
3514 02c7 3ec9          addlw   main__75
3515 02c8 0082          movwf   __pcl
3516                    ; page_group 8
3517   02c9 :   main__75:
3518 02c9 2ad1          goto    main__72
3519 02ca 2ad1          goto    main__72
3520 02cb 2ad1          goto    main__72
3521 02cc 2ad1          goto    main__72
3522 02cd 2ad8          goto    main__73
3523 02ce 2ad8          goto    main__73
3524 02cf 2adc          goto    main__74
3525 02d0 2adc          goto    main__74
3526                    ; line_number = 499
3527                    ; case 0, 1, 2, 3
3528   02d1 :   main__72:
3529                    ; # 1111 00ep (Set Interrupt Bits):
3530                    ; line_number = 501
3531                    ;  interrupt_enable := command@1
3532 02d1 1027          bcf     interrupt_enable___byte, interrupt_enable___bit
3533 00000057 = main__select__68___byte equ main__command
3534 00000001 = main__select__68___bit equ 1
3535                    ; =>bit_code_emit@symbol(): sym=main__select__68
3536                    ; CASE: True.size=1 False.size=0
3537 02d2 18d7          btfsc   main__select__68___byte, main__select__68___bit
3538 02d3 1427          bsf     interrupt_enable___byte, interrupt_enable___bit
3539                    ; Recombine size1 = 0 || size2 = 0
3540                    ; <=bit_code_emit@symbol; sym=main__select__68 (data:00=>00 code:XX=>XX)
3541                    ; line_number = 502
3542                    ;  interrupt_pending := command@0
3543 02d4 10a7          bcf     interrupt_pending___byte, interrupt_pending___bit
3544 00000057 = main__select__69___byte equ main__command
3545 00000000 = main__select__69___bit equ 0
3546                    ; =>bit_code_emit@symbol(): sym=main__select__69
3547                    ; CASE: True.size=1 False.size=0
3548 02d5 1857          btfsc   main__select__69___byte, main__select__69___bit
3549 02d6 14a7          bsf     interrupt_pending___byte, interrupt_pending___bit
3550                    ; Recombine size1 = 0 || size2 = 0
3551                    ; <=bit_code_emit@symbol; sym=main__select__69 (data:00=>00 code:XX=>XX)
3552 02d7 2adf          goto    main__76
3553                    ; line_number = 503
3554                    ; case 4, 5
3555   02d8 :   main__73:
3556                    ; # 1111 010p (Set Interrupt Pending):
3557                    ; line_number = 505
3558                    ;  interrupt_pending := command@0
3559 02d8 10a7          bcf     interrupt_pending___byte, interrupt_pending___bit
3560 00000057 = main__select__70___byte equ main__command
3561 00000000 = main__select__70___bit equ 0
3562                    ; =>bit_code_emit@symbol(): sym=main__select__70
3563                    ; CASE: True.size=1 False.size=0
3564 02d9 1857          btfsc   main__select__70___byte, main__select__70___bit
3565 02da 14a7          bsf     interrupt_pending___byte, interrupt_pending___bit
3566                    ; Recombine size1 = 0 || size2 = 0
3567                    ; <=bit_code_emit@symbol; sym=main__select__70 (data:00=>00 code:XX=>XX)
3568 02db 2adf          goto    main__76
3569                    ; line_number = 506
3570                    ; case 6, 7
3571   02dc :   main__74:
3572                    ; # 1111 011e (Set Interrupt Enable):
3573                    ; line_number = 508
3574                    ;  interrupt_enable := command@0
3575 02dc 1027          bcf     interrupt_enable___byte, interrupt_enable___bit
3576 00000057 = main__select__71___byte equ main__command
3577 00000000 = main__select__71___bit equ 0
3578                    ; =>bit_code_emit@symbol(): sym=main__select__71
3579                    ; CASE: True.size=1 False.size=0
3580 02dd 1857          btfsc   main__select__71___byte, main__select__71___bit
3581 02de 1427          bsf     interrupt_enable___byte, interrupt_enable___bit
3582                    ; Recombine size1 = 0 || size2 = 0
3583                    ; <=bit_code_emit@symbol; sym=main__select__71 (data:00=>00 code:XX=>XX)
3584   02df :   main__76:
3585                    ; switch end:(data:00=>00 code:XX=>XX)
3586                    ; line_number = 498
3587                    ;  switch command & 7 done
3588 02df 2b14          goto    main__93
3589                    ; line_number = 509
3590                    ; case 7
3591   02e0 :   main__90:
3592                    ; line_number = 510
3593                    ; switch command & 7 start
3594 02e0 3002          movlw   main__86>>8
3595 02e1 008a          movwf   __pclath
3596 02e2 3007          movlw   7
3597 02e3 0557          andwf   main__command,w
3598 02e4 3ee6          addlw   main__86
3599 02e5 0082          movwf   __pcl
3600                    ; page_group 8
3601   02e6 :   main__86:
3602 02e6 2aee          goto    main__78
3603 02e7 2af1          goto    main__79
3604 02e8 2af4          goto    main__80
3605 02e9 2af9          goto    main__81
3606 02ea 2afc          goto    main__82
3607 02eb 2b09          goto    main__83
3608 02ec 2b0c          goto    main__84
3609 02ed 2b11          goto    main__85
3610                    ; line_number = 511
3611                    ; case 0
3612   02ee :   main__78:
3613                    ; This case body wants this bit set
3614 02ee 1683          bsf     __rp0___byte, __rp0___bit
3615                    ; # 1111 1000 (Clock Decrement):
3616                    ; line_number = 513
3617                    ;  _osctune := _osctune - _osccal_lsb
3618 02ef 0390          decf    _osctune,f
3619 02f0 2b14          goto    main__87
3620                    ; line_number = 514
3621                    ; case 1
3622   02f1 :   main__79:
3623                    ; This case body wants this bit set
3624 02f1 1683          bsf     __rp0___byte, __rp0___bit
3625                    ; # 1111 1001 (Clock Increment):
3626                    ; line_number = 516
3627                    ;  _osctune := _osctune + _osccal_lsb
3628 02f2 0a90          incf    _osctune,f
3629 02f3 2b14          goto    main__87
3630                    ; line_number = 517
3631                    ; case 2
3632   02f4 :   main__80:
3633                    ; This case body wants this bit set
3634 02f4 1683          bsf     __rp0___byte, __rp0___bit
3635                    ; # 1111 1010 (Clock Read):
3636                    ; line_number = 519
3637                    ;  call byte_put(_osctune)
3638 02f5 0810          movf    _osctune,w
3639 02f6 1283          bcf     __rp0___byte, __rp0___bit
3640 02f7 23c4          call    byte_put
3641 02f8 2b14          goto    main__87
3642                    ; line_number = 520
3643                    ; case 3
3644   02f9 :   main__81:
3645                    ; # 1111 1011 (Clock Pulse):
3646                    ; line_number = 522
3647                    ;  call byte_put(0)
3648 02f9 3000          movlw   0
3649 02fa 23c4          call    byte_put
3650 02fb 2b14          goto    main__87
3651                    ; line_number = 523
3652                    ; case 4
3653   02fc :   main__82:
3654                    ; # 1111 1100 (ID Next):
3655                    ; line_number = 525
3656                    ;  temp := 0
3657 02fc 3000          movlw   0
3658 02fd 00d8          movwf   main__temp
3659                    ; line_number = 526
3660                    ;  if index < id.size start
3661 02fe 3035          movlw   53
3662 02ff 0254          subwf   index,w
3663                    ; =>bit_code_emit@symbol(): sym=__c
3664                    ; CASE: true.size=0 && false.size>1
3665 0300 1803          btfsc   __c___byte, __c___bit
3666 0301 2b06          goto    main__77
3667                    ; line_number = 527
3668                    ; temp := id[index]
3669 0302 0854          movf    index,w
3670 0303 2361          call    id
3671 0304 00d8          movwf   main__temp
3672                    ; line_number = 528
3673                    ;  index := index + 1
3674 0305 0ad4          incf    index,f
3675   0306 :   main__77:
3676                    ; Recombine size1 = 0 || size2 = 0
3677                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:XX=>XX)
3678                    ; line_number = 526
3679                    ;  if index < id.size done
3680                    ; line_number = 529
3681                    ; call byte_put(temp)
3682 0306 0858          movf    main__temp,w
3683 0307 23c4          call    byte_put
3684 0308 2b14          goto    main__87
3685                    ; line_number = 530
3686                    ; case 5
3687   0309 :   main__83:
3688                    ; # 1111 1101 (ID Reset):
3689                    ; line_number = 532
3690                    ;  index := 0
3691 0309 3000          movlw   0
3692 030a 00d4          movwf   index
3693 030b 2b14          goto    main__87
3694                    ; line_number = 533
3695                    ; case 6
3696   030c :   main__84:
3697                    ; # 1111 1110 (Glitch Read):
3698                    ; line_number = 535
3699                    ;  call byte_put(glitch)
3700 030c 0853          movf    glitch,w
3701 030d 23c4          call    byte_put
3702                    ; line_number = 536
3703                    ;  glitch := 0
3704 030e 3000          movlw   0
3705 030f 00d3          movwf   glitch
3706 0310 2b14          goto    main__87
3707                    ; line_number = 537
3708                    ; case 7
3709   0311 :   main__85:
3710                    ; # 1111 1111 (Glitch):
3711                    ; line_number = 539
3712                    ;  if glitch != 0xff start
3713                    ; Left minus Right
3714 0311 0a53          incf    glitch,w
3715                    ; =>bit_code_emit@symbol(): sym=__z
3716                    ; CASE: true_code.size=0 && false_code.size=1
3717 0312 1d03          btfss   __z___byte, __z___bit
3718                    ; line_number = 540
3719                    ; glitch := glitch + 1
3720 0313 0ad3          incf    glitch,f
3721            
3722            
3723                    ; Recombine size1 = 0 || size2 = 0
3724                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:XX=>XX)
3725                    ; line_number = 539
3726                    ;  if glitch != 0xff done
3727   0314 :   main__87:
3728                    ; switch end:(data:00=>0? code:XX=>XX)
3729                    ; line_number = 510
3730                    ; switch command & 7 done
3731   0314 :   main__93:
3732                    ; switch end:(data:00=>0? code:XX=>XX)
3733                    ; line_number = 481
3734                    ;  switch (command >> 3) & 7 done
3735   0314 :   main__100:
3736                    ; switch end:(data:00=>?? code:XX=>XX)
3737                    ; line_number = 342
3738                    ;  switch command >> 6 done
3739                    ; line_number = 337
3740                    ;  loop_forever wrap-up
3741                    ; Need to adjust code banks to match front of loop
3742 0314 1283          bcf     __rp0___byte, __rp0___bit
3743 0315 1303          bcf     __rp1___byte, __rp1___bit
3744 0316 2979          goto    main__1
3745                    ; line_number = 337
3746                    ;  loop_forever done
3747                    ; delay after procedure statements=non-uniform
3748            
3749            
3750            
3751            
3752                    ; line_number = 543
3753                    ; procedure delay
3754   0317 :   delay:
3755                    ; arguments_none
3756                    ; line_number = 545
3757                    ;  returns_nothing
3758            
3759                    ; # This procedure delays 1/3 of a bit.
3760            
3761                    ; line_number = 549
3762                    ;  local temp byte
3763 00000059 = delay__temp equ globals___0+57
3764                    ; line_number = 550
3765                    ;  local previous byte
3766 0000005a = delay__previous equ globals___0+58
3767                    ; line_number = 551
3768                    ;  local current byte
3769 0000005b = delay__current equ globals___0+59
3770                    ; line_number = 552
3771                    ;  local not_current byte
3772 0000005c = delay__not_current equ globals___0+60
3773                    ; line_number = 553
3774                    ;  local changed byte
3775 0000005d = delay__changed equ globals___0+61
3776            
3777                    ; # Perform A/D:
3778                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
3779                    ; line_number = 556
3780                    ;  chan := chans[channel]
3781 0317 0856          movf    channel,w
3782 0318 239c          call    chans
3783 0319 00d5          movwf   chan
3784            
3785                    ; # At 8MHz, TAD = 1.6uS (ADCS<2:0>=010).  An A/D conversion takes
3786                    ; # 11*TAD = 11*1.6uS = 17.1uS 
3787            
3788                    ; # Acquiring the signal takes approximately 20uS.
3789                    ; # We'll pad that out a little to 25uS to be safe:
3790            
3791                    ; line_number = 564
3792                    ;  temp := (chan << 2) | 1
3793 00000061 = delay__1 equ globals___0+65
3794 031a 0d55          rlf     chan,w
3795 031b 00e1          movwf   delay__1
3796 031c 0d61          rlf     delay__1,w
3797 031d 39fc          andlw   252
3798 031e 3801          iorlw   1
3799 031f 00d9          movwf   delay__temp
3800                    ; line_number = 565
3801                    ;  if _vcfg start
3802                    ; =>bit_code_emit@symbol(): sym=_vcfg
3803                    ; CASE: True.size=1 False.size=0
3804 0320 1b1f          btfsc   _vcfg___byte, _vcfg___bit
3805                    ; # Keep _vcfg set:
3806                    ; line_number = 567
3807                    ;  temp@6 := 1
3808 00000059 = delay__select__2___byte equ delay__temp
3809 00000006 = delay__select__2___bit equ 6
3810 0321 1759          bsf     delay__select__2___byte, delay__select__2___bit
3811                    ; Recombine size1 = 0 || size2 = 0
3812                    ; <=bit_code_emit@symbol; sym=_vcfg (data:00=>00 code:XX=>XX)
3813                    ; line_number = 565
3814                    ;  if _vcfg done
3815                    ; line_number = 568
3816                    ; _adcon0 := temp
3817 0322 0859          movf    delay__temp,w
3818 0323 009f          movwf   _adcon0
3819                    ; line_number = 569
3820                    ;  delay 25 * microsecond start
3821                    ; Delay expression evaluates to 50
3822                    ; # Kick the dog:
3823                    ; line_number = 571
3824                    ;  watch_dog_reset done
3825                    ; Delay at watch_dog_reset is 0
3826 0324 0064          clrwdt  
3827            
3828                    ; Delay 49 cycles
3829                    ; Delay loop takes 12 * 4 = 48 cycles
3830 0325 300c          movlw   12
3831   0326 :   delay__3:
3832 0326 3eff          addlw   255
3833 0327 1d03          btfss   __z___byte, __z___bit
3834 0328 2b26          goto    delay__3
3835 0329 0000          nop     
3836                    ; line_number = 569
3837                    ;  delay 25 * microsecond done
3838                    ; # Getting the value takes 11 & Tad, where Tad = 2uS = 22uS.
3839                    ; # We'll add 5uS for a little pad:
3840                    ; line_number = 575
3841                    ;  _go := 1
3842 032a 149f          bsf     _go___byte, _go___bit
3843                    ; line_number = 576
3844                    ;  delay 28 * microsecond start
3845                    ; Delay expression evaluates to 56
3846                    ; # do_nothing
3847            
3848                    ; Delay 56 cycles
3849                    ; Delay loop takes 14 * 4 = 56 cycles
3850 032b 300e          movlw   14
3851   032c :   delay__4:
3852 032c 3eff          addlw   255
3853 032d 1d03          btfss   __z___byte, __z___bit
3854 032e 2b2c          goto    delay__4
3855                    ; line_number = 576
3856                    ;  delay 28 * microsecond done
3857                    ; # A/D result is ready:
3858                    ; line_number = 580
3859                    ;  analogs_high[channel] := _adresh
3860                    ; index_fsr_first
3861 032f 0856          movf    channel,w
3862 0330 3e33          addlw   analogs_high
3863 0331 0084          movwf   __fsr
3864 0332 081e          movf    _adresh,w
3865 0333 0080          movwf   __indf
3866                    ; line_number = 581
3867                    ;  analogs_low[channel] := _adresl
3868                    ; index_fsr_first
3869 0334 0856          movf    channel,w
3870 0335 3e3b          addlw   analogs_low
3871 0336 0084          movwf   __fsr
3872 0337 1683          bsf     __rp0___byte, __rp0___bit
3873 0338 081e          movf    _adresl,w
3874 0339 0080          movwf   __indf
3875            
3876                    ; line_number = 583
3877                    ;  channel := (channel + 1) & 7
3878 033a 1283          bcf     __rp0___byte, __rp0___bit
3879 033b 0a56          incf    channel,w
3880 033c 3907          andlw   7
3881 033d 00d6          movwf   channel
3882            
3883                    ; # Setup for interrupts:
3884                    ; line_number = 586
3885                    ;  previous := current
3886 033e 085b          movf    delay__current,w
3887 033f 00da          movwf   delay__previous
3888            
3889                    ; #FIXME!!!
3890                    ; line_number = 589
3891                    ;  current := 0
3892 0340 3000          movlw   0
3893 0341 00db          movwf   delay__current
3894                    ; line_number = 590
3895                    ;  not_current := current ^ 0xff
3896 0342 30ff          movlw   255
3897 0343 065b          xorwf   delay__current,w
3898 0344 00dc          movwf   delay__not_current
3899                    ; line_number = 591
3900                    ;  changed := current ^ previous
3901 0345 085b          movf    delay__current,w
3902 0346 065a          xorwf   delay__previous,w
3903 0347 00dd          movwf   delay__changed
3904            
3905                    ; # See about triggering the interrupt_pending flag:
3906                    ; line_number = 594
3907                    ;  if (low_mask & not_current) | (high_mask & current) | (changed & current & rising_mask) | (changed & not_current & falling_mask) != 0 start
3908                    ; Left minus Right
3909 00000061 = delay__5 equ globals___0+65
3910 0348 0828          movf    low_mask,w
3911 0349 055c          andwf   delay__not_current,w
3912 034a 00e1          movwf   delay__5
3913 034b 0829          movf    high_mask,w
3914 034c 055b          andwf   delay__current,w
3915 034d 04e1          iorwf   delay__5,f
3916 034e 085d          movf    delay__changed,w
3917 034f 055b          andwf   delay__current,w
3918 0350 052a          andwf   rising_mask,w
3919 0351 04e1          iorwf   delay__5,f
3920 0352 085d          movf    delay__changed,w
3921 0353 055c          andwf   delay__not_current,w
3922 0354 052b          andwf   falling_mask,w
3923 0355 0461          iorwf   delay__5,w
3924                    ; =>bit_code_emit@symbol(): sym=__z
3925                    ; CASE: true_code.size=0 && false_code.size=1
3926 0356 1d03          btfss   __z___byte, __z___bit
3927                    ; line_number = 597
3928                    ; interrupt_pending := 1
3929 0357 14a7          bsf     interrupt_pending___byte, interrupt_pending___bit
3930            
3931                    ; Recombine size1 = 0 || size2 = 0
3932                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:XX=>XX)
3933                    ; line_number = 594
3934                    ;  if (low_mask & not_current) | (high_mask & current) | (changed & current & rising_mask) | (changed & not_current & falling_mask) != 0 done
3935            
3936                    ; # Send an interrupt if interrupts are enabled:
3937                    ; line_number = 600
3938                    ;  if interrupt_pending start
3939                    ; =>bit_code_emit@symbol(): sym=interrupt_pending
3940                    ; CASE: true_code.size = 0 && false_code.size > 1
3941 0358 1ca7          btfss   interrupt_pending___byte, interrupt_pending___bit
3942 0359 2b60          goto    delay__8
3943                    ; line_number = 601
3944                    ; if interrupt_enable start
3945                    ; =>bit_code_emit@symbol(): sym=interrupt_enable
3946                    ; CASE: true_code.size = 0 && false_code.size > 1
3947 035a 1c27          btfss   interrupt_enable___byte, interrupt_enable___bit
3948 035b 2b60          goto    delay__7
3949                    ; # If transmit buffer is empty, send a null:
3950                    ; line_number = 603
3951                    ;  if _trmt start
3952                    ; =>bit_code_emit@symbol(): sym=_trmt
3953                    ; CASE: true_code.size = 0 && false_code.size > 1
3954 035c 1c96          btfss   _trmt___byte, _trmt___bit
3955 035d 2b60          goto    delay__6
3956                    ; line_number = 604
3957                    ; _txreg := 0
3958 035e 3000          movlw   0
3959 035f 0095          movwf   _txreg
3960            
3961            
3962                    ; Recombine size1 = 0 || size2 = 0
3963   0360 :   delay__6:
3964                    ; <=bit_code_emit@symbol; sym=_trmt (data:00=>00 code:XX=>XX)
3965                    ; line_number = 603
3966                    ;  if _trmt done
3967                    ; Recombine size1 = 0 || size2 = 0
3968   0360 :   delay__7:
3969                    ; <=bit_code_emit@symbol; sym=interrupt_enable (data:00=>00 code:XX=>XX)
3970                    ; line_number = 601
3971                    ; if interrupt_enable done
3972                    ; Recombine size1 = 0 || size2 = 0
3973   0360 :   delay__8:
3974                    ; <=bit_code_emit@symbol; sym=interrupt_pending (data:00=>00 code:XX=>XX)
3975                    ; line_number = 600
3976                    ;  if interrupt_pending done
3977                    ; delay after procedure statements=non-uniform
3978                    ; Implied return
3979 0360 3400          retlw   0
3980            
3981            
3982            
3983            
3984                    ; line_number = 607
3985                    ; constant zeros8 = "\0,0,0,0,0,0,0,0\"
3986                    ; zeros8 = '\0,0,0,0,0,0,0,0\'
3987                    ; line_number = 608
3988                    ; constant module_name = "\12\IRDistance8D"
3989                    ; module_name = '\12\IRDistance8D'
3990                    ; line_number = 609
3991                    ; constant vendor_name = "\15\Gramlich&Benson"
3992                    ; vendor_name = '\15\Gramlich&Benson'
3993                    ; line_number = 610
3994                    ; string id = "\1,0,0,2,3,0,0,0\" ~ zeros8 ~ zeros8 ~ module_name ~ vendor_name start
3995                    ; id = '\1,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12\IRDistance8D\15\Gramlich&Benson'
3996   0361 :   id:
3997                    ; Temporarily save index into FSR
3998 0361 0084          movwf   __fsr
3999                    ; Initialize PCLATH to point to this code page
4000 0362 3003          movlw   id___base>>8
4001 0363 008a          movwf   __pclath
4002                    ; Restore index from FSR
4003 0364 0804          movf    __fsr,w
4004 0365 3e67          addlw   id___base
4005                    ; Index to the correct return value
4006 0366 0082          movwf   __pcl
4007                    ; page_group 53
4008   0367 :   id___base:
4009 0367 3401          retlw   1
4010 0368 3400          retlw   0
4011 0369 3400          retlw   0
4012 036a 3402          retlw   2
4013 036b 3403          retlw   3
4014 036c 3400          retlw   0
4015 036d 3400          retlw   0
4016 036e 3400          retlw   0
4017 036f 3400          retlw   0
4018 0370 3400          retlw   0
4019 0371 3400          retlw   0
4020 0372 3400          retlw   0
4021 0373 3400          retlw   0
4022 0374 3400          retlw   0
4023 0375 3400          retlw   0
4024 0376 3400          retlw   0
4025 0377 3400          retlw   0
4026 0378 3400          retlw   0
4027 0379 3400          retlw   0
4028 037a 3400          retlw   0
4029 037b 3400          retlw   0
4030 037c 3400          retlw   0
4031 037d 3400          retlw   0
4032 037e 3400          retlw   0
4033 037f 340c          retlw   12
4034 0380 3449          retlw   73
4035 0381 3452          retlw   82
4036 0382 3444          retlw   68
4037 0383 3469          retlw   105
4038 0384 3473          retlw   115
4039 0385 3474          retlw   116
4040 0386 3461          retlw   97
4041 0387 346e          retlw   110
4042 0388 3463          retlw   99
4043 0389 3465          retlw   101
4044 038a 3438          retlw   56
4045 038b 3444          retlw   68
4046 038c 340f          retlw   15
4047 038d 3447          retlw   71
4048 038e 3472          retlw   114
4049 038f 3461          retlw   97
4050 0390 346d          retlw   109
4051 0391 346c          retlw   108
4052 0392 3469          retlw   105
4053 0393 3463          retlw   99
4054 0394 3468          retlw   104
4055 0395 3426          retlw   38
4056 0396 3442          retlw   66
4057 0397 3465          retlw   101
4058 0398 346e          retlw   110
4059 0399 3473          retlw   115
4060 039a 346f          retlw   111
4061 039b 346e          retlw   110
4062                    ; line_number = 610
4063                    ; string id = "\1,0,0,2,3,0,0,0\" ~ zeros8 ~ zeros8 ~ module_name ~ vendor_name start
4064            
4065                    ; line_number = 612
4066                    ; string chans = "\0,1,3,2,4,5,6,7\" start
4067                    ; chans = '\0,1,3,2,4,5,6,7\'
4068   039c :   chans:
4069                    ; Temporarily save index into FSR
4070 039c 0084          movwf   __fsr
4071                    ; Initialize PCLATH to point to this code page
4072 039d 3003          movlw   chans___base>>8
4073 039e 008a          movwf   __pclath
4074                    ; Restore index from FSR
4075 039f 0804          movf    __fsr,w
4076 03a0 3ea2          addlw   chans___base
4077                    ; Index to the correct return value
4078 03a1 0082          movwf   __pcl
4079                    ; page_group 8
4080   03a2 :   chans___base:
4081 03a2 3400          retlw   0
4082 03a3 3401          retlw   1
4083 03a4 3403          retlw   3
4084 03a5 3402          retlw   2
4085 03a6 3404          retlw   4
4086 03a7 3405          retlw   5
4087 03a8 3406          retlw   6
4088 03a9 3407          retlw   7
4089                    ; line_number = 612
4090                    ; string chans = "\0,1,3,2,4,5,6,7\" start
4091            
4092                    ; line_number = 614
4093                    ; string mask = "\1,2,4,8,16,32,64,128\" start
4094                    ; mask = '\1,2,4,8,16\ @\128\'
4095   03aa :   mask:
4096                    ; Temporarily save index into FSR
4097 03aa 0084          movwf   __fsr
4098                    ; Initialize PCLATH to point to this code page
4099 03ab 3003          movlw   mask___base>>8
4100 03ac 008a          movwf   __pclath
4101                    ; Restore index from FSR
4102 03ad 0804          movf    __fsr,w
4103 03ae 3eb0          addlw   mask___base
4104                    ; Index to the correct return value
4105 03af 0082          movwf   __pcl
4106                    ; page_group 8
4107   03b0 :   mask___base:
4108 03b0 3401          retlw   1
4109 03b1 3402          retlw   2
4110 03b2 3404          retlw   4
4111 03b3 3408          retlw   8
4112 03b4 3410          retlw   16
4113 03b5 3420          retlw   32
4114 03b6 3440          retlw   64
4115 03b7 3480          retlw   128
4116                    ; line_number = 614
4117                    ; string mask = "\1,2,4,8,16,32,64,128\" start
4118            
4119            
4120            
4121                    ; Appending 4 delayed procedures to code bank 0
4122                    ; buffer = '_robobricks_pic16f688'
4123                    ; line_number = 17
4124                    ; procedure byte_get
4125   03b8 :   byte_get:
4126                    ; arguments_none
4127                    ; line_number = 19
4128                    ;  returns byte
4129            
4130                    ; # This procedure will return the next byte from the UART.
4131                    ; # It continuously calls delay() while it is waiting.
4132            
4133                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
4134                    ; line_number = 24
4135                    ;  while !_rcif start
4136   03b8 :   byte_get__1:
4137                    ; =>bit_code_emit@symbol(): sym=_rcif
4138                    ; CASE: true.size=0 && false.size>1
4139 03b8 1a8c          btfsc   _rcif___byte, _rcif___bit
4140 03b9 2bbe          goto    byte_get__2
4141                    ; line_number = 25
4142                    ; in_byte_get := 1
4143 03ba 14ef          bsf     in_byte_get___byte, in_byte_get___bit
4144                    ; line_number = 26
4145                    ;  call delay()
4146 03bb 2317          call    delay
4147                    ; line_number = 27
4148                    ;  in_byte_get := 0
4149 03bc 10ef          bcf     in_byte_get___byte, in_byte_get___bit
4150 03bd 2bb8          goto    byte_get__1
4151   03be :   byte_get__2:
4152                    ; Recombine size1 = 0 || size2 = 0
4153                    ; <=bit_code_emit@symbol; sym=_rcif (data:00=>00 code:XX=>XX)
4154                    ; line_number = 24
4155                    ;  while !_rcif done
4156                    ; line_number = 28
4157                    ; interrupt_pending := 0
4158 03be 10a7          bcf     interrupt_pending___byte, interrupt_pending___bit
4159                    ; line_number = 29
4160                    ;  command_previous := command_last
4161 03bf 0824          movf    command_last,w
4162 03c0 00a3          movwf   command_previous
4163                    ; line_number = 30
4164                    ;  _rcif := 0
4165 03c1 128c          bcf     _rcif___byte, _rcif___bit
4166                    ; line_number = 31
4167                    ;  return _rcreg start
4168                    ; line_number = 31
4169 03c2 0814          movf    _rcreg,w
4170 03c3 0008          return  
4171                    ; line_number = 31
4172                    ;  return _rcreg done
4173            
4174            
4175                    ; delay after procedure statements=non-uniform
4176            
4177            
4178            
4179            
4180                    ; line_number = 34
4181                    ; procedure byte_put
4182   03c4 :   byte_put:
4183                    ; Last argument is sitting in W; save into argument variable
4184 03c4 00a0          movwf   byte_put__value
4185                    ; delay=4294967295
4186                    ; line_number = 35
4187                    ; argument value byte
4188 00000020 = byte_put__value equ globals___0
4189                    ; line_number = 36
4190                    ;  returns_nothing
4191            
4192                    ; # This procedure will output {value} to the UART.  If the UART is
4193                    ; # already busy transmitting a character, the {delay} procedure is
4194                    ; # repeatably called until {value} can be sent.
4195            
4196                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
4197                    ; line_number = 42
4198                    ;  while !_trmt start
4199   03c5 :   byte_put__1:
4200                    ; =>bit_code_emit@symbol(): sym=_trmt
4201                    ; CASE: true.size=0 && false.size>1
4202 03c5 1896          btfsc   _trmt___byte, _trmt___bit
4203 03c6 2bc9          goto    byte_put__2
4204                    ; line_number = 43
4205                    ; call delay()
4206 03c7 2317          call    delay
4207 03c8 2bc5          goto    byte_put__1
4208   03c9 :   byte_put__2:
4209                    ; Recombine size1 = 0 || size2 = 0
4210                    ; <=bit_code_emit@symbol; sym=_trmt (data:00=>00 code:XX=>XX)
4211                    ; line_number = 42
4212                    ;  while !_trmt done
4213                    ; line_number = 44
4214                    ; debug := 0
4215 03c9 1285          bcf     debug___byte, debug___bit
4216                    ; line_number = 45
4217                    ;  sent_previous := sent_last
4218 03ca 0825          movf    sent_last,w
4219 03cb 00a6          movwf   sent_previous
4220                    ; line_number = 46
4221                    ;  sent_last := value
4222 03cc 0820          movf    byte_put__value,w
4223 03cd 00a5          movwf   sent_last
4224                    ; line_number = 47
4225                    ;  _txreg := value
4226 03ce 0820          movf    byte_put__value,w
4227 03cf 0095          movwf   _txreg
4228            
4229            
4230                    ; delay after procedure statements=non-uniform
4231                    ; Implied return
4232 03d0 3400          retlw   0
4233            
4234            
4235            
4236            
4237                    ; line_number = 50
4238                    ; procedure baud_rate_low
4239   03d1 :   baud_rate_low:
4240                    ; Last argument is sitting in W; save into argument variable
4241 03d1 00a1          movwf   baud_rate_low__baud_rate_index
4242                    ; delay=4294967295
4243                    ; line_number = 51
4244                    ; argument baud_rate_index byte
4245 00000021 = baud_rate_low__baud_rate_index equ globals___0+1
4246                    ; line_number = 52
4247                    ;  returns byte
4248            
4249                    ; #: This procedure will return the baud rate low byte for {baud_rate_index}.
4250            
4251                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
4252                    ; line_number = 56
4253                    ;  switch baud_rate_index start
4254 03d2 3003          movlw   baud_rate_low__9>>8
4255 03d3 008a          movwf   __pclath
4256 03d4 0821          movf    baud_rate_low__baud_rate_index,w
4257 03d5 3ed7          addlw   baud_rate_low__9
4258 03d6 0082          movwf   __pcl
4259                    ; page_group 8
4260   03d7 :   baud_rate_low__9:
4261                    ; line_number = 58
4262                    ; return _eusart_2400_low start
4263                    ; line_number = 58
4264 03d7 3440          retlw   64
4265                    ; line_number = 58
4266                    ; return _eusart_2400_low done
4267                    ; line_number = 60
4268                    ; return _eusart_4800_low start
4269                    ; line_number = 60
4270 03d8 349f          retlw   159
4271                    ; line_number = 60
4272                    ; return _eusart_4800_low done
4273                    ; line_number = 62
4274                    ; return _eusart_9600_low start
4275                    ; line_number = 62
4276 03d9 34cf          retlw   207
4277                    ; line_number = 62
4278                    ; return _eusart_9600_low done
4279                    ; line_number = 64
4280                    ; return _eusart_19200_low start
4281                    ; line_number = 64
4282 03da 3467          retlw   103
4283                    ; line_number = 64
4284                    ; return _eusart_19200_low done
4285                    ; line_number = 66
4286                    ; return _eusart_38400_low start
4287                    ; line_number = 66
4288 03db 3433          retlw   51
4289                    ; line_number = 66
4290                    ; return _eusart_38400_low done
4291                    ; line_number = 68
4292                    ; return _eusart_57600_low start
4293                    ; line_number = 68
4294 03dc 3421          retlw   33
4295                    ; line_number = 68
4296                    ; return _eusart_57600_low done
4297                    ; line_number = 70
4298                    ; return _eusart_115200_low start
4299                    ; line_number = 70
4300 03dd 3410          retlw   16
4301                    ; line_number = 70
4302                    ; return _eusart_115200_low done
4303                    ; line_number = 72
4304                    ; return _eusart_203400_low start
4305                    ; line_number = 72
4306 03de 3408          retlw   8
4307                    ; line_number = 72
4308                    ; return _eusart_203400_low done
4309            
4310            
4311   03df :   baud_rate_low__10:
4312                    ; switch end:(data:00=>00 code:XX=>XX)
4313                    ; line_number = 56
4314                    ;  switch baud_rate_index done
4315                    ; delay after procedure statements=non-uniform
4316                    ; Exiting procedure with no return(s); fail with infinite loop
4317   03df :   baud_rate_low__11:
4318 03df 2bdf          goto    baud_rate_low__11
4319            
4320            
4321            
4322            
4323                    ; line_number = 75
4324                    ; procedure baud_rate_high
4325   03e0 :   baud_rate_high:
4326                    ; Last argument is sitting in W; save into argument variable
4327 03e0 00a2          movwf   baud_rate_high__baud_rate_index
4328                    ; delay=4294967295
4329                    ; line_number = 76
4330                    ; argument baud_rate_index byte
4331 00000022 = baud_rate_high__baud_rate_index equ globals___0+2
4332                    ; line_number = 77
4333                    ;  returns byte
4334            
4335                    ; # This procedure will return the baud rate high byte for
4336                    ; # {baud_rate_index}.
4337            
4338                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
4339                    ; line_number = 82
4340                    ;  switch baud_rate_index start
4341 03e1 3003          movlw   baud_rate_high__9>>8
4342 03e2 008a          movwf   __pclath
4343 03e3 0822          movf    baud_rate_high__baud_rate_index,w
4344 03e4 3ee6          addlw   baud_rate_high__9
4345 03e5 0082          movwf   __pcl
4346                    ; page_group 8
4347   03e6 :   baud_rate_high__9:
4348                    ; line_number = 84
4349                    ; return _eusart_2400_high start
4350                    ; line_number = 84
4351 03e6 3403          retlw   3
4352                    ; line_number = 84
4353                    ; return _eusart_2400_high done
4354                    ; line_number = 86
4355                    ; return _eusart_4800_high start
4356                    ; line_number = 86
4357 03e7 3401          retlw   1
4358                    ; line_number = 86
4359                    ; return _eusart_4800_high done
4360                    ; line_number = 88
4361                    ; return _eusart_9600_high start
4362                    ; line_number = 88
4363 03e8 3400          retlw   0
4364                    ; line_number = 88
4365                    ; return _eusart_9600_high done
4366                    ; line_number = 90
4367                    ; return _eusart_19200_high start
4368                    ; line_number = 90
4369 03e9 3400          retlw   0
4370                    ; line_number = 90
4371                    ; return _eusart_19200_high done
4372                    ; line_number = 92
4373                    ; return _eusart_38400_high start
4374                    ; line_number = 92
4375 03ea 3400          retlw   0
4376                    ; line_number = 92
4377                    ; return _eusart_38400_high done
4378                    ; line_number = 94
4379                    ; return _eusart_57600_high start
4380                    ; line_number = 94
4381 03eb 3400          retlw   0
4382                    ; line_number = 94
4383                    ; return _eusart_57600_high done
4384                    ; line_number = 96
4385                    ; return _eusart_115200_high start
4386                    ; line_number = 96
4387 03ec 3400          retlw   0
4388                    ; line_number = 96
4389                    ; return _eusart_115200_high done
4390                    ; line_number = 98
4391                    ; return _eusart_203400_high start
4392                    ; line_number = 98
4393 03ed 3400          retlw   0
4394                    ; line_number = 98
4395                    ; return _eusart_203400_high done
4396            
4397   03ee :   baud_rate_high__10:
4398                    ; switch end:(data:00=>00 code:XX=>XX)
4399                    ; line_number = 82
4400                    ;  switch baud_rate_index done
4401                    ; delay after procedure statements=non-uniform
4402                    ; Exiting procedure with no return(s); fail with infinite loop
4403   03ee :   baud_rate_high__11:
4404 03ee 2bee          goto    baud_rate_high__11
4405            
4406            
4407            
4408            
4409                    ; Configuration bits
4410                    ; fill = 0x3000
4411                    ; fcmen = off (0x0)
4412                    ; ieso = off (0x0)
4413                    ; boden = off (0x0)
4414                    ; cpd = off (0x80)
4415                    ; cp = off (0x40)
4416                    ; mclre = off (0x20)
4417                    ; pwrte = off (0x10)
4418                    ; wdte = off (0x0)
4419                    ; fosc = int_no_clk (0x4)
4420                    ; 12532 = 0x30f4
4421   30f4 =           __config 12532
4422                    ; Define start addresses for data regions
4423                    ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
4424                    ; Region="globals___0" Address=32" Size=80 Bytes=66 Bits=3 Available=13
4425                    ; Region="globals___1" Address=160" Size=80 Bytes=64 Bits=0 Available=16
4426                    ; Region="globals___2" Address=288" Size=80 Bytes=24 Bits=1 Available=55
4427                    ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
4428                    end
