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