1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 2047
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000070 = shared___globals equ 112
7    00000020 = globals___0 equ 32
8    000000a0 = globals___1 equ 160
9    00000120 = globals___2 equ 288
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) 2005-2008 by Wayne C. Gramlich
31                      ; # All rights reserved.
32              
33                      ; # This module uses a PIC16F688:
34                      ; buffer = 'irproximity4'
35                      ; line_number = 7
36                      ; library _pic16f688 entered
37              
38                      ; # Copyright (c) 2004-2006 by Wayne C. Gramlich
39                      ; # All rights reserved.
40              
41                      ; buffer = '_pic16f688'
42                      ; line_number = 6
43                      ; processor pic16f688
44                      ; line_number = 7
45                      ; configure_address 0x2007
46                      ; line_number = 8
47                      ;  configure_fill 0x3000
48                      ; line_number = 9
49                      ;  configure_option fcmen: on = 0x800
50                      ; line_number = 10
51                      ;  configure_option fcmen: off = 0x000
52                      ; line_number = 11
53                      ;  configure_option ieso: on = 0x400
54                      ; line_number = 12
55                      ;  configure_option ieso: off = 0x000
56                      ; line_number = 13
57                      ;  configure_option boden: on = 0x300
58                      ; line_number = 14
59                      ;  configure_option boden: partial = 0x200
60                      ; line_number = 15
61                      ;  configure_option boden: sboden = 0x100
62                      ; line_number = 16
63                      ;  configure_option boden: off = 0x000
64                      ; line_number = 17
65                      ;  configure_option cpd: on = 0x00
66                      ; line_number = 18
67                      ;  configure_option cpd: off = 0x80
68                      ; line_number = 19
69                      ;  configure_option cp: on = 0x00
70                      ; line_number = 20
71                      ;  configure_option cp: off = 0x40
72                      ; line_number = 21
73                      ;  configure_option mclre: on = 0x20
74                      ; line_number = 22
75                      ;  configure_option mclre: off = 0x00
76                      ; line_number = 23
77                      ;  configure_option pwrte: on = 0x00
78                      ; line_number = 24
79                      ;  configure_option pwrte: off = 0x10
80                      ; line_number = 25
81                      ;  configure_option wdte: on = 8
82                      ; line_number = 26
83                      ;  configure_option wdte: off = 0
84                      ; line_number = 27
85                      ;  configure_option fosc: rc_clk = 7
86                      ; line_number = 28
87                      ;  configure_option fosc: rc_no_clk = 6
88                      ; line_number = 29
89                      ;  configure_option fosc: int_clk = 5
90                      ; line_number = 30
91                      ;  configure_option fosc: int_no_clk = 4
92                      ; line_number = 31
93                      ;  configure_option fosc: ec = 3
94                      ; line_number = 32
95                      ;  configure_option fosc: hs = 2
96                      ; line_number = 33
97                      ;  configure_option fosc: xt = 1
98                      ; line_number = 34
99                      ;  configure_option fosc: lp = 0
100             
101                     ; line_number = 36
102                     ;  code_bank 0x0 : 0x7ff
103                     ; line_number = 37
104                     ;  code_bank 0x800 : 0xfff
105                     ; line_number = 38
106                     ;  data_bank 0x0 : 0x7f
107                     ; line_number = 39
108                     ;  data_bank 0x80 : 0xff
109                     ; line_number = 40
110                     ;  data_bank 0x100 : 0x17f
111                     ; line_number = 41
112                     ;  data_bank 0x180 : 0x1ff
113             
114                     ; line_number = 43
115                     ;  global_region 0x20 : 0x6f
116                     ; line_number = 44
117                     ;  icd2_global_region 0x20 : 0x6f
118             
119                     ; line_number = 46
120                     ;  global_region 0xa0 : 0xef
121                     ; line_number = 47
122                     ;  icd2_global_region 0xa0 : 0xef
123             
124                     ; line_number = 49
125                     ;  global_region 0x120 : 0x16f
126                     ; line_number = 50
127                     ;  icd2_global_region 0x120 : 0x164
128             
129                     ; line_number = 52
130                     ;  shared_region 0x70 : 0x7f
131                     ; line_number = 53
132                     ;  icd2_shared_region 0x71 : 0x7f
133             
134                     ; line_number = 55
135                     ;  interrupts_possible
136                     ; line_number = 56
137                     ;  packages pdip=14, soic=14, tssop=14
138                     ; line_number = 57
139                     ;  pin vdd, power_supply
140                     ; line_number = 58
141                     ; pin_bindings pdip=1, soic=1, tssop=1
142                     ; line_number = 59
143                     ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin
144                     ; line_number = 60
145                     ; pin_bindings pdip=2, soic=2, tssop=2
146                     ; line_number = 61
147                     ;  bind_to _porta@5
148                     ; line_number = 62
149                     ;  or_if ra5_in _trisa 32
150                     ; line_number = 63
151                     ;  or_if ra5_nc _trisa 32
152                     ; line_number = 64
153                     ;  or_if ra5_out _trisa 0
154                     ; line_number = 65
155                     ;  or_if osc1 _trisa 32
156                     ; line_number = 66
157                     ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout
158                     ; line_number = 67
159                     ; pin_bindings pdip=3, soic=3, tssop=3
160                     ; line_number = 68
161                     ;  bind_to _porta@4
162                     ; line_number = 69
163                     ;  or_if ra4_in _trisa 16
164                     ; line_number = 70
165                     ;  or_if ra4_nc _trisa 16
166                     ; line_number = 71
167                     ;  or_if ra4_out _trisa 0
168                     ; line_number = 72
169                     ;  or_if an3 _trisa 16
170                     ; line_number = 73
171                     ;  or_if osc2 _trisa 16
172                     ; line_number = 74
173                     ;  or_if ra4_in _ansel 0
174                     ; line_number = 75
175                     ;  or_if ra4_out _ansel 0
176                     ; line_number = 76
177                     ;  or_if an3 _ansel 8
178                     ; line_number = 77
179                     ;  or_if ra4_in _adcon0 0
180                     ; line_number = 78
181                     ;  or_if ra4_out _adcon0 0
182                     ; line_number = 79
183                     ;  or_if an3 _adcon0 1
184                     ; line_number = 80
185                     ; pin ra3_in, ra3_nc, mclr, vpp
186                     ; line_number = 81
187                     ; pin_bindings pdip=4, soic=4, tssop=4
188                     ; line_number = 82
189                     ;  bind_to _porta@3
190                     ; line_number = 83
191                     ;  or_if ra3_in _trisa 8
192                     ; line_number = 84
193                     ;  or_if ra3_nc _trisa 8
194                     ; line_number = 85
195                     ; pin rc5_in, rc5_nc, rc5_out, rx, dt
196                     ; line_number = 86
197                     ; pin_bindings pdip=5, soic=5, tssop=5
198                     ; line_number = 87
199                     ;  bind_to _portc@5
200                     ; line_number = 88
201                     ;  or_if rc5_in _trisc 32
202                     ; line_number = 89
203                     ;  or_if rc5_nc _trisc 32
204                     ; line_number = 90
205                     ;  or_if rc5_out _trisc 0
206                     ; line_number = 91
207                     ;  or_if rx _trisc 32
208                     ; line_number = 92
209                     ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck
210                     ; line_number = 93
211                     ; pin_bindings pdip=6, soic=6, tssop=6
212                     ; line_number = 94
213                     ;  bind_to _portc@4
214                     ; line_number = 95
215                     ;  or_if rc4_in _trisc 16
216                     ; line_number = 96
217                     ;  or_if rc4_nc _trisc 16
218                     ; line_number = 97
219                     ;  or_if rc4_out _trisc 0
220                     ; # The UART documentation says TX must be marked as in input:
221                     ; line_number = 99
222                     ;  or_if tx _trisc 16
223                     ; line_number = 100
224                     ; pin rc3_in, rc3_nc, rc3_out, an7
225                     ; line_number = 101
226                     ; pin_bindings pdip=7, soic=7, tssop=7
227                     ; line_number = 102
228                     ;  bind_to _portc@3
229                     ; line_number = 103
230                     ;  or_if rc3_in _trisc 8
231                     ; line_number = 104
232                     ;  or_if rc3_nc _trisc 8
233                     ; line_number = 105
234                     ;  or_if rc3_out _trisc 0
235                     ; line_number = 106
236                     ;  or_if an7 _trisc 8
237                     ; line_number = 107
238                     ;  or_if rc3_in _ansel 0
239                     ; line_number = 108
240                     ;  or_if rc3_out _ansel 0
241                     ; line_number = 109
242                     ;  or_if an7 _ansel 128
243                     ; line_number = 110
244                     ;  or_if rc3_in _adcon0 0
245                     ; line_number = 111
246                     ;  or_if rc3_out _adcon0 0
247                     ; line_number = 112
248                     ;  or_if an7 _adcon0 1
249                     ; line_number = 113
250                     ; pin rc2_in, rc2_nc, rc2_out, an6
251                     ; line_number = 114
252                     ; pin_bindings pdip=8, soic=8, tssop=8
253                     ; line_number = 115
254                     ;  bind_to _portc@2
255                     ; line_number = 116
256                     ;  or_if rc2_in _trisc 4
257                     ; line_number = 117
258                     ;  or_if rc2_nc _trisc 4
259                     ; line_number = 118
260                     ;  or_if rc2_out _trisc 0
261                     ; line_number = 119
262                     ;  or_if an6 _trisc 4
263                     ; line_number = 120
264                     ;  or_if rc2_in _ansel 0
265                     ; line_number = 121
266                     ;  or_if rc2_out _ansel 0
267                     ; line_number = 122
268                     ;  or_if an6 _ansel 64
269                     ; line_number = 123
270                     ;  or_if rc2_in _adcon0 0
271                     ; line_number = 124
272                     ;  or_if rc2_out _adcon0 0
273                     ; line_number = 125
274                     ;  or_if an6 _adcon0 1
275                     ; line_number = 126
276                     ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus
277                     ; line_number = 127
278                     ; pin_bindings pdip=9, soic=9, tssop=9
279                     ; line_number = 128
280                     ;  bind_to _portc@1
281                     ; line_number = 129
282                     ;  or_if rc1_in _trisc 2
283                     ; line_number = 130
284                     ;  or_if rc1_nc _trisc 2
285                     ; line_number = 131
286                     ;  or_if rc1_out _trisc 0
287                     ; line_number = 132
288                     ;  or_if rc1_in _cmcon0 7
289                     ; line_number = 133
290                     ;  or_if rc1_out _cmcon0 7
291                     ; line_number = 134
292                     ;  or_if an5 _trisc 2
293                     ; line_number = 135
294                     ;  or_if rc1_in _ansel 0
295                     ; line_number = 136
296                     ;  or_if rc1_out _ansel 0
297                     ; line_number = 137
298                     ;  or_if an5 _ansel 32
299                     ; line_number = 138
300                     ;  or_if rc1_in _adcon0 0
301                     ; line_number = 139
302                     ;  or_if rc1_out _adcon0 0
303                     ; line_number = 140
304                     ;  or_if an5 _adcon0 1
305                     ; line_number = 141
306                     ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus
307                     ; line_number = 142
308                     ; pin_bindings pdip=10, soic=10, tssop=10
309                     ; line_number = 143
310                     ;  bind_to _portc@0
311                     ; line_number = 144
312                     ;  or_if rc0_in _trisc 1
313                     ; line_number = 145
314                     ;  or_if rc0_nc _trisc 1
315                     ; line_number = 146
316                     ;  or_if rc0_out _trisc 0
317                     ; line_number = 147
318                     ;  or_if rc0_in _cmcon0 7
319                     ; line_number = 148
320                     ;  or_if rc0_out _cmcon0 7
321                     ; line_number = 149
322                     ;  or_if an4 _trisc 1
323                     ; line_number = 150
324                     ;  or_if rc0_in _ansel 0
325                     ; line_number = 151
326                     ;  or_if rc0_out _ansel 0
327                     ; line_number = 152
328                     ;  or_if an4 _ansel 16
329                     ; line_number = 153
330                     ;  or_if rc0_in _adcon0 0
331                     ; line_number = 154
332                     ;  or_if rc0_out _adcon0 0
333                     ; line_number = 155
334                     ;  or_if an4 _adcon0 1
335                     ; line_number = 156
336                     ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int
337                     ; line_number = 157
338                     ; pin_bindings pdip=11, soic=11, tssop=11
339                     ; line_number = 158
340                     ;  bind_to _porta@2
341                     ; line_number = 159
342                     ;  or_if ra2_in _trisa 4
343                     ; line_number = 160
344                     ;  or_if ra2_nc _trisa 4
345                     ; line_number = 161
346                     ;  or_if ra2_out _trisa 0
347                     ; line_number = 162
348                     ;  or_if an2 _trisa 4
349                     ; line_number = 163
350                     ;  or_if ra2_in _ansel 0
351                     ; line_number = 164
352                     ;  or_if ra2_out _ansel 0
353                     ; line_number = 165
354                     ;  or_if an2 _ansel 4
355                     ; line_number = 166
356                     ;  or_if ra2_in _adcon0 0
357                     ; line_number = 167
358                     ;  or_if ra2_out _adcon0 0
359                     ; line_number = 168
360                     ;  or_if an2 _adcon0 1
361                     ; line_number = 169
362                     ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk
363                     ; line_number = 170
364                     ; pin_bindings pdip=12, soic=12, tssop=12
365                     ; line_number = 171
366                     ;  bind_to _porta@1
367                     ; line_number = 172
368                     ;  or_if ra1_in _trisa 2
369                     ; line_number = 173
370                     ;  or_if ra1_nc _trisa 2
371                     ; line_number = 174
372                     ;  or_if ra1_out _trisa 0
373                     ; line_number = 175
374                     ;  or_if ra1_in _cmcon0 7
375                     ; line_number = 176
376                     ;  or_if ra1_out _cmcon0 7
377                     ; line_number = 177
378                     ;  or_if an1 _trisa 2
379                     ; line_number = 178
380                     ;  or_if vref _trisa 2
381                     ; line_number = 179
382                     ;  or_if ra1_in _ansel 0
383                     ; line_number = 180
384                     ;  or_if ra1_out _ansel 0
385                     ; line_number = 181
386                     ;  or_if an1 _ansel 2
387                     ; line_number = 182
388                     ;  or_if vref _ansel 2
389                     ; line_number = 183
390                     ;  or_if ra1_in _adcon0 0
391                     ; line_number = 184
392                     ;  or_if ra1_out _adcon0 0
393                     ; line_number = 185
394                     ;  or_if an1 _adcon0 1		# Turn on _addon
395                     ; line_number = 186
396                     ;  or_if vref _adcon0 1		# Turn on _addon
397                     ; line_number = 187
398                     ;  or_if vref _adcon0 64		# Turn of _vcfg
399                     ; line_number = 188
400                     ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu
401                     ; line_number = 189
402                     ; pin_bindings pdip=13, soic=13, tssop=13
403                     ; line_number = 190
404                     ;  bind_to _porta@0
405                     ; line_number = 191
406                     ;  or_if ra0_in _trisa 1
407                     ; line_number = 192
408                     ;  or_if ra0_nc _trisa 1
409                     ; line_number = 193
410                     ;  or_if ra0_out _trisa 0
411                     ; line_number = 194
412                     ;  or_if ra0_in _cmcon0 7
413                     ; line_number = 195
414                     ;  or_if ra0_out _cmcon0 7
415                     ; line_number = 196
416                     ;  or_if an0 _trisa 1
417                     ; line_number = 197
418                     ;  or_if ra0_in _ansel 0
419                     ; line_number = 198
420                     ;  or_if ra0_out _ansel 0
421                     ; line_number = 199
422                     ;  or_if an0 _ansel 1
423                     ; line_number = 200
424                     ;  or_if ra0_in _adcon0 0
425                     ; line_number = 201
426                     ;  or_if ra0_out _adcon0 0
427                     ; line_number = 202
428                     ;  or_if an0 _adcon0 1
429                     ; line_number = 203
430                     ; pin vss, ground
431                     ; line_number = 204
432                     ; pin_bindings pdip=14, soic=14, tssop=14
433             
434                     ; line_number = 206
435                     ; library _standard entered
436             
437                     ; # Copyright (c) 2006 by Wayne C. Gramlich
438                     ; # All rights reserved.
439             
440                     ; # Standard definition for uCL:
441             
442                     ; buffer = '_standard'
443                     ; line_number = 8
444                     ; constant _true = (1 = 1)
445  00000001 = _true equ 1
446                     ; line_number = 9
447                     ; constant _false = (0 != 0)
448  00000000 = _false equ 0
449             
450             
451                     ; buffer = '_pic16f688'
452                     ; line_number = 206
453                     ; library _standard exited
454             
455             
456                     ; # Register/bit bindings:
457             
458                     ; # Databank 0 (0x0 - 0x7f):
459             
460                     ; line_number = 217
461                     ; register _indf = 
462  00000000 = _indf equ 0
463             
464                     ; line_number = 219
465                     ; register _tmr0 = 
466  00000001 = _tmr0 equ 1
467             
468                     ; line_number = 221
469                     ; register _pcl = 
470  00000002 = _pcl equ 2
471             
472                     ; line_number = 223
473                     ; register _status = 
474  00000003 = _status equ 3
475                     ; line_number = 224
476                     ; bind _irp = _status@7
477  00000003 = _irp___byte equ _status
478  00000007 = _irp___bit equ 7
479                     ; line_number = 225
480                     ; bind _rp1 = _status@5
481  00000003 = _rp1___byte equ _status
482  00000005 = _rp1___bit equ 5
483                     ; line_number = 226
484                     ; bind _rp0 = _status@5
485  00000003 = _rp0___byte equ _status
486  00000005 = _rp0___bit equ 5
487                     ; line_number = 227
488                     ; bind _to = _status@4
489  00000003 = _to___byte equ _status
490  00000004 = _to___bit equ 4
491                     ; line_number = 228
492                     ; bind _pd = _status@3
493  00000003 = _pd___byte equ _status
494  00000003 = _pd___bit equ 3
495                     ; line_number = 229
496                     ; bind _z = _status@2
497  00000003 = _z___byte equ _status
498  00000002 = _z___bit equ 2
499                     ; line_number = 230
500                     ; bind _dc = _status@1
501  00000003 = _dc___byte equ _status
502  00000001 = _dc___bit equ 1
503                     ; line_number = 231
504                     ; bind _c = _status@0
505  00000003 = _c___byte equ _status
506  00000000 = _c___bit equ 0
507             
508                     ; line_number = 233
509                     ; register _fsr = 
510  00000004 = _fsr equ 4
511             
512                     ; line_number = 235
513                     ; register _porta = 
514  00000005 = _porta equ 5
515                     ; line_number = 236
516                     ; register _ra = 
517  00000005 = _ra equ 5
518                     ; line_number = 237
519                     ; bind _ra5 = _porta@5
520  00000005 = _ra5___byte equ _porta
521  00000005 = _ra5___bit equ 5
522                     ; line_number = 238
523                     ; bind _ra4 = _porta@4
524  00000005 = _ra4___byte equ _porta
525  00000004 = _ra4___bit equ 4
526                     ; line_number = 239
527                     ; bind _ra3 = _porta@3
528  00000005 = _ra3___byte equ _porta
529  00000003 = _ra3___bit equ 3
530                     ; line_number = 240
531                     ; bind _ra2 = _porta@2
532  00000005 = _ra2___byte equ _porta
533  00000002 = _ra2___bit equ 2
534                     ; line_number = 241
535                     ; bind _ra1 = _porta@1
536  00000005 = _ra1___byte equ _porta
537  00000001 = _ra1___bit equ 1
538                     ; line_number = 242
539                     ; bind _ra0 = _porta@0
540  00000005 = _ra0___byte equ _porta
541  00000000 = _ra0___bit equ 0
542             
543                     ; line_number = 244
544                     ; register _portc = 
545  00000007 = _portc equ 7
546                     ; line_number = 245
547                     ; register _rc = 
548  00000007 = _rc equ 7
549                     ; line_number = 246
550                     ; bind _rc5 = _portc@5
551  00000007 = _rc5___byte equ _portc
552  00000005 = _rc5___bit equ 5
553                     ; line_number = 247
554                     ; bind _rc4 = _portc@4
555  00000007 = _rc4___byte equ _portc
556  00000004 = _rc4___bit equ 4
557                     ; line_number = 248
558                     ; bind _rc3 = _portc@3
559  00000007 = _rc3___byte equ _portc
560  00000003 = _rc3___bit equ 3
561                     ; line_number = 249
562                     ; bind _rc2 = _portc@2
563  00000007 = _rc2___byte equ _portc
564  00000002 = _rc2___bit equ 2
565                     ; line_number = 250
566                     ; bind _rc1 = _portc@1
567  00000007 = _rc1___byte equ _portc
568  00000001 = _rc1___bit equ 1
569                     ; line_number = 251
570                     ; bind _rc0 = _portc@0
571  00000007 = _rc0___byte equ _portc
572  00000000 = _rc0___bit equ 0
573             
574                     ; line_number = 253
575                     ; register _pclath = 
576  0000000a = _pclath equ 10
577             
578                     ; line_number = 255
579                     ; register _intcon = 
580  0000000b = _intcon equ 11
581                     ; line_number = 256
582                     ; bind _gie = _intcon@7
583  0000000b = _gie___byte equ _intcon
584  00000007 = _gie___bit equ 7
585                     ; line_number = 257
586                     ; bind _peie = _intcon@6
587  0000000b = _peie___byte equ _intcon
588  00000006 = _peie___bit equ 6
589                     ; line_number = 258
590                     ; bind _t0ie = _intcon@5
591  0000000b = _t0ie___byte equ _intcon
592  00000005 = _t0ie___bit equ 5
593                     ; line_number = 259
594                     ; bind _inte = _intcon@4
595  0000000b = _inte___byte equ _intcon
596  00000004 = _inte___bit equ 4
597                     ; line_number = 260
598                     ; bind _raie = _intcon@3
599  0000000b = _raie___byte equ _intcon
600  00000003 = _raie___bit equ 3
601                     ; line_number = 261
602                     ; bind _t0if = _intcon@2
603  0000000b = _t0if___byte equ _intcon
604  00000002 = _t0if___bit equ 2
605                     ; line_number = 262
606                     ; bind _intf = _intcon@1
607  0000000b = _intf___byte equ _intcon
608  00000001 = _intf___bit equ 1
609                     ; line_number = 263
610                     ; bind _raif = _intcon@0
611  0000000b = _raif___byte equ _intcon
612  00000000 = _raif___bit equ 0
613             
614                     ; line_number = 265
615                     ; register _pir1 = 
616  0000000c = _pir1 equ 12
617                     ; line_number = 266
618                     ; bind _eeif = _pir1@7
619  0000000c = _eeif___byte equ _pir1
620  00000007 = _eeif___bit equ 7
621                     ; line_number = 267
622                     ; bind _adif = _pir1@6
623  0000000c = _adif___byte equ _pir1
624  00000006 = _adif___bit equ 6
625                     ; line_number = 268
626                     ; bind _rcif = _pir1@5
627  0000000c = _rcif___byte equ _pir1
628  00000005 = _rcif___bit equ 5
629                     ; line_number = 269
630                     ; bind _c2if = _pir1@4
631  0000000c = _c2if___byte equ _pir1
632  00000004 = _c2if___bit equ 4
633                     ; line_number = 270
634                     ; bind _c1if = _pir1@3
635  0000000c = _c1if___byte equ _pir1
636  00000003 = _c1if___bit equ 3
637                     ; line_number = 271
638                     ; bind _osfif = _pir1@2
639  0000000c = _osfif___byte equ _pir1
640  00000002 = _osfif___bit equ 2
641                     ; line_number = 272
642                     ; bind _txif = _pir1@1
643  0000000c = _txif___byte equ _pir1
644  00000001 = _txif___bit equ 1
645                     ; line_number = 273
646                     ; bind _tmr1if = _pir1@0
647  0000000c = _tmr1if___byte equ _pir1
648  00000000 = _tmr1if___bit equ 0
649             
650                     ; line_number = 275
651                     ; register _tmr1l = 
652  0000000e = _tmr1l equ 14
653             
654                     ; line_number = 277
655                     ; register _tmr1h = 
656  0000000f = _tmr1h equ 15
657             
658                     ; line_number = 279
659                     ; register _t1con = 
660  00000010 = _t1con equ 16
661                     ; line_number = 280
662                     ; bind t1ginv = _t1con@7
663  00000010 = t1ginv___byte equ _t1con
664  00000007 = t1ginv___bit equ 7
665                     ; line_number = 281
666                     ; bind _tmr1ge = _t1con@6
667  00000010 = _tmr1ge___byte equ _t1con
668  00000006 = _tmr1ge___bit equ 6
669                     ; line_number = 282
670                     ; bind _t1ckps1 = _t1con@5
671  00000010 = _t1ckps1___byte equ _t1con
672  00000005 = _t1ckps1___bit equ 5
673                     ; line_number = 283
674                     ; bind _t1ckps0 = _t1con@4
675  00000010 = _t1ckps0___byte equ _t1con
676  00000004 = _t1ckps0___bit equ 4
677                     ; line_number = 284
678                     ; bind _t1oscen = _t1con@3
679  00000010 = _t1oscen___byte equ _t1con
680  00000003 = _t1oscen___bit equ 3
681                     ; line_number = 285
682                     ; bind _t1sync = _t1con@2
683  00000010 = _t1sync___byte equ _t1con
684  00000002 = _t1sync___bit equ 2
685                     ; line_number = 286
686                     ; bind _tmr1cs = _t1con@1
687  00000010 = _tmr1cs___byte equ _t1con
688  00000001 = _tmr1cs___bit equ 1
689                     ; line_number = 287
690                     ; bind _tmr1on = _t1con@0
691  00000010 = _tmr1on___byte equ _t1con
692  00000000 = _tmr1on___bit equ 0
693             
694                     ; line_number = 289
695                     ; register _baudctl = 
696  00000011 = _baudctl equ 17
697                     ; line_number = 290
698                     ; bind _abdovf = _baudctl@7
699  00000011 = _abdovf___byte equ _baudctl
700  00000007 = _abdovf___bit equ 7
701                     ; line_number = 291
702                     ; bind _rcidl = _baudctl@6
703  00000011 = _rcidl___byte equ _baudctl
704  00000006 = _rcidl___bit equ 6
705                     ; line_number = 292
706                     ; bind _sckp = _baudctl@4
707  00000011 = _sckp___byte equ _baudctl
708  00000004 = _sckp___bit equ 4
709                     ; line_number = 293
710                     ; bind _brg16 = _baudctl@3
711  00000011 = _brg16___byte equ _baudctl
712  00000003 = _brg16___bit equ 3
713                     ; line_number = 294
714                     ; bind _wue = _baudctl@1
715  00000011 = _wue___byte equ _baudctl
716  00000001 = _wue___bit equ 1
717                     ; line_number = 295
718                     ; bind _abden = _baudctl@0
719  00000011 = _abden___byte equ _baudctl
720  00000000 = _abden___bit equ 0
721             
722                     ; line_number = 297
723                     ; register _spbrgh = 
724  00000012 = _spbrgh equ 18
725             
726                     ; line_number = 299
727                     ; register _spbrg = 
728  00000013 = _spbrg equ 19
729             
730                     ; line_number = 301
731                     ; register _rcreg = 
732  00000014 = _rcreg equ 20
733             
734                     ; line_number = 303
735                     ; register _txreg = 
736  00000015 = _txreg equ 21
737             
738                     ; line_number = 305
739                     ; register _txsta = 
740  00000016 = _txsta equ 22
741                     ; line_number = 306
742                     ; bind _csrc = _txsta@7
743  00000016 = _csrc___byte equ _txsta
744  00000007 = _csrc___bit equ 7
745                     ; line_number = 307
746                     ; bind _tx9 = _txsta@6
747  00000016 = _tx9___byte equ _txsta
748  00000006 = _tx9___bit equ 6
749                     ; line_number = 308
750                     ; bind _txen = _txsta@5
751  00000016 = _txen___byte equ _txsta
752  00000005 = _txen___bit equ 5
753                     ; line_number = 309
754                     ; bind _sync = _txsta@4
755  00000016 = _sync___byte equ _txsta
756  00000004 = _sync___bit equ 4
757                     ; line_number = 310
758                     ; bind _sendb = _txsta@3
759  00000016 = _sendb___byte equ _txsta
760  00000003 = _sendb___bit equ 3
761                     ; line_number = 311
762                     ; bind _brgh = _txsta@2
763  00000016 = _brgh___byte equ _txsta
764  00000002 = _brgh___bit equ 2
765                     ; line_number = 312
766                     ; bind _trmt = _txsta@1
767  00000016 = _trmt___byte equ _txsta
768  00000001 = _trmt___bit equ 1
769                     ; line_number = 313
770                     ; bind _tx9d = _txsta@0
771  00000016 = _tx9d___byte equ _txsta
772  00000000 = _tx9d___bit equ 0
773             
774                     ; line_number = 315
775                     ; register _rcsta = 
776  00000017 = _rcsta equ 23
777                     ; line_number = 316
778                     ; bind _spen = _rcsta@7
779  00000017 = _spen___byte equ _rcsta
780  00000007 = _spen___bit equ 7
781                     ; line_number = 317
782                     ; bind _rx9 = _rcsta@6
783  00000017 = _rx9___byte equ _rcsta
784  00000006 = _rx9___bit equ 6
785                     ; line_number = 318
786                     ; bind _sren = _rcsta@5
787  00000017 = _sren___byte equ _rcsta
788  00000005 = _sren___bit equ 5
789                     ; line_number = 319
790                     ; bind _cren = _rcsta@4
791  00000017 = _cren___byte equ _rcsta
792  00000004 = _cren___bit equ 4
793                     ; line_number = 320
794                     ; bind _adden = _rcsta@3
795  00000017 = _adden___byte equ _rcsta
796  00000003 = _adden___bit equ 3
797                     ; line_number = 321
798                     ; bind _ferr = _rcsta@2
799  00000017 = _ferr___byte equ _rcsta
800  00000002 = _ferr___bit equ 2
801                     ; line_number = 322
802                     ; bind _oerr = _rcsta@1
803  00000017 = _oerr___byte equ _rcsta
804  00000001 = _oerr___bit equ 1
805                     ; line_number = 323
806                     ; bind _rx9d = _rcsta@0
807  00000017 = _rx9d___byte equ _rcsta
808  00000000 = _rx9d___bit equ 0
809             
810                     ; line_number = 325
811                     ; register _wdtcon = 
812  00000018 = _wdtcon equ 24
813                     ; line_number = 326
814                     ; bind _wdtps3 = _wdtcon@4
815  00000018 = _wdtps3___byte equ _wdtcon
816  00000004 = _wdtps3___bit equ 4
817                     ; line_number = 327
818                     ; bind _wdtps2 = _wdtcon@3
819  00000018 = _wdtps2___byte equ _wdtcon
820  00000003 = _wdtps2___bit equ 3
821                     ; line_number = 328
822                     ; bind _wdtps1 = _wdtcon@2
823  00000018 = _wdtps1___byte equ _wdtcon
824  00000002 = _wdtps1___bit equ 2
825                     ; line_number = 329
826                     ; bind _wdtps0 = _wdtcon@1
827  00000018 = _wdtps0___byte equ _wdtcon
828  00000001 = _wdtps0___bit equ 1
829                     ; line_number = 330
830                     ; bind _swdten = _wdtcon@0
831  00000018 = _swdten___byte equ _wdtcon
832  00000000 = _swdten___bit equ 0
833             
834                     ; line_number = 332
835                     ; register _cmcon0 = 
836  00000019 = _cmcon0 equ 25
837                     ; line_number = 333
838                     ; bind _c1out = _cmcon0@7
839  00000019 = _c1out___byte equ _cmcon0
840  00000007 = _c1out___bit equ 7
841                     ; line_number = 334
842                     ; bind _c2out = _cmcon0@6
843  00000019 = _c2out___byte equ _cmcon0
844  00000006 = _c2out___bit equ 6
845                     ; line_number = 335
846                     ; bind _c1inv = _cmcon0@5
847  00000019 = _c1inv___byte equ _cmcon0
848  00000005 = _c1inv___bit equ 5
849                     ; line_number = 336
850                     ; bind _c2inv = _cmcon0@4
851  00000019 = _c2inv___byte equ _cmcon0
852  00000004 = _c2inv___bit equ 4
853                     ; line_number = 337
854                     ; bind _cis = _cmcon0@3
855  00000019 = _cis___byte equ _cmcon0
856  00000003 = _cis___bit equ 3
857                     ; line_number = 338
858                     ; bind _cm2 = _cmcon0@2
859  00000019 = _cm2___byte equ _cmcon0
860  00000002 = _cm2___bit equ 2
861                     ; line_number = 339
862                     ; bind _cm1 = _cmcon0@1
863  00000019 = _cm1___byte equ _cmcon0
864  00000001 = _cm1___bit equ 1
865                     ; line_number = 340
866                     ; bind _cm0 = _cmcon0@0
867  00000019 = _cm0___byte equ _cmcon0
868  00000000 = _cm0___bit equ 0
869             
870                     ; line_number = 342
871                     ; register _cmcon1 = 
872  0000001a = _cmcon1 equ 26
873                     ; line_number = 343
874                     ; bind _t1gss = _cmcon1@0
875  0000001a = _t1gss___byte equ _cmcon1
876  00000000 = _t1gss___bit equ 0
877                     ; line_number = 344
878                     ; bind _c2sync = _cmcon1@1
879  0000001a = _c2sync___byte equ _cmcon1
880  00000001 = _c2sync___bit equ 1
881             
882                     ; line_number = 346
883                     ; register _adresh = 
884  0000001e = _adresh equ 30
885             
886                     ; line_number = 348
887                     ; register _adcon0 = 
888  0000001f = _adcon0 equ 31
889                     ; line_number = 349
890                     ; bind _adfm = _adcon0@7
891  0000001f = _adfm___byte equ _adcon0
892  00000007 = _adfm___bit equ 7
893                     ; line_number = 350
894                     ; bind _vcfg = _adcon0@6
895  0000001f = _vcfg___byte equ _adcon0
896  00000006 = _vcfg___bit equ 6
897                     ; line_number = 351
898                     ; bind _chs2 = _adcon0@4
899  0000001f = _chs2___byte equ _adcon0
900  00000004 = _chs2___bit equ 4
901                     ; line_number = 352
902                     ; bind _chs1 = _adcon0@3
903  0000001f = _chs1___byte equ _adcon0
904  00000003 = _chs1___bit equ 3
905                     ; line_number = 353
906                     ; bind _chs0 = _adcon0@2
907  0000001f = _chs0___byte equ _adcon0
908  00000002 = _chs0___bit equ 2
909                     ; line_number = 354
910                     ; bind _go = _adcon0@1
911  0000001f = _go___byte equ _adcon0
912  00000001 = _go___bit equ 1
913                     ; line_number = 355
914                     ; bind _adon = _adcon0@0
915  0000001f = _adon___byte equ _adcon0
916  00000000 = _adon___bit equ 0
917             
918                     ; # Data bank 1 (0x80-0xff):
919             
920                     ; line_number = 359
921                     ; register _option_reg = 
922  00000081 = _option_reg equ 129
923                     ; line_number = 360
924                     ; bind _rapu = _option_reg@7
925  00000081 = _rapu___byte equ _option_reg
926  00000007 = _rapu___bit equ 7
927                     ; line_number = 361
928                     ; bind _intedg = _option_reg@6
929  00000081 = _intedg___byte equ _option_reg
930  00000006 = _intedg___bit equ 6
931                     ; line_number = 362
932                     ; bind _t0cs = _option_reg@5
933  00000081 = _t0cs___byte equ _option_reg
934  00000005 = _t0cs___bit equ 5
935                     ; line_number = 363
936                     ; bind _t0se = _option_reg@4
937  00000081 = _t0se___byte equ _option_reg
938  00000004 = _t0se___bit equ 4
939                     ; line_number = 364
940                     ; bind _psa = _option_reg@3
941  00000081 = _psa___byte equ _option_reg
942  00000003 = _psa___bit equ 3
943                     ; line_number = 365
944                     ; bind _ps2 = _option_reg@2
945  00000081 = _ps2___byte equ _option_reg
946  00000002 = _ps2___bit equ 2
947                     ; line_number = 366
948                     ; bind _ps1 = _option_reg@1
949  00000081 = _ps1___byte equ _option_reg
950  00000001 = _ps1___bit equ 1
951                     ; line_number = 367
952                     ; bind _ps0 = _option_reg@0
953  00000081 = _ps0___byte equ _option_reg
954  00000000 = _ps0___bit equ 0
955             
956                     ; line_number = 369
957                     ; register _trisa = 
958  00000085 = _trisa equ 133
959                     ; line_number = 370
960                     ; bind _trisa5 = _trisa@5
961  00000085 = _trisa5___byte equ _trisa
962  00000005 = _trisa5___bit equ 5
963                     ; line_number = 371
964                     ; bind _trisa4 = _trisa@4
965  00000085 = _trisa4___byte equ _trisa
966  00000004 = _trisa4___bit equ 4
967                     ; line_number = 372
968                     ; bind _trisa3 = _trisa@3
969  00000085 = _trisa3___byte equ _trisa
970  00000003 = _trisa3___bit equ 3
971                     ; line_number = 373
972                     ; bind _trisa2 = _trisa@2
973  00000085 = _trisa2___byte equ _trisa
974  00000002 = _trisa2___bit equ 2
975                     ; line_number = 374
976                     ; bind _trisa1 = _trisa@1
977  00000085 = _trisa1___byte equ _trisa
978  00000001 = _trisa1___bit equ 1
979                     ; line_number = 375
980                     ; bind _trisa0 = _trisa@0
981  00000085 = _trisa0___byte equ _trisa
982  00000000 = _trisa0___bit equ 0
983             
984                     ; line_number = 377
985                     ; register _trisc = 
986  00000087 = _trisc equ 135
987                     ; line_number = 378
988                     ; bind _trisc5 = _trisc@5
989  00000087 = _trisc5___byte equ _trisc
990  00000005 = _trisc5___bit equ 5
991                     ; line_number = 379
992                     ; bind _trisc4 = _trisc@4
993  00000087 = _trisc4___byte equ _trisc
994  00000004 = _trisc4___bit equ 4
995                     ; line_number = 380
996                     ; bind _trisc3 = _trisc@3
997  00000087 = _trisc3___byte equ _trisc
998  00000003 = _trisc3___bit equ 3
999                     ; line_number = 381
1000                    ; bind _trisc2 = _trisc@2
1001 00000087 = _trisc2___byte equ _trisc
1002 00000002 = _trisc2___bit equ 2
1003                    ; line_number = 382
1004                    ; bind _trisc1 = _trisc@1
1005 00000087 = _trisc1___byte equ _trisc
1006 00000001 = _trisc1___bit equ 1
1007                    ; line_number = 383
1008                    ; bind _trisc0 = _trisc@0
1009 00000087 = _trisc0___byte equ _trisc
1010 00000000 = _trisc0___bit equ 0
1011            
1012                    ; line_number = 385
1013                    ; register _pie1 = 
1014 0000008c = _pie1 equ 140
1015                    ; line_number = 386
1016                    ; bind _eeie = _pie1@7
1017 0000008c = _eeie___byte equ _pie1
1018 00000007 = _eeie___bit equ 7
1019                    ; line_number = 387
1020                    ; bind _adie = _pie1@6
1021 0000008c = _adie___byte equ _pie1
1022 00000006 = _adie___bit equ 6
1023                    ; line_number = 388
1024                    ; bind _rcie = _pie1@5
1025 0000008c = _rcie___byte equ _pie1
1026 00000005 = _rcie___bit equ 5
1027                    ; line_number = 389
1028                    ; bind _c2ie = _pie1@4
1029 0000008c = _c2ie___byte equ _pie1
1030 00000004 = _c2ie___bit equ 4
1031                    ; line_number = 390
1032                    ; bind _c1ie = _pie1@3
1033 0000008c = _c1ie___byte equ _pie1
1034 00000003 = _c1ie___bit equ 3
1035                    ; line_number = 391
1036                    ; bind _osfie = _pie1@2
1037 0000008c = _osfie___byte equ _pie1
1038 00000002 = _osfie___bit equ 2
1039                    ; line_number = 392
1040                    ; bind _txie = _pie1@1
1041 0000008c = _txie___byte equ _pie1
1042 00000001 = _txie___bit equ 1
1043                    ; line_number = 393
1044                    ; bind _tmr1ie = _pie1@0
1045 0000008c = _tmr1ie___byte equ _pie1
1046 00000000 = _tmr1ie___bit equ 0
1047            
1048                    ; line_number = 395
1049                    ; register _pcon = 
1050 0000008e = _pcon equ 142
1051                    ; line_number = 396
1052                    ; bind _ulpwue = _pcon@5
1053 0000008e = _ulpwue___byte equ _pcon
1054 00000005 = _ulpwue___bit equ 5
1055                    ; line_number = 397
1056                    ; bind _sboden = _pcon@4
1057 0000008e = _sboden___byte equ _pcon
1058 00000004 = _sboden___bit equ 4
1059                    ; line_number = 398
1060                    ; bind _por = _pcon@1
1061 0000008e = _por___byte equ _pcon
1062 00000001 = _por___bit equ 1
1063                    ; line_number = 399
1064                    ; bind _bod = _pcon@0
1065 0000008e = _bod___byte equ _pcon
1066 00000000 = _bod___bit equ 0
1067            
1068                    ; line_number = 401
1069                    ; register _osccon = 
1070 0000008f = _osccon equ 143
1071                    ; line_number = 402
1072                    ; bind _ircf2 = _osccon@6
1073 0000008f = _ircf2___byte equ _osccon
1074 00000006 = _ircf2___bit equ 6
1075                    ; line_number = 403
1076                    ; bind _ircf1 = _osccon@5
1077 0000008f = _ircf1___byte equ _osccon
1078 00000005 = _ircf1___bit equ 5
1079                    ; line_number = 404
1080                    ; bind _ircf0 = _osccon@4
1081 0000008f = _ircf0___byte equ _osccon
1082 00000004 = _ircf0___bit equ 4
1083                    ; line_number = 405
1084                    ; bind _osts = _osccon@3
1085 0000008f = _osts___byte equ _osccon
1086 00000003 = _osts___bit equ 3
1087                    ; line_number = 406
1088                    ; bind _hts = _osccon@2
1089 0000008f = _hts___byte equ _osccon
1090 00000002 = _hts___bit equ 2
1091                    ; line_number = 407
1092                    ; bind _lts = _osccon@3
1093 0000008f = _lts___byte equ _osccon
1094 00000003 = _lts___bit equ 3
1095                    ; line_number = 408
1096                    ; bind _scs = _osccon@2
1097 0000008f = _scs___byte equ _osccon
1098 00000002 = _scs___bit equ 2
1099            
1100                    ; line_number = 410
1101                    ; register _osctune = 
1102 00000090 = _osctune equ 144
1103                    ; line_number = 411
1104                    ; bind _tun4 = _osctune@4
1105 00000090 = _tun4___byte equ _osctune
1106 00000004 = _tun4___bit equ 4
1107                    ; line_number = 412
1108                    ; bind _tun3 = _osctune@3
1109 00000090 = _tun3___byte equ _osctune
1110 00000003 = _tun3___bit equ 3
1111                    ; line_number = 413
1112                    ; bind _tun2 = _osctune@2
1113 00000090 = _tun2___byte equ _osctune
1114 00000002 = _tun2___bit equ 2
1115                    ; line_number = 414
1116                    ; bind _tun1 = _osctune@1
1117 00000090 = _tun1___byte equ _osctune
1118 00000001 = _tun1___bit equ 1
1119                    ; line_number = 415
1120                    ; bind _tun0 = _osctune@0
1121 00000090 = _tun0___byte equ _osctune
1122 00000000 = _tun0___bit equ 0
1123                    ; line_number = 416
1124                    ; constant _osccal_lsb = 1
1125 00000001 = _osccal_lsb equ 1
1126            
1127                    ; line_number = 418
1128                    ; register _ansel = 
1129 00000091 = _ansel equ 145
1130                    ; line_number = 419
1131                    ; bind _ans7 = _ansel@7
1132 00000091 = _ans7___byte equ _ansel
1133 00000007 = _ans7___bit equ 7
1134                    ; line_number = 420
1135                    ; bind _ans6 = _ansel@6
1136 00000091 = _ans6___byte equ _ansel
1137 00000006 = _ans6___bit equ 6
1138                    ; line_number = 421
1139                    ; bind _ans5 = _ansel@5
1140 00000091 = _ans5___byte equ _ansel
1141 00000005 = _ans5___bit equ 5
1142                    ; line_number = 422
1143                    ; bind _ans4 = _ansel@4
1144 00000091 = _ans4___byte equ _ansel
1145 00000004 = _ans4___bit equ 4
1146                    ; line_number = 423
1147                    ; bind _ans3 = _ansel@3
1148 00000091 = _ans3___byte equ _ansel
1149 00000003 = _ans3___bit equ 3
1150                    ; line_number = 424
1151                    ; bind _ans2 = _ansel@2
1152 00000091 = _ans2___byte equ _ansel
1153 00000002 = _ans2___bit equ 2
1154                    ; line_number = 425
1155                    ; bind _ans1 = _ansel@1
1156 00000091 = _ans1___byte equ _ansel
1157 00000001 = _ans1___bit equ 1
1158                    ; line_number = 426
1159                    ; bind _ans0 = _ansel@0
1160 00000091 = _ans0___byte equ _ansel
1161 00000000 = _ans0___bit equ 0
1162            
1163                    ; line_number = 428
1164                    ; register _wpua = 
1165 00000095 = _wpua equ 149
1166                    ; line_number = 429
1167                    ; bind _wpua5 = _wpua@5
1168 00000095 = _wpua5___byte equ _wpua
1169 00000005 = _wpua5___bit equ 5
1170                    ; line_number = 430
1171                    ; bind _wpua4 = _wpua@4
1172 00000095 = _wpua4___byte equ _wpua
1173 00000004 = _wpua4___bit equ 4
1174                    ; line_number = 431
1175                    ; bind _wpua2 = _wpua@2
1176 00000095 = _wpua2___byte equ _wpua
1177 00000002 = _wpua2___bit equ 2
1178                    ; line_number = 432
1179                    ; bind _wpua1 = _wpua@1
1180 00000095 = _wpua1___byte equ _wpua
1181 00000001 = _wpua1___bit equ 1
1182                    ; line_number = 433
1183                    ; bind _wpua0 = _wpua@0
1184 00000095 = _wpua0___byte equ _wpua
1185 00000000 = _wpua0___bit equ 0
1186            
1187                    ; line_number = 435
1188                    ; register _ioca = 
1189 00000096 = _ioca equ 150
1190                    ; line_number = 436
1191                    ; bind _ioca5 = _ioca@5
1192 00000096 = _ioca5___byte equ _ioca
1193 00000005 = _ioca5___bit equ 5
1194                    ; line_number = 437
1195                    ; bind _ioca4 = _ioca@4
1196 00000096 = _ioca4___byte equ _ioca
1197 00000004 = _ioca4___bit equ 4
1198                    ; line_number = 438
1199                    ; bind _ioca3 = _ioca@3
1200 00000096 = _ioca3___byte equ _ioca
1201 00000003 = _ioca3___bit equ 3
1202                    ; line_number = 439
1203                    ; bind _ioca2 = _ioca@2
1204 00000096 = _ioca2___byte equ _ioca
1205 00000002 = _ioca2___bit equ 2
1206                    ; line_number = 440
1207                    ; bind _ioca1 = _ioca@1
1208 00000096 = _ioca1___byte equ _ioca
1209 00000001 = _ioca1___bit equ 1
1210                    ; line_number = 441
1211                    ; bind _ioca0 = _ioca@0
1212 00000096 = _ioca0___byte equ _ioca
1213 00000000 = _ioca0___bit equ 0
1214            
1215                    ; line_number = 443
1216                    ; register _eedath = 
1217 00000097 = _eedath equ 151
1218            
1219                    ; line_number = 445
1220                    ; register _eeadrh = 
1221 00000098 = _eeadrh equ 152
1222            
1223                    ; line_number = 447
1224                    ; register _vrcon = 
1225 00000099 = _vrcon equ 153
1226                    ; line_number = 448
1227                    ; bind _vren = _vrcon@7
1228 00000099 = _vren___byte equ _vrcon
1229 00000007 = _vren___bit equ 7
1230                    ; line_number = 449
1231                    ; bind _vrr = _vrcon@5
1232 00000099 = _vrr___byte equ _vrcon
1233 00000005 = _vrr___bit equ 5
1234                    ; line_number = 450
1235                    ; bind _vr3 = _vrcon@3
1236 00000099 = _vr3___byte equ _vrcon
1237 00000003 = _vr3___bit equ 3
1238                    ; line_number = 451
1239                    ; bind _vr2 = _vrcon@2
1240 00000099 = _vr2___byte equ _vrcon
1241 00000002 = _vr2___bit equ 2
1242                    ; line_number = 452
1243                    ; bind _vr1 = _vrcon@1
1244 00000099 = _vr1___byte equ _vrcon
1245 00000001 = _vr1___bit equ 1
1246                    ; line_number = 453
1247                    ; bind _vr0 = _vrcon@0
1248 00000099 = _vr0___byte equ _vrcon
1249 00000000 = _vr0___bit equ 0
1250            
1251                    ; line_number = 455
1252                    ; register _eedat = 
1253 0000009a = _eedat equ 154
1254                    ; line_number = 456
1255                    ; bind _eedat7 = _eedat@7
1256 0000009a = _eedat7___byte equ _eedat
1257 00000007 = _eedat7___bit equ 7
1258                    ; line_number = 457
1259                    ; bind _eedat6 = _eedat@6
1260 0000009a = _eedat6___byte equ _eedat
1261 00000006 = _eedat6___bit equ 6
1262                    ; line_number = 458
1263                    ; bind _eedat5 = _eedat@5
1264 0000009a = _eedat5___byte equ _eedat
1265 00000005 = _eedat5___bit equ 5
1266                    ; line_number = 459
1267                    ; bind _eedat4 = _eedat@4
1268 0000009a = _eedat4___byte equ _eedat
1269 00000004 = _eedat4___bit equ 4
1270                    ; line_number = 460
1271                    ; bind _eedat3 = _eedat@3
1272 0000009a = _eedat3___byte equ _eedat
1273 00000003 = _eedat3___bit equ 3
1274                    ; line_number = 461
1275                    ; bind _eedat2 = _eedat@2
1276 0000009a = _eedat2___byte equ _eedat
1277 00000002 = _eedat2___bit equ 2
1278                    ; line_number = 462
1279                    ; bind _eedat1 = _eedat@1
1280 0000009a = _eedat1___byte equ _eedat
1281 00000001 = _eedat1___bit equ 1
1282                    ; line_number = 463
1283                    ; bind _eedat0 = _eedat@0
1284 0000009a = _eedat0___byte equ _eedat
1285 00000000 = _eedat0___bit equ 0
1286            
1287                    ; line_number = 465
1288                    ; register _eeadr = 
1289 0000009b = _eeadr equ 155
1290                    ; line_number = 466
1291                    ; bind _eeadr7 = _eeadr@7
1292 0000009b = _eeadr7___byte equ _eeadr
1293 00000007 = _eeadr7___bit equ 7
1294                    ; line_number = 467
1295                    ; bind _eeadr6 = _eeadr@6
1296 0000009b = _eeadr6___byte equ _eeadr
1297 00000006 = _eeadr6___bit equ 6
1298                    ; line_number = 468
1299                    ; bind _eeadr5 = _eeadr@5
1300 0000009b = _eeadr5___byte equ _eeadr
1301 00000005 = _eeadr5___bit equ 5
1302                    ; line_number = 469
1303                    ; bind _eeadr4 = _eeadr@4
1304 0000009b = _eeadr4___byte equ _eeadr
1305 00000004 = _eeadr4___bit equ 4
1306                    ; line_number = 470
1307                    ; bind _eeadr3 = _eeadr@3
1308 0000009b = _eeadr3___byte equ _eeadr
1309 00000003 = _eeadr3___bit equ 3
1310                    ; line_number = 471
1311                    ; bind _eeadr2 = _eeadr@2
1312 0000009b = _eeadr2___byte equ _eeadr
1313 00000002 = _eeadr2___bit equ 2
1314                    ; line_number = 472
1315                    ; bind _eeadr1 = _eeadr@1
1316 0000009b = _eeadr1___byte equ _eeadr
1317 00000001 = _eeadr1___bit equ 1
1318                    ; line_number = 473
1319                    ; bind _eeadr0 = _eeadr@0
1320 0000009b = _eeadr0___byte equ _eeadr
1321 00000000 = _eeadr0___bit equ 0
1322            
1323                    ; line_number = 475
1324                    ; register _eecon1 = 
1325 0000009c = _eecon1 equ 156
1326                    ; line_number = 476
1327                    ; bind _eepgd = _eecon1@7
1328 0000009c = _eepgd___byte equ _eecon1
1329 00000007 = _eepgd___bit equ 7
1330                    ; line_number = 477
1331                    ; bind _wrerr = _eecon1@3
1332 0000009c = _wrerr___byte equ _eecon1
1333 00000003 = _wrerr___bit equ 3
1334                    ; line_number = 478
1335                    ; bind _wren = _eecon1@2
1336 0000009c = _wren___byte equ _eecon1
1337 00000002 = _wren___bit equ 2
1338                    ; line_number = 479
1339                    ; bind _wr = _eecon1@1
1340 0000009c = _wr___byte equ _eecon1
1341 00000001 = _wr___bit equ 1
1342                    ; line_number = 480
1343                    ; bind _rd = _eecon1@0
1344 0000009c = _rd___byte equ _eecon1
1345 00000000 = _rd___bit equ 0
1346            
1347                    ; line_number = 482
1348                    ; register _eecon2 = 
1349 0000009d = _eecon2 equ 157
1350            
1351                    ; line_number = 484
1352                    ; register _adresl = 
1353 0000009e = _adresl equ 158
1354            
1355                    ; line_number = 486
1356                    ; register _adcon1 = 
1357 0000009f = _adcon1 equ 159
1358                    ; line_number = 487
1359                    ; bind _adcs2 = _adcon1@6
1360 0000009f = _adcs2___byte equ _adcon1
1361 00000006 = _adcs2___bit equ 6
1362                    ; line_number = 488
1363                    ; bind _adcs1 = _adcon1@5
1364 0000009f = _adcs1___byte equ _adcon1
1365 00000005 = _adcs1___bit equ 5
1366                    ; line_number = 489
1367                    ; bind _adcs0 = _adcon1@4
1368 0000009f = _adcs0___byte equ _adcon1
1369 00000004 = _adcs0___bit equ 4
1370            
1371                    ; # Data Bank 2 (0x100 - 0x17f):
1372            
1373                    ; buffer = 'irproximity4'
1374                    ; line_number = 7
1375                    ; library _pic16f688 exited
1376            
1377                    ; # The system is running at 20MHz:
1378                    ; line_number = 10
1379                    ; library clock20mhz entered
1380                    ; # Copyright (c) 2004 by Wayne C. Gramlich
1381                    ; # All rights reserved.
1382            
1383                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1384                    ; # and {clocks_per_instruction}.
1385            
1386                    ; # Define processor constants:
1387                    ; buffer = 'clock20mhz'
1388                    ; line_number = 9
1389                    ; constant clock_rate = 20000000
1390 01312d00 = clock_rate equ 20000000
1391                    ; line_number = 10
1392                    ; constant clocks_per_instruction = 4
1393 00000004 = clocks_per_instruction equ 4
1394                    ; line_number = 11
1395                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1396 004c4b40 = instruction_rate equ 5000000
1397            
1398            
1399                    ; buffer = 'irproximity4'
1400                    ; line_number = 10
1401                    ; library clock20mhz exited
1402                    ; # A microsecond takes 5 cycles at 20MHz:
1403                    ; line_number = 12
1404                    ; constant microsecond = 5
1405 00000005 = microsecond equ 5
1406            
1407                    ; # The {_eusart} library defines some baud rate generator constants:
1408                    ; line_number = 15
1409                    ; constant _eusart_clock = clock_rate
1410 01312d00 = _eusart_clock equ 20000000
1411                    ; line_number = 16
1412                    ; constant _eusart_factor = 4
1413 00000004 = _eusart_factor equ 4
1414                    ; line_number = 17
1415                    ; library _eusart entered
1416            
1417                    ; # Copyright (c) 2005 by Wayne C. Gramlich
1418                    ; # All rights reserved.
1419            
1420                    ; # This library contains a bunch of definitions for the Enhanced Universal
1421                    ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available
1422                    ; # on many of the PIC microcontrollers.
1423            
1424                    ; # In order to use this module you have to get two constants defined
1425                    ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}.
1426                    ; # {_eusart_clock} should be set to the frequency oscillator for the chip.
1427                    ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether
1428                    ; # the {_brg16} and {_brgh} bits are set.  Use the table below to select:
1429                    ; #
1430                    ; #        _{brg16}	{_brgh}		_{eusart_factor}
1431                    ; #	    0		   0		      64
1432                    ; #	    0		   1		      16
1433                    ; #	    1		   0		      16
1434                    ; #	    1		   1		       4
1435            
1436                    ; # 2400 bits/sec:
1437                    ; buffer = '_eusart'
1438                    ; line_number = 23
1439                    ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1
1440 00000822 = _eusart_2400 equ 2082
1441                    ; line_number = 24
1442                    ; constant _eusart_2400_low = _eusart_2400 & 0xff
1443 00000022 = _eusart_2400_low equ 34
1444                    ; line_number = 25
1445                    ; constant _eusart_2400_high = _eusart_2400 >> 8
1446 00000008 = _eusart_2400_high equ 8
1447                    ; line_number = 26
1448                    ; constant _eusart_2400_index = 0
1449 00000000 = _eusart_2400_index equ 0
1450                    ; # 4800 bits/sec:
1451                    ; line_number = 28
1452                    ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1
1453 00000410 = _eusart_4800 equ 1040
1454                    ; line_number = 29
1455                    ; constant _eusart_4800_low = _eusart_4800 & 0xff
1456 00000010 = _eusart_4800_low equ 16
1457                    ; line_number = 30
1458                    ; constant _eusart_4800_high = _eusart_4800 >> 8
1459 00000004 = _eusart_4800_high equ 4
1460                    ; line_number = 31
1461                    ; constant _eusart_4800_index = 1
1462 00000001 = _eusart_4800_index equ 1
1463                    ; # 9600 bits/sec:
1464                    ; line_number = 33
1465                    ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1
1466 00000207 = _eusart_9600 equ 519
1467                    ; line_number = 34
1468                    ; constant _eusart_9600_low = _eusart_9600 & 0xff
1469 00000007 = _eusart_9600_low equ 7
1470                    ; line_number = 35
1471                    ; constant _eusart_9600_high = _eusart_9600 >> 8
1472 00000002 = _eusart_9600_high equ 2
1473                    ; line_number = 36
1474                    ; constant _eusart_9600_index = 2
1475 00000002 = _eusart_9600_index equ 2
1476                    ; # 19200 bits/sec:
1477                    ; line_number = 38
1478                    ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1
1479 00000103 = _eusart_19200 equ 259
1480                    ; line_number = 39
1481                    ; constant _eusart_19200_low = _eusart_19200 & 0xff
1482 00000003 = _eusart_19200_low equ 3
1483                    ; line_number = 40
1484                    ; constant _eusart_19200_high = _eusart_19200 >> 8
1485 00000001 = _eusart_19200_high equ 1
1486                    ; line_number = 41
1487                    ; constant _eusart_19200_index = 3
1488 00000003 = _eusart_19200_index equ 3
1489                    ; # 38400 bits/sec:
1490                    ; line_number = 43
1491                    ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1
1492 00000081 = _eusart_38400 equ 129
1493                    ; line_number = 44
1494                    ; constant _eusart_38400_low = _eusart_38400 & 0xff
1495 00000081 = _eusart_38400_low equ 129
1496                    ; line_number = 45
1497                    ; constant _eusart_38400_high = _eusart_38400 >> 8
1498 00000000 = _eusart_38400_high equ 0
1499                    ; line_number = 46
1500                    ; constant _eusart_38400_index = 4
1501 00000004 = _eusart_38400_index equ 4
1502                    ; # 57600 bits/sec:
1503                    ; line_number = 48
1504                    ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1
1505 00000055 = _eusart_57600 equ 85
1506                    ; line_number = 49
1507                    ; constant _eusart_57600_low = _eusart_57600 & 0xff
1508 00000055 = _eusart_57600_low equ 85
1509                    ; line_number = 50
1510                    ; constant _eusart_57600_high = _eusart_57600 >> 8
1511 00000000 = _eusart_57600_high equ 0
1512                    ; line_number = 51
1513                    ; constant _eusart_57600_index = 5
1514 00000005 = _eusart_57600_index equ 5
1515                    ; # 115200 bits/sec:
1516                    ; line_number = 53
1517                    ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1
1518 0000002a = _eusart_115200 equ 42
1519                    ; line_number = 54
1520                    ; constant _eusart_115200_low = _eusart_115200 & 0xff
1521 0000002a = _eusart_115200_low equ 42
1522                    ; line_number = 55
1523                    ; constant _eusart_115200_high = _eusart_115200 >> 8
1524 00000000 = _eusart_115200_high equ 0
1525                    ; line_number = 56
1526                    ; constant _eusart_115200_index = 6
1527 00000006 = _eusart_115200_index equ 6
1528                    ; # 203400 bits/sec:
1529                    ; line_number = 58
1530                    ; constant _eusart_230400 = (_eusart_clock / (230400 * _eusart_factor)) - 1
1531 00000014 = _eusart_230400 equ 20
1532                    ; line_number = 59
1533                    ; constant _eusart_230400_low = _eusart_230400 & 0xff
1534 00000014 = _eusart_230400_low equ 20
1535                    ; line_number = 60
1536                    ; constant _eusart_230400_high = _eusart_230400 >> 8
1537 00000000 = _eusart_230400_high equ 0
1538                    ; line_number = 61
1539                    ; constant _eusart_230400_index = 7
1540 00000007 = _eusart_230400_index equ 7
1541                    ; # 406800 bits/sec:
1542                    ; line_number = 63
1543                    ; constant _eusart_460800 = (_eusart_clock / (460800 * _eusart_factor)) - 1
1544 00000009 = _eusart_460800 equ 9
1545                    ; line_number = 64
1546                    ; constant _eusart_460800_low = _eusart_460800 & 0xff
1547 00000009 = _eusart_460800_low equ 9
1548                    ; line_number = 65
1549                    ; constant _eusart_460800_high = _eusart_460800 >> 8
1550 00000000 = _eusart_460800_high equ 0
1551                    ; line_number = 66
1552                    ; constant _eusart_460800_index = 8
1553 00000008 = _eusart_460800_index equ 8
1554                    ; # 500000 bits/sec:
1555                    ; line_number = 68
1556                    ; constant _eusart_500000 = (_eusart_clock / (500000 * _eusart_factor)) - 1
1557 00000009 = _eusart_500000 equ 9
1558                    ; line_number = 69
1559                    ; constant _eusart_500000_low = _eusart_500000 & 0xff
1560 00000009 = _eusart_500000_low equ 9
1561                    ; line_number = 70
1562                    ; constant _eusart_500000_high = _eusart_500000 >> 8
1563 00000000 = _eusart_500000_high equ 0
1564                    ; line_number = 71
1565                    ; constant _eusart_500000_index = 9
1566 00000009 = _eusart_500000_index equ 9
1567                    ; # 576000 bits/sec (1MHz):
1568                    ; line_number = 73
1569                    ; constant _eusart_576000 = (_eusart_clock / (576000 * _eusart_factor)) - 1
1570 00000007 = _eusart_576000 equ 7
1571                    ; line_number = 74
1572                    ; constant _eusart_576000_low = _eusart_576000 & 0xff
1573 00000007 = _eusart_576000_low equ 7
1574                    ; line_number = 75
1575                    ; constant _eusart_576000_high = _eusart_576000 >> 8
1576 00000000 = _eusart_576000_high equ 0
1577                    ; line_number = 76
1578                    ; constant _eusart_576000_index = 10
1579 0000000a = _eusart_576000_index equ 10
1580                    ; # 625000 bits/sec:
1581                    ; line_number = 78
1582                    ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1
1583 00000007 = _eusart_625000 equ 7
1584                    ; line_number = 79
1585                    ; constant _eusart_625000_low = _eusart_625000 & 0xff
1586 00000007 = _eusart_625000_low equ 7
1587                    ; line_number = 80
1588                    ; constant _eusart_625000_high = _eusart_625000 >> 8
1589 00000000 = _eusart_625000_high equ 0
1590                    ; line_number = 81
1591                    ; constant _eusart_625000_index = 11
1592 0000000b = _eusart_625000_index equ 11
1593                    ; # 833333 bits/sec:
1594                    ; line_number = 83
1595                    ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1
1596 00000005 = _eusart_833333 equ 5
1597                    ; line_number = 84
1598                    ; constant _eusart_833333_low = _eusart_833333 & 0xff
1599 00000005 = _eusart_833333_low equ 5
1600                    ; line_number = 85
1601                    ; constant _eusart_833333_high = _eusart_833333 >> 8
1602 00000000 = _eusart_833333_high equ 0
1603                    ; line_number = 86
1604                    ; constant _eusart_833333_index = 12
1605 0000000c = _eusart_833333_index equ 12
1606                    ; # 921600 bits/sec:
1607                    ; line_number = 88
1608                    ; constant _eusart_921600 = (_eusart_clock / (921600 * _eusart_factor)) - 1
1609 00000004 = _eusart_921600 equ 4
1610                    ; line_number = 89
1611                    ; constant _eusart_921600_low = _eusart_921600 & 0xff
1612 00000004 = _eusart_921600_low equ 4
1613                    ; line_number = 90
1614                    ; constant _eusart_921600_high = _eusart_921600 >> 8
1615 00000000 = _eusart_921600_high equ 0
1616                    ; line_number = 91
1617                    ; constant _eusart_921600_index = 13
1618 0000000d = _eusart_921600_index equ 13
1619                    ; # 1000000 bits/sec (1MHz):
1620                    ; line_number = 93
1621                    ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1
1622 00000004 = _eusart_1000000 equ 4
1623                    ; line_number = 94
1624                    ; constant _eusart_1000000_low = _eusart_1000000 & 0xff
1625 00000004 = _eusart_1000000_low equ 4
1626                    ; line_number = 95
1627                    ; constant _eusart_1000000_high = _eusart_1000000 >> 8
1628 00000000 = _eusart_1000000_high equ 0
1629                    ; line_number = 96
1630                    ; constant _eusart_1000000_index = 14
1631 0000000e = _eusart_1000000_index equ 14
1632            
1633                    ; buffer = 'irproximity4'
1634                    ; line_number = 17
1635                    ; library _eusart exited
1636            
1637                    ; # The library of bus access routines for use by a PIC16F688.
1638                    ; line_number = 20
1639                    ; library rb2bus_pic16f688 entered
1640            
1641                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1642                    ; # All rights reserved.
1643            
1644                    ; # This module provides some procedures for accessing a RoboBricks2
1645                    ; # bus via a UART.  It is speicialized for the PIC16F688.
1646                    ; #
1647                    ; # It defines the following procedure:
1648                    ; #
1649                    ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
1650                    ; #                                for bus access.
1651            
1652                    ; # All other bus access procedures are defined in the {rb2bus} library
1653                    ; # which is accessed below:
1654                    ; buffer = 'rb2bus_pic16f688'
1655                    ; line_number = 16
1656                    ; library rb2bus entered
1657            
1658                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1659                    ; # All rights reserved.
1660            
1661                    ; # This module provides some procedures for accessing a RoboBricks2
1662                    ; # bus via a UART.
1663                    ; #
1664                    ; # This procedure defines the following procedures:
1665                    ; #
1666                    ; # {rb2bus_select_wait}  This procedure waits for the module to become selected
1667                    ; # {rb2bus_deselect}     This procedure causes this module to be deselected.
1668                    ; # {rb2bus_byte_get}     This procedure will get a byte form the bus.
1669                    ; # {rb2bus_byte_put}     This procedure will send a byte to the bus.
1670                    ; #
1671                    ; # The global variable {rb2bus_error} is set to 1 whenever the procedures
1672                    ; # feel like there is a command decoding error.
1673                    ; #
1674                    ; # The way to use these procedures is quite as follows:
1675                    ; #
1676                    ; #    # Comamnd byte variable:
1677                    ; #    local command byte
1678                    ; #
1679                    ; #    # Other initialize code goes here:
1680                    ; #
1681                    ; #    # Process commands from bus master:
1682                    ; #    loop_forever
1683                    ; #        rb2bus_error := _true
1684                    ; #	 while rb2bus_error
1685                    ; #	     call rb2bus_select_wait()
1686                    ; #	     command := rb2bus_byte_get()
1687                    ; #
1688                    ; #        # Decode command:
1689                    ; #	 switch command >> 6
1690                    ; #	   ...
1691                    ; #             case 5:
1692                    ; #	        # 0000 0101 (Foo command):
1693                    ; #	          if !rb2bus_error
1694                    ; #		      # Do foo command:
1695                    ; #
1696                    ; # The key concept behind these procedures is to make command
1697                    ; # decoding for the slave module easy.  If the slave module
1698                    ; # is in the middle of command decoding and the master suddenly
1699                    ; # sends out a module select command, we need to gracefully recover
1700                    ; # from the problem.  A command should only be executed if
1701                    ; # {rb2bus_error} is not set.  If {rb2bus_error} is set, we want
1702                    ; # to gracefully get back to the beginning of the loop without
1703                    ; # doing any damage.  Once {rb2bus_error} is set, all calls to
1704                    ; # {rb2bus_byte_get} return 0 and all calls to {rb2bus_byte_put}
1705                    ; # do nothing.  At the beginning of the loop, {rb2bus_error} is
1706                    ; # cleared by the {rb2bus_select_wait}() procedure and we have
1707                    ; # recovered from the situation.
1708            
1709                    ; buffer = 'rb2bus'
1710                    ; line_number = 54
1711                    ; library rb2_constants entered
1712            
1713                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
1714                    ; # All rights reserved.
1715            
1716                    ; buffer = 'rb2_constants'
1717                    ; line_number = 6
1718                    ; constant rb2_ok = 0xa5
1719 000000a5 = rb2_ok equ 165
1720            
1721                    ; line_number = 8
1722                    ; constant rb2_common_address_set = 0xfc
1723 000000fc = rb2_common_address_set equ 252
1724                    ; line_number = 9
1725                    ; constant rb2_common_id_next = 0xfd
1726 000000fd = rb2_common_id_next equ 253
1727                    ; line_number = 10
1728                    ; constant rb2_common_id_start = 0xfe
1729 000000fe = rb2_common_id_start equ 254
1730                    ; line_number = 11
1731                    ; constant rb2_common_deselect = 0xff
1732 000000ff = rb2_common_deselect equ 255
1733            
1734                    ; line_number = 13
1735                    ; constant rb2_laser1_address = 1
1736 00000001 = rb2_laser1_address equ 1
1737                    ; line_number = 14
1738                    ; constant rb2_laser1_sense_read = 0
1739 00000000 = rb2_laser1_sense_read equ 0
1740                    ; line_number = 15
1741                    ; constant rb2_laser1_enable_read = 1
1742 00000001 = rb2_laser1_enable_read equ 1
1743                    ; line_number = 16
1744                    ; constant rb2_laser1_enable_clear = 2
1745 00000002 = rb2_laser1_enable_clear equ 2
1746                    ; line_number = 17
1747                    ; constant rb2_laser1_enable_set = 3
1748 00000003 = rb2_laser1_enable_set equ 3
1749            
1750                    ; line_number = 19
1751                    ; constant rb2_minimotor2_address = 2
1752 00000002 = rb2_minimotor2_address equ 2
1753                    ; line_number = 20
1754                    ; constant rb2_midimotor2_address = 3
1755 00000003 = rb2_midimotor2_address equ 3
1756                    ; line_number = 21
1757                    ; constant rb2_motor0_speed_get = 0
1758 00000000 = rb2_motor0_speed_get equ 0
1759                    ; line_number = 22
1760                    ; constant rb2_motor0_speed_set = 1
1761 00000001 = rb2_motor0_speed_set equ 1
1762                    ; line_number = 23
1763                    ; constant rb2_motor1_speed_get = 2
1764 00000002 = rb2_motor1_speed_get equ 2
1765                    ; line_number = 24
1766                    ; constant rb2_motor1_speed_set = 3
1767 00000003 = rb2_motor1_speed_set equ 3
1768                    ; line_number = 25
1769                    ; constant rb2_duty_cycle_get = 4
1770 00000004 = rb2_duty_cycle_get equ 4
1771                    ; line_number = 26
1772                    ; constant rb2_duty_cycle_set = 8
1773 00000008 = rb2_duty_cycle_set equ 8
1774            
1775                    ; line_number = 28
1776                    ; constant rb2_irdistance2_address = 4
1777 00000004 = rb2_irdistance2_address equ 4
1778                    ; line_number = 29
1779                    ; constant rb2_irdistance2_raw0_get = 0
1780 00000000 = rb2_irdistance2_raw0_get equ 0
1781                    ; line_number = 30
1782                    ; constant rb2_irdistance2_raw1_get = 1
1783 00000001 = rb2_irdistance2_raw1_get equ 1
1784                    ; line_number = 31
1785                    ; constant rb2_irdistance2_smooth0_get = 2
1786 00000002 = rb2_irdistance2_smooth0_get equ 2
1787                    ; line_number = 32
1788                    ; constant rb2_irdistance2_smooth1_get = 3
1789 00000003 = rb2_irdistance2_smooth1_get equ 3
1790                    ; line_number = 33
1791                    ; constant rb2_irdistance2_linear0_get = 4
1792 00000004 = rb2_irdistance2_linear0_get equ 4
1793                    ; line_number = 34
1794                    ; constant rb2_irdistance2_linear1_get = 6
1795 00000006 = rb2_irdistance2_linear1_get equ 6
1796            
1797                    ; line_number = 36
1798                    ; constant rb2_shaft2_address = 5
1799 00000005 = rb2_shaft2_address equ 5
1800                    ; line_number = 37
1801                    ; constant rb2_shaft2_count_latch = 0
1802 00000000 = rb2_shaft2_count_latch equ 0
1803                    ; line_number = 38
1804                    ; constant rb2_shaft2_count_clear = 1
1805 00000001 = rb2_shaft2_count_clear equ 1
1806                    ; line_number = 39
1807                    ; constant rb2_shaft2_shaft0_high_get = 2
1808 00000002 = rb2_shaft2_shaft0_high_get equ 2
1809                    ; line_number = 40
1810                    ; constant rb2_shaft2_shaft1_high_get = 3
1811 00000003 = rb2_shaft2_shaft1_high_get equ 3
1812                    ; line_number = 41
1813                    ; constant rb2_shaft2_continue_get = 4
1814 00000004 = rb2_shaft2_continue_get equ 4
1815                    ; line_number = 42
1816                    ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
1817 00000004 = rb2_shaft2_shaft0_low_get equ 4
1818                    ; line_number = 43
1819                    ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
1820 00000004 = rb2_shaft2_shaft1_low_get equ 4
1821                    ; line_number = 44
1822                    ; constant rb2_shaft2_x_get = 0x10
1823 00000010 = rb2_shaft2_x_get equ 16
1824                    ; line_number = 45
1825                    ; constant rb2_shaft2_y_get = 0x11
1826 00000011 = rb2_shaft2_y_get equ 17
1827                    ; line_number = 46
1828                    ; constant rb2_shaft2_bearing16_get = 0x12
1829 00000012 = rb2_shaft2_bearing16_get equ 18
1830                    ; line_number = 47
1831                    ; constant rb2_shaft2_bearing8_get = 0x13
1832 00000013 = rb2_shaft2_bearing8_get equ 19
1833                    ; line_number = 48
1834                    ; constant rb2_shaft2_target_x_get = 0x14
1835 00000014 = rb2_shaft2_target_x_get equ 20
1836                    ; line_number = 49
1837                    ; constant rb2_shaft2_target_y_get = 0x15
1838 00000015 = rb2_shaft2_target_y_get equ 21
1839                    ; line_number = 50
1840                    ; constant rb2_shaft2_target_bearing16_get = 0x16
1841 00000016 = rb2_shaft2_target_bearing16_get equ 22
1842                    ; line_number = 51
1843                    ; constant rb2_shaft2_target_bearing8_get = 0x17
1844 00000017 = rb2_shaft2_target_bearing8_get equ 23
1845                    ; line_number = 52
1846                    ; constant rb2_shaft2_target_distance_get = 0x18
1847 00000018 = rb2_shaft2_target_distance_get equ 24
1848                    ; line_number = 53
1849                    ; constant rb2_shaft2_wheel_spacing_get = 0x19
1850 00000019 = rb2_shaft2_wheel_spacing_get equ 25
1851                    ; line_number = 54
1852                    ; constant rb2_shaft2_wheel_ticks_get = 0x1a
1853 0000001a = rb2_shaft2_wheel_ticks_get equ 26
1854                    ; line_number = 55
1855                    ; constant rb2_shaft2_wheel_diameter_get = 0x1b
1856 0000001b = rb2_shaft2_wheel_diameter_get equ 27
1857                    ; line_number = 56
1858                    ; constant rb2_shaft2_count_iteration_get = 0x1c
1859 0000001c = rb2_shaft2_count_iteration_get equ 28
1860                    ; line_number = 57
1861                    ; constant rb2_shaft2_counter_signs_get = 0x1d
1862 0000001d = rb2_shaft2_counter_signs_get equ 29
1863                    ; line_number = 58
1864                    ; constant rb2_shaft2_x_set = 0x20
1865 00000020 = rb2_shaft2_x_set equ 32
1866                    ; line_number = 59
1867                    ; constant rb2_shaft2_y_set = 0x21
1868 00000021 = rb2_shaft2_y_set equ 33
1869                    ; line_number = 60
1870                    ; constant rb2_shaft2_bearing16_set = 0x22
1871 00000022 = rb2_shaft2_bearing16_set equ 34
1872                    ; line_number = 61
1873                    ; constant rb2_shaft2_navigation_latch = 0x23
1874 00000023 = rb2_shaft2_navigation_latch equ 35
1875                    ; line_number = 62
1876                    ; constant rb2_shaft2_target_x_set = 0x24
1877 00000024 = rb2_shaft2_target_x_set equ 36
1878                    ; line_number = 63
1879                    ; constant rb2_shaft2_target_y_set = 0x25
1880 00000025 = rb2_shaft2_target_y_set equ 37
1881                    ; line_number = 64
1882                    ; constant rb2_shaft2_wheel_spacing_set = 0x29
1883 00000029 = rb2_shaft2_wheel_spacing_set equ 41
1884                    ; line_number = 65
1885                    ; constant rb2_shaft2_wheel_ticks_set = 0x2a
1886 0000002a = rb2_shaft2_wheel_ticks_set equ 42
1887                    ; line_number = 66
1888                    ; constant rb2_shaft2_wheel_diameter_set = 0x2b
1889 0000002b = rb2_shaft2_wheel_diameter_set equ 43
1890                    ; line_number = 67
1891                    ; constant rb2_shaft2_counter_signs_set = 0x2c
1892 0000002c = rb2_shaft2_counter_signs_set equ 44
1893            
1894                    ; line_number = 69
1895                    ; constant rb2_orient5_address = 6
1896 00000006 = rb2_orient5_address equ 6
1897            
1898                    ; line_number = 71
1899                    ; constant rb2_compass8_address = 7
1900 00000007 = rb2_compass8_address equ 7
1901            
1902                    ; line_number = 73
1903                    ; constant rb2_io8_address = 8
1904 00000008 = rb2_io8_address equ 8
1905                    ; line_number = 74
1906                    ; constant rb2_io8_digital8_get = 0
1907 00000000 = rb2_io8_digital8_get equ 0
1908                    ; line_number = 75
1909                    ; constant rb2_io8_digital8_set = 1
1910 00000001 = rb2_io8_digital8_set equ 1
1911                    ; line_number = 76
1912                    ; constant rb2_io8_direction_get = 2
1913 00000002 = rb2_io8_direction_get equ 2
1914                    ; line_number = 77
1915                    ; constant rb2_io8_direction_set = 3
1916 00000003 = rb2_io8_direction_set equ 3
1917                    ; line_number = 78
1918                    ; constant rb2_io8_analog_mask_get = 4
1919 00000004 = rb2_io8_analog_mask_get equ 4
1920                    ; line_number = 79
1921                    ; constant rb2_io8_analog_mask_set = 5
1922 00000005 = rb2_io8_analog_mask_set equ 5
1923                    ; line_number = 80
1924                    ; constant rb2_io8_analog8_get = 0x10
1925 00000010 = rb2_io8_analog8_get equ 16
1926                    ; line_number = 81
1927                    ; constant rb2_io8_analog10_get = 0x18
1928 00000018 = rb2_io8_analog10_get equ 24
1929                    ; line_number = 82
1930                    ; constant rb2_low_set = 0x20
1931 00000020 = rb2_low_set equ 32
1932                    ; line_number = 83
1933                    ; constant rb2_high_set = 0x30
1934 00000030 = rb2_high_set equ 48
1935            
1936                    ; line_number = 85
1937                    ; constant rb2_sonar2_address = 9
1938 00000009 = rb2_sonar2_address equ 9
1939            
1940                    ; line_number = 87
1941                    ; constant rb2_voice1_address = 10
1942 0000000a = rb2_voice1_address equ 10
1943            
1944                    ; line_number = 89
1945                    ; constant rb2_servo4_address = 11
1946 0000000b = rb2_servo4_address equ 11
1947                    ; line_number = 90
1948                    ; constant rb2_servo4_servo0 = 0
1949 00000000 = rb2_servo4_servo0 equ 0
1950                    ; line_number = 91
1951                    ; constant rb2_servo4_servo1 = 1
1952 00000001 = rb2_servo4_servo1 equ 1
1953                    ; line_number = 92
1954                    ; constant rb2_servo4_servo2 = 2
1955 00000002 = rb2_servo4_servo2 equ 2
1956                    ; line_number = 93
1957                    ; constant rb2_servo4_servo3 = 3
1958 00000003 = rb2_servo4_servo3 equ 3
1959                    ; line_number = 94
1960                    ; constant rb2_servo4_quick_set = 0
1961 00000000 = rb2_servo4_quick_set equ 0
1962                    ; line_number = 95
1963                    ; constant rb2_servo4_quick_low = 0
1964 00000000 = rb2_servo4_quick_low equ 0
1965                    ; line_number = 96
1966                    ; constant rb2_servo4_quick_center = 40
1967 00000028 = rb2_servo4_quick_center equ 40
1968                    ; line_number = 97
1969                    ; constant rb2_servo4_quick_high = 0x7c
1970 0000007c = rb2_servo4_quick_high equ 124
1971                    ; line_number = 98
1972                    ; constant rb2_servo4_high_low_set = 0x80
1973 00000080 = rb2_servo4_high_low_set equ 128
1974                    ; line_number = 99
1975                    ; constant rb2_servo4_short_high_low_set = 0x84
1976 00000084 = rb2_servo4_short_high_low_set equ 132
1977                    ; line_number = 100
1978                    ; constant rb2_servo4_high_set = 0x88
1979 00000088 = rb2_servo4_high_set equ 136
1980                    ; line_number = 101
1981                    ; constant rb2_servo4_low_set = 0x8c
1982 0000008c = rb2_servo4_low_set equ 140
1983                    ; line_number = 102
1984                    ; constant rb2_servo4_enables_set = 0x90
1985 00000090 = rb2_servo4_enables_set equ 144
1986                    ; line_number = 103
1987                    ; constant rb2_servo4_enable0 = 1
1988 00000001 = rb2_servo4_enable0 equ 1
1989                    ; line_number = 104
1990                    ; constant rb2_servo4_enable1 = 2
1991 00000002 = rb2_servo4_enable1 equ 2
1992                    ; line_number = 105
1993                    ; constant rb2_servo4_enable2 = 4
1994 00000004 = rb2_servo4_enable2 equ 4
1995                    ; line_number = 106
1996                    ; constant rb2_servo4_enable3 = 8
1997 00000008 = rb2_servo4_enable3 equ 8
1998                    ; line_number = 107
1999                    ; constant rb2_servo4_enable_all = 0xf
2000 0000000f = rb2_servo4_enable_all equ 15
2001                    ; line_number = 108
2002                    ; constant rb2_servo4_enable_none = 0
2003 00000000 = rb2_servo4_enable_none equ 0
2004                    ; line_number = 109
2005                    ; constant rb2_servo4_high_get = 0xa0
2006 000000a0 = rb2_servo4_high_get equ 160
2007                    ; line_number = 110
2008                    ; constant rb2_servo4_low_get = 0xa4
2009 000000a4 = rb2_servo4_low_get equ 164
2010                    ; line_number = 111
2011                    ; constant rb2_servo4_enables_get = 0xa8
2012 000000a8 = rb2_servo4_enables_get equ 168
2013            
2014                    ; line_number = 113
2015                    ; constant rb2_controller28_address = 28
2016 0000001c = rb2_controller28_address equ 28
2017            
2018                    ; line_number = 115
2019                    ; constant rb2_lcd32_address = 32
2020 00000020 = rb2_lcd32_address equ 32
2021                    ; line_number = 116
2022                    ; constant rb2_lcd32_row_set = 4
2023 00000004 = rb2_lcd32_row_set equ 4
2024                    ; line_number = 117
2025                    ; constant rb2_lcd32_row0_set = rb2_lcd32_row_set | 0
2026 00000004 = rb2_lcd32_row0_set equ 4
2027                    ; line_number = 118
2028                    ; constant rb2_lcd32_row1_set = rb2_lcd32_row_set | 1
2029 00000005 = rb2_lcd32_row1_set equ 5
2030                    ; line_number = 119
2031                    ; constant rb2_lcd32_row2_set = rb2_lcd32_row_set | 2
2032 00000006 = rb2_lcd32_row2_set equ 6
2033                    ; line_number = 120
2034                    ; constant rb2_lcd32_row3_set = rb2_lcd32_row_set | 3
2035 00000007 = rb2_lcd32_row3_set equ 7
2036                    ; line_number = 121
2037                    ; constant rb2_lcd32_new_line = 0xa
2038 0000000a = rb2_lcd32_new_line equ 10
2039                    ; line_number = 122
2040                    ; constant rb2_lcd32_form_feed = 0xc
2041 0000000c = rb2_lcd32_form_feed equ 12
2042                    ; line_number = 123
2043                    ; constant rb2_lcd32_carriage_return = 0xd
2044 0000000d = rb2_lcd32_carriage_return equ 13
2045                    ; line_number = 124
2046                    ; constant rb2_lcd32_column_set = 0x10
2047 00000010 = rb2_lcd32_column_set equ 16
2048            
2049            
2050                    ; buffer = 'rb2bus'
2051                    ; line_number = 54
2052                    ; library rb2_constants exited
2053                    ; line_number = 55
2054                    ; library rb2bus_globals entered
2055            
2056                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
2057                    ; # All rights reserved.
2058            
2059                    ; # These are the global variables used by both the {rb2bus} and
2060                    ; # the various {rb2bus_picXXXX} libraries.  Poll based firmware
2061                    ; # uses both libraries, whereas interrupt driven software only
2062                    ; # uses the {rb2bus_picXXX} libraries.
2063            
2064                    ; buffer = 'rb2bus_globals'
2065                    ; line_number = 11
2066                    ; global rb2bus_selected bit	# 
2067 0000006f = rb2bus_selected___byte equ globals___0+79
2068 00000000 = rb2bus_selected___bit equ 0
2069                    ; line_number = 12
2070                    ; global rb2bus_error bit		# Global error bit
2071 0000006f = rb2bus_error___byte equ globals___0+79
2072 00000001 = rb2bus_error___bit equ 1
2073                    ; line_number = 13
2074                    ; global rb2bus_address byte	# Bus address to respond to
2075 00000020 = rb2bus_address equ globals___0
2076                    ; line_number = 14
2077                    ; global rb2bus_index byte	# Index into id information
2078 00000021 = rb2bus_index equ globals___0+1
2079            
2080            
2081                    ; buffer = 'rb2bus'
2082                    ; line_number = 55
2083                    ; library rb2bus_globals exited
2084            
2085                    ; Delaying code generation for procedure  rb2bus_select_wait
2086                    ; Delaying code generation for procedure  rb2bus_deselect
2087                    ; Delaying code generation for procedure  rb2bus_byte_get
2088                    ; Delaying code generation for procedure  rb2bus_byte_put
2089                    ; Delaying code generation for procedure  rb2bus_command
2090            
2091                    ; buffer = 'rb2bus_pic16f688'
2092                    ; line_number = 16
2093                    ; library rb2bus exited
2094            
2095                    ; Delaying code generation for procedure  rb2bus_initialize
2096                    ; line_number = 62
2097                    ; constant rb2bus_eedata_address = 0xfe
2098 000000fe = rb2bus_eedata_address equ 254
2099            
2100                    ; Delaying code generation for procedure  rb2bus_eedata_read
2101                    ; Delaying code generation for procedure  rb2bus_eedata_write
2102            
2103                    ; buffer = 'irproximity4'
2104                    ; line_number = 20
2105                    ; library rb2bus_pic16f688 exited
2106            
2107                    ; # This module uses 20MHz crystal oscillator; hence mode EC=External Clock:
2108            
2109                    ; # All pins on this package are used except RA3.
2110                    ; line_number = 26
2111                    ; package pdip
2112                    ; line_number = 27
2113                    ; pin 1 = power_supply
2114                    ; line_number = 28
2115                    ;  pin 2 = osc1
2116                    ; line_number = 29
2117                    ;  pin 3 = ra4_nc
2118                    ; line_number = 30
2119                    ;  pin 4 = ra3_nc, name=nc1
2120 00000005 = nc1___byte equ _porta
2121 00000003 = nc1___bit equ 3
2122                    ; line_number = 31
2123                    ;  pin 5 = rx, name=rx, bit=rx_bit
2124 00000007 = rx___byte equ _portc
2125 00000005 = rx___bit equ 5
2126 00000005 = rx_bit equ 5
2127                    ; line_number = 32
2128                    ;  pin 6 = tx, name=tx, bit=tx_bit
2129 00000007 = tx___byte equ _portc
2130 00000004 = tx___bit equ 4
2131 00000004 = tx_bit equ 4
2132                    ; line_number = 33
2133                    ;  pin 7 = rc3_nc
2134                    ; line_number = 34
2135                    ;  pin 8 = rc2_in, name=in3, mask=in3_mask, bit=in3_bit	# N5
2136 00000007 = in3___byte equ _portc
2137 00000002 = in3___bit equ 2
2138 00000004 = in3_mask equ 4
2139 00000002 = in3_bit equ 2
2140                    ; line_number = 35
2141                    ;  pin 9 = rc1_in, name=in2, mask=in2_mask, bit=in2_bit	# N4
2142 00000007 = in2___byte equ _portc
2143 00000001 = in2___bit equ 1
2144 00000002 = in2_mask equ 2
2145 00000001 = in2_bit equ 1
2146                    ; line_number = 36
2147                    ;  pin 10 = rc0_in, name=in1, mask=in1_mask, bit=in1_bit	# N3
2148 00000007 = in1___byte equ _portc
2149 00000000 = in1___bit equ 0
2150 00000001 = in1_mask equ 1
2151 00000000 = in1_bit equ 0
2152                    ; line_number = 37
2153                    ;  pin 11 = ra2_in, name=in0, mask=in0_mask, bit=in0_bit	# N2
2154 00000005 = in0___byte equ _porta
2155 00000002 = in0___bit equ 2
2156 00000004 = in0_mask equ 4
2157 00000002 = in0_bit equ 2
2158                    ; line_number = 38
2159                    ;  pin 12 = ra1_nc
2160                    ; line_number = 39
2161                    ;  pin 13 = ra0_nc
2162                    ; line_number = 40
2163                    ;  pin 14 = ground
2164            
2165                    ; line_number = 42
2166                    ; origin 0
2167   0000 :           org     0
2168            
2169                    ; line_number = 44
2170                    ;info   44, 0
2171                    ; procedure main
2172   0000 :   main:
2173                    ; Initialize some registers
2174 0000 019f          clrf    _adcon0
2175 0001 1683          bsf     __rp0___byte, __rp0___bit
2176 0002 0191          clrf    _ansel
2177 0003 3007          movlw   7
2178 0004 1283          bcf     __rp0___byte, __rp0___bit
2179 0005 0099          movwf   _cmcon0
2180 0006 303f          movlw   63
2181 0007 1683          bsf     __rp0___byte, __rp0___bit
2182 0008 0085          movwf   _trisa
2183 0009 303f          movlw   63
2184 000a 0087          movwf   _trisc
2185                    ; arguments_none
2186                    ; line_number = 46
2187                    ;  returns_nothing
2188            
2189                    ; # This procedure initializes everything and does command decoding.
2190            
2191                    ; line_number = 50
2192                    ;  local command byte
2193 0000002c = main__command equ globals___0+12
2194                    ; line_number = 51
2195                    ;  local result byte
2196 0000002d = main__result equ globals___0+13
2197                    ; line_number = 52
2198                    ;  local mask byte
2199 0000002e = main__mask equ globals___0+14
2200            
2201                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:X0=cu=>X0)
2202                    ; line_number = 54
2203                    ;  call rb2bus_initialize(19)
2204                    ;info   54, 11
2205 000b 3013          movlw   19
2206 000c 1283          bcf     __rp0___byte, __rp0___bit
2207 000d 212a          call    rb2bus_initialize
2208                    ; line_number = 55
2209                    ;  mask := 0xf
2210                    ;info   55, 14
2211 000e 300f          movlw   15
2212 000f 00ae          movwf   main__mask
2213            
2214                    ; line_number = 57
2215                    ;  loop_forever start
2216   0010 :   main__1:
2217                    ; # Make sure that we have been selected:
2218                    ; line_number = 59
2219                    ;  rb2bus_error := _true
2220                    ;info   59, 16
2221 0010 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
2222                    ; line_number = 60
2223                    ;  while rb2bus_error start
2224   0011 :   main__2:
2225                    ;info   60, 17
2226                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2227                    ; No 1TEST: true.size=4 false.size=0
2228                    ; No 2TEST: true.size=4 false.size=0
2229                    ; 1GOTO: Single test with GOTO
2230 0011 1cef          btfss   rb2bus_error___byte, rb2bus_error___bit
2231 0012 2817          goto    main__3
2232                    ; line_number = 61
2233                    ; call rb2bus_select_wait()
2234                    ;info   61, 19
2235 0013 208d          call    rb2bus_select_wait
2236                    ; line_number = 62
2237                    ;  command := rb2bus_byte_get()
2238                    ;info   62, 20
2239 0014 20ac          call    rb2bus_byte_get
2240 0015 00ac          movwf   main__command
2241            
2242 0016 2811          goto    main__2
2243                    ; Recombine size1 = 0 || size2 = 0
2244   0017 :   main__3:
2245                    ; line_number = 60
2246                    ;  while rb2bus_error done
2247                    ; line_number = 64
2248                    ; switch command >> 6 start
2249                    ;info   64, 23
2250                    ; switch_before:(data:00=uu=>00 code:X0=cu=>X0) size=7
2251 0017 3000          movlw   main__23>>8
2252 0018 008a          movwf   __pclath
2253 0000002f = main__24 equ globals___0+15
2254 0019 0e2c          swapf   main__command,w
2255 001a 00af          movwf   main__24
2256 001b 0caf          rrf     main__24,f
2257 001c 0c2f          rrf     main__24,w
2258 001d 3903          andlw   3
2259                    ; switch after expression:(data:00=uu=>00 code:X0=cu=>X0)
2260 001e 3e20          addlw   main__23
2261 001f 0082          movwf   __pcl
2262                    ; page_group 4
2263   0020 :   main__23:
2264 0020 2824          goto    main__21
2265 0021 286a          goto    main__25
2266 0022 286a          goto    main__25
2267 0023 2857          goto    main__22
2268                    ; line_number = 65
2269                    ; case 0
2270   0024 :   main__21:
2271                    ; # 00xx xxxx:
2272                    ; line_number = 67
2273                    ;  switch (command >> 3) & 7 start
2274                    ;info   67, 36
2275                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2276                    ; line_number = 91
2277                    ; case_maximum 7
2278 0024 3000          movlw   main__14>>8
2279 0025 008a          movwf   __pclath
2280 0000002f = main__15 equ globals___0+15
2281 0026 0c2c          rrf     main__command,w
2282 0027 00af          movwf   main__15
2283 0028 0caf          rrf     main__15,f
2284 0029 0c2f          rrf     main__15,w
2285 002a 3907          andlw   7
2286                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2287 002b 3e2d          addlw   main__14
2288 002c 0082          movwf   __pcl
2289                    ; page_group 8
2290   002d :   main__14:
2291 002d 2835          goto    main__13
2292 002e 2856          goto    main__16
2293 002f 2856          goto    main__16
2294 0030 2856          goto    main__16
2295 0031 2856          goto    main__16
2296 0032 2856          goto    main__16
2297 0033 2856          goto    main__16
2298 0034 2856          goto    main__16
2299                    ; line_number = 68
2300                    ; case 0
2301   0035 :   main__13:
2302                    ; # 0000 0xxx:
2303                    ; line_number = 70
2304                    ;  switch command & 7 start
2305                    ;info   70, 53
2306                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2307                    ; line_number = 90
2308                    ; case_maximum 7
2309 0035 3000          movlw   main__11>>8
2310 0036 008a          movwf   __pclath
2311 0037 3007          movlw   7
2312 0038 052c          andwf   main__command,w
2313                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2314 0039 3e3b          addlw   main__11
2315 003a 0082          movwf   __pcl
2316                    ; page_group 8
2317   003b :   main__11:
2318 003b 2843          goto    main__8
2319 003c 2851          goto    main__9
2320 003d 2854          goto    main__10
2321 003e 2856          goto    main__12
2322 003f 2856          goto    main__12
2323 0040 2856          goto    main__12
2324 0041 2856          goto    main__12
2325 0042 2856          goto    main__12
2326                    ; line_number = 71
2327                    ; case 0
2328   0043 :   main__8:
2329                    ; # 0000 0000 (Proximity Get):
2330                    ; line_number = 73
2331                    ;  result := 0
2332                    ;info   73, 67
2333 0043 01ad          clrf    main__result
2334                    ; line_number = 74
2335                    ;  if in0 start
2336                    ;info   74, 68
2337                    ; =>bit_code_emit@symbol(): sym=in0
2338                    ; 1TEST: Single test with code in skip slot
2339 0044 1905          btfsc   in0___byte, in0___bit
2340                    ; line_number = 75
2341                    ; result@0 := _true
2342                    ;info   75, 69
2343 0000002d = main__select__4___byte equ main__result
2344 00000000 = main__select__4___bit equ 0
2345 0045 142d          bsf     main__select__4___byte, main__select__4___bit
2346                    ; Recombine size1 = 0 || size2 = 0
2347                    ; line_number = 74
2348                    ;  if in0 done
2349                    ; line_number = 76
2350                    ; if in1 start
2351                    ;info   76, 70
2352                    ; =>bit_code_emit@symbol(): sym=in1
2353                    ; 1TEST: Single test with code in skip slot
2354 0046 1807          btfsc   in1___byte, in1___bit
2355                    ; line_number = 77
2356                    ; result@1 := _true
2357                    ;info   77, 71
2358 0000002d = main__select__5___byte equ main__result
2359 00000001 = main__select__5___bit equ 1
2360 0047 14ad          bsf     main__select__5___byte, main__select__5___bit
2361                    ; Recombine size1 = 0 || size2 = 0
2362                    ; line_number = 76
2363                    ; if in1 done
2364                    ; line_number = 78
2365                    ; if in2 start
2366                    ;info   78, 72
2367                    ; =>bit_code_emit@symbol(): sym=in2
2368                    ; 1TEST: Single test with code in skip slot
2369 0048 1887          btfsc   in2___byte, in2___bit
2370                    ; line_number = 79
2371                    ; result@2 := _true
2372                    ;info   79, 73
2373 0000002d = main__select__6___byte equ main__result
2374 00000002 = main__select__6___bit equ 2
2375 0049 152d          bsf     main__select__6___byte, main__select__6___bit
2376                    ; Recombine size1 = 0 || size2 = 0
2377                    ; line_number = 78
2378                    ; if in2 done
2379                    ; line_number = 80
2380                    ; if in3 start
2381                    ;info   80, 74
2382                    ; =>bit_code_emit@symbol(): sym=in3
2383                    ; 1TEST: Single test with code in skip slot
2384 004a 1907          btfsc   in3___byte, in3___bit
2385                    ; line_number = 81
2386                    ; result@3 := _true
2387                    ;info   81, 75
2388 0000002d = main__select__7___byte equ main__result
2389 00000003 = main__select__7___bit equ 3
2390 004b 15ad          bsf     main__select__7___byte, main__select__7___bit
2391                    ; Recombine size1 = 0 || size2 = 0
2392                    ; line_number = 80
2393                    ; if in3 done
2394                    ; line_number = 82
2395                    ; result := result & mask
2396                    ;info   82, 76
2397 004c 082e          movf    main__mask,w
2398 004d 05ad          andwf   main__result,f
2399                    ; line_number = 83
2400                    ;  call rb2bus_byte_put(result)
2401                    ;info   83, 78
2402 004e 082d          movf    main__result,w
2403 004f 20ce          call    rb2bus_byte_put
2404 0050 2856          goto    main__12
2405                    ; line_number = 84
2406                    ; case 1
2407   0051 :   main__9:
2408                    ; # 0000 0001 (Mask Set):
2409                    ; line_number = 86
2410                    ;  mask := rb2bus_byte_get()
2411                    ;info   86, 81
2412 0051 20ac          call    rb2bus_byte_get
2413 0052 00ae          movwf   main__mask
2414 0053 2856          goto    main__12
2415                    ; line_number = 87
2416                    ; case 2
2417   0054 :   main__10:
2418                    ; # 0000 0010 (Mask Get):
2419                    ; line_number = 89
2420                    ;  call rb2bus_byte_put(mask)
2421                    ;info   89, 84
2422 0054 082e          movf    main__mask,w
2423 0055 20ce          call    rb2bus_byte_put
2424   0056 :   main__12:
2425                    ; line_number = 70
2426                    ;  switch command & 7 done
2427   0056 :   main__16:
2428                    ; line_number = 67
2429                    ;  switch (command >> 3) & 7 done
2430 0056 286a          goto    main__25
2431                    ; line_number = 92
2432                    ; case 3
2433   0057 :   main__22:
2434                    ; # 11xx xxxx:
2435                    ; line_number = 94
2436                    ;  switch (command >> 3) & 7 start
2437                    ;info   94, 87
2438                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2439 0057 3000          movlw   main__18>>8
2440 0058 008a          movwf   __pclath
2441 0000002f = main__19 equ globals___0+15
2442 0059 0c2c          rrf     main__command,w
2443 005a 00af          movwf   main__19
2444 005b 0caf          rrf     main__19,f
2445 005c 0c2f          rrf     main__19,w
2446 005d 3907          andlw   7
2447                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2448 005e 3e60          addlw   main__18
2449 005f 0082          movwf   __pcl
2450                    ; page_group 8
2451   0060 :   main__18:
2452 0060 286a          goto    main__20
2453 0061 286a          goto    main__20
2454 0062 286a          goto    main__20
2455 0063 286a          goto    main__20
2456 0064 286a          goto    main__20
2457 0065 286a          goto    main__20
2458 0066 286a          goto    main__20
2459 0067 2868          goto    main__17
2460                    ; line_number = 95
2461                    ; case 7
2462   0068 :   main__17:
2463                    ; # 1111 1xxx:
2464                    ; line_number = 97
2465                    ;  call rb2bus_command(command)
2466                    ;info   97, 104
2467 0068 082c          movf    main__command,w
2468 0069 20e2          call    rb2bus_command
2469            
2470            
2471   006a :   main__20:
2472                    ; line_number = 94
2473                    ;  switch (command >> 3) & 7 done
2474   006a :   main__25:
2475                    ; line_number = 64
2476                    ; switch command >> 6 done
2477                    ; line_number = 57
2478                    ;  loop_forever wrap-up
2479 006a 2810          goto    main__1
2480                    ; line_number = 57
2481                    ;  loop_forever done
2482                    ; delay after procedure statements=non-uniform
2483            
2484            
2485            
2486            
2487                    ; line_number = 100
2488                    ;info   100, 107
2489                    ; procedure wait
2490   006b :   wait:
2491                    ; arguments_none
2492                    ; line_number = 102
2493                    ;  returns_nothing
2494            
2495                    ; # This procedure is repeatably called whenever the software
2496                    ; # is waiting for a byte to arrive from the bus.
2497            
2498                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
2499                    ; line_number = 107
2500                    ;  do_nothing
2501                    ;info   107, 107
2502            
2503            
2504                    ; delay after procedure statements=non-uniform
2505                    ; Implied return
2506 006b 3400          retlw   0
2507            
2508            
2509            
2510            
2511                    ; line_number = 110
2512                    ; string id = "\16,0,19,1,3,13\IRProximity-4\7\Gramson" start
2513                    ; id = '\16,0,19,1,3,13\IRProximity-4\7\Gramson'
2514   006c :   id:
2515                    ; Temporarily save index into FSR
2516 006c 0084          movwf   __fsr
2517                    ; Initialize PCLATH to point to this code page
2518 006d 3000          movlw   id___base>>8
2519 006e 008a          movwf   __pclath
2520                    ; Restore index from FSR
2521 006f 0804          movf    __fsr,w
2522 0070 3e72          addlw   id___base
2523                    ; Index to the correct return value
2524 0071 0082          movwf   __pcl
2525                    ; page_group 27
2526   0072 :   id___base:
2527 0072 3410          retlw   16
2528 0073 3400          retlw   0
2529 0074 3413          retlw   19
2530 0075 3401          retlw   1
2531 0076 3403          retlw   3
2532 0077 340d          retlw   13
2533 0078 3449          retlw   73
2534 0079 3452          retlw   82
2535 007a 3450          retlw   80
2536 007b 3472          retlw   114
2537 007c 346f          retlw   111
2538 007d 3478          retlw   120
2539 007e 3469          retlw   105
2540 007f 346d          retlw   109
2541 0080 3469          retlw   105
2542 0081 3474          retlw   116
2543 0082 3479          retlw   121
2544 0083 342d          retlw   45
2545 0084 3434          retlw   52
2546 0085 3407          retlw   7
2547 0086 3447          retlw   71
2548 0087 3472          retlw   114
2549 0088 3461          retlw   97
2550 0089 346d          retlw   109
2551 008a 3473          retlw   115
2552 008b 346f          retlw   111
2553 008c 346e          retlw   110
2554                    ; line_number = 110
2555                    ; string id = "\16,0,19,1,3,13\IRProximity-4\7\Gramson" start
2556            
2557            
2558                    ; Appending 8 delayed procedures to code bank 0
2559                    ; buffer = 'rb2bus'
2560                    ; line_number = 57
2561                    ;info   57, 141
2562                    ; procedure rb2bus_select_wait
2563   008d :   rb2bus_select_wait:
2564                    ; arguments_none
2565                    ; line_number = 59
2566                    ;  returns_nothing
2567            
2568                    ; # This procedure will in an infinite loop until the select
2569                    ; # address matches {rb2bus_address}.  {rb2bus_address} is
2570                    ; # typically set in the {rb2bus_initialize} procedure.
2571                    ; #
2572                    ; # This module will repeatably call the {wait} procedure until
2573                    ; # it is properly selected.
2574            
2575                    ; line_number = 68
2576                    ;  local value byte
2577 00000022 = rb2bus_select_wait__value equ globals___0+2
2578                    ; line_number = 69
2579                    ;  local address_bit bit
2580 0000006f = rb2bus_select_wait__address_bit___byte equ globals___0+79
2581 00000002 = rb2bus_select_wait__address_bit___bit equ 2
2582            
2583                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
2584                    ; line_number = 71
2585                    ;  rb2bus_error := _false
2586                    ;info   71, 141
2587 008d 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
2588                    ; line_number = 72
2589                    ;  while !rb2bus_selected start
2590   008e :   rb2bus_select_wait__1:
2591                    ;info   72, 142
2592                    ; =>bit_code_emit@symbol(): sym=rb2bus_selected
2593                    ; No 1TEST: true.size=0 false.size=25
2594                    ; No 2TEST: true.size=0 false.size=25
2595                    ; 1GOTO: Single test with GOTO
2596 008e 186f          btfsc   rb2bus_selected___byte, rb2bus_selected___bit
2597 008f 28a9          goto    rb2bus_select_wait__6
2598                    ; line_number = 73
2599                    ; _adden := _true
2600                    ;info   73, 144
2601 0090 1597          bsf     _adden___byte, _adden___bit
2602                    ; # Wait for a byte to arrive.
2603                    ; line_number = 75
2604                    ;  while !_rcif start
2605   0091 :   rb2bus_select_wait__2:
2606                    ;info   75, 145
2607                    ; =>bit_code_emit@symbol(): sym=_rcif
2608                    ; No 1TEST: true.size=0 false.size=2
2609                    ; No 2TEST: true.size=0 false.size=2
2610                    ; 1GOTO: Single test with GOTO
2611 0091 1a8c          btfsc   _rcif___byte, _rcif___bit
2612 0092 2895          goto    rb2bus_select_wait__3
2613                    ; line_number = 76
2614                    ; call wait()
2615                    ;info   76, 147
2616 0093 206b          call    wait
2617            
2618 0094 2891          goto    rb2bus_select_wait__2
2619   0095 :   rb2bus_select_wait__3:
2620                    ; Recombine size1 = 0 || size2 = 0
2621                    ; line_number = 75
2622                    ;  while !_rcif done
2623                    ; # Capture the received value:
2624                    ; line_number = 79
2625                    ;  address_bit := _false
2626                    ;info   79, 149
2627 0095 116f          bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
2628                    ; line_number = 80
2629                    ;  if _rx9d start
2630                    ;info   80, 150
2631                    ; =>bit_code_emit@symbol(): sym=_rx9d
2632                    ; 1TEST: Single test with code in skip slot
2633 0096 1817          btfsc   _rx9d___byte, _rx9d___bit
2634                    ; line_number = 81
2635                    ; address_bit := _true
2636                    ;info   81, 151
2637 0097 156f          bsf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
2638                    ; Recombine size1 = 0 || size2 = 0
2639                    ; line_number = 80
2640                    ;  if _rx9d done
2641                    ; line_number = 82
2642                    ; value := _rcreg
2643                    ;info   82, 152
2644 0098 0814          movf    _rcreg,w
2645 0099 00a2          movwf   rb2bus_select_wait__value
2646            
2647                    ; # Clear any UART errors by toggling {_cren}:
2648                    ; line_number = 85
2649                    ;  if _oerr start
2650                    ;info   85, 154
2651                    ; =>bit_code_emit@symbol(): sym=_oerr
2652                    ; 1TEST: Single test with code in skip slot
2653 009a 1897          btfsc   _oerr___byte, _oerr___bit
2654                    ; line_number = 86
2655                    ; _cren := _false
2656                    ;info   86, 155
2657 009b 1217          bcf     _cren___byte, _cren___bit
2658                    ; Recombine size1 = 0 || size2 = 0
2659                    ; line_number = 85
2660                    ;  if _oerr done
2661                    ; line_number = 87
2662                    ; if _ferr start
2663                    ;info   87, 156
2664                    ; =>bit_code_emit@symbol(): sym=_ferr
2665                    ; 1TEST: Single test with code in skip slot
2666 009c 1917          btfsc   _ferr___byte, _ferr___bit
2667                    ; line_number = 88
2668                    ; _cren := _false
2669                    ;info   88, 157
2670 009d 1217          bcf     _cren___byte, _cren___bit
2671                    ; Recombine size1 = 0 || size2 = 0
2672                    ; line_number = 87
2673                    ; if _ferr done
2674                    ; line_number = 89
2675                    ; _cren := _true
2676                    ;info   89, 158
2677 009e 1617          bsf     _cren___byte, _cren___bit
2678            
2679                    ; line_number = 91
2680                    ;  if address_bit start
2681                    ;info   91, 159
2682                    ; =>bit_code_emit@symbol(): sym=rb2bus_select_wait__address_bit
2683                    ; No 1TEST: true.size=7 false.size=0
2684                    ; No 2TEST: true.size=7 false.size=0
2685                    ; 1GOTO: Single test with GOTO
2686 009f 1d6f          btfss   rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
2687 00a0 28a8          goto    rb2bus_select_wait__5
2688                    ; line_number = 92
2689                    ; if value = rb2bus_address start
2690                    ;info   92, 161
2691                    ; Left minus Right
2692 00a1 0820          movf    rb2bus_address,w
2693 00a2 0222          subwf   rb2bus_select_wait__value,w
2694                    ; =>bit_code_emit@symbol(): sym=__z
2695                    ; No 1TEST: true.size=3 false.size=0
2696                    ; No 2TEST: true.size=3 false.size=0
2697                    ; 1GOTO: Single test with GOTO
2698 00a3 1d03          btfss   __z___byte, __z___bit
2699 00a4 28a8          goto    rb2bus_select_wait__4
2700                    ; line_number = 93
2701                    ; rb2bus_selected := _true
2702                    ;info   93, 165
2703 00a5 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
2704                    ; line_number = 94
2705                    ;  call rb2bus_byte_put(rb2_ok)
2706                    ;info   94, 166
2707 00a6 30a5          movlw   165
2708 00a7 20ce          call    rb2bus_byte_put
2709            
2710            
2711                    ; Recombine size1 = 0 || size2 = 0
2712   00a8 :   rb2bus_select_wait__4:
2713                    ; line_number = 92
2714                    ; if value = rb2bus_address done
2715                    ; Recombine size1 = 0 || size2 = 0
2716   00a8 :   rb2bus_select_wait__5:
2717                    ; line_number = 91
2718                    ;  if address_bit done
2719 00a8 288e          goto    rb2bus_select_wait__1
2720   00a9 :   rb2bus_select_wait__6:
2721                    ; Recombine size1 = 0 || size2 = 0
2722                    ; line_number = 72
2723                    ;  while !rb2bus_selected done
2724                    ; delay after procedure statements=non-uniform
2725                    ; Implied return
2726 00a9 3400          retlw   0
2727            
2728            
2729            
2730            
2731                    ; line_number = 97
2732                    ;info   97, 170
2733                    ; procedure rb2bus_deselect
2734   00aa :   rb2bus_deselect:
2735                    ; arguments_none
2736                    ; line_number = 99
2737                    ;  returns_nothing
2738            
2739                    ; # This procedure forces this module into the deselected state until
2740                    ; # it is reselected by some master module on the bus.
2741            
2742                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
2743                    ; line_number = 104
2744                    ;  rb2bus_selected := _false
2745                    ;info   104, 170
2746 00aa 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
2747            
2748            
2749                    ; delay after procedure statements=non-uniform
2750                    ; Implied return
2751 00ab 3400          retlw   0
2752            
2753            
2754            
2755            
2756                    ; line_number = 107
2757                    ;info   107, 172
2758                    ; procedure rb2bus_byte_get
2759   00ac :   rb2bus_byte_get:
2760                    ; arguments_none
2761                    ; line_number = 109
2762                    ;  returns byte
2763            
2764                    ; # This procedure will return the next byte received from the bus.
2765                    ; # The address (9th) bit is stored in the global {is_address}.
2766                    ; #
2767                    ; # If {rb2bus_error} is set, 0 is returned.  Otherwise, the {wait}
2768                    ; # procedure is repeatably called until a command byte is successfully
2769                    ; # received.  If an module select byte comes in, we enter a bus
2770                    ; # error condition by setting {rb2bus_error} and returning 0.
2771            
2772                    ; line_number = 119
2773                    ;  local value byte
2774 00000023 = rb2bus_byte_get__value equ globals___0+3
2775                    ; line_number = 120
2776                    ;  local address_bit bit
2777 0000006f = rb2bus_byte_get__address_bit___byte equ globals___0+79
2778 00000003 = rb2bus_byte_get__address_bit___bit equ 3
2779            
2780                    ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
2781                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
2782                    ; line_number = 123
2783                    ;  if rb2bus_error start
2784                    ;info   123, 172
2785                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2786                    ; 1TEST: Single test with code in skip slot
2787 00ac 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2788                    ; line_number = 124
2789                    ; return 0 start
2790                    ; line_number = 124
2791                    ;info   124, 173
2792 00ad 3400          retlw   0
2793                    ; line_number = 124
2794                    ; return 0 done
2795            
2796                    ; Recombine size1 = 0 || size2 = 0
2797                    ; line_number = 123
2798                    ;  if rb2bus_error done
2799                    ; # Wait for a byte to arrive.
2800                    ; line_number = 127
2801                    ;  _adden := _false
2802                    ;info   127, 174
2803 00ae 1197          bcf     _adden___byte, _adden___bit
2804                    ; line_number = 128
2805                    ;  while !_rcif start
2806   00af :   rb2bus_byte_get__1:
2807                    ;info   128, 175
2808                    ; =>bit_code_emit@symbol(): sym=_rcif
2809                    ; No 1TEST: true.size=0 false.size=2
2810                    ; No 2TEST: true.size=0 false.size=2
2811                    ; 1GOTO: Single test with GOTO
2812 00af 1a8c          btfsc   _rcif___byte, _rcif___bit
2813 00b0 28b3          goto    rb2bus_byte_get__2
2814                    ; line_number = 129
2815                    ; call wait()
2816                    ;info   129, 177
2817 00b1 206b          call    wait
2818            
2819 00b2 28af          goto    rb2bus_byte_get__1
2820   00b3 :   rb2bus_byte_get__2:
2821                    ; Recombine size1 = 0 || size2 = 0
2822                    ; line_number = 128
2823                    ;  while !_rcif done
2824                    ; # Record the 9th bit in {address_bit}:
2825                    ; line_number = 132
2826                    ;  address_bit := _false
2827                    ;info   132, 179
2828 00b3 11ef          bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
2829                    ; line_number = 133
2830                    ;  if _rx9d start
2831                    ;info   133, 180
2832                    ; =>bit_code_emit@symbol(): sym=_rx9d
2833                    ; 1TEST: Single test with code in skip slot
2834 00b4 1817          btfsc   _rx9d___byte, _rx9d___bit
2835                    ; line_number = 134
2836                    ; address_bit := _true
2837                    ;info   134, 181
2838 00b5 15ef          bsf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
2839                    ; Recombine size1 = 0 || size2 = 0
2840                    ; line_number = 133
2841                    ;  if _rx9d done
2842                    ; line_number = 135
2843                    ; value := _rcreg
2844                    ;info   135, 182
2845 00b6 0814          movf    _rcreg,w
2846 00b7 00a3          movwf   rb2bus_byte_get__value
2847            
2848                    ; # Clear any errors by toggling _{cren}:
2849                    ; # FIXME: All of this should be done *before* reading {_rcreg}!!!
2850                    ; line_number = 139
2851                    ;  if _oerr start
2852                    ;info   139, 184
2853                    ; =>bit_code_emit@symbol(): sym=_oerr
2854                    ; 1TEST: Single test with code in skip slot
2855 00b8 1897          btfsc   _oerr___byte, _oerr___bit
2856                    ; line_number = 140
2857                    ; _cren := _false
2858                    ;info   140, 185
2859 00b9 1217          bcf     _cren___byte, _cren___bit
2860                    ; Recombine size1 = 0 || size2 = 0
2861                    ; line_number = 139
2862                    ;  if _oerr done
2863                    ; line_number = 141
2864                    ; if _ferr start
2865                    ;info   141, 186
2866                    ; =>bit_code_emit@symbol(): sym=_ferr
2867                    ; 1TEST: Single test with code in skip slot
2868 00ba 1917          btfsc   _ferr___byte, _ferr___bit
2869                    ; line_number = 142
2870                    ; _cren := _false
2871                    ;info   142, 187
2872 00bb 1217          bcf     _cren___byte, _cren___bit
2873                    ; Recombine size1 = 0 || size2 = 0
2874                    ; line_number = 141
2875                    ; if _ferr done
2876                    ; line_number = 143
2877                    ; _cren := _true
2878                    ;info   143, 188
2879 00bc 1617          bsf     _cren___byte, _cren___bit
2880            
2881                    ; line_number = 145
2882                    ;  if address_bit start
2883                    ;info   145, 189
2884                    ; =>bit_code_emit@symbol(): sym=rb2bus_byte_get__address_bit
2885                    ; No 1TEST: true.size=13 false.size=0
2886                    ; No 2TEST: true.size=13 false.size=0
2887                    ; 1GOTO: Single test with GOTO
2888 00bd 1def          btfss   rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
2889 00be 28cc          goto    rb2bus_byte_get__5
2890                    ; # We have an unexpected address select coming in:
2891                    ; line_number = 147
2892                    ;  if value = rb2bus_address start
2893                    ;info   147, 191
2894                    ; Left minus Right
2895 00bf 0820          movf    rb2bus_address,w
2896 00c0 0223          subwf   rb2bus_byte_get__value,w
2897                    ; =>bit_code_emit@symbol(): sym=__z
2898                    ; No 1TEST: true.size=4 false.size=2
2899                    ; No 2TEST: true.size=4 false.size=2
2900                    ; 2GOTO: Single test with two GOTO's
2901 00c1 1d03          btfss   __z___byte, __z___bit
2902 00c2 28c8          goto    rb2bus_byte_get__3
2903                    ; # We are being selected again:
2904                    ; line_number = 149
2905                    ;  rb2bus_selected := _true
2906                    ;info   149, 195
2907 00c3 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
2908                    ; line_number = 150
2909                    ;  _adden := _false
2910                    ;info   150, 196
2911 00c4 1197          bcf     _adden___byte, _adden___bit
2912            
2913                    ; line_number = 152
2914                    ;  call rb2bus_byte_put(rb2_ok)
2915                    ;info   152, 197
2916 00c5 30a5          movlw   165
2917 00c6 20ce          call    rb2bus_byte_put
2918                    ; Recombine code1_bit_states != code2_bit_states
2919 00c7 28ca          goto    rb2bus_byte_get__4
2920                    ; 2GOTO: Starting code 2
2921   00c8 :   rb2bus_byte_get__3:
2922                    ; # Somebody else is being selected; we deselect:
2923                    ; line_number = 155
2924                    ;  rb2bus_selected := _false
2925                    ;info   155, 200
2926 00c8 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
2927                    ; line_number = 156
2928                    ;  _adden := _true
2929                    ;info   156, 201
2930 00c9 1597          bsf     _adden___byte, _adden___bit
2931            
2932   00ca :   rb2bus_byte_get__4:
2933                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2934                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2935                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2936                    ; line_number = 147
2937                    ;  if value = rb2bus_address done
2938                    ; # We want to get back to the beginning of decode:
2939                    ; line_number = 159
2940                    ;  rb2bus_error := _true
2941                    ;info   159, 202
2942 00ca 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
2943                    ; line_number = 160
2944                    ;  value := 0
2945                    ;info   160, 203
2946 00cb 01a3          clrf    rb2bus_byte_get__value
2947            
2948                    ; Recombine size1 = 0 || size2 = 0
2949   00cc :   rb2bus_byte_get__5:
2950                    ; line_number = 145
2951                    ;  if address_bit done
2952                    ; # Regular data byte:
2953                    ; line_number = 163
2954                    ;  return value start
2955                    ; line_number = 163
2956                    ;info   163, 204
2957 00cc 0823          movf    rb2bus_byte_get__value,w
2958 00cd 0008          return  
2959                    ; line_number = 163
2960                    ;  return value done
2961            
2962            
2963                    ; delay after procedure statements=non-uniform
2964            
2965            
2966            
2967            
2968                    ; line_number = 166
2969                    ;info   166, 206
2970                    ; procedure rb2bus_byte_put
2971   00ce :   rb2bus_byte_put:
2972                    ; Last argument is sitting in W; save into argument variable
2973 00ce 00a4          movwf   rb2bus_byte_put__value
2974                    ; delay=4294967295
2975                    ; line_number = 167
2976                    ; argument value byte
2977 00000024 = rb2bus_byte_put__value equ globals___0+4
2978                    ; line_number = 168
2979                    ;  returns_nothing
2980            
2981                    ; # This procedure will send {value} to the bus.  It automatically
2982                    ; # consumes the echo that is on the bus.  If {rb2bus_error} is
2983                    ; # set, this procedure does nothing.
2984            
2985                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
2986                    ; line_number = 174
2987                    ;  if !rb2bus_error start
2988                    ;info   174, 207
2989                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2990                    ; No 1TEST: true.size=0 false.size=16
2991                    ; No 2TEST: true.size=0 false.size=16
2992                    ; 1GOTO: Single test with GOTO
2993 00cf 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2994 00d0 28e1          goto    rb2bus_byte_put__4
2995                    ; # Wait until {_txreg} is ready for a value:
2996                    ; line_number = 176
2997                    ;  while !_txif start
2998   00d1 :   rb2bus_byte_put__1:
2999                    ;info   176, 209
3000                    ; =>bit_code_emit@symbol(): sym=_txif
3001                    ; No 1TEST: true.size=0 false.size=2
3002                    ; No 2TEST: true.size=0 false.size=2
3003                    ; 1GOTO: Single test with GOTO
3004 00d1 188c          btfsc   _txif___byte, _txif___bit
3005 00d2 28d5          goto    rb2bus_byte_put__2
3006                    ; line_number = 177
3007                    ; call wait()
3008                    ;info   177, 211
3009 00d3 206b          call    wait
3010            
3011 00d4 28d1          goto    rb2bus_byte_put__1
3012   00d5 :   rb2bus_byte_put__2:
3013                    ; Recombine size1 = 0 || size2 = 0
3014                    ; line_number = 176
3015                    ;  while !_txif done
3016                    ; # Ship {value} out to the bus with 9th bit turned off:
3017                    ; line_number = 180
3018                    ;  _adden := _false
3019                    ;info   180, 213
3020 00d5 1197          bcf     _adden___byte, _adden___bit
3021                    ; line_number = 181
3022                    ;  _tx9d := _false
3023                    ;info   181, 214
3024 00d6 1016          bcf     _tx9d___byte, _tx9d___bit
3025                    ; line_number = 182
3026                    ;  _txreg := value
3027                    ;info   182, 215
3028 00d7 0824          movf    rb2bus_byte_put__value,w
3029 00d8 0095          movwf   _txreg
3030            
3031                    ; # Wait for the echo to show up:
3032                    ; line_number = 185
3033                    ;  while !_rcif start
3034   00d9 :   rb2bus_byte_put__3:
3035                    ;info   185, 217
3036                    ; =>bit_code_emit@symbol(): sym=_rcif
3037                    ; 1TEST: Single test with code in skip slot
3038 00d9 1e8c          btfss   _rcif___byte, _rcif___bit
3039                    ; # Still waiting:
3040 00da 28d9          goto    rb2bus_byte_put__3
3041                    ; Recombine size1 = 0 || size2 = 0
3042                    ; line_number = 185
3043                    ;  while !_rcif done
3044                    ; # Throw the received byte away (store into {_w}).
3045                    ; line_number = 188
3046                    ;  assemble
3047                    ;info   188, 219
3048                    ; line_number = 189
3049                    ;info   189, 219
3050 00db 0814          movf    _rcreg,w
3051            
3052                    ; # Recover from any receive errors by toggling {_cren}:
3053                    ; line_number = 192
3054                    ;  if _oerr start
3055                    ;info   192, 220
3056                    ; =>bit_code_emit@symbol(): sym=_oerr
3057                    ; 1TEST: Single test with code in skip slot
3058 00dc 1897          btfsc   _oerr___byte, _oerr___bit
3059                    ; line_number = 193
3060                    ; _cren := _false
3061                    ;info   193, 221
3062 00dd 1217          bcf     _cren___byte, _cren___bit
3063                    ; Recombine size1 = 0 || size2 = 0
3064                    ; line_number = 192
3065                    ;  if _oerr done
3066                    ; line_number = 194
3067                    ; if _ferr start
3068                    ;info   194, 222
3069                    ; =>bit_code_emit@symbol(): sym=_ferr
3070                    ; 1TEST: Single test with code in skip slot
3071 00de 1917          btfsc   _ferr___byte, _ferr___bit
3072                    ; line_number = 195
3073                    ; _cren := _false
3074                    ;info   195, 223
3075 00df 1217          bcf     _cren___byte, _cren___bit
3076                    ; Recombine size1 = 0 || size2 = 0
3077                    ; line_number = 194
3078                    ; if _ferr done
3079                    ; line_number = 196
3080                    ; _cren := _true
3081                    ;info   196, 224
3082 00e0 1617          bsf     _cren___byte, _cren___bit
3083            
3084            
3085   00e1 :   rb2bus_byte_put__4:
3086                    ; Recombine size1 = 0 || size2 = 0
3087                    ; line_number = 174
3088                    ;  if !rb2bus_error done
3089                    ; delay after procedure statements=non-uniform
3090                    ; Implied return
3091 00e1 3400          retlw   0
3092            
3093            
3094            
3095            
3096                    ; line_number = 199
3097                    ;info   199, 226
3098                    ; procedure rb2bus_command
3099   00e2 :   rb2bus_command:
3100                    ; Last argument is sitting in W; save into argument variable
3101 00e2 00a7          movwf   rb2bus_command__command
3102                    ; delay=4294967295
3103                    ; line_number = 200
3104                    ; argument command byte
3105 00000027 = rb2bus_command__command equ globals___0+7
3106                    ; line_number = 201
3107                    ;  returns_nothing
3108            
3109                    ; # This procedure will process an shared {command}.  This procedure
3110                    ; # accesses the global string {id}.
3111            
3112                    ; line_number = 206
3113                    ;  local new_address byte
3114 00000025 = rb2bus_command__new_address equ globals___0+5
3115                    ; line_number = 207
3116                    ;  local temp byte
3117 00000026 = rb2bus_command__temp equ globals___0+6
3118            
3119                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3120                    ; line_number = 209
3121                    ;  switch command & 7 start
3122                    ;info   209, 227
3123                    ; switch_before:(data:00=uu=>00 code:X0=cu=>X0) size=1
3124 00e3 3000          movlw   rb2bus_command__13>>8
3125 00e4 008a          movwf   __pclath
3126 00e5 3007          movlw   7
3127 00e6 0527          andwf   rb2bus_command__command,w
3128                    ; switch after expression:(data:00=uu=>00 code:X0=cu=>X0)
3129 00e7 3ee9          addlw   rb2bus_command__13
3130 00e8 0082          movwf   __pcl
3131                    ; page_group 8
3132   00e9 :   rb2bus_command__13:
3133 00e9 2929          goto    rb2bus_command__14
3134 00ea 2929          goto    rb2bus_command__14
3135 00eb 2929          goto    rb2bus_command__14
3136 00ec 2929          goto    rb2bus_command__14
3137 00ed 28f1          goto    rb2bus_command__9
3138 00ee 291d          goto    rb2bus_command__10
3139 00ef 2926          goto    rb2bus_command__11
3140 00f0 2928          goto    rb2bus_command__12
3141                    ; line_number = 210
3142                    ; case 4
3143   00f1 :   rb2bus_command__9:
3144                    ; # 1111 1100 (Address_Set):
3145                    ; # Return old address:
3146                    ; line_number = 213
3147                    ;  call rb2bus_byte_put(rb2bus_address)
3148                    ;info   213, 241
3149 00f1 0820          movf    rb2bus_address,w
3150 00f2 20ce          call    rb2bus_byte_put
3151            
3152                    ; # Fetch new address:
3153                    ; line_number = 216
3154                    ;  new_address := rb2bus_byte_get()
3155                    ;info   216, 243
3156 00f3 20ac          call    rb2bus_byte_get
3157 00f4 00a5          movwf   rb2bus_command__new_address
3158                    ; line_number = 217
3159                    ;  if new_address = 0 || new_address = rb2bus_address start
3160                    ;info   217, 245
3161                    ; Left minus Right
3162 00f5 0825          movf    rb2bus_command__new_address,w
3163                    ; =>bit_code_emit@symbol(): sym=__z
3164                    ; No 1TEST: true.size=1 false.size=36
3165                    ; No 2TEST: true.size=1 false.size=36
3166                    ; 2GOTO: Single test with two GOTO's
3167 00f6 1903          btfsc   __z___byte, __z___bit
3168 00f7 28fc          goto    rb2bus_command__5
3169                    ; Recombine code1_bit_states != code2_bit_states
3170                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3171                    ; Left minus Right
3172 00f8 0820          movf    rb2bus_address,w
3173 00f9 0225          subwf   rb2bus_command__new_address,w
3174                    ; =>bit_code_emit@symbol(): sym=__z
3175                    ; No 1TEST: true.size=4 false.size=27
3176                    ; No 2TEST: true.size=4 false.size=27
3177                    ; 2GOTO: Single test with two GOTO's
3178 00fa 1d03          btfss   __z___byte, __z___bit
3179 00fb 2901          goto    rb2bus_command__6
3180   00fc :   rb2bus_command__5:
3181                    ; line_number = 218
3182                    ; call rb2bus_byte_put(0)
3183                    ;info   218, 252
3184 00fc 3000          movlw   0
3185 00fd 20ce          call    rb2bus_byte_put
3186                    ; line_number = 219
3187                    ;  rb2bus_error := _true
3188                    ;info   219, 254
3189 00fe 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3190                    ; line_number = 220
3191                    ;  rb2bus_selected := _false
3192                    ;info   220, 255
3193 00ff 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3194 0100 291c          goto    rb2bus_command__7
3195                    ; 2GOTO: Starting code 2
3196   0101 :   rb2bus_command__6:
3197                    ; # Return new address:
3198                    ; line_number = 223
3199                    ;  call rb2bus_byte_put(new_address)
3200                    ;info   223, 257
3201 0101 0825          movf    rb2bus_command__new_address,w
3202 0102 20ce          call    rb2bus_byte_put
3203            
3204                    ; # Fetch new address again as a check:
3205                    ; line_number = 226
3206                    ;  temp := rb2bus_byte_get()
3207                    ;info   226, 259
3208 0103 20ac          call    rb2bus_byte_get
3209 0104 00a6          movwf   rb2bus_command__temp
3210                    ; line_number = 227
3211                    ;  if temp != new_address start
3212                    ;info   227, 261
3213                    ; Left minus Right
3214 0105 0825          movf    rb2bus_command__new_address,w
3215 0106 0226          subwf   rb2bus_command__temp,w
3216                    ; =>bit_code_emit@symbol(): sym=__z
3217                    ; No 1TEST: true.size=14 false.size=4
3218                    ; No 2TEST: true.size=14 false.size=4
3219                    ; 2GOTO: Single test with two GOTO's
3220 0107 1d03          btfss   __z___byte, __z___bit
3221 0108 2918          goto    rb2bus_command__3
3222                    ; line_number = 232
3223                    ; call rb2bus_eedata_write(new_address)
3224                    ;info   232, 265
3225 0109 0825          movf    rb2bus_command__new_address,w
3226 010a 215d          call    rb2bus_eedata_write
3227                    ; line_number = 233
3228                    ;  temp := rb2bus_eedata_read()
3229                    ;info   233, 267
3230 010b 2148          call    rb2bus_eedata_read
3231 010c 00a6          movwf   rb2bus_command__temp
3232                    ; line_number = 234
3233                    ;  if temp = new_address start
3234                    ;info   234, 269
3235                    ; Left minus Right
3236 010d 0825          movf    rb2bus_command__new_address,w
3237 010e 0226          subwf   rb2bus_command__temp,w
3238                    ; =>bit_code_emit@symbol(): sym=__z
3239                    ; No 1TEST: true.size=3 false.size=1
3240                    ; No 2TEST: true.size=3 false.size=1
3241                    ; 2GOTO: Single test with two GOTO's
3242 010f 1d03          btfss   __z___byte, __z___bit
3243 0110 2915          goto    rb2bus_command__1
3244                    ; line_number = 235
3245                    ; rb2bus_address := new_address
3246                    ;info   235, 273
3247 0111 0825          movf    rb2bus_command__new_address,w
3248 0112 00a0          movwf   rb2bus_address
3249                    ; line_number = 236
3250                    ;  call rb2bus_byte_put(rb2_ok)
3251                    ;info   236, 275
3252 0113 30a5          movlw   165
3253 0114 2916          goto    rb2bus_command__2
3254                    ; 2GOTO: Starting code 2
3255   0115 :   rb2bus_command__1:
3256                    ; line_number = 238
3257                    ; call rb2bus_byte_put(0)
3258                    ;info   238, 277
3259 0115 3000          movlw   0
3260   0116 :   rb2bus_command__2:
3261                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3262                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3263                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3264 0116 20ce          call    rb2bus_byte_put
3265                    ; line_number = 234
3266                    ;  if temp = new_address done
3267 0117 291c          goto    rb2bus_command__4
3268                    ; 2GOTO: Starting code 2
3269   0118 :   rb2bus_command__3:
3270                    ; line_number = 228
3271                    ; call rb2bus_byte_put(0)
3272                    ;info   228, 280
3273 0118 3000          movlw   0
3274 0119 20ce          call    rb2bus_byte_put
3275                    ; line_number = 229
3276                    ;  rb2bus_error := _true
3277                    ;info   229, 282
3278 011a 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3279                    ; line_number = 230
3280                    ;  rb2bus_selected := _false
3281                    ;info   230, 283
3282 011b 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3283   011c :   rb2bus_command__4:
3284                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3285                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3286                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3287                    ; line_number = 227
3288                    ;  if temp != new_address done
3289   011c :   rb2bus_command__7:
3290                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3291                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3292                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3293                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3294                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
3295                    ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
3296                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3297                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
3298                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3299                    ; line_number = 217
3300                    ;  if new_address = 0 || new_address = rb2bus_address done
3301 011c 2929          goto    rb2bus_command__14
3302                    ; line_number = 239
3303                    ; case 5
3304   011d :   rb2bus_command__10:
3305                    ; # 1111 1101 (Id_next):
3306                    ; line_number = 241
3307                    ;  if rb2bus_index < id.size start
3308                    ;info   241, 285
3309 011d 301b          movlw   27
3310 011e 0221          subwf   rb2bus_index,w
3311                    ; =>bit_code_emit@symbol(): sym=__c
3312                    ; No 1TEST: true.size=0 false.size=4
3313                    ; No 2TEST: true.size=0 false.size=4
3314                    ; 1GOTO: Single test with GOTO
3315 011f 1803          btfsc   __c___byte, __c___bit
3316 0120 2925          goto    rb2bus_command__8
3317                    ; line_number = 242
3318                    ; call rb2bus_byte_put(id[rb2bus_index])
3319                    ;info   242, 289
3320 0121 0821          movf    rb2bus_index,w
3321 0122 206c          call    id
3322 0123 20ce          call    rb2bus_byte_put
3323                    ; line_number = 243
3324                    ;  rb2bus_index := rb2bus_index + 1
3325                    ;info   243, 292
3326 0124 0aa1          incf    rb2bus_index,f
3327                    ; #if rb2bus_index >= id.size
3328                    ; #	rb2bus_index := rb2bus_index - 1
3329   0125 :   rb2bus_command__8:
3330                    ; Recombine size1 = 0 || size2 = 0
3331                    ; line_number = 241
3332                    ;  if rb2bus_index < id.size done
3333 0125 2929          goto    rb2bus_command__14
3334                    ; line_number = 246
3335                    ; case 6
3336   0126 :   rb2bus_command__11:
3337                    ; # 1111 1110 (Id_start):
3338                    ; line_number = 248
3339                    ;  rb2bus_index := 0
3340                    ;info   248, 294
3341 0126 01a1          clrf    rb2bus_index
3342 0127 2929          goto    rb2bus_command__14
3343                    ; line_number = 249
3344                    ; case 7
3345   0128 :   rb2bus_command__12:
3346                    ; # 1111 1111 (Deselect):
3347                    ; line_number = 251
3348                    ;  call rb2bus_deselect()
3349                    ;info   251, 296
3350 0128 20aa          call    rb2bus_deselect
3351            
3352            
3353   0129 :   rb2bus_command__14:
3354                    ; line_number = 209
3355                    ;  switch command & 7 done
3356                    ; delay after procedure statements=non-uniform
3357                    ; Implied return
3358 0129 3400          retlw   0
3359            
3360            
3361            
3362            
3363                    ; buffer = 'rb2bus_pic16f688'
3364                    ; line_number = 18
3365                    ;info   18, 298
3366                    ; procedure rb2bus_initialize
3367   012a :   rb2bus_initialize:
3368                    ; Last argument is sitting in W; save into argument variable
3369 012a 00a8          movwf   rb2bus_initialize__address
3370                    ; delay=4294967295
3371                    ; line_number = 19
3372                    ; argument address byte
3373 00000028 = rb2bus_initialize__address equ globals___0+8
3374                    ; line_number = 20
3375                    ;  returns_nothing
3376            
3377                    ; # This procedure is responsibile for initializing the UART
3378                    ; # connected to the bus.  {address} is the address of this
3379                    ; # slave module.  This code is specific to the PIC16F688.
3380            
3381                    ; # Warm up the UART:
3382                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3383                    ; line_number = 27
3384                    ;  _trisc@5 := _true
3385                    ;info   27, 299
3386 00000087 = rb2bus_initialize__select__1___byte equ _trisc
3387 00000005 = rb2bus_initialize__select__1___bit equ 5
3388 012b 1683          bsf     __rp0___byte, __rp0___bit
3389 012c 1687          bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
3390                    ; line_number = 28
3391                    ;  _trisc@4 := _true
3392                    ;info   28, 301
3393 00000087 = rb2bus_initialize__select__2___byte equ _trisc
3394 00000004 = rb2bus_initialize__select__2___bit equ 4
3395 012d 1607          bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit
3396            
3397                    ; # Initialize the {_txsta} register:
3398                    ; line_number = 31
3399                    ;  _txsta := 0
3400                    ;info   31, 302
3401 012e 1283          bcf     __rp0___byte, __rp0___bit
3402 012f 0196          clrf    _txsta
3403                    ; line_number = 32
3404                    ;  _tx9 := _true
3405                    ;info   32, 304
3406 0130 1716          bsf     _tx9___byte, _tx9___bit
3407                    ; #_tx9 := _false
3408                    ; line_number = 34
3409                    ;  _txen := _true
3410                    ;info   34, 305
3411 0131 1696          bsf     _txen___byte, _txen___bit
3412                    ; line_number = 35
3413                    ;  _brgh := _true
3414                    ;info   35, 306
3415 0132 1516          bsf     _brgh___byte, _brgh___bit
3416            
3417                    ; # Initialize the {_rcsta} register:
3418                    ; line_number = 38
3419                    ;  _rcsta := 0
3420                    ;info   38, 307
3421 0133 0197          clrf    _rcsta
3422                    ; line_number = 39
3423                    ;  _spen := _true
3424                    ;info   39, 308
3425 0134 1797          bsf     _spen___byte, _spen___bit
3426                    ; line_number = 40
3427                    ;  _rx9 := _true
3428                    ;info   40, 309
3429 0135 1717          bsf     _rx9___byte, _rx9___bit
3430                    ; line_number = 41
3431                    ;  _cren := _true
3432                    ;info   41, 310
3433 0136 1617          bsf     _cren___byte, _cren___bit
3434                    ; #_adden := _true
3435                    ; line_number = 43
3436                    ;  _adden := _false
3437                    ;info   43, 311
3438 0137 1197          bcf     _adden___byte, _adden___bit
3439            
3440                    ; # Set up the baud rate generator:
3441                    ; line_number = 46
3442                    ;  _baudctl := 0
3443                    ;info   46, 312
3444 0138 0191          clrf    _baudctl
3445                    ; line_number = 47
3446                    ;  _brg16 := _true
3447                    ;info   47, 313
3448 0139 1591          bsf     _brg16___byte, _brg16___bit
3449                    ; line_number = 48
3450                    ;  _spbrg := _eusart_500000_low
3451                    ;info   48, 314
3452 013a 3009          movlw   9
3453 013b 0093          movwf   _spbrg
3454                    ; line_number = 49
3455                    ;  _spbrgh := _eusart_500000_high
3456                    ;info   49, 316
3457 013c 0192          clrf    _spbrgh
3458            
3459                    ; line_number = 51
3460                    ;  rb2bus_selected := _false
3461                    ;info   51, 317
3462 013d 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3463                    ; line_number = 52
3464                    ;  rb2bus_error := _false
3465                    ;info   52, 318
3466 013e 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
3467                    ; line_number = 53
3468                    ;  rb2bus_index := 0
3469                    ;info   53, 319
3470 013f 01a1          clrf    rb2bus_index
3471            
3472                    ; # Deal with setting {rb2bus_address} from EEData memory:
3473                    ; line_number = 56
3474                    ;  rb2bus_address := rb2bus_eedata_read()
3475                    ;info   56, 320
3476 0140 2148          call    rb2bus_eedata_read
3477 0141 00a0          movwf   rb2bus_address
3478                    ; line_number = 57
3479                    ;  if rb2bus_address = 0 start
3480                    ;info   57, 322
3481                    ; Left minus Right
3482 0142 0820          movf    rb2bus_address,w
3483                    ; =>bit_code_emit@symbol(): sym=__z
3484                    ; No 1TEST: true.size=2 false.size=0
3485                    ; No 2TEST: true.size=2 false.size=0
3486                    ; 1GOTO: Single test with GOTO
3487 0143 1d03          btfss   __z___byte, __z___bit
3488 0144 2947          goto    rb2bus_initialize__3
3489                    ; # EE data not set, so use {address} passed in as a argument:
3490                    ; line_number = 59
3491                    ;  rb2bus_address := address
3492                    ;info   59, 325
3493 0145 0828          movf    rb2bus_initialize__address,w
3494 0146 00a0          movwf   rb2bus_address
3495            
3496            
3497                    ; Recombine size1 = 0 || size2 = 0
3498   0147 :   rb2bus_initialize__3:
3499                    ; line_number = 57
3500                    ;  if rb2bus_address = 0 done
3501                    ; delay after procedure statements=non-uniform
3502                    ; Implied return
3503 0147 3400          retlw   0
3504            
3505            
3506            
3507            
3508                    ; line_number = 64
3509                    ;info   64, 328
3510                    ; procedure rb2bus_eedata_read
3511   0148 :   rb2bus_eedata_read:
3512                    ; arguments_none
3513                    ; line_number = 66
3514                    ;  returns byte
3515            
3516                    ; # This procedure will return the address stored in EEData.  If
3517                    ; # there is no data, 0 is returned.
3518            
3519                    ; line_number = 71
3520                    ;  local temp1 byte
3521 00000029 = rb2bus_eedata_read__temp1 equ globals___0+9
3522                    ; line_number = 72
3523                    ;  local temp2 byte
3524 0000002a = rb2bus_eedata_read__temp2 equ globals___0+10
3525            
3526                    ; # Read the first byte (the address):
3527                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3528                    ; line_number = 75
3529                    ;  _eecon1 := 0
3530                    ;info   75, 328
3531 0148 1683          bsf     __rp0___byte, __rp0___bit
3532 0149 019c          clrf    _eecon1
3533                    ; line_number = 76
3534                    ;  _eeadr := rb2bus_eedata_address
3535                    ;info   76, 330
3536 014a 30fe          movlw   254
3537 014b 009b          movwf   _eeadr
3538                    ; line_number = 77
3539                    ;  _rd := _true
3540                    ;info   77, 332
3541 014c 141c          bsf     _rd___byte, _rd___bit
3542                    ; line_number = 78
3543                    ;  temp1 := _eedat
3544                    ;info   78, 333
3545 014d 081a          movf    _eedat,w
3546 014e 1283          bcf     __rp0___byte, __rp0___bit
3547 014f 00a9          movwf   rb2bus_eedata_read__temp1
3548            
3549                    ; # Read the second byte (the 1'z complement)
3550                    ; line_number = 81
3551                    ;  _eeadr := _eeadr + 1
3552                    ;info   81, 336
3553 0150 1683          bsf     __rp0___byte, __rp0___bit
3554 0151 0a9b          incf    _eeadr,f
3555                    ; line_number = 82
3556                    ;  _rd := _true
3557                    ;info   82, 338
3558 0152 141c          bsf     _rd___byte, _rd___bit
3559                    ; line_number = 83
3560                    ;  temp2 := _eedat
3561                    ;info   83, 339
3562 0153 081a          movf    _eedat,w
3563 0154 1283          bcf     __rp0___byte, __rp0___bit
3564 0155 00aa          movwf   rb2bus_eedata_read__temp2
3565            
3566                    ; # If they are 1's complement of one another, they are valid:
3567                    ; line_number = 86
3568                    ;  if temp1 = (0xff ^ temp2) start
3569                    ;info   86, 342
3570                    ; Left minus Right
3571 0156 092a          comf    rb2bus_eedata_read__temp2,w
3572 0157 0229          subwf   rb2bus_eedata_read__temp1,w
3573                    ; =>bit_code_emit@symbol(): sym=__z
3574                    ; No 1TEST: true.size=2 false.size=0
3575                    ; No 2TEST: true.size=2 false.size=0
3576                    ; 1GOTO: Single test with GOTO
3577 0158 1d03          btfss   __z___byte, __z___bit
3578 0159 295c          goto    rb2bus_eedata_read__1
3579                    ; # Return the valid address:
3580                    ; line_number = 88
3581                    ;  return temp1 start
3582                    ; line_number = 88
3583                    ;info   88, 346
3584 015a 0829          movf    rb2bus_eedata_read__temp1,w
3585 015b 0008          return  
3586                    ; line_number = 88
3587                    ;  return temp1 done
3588            
3589                    ; Recombine size1 = 0 || size2 = 0
3590   015c :   rb2bus_eedata_read__1:
3591                    ; line_number = 86
3592                    ;  if temp1 = (0xff ^ temp2) done
3593                    ; # They are not 1's complement, so return 0 as an error:
3594                    ; line_number = 91
3595                    ;  return 0 start
3596                    ; line_number = 91
3597                    ;info   91, 348
3598 015c 3400          retlw   0
3599                    ; line_number = 91
3600                    ;  return 0 done
3601            
3602            
3603                    ; delay after procedure statements=non-uniform
3604            
3605            
3606            
3607            
3608                    ; line_number = 94
3609                    ;info   94, 349
3610                    ; procedure rb2bus_eedata_write
3611   015d :   rb2bus_eedata_write:
3612                    ; Last argument is sitting in W; save into argument variable
3613 015d 00ab          movwf   rb2bus_eedata_write__address
3614                    ; delay=4294967295
3615                    ; line_number = 95
3616                    ; argument address byte
3617 0000002b = rb2bus_eedata_write__address equ globals___0+11
3618                    ; line_number = 96
3619                    ;  returns_nothing
3620            
3621                    ; # This procedure will write {address} into the EEData.  The
3622                    ; # microcontroll pauses while the EEData is written.
3623            
3624                    ; # Clear out the {_eecon1} register
3625                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3626                    ; line_number = 102
3627                    ;  _eecon1 := 0
3628                    ;info   102, 350
3629 015e 1683          bsf     __rp0___byte, __rp0___bit
3630 015f 019c          clrf    _eecon1
3631                    ; line_number = 103
3632                    ;  _eeadr := rb2bus_eedata_address
3633                    ;info   103, 352
3634 0160 30fe          movlw   254
3635 0161 009b          movwf   _eeadr
3636                    ; line_number = 104
3637                    ;  _eedat := address
3638                    ;info   104, 354
3639 0162 1283          bcf     __rp0___byte, __rp0___bit
3640 0163 082b          movf    rb2bus_eedata_write__address,w
3641 0164 1683          bsf     __rp0___byte, __rp0___bit
3642 0165 009a          movwf   _eedat
3643            
3644                    ; # Write 2 bytes ({address} followed by {address}^0xff):
3645                    ; line_number = 107
3646                    ;  loop_exactly 2 start
3647                    ;info   107, 358
3648 00000030 = rb2bus_eedata_write__1 equ globals___0+16
3649 0166 3002          movlw   2
3650 0167 1283          bcf     __rp0___byte, __rp0___bit
3651 0168 00b0          movwf   rb2bus_eedata_write__1
3652   0169 :   rb2bus_eedata_write__2:
3653                    ; # Set the data to write:
3654            
3655                    ; # Set up the for the write:
3656                    ; line_number = 111
3657                    ;  _wren := _true
3658                    ;info   111, 361
3659 0169 1683          bsf     __rp0___byte, __rp0___bit
3660 016a 151c          bsf     _wren___byte, _wren___bit
3661                    ; line_number = 112
3662                    ;  _gie := _false
3663                    ;info   112, 363
3664 016b 138b          bcf     _gie___byte, _gie___bit
3665                    ; line_number = 113
3666                    ;  _eecon2 := 0x55
3667                    ;info   113, 364
3668 016c 3055          movlw   85
3669 016d 009d          movwf   _eecon2
3670                    ; line_number = 114
3671                    ;  _eecon2 := 0xaa
3672                    ;info   114, 366
3673 016e 30aa          movlw   170
3674 016f 009d          movwf   _eecon2
3675                    ; # Start the write:
3676                    ; line_number = 116
3677                    ;  _wr := _true
3678                    ;info   116, 368
3679 0170 149c          bsf     _wr___byte, _wr___bit
3680            
3681                    ; # Wait for write to complete:
3682                    ; line_number = 119
3683                    ;  while _wr start
3684   0171 :   rb2bus_eedata_write__3:
3685                    ;info   119, 369
3686                    ; =>bit_code_emit@symbol(): sym=_wr
3687                    ; 1TEST: Single test with code in skip slot
3688 0171 189c          btfsc   _wr___byte, _wr___bit
3689                    ; line_number = 120
3690                    ; do_nothing
3691                    ;info   120, 370
3692            
3693 0172 2971          goto    rb2bus_eedata_write__3
3694                    ; Recombine size1 = 0 || size2 = 0
3695                    ; line_number = 119
3696                    ;  while _wr done
3697                    ; # Disable writing:
3698                    ; line_number = 123
3699                    ;  _wren := _false
3700                    ;info   123, 371
3701 0173 111c          bcf     _wren___byte, _wren___bit
3702            
3703                    ; # Prepare the second byte of data:
3704                    ; line_number = 126
3705                    ;  _eeadr := _eeadr + 1
3706                    ;info   126, 372
3707 0174 0a9b          incf    _eeadr,f
3708                    ; line_number = 127
3709                    ;  _eedat := address ^ 0xff
3710                    ;info   127, 373
3711 0175 1283          bcf     __rp0___byte, __rp0___bit
3712 0176 092b          comf    rb2bus_eedata_write__address,w
3713 0177 1683          bsf     __rp0___byte, __rp0___bit
3714 0178 009a          movwf   _eedat
3715            
3716 0179 1283          bcf     __rp0___byte, __rp0___bit
3717                    ; line_number = 107
3718                    ;  loop_exactly 2 wrap-up
3719 017a 0bb0          decfsz  rb2bus_eedata_write__1,f
3720 017b 2969          goto    rb2bus_eedata_write__2
3721                    ; line_number = 107
3722                    ;  loop_exactly 2 done
3723                    ; delay after procedure statements=non-uniform
3724                    ; Implied return
3725 017c 3400          retlw   0
3726            
3727            
3728            
3729            
3730                    ; Code bank 1; Start address: 2048; End address: 4095
3731   0800 :           org     2048
3732                    ; Configuration bits
3733                    ; address = 0x2007, fill = 0x3000
3734                    ; fcmen = off (0x0)
3735                    ; ieso = off (0x0)
3736                    ; boden = off (0x0)
3737                    ; cpd = off (0x80)
3738                    ; cp = off (0x40)
3739                    ; mclre = off (0x0)
3740                    ; pwrte = off (0x10)
3741                    ; wdte = off (0x0)
3742                    ; fosc = hs (0x2)
3743                    ; 12498 = 0x30d2
3744   30d2 =           __config 12498
3745                    ; Define start addresses for data regions
3746                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
3747                    ; Region="globals___0" Address=32" Size=80 Bytes=17 Bits=4 Available=62
3748                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
3749                    ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80
3750                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
3751                    end
