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