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