1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 2047
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000070 = shared___globals equ 112
7    00000020 = globals___0 equ 32
8    000000a0 = globals___1 equ 160
9    00000120 = globals___2 equ 288
10   00000000 = __indf equ 0
11   00000002 = __pcl equ 2
12   00000003 = __status equ 3
13   00000004 = __fsr equ 4
14   00000003 = __c___byte equ 3
15   00000000 = __c___bit equ 0
16   00000003 = __z___byte equ 3
17   00000002 = __z___bit equ 2
18   00000003 = __rp0___byte equ 3
19   00000005 = __rp0___bit equ 5
20   00000003 = __rp1___byte equ 3
21   00000006 = __rp1___bit equ 6
22   00000003 = __irp___byte equ 3
23   00000007 = __irp___bit equ 7
24   0000000a = __pclath equ 10
25   0000000a = __cb0___byte equ 10
26   00000003 = __cb0___bit equ 3
27   0000000a = __cb1___byte equ 10
28   00000004 = __cb1___bit equ 4
29              
30                      ; # Copyright (c) 2002-2006 by Wayne C. Gramlich.
31                      ; # All rights reserved.
32              
33                      ; # This code started out as some assembly code that was written by
34                      ; # Chuck McManis.  It has been modified basically beyond recognition.
35                      ; # None-the-less, I would like to thank Chuck for his contribution
36                      ; # to the effort.
37              
38                      ; # The Lumix(r) LCM-S01602DTR/M 2 line by 16 character LCD panel uses the
39                      ; # Samsung(r) S6A0069 LCD controller.  The S6A0069 LCD controller has
40                      ; # 80 bytes of internal memory available for displaying characters.
41                      ; # The byte addresses for these data bytes are 0x00 through 0x4f(=79).
42              
43                      ; # This module uses a PIC16F628A
44                      ; buffer = 'i2chost'
45                      ; line_number = 17
46                      ; library _pic16f628 entered
47              
48                      ; # Copyright (c) 2006 by Wayne C. Gramlich
49                      ; # All rights reserved.
50              
51                      ; buffer = '_pic16f628'
52                      ; line_number = 6
53                      ; processor pic16f628
54                      ; line_number = 7
55                      ; configure_address 0x2007
56                      ; line_number = 8
57                      ;  configure_fill 0x0200
58                      ; line_number = 9
59                      ;  configure_option cp: off = 0x3c00
60                      ; line_number = 10
61                      ;  configure_option cp: after400 = 0x2800
62                      ; line_number = 11
63                      ;  configure_option cp: after200 = 0x1400
64                      ; line_number = 12
65                      ;  configure_option cp: on = 0x0000
66                      ; line_number = 13
67                      ;  configure_option cpd: off = 0x100
68                      ; line_number = 14
69                      ;  configure_option cpd: on = 0x000
70                      ; line_number = 15
71                      ;  configure_option lvp: on = 0x80
72                      ; line_number = 16
73                      ;  configure_option lvp: off = 0x00
74                      ; line_number = 17
75                      ;  configure_option boden: on = 0x40
76                      ; line_number = 18
77                      ;  configure_option boden: off = 0x00
78                      ; line_number = 19
79                      ;  configure_option mclre: on = 0x20
80                      ; line_number = 20
81                      ;  configure_option mclre: off = 0x00
82                      ; line_number = 21
83                      ;  configure_option pwrte: on = 0
84                      ; line_number = 22
85                      ;  configure_option pwrte: off = 8
86                      ; line_number = 23
87                      ;  configure_option wdte: on = 4
88                      ; line_number = 24
89                      ;  configure_option wdte: off = 0
90                      ; line_number = 25
91                      ;  configure_option fosc: er_clk = 0x13
92                      ; line_number = 26
93                      ;  configure_option fosc: er_no_clk = 0x12
94                      ; line_number = 27
95                      ;  configure_option fosc: intrc_clk = 0x11
96                      ; line_number = 28
97                      ;  configure_option fosc: intrc_no_clk = 0x10
98                      ; line_number = 29
99                      ;  configure_option fosc: ec = 3
100                     ; line_number = 30
101                     ;  configure_option fosc: hs = 2
102                     ; line_number = 31
103                     ;  configure_option fosc: xt = 1
104                     ; line_number = 32
105                     ;  configure_option fosc: lp = 0
106                     ; line_number = 33
107                     ;  code_bank 0x0 : 0x7ff
108                     ; line_number = 34
109                     ;  data_bank 0x0 : 0x7f
110                     ; line_number = 35
111                     ;  data_bank 0x80 : 0xff
112                     ; line_number = 36
113                     ;  data_bank 0x100 : 0x17f
114                     ; line_number = 37
115                     ;  data_bank 0x180 : 0x1ff
116                     ; line_number = 38
117                     ;  global_region 0x20 : 0x6f
118                     ; line_number = 39
119                     ;  global_region 0xa0 : 0xef
120                     ; line_number = 40
121                     ;  global_region 0x120 : 0x14f
122                     ; line_number = 41
123                     ;  shared_region 0x70 : 0x7f
124                     ; line_number = 42
125                     ;  packages dip=18, soic=18, ssop=20
126                     ; line_number = 43
127                     ;  pin ra2_in, ra2_out, ra2_unused
128                     ; line_number = 44
129                     ; pin_bindings dip=1, soic=1, ssop=1
130                     ; line_number = 45
131                     ;  bind_to _porta@2
132                     ; line_number = 46
133                     ;  or_if ra2_in _trisa 4
134                     ; line_number = 47
135                     ;  or_if ra2_out _trisa 0
136                     ; line_number = 48
137                     ;  or_if ra2_in _cmcon 7
138                     ; line_number = 49
139                     ;  or_if ra2_out _cmcon 7
140                     ; line_number = 50
141                     ; pin ra3_in, ra3_out, cmp1, ra3_unused
142                     ; line_number = 51
143                     ; pin_bindings dip=2, soic=2, ssop=2
144                     ; line_number = 52
145                     ;  bind_to _porta@3
146                     ; line_number = 53
147                     ;  or_if ra3_in _trisa 8
148                     ; line_number = 54
149                     ;  or_if ra3_out _trisa 0
150                     ; line_number = 55
151                     ;  or_if ra3_in _cmcon 7
152                     ; line_number = 56
153                     ;  or_if ra3_out _cmcon 7
154                     ; line_number = 57
155                     ; pin ra4_in, ra4_open_collector, tocki, cmp2, ra4_unused
156                     ; line_number = 58
157                     ; pin_bindings dip=3, soic=3, ssop=3
158                     ; line_number = 59
159                     ;  bind_to _porta@4
160                     ; line_number = 60
161                     ;  or_if ra4_in _trisa 16
162                     ; line_number = 61
163                     ;  or_if ra4_open_collector _trisa 0
164                     ; line_number = 62
165                     ; pin ra5_in, mclr, thv, ra5_unused
166                     ; line_number = 63
167                     ; pin_bindings dip=4, soic=4, ssop=4
168                     ; line_number = 64
169                     ;  bind_to _porta@5
170                     ; line_number = 65
171                     ;  or_if ra5_in _trisa 32
172                     ; line_number = 66
173                     ; pin vss, ground
174                     ; line_number = 67
175                     ; pin_bindings dip=5, soic=5, ssop=5
176                     ; line_number = 68
177                     ; pin vss2, ground2
178                     ; line_number = 69
179                     ; pin_bindings ssop=6
180                     ; line_number = 70
181                     ; pin rb0_in, rb0_out, int, rb0_unused
182                     ; line_number = 71
183                     ; pin_bindings dip=6, soic=6, ssop=7
184                     ; line_number = 72
185                     ;  bind_to _portb@0
186                     ; line_number = 73
187                     ;  or_if rb0_in _trisb 1
188                     ; line_number = 74
189                     ;  or_if rb0_out _trisb 0
190                     ; line_number = 75
191                     ;  or_if int _trisb 1
192                     ; line_number = 76
193                     ; pin rb1_in, rb1_out, rx, dt, rb1_unused
194                     ; line_number = 77
195                     ; pin_bindings dip=7, soic=7, ssop=8
196                     ; line_number = 78
197                     ;  bind_to _portb@1
198                     ; line_number = 79
199                     ;  or_if rb1_in _trisb 2
200                     ; line_number = 80
201                     ;  or_if rb1_out _trisb 0
202                     ; line_number = 81
203                     ;  or_if rx _trisb 2
204                     ; line_number = 82
205                     ; pin rb2_in, rb2_out, tx, ck, rb2_unused
206                     ; line_number = 83
207                     ; pin_bindings dip=8, soic=8, ssop=9
208                     ; line_number = 84
209                     ;  bind_to _portb@2
210                     ; line_number = 85
211                     ;  or_if rb2_in _trisb 4
212                     ; line_number = 86
213                     ;  or_if rb2_out _trisb 0
214                     ; line_number = 87
215                     ;  or_if tx _trisb 4
216                     ; line_number = 88
217                     ;  or_if ck _trisb 0
218                     ; line_number = 89
219                     ; pin rb3_in, rb3_out, ccp1, rb3unused
220                     ; line_number = 90
221                     ; pin_bindings dip=9, soic=9, ssop=10
222                     ; line_number = 91
223                     ;  bind_to _portb@3
224                     ; line_number = 92
225                     ;  or_if rb3_in _trisb 8
226                     ; line_number = 93
227                     ;  or_if rb3_out _trisb 0
228                     ; line_number = 94
229                     ;  or_if ccp1 _trisb 8
230                     ; line_number = 95
231                     ; pin rb4_in, rb4_out, pgm, rb4_unused
232                     ; line_number = 96
233                     ; pin_bindings dip=10, soic=10, ssop=11
234                     ; line_number = 97
235                     ;  bind_to _portb@4
236                     ; line_number = 98
237                     ;  or_if rb4_in _trisb 16
238                     ; line_number = 99
239                     ;  or_if rb4_out _trisb 0
240                     ; line_number = 100
241                     ;  or_if pgm _trisb 16
242                     ; line_number = 101
243                     ; pin rb5_in, rb5_out, rb5_unused
244                     ; line_number = 102
245                     ; pin_bindings dip=11, soic=11, ssop=12
246                     ; line_number = 103
247                     ;  bind_to _portb@5
248                     ; line_number = 104
249                     ;  or_if rb5_in _trisb 32
250                     ; line_number = 105
251                     ;  or_if rb5_out _trisb 0
252                     ; line_number = 106
253                     ; pin rb6_in, rb6_out, t1oso, t1cki, rb6_unused
254                     ; line_number = 107
255                     ; pin_bindings dip=12, soic=12, ssop=13
256                     ; line_number = 108
257                     ;  bind_to _portb@6
258                     ; line_number = 109
259                     ;  or_if rb6_in _trisb 64
260                     ; line_number = 110
261                     ;  or_if rb6_out _trisb 0
262                     ; line_number = 111
263                     ;  or_if t1oso _trisb 0
264                     ; line_number = 112
265                     ;  or_if t1cki _trisb 64
266                     ; line_number = 113
267                     ; pin rb7_in, rb7_out, t1osi, rb7_unused
268                     ; line_number = 114
269                     ; pin_bindings dip=13, soic=13, ssop=14
270                     ; line_number = 115
271                     ;  bind_to _portb@6
272                     ; line_number = 116
273                     ;  or_if rb7_in _trisb 128
274                     ; line_number = 117
275                     ;  or_if rb7_out _trisb 0
276                     ; line_number = 118
277                     ;  or_if t1osi _trisb 128
278                     ; line_number = 119
279                     ; pin vdd, power_supply
280                     ; line_number = 120
281                     ; pin_bindings dip=14, soic=14, ssop=15
282                     ; line_number = 121
283                     ; pin vdd2, power_spply2
284                     ; line_number = 122
285                     ; pin_bindings ssop=16
286                     ; line_number = 123
287                     ; pin ra6_in, ra6_out, osc2, clkout, ra6_unused
288                     ; line_number = 124
289                     ; pin_bindings dip=15, soic=15, ssop=17
290                     ; line_number = 125
291                     ;  bind_to _porta@6
292                     ; line_number = 126
293                     ;  or_if ra6_in _trisa 64
294                     ; line_number = 127
295                     ;  or_if ra6_out _trisa 0
296                     ; line_number = 128
297                     ;  or_if clkout _trisa 0
298                     ; line_number = 129
299                     ; pin ra7_in, ra7_out, osc1, clkin, ra7_unused
300                     ; line_number = 130
301                     ; pin_bindings dip=16, soic=16, ssop=18
302                     ; line_number = 131
303                     ;  bind_to _porta@7
304                     ; line_number = 132
305                     ;  or_if ra7_in _trisa 128
306                     ; line_number = 133
307                     ;  or_if ra7_out _trisa 0
308                     ; line_number = 134
309                     ;  or_if clkin _trisa 128
310                     ; line_number = 135
311                     ; pin ra0_in, ra0_out, ra0_unused
312                     ; line_number = 136
313                     ; pin_bindings dip=17, soic=17, ssop=19
314                     ; line_number = 137
315                     ;  bind_to _porta@0
316                     ; line_number = 138
317                     ;  or_if ra0_in _trisa 1
318                     ; line_number = 139
319                     ;  or_if ra0_in _cmcon 7
320                     ; line_number = 140
321                     ;  or_if ra0_out _cmcon 7
322                     ; line_number = 141
323                     ;  or_if ra0_out _trisa 0
324                     ; line_number = 142
325                     ; pin ra1_in, ra1_out, ra1_unused
326                     ; line_number = 143
327                     ; pin_bindings dip=18, soic=18, ssop=20
328                     ; line_number = 144
329                     ;  bind_to _porta@1
330                     ; line_number = 145
331                     ;  or_if ra1_in _trisa 2
332                     ; line_number = 146
333                     ;  or_if ra1_out _trisa 0
334                     ; line_number = 147
335                     ;  or_if ra1_in _cmcon 7
336                     ; line_number = 148
337                     ;  or_if ra1_out _cmcon 7
338             
339             
340             
341                     ; line_number = 153
342                     ; library _standard entered
343             
344                     ; # Copyright (c) 2006 by Wayne C. Gramlich
345                     ; # All rights reserved.
346             
347                     ; # Standard definition for uCL:
348             
349                     ; buffer = '_standard'
350                     ; line_number = 8
351                     ; constant _true = (1 = 1)
352  00000001 = _true equ 1
353                     ; line_number = 9
354                     ; constant _false = (0 != 0)
355  00000000 = _false equ 0
356             
357             
358                     ; buffer = '_pic16f628'
359                     ; line_number = 153
360                     ; library _standard exited
361             
362                     ; # Data bank 0:
363             
364                     ; line_number = 157
365                     ; register _indf = 
366  00000000 = _indf equ 0
367             
368                     ; line_number = 159
369                     ; register _tmr0 = 
370  00000001 = _tmr0 equ 1
371             
372                     ; line_number = 161
373                     ; register _pcl = 
374  00000002 = _pcl equ 2
375             
376                     ; line_number = 163
377                     ; register _status = 
378  00000003 = _status equ 3
379                     ; line_number = 164
380                     ; bind _irp = _status@7
381  00000003 = _irp___byte equ _status
382  00000007 = _irp___bit equ 7
383                     ; line_number = 165
384                     ; bind _rp1 = _status@6
385  00000003 = _rp1___byte equ _status
386  00000006 = _rp1___bit equ 6
387                     ; line_number = 166
388                     ; bind _rp0 = _status@5
389  00000003 = _rp0___byte equ _status
390  00000005 = _rp0___bit equ 5
391                     ; line_number = 167
392                     ; bind _to = _status@4
393  00000003 = _to___byte equ _status
394  00000004 = _to___bit equ 4
395                     ; line_number = 168
396                     ; bind _pd = _status@3
397  00000003 = _pd___byte equ _status
398  00000003 = _pd___bit equ 3
399                     ; line_number = 169
400                     ; bind _z = _status@2
401  00000003 = _z___byte equ _status
402  00000002 = _z___bit equ 2
403                     ; line_number = 170
404                     ; bind _dc = _status@1
405  00000003 = _dc___byte equ _status
406  00000001 = _dc___bit equ 1
407                     ; line_number = 171
408                     ; bind _c = _status@0
409  00000003 = _c___byte equ _status
410  00000000 = _c___bit equ 0
411             
412                     ; line_number = 173
413                     ; register _fsr = 
414  00000004 = _fsr equ 4
415             
416                     ; line_number = 175
417                     ; register _porta = 
418  00000005 = _porta equ 5
419                     ; line_number = 176
420                     ; bind _ra7 = _porta@7
421  00000005 = _ra7___byte equ _porta
422  00000007 = _ra7___bit equ 7
423                     ; line_number = 177
424                     ; bind _ra6 = _porta@6
425  00000005 = _ra6___byte equ _porta
426  00000006 = _ra6___bit equ 6
427                     ; line_number = 178
428                     ; bind _ra5 = _porta@5
429  00000005 = _ra5___byte equ _porta
430  00000005 = _ra5___bit equ 5
431                     ; line_number = 179
432                     ; bind _ra4 = _porta@4
433  00000005 = _ra4___byte equ _porta
434  00000004 = _ra4___bit equ 4
435                     ; line_number = 180
436                     ; bind _ra3 = _porta@3
437  00000005 = _ra3___byte equ _porta
438  00000003 = _ra3___bit equ 3
439                     ; line_number = 181
440                     ; bind _ra2 = _porta@2
441  00000005 = _ra2___byte equ _porta
442  00000002 = _ra2___bit equ 2
443                     ; line_number = 182
444                     ; bind _ra1 = _porta@1
445  00000005 = _ra1___byte equ _porta
446  00000001 = _ra1___bit equ 1
447                     ; line_number = 183
448                     ; bind _ra0 = _porta@0
449  00000005 = _ra0___byte equ _porta
450  00000000 = _ra0___bit equ 0
451             
452                     ; line_number = 185
453                     ; register _portb = 
454  00000006 = _portb equ 6
455                     ; line_number = 186
456                     ; bind _rb7 = _portb@7
457  00000006 = _rb7___byte equ _portb
458  00000007 = _rb7___bit equ 7
459                     ; line_number = 187
460                     ; bind _rb6 = _portb@6
461  00000006 = _rb6___byte equ _portb
462  00000006 = _rb6___bit equ 6
463                     ; line_number = 188
464                     ; bind _rb5 = _portb@5
465  00000006 = _rb5___byte equ _portb
466  00000005 = _rb5___bit equ 5
467                     ; line_number = 189
468                     ; bind _rb4 = _portb@4
469  00000006 = _rb4___byte equ _portb
470  00000004 = _rb4___bit equ 4
471                     ; line_number = 190
472                     ; bind _rb3 = _portb@3
473  00000006 = _rb3___byte equ _portb
474  00000003 = _rb3___bit equ 3
475                     ; line_number = 191
476                     ; bind _rb2 = _portb@2
477  00000006 = _rb2___byte equ _portb
478  00000002 = _rb2___bit equ 2
479                     ; line_number = 192
480                     ; bind _rb1 = _portb@1
481  00000006 = _rb1___byte equ _portb
482  00000001 = _rb1___bit equ 1
483                     ; line_number = 193
484                     ; bind _rb0 = _portb@0
485  00000006 = _rb0___byte equ _portb
486  00000000 = _rb0___bit equ 0
487             
488                     ; line_number = 195
489                     ; register _pclath = 
490  0000000a = _pclath equ 10
491             
492                     ; line_number = 197
493                     ; register _intcon = 
494  0000000b = _intcon equ 11
495                     ; line_number = 198
496                     ; bind _gie = _intcon@7
497  0000000b = _gie___byte equ _intcon
498  00000007 = _gie___bit equ 7
499                     ; line_number = 199
500                     ; bind _peie = _intcon@6
501  0000000b = _peie___byte equ _intcon
502  00000006 = _peie___bit equ 6
503                     ; line_number = 200
504                     ; bind _t0ie = _intcon@5
505  0000000b = _t0ie___byte equ _intcon
506  00000005 = _t0ie___bit equ 5
507                     ; line_number = 201
508                     ; bind _inte = _intcon@4
509  0000000b = _inte___byte equ _intcon
510  00000004 = _inte___bit equ 4
511                     ; line_number = 202
512                     ; bind _rbie = _intcon@3
513  0000000b = _rbie___byte equ _intcon
514  00000003 = _rbie___bit equ 3
515                     ; line_number = 203
516                     ; bind _t0if = _intcon@2
517  0000000b = _t0if___byte equ _intcon
518  00000002 = _t0if___bit equ 2
519                     ; line_number = 204
520                     ; bind _intf = _intcon@1
521  0000000b = _intf___byte equ _intcon
522  00000001 = _intf___bit equ 1
523                     ; line_number = 205
524                     ; bind _rbif = _intcon@0
525  0000000b = _rbif___byte equ _intcon
526  00000000 = _rbif___bit equ 0
527             
528                     ; line_number = 207
529                     ; register _pir1 = 
530  0000000c = _pir1 equ 12
531                     ; line_number = 208
532                     ; bind _eeif = _pir1@7
533  0000000c = _eeif___byte equ _pir1
534  00000007 = _eeif___bit equ 7
535                     ; line_number = 209
536                     ; bind _cmif = _pir1@6
537  0000000c = _cmif___byte equ _pir1
538  00000006 = _cmif___bit equ 6
539                     ; line_number = 210
540                     ; bind _rcif = _pir1@5
541  0000000c = _rcif___byte equ _pir1
542  00000005 = _rcif___bit equ 5
543                     ; line_number = 211
544                     ; bind _txif = _pir1@4
545  0000000c = _txif___byte equ _pir1
546  00000004 = _txif___bit equ 4
547                     ; line_number = 212
548                     ; bind _ccp1if = _pir1@2
549  0000000c = _ccp1if___byte equ _pir1
550  00000002 = _ccp1if___bit equ 2
551                     ; line_number = 213
552                     ; bind _tmr2if = _pir1@1
553  0000000c = _tmr2if___byte equ _pir1
554  00000001 = _tmr2if___bit equ 1
555                     ; line_number = 214
556                     ; bind _tmr1if = _pir1@0
557  0000000c = _tmr1if___byte equ _pir1
558  00000000 = _tmr1if___bit equ 0
559             
560                     ; line_number = 216
561                     ; register _tmr1l = 
562  0000000e = _tmr1l equ 14
563             
564                     ; line_number = 218
565                     ; register _tmr1h = 
566  0000000f = _tmr1h equ 15
567             
568                     ; line_number = 220
569                     ; register _t1con = 
570  00000010 = _t1con equ 16
571                     ; line_number = 221
572                     ; bind _t1ckps1 = _t1con@5
573  00000010 = _t1ckps1___byte equ _t1con
574  00000005 = _t1ckps1___bit equ 5
575                     ; line_number = 222
576                     ; bind _t1ckps0 = _t1con@4
577  00000010 = _t1ckps0___byte equ _t1con
578  00000004 = _t1ckps0___bit equ 4
579                     ; line_number = 223
580                     ; bind _t1oscen = _t1con@3
581  00000010 = _t1oscen___byte equ _t1con
582  00000003 = _t1oscen___bit equ 3
583                     ; line_number = 224
584                     ; bind _t1sync = _t1con@2
585  00000010 = _t1sync___byte equ _t1con
586  00000002 = _t1sync___bit equ 2
587                     ; line_number = 225
588                     ; bind _tmr1cs = _t1con@1
589  00000010 = _tmr1cs___byte equ _t1con
590  00000001 = _tmr1cs___bit equ 1
591                     ; line_number = 226
592                     ; bind _tmr1on = _t1con@0
593  00000010 = _tmr1on___byte equ _t1con
594  00000000 = _tmr1on___bit equ 0
595             
596                     ; line_number = 228
597                     ; register _tmr2 = 
598  00000011 = _tmr2 equ 17
599             
600                     ; line_number = 230
601                     ; register _t2con = 
602  00000012 = _t2con equ 18
603                     ; line_number = 231
604                     ; bind _toutps3 = _t2con@6
605  00000012 = _toutps3___byte equ _t2con
606  00000006 = _toutps3___bit equ 6
607                     ; line_number = 232
608                     ; bind _toutps2 = _t2con@5
609  00000012 = _toutps2___byte equ _t2con
610  00000005 = _toutps2___bit equ 5
611                     ; line_number = 233
612                     ; bind _toutps1 = _t2con@4
613  00000012 = _toutps1___byte equ _t2con
614  00000004 = _toutps1___bit equ 4
615                     ; line_number = 234
616                     ; bind _toutps0 = _t2con@3
617  00000012 = _toutps0___byte equ _t2con
618  00000003 = _toutps0___bit equ 3
619                     ; line_number = 235
620                     ; bind _trm2on = _t2con@2
621  00000012 = _trm2on___byte equ _t2con
622  00000002 = _trm2on___bit equ 2
623                     ; line_number = 236
624                     ; bind _t2ckps1 = _t2con@1
625  00000012 = _t2ckps1___byte equ _t2con
626  00000001 = _t2ckps1___bit equ 1
627                     ; line_number = 237
628                     ; bind _t2ckps0 = _t2con@0
629  00000012 = _t2ckps0___byte equ _t2con
630  00000000 = _t2ckps0___bit equ 0
631             
632                     ; line_number = 239
633                     ; register _ccpr1l = 
634  00000015 = _ccpr1l equ 21
635             
636                     ; line_number = 241
637                     ; register _ccpr1h = 
638  00000016 = _ccpr1h equ 22
639             
640                     ; line_number = 243
641                     ; register _ccp1con = 
642  00000017 = _ccp1con equ 23
643                     ; line_number = 244
644                     ; bind _ccp1x = _ccp1con@5
645  00000017 = _ccp1x___byte equ _ccp1con
646  00000005 = _ccp1x___bit equ 5
647                     ; line_number = 245
648                     ; bind _ccp1y = _ccp1con@4
649  00000017 = _ccp1y___byte equ _ccp1con
650  00000004 = _ccp1y___bit equ 4
651                     ; line_number = 246
652                     ; bind _ccp1m3 = _ccp1con@3
653  00000017 = _ccp1m3___byte equ _ccp1con
654  00000003 = _ccp1m3___bit equ 3
655                     ; line_number = 247
656                     ; bind _ccp1m2 = _ccp1con@2
657  00000017 = _ccp1m2___byte equ _ccp1con
658  00000002 = _ccp1m2___bit equ 2
659                     ; line_number = 248
660                     ; bind _ccp1m1 = _ccp1con@1
661  00000017 = _ccp1m1___byte equ _ccp1con
662  00000001 = _ccp1m1___bit equ 1
663                     ; line_number = 249
664                     ; bind _ccp1m0 = _ccp1con@0
665  00000017 = _ccp1m0___byte equ _ccp1con
666  00000000 = _ccp1m0___bit equ 0
667             
668                     ; line_number = 251
669                     ; register _rcsta = 
670  00000018 = _rcsta equ 24
671                     ; line_number = 252
672                     ; bind _spen = _rcsta@7
673  00000018 = _spen___byte equ _rcsta
674  00000007 = _spen___bit equ 7
675                     ; line_number = 253
676                     ; bind _rx9 = _rcsta@6
677  00000018 = _rx9___byte equ _rcsta
678  00000006 = _rx9___bit equ 6
679                     ; line_number = 254
680                     ; bind _sren = _rcsta@5
681  00000018 = _sren___byte equ _rcsta
682  00000005 = _sren___bit equ 5
683                     ; line_number = 255
684                     ; bind _cren = _rcsta@4
685  00000018 = _cren___byte equ _rcsta
686  00000004 = _cren___bit equ 4
687                     ; line_number = 256
688                     ; bind _aden = _rcsta@3
689  00000018 = _aden___byte equ _rcsta
690  00000003 = _aden___bit equ 3
691                     ; # Some other modules use _adden instead of _aden:
692                     ; line_number = 258
693                     ; bind _adden = _rcsta@3
694  00000018 = _adden___byte equ _rcsta
695  00000003 = _adden___bit equ 3
696                     ; line_number = 259
697                     ; bind _ferr = _rcsta@2
698  00000018 = _ferr___byte equ _rcsta
699  00000002 = _ferr___bit equ 2
700                     ; line_number = 260
701                     ; bind _oerr = _rcsta@1
702  00000018 = _oerr___byte equ _rcsta
703  00000001 = _oerr___bit equ 1
704                     ; line_number = 261
705                     ; bind _rx9d = _rcsta@0
706  00000018 = _rx9d___byte equ _rcsta
707  00000000 = _rx9d___bit equ 0
708             
709                     ; line_number = 263
710                     ; register _txreg = 
711  00000019 = _txreg equ 25
712             
713                     ; line_number = 265
714                     ; register _rcreg = 
715  0000001a = _rcreg equ 26
716             
717                     ; line_number = 267
718                     ; register _cmcon = 
719  0000001f = _cmcon equ 31
720                     ; line_number = 268
721                     ; bind _c2out = _cmcon@7
722  0000001f = _c2out___byte equ _cmcon
723  00000007 = _c2out___bit equ 7
724                     ; line_number = 269
725                     ; bind _c1out = _cmcon@6
726  0000001f = _c1out___byte equ _cmcon
727  00000006 = _c1out___bit equ 6
728                     ; line_number = 270
729                     ; bind _c2inv = _cmcon@5
730  0000001f = _c2inv___byte equ _cmcon
731  00000005 = _c2inv___bit equ 5
732                     ; line_number = 271
733                     ; bind _c1inv = _cmcon@4
734  0000001f = _c1inv___byte equ _cmcon
735  00000004 = _c1inv___bit equ 4
736                     ; line_number = 272
737                     ; bind _cis = _cmcon@3
738  0000001f = _cis___byte equ _cmcon
739  00000003 = _cis___bit equ 3
740                     ; line_number = 273
741                     ; bind _cm2 = _cmcon@2
742  0000001f = _cm2___byte equ _cmcon
743  00000002 = _cm2___bit equ 2
744                     ; line_number = 274
745                     ; bind _cm1 = _cmcon@1
746  0000001f = _cm1___byte equ _cmcon
747  00000001 = _cm1___bit equ 1
748                     ; line_number = 275
749                     ; bind _cm0 = _cmcon@0
750  0000001f = _cm0___byte equ _cmcon
751  00000000 = _cm0___bit equ 0
752             
753                     ; # Data bank 1:
754             
755                     ; line_number = 279
756                     ; register _option = 
757  00000081 = _option equ 129
758                     ; line_number = 280
759                     ; bind _rbpu = _option@7
760  00000081 = _rbpu___byte equ _option
761  00000007 = _rbpu___bit equ 7
762                     ; line_number = 281
763                     ; bind _intedg = _option@6
764  00000081 = _intedg___byte equ _option
765  00000006 = _intedg___bit equ 6
766                     ; line_number = 282
767                     ; bind _t0cs = _option@5
768  00000081 = _t0cs___byte equ _option
769  00000005 = _t0cs___bit equ 5
770                     ; line_number = 283
771                     ; bind _t0se = _option@4
772  00000081 = _t0se___byte equ _option
773  00000004 = _t0se___bit equ 4
774                     ; line_number = 284
775                     ; bind _psa = _option@3
776  00000081 = _psa___byte equ _option
777  00000003 = _psa___bit equ 3
778                     ; line_number = 285
779                     ; bind _ps2 = _option@2
780  00000081 = _ps2___byte equ _option
781  00000002 = _ps2___bit equ 2
782                     ; line_number = 286
783                     ; bind _ps1 = _option@1
784  00000081 = _ps1___byte equ _option
785  00000001 = _ps1___bit equ 1
786                     ; line_number = 287
787                     ; bind _ps0 = _option@0
788  00000081 = _ps0___byte equ _option
789  00000000 = _ps0___bit equ 0
790             
791                     ; line_number = 289
792                     ; register _trisa = 
793  00000085 = _trisa equ 133
794                     ; line_number = 290
795                     ; bind _trisa7 = _trisa@7
796  00000085 = _trisa7___byte equ _trisa
797  00000007 = _trisa7___bit equ 7
798                     ; line_number = 291
799                     ; bind _trisa6 = _trisa@6
800  00000085 = _trisa6___byte equ _trisa
801  00000006 = _trisa6___bit equ 6
802                     ; # No _trisa5:
803                     ; line_number = 293
804                     ; bind _trisa4 = _trisa@4
805  00000085 = _trisa4___byte equ _trisa
806  00000004 = _trisa4___bit equ 4
807                     ; line_number = 294
808                     ; bind _trisa3 = _trisa@3
809  00000085 = _trisa3___byte equ _trisa
810  00000003 = _trisa3___bit equ 3
811                     ; line_number = 295
812                     ; bind _trisa2 = _trisa@2
813  00000085 = _trisa2___byte equ _trisa
814  00000002 = _trisa2___bit equ 2
815                     ; line_number = 296
816                     ; bind _trisa1 = _trisa@1
817  00000085 = _trisa1___byte equ _trisa
818  00000001 = _trisa1___bit equ 1
819                     ; line_number = 297
820                     ; bind _trisa0 = _trisa@0
821  00000085 = _trisa0___byte equ _trisa
822  00000000 = _trisa0___bit equ 0
823             
824                     ; line_number = 299
825                     ; register _trisb = 
826  00000086 = _trisb equ 134
827                     ; line_number = 300
828                     ; bind _trisb7 = _trisb@7
829  00000086 = _trisb7___byte equ _trisb
830  00000007 = _trisb7___bit equ 7
831                     ; line_number = 301
832                     ; bind _trisb6 = _trisb@6
833  00000086 = _trisb6___byte equ _trisb
834  00000006 = _trisb6___bit equ 6
835                     ; line_number = 302
836                     ; bind _trisb5 = _trisb@5
837  00000086 = _trisb5___byte equ _trisb
838  00000005 = _trisb5___bit equ 5
839                     ; line_number = 303
840                     ; bind _trisb4 = _trisb@4
841  00000086 = _trisb4___byte equ _trisb
842  00000004 = _trisb4___bit equ 4
843                     ; line_number = 304
844                     ; bind _trisb3 = _trisb@3
845  00000086 = _trisb3___byte equ _trisb
846  00000003 = _trisb3___bit equ 3
847                     ; line_number = 305
848                     ; bind _trisb2 = _trisb@2
849  00000086 = _trisb2___byte equ _trisb
850  00000002 = _trisb2___bit equ 2
851                     ; line_number = 306
852                     ; bind _trisb1 = _trisb@1
853  00000086 = _trisb1___byte equ _trisb
854  00000001 = _trisb1___bit equ 1
855                     ; line_number = 307
856                     ; bind _trisb0 = _trisb@0
857  00000086 = _trisb0___byte equ _trisb
858  00000000 = _trisb0___bit equ 0
859             
860                     ; line_number = 309
861                     ; register _pie1 = 
862  0000008c = _pie1 equ 140
863                     ; line_number = 310
864                     ; bind _eeie7 = _pie1@7
865  0000008c = _eeie7___byte equ _pie1
866  00000007 = _eeie7___bit equ 7
867                     ; line_number = 311
868                     ; bind _cmie = _pie1@6
869  0000008c = _cmie___byte equ _pie1
870  00000006 = _cmie___bit equ 6
871                     ; line_number = 312
872                     ; bind _rcie = _pie1@5
873  0000008c = _rcie___byte equ _pie1
874  00000005 = _rcie___bit equ 5
875                     ; line_number = 313
876                     ; bind _txie = _pie1@4
877  0000008c = _txie___byte equ _pie1
878  00000004 = _txie___bit equ 4
879                     ; line_number = 314
880                     ; bind _ccp1ie = _pie1@2
881  0000008c = _ccp1ie___byte equ _pie1
882  00000002 = _ccp1ie___bit equ 2
883                     ; line_number = 315
884                     ; bind _tmr2ie = _pie1@1
885  0000008c = _tmr2ie___byte equ _pie1
886  00000001 = _tmr2ie___bit equ 1
887                     ; line_number = 316
888                     ; bind _tmr1ie = _pie1@0
889  0000008c = _tmr1ie___byte equ _pie1
890  00000000 = _tmr1ie___bit equ 0
891             
892                     ; line_number = 318
893                     ; register _pcon = 
894  0000008e = _pcon equ 142
895                     ; line_number = 319
896                     ; bind _oscf = _pcon@3
897  0000008e = _oscf___byte equ _pcon
898  00000003 = _oscf___bit equ 3
899                     ; line_number = 320
900                     ; bind _por = _pcon@1
901  0000008e = _por___byte equ _pcon
902  00000001 = _por___bit equ 1
903                     ; line_number = 321
904                     ; bind _bod = _pcon@0
905  0000008e = _bod___byte equ _pcon
906  00000000 = _bod___bit equ 0
907             
908                     ; line_number = 323
909                     ; register _pr2 = 
910  00000092 = _pr2 equ 146
911             
912                     ; line_number = 325
913                     ; register _txsta = 
914  00000098 = _txsta equ 152
915                     ; line_number = 326
916                     ; bind _csrc = _txsta@7
917  00000098 = _csrc___byte equ _txsta
918  00000007 = _csrc___bit equ 7
919                     ; line_number = 327
920                     ; bind _tx9 = _txsta@6
921  00000098 = _tx9___byte equ _txsta
922  00000006 = _tx9___bit equ 6
923                     ; line_number = 328
924                     ; bind _txen = _txsta@5
925  00000098 = _txen___byte equ _txsta
926  00000005 = _txen___bit equ 5
927                     ; line_number = 329
928                     ; bind _sync = _txsta@4
929  00000098 = _sync___byte equ _txsta
930  00000004 = _sync___bit equ 4
931                     ; line_number = 330
932                     ; bind _brgh = _txsta@2
933  00000098 = _brgh___byte equ _txsta
934  00000002 = _brgh___bit equ 2
935                     ; line_number = 331
936                     ; bind _trmt = _txsta@1
937  00000098 = _trmt___byte equ _txsta
938  00000001 = _trmt___bit equ 1
939                     ; line_number = 332
940                     ; bind _tx9d = _txsta@0
941  00000098 = _tx9d___byte equ _txsta
942  00000000 = _tx9d___bit equ 0
943             
944                     ; line_number = 334
945                     ; register _spbrg = 
946  00000099 = _spbrg equ 153
947             
948                     ; line_number = 336
949                     ; register _eedat = 
950  0000009a = _eedat equ 154
951             
952                     ; line_number = 338
953                     ; register _eeadr = 
954  0000009b = _eeadr equ 155
955             
956                     ; line_number = 340
957                     ; register _eecon1 = 
958  0000009c = _eecon1 equ 156
959                     ; line_number = 341
960                     ; bind _wrerr = _eecon1@3
961  0000009c = _wrerr___byte equ _eecon1
962  00000003 = _wrerr___bit equ 3
963                     ; line_number = 342
964                     ; bind _wren = _eecon1@2
965  0000009c = _wren___byte equ _eecon1
966  00000002 = _wren___bit equ 2
967                     ; line_number = 343
968                     ; bind _wr = _eecon1@1
969  0000009c = _wr___byte equ _eecon1
970  00000001 = _wr___bit equ 1
971                     ; line_number = 344
972                     ; bind _rd = _eecon1@0
973  0000009c = _rd___byte equ _eecon1
974  00000000 = _rd___bit equ 0
975             
976                     ; line_number = 346
977                     ; register _eecon2 = 
978  0000009d = _eecon2 equ 157
979             
980                     ; line_number = 348
981                     ; register _vrcon = 
982  0000009f = _vrcon equ 159
983                     ; line_number = 349
984                     ; bind _vren = _vrcon@7
985  0000009f = _vren___byte equ _vrcon
986  00000007 = _vren___bit equ 7
987                     ; line_number = 350
988                     ; bind _vroe = _vrcon@6
989  0000009f = _vroe___byte equ _vrcon
990  00000006 = _vroe___bit equ 6
991                     ; line_number = 351
992                     ; bind _vrr = _vrcon@5
993  0000009f = _vrr___byte equ _vrcon
994  00000005 = _vrr___bit equ 5
995                     ; line_number = 352
996                     ; bind _vr3 = _vrcon@3
997  0000009f = _vr3___byte equ _vrcon
998  00000003 = _vr3___bit equ 3
999                     ; line_number = 353
1000                    ; bind _vr2 = _vrcon@2
1001 0000009f = _vr2___byte equ _vrcon
1002 00000002 = _vr2___bit equ 2
1003                    ; line_number = 354
1004                    ; bind _vr1 = _vrcon@1
1005 0000009f = _vr1___byte equ _vrcon
1006 00000001 = _vr1___bit equ 1
1007                    ; line_number = 355
1008                    ; bind _vr0 = _vrcon@0
1009 0000009f = _vr0___byte equ _vrcon
1010 00000000 = _vr0___bit equ 0
1011            
1012            
1013            
1014                    ; buffer = 'i2chost'
1015                    ; line_number = 17
1016                    ; library _pic16f628 exited
1017            
1018                    ; # The system is running at 16MHz:
1019                    ; line_number = 20
1020                    ; library clock16mhz entered
1021                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1022                    ; # All rights reserved.
1023            
1024                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1025                    ; # and {clocks_per_instruction}.
1026            
1027                    ; # Define processor constants:
1028                    ; buffer = 'clock16mhz'
1029                    ; line_number = 9
1030                    ; constant clock_rate = 16000000
1031 00f42400 = clock_rate equ 16000000
1032                    ; line_number = 10
1033                    ; constant clocks_per_instruction = 4
1034 00000004 = clocks_per_instruction equ 4
1035                    ; line_number = 11
1036                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1037 003d0900 = instruction_rate equ 4000000
1038            
1039            
1040                    ; buffer = 'i2chost'
1041                    ; line_number = 20
1042                    ; library clock16mhz exited
1043                    ; # A microsecond takes 4 cycles at 16MHz:
1044                    ; line_number = 22
1045                    ; constant microsecond = 4
1046 00000004 = microsecond equ 4
1047            
1048                    ; # The library of bus access routines for use by the PIC16F628.
1049                    ; line_number = 25
1050                    ; library rb2bus_pic16f628 entered
1051            
1052                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1053                    ; # All rights reserved.
1054            
1055                    ; # This module provides some procedures for accessing a RoboBricks2
1056                    ; # bus via a UART.  It is speicialized for the PIC16F688.
1057                    ; #
1058                    ; # It defines the following procedure:
1059                    ; #
1060                    ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
1061                    ; #                                for bus access.
1062            
1063                    ; # All other bus access procedures are defined in the {rb2bus} library
1064                    ; # which is accessed below:
1065                    ; buffer = 'rb2bus_pic16f628'
1066                    ; line_number = 16
1067                    ; library rb2bus entered
1068            
1069                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1070                    ; # All rights reserved.
1071            
1072                    ; # This module provides some procedures for accessing a RoboBricks2
1073                    ; # bus via a UART.
1074                    ; #
1075                    ; # This procedure defines the following procedures:
1076                    ; #
1077                    ; # {rb2bus_select_wait}  This procedure waits for the module to become selected
1078                    ; # {rb2bus_deselect}     This procedure causes this module to be deselected.
1079                    ; # {rb2bus_byte_get}     This procedure will get a byte form the bus.
1080                    ; # {rb2bus_byte_put}     This procedure will send a byte to the bus.
1081                    ; #
1082                    ; # The global variable {rb2bus_error} is set to 1 whenever the procedures
1083                    ; # feel like there is a command decoding error.
1084                    ; #
1085                    ; # The way to use these procedures is quite as follows:
1086                    ; #
1087                    ; #    # Comamnd byte variable:
1088                    ; #    local command byte
1089                    ; #
1090                    ; #    # Other initialize code goes here:
1091                    ; #
1092                    ; #    # Process commands from bus master:
1093                    ; #    loop_forever
1094                    ; #        rb2bus_error := _true
1095                    ; #	 while rb2bus_error
1096                    ; #	     call rb2bus_select_wait()
1097                    ; #	     command := rb2bus_byte_get()
1098                    ; #
1099                    ; #        # Decode command:
1100                    ; #	 switch command >> 6
1101                    ; #	   ...
1102                    ; #             case 5:
1103                    ; #	        # 0000 0101 (Foo command):
1104                    ; #	          if !rb2bus_error
1105                    ; #		      # Do foo command:
1106                    ; #
1107                    ; # The key concept behind these procedures is to make command
1108                    ; # decoding for the slave module easy.  If the slave module
1109                    ; # is in the middle of command decoding and the master suddenly
1110                    ; # sends out a module select command, we need to gracefully recover
1111                    ; # from the problem.  A command should only be executed if
1112                    ; # {rb2bus_error} is not set.  If {rb2bus_error} is set, we want
1113                    ; # to gracefully get back to the beginning of the loop without
1114                    ; # doing any damage.  Once {rb2bus_error} is set, all calls to
1115                    ; # {rb2bus_byte_get} return 0 and all calls to {rb2bus_byte_put}
1116                    ; # do nothing.  At the beginning of the loop, {rb2bus_error} is
1117                    ; # cleared by the {rb2bus_select_wait}() procedure and we have
1118                    ; # recovered from the situation.
1119            
1120                    ; buffer = 'rb2bus'
1121                    ; line_number = 54
1122                    ; library rb2_constants entered
1123            
1124                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
1125                    ; # All rights reserved.
1126            
1127                    ; buffer = 'rb2_constants'
1128                    ; line_number = 6
1129                    ; constant rb2_ok = 0xa5
1130 000000a5 = rb2_ok equ 165
1131            
1132                    ; line_number = 8
1133                    ; constant rb2_common_address_set = 0xfc
1134 000000fc = rb2_common_address_set equ 252
1135                    ; line_number = 9
1136                    ; constant rb2_common_id_next = 0xfd
1137 000000fd = rb2_common_id_next equ 253
1138                    ; line_number = 10
1139                    ; constant rb2_common_id_start = 0xfe
1140 000000fe = rb2_common_id_start equ 254
1141                    ; line_number = 11
1142                    ; constant rb2_common_deselect = 0xff
1143 000000ff = rb2_common_deselect equ 255
1144            
1145                    ; line_number = 13
1146                    ; constant rb2_laser1_address = 1
1147 00000001 = rb2_laser1_address equ 1
1148            
1149                    ; line_number = 15
1150                    ; constant rb2_minimotor2_address = 2
1151 00000002 = rb2_minimotor2_address equ 2
1152                    ; line_number = 16
1153                    ; constant rb2_midimotor2_address = 3
1154 00000003 = rb2_midimotor2_address equ 3
1155                    ; line_number = 17
1156                    ; constant rb2_motor0_speed_get = 0
1157 00000000 = rb2_motor0_speed_get equ 0
1158                    ; line_number = 18
1159                    ; constant rb2_motor0_speed_set = 1
1160 00000001 = rb2_motor0_speed_set equ 1
1161                    ; line_number = 19
1162                    ; constant rb2_motor1_speed_get = 2
1163 00000002 = rb2_motor1_speed_get equ 2
1164                    ; line_number = 20
1165                    ; constant rb2_motor1_speed_set = 3
1166 00000003 = rb2_motor1_speed_set equ 3
1167                    ; line_number = 21
1168                    ; constant rb2_duty_cycle_get = 4
1169 00000004 = rb2_duty_cycle_get equ 4
1170                    ; line_number = 22
1171                    ; constant rb2_duty_cycle_set = 8
1172 00000008 = rb2_duty_cycle_set equ 8
1173            
1174                    ; line_number = 24
1175                    ; constant rb2_irdistance2_address = 4
1176 00000004 = rb2_irdistance2_address equ 4
1177                    ; line_number = 25
1178                    ; constant rb2_irdistance2_raw0_get = 0
1179 00000000 = rb2_irdistance2_raw0_get equ 0
1180                    ; line_number = 26
1181                    ; constant rb2_irdistance2_raw1_get = 1
1182 00000001 = rb2_irdistance2_raw1_get equ 1
1183                    ; line_number = 27
1184                    ; constant rb2_irdistance2_smooth0_get = 2
1185 00000002 = rb2_irdistance2_smooth0_get equ 2
1186                    ; line_number = 28
1187                    ; constant rb2_irdistance2_smooth1_get = 3
1188 00000003 = rb2_irdistance2_smooth1_get equ 3
1189                    ; line_number = 29
1190                    ; constant rb2_irdistance2_linear0_get = 4
1191 00000004 = rb2_irdistance2_linear0_get equ 4
1192                    ; line_number = 30
1193                    ; constant rb2_irdistance2_linear1_get = 6
1194 00000006 = rb2_irdistance2_linear1_get equ 6
1195            
1196                    ; line_number = 32
1197                    ; constant rb2_shaft2_address = 5
1198 00000005 = rb2_shaft2_address equ 5
1199                    ; line_number = 33
1200                    ; constant rb2_shaft2_count_latch = 0
1201 00000000 = rb2_shaft2_count_latch equ 0
1202                    ; line_number = 34
1203                    ; constant rb2_shaft2_count_clear = 1
1204 00000001 = rb2_shaft2_count_clear equ 1
1205                    ; line_number = 35
1206                    ; constant rb2_shaft2_shaft0_high_get = 2
1207 00000002 = rb2_shaft2_shaft0_high_get equ 2
1208                    ; line_number = 36
1209                    ; constant rb2_shaft2_shaft1_high_get = 3
1210 00000003 = rb2_shaft2_shaft1_high_get equ 3
1211                    ; line_number = 37
1212                    ; constant rb2_shaft2_continue_get = 4
1213 00000004 = rb2_shaft2_continue_get equ 4
1214                    ; line_number = 38
1215                    ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
1216 00000004 = rb2_shaft2_shaft0_low_get equ 4
1217                    ; line_number = 39
1218                    ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
1219 00000004 = rb2_shaft2_shaft1_low_get equ 4
1220                    ; line_number = 40
1221                    ; constant rb2_shaft2_x_get = 0x10
1222 00000010 = rb2_shaft2_x_get equ 16
1223                    ; line_number = 41
1224                    ; constant rb2_shaft2_y_get = 0x11
1225 00000011 = rb2_shaft2_y_get equ 17
1226                    ; line_number = 42
1227                    ; constant rb2_shaft2_bearing16_get = 0x12
1228 00000012 = rb2_shaft2_bearing16_get equ 18
1229                    ; line_number = 43
1230                    ; constant rb2_shaft2_bearing8_get = 0x13
1231 00000013 = rb2_shaft2_bearing8_get equ 19
1232                    ; line_number = 44
1233                    ; constant rb2_shaft2_target_x_get = 0x14
1234 00000014 = rb2_shaft2_target_x_get equ 20
1235                    ; line_number = 45
1236                    ; constant rb2_shaft2_target_y_get = 0x15
1237 00000015 = rb2_shaft2_target_y_get equ 21
1238                    ; line_number = 46
1239                    ; constant rb2_shaft2_target_bearing16_get = 0x16
1240 00000016 = rb2_shaft2_target_bearing16_get equ 22
1241                    ; line_number = 47
1242                    ; constant rb2_shaft2_target_bearing8_get = 0x17
1243 00000017 = rb2_shaft2_target_bearing8_get equ 23
1244                    ; line_number = 48
1245                    ; constant rb2_shaft2_target_distance_get = 0x18
1246 00000018 = rb2_shaft2_target_distance_get equ 24
1247                    ; line_number = 49
1248                    ; constant rb2_shaft2_wheel_spacing_get = 0x19
1249 00000019 = rb2_shaft2_wheel_spacing_get equ 25
1250                    ; line_number = 50
1251                    ; constant rb2_shaft2_wheel_ticks_get = 0x1a
1252 0000001a = rb2_shaft2_wheel_ticks_get equ 26
1253                    ; line_number = 51
1254                    ; constant rb2_shaft2_wheel_diameter_get = 0x1b
1255 0000001b = rb2_shaft2_wheel_diameter_get equ 27
1256                    ; line_number = 52
1257                    ; constant rb2_shaft2_x_set = 0x20
1258 00000020 = rb2_shaft2_x_set equ 32
1259                    ; line_number = 53
1260                    ; constant rb2_shaft2_y_set = 0x21
1261 00000021 = rb2_shaft2_y_set equ 33
1262                    ; line_number = 54
1263                    ; constant rb2_shaft2_bearing16_set = 0x22
1264 00000022 = rb2_shaft2_bearing16_set equ 34
1265                    ; line_number = 55
1266                    ; constant rb2_shaft2_navigation_latch = 0x23
1267 00000023 = rb2_shaft2_navigation_latch equ 35
1268                    ; line_number = 56
1269                    ; constant rb2_shaft2_target_x_set = 0x24
1270 00000024 = rb2_shaft2_target_x_set equ 36
1271                    ; line_number = 57
1272                    ; constant rb2_shaft2_target_y_set = 0x25
1273 00000025 = rb2_shaft2_target_y_set equ 37
1274                    ; line_number = 58
1275                    ; constant rb2_shaft2_wheel_spacing_set = 0x29
1276 00000029 = rb2_shaft2_wheel_spacing_set equ 41
1277                    ; line_number = 59
1278                    ; constant rb2_shaft2_wheel_ticks_set = 0x2a
1279 0000002a = rb2_shaft2_wheel_ticks_set equ 42
1280                    ; line_number = 60
1281                    ; constant rb2_shaft2_wheel_diameter_set = 0x2b
1282 0000002b = rb2_shaft2_wheel_diameter_set equ 43
1283            
1284            
1285                    ; line_number = 63
1286                    ; constant rb2_orient5_address = 6
1287 00000006 = rb2_orient5_address equ 6
1288            
1289                    ; line_number = 65
1290                    ; constant rb2_compass8_address = 7
1291 00000007 = rb2_compass8_address equ 7
1292            
1293                    ; line_number = 67
1294                    ; constant rb2_io8_address = 8
1295 00000008 = rb2_io8_address equ 8
1296                    ; line_number = 68
1297                    ; constant rb2_io8_digital8_get = 0
1298 00000000 = rb2_io8_digital8_get equ 0
1299                    ; line_number = 69
1300                    ; constant rb2_io8_digital8_set = 1
1301 00000001 = rb2_io8_digital8_set equ 1
1302                    ; line_number = 70
1303                    ; constant rb2_io8_direction_get = 2
1304 00000002 = rb2_io8_direction_get equ 2
1305                    ; line_number = 71
1306                    ; constant rb2_io8_direction_set = 3
1307 00000003 = rb2_io8_direction_set equ 3
1308                    ; line_number = 72
1309                    ; constant rb2_io8_analog_mask_get = 4
1310 00000004 = rb2_io8_analog_mask_get equ 4
1311                    ; line_number = 73
1312                    ; constant rb2_io8_analog_mask_set = 5
1313 00000005 = rb2_io8_analog_mask_set equ 5
1314                    ; line_number = 74
1315                    ; constant rb2_io8_analog8_get = 0x10
1316 00000010 = rb2_io8_analog8_get equ 16
1317                    ; line_number = 75
1318                    ; constant rb2_io8_analog10_get = 0x18
1319 00000018 = rb2_io8_analog10_get equ 24
1320                    ; line_number = 76
1321                    ; constant rb2_low_set = 0x20
1322 00000020 = rb2_low_set equ 32
1323                    ; line_number = 77
1324                    ; constant rb2_high_set = 0x30
1325 00000030 = rb2_high_set equ 48
1326            
1327                    ; line_number = 79
1328                    ; constant rb2_sonar2_address = 9
1329 00000009 = rb2_sonar2_address equ 9
1330            
1331                    ; line_number = 81
1332                    ; constant rb2_voice1_address = 10
1333 0000000a = rb2_voice1_address equ 10
1334            
1335                    ; line_number = 83
1336                    ; constant rb2_servo4_address = 11
1337 0000000b = rb2_servo4_address equ 11
1338                    ; line_number = 84
1339                    ; constant rb2_servo4_servo0 = 0
1340 00000000 = rb2_servo4_servo0 equ 0
1341                    ; line_number = 85
1342                    ; constant rb2_servo4_servo1 = 1
1343 00000001 = rb2_servo4_servo1 equ 1
1344                    ; line_number = 86
1345                    ; constant rb2_servo4_servo2 = 2
1346 00000002 = rb2_servo4_servo2 equ 2
1347                    ; line_number = 87
1348                    ; constant rb2_servo4_servo3 = 3
1349 00000003 = rb2_servo4_servo3 equ 3
1350                    ; line_number = 88
1351                    ; constant rb2_servo4_quick_set = 0
1352 00000000 = rb2_servo4_quick_set equ 0
1353                    ; line_number = 89
1354                    ; constant rb2_servo4_quick_low = 0
1355 00000000 = rb2_servo4_quick_low equ 0
1356                    ; line_number = 90
1357                    ; constant rb2_servo4_quick_center = 40
1358 00000028 = rb2_servo4_quick_center equ 40
1359                    ; line_number = 91
1360                    ; constant rb2_servo4_quick_high = 0x7c
1361 0000007c = rb2_servo4_quick_high equ 124
1362                    ; line_number = 92
1363                    ; constant rb2_servo4_high_low_set = 0x80
1364 00000080 = rb2_servo4_high_low_set equ 128
1365                    ; line_number = 93
1366                    ; constant rb2_servo4_short_high_low_set = 0x84
1367 00000084 = rb2_servo4_short_high_low_set equ 132
1368                    ; line_number = 94
1369                    ; constant rb2_servo4_high_set = 0x88
1370 00000088 = rb2_servo4_high_set equ 136
1371                    ; line_number = 95
1372                    ; constant rb2_servo4_low_set = 0x8c
1373 0000008c = rb2_servo4_low_set equ 140
1374                    ; line_number = 96
1375                    ; constant rb2_servo4_enables_set = 0x90
1376 00000090 = rb2_servo4_enables_set equ 144
1377                    ; line_number = 97
1378                    ; constant rb2_servo4_enable0 = 1
1379 00000001 = rb2_servo4_enable0 equ 1
1380                    ; line_number = 98
1381                    ; constant rb2_servo4_enable1 = 2
1382 00000002 = rb2_servo4_enable1 equ 2
1383                    ; line_number = 99
1384                    ; constant rb2_servo4_enable2 = 4
1385 00000004 = rb2_servo4_enable2 equ 4
1386                    ; line_number = 100
1387                    ; constant rb2_servo4_enable3 = 8
1388 00000008 = rb2_servo4_enable3 equ 8
1389                    ; line_number = 101
1390                    ; constant rb2_servo4_enable_all = 0xf
1391 0000000f = rb2_servo4_enable_all equ 15
1392                    ; line_number = 102
1393                    ; constant rb2_servo4_enable_none = 0
1394 00000000 = rb2_servo4_enable_none equ 0
1395                    ; line_number = 103
1396                    ; constant rb2_servo4_high_get = 0xa0
1397 000000a0 = rb2_servo4_high_get equ 160
1398                    ; line_number = 104
1399                    ; constant rb2_servo4_low_get = 0xa4
1400 000000a4 = rb2_servo4_low_get equ 164
1401                    ; line_number = 105
1402                    ; constant rb2_servo4_enables_get = 0xa8
1403 000000a8 = rb2_servo4_enables_get equ 168
1404            
1405                    ; line_number = 107
1406                    ; constant rb2_controller28_address = 28
1407 0000001c = rb2_controller28_address equ 28
1408            
1409                    ; line_number = 109
1410                    ; constant rb2_lcd32_address = 32
1411 00000020 = rb2_lcd32_address equ 32
1412                    ; line_number = 110
1413                    ; constant rb2_lcd32_new_line = 0xa
1414 0000000a = rb2_lcd32_new_line equ 10
1415                    ; line_number = 111
1416                    ; constant rb2_lcd32_form_feed = 0xc
1417 0000000c = rb2_lcd32_form_feed equ 12
1418                    ; line_number = 112
1419                    ; constant rb2_lcd32_carriage_return = 0xd
1420 0000000d = rb2_lcd32_carriage_return equ 13
1421                    ; line_number = 113
1422                    ; constant rb2_lcd32_column_set = 0x20
1423 00000020 = rb2_lcd32_column_set equ 32
1424            
1425            
1426                    ; buffer = 'rb2bus'
1427                    ; line_number = 54
1428                    ; library rb2_constants exited
1429                    ; line_number = 55
1430                    ; library rb2bus_globals entered
1431            
1432                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1433                    ; # All rights reserved.
1434            
1435                    ; # These are the global variables used by both the {rb2bus} and
1436                    ; # the various {rb2bus_picXXXX} libraries.  Poll based firmware
1437                    ; # uses both libraries, whereas interrupt driven software only
1438                    ; # uses the {rb2bus_picXXX} libraries.
1439            
1440                    ; buffer = 'rb2bus_globals'
1441                    ; line_number = 11
1442                    ; global rb2bus_selected bit	# 
1443 0000006f = rb2bus_selected___byte equ globals___0+79
1444 00000000 = rb2bus_selected___bit equ 0
1445                    ; line_number = 12
1446                    ; global rb2bus_error bit		# Global error bit
1447 0000006f = rb2bus_error___byte equ globals___0+79
1448 00000001 = rb2bus_error___bit equ 1
1449                    ; line_number = 13
1450                    ; global rb2bus_address byte	# Bus address to respond to
1451 00000020 = rb2bus_address equ globals___0
1452                    ; line_number = 14
1453                    ; global rb2bus_index byte	# Index into id information
1454 00000021 = rb2bus_index equ globals___0+1
1455            
1456            
1457                    ; buffer = 'rb2bus'
1458                    ; line_number = 55
1459                    ; library rb2bus_globals exited
1460            
1461                    ; Delaying code generation for procedure  rb2bus_select_wait
1462                    ; Delaying code generation for procedure  rb2bus_deselect
1463                    ; Delaying code generation for procedure  rb2bus_byte_get
1464                    ; Delaying code generation for procedure  rb2bus_byte_put
1465                    ; Delaying code generation for procedure  rb2bus_command
1466            
1467                    ; buffer = 'rb2bus_pic16f628'
1468                    ; line_number = 16
1469                    ; library rb2bus exited
1470            
1471                    ; # Baud_Rate = Fosc / (16(X+1))
1472                    ; # 16 * (X+1) = Fosc/Baud_Rate
1473                    ; # X+1 = Fosc/(16*Baud_Rate)
1474                    ; # X = Fosc/(16*Baud_rate) - 1
1475            
1476                    ; line_number = 23
1477                    ; constant baud_rate_500k = 500000
1478 0007a120 = baud_rate_500k equ 500000
1479                    ; line_number = 24
1480                    ; constant spbrg_500k = clock_rate / (16 * baud_rate_500k) - 1
1481 00000001 = spbrg_500k equ 1
1482            
1483                    ; Delaying code generation for procedure  rb2bus_initialize
1484                    ; Delaying code generation for procedure  rb2bus_eedata_read
1485                    ; Delaying code generation for procedure  rb2bus_eedata_write
1486            
1487                    ; buffer = 'i2chost'
1488                    ; line_number = 25
1489                    ; library rb2bus_pic16f628 exited
1490            
1491                    ; # This module uses a 16MHz ceramic resonator; hence fosc = hs:
1492            
1493                    ; # Port stuff:
1494            
1495                    ; line_number = 32
1496                    ; constant trisb_mask = 0x30
1497 00000030 = trisb_mask equ 48
1498                    ; line_number = 33
1499                    ; constant db47_mask = 0xf
1500 0000000f = db47_mask equ 15
1501            
1502                    ; line_number = 35
1503                    ; package dip
1504                    ; line_number = 36
1505                    ; pin 1 = ra2_out, name = db2
1506 00000005 = db2___byte equ _porta
1507 00000002 = db2___bit equ 2
1508                    ; line_number = 37
1509                    ;  pin 2 = ra3_out, name = db3
1510 00000005 = db3___byte equ _porta
1511 00000003 = db3___bit equ 3
1512                    ; line_number = 38
1513                    ;  pin 3 = ra4_open_collector, name = e
1514 00000005 = e___byte equ _porta
1515 00000004 = e___bit equ 4
1516                    ; line_number = 39
1517                    ;  pin 4 = ra5_in, name = lines34
1518 00000005 = lines34___byte equ _porta
1519 00000005 = lines34___bit equ 5
1520                    ; line_number = 40
1521                    ;  pin 5 = ground
1522                    ; line_number = 41
1523                    ;  pin 6 = rb0_out, name = rs
1524 00000006 = rs___byte equ _portb
1525 00000000 = rs___bit equ 0
1526                    ; line_number = 42
1527                    ;  pin 7 = rx
1528                    ; line_number = 43
1529                    ;  pin 8 = tx
1530                    ; line_number = 44
1531                    ;  pin 9 = rb3_out, name = rw
1532 00000006 = rw___byte equ _portb
1533 00000003 = rw___bit equ 3
1534                    ; line_number = 45
1535                    ;  pin 10 = rb4_out, name = db4
1536 00000006 = db4___byte equ _portb
1537 00000004 = db4___bit equ 4
1538                    ; line_number = 46
1539                    ;  pin 11 = rb5_out, name = db5
1540 00000006 = db5___byte equ _portb
1541 00000005 = db5___bit equ 5
1542                    ; line_number = 47
1543                    ;  pin 12 = rb6_out, name = db6
1544 00000006 = db6___byte equ _portb
1545 00000006 = db6___bit equ 6
1546                    ; line_number = 48
1547                    ;  pin 13 = rb7_out, name = db7
1548 00000006 = db7___byte equ _portb
1549 00000006 = db7___bit equ 6
1550                    ; line_number = 49
1551                    ;  pin 14 = power_supply
1552                    ; line_number = 50
1553                    ;  pin 15 = osc2
1554                    ; line_number = 51
1555                    ;  pin 16 = osc1
1556                    ; line_number = 52
1557                    ;  pin 17 = ra0_out, name = db0
1558 00000005 = db0___byte equ _porta
1559 00000000 = db0___bit equ 0
1560                    ; line_number = 53
1561                    ;  pin 18 = ra1_out, name = db1
1562 00000005 = db1___byte equ _porta
1563 00000001 = db1___bit equ 1
1564            
1565                    ; line_number = 55
1566                    ; constant line_mask = 3
1567 00000003 = line_mask equ 3
1568                    ; line_number = 56
1569                    ; constant column_mask = 0xf
1570 0000000f = column_mask equ 15
1571                    ; line_number = 57
1572                    ; constant cursor_mode_mask = 3
1573 00000003 = cursor_mode_mask equ 3
1574            
1575                    ; line_number = 59
1576                    ; constant tmr0_prescale = 32
1577 00000020 = tmr0_prescale equ 32
1578                    ; # Spec. sheet says 1.53ms.  Sometimes a little more is required;
1579                    ; # hence use 1.6ms
1580                    ; line_number = 62
1581                    ; constant big_delay = 1600 * microsecond / tmr0_prescale + 1
1582 000000c9 = big_delay equ 201
1583                    ; line_number = 63
1584                    ; constant standard_delay = 39 * microsecond / tmr0_prescale + 1
1585 00000005 = standard_delay equ 5
1586                    ; line_number = 64
1587                    ; constant other_delay = 43 * microsecond / tmr0_prescale + 1
1588 00000006 = other_delay equ 6
1589            
1590                    ; line_number = 66
1591                    ; constant queue_size = 32
1592 00000020 = queue_size equ 32
1593                    ; line_number = 67
1594                    ; constant queue_mask = queue_size - 1
1595 0000001f = queue_mask equ 31
1596                    ; line_number = 68
1597                    ; global queue[queue_size] array[byte]
1598 0000002a = queue equ globals___0+10
1599                    ; line_number = 69
1600                    ; global processed byte
1601 0000004a = processed equ globals___0+42
1602                    ; line_number = 70
1603                    ; global available byte
1604 0000004b = available equ globals___0+43
1605            
1606                    ; line_number = 72
1607                    ; global cursor byte
1608 0000004c = cursor equ globals___0+44
1609                    ; line_number = 73
1610                    ; global cursor_pending bit
1611 0000006f = cursor_pending___byte equ globals___0+79
1612 00000004 = cursor_pending___bit equ 4
1613            
1614                    ; line_number = 75
1615                    ;info   75, 0
1616                    ; procedure main
1617   0000 :   main:
1618                    ; Initialize some registers
1619 0000 3007          movlw   7
1620 0001 009f          movwf   _cmcon
1621 0002 3020          movlw   32
1622 0003 1683          bsf     __rp0___byte, __rp0___bit
1623 0004 0085          movwf   _trisa
1624 0005 3006          movlw   6
1625 0006 0086          movwf   _trisb
1626                    ; arguments_none
1627                    ; line_number = 77
1628                    ;  returns_nothing
1629            
1630                    ; line_number = 79
1631                    ;  local command byte
1632 0000004d = main__command equ globals___0+45
1633                    ; line_number = 80
1634                    ;  local temporary byte
1635 0000004e = main__temporary equ globals___0+46
1636                    ; line_number = 81
1637                    ;  local id_index byte
1638 0000004f = main__id_index equ globals___0+47
1639            
1640                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX)
1641                    ; line_number = 83
1642                    ;  call rb2bus_initialize(32)
1643                    ;info   83, 7
1644 0007 3020          movlw   32
1645 0008 1283          bcf     __rp0___byte, __rp0___bit
1646 0009 21f4          call    rb2bus_initialize
1647            
1648                    ; # Set up Timer0:
1649                    ; # Load {_option} register:
1650                    ; # {_rbpu}=0, {_intedg}=0, {_t0cs}=0 {_t0se}=0, _{psa}=0, and
1651                    ; # {_ps#}=100 (i.e. 1:32 prescale):
1652                    ; line_number = 89
1653                    ;  _option := 4
1654                    ;info   89, 10
1655 000a 3004          movlw   4
1656 000b 1683          bsf     __rp0___byte, __rp0___bit
1657 000c 0081          movwf   _option
1658                    ; line_number = 90
1659                    ;  _t0if := _false
1660                    ;info   90, 13
1661 000d 110b          bcf     _t0if___byte, _t0if___bit
1662                    ; line_number = 91
1663                    ;  _t0ie := _false
1664                    ;info   91, 14
1665 000e 128b          bcf     _t0ie___byte, _t0ie___bit
1666                    ; line_number = 92
1667                    ;  _tmr0 := 0
1668                    ;info   92, 15
1669 000f 1283          bcf     __rp0___byte, __rp0___bit
1670 0010 0181          clrf    _tmr0
1671            
1672                    ; line_number = 94
1673                    ;  id_index := 0
1674                    ;info   94, 17
1675 0011 01cf          clrf    main__id_index
1676            
1677                    ; # Initialize the LCD:
1678                    ; line_number = 97
1679                    ;  call lcd_init()
1680                    ;info   97, 18
1681 0012 20a8          call    lcd_init
1682            
1683                    ; # Output the message:
1684                    ; line_number = 100
1685                    ;  call line_put(0, '1')
1686                    ;info   100, 19
1687 0013 01d0          clrf    line_put__new_line
1688 0014 3031          movlw   49
1689 0015 206b          call    line_put
1690                    ; line_number = 101
1691                    ;  call line_put(1, '2')
1692                    ;info   101, 22
1693 0016 3001          movlw   1
1694 0017 00d0          movwf   line_put__new_line
1695 0018 3032          movlw   50
1696 0019 206b          call    line_put
1697                    ; line_number = 102
1698                    ;  call line_put(2, '3')
1699                    ;info   102, 26
1700 001a 3002          movlw   2
1701 001b 00d0          movwf   line_put__new_line
1702 001c 3033          movlw   51
1703 001d 206b          call    line_put
1704                    ; line_number = 103
1705                    ;  call line_put(3, '4')
1706                    ;info   103, 30
1707 001e 3003          movlw   3
1708 001f 00d0          movwf   line_put__new_line
1709 0020 3034          movlw   52
1710 0021 206b          call    line_put
1711            
1712                    ; line_number = 105
1713                    ;  call lcd_cursor_set(0)
1714                    ;info   105, 34
1715 0022 3000          movlw   0
1716 0023 2085          call    lcd_cursor_set
1717            
1718                    ; line_number = 107
1719                    ;  cursor := 0
1720                    ;info   107, 36
1721 0024 01cc          clrf    cursor
1722                    ; line_number = 108
1723                    ;  cursor_pending := _false
1724                    ;info   108, 37
1725 0025 126f          bcf     cursor_pending___byte, cursor_pending___bit
1726                    ; line_number = 109
1727                    ;  available := 0
1728                    ;info   109, 38
1729 0026 01cb          clrf    available
1730                    ; line_number = 110
1731                    ;  processed := 0
1732                    ;info   110, 39
1733 0027 01ca          clrf    processed
1734            
1735                    ; line_number = 112
1736                    ;  loop_forever start
1737   0028 :   main__1:
1738                    ; # Make sure that we have been selected:
1739                    ; line_number = 114
1740                    ;  rb2bus_error := _true
1741                    ;info   114, 40
1742 0028 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
1743                    ; line_number = 115
1744                    ;  while rb2bus_error start
1745   0029 :   main__2:
1746                    ;info   115, 41
1747                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
1748                    ; No 1TEST: true.size=4 false.size=0
1749                    ; No 2TEST: true.size=4 false.size=0
1750                    ; 1GOTO: Single test with GOTO
1751 0029 1cef          btfss   rb2bus_error___byte, rb2bus_error___bit
1752 002a 282f          goto    main__3
1753                    ; line_number = 116
1754                    ; call rb2bus_select_wait()
1755                    ;info   116, 43
1756 002b 2155          call    rb2bus_select_wait
1757                    ; line_number = 117
1758                    ;  command := rb2bus_byte_get()
1759                    ;info   117, 44
1760 002c 2174          call    rb2bus_byte_get
1761 002d 00cd          movwf   main__command
1762            
1763 002e 2829          goto    main__2
1764                    ; Recombine size1 = 0 || size2 = 0
1765   002f :   main__3:
1766                    ; line_number = 115
1767                    ;  while rb2bus_error done
1768                    ; # Dispatch on the command:
1769                    ; line_number = 120
1770                    ;  switch command >> 6 start
1771                    ;info   120, 47
1772                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
1773 002f 3000          movlw   main__16>>8
1774 0030 008a          movwf   __pclath
1775 0000005d = main__17 equ globals___0+61
1776 0031 0e4d          swapf   main__command,w
1777 0032 00dd          movwf   main__17
1778 0033 0cdd          rrf     main__17,f
1779 0034 0c5d          rrf     main__17,w
1780 0035 3903          andlw   3
1781                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
1782 0036 3e38          addlw   main__16
1783 0037 0082          movwf   __pcl
1784                    ; page_group 4
1785   0038 :   main__16:
1786 0038 283c          goto    main__14
1787 0039 283c          goto    main__14
1788 003a 283c          goto    main__14
1789 003b 283f          goto    main__15
1790                    ; line_number = 121
1791                    ; case 0, 1, 2
1792   003c :   main__14:
1793                    ; line_number = 122
1794                    ; call enqueue(command)
1795                    ;info   122, 60
1796 003c 084d          movf    main__command,w
1797 003d 2094          call    enqueue
1798 003e 286a          goto    main__18
1799                    ; line_number = 123
1800                    ; case 3
1801   003f :   main__15:
1802                    ; line_number = 124
1803                    ; switch (command >> 3) & 7 start
1804                    ;info   124, 63
1805                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
1806 003f 3000          movlw   main__11>>8
1807 0040 008a          movwf   __pclath
1808 0000005d = main__12 equ globals___0+61
1809 0041 0c4d          rrf     main__command,w
1810 0042 00dd          movwf   main__12
1811 0043 0cdd          rrf     main__12,f
1812 0044 0c5d          rrf     main__12,w
1813 0045 3907          andlw   7
1814                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
1815 0046 3e48          addlw   main__11
1816 0047 0082          movwf   __pcl
1817                    ; page_group 8
1818   0048 :   main__11:
1819 0048 286a          goto    main__13
1820 0049 286a          goto    main__13
1821 004a 286a          goto    main__13
1822 004b 286a          goto    main__13
1823 004c 286a          goto    main__13
1824 004d 286a          goto    main__13
1825 004e 286a          goto    main__13
1826 004f 2850          goto    main__10
1827                    ; line_number = 125
1828                    ; case 7
1829   0050 :   main__10:
1830                    ; line_number = 126
1831                    ; switch command & 7 start
1832                    ;info   126, 80
1833                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
1834 0050 3000          movlw   main__8>>8
1835 0051 008a          movwf   __pclath
1836 0052 3007          movlw   7
1837 0053 054d          andwf   main__command,w
1838                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
1839 0054 3e56          addlw   main__8
1840 0055 0082          movwf   __pcl
1841                    ; page_group 8
1842   0056 :   main__8:
1843 0056 286a          goto    main__9
1844 0057 286a          goto    main__9
1845 0058 286a          goto    main__9
1846 0059 286a          goto    main__9
1847 005a 286a          goto    main__9
1848 005b 285e          goto    main__5
1849 005c 2867          goto    main__6
1850 005d 2869          goto    main__7
1851                    ; line_number = 127
1852                    ; case 5
1853   005e :   main__5:
1854                    ; # 1111 1101 (Id_next):
1855                    ; line_number = 129
1856                    ;  if id_index < id.size start
1857                    ;info   129, 94
1858 005e 3015          movlw   21
1859 005f 024f          subwf   main__id_index,w
1860                    ; =>bit_code_emit@symbol(): sym=__c
1861                    ; No 1TEST: true.size=0 false.size=4
1862                    ; No 2TEST: true.size=0 false.size=4
1863                    ; 1GOTO: Single test with GOTO
1864 0060 1803          btfsc   __c___byte, __c___bit
1865 0061 2866          goto    main__4
1866                    ; line_number = 130
1867                    ; call rb2bus_byte_put(id[id_index])
1868                    ;info   130, 98
1869 0062 084f          movf    main__id_index,w
1870 0063 213a          call    id
1871 0064 2196          call    rb2bus_byte_put
1872                    ; line_number = 131
1873                    ;  id_index := id_index + 1
1874                    ;info   131, 101
1875 0065 0acf          incf    main__id_index,f
1876   0066 :   main__4:
1877                    ; Recombine size1 = 0 || size2 = 0
1878                    ; line_number = 129
1879                    ;  if id_index < id.size done
1880 0066 286a          goto    main__9
1881                    ; line_number = 132
1882                    ; case 6
1883   0067 :   main__6:
1884                    ; # 1111 1110 (Id_start):
1885                    ; line_number = 134
1886                    ;  id_index := 0
1887                    ;info   134, 103
1888 0067 01cf          clrf    main__id_index
1889 0068 286a          goto    main__9
1890                    ; line_number = 135
1891                    ; case 7
1892   0069 :   main__7:
1893                    ; # 1111 1111 (Deselect):
1894                    ; line_number = 137
1895                    ;  call rb2bus_deselect()
1896                    ;info   137, 105
1897 0069 2172          call    rb2bus_deselect
1898            
1899            
1900   006a :   main__9:
1901                    ; line_number = 126
1902                    ; switch command & 7 done
1903   006a :   main__13:
1904                    ; line_number = 124
1905                    ; switch (command >> 3) & 7 done
1906   006a :   main__18:
1907                    ; line_number = 120
1908                    ;  switch command >> 6 done
1909                    ; line_number = 112
1910                    ;  loop_forever wrap-up
1911 006a 2828          goto    main__1
1912                    ; line_number = 112
1913                    ;  loop_forever done
1914                    ; delay after procedure statements=non-uniform
1915            
1916            
1917            
1918            
1919                    ; line_number = 140
1920                    ;info   140, 107
1921                    ; procedure line_put
1922   006b :   line_put:
1923                    ; Last argument is sitting in W; save into argument variable
1924 006b 00d1          movwf   line_put__character
1925                    ; delay=4294967295
1926                    ; line_number = 141
1927                    ; argument new_line byte
1928 00000050 = line_put__new_line equ globals___0+48
1929                    ; line_number = 142
1930                    ; argument character byte
1931 00000051 = line_put__character equ globals___0+49
1932                    ; line_number = 143
1933                    ;  returns_nothing
1934            
1935                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
1936                    ; line_number = 145
1937                    ;  call lcd_cursor_set(new_line << 4)
1938                    ;info   145, 108
1939 0000005e = line_put__1 equ globals___0+62
1940 006c 0e50          swapf   line_put__new_line,w
1941 006d 39f0          andlw   240
1942 006e 2085          call    lcd_cursor_set
1943                    ; line_number = 146
1944                    ;  loop_exactly 16 start
1945                    ;info   146, 111
1946 0000005e = line_put__2 equ globals___0+62
1947 006f 3010          movlw   16
1948 0070 00de          movwf   line_put__2
1949   0071 :   line_put__3:
1950                    ; line_number = 147
1951                    ; call lcd_character_put(character)
1952                    ;info   147, 113
1953 0071 0851          movf    line_put__character,w
1954 0072 207d          call    lcd_character_put
1955            
1956            
1957                    ; line_number = 146
1958                    ;  loop_exactly 16 wrap-up
1959 0073 0bde          decfsz  line_put__2,f
1960 0074 2871          goto    line_put__3
1961                    ; line_number = 146
1962                    ;  loop_exactly 16 done
1963                    ; delay after procedure statements=non-uniform
1964                    ; Implied return
1965 0075 3400          retlw   0
1966            
1967            
1968            
1969            
1970                    ; line_number = 150
1971                    ;info   150, 118
1972                    ; procedure lcd_command
1973   0076 :   lcd_command:
1974                    ; Last argument is sitting in W; save into argument variable
1975 0076 00d3          movwf   lcd_command__command
1976                    ; delay=4294967295
1977                    ; line_number = 151
1978                    ; argument delay byte
1979 00000052 = lcd_command__delay equ globals___0+50
1980                    ; line_number = 152
1981                    ; argument command byte
1982 00000053 = lcd_command__command equ globals___0+51
1983                    ; line_number = 153
1984                    ;  returns_nothing
1985            
1986                    ; # This procedure will strobe {command} into the LCD controller.
1987                    ; # The procedure delays by 52uS to ensure the command has time
1988                    ; # to be digested by the LCD controller.
1989            
1990                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
1991                    ; line_number = 159
1992                    ;  call lcd_data_send(0, delay, command)
1993                    ;info   159, 119
1994 0077 12ef          bcf     lcd_data_send__rs_mode___byte, lcd_data_send__rs_mode___bit
1995 0078 0852          movf    lcd_command__delay,w
1996 0079 00da          movwf   lcd_data_send__delay
1997 007a 0853          movf    lcd_command__command,w
1998 007b 20c7          call    lcd_data_send
1999            
2000            
2001                    ; delay after procedure statements=non-uniform
2002                    ; Implied return
2003 007c 3400          retlw   0
2004            
2005            
2006            
2007            
2008                    ; line_number = 162
2009                    ;info   162, 125
2010                    ; procedure lcd_character_put
2011   007d :   lcd_character_put:
2012                    ; Last argument is sitting in W; save into argument variable
2013 007d 00d4          movwf   lcd_character_put__character
2014                    ; delay=4294967295
2015                    ; line_number = 163
2016                    ; argument character byte
2017 00000054 = lcd_character_put__character equ globals___0+52
2018                    ; line_number = 164
2019                    ;  returns_nothing
2020            
2021                    ; # This procedure will output {character} to the LCD display
2022                    ; # and move the cursor right by one.
2023            
2024                    ; # Send high nibble (RW=0 & RS=1):
2025                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2026                    ; line_number = 170
2027                    ;  call lcd_data_send(1, other_delay, character)
2028                    ;info   170, 126
2029 007e 16ef          bsf     lcd_data_send__rs_mode___byte, lcd_data_send__rs_mode___bit
2030 007f 3006          movlw   6
2031 0080 00da          movwf   lcd_data_send__delay
2032 0081 0854          movf    lcd_character_put__character,w
2033 0082 20c7          call    lcd_data_send
2034                    ; line_number = 171
2035                    ;  cursor := cursor + 1
2036                    ;info   171, 131
2037 0083 0acc          incf    cursor,f
2038            
2039            
2040                    ; delay after procedure statements=non-uniform
2041                    ; Implied return
2042 0084 3400          retlw   0
2043            
2044            
2045            
2046            
2047                    ; line_number = 174
2048                    ;info   174, 133
2049                    ; procedure lcd_cursor_set
2050   0085 :   lcd_cursor_set:
2051                    ; Last argument is sitting in W; save into argument variable
2052 0085 00d6          movwf   lcd_cursor_set__new_cursor
2053                    ; delay=4294967295
2054                    ; line_number = 175
2055                    ; argument new_cursor byte
2056 00000056 = lcd_cursor_set__new_cursor equ globals___0+54
2057                    ; line_number = 176
2058                    ;  returns_nothing
2059            
2060                    ; # This procedure will set the cursor position to {new_cursor}.
2061            
2062                    ; line_number = 180
2063                    ;  local command byte
2064 00000055 = lcd_cursor_set__command equ globals___0+53
2065            
2066                    ; # Keep the cursor on the first two lines:
2067                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2068                    ; line_number = 183
2069                    ;  cursor := new_cursor & 0x1f
2070                    ;info   183, 134
2071 0086 301f          movlw   31
2072 0087 0556          andwf   lcd_cursor_set__new_cursor,w
2073 0088 00cc          movwf   cursor
2074            
2075                    ; line_number = 185
2076                    ;  command := cursor & 0xf
2077                    ;info   185, 137
2078 0089 300f          movlw   15
2079 008a 054c          andwf   cursor,w
2080 008b 00d5          movwf   lcd_cursor_set__command
2081                    ; line_number = 186
2082                    ;  if cursor@4 start
2083                    ;info   186, 140
2084 0000004c = lcd_cursor_set__select__2___byte equ cursor
2085 00000004 = lcd_cursor_set__select__2___bit equ 4
2086                    ; =>bit_code_emit@symbol(): sym=lcd_cursor_set__select__2
2087                    ; 1TEST: Single test with code in skip slot
2088 008c 1a4c          btfsc   lcd_cursor_set__select__2___byte, lcd_cursor_set__select__2___bit
2089                    ; line_number = 187
2090                    ; command@6 := _true
2091                    ;info   187, 141
2092 00000055 = lcd_cursor_set__select__1___byte equ lcd_cursor_set__command
2093 00000006 = lcd_cursor_set__select__1___bit equ 6
2094 008d 1755          bsf     lcd_cursor_set__select__1___byte, lcd_cursor_set__select__1___bit
2095                    ; Recombine size1 = 0 || size2 = 0
2096                    ; line_number = 186
2097                    ;  if cursor@4 done
2098                    ; line_number = 188
2099                    ; command@7 := _true
2100                    ;info   188, 142
2101 00000055 = lcd_cursor_set__select__3___byte equ lcd_cursor_set__command
2102 00000007 = lcd_cursor_set__select__3___bit equ 7
2103 008e 17d5          bsf     lcd_cursor_set__select__3___byte, lcd_cursor_set__select__3___bit
2104                    ; line_number = 189
2105                    ;  call lcd_command(standard_delay, command)
2106                    ;info   189, 143
2107 008f 3005          movlw   5
2108 0090 00d2          movwf   lcd_command__delay
2109 0091 0855          movf    lcd_cursor_set__command,w
2110 0092 2076          call    lcd_command
2111            
2112            
2113                    ; delay after procedure statements=non-uniform
2114                    ; Implied return
2115 0093 3400          retlw   0
2116            
2117            
2118            
2119            
2120                    ; line_number = 192
2121                    ;info   192, 148
2122                    ; procedure enqueue
2123   0094 :   enqueue:
2124                    ; Last argument is sitting in W; save into argument variable
2125 0094 00d7          movwf   enqueue__data
2126                    ; delay=4294967295
2127                    ; line_number = 193
2128                    ; argument data byte
2129 00000057 = enqueue__data equ globals___0+55
2130                    ; line_number = 194
2131                    ;  returns_nothing
2132            
2133                    ; # This procedure will enqueue {data} onto the command queue.
2134                    ; # It is your responsibility to ensure that the there is enough
2135                    ; # space in the queue.
2136            
2137                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2138                    ; line_number = 200
2139                    ;  queue[available & queue_mask] := data
2140                    ;info   200, 149
2141                    ; index_fsr_first
2142 0095 301f          movlw   31
2143 0096 054b          andwf   available,w
2144 0097 3e2a          addlw   queue
2145 0098 0084          movwf   __fsr
2146 0099 0857          movf    enqueue__data,w
2147 009a 0080          movwf   __indf
2148                    ; line_number = 201
2149                    ;  available := available + 1
2150                    ;info   201, 155
2151 009b 0acb          incf    available,f
2152            
2153            
2154                    ; delay after procedure statements=non-uniform
2155                    ; Implied return
2156 009c 3400          retlw   0
2157            
2158            
2159            
2160            
2161                    ; line_number = 204
2162                    ;info   204, 157
2163                    ; procedure lcd_delay
2164   009d :   lcd_delay:
2165                    ; Last argument is sitting in W; save into argument variable
2166 009d 00d8          movwf   lcd_delay__amount
2167                    ; delay=4294967295
2168                    ; line_number = 205
2169                    ; argument amount byte
2170 00000058 = lcd_delay__amount equ globals___0+56
2171                    ; line_number = 206
2172                    ;  returns_nothing
2173            
2174                    ; # This procedure is designed to delay for 100uS times {amount}.
2175            
2176                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2177                    ; line_number = 210
2178                    ;  loop_exactly amount start
2179                    ;info   210, 158
2180 0000005f = lcd_delay__1 equ globals___0+63
2181 009e 0858          movf    lcd_delay__amount,w
2182 009f 00df          movwf   lcd_delay__1
2183   00a0 :   lcd_delay__2:
2184                    ; line_number = 211
2185                    ; delay (100 * microsecond) - 3 start
2186                    ;info   211, 160
2187                    ; Delay expression evaluates to 397
2188                    ; line_number = 212
2189                    ; do_nothing
2190                    ;info   212, 160
2191            
2192            
2193                    ; Delay 397 cycles
2194                    ; Delay loop takes 99 * 4 = 396 cycles
2195 00a0 3063          movlw   99
2196   00a1 :   lcd_delay__3:
2197 00a1 3eff          addlw   255
2198 00a2 1d03          btfss   __z___byte, __z___bit
2199 00a3 28a1          goto    lcd_delay__3
2200 00a4 0000          nop     
2201                    ; line_number = 211
2202                    ; delay (100 * microsecond) - 3 done
2203                    ; line_number = 210
2204                    ;  loop_exactly amount wrap-up
2205 00a5 0bdf          decfsz  lcd_delay__1,f
2206 00a6 28a0          goto    lcd_delay__2
2207                    ; line_number = 210
2208                    ;  loop_exactly amount done
2209                    ; delay after procedure statements=non-uniform
2210                    ; Implied return
2211 00a7 3400          retlw   0
2212            
2213            
2214            
2215            
2216                    ; line_number = 215
2217                    ;info   215, 168
2218                    ; procedure lcd_init
2219   00a8 :   lcd_init:
2220                    ; arguments_none
2221                    ; line_number = 217
2222                    ;  returns_nothing
2223            
2224                    ; # Step 1: Wait for the LCD to initialize from Power on:
2225                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2226                    ; line_number = 220
2227                    ;  loop_exactly 5 start
2228                    ;info   220, 168
2229 00000060 = lcd_init__1 equ globals___0+64
2230 00a8 3005          movlw   5
2231 00a9 00e0          movwf   lcd_init__1
2232   00aa :   lcd_init__2:
2233                    ; line_number = 221
2234                    ; call lcd_delay(100)
2235                    ;info   221, 170
2236 00aa 3064          movlw   100
2237 00ab 209d          call    lcd_delay
2238            
2239                    ; line_number = 220
2240                    ;  loop_exactly 5 wrap-up
2241 00ac 0be0          decfsz  lcd_init__1,f
2242 00ad 28aa          goto    lcd_init__2
2243                    ; line_number = 220
2244                    ;  loop_exactly 5 done
2245                    ; # Step 2: Put the LCD in a "known" mode.
2246            
2247                    ; # FUNCTION SET - 8-bit, 2 lines, 5x8 font:
2248                    ; line_number = 226
2249                    ;  call lcd_command(standard_delay, 0x38)
2250                    ;info   226, 174
2251 00ae 3005          movlw   5
2252 00af 00d2          movwf   lcd_command__delay
2253 00b0 3038          movlw   56
2254 00b1 2076          call    lcd_command
2255            
2256                    ; # AGAIN : FUNCTION SET - 8-bit, 2 lines, 5x8 font:
2257                    ; # Sending this command twice, *does* work.
2258                    ; line_number = 230
2259                    ;  call lcd_command(standard_delay, 0x38)
2260                    ;info   230, 178
2261 00b2 3005          movlw   5
2262 00b3 00d2          movwf   lcd_command__delay
2263 00b4 3038          movlw   56
2264 00b5 2076          call    lcd_command
2265            
2266                    ; # Turn off the display temporarily:
2267                    ; line_number = 233
2268                    ;  call lcd_command(standard_delay, 0x08)
2269                    ;info   233, 182
2270 00b6 3005          movlw   5
2271 00b7 00d2          movwf   lcd_command__delay
2272 00b8 3008          movlw   8
2273 00b9 2076          call    lcd_command
2274            
2275                    ; # Clear the display:
2276                    ; line_number = 236
2277                    ;  call lcd_command(big_delay, 0x01)
2278                    ;info   236, 186
2279 00ba 30c9          movlw   201
2280 00bb 00d2          movwf   lcd_command__delay
2281 00bc 3001          movlw   1
2282 00bd 2076          call    lcd_command
2283            
2284                    ; # Turn the display back on with Cursor:
2285                    ; line_number = 239
2286                    ;  call lcd_command(standard_delay, 0x0f)
2287                    ;info   239, 190
2288 00be 3005          movlw   5
2289 00bf 00d2          movwf   lcd_command__delay
2290 00c0 300f          movlw   15
2291 00c1 2076          call    lcd_command
2292            
2293                    ; # Set shift mode:
2294                    ; line_number = 242
2295                    ;  call lcd_command(standard_delay, 0x06)
2296                    ;info   242, 194
2297 00c2 3005          movlw   5
2298 00c3 00d2          movwf   lcd_command__delay
2299 00c4 3006          movlw   6
2300 00c5 2076          call    lcd_command
2301            
2302            
2303                    ; delay after procedure statements=non-uniform
2304                    ; Implied return
2305 00c6 3400          retlw   0
2306            
2307            
2308            
2309            
2310                    ; line_number = 245
2311                    ;info   245, 199
2312                    ; procedure lcd_data_send
2313   00c7 :   lcd_data_send:
2314                    ; Last argument is sitting in W; save into argument variable
2315 00c7 00db          movwf   lcd_data_send__data
2316                    ; delay=4294967295
2317                    ; line_number = 246
2318                    ; argument rs_mode bit
2319 0000006f = lcd_data_send__rs_mode___byte equ globals___0+79
2320 00000005 = lcd_data_send__rs_mode___bit equ 5
2321                    ; line_number = 247
2322                    ; argument delay byte
2323 0000005a = lcd_data_send__delay equ globals___0+58
2324                    ; line_number = 248
2325                    ; argument data byte
2326 0000005b = lcd_data_send__data equ globals___0+59
2327                    ; line_number = 249
2328                    ;  returns_nothing
2329            
2330                    ; # This procedure will send the 8-bits of {data} to the LCD
2331                    ; # controller with RS set to {rs_mode} and RW set to 0 (write).
2332            
2333                    ; line_number = 254
2334                    ;  local temp byte
2335 00000059 = lcd_data_send__temp equ globals___0+57
2336            
2337                    ; # Get {db4}, {db5}, {db6}, and {db7} set up, clear {rw} and {rs}:
2338                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2339                    ; line_number = 257
2340                    ;  _portb := data & 0xf0
2341                    ;info   257, 200
2342 00c8 30f0          movlw   240
2343 00c9 055b          andwf   lcd_data_send__data,w
2344 00ca 0086          movwf   _portb
2345            
2346                    ; # Set up the control lines:
2347                    ; line_number = 260
2348                    ;  if rs_mode start
2349                    ;info   260, 203
2350                    ; =>bit_code_emit@symbol(): sym=lcd_data_send__rs_mode
2351                    ; 1TEST: Single test with code in skip slot
2352 00cb 1aef          btfsc   lcd_data_send__rs_mode___byte, lcd_data_send__rs_mode___bit
2353                    ; line_number = 261
2354                    ; rs := _true
2355                    ;info   261, 204
2356 00cc 1406          bsf     rs___byte, rs___bit
2357            
2358                    ; Recombine size1 = 0 || size2 = 0
2359                    ; line_number = 260
2360                    ;  if rs_mode done
2361                    ; # Get {db0}, {db1}, {db2}, and {db3} set up.  Be careful to
2362                    ; # not accidently toggle {e}.
2363            
2364                    ; line_number = 266
2365                    ;  temp := data & 0xf
2366                    ;info   266, 205
2367 00cd 300f          movlw   15
2368 00ce 055b          andwf   lcd_data_send__data,w
2369 00cf 00d9          movwf   lcd_data_send__temp
2370                    ; line_number = 267
2371                    ;  _porta := temp
2372                    ;info   267, 208
2373 00d0 0859          movf    lcd_data_send__temp,w
2374 00d1 0085          movwf   _porta
2375            
2376                    ; # Wait for any previous command to clear:
2377                    ; line_number = 270
2378                    ;  while !_t0if start
2379   00d2 :   lcd_data_send__1:
2380                    ;info   270, 210
2381                    ; =>bit_code_emit@symbol(): sym=_t0if
2382                    ; 1TEST: Single test with code in skip slot
2383 00d2 1d0b          btfss   _t0if___byte, _t0if___bit
2384                    ; line_number = 271
2385                    ; do_nothing
2386                    ;info   271, 211
2387            
2388 00d3 28d2          goto    lcd_data_send__1
2389                    ; Recombine size1 = 0 || size2 = 0
2390                    ; line_number = 270
2391                    ;  while !_t0if done
2392                    ; # Toggle {e} to clock the data into the LCD controller.
2393                    ; line_number = 274
2394                    ;  e := _true
2395                    ;info   274, 212
2396 00d4 1605          bsf     e___byte, e___bit
2397                    ; line_number = 275
2398                    ;  e := _false
2399                    ;info   275, 213
2400 00d5 1205          bcf     e___byte, e___bit
2401            
2402                    ; # Set up a delay after this command (just use 1's complement):
2403                    ; line_number = 278
2404                    ;  _tmr0 := 255 ^ delay
2405                    ;info   278, 214
2406 00d6 095a          comf    lcd_data_send__delay,w
2407 00d7 0081          movwf   _tmr0
2408                    ; line_number = 279
2409                    ;  _t0if := _false
2410                    ;info   279, 216
2411 00d8 110b          bcf     _t0if___byte, _t0if___bit
2412            
2413            
2414                    ; delay after procedure statements=non-uniform
2415                    ; Implied return
2416 00d9 3400          retlw   0
2417            
2418            
2419            
2420            
2421                    ; line_number = 282
2422                    ;info   282, 218
2423                    ; procedure wait
2424   00da :   wait:
2425                    ; arguments_none
2426                    ; line_number = 284
2427                    ;  returns_nothing
2428            
2429                    ; # This procedure will do any background processing.
2430            
2431                    ; line_number = 288
2432                    ;  local command byte
2433 0000005c = wait__command equ globals___0+60
2434            
2435                    ; # Only do something if there is no pending delay:
2436                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2437                    ; line_number = 291
2438                    ;  if _t0if start
2439                    ;info   291, 218
2440                    ; =>bit_code_emit@symbol(): sym=_t0if
2441                    ; No 1TEST: true.size=93 false.size=0
2442                    ; No 2TEST: true.size=93 false.size=0
2443                    ; 1GOTO: Single test with GOTO
2444 00da 1d0b          btfss   _t0if___byte, _t0if___bit
2445 00db 2939          goto    wait__23
2446                    ; # Any pending delay has expired:
2447                    ; line_number = 293
2448                    ;  if cursor_pending start
2449                    ;info   293, 220
2450                    ; =>bit_code_emit@symbol(): sym=cursor_pending
2451                    ; No 1TEST: true.size=3 false.size=87
2452                    ; No 2TEST: true.size=3 false.size=87
2453                    ; 2GOTO: Single test with two GOTO's
2454 00dc 1e6f          btfss   cursor_pending___byte, cursor_pending___bit
2455 00dd 28e2          goto    wait__21
2456                    ; line_number = 294
2457                    ; call lcd_cursor_set(0)
2458                    ;info   294, 222
2459 00de 3000          movlw   0
2460 00df 2085          call    lcd_cursor_set
2461                    ; line_number = 295
2462                    ;  cursor_pending := _false
2463                    ;info   295, 224
2464 00e0 126f          bcf     cursor_pending___byte, cursor_pending___bit
2465 00e1 2939          goto    wait__22
2466                    ; 2GOTO: Starting code 2
2467   00e2 :   wait__21:
2468                    ; line_number = 296
2469                    ;info   296, 226
2470                    ; Left minus Right
2471 00e2 084a          movf    processed,w
2472 00e3 024b          subwf   available,w
2473                    ; =>bit_code_emit@symbol(): sym=__z
2474                    ; No 1TEST: true.size=0 false.size=83
2475                    ; No 2TEST: true.size=0 false.size=83
2476                    ; 1GOTO: Single test with GOTO
2477 00e4 1903          btfsc   __z___byte, __z___bit
2478 00e5 2939          goto    wait__20
2479                    ; line_number = 297
2480                    ; command := queue[processed & queue_mask]
2481                    ;info   297, 230
2482 00e6 301f          movlw   31
2483 00e7 054a          andwf   processed,w
2484 00e8 3e2a          addlw   queue
2485 00e9 0084          movwf   __fsr
2486 00ea 0800          movf    __indf,w
2487 00eb 00dc          movwf   wait__command
2488                    ; line_number = 298
2489                    ;  processed := processed + 1
2490                    ;info   298, 236
2491 00ec 0aca          incf    processed,f
2492                    ; line_number = 299
2493                    ;  switch command >> 6 start
2494                    ;info   299, 237
2495                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
2496 00ed 3000          movlw   wait__17>>8
2497 00ee 008a          movwf   __pclath
2498 00000061 = wait__18 equ globals___0+65
2499 00ef 0e5c          swapf   wait__command,w
2500 00f0 00e1          movwf   wait__18
2501 00f1 0ce1          rrf     wait__18,f
2502 00f2 0c61          rrf     wait__18,w
2503 00f3 3903          andlw   3
2504                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2505 00f4 3ef6          addlw   wait__17
2506 00f5 0082          movwf   __pcl
2507                    ; page_group 4
2508   00f6 :   wait__17:
2509 00f6 28fa          goto    wait__14
2510 00f7 2934          goto    wait__15
2511 00f8 2937          goto    wait__16
2512 00f9 2937          goto    wait__16
2513                    ; line_number = 300
2514                    ; case 0
2515   00fa :   wait__14:
2516                    ; # 00xx xxxx:
2517                    ; line_number = 302
2518                    ;  switch (command >> 3) & 7 start
2519                    ;info   302, 250
2520                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2521 00fa 3001          movlw   wait__11>>8
2522 00fb 008a          movwf   __pclath
2523 00000061 = wait__12 equ globals___0+65
2524 00fc 0c5c          rrf     wait__command,w
2525 00fd 00e1          movwf   wait__12
2526 00fe 0ce1          rrf     wait__12,f
2527 00ff 0c61          rrf     wait__12,w
2528 0100 3907          andlw   7
2529                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2530 0101 3e03          addlw   wait__11
2531 0102 0082          movwf   __pcl
2532                    ; page_group 8
2533   0103 :   wait__11:
2534 0103 290b          goto    wait__7
2535 0104 290c          goto    wait__8
2536 0105 2929          goto    wait__9
2537 0106 2929          goto    wait__9
2538 0107 2931          goto    wait__10
2539 0108 2931          goto    wait__10
2540 0109 2931          goto    wait__10
2541 010a 2931          goto    wait__10
2542                    ; line_number = 303
2543                    ; case 0
2544   010b :   wait__7:
2545                    ; # 0000 0xxx:
2546                    ; line_number = 305
2547                    ;  do_nothing
2548                    ;info   305, 267
2549 010b 2933          goto    wait__13
2550                    ; line_number = 306
2551                    ; case 1
2552   010c :   wait__8:
2553                    ; # 0000 1xxx:
2554                    ; line_number = 308
2555                    ;  switch command & 7 start
2556                    ;info   308, 268
2557                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2558                    ; line_number = 309
2559                    ; case_maximum 7
2560 010c 3001          movlw   wait__4>>8
2561 010d 008a          movwf   __pclath
2562 010e 3007          movlw   7
2563 010f 055c          andwf   wait__command,w
2564                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2565 0110 3e12          addlw   wait__4
2566 0111 0082          movwf   __pcl
2567                    ; page_group 8
2568   0112 :   wait__4:
2569 0112 2928          goto    wait__5
2570 0113 2928          goto    wait__5
2571 0114 291a          goto    wait__1
2572 0115 2928          goto    wait__5
2573 0116 291f          goto    wait__2
2574 0117 2925          goto    wait__3
2575 0118 2928          goto    wait__5
2576 0119 2928          goto    wait__5
2577                    ; line_number = 310
2578                    ; case 2
2579   011a :   wait__1:
2580                    ; # 0000 1010 (Line_Feed):
2581                    ; line_number = 312
2582                    ;  call lcd_cursor_set((cursor | 0xf) + 1)
2583                    ;info   312, 282
2584 011a 300f          movlw   15
2585 011b 044c          iorwf   cursor,w
2586 011c 3e01          addlw   1
2587 011d 2085          call    lcd_cursor_set
2588 011e 2928          goto    wait__5
2589                    ; line_number = 313
2590                    ; case 4
2591   011f :   wait__2:
2592                    ; # 0000 1100 (Form_Feed):
2593                    ; line_number = 315
2594                    ;  call lcd_command(big_delay, 0x1)
2595                    ;info   315, 287
2596 011f 30c9          movlw   201
2597 0120 00d2          movwf   lcd_command__delay
2598 0121 3001          movlw   1
2599 0122 2076          call    lcd_command
2600                    ; line_number = 316
2601                    ;  cursor_pending := _true
2602                    ;info   316, 291
2603 0123 166f          bsf     cursor_pending___byte, cursor_pending___bit
2604 0124 2928          goto    wait__5
2605                    ; line_number = 317
2606                    ; case 5
2607   0125 :   wait__3:
2608                    ; # 0000 1101 (Carriage Return):
2609                    ; line_number = 319
2610                    ;  call lcd_cursor_set(cursor & 0xf0)
2611                    ;info   319, 293
2612 0125 30f0          movlw   240
2613 0126 054c          andwf   cursor,w
2614 0127 2085          call    lcd_cursor_set
2615   0128 :   wait__5:
2616                    ; line_number = 308
2617                    ;  switch command & 7 done
2618 0128 2933          goto    wait__13
2619                    ; line_number = 320
2620                    ; case 2, 3
2621   0129 :   wait__9:
2622                    ; # 0001 xxxx:
2623                    ; line_number = 322
2624                    ;  call lcd_cursor_set(cursor & 0xf0 | command & 0xf)
2625                    ;info   322, 297
2626 00000061 = wait__6 equ globals___0+65
2627 0129 30f0          movlw   240
2628 012a 054c          andwf   cursor,w
2629 012b 00e1          movwf   wait__6
2630 012c 300f          movlw   15
2631 012d 055c          andwf   wait__command,w
2632 012e 0461          iorwf   wait__6,w
2633 012f 2085          call    lcd_cursor_set
2634 0130 2933          goto    wait__13
2635                    ; line_number = 323
2636                    ; case 4, 5, 6, 7
2637   0131 :   wait__10:
2638                    ; # 001x xxxx:
2639                    ; line_number = 325
2640                    ;  call lcd_character_put(command)
2641                    ;info   325, 305
2642 0131 085c          movf    wait__command,w
2643 0132 207d          call    lcd_character_put
2644   0133 :   wait__13:
2645                    ; line_number = 302
2646                    ;  switch (command >> 3) & 7 done
2647 0133 2939          goto    wait__19
2648                    ; line_number = 326
2649                    ; case 1
2650   0134 :   wait__15:
2651                    ; # 01xx xxxx:
2652                    ; line_number = 328
2653                    ;  call lcd_character_put(command)
2654                    ;info   328, 308
2655 0134 085c          movf    wait__command,w
2656 0135 207d          call    lcd_character_put
2657 0136 2939          goto    wait__19
2658                    ; line_number = 329
2659                    ; case 2, 3
2660   0137 :   wait__16:
2661                    ; # 1xxx xxxx:
2662                    ; line_number = 331
2663                    ;  call rb2bus_byte_put(cursor)
2664                    ;info   331, 311
2665 0137 084c          movf    cursor,w
2666 0138 2196          call    rb2bus_byte_put
2667            
2668            
2669   0139 :   wait__19:
2670                    ; line_number = 299
2671                    ;  switch command >> 6 done
2672   0139 :   wait__20:
2673                    ; Recombine size1 = 0 || size2 = 0
2674   0139 :   wait__22:
2675                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2676                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2677                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2678                    ; line_number = 293
2679                    ;  if cursor_pending done
2680                    ; Recombine size1 = 0 || size2 = 0
2681   0139 :   wait__23:
2682                    ; line_number = 291
2683                    ;  if _t0if done
2684                    ; delay after procedure statements=non-uniform
2685                    ; Implied return
2686 0139 3400          retlw   0
2687            
2688            
2689            
2690            
2691                    ; line_number = 334
2692                    ; string id = "\16,0,32,2,3,7\LCD32-B\7\Gramson" start
2693                    ; id = '\16,0\ \2,3,7\LCD32-B\7\Gramson'
2694   013a :   id:
2695                    ; Temporarily save index into FSR
2696 013a 0084          movwf   __fsr
2697                    ; Initialize PCLATH to point to this code page
2698 013b 3001          movlw   id___base>>8
2699 013c 008a          movwf   __pclath
2700                    ; Restore index from FSR
2701 013d 0804          movf    __fsr,w
2702 013e 3e40          addlw   id___base
2703                    ; Index to the correct return value
2704 013f 0082          movwf   __pcl
2705                    ; page_group 21
2706   0140 :   id___base:
2707 0140 3410          retlw   16
2708 0141 3400          retlw   0
2709 0142 3420          retlw   32
2710 0143 3402          retlw   2
2711 0144 3403          retlw   3
2712 0145 3407          retlw   7
2713 0146 344c          retlw   76
2714 0147 3443          retlw   67
2715 0148 3444          retlw   68
2716 0149 3433          retlw   51
2717 014a 3432          retlw   50
2718 014b 342d          retlw   45
2719 014c 3442          retlw   66
2720 014d 3407          retlw   7
2721 014e 3447          retlw   71
2722 014f 3472          retlw   114
2723 0150 3461          retlw   97
2724 0151 346d          retlw   109
2725 0152 3473          retlw   115
2726 0153 346f          retlw   111
2727 0154 346e          retlw   110
2728                    ; line_number = 334
2729                    ; string id = "\16,0,32,2,3,7\LCD32-B\7\Gramson" start
2730            
2731            
2732                    ; Appending 8 delayed procedures to code bank 0
2733                    ; buffer = 'rb2bus'
2734                    ; line_number = 57
2735                    ;info   57, 341
2736                    ; procedure rb2bus_select_wait
2737   0155 :   rb2bus_select_wait:
2738                    ; arguments_none
2739                    ; line_number = 59
2740                    ;  returns_nothing
2741            
2742                    ; # This procedure will in an infinite loop until the select
2743                    ; # address matches {rb2bus_address}.  {rb2bus_address} is
2744                    ; # typically set in the {rb2bus_initialize} procedure.
2745                    ; #
2746                    ; # This module will repeatably call the {wait} procedure until
2747                    ; # it is properly selected.
2748            
2749                    ; line_number = 68
2750                    ;  local value byte
2751 00000022 = rb2bus_select_wait__value equ globals___0+2
2752                    ; line_number = 69
2753                    ;  local address_bit bit
2754 0000006f = rb2bus_select_wait__address_bit___byte equ globals___0+79
2755 00000002 = rb2bus_select_wait__address_bit___bit equ 2
2756            
2757                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2758                    ; line_number = 71
2759                    ;  rb2bus_error := _false
2760                    ;info   71, 341
2761 0155 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
2762                    ; line_number = 72
2763                    ;  while !rb2bus_selected start
2764   0156 :   rb2bus_select_wait__1:
2765                    ;info   72, 342
2766                    ; =>bit_code_emit@symbol(): sym=rb2bus_selected
2767                    ; No 1TEST: true.size=0 false.size=25
2768                    ; No 2TEST: true.size=0 false.size=25
2769                    ; 1GOTO: Single test with GOTO
2770 0156 186f          btfsc   rb2bus_selected___byte, rb2bus_selected___bit
2771 0157 2971          goto    rb2bus_select_wait__6
2772                    ; line_number = 73
2773                    ; _adden := _true
2774                    ;info   73, 344
2775 0158 1598          bsf     _adden___byte, _adden___bit
2776                    ; # Wait for a byte to arrive.
2777                    ; line_number = 75
2778                    ;  while !_rcif start
2779   0159 :   rb2bus_select_wait__2:
2780                    ;info   75, 345
2781                    ; =>bit_code_emit@symbol(): sym=_rcif
2782                    ; No 1TEST: true.size=0 false.size=2
2783                    ; No 2TEST: true.size=0 false.size=2
2784                    ; 1GOTO: Single test with GOTO
2785 0159 1a8c          btfsc   _rcif___byte, _rcif___bit
2786 015a 295d          goto    rb2bus_select_wait__3
2787                    ; line_number = 76
2788                    ; call wait()
2789                    ;info   76, 347
2790 015b 20da          call    wait
2791            
2792 015c 2959          goto    rb2bus_select_wait__2
2793   015d :   rb2bus_select_wait__3:
2794                    ; Recombine size1 = 0 || size2 = 0
2795                    ; line_number = 75
2796                    ;  while !_rcif done
2797                    ; # Capture the received value:
2798                    ; line_number = 79
2799                    ;  address_bit := _false
2800                    ;info   79, 349
2801 015d 116f          bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
2802                    ; line_number = 80
2803                    ;  if _rx9d start
2804                    ;info   80, 350
2805                    ; =>bit_code_emit@symbol(): sym=_rx9d
2806                    ; 1TEST: Single test with code in skip slot
2807 015e 1818          btfsc   _rx9d___byte, _rx9d___bit
2808                    ; line_number = 81
2809                    ; address_bit := _true
2810                    ;info   81, 351
2811 015f 156f          bsf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
2812                    ; Recombine size1 = 0 || size2 = 0
2813                    ; line_number = 80
2814                    ;  if _rx9d done
2815                    ; line_number = 82
2816                    ; value := _rcreg
2817                    ;info   82, 352
2818 0160 081a          movf    _rcreg,w
2819 0161 00a2          movwf   rb2bus_select_wait__value
2820            
2821                    ; # Clear any UART errors by toggling {_cren}:
2822                    ; line_number = 85
2823                    ;  if _oerr start
2824                    ;info   85, 354
2825                    ; =>bit_code_emit@symbol(): sym=_oerr
2826                    ; 1TEST: Single test with code in skip slot
2827 0162 1898          btfsc   _oerr___byte, _oerr___bit
2828                    ; line_number = 86
2829                    ; _cren := _false
2830                    ;info   86, 355
2831 0163 1218          bcf     _cren___byte, _cren___bit
2832                    ; Recombine size1 = 0 || size2 = 0
2833                    ; line_number = 85
2834                    ;  if _oerr done
2835                    ; line_number = 87
2836                    ; if _ferr start
2837                    ;info   87, 356
2838                    ; =>bit_code_emit@symbol(): sym=_ferr
2839                    ; 1TEST: Single test with code in skip slot
2840 0164 1918          btfsc   _ferr___byte, _ferr___bit
2841                    ; line_number = 88
2842                    ; _cren := _false
2843                    ;info   88, 357
2844 0165 1218          bcf     _cren___byte, _cren___bit
2845                    ; Recombine size1 = 0 || size2 = 0
2846                    ; line_number = 87
2847                    ; if _ferr done
2848                    ; line_number = 89
2849                    ; _cren := _true
2850                    ;info   89, 358
2851 0166 1618          bsf     _cren___byte, _cren___bit
2852            
2853                    ; line_number = 91
2854                    ;  if address_bit start
2855                    ;info   91, 359
2856                    ; =>bit_code_emit@symbol(): sym=rb2bus_select_wait__address_bit
2857                    ; No 1TEST: true.size=7 false.size=0
2858                    ; No 2TEST: true.size=7 false.size=0
2859                    ; 1GOTO: Single test with GOTO
2860 0167 1d6f          btfss   rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
2861 0168 2970          goto    rb2bus_select_wait__5
2862                    ; line_number = 92
2863                    ; if value = rb2bus_address start
2864                    ;info   92, 361
2865                    ; Left minus Right
2866 0169 0820          movf    rb2bus_address,w
2867 016a 0222          subwf   rb2bus_select_wait__value,w
2868                    ; =>bit_code_emit@symbol(): sym=__z
2869                    ; No 1TEST: true.size=3 false.size=0
2870                    ; No 2TEST: true.size=3 false.size=0
2871                    ; 1GOTO: Single test with GOTO
2872 016b 1d03          btfss   __z___byte, __z___bit
2873 016c 2970          goto    rb2bus_select_wait__4
2874                    ; line_number = 93
2875                    ; rb2bus_selected := _true
2876                    ;info   93, 365
2877 016d 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
2878                    ; line_number = 94
2879                    ;  call rb2bus_byte_put(rb2_ok)
2880                    ;info   94, 366
2881 016e 30a5          movlw   165
2882 016f 2196          call    rb2bus_byte_put
2883            
2884            
2885                    ; Recombine size1 = 0 || size2 = 0
2886   0170 :   rb2bus_select_wait__4:
2887                    ; line_number = 92
2888                    ; if value = rb2bus_address done
2889                    ; Recombine size1 = 0 || size2 = 0
2890   0170 :   rb2bus_select_wait__5:
2891                    ; line_number = 91
2892                    ;  if address_bit done
2893 0170 2956          goto    rb2bus_select_wait__1
2894   0171 :   rb2bus_select_wait__6:
2895                    ; Recombine size1 = 0 || size2 = 0
2896                    ; line_number = 72
2897                    ;  while !rb2bus_selected done
2898                    ; delay after procedure statements=non-uniform
2899                    ; Implied return
2900 0171 3400          retlw   0
2901            
2902            
2903            
2904            
2905                    ; line_number = 97
2906                    ;info   97, 370
2907                    ; procedure rb2bus_deselect
2908   0172 :   rb2bus_deselect:
2909                    ; arguments_none
2910                    ; line_number = 99
2911                    ;  returns_nothing
2912            
2913                    ; # This procedure forces this module into the deselected state until
2914                    ; # it is reselected by some master module on the bus.
2915            
2916                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2917                    ; line_number = 104
2918                    ;  rb2bus_selected := _false
2919                    ;info   104, 370
2920 0172 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
2921            
2922            
2923                    ; delay after procedure statements=non-uniform
2924                    ; Implied return
2925 0173 3400          retlw   0
2926            
2927            
2928            
2929            
2930                    ; line_number = 107
2931                    ;info   107, 372
2932                    ; procedure rb2bus_byte_get
2933   0174 :   rb2bus_byte_get:
2934                    ; arguments_none
2935                    ; line_number = 109
2936                    ;  returns byte
2937            
2938                    ; # This procedure will return the next byte received from the bus.
2939                    ; # The address (9th) bit is stored in the global {is_address}.
2940                    ; #
2941                    ; # If {rb2bus_error} is set, 0 is returned.  Otherwise, the {wait}
2942                    ; # procedure is repeatably called until a command byte is successfully
2943                    ; # received.  If an module select byte comes in, we enter a bus
2944                    ; # error condition by setting {rb2bus_error} and returning 0.
2945            
2946                    ; line_number = 119
2947                    ;  local value byte
2948 00000023 = rb2bus_byte_get__value equ globals___0+3
2949                    ; line_number = 120
2950                    ;  local address_bit bit
2951 0000006f = rb2bus_byte_get__address_bit___byte equ globals___0+79
2952 00000003 = rb2bus_byte_get__address_bit___bit equ 3
2953            
2954                    ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
2955                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
2956                    ; line_number = 123
2957                    ;  if rb2bus_error start
2958                    ;info   123, 372
2959                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2960                    ; 1TEST: Single test with code in skip slot
2961 0174 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2962                    ; line_number = 124
2963                    ; return 0 start
2964                    ; line_number = 124
2965                    ;info   124, 373
2966 0175 3400          retlw   0
2967                    ; line_number = 124
2968                    ; return 0 done
2969            
2970                    ; Recombine size1 = 0 || size2 = 0
2971                    ; line_number = 123
2972                    ;  if rb2bus_error done
2973                    ; # Wait for a byte to arrive.
2974                    ; line_number = 127
2975                    ;  _adden := _false
2976                    ;info   127, 374
2977 0176 1198          bcf     _adden___byte, _adden___bit
2978                    ; line_number = 128
2979                    ;  while !_rcif start
2980   0177 :   rb2bus_byte_get__1:
2981                    ;info   128, 375
2982                    ; =>bit_code_emit@symbol(): sym=_rcif
2983                    ; No 1TEST: true.size=0 false.size=2
2984                    ; No 2TEST: true.size=0 false.size=2
2985                    ; 1GOTO: Single test with GOTO
2986 0177 1a8c          btfsc   _rcif___byte, _rcif___bit
2987 0178 297b          goto    rb2bus_byte_get__2
2988                    ; line_number = 129
2989                    ; call wait()
2990                    ;info   129, 377
2991 0179 20da          call    wait
2992            
2993 017a 2977          goto    rb2bus_byte_get__1
2994   017b :   rb2bus_byte_get__2:
2995                    ; Recombine size1 = 0 || size2 = 0
2996                    ; line_number = 128
2997                    ;  while !_rcif done
2998                    ; # Record the 9th bit in {address_bit}:
2999                    ; line_number = 132
3000                    ;  address_bit := _false
3001                    ;info   132, 379
3002 017b 11ef          bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3003                    ; line_number = 133
3004                    ;  if _rx9d start
3005                    ;info   133, 380
3006                    ; =>bit_code_emit@symbol(): sym=_rx9d
3007                    ; 1TEST: Single test with code in skip slot
3008 017c 1818          btfsc   _rx9d___byte, _rx9d___bit
3009                    ; line_number = 134
3010                    ; address_bit := _true
3011                    ;info   134, 381
3012 017d 15ef          bsf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3013                    ; Recombine size1 = 0 || size2 = 0
3014                    ; line_number = 133
3015                    ;  if _rx9d done
3016                    ; line_number = 135
3017                    ; value := _rcreg
3018                    ;info   135, 382
3019 017e 081a          movf    _rcreg,w
3020 017f 00a3          movwf   rb2bus_byte_get__value
3021            
3022                    ; # Clear any errors by toggling _{cren}:
3023                    ; # FIXME: All of this should be done *before* reading {_rcreg}!!!
3024                    ; line_number = 139
3025                    ;  if _oerr start
3026                    ;info   139, 384
3027                    ; =>bit_code_emit@symbol(): sym=_oerr
3028                    ; 1TEST: Single test with code in skip slot
3029 0180 1898          btfsc   _oerr___byte, _oerr___bit
3030                    ; line_number = 140
3031                    ; _cren := _false
3032                    ;info   140, 385
3033 0181 1218          bcf     _cren___byte, _cren___bit
3034                    ; Recombine size1 = 0 || size2 = 0
3035                    ; line_number = 139
3036                    ;  if _oerr done
3037                    ; line_number = 141
3038                    ; if _ferr start
3039                    ;info   141, 386
3040                    ; =>bit_code_emit@symbol(): sym=_ferr
3041                    ; 1TEST: Single test with code in skip slot
3042 0182 1918          btfsc   _ferr___byte, _ferr___bit
3043                    ; line_number = 142
3044                    ; _cren := _false
3045                    ;info   142, 387
3046 0183 1218          bcf     _cren___byte, _cren___bit
3047                    ; Recombine size1 = 0 || size2 = 0
3048                    ; line_number = 141
3049                    ; if _ferr done
3050                    ; line_number = 143
3051                    ; _cren := _true
3052                    ;info   143, 388
3053 0184 1618          bsf     _cren___byte, _cren___bit
3054            
3055                    ; line_number = 145
3056                    ;  if address_bit start
3057                    ;info   145, 389
3058                    ; =>bit_code_emit@symbol(): sym=rb2bus_byte_get__address_bit
3059                    ; No 1TEST: true.size=13 false.size=0
3060                    ; No 2TEST: true.size=13 false.size=0
3061                    ; 1GOTO: Single test with GOTO
3062 0185 1def          btfss   rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3063 0186 2994          goto    rb2bus_byte_get__5
3064                    ; # We have an unexpected address select coming in:
3065                    ; line_number = 147
3066                    ;  if value = rb2bus_address start
3067                    ;info   147, 391
3068                    ; Left minus Right
3069 0187 0820          movf    rb2bus_address,w
3070 0188 0223          subwf   rb2bus_byte_get__value,w
3071                    ; =>bit_code_emit@symbol(): sym=__z
3072                    ; No 1TEST: true.size=4 false.size=2
3073                    ; No 2TEST: true.size=4 false.size=2
3074                    ; 2GOTO: Single test with two GOTO's
3075 0189 1d03          btfss   __z___byte, __z___bit
3076 018a 2990          goto    rb2bus_byte_get__3
3077                    ; # We are being selected again:
3078                    ; line_number = 149
3079                    ;  rb2bus_selected := _true
3080                    ;info   149, 395
3081 018b 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
3082                    ; line_number = 150
3083                    ;  _adden := _false
3084                    ;info   150, 396
3085 018c 1198          bcf     _adden___byte, _adden___bit
3086            
3087                    ; line_number = 152
3088                    ;  call rb2bus_byte_put(rb2_ok)
3089                    ;info   152, 397
3090 018d 30a5          movlw   165
3091 018e 2196          call    rb2bus_byte_put
3092 018f 2992          goto    rb2bus_byte_get__4
3093                    ; 2GOTO: Starting code 2
3094   0190 :   rb2bus_byte_get__3:
3095                    ; # Somebody else is being selected; we deselect:
3096                    ; line_number = 155
3097                    ;  rb2bus_selected := _false
3098                    ;info   155, 400
3099 0190 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3100                    ; line_number = 156
3101                    ;  _adden := _true
3102                    ;info   156, 401
3103 0191 1598          bsf     _adden___byte, _adden___bit
3104            
3105   0192 :   rb2bus_byte_get__4:
3106                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3107                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3108                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3109                    ; line_number = 147
3110                    ;  if value = rb2bus_address done
3111                    ; # We want to get back to the beginning of decode:
3112                    ; line_number = 159
3113                    ;  rb2bus_error := _true
3114                    ;info   159, 402
3115 0192 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3116                    ; line_number = 160
3117                    ;  value := 0
3118                    ;info   160, 403
3119 0193 01a3          clrf    rb2bus_byte_get__value
3120            
3121                    ; Recombine size1 = 0 || size2 = 0
3122   0194 :   rb2bus_byte_get__5:
3123                    ; line_number = 145
3124                    ;  if address_bit done
3125                    ; # Regular data byte:
3126                    ; line_number = 163
3127                    ;  return value start
3128                    ; line_number = 163
3129                    ;info   163, 404
3130 0194 0823          movf    rb2bus_byte_get__value,w
3131 0195 0008          return  
3132                    ; line_number = 163
3133                    ;  return value done
3134            
3135            
3136                    ; delay after procedure statements=non-uniform
3137            
3138            
3139            
3140            
3141                    ; line_number = 166
3142                    ;info   166, 406
3143                    ; procedure rb2bus_byte_put
3144   0196 :   rb2bus_byte_put:
3145                    ; Last argument is sitting in W; save into argument variable
3146 0196 00a4          movwf   rb2bus_byte_put__value
3147                    ; delay=4294967295
3148                    ; line_number = 167
3149                    ; argument value byte
3150 00000024 = rb2bus_byte_put__value equ globals___0+4
3151                    ; line_number = 168
3152                    ;  returns_nothing
3153            
3154                    ; # This procedure will send {value} to the bus.  It automatically
3155                    ; # consumes the echo that is on the bus.  If {rb2bus_error} is
3156                    ; # set, this procedure does nothing.
3157            
3158                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3159                    ; line_number = 174
3160                    ;  if !rb2bus_error start
3161                    ;info   174, 407
3162                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
3163                    ; No 1TEST: true.size=0 false.size=18
3164                    ; No 2TEST: true.size=0 false.size=18
3165                    ; 1GOTO: Single test with GOTO
3166 0197 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
3167 0198 29ab          goto    rb2bus_byte_put__4
3168                    ; # Wait until {_txreg} is ready for a value:
3169                    ; line_number = 176
3170                    ;  while !_txif start
3171   0199 :   rb2bus_byte_put__1:
3172                    ;info   176, 409
3173                    ; =>bit_code_emit@symbol(): sym=_txif
3174                    ; No 1TEST: true.size=0 false.size=2
3175                    ; No 2TEST: true.size=0 false.size=2
3176                    ; 1GOTO: Single test with GOTO
3177 0199 1a0c          btfsc   _txif___byte, _txif___bit
3178 019a 299d          goto    rb2bus_byte_put__2
3179                    ; line_number = 177
3180                    ; call wait()
3181                    ;info   177, 411
3182 019b 20da          call    wait
3183            
3184 019c 2999          goto    rb2bus_byte_put__1
3185   019d :   rb2bus_byte_put__2:
3186                    ; Recombine size1 = 0 || size2 = 0
3187                    ; line_number = 176
3188                    ;  while !_txif done
3189                    ; # Ship {value} out to the bus with 9th bit turned off:
3190                    ; line_number = 180
3191                    ;  _adden := _false
3192                    ;info   180, 413
3193 019d 1198          bcf     _adden___byte, _adden___bit
3194                    ; line_number = 181
3195                    ;  _tx9d := _false
3196                    ;info   181, 414
3197 019e 1683          bsf     __rp0___byte, __rp0___bit
3198 019f 1018          bcf     _tx9d___byte, _tx9d___bit
3199                    ; line_number = 182
3200                    ;  _txreg := value
3201                    ;info   182, 416
3202 01a0 1283          bcf     __rp0___byte, __rp0___bit
3203 01a1 0824          movf    rb2bus_byte_put__value,w
3204 01a2 0099          movwf   _txreg
3205            
3206                    ; # Wait for the echo to show up:
3207                    ; line_number = 185
3208                    ;  while !_rcif start
3209   01a3 :   rb2bus_byte_put__3:
3210                    ;info   185, 419
3211                    ; =>bit_code_emit@symbol(): sym=_rcif
3212                    ; 1TEST: Single test with code in skip slot
3213 01a3 1e8c          btfss   _rcif___byte, _rcif___bit
3214                    ; # Still waiting:
3215 01a4 29a3          goto    rb2bus_byte_put__3
3216                    ; Recombine size1 = 0 || size2 = 0
3217                    ; line_number = 185
3218                    ;  while !_rcif done
3219                    ; # Throw the received byte away (store into {_w}).
3220                    ; line_number = 188
3221                    ;  assemble
3222                    ;info   188, 421
3223                    ; line_number = 189
3224                    ;info   189, 421
3225 01a5 081a          movf    _rcreg,w
3226            
3227                    ; # Recover from any receive errors by toggling {_cren}:
3228                    ; line_number = 192
3229                    ;  if _oerr start
3230                    ;info   192, 422
3231                    ; =>bit_code_emit@symbol(): sym=_oerr
3232                    ; 1TEST: Single test with code in skip slot
3233 01a6 1898          btfsc   _oerr___byte, _oerr___bit
3234                    ; line_number = 193
3235                    ; _cren := _false
3236                    ;info   193, 423
3237 01a7 1218          bcf     _cren___byte, _cren___bit
3238                    ; Recombine size1 = 0 || size2 = 0
3239                    ; line_number = 192
3240                    ;  if _oerr done
3241                    ; line_number = 194
3242                    ; if _ferr start
3243                    ;info   194, 424
3244                    ; =>bit_code_emit@symbol(): sym=_ferr
3245                    ; 1TEST: Single test with code in skip slot
3246 01a8 1918          btfsc   _ferr___byte, _ferr___bit
3247                    ; line_number = 195
3248                    ; _cren := _false
3249                    ;info   195, 425
3250 01a9 1218          bcf     _cren___byte, _cren___bit
3251                    ; Recombine size1 = 0 || size2 = 0
3252                    ; line_number = 194
3253                    ; if _ferr done
3254                    ; line_number = 196
3255                    ; _cren := _true
3256                    ;info   196, 426
3257 01aa 1618          bsf     _cren___byte, _cren___bit
3258            
3259            
3260   01ab :   rb2bus_byte_put__4:
3261                    ; Recombine size1 = 0 || size2 = 0
3262                    ; line_number = 174
3263                    ;  if !rb2bus_error done
3264                    ; delay after procedure statements=non-uniform
3265                    ; Implied return
3266 01ab 3400          retlw   0
3267            
3268            
3269            
3270            
3271                    ; line_number = 199
3272                    ;info   199, 428
3273                    ; procedure rb2bus_command
3274   01ac :   rb2bus_command:
3275                    ; Last argument is sitting in W; save into argument variable
3276 01ac 00a7          movwf   rb2bus_command__command
3277                    ; delay=4294967295
3278                    ; line_number = 200
3279                    ; argument command byte
3280 00000027 = rb2bus_command__command equ globals___0+7
3281                    ; line_number = 201
3282                    ;  returns_nothing
3283            
3284                    ; # This procedure will process an shared {command}.  This procedure
3285                    ; # accesses the global string {id}.
3286            
3287                    ; line_number = 206
3288                    ;  local new_address byte
3289 00000025 = rb2bus_command__new_address equ globals___0+5
3290                    ; line_number = 207
3291                    ;  local temp byte
3292 00000026 = rb2bus_command__temp equ globals___0+6
3293            
3294                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3295                    ; line_number = 209
3296                    ;  switch command & 7 start
3297                    ;info   209, 429
3298                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
3299 01ad 3001          movlw   rb2bus_command__13>>8
3300 01ae 008a          movwf   __pclath
3301 01af 3007          movlw   7
3302 01b0 0527          andwf   rb2bus_command__command,w
3303                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
3304 01b1 3eb3          addlw   rb2bus_command__13
3305 01b2 0082          movwf   __pcl
3306                    ; page_group 8
3307   01b3 :   rb2bus_command__13:
3308 01b3 29f3          goto    rb2bus_command__14
3309 01b4 29f3          goto    rb2bus_command__14
3310 01b5 29f3          goto    rb2bus_command__14
3311 01b6 29f3          goto    rb2bus_command__14
3312 01b7 29bb          goto    rb2bus_command__9
3313 01b8 29e7          goto    rb2bus_command__10
3314 01b9 29f0          goto    rb2bus_command__11
3315 01ba 29f2          goto    rb2bus_command__12
3316                    ; line_number = 210
3317                    ; case 4
3318   01bb :   rb2bus_command__9:
3319                    ; # 1111 1100 (Address_Set):
3320                    ; # Return old address:
3321                    ; line_number = 213
3322                    ;  call rb2bus_byte_put(rb2bus_address)
3323                    ;info   213, 443
3324 01bb 0820          movf    rb2bus_address,w
3325 01bc 2196          call    rb2bus_byte_put
3326            
3327                    ; # Fetch new address:
3328                    ; line_number = 216
3329                    ;  new_address := rb2bus_byte_get()
3330                    ;info   216, 445
3331 01bd 2174          call    rb2bus_byte_get
3332 01be 00a5          movwf   rb2bus_command__new_address
3333                    ; line_number = 217
3334                    ;  if new_address = 0 || new_address = rb2bus_address start
3335                    ;info   217, 447
3336                    ; Left minus Right
3337 01bf 0825          movf    rb2bus_command__new_address,w
3338                    ; =>bit_code_emit@symbol(): sym=__z
3339                    ; No 1TEST: true.size=1 false.size=36
3340                    ; No 2TEST: true.size=1 false.size=36
3341                    ; 2GOTO: Single test with two GOTO's
3342 01c0 1903          btfsc   __z___byte, __z___bit
3343 01c1 29c6          goto    rb2bus_command__5
3344                    ; Recombine code1_bit_states != code2_bit_states
3345                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3346                    ; Left minus Right
3347 01c2 0820          movf    rb2bus_address,w
3348 01c3 0225          subwf   rb2bus_command__new_address,w
3349                    ; =>bit_code_emit@symbol(): sym=__z
3350                    ; No 1TEST: true.size=4 false.size=27
3351                    ; No 2TEST: true.size=4 false.size=27
3352                    ; 2GOTO: Single test with two GOTO's
3353 01c4 1d03          btfss   __z___byte, __z___bit
3354 01c5 29cb          goto    rb2bus_command__6
3355   01c6 :   rb2bus_command__5:
3356                    ; line_number = 218
3357                    ; call rb2bus_byte_put(0)
3358                    ;info   218, 454
3359 01c6 3000          movlw   0
3360 01c7 2196          call    rb2bus_byte_put
3361                    ; line_number = 219
3362                    ;  rb2bus_error := _true
3363                    ;info   219, 456
3364 01c8 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3365                    ; line_number = 220
3366                    ;  rb2bus_selected := _false
3367                    ;info   220, 457
3368 01c9 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3369 01ca 29e6          goto    rb2bus_command__7
3370                    ; 2GOTO: Starting code 2
3371   01cb :   rb2bus_command__6:
3372                    ; # Return new address:
3373                    ; line_number = 223
3374                    ;  call rb2bus_byte_put(new_address)
3375                    ;info   223, 459
3376 01cb 0825          movf    rb2bus_command__new_address,w
3377 01cc 2196          call    rb2bus_byte_put
3378            
3379                    ; # Fetch new address again as a check:
3380                    ; line_number = 226
3381                    ;  temp := rb2bus_byte_get()
3382                    ;info   226, 461
3383 01cd 2174          call    rb2bus_byte_get
3384 01ce 00a6          movwf   rb2bus_command__temp
3385                    ; line_number = 227
3386                    ;  if temp != new_address start
3387                    ;info   227, 463
3388                    ; Left minus Right
3389 01cf 0825          movf    rb2bus_command__new_address,w
3390 01d0 0226          subwf   rb2bus_command__temp,w
3391                    ; =>bit_code_emit@symbol(): sym=__z
3392                    ; No 1TEST: true.size=14 false.size=4
3393                    ; No 2TEST: true.size=14 false.size=4
3394                    ; 2GOTO: Single test with two GOTO's
3395 01d1 1d03          btfss   __z___byte, __z___bit
3396 01d2 29e2          goto    rb2bus_command__3
3397                    ; line_number = 232
3398                    ; call rb2bus_eedata_write(new_address)
3399                    ;info   232, 467
3400 01d3 0825          movf    rb2bus_command__new_address,w
3401 01d4 220d          call    rb2bus_eedata_write
3402                    ; line_number = 233
3403                    ;  temp := rb2bus_eedata_read()
3404                    ;info   233, 469
3405 01d5 220c          call    rb2bus_eedata_read
3406 01d6 00a6          movwf   rb2bus_command__temp
3407                    ; line_number = 234
3408                    ;  if temp = new_address start
3409                    ;info   234, 471
3410                    ; Left minus Right
3411 01d7 0825          movf    rb2bus_command__new_address,w
3412 01d8 0226          subwf   rb2bus_command__temp,w
3413                    ; =>bit_code_emit@symbol(): sym=__z
3414                    ; No 1TEST: true.size=3 false.size=1
3415                    ; No 2TEST: true.size=3 false.size=1
3416                    ; 2GOTO: Single test with two GOTO's
3417 01d9 1d03          btfss   __z___byte, __z___bit
3418 01da 29df          goto    rb2bus_command__1
3419                    ; line_number = 235
3420                    ; rb2bus_address := new_address
3421                    ;info   235, 475
3422 01db 0825          movf    rb2bus_command__new_address,w
3423 01dc 00a0          movwf   rb2bus_address
3424                    ; line_number = 236
3425                    ;  call rb2bus_byte_put(rb2_ok)
3426                    ;info   236, 477
3427 01dd 30a5          movlw   165
3428 01de 29e0          goto    rb2bus_command__2
3429                    ; 2GOTO: Starting code 2
3430   01df :   rb2bus_command__1:
3431                    ; line_number = 238
3432                    ; call rb2bus_byte_put(0)
3433                    ;info   238, 479
3434 01df 3000          movlw   0
3435   01e0 :   rb2bus_command__2:
3436                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3437                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3438                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3439 01e0 2196          call    rb2bus_byte_put
3440                    ; line_number = 234
3441                    ;  if temp = new_address done
3442 01e1 29e6          goto    rb2bus_command__4
3443                    ; 2GOTO: Starting code 2
3444   01e2 :   rb2bus_command__3:
3445                    ; line_number = 228
3446                    ; call rb2bus_byte_put(0)
3447                    ;info   228, 482
3448 01e2 3000          movlw   0
3449 01e3 2196          call    rb2bus_byte_put
3450                    ; line_number = 229
3451                    ;  rb2bus_error := _true
3452                    ;info   229, 484
3453 01e4 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3454                    ; line_number = 230
3455                    ;  rb2bus_selected := _false
3456                    ;info   230, 485
3457 01e5 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3458   01e6 :   rb2bus_command__4:
3459                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3460                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3461                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3462                    ; line_number = 227
3463                    ;  if temp != new_address done
3464   01e6 :   rb2bus_command__7:
3465                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3466                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3467                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3468                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3469                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
3470                    ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
3471                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3472                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
3473                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3474                    ; line_number = 217
3475                    ;  if new_address = 0 || new_address = rb2bus_address done
3476 01e6 29f3          goto    rb2bus_command__14
3477                    ; line_number = 239
3478                    ; case 5
3479   01e7 :   rb2bus_command__10:
3480                    ; # 1111 1101 (Id_next):
3481                    ; line_number = 241
3482                    ;  if rb2bus_index < id.size start
3483                    ;info   241, 487
3484 01e7 3015          movlw   21
3485 01e8 0221          subwf   rb2bus_index,w
3486                    ; =>bit_code_emit@symbol(): sym=__c
3487                    ; No 1TEST: true.size=0 false.size=4
3488                    ; No 2TEST: true.size=0 false.size=4
3489                    ; 1GOTO: Single test with GOTO
3490 01e9 1803          btfsc   __c___byte, __c___bit
3491 01ea 29ef          goto    rb2bus_command__8
3492                    ; line_number = 242
3493                    ; call rb2bus_byte_put(id[rb2bus_index])
3494                    ;info   242, 491
3495 01eb 0821          movf    rb2bus_index,w
3496 01ec 213a          call    id
3497 01ed 2196          call    rb2bus_byte_put
3498                    ; line_number = 243
3499                    ;  rb2bus_index := rb2bus_index + 1
3500                    ;info   243, 494
3501 01ee 0aa1          incf    rb2bus_index,f
3502                    ; #if rb2bus_index >= id.size
3503                    ; #	rb2bus_index := rb2bus_index - 1
3504   01ef :   rb2bus_command__8:
3505                    ; Recombine size1 = 0 || size2 = 0
3506                    ; line_number = 241
3507                    ;  if rb2bus_index < id.size done
3508 01ef 29f3          goto    rb2bus_command__14
3509                    ; line_number = 246
3510                    ; case 6
3511   01f0 :   rb2bus_command__11:
3512                    ; # 1111 1110 (Id_start):
3513                    ; line_number = 248
3514                    ;  rb2bus_index := 0
3515                    ;info   248, 496
3516 01f0 01a1          clrf    rb2bus_index
3517 01f1 29f3          goto    rb2bus_command__14
3518                    ; line_number = 249
3519                    ; case 7
3520   01f2 :   rb2bus_command__12:
3521                    ; # 1111 1111 (Deselect):
3522                    ; line_number = 251
3523                    ;  call rb2bus_deselect()
3524                    ;info   251, 498
3525 01f2 2172          call    rb2bus_deselect
3526            
3527            
3528   01f3 :   rb2bus_command__14:
3529                    ; line_number = 209
3530                    ;  switch command & 7 done
3531                    ; delay after procedure statements=non-uniform
3532                    ; Implied return
3533 01f3 3400          retlw   0
3534            
3535            
3536            
3537            
3538                    ; buffer = 'rb2bus_pic16f628'
3539                    ; line_number = 26
3540                    ;info   26, 500
3541                    ; procedure rb2bus_initialize
3542   01f4 :   rb2bus_initialize:
3543                    ; Last argument is sitting in W; save into argument variable
3544 01f4 00a8          movwf   rb2bus_initialize__address
3545                    ; delay=4294967295
3546                    ; line_number = 27
3547                    ; argument address byte
3548 00000028 = rb2bus_initialize__address equ globals___0+8
3549                    ; line_number = 28
3550                    ;  returns_nothing
3551            
3552                    ; # This procedure is responsibile for initializing the UART
3553                    ; # connected to the bus.  {address} is the address of this
3554                    ; # slave module.  This code is specific to the PIC16F688.
3555            
3556                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3557                    ; line_number = 34
3558                    ;  rb2bus_address := address
3559                    ;info   34, 501
3560 01f5 0828          movf    rb2bus_initialize__address,w
3561 01f6 00a0          movwf   rb2bus_address
3562            
3563                    ; # Warm up the UART:
3564                    ; line_number = 37
3565                    ;  _trisb@1 := _true
3566                    ;info   37, 503
3567 00000086 = rb2bus_initialize__select__1___byte equ _trisb
3568 00000001 = rb2bus_initialize__select__1___bit equ 1
3569 01f7 1683          bsf     __rp0___byte, __rp0___bit
3570 01f8 1486          bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
3571                    ; line_number = 38
3572                    ;  _trisb@2 := _true
3573                    ;info   38, 505
3574 00000086 = rb2bus_initialize__select__2___byte equ _trisb
3575 00000002 = rb2bus_initialize__select__2___bit equ 2
3576 01f9 1506          bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit
3577            
3578                    ; # Initialize the {_txsta} register:
3579                    ; line_number = 41
3580                    ;  _txsta := 0
3581                    ;info   41, 506
3582 01fa 0198          clrf    _txsta
3583                    ; line_number = 42
3584                    ;  _tx9 := _true
3585                    ;info   42, 507
3586 01fb 1718          bsf     _tx9___byte, _tx9___bit
3587                    ; line_number = 43
3588                    ;  _txen := _true
3589                    ;info   43, 508
3590 01fc 1698          bsf     _txen___byte, _txen___bit
3591                    ; line_number = 44
3592                    ;  _brgh := _true
3593                    ;info   44, 509
3594 01fd 1518          bsf     _brgh___byte, _brgh___bit
3595            
3596                    ; # Initialize the {_rcsta} register:
3597                    ; line_number = 47
3598                    ;  _rcsta := 0
3599                    ;info   47, 510
3600 01fe 1283          bcf     __rp0___byte, __rp0___bit
3601 01ff 0198          clrf    _rcsta
3602                    ; line_number = 48
3603                    ;  _spen := _true
3604                    ;info   48, 512
3605 0200 1798          bsf     _spen___byte, _spen___bit
3606                    ; line_number = 49
3607                    ;  _rx9 := _true
3608                    ;info   49, 513
3609 0201 1718          bsf     _rx9___byte, _rx9___bit
3610                    ; line_number = 50
3611                    ;  _cren := _true
3612                    ;info   50, 514
3613 0202 1618          bsf     _cren___byte, _cren___bit
3614                    ; #_adden := _true
3615                    ; line_number = 52
3616                    ;  _adden := _false
3617                    ;info   52, 515
3618 0203 1198          bcf     _adden___byte, _adden___bit
3619            
3620                    ; # Set up the baud rate generator:
3621                    ; line_number = 55
3622                    ;  _spbrg := spbrg_500k
3623                    ;info   55, 516
3624 0204 3001          movlw   1
3625 0205 1683          bsf     __rp0___byte, __rp0___bit
3626 0206 0099          movwf   _spbrg
3627            
3628                    ; line_number = 57
3629                    ;  rb2bus_selected := _false
3630                    ;info   57, 519
3631 0207 1283          bcf     __rp0___byte, __rp0___bit
3632 0208 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3633                    ; line_number = 58
3634                    ;  rb2bus_error := _false
3635                    ;info   58, 521
3636 0209 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
3637                    ; line_number = 59
3638                    ;  rb2bus_index := 0
3639                    ;info   59, 522
3640 020a 01a1          clrf    rb2bus_index
3641            
3642                    ; delay after procedure statements=non-uniform
3643                    ; Implied return
3644 020b 3400          retlw   0
3645            
3646            
3647            
3648            
3649                    ; line_number = 61
3650                    ;info   61, 524
3651                    ; procedure rb2bus_eedata_read
3652   020c :   rb2bus_eedata_read:
3653                    ; arguments_none
3654                    ; line_number = 63
3655                    ;  returns byte
3656            
3657                    ; # This procedure will return the address stored in EEData.  If
3658                    ; # there is no data, 0 is returned.
3659            
3660                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3661                    ; line_number = 68
3662                    ;  return 0 start
3663                    ; line_number = 68
3664                    ;info   68, 524
3665 020c 3400          retlw   0
3666                    ; line_number = 68
3667                    ;  return 0 done
3668            
3669            
3670                    ; delay after procedure statements=non-uniform
3671            
3672            
3673            
3674            
3675                    ; line_number = 71
3676                    ;info   71, 525
3677                    ; procedure rb2bus_eedata_write
3678   020d :   rb2bus_eedata_write:
3679                    ; Last argument is sitting in W; save into argument variable
3680 020d 00a9          movwf   rb2bus_eedata_write__address
3681                    ; delay=4294967295
3682                    ; line_number = 72
3683                    ; argument address byte
3684 00000029 = rb2bus_eedata_write__address equ globals___0+9
3685                    ; line_number = 73
3686                    ;  returns_nothing
3687            
3688                    ; # This procedure will write {address} into the EEData.  The
3689                    ; # microcontroll pauses while the EEData is written.
3690            
3691                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3692                    ; line_number = 78
3693                    ;  do_nothing
3694                    ;info   78, 526
3695            
3696            
3697            
3698            
3699                    ; delay after procedure statements=non-uniform
3700                    ; Implied return
3701 020e 3400          retlw   0
3702            
3703            
3704            
3705            
3706                    ; Configuration bits
3707                    ; address = 0x2007, fill = 0x200
3708                    ; cp = off (0x3c00)
3709                    ; cpd = off (0x100)
3710                    ; lvp = off (0x0)
3711                    ; boden = off (0x0)
3712                    ; mclre = off (0x0)
3713                    ; pwrte = off (0x8)
3714                    ; wdte = off (0x0)
3715                    ; fosc = hs (0x2)
3716                    ; 16138 = 0x3f0a
3717   3f0a =           __config 16138
3718                    ; Define start addresses for data regions
3719                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
3720                    ; Region="globals___0" Address=32" Size=80 Bytes=66 Bits=6 Available=13
3721                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
3722                    ; Region="globals___2" Address=288" Size=48 Bytes=0 Bits=0 Available=48
3723                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
3724                    end
