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 = sonar0, bit = sonar0_bit
1527 00000005 = sonar0___byte equ _porta
1528 00000005 = sonar0___bit equ 5
1529 00000005 = sonar0_bit equ 5
1530                    ; line_number = 11
1531                    ;  pin 3 = ra4_in, name = sonar2, bit = sonar2_bit
1532 00000005 = sonar2___byte equ _porta
1533 00000004 = sonar2___bit equ 4
1534 00000004 = sonar2_bit equ 4
1535                    ; line_number = 12
1536                    ;  pin 4 = ra3_nc
1537                    ; line_number = 13
1538                    ;  pin 5 = rx
1539                    ; line_number = 14
1540                    ;  pin 6 = tx
1541                    ; line_number = 15
1542                    ;  pin 7 = rc3_in, name = sonar6, bit = sonar6_bit
1543 00000007 = sonar6___byte equ _portc
1544 00000003 = sonar6___bit equ 3
1545 00000003 = sonar6_bit equ 3
1546                    ; line_number = 16
1547                    ;  pin 8 = rc2_in, name = sonar7, bit = sonar7_bit
1548 00000007 = sonar7___byte equ _portc
1549 00000002 = sonar7___bit equ 2
1550 00000002 = sonar7_bit equ 2
1551                    ; line_number = 17
1552                    ;  pin 9 = rc1_in, name = sonar5, bit = sonar5_bit
1553 00000007 = sonar5___byte equ _portc
1554 00000001 = sonar5___bit equ 1
1555 00000001 = sonar5_bit equ 1
1556                    ; line_number = 18
1557                    ;  pin 10 = rc0_in, name = sonar4, bit = sonar4_bit
1558 00000007 = sonar4___byte equ _portc
1559 00000000 = sonar4___bit equ 0
1560 00000000 = sonar4_bit equ 0
1561                    ; line_number = 19
1562                    ;  pin 11 = ra2_in, name = sonar3, bit = sonar3_bit
1563 00000005 = sonar3___byte equ _porta
1564 00000002 = sonar3___bit equ 2
1565 00000002 = sonar3_bit equ 2
1566                    ; line_number = 20
1567                    ;  pin 12 = ra1_in, name = sonar1, bit = sonar1_bit
1568 00000005 = sonar1___byte equ _porta
1569 00000001 = sonar1___bit equ 1
1570 00000001 = sonar1_bit equ 1
1571                    ; line_number = 21
1572                    ;  pin 13 = ra0_in, name = debug
1573 00000005 = debug___byte equ _porta
1574 00000000 = debug___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 00000005 = tris_sonar0___bit equ 5
1581                    ; line_number = 24
1582                    ; bind tris_sonar1 = _trisa@sonar1_bit
1583 00000085 = tris_sonar1___byte equ _trisa
1584 00000001 = tris_sonar1___bit equ 1
1585                    ; line_number = 25
1586                    ; bind tris_sonar2 = _trisa@sonar2_bit
1587 00000085 = tris_sonar2___byte equ _trisa
1588 00000004 = tris_sonar2___bit equ 4
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 00000003 = tris_sonar6___bit equ 3
1605                    ; line_number = 30
1606                    ; bind tris_sonar7 = _trisa@sonar7_bit
1607 00000085 = tris_sonar7___byte equ _trisa
1608 00000002 = tris_sonar7___bit equ 2
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
1647   0000 :   start:
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 280e          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 main
1714   000e :   main:
1715                    ; Initialize some registers
1716 000e 019f          clrf    _adcon0
1717 000f 1683          bsf     __rp0___byte, __rp0___bit
1718 0010 0191          clrf    _ansel
1719 0011 3007          movlw   7
1720 0012 1283          bcf     __rp0___byte, __rp0___bit
1721 0013 0099          movwf   _cmcon0
1722 0014 303f          movlw   63
1723 0015 1683          bsf     __rp0___byte, __rp0___bit
1724 0016 0085          movwf   _trisa
1725 0017 303f          movlw   63
1726 0018 0087          movwf   _trisc
1727                    ; arguments_none
1728                    ; line_number = 65
1729                    ;  returns_nothing
1730            
1731                    ; line_number = 67
1732                    ;  local command byte
1733 0000003b = main__command equ globals___0+27
1734                    ; line_number = 68
1735                    ;  local temporary byte
1736 0000003c = main__temporary equ globals___0+28
1737                    ; line_number = 69
1738                    ;  local channel byte
1739 0000003d = main__channel equ globals___0+29
1740            
1741                    ; # Switch over to 8MHz:
1742                    ; before procedure statements delay=non-uniform, bit states=(data:00=>01 code:XX=>XX)
1743                    ; line_number = 72
1744                    ;  _osccon := 0x71
1745 0019 3071          movlw   113
1746 001a 008f          movwf   _osccon
1747            
1748                    ; # Warm up the UART:
1749                    ; line_number = 75
1750                    ;  _txsta := 0x24
1751 001b 3024          movlw   36
1752 001c 1283          bcf     __rp0___byte, __rp0___bit
1753 001d 0096          movwf   _txsta
1754                    ; line_number = 76
1755                    ;  _rcsta := 0x90
1756 001e 3090          movlw   144
1757 001f 0097          movwf   _rcsta
1758                    ; line_number = 77
1759                    ;  _baudctl := 0x08
1760 0020 3008          movlw   8
1761 0021 0091          movwf   _baudctl
1762                    ; line_number = 78
1763                    ;  _spbrg := _eusart_2400_low
1764 0022 3040          movlw   64
1765 0023 0093          movwf   _spbrg
1766                    ; line_number = 79
1767                    ;  _spbrgh := _eusart_2400_high
1768 0024 3003          movlw   3
1769 0025 0092          movwf   _spbrgh
1770            
1771                    ; # According to the specification sheet, TMR1L, TRM1H, and
1772                    ; # TMR1IF must be clear before enabling TMR1IE.  Since they
1773                    ; # do not say why, it is unclear what problem that this addresses.
1774                    ; #_tmr1l := 0
1775                    ; #_tmr1h := 0
1776                    ; #_tmr1if := 0
1777                    ; #_tmr1ie := 1
1778                    ; #_peie := 1
1779                    ; #_gie := 1
1780                    ; #_tmr1on := 1
1781            
1782                    ; line_number = 92
1783                    ;  _t1con := 0
1784 0026 3000          movlw   0
1785 0027 0090          movwf   _t1con
1786            
1787                    ; line_number = 94
1788                    ;  glitch := 0
1789 0028 3000          movlw   0
1790 0029 00b7          movwf   glitch
1791                    ; line_number = 95
1792                    ;  id_index := 0
1793 002a 3000          movlw   0
1794 002b 00b8          movwf   id_index
1795            
1796                    ; line_number = 97
1797                    ;  loop_forever start
1798   002c :   main__1:
1799                    ; line_number = 98
1800                    ; command := byte_get()
1801 002c 2128          call    byte_get
1802 002d 00bb          movwf   main__command
1803                    ; line_number = 99
1804                    ;  switch command >> 6 start
1805 002e 3000          movlw   main__28>>8
1806 002f 008a          movwf   __pclath
1807 00000040 = main__29 equ globals___0+32
1808 0030 0e3b          swapf   main__command,w
1809 0031 00c0          movwf   main__29
1810 0032 0cc0          rrf     main__29,f
1811 0033 0c40          rrf     main__29,w
1812 0034 3903          andlw   3
1813 0035 3e37          addlw   main__28
1814 0036 0082          movwf   __pcl
1815                    ; page_group 4
1816   0037 :   main__28:
1817 0037 283b          goto    main__26
1818 0038 28bf          goto    main__30
1819 0039 28bf          goto    main__30
1820 003a 2879          goto    main__27
1821                    ; line_number = 100
1822                    ; case 0
1823   003b :   main__26:
1824                    ; # 00xx xxxx:
1825                    ; line_number = 102
1826                    ;  channel := command & 7
1827 003b 3007          movlw   7
1828 003c 053b          andwf   main__command,w
1829 003d 00bd          movwf   main__channel
1830                    ; line_number = 103
1831                    ;  switch (command >> 3) & 7 start
1832                    ; line_number = 104
1833                    ; case_maximum 7
1834 003e 3000          movlw   main__8>>8
1835 003f 008a          movwf   __pclath
1836 00000040 = main__9 equ globals___0+32
1837 0040 0c3b          rrf     main__command,w
1838 0041 00c0          movwf   main__9
1839 0042 0cc0          rrf     main__9,f
1840 0043 0c40          rrf     main__9,w
1841 0044 3907          andlw   7
1842 0045 3e47          addlw   main__8
1843 0046 0082          movwf   __pcl
1844                    ; page_group 8
1845   0047 :   main__8:
1846 0047 284f          goto    main__4
1847 0048 2855          goto    main__5
1848 0049 285b          goto    main__6
1849 004a 286d          goto    main__7
1850 004b 2878          goto    main__10
1851 004c 2878          goto    main__10
1852 004d 2878          goto    main__10
1853 004e 2878          goto    main__10
1854                    ; line_number = 105
1855                    ; case 0
1856   004f :   main__4:
1857                    ; # 0000 0ccc (Read Distance High):
1858                    ; line_number = 107
1859                    ;  call byte_put(distance_highs[channel])
1860 004f 083d          movf    main__channel,w
1861 0050 3e2b          addlw   distance_highs
1862 0051 0084          movwf   __fsr
1863 0052 0800          movf    __indf,w
1864 0053 2133          call    byte_put
1865 0054 2878          goto    main__10
1866                    ; line_number = 108
1867                    ; case 1
1868   0055 :   main__5:
1869                    ; # 0000 1ccc (Read Distance Low):
1870                    ; line_number = 110
1871                    ;  call byte_put(distance_lows[channel])
1872 0055 083d          movf    main__channel,w
1873 0056 3e23          addlw   distance_lows
1874 0057 0084          movwf   __fsr
1875 0058 0800          movf    __indf,w
1876 0059 2133          call    byte_put
1877 005a 2878          goto    main__10
1878                    ; line_number = 111
1879                    ; case 2
1880   005b :   main__6:
1881                    ; # 0001 0ccc (Read Distance Middle):
1882                    ; line_number = 113
1883                    ;  call byte_put((distance_highs[channel] << 4) | (distance_lows[channel] >> 4))
1884 0000003f = main__2 equ globals___0+31
1885 005b 083d          movf    main__channel,w
1886 005c 3e2b          addlw   distance_highs
1887 005d 0084          movwf   __fsr
1888 005e 0800          movf    __indf,w
1889 005f 00bf          movwf   main__2
1890 0060 0ebf          swapf   main__2,f
1891 0061 30f0          movlw   240
1892 0062 05bf          andwf   main__2,f
1893 00000040 = main__3 equ globals___0+32
1894 0063 083d          movf    main__channel,w
1895 0064 3e23          addlw   distance_lows
1896 0065 0084          movwf   __fsr
1897 0066 0800          movf    __indf,w
1898 0067 00c0          movwf   main__3
1899 0068 0ec0          swapf   main__3,f
1900 0069 390f          andlw   15
1901 006a 043f          iorwf   main__2,w
1902 006b 2133          call    byte_put
1903            
1904 006c 2878          goto    main__10
1905                    ; line_number = 115
1906                    ; case 3
1907   006d :   main__7:
1908                    ; # 0001 1ccc (Read Distance High and Low):
1909                    ; line_number = 117
1910                    ;  call foo()
1911 006d 20c3          call    foo
1912                    ; line_number = 118
1913                    ;  call byte_put(distance_highs[channel])
1914 006e 083d          movf    main__channel,w
1915 006f 3e2b          addlw   distance_highs
1916 0070 0084          movwf   __fsr
1917 0071 0800          movf    __indf,w
1918 0072 2133          call    byte_put
1919                    ; line_number = 119
1920                    ;  call byte_put(distance_lows[channel])
1921 0073 083d          movf    main__channel,w
1922 0074 3e23          addlw   distance_lows
1923 0075 0084          movwf   __fsr
1924 0076 0800          movf    __indf,w
1925 0077 2133          call    byte_put
1926   0078 :   main__10:
1927                    ; switch end:(data:00=>00 code:XX=>XX)
1928                    ; line_number = 103
1929                    ;  switch (command >> 3) & 7 done
1930 0078 28bf          goto    main__30
1931                    ; line_number = 120
1932                    ; case 3
1933   0079 :   main__27:
1934                    ; # 11xx xxxx:
1935                    ; line_number = 122
1936                    ;  switch (command >> 3) & 7 start
1937 0079 3000          movlw   main__23>>8
1938 007a 008a          movwf   __pclath
1939 00000040 = main__24 equ globals___0+32
1940 007b 0c3b          rrf     main__command,w
1941 007c 00c0          movwf   main__24
1942 007d 0cc0          rrf     main__24,f
1943 007e 0c40          rrf     main__24,w
1944 007f 3907          andlw   7
1945 0080 3e82          addlw   main__23
1946 0081 0082          movwf   __pcl
1947                    ; page_group 8
1948   0082 :   main__23:
1949 0082 28bf          goto    main__25
1950 0083 28bf          goto    main__25
1951 0084 28bf          goto    main__25
1952 0085 28bf          goto    main__25
1953 0086 28bf          goto    main__25
1954 0087 28bf          goto    main__25
1955 0088 28bf          goto    main__25
1956 0089 288a          goto    main__22
1957                    ; line_number = 123
1958                    ; case 7
1959   008a :   main__22:
1960                    ; # 1111 1xxx:
1961                    ; line_number = 125
1962                    ;  switch command & 7 start
1963 008a 3000          movlw   main__20>>8
1964 008b 008a          movwf   __pclath
1965 008c 3007          movlw   7
1966 008d 053b          andwf   main__command,w
1967 008e 3e90          addlw   main__20
1968 008f 0082          movwf   __pcl
1969                    ; page_group 8
1970   0090 :   main__20:
1971 0090 2898          goto    main__12
1972 0091 289b          goto    main__13
1973 0092 289e          goto    main__14
1974 0093 28a3          goto    main__15
1975 0094 28a6          goto    main__16
1976 0095 28b3          goto    main__17
1977 0096 28b6          goto    main__18
1978 0097 28bb          goto    main__19
1979                    ; line_number = 126
1980                    ; case 0
1981   0098 :   main__12:
1982                    ; This case body wants this bit set
1983 0098 1683          bsf     __rp0___byte, __rp0___bit
1984                    ; # 1111 1000 (Decrement Clock):
1985                    ; line_number = 128
1986                    ;  _osctune := _osctune - _osccal_lsb
1987 0099 0390          decf    _osctune,f
1988 009a 28bf          goto    main__21
1989                    ; line_number = 129
1990                    ; case 1
1991   009b :   main__13:
1992                    ; This case body wants this bit set
1993 009b 1683          bsf     __rp0___byte, __rp0___bit
1994                    ; # 1111 1001 (Increment Clock):
1995                    ; line_number = 131
1996                    ;  _osctune := _osctune + _osccal_lsb
1997 009c 0a90          incf    _osctune,f
1998 009d 28bf          goto    main__21
1999                    ; line_number = 132
2000                    ; case 2
2001   009e :   main__14:
2002                    ; This case body wants this bit set
2003 009e 1683          bsf     __rp0___byte, __rp0___bit
2004                    ; # 1111 1010 (Read Clock):
2005                    ; line_number = 134
2006                    ;  call byte_put(_osctune)
2007 009f 0810          movf    _osctune,w
2008 00a0 1283          bcf     __rp0___byte, __rp0___bit
2009 00a1 2133          call    byte_put
2010 00a2 28bf          goto    main__21
2011                    ; line_number = 135
2012                    ; case 3
2013   00a3 :   main__15:
2014                    ; # 1111 1011 (xxx):
2015                    ; line_number = 137
2016                    ;  call byte_put(0)
2017 00a3 3000          movlw   0
2018 00a4 2133          call    byte_put
2019 00a5 28bf          goto    main__21
2020                    ; line_number = 138
2021                    ; case 4
2022   00a6 :   main__16:
2023                    ; # 1111 1100 (Read Id)
2024                    ; line_number = 140
2025                    ;  temporary := 0
2026 00a6 3000          movlw   0
2027 00a7 00bc          movwf   main__temporary
2028                    ; line_number = 141
2029                    ;  if id_index < id.size start
2030 00a8 3028          movlw   40
2031 00a9 0238          subwf   id_index,w
2032                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2033                    ; CASE: true.size=0 && false.size>1
2034                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
2035 00aa 1803          btfsc   __c___byte, __c___bit
2036 00ab 28b0          goto    main__11
2037                    ; line_number = 142
2038                    ; temporary := id[id_index]
2039 00ac 0838          movf    id_index,w
2040 00ad 20db          call    id
2041 00ae 00bc          movwf   main__temporary
2042                    ; line_number = 143
2043                    ;  id_index := id_index + 1
2044 00af 0ab8          incf    id_index,f
2045   00b0 :   main__11:
2046                    ; Recombine size1 = 0 || size2 = 0
2047                    ; code.delay=4294967295 back_code.delay=4294967295
2048                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:XX=>XX)
2049                    ; line_number = 141
2050                    ;  if id_index < id.size done
2051                    ; line_number = 144
2052                    ; call byte_put(temporary)
2053 00b0 083c          movf    main__temporary,w
2054 00b1 2133          call    byte_put
2055 00b2 28bf          goto    main__21
2056                    ; line_number = 145
2057                    ; case 5
2058   00b3 :   main__17:
2059                    ; # 1111 1101 (Reset Id Index):
2060                    ; line_number = 147
2061                    ;  id_index := 0
2062 00b3 3000          movlw   0
2063 00b4 00b8          movwf   id_index
2064 00b5 28bf          goto    main__21
2065                    ; line_number = 148
2066                    ; case 6
2067   00b6 :   main__18:
2068                    ; # 1111 1110 (Read Glitch)
2069                    ; line_number = 150
2070                    ;  call byte_put(glitch)
2071 00b6 0837          movf    glitch,w
2072 00b7 2133          call    byte_put
2073                    ; line_number = 151
2074                    ;  glitch := 0
2075 00b8 3000          movlw   0
2076 00b9 00b7          movwf   glitch
2077 00ba 28bf          goto    main__21
2078                    ; line_number = 152
2079                    ; case 7
2080   00bb :   main__19:
2081                    ; # 1111 1111 (Increment Glitch):
2082                    ; line_number = 154
2083                    ;  if glitch < 255 start
2084 00bb 30ff          movlw   255
2085 00bc 0237          subwf   glitch,w
2086                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2087                    ; CASE: true_code.size=0 && false_code.size=1
2088 00bd 1c03          btfss   __c___byte, __c___bit
2089                    ; line_number = 155
2090                    ; glitch := glitch + 1
2091 00be 0ab7          incf    glitch,f
2092            
2093                    ; Recombine size1 = 0 || size2 = 0
2094                    ; code.delay=4294967295 back_code.delay=4294967295
2095                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:XX=>XX)
2096                    ; line_number = 154
2097                    ;  if glitch < 255 done
2098   00bf :   main__21:
2099                    ; switch end:(data:00=>0? code:XX=>XX)
2100                    ; line_number = 125
2101                    ;  switch command & 7 done
2102   00bf :   main__25:
2103                    ; switch end:(data:00=>0? code:XX=>XX)
2104                    ; line_number = 122
2105                    ;  switch (command >> 3) & 7 done
2106   00bf :   main__30:
2107                    ; switch end:(data:00=>0? code:XX=>XX)
2108                    ; line_number = 99
2109                    ;  switch command >> 6 done
2110                    ; line_number = 97
2111                    ;  loop_forever wrap-up
2112                    ; Need to adjust code banks to match front of loop
2113 00bf 1283          bcf     __rp0___byte, __rp0___bit
2114 00c0 282c          goto    main__1
2115                    ; line_number = 97
2116                    ;  loop_forever done
2117                    ; delay after procedure statements=non-uniform
2118            
2119            
2120            
2121            
2122                    ; line_number = 157
2123                    ; global mode byte
2124 0000003e = mode equ globals___0+30
2125            
2126                    ; line_number = 159
2127                    ; procedure delay
2128   00c1 :   delay:
2129                    ; arguments_none
2130                    ; line_number = 161
2131                    ;  returns_nothing
2132            
2133                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2134                    ; line_number = 163
2135                    ;  watch_dog_reset done
2136 00c1 0064          clrwdt  
2137            
2138            
2139                    ; delay after procedure statements=non-uniform
2140                    ; Implied return
2141 00c2 3400          retlw   0
2142            
2143            
2144            
2145            
2146                    ; line_number = 166
2147                    ; procedure foo
2148   00c3 :   foo:
2149                    ; arguments_none
2150                    ; line_number = 168
2151                    ;  returns_nothing
2152            
2153                    ; # This procedure is repeatably called while waiting for a byte to be
2154                    ; # received.
2155            
2156                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2157                    ; line_number = 173
2158                    ;  tris_sonar0 := 0
2159 00c3 1683          bsf     __rp0___byte, __rp0___bit
2160 00c4 1285          bcf     tris_sonar0___byte, tris_sonar0___bit
2161                    ; line_number = 174
2162                    ;  sonar0 := 1
2163 00c5 1283          bcf     __rp0___byte, __rp0___bit
2164 00c6 1685          bsf     sonar0___byte, sonar0___bit
2165            
2166                    ; line_number = 176
2167                    ;  delay 5 * microsecond start
2168                    ; Delay expression evaluates to 10
2169                    ; line_number = 177
2170                    ; do_nothing
2171            
2172                    ; Delay 10 cycles
2173                    ; Delay loop takes 2 * 4 = 8 cycles
2174 00c7 3002          movlw   2
2175   00c8 :   foo__1:
2176 00c8 3eff          addlw   255
2177 00c9 1d03          btfss   __z___byte, __z___bit
2178 00ca 28c8          goto    foo__1
2179 00cb 28cc          goto    foo__2
2180   00cc :   foo__2:
2181                    ; line_number = 176
2182                    ;  delay 5 * microsecond done
2183                    ; line_number = 179
2184                    ; sonar0 := 0
2185 00cc 1285          bcf     sonar0___byte, sonar0___bit
2186                    ; line_number = 180
2187                    ;  tris_sonar0 := 1
2188 00cd 1683          bsf     __rp0___byte, __rp0___bit
2189 00ce 1685          bsf     tris_sonar0___byte, tris_sonar0___bit
2190            
2191                    ; line_number = 182
2192                    ;  while !sonar0 start
2193   00cf :   foo__3:
2194                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2195                    ; CASE: true_code.size=0 && false_code.size=1
2196 00cf 1283          bcf     __rp0___byte, __rp0___bit
2197 00d0 1e85          btfss   sonar0___byte, sonar0___bit
2198                    ; true.size=0 false_size=1 false=GOTO
2199 00d1 28cf          goto    foo__3
2200                    ; Recombine size1 = 0 || size2 = 0
2201                    ; code.delay=4294967295 back_code.delay=4294967295
2202                    ; <=bit_code_emit@symbol; sym=sonar0 (data:XX=>XX code:XX=>XX)
2203                    ; line_number = 182
2204                    ;  while !sonar0 done
2205                    ; line_number = 185
2206                    ; _tmr1on := 1
2207 00d2 1410          bsf     _tmr1on___byte, _tmr1on___bit
2208            
2209                    ; line_number = 187
2210                    ;  while sonar0 start
2211   00d3 :   foo__4:
2212                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2213                    ; CASE: True.size=1 False.size=0
2214 00d3 1a85          btfsc   sonar0___byte, sonar0___bit
2215                    ; true=GOTO
2216 00d4 28d3          goto    foo__4
2217                    ; code.delay=4294967295 back_code.delay=4294967295
2218                    ; <=bit_code_emit@symbol; sym=sonar0 (data:XX=>XX code:XX=>XX)
2219                    ; line_number = 187
2220                    ;  while sonar0 done
2221                    ; line_number = 190
2222                    ; _tmr1on := 0
2223 00d5 1010          bcf     _tmr1on___byte, _tmr1on___bit
2224                    ; line_number = 191
2225                    ;  distance_lows[0] := _tmr1l
2226 00d6 080e          movf    _tmr1l,w
2227 00d7 00a3          movwf   distance_lows
2228                    ; line_number = 192
2229                    ;  distance_highs[0] := _tmr1h
2230 00d8 080f          movf    _tmr1h,w
2231 00d9 00ab          movwf   distance_highs
2232            
2233            
2234                    ; delay after procedure statements=non-uniform
2235                    ; Implied return
2236 00da 3400          retlw   0
2237            
2238            
2239            
2240            
2241                    ; #    local channel byte
2242                    ; #    local result bit
2243                    ; #
2244                    ; #
2245                    ; #    channel := 0
2246                    ; #
2247                    ; #    # Initiate a pulse:
2248                    ; #    switch channel
2249                    ; #      case 0
2250                    ; #	tris_sonar0 := 0
2251                    ; #	sonar0 := 1
2252                    ; #      case 1
2253                    ; #	tris_sonar1 := 0
2254                    ; #	sonar1 := 1
2255                    ; #      case 2
2256                    ; #	tris_sonar2 := 0
2257                    ; #	sonar2 := 1
2258                    ; #      case 3
2259                    ; #	tris_sonar3 := 0
2260                    ; #	sonar3 := 1
2261                    ; #      case 4
2262                    ; #	tris_sonar4 := 0
2263                    ; #	sonar4 := 1
2264                    ; #      case 5
2265                    ; #	tris_sonar5 := 0
2266                    ; #	sonar5 := 1
2267                    ; #      case 6
2268                    ; #	tris_sonar6 := 0
2269                    ; #	sonar6 := 1
2270                    ; #      case 7
2271                    ; #	tris_sonar7 := 0
2272                    ; #	sonar7 := 1
2273                    ; #
2274                    ; #    # Let the pulse go for 5uS:
2275                    ; #    delay 5 * microsecond
2276                    ; #
2277                    ; #    # Turn the pulse off:
2278                    ; #    switch channel
2279                    ; #      case 0
2280                    ; #	sonar0 := 0
2281                    ; #	tris_sonar0 := 1
2282                    ; #      case 1
2283                    ; #	sonar1 := 0
2284                    ; #	tris_sonar1 := 1
2285                    ; #      case 2
2286                    ; #	sonar2 := 0
2287                    ; #	tris_sonar2 := 1
2288                    ; #      case 3
2289                    ; #	sonar3 := 0
2290                    ; #	tris_sonar3 := 1
2291                    ; #      case 4
2292                    ; #	sonar4 := 0
2293                    ; #	tris_sonar4 := 1
2294                    ; #      case 5
2295                    ; #	sonar5 := 0
2296                    ; #	tris_sonar5 := 1
2297                    ; #      case 6
2298                    ; #	sonar6 := 0
2299                    ; #	tris_sonar6 := 1
2300                    ; #      case 7
2301                    ; #	sonar7 := 0
2302                    ; #	tris_sonar7 := 1
2303                    ; #
2304                    ; #    # W
2305                    ; #
2306                    ; #    if _tmr1on
2307                    ; #	# We are waiting for a pulse to finish:
2308                    ; #	result := 0
2309                    ; #	switch channel
2310                    ; #	  case 0
2311                    ; #	    if sonar0
2312                    ; #		result := 1
2313                    ; #	  case 1
2314                    ; #	    if sonar1
2315                    ; #		result := 1
2316                    ; #	  case 2
2317                    ; #	    if sonar2
2318                    ; #		result := 1
2319                    ; #	  case 3
2320                    ; #	    if sonar3
2321                    ; #		result := 1
2322                    ; #	  case 4
2323                    ; #	    if sonar4
2324                    ; #		result := 1
2325                    ; #	  case 5
2326                    ; #	    if sonar5
2327                    ; #		result := 1
2328                    ; #	  case 6
2329                    ; #	    if sonar6
2330                    ; #		result := 1
2331                    ; #	  case 7
2332                    ; #	    if sonar7
2333                    ; #		result := 1
2334                    ; #	if !result
2335                    ; #	    # Sonar pulse is over; read the resul:
2336                    ; #	    _tmr1on := 0
2337                    ; #	    distance_lows[channel] := _tmr1l
2338                    ; #	    distance_highs[channel] := _tmr1h
2339                    ; #    else
2340                    ; #	# We are ready to trigger a pulse:
2341                    ; #
2342                    ; #	if channel
2343                    ; #    
2344            
2345            
2346                    ; line_number = 300
2347                    ; constant zero8 = "\0,0,0,0,0,0,0,0\"
2348                    ; zero8 = '\0,0,0,0,0,0,0,0\'
2349                    ; line_number = 301
2350                    ; constant module_name = "\7\Sonar8C"
2351                    ; module_name = '\7\Sonar8C'
2352                    ; line_number = 302
2353                    ; constant vendor_name = "\7\Gramson"
2354                    ; vendor_name = '\7\Gramson'
2355            
2356                    ; line_number = 304
2357                    ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
2358                    ; 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'
2359   00db :   id:
2360                    ; Temporarily save index into FSR
2361 00db 0084          movwf   __fsr
2362                    ; Initialize PCLATH to point to this code page
2363 00dc 3001          movlw   id___base>>8
2364 00dd 008a          movwf   __pclath
2365                    ; Restore index from FSR
2366 00de 0804          movf    __fsr,w
2367 00df 3e00          addlw   id___base
2368                    ; Index to the correct return value
2369 00e0 0082          movwf   __pcl
2370                    ; page_group 40
2371                    ; Add 31 NOP's until start of new page 
2372 00e1 0000          nop     
2373 00e2 0000          nop     
2374 00e3 0000          nop     
2375 00e4 0000          nop     
2376 00e5 0000          nop     
2377 00e6 0000          nop     
2378 00e7 0000          nop     
2379 00e8 0000          nop     
2380 00e9 0000          nop     
2381 00ea 0000          nop     
2382 00eb 0000          nop     
2383 00ec 0000          nop     
2384 00ed 0000          nop     
2385 00ee 0000          nop     
2386 00ef 0000          nop     
2387 00f0 0000          nop     
2388 00f1 0000          nop     
2389 00f2 0000          nop     
2390 00f3 0000          nop     
2391 00f4 0000          nop     
2392 00f5 0000          nop     
2393 00f6 0000          nop     
2394 00f7 0000          nop     
2395 00f8 0000          nop     
2396 00f9 0000          nop     
2397 00fa 0000          nop     
2398 00fb 0000          nop     
2399 00fc 0000          nop     
2400 00fd 0000          nop     
2401 00fe 0000          nop     
2402 00ff 0000          nop     
2403   0100 :   id___base:
2404 0100 3401          retlw   1
2405 0101 3400          retlw   0
2406 0102 340f          retlw   15
2407 0103 3407          retlw   7
2408 0104 3401          retlw   1
2409 0105 3400          retlw   0
2410 0106 3400          retlw   0
2411 0107 3400          retlw   0
2412 0108 3400          retlw   0
2413 0109 3400          retlw   0
2414 010a 3400          retlw   0
2415 010b 3400          retlw   0
2416 010c 3400          retlw   0
2417 010d 3400          retlw   0
2418 010e 3400          retlw   0
2419 010f 3400          retlw   0
2420 0110 3400          retlw   0
2421 0111 3400          retlw   0
2422 0112 3400          retlw   0
2423 0113 3400          retlw   0
2424 0114 3400          retlw   0
2425 0115 3400          retlw   0
2426 0116 3400          retlw   0
2427 0117 3400          retlw   0
2428 0118 3407          retlw   7
2429 0119 3453          retlw   83
2430 011a 346f          retlw   111
2431 011b 346e          retlw   110
2432 011c 3461          retlw   97
2433 011d 3472          retlw   114
2434 011e 3438          retlw   56
2435 011f 3443          retlw   67
2436 0120 3407          retlw   7
2437 0121 3447          retlw   71
2438 0122 3472          retlw   114
2439 0123 3461          retlw   97
2440 0124 346d          retlw   109
2441 0125 3473          retlw   115
2442 0126 346f          retlw   111
2443 0127 346e          retlw   110
2444                    ; line_number = 304
2445                    ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
2446            
2447                    ; Appending 4 delayed procedures to code bank 0
2448                    ; buffer = '_robobricks_pic16f688'
2449                    ; line_number = 17
2450                    ; procedure byte_get
2451   0128 :   byte_get:
2452                    ; arguments_none
2453                    ; line_number = 19
2454                    ;  returns byte
2455            
2456                    ; # This procedure will return the next byte from the UART.
2457                    ; # It continuously calls delay() while it is waiting.
2458            
2459                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2460                    ; line_number = 24
2461                    ;  while !_rcif start
2462   0128 :   byte_get__1:
2463                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2464                    ; CASE: true.size=0 && false.size>1
2465                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
2466 0128 1a8c          btfsc   _rcif___byte, _rcif___bit
2467 0129 292e          goto    byte_get__2
2468                    ; line_number = 25
2469                    ; in_byte_get := 1
2470 012a 14ef          bsf     in_byte_get___byte, in_byte_get___bit
2471                    ; line_number = 26
2472                    ;  call delay()
2473 012b 20c1          call    delay
2474                    ; line_number = 27
2475                    ;  in_byte_get := 0
2476 012c 10ef          bcf     in_byte_get___byte, in_byte_get___bit
2477 012d 2928          goto    byte_get__1
2478   012e :   byte_get__2:
2479                    ; Recombine size1 = 0 || size2 = 0
2480                    ; code.delay=4294967295 back_code.delay=4294967295
2481                    ; <=bit_code_emit@symbol; sym=_rcif (data:00=>00 code:XX=>XX)
2482                    ; line_number = 24
2483                    ;  while !_rcif done
2484                    ; line_number = 28
2485                    ; command_previous := command_last
2486 012e 0834          movf    command_last,w
2487 012f 00b3          movwf   command_previous
2488                    ; line_number = 29
2489                    ;  _rcif := 0
2490 0130 128c          bcf     _rcif___byte, _rcif___bit
2491                    ; line_number = 30
2492                    ;  return _rcreg start
2493                    ; line_number = 30
2494 0131 0814          movf    _rcreg,w
2495 0132 0008          return  
2496                    ; line_number = 30
2497                    ;  return _rcreg done
2498            
2499            
2500                    ; delay after procedure statements=non-uniform
2501            
2502            
2503            
2504            
2505                    ; line_number = 33
2506                    ; procedure byte_put
2507   0133 :   byte_put:
2508                    ; Last argument is sitting in W; save into argument variable
2509 0133 00a0          movwf   byte_put__value
2510                    ; delay=4294967295
2511                    ; line_number = 34
2512                    ; argument value byte
2513 00000020 = byte_put__value equ globals___0
2514                    ; line_number = 35
2515                    ;  returns_nothing
2516            
2517                    ; # This procedure will output {value} to the UART.  If the UART is
2518                    ; # already busy transmitting a character, the {delay} procedure is
2519                    ; # repeatably called until {value} can be sent.
2520            
2521                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2522                    ; line_number = 41
2523                    ;  while !_trmt start
2524   0134 :   byte_put__1:
2525                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2526                    ; CASE: true.size=0 && false.size>1
2527                    ; bit_code_emit_helper1: body_code.size=2 true_test=false body_code.delay=0 (non-uniform delay)
2528 0134 1896          btfsc   _trmt___byte, _trmt___bit
2529 0135 2938          goto    byte_put__2
2530                    ; line_number = 42
2531                    ; call delay()
2532 0136 20c1          call    delay
2533 0137 2934          goto    byte_put__1
2534   0138 :   byte_put__2:
2535                    ; Recombine size1 = 0 || size2 = 0
2536                    ; code.delay=4294967295 back_code.delay=4294967295
2537                    ; <=bit_code_emit@symbol; sym=_trmt (data:00=>00 code:XX=>XX)
2538                    ; line_number = 41
2539                    ;  while !_trmt done
2540                    ; line_number = 43
2541                    ; debug := 0
2542 0138 1005          bcf     debug___byte, debug___bit
2543                    ; line_number = 44
2544                    ;  sent_previous := sent_last
2545 0139 0836          movf    sent_last,w
2546 013a 00b5          movwf   sent_previous
2547                    ; line_number = 45
2548                    ;  sent_last := value
2549 013b 0820          movf    byte_put__value,w
2550 013c 00b6          movwf   sent_last
2551                    ; line_number = 46
2552                    ;  _txreg := value
2553 013d 0820          movf    byte_put__value,w
2554 013e 0095          movwf   _txreg
2555            
2556            
2557                    ; delay after procedure statements=non-uniform
2558                    ; Implied return
2559 013f 3400          retlw   0
2560            
2561            
2562            
2563            
2564                    ; line_number = 49
2565                    ; procedure baud_rate_low
2566   0140 :   baud_rate_low:
2567                    ; Last argument is sitting in W; save into argument variable
2568 0140 00a1          movwf   baud_rate_low__baud_rate_index
2569                    ; delay=4294967295
2570                    ; line_number = 50
2571                    ; argument baud_rate_index byte
2572 00000021 = baud_rate_low__baud_rate_index equ globals___0+1
2573                    ; line_number = 51
2574                    ;  returns byte
2575            
2576                    ; #: This procedure will return the baud rate low byte for {baud_rate_index}.
2577            
2578                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2579                    ; line_number = 55
2580                    ;  switch baud_rate_index start
2581 0141 3001          movlw   baud_rate_low__9>>8
2582 0142 008a          movwf   __pclath
2583 0143 0821          movf    baud_rate_low__baud_rate_index,w
2584 0144 3e46          addlw   baud_rate_low__9
2585 0145 0082          movwf   __pcl
2586                    ; page_group 8
2587   0146 :   baud_rate_low__9:
2588                    ; line_number = 57
2589                    ; return _eusart_2400_low start
2590                    ; line_number = 57
2591 0146 3440          retlw   64
2592                    ; line_number = 57
2593                    ; return _eusart_2400_low done
2594                    ; line_number = 59
2595                    ; return _eusart_4800_low start
2596                    ; line_number = 59
2597 0147 349f          retlw   159
2598                    ; line_number = 59
2599                    ; return _eusart_4800_low done
2600                    ; line_number = 61
2601                    ; return _eusart_9600_low start
2602                    ; line_number = 61
2603 0148 34cf          retlw   207
2604                    ; line_number = 61
2605                    ; return _eusart_9600_low done
2606                    ; line_number = 63
2607                    ; return _eusart_19200_low start
2608                    ; line_number = 63
2609 0149 3467          retlw   103
2610                    ; line_number = 63
2611                    ; return _eusart_19200_low done
2612                    ; line_number = 65
2613                    ; return _eusart_38400_low start
2614                    ; line_number = 65
2615 014a 3433          retlw   51
2616                    ; line_number = 65
2617                    ; return _eusart_38400_low done
2618                    ; line_number = 67
2619                    ; return _eusart_57600_low start
2620                    ; line_number = 67
2621 014b 3421          retlw   33
2622                    ; line_number = 67
2623                    ; return _eusart_57600_low done
2624                    ; line_number = 69
2625                    ; return _eusart_115200_low start
2626                    ; line_number = 69
2627 014c 3410          retlw   16
2628                    ; line_number = 69
2629                    ; return _eusart_115200_low done
2630                    ; line_number = 71
2631                    ; return _eusart_203400_low start
2632                    ; line_number = 71
2633 014d 3408          retlw   8
2634                    ; line_number = 71
2635                    ; return _eusart_203400_low done
2636            
2637            
2638   014e :   baud_rate_low__10:
2639                    ; switch end:(data:00=>00 code:XX=>XX)
2640                    ; line_number = 55
2641                    ;  switch baud_rate_index done
2642                    ; delay after procedure statements=non-uniform
2643                    ; Exiting procedure with no return(s); fail with infinite loop
2644   014e :   baud_rate_low__11:
2645 014e 294e          goto    baud_rate_low__11
2646            
2647            
2648            
2649            
2650                    ; line_number = 74
2651                    ; procedure baud_rate_high
2652   014f :   baud_rate_high:
2653                    ; Last argument is sitting in W; save into argument variable
2654 014f 00a2          movwf   baud_rate_high__baud_rate_index
2655                    ; delay=4294967295
2656                    ; line_number = 75
2657                    ; argument baud_rate_index byte
2658 00000022 = baud_rate_high__baud_rate_index equ globals___0+2
2659                    ; line_number = 76
2660                    ;  returns byte
2661            
2662                    ; # This procedure will return the baud rate high byte for
2663                    ; # {baud_rate_index}.
2664            
2665                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:XX=>XX)
2666                    ; line_number = 81
2667                    ;  switch baud_rate_index start
2668 0150 3001          movlw   baud_rate_high__9>>8
2669 0151 008a          movwf   __pclath
2670 0152 0822          movf    baud_rate_high__baud_rate_index,w
2671 0153 3e55          addlw   baud_rate_high__9
2672 0154 0082          movwf   __pcl
2673                    ; page_group 8
2674   0155 :   baud_rate_high__9:
2675                    ; line_number = 83
2676                    ; return _eusart_2400_high start
2677                    ; line_number = 83
2678 0155 3403          retlw   3
2679                    ; line_number = 83
2680                    ; return _eusart_2400_high done
2681                    ; line_number = 85
2682                    ; return _eusart_4800_high start
2683                    ; line_number = 85
2684 0156 3401          retlw   1
2685                    ; line_number = 85
2686                    ; return _eusart_4800_high done
2687                    ; line_number = 87
2688                    ; return _eusart_9600_high start
2689                    ; line_number = 87
2690 0157 3400          retlw   0
2691                    ; line_number = 87
2692                    ; return _eusart_9600_high done
2693                    ; line_number = 89
2694                    ; return _eusart_19200_high start
2695                    ; line_number = 89
2696 0158 3400          retlw   0
2697                    ; line_number = 89
2698                    ; return _eusart_19200_high done
2699                    ; line_number = 91
2700                    ; return _eusart_38400_high start
2701                    ; line_number = 91
2702 0159 3400          retlw   0
2703                    ; line_number = 91
2704                    ; return _eusart_38400_high done
2705                    ; line_number = 93
2706                    ; return _eusart_57600_high start
2707                    ; line_number = 93
2708 015a 3400          retlw   0
2709                    ; line_number = 93
2710                    ; return _eusart_57600_high done
2711                    ; line_number = 95
2712                    ; return _eusart_115200_high start
2713                    ; line_number = 95
2714 015b 3400          retlw   0
2715                    ; line_number = 95
2716                    ; return _eusart_115200_high done
2717                    ; line_number = 97
2718                    ; return _eusart_203400_high start
2719                    ; line_number = 97
2720 015c 3400          retlw   0
2721                    ; line_number = 97
2722                    ; return _eusart_203400_high done
2723            
2724   015d :   baud_rate_high__10:
2725                    ; switch end:(data:00=>00 code:XX=>XX)
2726                    ; line_number = 81
2727                    ;  switch baud_rate_index done
2728                    ; delay after procedure statements=non-uniform
2729                    ; Exiting procedure with no return(s); fail with infinite loop
2730   015d :   baud_rate_high__11:
2731 015d 295d          goto    baud_rate_high__11
2732            
2733            
2734            
2735            
2736                    ; Configuration bits
2737                    ; fill = 0x3000
2738                    ; fcmen = off (0x0)
2739                    ; ieso = off (0x0)
2740                    ; boden = off (0x0)
2741                    ; cpd = off (0x80)
2742                    ; cp = off (0x40)
2743                    ; mclre = off (0x20)
2744                    ; pwrte = off (0x10)
2745                    ; wdte = off (0x0)
2746                    ; fosc = int_no_clk (0x4)
2747                    ; 12532 = 0x30f4
2748   30f4 =           __config 12532
2749                    ; Define start addresses for data regions
2750                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
2751                    ; Region="globals___0" Address=32" Size=80 Bytes=33 Bits=2 Available=46
2752                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
2753                    ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80
2754                    ; Region="globals___3" Address=416" Size=80 Bytes=0 Bits=0 Available=80
2755                    end
