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) 2006 by Wayne C. Gramlich
31                      ; # All rights reserved.
32              
33                      ; # This module uses a PIC16F688:
34                      ; buffer = 'servo4'
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 = 'servo4'
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 = 'servo4'
1398                    ; line_number = 10
1399                    ; library clock20mhz exited
1400                    ; # A microsecond takes 4 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 bits/sec:
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 bits/sec:
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 bits/sec:
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 bits/sec:
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 bits/sec:
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 bits/sec:
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 bits/sec:
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 bits/sec:
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 bits/sec:
1540                    ; line_number = 63
1541                    ; constant _eusart_460800 = (_eusart_clock / (460800 * _eusart_factor)) - 1
1542 00000009 = _eusart_460800 equ 9
1543                    ; line_number = 64
1544                    ; constant _eusart_460800_low = _eusart_460800 & 0xff
1545 00000009 = _eusart_460800_low equ 9
1546                    ; line_number = 65
1547                    ; constant _eusart_460800_high = _eusart_460800 >> 8
1548 00000000 = _eusart_460800_high equ 0
1549                    ; line_number = 66
1550                    ; constant _eusart_460800_index = 8
1551 00000008 = _eusart_460800_index equ 8
1552                    ; # 500000 bits/sec:
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 = 9
1564 00000009 = _eusart_500000_index equ 9
1565                    ; # 576000 bits/sec (1MHz):
1566                    ; line_number = 73
1567                    ; constant _eusart_576000 = (_eusart_clock / (576000 * _eusart_factor)) - 1
1568 00000007 = _eusart_576000 equ 7
1569                    ; line_number = 74
1570                    ; constant _eusart_576000_low = _eusart_576000 & 0xff
1571 00000007 = _eusart_576000_low equ 7
1572                    ; line_number = 75
1573                    ; constant _eusart_576000_high = _eusart_576000 >> 8
1574 00000000 = _eusart_576000_high equ 0
1575                    ; line_number = 76
1576                    ; constant _eusart_576000_index = 10
1577 0000000a = _eusart_576000_index equ 10
1578                    ; # 625000 bits/sec:
1579                    ; line_number = 78
1580                    ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1
1581 00000007 = _eusart_625000 equ 7
1582                    ; line_number = 79
1583                    ; constant _eusart_625000_low = _eusart_625000 & 0xff
1584 00000007 = _eusart_625000_low equ 7
1585                    ; line_number = 80
1586                    ; constant _eusart_625000_high = _eusart_625000 >> 8
1587 00000000 = _eusart_625000_high equ 0
1588                    ; line_number = 81
1589                    ; constant _eusart_625000_index = 11
1590 0000000b = _eusart_625000_index equ 11
1591                    ; # 833333 bits/sec:
1592                    ; line_number = 83
1593                    ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1
1594 00000005 = _eusart_833333 equ 5
1595                    ; line_number = 84
1596                    ; constant _eusart_833333_low = _eusart_833333 & 0xff
1597 00000005 = _eusart_833333_low equ 5
1598                    ; line_number = 85
1599                    ; constant _eusart_833333_high = _eusart_833333 >> 8
1600 00000000 = _eusart_833333_high equ 0
1601                    ; line_number = 86
1602                    ; constant _eusart_833333_index = 12
1603 0000000c = _eusart_833333_index equ 12
1604                    ; # 921600 bits/sec:
1605                    ; line_number = 88
1606                    ; constant _eusart_921600 = (_eusart_clock / (921600 * _eusart_factor)) - 1
1607 00000004 = _eusart_921600 equ 4
1608                    ; line_number = 89
1609                    ; constant _eusart_921600_low = _eusart_921600 & 0xff
1610 00000004 = _eusart_921600_low equ 4
1611                    ; line_number = 90
1612                    ; constant _eusart_921600_high = _eusart_921600 >> 8
1613 00000000 = _eusart_921600_high equ 0
1614                    ; line_number = 91
1615                    ; constant _eusart_921600_index = 13
1616 0000000d = _eusart_921600_index equ 13
1617                    ; # 1000000 bits/sec (1MHz):
1618                    ; line_number = 93
1619                    ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1
1620 00000004 = _eusart_1000000 equ 4
1621                    ; line_number = 94
1622                    ; constant _eusart_1000000_low = _eusart_1000000 & 0xff
1623 00000004 = _eusart_1000000_low equ 4
1624                    ; line_number = 95
1625                    ; constant _eusart_1000000_high = _eusart_1000000 >> 8
1626 00000000 = _eusart_1000000_high equ 0
1627                    ; line_number = 96
1628                    ; constant _eusart_1000000_index = 14
1629 0000000e = _eusart_1000000_index equ 14
1630            
1631                    ; buffer = 'servo4'
1632                    ; line_number = 17
1633                    ; library _eusart exited
1634            
1635                    ; # The library of bus access routines for use by a PIC16F688.
1636                    ; line_number = 20
1637                    ; library rb2bus_pic16f688 entered
1638            
1639                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1640                    ; # All rights reserved.
1641            
1642                    ; # This module provides some procedures for accessing a RoboBricks2
1643                    ; # bus via a UART.  It is speicialized for the PIC16F688.
1644                    ; #
1645                    ; # It defines the following procedure:
1646                    ; #
1647                    ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
1648                    ; #                                for bus access.
1649            
1650                    ; # All other bus access procedures are defined in the {rb2bus} library
1651                    ; # which is accessed below:
1652                    ; buffer = 'rb2bus_pic16f688'
1653                    ; line_number = 16
1654                    ; library rb2bus entered
1655            
1656                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1657                    ; # All rights reserved.
1658            
1659                    ; # This module provides some procedures for accessing a RoboBricks2
1660                    ; # bus via a UART.
1661                    ; #
1662                    ; # This procedure defines the following procedures:
1663                    ; #
1664                    ; # {rb2bus_select_wait}  This procedure waits for the module to become selected
1665                    ; # {rb2bus_deselect}     This procedure causes this module to be deselected.
1666                    ; # {rb2bus_byte_get}     This procedure will get a byte form the bus.
1667                    ; # {rb2bus_byte_put}     This procedure will send a byte to the bus.
1668                    ; #
1669                    ; # The global variable {rb2bus_error} is set to 1 whenever the procedures
1670                    ; # feel like there is a command decoding error.
1671                    ; #
1672                    ; # The way to use these procedures is quite as follows:
1673                    ; #
1674                    ; #    # Comamnd byte variable:
1675                    ; #    local command byte
1676                    ; #
1677                    ; #    # Other initialize code goes here:
1678                    ; #
1679                    ; #    # Process commands from bus master:
1680                    ; #    loop_forever
1681                    ; #        rb2bus_error := _true
1682                    ; #	 while rb2bus_error
1683                    ; #	     call rb2bus_select_wait()
1684                    ; #	     command := rb2bus_byte_get()
1685                    ; #
1686                    ; #        # Decode command:
1687                    ; #	 switch command >> 6
1688                    ; #	   ...
1689                    ; #             case 5:
1690                    ; #	        # 0000 0101 (Foo command):
1691                    ; #	          if !rb2bus_error
1692                    ; #		      # Do foo command:
1693                    ; #
1694                    ; # The key concept behind these procedures is to make command
1695                    ; # decoding for the slave module easy.  If the slave module
1696                    ; # is in the middle of command decoding and the master suddenly
1697                    ; # sends out a module select command, we need to gracefully recover
1698                    ; # from the problem.  A command should only be executed if
1699                    ; # {rb2bus_error} is not set.  If {rb2bus_error} is set, we want
1700                    ; # to gracefully get back to the beginning of the loop without
1701                    ; # doing any damage.  Once {rb2bus_error} is set, all calls to
1702                    ; # {rb2bus_byte_get} return 0 and all calls to {rb2bus_byte_put}
1703                    ; # do nothing.  At the beginning of the loop, {rb2bus_error} is
1704                    ; # cleared by the {rb2bus_select_wait}() procedure and we have
1705                    ; # recovered from the situation.
1706            
1707                    ; buffer = 'rb2bus'
1708                    ; line_number = 54
1709                    ; library rb2_constants entered
1710            
1711                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
1712                    ; # All rights reserved.
1713            
1714                    ; buffer = 'rb2_constants'
1715                    ; line_number = 6
1716                    ; constant rb2_ok = 0xa5
1717 000000a5 = rb2_ok equ 165
1718            
1719                    ; line_number = 8
1720                    ; constant rb2_common_address_set = 0xfc
1721 000000fc = rb2_common_address_set equ 252
1722                    ; line_number = 9
1723                    ; constant rb2_common_id_next = 0xfd
1724 000000fd = rb2_common_id_next equ 253
1725                    ; line_number = 10
1726                    ; constant rb2_common_id_start = 0xfe
1727 000000fe = rb2_common_id_start equ 254
1728                    ; line_number = 11
1729                    ; constant rb2_common_deselect = 0xff
1730 000000ff = rb2_common_deselect equ 255
1731            
1732                    ; line_number = 13
1733                    ; constant rb2_laser1_address = 1
1734 00000001 = rb2_laser1_address equ 1
1735                    ; line_number = 14
1736                    ; constant rb2_laser1_sense_read = 0
1737 00000000 = rb2_laser1_sense_read equ 0
1738                    ; line_number = 15
1739                    ; constant rb2_laser1_enable_read = 1
1740 00000001 = rb2_laser1_enable_read equ 1
1741                    ; line_number = 16
1742                    ; constant rb2_laser1_enable_clear = 2
1743 00000002 = rb2_laser1_enable_clear equ 2
1744                    ; line_number = 17
1745                    ; constant rb2_laser1_enable_set = 3
1746 00000003 = rb2_laser1_enable_set equ 3
1747            
1748                    ; line_number = 19
1749                    ; constant rb2_minimotor2_address = 2
1750 00000002 = rb2_minimotor2_address equ 2
1751                    ; line_number = 20
1752                    ; constant rb2_midimotor2_address = 3
1753 00000003 = rb2_midimotor2_address equ 3
1754                    ; line_number = 21
1755                    ; constant rb2_motor0_speed_get = 0
1756 00000000 = rb2_motor0_speed_get equ 0
1757                    ; line_number = 22
1758                    ; constant rb2_motor0_speed_set = 1
1759 00000001 = rb2_motor0_speed_set equ 1
1760                    ; line_number = 23
1761                    ; constant rb2_motor1_speed_get = 2
1762 00000002 = rb2_motor1_speed_get equ 2
1763                    ; line_number = 24
1764                    ; constant rb2_motor1_speed_set = 3
1765 00000003 = rb2_motor1_speed_set equ 3
1766                    ; line_number = 25
1767                    ; constant rb2_duty_cycle_get = 4
1768 00000004 = rb2_duty_cycle_get equ 4
1769                    ; line_number = 26
1770                    ; constant rb2_duty_cycle_set = 8
1771 00000008 = rb2_duty_cycle_set equ 8
1772            
1773                    ; line_number = 28
1774                    ; constant rb2_irdistance2_address = 4
1775 00000004 = rb2_irdistance2_address equ 4
1776                    ; line_number = 29
1777                    ; constant rb2_irdistance2_raw0_get = 0
1778 00000000 = rb2_irdistance2_raw0_get equ 0
1779                    ; line_number = 30
1780                    ; constant rb2_irdistance2_raw1_get = 1
1781 00000001 = rb2_irdistance2_raw1_get equ 1
1782                    ; line_number = 31
1783                    ; constant rb2_irdistance2_smooth0_get = 2
1784 00000002 = rb2_irdistance2_smooth0_get equ 2
1785                    ; line_number = 32
1786                    ; constant rb2_irdistance2_smooth1_get = 3
1787 00000003 = rb2_irdistance2_smooth1_get equ 3
1788                    ; line_number = 33
1789                    ; constant rb2_irdistance2_linear0_get = 4
1790 00000004 = rb2_irdistance2_linear0_get equ 4
1791                    ; line_number = 34
1792                    ; constant rb2_irdistance2_linear1_get = 6
1793 00000006 = rb2_irdistance2_linear1_get equ 6
1794            
1795                    ; line_number = 36
1796                    ; constant rb2_shaft2_address = 5
1797 00000005 = rb2_shaft2_address equ 5
1798                    ; line_number = 37
1799                    ; constant rb2_shaft2_count_latch = 0
1800 00000000 = rb2_shaft2_count_latch equ 0
1801                    ; line_number = 38
1802                    ; constant rb2_shaft2_count_clear = 1
1803 00000001 = rb2_shaft2_count_clear equ 1
1804                    ; line_number = 39
1805                    ; constant rb2_shaft2_shaft0_high_get = 2
1806 00000002 = rb2_shaft2_shaft0_high_get equ 2
1807                    ; line_number = 40
1808                    ; constant rb2_shaft2_shaft1_high_get = 3
1809 00000003 = rb2_shaft2_shaft1_high_get equ 3
1810                    ; line_number = 41
1811                    ; constant rb2_shaft2_continue_get = 4
1812 00000004 = rb2_shaft2_continue_get equ 4
1813                    ; line_number = 42
1814                    ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
1815 00000004 = rb2_shaft2_shaft0_low_get equ 4
1816                    ; line_number = 43
1817                    ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
1818 00000004 = rb2_shaft2_shaft1_low_get equ 4
1819                    ; line_number = 44
1820                    ; constant rb2_shaft2_x_get = 0x10
1821 00000010 = rb2_shaft2_x_get equ 16
1822                    ; line_number = 45
1823                    ; constant rb2_shaft2_y_get = 0x11
1824 00000011 = rb2_shaft2_y_get equ 17
1825                    ; line_number = 46
1826                    ; constant rb2_shaft2_bearing16_get = 0x12
1827 00000012 = rb2_shaft2_bearing16_get equ 18
1828                    ; line_number = 47
1829                    ; constant rb2_shaft2_bearing8_get = 0x13
1830 00000013 = rb2_shaft2_bearing8_get equ 19
1831                    ; line_number = 48
1832                    ; constant rb2_shaft2_target_x_get = 0x14
1833 00000014 = rb2_shaft2_target_x_get equ 20
1834                    ; line_number = 49
1835                    ; constant rb2_shaft2_target_y_get = 0x15
1836 00000015 = rb2_shaft2_target_y_get equ 21
1837                    ; line_number = 50
1838                    ; constant rb2_shaft2_target_bearing16_get = 0x16
1839 00000016 = rb2_shaft2_target_bearing16_get equ 22
1840                    ; line_number = 51
1841                    ; constant rb2_shaft2_target_bearing8_get = 0x17
1842 00000017 = rb2_shaft2_target_bearing8_get equ 23
1843                    ; line_number = 52
1844                    ; constant rb2_shaft2_target_distance_get = 0x18
1845 00000018 = rb2_shaft2_target_distance_get equ 24
1846                    ; line_number = 53
1847                    ; constant rb2_shaft2_wheel_spacing_get = 0x19
1848 00000019 = rb2_shaft2_wheel_spacing_get equ 25
1849                    ; line_number = 54
1850                    ; constant rb2_shaft2_wheel_ticks_get = 0x1a
1851 0000001a = rb2_shaft2_wheel_ticks_get equ 26
1852                    ; line_number = 55
1853                    ; constant rb2_shaft2_wheel_diameter_get = 0x1b
1854 0000001b = rb2_shaft2_wheel_diameter_get equ 27
1855                    ; line_number = 56
1856                    ; constant rb2_shaft2_count_iteration_get = 0x1c
1857 0000001c = rb2_shaft2_count_iteration_get equ 28
1858                    ; line_number = 57
1859                    ; constant rb2_shaft2_x_set = 0x20
1860 00000020 = rb2_shaft2_x_set equ 32
1861                    ; line_number = 58
1862                    ; constant rb2_shaft2_y_set = 0x21
1863 00000021 = rb2_shaft2_y_set equ 33
1864                    ; line_number = 59
1865                    ; constant rb2_shaft2_bearing16_set = 0x22
1866 00000022 = rb2_shaft2_bearing16_set equ 34
1867                    ; line_number = 60
1868                    ; constant rb2_shaft2_navigation_latch = 0x23
1869 00000023 = rb2_shaft2_navigation_latch equ 35
1870                    ; line_number = 61
1871                    ; constant rb2_shaft2_target_x_set = 0x24
1872 00000024 = rb2_shaft2_target_x_set equ 36
1873                    ; line_number = 62
1874                    ; constant rb2_shaft2_target_y_set = 0x25
1875 00000025 = rb2_shaft2_target_y_set equ 37
1876                    ; line_number = 63
1877                    ; constant rb2_shaft2_wheel_spacing_set = 0x29
1878 00000029 = rb2_shaft2_wheel_spacing_set equ 41
1879                    ; line_number = 64
1880                    ; constant rb2_shaft2_wheel_ticks_set = 0x2a
1881 0000002a = rb2_shaft2_wheel_ticks_set equ 42
1882                    ; line_number = 65
1883                    ; constant rb2_shaft2_wheel_diameter_set = 0x2b
1884 0000002b = rb2_shaft2_wheel_diameter_set equ 43
1885            
1886            
1887                    ; line_number = 68
1888                    ; constant rb2_orient5_address = 6
1889 00000006 = rb2_orient5_address equ 6
1890            
1891                    ; line_number = 70
1892                    ; constant rb2_compass8_address = 7
1893 00000007 = rb2_compass8_address equ 7
1894            
1895                    ; line_number = 72
1896                    ; constant rb2_io8_address = 8
1897 00000008 = rb2_io8_address equ 8
1898                    ; line_number = 73
1899                    ; constant rb2_io8_digital8_get = 0
1900 00000000 = rb2_io8_digital8_get equ 0
1901                    ; line_number = 74
1902                    ; constant rb2_io8_digital8_set = 1
1903 00000001 = rb2_io8_digital8_set equ 1
1904                    ; line_number = 75
1905                    ; constant rb2_io8_direction_get = 2
1906 00000002 = rb2_io8_direction_get equ 2
1907                    ; line_number = 76
1908                    ; constant rb2_io8_direction_set = 3
1909 00000003 = rb2_io8_direction_set equ 3
1910                    ; line_number = 77
1911                    ; constant rb2_io8_analog_mask_get = 4
1912 00000004 = rb2_io8_analog_mask_get equ 4
1913                    ; line_number = 78
1914                    ; constant rb2_io8_analog_mask_set = 5
1915 00000005 = rb2_io8_analog_mask_set equ 5
1916                    ; line_number = 79
1917                    ; constant rb2_io8_analog8_get = 0x10
1918 00000010 = rb2_io8_analog8_get equ 16
1919                    ; line_number = 80
1920                    ; constant rb2_io8_analog10_get = 0x18
1921 00000018 = rb2_io8_analog10_get equ 24
1922                    ; line_number = 81
1923                    ; constant rb2_low_set = 0x20
1924 00000020 = rb2_low_set equ 32
1925                    ; line_number = 82
1926                    ; constant rb2_high_set = 0x30
1927 00000030 = rb2_high_set equ 48
1928            
1929                    ; line_number = 84
1930                    ; constant rb2_sonar2_address = 9
1931 00000009 = rb2_sonar2_address equ 9
1932            
1933                    ; line_number = 86
1934                    ; constant rb2_voice1_address = 10
1935 0000000a = rb2_voice1_address equ 10
1936            
1937                    ; line_number = 88
1938                    ; constant rb2_servo4_address = 11
1939 0000000b = rb2_servo4_address equ 11
1940                    ; line_number = 89
1941                    ; constant rb2_servo4_servo0 = 0
1942 00000000 = rb2_servo4_servo0 equ 0
1943                    ; line_number = 90
1944                    ; constant rb2_servo4_servo1 = 1
1945 00000001 = rb2_servo4_servo1 equ 1
1946                    ; line_number = 91
1947                    ; constant rb2_servo4_servo2 = 2
1948 00000002 = rb2_servo4_servo2 equ 2
1949                    ; line_number = 92
1950                    ; constant rb2_servo4_servo3 = 3
1951 00000003 = rb2_servo4_servo3 equ 3
1952                    ; line_number = 93
1953                    ; constant rb2_servo4_quick_set = 0
1954 00000000 = rb2_servo4_quick_set equ 0
1955                    ; line_number = 94
1956                    ; constant rb2_servo4_quick_low = 0
1957 00000000 = rb2_servo4_quick_low equ 0
1958                    ; line_number = 95
1959                    ; constant rb2_servo4_quick_center = 40
1960 00000028 = rb2_servo4_quick_center equ 40
1961                    ; line_number = 96
1962                    ; constant rb2_servo4_quick_high = 0x7c
1963 0000007c = rb2_servo4_quick_high equ 124
1964                    ; line_number = 97
1965                    ; constant rb2_servo4_high_low_set = 0x80
1966 00000080 = rb2_servo4_high_low_set equ 128
1967                    ; line_number = 98
1968                    ; constant rb2_servo4_short_high_low_set = 0x84
1969 00000084 = rb2_servo4_short_high_low_set equ 132
1970                    ; line_number = 99
1971                    ; constant rb2_servo4_high_set = 0x88
1972 00000088 = rb2_servo4_high_set equ 136
1973                    ; line_number = 100
1974                    ; constant rb2_servo4_low_set = 0x8c
1975 0000008c = rb2_servo4_low_set equ 140
1976                    ; line_number = 101
1977                    ; constant rb2_servo4_enables_set = 0x90
1978 00000090 = rb2_servo4_enables_set equ 144
1979                    ; line_number = 102
1980                    ; constant rb2_servo4_enable0 = 1
1981 00000001 = rb2_servo4_enable0 equ 1
1982                    ; line_number = 103
1983                    ; constant rb2_servo4_enable1 = 2
1984 00000002 = rb2_servo4_enable1 equ 2
1985                    ; line_number = 104
1986                    ; constant rb2_servo4_enable2 = 4
1987 00000004 = rb2_servo4_enable2 equ 4
1988                    ; line_number = 105
1989                    ; constant rb2_servo4_enable3 = 8
1990 00000008 = rb2_servo4_enable3 equ 8
1991                    ; line_number = 106
1992                    ; constant rb2_servo4_enable_all = 0xf
1993 0000000f = rb2_servo4_enable_all equ 15
1994                    ; line_number = 107
1995                    ; constant rb2_servo4_enable_none = 0
1996 00000000 = rb2_servo4_enable_none equ 0
1997                    ; line_number = 108
1998                    ; constant rb2_servo4_high_get = 0xa0
1999 000000a0 = rb2_servo4_high_get equ 160
2000                    ; line_number = 109
2001                    ; constant rb2_servo4_low_get = 0xa4
2002 000000a4 = rb2_servo4_low_get equ 164
2003                    ; line_number = 110
2004                    ; constant rb2_servo4_enables_get = 0xa8
2005 000000a8 = rb2_servo4_enables_get equ 168
2006            
2007                    ; line_number = 112
2008                    ; constant rb2_controller28_address = 28
2009 0000001c = rb2_controller28_address equ 28
2010            
2011                    ; line_number = 114
2012                    ; constant rb2_lcd32_address = 32
2013 00000020 = rb2_lcd32_address equ 32
2014                    ; line_number = 115
2015                    ; constant rb2_lcd32_row_set = 4
2016 00000004 = rb2_lcd32_row_set equ 4
2017                    ; line_number = 116
2018                    ; constant rb2_lcd32_row0_set = rb2_lcd32_row_set | 0
2019 00000004 = rb2_lcd32_row0_set equ 4
2020                    ; line_number = 117
2021                    ; constant rb2_lcd32_row1_set = rb2_lcd32_row_set | 1
2022 00000005 = rb2_lcd32_row1_set equ 5
2023                    ; line_number = 118
2024                    ; constant rb2_lcd32_row2_set = rb2_lcd32_row_set | 2
2025 00000006 = rb2_lcd32_row2_set equ 6
2026                    ; line_number = 119
2027                    ; constant rb2_lcd32_row3_set = rb2_lcd32_row_set | 3
2028 00000007 = rb2_lcd32_row3_set equ 7
2029                    ; line_number = 120
2030                    ; constant rb2_lcd32_new_line = 0xa
2031 0000000a = rb2_lcd32_new_line equ 10
2032                    ; line_number = 121
2033                    ; constant rb2_lcd32_form_feed = 0xc
2034 0000000c = rb2_lcd32_form_feed equ 12
2035                    ; line_number = 122
2036                    ; constant rb2_lcd32_carriage_return = 0xd
2037 0000000d = rb2_lcd32_carriage_return equ 13
2038                    ; line_number = 123
2039                    ; constant rb2_lcd32_column_set = 0x10
2040 00000010 = rb2_lcd32_column_set equ 16
2041            
2042            
2043                    ; buffer = 'rb2bus'
2044                    ; line_number = 54
2045                    ; library rb2_constants exited
2046                    ; line_number = 55
2047                    ; library rb2bus_globals entered
2048            
2049                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
2050                    ; # All rights reserved.
2051            
2052                    ; # These are the global variables used by both the {rb2bus} and
2053                    ; # the various {rb2bus_picXXXX} libraries.  Poll based firmware
2054                    ; # uses both libraries, whereas interrupt driven software only
2055                    ; # uses the {rb2bus_picXXX} libraries.
2056            
2057                    ; buffer = 'rb2bus_globals'
2058                    ; line_number = 11
2059                    ; global rb2bus_selected bit	# 
2060 0000006f = rb2bus_selected___byte equ globals___0+79
2061 00000000 = rb2bus_selected___bit equ 0
2062                    ; line_number = 12
2063                    ; global rb2bus_error bit		# Global error bit
2064 0000006f = rb2bus_error___byte equ globals___0+79
2065 00000001 = rb2bus_error___bit equ 1
2066                    ; line_number = 13
2067                    ; global rb2bus_address byte	# Bus address to respond to
2068 00000020 = rb2bus_address equ globals___0
2069                    ; line_number = 14
2070                    ; global rb2bus_index byte	# Index into id information
2071 00000021 = rb2bus_index equ globals___0+1
2072            
2073            
2074                    ; buffer = 'rb2bus'
2075                    ; line_number = 55
2076                    ; library rb2bus_globals exited
2077            
2078                    ; Delaying code generation for procedure  rb2bus_select_wait
2079                    ; Delaying code generation for procedure  rb2bus_deselect
2080                    ; Delaying code generation for procedure  rb2bus_byte_get
2081                    ; Delaying code generation for procedure  rb2bus_byte_put
2082                    ; Delaying code generation for procedure  rb2bus_command
2083            
2084                    ; buffer = 'rb2bus_pic16f688'
2085                    ; line_number = 16
2086                    ; library rb2bus exited
2087            
2088                    ; Delaying code generation for procedure  rb2bus_initialize
2089                    ; line_number = 62
2090                    ; constant rb2bus_eedata_address = 0xfe
2091 000000fe = rb2bus_eedata_address equ 254
2092            
2093                    ; Delaying code generation for procedure  rb2bus_eedata_read
2094                    ; Delaying code generation for procedure  rb2bus_eedata_write
2095            
2096                    ; buffer = 'servo4'
2097                    ; line_number = 20
2098                    ; library rb2bus_pic16f688 exited
2099            
2100                    ; # This module uses 20MHz ceramic resonator; hence mode FOSC=HS:
2101            
2102                    ; # We want the TRM0 to interrupt every 2.5mS.  With FOSC=20MHz,
2103                    ; # we need to interrupt every 2.5 * 1000 * 5 = 12,500 instructions.
2104                    ; # With the TMR0 prescaler set to 64, we want TMR0 every 195 ticks
2105                    ; # (195 * 64 = 12480):
2106                    ; line_number = 29
2107                    ; constant tmr0_instructions = 2500 * microsecond
2108 000030d4 = tmr0_instructions equ 12500
2109                    ; line_number = 30
2110                    ; constant tmr0_power = 6
2111 00000006 = tmr0_power equ 6
2112                    ; line_number = 31
2113                    ; constant tmr0_prescale = 1 << tmr0_power
2114 00000040 = tmr0_prescale equ 64
2115                    ; line_number = 32
2116                    ; constant tmr0_ps = tmr0_power - 1
2117 00000005 = tmr0_ps equ 5
2118                    ; line_number = 33
2119                    ; constant tmr0_value = tmr0_instructions / tmr0_prescale + 1
2120 000000c4 = tmr0_value equ 196
2121                    ; line_number = 34
2122                    ; constant tmr0_value_negative = (0 - tmr0_value) & 0xff
2123 0000003c = tmr0_value_negative equ 60
2124            
2125                    ; line_number = 36
2126                    ; constant servos = 4
2127 00000004 = servos equ 4
2128                    ; line_number = 37
2129                    ; constant servos_mask = servos - 1
2130 00000003 = servos_mask equ 3
2131                    ; line_number = 38
2132                    ; constant enables_mask = (1 << servos) - 1
2133 0000000f = enables_mask equ 15
2134            
2135                    ; # 1.5ms pulse width is supposed to be the "center" position
2136                    ; # for a servo.  We will initialize for center.
2137                    ; # 7500 * .20us = 1.5ms.   7500 = 0x1d4c
2138                    ; line_number = 43
2139                    ; constant servo_center = 3500
2140 00000dac = servo_center equ 3500
2141                    ; line_number = 44
2142                    ; constant servo_center_low = servo_center & 0xff
2143 000000ac = servo_center_low equ 172
2144                    ; line_number = 45
2145                    ; constant servo_center_high = servo_center >> 8
2146 0000000d = servo_center_high equ 13
2147            
2148                    ; line_number = 47
2149                    ; global enables byte
2150 0000002c = enables equ globals___0+12
2151                    ; line_number = 48
2152                    ; global servo_index byte
2153 0000002d = servo_index equ globals___0+13
2154                    ; line_number = 49
2155                    ; global servos_high[servos] array[byte]
2156 0000002e = servos_high equ globals___0+14
2157                    ; line_number = 50
2158                    ; global servos_low[servos] array[byte]
2159 00000032 = servos_low equ globals___0+18
2160            
2161                    ; line_number = 52
2162                    ; package pdip
2163                    ; line_number = 53
2164                    ; pin 1 = power_supply
2165                    ; line_number = 54
2166                    ;  pin 2 = osc1
2167                    ; line_number = 55
2168                    ;  pin 3 = osc2
2169                    ; line_number = 56
2170                    ;  pin 4 = ra3_nc
2171                    ; line_number = 57
2172                    ;  pin 5 = rx, name=rx, bit=rx_bit
2173 00000007 = rx___byte equ _portc
2174 00000005 = rx___bit equ 5
2175 00000005 = rx_bit equ 5
2176                    ; line_number = 58
2177                    ;  pin 6 = tx, name=tx, bit=tx_bit
2178 00000007 = tx___byte equ _portc
2179 00000004 = tx___bit equ 4
2180 00000004 = tx_bit equ 4
2181                    ; line_number = 59
2182                    ;  pin 7 = rc3_out, name=servo3, mask=servo3_mask, bit=servo_bit3
2183 00000007 = servo3___byte equ _portc
2184 00000003 = servo3___bit equ 3
2185 00000008 = servo3_mask equ 8
2186 00000003 = servo_bit3 equ 3
2187                    ; line_number = 60
2188                    ;  pin 8 = rc2_out, name=servo2, mask=servo2_mask, bit=servo_bit2
2189 00000007 = servo2___byte equ _portc
2190 00000002 = servo2___bit equ 2
2191 00000004 = servo2_mask equ 4
2192 00000002 = servo_bit2 equ 2
2193                    ; line_number = 61
2194                    ;  pin 9 = rc1_out, name=servo1, mask=servo1_mask, bit=servo_bit1
2195 00000007 = servo1___byte equ _portc
2196 00000001 = servo1___bit equ 1
2197 00000002 = servo1_mask equ 2
2198 00000001 = servo_bit1 equ 1
2199                    ; line_number = 62
2200                    ;  pin 10 = rc0_out, name=servo0, mask=servo0_mask, bit=servo_bit0
2201 00000007 = servo0___byte equ _portc
2202 00000000 = servo0___bit equ 0
2203 00000001 = servo0_mask equ 1
2204 00000000 = servo_bit0 equ 0
2205                    ; line_number = 63
2206                    ;  pin 11 = ra2_nc
2207                    ; line_number = 64
2208                    ;  pin 12 = ra1_nc
2209                    ; line_number = 65
2210                    ;  pin 13 = ra0_nc
2211                    ; line_number = 66
2212                    ;  pin 14 = ground
2213            
2214                    ; line_number = 68
2215                    ; constant all_mask = servo0_mask | servo1_mask | servo2_mask | servo3_mask
2216 0000000f = all_mask equ 15
2217            
2218                    ; line_number = 70
2219                    ; origin 0
2220   0000 :           org     0
2221            
2222                    ; line_number = 72
2223                    ;info   72, 0
2224                    ; procedure start
2225   0000 :   start:
2226                    ; arguments_none
2227                    ; line_number = 74
2228                    ;  returns_nothing
2229            
2230                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2231                    ; line_number = 76
2232                    ;  assemble
2233                    ;info   76, 0
2234                    ; line_number = 77
2235                    ;info   77, 0
2236 0000 283b          goto    main
2237            
2238                    ; delay after procedure statements=non-uniform
2239                    ; Implied return
2240 0001 3400          retlw   0
2241            
2242            
2243            
2244            
2245                    ; line_number = 79
2246                    ; origin 4
2247   0004 :           org     4
2248            
2249                    ; line_number = 81
2250                    ;info   81, 4
2251                    ; procedure interrupt
2252   0004 :   interrupt:
2253 00000071 = interrupt___w_save equ shared___globals+1
2254 00000070 = interrupt___status_save equ shared___globals
2255                    ; Carefully save __w and __tatus into RAM
2256                    ; Save W first (easy)
2257 0004 00f1          movwf   interrupt___w_save
2258                    ; Save Status without smashing it (tricky)
2259                    ; Move swapped version of status into W
2260 0005 0e03          swapf   __status,w
2261                    ; Store swapped version of status into RAM
2262 0006 00f0          movwf   interrupt___status_save
2263                    ; arguments_none
2264                    ; line_number = 83
2265                    ;  returns_nothing
2266            
2267                    ; # We can arrive here from either a TMR0 or TMR1 interrupt.
2268            
2269                    ; # For a TMR1 interrupt, we just clear all of the servo outputs
2270                    ; # to zero.  Since it is always safe to do this for a TMR0 interrupt,
2271                    ; # we just clear the servo outputs no matter what:
2272            
2273                    ; # Clear servos:
2274                    ; before procedure statements delay=non-uniform, bit states=(data:??=uu=>?? code:XX=cc=>XX)
2275                    ; line_number = 92
2276                    ;  _rc := all_mask
2277                    ;info   92, 7
2278 0007 300f          movlw   15
2279 0008 1283          bcf     __rp0___byte, __rp0___bit
2280 0009 0087          movwf   _rc
2281                    ; # Clear the TMR1 Interrupt Flag:
2282                    ; line_number = 94
2283                    ;  _tmr1if := _false
2284                    ;info   94, 10
2285 000a 1303          bcf     __rp1___byte, __rp1___bit
2286 000b 100c          bcf     _tmr1if___byte, _tmr1if___bit
2287                    ; # Turn TMR1 off:
2288                    ; line_number = 96
2289                    ;  _tmr1on := _false
2290                    ;info   96, 12
2291 000c 1010          bcf     _tmr1on___byte, _tmr1on___bit
2292            
2293                    ; # Now deal with TMR0:
2294                    ; line_number = 99
2295                    ;  if _t0if start
2296                    ;info   99, 13
2297                    ; =>bit_code_emit@symbol(): sym=_t0if
2298                    ; No 1TEST: true.size=39 false.size=0
2299                    ; No 2TEST: true.size=39 false.size=0
2300                    ; 1GOTO: Single test with GOTO
2301 000d 1d0b          btfss   _t0if___byte, _t0if___bit
2302 000e 2836          goto    interrupt__11
2303                    ; # Load the 1's complement of the select servo into 
2304                    ; line_number = 101
2305                    ;  servo_index := (servo_index + 1) & servos_mask
2306                    ;info   101, 15
2307 000f 0a2d          incf    servo_index,w
2308 0010 3903          andlw   3
2309 0011 00ad          movwf   servo_index
2310                    ; line_number = 102
2311                    ;  _tmr1h := 0xff ^ servos_high[servo_index]
2312                    ;info   102, 18
2313 0012 082d          movf    servo_index,w
2314 0013 3e2e          addlw   servos_high
2315 0014 0084          movwf   __fsr
2316 0015 0800          movf    __indf,w
2317 0016 3aff          xorlw   255
2318 0017 008f          movwf   _tmr1h
2319                    ; line_number = 103
2320                    ;  _tmr1l := 0xff ^ servos_low[servo_index]
2321                    ;info   103, 24
2322 0018 082d          movf    servo_index,w
2323 0019 3e32          addlw   servos_low
2324 001a 0084          movwf   __fsr
2325 001b 0800          movf    __indf,w
2326 001c 3aff          xorlw   255
2327 001d 008e          movwf   _tmr1l
2328            
2329                    ; # Reload TRM0:
2330                    ; line_number = 106
2331                    ;  _t0if := _false
2332                    ;info   106, 30
2333 001e 110b          bcf     _t0if___byte, _t0if___bit
2334                    ; line_number = 107
2335                    ;  _tmr0 := tmr0_value_negative
2336                    ;info   107, 31
2337 001f 303c          movlw   60
2338 0020 0081          movwf   _tmr0
2339            
2340                    ; # Turn on the appropriate servo:
2341                    ; line_number = 110
2342                    ;  switch servo_index start
2343                    ;info   110, 33
2344                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=18
2345 0021 3000          movlw   interrupt__9>>8
2346 0022 008a          movwf   __pclath
2347 0023 082d          movf    servo_index,w
2348                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2349 0024 3e26          addlw   interrupt__9
2350 0025 0082          movwf   __pcl
2351                    ; page_group 4
2352   0026 :   interrupt__9:
2353 0026 282a          goto    interrupt__5
2354 0027 282d          goto    interrupt__6
2355 0028 2830          goto    interrupt__7
2356 0029 2833          goto    interrupt__8
2357                    ; line_number = 111
2358                    ; case 0
2359   002a :   interrupt__5:
2360                    ; line_number = 112
2361                    ; if enables@0 start
2362                    ;info   112, 42
2363 0000002c = interrupt__select__1___byte equ enables
2364 00000000 = interrupt__select__1___bit equ 0
2365                    ; =>bit_code_emit@symbol(): sym=interrupt__select__1
2366                    ; 1TEST: Single test with code in skip slot
2367 002a 182c          btfsc   interrupt__select__1___byte, interrupt__select__1___bit
2368                    ; line_number = 113
2369                    ; servo0 := _false
2370                    ;info   113, 43
2371 002b 1007          bcf     servo0___byte, servo0___bit
2372                    ; Recombine size1 = 0 || size2 = 0
2373                    ; line_number = 112
2374                    ; if enables@0 done
2375 002c 2835          goto    interrupt__10
2376                    ; line_number = 114
2377                    ; case 1
2378   002d :   interrupt__6:
2379                    ; line_number = 115
2380                    ; if enables@1 start
2381                    ;info   115, 45
2382 0000002c = interrupt__select__2___byte equ enables
2383 00000001 = interrupt__select__2___bit equ 1
2384                    ; =>bit_code_emit@symbol(): sym=interrupt__select__2
2385                    ; 1TEST: Single test with code in skip slot
2386 002d 18ac          btfsc   interrupt__select__2___byte, interrupt__select__2___bit
2387                    ; line_number = 116
2388                    ; servo1 := _false
2389                    ;info   116, 46
2390 002e 1087          bcf     servo1___byte, servo1___bit
2391                    ; Recombine size1 = 0 || size2 = 0
2392                    ; line_number = 115
2393                    ; if enables@1 done
2394 002f 2835          goto    interrupt__10
2395                    ; line_number = 117
2396                    ; case 2
2397   0030 :   interrupt__7:
2398                    ; line_number = 118
2399                    ; if enables@2 start
2400                    ;info   118, 48
2401 0000002c = interrupt__select__3___byte equ enables
2402 00000002 = interrupt__select__3___bit equ 2
2403                    ; =>bit_code_emit@symbol(): sym=interrupt__select__3
2404                    ; 1TEST: Single test with code in skip slot
2405 0030 192c          btfsc   interrupt__select__3___byte, interrupt__select__3___bit
2406                    ; line_number = 119
2407                    ; servo2 := _false
2408                    ;info   119, 49
2409 0031 1107          bcf     servo2___byte, servo2___bit
2410                    ; Recombine size1 = 0 || size2 = 0
2411                    ; line_number = 118
2412                    ; if enables@2 done
2413 0032 2835          goto    interrupt__10
2414                    ; line_number = 120
2415                    ; case 3
2416   0033 :   interrupt__8:
2417                    ; line_number = 121
2418                    ; if enables@3 start
2419                    ;info   121, 51
2420 0000002c = interrupt__select__4___byte equ enables
2421 00000003 = interrupt__select__4___bit equ 3
2422                    ; =>bit_code_emit@symbol(): sym=interrupt__select__4
2423                    ; 1TEST: Single test with code in skip slot
2424 0033 19ac          btfsc   interrupt__select__4___byte, interrupt__select__4___bit
2425                    ; line_number = 122
2426                    ; servo3 := _false
2427                    ;info   122, 52
2428 0034 1187          bcf     servo3___byte, servo3___bit
2429                    ; Recombine size1 = 0 || size2 = 0
2430                    ; line_number = 121
2431                    ; if enables@3 done
2432   0035 :   interrupt__10:
2433                    ; line_number = 110
2434                    ;  switch servo_index done
2435                    ; # Fire up TRM1:
2436                    ; line_number = 124
2437                    ;  _tmr1on := _true
2438                    ;info   124, 53
2439 0035 1410          bsf     _tmr1on___byte, _tmr1on___bit
2440                    ; Recombine size1 = 0 || size2 = 0
2441   0036 :   interrupt__11:
2442                    ; line_number = 99
2443                    ;  if _t0if done
2444                    ; # All done:
2445            
2446                    ; delay after procedure statements=non-uniform
2447                    ; Interrupt return
2448                    ; Carefully restore __w and __tatus from RAM
2449                    ; Restore swapped status into W
2450 0036 0e70          swapf   interrupt___status_save,w
2451                    ; W now contains (unswapped) status
2452                    ; Restore W to __status
2453 0037 0083          movwf   __status
2454                    ; From here on out, do not modify __status
2455                    ; Swap saved W register in RAM
2456 0038 0ef1          swapf   interrupt___w_save,f
2457                    ; Unswap the saved W reg and restore to W
2458 0039 0e71          swapf   interrupt___w_save,w
2459                    ; __w and __status are now restored
2460                    ; Return from interrupt
2461 003a 0009          retfie  
2462            
2463            
2464            
2465            
2466                    ; line_number = 127
2467                    ;info   127, 59
2468                    ; procedure main
2469   003b :   main:
2470                    ; Initialize some registers
2471 003b 019f          clrf    _adcon0
2472 003c 1683          bsf     __rp0___byte, __rp0___bit
2473 003d 0191          clrf    _ansel
2474 003e 3007          movlw   7
2475 003f 1283          bcf     __rp0___byte, __rp0___bit
2476 0040 0099          movwf   _cmcon0
2477 0041 303f          movlw   63
2478 0042 1683          bsf     __rp0___byte, __rp0___bit
2479 0043 0085          movwf   _trisa
2480 0044 3030          movlw   48
2481 0045 0087          movwf   _trisc
2482                    ; arguments_none
2483                    ; line_number = 129
2484                    ;  returns_nothing
2485            
2486                    ; line_number = 131
2487                    ;  local command byte
2488 00000036 = main__command equ globals___0+22
2489                    ; line_number = 132
2490                    ;  local id_index byte
2491 00000037 = main__id_index equ globals___0+23
2492                    ; line_number = 133
2493                    ;  local index byte
2494 00000038 = main__index equ globals___0+24
2495                    ; line_number = 134
2496                    ;  local servo byte
2497 00000039 = main__servo equ globals___0+25
2498                    ; line_number = 135
2499                    ;  local high byte
2500 0000003a = main__high equ globals___0+26
2501                    ; line_number = 136
2502                    ;  local low byte
2503 0000003b = main__low equ globals___0+27
2504            
2505                    ; # Initialize the RB2 module:
2506                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX)
2507                    ; line_number = 139
2508                    ;  call rb2bus_initialize(11)
2509                    ;info   139, 70
2510 0046 300b          movlw   11
2511 0047 1283          bcf     __rp0___byte, __rp0___bit
2512 0048 21b5          call    rb2bus_initialize
2513            
2514                    ; # Initialize everything else:
2515            
2516                    ; # Initialize the pulses:
2517                    ; line_number = 144
2518                    ;  index := 0
2519                    ;info   144, 73
2520 0049 01b8          clrf    main__index
2521                    ; line_number = 145
2522                    ;  while index < servos start
2523   004a :   main__1:
2524                    ;info   145, 74
2525 004a 3004          movlw   4
2526 004b 0238          subwf   main__index,w
2527                    ; =>bit_code_emit@symbol(): sym=__c
2528                    ; No 1TEST: true.size=0 false.size=12
2529                    ; No 2TEST: true.size=0 false.size=12
2530                    ; 1GOTO: Single test with GOTO
2531 004c 1803          btfsc   __c___byte, __c___bit
2532 004d 285a          goto    main__2
2533                    ; line_number = 146
2534                    ; servos_high[index] := servo_center_high
2535                    ;info   146, 78
2536                    ; index_fsr_first
2537 004e 0838          movf    main__index,w
2538 004f 3e2e          addlw   servos_high
2539 0050 0084          movwf   __fsr
2540 0051 300d          movlw   13
2541 0052 0080          movwf   __indf
2542                    ; line_number = 147
2543                    ;  servos_low[index] := servo_center_low
2544                    ;info   147, 83
2545                    ; index_fsr_first
2546 0053 0838          movf    main__index,w
2547 0054 3e32          addlw   servos_low
2548 0055 0084          movwf   __fsr
2549 0056 30ac          movlw   172
2550 0057 0080          movwf   __indf
2551                    ; line_number = 148
2552                    ;  index := index + 1
2553                    ;info   148, 88
2554 0058 0ab8          incf    main__index,f
2555 0059 284a          goto    main__1
2556   005a :   main__2:
2557                    ; Recombine size1 = 0 || size2 = 0
2558                    ; line_number = 145
2559                    ;  while index < servos done
2560                    ; line_number = 149
2561                    ; servo_index := 0
2562                    ;info   149, 90
2563 005a 01ad          clrf    servo_index
2564            
2565                    ; # FIXME: Initialize to servos disabled!!!
2566                    ; line_number = 152
2567                    ;  enables := 0x0f
2568                    ;info   152, 91
2569 005b 300f          movlw   15
2570 005c 00ac          movwf   enables
2571            
2572                    ; # Initialize TRM0:
2573                    ; line_number = 155
2574                    ;  _option_reg := tmr0_ps
2575                    ;info   155, 93
2576 005d 3005          movlw   5
2577 005e 1683          bsf     __rp0___byte, __rp0___bit
2578 005f 0081          movwf   _option_reg
2579                    ; # {_t0cs}=0 (use instrucion clock)
2580                    ; # {_psa}=0 (prescaler for TMR0)
2581                    ; # {_ps2,_ps1,_ps0}=101 (1/64)
2582            
2583                    ; # Initialize TRM1:
2584                    ; line_number = 161
2585                    ;  _t1con := 0
2586                    ;info   161, 96
2587 0060 1283          bcf     __rp0___byte, __rp0___bit
2588 0061 0190          clrf    _t1con
2589                    ; # {_t1ginv} := x (no care; 0 = not inverted)
2590                    ; # {_tmr1ge} := 0 (Timer 1 on)
2591                    ; # {_t1ckps} := 00 (prescale = 1:1)
2592                    ; # {_t10scen} := 0 (lp osc. off)
2593                    ; # {_t1sync} := x (no care;)
2594                    ; # {_tmr1cs} := 0 (Fosc/4)
2595                    ; # {_tmr1on} := 0 (off for now; interrupt routine turns it on)
2596            
2597                    ; # Turn on TRM0:
2598                    ; line_number = 171
2599                    ;  _tmr1if := _false
2600                    ;info   171, 98
2601 0062 100c          bcf     _tmr1if___byte, _tmr1if___bit
2602                    ; line_number = 172
2603                    ;  _tmr1ie := _true
2604                    ;info   172, 99
2605 0063 1683          bsf     __rp0___byte, __rp0___bit
2606 0064 140c          bsf     _tmr1ie___byte, _tmr1ie___bit
2607                    ; line_number = 173
2608                    ;  _tmr0 := tmr0_value_negative
2609                    ;info   173, 101
2610 0065 303c          movlw   60
2611 0066 1283          bcf     __rp0___byte, __rp0___bit
2612 0067 0081          movwf   _tmr0
2613                    ; line_number = 174
2614                    ;  _t0if := _false
2615                    ;info   174, 104
2616 0068 110b          bcf     _t0if___byte, _t0if___bit
2617                    ; line_number = 175
2618                    ;  _t0ie := _true
2619                    ;info   175, 105
2620 0069 168b          bsf     _t0ie___byte, _t0ie___bit
2621                    ; line_number = 176
2622                    ;  _peie := _true
2623                    ;info   176, 106
2624 006a 170b          bsf     _peie___byte, _peie___bit
2625                    ; line_number = 177
2626                    ;  _gie := _true
2627                    ;info   177, 107
2628 006b 178b          bsf     _gie___byte, _gie___bit
2629            
2630                    ; line_number = 179
2631                    ;  id_index := 0
2632                    ;info   179, 108
2633 006c 01b7          clrf    main__id_index
2634            
2635                    ; line_number = 181
2636                    ;  loop_forever start
2637   006d :   main__3:
2638                    ; # Make sure that we have been selected:
2639                    ; line_number = 183
2640                    ;  rb2bus_error := _true
2641                    ;info   183, 109
2642 006d 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
2643                    ; line_number = 184
2644                    ;  while rb2bus_error start
2645   006e :   main__4:
2646                    ;info   184, 110
2647                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2648                    ; No 1TEST: true.size=4 false.size=0
2649                    ; No 2TEST: true.size=4 false.size=0
2650                    ; 1GOTO: Single test with GOTO
2651 006e 1cef          btfss   rb2bus_error___byte, rb2bus_error___bit
2652 006f 2874          goto    main__5
2653                    ; line_number = 185
2654                    ; call rb2bus_select_wait()
2655                    ;info   185, 112
2656 0070 2118          call    rb2bus_select_wait
2657                    ; line_number = 186
2658                    ;  command := rb2bus_byte_get()
2659                    ;info   186, 113
2660 0071 2137          call    rb2bus_byte_get
2661 0072 00b6          movwf   main__command
2662            
2663 0073 286e          goto    main__4
2664                    ; Recombine size1 = 0 || size2 = 0
2665   0074 :   main__5:
2666                    ; line_number = 184
2667                    ;  while rb2bus_error done
2668                    ; line_number = 188
2669                    ; switch command >> 6 start
2670                    ;info   188, 116
2671                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
2672 0074 3000          movlw   main__34>>8
2673 0075 008a          movwf   __pclath
2674 0000003c = main__35 equ globals___0+28
2675 0076 0e36          swapf   main__command,w
2676 0077 00bc          movwf   main__35
2677 0078 0cbc          rrf     main__35,f
2678 0079 0c3c          rrf     main__35,w
2679 007a 3903          andlw   3
2680                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2681 007b 3e7d          addlw   main__34
2682 007c 0082          movwf   __pcl
2683                    ; page_group 4
2684   007d :   main__34:
2685 007d 2881          goto    main__32
2686 007e 28fa          goto    main__36
2687 007f 28fa          goto    main__36
2688 0080 28cf          goto    main__33
2689                    ; line_number = 189
2690                    ; case 0
2691   0081 :   main__32:
2692                    ; # 00xx xxxx:
2693                    ; line_number = 191
2694                    ;  servo := command & servos_mask
2695                    ;info   191, 129
2696 0081 3003          movlw   3
2697 0082 0536          andwf   main__command,w
2698 0083 00b9          movwf   main__servo
2699                    ; line_number = 192
2700                    ;  switch (command >> 3) & 7 start
2701                    ;info   192, 132
2702                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=3
2703                    ; line_number = 224
2704                    ; case_maximum 7
2705 0084 3000          movlw   main__19>>8
2706 0085 008a          movwf   __pclath
2707 0000003c = main__20 equ globals___0+28
2708 0086 0c36          rrf     main__command,w
2709 0087 00bc          movwf   main__20
2710 0088 0cbc          rrf     main__20,f
2711 0089 0c3c          rrf     main__20,w
2712 008a 3907          andlw   7
2713                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2714 008b 3e8d          addlw   main__19
2715 008c 0082          movwf   __pcl
2716                    ; page_group 8
2717   008d :   main__19:
2718 008d 2895          goto    main__15
2719 008e 28b1          goto    main__16
2720 008f 28ba          goto    main__17
2721 0090 28ba          goto    main__17
2722 0091 28be          goto    main__18
2723 0092 28ce          goto    main__21
2724 0093 28ce          goto    main__21
2725 0094 28ce          goto    main__21
2726                    ; line_number = 193
2727                    ; case 0
2728   0095 :   main__15:
2729                    ; line_number = 194
2730                    ; if command@2 start
2731                    ;info   194, 149
2732 00000036 = main__select__8___byte equ main__command
2733 00000002 = main__select__8___bit equ 2
2734                    ; =>bit_code_emit@symbol(): sym=main__select__8
2735                    ; # 0000 01ss (Low Set):
2736                    ; line_number = 196
2737                    ;  low := rb2bus_byte_get()
2738                    ;info   196, 149
2739 0095 2137          call    rb2bus_byte_get
2740                    ; # 0000 00ss (High Low Set):
2741                    ; line_number = 201
2742                    ;  high := rb2bus_byte_get()
2743                    ;info   201, 150
2744                    ; No 1TEST: true.size=8 false.size=15
2745                    ; No 2TEST: true.size=8 false.size=15
2746                    ; 2GOTO: Single test with two GOTO's
2747 0096 1d36          btfss   main__select__8___byte, main__select__8___bit
2748 0097 28a1          goto    main__9
2749 0098 00bb          movwf   main__low
2750                    ; line_number = 197
2751                    ;  if !rb2bus_error start
2752                    ;info   197, 153
2753                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2754                    ; No 1TEST: true.size=0 false.size=5
2755                    ; No 2TEST: true.size=0 false.size=5
2756                    ; 1GOTO: Single test with GOTO
2757 0099 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2758 009a 28a0          goto    main__7
2759                    ; line_number = 198
2760                    ; servos_low[servo] := low
2761                    ;info   198, 155
2762                    ; index_fsr_first
2763 009b 0839          movf    main__servo,w
2764 009c 3e32          addlw   servos_low
2765 009d 0084          movwf   __fsr
2766 009e 083b          movf    main__low,w
2767 009f 0080          movwf   __indf
2768   00a0 :   main__7:
2769                    ; Recombine size1 = 0 || size2 = 0
2770                    ; line_number = 197
2771                    ;  if !rb2bus_error done
2772 00a0 28b0          goto    main__10
2773                    ; 2GOTO: Starting code 2
2774   00a1 :   main__9:
2775 00a1 00ba          movwf   main__high
2776                    ; line_number = 202
2777                    ;  low := rb2bus_byte_get()
2778                    ;info   202, 162
2779 00a2 2137          call    rb2bus_byte_get
2780 00a3 00bb          movwf   main__low
2781                    ; line_number = 203
2782                    ;  if !rb2bus_error start
2783                    ;info   203, 164
2784                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2785                    ; No 1TEST: true.size=0 false.size=10
2786                    ; No 2TEST: true.size=0 false.size=10
2787                    ; 1GOTO: Single test with GOTO
2788 00a4 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2789 00a5 28b0          goto    main__6
2790                    ; line_number = 204
2791                    ; servos_high[servo] := high
2792                    ;info   204, 166
2793                    ; index_fsr_first
2794 00a6 0839          movf    main__servo,w
2795 00a7 3e2e          addlw   servos_high
2796 00a8 0084          movwf   __fsr
2797 00a9 083a          movf    main__high,w
2798 00aa 0080          movwf   __indf
2799                    ; line_number = 205
2800                    ;  servos_low[servo] := low
2801                    ;info   205, 171
2802                    ; index_fsr_first
2803 00ab 0839          movf    main__servo,w
2804 00ac 3e32          addlw   servos_low
2805 00ad 0084          movwf   __fsr
2806 00ae 083b          movf    main__low,w
2807 00af 0080          movwf   __indf
2808   00b0 :   main__6:
2809                    ; Recombine size1 = 0 || size2 = 0
2810                    ; line_number = 203
2811                    ;  if !rb2bus_error done
2812   00b0 :   main__10:
2813                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2814                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2815                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2816                    ; line_number = 194
2817                    ; if command@2 done
2818 00b0 28ce          goto    main__21
2819                    ; line_number = 206
2820                    ; case 1
2821   00b1 :   main__16:
2822                    ; # 0000 1xxx:
2823                    ; line_number = 208
2824                    ;  if command@2 start
2825                    ;info   208, 177
2826 00000036 = main__select__11___byte equ main__command
2827 00000002 = main__select__11___bit equ 2
2828                    ; =>bit_code_emit@symbol(): sym=main__select__11
2829                    ; # 0001 11ss (Low Get)
2830                    ; line_number = 210
2831                    ;  call rb2bus_byte_put(servos_low[servo])
2832                    ;info   210, 177
2833 00b1 0839          movf    main__servo,w
2834                    ; # 0001 10ss (HighGet)
2835                    ; line_number = 213
2836                    ;  call rb2bus_byte_put(servos_high[servo])
2837                    ;info   213, 178
2838                    ; No 1TEST: true.size=1 false.size=1
2839                    ; 2TEST: two tests with code in both delay slots
2840 00b2 1936          btfsc   main__select__11___byte, main__select__11___bit
2841 00b3 3e32          addlw   servos_low
2842 00b4 1d36          btfss   main__select__11___byte, main__select__11___bit
2843 00b5 3e2e          addlw   servos_high
2844 00b6 0084          movwf   __fsr
2845 00b7 0800          movf    __indf,w
2846 00b8 2159          call    rb2bus_byte_put
2847                    ; line_number = 208
2848                    ;  if command@2 done
2849 00b9 28ce          goto    main__21
2850                    ; line_number = 214
2851                    ; case 2, 3
2852   00ba :   main__17:
2853                    ; # 0001 eeee (Enables Set):
2854                    ; line_number = 216
2855                    ;  enables := command & enables_mask
2856                    ;info   216, 186
2857 00ba 300f          movlw   15
2858 00bb 0536          andwf   main__command,w
2859 00bc 00ac          movwf   enables
2860 00bd 28ce          goto    main__21
2861                    ; line_number = 217
2862                    ; case 4
2863   00be :   main__18:
2864                    ; # 0010 0xxx:
2865                    ; line_number = 219
2866                    ;  switch command & 7 start
2867                    ;info   219, 190
2868                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2869                    ; line_number = 223
2870                    ; case_maximum 7
2871 00be 3000          movlw   main__13>>8
2872 00bf 008a          movwf   __pclath
2873 00c0 3007          movlw   7
2874 00c1 0536          andwf   main__command,w
2875                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2876 00c2 3ec4          addlw   main__13
2877 00c3 0082          movwf   __pcl
2878                    ; page_group 8
2879   00c4 :   main__13:
2880 00c4 28cc          goto    main__12
2881 00c5 28ce          goto    main__14
2882 00c6 28ce          goto    main__14
2883 00c7 28ce          goto    main__14
2884 00c8 28ce          goto    main__14
2885 00c9 28ce          goto    main__14
2886 00ca 28ce          goto    main__14
2887 00cb 28ce          goto    main__14
2888                    ; line_number = 220
2889                    ; case 0
2890   00cc :   main__12:
2891                    ; # 0010 0000 (Enables Get)
2892                    ; line_number = 222
2893                    ;  call rb2bus_byte_put(enables)
2894                    ;info   222, 204
2895 00cc 082c          movf    enables,w
2896 00cd 2159          call    rb2bus_byte_put
2897   00ce :   main__14:
2898                    ; line_number = 219
2899                    ;  switch command & 7 done
2900   00ce :   main__21:
2901                    ; line_number = 192
2902                    ;  switch (command >> 3) & 7 done
2903 00ce 28fa          goto    main__36
2904                    ; line_number = 225
2905                    ; case 3
2906   00cf :   main__33:
2907                    ; line_number = 226
2908                    ; switch (command >> 3) & 7 start
2909                    ;info   226, 207
2910                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2911 00cf 3000          movlw   main__29>>8
2912 00d0 008a          movwf   __pclath
2913 0000003c = main__30 equ globals___0+28
2914 00d1 0c36          rrf     main__command,w
2915 00d2 00bc          movwf   main__30
2916 00d3 0cbc          rrf     main__30,f
2917 00d4 0c3c          rrf     main__30,w
2918 00d5 3907          andlw   7
2919                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2920 00d6 3ed8          addlw   main__29
2921 00d7 0082          movwf   __pcl
2922                    ; page_group 8
2923   00d8 :   main__29:
2924 00d8 28fa          goto    main__31
2925 00d9 28fa          goto    main__31
2926 00da 28fa          goto    main__31
2927 00db 28fa          goto    main__31
2928 00dc 28fa          goto    main__31
2929 00dd 28fa          goto    main__31
2930 00de 28fa          goto    main__31
2931 00df 28e0          goto    main__28
2932                    ; line_number = 227
2933                    ; case 7
2934   00e0 :   main__28:
2935                    ; line_number = 228
2936                    ; switch command & 7 start
2937                    ;info   228, 224
2938                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2939 00e0 3000          movlw   main__26>>8
2940 00e1 008a          movwf   __pclath
2941 00e2 3007          movlw   7
2942 00e3 0536          andwf   main__command,w
2943                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2944 00e4 3ee6          addlw   main__26
2945 00e5 0082          movwf   __pcl
2946                    ; page_group 8
2947   00e6 :   main__26:
2948 00e6 28fa          goto    main__27
2949 00e7 28fa          goto    main__27
2950 00e8 28fa          goto    main__27
2951 00e9 28fa          goto    main__27
2952 00ea 28fa          goto    main__27
2953 00eb 28ee          goto    main__23
2954 00ec 28f7          goto    main__24
2955 00ed 28f9          goto    main__25
2956                    ; line_number = 229
2957                    ; case 5
2958   00ee :   main__23:
2959                    ; # 1111 1101 (Id_next):
2960                    ; line_number = 231
2961                    ;  if id_index < id.size start
2962                    ;info   231, 238
2963 00ee 3016          movlw   22
2964 00ef 0237          subwf   main__id_index,w
2965                    ; =>bit_code_emit@symbol(): sym=__c
2966                    ; No 1TEST: true.size=0 false.size=4
2967                    ; No 2TEST: true.size=0 false.size=4
2968                    ; 1GOTO: Single test with GOTO
2969 00f0 1803          btfsc   __c___byte, __c___bit
2970 00f1 28f6          goto    main__22
2971                    ; line_number = 232
2972                    ; call rb2bus_byte_put(id[id_index])
2973                    ;info   232, 242
2974 00f2 0837          movf    main__id_index,w
2975 00f3 20fc          call    id
2976 00f4 2159          call    rb2bus_byte_put
2977                    ; line_number = 233
2978                    ;  id_index := id_index + 1
2979                    ;info   233, 245
2980 00f5 0ab7          incf    main__id_index,f
2981   00f6 :   main__22:
2982                    ; Recombine size1 = 0 || size2 = 0
2983                    ; line_number = 231
2984                    ;  if id_index < id.size done
2985 00f6 28fa          goto    main__27
2986                    ; line_number = 234
2987                    ; case 6
2988   00f7 :   main__24:
2989                    ; # 1111 1110 (Id_start):
2990                    ; line_number = 236
2991                    ;  id_index := 0
2992                    ;info   236, 247
2993 00f7 01b7          clrf    main__id_index
2994 00f8 28fa          goto    main__27
2995                    ; line_number = 237
2996                    ; case 7
2997   00f9 :   main__25:
2998                    ; # 1111 1111 (Deselect):
2999                    ; line_number = 239
3000                    ;  call rb2bus_deselect()
3001                    ;info   239, 249
3002 00f9 2135          call    rb2bus_deselect
3003            
3004            
3005   00fa :   main__27:
3006                    ; line_number = 228
3007                    ; switch command & 7 done
3008   00fa :   main__31:
3009                    ; line_number = 226
3010                    ; switch (command >> 3) & 7 done
3011   00fa :   main__36:
3012                    ; line_number = 188
3013                    ; switch command >> 6 done
3014                    ; line_number = 181
3015                    ;  loop_forever wrap-up
3016 00fa 286d          goto    main__3
3017                    ; line_number = 181
3018                    ;  loop_forever done
3019                    ; delay after procedure statements=non-uniform
3020            
3021            
3022            
3023            
3024                    ; line_number = 242
3025                    ;info   242, 251
3026                    ; procedure wait
3027   00fb :   wait:
3028                    ; arguments_none
3029                    ; line_number = 244
3030                    ;  returns_nothing
3031            
3032                    ; # This procedure is repeatably called whenever the software
3033                    ; # is waiting for a byte to arrive from the bus.
3034            
3035                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3036                    ; line_number = 249
3037                    ;  do_nothing
3038                    ;info   249, 251
3039            
3040            
3041                    ; delay after procedure statements=non-uniform
3042                    ; Implied return
3043 00fb 3400          retlw   0
3044            
3045            
3046            
3047            
3048                    ; line_number = 252
3049                    ; string id = "\16,0,11,1,3,8\Servo4-A\7\Gramson" start
3050                    ; id = '\16,0,11,1,3,8\Servo4-A\7\Gramson'
3051   00fc :   id:
3052                    ; Temporarily save index into FSR
3053 00fc 0084          movwf   __fsr
3054                    ; Initialize PCLATH to point to this code page
3055 00fd 3001          movlw   id___base>>8
3056 00fe 008a          movwf   __pclath
3057                    ; Restore index from FSR
3058 00ff 0804          movf    __fsr,w
3059 0100 3e02          addlw   id___base
3060                    ; Index to the correct return value
3061 0101 0082          movwf   __pcl
3062                    ; page_group 22
3063   0102 :   id___base:
3064 0102 3410          retlw   16
3065 0103 3400          retlw   0
3066 0104 340b          retlw   11
3067 0105 3401          retlw   1
3068 0106 3403          retlw   3
3069 0107 3408          retlw   8
3070 0108 3453          retlw   83
3071 0109 3465          retlw   101
3072 010a 3472          retlw   114
3073 010b 3476          retlw   118
3074 010c 346f          retlw   111
3075 010d 3434          retlw   52
3076 010e 342d          retlw   45
3077 010f 3441          retlw   65
3078 0110 3407          retlw   7
3079 0111 3447          retlw   71
3080 0112 3472          retlw   114
3081 0113 3461          retlw   97
3082 0114 346d          retlw   109
3083 0115 3473          retlw   115
3084 0116 346f          retlw   111
3085 0117 346e          retlw   110
3086                    ; line_number = 252
3087                    ; string id = "\16,0,11,1,3,8\Servo4-A\7\Gramson" start
3088            
3089            
3090            
3091                    ; Appending 8 delayed procedures to code bank 0
3092                    ; buffer = 'rb2bus'
3093                    ; line_number = 57
3094                    ;info   57, 280
3095                    ; procedure rb2bus_select_wait
3096   0118 :   rb2bus_select_wait:
3097                    ; arguments_none
3098                    ; line_number = 59
3099                    ;  returns_nothing
3100            
3101                    ; # This procedure will in an infinite loop until the select
3102                    ; # address matches {rb2bus_address}.  {rb2bus_address} is
3103                    ; # typically set in the {rb2bus_initialize} procedure.
3104                    ; #
3105                    ; # This module will repeatably call the {wait} procedure until
3106                    ; # it is properly selected.
3107            
3108                    ; line_number = 68
3109                    ;  local value byte
3110 00000022 = rb2bus_select_wait__value equ globals___0+2
3111                    ; line_number = 69
3112                    ;  local address_bit bit
3113 0000006f = rb2bus_select_wait__address_bit___byte equ globals___0+79
3114 00000002 = rb2bus_select_wait__address_bit___bit equ 2
3115            
3116                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3117                    ; line_number = 71
3118                    ;  rb2bus_error := _false
3119                    ;info   71, 280
3120 0118 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
3121                    ; line_number = 72
3122                    ;  while !rb2bus_selected start
3123   0119 :   rb2bus_select_wait__1:
3124                    ;info   72, 281
3125                    ; =>bit_code_emit@symbol(): sym=rb2bus_selected
3126                    ; No 1TEST: true.size=0 false.size=25
3127                    ; No 2TEST: true.size=0 false.size=25
3128                    ; 1GOTO: Single test with GOTO
3129 0119 186f          btfsc   rb2bus_selected___byte, rb2bus_selected___bit
3130 011a 2934          goto    rb2bus_select_wait__6
3131                    ; line_number = 73
3132                    ; _adden := _true
3133                    ;info   73, 283
3134 011b 1597          bsf     _adden___byte, _adden___bit
3135                    ; # Wait for a byte to arrive.
3136                    ; line_number = 75
3137                    ;  while !_rcif start
3138   011c :   rb2bus_select_wait__2:
3139                    ;info   75, 284
3140                    ; =>bit_code_emit@symbol(): sym=_rcif
3141                    ; No 1TEST: true.size=0 false.size=2
3142                    ; No 2TEST: true.size=0 false.size=2
3143                    ; 1GOTO: Single test with GOTO
3144 011c 1a8c          btfsc   _rcif___byte, _rcif___bit
3145 011d 2920          goto    rb2bus_select_wait__3
3146                    ; line_number = 76
3147                    ; call wait()
3148                    ;info   76, 286
3149 011e 20fb          call    wait
3150            
3151 011f 291c          goto    rb2bus_select_wait__2
3152   0120 :   rb2bus_select_wait__3:
3153                    ; Recombine size1 = 0 || size2 = 0
3154                    ; line_number = 75
3155                    ;  while !_rcif done
3156                    ; # Capture the received value:
3157                    ; line_number = 79
3158                    ;  address_bit := _false
3159                    ;info   79, 288
3160 0120 116f          bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
3161                    ; line_number = 80
3162                    ;  if _rx9d start
3163                    ;info   80, 289
3164                    ; =>bit_code_emit@symbol(): sym=_rx9d
3165                    ; 1TEST: Single test with code in skip slot
3166 0121 1817          btfsc   _rx9d___byte, _rx9d___bit
3167                    ; line_number = 81
3168                    ; address_bit := _true
3169                    ;info   81, 290
3170 0122 156f          bsf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
3171                    ; Recombine size1 = 0 || size2 = 0
3172                    ; line_number = 80
3173                    ;  if _rx9d done
3174                    ; line_number = 82
3175                    ; value := _rcreg
3176                    ;info   82, 291
3177 0123 0814          movf    _rcreg,w
3178 0124 00a2          movwf   rb2bus_select_wait__value
3179            
3180                    ; # Clear any UART errors by toggling {_cren}:
3181                    ; line_number = 85
3182                    ;  if _oerr start
3183                    ;info   85, 293
3184                    ; =>bit_code_emit@symbol(): sym=_oerr
3185                    ; 1TEST: Single test with code in skip slot
3186 0125 1897          btfsc   _oerr___byte, _oerr___bit
3187                    ; line_number = 86
3188                    ; _cren := _false
3189                    ;info   86, 294
3190 0126 1217          bcf     _cren___byte, _cren___bit
3191                    ; Recombine size1 = 0 || size2 = 0
3192                    ; line_number = 85
3193                    ;  if _oerr done
3194                    ; line_number = 87
3195                    ; if _ferr start
3196                    ;info   87, 295
3197                    ; =>bit_code_emit@symbol(): sym=_ferr
3198                    ; 1TEST: Single test with code in skip slot
3199 0127 1917          btfsc   _ferr___byte, _ferr___bit
3200                    ; line_number = 88
3201                    ; _cren := _false
3202                    ;info   88, 296
3203 0128 1217          bcf     _cren___byte, _cren___bit
3204                    ; Recombine size1 = 0 || size2 = 0
3205                    ; line_number = 87
3206                    ; if _ferr done
3207                    ; line_number = 89
3208                    ; _cren := _true
3209                    ;info   89, 297
3210 0129 1617          bsf     _cren___byte, _cren___bit
3211            
3212                    ; line_number = 91
3213                    ;  if address_bit start
3214                    ;info   91, 298
3215                    ; =>bit_code_emit@symbol(): sym=rb2bus_select_wait__address_bit
3216                    ; No 1TEST: true.size=7 false.size=0
3217                    ; No 2TEST: true.size=7 false.size=0
3218                    ; 1GOTO: Single test with GOTO
3219 012a 1d6f          btfss   rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
3220 012b 2933          goto    rb2bus_select_wait__5
3221                    ; line_number = 92
3222                    ; if value = rb2bus_address start
3223                    ;info   92, 300
3224                    ; Left minus Right
3225 012c 0820          movf    rb2bus_address,w
3226 012d 0222          subwf   rb2bus_select_wait__value,w
3227                    ; =>bit_code_emit@symbol(): sym=__z
3228                    ; No 1TEST: true.size=3 false.size=0
3229                    ; No 2TEST: true.size=3 false.size=0
3230                    ; 1GOTO: Single test with GOTO
3231 012e 1d03          btfss   __z___byte, __z___bit
3232 012f 2933          goto    rb2bus_select_wait__4
3233                    ; line_number = 93
3234                    ; rb2bus_selected := _true
3235                    ;info   93, 304
3236 0130 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
3237                    ; line_number = 94
3238                    ;  call rb2bus_byte_put(rb2_ok)
3239                    ;info   94, 305
3240 0131 30a5          movlw   165
3241 0132 2159          call    rb2bus_byte_put
3242            
3243            
3244                    ; Recombine size1 = 0 || size2 = 0
3245   0133 :   rb2bus_select_wait__4:
3246                    ; line_number = 92
3247                    ; if value = rb2bus_address done
3248                    ; Recombine size1 = 0 || size2 = 0
3249   0133 :   rb2bus_select_wait__5:
3250                    ; line_number = 91
3251                    ;  if address_bit done
3252 0133 2919          goto    rb2bus_select_wait__1
3253   0134 :   rb2bus_select_wait__6:
3254                    ; Recombine size1 = 0 || size2 = 0
3255                    ; line_number = 72
3256                    ;  while !rb2bus_selected done
3257                    ; delay after procedure statements=non-uniform
3258                    ; Implied return
3259 0134 3400          retlw   0
3260            
3261            
3262            
3263            
3264                    ; line_number = 97
3265                    ;info   97, 309
3266                    ; procedure rb2bus_deselect
3267   0135 :   rb2bus_deselect:
3268                    ; arguments_none
3269                    ; line_number = 99
3270                    ;  returns_nothing
3271            
3272                    ; # This procedure forces this module into the deselected state until
3273                    ; # it is reselected by some master module on the bus.
3274            
3275                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3276                    ; line_number = 104
3277                    ;  rb2bus_selected := _false
3278                    ;info   104, 309
3279 0135 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3280            
3281            
3282                    ; delay after procedure statements=non-uniform
3283                    ; Implied return
3284 0136 3400          retlw   0
3285            
3286            
3287            
3288            
3289                    ; line_number = 107
3290                    ;info   107, 311
3291                    ; procedure rb2bus_byte_get
3292   0137 :   rb2bus_byte_get:
3293                    ; arguments_none
3294                    ; line_number = 109
3295                    ;  returns byte
3296            
3297                    ; # This procedure will return the next byte received from the bus.
3298                    ; # The address (9th) bit is stored in the global {is_address}.
3299                    ; #
3300                    ; # If {rb2bus_error} is set, 0 is returned.  Otherwise, the {wait}
3301                    ; # procedure is repeatably called until a command byte is successfully
3302                    ; # received.  If an module select byte comes in, we enter a bus
3303                    ; # error condition by setting {rb2bus_error} and returning 0.
3304            
3305                    ; line_number = 119
3306                    ;  local value byte
3307 00000023 = rb2bus_byte_get__value equ globals___0+3
3308                    ; line_number = 120
3309                    ;  local address_bit bit
3310 0000006f = rb2bus_byte_get__address_bit___byte equ globals___0+79
3311 00000003 = rb2bus_byte_get__address_bit___bit equ 3
3312            
3313                    ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
3314                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3315                    ; line_number = 123
3316                    ;  if rb2bus_error start
3317                    ;info   123, 311
3318                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
3319                    ; 1TEST: Single test with code in skip slot
3320 0137 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
3321                    ; line_number = 124
3322                    ; return 0 start
3323                    ; line_number = 124
3324                    ;info   124, 312
3325 0138 3400          retlw   0
3326                    ; line_number = 124
3327                    ; return 0 done
3328            
3329                    ; Recombine size1 = 0 || size2 = 0
3330                    ; line_number = 123
3331                    ;  if rb2bus_error done
3332                    ; # Wait for a byte to arrive.
3333                    ; line_number = 127
3334                    ;  _adden := _false
3335                    ;info   127, 313
3336 0139 1197          bcf     _adden___byte, _adden___bit
3337                    ; line_number = 128
3338                    ;  while !_rcif start
3339   013a :   rb2bus_byte_get__1:
3340                    ;info   128, 314
3341                    ; =>bit_code_emit@symbol(): sym=_rcif
3342                    ; No 1TEST: true.size=0 false.size=2
3343                    ; No 2TEST: true.size=0 false.size=2
3344                    ; 1GOTO: Single test with GOTO
3345 013a 1a8c          btfsc   _rcif___byte, _rcif___bit
3346 013b 293e          goto    rb2bus_byte_get__2
3347                    ; line_number = 129
3348                    ; call wait()
3349                    ;info   129, 316
3350 013c 20fb          call    wait
3351            
3352 013d 293a          goto    rb2bus_byte_get__1
3353   013e :   rb2bus_byte_get__2:
3354                    ; Recombine size1 = 0 || size2 = 0
3355                    ; line_number = 128
3356                    ;  while !_rcif done
3357                    ; # Record the 9th bit in {address_bit}:
3358                    ; line_number = 132
3359                    ;  address_bit := _false
3360                    ;info   132, 318
3361 013e 11ef          bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3362                    ; line_number = 133
3363                    ;  if _rx9d start
3364                    ;info   133, 319
3365                    ; =>bit_code_emit@symbol(): sym=_rx9d
3366                    ; 1TEST: Single test with code in skip slot
3367 013f 1817          btfsc   _rx9d___byte, _rx9d___bit
3368                    ; line_number = 134
3369                    ; address_bit := _true
3370                    ;info   134, 320
3371 0140 15ef          bsf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3372                    ; Recombine size1 = 0 || size2 = 0
3373                    ; line_number = 133
3374                    ;  if _rx9d done
3375                    ; line_number = 135
3376                    ; value := _rcreg
3377                    ;info   135, 321
3378 0141 0814          movf    _rcreg,w
3379 0142 00a3          movwf   rb2bus_byte_get__value
3380            
3381                    ; # Clear any errors by toggling _{cren}:
3382                    ; # FIXME: All of this should be done *before* reading {_rcreg}!!!
3383                    ; line_number = 139
3384                    ;  if _oerr start
3385                    ;info   139, 323
3386                    ; =>bit_code_emit@symbol(): sym=_oerr
3387                    ; 1TEST: Single test with code in skip slot
3388 0143 1897          btfsc   _oerr___byte, _oerr___bit
3389                    ; line_number = 140
3390                    ; _cren := _false
3391                    ;info   140, 324
3392 0144 1217          bcf     _cren___byte, _cren___bit
3393                    ; Recombine size1 = 0 || size2 = 0
3394                    ; line_number = 139
3395                    ;  if _oerr done
3396                    ; line_number = 141
3397                    ; if _ferr start
3398                    ;info   141, 325
3399                    ; =>bit_code_emit@symbol(): sym=_ferr
3400                    ; 1TEST: Single test with code in skip slot
3401 0145 1917          btfsc   _ferr___byte, _ferr___bit
3402                    ; line_number = 142
3403                    ; _cren := _false
3404                    ;info   142, 326
3405 0146 1217          bcf     _cren___byte, _cren___bit
3406                    ; Recombine size1 = 0 || size2 = 0
3407                    ; line_number = 141
3408                    ; if _ferr done
3409                    ; line_number = 143
3410                    ; _cren := _true
3411                    ;info   143, 327
3412 0147 1617          bsf     _cren___byte, _cren___bit
3413            
3414                    ; line_number = 145
3415                    ;  if address_bit start
3416                    ;info   145, 328
3417                    ; =>bit_code_emit@symbol(): sym=rb2bus_byte_get__address_bit
3418                    ; No 1TEST: true.size=13 false.size=0
3419                    ; No 2TEST: true.size=13 false.size=0
3420                    ; 1GOTO: Single test with GOTO
3421 0148 1def          btfss   rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3422 0149 2957          goto    rb2bus_byte_get__5
3423                    ; # We have an unexpected address select coming in:
3424                    ; line_number = 147
3425                    ;  if value = rb2bus_address start
3426                    ;info   147, 330
3427                    ; Left minus Right
3428 014a 0820          movf    rb2bus_address,w
3429 014b 0223          subwf   rb2bus_byte_get__value,w
3430                    ; =>bit_code_emit@symbol(): sym=__z
3431                    ; No 1TEST: true.size=4 false.size=2
3432                    ; No 2TEST: true.size=4 false.size=2
3433                    ; 2GOTO: Single test with two GOTO's
3434 014c 1d03          btfss   __z___byte, __z___bit
3435 014d 2953          goto    rb2bus_byte_get__3
3436                    ; # We are being selected again:
3437                    ; line_number = 149
3438                    ;  rb2bus_selected := _true
3439                    ;info   149, 334
3440 014e 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
3441                    ; line_number = 150
3442                    ;  _adden := _false
3443                    ;info   150, 335
3444 014f 1197          bcf     _adden___byte, _adden___bit
3445            
3446                    ; line_number = 152
3447                    ;  call rb2bus_byte_put(rb2_ok)
3448                    ;info   152, 336
3449 0150 30a5          movlw   165
3450 0151 2159          call    rb2bus_byte_put
3451 0152 2955          goto    rb2bus_byte_get__4
3452                    ; 2GOTO: Starting code 2
3453   0153 :   rb2bus_byte_get__3:
3454                    ; # Somebody else is being selected; we deselect:
3455                    ; line_number = 155
3456                    ;  rb2bus_selected := _false
3457                    ;info   155, 339
3458 0153 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3459                    ; line_number = 156
3460                    ;  _adden := _true
3461                    ;info   156, 340
3462 0154 1597          bsf     _adden___byte, _adden___bit
3463            
3464   0155 :   rb2bus_byte_get__4:
3465                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3466                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3467                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3468                    ; line_number = 147
3469                    ;  if value = rb2bus_address done
3470                    ; # We want to get back to the beginning of decode:
3471                    ; line_number = 159
3472                    ;  rb2bus_error := _true
3473                    ;info   159, 341
3474 0155 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3475                    ; line_number = 160
3476                    ;  value := 0
3477                    ;info   160, 342
3478 0156 01a3          clrf    rb2bus_byte_get__value
3479            
3480                    ; Recombine size1 = 0 || size2 = 0
3481   0157 :   rb2bus_byte_get__5:
3482                    ; line_number = 145
3483                    ;  if address_bit done
3484                    ; # Regular data byte:
3485                    ; line_number = 163
3486                    ;  return value start
3487                    ; line_number = 163
3488                    ;info   163, 343
3489 0157 0823          movf    rb2bus_byte_get__value,w
3490 0158 0008          return  
3491                    ; line_number = 163
3492                    ;  return value done
3493            
3494            
3495                    ; delay after procedure statements=non-uniform
3496            
3497            
3498            
3499            
3500                    ; line_number = 166
3501                    ;info   166, 345
3502                    ; procedure rb2bus_byte_put
3503   0159 :   rb2bus_byte_put:
3504                    ; Last argument is sitting in W; save into argument variable
3505 0159 00a4          movwf   rb2bus_byte_put__value
3506                    ; delay=4294967295
3507                    ; line_number = 167
3508                    ; argument value byte
3509 00000024 = rb2bus_byte_put__value equ globals___0+4
3510                    ; line_number = 168
3511                    ;  returns_nothing
3512            
3513                    ; # This procedure will send {value} to the bus.  It automatically
3514                    ; # consumes the echo that is on the bus.  If {rb2bus_error} is
3515                    ; # set, this procedure does nothing.
3516            
3517                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3518                    ; line_number = 174
3519                    ;  if !rb2bus_error start
3520                    ;info   174, 346
3521                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
3522                    ; No 1TEST: true.size=0 false.size=16
3523                    ; No 2TEST: true.size=0 false.size=16
3524                    ; 1GOTO: Single test with GOTO
3525 015a 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
3526 015b 296c          goto    rb2bus_byte_put__4
3527                    ; # Wait until {_txreg} is ready for a value:
3528                    ; line_number = 176
3529                    ;  while !_txif start
3530   015c :   rb2bus_byte_put__1:
3531                    ;info   176, 348
3532                    ; =>bit_code_emit@symbol(): sym=_txif
3533                    ; No 1TEST: true.size=0 false.size=2
3534                    ; No 2TEST: true.size=0 false.size=2
3535                    ; 1GOTO: Single test with GOTO
3536 015c 188c          btfsc   _txif___byte, _txif___bit
3537 015d 2960          goto    rb2bus_byte_put__2
3538                    ; line_number = 177
3539                    ; call wait()
3540                    ;info   177, 350
3541 015e 20fb          call    wait
3542            
3543 015f 295c          goto    rb2bus_byte_put__1
3544   0160 :   rb2bus_byte_put__2:
3545                    ; Recombine size1 = 0 || size2 = 0
3546                    ; line_number = 176
3547                    ;  while !_txif done
3548                    ; # Ship {value} out to the bus with 9th bit turned off:
3549                    ; line_number = 180
3550                    ;  _adden := _false
3551                    ;info   180, 352
3552 0160 1197          bcf     _adden___byte, _adden___bit
3553                    ; line_number = 181
3554                    ;  _tx9d := _false
3555                    ;info   181, 353
3556 0161 1016          bcf     _tx9d___byte, _tx9d___bit
3557                    ; line_number = 182
3558                    ;  _txreg := value
3559                    ;info   182, 354
3560 0162 0824          movf    rb2bus_byte_put__value,w
3561 0163 0095          movwf   _txreg
3562            
3563                    ; # Wait for the echo to show up:
3564                    ; line_number = 185
3565                    ;  while !_rcif start
3566   0164 :   rb2bus_byte_put__3:
3567                    ;info   185, 356
3568                    ; =>bit_code_emit@symbol(): sym=_rcif
3569                    ; 1TEST: Single test with code in skip slot
3570 0164 1e8c          btfss   _rcif___byte, _rcif___bit
3571                    ; # Still waiting:
3572 0165 2964          goto    rb2bus_byte_put__3
3573                    ; Recombine size1 = 0 || size2 = 0
3574                    ; line_number = 185
3575                    ;  while !_rcif done
3576                    ; # Throw the received byte away (store into {_w}).
3577                    ; line_number = 188
3578                    ;  assemble
3579                    ;info   188, 358
3580                    ; line_number = 189
3581                    ;info   189, 358
3582 0166 0814          movf    _rcreg,w
3583            
3584                    ; # Recover from any receive errors by toggling {_cren}:
3585                    ; line_number = 192
3586                    ;  if _oerr start
3587                    ;info   192, 359
3588                    ; =>bit_code_emit@symbol(): sym=_oerr
3589                    ; 1TEST: Single test with code in skip slot
3590 0167 1897          btfsc   _oerr___byte, _oerr___bit
3591                    ; line_number = 193
3592                    ; _cren := _false
3593                    ;info   193, 360
3594 0168 1217          bcf     _cren___byte, _cren___bit
3595                    ; Recombine size1 = 0 || size2 = 0
3596                    ; line_number = 192
3597                    ;  if _oerr done
3598                    ; line_number = 194
3599                    ; if _ferr start
3600                    ;info   194, 361
3601                    ; =>bit_code_emit@symbol(): sym=_ferr
3602                    ; 1TEST: Single test with code in skip slot
3603 0169 1917          btfsc   _ferr___byte, _ferr___bit
3604                    ; line_number = 195
3605                    ; _cren := _false
3606                    ;info   195, 362
3607 016a 1217          bcf     _cren___byte, _cren___bit
3608                    ; Recombine size1 = 0 || size2 = 0
3609                    ; line_number = 194
3610                    ; if _ferr done
3611                    ; line_number = 196
3612                    ; _cren := _true
3613                    ;info   196, 363
3614 016b 1617          bsf     _cren___byte, _cren___bit
3615            
3616            
3617   016c :   rb2bus_byte_put__4:
3618                    ; Recombine size1 = 0 || size2 = 0
3619                    ; line_number = 174
3620                    ;  if !rb2bus_error done
3621                    ; delay after procedure statements=non-uniform
3622                    ; Implied return
3623 016c 3400          retlw   0
3624            
3625            
3626            
3627            
3628                    ; line_number = 199
3629                    ;info   199, 365
3630                    ; procedure rb2bus_command
3631   016d :   rb2bus_command:
3632                    ; Last argument is sitting in W; save into argument variable
3633 016d 00a7          movwf   rb2bus_command__command
3634                    ; delay=4294967295
3635                    ; line_number = 200
3636                    ; argument command byte
3637 00000027 = rb2bus_command__command equ globals___0+7
3638                    ; line_number = 201
3639                    ;  returns_nothing
3640            
3641                    ; # This procedure will process an shared {command}.  This procedure
3642                    ; # accesses the global string {id}.
3643            
3644                    ; line_number = 206
3645                    ;  local new_address byte
3646 00000025 = rb2bus_command__new_address equ globals___0+5
3647                    ; line_number = 207
3648                    ;  local temp byte
3649 00000026 = rb2bus_command__temp equ globals___0+6
3650            
3651                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3652                    ; line_number = 209
3653                    ;  switch command & 7 start
3654                    ;info   209, 366
3655                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
3656 016e 3001          movlw   rb2bus_command__13>>8
3657 016f 008a          movwf   __pclath
3658 0170 3007          movlw   7
3659 0171 0527          andwf   rb2bus_command__command,w
3660                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
3661 0172 3e74          addlw   rb2bus_command__13
3662 0173 0082          movwf   __pcl
3663                    ; page_group 8
3664   0174 :   rb2bus_command__13:
3665 0174 29b4          goto    rb2bus_command__14
3666 0175 29b4          goto    rb2bus_command__14
3667 0176 29b4          goto    rb2bus_command__14
3668 0177 29b4          goto    rb2bus_command__14
3669 0178 297c          goto    rb2bus_command__9
3670 0179 29a8          goto    rb2bus_command__10
3671 017a 29b1          goto    rb2bus_command__11
3672 017b 29b3          goto    rb2bus_command__12
3673                    ; line_number = 210
3674                    ; case 4
3675   017c :   rb2bus_command__9:
3676                    ; # 1111 1100 (Address_Set):
3677                    ; # Return old address:
3678                    ; line_number = 213
3679                    ;  call rb2bus_byte_put(rb2bus_address)
3680                    ;info   213, 380
3681 017c 0820          movf    rb2bus_address,w
3682 017d 2159          call    rb2bus_byte_put
3683            
3684                    ; # Fetch new address:
3685                    ; line_number = 216
3686                    ;  new_address := rb2bus_byte_get()
3687                    ;info   216, 382
3688 017e 2137          call    rb2bus_byte_get
3689 017f 00a5          movwf   rb2bus_command__new_address
3690                    ; line_number = 217
3691                    ;  if new_address = 0 || new_address = rb2bus_address start
3692                    ;info   217, 384
3693                    ; Left minus Right
3694 0180 0825          movf    rb2bus_command__new_address,w
3695                    ; =>bit_code_emit@symbol(): sym=__z
3696                    ; No 1TEST: true.size=1 false.size=36
3697                    ; No 2TEST: true.size=1 false.size=36
3698                    ; 2GOTO: Single test with two GOTO's
3699 0181 1903          btfsc   __z___byte, __z___bit
3700 0182 2987          goto    rb2bus_command__5
3701                    ; Recombine code1_bit_states != code2_bit_states
3702                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3703                    ; Left minus Right
3704 0183 0820          movf    rb2bus_address,w
3705 0184 0225          subwf   rb2bus_command__new_address,w
3706                    ; =>bit_code_emit@symbol(): sym=__z
3707                    ; No 1TEST: true.size=4 false.size=27
3708                    ; No 2TEST: true.size=4 false.size=27
3709                    ; 2GOTO: Single test with two GOTO's
3710 0185 1d03          btfss   __z___byte, __z___bit
3711 0186 298c          goto    rb2bus_command__6
3712   0187 :   rb2bus_command__5:
3713                    ; line_number = 218
3714                    ; call rb2bus_byte_put(0)
3715                    ;info   218, 391
3716 0187 3000          movlw   0
3717 0188 2159          call    rb2bus_byte_put
3718                    ; line_number = 219
3719                    ;  rb2bus_error := _true
3720                    ;info   219, 393
3721 0189 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3722                    ; line_number = 220
3723                    ;  rb2bus_selected := _false
3724                    ;info   220, 394
3725 018a 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3726 018b 29a7          goto    rb2bus_command__7
3727                    ; 2GOTO: Starting code 2
3728   018c :   rb2bus_command__6:
3729                    ; # Return new address:
3730                    ; line_number = 223
3731                    ;  call rb2bus_byte_put(new_address)
3732                    ;info   223, 396
3733 018c 0825          movf    rb2bus_command__new_address,w
3734 018d 2159          call    rb2bus_byte_put
3735            
3736                    ; # Fetch new address again as a check:
3737                    ; line_number = 226
3738                    ;  temp := rb2bus_byte_get()
3739                    ;info   226, 398
3740 018e 2137          call    rb2bus_byte_get
3741 018f 00a6          movwf   rb2bus_command__temp
3742                    ; line_number = 227
3743                    ;  if temp != new_address start
3744                    ;info   227, 400
3745                    ; Left minus Right
3746 0190 0825          movf    rb2bus_command__new_address,w
3747 0191 0226          subwf   rb2bus_command__temp,w
3748                    ; =>bit_code_emit@symbol(): sym=__z
3749                    ; No 1TEST: true.size=14 false.size=4
3750                    ; No 2TEST: true.size=14 false.size=4
3751                    ; 2GOTO: Single test with two GOTO's
3752 0192 1d03          btfss   __z___byte, __z___bit
3753 0193 29a3          goto    rb2bus_command__3
3754                    ; line_number = 232
3755                    ; call rb2bus_eedata_write(new_address)
3756                    ;info   232, 404
3757 0194 0825          movf    rb2bus_command__new_address,w
3758 0195 21e8          call    rb2bus_eedata_write
3759                    ; line_number = 233
3760                    ;  temp := rb2bus_eedata_read()
3761                    ;info   233, 406
3762 0196 21d3          call    rb2bus_eedata_read
3763 0197 00a6          movwf   rb2bus_command__temp
3764                    ; line_number = 234
3765                    ;  if temp = new_address start
3766                    ;info   234, 408
3767                    ; Left minus Right
3768 0198 0825          movf    rb2bus_command__new_address,w
3769 0199 0226          subwf   rb2bus_command__temp,w
3770                    ; =>bit_code_emit@symbol(): sym=__z
3771                    ; No 1TEST: true.size=3 false.size=1
3772                    ; No 2TEST: true.size=3 false.size=1
3773                    ; 2GOTO: Single test with two GOTO's
3774 019a 1d03          btfss   __z___byte, __z___bit
3775 019b 29a0          goto    rb2bus_command__1
3776                    ; line_number = 235
3777                    ; rb2bus_address := new_address
3778                    ;info   235, 412
3779 019c 0825          movf    rb2bus_command__new_address,w
3780 019d 00a0          movwf   rb2bus_address
3781                    ; line_number = 236
3782                    ;  call rb2bus_byte_put(rb2_ok)
3783                    ;info   236, 414
3784 019e 30a5          movlw   165
3785 019f 29a1          goto    rb2bus_command__2
3786                    ; 2GOTO: Starting code 2
3787   01a0 :   rb2bus_command__1:
3788                    ; line_number = 238
3789                    ; call rb2bus_byte_put(0)
3790                    ;info   238, 416
3791 01a0 3000          movlw   0
3792   01a1 :   rb2bus_command__2:
3793                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3794                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3795                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3796 01a1 2159          call    rb2bus_byte_put
3797                    ; line_number = 234
3798                    ;  if temp = new_address done
3799 01a2 29a7          goto    rb2bus_command__4
3800                    ; 2GOTO: Starting code 2
3801   01a3 :   rb2bus_command__3:
3802                    ; line_number = 228
3803                    ; call rb2bus_byte_put(0)
3804                    ;info   228, 419
3805 01a3 3000          movlw   0
3806 01a4 2159          call    rb2bus_byte_put
3807                    ; line_number = 229
3808                    ;  rb2bus_error := _true
3809                    ;info   229, 421
3810 01a5 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3811                    ; line_number = 230
3812                    ;  rb2bus_selected := _false
3813                    ;info   230, 422
3814 01a6 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3815   01a7 :   rb2bus_command__4:
3816                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3817                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3818                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3819                    ; line_number = 227
3820                    ;  if temp != new_address done
3821   01a7 :   rb2bus_command__7:
3822                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3823                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3824                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3825                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3826                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
3827                    ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
3828                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3829                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
3830                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3831                    ; line_number = 217
3832                    ;  if new_address = 0 || new_address = rb2bus_address done
3833 01a7 29b4          goto    rb2bus_command__14
3834                    ; line_number = 239
3835                    ; case 5
3836   01a8 :   rb2bus_command__10:
3837                    ; # 1111 1101 (Id_next):
3838                    ; line_number = 241
3839                    ;  if rb2bus_index < id.size start
3840                    ;info   241, 424
3841 01a8 3016          movlw   22
3842 01a9 0221          subwf   rb2bus_index,w
3843                    ; =>bit_code_emit@symbol(): sym=__c
3844                    ; No 1TEST: true.size=0 false.size=4
3845                    ; No 2TEST: true.size=0 false.size=4
3846                    ; 1GOTO: Single test with GOTO
3847 01aa 1803          btfsc   __c___byte, __c___bit
3848 01ab 29b0          goto    rb2bus_command__8
3849                    ; line_number = 242
3850                    ; call rb2bus_byte_put(id[rb2bus_index])
3851                    ;info   242, 428
3852 01ac 0821          movf    rb2bus_index,w
3853 01ad 20fc          call    id
3854 01ae 2159          call    rb2bus_byte_put
3855                    ; line_number = 243
3856                    ;  rb2bus_index := rb2bus_index + 1
3857                    ;info   243, 431
3858 01af 0aa1          incf    rb2bus_index,f
3859                    ; #if rb2bus_index >= id.size
3860                    ; #	rb2bus_index := rb2bus_index - 1
3861   01b0 :   rb2bus_command__8:
3862                    ; Recombine size1 = 0 || size2 = 0
3863                    ; line_number = 241
3864                    ;  if rb2bus_index < id.size done
3865 01b0 29b4          goto    rb2bus_command__14
3866                    ; line_number = 246
3867                    ; case 6
3868   01b1 :   rb2bus_command__11:
3869                    ; # 1111 1110 (Id_start):
3870                    ; line_number = 248
3871                    ;  rb2bus_index := 0
3872                    ;info   248, 433
3873 01b1 01a1          clrf    rb2bus_index
3874 01b2 29b4          goto    rb2bus_command__14
3875                    ; line_number = 249
3876                    ; case 7
3877   01b3 :   rb2bus_command__12:
3878                    ; # 1111 1111 (Deselect):
3879                    ; line_number = 251
3880                    ;  call rb2bus_deselect()
3881                    ;info   251, 435
3882 01b3 2135          call    rb2bus_deselect
3883            
3884            
3885   01b4 :   rb2bus_command__14:
3886                    ; line_number = 209
3887                    ;  switch command & 7 done
3888                    ; delay after procedure statements=non-uniform
3889                    ; Implied return
3890 01b4 3400          retlw   0
3891            
3892            
3893            
3894            
3895                    ; buffer = 'rb2bus_pic16f688'
3896                    ; line_number = 18
3897                    ;info   18, 437
3898                    ; procedure rb2bus_initialize
3899   01b5 :   rb2bus_initialize:
3900                    ; Last argument is sitting in W; save into argument variable
3901 01b5 00a8          movwf   rb2bus_initialize__address
3902                    ; delay=4294967295
3903                    ; line_number = 19
3904                    ; argument address byte
3905 00000028 = rb2bus_initialize__address equ globals___0+8
3906                    ; line_number = 20
3907                    ;  returns_nothing
3908            
3909                    ; # This procedure is responsibile for initializing the UART
3910                    ; # connected to the bus.  {address} is the address of this
3911                    ; # slave module.  This code is specific to the PIC16F688.
3912            
3913                    ; # Warm up the UART:
3914                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3915                    ; line_number = 27
3916                    ;  _trisc@5 := _true
3917                    ;info   27, 438
3918 00000087 = rb2bus_initialize__select__1___byte equ _trisc
3919 00000005 = rb2bus_initialize__select__1___bit equ 5
3920 01b6 1683          bsf     __rp0___byte, __rp0___bit
3921 01b7 1687          bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
3922                    ; line_number = 28
3923                    ;  _trisc@4 := _true
3924                    ;info   28, 440
3925 00000087 = rb2bus_initialize__select__2___byte equ _trisc
3926 00000004 = rb2bus_initialize__select__2___bit equ 4
3927 01b8 1607          bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit
3928            
3929                    ; # Initialize the {_txsta} register:
3930                    ; line_number = 31
3931                    ;  _txsta := 0
3932                    ;info   31, 441
3933 01b9 1283          bcf     __rp0___byte, __rp0___bit
3934 01ba 0196          clrf    _txsta
3935                    ; line_number = 32
3936                    ;  _tx9 := _true
3937                    ;info   32, 443
3938 01bb 1716          bsf     _tx9___byte, _tx9___bit
3939                    ; #_tx9 := _false
3940                    ; line_number = 34
3941                    ;  _txen := _true
3942                    ;info   34, 444
3943 01bc 1696          bsf     _txen___byte, _txen___bit
3944                    ; line_number = 35
3945                    ;  _brgh := _true
3946                    ;info   35, 445
3947 01bd 1516          bsf     _brgh___byte, _brgh___bit
3948            
3949                    ; # Initialize the {_rcsta} register:
3950                    ; line_number = 38
3951                    ;  _rcsta := 0
3952                    ;info   38, 446
3953 01be 0197          clrf    _rcsta
3954                    ; line_number = 39
3955                    ;  _spen := _true
3956                    ;info   39, 447
3957 01bf 1797          bsf     _spen___byte, _spen___bit
3958                    ; line_number = 40
3959                    ;  _rx9 := _true
3960                    ;info   40, 448
3961 01c0 1717          bsf     _rx9___byte, _rx9___bit
3962                    ; line_number = 41
3963                    ;  _cren := _true
3964                    ;info   41, 449
3965 01c1 1617          bsf     _cren___byte, _cren___bit
3966                    ; #_adden := _true
3967                    ; line_number = 43
3968                    ;  _adden := _false
3969                    ;info   43, 450
3970 01c2 1197          bcf     _adden___byte, _adden___bit
3971            
3972                    ; # Set up the baud rate generator:
3973                    ; line_number = 46
3974                    ;  _baudctl := 0
3975                    ;info   46, 451
3976 01c3 0191          clrf    _baudctl
3977                    ; line_number = 47
3978                    ;  _brg16 := _true
3979                    ;info   47, 452
3980 01c4 1591          bsf     _brg16___byte, _brg16___bit
3981                    ; line_number = 48
3982                    ;  _spbrg := _eusart_500000_low
3983                    ;info   48, 453
3984 01c5 3009          movlw   9
3985 01c6 0093          movwf   _spbrg
3986                    ; line_number = 49
3987                    ;  _spbrgh := _eusart_500000_high
3988                    ;info   49, 455
3989 01c7 0192          clrf    _spbrgh
3990            
3991                    ; line_number = 51
3992                    ;  rb2bus_selected := _false
3993                    ;info   51, 456
3994 01c8 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3995                    ; line_number = 52
3996                    ;  rb2bus_error := _false
3997                    ;info   52, 457
3998 01c9 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
3999                    ; line_number = 53
4000                    ;  rb2bus_index := 0
4001                    ;info   53, 458
4002 01ca 01a1          clrf    rb2bus_index
4003            
4004                    ; # Deal with setting {rb2bus_address} from EEData memory:
4005                    ; line_number = 56
4006                    ;  rb2bus_address := rb2bus_eedata_read()
4007                    ;info   56, 459
4008 01cb 21d3          call    rb2bus_eedata_read
4009 01cc 00a0          movwf   rb2bus_address
4010                    ; line_number = 57
4011                    ;  if rb2bus_address = 0 start
4012                    ;info   57, 461
4013                    ; Left minus Right
4014 01cd 0820          movf    rb2bus_address,w
4015                    ; =>bit_code_emit@symbol(): sym=__z
4016                    ; No 1TEST: true.size=2 false.size=0
4017                    ; No 2TEST: true.size=2 false.size=0
4018                    ; 1GOTO: Single test with GOTO
4019 01ce 1d03          btfss   __z___byte, __z___bit
4020 01cf 29d2          goto    rb2bus_initialize__3
4021                    ; # EE data not set, so use {address} passed in as a argument:
4022                    ; line_number = 59
4023                    ;  rb2bus_address := address
4024                    ;info   59, 464
4025 01d0 0828          movf    rb2bus_initialize__address,w
4026 01d1 00a0          movwf   rb2bus_address
4027            
4028            
4029                    ; Recombine size1 = 0 || size2 = 0
4030   01d2 :   rb2bus_initialize__3:
4031                    ; line_number = 57
4032                    ;  if rb2bus_address = 0 done
4033                    ; delay after procedure statements=non-uniform
4034                    ; Implied return
4035 01d2 3400          retlw   0
4036            
4037            
4038            
4039            
4040                    ; line_number = 64
4041                    ;info   64, 467
4042                    ; procedure rb2bus_eedata_read
4043   01d3 :   rb2bus_eedata_read:
4044                    ; arguments_none
4045                    ; line_number = 66
4046                    ;  returns byte
4047            
4048                    ; # This procedure will return the address stored in EEData.  If
4049                    ; # there is no data, 0 is returned.
4050            
4051                    ; line_number = 71
4052                    ;  local temp1 byte
4053 00000029 = rb2bus_eedata_read__temp1 equ globals___0+9
4054                    ; line_number = 72
4055                    ;  local temp2 byte
4056 0000002a = rb2bus_eedata_read__temp2 equ globals___0+10
4057            
4058                    ; # Read the first byte (the address):
4059                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
4060                    ; line_number = 75
4061                    ;  _eecon1 := 0
4062                    ;info   75, 467
4063 01d3 1683          bsf     __rp0___byte, __rp0___bit
4064 01d4 019c          clrf    _eecon1
4065                    ; line_number = 76
4066                    ;  _eeadr := rb2bus_eedata_address
4067                    ;info   76, 469
4068 01d5 30fe          movlw   254
4069 01d6 009b          movwf   _eeadr
4070                    ; line_number = 77
4071                    ;  _rd := _true
4072                    ;info   77, 471
4073 01d7 141c          bsf     _rd___byte, _rd___bit
4074                    ; line_number = 78
4075                    ;  temp1 := _eedat
4076                    ;info   78, 472
4077 01d8 081a          movf    _eedat,w
4078 01d9 1283          bcf     __rp0___byte, __rp0___bit
4079 01da 00a9          movwf   rb2bus_eedata_read__temp1
4080            
4081                    ; # Read the second byte (the 1'z complement)
4082                    ; line_number = 81
4083                    ;  _eeadr := _eeadr + 1
4084                    ;info   81, 475
4085 01db 1683          bsf     __rp0___byte, __rp0___bit
4086 01dc 0a9b          incf    _eeadr,f
4087                    ; line_number = 82
4088                    ;  _rd := _true
4089                    ;info   82, 477
4090 01dd 141c          bsf     _rd___byte, _rd___bit
4091                    ; line_number = 83
4092                    ;  temp2 := _eedat
4093                    ;info   83, 478
4094 01de 081a          movf    _eedat,w
4095 01df 1283          bcf     __rp0___byte, __rp0___bit
4096 01e0 00aa          movwf   rb2bus_eedata_read__temp2
4097            
4098                    ; # If they are 1's complement of one another, they are valid:
4099                    ; line_number = 86
4100                    ;  if temp1 = (0xff ^ temp2) start
4101                    ;info   86, 481
4102                    ; Left minus Right
4103 01e1 092a          comf    rb2bus_eedata_read__temp2,w
4104 01e2 0229          subwf   rb2bus_eedata_read__temp1,w
4105                    ; =>bit_code_emit@symbol(): sym=__z
4106                    ; No 1TEST: true.size=2 false.size=0
4107                    ; No 2TEST: true.size=2 false.size=0
4108                    ; 1GOTO: Single test with GOTO
4109 01e3 1d03          btfss   __z___byte, __z___bit
4110 01e4 29e7          goto    rb2bus_eedata_read__1
4111                    ; # Return the valid address:
4112                    ; line_number = 88
4113                    ;  return temp1 start
4114                    ; line_number = 88
4115                    ;info   88, 485
4116 01e5 0829          movf    rb2bus_eedata_read__temp1,w
4117 01e6 0008          return  
4118                    ; line_number = 88
4119                    ;  return temp1 done
4120            
4121                    ; Recombine size1 = 0 || size2 = 0
4122   01e7 :   rb2bus_eedata_read__1:
4123                    ; line_number = 86
4124                    ;  if temp1 = (0xff ^ temp2) done
4125                    ; # They are not 1's complement, so return 0 as an error:
4126                    ; line_number = 91
4127                    ;  return 0 start
4128                    ; line_number = 91
4129                    ;info   91, 487
4130 01e7 3400          retlw   0
4131                    ; line_number = 91
4132                    ;  return 0 done
4133            
4134            
4135                    ; delay after procedure statements=non-uniform
4136            
4137            
4138            
4139            
4140                    ; line_number = 94
4141                    ;info   94, 488
4142                    ; procedure rb2bus_eedata_write
4143   01e8 :   rb2bus_eedata_write:
4144                    ; Last argument is sitting in W; save into argument variable
4145 01e8 00ab          movwf   rb2bus_eedata_write__address
4146                    ; delay=4294967295
4147                    ; line_number = 95
4148                    ; argument address byte
4149 0000002b = rb2bus_eedata_write__address equ globals___0+11
4150                    ; line_number = 96
4151                    ;  returns_nothing
4152            
4153                    ; # This procedure will write {address} into the EEData.  The
4154                    ; # microcontroll pauses while the EEData is written.
4155            
4156                    ; # Clear out the {_eecon1} register
4157                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
4158                    ; line_number = 102
4159                    ;  _eecon1 := 0
4160                    ;info   102, 489
4161 01e9 1683          bsf     __rp0___byte, __rp0___bit
4162 01ea 019c          clrf    _eecon1
4163                    ; line_number = 103
4164                    ;  _eeadr := rb2bus_eedata_address
4165                    ;info   103, 491
4166 01eb 30fe          movlw   254
4167 01ec 009b          movwf   _eeadr
4168                    ; line_number = 104
4169                    ;  _eedat := address
4170                    ;info   104, 493
4171 01ed 1283          bcf     __rp0___byte, __rp0___bit
4172 01ee 082b          movf    rb2bus_eedata_write__address,w
4173 01ef 1683          bsf     __rp0___byte, __rp0___bit
4174 01f0 009a          movwf   _eedat
4175            
4176                    ; # Write 2 bytes ({address} followed by {address}^0xff):
4177                    ; line_number = 107
4178                    ;  loop_exactly 2 start
4179                    ;info   107, 497
4180 0000003d = rb2bus_eedata_write__1 equ globals___0+29
4181 01f1 3002          movlw   2
4182 01f2 1283          bcf     __rp0___byte, __rp0___bit
4183 01f3 00bd          movwf   rb2bus_eedata_write__1
4184   01f4 :   rb2bus_eedata_write__2:
4185                    ; # Set the data to write:
4186            
4187                    ; # Set up the for the write:
4188                    ; line_number = 111
4189                    ;  _wren := _true
4190                    ;info   111, 500
4191 01f4 1683          bsf     __rp0___byte, __rp0___bit
4192 01f5 151c          bsf     _wren___byte, _wren___bit
4193                    ; line_number = 112
4194                    ;  _gie := _false
4195                    ;info   112, 502
4196 01f6 138b          bcf     _gie___byte, _gie___bit
4197                    ; line_number = 113
4198                    ;  _eecon2 := 0x55
4199                    ;info   113, 503
4200 01f7 3055          movlw   85
4201 01f8 009d          movwf   _eecon2
4202                    ; line_number = 114
4203                    ;  _eecon2 := 0xaa
4204                    ;info   114, 505
4205 01f9 30aa          movlw   170
4206 01fa 009d          movwf   _eecon2
4207                    ; # Start the write:
4208                    ; line_number = 116
4209                    ;  _wr := _true
4210                    ;info   116, 507
4211 01fb 149c          bsf     _wr___byte, _wr___bit
4212            
4213                    ; # Wait for write to complete:
4214                    ; line_number = 119
4215                    ;  while _wr start
4216   01fc :   rb2bus_eedata_write__3:
4217                    ;info   119, 508
4218                    ; =>bit_code_emit@symbol(): sym=_wr
4219                    ; 1TEST: Single test with code in skip slot
4220 01fc 189c          btfsc   _wr___byte, _wr___bit
4221                    ; line_number = 120
4222                    ; do_nothing
4223                    ;info   120, 509
4224            
4225 01fd 29fc          goto    rb2bus_eedata_write__3
4226                    ; Recombine size1 = 0 || size2 = 0
4227                    ; line_number = 119
4228                    ;  while _wr done
4229                    ; # Disable writing:
4230                    ; line_number = 123
4231                    ;  _wren := _false
4232                    ;info   123, 510
4233 01fe 111c          bcf     _wren___byte, _wren___bit
4234            
4235                    ; # Prepare the second byte of data:
4236                    ; line_number = 126
4237                    ;  _eeadr := _eeadr + 1
4238                    ;info   126, 511
4239 01ff 0a9b          incf    _eeadr,f
4240                    ; line_number = 127
4241                    ;  _eedat := address ^ 0xff
4242                    ;info   127, 512
4243 0200 1283          bcf     __rp0___byte, __rp0___bit
4244 0201 092b          comf    rb2bus_eedata_write__address,w
4245 0202 1683          bsf     __rp0___byte, __rp0___bit
4246 0203 009a          movwf   _eedat
4247            
4248 0204 1283          bcf     __rp0___byte, __rp0___bit
4249                    ; line_number = 107
4250                    ;  loop_exactly 2 wrap-up
4251 0205 0bbd          decfsz  rb2bus_eedata_write__1,f
4252 0206 29f4          goto    rb2bus_eedata_write__2
4253                    ; line_number = 107
4254                    ;  loop_exactly 2 done
4255                    ; delay after procedure statements=non-uniform
4256                    ; Implied return
4257 0207 3400          retlw   0
4258            
4259            
4260            
4261            
4262                    ; Configuration bits
4263                    ; address = 0x2007, fill = 0x3000
4264                    ; fcmen = off (0x0)
4265                    ; ieso = off (0x0)
4266                    ; boden = off (0x0)
4267                    ; cpd = off (0x80)
4268                    ; cp = off (0x40)
4269                    ; mclre = off (0x0)
4270                    ; pwrte = off (0x10)
4271                    ; wdte = off (0x0)
4272                    ; fosc = hs (0x2)
4273                    ; 12498 = 0x30d2
4274   30d2 =           __config 12498
4275                    ; Define start addresses for data regions
4276                    ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
4277                    ; Region="globals___0" Address=32" Size=80 Bytes=30 Bits=4 Available=49
4278                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
4279                    ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80
4280                    ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
4281                    end
