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