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