1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 4095
3      0000 :           org     0
4                       ; Define start addresses for data regions
5    00000070 = shared___globals equ 112
6    00000020 = globals___0 equ 32
7    000000a0 = globals___1 equ 160
8    00000120 = globals___2 equ 288
9    000001a0 = globals___3 equ 416
10   00000000 = __indf equ 0
11   00000002 = __pcl equ 2
12   00000003 = __status equ 3
13   00000004 = __fsr equ 4
14   00000003 = __c___byte equ 3
15   00000000 = __c___bit equ 0
16   00000003 = __z___byte equ 3
17   00000002 = __z___bit equ 2
18   00000003 = __rp0___byte equ 3
19   00000005 = __rp0___bit equ 5
20   00000003 = __rp1___byte equ 3
21   00000006 = __rp1___bit equ 6
22   00000003 = __irp___byte equ 3
23   00000007 = __irp___bit equ 7
24   0000000a = __pclath equ 10
25   0000000a = __cb0___byte equ 10
26   00000003 = __cb0___bit equ 3
27   0000000a = __cb1___byte equ 10
28   00000004 = __cb1___bit equ 4
29              
30                      ; # Copyright (c) 2004-2005 by Wayne C. Gramlich
31                      ; # All rights reserved.
32              
33                      ; buffer = 'sonar8'
34                      ; line_number = 6
35                      ; library _robobricks_pic16f688 entered
36              
37                      ; # Copyright (c) 2000-2005 by Wayne C. Gramlich and Bill Benson
38                      ; # All rights reserved.
39              
40                      ; buffer = '_robobricks_pic16f688'
41                      ; line_number = 6
42                      ; library _pic16f688 entered
43                      ; # Copyright (c) 2004 by Wayne C. Gramlich
44                      ; # All rights reserved.
45              
46                      ; buffer = '_pic16f688'
47                      ; line_number = 5
48                      ; processor pic16f688
49                      ; line_number = 6
50                      ; configure_address 0x2007
51                      ; line_number = 7
52                      ;  configure_fill 0x3000
53                      ; line_number = 8
54                      ;  configure_option fcmen: on = 0x800
55                      ; line_number = 9
56                      ;  configure_option fcmen: off = 0x000
57                      ; line_number = 10
58                      ;  configure_option ieso: on = 0x400
59                      ; line_number = 11
60                      ;  configure_option ieso: off = 0x000
61                      ; line_number = 12
62                      ;  configure_option boden: on = 0x300
63                      ; line_number = 13
64                      ;  configure_option boden: partial = 0x200
65                      ; line_number = 14
66                      ;  configure_option boden: sboden = 0x100
67                      ; line_number = 15
68                      ;  configure_option boden: off = 0x000
69                      ; line_number = 16
70                      ;  configure_option cpd: on = 0x00
71                      ; line_number = 17
72                      ;  configure_option cpd: off = 0x80
73                      ; line_number = 18
74                      ;  configure_option cp: on = 0x00
75                      ; line_number = 19
76                      ;  configure_option cp: off = 0x40
77                      ; line_number = 20
78                      ;  configure_option mclre: on = 0x20
79                      ; line_number = 21
80                      ;  configure_option mclre: off = 0x20
81                      ; line_number = 22
82                      ;  configure_option pwrte: on = 0x00
83                      ; line_number = 23
84                      ;  configure_option pwrte: off = 0x10
85                      ; line_number = 24
86                      ;  configure_option wdte: on = 8
87                      ; line_number = 25
88                      ;  configure_option wdte: off = 0
89                      ; line_number = 26
90                      ;  configure_option fosc: rc_clk = 7
91                      ; line_number = 27
92                      ;  configure_option fosc: rc_no_clk = 6
93                      ; line_number = 28
94                      ;  configure_option fosc: int_clk = 5
95                      ; line_number = 29
96                      ;  configure_option fosc: int_no_clk = 4
97                      ; line_number = 30
98                      ;  configure_option fosc: ec = 3
99                      ; line_number = 31
100                     ;  configure_option fosc: hs = 2
101                     ; line_number = 32
102                     ;  configure_option fosc: xt = 1
103                     ; line_number = 33
104                     ;  configure_option fosc: lp = 0
105             
106                     ; line_number = 35
107                     ;  code_bank 0x0 : 0xfff
108                     ; line_number = 36
109                     ;  data_bank 0x0 : 0x7f
110                     ; line_number = 37
111                     ;  data_bank 0x80 : 0xff
112                     ; line_number = 38
113                     ;  data_bank 0x100 : 0x17f
114                     ; line_number = 39
115                     ;  data_bank 0x180 : 0x1ff
116                     ; line_number = 40
117                     ;  global_region 0x20 : 0x6f
118                     ; line_number = 41
119                     ;  global_region 0xa0 : 0xef
120                     ; line_number = 42
121                     ;  global_region 0x120 : 0x16f
122                     ; line_number = 43
123                     ;  global_region 0x1a0 : 0x1ef
124                     ; line_number = 44
125                     ;  shared_region 0x70 : 0x7f
126                     ; line_number = 45
127                     ;  interrupts_possible
128                     ; line_number = 46
129                     ;  packages pdip=14, soic=14, tssop=14
130                     ; line_number = 47
131                     ;  pin vdd, power_supply
132                     ; line_number = 48
133                     ; pin_bindings pdip=1, soic=1, tssop=1
134                     ; line_number = 49
135                     ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin
136                     ; line_number = 50
137                     ; pin_bindings pdip=2, soic=2, tssop=2
138                     ; line_number = 51
139                     ;  bind_to _porta@5
140                     ; line_number = 52
141                     ;  or_if ra5_in _trisa 32
142                     ; line_number = 53
143                     ;  or_if ra5_nc _trisa 32
144                     ; line_number = 54
145                     ;  or_if ra5_out _trisa 0
146                     ; line_number = 55
147                     ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout
148                     ; line_number = 56
149                     ; pin_bindings pdip=3, soic=3, tssop=3
150                     ; line_number = 57
151                     ;  bind_to _porta@4
152                     ; line_number = 58
153                     ;  or_if ra4_in _trisa 16
154                     ; line_number = 59
155                     ;  or_if ra4_nc _trisa 16
156                     ; line_number = 60
157                     ;  or_if ra4_out _trisa 0
158                     ; line_number = 61
159                     ;  or_if an3 _trisa 8
160                     ; line_number = 62
161                     ;  or_if ra4_in _ansel 0
162                     ; line_number = 63
163                     ;  or_if ra4_out _ansel 0
164                     ; line_number = 64
165                     ;  or_if an3 _ansel 8
166                     ; line_number = 65
167                     ;  or_if ra4_in _adcon0 0
168                     ; line_number = 66
169                     ;  or_if ra4_out _adcon0 0
170                     ; line_number = 67
171                     ;  or_if an3 _adcon0 1
172                     ; line_number = 68
173                     ; pin ra3_in, ra3_nc, mclr, vpp
174                     ; line_number = 69
175                     ; pin_bindings pdip=4, soic=4, tssop=4
176                     ; line_number = 70
177                     ;  bind_to _porta@4
178                     ; line_number = 71
179                     ;  or_if ra3_in _trisa 8
180                     ; line_number = 72
181                     ;  or_if ra3_nc _trisa 8
182                     ; line_number = 73
183                     ; pin rc5_in, rc5_nc, rc5_out, rx, dt
184                     ; line_number = 74
185                     ; pin_bindings pdip=5, soic=5, tssop=5
186                     ; line_number = 75
187                     ;  bind_to _portc@5
188                     ; line_number = 76
189                     ;  or_if rc5_in _trisc 32
190                     ; line_number = 77
191                     ;  or_if rc5_nc _trisc 32
192                     ; line_number = 78
193                     ;  or_if rc5_out _trisc 0
194                     ; line_number = 79
195                     ;  or_if rx _trisc 32
196                     ; line_number = 80
197                     ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck
198                     ; line_number = 81
199                     ; pin_bindings pdip=6, soic=6, tssop=6
200                     ; line_number = 82
201                     ;  bind_to _portc@4
202                     ; line_number = 83
203                     ;  or_if rc4_in _trisc 16
204                     ; line_number = 84
205                     ;  or_if rc4_nc _trisc 16
206                     ; line_number = 85
207                     ;  or_if rc4_out _trisc 0
208                     ; # The UART documentation says TX must be marked as in input:
209                     ; line_number = 87
210                     ;  or_if tx _trisc 16
211                     ; line_number = 88
212                     ; pin rc3_in, rc3_nc, rc3_out, an7
213                     ; line_number = 89
214                     ; pin_bindings pdip=7, soic=7, tssop=7
215                     ; line_number = 90
216                     ;  bind_to _portc@3
217                     ; line_number = 91
218                     ;  or_if rc3_in _trisc 8
219                     ; line_number = 92
220                     ;  or_if rc3_nc _trisc 8
221                     ; line_number = 93
222                     ;  or_if rc3_out _trisc 0
223                     ; line_number = 94
224                     ;  or_if an7 _trisc 8
225                     ; line_number = 95
226                     ;  or_if rc3_in _ansel 0
227                     ; line_number = 96
228                     ;  or_if rc3_out _ansel 0
229                     ; line_number = 97
230                     ;  or_if an7 _ansel 128
231                     ; line_number = 98
232                     ;  or_if rc3_in _adcon0 0
233                     ; line_number = 99
234                     ;  or_if rc3_out _adcon0 0
235                     ; line_number = 100
236                     ;  or_if an7 _adcon0 1
237                     ; line_number = 101
238                     ; pin rc2_in, rc2_nc, rc2_out, an6
239                     ; line_number = 102
240                     ; pin_bindings pdip=8, soic=8, tssop=8
241                     ; line_number = 103
242                     ;  bind_to _portc@2
243                     ; line_number = 104
244                     ;  or_if rc2_in _trisc 4
245                     ; line_number = 105
246                     ;  or_if rc2_nc _trisc 4
247                     ; line_number = 106
248                     ;  or_if rc2_out _trisc 0
249                     ; line_number = 107
250                     ;  or_if an6 _trisc 4
251                     ; line_number = 108
252                     ;  or_if rc2_in _ansel 0
253                     ; line_number = 109
254                     ;  or_if rc2_out _ansel 0
255                     ; line_number = 110
256                     ;  or_if an6 _ansel 64
257                     ; line_number = 111
258                     ;  or_if rc2_in _adcon0 0
259                     ; line_number = 112
260                     ;  or_if rc2_out _adcon0 0
261                     ; line_number = 113
262                     ;  or_if an6 _adcon0 1
263                     ; line_number = 114
264                     ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus
265                     ; line_number = 115
266                     ; pin_bindings pdip=9, soic=9, tssop=9
267                     ; line_number = 116
268                     ;  bind_to _portc@1
269                     ; line_number = 117
270                     ;  or_if rc1_in _trisc 2
271                     ; line_number = 118
272                     ;  or_if rc1_nc _trisc 2
273                     ; line_number = 119
274                     ;  or_if rc1_out _trisc 0
275                     ; line_number = 120
276                     ;  or_if rc1_in _cmcon0 7
277                     ; line_number = 121
278                     ;  or_if rc1_out _cmcon0 7
279                     ; line_number = 122
280                     ;  or_if an5 _trisc 2
281                     ; line_number = 123
282                     ;  or_if rc1_in _ansel 0
283                     ; line_number = 124
284                     ;  or_if rc1_out _ansel 0
285                     ; line_number = 125
286                     ;  or_if an5 _ansel 32
287                     ; line_number = 126
288                     ;  or_if rc1_in _adcon0 0
289                     ; line_number = 127
290                     ;  or_if rc1_out _adcon0 0
291                     ; line_number = 128
292                     ;  or_if an5 _adcon0 1
293                     ; line_number = 129
294                     ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus
295                     ; line_number = 130
296                     ; pin_bindings pdip=10, soic=10, tssop=10
297                     ; line_number = 131
298                     ;  bind_to _portc@0
299                     ; line_number = 132
300                     ;  or_if rc0_in _trisc 1
301                     ; line_number = 133
302                     ;  or_if rc0_nc _trisc 1
303                     ; line_number = 134
304                     ;  or_if rc0_out _trisc 0
305                     ; line_number = 135
306                     ;  or_if rc0_in _cmcon0 7
307                     ; line_number = 136
308                     ;  or_if rc0_out _cmcon0 7
309                     ; line_number = 137
310                     ;  or_if an4 _trisc 1
311                     ; line_number = 138
312                     ;  or_if rc0_in _ansel 0
313                     ; line_number = 139
314                     ;  or_if rc0_out _ansel 0
315                     ; line_number = 140
316                     ;  or_if an4 _ansel 16
317                     ; line_number = 141
318                     ;  or_if rc0_in _adcon0 0
319                     ; line_number = 142
320                     ;  or_if rc0_out _adcon0 0
321                     ; line_number = 143
322                     ;  or_if an4 _adcon0 1
323                     ; line_number = 144
324                     ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int
325                     ; line_number = 145
326                     ; pin_bindings pdip=11, soic=11, tssop=11
327                     ; line_number = 146
328                     ;  bind_to _porta@2
329                     ; line_number = 147
330                     ;  or_if ra2_in _trisa 4
331                     ; line_number = 148
332                     ;  or_if ra2_nc _trisa 4
333                     ; line_number = 149
334                     ;  or_if ra2_out _trisa 0
335                     ; line_number = 150
336                     ;  or_if an2 _trisa 4
337                     ; line_number = 151
338                     ;  or_if ra2_in _ansel 0
339                     ; line_number = 152
340                     ;  or_if ra2_out _ansel 0
341                     ; line_number = 153
342                     ;  or_if an2 _ansel 4
343                     ; line_number = 154
344                     ;  or_if ra2_in _adcon0 0
345                     ; line_number = 155
346                     ;  or_if ra2_out _adcon0 0
347                     ; line_number = 156
348                     ;  or_if an2 _adcon0 1
349                     ; line_number = 157
350                     ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk
351                     ; line_number = 158
352                     ; pin_bindings pdip=12, soic=12, tssop=12
353                     ; line_number = 159
354                     ;  bind_to _porta@1
355                     ; line_number = 160
356                     ;  or_if ra1_in _trisa 2
357                     ; line_number = 161
358                     ;  or_if ra1_nc _trisa 2
359                     ; line_number = 162
360                     ;  or_if ra1_out _trisa 0
361                     ; line_number = 163
362                     ;  or_if ra1_in _cmcon0 7
363                     ; line_number = 164
364                     ;  or_if ra1_out _cmcon0 7
365                     ; line_number = 165
366                     ;  or_if an1 _trisa 2
367                     ; line_number = 166
368                     ;  or_if ra1_in _ansel 0
369                     ; line_number = 167
370                     ;  or_if ra1_out _ansel 0
371                     ; line_number = 168
372                     ;  or_if an1 _ansel 2
373                     ; line_number = 169
374                     ;  or_if ra1_in _adcon0 0
375                     ; line_number = 170
376                     ;  or_if ra1_out _adcon0 0
377                     ; line_number = 171
378                     ;  or_if an1 _adcon0 1
379                     ; line_number = 172
380                     ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu
381                     ; line_number = 173
382                     ; pin_bindings pdip=13, soic=13, tssop=13
383                     ; line_number = 174
384                     ;  bind_to _porta@0
385                     ; line_number = 175
386                     ;  or_if ra0_in _trisa 1
387                     ; line_number = 176
388                     ;  or_if ra0_nc _trisa 1
389                     ; line_number = 177
390                     ;  or_if ra0_out _trisa 0
391                     ; line_number = 178
392                     ;  or_if ra0_in _cmcon0 7
393                     ; line_number = 179
394                     ;  or_if ra0_out _cmcon0 7
395                     ; line_number = 180
396                     ;  or_if an0 _trisa 1
397                     ; line_number = 181
398                     ;  or_if ra0_in _ansel 0
399                     ; line_number = 182
400                     ;  or_if ra0_out _ansel 0
401                     ; line_number = 183
402                     ;  or_if an0 _ansel 1
403                     ; line_number = 184
404                     ;  or_if ra0_in _adcon0 0
405                     ; line_number = 185
406                     ;  or_if ra0_out _adcon0 0
407                     ; line_number = 186
408                     ;  or_if an0 _adcon0 1
409                     ; line_number = 187
410                     ; pin vss, ground
411                     ; line_number = 188
412                     ; pin_bindings pdip=14, soic=14, tssop=14
413             
414             
415                     ; # Register/bit bindings:
416             
417                     ; # Databank 0 (0x0 - 0x7f):
418             
419                     ; line_number = 197
420                     ; register _indf = 
421  00000000 = _indf equ 0
422             
423                     ; line_number = 199
424                     ; register _tmr0 = 
425  00000001 = _tmr0 equ 1
426             
427                     ; line_number = 201
428                     ; register _pcl = 
429  00000002 = _pcl equ 2
430             
431                     ; line_number = 203
432                     ; register _status = 
433  00000003 = _status equ 3
434                     ; line_number = 204
435                     ; bind _irp = _status@7
436  00000003 = _irp___byte equ _status
437  00000007 = _irp___bit equ 7
438                     ; line_number = 205
439                     ; bind _rp1 = _status@5
440  00000003 = _rp1___byte equ _status
441  00000005 = _rp1___bit equ 5
442                     ; line_number = 206
443                     ; bind _rp0 = _status@5
444  00000003 = _rp0___byte equ _status
445  00000005 = _rp0___bit equ 5
446                     ; line_number = 207
447                     ; bind _to = _status@4
448  00000003 = _to___byte equ _status
449  00000004 = _to___bit equ 4
450                     ; line_number = 208
451                     ; bind _pd = _status@3
452  00000003 = _pd___byte equ _status
453  00000003 = _pd___bit equ 3
454                     ; line_number = 209
455                     ; bind _z = _status@2
456  00000003 = _z___byte equ _status
457  00000002 = _z___bit equ 2
458                     ; line_number = 210
459                     ; bind _dc = _status@1
460  00000003 = _dc___byte equ _status
461  00000001 = _dc___bit equ 1
462                     ; line_number = 211
463                     ; bind _c = _status@0
464  00000003 = _c___byte equ _status
465  00000000 = _c___bit equ 0
466             
467                     ; line_number = 213
468                     ; register _fsr = 
469  00000004 = _fsr equ 4
470             
471                     ; line_number = 215
472                     ; register _porta = 
473  00000005 = _porta equ 5
474                     ; line_number = 216
475                     ; register _ra = 
476  00000005 = _ra equ 5
477                     ; line_number = 217
478                     ; bind _ra5 = _porta@5
479  00000005 = _ra5___byte equ _porta
480  00000005 = _ra5___bit equ 5
481                     ; line_number = 218
482                     ; bind _ra4 = _porta@4
483  00000005 = _ra4___byte equ _porta
484  00000004 = _ra4___bit equ 4
485                     ; line_number = 219
486                     ; bind _ra3 = _porta@3
487  00000005 = _ra3___byte equ _porta
488  00000003 = _ra3___bit equ 3
489                     ; line_number = 220
490                     ; bind _ra2 = _porta@2
491  00000005 = _ra2___byte equ _porta
492  00000002 = _ra2___bit equ 2
493                     ; line_number = 221
494                     ; bind _ra1 = _porta@1
495  00000005 = _ra1___byte equ _porta
496  00000001 = _ra1___bit equ 1
497                     ; line_number = 222
498                     ; bind _ra0 = _porta@0
499  00000005 = _ra0___byte equ _porta
500  00000000 = _ra0___bit equ 0
501             
502                     ; line_number = 224
503                     ; register _portc = 
504  00000007 = _portc equ 7
505                     ; line_number = 225
506                     ; register _rc = 
507  00000007 = _rc equ 7
508                     ; line_number = 226
509                     ; bind _rc5 = _portc@5
510  00000007 = _rc5___byte equ _portc
511  00000005 = _rc5___bit equ 5
512                     ; line_number = 227
513                     ; bind _rc4 = _portc@4
514  00000007 = _rc4___byte equ _portc
515  00000004 = _rc4___bit equ 4
516                     ; line_number = 228
517                     ; bind _rc3 = _portc@3
518  00000007 = _rc3___byte equ _portc
519  00000003 = _rc3___bit equ 3
520                     ; line_number = 229
521                     ; bind _rc2 = _portc@2
522  00000007 = _rc2___byte equ _portc
523  00000002 = _rc2___bit equ 2
524                     ; line_number = 230
525                     ; bind _rc1 = _portc@1
526  00000007 = _rc1___byte equ _portc
527  00000001 = _rc1___bit equ 1
528                     ; line_number = 231
529                     ; bind _rc0 = _portc@0
530  00000007 = _rc0___byte equ _portc
531  00000000 = _rc0___bit equ 0
532             
533                     ; line_number = 233
534                     ; register _pclath = 
535  0000000a = _pclath equ 10
536             
537                     ; line_number = 235
538                     ; register _intcon = 
539  0000000b = _intcon equ 11
540                     ; line_number = 236
541                     ; bind _gie = _intcon@7
542  0000000b = _gie___byte equ _intcon
543  00000007 = _gie___bit equ 7
544                     ; line_number = 237
545                     ; bind _peie = _intcon@6
546  0000000b = _peie___byte equ _intcon
547  00000006 = _peie___bit equ 6
548                     ; line_number = 238
549                     ; bind _t0ie = _intcon@5
550  0000000b = _t0ie___byte equ _intcon
551  00000005 = _t0ie___bit equ 5
552                     ; line_number = 239
553                     ; bind _inte = _intcon@4
554  0000000b = _inte___byte equ _intcon
555  00000004 = _inte___bit equ 4
556                     ; line_number = 240
557                     ; bind _raie = _intcon@3
558  0000000b = _raie___byte equ _intcon
559  00000003 = _raie___bit equ 3
560                     ; line_number = 241
561                     ; bind _t0if = _intcon@2
562  0000000b = _t0if___byte equ _intcon
563  00000002 = _t0if___bit equ 2
564                     ; line_number = 242
565                     ; bind _intf = _intcon@1
566  0000000b = _intf___byte equ _intcon
567  00000001 = _intf___bit equ 1
568                     ; line_number = 243
569                     ; bind _raif = _intcon@0
570  0000000b = _raif___byte equ _intcon
571  00000000 = _raif___bit equ 0
572             
573                     ; line_number = 245
574                     ; register _pir1 = 
575  0000000c = _pir1 equ 12
576                     ; line_number = 246
577                     ; bind _eeif = _pir1@7
578  0000000c = _eeif___byte equ _pir1
579  00000007 = _eeif___bit equ 7
580                     ; line_number = 247
581                     ; bind _adif = _pir1@6
582  0000000c = _adif___byte equ _pir1
583  00000006 = _adif___bit equ 6
584                     ; line_number = 248
585                     ; bind _rcif = _pir1@5
586  0000000c = _rcif___byte equ _pir1
587  00000005 = _rcif___bit equ 5
588                     ; line_number = 249
589                     ; bind _c2if = _pir1@4
590  0000000c = _c2if___byte equ _pir1
591  00000004 = _c2if___bit equ 4
592                     ; line_number = 250
593                     ; bind _c1if = _pir1@3
594  0000000c = _c1if___byte equ _pir1
595  00000003 = _c1if___bit equ 3
596                     ; line_number = 251
597                     ; bind _osfif = _pir1@2
598  0000000c = _osfif___byte equ _pir1
599  00000002 = _osfif___bit equ 2
600                     ; line_number = 252
601                     ; bind _txif = _pir1@1
602  0000000c = _txif___byte equ _pir1
603  00000001 = _txif___bit equ 1
604                     ; line_number = 253
605                     ; bind _tmr1if = _pir1@0
606  0000000c = _tmr1if___byte equ _pir1
607  00000000 = _tmr1if___bit equ 0
608             
609                     ; line_number = 255
610                     ; register _tmr1l = 
611  0000000e = _tmr1l equ 14
612             
613                     ; line_number = 257
614                     ; register _tmr1h = 
615  0000000f = _tmr1h equ 15
616             
617                     ; line_number = 259
618                     ; register _t1con = 
619  00000010 = _t1con equ 16
620                     ; line_number = 260
621                     ; bind t1ginv = _t1con@7
622  00000010 = t1ginv___byte equ _t1con
623  00000007 = t1ginv___bit equ 7
624                     ; line_number = 261
625                     ; bind _tmr1ge = _t1con@6
626  00000010 = _tmr1ge___byte equ _t1con
627  00000006 = _tmr1ge___bit equ 6
628                     ; line_number = 262
629                     ; bind _t1ckps1 = _t1con@5
630  00000010 = _t1ckps1___byte equ _t1con
631  00000005 = _t1ckps1___bit equ 5
632                     ; line_number = 263
633                     ; bind _t1ckps0 = _t1con@4
634  00000010 = _t1ckps0___byte equ _t1con
635  00000004 = _t1ckps0___bit equ 4
636                     ; line_number = 264
637                     ; bind _t1oscen = _t1con@3
638  00000010 = _t1oscen___byte equ _t1con
639  00000003 = _t1oscen___bit equ 3
640                     ; line_number = 265
641                     ; bind _t1sync = _t1con@2
642  00000010 = _t1sync___byte equ _t1con
643  00000002 = _t1sync___bit equ 2
644                     ; line_number = 266
645                     ; bind _tmr1cs = _t1con@1
646  00000010 = _tmr1cs___byte equ _t1con
647  00000001 = _tmr1cs___bit equ 1
648                     ; line_number = 267
649                     ; bind _tmr1on = _t1con@0
650  00000010 = _tmr1on___byte equ _t1con
651  00000000 = _tmr1on___bit equ 0
652             
653                     ; line_number = 269
654                     ; register _baudctl = 
655  00000011 = _baudctl equ 17
656                     ; line_number = 270
657                     ; bind _abdovf = _baudctl@7
658  00000011 = _abdovf___byte equ _baudctl
659  00000007 = _abdovf___bit equ 7
660                     ; line_number = 271
661                     ; bind _rcidl = _baudctl@6
662  00000011 = _rcidl___byte equ _baudctl
663  00000006 = _rcidl___bit equ 6
664                     ; line_number = 272
665                     ; bind _sckp = _baudctl@4
666  00000011 = _sckp___byte equ _baudctl
667  00000004 = _sckp___bit equ 4
668                     ; line_number = 273
669                     ; bind _brg16 = _baudctl@3
670  00000011 = _brg16___byte equ _baudctl
671  00000003 = _brg16___bit equ 3
672                     ; line_number = 274
673                     ; bind _wue = _baudctl@1
674  00000011 = _wue___byte equ _baudctl
675  00000001 = _wue___bit equ 1
676                     ; line_number = 275
677                     ; bind _abden = _baudctl@0
678  00000011 = _abden___byte equ _baudctl
679  00000000 = _abden___bit equ 0
680             
681                     ; line_number = 277
682                     ; register _spbrgh = 
683  00000012 = _spbrgh equ 18
684             
685                     ; line_number = 279
686                     ; register _spbrg = 
687  00000013 = _spbrg equ 19
688             
689                     ; line_number = 281
690                     ; register _rcreg = 
691  00000014 = _rcreg equ 20
692             
693                     ; line_number = 283
694                     ; register _txreg = 
695  00000015 = _txreg equ 21
696             
697                     ; line_number = 285
698                     ; register _txsta = 
699  00000016 = _txsta equ 22
700                     ; line_number = 286
701                     ; bind _csrc = _txsta@7
702  00000016 = _csrc___byte equ _txsta
703  00000007 = _csrc___bit equ 7
704                     ; line_number = 287
705                     ; bind _tx9 = _txsta@6
706  00000016 = _tx9___byte equ _txsta
707  00000006 = _tx9___bit equ 6
708                     ; line_number = 288
709                     ; bind _txen = _txsta@5
710  00000016 = _txen___byte equ _txsta
711  00000005 = _txen___bit equ 5
712                     ; line_number = 289
713                     ; bind _sync = _txsta@4
714  00000016 = _sync___byte equ _txsta
715  00000004 = _sync___bit equ 4
716                     ; line_number = 290
717                     ; bind _sendb = _txsta@3
718  00000016 = _sendb___byte equ _txsta
719  00000003 = _sendb___bit equ 3
720                     ; line_number = 291
721                     ; bind _brgh = _txsta@2
722  00000016 = _brgh___byte equ _txsta
723  00000002 = _brgh___bit equ 2
724                     ; line_number = 292
725                     ; bind _trmt = _txsta@1
726  00000016 = _trmt___byte equ _txsta
727  00000001 = _trmt___bit equ 1
728                     ; line_number = 293
729                     ; bind _tx9d = _txsta@7
730  00000016 = _tx9d___byte equ _txsta
731  00000007 = _tx9d___bit equ 7
732             
733                     ; line_number = 295
734                     ; register _rcsta = 
735  00000017 = _rcsta equ 23
736                     ; line_number = 296
737                     ; bind _spen = _rcsta@7
738  00000017 = _spen___byte equ _rcsta
739  00000007 = _spen___bit equ 7
740                     ; line_number = 297
741                     ; bind _rx9 = _rcsta@6
742  00000017 = _rx9___byte equ _rcsta
743  00000006 = _rx9___bit equ 6
744                     ; line_number = 298
745                     ; bind _sren = _rcsta@5
746  00000017 = _sren___byte equ _rcsta
747  00000005 = _sren___bit equ 5
748                     ; line_number = 299
749                     ; bind _cren = _rcsta@4
750  00000017 = _cren___byte equ _rcsta
751  00000004 = _cren___bit equ 4
752                     ; line_number = 300
753                     ; bind _adden = _rcsta@3
754  00000017 = _adden___byte equ _rcsta
755  00000003 = _adden___bit equ 3
756                     ; line_number = 301
757                     ; bind _ferr = _rcsta@2
758  00000017 = _ferr___byte equ _rcsta
759  00000002 = _ferr___bit equ 2
760                     ; line_number = 302
761                     ; bind _oerr = _rcsta@1
762  00000017 = _oerr___byte equ _rcsta
763  00000001 = _oerr___bit equ 1
764                     ; line_number = 303
765                     ; bind _rx9d = _rcsta@0
766  00000017 = _rx9d___byte equ _rcsta
767  00000000 = _rx9d___bit equ 0
768             
769                     ; line_number = 305
770                     ; register _wdtcon = 
771  00000018 = _wdtcon equ 24
772                     ; line_number = 306
773                     ; bind _wdtps3 = _wdtcon@4
774  00000018 = _wdtps3___byte equ _wdtcon
775  00000004 = _wdtps3___bit equ 4
776                     ; line_number = 307
777                     ; bind _wdtps2 = _wdtcon@3
778  00000018 = _wdtps2___byte equ _wdtcon
779  00000003 = _wdtps2___bit equ 3
780                     ; line_number = 308
781                     ; bind _wdtps1 = _wdtcon@2
782  00000018 = _wdtps1___byte equ _wdtcon
783  00000002 = _wdtps1___bit equ 2
784                     ; line_number = 309
785                     ; bind _wdtps0 = _wdtcon@1
786  00000018 = _wdtps0___byte equ _wdtcon
787  00000001 = _wdtps0___bit equ 1
788                     ; line_number = 310
789                     ; bind _swdten = _wdtcon@0
790  00000018 = _swdten___byte equ _wdtcon
791  00000000 = _swdten___bit equ 0
792             
793                     ; line_number = 312
794                     ; register _cmcon0 = 
795  00000019 = _cmcon0 equ 25
796                     ; line_number = 313
797                     ; bind _c1out = _cmcon0@7
798  00000019 = _c1out___byte equ _cmcon0
799  00000007 = _c1out___bit equ 7
800                     ; line_number = 314
801                     ; bind _c2out = _cmcon0@6
802  00000019 = _c2out___byte equ _cmcon0
803  00000006 = _c2out___bit equ 6
804                     ; line_number = 315
805                     ; bind _c1inv = _cmcon0@5
806  00000019 = _c1inv___byte equ _cmcon0
807  00000005 = _c1inv___bit equ 5
808                     ; line_number = 316
809                     ; bind _c2inv = _cmcon0@4
810  00000019 = _c2inv___byte equ _cmcon0
811  00000004 = _c2inv___bit equ 4
812                     ; line_number = 317
813                     ; bind _cis = _cmcon0@3
814  00000019 = _cis___byte equ _cmcon0
815  00000003 = _cis___bit equ 3
816                     ; line_number = 318
817                     ; bind _cm2 = _cmcon0@2
818  00000019 = _cm2___byte equ _cmcon0
819  00000002 = _cm2___bit equ 2
820                     ; line_number = 319
821                     ; bind _cm1 = _cmcon0@1
822  00000019 = _cm1___byte equ _cmcon0
823  00000001 = _cm1___bit equ 1
824                     ; line_number = 320
825                     ; bind _cm0 = _cmcon0@0
826  00000019 = _cm0___byte equ _cmcon0
827  00000000 = _cm0___bit equ 0
828             
829                     ; line_number = 322
830                     ; register _cmcon1 = 
831  0000001a = _cmcon1 equ 26
832                     ; line_number = 323
833                     ; bind _t1gss = _cmcon1@0
834  0000001a = _t1gss___byte equ _cmcon1
835  00000000 = _t1gss___bit equ 0
836                     ; line_number = 324
837                     ; bind _c2sync = _cmcon1@1
838  0000001a = _c2sync___byte equ _cmcon1
839  00000001 = _c2sync___bit equ 1
840             
841                     ; line_number = 326
842                     ; register _adresh = 
843  0000001e = _adresh equ 30
844             
845                     ; line_number = 328
846                     ; register _adcon0 = 
847  0000001f = _adcon0 equ 31
848                     ; line_number = 329
849                     ; bind _adfm = _adcon0@7
850  0000001f = _adfm___byte equ _adcon0
851  00000007 = _adfm___bit equ 7
852                     ; line_number = 330
853                     ; bind _vcfg = _adcon0@6
854  0000001f = _vcfg___byte equ _adcon0
855  00000006 = _vcfg___bit equ 6
856                     ; line_number = 331
857                     ; bind _chs2 = _adcon0@4
858  0000001f = _chs2___byte equ _adcon0
859  00000004 = _chs2___bit equ 4
860                     ; line_number = 332
861                     ; bind _chs1 = _adcon0@3
862  0000001f = _chs1___byte equ _adcon0
863  00000003 = _chs1___bit equ 3
864                     ; line_number = 333
865                     ; bind _chs0 = _adcon0@2
866  0000001f = _chs0___byte equ _adcon0
867  00000002 = _chs0___bit equ 2
868                     ; line_number = 334
869                     ; bind _go = _adcon0@1
870  0000001f = _go___byte equ _adcon0
871  00000001 = _go___bit equ 1
872                     ; line_number = 335
873                     ; bind _adon = _adcon0@0
874  0000001f = _adon___byte equ _adcon0
875  00000000 = _adon___bit equ 0
876             
877                     ; # Data bank 1 (0x80-0xff):
878             
879                     ; line_number = 339
880                     ; register _option_reg = 
881  00000081 = _option_reg equ 129
882                     ; line_number = 340
883                     ; bind _rapu = _option_reg@7
884  00000081 = _rapu___byte equ _option_reg
885  00000007 = _rapu___bit equ 7
886                     ; line_number = 341
887                     ; bind _intedg = _option_reg@6
888  00000081 = _intedg___byte equ _option_reg
889  00000006 = _intedg___bit equ 6
890                     ; line_number = 342
891                     ; bind _t0cs = _option_reg@5
892  00000081 = _t0cs___byte equ _option_reg
893  00000005 = _t0cs___bit equ 5
894                     ; line_number = 343
895                     ; bind _t0se = _option_reg@4
896  00000081 = _t0se___byte equ _option_reg
897  00000004 = _t0se___bit equ 4
898                     ; line_number = 344
899                     ; bind _psa = _option_reg@3
900  00000081 = _psa___byte equ _option_reg
901  00000003 = _psa___bit equ 3
902                     ; line_number = 345
903                     ; bind _ps2 = _option_reg@2
904  00000081 = _ps2___byte equ _option_reg
905  00000002 = _ps2___bit equ 2
906                     ; line_number = 346
907                     ; bind _ps1 = _option_reg@1
908  00000081 = _ps1___byte equ _option_reg
909  00000001 = _ps1___bit equ 1
910                     ; line_number = 347
911                     ; bind _ps0 = _option_reg@0
912  00000081 = _ps0___byte equ _option_reg
913  00000000 = _ps0___bit equ 0
914             
915                     ; line_number = 349
916                     ; register _trisa = 
917  00000085 = _trisa equ 133
918                     ; line_number = 350
919                     ; bind _trisa5 = _trisa@5
920  00000085 = _trisa5___byte equ _trisa
921  00000005 = _trisa5___bit equ 5
922                     ; line_number = 351
923                     ; bind _trisa4 = _trisa@4
924  00000085 = _trisa4___byte equ _trisa
925  00000004 = _trisa4___bit equ 4
926                     ; line_number = 352
927                     ; bind _trisa3 = _trisa@3
928  00000085 = _trisa3___byte equ _trisa
929  00000003 = _trisa3___bit equ 3
930                     ; line_number = 353
931                     ; bind _trisa2 = _trisa@2
932  00000085 = _trisa2___byte equ _trisa
933  00000002 = _trisa2___bit equ 2
934                     ; line_number = 354
935                     ; bind _trisa1 = _trisa@1
936  00000085 = _trisa1___byte equ _trisa
937  00000001 = _trisa1___bit equ 1
938                     ; line_number = 355
939                     ; bind _trisa0 = _trisa@0
940  00000085 = _trisa0___byte equ _trisa
941  00000000 = _trisa0___bit equ 0
942             
943                     ; line_number = 357
944                     ; register _trisc = 
945  00000087 = _trisc equ 135
946                     ; line_number = 358
947                     ; bind _trisc5 = _trisc@5
948  00000087 = _trisc5___byte equ _trisc
949  00000005 = _trisc5___bit equ 5
950                     ; line_number = 359
951                     ; bind _trisc4 = _trisc@4
952  00000087 = _trisc4___byte equ _trisc
953  00000004 = _trisc4___bit equ 4
954                     ; line_number = 360
955                     ; bind _trisc3 = _trisc@3
956  00000087 = _trisc3___byte equ _trisc
957  00000003 = _trisc3___bit equ 3
958                     ; line_number = 361
959                     ; bind _trisc2 = _trisc@2
960  00000087 = _trisc2___byte equ _trisc
961  00000002 = _trisc2___bit equ 2
962                     ; line_number = 362
963                     ; bind _trisc1 = _trisc@1
964  00000087 = _trisc1___byte equ _trisc
965  00000001 = _trisc1___bit equ 1
966                     ; line_number = 363
967                     ; bind _trisc0 = _trisc@0
968  00000087 = _trisc0___byte equ _trisc
969  00000000 = _trisc0___bit equ 0
970             
971                     ; line_number = 365
972                     ; register _pie1 = 
973  0000008c = _pie1 equ 140
974                     ; line_number = 366
975                     ; bind _eeie = _pie1@7
976  0000008c = _eeie___byte equ _pie1
977  00000007 = _eeie___bit equ 7
978                     ; line_number = 367
979                     ; bind _adie = _pie1@6
980  0000008c = _adie___byte equ _pie1
981  00000006 = _adie___bit equ 6
982                     ; line_number = 368
983                     ; bind _rcie = _pie1@5
984  0000008c = _rcie___byte equ _pie1
985  00000005 = _rcie___bit equ 5
986                     ; line_number = 369
987                     ; bind _c2ie = _pie1@4
988  0000008c = _c2ie___byte equ _pie1
989  00000004 = _c2ie___bit equ 4
990                     ; line_number = 370
991                     ; bind _c1ie = _pie1@3
992  0000008c = _c1ie___byte equ _pie1
993  00000003 = _c1ie___bit equ 3
994                     ; line_number = 371
995                     ; bind _osfie = _pie1@2
996  0000008c = _osfie___byte equ _pie1
997  00000002 = _osfie___bit equ 2
998                     ; line_number = 372
999                     ; bind _txie = _pie1@1
1000 0000008c = _txie___byte equ _pie1
1001 00000001 = _txie___bit equ 1
1002                    ; line_number = 373
1003                    ; bind _tmr1ie = _pie1@0
1004 0000008c = _tmr1ie___byte equ _pie1
1005 00000000 = _tmr1ie___bit equ 0
1006            
1007                    ; line_number = 375
1008                    ; register _pcon = 
1009 0000008e = _pcon equ 142
1010                    ; line_number = 376
1011                    ; bind _ulpwue = _pcon@5
1012 0000008e = _ulpwue___byte equ _pcon
1013 00000005 = _ulpwue___bit equ 5
1014                    ; line_number = 377
1015                    ; bind _sboden = _pcon@4
1016 0000008e = _sboden___byte equ _pcon
1017 00000004 = _sboden___bit equ 4
1018                    ; line_number = 378
1019                    ; bind _por = _pcon@1
1020 0000008e = _por___byte equ _pcon
1021 00000001 = _por___bit equ 1
1022                    ; line_number = 379
1023                    ; bind _bod = _pcon@0
1024 0000008e = _bod___byte equ _pcon
1025 00000000 = _bod___bit equ 0
1026            
1027                    ; line_number = 381
1028                    ; register _osccon = 
1029 0000008f = _osccon equ 143
1030                    ; line_number = 382
1031                    ; bind _ircf2 = _osccon@6
1032 0000008f = _ircf2___byte equ _osccon
1033 00000006 = _ircf2___bit equ 6
1034                    ; line_number = 383
1035                    ; bind _ircf1 = _osccon@5
1036 0000008f = _ircf1___byte equ _osccon
1037 00000005 = _ircf1___bit equ 5
1038                    ; line_number = 384
1039                    ; bind _ircf0 = _osccon@4
1040 0000008f = _ircf0___byte equ _osccon
1041 00000004 = _ircf0___bit equ 4
1042                    ; line_number = 385
1043                    ; bind _osts = _osccon@3
1044 0000008f = _osts___byte equ _osccon
1045 00000003 = _osts___bit equ 3
1046                    ; line_number = 386
1047                    ; bind _hts = _osccon@2
1048 0000008f = _hts___byte equ _osccon
1049 00000002 = _hts___bit equ 2
1050                    ; line_number = 387
1051                    ; bind _lts = _osccon@3
1052 0000008f = _lts___byte equ _osccon
1053 00000003 = _lts___bit equ 3
1054                    ; line_number = 388
1055                    ; bind _scs = _osccon@2
1056 0000008f = _scs___byte equ _osccon
1057 00000002 = _scs___bit equ 2
1058            
1059                    ; line_number = 390
1060                    ; register _osctune = 
1061 00000090 = _osctune equ 144
1062                    ; line_number = 391
1063                    ; bind _tun4 = _osctune@4
1064 00000090 = _tun4___byte equ _osctune
1065 00000004 = _tun4___bit equ 4
1066                    ; line_number = 392
1067                    ; bind _tun3 = _osctune@3
1068 00000090 = _tun3___byte equ _osctune
1069 00000003 = _tun3___bit equ 3
1070                    ; line_number = 393
1071                    ; bind _tun2 = _osctune@2
1072 00000090 = _tun2___byte equ _osctune
1073 00000002 = _tun2___bit equ 2
1074                    ; line_number = 394
1075                    ; bind _tun1 = _osctune@1
1076 00000090 = _tun1___byte equ _osctune
1077 00000001 = _tun1___bit equ 1
1078                    ; line_number = 395
1079                    ; bind _tun0 = _osctune@0
1080 00000090 = _tun0___byte equ _osctune
1081 00000000 = _tun0___bit equ 0
1082                    ; line_number = 396
1083                    ; constant _osccal_lsb = 1
1084 00000001 = _osccal_lsb equ 1
1085            
1086                    ; line_number = 398
1087                    ; register _ansel = 
1088 00000091 = _ansel equ 145
1089                    ; line_number = 399
1090                    ; bind _ans7 = _ansel@7
1091 00000091 = _ans7___byte equ _ansel
1092 00000007 = _ans7___bit equ 7
1093                    ; line_number = 400
1094                    ; bind _ans6 = _ansel@6
1095 00000091 = _ans6___byte equ _ansel
1096 00000006 = _ans6___bit equ 6
1097                    ; line_number = 401
1098                    ; bind _ans5 = _ansel@5
1099 00000091 = _ans5___byte equ _ansel
1100 00000005 = _ans5___bit equ 5
1101                    ; line_number = 402
1102                    ; bind _ans4 = _ansel@4
1103 00000091 = _ans4___byte equ _ansel
1104 00000004 = _ans4___bit equ 4
1105                    ; line_number = 403
1106                    ; bind _ans3 = _ansel@3
1107 00000091 = _ans3___byte equ _ansel
1108 00000003 = _ans3___bit equ 3
1109                    ; line_number = 404
1110                    ; bind _ans2 = _ansel@2
1111 00000091 = _ans2___byte equ _ansel
1112 00000002 = _ans2___bit equ 2
1113                    ; line_number = 405
1114                    ; bind _ans1 = _ansel@1
1115 00000091 = _ans1___byte equ _ansel
1116 00000001 = _ans1___bit equ 1
1117                    ; line_number = 406
1118                    ; bind _ans0 = _ansel@0
1119 00000091 = _ans0___byte equ _ansel
1120 00000000 = _ans0___bit equ 0
1121            
1122                    ; line_number = 408
1123                    ; register _wpua = 
1124 00000095 = _wpua equ 149
1125                    ; line_number = 409
1126                    ; bind _wpua5 = _wpua@5
1127 00000095 = _wpua5___byte equ _wpua
1128 00000005 = _wpua5___bit equ 5
1129                    ; line_number = 410
1130                    ; bind _wpua4 = _wpua@4
1131 00000095 = _wpua4___byte equ _wpua
1132 00000004 = _wpua4___bit equ 4
1133                    ; line_number = 411
1134                    ; bind _wpua2 = _wpua@2
1135 00000095 = _wpua2___byte equ _wpua
1136 00000002 = _wpua2___bit equ 2
1137                    ; line_number = 412
1138                    ; bind _wpua1 = _wpua@1
1139 00000095 = _wpua1___byte equ _wpua
1140 00000001 = _wpua1___bit equ 1
1141                    ; line_number = 413
1142                    ; bind _wpua0 = _wpua@0
1143 00000095 = _wpua0___byte equ _wpua
1144 00000000 = _wpua0___bit equ 0
1145            
1146                    ; line_number = 415
1147                    ; register _ioca = 
1148 00000096 = _ioca equ 150
1149                    ; line_number = 416
1150                    ; bind _ioca5 = _ioca@5
1151 00000096 = _ioca5___byte equ _ioca
1152 00000005 = _ioca5___bit equ 5
1153                    ; line_number = 417
1154                    ; bind _ioca4 = _ioca@4
1155 00000096 = _ioca4___byte equ _ioca
1156 00000004 = _ioca4___bit equ 4
1157                    ; line_number = 418
1158                    ; bind _ioca3 = _ioca@3
1159 00000096 = _ioca3___byte equ _ioca
1160 00000003 = _ioca3___bit equ 3
1161                    ; line_number = 419
1162                    ; bind _ioca2 = _ioca@2
1163 00000096 = _ioca2___byte equ _ioca
1164 00000002 = _ioca2___bit equ 2
1165                    ; line_number = 420
1166                    ; bind _ioca1 = _ioca@1
1167 00000096 = _ioca1___byte equ _ioca
1168 00000001 = _ioca1___bit equ 1
1169                    ; line_number = 421
1170                    ; bind _ioca0 = _ioca@0
1171 00000096 = _ioca0___byte equ _ioca
1172 00000000 = _ioca0___bit equ 0
1173            
1174                    ; line_number = 423
1175                    ; register _eedath = 
1176 00000097 = _eedath equ 151
1177            
1178                    ; line_number = 425
1179                    ; register _eeadrh = 
1180 00000098 = _eeadrh equ 152
1181            
1182                    ; line_number = 427
1183                    ; register _vrcon = 
1184 00000099 = _vrcon equ 153
1185                    ; line_number = 428
1186                    ; bind _vren = _vrcon@7
1187 00000099 = _vren___byte equ _vrcon
1188 00000007 = _vren___bit equ 7
1189                    ; line_number = 429
1190                    ; bind _vrr = _vrcon@5
1191 00000099 = _vrr___byte equ _vrcon
1192 00000005 = _vrr___bit equ 5
1193                    ; line_number = 430
1194                    ; bind _vr3 = _vrcon@3
1195 00000099 = _vr3___byte equ _vrcon
1196 00000003 = _vr3___bit equ 3
1197                    ; line_number = 431
1198                    ; bind _vr2 = _vrcon@2
1199 00000099 = _vr2___byte equ _vrcon
1200 00000002 = _vr2___bit equ 2
1201                    ; line_number = 432
1202                    ; bind _vr1 = _vrcon@1
1203 00000099 = _vr1___byte equ _vrcon
1204 00000001 = _vr1___bit equ 1
1205                    ; line_number = 433
1206                    ; bind _vr0 = _vrcon@0
1207 00000099 = _vr0___byte equ _vrcon
1208 00000000 = _vr0___bit equ 0
1209            
1210                    ; line_number = 435
1211                    ; register _eedata = 
1212 0000009a = _eedata equ 154
1213                    ; line_number = 436
1214                    ; bind _eedat7 = _eedata@7
1215 0000009a = _eedat7___byte equ _eedata
1216 00000007 = _eedat7___bit equ 7
1217                    ; line_number = 437
1218                    ; bind _eedat6 = _eedata@6
1219 0000009a = _eedat6___byte equ _eedata
1220 00000006 = _eedat6___bit equ 6
1221                    ; line_number = 438
1222                    ; bind _eedat5 = _eedata@5
1223 0000009a = _eedat5___byte equ _eedata
1224 00000005 = _eedat5___bit equ 5
1225                    ; line_number = 439
1226                    ; bind _eedat4 = _eedata@4
1227 0000009a = _eedat4___byte equ _eedata
1228 00000004 = _eedat4___bit equ 4
1229                    ; line_number = 440
1230                    ; bind _eedat3 = _eedata@3
1231 0000009a = _eedat3___byte equ _eedata
1232 00000003 = _eedat3___bit equ 3
1233                    ; line_number = 441
1234                    ; bind _eedat2 = _eedata@2
1235 0000009a = _eedat2___byte equ _eedata
1236 00000002 = _eedat2___bit equ 2
1237                    ; line_number = 442
1238                    ; bind _eedat1 = _eedata@1
1239 0000009a = _eedat1___byte equ _eedata
1240 00000001 = _eedat1___bit equ 1
1241                    ; line_number = 443
1242                    ; bind _eedat0 = _eedata@0
1243 0000009a = _eedat0___byte equ _eedata
1244 00000000 = _eedat0___bit equ 0
1245            
1246                    ; line_number = 445
1247                    ; register _eeadr = 
1248 0000009b = _eeadr equ 155
1249                    ; line_number = 446
1250                    ; bind _eeadr7 = _eeadr@7
1251 0000009b = _eeadr7___byte equ _eeadr
1252 00000007 = _eeadr7___bit equ 7
1253                    ; line_number = 447
1254                    ; bind _eeadr6 = _eeadr@6
1255 0000009b = _eeadr6___byte equ _eeadr
1256 00000006 = _eeadr6___bit equ 6
1257                    ; line_number = 448
1258                    ; bind _eeadr5 = _eeadr@5
1259 0000009b = _eeadr5___byte equ _eeadr
1260 00000005 = _eeadr5___bit equ 5
1261                    ; line_number = 449
1262                    ; bind _eeadr4 = _eeadr@4
1263 0000009b = _eeadr4___byte equ _eeadr
1264 00000004 = _eeadr4___bit equ 4
1265                    ; line_number = 450
1266                    ; bind _eeadr3 = _eeadr@3
1267 0000009b = _eeadr3___byte equ _eeadr
1268 00000003 = _eeadr3___bit equ 3
1269                    ; line_number = 451
1270                    ; bind _eeadr2 = _eeadr@2
1271 0000009b = _eeadr2___byte equ _eeadr
1272 00000002 = _eeadr2___bit equ 2
1273                    ; line_number = 452
1274                    ; bind _eeadr1 = _eeadr@1
1275 0000009b = _eeadr1___byte equ _eeadr
1276 00000001 = _eeadr1___bit equ 1
1277                    ; line_number = 453
1278                    ; bind _eeadr0 = _eeadr@0
1279 0000009b = _eeadr0___byte equ _eeadr
1280 00000000 = _eeadr0___bit equ 0
1281            
1282                    ; line_number = 455
1283                    ; register _eecon1 = 
1284 0000009c = _eecon1 equ 156
1285                    ; line_number = 456
1286                    ; bind _eepgd = _eecon1@7
1287 0000009c = _eepgd___byte equ _eecon1
1288 00000007 = _eepgd___bit equ 7
1289                    ; line_number = 457
1290                    ; bind _wrerr = _eecon1@3
1291 0000009c = _wrerr___byte equ _eecon1
1292 00000003 = _wrerr___bit equ 3
1293                    ; line_number = 458
1294                    ; bind _wren = _eecon1@2
1295 0000009c = _wren___byte equ _eecon1
1296 00000002 = _wren___bit equ 2
1297                    ; line_number = 459
1298                    ; bind _wr = _eecon1@1
1299 0000009c = _wr___byte equ _eecon1
1300 00000001 = _wr___bit equ 1
1301                    ; line_number = 460
1302                    ; bind _rd = _eecon1@0
1303 0000009c = _rd___byte equ _eecon1
1304 00000000 = _rd___bit equ 0
1305            
1306                    ; line_number = 462
1307                    ; register _eecon2 = 
1308 0000009d = _eecon2 equ 157
1309            
1310                    ; line_number = 464
1311                    ; register _adresl = 
1312 0000009e = _adresl equ 158
1313            
1314                    ; line_number = 466
1315                    ; register _adcon1 = 
1316 0000009f = _adcon1 equ 159
1317                    ; line_number = 467
1318                    ; bind _adcs2 = _adcon1@6
1319 0000009f = _adcs2___byte equ _adcon1
1320 00000006 = _adcs2___bit equ 6
1321                    ; line_number = 468
1322                    ; bind _adcs1 = _adcon1@5
1323 0000009f = _adcs1___byte equ _adcon1
1324 00000005 = _adcs1___bit equ 5
1325                    ; line_number = 469
1326                    ; bind _adcs0 = _adcon1@4
1327 0000009f = _adcs0___byte equ _adcon1
1328 00000004 = _adcs0___bit equ 4
1329            
1330                    ; # Data Bank 2 (0x100 - 0x17f):
1331            
1332                    ; buffer = '_robobricks_pic16f688'
1333                    ; line_number = 6
1334                    ; library _pic16f688 exited
1335                    ; line_number = 7
1336                    ; library clock8mhz entered
1337                    ; # Copyright (c) 2004-2005 by Wayne C. Gramlich
1338                    ; # All rights reserved.
1339            
1340                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1341                    ; # and {clocks_per_instruction}.
1342            
1343                    ; # Define processor constants:
1344                    ; buffer = 'clock8mhz'
1345                    ; line_number = 9
1346                    ; constant clock_rate = 8000000
1347 007a1200 = clock_rate equ 8000000
1348                    ; line_number = 10
1349                    ; constant clocks_per_instruction = 4
1350 00000004 = clocks_per_instruction equ 4
1351                    ; line_number = 11
1352                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1353 001e8480 = instruction_rate equ 2000000
1354                    ; line_number = 12
1355                    ; constant microsecond = 2
1356 00000002 = microsecond equ 2
1357            
1358            
1359                    ; buffer = '_robobricks_pic16f688'
1360                    ; line_number = 7
1361                    ; library clock8mhz exited
1362            
1363                    ; # Get some EUSART constants defined:
1364                    ; line_number = 10
1365                    ; constant _eusart_clock = clock_rate
1366 007a1200 = _eusart_clock equ 8000000
1367                    ; line_number = 11
1368                    ; constant _eusart_factor = 4
1369 00000004 = _eusart_factor equ 4
1370                    ; line_number = 12
1371                    ; library _eusart entered
1372            
1373                    ; # Copyright (c) 2005 by Wayne C. Gramlich
1374                    ; # All rights reserved.
1375            
1376                    ; # This library contains a bunch of definitions for the Enhanced Universal
1377                    ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available
1378                    ; # on many of the PIC microcontrollers.
1379            
1380                    ; # In order to use this module you have to get two constants defined
1381                    ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}.
1382                    ; # {_eusart_clock} should be set to the frequency oscillator for the chip.
1383                    ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether
1384                    ; # the {_brg16} and {_brgh} bits are set.  Use the table below to select:
1385                    ; #
1386                    ; #        _{brg16}	{_brgh}		_{eusart_factor}
1387                    ; #	    0		   0		      64
1388                    ; #	    0		   1		      16
1389                    ; #	    1		   0		      16
1390                    ; #	    1		   1		       
1391            
1392                    ; # 2400 baud:
1393                    ; buffer = '_eusart'
1394                    ; line_number = 23
1395                    ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1
1396 00000340 = _eusart_2400 equ 832
1397                    ; line_number = 24
1398                    ; constant _eusart_2400_low = _eusart_2400 & 0xff
1399 00000040 = _eusart_2400_low equ 64
1400                    ; line_number = 25
1401                    ; constant _eusart_2400_high = _eusart_2400 >> 8
1402 00000003 = _eusart_2400_high equ 3
1403                    ; line_number = 26
1404                    ; constant _eusart_2400_index = 0
1405 00000000 = _eusart_2400_index equ 0
1406                    ; # 4800 baud:
1407                    ; line_number = 28
1408                    ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1
1409 0000019f = _eusart_4800 equ 415
1410                    ; line_number = 29
1411                    ; constant _eusart_4800_low = _eusart_4800 & 0xff
1412 0000009f = _eusart_4800_low equ 159
1413                    ; line_number = 30
1414                    ; constant _eusart_4800_high = _eusart_4800 >> 8
1415 00000001 = _eusart_4800_high equ 1
1416                    ; line_number = 31
1417                    ; constant _eusart_4800_index = 1
1418 00000001 = _eusart_4800_index equ 1
1419                    ; # 9600 baud:
1420                    ; line_number = 33
1421                    ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1
1422 000000cf = _eusart_9600 equ 207
1423                    ; line_number = 34
1424                    ; constant _eusart_9600_low = _eusart_9600 & 0xff
1425 000000cf = _eusart_9600_low equ 207
1426                    ; line_number = 35
1427                    ; constant _eusart_9600_high = _eusart_9600 >> 8
1428 00000000 = _eusart_9600_high equ 0
1429                    ; line_number = 36
1430                    ; constant _eusart_9600_index = 2
1431 00000002 = _eusart_9600_index equ 2
1432                    ; # 19200 baud:
1433                    ; line_number = 38
1434                    ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1
1435 00000067 = _eusart_19200 equ 103
1436                    ; line_number = 39
1437                    ; constant _eusart_19200_low = _eusart_19200 & 0xff
1438 00000067 = _eusart_19200_low equ 103
1439                    ; line_number = 40
1440                    ; constant _eusart_19200_high = _eusart_19200 >> 8
1441 00000000 = _eusart_19200_high equ 0
1442                    ; line_number = 41
1443                    ; constant _eusart_19200_index = 3
1444 00000003 = _eusart_19200_index equ 3
1445                    ; # 38400 baud:
1446                    ; line_number = 43
1447                    ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1
1448 00000033 = _eusart_38400 equ 51
1449                    ; line_number = 44
1450                    ; constant _eusart_38400_low = _eusart_38400 & 0xff
1451 00000033 = _eusart_38400_low equ 51
1452                    ; line_number = 45
1453                    ; constant _eusart_38400_high = _eusart_38400 >> 8
1454 00000000 = _eusart_38400_high equ 0
1455                    ; line_number = 46
1456                    ; constant _eusart_38400_index = 4
1457 00000004 = _eusart_38400_index equ 4
1458                    ; # 57600 baud:
1459                    ; line_number = 48
1460                    ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1
1461 00000021 = _eusart_57600 equ 33
1462                    ; line_number = 49
1463                    ; constant _eusart_57600_low = _eusart_57600 & 0xff
1464 00000021 = _eusart_57600_low equ 33
1465                    ; line_number = 50
1466                    ; constant _eusart_57600_high = _eusart_57600 >> 8
1467 00000000 = _eusart_57600_high equ 0
1468                    ; line_number = 51
1469                    ; constant _eusart_57600_index = 5
1470 00000005 = _eusart_57600_index equ 5
1471                    ; # 115200 baud:
1472                    ; line_number = 53
1473                    ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1
1474 00000010 = _eusart_115200 equ 16
1475                    ; line_number = 54
1476                    ; constant _eusart_115200_low = _eusart_115200 & 0xff
1477 00000010 = _eusart_115200_low equ 16
1478                    ; line_number = 55
1479                    ; constant _eusart_115200_high = _eusart_115200 >> 8
1480 00000000 = _eusart_115200_high equ 0
1481                    ; line_number = 56
1482                    ; constant _eusart_115200_index = 6
1483 00000006 = _eusart_115200_index equ 6
1484                    ; # 203400 baud:
1485                    ; line_number = 58
1486                    ; constant _eusart_203400 = (_eusart_clock / (203400 * _eusart_factor)) - 1
1487 00000008 = _eusart_203400 equ 8
1488                    ; line_number = 59
1489                    ; constant _eusart_203400_low = _eusart_203400 & 0xff
1490 00000008 = _eusart_203400_low equ 8
1491                    ; line_number = 60
1492                    ; constant _eusart_203400_high = _eusart_203400 >> 8
1493 00000000 = _eusart_203400_high equ 0
1494                    ; line_number = 61
1495                    ; constant _eusart_203400_index = 7
1496 00000007 = _eusart_203400_index equ 7
1497            
1498            
1499                    ; buffer = '_robobricks_pic16f688'
1500                    ; line_number = 12
1501                    ; library _eusart exited
1502            
1503                    ; line_number = 14
1504                    ; global debug_mode bit
1505 0000006f = debug_mode___byte equ globals___0+79
1506 00000000 = debug_mode___bit equ 0
1507                    ; line_number = 15
1508                    ; global in_byte_get bit
1509 0000006f = in_byte_get___byte equ globals___0+79
1510 00000001 = in_byte_get___bit equ 1
1511            
1512                    ; Delaying code generation for procedure  byte_get
1513                    ; Delaying code generation for procedure  byte_put
1514                    ; Delaying code generation for procedure  baud_rate_low
1515                    ; Delaying code generation for procedure  baud_rate_high
1516            
1517                    ; buffer = 'sonar8'
1518                    ; line_number = 6
1519                    ; library _robobricks_pic16f688 exited
1520            
1521                    ; line_number = 8
1522                    ; package pdip
1523                    ; line_number = 9
1524                    ; pin 1 = power_supply
1525                    ; line_number = 10
1526                    ;  pin 2 = ra5_in, name = debug
1527 00000005 = debug___byte equ _porta
1528 00000005 = debug___bit equ 5
1529                    ; line_number = 11
1530                    ;  pin 3 = ra4_in, name = sonar0, bit = sonar0_bit
1531 00000005 = sonar0___byte equ _porta
1532 00000004 = sonar0___bit equ 4
1533 00000004 = sonar0_bit equ 4
1534                    ; line_number = 12
1535                    ;  pin 4 = ra3_nc
1536                    ; line_number = 13
1537                    ;  pin 5 = rx
1538                    ; line_number = 14
1539                    ;  pin 6 = tx
1540                    ; line_number = 15
1541                    ;  pin 7 = rc3_in, name = sonar7, bit = sonar7_bit
1542 00000007 = sonar7___byte equ _portc
1543 00000003 = sonar7___bit equ 3
1544 00000003 = sonar7_bit equ 3
1545                    ; line_number = 16
1546                    ;  pin 8 = rc2_in, name = sonar6, bit = sonar6_bit
1547 00000007 = sonar6___byte equ _portc
1548 00000002 = sonar6___bit equ 2
1549 00000002 = sonar6_bit equ 2
1550                    ; line_number = 17
1551                    ;  pin 9 = rc1_in, name = sonar5, bit = sonar5_bit
1552 00000007 = sonar5___byte equ _portc
1553 00000001 = sonar5___bit equ 1
1554 00000001 = sonar5_bit equ 1
1555                    ; line_number = 18
1556                    ;  pin 10 = rc0_in, name = sonar4, bit = sonar4_bit
1557 00000007 = sonar4___byte equ _portc
1558 00000000 = sonar4___bit equ 0
1559 00000000 = sonar4_bit equ 0
1560                    ; line_number = 19
1561                    ;  pin 11 = ra2_in, name = sonar3, bit = sonar3_bit
1562 00000005 = sonar3___byte equ _porta
1563 00000002 = sonar3___bit equ 2
1564 00000002 = sonar3_bit equ 2
1565                    ; line_number = 20
1566                    ;  pin 12 = ra1_in, name = sonar2, bit = sonar2_bit
1567 00000005 = sonar2___byte equ _porta
1568 00000001 = sonar2___bit equ 1
1569 00000001 = sonar2_bit equ 1
1570                    ; line_number = 21
1571                    ;  pin 13 = ra0_in, name = sonar1, bit = sonar1_bit
1572 00000005 = sonar1___byte equ _porta
1573 00000000 = sonar1___bit equ 0
1574 00000000 = sonar1_bit equ 0
1575                    ; line_number = 22
1576                    ;  pin 14 = ground
1577                    ; line_number = 23
1578                    ; bind tris_sonar0 = _trisa@sonar0_bit
1579 00000085 = tris_sonar0___byte equ _trisa
1580 00000004 = tris_sonar0___bit equ 4
1581                    ; line_number = 24
1582                    ; bind tris_sonar1 = _trisa@sonar1_bit
1583 00000085 = tris_sonar1___byte equ _trisa
1584 00000000 = tris_sonar1___bit equ 0
1585                    ; line_number = 25
1586                    ; bind tris_sonar2 = _trisa@sonar2_bit
1587 00000085 = tris_sonar2___byte equ _trisa
1588 00000001 = tris_sonar2___bit equ 1
1589                    ; line_number = 26
1590                    ; bind tris_sonar3 = _trisa@sonar3_bit
1591 00000085 = tris_sonar3___byte equ _trisa
1592 00000002 = tris_sonar3___bit equ 2
1593                    ; line_number = 27
1594                    ; bind tris_sonar4 = _trisc@sonar4_bit
1595 00000087 = tris_sonar4___byte equ _trisc
1596 00000000 = tris_sonar4___bit equ 0
1597                    ; line_number = 28
1598                    ; bind tris_sonar5 = _trisc@sonar5_bit
1599 00000087 = tris_sonar5___byte equ _trisc
1600 00000001 = tris_sonar5___bit equ 1
1601                    ; line_number = 29
1602                    ; bind tris_sonar6 = _trisc@sonar6_bit
1603 00000087 = tris_sonar6___byte equ _trisc
1604 00000002 = tris_sonar6___bit equ 2
1605                    ; line_number = 30
1606                    ; bind tris_sonar7 = _trisa@sonar7_bit
1607 00000085 = tris_sonar7___byte equ _trisa
1608 00000003 = tris_sonar7___bit equ 3
1609            
1610            
1611                    ; line_number = 33
1612                    ; constant channels = 8
1613 00000008 = channels equ 8
1614                    ; line_number = 34
1615                    ; global distance_lows[channels] array[byte]
1616 00000023 = distance_lows equ globals___0+3
1617                    ; line_number = 35
1618                    ; global distance_highs[channels] array[byte]
1619 0000002b = distance_highs equ globals___0+11
1620            
1621                    ; line_number = 37
1622                    ; global command_previous byte
1623 00000033 = command_previous equ globals___0+19
1624                    ; line_number = 38
1625                    ; global command_last byte
1626 00000034 = command_last equ globals___0+20
1627                    ; line_number = 39
1628                    ; global sent_previous byte
1629 00000035 = sent_previous equ globals___0+21
1630                    ; line_number = 40
1631                    ; global sent_last byte
1632 00000036 = sent_last equ globals___0+22
1633            
1634                    ; line_number = 42
1635                    ; global glitch byte
1636 00000037 = glitch equ globals___0+23
1637                    ; line_number = 43
1638                    ; global id_index byte
1639 00000038 = id_index equ globals___0+24
1640            
1641                    ; line_number = 45
1642                    ; origin 0
1643   0000 :           org     0
1644            
1645                    ; line_number = 47
1646                    ; procedure start_up
1647   0000 :   start_up:
1648                    ; arguments_none
1649                    ; line_number = 49
1650                    ;  returns_nothing
1651            
1652                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
1653                    ; line_number = 51
1654                    ;  assemble
1655                    ; line_number = 52
1656 0000 2818          goto    main
1657            
1658                    ; delay after procedure statements=non-uniform
1659                    ; Implied return
1660 0001 3400          retlw   0
1661            
1662            
1663            
1664            
1665                    ; line_number = 54
1666                    ; origin 4
1667   0004 :           org     4
1668            
1669                    ; line_number = 56
1670                    ; procedure interrupt
1671   0004 :   interrupt:
1672 0000003a = interrupt___w_save equ globals___0+26
1673 00000039 = interrupt___status_save equ globals___0+25
1674                    ; Carefully save __w and __tatus into RAM
1675                    ; Save W first (easy)
1676 0004 00ba          movwf   interrupt___w_save
1677                    ; Save Status without smashing it (tricky)
1678                    ; Move swapped version of status into W
1679 0005 0e03          swapf   __status,w
1680                    ; Store swapped version of status into RAM
1681 0006 00b9          movwf   interrupt___status_save
1682                    ; arguments_none
1683                    ; line_number = 58
1684                    ;  returns_nothing
1685            
1686                    ; # This interrupt routine turns off the counter.
1687            
1688            
1689                    ; before procedure statements delay=non-uniform, bit states=(data:00=>?? code:XX=>XX)
1690                    ; delay after procedure statements=non-uniform
1691 0007 1283          bcf     __rp0___byte, __rp0___bit
1692 0008 1303          bcf     __rp1___byte, __rp1___bit
1693                    ; Interrupt return
1694                    ; Carefully restore __w and __tatus from RAM
1695                    ; Restore swapped status into W
1696 0009 0e39          swapf   interrupt___status_save,w
1697                    ; W now contains (unswapped) status
1698                    ; Restore W to __status
1699 000a 0083          movwf   __status
1700                    ; From here on out, do not modify __status
1701                    ; Swap saved W register in RAM
1702 000b 0eba          swapf   interrupt___w_save,f
1703                    ; Unswap the saved W reg and restore to W
1704 000c 0e3a          swapf   interrupt___w_save,w
1705                    ; __w and __status are now restored
1706                    ; Return from interrupt
1707 000d 0009          retfie  
1708            
1709            
1710            
1711            
1712                    ; line_number = 63
1713                    ; procedure us100
1714   000e :   us100:
1715                    ; Last argument is sitting in W; save into argument variable
1716 000e 00bb          movwf   us100__count
1717                    ; delay=4294967295
1718                    ; line_number = 64
1719                    ; argument count byte
1720 0000003b = us100__count equ globals___0+27
1721                    ; line_number = 65
1722                    ;  returns_nothing
1723            
1724                    ; #: This procedure will delay by {count} * 100 microseconds
1725            
1726                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
1727                    ; line_number = 69
1728                    ;  loop_exactly count start
1729 00000040 = us100__1 equ globals___0+32
1730 000f 083b          movf    us100__count,w
1731 0010 00c0          movwf   us100__1
1732   0011 :   us100__2:
1733                    ; line_number = 70
1734                    ; delay 100 * microsecond start
1735                    ; Delay expression evaluates to 200
1736                    ; line_number = 71
1737                    ; do_nothing
1738            
1739            
1740                    ; Delay 200 cycles
1741                    ; Delay loop takes 50 * 4 = 200 cycles
1742 0011 3032          movlw   50
1743   0012 :   us100__3:
1744 0012 3eff          addlw   255
1745 0013 1d03          btfss   __z___byte, __z___bit
1746 0014 2812          goto    us100__3
1747                    ; line_number = 70
1748                    ; delay 100 * microsecond done
1749                    ; line_number = 69
1750                    ;  loop_exactly count wrap-up
1751 0015 0bc0          decfsz  us100__1,f
1752 0016 2811          goto    us100__2
1753                    ; line_number = 69
1754                    ;  loop_exactly count done
1755                    ; delay after procedure statements=non-uniform
1756                    ; Implied return
1757 0017 3400          retlw   0
1758            
1759            
1760            
1761            
1762                    ; line_number = 74
1763                    ; procedure main
1764   0018 :   main:
1765                    ; Initialize some registers
1766 0018 019f          clrf    _adcon0
1767 0019 1683          bsf     __rp0___byte, __rp0___bit
1768 001a 0191          clrf    _ansel
1769 001b 3007          movlw   7
1770 001c 1283          bcf     __rp0___byte, __rp0___bit
1771 001d 0099          movwf   _cmcon0
1772 001e 303f          movlw   63
1773 001f 1683          bsf     __rp0___byte, __rp0___bit
1774 0020 0085          movwf   _trisa
1775 0021 303f          movlw   63
1776 0022 0087          movwf   _trisc
1777                    ; arguments_none
1778                    ; line_number = 76
1779                    ;  returns_nothing
1780            
1781                    ; line_number = 78
1782                    ;  local command byte
1783 0000003c = main__command equ globals___0+28
1784                    ; line_number = 79
1785                    ;  local temporary byte
1786 0000003d = main__temporary equ globals___0+29
1787                    ; line_number = 80
1788                    ;  local channel byte
1789 0000003e = main__channel equ globals___0+30
1790            
1791                    ; # Switch over to 8MHz:
1792                    ; before procedure statements delay=non-uniform, bit states=(data:00=>01 code:XX=>XX)
1793                    ; line_number = 83
1794                    ;  _osccon := 0x71
1795 0023 3071          movlw   113
1796 0024 008f          movwf   _osccon
1797            
1798                    ; # Warm up the UART:
1799                    ; line_number = 86
1800                    ;  _txsta := 0x24
1801 0025 3024          movlw   36
1802 0026 1283          bcf     __rp0___byte, __rp0___bit
1803 0027 0096          movwf   _txsta
1804                    ; line_number = 87
1805                    ;  _rcsta := 0x90
1806 0028 3090          movlw   144
1807 0029 0097          movwf   _rcsta
1808                    ; line_number = 88
1809                    ;  _baudctl := 0x08
1810 002a 3008          movlw   8
1811 002b 0091          movwf   _baudctl
1812                    ; line_number = 89
1813                    ;  _spbrg := _eusart_2400_low
1814 002c 3040          movlw   64
1815 002d 0093          movwf   _spbrg
1816                    ; line_number = 90
1817                    ;  _spbrgh := _eusart_2400_high
1818 002e 3003          movlw   3
1819 002f 0092          movwf   _spbrgh
1820            
1821                    ; # According to the specification sheet, TMR1L, TRM1H, and
1822                    ; # TMR1IF must be clear before enabling TMR1IE.  Since they
1823                    ; # do not say why, it is unclear what problem that this addresses.
1824                    ; #_tmr1l := 0
1825                    ; #_tmr1h := 0
1826                    ; #_tmr1if := 0
1827                    ; #_tmr1ie := 1
1828                    ; #_peie := 1
1829                    ; #_gie := 1
1830                    ; #_tmr1on := 1
1831            
1832                    ; line_number = 103
1833                    ;  _t1con := 0
1834 0030 3000          movlw   0
1835 0031 0090          movwf   _t1con
1836            
1837                    ; line_number = 105
1838                    ;  glitch := 0
1839 0032 3000          movlw   0
1840 0033 00b7          movwf   glitch
1841                    ; line_number = 106
1842                    ;  id_index := 0
1843 0034 3000          movlw   0
1844 0035 00b8          movwf   id_index
1845            
1846                    ; line_number = 108
1847                    ;  loop_forever start
1848   0036 :   main__1:
1849                    ; line_number = 109
1850                    ; sonar0 := 0
1851 0036 1205          bcf     sonar0___byte, sonar0___bit
1852                    ; line_number = 110
1853                    ;  tris_sonar0 := 0
1854 0037 1683          bsf     __rp0___byte, __rp0___bit
1855 0038 1205          bcf     tris_sonar0___byte, tris_sonar0___bit
1856                    ; line_number = 111
1857                    ;  sonar0 := 0
1858 0039 1283          bcf     __rp0___byte, __rp0___bit
1859 003a 1205          bcf     sonar0___byte, sonar0___bit
1860                    ; line_number = 112
1861                    ;  delay 10 * microsecond start
1862                    ; Delay expression evaluates to 20
1863                    ; line_number = 113
1864                    ; do_nothing
1865            
1866                    ; Delay 20 cycles
1867                    ; Delay loop takes 5 * 4 = 20 cycles
1868 003b 3005          movlw   5
1869   003c :   main__2:
1870 003c 3eff          addlw   255
1871 003d 1d03          btfss   __z___byte, __z___bit
1872 003e 283c          goto    main__2
1873                    ; line_number = 112
1874                    ;  delay 10 * microsecond done
1875                    ; line_number = 115
1876                    ; sonar0 := 1
1877 003f 1605          bsf     sonar0___byte, sonar0___bit
1878                    ; line_number = 116
1879                    ;  delay 10 * microsecond start
1880                    ; Delay expression evaluates to 20
1881                    ; line_number = 117
1882                    ; do_nothing
1883            
1884                    ; Delay 20 cycles
1885                    ; Delay loop takes 5 * 4 = 20 cycles
1886 0040 3005          movlw   5
1887   0041 :   main__3:
1888 0041 3eff          addlw   255
1889 0042 1d03          btfss   __z___byte, __z___bit
1890 0043 2841          goto    main__3
1891                    ; line_number = 116
1892                    ;  delay 10 * microsecond done
1893                    ; line_number = 119
1894                    ; sonar0 := 0
1895 0044 1205          bcf     sonar0___byte, sonar0___bit
1896                    ; line_number = 120
1897                    ;  delay 10 * microsecond start
1898                    ; Delay expression evaluates to 20
1899                    ; line_number = 121
1900                    ; do_nothing
1901            
1902                    ; Delay 20 cycles
1903                    ; Delay loop takes 5 * 4 = 20 cycles
1904 0045 3005          movlw   5
1905   0046 :   main__4:
1906 0046 3eff          addlw   255
1907 0047 1d03          btfss   __z___byte, __z___bit
1908 0048 2846          goto    main__4
1909                    ; line_number = 120
1910                    ;  delay 10 * microsecond done
1911                    ; line_number = 123
1912                    ; tris_sonar0 := 1
1913 0049 1683          bsf     __rp0___byte, __rp0___bit
1914 004a 1605          bsf     tris_sonar0___byte, tris_sonar0___bit
1915                    ; line_number = 124
1916                    ;  call us100(200)
1917 004b 30c8          movlw   200
1918 004c 1283          bcf     __rp0___byte, __rp0___bit
1919 004d 200e          call    us100
1920            
1921            
1922                    ; line_number = 108
1923                    ;  loop_forever wrap-up
1924 004e 2836          goto    main__1
1925                    ; line_number = 108
1926                    ;  loop_forever done
1927                    ; line_number = 127
1928                    ; loop_forever start
1929   004f :   main__5:
1930                    ; line_number = 128
1931                    ; command := byte_get()
1932 004f 212f          call    byte_get
1933 0050 00bc          movwf   main__command
1934                    ; line_number = 129
1935                    ;  switch command >> 6 start
1936 0051 3000          movlw   main__34>>8
1937 0052 008a          movwf   __pclath
1938 00000042 = main__35 equ globals___0+34
1939 0053 0e3c          swapf   main__command,w
1940 0054 00c2          movwf   main__35
1941 0055 0cc2          rrf     main__35,f
1942 0056 0c42          rrf     main__35,w
1943 0057 3903          andlw   3
1944 0058 3e5a          addlw   main__34
1945 0059 0082          movwf   __pcl
1946                    ; page_group 4
1947   005a :   main__34:
1948 005a 285e          goto    main__32
1949 005b 28e5          goto    main__36
1950 005c 28e5          goto    main__36
1951 005d 289f          goto    main__33
1952                    ; line_number = 130
1953                    ; case 0
1954   005e :   main__32:
1955                    ; # 00xx xxxx:
1956                    ; line_number = 132
1957                    ;  channel := command & 7
1958 005e 3007          movlw   7
1959 005f 053c          andwf   main__command,w
1960 0060 00be          movwf   main__channel
1961                    ; line_number = 133
1962                    ;  switch (command >> 3) & 7 start
1963                    ; line_number = 134
1964                    ; case_maximum 7
1965 0061 3000          movlw   main__14>>8
1966 0062 008a          movwf   __pclath
1967 00000042 = main__15 equ globals___0+34
1968 0063 0c3c          rrf     main__command,w
1969 0064 00c2          movwf   main__15
1970 0065 0cc2          rrf     main__15,f
1971 0066 0c42          rrf     main__15,w
1972 0067 3907          andlw   7
1973 0068 3e6a          addlw   main__14
1974 0069 0082          movwf   __pcl
1975                    ; page_group 8
1976   006a :   main__14:
1977 006a 2872          goto    main__9
1978 006b 2878          goto    main__10
1979 006c 287e          goto    main__11
1980 006d 2890          goto    main__12
1981 006e 289c          goto    main__13
1982 006f 289e          goto    main__16
1983 0070 289e          goto    main__16
1984 0071 289e          goto    main__16
1985                    ; line_number = 135
1986                    ; case 0
1987   0072 :   main__9:
1988                    ; # 0000 0ccc (Read Distance High):
1989                    ; line_number = 137
1990                    ;  call byte_put(distance_highs[channel])
1991 0072 083e          movf    main__channel,w
1992 0073 3e2b          addlw   distance_highs
1993 0074 0084          movwf   __fsr
1994 0075 0800          movf    __indf,w
1995 0076 213a          call    byte_put
1996 0077 289e          goto    main__16
1997                    ; line_number = 138
1998                    ; case 1
1999   0078 :   main__10:
2000                    ; # 0000 1ccc (Read Distance Low):
2001                    ; line_number = 140
2002                    ;  call byte_put(distance_lows[channel])
2003 0078 083e          movf    main__channel,w
2004 0079 3e23          addlw   distance_lows
2005 007a 0084          movwf   __fsr
2006 007b 0800          movf    __indf,w
2007 007c 213a          call    byte_put
2008 007d 289e          goto    main__16
2009                    ; line_number = 141
2010                    ; case 2
2011   007e :   main__11:
2012                    ; # 0001 0ccc (Read Distance Middle):
2013                    ; line_number = 143
2014                    ;  call byte_put((distance_highs[channel] << 4) | (distance_lows[channel] >> 4))
2015 00000041 = main__6 equ globals___0+33
2016 007e 083e          movf    main__channel,w
2017 007f 3e2b          addlw   distance_highs
2018 0080 0084          movwf   __fsr
2019 0081 0800          movf    __indf,w
2020 0082 00c1          movwf   main__6
2021 0083 0ec1          swapf   main__6,f
2022 0084 30f0          movlw   240
2023 0085 05c1          andwf   main__6,f
2024 00000042 = main__7 equ globals___0+34
2025 0086 083e          movf    main__channel,w
2026 0087 3e23          addlw   distance_lows
2027 0088 0084          movwf   __fsr
2028 0089 0800          movf    __indf,w
2029 008a 00c2          movwf   main__7
2030 008b 0ec2          swapf   main__7,f
2031 008c 390f          andlw   15
2032 008d 0441          iorwf   main__6,w
2033 008e 213a          call    byte_put
2034            
2035 008f 289e          goto    main__16
2036                    ; line_number = 145
2037                    ; case 3
2038   0090 :   main__12:
2039                    ; # 0001 1ccc (Read Distance High and Low):
2040                    ; line_number = 147
2041                    ;  call foo()
2042 0090 20e9          call    foo
2043                    ; line_number = 148
2044                    ;  call byte_put(distance_highs[channel])
2045 0091 083e          movf    main__channel,w
2046 0092 3e2b          addlw   distance_highs
2047 0093 0084          movwf   __fsr
2048 0094 0800          movf    __indf,w
2049 0095 213a          call    byte_put
2050                    ; line_number = 149
2051                    ;  call byte_put(distance_lows[channel])
2052 0096 083e          movf    main__channel,w
2053 0097 3e23          addlw   distance_lows
2054 0098 0084          movwf   __fsr
2055 0099 0800          movf    __indf,w
2056 009a 213a          call    byte_put
2057 009b 289e          goto    main__16
2058                    ; line_number = 150
2059                    ; case 4
2060   009c :   main__13:
2061                    ; # 0010 0xxx:
2062                    ; line_number = 152
2063                    ;  loop_forever start
2064   009c :   main__8:
2065                    ; line_number = 153
2066                    ; call foo()
2067 009c 20e9          call    foo
2068                    ; line_number = 152
2069                    ;  loop_forever wrap-up
2070 009d 289c          goto    main__8
2071                    ; line_number = 152
2072                    ;  loop_forever done
2073   009e :   main__16:
2074                    ; switch end:(data:00=>00 code:XX=>XX)
2075                    ; line_number = 133
2076                    ;  switch (command >> 3) & 7 done
2077 009e 28e5          goto    main__36
2078                    ; line_number = 154
2079                    ; case 3
2080   009f :   main__33:
2081                    ; # 11xx xxxx:
2082                    ; line_number = 156
2083                    ;  switch (command >> 3) & 7 start
2084 009f 3000          movlw   main__29>>8
2085 00a0 008a          movwf   __pclath
2086 00000042 = main__30 equ globals___0+34
2087 00a1 0c3c          rrf     main__command,w
2088 00a2 00c2          movwf   main__30
2089 00a3 0cc2          rrf     main__30,f
2090 00a4 0c42          rrf     main__30,w
2091 00a5 3907          andlw   7
2092 00a6 3ea8          addlw   main__29
2093 00a7 0082          movwf   __pcl
2094                    ; page_group 8
2095   00a8 :   main__29:
2096 00a8 28e5          goto    main__31
2097 00a9 28e5          goto    main__31
2098 00aa 28e5          goto    main__31
2099 00ab 28e5          goto    main__31
2100 00ac 28e5          goto    main__31
2101 00ad 28e5          goto    main__31
2102 00ae 28e5          goto    main__31
2103 00af 28b0          goto    main__28
2104                    ; line_number = 157
2105                    ; case 7
2106   00b0 :   main__28:
2107                    ; # 1111 1xxx:
2108                    ; line_number = 159
2109                    ;  switch command & 7 start
2110 00b0 3000          movlw   main__26>>8
2111 00b1 008a          movwf   __pclath
2112 00b2 3007          movlw   7
2113 00b3 053c          andwf   main__command,w
2114 00b4 3eb6          addlw   main__26
2115 00b5 0082          movwf   __pcl
2116                    ; page_group 8
2117   00b6 :   main__26:
2118 00b6 28be          goto    main__18
2119 00b7 28c1          goto    main__19
2120 00b8 28c4          goto    main__20
2121 00b9 28c9          goto    main__21
2122 00ba 28cc          goto    main__22
2123 00bb 28d9          goto    main__23
2124 00bc 28dc          goto    main__24
2125 00bd 28e1          goto    main__25
2126                    ; line_number = 160
2127                    ; case 0
2128   00be :   main__18:
2129                    ; This case body wants this bit set
2130 00be 1683          bsf     __rp0___byte, __rp0___bit
2131                    ; # 1111 1000 (Decrement Clock):
2132                    ; line_number = 162
2133                    ;  _osctune := _osctune - _osccal_lsb
2134 00bf 0390          decf    _osctune,f
2135 00c0 28e5          goto    main__27
2136                    ; line_number = 163
2137                    ; case 1
2138   00c1 :   main__19:
2139                    ; This case body wants this bit set
2140 00c1 1683          bsf     __rp0___byte, __rp0___bit
2141                    ; # 1111 1001 (Increment Clock):
2142                    ; line_number = 165
2143                    ;  _osctune := _osctune + _osccal_lsb
2144 00c2 0a90          incf    _osctune,f
2145 00c3 28e5          goto    main__27
2146                    ; line_number = 166
2147                    ; case 2
2148   00c4 :   main__20:
2149                    ; This case body wants this bit set
2150 00c4 1683          bsf     __rp0___byte, __rp0___bit
2151                    ; # 1111 1010 (Read Clock):
2152                    ; line_number = 168
2153                    ;  call byte_put(_osctune)
2154 00c5 0810          movf    _osctune,w
2155 00c6 1283          bcf     __rp0___byte, __rp0___bit
2156 00c7 213a          call    byte_put
2157 00c8 28e5          goto    main__27
2158                    ; line_number = 169
2159                    ; case 3
2160   00c9 :   main__21:
2161                    ; # 1111 1011 (xxx):
2162                    ; line_number = 171
2163                    ;  call byte_put(0)
2164 00c9 3000          movlw   0
2165 00ca 213a          call    byte_put
2166 00cb 28e5          goto    main__27
2167                    ; line_number = 172
2168                    ; case 4
2169   00cc :   main__22:
2170                    ; # 1111 1100 (Read Id)
2171                    ; line_number = 174
2172                    ;  temporary := 0
2173 00cc 3000          movlw   0
2174 00cd 00bd          movwf   main__temporary
2175                    ; line_number = 175
2176                    ;  if id_index < id.size start
2177 00ce 3028          movlw   40
2178 00cf 0238          subwf   id_index,w
2179                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2180                    ; CASE: true.size=0 && false.size>1
2181                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
2182 00d0 1803          btfsc   __c___byte, __c___bit
2183 00d1 28d6          goto    main__17
2184                    ; line_number = 176
2185                    ; temporary := id[id_index]
2186 00d2 0838          movf    id_index,w
2187 00d3 2101          call    id
2188 00d4 00bd          movwf   main__temporary
2189                    ; line_number = 177
2190                    ;  id_index := id_index + 1
2191 00d5 0ab8          incf    id_index,f
2192   00d6 :   main__17:
2193                    ; Recombine size1 = 0 || size2 = 0
2194                    ; code.delay=4294967295 back_code.delay=4294967295
2195                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:XX=>XX)
2196                    ; line_number = 175
2197                    ;  if id_index < id.size done
2198                    ; line_number = 178
2199                    ; call byte_put(temporary)
2200 00d6 083d          movf    main__temporary,w
2201 00d7 213a          call    byte_put
2202 00d8 28e5          goto    main__27
2203                    ; line_number = 179
2204                    ; case 5
2205   00d9 :   main__23:
2206                    ; # 1111 1101 (Reset Id Index):
2207                    ; line_number = 181
2208                    ;  id_index := 0
2209 00d9 3000          movlw   0
2210 00da 00b8          movwf   id_index
2211 00db 28e5          goto    main__27
2212                    ; line_number = 182
2213                    ; case 6
2214   00dc :   main__24:
2215                    ; # 1111 1110 (Read Glitch)
2216                    ; line_number = 184
2217                    ;  call byte_put(glitch)
2218 00dc 0837          movf    glitch,w
2219 00dd 213a          call    byte_put
2220                    ; line_number = 185
2221                    ;  glitch := 0
2222 00de 3000          movlw   0
2223 00df 00b7          movwf   glitch
2224 00e0 28e5          goto    main__27
2225                    ; line_number = 186
2226                    ; case 7
2227   00e1 :   main__25:
2228                    ; # 1111 1111 (Increment Glitch):
2229                    ; line_number = 188
2230                    ;  if glitch < 255 start
2231 00e1 30ff          movlw   255
2232 00e2 0237          subwf   glitch,w
2233                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2234                    ; CASE: true_code.size=0 && false_code.size=1
2235 00e3 1c03          btfss   __c___byte, __c___bit
2236                    ; line_number = 189
2237                    ; glitch := glitch + 1
2238 00e4 0ab7          incf    glitch,f
2239            
2240                    ; Recombine size1 = 0 || size2 = 0
2241                    ; code.delay=4294967295 back_code.delay=4294967295
2242                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:XX=>XX)
2243                    ; line_number = 188
2244                    ;  if glitch < 255 done
2245   00e5 :   main__27:
2246                    ; switch end:(data:00=>0? code:XX=>XX)
2247                    ; line_number = 159
2248                    ;  switch command & 7 done
2249   00e5 :   main__31:
2250                    ; switch end:(data:00=>0? code:XX=>XX)
2251                    ; line_number = 156
2252                    ;  switch (command >> 3) & 7 done
2253   00e5 :   main__36:
2254                    ; switch end:(data:00=>0? code:XX=>XX)
2255                    ; line_number = 129
2256                    ;  switch command >> 6 done
2257                    ; line_number = 127
2258                    ; loop_forever wrap-up
2259                    ; Need to adjust code banks to match front of loop
2260 00e5 1283          bcf     __rp0___byte, __rp0___bit
2261 00e6 284f          goto    main__5
2262                    ; line_number = 127
2263                    ; loop_forever done
2264                    ; delay after procedure statements=non-uniform
2265            
2266            
2267            
2268            
2269                    ; line_number = 191
2270                    ; global mode byte
2271 0000003f = mode equ globals___0+31
2272            
2273                    ; line_number = 193
2274                    ; procedure delay
2275   00e7 :   delay:
2276                    ; arguments_none
2277                    ; line_number = 195
2278                    ;  returns_nothing
2279            
2280                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2281                    ; line_number = 197
2282                    ;  watch_dog_reset done
2283 00e7 0064          clrwdt  
2284            
2285            
2286                    ; delay after procedure statements=non-uniform
2287                    ; Implied return
2288 00e8 3400          retlw   0
2289            
2290            
2291            
2292            
2293                    ; line_number = 200
2294                    ; procedure foo
2295   00e9 :   foo:
2296                    ; arguments_none
2297                    ; line_number = 202
2298                    ;  returns_nothing
2299            
2300                    ; # This procedure is repeatably called while waiting for a byte to be
2301                    ; # received.
2302            
2303                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2304                    ; line_number = 207
2305                    ;  tris_sonar0 := 0
2306 00e9 1683          bsf     __rp0___byte, __rp0___bit
2307 00ea 1205          bcf     tris_sonar0___byte, tris_sonar0___bit
2308                    ; line_number = 208
2309                    ;  sonar0 := 1
2310 00eb 1283          bcf     __rp0___byte, __rp0___bit
2311 00ec 1605          bsf     sonar0___byte, sonar0___bit
2312            
2313                    ; line_number = 210
2314                    ;  delay 5 * microsecond start
2315                    ; Delay expression evaluates to 10
2316                    ; line_number = 211
2317                    ; do_nothing
2318            
2319                    ; Delay 10 cycles
2320                    ; Delay loop takes 2 * 4 = 8 cycles
2321 00ed 3002          movlw   2
2322   00ee :   foo__1:
2323 00ee 3eff          addlw   255
2324 00ef 1d03          btfss   __z___byte, __z___bit
2325 00f0 28ee          goto    foo__1
2326 00f1 28f2          goto    foo__2
2327   00f2 :   foo__2:
2328                    ; line_number = 210
2329                    ;  delay 5 * microsecond done
2330                    ; line_number = 213
2331                    ; sonar0 := 0
2332 00f2 1205          bcf     sonar0___byte, sonar0___bit
2333                    ; line_number = 214
2334                    ;  tris_sonar0 := 1
2335 00f3 1683          bsf     __rp0___byte, __rp0___bit
2336 00f4 1605          bsf     tris_sonar0___byte, tris_sonar0___bit
2337            
2338                    ; line_number = 216
2339                    ;  while !sonar0 start
2340   00f5 :   foo__3:
2341                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2342                    ; CASE: true_code.size=0 && false_code.size=1
2343 00f5 1283          bcf     __rp0___byte, __rp0___bit
2344 00f6 1e05          btfss   sonar0___byte, sonar0___bit
2345                    ; true.size=0 false_size=1 false=GOTO
2346 00f7 28f5          goto    foo__3
2347                    ; Recombine size1 = 0 || size2 = 0
2348                    ; code.delay=4294967295 back_code.delay=4294967295
2349                    ; <=bit_code_emit@symbol; sym=sonar0 (data:XX=>XX code:XX=>XX)
2350                    ; line_number = 216
2351                    ;  while !sonar0 done
2352                    ; line_number = 219
2353                    ; _tmr1on := 1
2354 00f8 1410          bsf     _tmr1on___byte, _tmr1on___bit
2355            
2356                    ; line_number = 221
2357                    ;  while sonar0 start
2358   00f9 :   foo__4:
2359                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2360                    ; CASE: True.size=1 False.size=0
2361 00f9 1a05          btfsc   sonar0___byte, sonar0___bit
2362                    ; true=GOTO
2363 00fa 28f9          goto    foo__4
2364                    ; code.delay=4294967295 back_code.delay=4294967295
2365                    ; <=bit_code_emit@symbol; sym=sonar0 (data:XX=>XX code:XX=>XX)
2366                    ; line_number = 221
2367                    ;  while sonar0 done
2368                    ; line_number = 224
2369                    ; _tmr1on := 0
2370 00fb 1010          bcf     _tmr1on___byte, _tmr1on___bit
2371                    ; line_number = 225
2372                    ;  distance_lows[0] := _tmr1l
2373 00fc 080e          movf    _tmr1l,w
2374 00fd 00a3          movwf   distance_lows
2375                    ; line_number = 226
2376                    ;  distance_highs[0] := _tmr1h
2377 00fe 080f          movf    _tmr1h,w
2378 00ff 00ab          movwf   distance_highs
2379            
2380            
2381                    ; delay after procedure statements=non-uniform
2382                    ; Implied return
2383 0100 3400          retlw   0
2384            
2385            
2386            
2387            
2388                    ; #    local channel byte
2389                    ; #    local result bit
2390                    ; #
2391                    ; #
2392                    ; #    channel := 0
2393                    ; #
2394                    ; #    # Initiate a pulse:
2395                    ; #    switch channel
2396                    ; #      case 0
2397                    ; #	tris_sonar0 := 0
2398                    ; #	sonar0 := 1
2399                    ; #      case 1
2400                    ; #	tris_sonar1 := 0
2401                    ; #	sonar1 := 1
2402                    ; #      case 2
2403                    ; #	tris_sonar2 := 0
2404                    ; #	sonar2 := 1
2405                    ; #      case 3
2406                    ; #	tris_sonar3 := 0
2407                    ; #	sonar3 := 1
2408                    ; #      case 4
2409                    ; #	tris_sonar4 := 0
2410                    ; #	sonar4 := 1
2411                    ; #      case 5
2412                    ; #	tris_sonar5 := 0
2413                    ; #	sonar5 := 1
2414                    ; #      case 6
2415                    ; #	tris_sonar6 := 0
2416                    ; #	sonar6 := 1
2417                    ; #      case 7
2418                    ; #	tris_sonar7 := 0
2419                    ; #	sonar7 := 1
2420                    ; #
2421                    ; #    # Let the pulse go for 5uS:
2422                    ; #    delay 5 * microsecond
2423                    ; #
2424                    ; #    # Turn the pulse off:
2425                    ; #    switch channel
2426                    ; #      case 0
2427                    ; #	sonar0 := 0
2428                    ; #	tris_sonar0 := 1
2429                    ; #      case 1
2430                    ; #	sonar1 := 0
2431                    ; #	tris_sonar1 := 1
2432                    ; #      case 2
2433                    ; #	sonar2 := 0
2434                    ; #	tris_sonar2 := 1
2435                    ; #      case 3
2436                    ; #	sonar3 := 0
2437                    ; #	tris_sonar3 := 1
2438                    ; #      case 4
2439                    ; #	sonar4 := 0
2440                    ; #	tris_sonar4 := 1
2441                    ; #      case 5
2442                    ; #	sonar5 := 0
2443                    ; #	tris_sonar5 := 1
2444                    ; #      case 6
2445                    ; #	sonar6 := 0
2446                    ; #	tris_sonar6 := 1
2447                    ; #      case 7
2448                    ; #	sonar7 := 0
2449                    ; #	tris_sonar7 := 1
2450                    ; #
2451                    ; #    # W
2452                    ; #
2453                    ; #    if _tmr1on
2454                    ; #	# We are waiting for a pulse to finish:
2455                    ; #	result := 0
2456                    ; #	switch channel
2457                    ; #	  case 0
2458                    ; #	    if sonar0
2459                    ; #		result := 1
2460                    ; #	  case 1
2461                    ; #	    if sonar1
2462                    ; #		result := 1
2463                    ; #	  case 2
2464                    ; #	    if sonar2
2465                    ; #		result := 1
2466                    ; #	  case 3
2467                    ; #	    if sonar3
2468                    ; #		result := 1
2469                    ; #	  case 4
2470                    ; #	    if sonar4
2471                    ; #		result := 1
2472                    ; #	  case 5
2473                    ; #	    if sonar5
2474                    ; #		result := 1
2475                    ; #	  case 6
2476                    ; #	    if sonar6
2477                    ; #		result := 1
2478                    ; #	  case 7
2479                    ; #	    if sonar7
2480                    ; #		result := 1
2481                    ; #	if !result
2482                    ; #	    # Sonar pulse is over; read the resul:
2483                    ; #	    _tmr1on := 0
2484                    ; #	    distance_lows[channel] := _tmr1l
2485                    ; #	    distance_highs[channel] := _tmr1h
2486                    ; #    else
2487                    ; #	# We are ready to trigger a pulse:
2488                    ; #
2489                    ; #	if channel
2490                    ; #    
2491            
2492            
2493                    ; line_number = 334
2494                    ; constant zero8 = "\0,0,0,0,0,0,0,0\"
2495                    ; zero8 = '\0,0,0,0,0,0,0,0\'
2496                    ; line_number = 335
2497                    ; constant module_name = "\7\Sonar8C"
2498                    ; module_name = '\7\Sonar8C'
2499                    ; line_number = 336
2500                    ; constant vendor_name = "\7\Gramson"
2501                    ; vendor_name = '\7\Gramson'
2502            
2503                    ; line_number = 338
2504                    ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
2505                    ; id = '\1,0,15,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\Sonar8C\7\Gramson'
2506   0101 :   id:
2507                    ; Temporarily save index into FSR
2508 0101 0084          movwf   __fsr
2509                    ; Initialize PCLATH to point to this code page
2510 0102 3001          movlw   id___base>>8
2511 0103 008a          movwf   __pclath
2512                    ; Restore index from FSR
2513 0104 0804          movf    __fsr,w
2514 0105 3e07          addlw   id___base
2515                    ; Index to the correct return value
2516 0106 0082          movwf   __pcl
2517                    ; page_group 40
2518   0107 :   id___base:
2519 0107 3401          retlw   1
2520 0108 3400          retlw   0
2521 0109 340f          retlw   15
2522 010a 3407          retlw   7
2523 010b 3401          retlw   1
2524 010c 3400          retlw   0
2525 010d 3400          retlw   0
2526 010e 3400          retlw   0
2527 010f 3400          retlw   0
2528 0110 3400          retlw   0
2529 0111 3400          retlw   0
2530 0112 3400          retlw   0
2531 0113 3400          retlw   0
2532 0114 3400          retlw   0
2533 0115 3400          retlw   0
2534 0116 3400          retlw   0
2535 0117 3400          retlw   0
2536 0118 3400          retlw   0
2537 0119 3400          retlw   0
2538 011a 3400          retlw   0
2539 011b 3400          retlw   0
2540 011c 3400          retlw   0
2541 011d 3400          retlw   0
2542 011e 3400          retlw   0
2543 011f 3407          retlw   7
2544 0120 3453          retlw   83
2545 0121 346f          retlw   111
2546 0122 346e          retlw   110
2547 0123 3461          retlw   97
2548 0124 3472          retlw   114
2549 0125 3438          retlw   56
2550 0126 3443          retlw   67
2551 0127 3407          retlw   7
2552 0128 3447          retlw   71
2553 0129 3472          retlw   114
2554 012a 3461          retlw   97
2555 012b 346d          retlw   109
2556 012c 3473          retlw   115
2557 012d 346f          retlw   111
2558 012e 346e          retlw   110
2559                    ; line_number = 338
2560                    ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
2561            
2562                    ; Appending 4 delayed procedures to code bank 0
2563                    ; buffer = '_robobricks_pic16f688'
2564                    ; line_number = 17
2565                    ; procedure byte_get
2566   012f :   byte_get:
2567                    ; arguments_none
2568                    ; line_number = 19
2569                    ;  returns byte
2570            
2571                    ; # This procedure will return the next byte from the UART.
2572                    ; # It continuously calls delay() while it is waiting.
2573            
2574                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2575                    ; line_number = 24
2576                    ;  while !_rcif start
2577   012f :   byte_get__1:
2578                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2579                    ; CASE: true.size=0 && false.size>1
2580                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
2581 012f 1a8c          btfsc   _rcif___byte, _rcif___bit
2582 0130 2935          goto    byte_get__2
2583                    ; line_number = 25
2584                    ; in_byte_get := 1
2585 0131 14ef          bsf     in_byte_get___byte, in_byte_get___bit
2586                    ; line_number = 26
2587                    ;  call delay()
2588 0132 20e7          call    delay
2589                    ; line_number = 27
2590                    ;  in_byte_get := 0
2591 0133 10ef          bcf     in_byte_get___byte, in_byte_get___bit
2592 0134 292f          goto    byte_get__1
2593   0135 :   byte_get__2:
2594                    ; Recombine size1 = 0 || size2 = 0
2595                    ; code.delay=4294967295 back_code.delay=4294967295
2596                    ; <=bit_code_emit@symbol; sym=_rcif (data:00=>00 code:XX=>XX)
2597                    ; line_number = 24
2598                    ;  while !_rcif done
2599                    ; line_number = 28
2600                    ; command_previous := command_last
2601 0135 0834          movf    command_last,w
2602 0136 00b3          movwf   command_previous
2603                    ; line_number = 29
2604                    ;  _rcif := 0
2605 0137 128c          bcf     _rcif___byte, _rcif___bit
2606                    ; line_number = 30
2607                    ;  return _rcreg start
2608                    ; line_number = 30
2609 0138 0814          movf    _rcreg,w
2610 0139 0008          return  
2611                    ; line_number = 30
2612                    ;  return _rcreg done
2613            
2614            
2615                    ; delay after procedure statements=non-uniform
2616            
2617            
2618            
2619            
2620                    ; line_number = 33
2621                    ; procedure byte_put
2622   013a :   byte_put:
2623                    ; Last argument is sitting in W; save into argument variable
2624 013a 00a0          movwf   byte_put__value
2625                    ; delay=4294967295
2626                    ; line_number = 34
2627                    ; argument value byte
2628 00000020 = byte_put__value equ globals___0
2629                    ; line_number = 35
2630                    ;  returns_nothing
2631            
2632                    ; # This procedure will output {value} to the UART.  If the UART is
2633                    ; # already busy transmitting a character, the {delay} procedure is
2634                    ; # repeatably called until {value} can be sent.
2635            
2636                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2637                    ; line_number = 41
2638                    ;  while !_trmt start
2639   013b :   byte_put__1:
2640                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2641                    ; CASE: true.size=0 && false.size>1
2642                    ; bit_code_emit_helper1: body_code.size=2 true_test=false body_code.delay=0 (non-uniform delay)
2643 013b 1896          btfsc   _trmt___byte, _trmt___bit
2644 013c 293f          goto    byte_put__2
2645                    ; line_number = 42
2646                    ; call delay()
2647 013d 20e7          call    delay
2648 013e 293b          goto    byte_put__1
2649   013f :   byte_put__2:
2650                    ; Recombine size1 = 0 || size2 = 0
2651                    ; code.delay=4294967295 back_code.delay=4294967295
2652                    ; <=bit_code_emit@symbol; sym=_trmt (data:00=>00 code:XX=>XX)
2653                    ; line_number = 41
2654                    ;  while !_trmt done
2655                    ; line_number = 43
2656                    ; debug := 0
2657 013f 1285          bcf     debug___byte, debug___bit
2658                    ; line_number = 44
2659                    ;  sent_previous := sent_last
2660 0140 0836          movf    sent_last,w
2661 0141 00b5          movwf   sent_previous
2662                    ; line_number = 45
2663                    ;  sent_last := value
2664 0142 0820          movf    byte_put__value,w
2665 0143 00b6          movwf   sent_last
2666                    ; line_number = 46
2667                    ;  _txreg := value
2668 0144 0820          movf    byte_put__value,w
2669 0145 0095          movwf   _txreg
2670            
2671            
2672                    ; delay after procedure statements=non-uniform
2673                    ; Implied return
2674 0146 3400          retlw   0
2675            
2676            
2677            
2678            
2679                    ; line_number = 49
2680                    ; procedure baud_rate_low
2681   0147 :   baud_rate_low:
2682                    ; Last argument is sitting in W; save into argument variable
2683 0147 00a1          movwf   baud_rate_low__baud_rate_index
2684                    ; delay=4294967295
2685                    ; line_number = 50
2686                    ; argument baud_rate_index byte
2687 00000021 = baud_rate_low__baud_rate_index equ globals___0+1
2688                    ; line_number = 51
2689                    ;  returns byte
2690            
2691                    ; #: This procedure will return the baud rate low byte for {baud_rate_index}.
2692            
2693                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2694                    ; line_number = 55
2695                    ;  switch baud_rate_index start
2696 0148 3001          movlw   baud_rate_low__9>>8
2697 0149 008a          movwf   __pclath
2698 014a 0821          movf    baud_rate_low__baud_rate_index,w
2699 014b 3e4d          addlw   baud_rate_low__9
2700 014c 0082          movwf   __pcl
2701                    ; page_group 8
2702   014d :   baud_rate_low__9:
2703                    ; line_number = 57
2704                    ; return _eusart_2400_low start
2705                    ; line_number = 57
2706 014d 3440          retlw   64
2707                    ; line_number = 57
2708                    ; return _eusart_2400_low done
2709                    ; line_number = 59
2710                    ; return _eusart_4800_low start
2711                    ; line_number = 59
2712 014e 349f          retlw   159
2713                    ; line_number = 59
2714                    ; return _eusart_4800_low done
2715                    ; line_number = 61
2716                    ; return _eusart_9600_low start
2717                    ; line_number = 61
2718 014f 34cf          retlw   207
2719                    ; line_number = 61
2720                    ; return _eusart_9600_low done
2721                    ; line_number = 63
2722                    ; return _eusart_19200_low start
2723                    ; line_number = 63
2724 0150 3467          retlw   103
2725                    ; line_number = 63
2726                    ; return _eusart_19200_low done
2727                    ; line_number = 65
2728                    ; return _eusart_38400_low start
2729                    ; line_number = 65
2730 0151 3433          retlw   51
2731                    ; line_number = 65
2732                    ; return _eusart_38400_low done
2733                    ; line_number = 67
2734                    ; return _eusart_57600_low start
2735                    ; line_number = 67
2736 0152 3421          retlw   33
2737                    ; line_number = 67
2738                    ; return _eusart_57600_low done
2739                    ; line_number = 69
2740                    ; return _eusart_115200_low start
2741                    ; line_number = 69
2742 0153 3410          retlw   16
2743                    ; line_number = 69
2744                    ; return _eusart_115200_low done
2745                    ; line_number = 71
2746                    ; return _eusart_203400_low start
2747                    ; line_number = 71
2748 0154 3408          retlw   8
2749                    ; line_number = 71
2750                    ; return _eusart_203400_low done
2751            
2752            
2753   0155 :   baud_rate_low__10:
2754                    ; switch end:(data:00=>00 code:XX=>XX)
2755                    ; line_number = 55
2756                    ;  switch baud_rate_index done
2757                    ; delay after procedure statements=non-uniform
2758                    ; Exiting procedure with no return(s); fail with infinite loop
2759   0155 :   baud_rate_low__11:
2760 0155 2955          goto    baud_rate_low__11
2761            
2762            
2763            
2764            
2765                    ; line_number = 74
2766                    ; procedure baud_rate_high
2767   0156 :   baud_rate_high:
2768                    ; Last argument is sitting in W; save into argument variable
2769 0156 00a2          movwf   baud_rate_high__baud_rate_index
2770                    ; delay=4294967295
2771                    ; line_number = 75
2772                    ; argument baud_rate_index byte
2773 00000022 = baud_rate_high__baud_rate_index equ globals___0+2
2774                    ; line_number = 76
2775                    ;  returns byte
2776            
2777                    ; # This procedure will return the baud rate high byte for
2778                    ; # {baud_rate_index}.
2779            
2780                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2781                    ; line_number = 81
2782                    ;  switch baud_rate_index start
2783 0157 3001          movlw   baud_rate_high__9>>8
2784 0158 008a          movwf   __pclath
2785 0159 0822          movf    baud_rate_high__baud_rate_index,w
2786 015a 3e5c          addlw   baud_rate_high__9
2787 015b 0082          movwf   __pcl
2788                    ; page_group 8
2789   015c :   baud_rate_high__9:
2790                    ; line_number = 83
2791                    ; return _eusart_2400_high start
2792                    ; line_number = 83
2793 015c 3403          retlw   3
2794                    ; line_number = 83
2795                    ; return _eusart_2400_high done
2796                    ; line_number = 85
2797                    ; return _eusart_4800_high start
2798                    ; line_number = 85
2799 015d 3401          retlw   1
2800                    ; line_number = 85
2801                    ; return _eusart_4800_high done
2802                    ; line_number = 87
2803                    ; return _eusart_9600_high start
2804                    ; line_number = 87
2805 015e 3400          retlw   0
2806                    ; line_number = 87
2807                    ; return _eusart_9600_high done
2808                    ; line_number = 89
2809                    ; return _eusart_19200_high start
2810                    ; line_number = 89
2811 015f 3400          retlw   0
2812                    ; line_number = 89
2813                    ; return _eusart_19200_high done
2814                    ; line_number = 91
2815                    ; return _eusart_38400_high start
2816                    ; line_number = 91
2817 0160 3400          retlw   0
2818                    ; line_number = 91
2819                    ; return _eusart_38400_high done
2820                    ; line_number = 93
2821                    ; return _eusart_57600_high start
2822                    ; line_number = 93
2823 0161 3400          retlw   0
2824                    ; line_number = 93
2825                    ; return _eusart_57600_high done
2826                    ; line_number = 95
2827                    ; return _eusart_115200_high start
2828                    ; line_number = 95
2829 0162 3400          retlw   0
2830                    ; line_number = 95
2831                    ; return _eusart_115200_high done
2832                    ; line_number = 97
2833                    ; return _eusart_203400_high start
2834                    ; line_number = 97
2835 0163 3400          retlw   0
2836                    ; line_number = 97
2837                    ; return _eusart_203400_high done
2838            
2839   0164 :   baud_rate_high__10:
2840                    ; switch end:(data:00=>00 code:XX=>XX)
2841                    ; line_number = 81
2842                    ;  switch baud_rate_index done
2843                    ; delay after procedure statements=non-uniform
2844                    ; Exiting procedure with no return(s); fail with infinite loop
2845   0164 :   baud_rate_high__11:
2846 0164 2964          goto    baud_rate_high__11
2847            
2848            
2849            
2850            
2851                    ; Configuration bits
2852                    ; fill = 0x3000
2853                    ; fcmen = off (0x0)
2854                    ; ieso = off (0x0)
2855                    ; boden = off (0x0)
2856                    ; cpd = off (0x80)
2857                    ; cp = off (0x40)
2858                    ; mclre = off (0x20)
2859                    ; pwrte = off (0x10)
2860                    ; wdte = off (0x0)
2861                    ; fosc = int_no_clk (0x4)
2862                    ; 12532 = 0x30f4
2863   30f4 =           __config 12532
2864                    ; Define start addresses for data regions
2865                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
2866                    ; Region="globals___0" Address=32" Size=80 Bytes=35 Bits=2 Available=44
2867                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
2868                    ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80
2869                    ; Region="globals___3" Address=416" Size=80 Bytes=0 Bits=0 Available=80
2870                    end
