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) 2005-2006 by Wayne C. Gramlich
31                      ; # All rights reserved.
32              
33                      ; # This module uses a PIC16F688:
34                      ; buffer = 'io8'
35                      ; line_number = 7
36                      ; library _pic16f688 entered
37              
38                      ; # Copyright (c) 2004-2006 by Wayne C. Gramlich
39                      ; # All rights reserved.
40              
41                      ; buffer = '_pic16f688'
42                      ; line_number = 6
43                      ; processor pic16f688
44                      ; line_number = 7
45                      ; configure_address 0x2007
46                      ; line_number = 8
47                      ;  configure_fill 0x3000
48                      ; line_number = 9
49                      ;  configure_option fcmen: on = 0x800
50                      ; line_number = 10
51                      ;  configure_option fcmen: off = 0x000
52                      ; line_number = 11
53                      ;  configure_option ieso: on = 0x400
54                      ; line_number = 12
55                      ;  configure_option ieso: off = 0x000
56                      ; line_number = 13
57                      ;  configure_option boden: on = 0x300
58                      ; line_number = 14
59                      ;  configure_option boden: partial = 0x200
60                      ; line_number = 15
61                      ;  configure_option boden: sboden = 0x100
62                      ; line_number = 16
63                      ;  configure_option boden: off = 0x000
64                      ; line_number = 17
65                      ;  configure_option cpd: on = 0x00
66                      ; line_number = 18
67                      ;  configure_option cpd: off = 0x80
68                      ; line_number = 19
69                      ;  configure_option cp: on = 0x00
70                      ; line_number = 20
71                      ;  configure_option cp: off = 0x40
72                      ; line_number = 21
73                      ;  configure_option mclre: on = 0x20
74                      ; line_number = 22
75                      ;  configure_option mclre: off = 0x00
76                      ; line_number = 23
77                      ;  configure_option pwrte: on = 0x00
78                      ; line_number = 24
79                      ;  configure_option pwrte: off = 0x10
80                      ; line_number = 25
81                      ;  configure_option wdte: on = 8
82                      ; line_number = 26
83                      ;  configure_option wdte: off = 0
84                      ; line_number = 27
85                      ;  configure_option fosc: rc_clk = 7
86                      ; line_number = 28
87                      ;  configure_option fosc: rc_no_clk = 6
88                      ; line_number = 29
89                      ;  configure_option fosc: int_clk = 5
90                      ; line_number = 30
91                      ;  configure_option fosc: int_no_clk = 4
92                      ; line_number = 31
93                      ;  configure_option fosc: ec = 3
94                      ; line_number = 32
95                      ;  configure_option fosc: hs = 2
96                      ; line_number = 33
97                      ;  configure_option fosc: xt = 1
98                      ; line_number = 34
99                      ;  configure_option fosc: lp = 0
100             
101                     ; line_number = 36
102                     ;  code_bank 0x0 : 0x7ff
103                     ; line_number = 37
104                     ;  code_bank 0x800 : 0xfff
105                     ; line_number = 38
106                     ;  data_bank 0x0 : 0x7f
107                     ; line_number = 39
108                     ;  data_bank 0x80 : 0xff
109                     ; line_number = 40
110                     ;  data_bank 0x100 : 0x17f
111                     ; line_number = 41
112                     ;  data_bank 0x180 : 0x1ff
113             
114                     ; line_number = 43
115                     ;  global_region 0x20 : 0x6f
116                     ; line_number = 44
117                     ;  icd2_global_region 0x20 : 0x6f
118             
119                     ; line_number = 46
120                     ;  global_region 0xa0 : 0xef
121                     ; line_number = 47
122                     ;  icd2_global_region 0xa0 : 0xef
123             
124                     ; line_number = 49
125                     ;  global_region 0x120 : 0x16f
126                     ; line_number = 50
127                     ;  icd2_global_region 0x120 : 0x164
128             
129                     ; line_number = 52
130                     ;  shared_region 0x70 : 0x7f
131                     ; line_number = 53
132                     ;  icd2_shared_region 0x71 : 0x7f
133             
134                     ; line_number = 55
135                     ;  interrupts_possible
136                     ; line_number = 56
137                     ;  packages pdip=14, soic=14, tssop=14
138                     ; line_number = 57
139                     ;  pin vdd, power_supply
140                     ; line_number = 58
141                     ; pin_bindings pdip=1, soic=1, tssop=1
142                     ; line_number = 59
143                     ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin
144                     ; line_number = 60
145                     ; pin_bindings pdip=2, soic=2, tssop=2
146                     ; line_number = 61
147                     ;  bind_to _porta@5
148                     ; line_number = 62
149                     ;  or_if ra5_in _trisa 32
150                     ; line_number = 63
151                     ;  or_if ra5_nc _trisa 32
152                     ; line_number = 64
153                     ;  or_if ra5_out _trisa 0
154                     ; line_number = 65
155                     ;  or_if osc1 _trisa 32
156                     ; line_number = 66
157                     ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout
158                     ; line_number = 67
159                     ; pin_bindings pdip=3, soic=3, tssop=3
160                     ; line_number = 68
161                     ;  bind_to _porta@4
162                     ; line_number = 69
163                     ;  or_if ra4_in _trisa 16
164                     ; line_number = 70
165                     ;  or_if ra4_nc _trisa 16
166                     ; line_number = 71
167                     ;  or_if ra4_out _trisa 0
168                     ; line_number = 72
169                     ;  or_if an3 _trisa 16
170                     ; line_number = 73
171                     ;  or_if osc2 _trisa 16
172                     ; line_number = 74
173                     ;  or_if ra4_in _ansel 0
174                     ; line_number = 75
175                     ;  or_if ra4_out _ansel 0
176                     ; line_number = 76
177                     ;  or_if an3 _ansel 8
178                     ; line_number = 77
179                     ;  or_if ra4_in _adcon0 0
180                     ; line_number = 78
181                     ;  or_if ra4_out _adcon0 0
182                     ; line_number = 79
183                     ;  or_if an3 _adcon0 1
184                     ; line_number = 80
185                     ; pin ra3_in, ra3_nc, mclr, vpp
186                     ; line_number = 81
187                     ; pin_bindings pdip=4, soic=4, tssop=4
188                     ; line_number = 82
189                     ;  bind_to _porta@3
190                     ; line_number = 83
191                     ;  or_if ra3_in _trisa 8
192                     ; line_number = 84
193                     ;  or_if ra3_nc _trisa 8
194                     ; line_number = 85
195                     ; pin rc5_in, rc5_nc, rc5_out, rx, dt
196                     ; line_number = 86
197                     ; pin_bindings pdip=5, soic=5, tssop=5
198                     ; line_number = 87
199                     ;  bind_to _portc@5
200                     ; line_number = 88
201                     ;  or_if rc5_in _trisc 32
202                     ; line_number = 89
203                     ;  or_if rc5_nc _trisc 32
204                     ; line_number = 90
205                     ;  or_if rc5_out _trisc 0
206                     ; line_number = 91
207                     ;  or_if rx _trisc 32
208                     ; line_number = 92
209                     ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck
210                     ; line_number = 93
211                     ; pin_bindings pdip=6, soic=6, tssop=6
212                     ; line_number = 94
213                     ;  bind_to _portc@4
214                     ; line_number = 95
215                     ;  or_if rc4_in _trisc 16
216                     ; line_number = 96
217                     ;  or_if rc4_nc _trisc 16
218                     ; line_number = 97
219                     ;  or_if rc4_out _trisc 0
220                     ; # The UART documentation says TX must be marked as in input:
221                     ; line_number = 99
222                     ;  or_if tx _trisc 16
223                     ; line_number = 100
224                     ; pin rc3_in, rc3_nc, rc3_out, an7
225                     ; line_number = 101
226                     ; pin_bindings pdip=7, soic=7, tssop=7
227                     ; line_number = 102
228                     ;  bind_to _portc@3
229                     ; line_number = 103
230                     ;  or_if rc3_in _trisc 8
231                     ; line_number = 104
232                     ;  or_if rc3_nc _trisc 8
233                     ; line_number = 105
234                     ;  or_if rc3_out _trisc 0
235                     ; line_number = 106
236                     ;  or_if an7 _trisc 8
237                     ; line_number = 107
238                     ;  or_if rc3_in _ansel 0
239                     ; line_number = 108
240                     ;  or_if rc3_out _ansel 0
241                     ; line_number = 109
242                     ;  or_if an7 _ansel 128
243                     ; line_number = 110
244                     ;  or_if rc3_in _adcon0 0
245                     ; line_number = 111
246                     ;  or_if rc3_out _adcon0 0
247                     ; line_number = 112
248                     ;  or_if an7 _adcon0 1
249                     ; line_number = 113
250                     ; pin rc2_in, rc2_nc, rc2_out, an6
251                     ; line_number = 114
252                     ; pin_bindings pdip=8, soic=8, tssop=8
253                     ; line_number = 115
254                     ;  bind_to _portc@2
255                     ; line_number = 116
256                     ;  or_if rc2_in _trisc 4
257                     ; line_number = 117
258                     ;  or_if rc2_nc _trisc 4
259                     ; line_number = 118
260                     ;  or_if rc2_out _trisc 0
261                     ; line_number = 119
262                     ;  or_if an6 _trisc 4
263                     ; line_number = 120
264                     ;  or_if rc2_in _ansel 0
265                     ; line_number = 121
266                     ;  or_if rc2_out _ansel 0
267                     ; line_number = 122
268                     ;  or_if an6 _ansel 64
269                     ; line_number = 123
270                     ;  or_if rc2_in _adcon0 0
271                     ; line_number = 124
272                     ;  or_if rc2_out _adcon0 0
273                     ; line_number = 125
274                     ;  or_if an6 _adcon0 1
275                     ; line_number = 126
276                     ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus
277                     ; line_number = 127
278                     ; pin_bindings pdip=9, soic=9, tssop=9
279                     ; line_number = 128
280                     ;  bind_to _portc@1
281                     ; line_number = 129
282                     ;  or_if rc1_in _trisc 2
283                     ; line_number = 130
284                     ;  or_if rc1_nc _trisc 2
285                     ; line_number = 131
286                     ;  or_if rc1_out _trisc 0
287                     ; line_number = 132
288                     ;  or_if rc1_in _cmcon0 7
289                     ; line_number = 133
290                     ;  or_if rc1_out _cmcon0 7
291                     ; line_number = 134
292                     ;  or_if an5 _trisc 2
293                     ; line_number = 135
294                     ;  or_if rc1_in _ansel 0
295                     ; line_number = 136
296                     ;  or_if rc1_out _ansel 0
297                     ; line_number = 137
298                     ;  or_if an5 _ansel 32
299                     ; line_number = 138
300                     ;  or_if rc1_in _adcon0 0
301                     ; line_number = 139
302                     ;  or_if rc1_out _adcon0 0
303                     ; line_number = 140
304                     ;  or_if an5 _adcon0 1
305                     ; line_number = 141
306                     ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus
307                     ; line_number = 142
308                     ; pin_bindings pdip=10, soic=10, tssop=10
309                     ; line_number = 143
310                     ;  bind_to _portc@0
311                     ; line_number = 144
312                     ;  or_if rc0_in _trisc 1
313                     ; line_number = 145
314                     ;  or_if rc0_nc _trisc 1
315                     ; line_number = 146
316                     ;  or_if rc0_out _trisc 0
317                     ; line_number = 147
318                     ;  or_if rc0_in _cmcon0 7
319                     ; line_number = 148
320                     ;  or_if rc0_out _cmcon0 7
321                     ; line_number = 149
322                     ;  or_if an4 _trisc 1
323                     ; line_number = 150
324                     ;  or_if rc0_in _ansel 0
325                     ; line_number = 151
326                     ;  or_if rc0_out _ansel 0
327                     ; line_number = 152
328                     ;  or_if an4 _ansel 16
329                     ; line_number = 153
330                     ;  or_if rc0_in _adcon0 0
331                     ; line_number = 154
332                     ;  or_if rc0_out _adcon0 0
333                     ; line_number = 155
334                     ;  or_if an4 _adcon0 1
335                     ; line_number = 156
336                     ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int
337                     ; line_number = 157
338                     ; pin_bindings pdip=11, soic=11, tssop=11
339                     ; line_number = 158
340                     ;  bind_to _porta@2
341                     ; line_number = 159
342                     ;  or_if ra2_in _trisa 4
343                     ; line_number = 160
344                     ;  or_if ra2_nc _trisa 4
345                     ; line_number = 161
346                     ;  or_if ra2_out _trisa 0
347                     ; line_number = 162
348                     ;  or_if an2 _trisa 4
349                     ; line_number = 163
350                     ;  or_if ra2_in _ansel 0
351                     ; line_number = 164
352                     ;  or_if ra2_out _ansel 0
353                     ; line_number = 165
354                     ;  or_if an2 _ansel 4
355                     ; line_number = 166
356                     ;  or_if ra2_in _adcon0 0
357                     ; line_number = 167
358                     ;  or_if ra2_out _adcon0 0
359                     ; line_number = 168
360                     ;  or_if an2 _adcon0 1
361                     ; line_number = 169
362                     ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk
363                     ; line_number = 170
364                     ; pin_bindings pdip=12, soic=12, tssop=12
365                     ; line_number = 171
366                     ;  bind_to _porta@1
367                     ; line_number = 172
368                     ;  or_if ra1_in _trisa 2
369                     ; line_number = 173
370                     ;  or_if ra1_nc _trisa 2
371                     ; line_number = 174
372                     ;  or_if ra1_out _trisa 0
373                     ; line_number = 175
374                     ;  or_if ra1_in _cmcon0 7
375                     ; line_number = 176
376                     ;  or_if ra1_out _cmcon0 7
377                     ; line_number = 177
378                     ;  or_if an1 _trisa 2
379                     ; line_number = 178
380                     ;  or_if vref _trisa 2
381                     ; line_number = 179
382                     ;  or_if ra1_in _ansel 0
383                     ; line_number = 180
384                     ;  or_if ra1_out _ansel 0
385                     ; line_number = 181
386                     ;  or_if an1 _ansel 2
387                     ; line_number = 182
388                     ;  or_if vref _ansel 2
389                     ; line_number = 183
390                     ;  or_if ra1_in _adcon0 0
391                     ; line_number = 184
392                     ;  or_if ra1_out _adcon0 0
393                     ; line_number = 185
394                     ;  or_if an1 _adcon0 1		# Turn on _addon
395                     ; line_number = 186
396                     ;  or_if vref _adcon0 1		# Turn on _addon
397                     ; line_number = 187
398                     ;  or_if vref _adcon0 64		# Turn of _vcfg
399                     ; line_number = 188
400                     ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu
401                     ; line_number = 189
402                     ; pin_bindings pdip=13, soic=13, tssop=13
403                     ; line_number = 190
404                     ;  bind_to _porta@0
405                     ; line_number = 191
406                     ;  or_if ra0_in _trisa 1
407                     ; line_number = 192
408                     ;  or_if ra0_nc _trisa 1
409                     ; line_number = 193
410                     ;  or_if ra0_out _trisa 0
411                     ; line_number = 194
412                     ;  or_if ra0_in _cmcon0 7
413                     ; line_number = 195
414                     ;  or_if ra0_out _cmcon0 7
415                     ; line_number = 196
416                     ;  or_if an0 _trisa 1
417                     ; line_number = 197
418                     ;  or_if ra0_in _ansel 0
419                     ; line_number = 198
420                     ;  or_if ra0_out _ansel 0
421                     ; line_number = 199
422                     ;  or_if an0 _ansel 1
423                     ; line_number = 200
424                     ;  or_if ra0_in _adcon0 0
425                     ; line_number = 201
426                     ;  or_if ra0_out _adcon0 0
427                     ; line_number = 202
428                     ;  or_if an0 _adcon0 1
429                     ; line_number = 203
430                     ; pin vss, ground
431                     ; line_number = 204
432                     ; pin_bindings pdip=14, soic=14, tssop=14
433             
434                     ; line_number = 206
435                     ; library _standard entered
436             
437                     ; # Copyright (c) 2006 by Wayne C. Gramlich
438                     ; # All rights reserved.
439             
440                     ; # Standard definition for uCL:
441             
442                     ; buffer = '_standard'
443                     ; line_number = 8
444                     ; constant _true = (1 = 1)
445  00000001 = _true equ 1
446                     ; line_number = 9
447                     ; constant _false = (0 != 0)
448  00000000 = _false equ 0
449             
450             
451                     ; buffer = '_pic16f688'
452                     ; line_number = 206
453                     ; library _standard exited
454             
455             
456                     ; # Register/bit bindings:
457             
458                     ; # Databank 0 (0x0 - 0x7f):
459             
460                     ; line_number = 217
461                     ; register _indf = 
462  00000000 = _indf equ 0
463             
464                     ; line_number = 219
465                     ; register _tmr0 = 
466  00000001 = _tmr0 equ 1
467             
468                     ; line_number = 221
469                     ; register _pcl = 
470  00000002 = _pcl equ 2
471             
472                     ; line_number = 223
473                     ; register _status = 
474  00000003 = _status equ 3
475                     ; line_number = 224
476                     ; bind _irp = _status@7
477  00000003 = _irp___byte equ _status
478  00000007 = _irp___bit equ 7
479                     ; line_number = 225
480                     ; bind _rp1 = _status@5
481  00000003 = _rp1___byte equ _status
482  00000005 = _rp1___bit equ 5
483                     ; line_number = 226
484                     ; bind _rp0 = _status@5
485  00000003 = _rp0___byte equ _status
486  00000005 = _rp0___bit equ 5
487                     ; line_number = 227
488                     ; bind _to = _status@4
489  00000003 = _to___byte equ _status
490  00000004 = _to___bit equ 4
491                     ; line_number = 228
492                     ; bind _pd = _status@3
493  00000003 = _pd___byte equ _status
494  00000003 = _pd___bit equ 3
495                     ; line_number = 229
496                     ; bind _z = _status@2
497  00000003 = _z___byte equ _status
498  00000002 = _z___bit equ 2
499                     ; line_number = 230
500                     ; bind _dc = _status@1
501  00000003 = _dc___byte equ _status
502  00000001 = _dc___bit equ 1
503                     ; line_number = 231
504                     ; bind _c = _status@0
505  00000003 = _c___byte equ _status
506  00000000 = _c___bit equ 0
507             
508                     ; line_number = 233
509                     ; register _fsr = 
510  00000004 = _fsr equ 4
511             
512                     ; line_number = 235
513                     ; register _porta = 
514  00000005 = _porta equ 5
515                     ; line_number = 236
516                     ; register _ra = 
517  00000005 = _ra equ 5
518                     ; line_number = 237
519                     ; bind _ra5 = _porta@5
520  00000005 = _ra5___byte equ _porta
521  00000005 = _ra5___bit equ 5
522                     ; line_number = 238
523                     ; bind _ra4 = _porta@4
524  00000005 = _ra4___byte equ _porta
525  00000004 = _ra4___bit equ 4
526                     ; line_number = 239
527                     ; bind _ra3 = _porta@3
528  00000005 = _ra3___byte equ _porta
529  00000003 = _ra3___bit equ 3
530                     ; line_number = 240
531                     ; bind _ra2 = _porta@2
532  00000005 = _ra2___byte equ _porta
533  00000002 = _ra2___bit equ 2
534                     ; line_number = 241
535                     ; bind _ra1 = _porta@1
536  00000005 = _ra1___byte equ _porta
537  00000001 = _ra1___bit equ 1
538                     ; line_number = 242
539                     ; bind _ra0 = _porta@0
540  00000005 = _ra0___byte equ _porta
541  00000000 = _ra0___bit equ 0
542             
543                     ; line_number = 244
544                     ; register _portc = 
545  00000007 = _portc equ 7
546                     ; line_number = 245
547                     ; register _rc = 
548  00000007 = _rc equ 7
549                     ; line_number = 246
550                     ; bind _rc5 = _portc@5
551  00000007 = _rc5___byte equ _portc
552  00000005 = _rc5___bit equ 5
553                     ; line_number = 247
554                     ; bind _rc4 = _portc@4
555  00000007 = _rc4___byte equ _portc
556  00000004 = _rc4___bit equ 4
557                     ; line_number = 248
558                     ; bind _rc3 = _portc@3
559  00000007 = _rc3___byte equ _portc
560  00000003 = _rc3___bit equ 3
561                     ; line_number = 249
562                     ; bind _rc2 = _portc@2
563  00000007 = _rc2___byte equ _portc
564  00000002 = _rc2___bit equ 2
565                     ; line_number = 250
566                     ; bind _rc1 = _portc@1
567  00000007 = _rc1___byte equ _portc
568  00000001 = _rc1___bit equ 1
569                     ; line_number = 251
570                     ; bind _rc0 = _portc@0
571  00000007 = _rc0___byte equ _portc
572  00000000 = _rc0___bit equ 0
573             
574                     ; line_number = 253
575                     ; register _pclath = 
576  0000000a = _pclath equ 10
577             
578                     ; line_number = 255
579                     ; register _intcon = 
580  0000000b = _intcon equ 11
581                     ; line_number = 256
582                     ; bind _gie = _intcon@7
583  0000000b = _gie___byte equ _intcon
584  00000007 = _gie___bit equ 7
585                     ; line_number = 257
586                     ; bind _peie = _intcon@6
587  0000000b = _peie___byte equ _intcon
588  00000006 = _peie___bit equ 6
589                     ; line_number = 258
590                     ; bind _t0ie = _intcon@5
591  0000000b = _t0ie___byte equ _intcon
592  00000005 = _t0ie___bit equ 5
593                     ; line_number = 259
594                     ; bind _inte = _intcon@4
595  0000000b = _inte___byte equ _intcon
596  00000004 = _inte___bit equ 4
597                     ; line_number = 260
598                     ; bind _raie = _intcon@3
599  0000000b = _raie___byte equ _intcon
600  00000003 = _raie___bit equ 3
601                     ; line_number = 261
602                     ; bind _t0if = _intcon@2
603  0000000b = _t0if___byte equ _intcon
604  00000002 = _t0if___bit equ 2
605                     ; line_number = 262
606                     ; bind _intf = _intcon@1
607  0000000b = _intf___byte equ _intcon
608  00000001 = _intf___bit equ 1
609                     ; line_number = 263
610                     ; bind _raif = _intcon@0
611  0000000b = _raif___byte equ _intcon
612  00000000 = _raif___bit equ 0
613             
614                     ; line_number = 265
615                     ; register _pir1 = 
616  0000000c = _pir1 equ 12
617                     ; line_number = 266
618                     ; bind _eeif = _pir1@7
619  0000000c = _eeif___byte equ _pir1
620  00000007 = _eeif___bit equ 7
621                     ; line_number = 267
622                     ; bind _adif = _pir1@6
623  0000000c = _adif___byte equ _pir1
624  00000006 = _adif___bit equ 6
625                     ; line_number = 268
626                     ; bind _rcif = _pir1@5
627  0000000c = _rcif___byte equ _pir1
628  00000005 = _rcif___bit equ 5
629                     ; line_number = 269
630                     ; bind _c2if = _pir1@4
631  0000000c = _c2if___byte equ _pir1
632  00000004 = _c2if___bit equ 4
633                     ; line_number = 270
634                     ; bind _c1if = _pir1@3
635  0000000c = _c1if___byte equ _pir1
636  00000003 = _c1if___bit equ 3
637                     ; line_number = 271
638                     ; bind _osfif = _pir1@2
639  0000000c = _osfif___byte equ _pir1
640  00000002 = _osfif___bit equ 2
641                     ; line_number = 272
642                     ; bind _txif = _pir1@1
643  0000000c = _txif___byte equ _pir1
644  00000001 = _txif___bit equ 1
645                     ; line_number = 273
646                     ; bind _tmr1if = _pir1@0
647  0000000c = _tmr1if___byte equ _pir1
648  00000000 = _tmr1if___bit equ 0
649             
650                     ; line_number = 275
651                     ; register _tmr1l = 
652  0000000e = _tmr1l equ 14
653             
654                     ; line_number = 277
655                     ; register _tmr1h = 
656  0000000f = _tmr1h equ 15
657             
658                     ; line_number = 279
659                     ; register _t1con = 
660  00000010 = _t1con equ 16
661                     ; line_number = 280
662                     ; bind t1ginv = _t1con@7
663  00000010 = t1ginv___byte equ _t1con
664  00000007 = t1ginv___bit equ 7
665                     ; line_number = 281
666                     ; bind _tmr1ge = _t1con@6
667  00000010 = _tmr1ge___byte equ _t1con
668  00000006 = _tmr1ge___bit equ 6
669                     ; line_number = 282
670                     ; bind _t1ckps1 = _t1con@5
671  00000010 = _t1ckps1___byte equ _t1con
672  00000005 = _t1ckps1___bit equ 5
673                     ; line_number = 283
674                     ; bind _t1ckps0 = _t1con@4
675  00000010 = _t1ckps0___byte equ _t1con
676  00000004 = _t1ckps0___bit equ 4
677                     ; line_number = 284
678                     ; bind _t1oscen = _t1con@3
679  00000010 = _t1oscen___byte equ _t1con
680  00000003 = _t1oscen___bit equ 3
681                     ; line_number = 285
682                     ; bind _t1sync = _t1con@2
683  00000010 = _t1sync___byte equ _t1con
684  00000002 = _t1sync___bit equ 2
685                     ; line_number = 286
686                     ; bind _tmr1cs = _t1con@1
687  00000010 = _tmr1cs___byte equ _t1con
688  00000001 = _tmr1cs___bit equ 1
689                     ; line_number = 287
690                     ; bind _tmr1on = _t1con@0
691  00000010 = _tmr1on___byte equ _t1con
692  00000000 = _tmr1on___bit equ 0
693             
694                     ; line_number = 289
695                     ; register _baudctl = 
696  00000011 = _baudctl equ 17
697                     ; line_number = 290
698                     ; bind _abdovf = _baudctl@7
699  00000011 = _abdovf___byte equ _baudctl
700  00000007 = _abdovf___bit equ 7
701                     ; line_number = 291
702                     ; bind _rcidl = _baudctl@6
703  00000011 = _rcidl___byte equ _baudctl
704  00000006 = _rcidl___bit equ 6
705                     ; line_number = 292
706                     ; bind _sckp = _baudctl@4
707  00000011 = _sckp___byte equ _baudctl
708  00000004 = _sckp___bit equ 4
709                     ; line_number = 293
710                     ; bind _brg16 = _baudctl@3
711  00000011 = _brg16___byte equ _baudctl
712  00000003 = _brg16___bit equ 3
713                     ; line_number = 294
714                     ; bind _wue = _baudctl@1
715  00000011 = _wue___byte equ _baudctl
716  00000001 = _wue___bit equ 1
717                     ; line_number = 295
718                     ; bind _abden = _baudctl@0
719  00000011 = _abden___byte equ _baudctl
720  00000000 = _abden___bit equ 0
721             
722                     ; line_number = 297
723                     ; register _spbrgh = 
724  00000012 = _spbrgh equ 18
725             
726                     ; line_number = 299
727                     ; register _spbrg = 
728  00000013 = _spbrg equ 19
729             
730                     ; line_number = 301
731                     ; register _rcreg = 
732  00000014 = _rcreg equ 20
733             
734                     ; line_number = 303
735                     ; register _txreg = 
736  00000015 = _txreg equ 21
737             
738                     ; line_number = 305
739                     ; register _txsta = 
740  00000016 = _txsta equ 22
741                     ; line_number = 306
742                     ; bind _csrc = _txsta@7
743  00000016 = _csrc___byte equ _txsta
744  00000007 = _csrc___bit equ 7
745                     ; line_number = 307
746                     ; bind _tx9 = _txsta@6
747  00000016 = _tx9___byte equ _txsta
748  00000006 = _tx9___bit equ 6
749                     ; line_number = 308
750                     ; bind _txen = _txsta@5
751  00000016 = _txen___byte equ _txsta
752  00000005 = _txen___bit equ 5
753                     ; line_number = 309
754                     ; bind _sync = _txsta@4
755  00000016 = _sync___byte equ _txsta
756  00000004 = _sync___bit equ 4
757                     ; line_number = 310
758                     ; bind _sendb = _txsta@3
759  00000016 = _sendb___byte equ _txsta
760  00000003 = _sendb___bit equ 3
761                     ; line_number = 311
762                     ; bind _brgh = _txsta@2
763  00000016 = _brgh___byte equ _txsta
764  00000002 = _brgh___bit equ 2
765                     ; line_number = 312
766                     ; bind _trmt = _txsta@1
767  00000016 = _trmt___byte equ _txsta
768  00000001 = _trmt___bit equ 1
769                     ; line_number = 313
770                     ; bind _tx9d = _txsta@0
771  00000016 = _tx9d___byte equ _txsta
772  00000000 = _tx9d___bit equ 0
773             
774                     ; line_number = 315
775                     ; register _rcsta = 
776  00000017 = _rcsta equ 23
777                     ; line_number = 316
778                     ; bind _spen = _rcsta@7
779  00000017 = _spen___byte equ _rcsta
780  00000007 = _spen___bit equ 7
781                     ; line_number = 317
782                     ; bind _rx9 = _rcsta@6
783  00000017 = _rx9___byte equ _rcsta
784  00000006 = _rx9___bit equ 6
785                     ; line_number = 318
786                     ; bind _sren = _rcsta@5
787  00000017 = _sren___byte equ _rcsta
788  00000005 = _sren___bit equ 5
789                     ; line_number = 319
790                     ; bind _cren = _rcsta@4
791  00000017 = _cren___byte equ _rcsta
792  00000004 = _cren___bit equ 4
793                     ; line_number = 320
794                     ; bind _adden = _rcsta@3
795  00000017 = _adden___byte equ _rcsta
796  00000003 = _adden___bit equ 3
797                     ; line_number = 321
798                     ; bind _ferr = _rcsta@2
799  00000017 = _ferr___byte equ _rcsta
800  00000002 = _ferr___bit equ 2
801                     ; line_number = 322
802                     ; bind _oerr = _rcsta@1
803  00000017 = _oerr___byte equ _rcsta
804  00000001 = _oerr___bit equ 1
805                     ; line_number = 323
806                     ; bind _rx9d = _rcsta@0
807  00000017 = _rx9d___byte equ _rcsta
808  00000000 = _rx9d___bit equ 0
809             
810                     ; line_number = 325
811                     ; register _wdtcon = 
812  00000018 = _wdtcon equ 24
813                     ; line_number = 326
814                     ; bind _wdtps3 = _wdtcon@4
815  00000018 = _wdtps3___byte equ _wdtcon
816  00000004 = _wdtps3___bit equ 4
817                     ; line_number = 327
818                     ; bind _wdtps2 = _wdtcon@3
819  00000018 = _wdtps2___byte equ _wdtcon
820  00000003 = _wdtps2___bit equ 3
821                     ; line_number = 328
822                     ; bind _wdtps1 = _wdtcon@2
823  00000018 = _wdtps1___byte equ _wdtcon
824  00000002 = _wdtps1___bit equ 2
825                     ; line_number = 329
826                     ; bind _wdtps0 = _wdtcon@1
827  00000018 = _wdtps0___byte equ _wdtcon
828  00000001 = _wdtps0___bit equ 1
829                     ; line_number = 330
830                     ; bind _swdten = _wdtcon@0
831  00000018 = _swdten___byte equ _wdtcon
832  00000000 = _swdten___bit equ 0
833             
834                     ; line_number = 332
835                     ; register _cmcon0 = 
836  00000019 = _cmcon0 equ 25
837                     ; line_number = 333
838                     ; bind _c1out = _cmcon0@7
839  00000019 = _c1out___byte equ _cmcon0
840  00000007 = _c1out___bit equ 7
841                     ; line_number = 334
842                     ; bind _c2out = _cmcon0@6
843  00000019 = _c2out___byte equ _cmcon0
844  00000006 = _c2out___bit equ 6
845                     ; line_number = 335
846                     ; bind _c1inv = _cmcon0@5
847  00000019 = _c1inv___byte equ _cmcon0
848  00000005 = _c1inv___bit equ 5
849                     ; line_number = 336
850                     ; bind _c2inv = _cmcon0@4
851  00000019 = _c2inv___byte equ _cmcon0
852  00000004 = _c2inv___bit equ 4
853                     ; line_number = 337
854                     ; bind _cis = _cmcon0@3
855  00000019 = _cis___byte equ _cmcon0
856  00000003 = _cis___bit equ 3
857                     ; line_number = 338
858                     ; bind _cm2 = _cmcon0@2
859  00000019 = _cm2___byte equ _cmcon0
860  00000002 = _cm2___bit equ 2
861                     ; line_number = 339
862                     ; bind _cm1 = _cmcon0@1
863  00000019 = _cm1___byte equ _cmcon0
864  00000001 = _cm1___bit equ 1
865                     ; line_number = 340
866                     ; bind _cm0 = _cmcon0@0
867  00000019 = _cm0___byte equ _cmcon0
868  00000000 = _cm0___bit equ 0
869             
870                     ; line_number = 342
871                     ; register _cmcon1 = 
872  0000001a = _cmcon1 equ 26
873                     ; line_number = 343
874                     ; bind _t1gss = _cmcon1@0
875  0000001a = _t1gss___byte equ _cmcon1
876  00000000 = _t1gss___bit equ 0
877                     ; line_number = 344
878                     ; bind _c2sync = _cmcon1@1
879  0000001a = _c2sync___byte equ _cmcon1
880  00000001 = _c2sync___bit equ 1
881             
882                     ; line_number = 346
883                     ; register _adresh = 
884  0000001e = _adresh equ 30
885             
886                     ; line_number = 348
887                     ; register _adcon0 = 
888  0000001f = _adcon0 equ 31
889                     ; line_number = 349
890                     ; bind _adfm = _adcon0@7
891  0000001f = _adfm___byte equ _adcon0
892  00000007 = _adfm___bit equ 7
893                     ; line_number = 350
894                     ; bind _vcfg = _adcon0@6
895  0000001f = _vcfg___byte equ _adcon0
896  00000006 = _vcfg___bit equ 6
897                     ; line_number = 351
898                     ; bind _chs2 = _adcon0@4
899  0000001f = _chs2___byte equ _adcon0
900  00000004 = _chs2___bit equ 4
901                     ; line_number = 352
902                     ; bind _chs1 = _adcon0@3
903  0000001f = _chs1___byte equ _adcon0
904  00000003 = _chs1___bit equ 3
905                     ; line_number = 353
906                     ; bind _chs0 = _adcon0@2
907  0000001f = _chs0___byte equ _adcon0
908  00000002 = _chs0___bit equ 2
909                     ; line_number = 354
910                     ; bind _go = _adcon0@1
911  0000001f = _go___byte equ _adcon0
912  00000001 = _go___bit equ 1
913                     ; line_number = 355
914                     ; bind _adon = _adcon0@0
915  0000001f = _adon___byte equ _adcon0
916  00000000 = _adon___bit equ 0
917             
918                     ; # Data bank 1 (0x80-0xff):
919             
920                     ; line_number = 359
921                     ; register _option_reg = 
922  00000081 = _option_reg equ 129
923                     ; line_number = 360
924                     ; bind _rapu = _option_reg@7
925  00000081 = _rapu___byte equ _option_reg
926  00000007 = _rapu___bit equ 7
927                     ; line_number = 361
928                     ; bind _intedg = _option_reg@6
929  00000081 = _intedg___byte equ _option_reg
930  00000006 = _intedg___bit equ 6
931                     ; line_number = 362
932                     ; bind _t0cs = _option_reg@5
933  00000081 = _t0cs___byte equ _option_reg
934  00000005 = _t0cs___bit equ 5
935                     ; line_number = 363
936                     ; bind _t0se = _option_reg@4
937  00000081 = _t0se___byte equ _option_reg
938  00000004 = _t0se___bit equ 4
939                     ; line_number = 364
940                     ; bind _psa = _option_reg@3
941  00000081 = _psa___byte equ _option_reg
942  00000003 = _psa___bit equ 3
943                     ; line_number = 365
944                     ; bind _ps2 = _option_reg@2
945  00000081 = _ps2___byte equ _option_reg
946  00000002 = _ps2___bit equ 2
947                     ; line_number = 366
948                     ; bind _ps1 = _option_reg@1
949  00000081 = _ps1___byte equ _option_reg
950  00000001 = _ps1___bit equ 1
951                     ; line_number = 367
952                     ; bind _ps0 = _option_reg@0
953  00000081 = _ps0___byte equ _option_reg
954  00000000 = _ps0___bit equ 0
955             
956                     ; line_number = 369
957                     ; register _trisa = 
958  00000085 = _trisa equ 133
959                     ; line_number = 370
960                     ; bind _trisa5 = _trisa@5
961  00000085 = _trisa5___byte equ _trisa
962  00000005 = _trisa5___bit equ 5
963                     ; line_number = 371
964                     ; bind _trisa4 = _trisa@4
965  00000085 = _trisa4___byte equ _trisa
966  00000004 = _trisa4___bit equ 4
967                     ; line_number = 372
968                     ; bind _trisa3 = _trisa@3
969  00000085 = _trisa3___byte equ _trisa
970  00000003 = _trisa3___bit equ 3
971                     ; line_number = 373
972                     ; bind _trisa2 = _trisa@2
973  00000085 = _trisa2___byte equ _trisa
974  00000002 = _trisa2___bit equ 2
975                     ; line_number = 374
976                     ; bind _trisa1 = _trisa@1
977  00000085 = _trisa1___byte equ _trisa
978  00000001 = _trisa1___bit equ 1
979                     ; line_number = 375
980                     ; bind _trisa0 = _trisa@0
981  00000085 = _trisa0___byte equ _trisa
982  00000000 = _trisa0___bit equ 0
983             
984                     ; line_number = 377
985                     ; register _trisc = 
986  00000087 = _trisc equ 135
987                     ; line_number = 378
988                     ; bind _trisc5 = _trisc@5
989  00000087 = _trisc5___byte equ _trisc
990  00000005 = _trisc5___bit equ 5
991                     ; line_number = 379
992                     ; bind _trisc4 = _trisc@4
993  00000087 = _trisc4___byte equ _trisc
994  00000004 = _trisc4___bit equ 4
995                     ; line_number = 380
996                     ; bind _trisc3 = _trisc@3
997  00000087 = _trisc3___byte equ _trisc
998  00000003 = _trisc3___bit equ 3
999                     ; line_number = 381
1000                    ; bind _trisc2 = _trisc@2
1001 00000087 = _trisc2___byte equ _trisc
1002 00000002 = _trisc2___bit equ 2
1003                    ; line_number = 382
1004                    ; bind _trisc1 = _trisc@1
1005 00000087 = _trisc1___byte equ _trisc
1006 00000001 = _trisc1___bit equ 1
1007                    ; line_number = 383
1008                    ; bind _trisc0 = _trisc@0
1009 00000087 = _trisc0___byte equ _trisc
1010 00000000 = _trisc0___bit equ 0
1011            
1012                    ; line_number = 385
1013                    ; register _pie1 = 
1014 0000008c = _pie1 equ 140
1015                    ; line_number = 386
1016                    ; bind _eeie = _pie1@7
1017 0000008c = _eeie___byte equ _pie1
1018 00000007 = _eeie___bit equ 7
1019                    ; line_number = 387
1020                    ; bind _adie = _pie1@6
1021 0000008c = _adie___byte equ _pie1
1022 00000006 = _adie___bit equ 6
1023                    ; line_number = 388
1024                    ; bind _rcie = _pie1@5
1025 0000008c = _rcie___byte equ _pie1
1026 00000005 = _rcie___bit equ 5
1027                    ; line_number = 389
1028                    ; bind _c2ie = _pie1@4
1029 0000008c = _c2ie___byte equ _pie1
1030 00000004 = _c2ie___bit equ 4
1031                    ; line_number = 390
1032                    ; bind _c1ie = _pie1@3
1033 0000008c = _c1ie___byte equ _pie1
1034 00000003 = _c1ie___bit equ 3
1035                    ; line_number = 391
1036                    ; bind _osfie = _pie1@2
1037 0000008c = _osfie___byte equ _pie1
1038 00000002 = _osfie___bit equ 2
1039                    ; line_number = 392
1040                    ; bind _txie = _pie1@1
1041 0000008c = _txie___byte equ _pie1
1042 00000001 = _txie___bit equ 1
1043                    ; line_number = 393
1044                    ; bind _tmr1ie = _pie1@0
1045 0000008c = _tmr1ie___byte equ _pie1
1046 00000000 = _tmr1ie___bit equ 0
1047            
1048                    ; line_number = 395
1049                    ; register _pcon = 
1050 0000008e = _pcon equ 142
1051                    ; line_number = 396
1052                    ; bind _ulpwue = _pcon@5
1053 0000008e = _ulpwue___byte equ _pcon
1054 00000005 = _ulpwue___bit equ 5
1055                    ; line_number = 397
1056                    ; bind _sboden = _pcon@4
1057 0000008e = _sboden___byte equ _pcon
1058 00000004 = _sboden___bit equ 4
1059                    ; line_number = 398
1060                    ; bind _por = _pcon@1
1061 0000008e = _por___byte equ _pcon
1062 00000001 = _por___bit equ 1
1063                    ; line_number = 399
1064                    ; bind _bod = _pcon@0
1065 0000008e = _bod___byte equ _pcon
1066 00000000 = _bod___bit equ 0
1067            
1068                    ; line_number = 401
1069                    ; register _osccon = 
1070 0000008f = _osccon equ 143
1071                    ; line_number = 402
1072                    ; bind _ircf2 = _osccon@6
1073 0000008f = _ircf2___byte equ _osccon
1074 00000006 = _ircf2___bit equ 6
1075                    ; line_number = 403
1076                    ; bind _ircf1 = _osccon@5
1077 0000008f = _ircf1___byte equ _osccon
1078 00000005 = _ircf1___bit equ 5
1079                    ; line_number = 404
1080                    ; bind _ircf0 = _osccon@4
1081 0000008f = _ircf0___byte equ _osccon
1082 00000004 = _ircf0___bit equ 4
1083                    ; line_number = 405
1084                    ; bind _osts = _osccon@3
1085 0000008f = _osts___byte equ _osccon
1086 00000003 = _osts___bit equ 3
1087                    ; line_number = 406
1088                    ; bind _hts = _osccon@2
1089 0000008f = _hts___byte equ _osccon
1090 00000002 = _hts___bit equ 2
1091                    ; line_number = 407
1092                    ; bind _lts = _osccon@3
1093 0000008f = _lts___byte equ _osccon
1094 00000003 = _lts___bit equ 3
1095                    ; line_number = 408
1096                    ; bind _scs = _osccon@2
1097 0000008f = _scs___byte equ _osccon
1098 00000002 = _scs___bit equ 2
1099            
1100                    ; line_number = 410
1101                    ; register _osctune = 
1102 00000090 = _osctune equ 144
1103                    ; line_number = 411
1104                    ; bind _tun4 = _osctune@4
1105 00000090 = _tun4___byte equ _osctune
1106 00000004 = _tun4___bit equ 4
1107                    ; line_number = 412
1108                    ; bind _tun3 = _osctune@3
1109 00000090 = _tun3___byte equ _osctune
1110 00000003 = _tun3___bit equ 3
1111                    ; line_number = 413
1112                    ; bind _tun2 = _osctune@2
1113 00000090 = _tun2___byte equ _osctune
1114 00000002 = _tun2___bit equ 2
1115                    ; line_number = 414
1116                    ; bind _tun1 = _osctune@1
1117 00000090 = _tun1___byte equ _osctune
1118 00000001 = _tun1___bit equ 1
1119                    ; line_number = 415
1120                    ; bind _tun0 = _osctune@0
1121 00000090 = _tun0___byte equ _osctune
1122 00000000 = _tun0___bit equ 0
1123                    ; line_number = 416
1124                    ; constant _osccal_lsb = 1
1125 00000001 = _osccal_lsb equ 1
1126            
1127                    ; line_number = 418
1128                    ; register _ansel = 
1129 00000091 = _ansel equ 145
1130                    ; line_number = 419
1131                    ; bind _ans7 = _ansel@7
1132 00000091 = _ans7___byte equ _ansel
1133 00000007 = _ans7___bit equ 7
1134                    ; line_number = 420
1135                    ; bind _ans6 = _ansel@6
1136 00000091 = _ans6___byte equ _ansel
1137 00000006 = _ans6___bit equ 6
1138                    ; line_number = 421
1139                    ; bind _ans5 = _ansel@5
1140 00000091 = _ans5___byte equ _ansel
1141 00000005 = _ans5___bit equ 5
1142                    ; line_number = 422
1143                    ; bind _ans4 = _ansel@4
1144 00000091 = _ans4___byte equ _ansel
1145 00000004 = _ans4___bit equ 4
1146                    ; line_number = 423
1147                    ; bind _ans3 = _ansel@3
1148 00000091 = _ans3___byte equ _ansel
1149 00000003 = _ans3___bit equ 3
1150                    ; line_number = 424
1151                    ; bind _ans2 = _ansel@2
1152 00000091 = _ans2___byte equ _ansel
1153 00000002 = _ans2___bit equ 2
1154                    ; line_number = 425
1155                    ; bind _ans1 = _ansel@1
1156 00000091 = _ans1___byte equ _ansel
1157 00000001 = _ans1___bit equ 1
1158                    ; line_number = 426
1159                    ; bind _ans0 = _ansel@0
1160 00000091 = _ans0___byte equ _ansel
1161 00000000 = _ans0___bit equ 0
1162            
1163                    ; line_number = 428
1164                    ; register _wpua = 
1165 00000095 = _wpua equ 149
1166                    ; line_number = 429
1167                    ; bind _wpua5 = _wpua@5
1168 00000095 = _wpua5___byte equ _wpua
1169 00000005 = _wpua5___bit equ 5
1170                    ; line_number = 430
1171                    ; bind _wpua4 = _wpua@4
1172 00000095 = _wpua4___byte equ _wpua
1173 00000004 = _wpua4___bit equ 4
1174                    ; line_number = 431
1175                    ; bind _wpua2 = _wpua@2
1176 00000095 = _wpua2___byte equ _wpua
1177 00000002 = _wpua2___bit equ 2
1178                    ; line_number = 432
1179                    ; bind _wpua1 = _wpua@1
1180 00000095 = _wpua1___byte equ _wpua
1181 00000001 = _wpua1___bit equ 1
1182                    ; line_number = 433
1183                    ; bind _wpua0 = _wpua@0
1184 00000095 = _wpua0___byte equ _wpua
1185 00000000 = _wpua0___bit equ 0
1186            
1187                    ; line_number = 435
1188                    ; register _ioca = 
1189 00000096 = _ioca equ 150
1190                    ; line_number = 436
1191                    ; bind _ioca5 = _ioca@5
1192 00000096 = _ioca5___byte equ _ioca
1193 00000005 = _ioca5___bit equ 5
1194                    ; line_number = 437
1195                    ; bind _ioca4 = _ioca@4
1196 00000096 = _ioca4___byte equ _ioca
1197 00000004 = _ioca4___bit equ 4
1198                    ; line_number = 438
1199                    ; bind _ioca3 = _ioca@3
1200 00000096 = _ioca3___byte equ _ioca
1201 00000003 = _ioca3___bit equ 3
1202                    ; line_number = 439
1203                    ; bind _ioca2 = _ioca@2
1204 00000096 = _ioca2___byte equ _ioca
1205 00000002 = _ioca2___bit equ 2
1206                    ; line_number = 440
1207                    ; bind _ioca1 = _ioca@1
1208 00000096 = _ioca1___byte equ _ioca
1209 00000001 = _ioca1___bit equ 1
1210                    ; line_number = 441
1211                    ; bind _ioca0 = _ioca@0
1212 00000096 = _ioca0___byte equ _ioca
1213 00000000 = _ioca0___bit equ 0
1214            
1215                    ; line_number = 443
1216                    ; register _eedath = 
1217 00000097 = _eedath equ 151
1218            
1219                    ; line_number = 445
1220                    ; register _eeadrh = 
1221 00000098 = _eeadrh equ 152
1222            
1223                    ; line_number = 447
1224                    ; register _vrcon = 
1225 00000099 = _vrcon equ 153
1226                    ; line_number = 448
1227                    ; bind _vren = _vrcon@7
1228 00000099 = _vren___byte equ _vrcon
1229 00000007 = _vren___bit equ 7
1230                    ; line_number = 449
1231                    ; bind _vrr = _vrcon@5
1232 00000099 = _vrr___byte equ _vrcon
1233 00000005 = _vrr___bit equ 5
1234                    ; line_number = 450
1235                    ; bind _vr3 = _vrcon@3
1236 00000099 = _vr3___byte equ _vrcon
1237 00000003 = _vr3___bit equ 3
1238                    ; line_number = 451
1239                    ; bind _vr2 = _vrcon@2
1240 00000099 = _vr2___byte equ _vrcon
1241 00000002 = _vr2___bit equ 2
1242                    ; line_number = 452
1243                    ; bind _vr1 = _vrcon@1
1244 00000099 = _vr1___byte equ _vrcon
1245 00000001 = _vr1___bit equ 1
1246                    ; line_number = 453
1247                    ; bind _vr0 = _vrcon@0
1248 00000099 = _vr0___byte equ _vrcon
1249 00000000 = _vr0___bit equ 0
1250            
1251                    ; line_number = 455
1252                    ; register _eedat = 
1253 0000009a = _eedat equ 154
1254                    ; line_number = 456
1255                    ; bind _eedat7 = _eedat@7
1256 0000009a = _eedat7___byte equ _eedat
1257 00000007 = _eedat7___bit equ 7
1258                    ; line_number = 457
1259                    ; bind _eedat6 = _eedat@6
1260 0000009a = _eedat6___byte equ _eedat
1261 00000006 = _eedat6___bit equ 6
1262                    ; line_number = 458
1263                    ; bind _eedat5 = _eedat@5
1264 0000009a = _eedat5___byte equ _eedat
1265 00000005 = _eedat5___bit equ 5
1266                    ; line_number = 459
1267                    ; bind _eedat4 = _eedat@4
1268 0000009a = _eedat4___byte equ _eedat
1269 00000004 = _eedat4___bit equ 4
1270                    ; line_number = 460
1271                    ; bind _eedat3 = _eedat@3
1272 0000009a = _eedat3___byte equ _eedat
1273 00000003 = _eedat3___bit equ 3
1274                    ; line_number = 461
1275                    ; bind _eedat2 = _eedat@2
1276 0000009a = _eedat2___byte equ _eedat
1277 00000002 = _eedat2___bit equ 2
1278                    ; line_number = 462
1279                    ; bind _eedat1 = _eedat@1
1280 0000009a = _eedat1___byte equ _eedat
1281 00000001 = _eedat1___bit equ 1
1282                    ; line_number = 463
1283                    ; bind _eedat0 = _eedat@0
1284 0000009a = _eedat0___byte equ _eedat
1285 00000000 = _eedat0___bit equ 0
1286            
1287                    ; line_number = 465
1288                    ; register _eeadr = 
1289 0000009b = _eeadr equ 155
1290                    ; line_number = 466
1291                    ; bind _eeadr7 = _eeadr@7
1292 0000009b = _eeadr7___byte equ _eeadr
1293 00000007 = _eeadr7___bit equ 7
1294                    ; line_number = 467
1295                    ; bind _eeadr6 = _eeadr@6
1296 0000009b = _eeadr6___byte equ _eeadr
1297 00000006 = _eeadr6___bit equ 6
1298                    ; line_number = 468
1299                    ; bind _eeadr5 = _eeadr@5
1300 0000009b = _eeadr5___byte equ _eeadr
1301 00000005 = _eeadr5___bit equ 5
1302                    ; line_number = 469
1303                    ; bind _eeadr4 = _eeadr@4
1304 0000009b = _eeadr4___byte equ _eeadr
1305 00000004 = _eeadr4___bit equ 4
1306                    ; line_number = 470
1307                    ; bind _eeadr3 = _eeadr@3
1308 0000009b = _eeadr3___byte equ _eeadr
1309 00000003 = _eeadr3___bit equ 3
1310                    ; line_number = 471
1311                    ; bind _eeadr2 = _eeadr@2
1312 0000009b = _eeadr2___byte equ _eeadr
1313 00000002 = _eeadr2___bit equ 2
1314                    ; line_number = 472
1315                    ; bind _eeadr1 = _eeadr@1
1316 0000009b = _eeadr1___byte equ _eeadr
1317 00000001 = _eeadr1___bit equ 1
1318                    ; line_number = 473
1319                    ; bind _eeadr0 = _eeadr@0
1320 0000009b = _eeadr0___byte equ _eeadr
1321 00000000 = _eeadr0___bit equ 0
1322            
1323                    ; line_number = 475
1324                    ; register _eecon1 = 
1325 0000009c = _eecon1 equ 156
1326                    ; line_number = 476
1327                    ; bind _eepgd = _eecon1@7
1328 0000009c = _eepgd___byte equ _eecon1
1329 00000007 = _eepgd___bit equ 7
1330                    ; line_number = 477
1331                    ; bind _wrerr = _eecon1@3
1332 0000009c = _wrerr___byte equ _eecon1
1333 00000003 = _wrerr___bit equ 3
1334                    ; line_number = 478
1335                    ; bind _wren = _eecon1@2
1336 0000009c = _wren___byte equ _eecon1
1337 00000002 = _wren___bit equ 2
1338                    ; line_number = 479
1339                    ; bind _wr = _eecon1@1
1340 0000009c = _wr___byte equ _eecon1
1341 00000001 = _wr___bit equ 1
1342                    ; line_number = 480
1343                    ; bind _rd = _eecon1@0
1344 0000009c = _rd___byte equ _eecon1
1345 00000000 = _rd___bit equ 0
1346            
1347                    ; line_number = 482
1348                    ; register _eecon2 = 
1349 0000009d = _eecon2 equ 157
1350            
1351                    ; line_number = 484
1352                    ; register _adresl = 
1353 0000009e = _adresl equ 158
1354            
1355                    ; line_number = 486
1356                    ; register _adcon1 = 
1357 0000009f = _adcon1 equ 159
1358                    ; line_number = 487
1359                    ; bind _adcs2 = _adcon1@6
1360 0000009f = _adcs2___byte equ _adcon1
1361 00000006 = _adcs2___bit equ 6
1362                    ; line_number = 488
1363                    ; bind _adcs1 = _adcon1@5
1364 0000009f = _adcs1___byte equ _adcon1
1365 00000005 = _adcs1___bit equ 5
1366                    ; line_number = 489
1367                    ; bind _adcs0 = _adcon1@4
1368 0000009f = _adcs0___byte equ _adcon1
1369 00000004 = _adcs0___bit equ 4
1370            
1371                    ; # Data Bank 2 (0x100 - 0x17f):
1372            
1373                    ; buffer = 'io8'
1374                    ; line_number = 7
1375                    ; library _pic16f688 exited
1376            
1377                    ; # The system is running at 16MHz:
1378                    ; line_number = 10
1379                    ; library clock16mhz entered
1380                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1381                    ; # All rights reserved.
1382            
1383                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1384                    ; # and {clocks_per_instruction}.
1385            
1386                    ; # Define processor constants:
1387                    ; buffer = 'clock16mhz'
1388                    ; line_number = 9
1389                    ; constant clock_rate = 16000000
1390 00f42400 = clock_rate equ 16000000
1391                    ; line_number = 10
1392                    ; constant clocks_per_instruction = 4
1393 00000004 = clocks_per_instruction equ 4
1394                    ; line_number = 11
1395                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1396 003d0900 = instruction_rate equ 4000000
1397            
1398            
1399                    ; buffer = 'io8'
1400                    ; line_number = 10
1401                    ; library clock16mhz exited
1402                    ; # A microsecond takes 4 cycles at 16MHz:
1403                    ; line_number = 12
1404                    ; constant microsecond = 4
1405 00000004 = microsecond equ 4
1406            
1407                    ; # The {_eusart} library defines some baud rate generator constants:
1408                    ; line_number = 15
1409                    ; constant _eusart_clock = clock_rate
1410 00f42400 = _eusart_clock equ 16000000
1411                    ; line_number = 16
1412                    ; constant _eusart_factor = 4
1413 00000004 = _eusart_factor equ 4
1414                    ; line_number = 17
1415                    ; library _eusart entered
1416            
1417                    ; # Copyright (c) 2005 by Wayne C. Gramlich
1418                    ; # All rights reserved.
1419            
1420                    ; # This library contains a bunch of definitions for the Enhanced Universal
1421                    ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available
1422                    ; # on many of the PIC microcontrollers.
1423            
1424                    ; # In order to use this module you have to get two constants defined
1425                    ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}.
1426                    ; # {_eusart_clock} should be set to the frequency oscillator for the chip.
1427                    ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether
1428                    ; # the {_brg16} and {_brgh} bits are set.  Use the table below to select:
1429                    ; #
1430                    ; #        _{brg16}	{_brgh}		_{eusart_factor}
1431                    ; #	    0		   0		      64
1432                    ; #	    0		   1		      16
1433                    ; #	    1		   0		      16
1434                    ; #	    1		   1		       4
1435            
1436                    ; # 2400 bits/sec:
1437                    ; buffer = '_eusart'
1438                    ; line_number = 23
1439                    ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1
1440 00000681 = _eusart_2400 equ 1665
1441                    ; line_number = 24
1442                    ; constant _eusart_2400_low = _eusart_2400 & 0xff
1443 00000081 = _eusart_2400_low equ 129
1444                    ; line_number = 25
1445                    ; constant _eusart_2400_high = _eusart_2400 >> 8
1446 00000006 = _eusart_2400_high equ 6
1447                    ; line_number = 26
1448                    ; constant _eusart_2400_index = 0
1449 00000000 = _eusart_2400_index equ 0
1450                    ; # 4800 bits/sec:
1451                    ; line_number = 28
1452                    ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1
1453 00000340 = _eusart_4800 equ 832
1454                    ; line_number = 29
1455                    ; constant _eusart_4800_low = _eusart_4800 & 0xff
1456 00000040 = _eusart_4800_low equ 64
1457                    ; line_number = 30
1458                    ; constant _eusart_4800_high = _eusart_4800 >> 8
1459 00000003 = _eusart_4800_high equ 3
1460                    ; line_number = 31
1461                    ; constant _eusart_4800_index = 1
1462 00000001 = _eusart_4800_index equ 1
1463                    ; # 9600 bits/sec:
1464                    ; line_number = 33
1465                    ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1
1466 0000019f = _eusart_9600 equ 415
1467                    ; line_number = 34
1468                    ; constant _eusart_9600_low = _eusart_9600 & 0xff
1469 0000009f = _eusart_9600_low equ 159
1470                    ; line_number = 35
1471                    ; constant _eusart_9600_high = _eusart_9600 >> 8
1472 00000001 = _eusart_9600_high equ 1
1473                    ; line_number = 36
1474                    ; constant _eusart_9600_index = 2
1475 00000002 = _eusart_9600_index equ 2
1476                    ; # 19200 bits/sec:
1477                    ; line_number = 38
1478                    ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1
1479 000000cf = _eusart_19200 equ 207
1480                    ; line_number = 39
1481                    ; constant _eusart_19200_low = _eusart_19200 & 0xff
1482 000000cf = _eusart_19200_low equ 207
1483                    ; line_number = 40
1484                    ; constant _eusart_19200_high = _eusart_19200 >> 8
1485 00000000 = _eusart_19200_high equ 0
1486                    ; line_number = 41
1487                    ; constant _eusart_19200_index = 3
1488 00000003 = _eusart_19200_index equ 3
1489                    ; # 38400 bits/sec:
1490                    ; line_number = 43
1491                    ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1
1492 00000067 = _eusart_38400 equ 103
1493                    ; line_number = 44
1494                    ; constant _eusart_38400_low = _eusart_38400 & 0xff
1495 00000067 = _eusart_38400_low equ 103
1496                    ; line_number = 45
1497                    ; constant _eusart_38400_high = _eusart_38400 >> 8
1498 00000000 = _eusart_38400_high equ 0
1499                    ; line_number = 46
1500                    ; constant _eusart_38400_index = 4
1501 00000004 = _eusart_38400_index equ 4
1502                    ; # 57600 bits/sec:
1503                    ; line_number = 48
1504                    ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1
1505 00000044 = _eusart_57600 equ 68
1506                    ; line_number = 49
1507                    ; constant _eusart_57600_low = _eusart_57600 & 0xff
1508 00000044 = _eusart_57600_low equ 68
1509                    ; line_number = 50
1510                    ; constant _eusart_57600_high = _eusart_57600 >> 8
1511 00000000 = _eusart_57600_high equ 0
1512                    ; line_number = 51
1513                    ; constant _eusart_57600_index = 5
1514 00000005 = _eusart_57600_index equ 5
1515                    ; # 115200 bits/sec:
1516                    ; line_number = 53
1517                    ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1
1518 00000021 = _eusart_115200 equ 33
1519                    ; line_number = 54
1520                    ; constant _eusart_115200_low = _eusart_115200 & 0xff
1521 00000021 = _eusart_115200_low equ 33
1522                    ; line_number = 55
1523                    ; constant _eusart_115200_high = _eusart_115200 >> 8
1524 00000000 = _eusart_115200_high equ 0
1525                    ; line_number = 56
1526                    ; constant _eusart_115200_index = 6
1527 00000006 = _eusart_115200_index equ 6
1528                    ; # 203400 bits/sec:
1529                    ; line_number = 58
1530                    ; constant _eusart_230400 = (_eusart_clock / (230400 * _eusart_factor)) - 1
1531 00000010 = _eusart_230400 equ 16
1532                    ; line_number = 59
1533                    ; constant _eusart_230400_low = _eusart_230400 & 0xff
1534 00000010 = _eusart_230400_low equ 16
1535                    ; line_number = 60
1536                    ; constant _eusart_230400_high = _eusart_230400 >> 8
1537 00000000 = _eusart_230400_high equ 0
1538                    ; line_number = 61
1539                    ; constant _eusart_230400_index = 7
1540 00000007 = _eusart_230400_index equ 7
1541                    ; # 406800 bits/sec:
1542                    ; line_number = 63
1543                    ; constant _eusart_460800 = (_eusart_clock / (460800 * _eusart_factor)) - 1
1544 00000007 = _eusart_460800 equ 7
1545                    ; line_number = 64
1546                    ; constant _eusart_460800_low = _eusart_460800 & 0xff
1547 00000007 = _eusart_460800_low equ 7
1548                    ; line_number = 65
1549                    ; constant _eusart_460800_high = _eusart_460800 >> 8
1550 00000000 = _eusart_460800_high equ 0
1551                    ; line_number = 66
1552                    ; constant _eusart_460800_index = 8
1553 00000008 = _eusart_460800_index equ 8
1554                    ; # 500000 bits/sec:
1555                    ; line_number = 68
1556                    ; constant _eusart_500000 = (_eusart_clock / (500000 * _eusart_factor)) - 1
1557 00000007 = _eusart_500000 equ 7
1558                    ; line_number = 69
1559                    ; constant _eusart_500000_low = _eusart_500000 & 0xff
1560 00000007 = _eusart_500000_low equ 7
1561                    ; line_number = 70
1562                    ; constant _eusart_500000_high = _eusart_500000 >> 8
1563 00000000 = _eusart_500000_high equ 0
1564                    ; line_number = 71
1565                    ; constant _eusart_500000_index = 9
1566 00000009 = _eusart_500000_index equ 9
1567                    ; # 576000 bits/sec (1MHz):
1568                    ; line_number = 73
1569                    ; constant _eusart_576000 = (_eusart_clock / (576000 * _eusart_factor)) - 1
1570 00000005 = _eusart_576000 equ 5
1571                    ; line_number = 74
1572                    ; constant _eusart_576000_low = _eusart_576000 & 0xff
1573 00000005 = _eusart_576000_low equ 5
1574                    ; line_number = 75
1575                    ; constant _eusart_576000_high = _eusart_576000 >> 8
1576 00000000 = _eusart_576000_high equ 0
1577                    ; line_number = 76
1578                    ; constant _eusart_576000_index = 10
1579 0000000a = _eusart_576000_index equ 10
1580                    ; # 625000 bits/sec:
1581                    ; line_number = 78
1582                    ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1
1583 00000005 = _eusart_625000 equ 5
1584                    ; line_number = 79
1585                    ; constant _eusart_625000_low = _eusart_625000 & 0xff
1586 00000005 = _eusart_625000_low equ 5
1587                    ; line_number = 80
1588                    ; constant _eusart_625000_high = _eusart_625000 >> 8
1589 00000000 = _eusart_625000_high equ 0
1590                    ; line_number = 81
1591                    ; constant _eusart_625000_index = 11
1592 0000000b = _eusart_625000_index equ 11
1593                    ; # 833333 bits/sec:
1594                    ; line_number = 83
1595                    ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1
1596 00000003 = _eusart_833333 equ 3
1597                    ; line_number = 84
1598                    ; constant _eusart_833333_low = _eusart_833333 & 0xff
1599 00000003 = _eusart_833333_low equ 3
1600                    ; line_number = 85
1601                    ; constant _eusart_833333_high = _eusart_833333 >> 8
1602 00000000 = _eusart_833333_high equ 0
1603                    ; line_number = 86
1604                    ; constant _eusart_833333_index = 12
1605 0000000c = _eusart_833333_index equ 12
1606                    ; # 921600 bits/sec:
1607                    ; line_number = 88
1608                    ; constant _eusart_921600 = (_eusart_clock / (921600 * _eusart_factor)) - 1
1609 00000003 = _eusart_921600 equ 3
1610                    ; line_number = 89
1611                    ; constant _eusart_921600_low = _eusart_921600 & 0xff
1612 00000003 = _eusart_921600_low equ 3
1613                    ; line_number = 90
1614                    ; constant _eusart_921600_high = _eusart_921600 >> 8
1615 00000000 = _eusart_921600_high equ 0
1616                    ; line_number = 91
1617                    ; constant _eusart_921600_index = 13
1618 0000000d = _eusart_921600_index equ 13
1619                    ; # 1000000 bits/sec (1MHz):
1620                    ; line_number = 93
1621                    ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1
1622 00000003 = _eusart_1000000 equ 3
1623                    ; line_number = 94
1624                    ; constant _eusart_1000000_low = _eusart_1000000 & 0xff
1625 00000003 = _eusart_1000000_low equ 3
1626                    ; line_number = 95
1627                    ; constant _eusart_1000000_high = _eusart_1000000 >> 8
1628 00000000 = _eusart_1000000_high equ 0
1629                    ; line_number = 96
1630                    ; constant _eusart_1000000_index = 14
1631 0000000e = _eusart_1000000_index equ 14
1632            
1633                    ; buffer = 'io8'
1634                    ; line_number = 17
1635                    ; library _eusart exited
1636            
1637                    ; # The library of bus access routines for use by a PIC16F688.
1638                    ; line_number = 20
1639                    ; library rb2bus_pic16f688 entered
1640            
1641                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1642                    ; # All rights reserved.
1643            
1644                    ; # This module provides some procedures for accessing a RoboBricks2
1645                    ; # bus via a UART.  It is speicialized for the PIC16F688.
1646                    ; #
1647                    ; # It defines the following procedure:
1648                    ; #
1649                    ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
1650                    ; #                                for bus access.
1651            
1652                    ; # All other bus access procedures are defined in the {rb2bus} library
1653                    ; # which is accessed below:
1654                    ; buffer = 'rb2bus_pic16f688'
1655                    ; line_number = 16
1656                    ; library rb2bus entered
1657            
1658                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1659                    ; # All rights reserved.
1660            
1661                    ; # This module provides some procedures for accessing a RoboBricks2
1662                    ; # bus via a UART.
1663                    ; #
1664                    ; # This procedure defines the following procedures:
1665                    ; #
1666                    ; # {rb2bus_select_wait}  This procedure waits for the module to become selected
1667                    ; # {rb2bus_deselect}     This procedure causes this module to be deselected.
1668                    ; # {rb2bus_byte_get}     This procedure will get a byte form the bus.
1669                    ; # {rb2bus_byte_put}     This procedure will send a byte to the bus.
1670                    ; #
1671                    ; # The global variable {rb2bus_error} is set to 1 whenever the procedures
1672                    ; # feel like there is a command decoding error.
1673                    ; #
1674                    ; # The way to use these procedures is quite as follows:
1675                    ; #
1676                    ; #    # Comamnd byte variable:
1677                    ; #    local command byte
1678                    ; #
1679                    ; #    # Other initialize code goes here:
1680                    ; #
1681                    ; #    # Process commands from bus master:
1682                    ; #    loop_forever
1683                    ; #        rb2bus_error := _true
1684                    ; #	 while rb2bus_error
1685                    ; #	     call rb2bus_select_wait()
1686                    ; #	     command := rb2bus_byte_get()
1687                    ; #
1688                    ; #        # Decode command:
1689                    ; #	 switch command >> 6
1690                    ; #	   ...
1691                    ; #             case 5:
1692                    ; #	        # 0000 0101 (Foo command):
1693                    ; #	          if !rb2bus_error
1694                    ; #		      # Do foo command:
1695                    ; #
1696                    ; # The key concept behind these procedures is to make command
1697                    ; # decoding for the slave module easy.  If the slave module
1698                    ; # is in the middle of command decoding and the master suddenly
1699                    ; # sends out a module select command, we need to gracefully recover
1700                    ; # from the problem.  A command should only be executed if
1701                    ; # {rb2bus_error} is not set.  If {rb2bus_error} is set, we want
1702                    ; # to gracefully get back to the beginning of the loop without
1703                    ; # doing any damage.  Once {rb2bus_error} is set, all calls to
1704                    ; # {rb2bus_byte_get} return 0 and all calls to {rb2bus_byte_put}
1705                    ; # do nothing.  At the beginning of the loop, {rb2bus_error} is
1706                    ; # cleared by the {rb2bus_select_wait}() procedure and we have
1707                    ; # recovered from the situation.
1708            
1709                    ; buffer = 'rb2bus'
1710                    ; line_number = 54
1711                    ; library rb2_constants entered
1712            
1713                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
1714                    ; # All rights reserved.
1715            
1716                    ; buffer = 'rb2_constants'
1717                    ; line_number = 6
1718                    ; constant rb2_ok = 0xa5
1719 000000a5 = rb2_ok equ 165
1720            
1721                    ; line_number = 8
1722                    ; constant rb2_common_address_set = 0xfc
1723 000000fc = rb2_common_address_set equ 252
1724                    ; line_number = 9
1725                    ; constant rb2_common_id_next = 0xfd
1726 000000fd = rb2_common_id_next equ 253
1727                    ; line_number = 10
1728                    ; constant rb2_common_id_start = 0xfe
1729 000000fe = rb2_common_id_start equ 254
1730                    ; line_number = 11
1731                    ; constant rb2_common_deselect = 0xff
1732 000000ff = rb2_common_deselect equ 255
1733            
1734                    ; line_number = 13
1735                    ; constant rb2_laser1_address = 1
1736 00000001 = rb2_laser1_address equ 1
1737                    ; line_number = 14
1738                    ; constant rb2_laser1_sense_read = 0
1739 00000000 = rb2_laser1_sense_read equ 0
1740                    ; line_number = 15
1741                    ; constant rb2_laser1_enable_read = 1
1742 00000001 = rb2_laser1_enable_read equ 1
1743                    ; line_number = 16
1744                    ; constant rb2_laser1_enable_clear = 2
1745 00000002 = rb2_laser1_enable_clear equ 2
1746                    ; line_number = 17
1747                    ; constant rb2_laser1_enable_set = 3
1748 00000003 = rb2_laser1_enable_set equ 3
1749            
1750                    ; line_number = 19
1751                    ; constant rb2_minimotor2_address = 2
1752 00000002 = rb2_minimotor2_address equ 2
1753                    ; line_number = 20
1754                    ; constant rb2_midimotor2_address = 3
1755 00000003 = rb2_midimotor2_address equ 3
1756                    ; line_number = 21
1757                    ; constant rb2_motor0_speed_get = 0
1758 00000000 = rb2_motor0_speed_get equ 0
1759                    ; line_number = 22
1760                    ; constant rb2_motor0_speed_set = 1
1761 00000001 = rb2_motor0_speed_set equ 1
1762                    ; line_number = 23
1763                    ; constant rb2_motor1_speed_get = 2
1764 00000002 = rb2_motor1_speed_get equ 2
1765                    ; line_number = 24
1766                    ; constant rb2_motor1_speed_set = 3
1767 00000003 = rb2_motor1_speed_set equ 3
1768                    ; line_number = 25
1769                    ; constant rb2_duty_cycle_get = 4
1770 00000004 = rb2_duty_cycle_get equ 4
1771                    ; line_number = 26
1772                    ; constant rb2_duty_cycle_set = 8
1773 00000008 = rb2_duty_cycle_set equ 8
1774            
1775                    ; line_number = 28
1776                    ; constant rb2_irdistance2_address = 4
1777 00000004 = rb2_irdistance2_address equ 4
1778                    ; line_number = 29
1779                    ; constant rb2_irdistance2_raw0_get = 0
1780 00000000 = rb2_irdistance2_raw0_get equ 0
1781                    ; line_number = 30
1782                    ; constant rb2_irdistance2_raw1_get = 1
1783 00000001 = rb2_irdistance2_raw1_get equ 1
1784                    ; line_number = 31
1785                    ; constant rb2_irdistance2_smooth0_get = 2
1786 00000002 = rb2_irdistance2_smooth0_get equ 2
1787                    ; line_number = 32
1788                    ; constant rb2_irdistance2_smooth1_get = 3
1789 00000003 = rb2_irdistance2_smooth1_get equ 3
1790                    ; line_number = 33
1791                    ; constant rb2_irdistance2_linear0_get = 4
1792 00000004 = rb2_irdistance2_linear0_get equ 4
1793                    ; line_number = 34
1794                    ; constant rb2_irdistance2_linear1_get = 6
1795 00000006 = rb2_irdistance2_linear1_get equ 6
1796            
1797                    ; line_number = 36
1798                    ; constant rb2_shaft2_address = 5
1799 00000005 = rb2_shaft2_address equ 5
1800                    ; line_number = 37
1801                    ; constant rb2_shaft2_count_latch = 0
1802 00000000 = rb2_shaft2_count_latch equ 0
1803                    ; line_number = 38
1804                    ; constant rb2_shaft2_count_clear = 1
1805 00000001 = rb2_shaft2_count_clear equ 1
1806                    ; line_number = 39
1807                    ; constant rb2_shaft2_shaft0_high_get = 2
1808 00000002 = rb2_shaft2_shaft0_high_get equ 2
1809                    ; line_number = 40
1810                    ; constant rb2_shaft2_shaft1_high_get = 3
1811 00000003 = rb2_shaft2_shaft1_high_get equ 3
1812                    ; line_number = 41
1813                    ; constant rb2_shaft2_continue_get = 4
1814 00000004 = rb2_shaft2_continue_get equ 4
1815                    ; line_number = 42
1816                    ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
1817 00000004 = rb2_shaft2_shaft0_low_get equ 4
1818                    ; line_number = 43
1819                    ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
1820 00000004 = rb2_shaft2_shaft1_low_get equ 4
1821                    ; line_number = 44
1822                    ; constant rb2_shaft2_x_get = 0x10
1823 00000010 = rb2_shaft2_x_get equ 16
1824                    ; line_number = 45
1825                    ; constant rb2_shaft2_y_get = 0x11
1826 00000011 = rb2_shaft2_y_get equ 17
1827                    ; line_number = 46
1828                    ; constant rb2_shaft2_bearing16_get = 0x12
1829 00000012 = rb2_shaft2_bearing16_get equ 18
1830                    ; line_number = 47
1831                    ; constant rb2_shaft2_bearing8_get = 0x13
1832 00000013 = rb2_shaft2_bearing8_get equ 19
1833                    ; line_number = 48
1834                    ; constant rb2_shaft2_target_x_get = 0x14
1835 00000014 = rb2_shaft2_target_x_get equ 20
1836                    ; line_number = 49
1837                    ; constant rb2_shaft2_target_y_get = 0x15
1838 00000015 = rb2_shaft2_target_y_get equ 21
1839                    ; line_number = 50
1840                    ; constant rb2_shaft2_target_bearing16_get = 0x16
1841 00000016 = rb2_shaft2_target_bearing16_get equ 22
1842                    ; line_number = 51
1843                    ; constant rb2_shaft2_target_bearing8_get = 0x17
1844 00000017 = rb2_shaft2_target_bearing8_get equ 23
1845                    ; line_number = 52
1846                    ; constant rb2_shaft2_target_distance_get = 0x18
1847 00000018 = rb2_shaft2_target_distance_get equ 24
1848                    ; line_number = 53
1849                    ; constant rb2_shaft2_wheel_spacing_get = 0x19
1850 00000019 = rb2_shaft2_wheel_spacing_get equ 25
1851                    ; line_number = 54
1852                    ; constant rb2_shaft2_wheel_ticks_get = 0x1a
1853 0000001a = rb2_shaft2_wheel_ticks_get equ 26
1854                    ; line_number = 55
1855                    ; constant rb2_shaft2_wheel_diameter_get = 0x1b
1856 0000001b = rb2_shaft2_wheel_diameter_get equ 27
1857                    ; line_number = 56
1858                    ; constant rb2_shaft2_count_iteration_get = 0x1c
1859 0000001c = rb2_shaft2_count_iteration_get equ 28
1860                    ; line_number = 57
1861                    ; constant rb2_shaft2_counter_signs_get = 0x1d
1862 0000001d = rb2_shaft2_counter_signs_get equ 29
1863                    ; line_number = 58
1864                    ; constant rb2_shaft2_x_set = 0x20
1865 00000020 = rb2_shaft2_x_set equ 32
1866                    ; line_number = 59
1867                    ; constant rb2_shaft2_y_set = 0x21
1868 00000021 = rb2_shaft2_y_set equ 33
1869                    ; line_number = 60
1870                    ; constant rb2_shaft2_bearing16_set = 0x22
1871 00000022 = rb2_shaft2_bearing16_set equ 34
1872                    ; line_number = 61
1873                    ; constant rb2_shaft2_navigation_latch = 0x23
1874 00000023 = rb2_shaft2_navigation_latch equ 35
1875                    ; line_number = 62
1876                    ; constant rb2_shaft2_target_x_set = 0x24
1877 00000024 = rb2_shaft2_target_x_set equ 36
1878                    ; line_number = 63
1879                    ; constant rb2_shaft2_target_y_set = 0x25
1880 00000025 = rb2_shaft2_target_y_set equ 37
1881                    ; line_number = 64
1882                    ; constant rb2_shaft2_wheel_spacing_set = 0x29
1883 00000029 = rb2_shaft2_wheel_spacing_set equ 41
1884                    ; line_number = 65
1885                    ; constant rb2_shaft2_wheel_ticks_set = 0x2a
1886 0000002a = rb2_shaft2_wheel_ticks_set equ 42
1887                    ; line_number = 66
1888                    ; constant rb2_shaft2_wheel_diameter_set = 0x2b
1889 0000002b = rb2_shaft2_wheel_diameter_set equ 43
1890                    ; line_number = 67
1891                    ; constant rb2_shaft2_counter_signs_set = 0x2c
1892 0000002c = rb2_shaft2_counter_signs_set equ 44
1893            
1894                    ; line_number = 69
1895                    ; constant rb2_orient5_address = 6
1896 00000006 = rb2_orient5_address equ 6
1897            
1898                    ; line_number = 71
1899                    ; constant rb2_compass8_address = 7
1900 00000007 = rb2_compass8_address equ 7
1901            
1902                    ; line_number = 73
1903                    ; constant rb2_io8_address = 8
1904 00000008 = rb2_io8_address equ 8
1905                    ; line_number = 74
1906                    ; constant rb2_io8_digital8_get = 0
1907 00000000 = rb2_io8_digital8_get equ 0
1908                    ; line_number = 75
1909                    ; constant rb2_io8_digital8_set = 1
1910 00000001 = rb2_io8_digital8_set equ 1
1911                    ; line_number = 76
1912                    ; constant rb2_io8_direction_get = 2
1913 00000002 = rb2_io8_direction_get equ 2
1914                    ; line_number = 77
1915                    ; constant rb2_io8_direction_set = 3
1916 00000003 = rb2_io8_direction_set equ 3
1917                    ; line_number = 78
1918                    ; constant rb2_io8_analog_mask_get = 4
1919 00000004 = rb2_io8_analog_mask_get equ 4
1920                    ; line_number = 79
1921                    ; constant rb2_io8_analog_mask_set = 5
1922 00000005 = rb2_io8_analog_mask_set equ 5
1923                    ; line_number = 80
1924                    ; constant rb2_io8_analog8_get = 0x10
1925 00000010 = rb2_io8_analog8_get equ 16
1926                    ; line_number = 81
1927                    ; constant rb2_io8_analog10_get = 0x18
1928 00000018 = rb2_io8_analog10_get equ 24
1929                    ; line_number = 82
1930                    ; constant rb2_low_set = 0x20
1931 00000020 = rb2_low_set equ 32
1932                    ; line_number = 83
1933                    ; constant rb2_high_set = 0x30
1934 00000030 = rb2_high_set equ 48
1935            
1936                    ; line_number = 85
1937                    ; constant rb2_sonar2_address = 9
1938 00000009 = rb2_sonar2_address equ 9
1939            
1940                    ; line_number = 87
1941                    ; constant rb2_voice1_address = 10
1942 0000000a = rb2_voice1_address equ 10
1943            
1944                    ; line_number = 89
1945                    ; constant rb2_servo4_address = 11
1946 0000000b = rb2_servo4_address equ 11
1947                    ; line_number = 90
1948                    ; constant rb2_servo4_servo0 = 0
1949 00000000 = rb2_servo4_servo0 equ 0
1950                    ; line_number = 91
1951                    ; constant rb2_servo4_servo1 = 1
1952 00000001 = rb2_servo4_servo1 equ 1
1953                    ; line_number = 92
1954                    ; constant rb2_servo4_servo2 = 2
1955 00000002 = rb2_servo4_servo2 equ 2
1956                    ; line_number = 93
1957                    ; constant rb2_servo4_servo3 = 3
1958 00000003 = rb2_servo4_servo3 equ 3
1959                    ; line_number = 94
1960                    ; constant rb2_servo4_quick_set = 0
1961 00000000 = rb2_servo4_quick_set equ 0
1962                    ; line_number = 95
1963                    ; constant rb2_servo4_quick_low = 0
1964 00000000 = rb2_servo4_quick_low equ 0
1965                    ; line_number = 96
1966                    ; constant rb2_servo4_quick_center = 40
1967 00000028 = rb2_servo4_quick_center equ 40
1968                    ; line_number = 97
1969                    ; constant rb2_servo4_quick_high = 0x7c
1970 0000007c = rb2_servo4_quick_high equ 124
1971                    ; line_number = 98
1972                    ; constant rb2_servo4_high_low_set = 0x80
1973 00000080 = rb2_servo4_high_low_set equ 128
1974                    ; line_number = 99
1975                    ; constant rb2_servo4_short_high_low_set = 0x84
1976 00000084 = rb2_servo4_short_high_low_set equ 132
1977                    ; line_number = 100
1978                    ; constant rb2_servo4_high_set = 0x88
1979 00000088 = rb2_servo4_high_set equ 136
1980                    ; line_number = 101
1981                    ; constant rb2_servo4_low_set = 0x8c
1982 0000008c = rb2_servo4_low_set equ 140
1983                    ; line_number = 102
1984                    ; constant rb2_servo4_enables_set = 0x90
1985 00000090 = rb2_servo4_enables_set equ 144
1986                    ; line_number = 103
1987                    ; constant rb2_servo4_enable0 = 1
1988 00000001 = rb2_servo4_enable0 equ 1
1989                    ; line_number = 104
1990                    ; constant rb2_servo4_enable1 = 2
1991 00000002 = rb2_servo4_enable1 equ 2
1992                    ; line_number = 105
1993                    ; constant rb2_servo4_enable2 = 4
1994 00000004 = rb2_servo4_enable2 equ 4
1995                    ; line_number = 106
1996                    ; constant rb2_servo4_enable3 = 8
1997 00000008 = rb2_servo4_enable3 equ 8
1998                    ; line_number = 107
1999                    ; constant rb2_servo4_enable_all = 0xf
2000 0000000f = rb2_servo4_enable_all equ 15
2001                    ; line_number = 108
2002                    ; constant rb2_servo4_enable_none = 0
2003 00000000 = rb2_servo4_enable_none equ 0
2004                    ; line_number = 109
2005                    ; constant rb2_servo4_high_get = 0xa0
2006 000000a0 = rb2_servo4_high_get equ 160
2007                    ; line_number = 110
2008                    ; constant rb2_servo4_low_get = 0xa4
2009 000000a4 = rb2_servo4_low_get equ 164
2010                    ; line_number = 111
2011                    ; constant rb2_servo4_enables_get = 0xa8
2012 000000a8 = rb2_servo4_enables_get equ 168
2013            
2014                    ; line_number = 113
2015                    ; constant rb2_controller28_address = 28
2016 0000001c = rb2_controller28_address equ 28
2017            
2018                    ; line_number = 115
2019                    ; constant rb2_lcd32_address = 32
2020 00000020 = rb2_lcd32_address equ 32
2021                    ; line_number = 116
2022                    ; constant rb2_lcd32_row_set = 4
2023 00000004 = rb2_lcd32_row_set equ 4
2024                    ; line_number = 117
2025                    ; constant rb2_lcd32_row0_set = rb2_lcd32_row_set | 0
2026 00000004 = rb2_lcd32_row0_set equ 4
2027                    ; line_number = 118
2028                    ; constant rb2_lcd32_row1_set = rb2_lcd32_row_set | 1
2029 00000005 = rb2_lcd32_row1_set equ 5
2030                    ; line_number = 119
2031                    ; constant rb2_lcd32_row2_set = rb2_lcd32_row_set | 2
2032 00000006 = rb2_lcd32_row2_set equ 6
2033                    ; line_number = 120
2034                    ; constant rb2_lcd32_row3_set = rb2_lcd32_row_set | 3
2035 00000007 = rb2_lcd32_row3_set equ 7
2036                    ; line_number = 121
2037                    ; constant rb2_lcd32_new_line = 0xa
2038 0000000a = rb2_lcd32_new_line equ 10
2039                    ; line_number = 122
2040                    ; constant rb2_lcd32_form_feed = 0xc
2041 0000000c = rb2_lcd32_form_feed equ 12
2042                    ; line_number = 123
2043                    ; constant rb2_lcd32_carriage_return = 0xd
2044 0000000d = rb2_lcd32_carriage_return equ 13
2045                    ; line_number = 124
2046                    ; constant rb2_lcd32_column_set = 0x10
2047 00000010 = rb2_lcd32_column_set equ 16
2048            
2049            
2050                    ; buffer = 'rb2bus'
2051                    ; line_number = 54
2052                    ; library rb2_constants exited
2053                    ; line_number = 55
2054                    ; library rb2bus_globals entered
2055            
2056                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
2057                    ; # All rights reserved.
2058            
2059                    ; # These are the global variables used by both the {rb2bus} and
2060                    ; # the various {rb2bus_picXXXX} libraries.  Poll based firmware
2061                    ; # uses both libraries, whereas interrupt driven software only
2062                    ; # uses the {rb2bus_picXXX} libraries.
2063            
2064                    ; buffer = 'rb2bus_globals'
2065                    ; line_number = 11
2066                    ; global rb2bus_selected bit	# 
2067 0000006f = rb2bus_selected___byte equ globals___0+79
2068 00000000 = rb2bus_selected___bit equ 0
2069                    ; line_number = 12
2070                    ; global rb2bus_error bit		# Global error bit
2071 0000006f = rb2bus_error___byte equ globals___0+79
2072 00000001 = rb2bus_error___bit equ 1
2073                    ; line_number = 13
2074                    ; global rb2bus_address byte	# Bus address to respond to
2075 00000020 = rb2bus_address equ globals___0
2076                    ; line_number = 14
2077                    ; global rb2bus_index byte	# Index into id information
2078 00000021 = rb2bus_index equ globals___0+1
2079            
2080            
2081                    ; buffer = 'rb2bus'
2082                    ; line_number = 55
2083                    ; library rb2bus_globals exited
2084            
2085                    ; Delaying code generation for procedure  rb2bus_select_wait
2086                    ; Delaying code generation for procedure  rb2bus_deselect
2087                    ; Delaying code generation for procedure  rb2bus_byte_get
2088                    ; Delaying code generation for procedure  rb2bus_byte_put
2089                    ; Delaying code generation for procedure  rb2bus_command
2090            
2091                    ; buffer = 'rb2bus_pic16f688'
2092                    ; line_number = 16
2093                    ; library rb2bus exited
2094            
2095                    ; Delaying code generation for procedure  rb2bus_initialize
2096                    ; line_number = 62
2097                    ; constant rb2bus_eedata_address = 0xfe
2098 000000fe = rb2bus_eedata_address equ 254
2099            
2100                    ; Delaying code generation for procedure  rb2bus_eedata_read
2101                    ; Delaying code generation for procedure  rb2bus_eedata_write
2102            
2103                    ; buffer = 'io8'
2104                    ; line_number = 20
2105                    ; library rb2bus_pic16f688 exited
2106            
2107                    ; # This module uses 16MHz crystal oscillator; hence mode EC=External Clock:
2108            
2109                    ; # All pins on this package are used except RA3.
2110                    ; line_number = 26
2111                    ; package pdip
2112                    ; line_number = 27
2113                    ; pin 1 = power_supply
2114                    ; line_number = 28
2115                    ;  pin 2 = osc1
2116                    ; line_number = 29
2117                    ;  pin 3 = ra4_in, name=io1, mask=io1_mask, bit=io1_bit
2118 00000005 = io1___byte equ _porta
2119 00000004 = io1___bit equ 4
2120 00000010 = io1_mask equ 16
2121 00000004 = io1_bit equ 4
2122                    ; line_number = 30
2123                    ;  pin 4 = ra3_nc, name=nc1
2124 00000005 = nc1___byte equ _porta
2125 00000003 = nc1___bit equ 3
2126                    ; line_number = 31
2127                    ;  pin 5 = rx, name=rx, bit=rx_bit
2128 00000007 = rx___byte equ _portc
2129 00000005 = rx___bit equ 5
2130 00000005 = rx_bit equ 5
2131                    ; line_number = 32
2132                    ;  pin 6 = tx, name=tx, bit=tx_bit
2133 00000007 = tx___byte equ _portc
2134 00000004 = tx___bit equ 4
2135 00000004 = tx_bit equ 4
2136                    ; line_number = 33
2137                    ;  pin 7 = rc3_in, name=io6, mask=io6_mask, bit=io6_bit
2138 00000007 = io6___byte equ _portc
2139 00000003 = io6___bit equ 3
2140 00000008 = io6_mask equ 8
2141 00000003 = io6_bit equ 3
2142                    ; line_number = 34
2143                    ;  pin 8 = rc2_in, name=io4, mask=io4_mask, bit=io4_bit
2144 00000007 = io4___byte equ _portc
2145 00000002 = io4___bit equ 2
2146 00000004 = io4_mask equ 4
2147 00000002 = io4_bit equ 2
2148                    ; line_number = 35
2149                    ;  pin 9 = rc1_in, name=io2, mask=io2_mask, bit=io2_bit
2150 00000007 = io2___byte equ _portc
2151 00000001 = io2___bit equ 1
2152 00000002 = io2_mask equ 2
2153 00000001 = io2_bit equ 1
2154                    ; line_number = 36
2155                    ;  pin 10 = rc0_in, name=io0, mask=io0_mask, bit=io0_bit
2156 00000007 = io0___byte equ _portc
2157 00000000 = io0___bit equ 0
2158 00000001 = io0_mask equ 1
2159 00000000 = io0_bit equ 0
2160                    ; line_number = 37
2161                    ;  pin 11 = ra2_in, name=io7, mask=io7_mask, bit=io7_bit
2162 00000005 = io7___byte equ _porta
2163 00000002 = io7___bit equ 2
2164 00000004 = io7_mask equ 4
2165 00000002 = io7_bit equ 2
2166                    ; line_number = 38
2167                    ;  pin 12 = ra1_in, name=io5, mask=io5_mask, bit=io5_bit
2168 00000005 = io5___byte equ _porta
2169 00000001 = io5___bit equ 1
2170 00000002 = io5_mask equ 2
2171 00000001 = io5_bit equ 1
2172                    ; line_number = 39
2173                    ;  pin 13 = ra0_in, name=io3, mask=io3_mask, bit=io3_bit
2174 00000005 = io3___byte equ _porta
2175 00000000 = io3___bit equ 0
2176 00000001 = io3_mask equ 1
2177 00000000 = io3_bit equ 0
2178                    ; line_number = 40
2179                    ;  pin 14 = ground
2180            
2181                    ; line_number = 42
2182                    ; origin 0
2183   0000 :           org     0
2184            
2185                    ; line_number = 44
2186                    ; global adc_lsbs[8] array[byte]
2187 0000002c = adc_lsbs equ globals___0+12
2188                    ; line_number = 45
2189                    ; global adc_msbs[8] array[byte]
2190 00000034 = adc_msbs equ globals___0+20
2191            
2192                    ; line_number = 47
2193                    ;info   47, 0
2194                    ; procedure main
2195   0000 :   main:
2196                    ; Initialize some registers
2197 0000 019f          clrf    _adcon0
2198 0001 1683          bsf     __rp0___byte, __rp0___bit
2199 0002 0191          clrf    _ansel
2200 0003 3007          movlw   7
2201 0004 1283          bcf     __rp0___byte, __rp0___bit
2202 0005 0099          movwf   _cmcon0
2203 0006 303f          movlw   63
2204 0007 1683          bsf     __rp0___byte, __rp0___bit
2205 0008 0085          movwf   _trisa
2206 0009 303f          movlw   63
2207 000a 0087          movwf   _trisc
2208                    ; arguments_none
2209                    ; line_number = 49
2210                    ;  returns_nothing
2211            
2212                    ; # This procedure initializes everything and does command decoding.
2213            
2214                    ; line_number = 53
2215                    ;  local command byte
2216 0000003c = main__command equ globals___0+28
2217                    ; line_number = 54
2218                    ;  local channel byte
2219 0000003d = main__channel equ globals___0+29
2220                    ; line_number = 55
2221                    ;  local result byte
2222 0000003e = main__result equ globals___0+30
2223            
2224                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:X0=cu=>X0)
2225                    ; line_number = 57
2226                    ;  call rb2bus_initialize(8)
2227                    ;info   57, 11
2228 000b 3008          movlw   8
2229 000c 1283          bcf     __rp0___byte, __rp0___bit
2230 000d 2228          call    rb2bus_initialize
2231            
2232                    ; line_number = 59
2233                    ;  call direction_set(0xff)
2234                    ;info   59, 14
2235 000e 30ff          movlw   255
2236 000f 216b          call    direction_set
2237            
2238                    ; # We are running at 16MHz.  We want Tad to be as close to 1.6uS
2239                    ; # as possible.  1/(16MHz/32) = 2uS which is about as close as
2240                    ; # we are going to get.  Thus, ADCS<2:0> = 010.
2241                    ; line_number = 64
2242                    ;  _adcon1 := 0x20
2243                    ;info   64, 16
2244 0010 3020          movlw   32
2245 0011 1683          bsf     __rp0___byte, __rp0___bit
2246 0012 009f          movwf   _adcon1
2247            
2248                    ; line_number = 66
2249                    ;  _adcon0 := 0
2250                    ;info   66, 19
2251 0013 1283          bcf     __rp0___byte, __rp0___bit
2252 0014 019f          clrf    _adcon0
2253                    ; # A/D result is left justified (10-bits) in ADRESH::ADRESL
2254                    ; line_number = 68
2255                    ;  _adfm := _false
2256                    ;info   68, 21
2257 0015 139f          bcf     _adfm___byte, _adfm___bit
2258                    ; # Use 5 volt voltage reference:
2259                    ; line_number = 70
2260                    ;  _vcfg := _false
2261                    ;info   70, 22
2262 0016 131f          bcf     _vcfg___byte, _vcfg___bit
2263                    ; # Turn on the A/D:
2264                    ; line_number = 72
2265                    ;  _adon := _true
2266                    ;info   72, 23
2267 0017 141f          bsf     _adon___byte, _adon___bit
2268            
2269                    ; line_number = 74
2270                    ;  loop_forever start
2271   0018 :   main__1:
2272                    ; # Make sure that we have been selected:
2273                    ; line_number = 76
2274                    ;  rb2bus_error := _true
2275                    ;info   76, 24
2276 0018 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
2277                    ; line_number = 77
2278                    ;  while rb2bus_error start
2279   0019 :   main__2:
2280                    ;info   77, 25
2281                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2282                    ; No 1TEST: true.size=4 false.size=0
2283                    ; No 2TEST: true.size=4 false.size=0
2284                    ; 1GOTO: Single test with GOTO
2285 0019 1cef          btfss   rb2bus_error___byte, rb2bus_error___bit
2286 001a 281f          goto    main__3
2287                    ; line_number = 78
2288                    ; call rb2bus_select_wait()
2289                    ;info   78, 27
2290 001b 218b          call    rb2bus_select_wait
2291                    ; line_number = 79
2292                    ;  command := rb2bus_byte_get()
2293                    ;info   79, 28
2294 001c 21aa          call    rb2bus_byte_get
2295 001d 00bc          movwf   main__command
2296            
2297 001e 2819          goto    main__2
2298                    ; Recombine size1 = 0 || size2 = 0
2299   001f :   main__3:
2300                    ; line_number = 77
2301                    ;  while rb2bus_error done
2302                    ; line_number = 81
2303                    ; switch command >> 6 start
2304                    ;info   81, 31
2305                    ; switch_before:(data:00=uu=>00 code:X0=cu=>X0) size=7
2306 001f 3000          movlw   main__44>>8
2307 0020 008a          movwf   __pclath
2308 0000004d = main__45 equ globals___0+45
2309 0021 0e3c          swapf   main__command,w
2310 0022 00cd          movwf   main__45
2311 0023 0ccd          rrf     main__45,f
2312 0024 0c4d          rrf     main__45,w
2313 0025 3903          andlw   3
2314                    ; switch after expression:(data:00=uu=>00 code:X0=cu=>X0)
2315 0026 3e28          addlw   main__44
2316 0027 0082          movwf   __pcl
2317                    ; page_group 4
2318   0028 :   main__44:
2319 0028 282c          goto    main__42
2320 0029 28df          goto    main__46
2321 002a 28df          goto    main__46
2322 002b 28cc          goto    main__43
2323                    ; line_number = 82
2324                    ; case 0
2325   002c :   main__42:
2326                    ; line_number = 83
2327                    ; switch (command >> 3) & 7 start
2328                    ;info   83, 44
2329                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2330 002c 3000          movlw   main__35>>8
2331 002d 008a          movwf   __pclath
2332 0000004d = main__36 equ globals___0+45
2333 002e 0c3c          rrf     main__command,w
2334 002f 00cd          movwf   main__36
2335 0030 0ccd          rrf     main__36,f
2336 0031 0c4d          rrf     main__36,w
2337 0032 3907          andlw   7
2338                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2339 0033 3e35          addlw   main__35
2340 0034 0082          movwf   __pcl
2341                    ; page_group 8
2342   0035 :   main__35:
2343 0035 283d          goto    main__30
2344 0036 28cb          goto    main__37
2345 0037 286f          goto    main__31
2346 0038 28b3          goto    main__32
2347 0039 28bb          goto    main__33
2348 003a 28bb          goto    main__33
2349 003b 28c3          goto    main__34
2350 003c 28c3          goto    main__34
2351                    ; line_number = 84
2352                    ; case 0
2353   003d :   main__30:
2354                    ; # 0000 0xxx:
2355                    ; line_number = 86
2356                    ;  switch command & 7 start
2357                    ;info   86, 61
2358                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2359                    ; line_number = 114
2360                    ; case_maximum 7
2361 003d 3000          movlw   main__13>>8
2362 003e 008a          movwf   __pclath
2363 003f 3007          movlw   7
2364 0040 053c          andwf   main__command,w
2365                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2366 0041 3e43          addlw   main__13
2367 0042 0082          movwf   __pcl
2368                    ; page_group 8
2369   0043 :   main__13:
2370 0043 284b          goto    main__7
2371 0044 284e          goto    main__8
2372 0045 2857          goto    main__9
2373 0046 285a          goto    main__10
2374 0047 2863          goto    main__11
2375 0048 2866          goto    main__12
2376 0049 286e          goto    main__14
2377 004a 286e          goto    main__14
2378                    ; line_number = 87
2379                    ; case 0
2380   004b :   main__7:
2381                    ; # 0000 0000 (Digital8_Read):
2382                    ; line_number = 89
2383                    ;  call rb2bus_byte_put(digital_read())
2384                    ;info   89, 75
2385 004b 2121          call    digital_read
2386 004c 21cc          call    rb2bus_byte_put
2387 004d 286e          goto    main__14
2388                    ; line_number = 90
2389                    ; case 1
2390   004e :   main__8:
2391                    ; # 0000 0001 (Digital8_Write):
2392                    ; line_number = 92
2393                    ;  command := rb2bus_byte_get()
2394                    ;info   92, 78
2395 004e 21aa          call    rb2bus_byte_get
2396 004f 00bc          movwf   main__command
2397                    ; line_number = 93
2398                    ;  if !rb2bus_error start
2399                    ;info   93, 80
2400                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2401                    ; No 1TEST: true.size=0 false.size=4
2402                    ; No 2TEST: true.size=0 false.size=4
2403                    ; 1GOTO: Single test with GOTO
2404 0050 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2405 0051 2856          goto    main__4
2406                    ; line_number = 94
2407                    ; call digital_set(command)
2408                    ;info   94, 82
2409 0052 083c          movf    main__command,w
2410 0053 2138          call    digital_set
2411                    ; line_number = 95
2412                    ;  call rb2bus_byte_put(0)
2413                    ;info   95, 84
2414 0054 3000          movlw   0
2415 0055 21cc          call    rb2bus_byte_put
2416   0056 :   main__4:
2417                    ; Recombine size1 = 0 || size2 = 0
2418                    ; line_number = 93
2419                    ;  if !rb2bus_error done
2420 0056 286e          goto    main__14
2421                    ; line_number = 96
2422                    ; case 2
2423   0057 :   main__9:
2424                    ; # 0000 0010 (Direction_Read):
2425                    ; line_number = 98
2426                    ;  call rb2bus_byte_put(direction_read())
2427                    ;info   98, 87
2428 0057 2150          call    direction_read
2429 0058 21cc          call    rb2bus_byte_put
2430 0059 286e          goto    main__14
2431                    ; line_number = 99
2432                    ; case 3
2433   005a :   main__10:
2434                    ; # 0000 0011 (Direction_Set):
2435                    ; line_number = 101
2436                    ;  command := rb2bus_byte_get()
2437                    ;info   101, 90
2438 005a 21aa          call    rb2bus_byte_get
2439 005b 00bc          movwf   main__command
2440                    ; line_number = 102
2441                    ;  if !rb2bus_error start
2442                    ;info   102, 92
2443                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2444                    ; No 1TEST: true.size=0 false.size=4
2445                    ; No 2TEST: true.size=0 false.size=4
2446                    ; 1GOTO: Single test with GOTO
2447 005c 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2448 005d 2862          goto    main__5
2449                    ; line_number = 103
2450                    ; call direction_set(command)
2451                    ;info   103, 94
2452 005e 083c          movf    main__command,w
2453 005f 216b          call    direction_set
2454                    ; line_number = 104
2455                    ;  call rb2bus_byte_put(0)
2456                    ;info   104, 96
2457 0060 3000          movlw   0
2458 0061 21cc          call    rb2bus_byte_put
2459   0062 :   main__5:
2460                    ; Recombine size1 = 0 || size2 = 0
2461                    ; line_number = 102
2462                    ;  if !rb2bus_error done
2463 0062 286e          goto    main__14
2464                    ; line_number = 105
2465                    ; case 4
2466   0063 :   main__11:
2467                    ; # 0000 0100 (Analog_Mask_Read):
2468                    ; line_number = 107
2469                    ;  call rb2bus_byte_put(analog_mask_read())
2470                    ;info   107, 99
2471 0063 20fa          call    analog_mask_read
2472 0064 21cc          call    rb2bus_byte_put
2473 0065 286e          goto    main__14
2474                    ; line_number = 108
2475                    ; case 5
2476   0066 :   main__12:
2477                    ; # 0000 0101 (Analog_Mask_Set):
2478                    ; line_number = 110
2479                    ;  command := rb2bus_byte_get()
2480                    ;info   110, 102
2481 0066 21aa          call    rb2bus_byte_get
2482 0067 00bc          movwf   main__command
2483                    ; line_number = 111
2484                    ;  if !rb2bus_error start
2485                    ;info   111, 104
2486                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2487                    ; No 1TEST: true.size=0 false.size=4
2488                    ; No 2TEST: true.size=0 false.size=4
2489                    ; 1GOTO: Single test with GOTO
2490 0068 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
2491 0069 286e          goto    main__6
2492                    ; line_number = 112
2493                    ; call analog_mask_set(command)
2494                    ;info   112, 106
2495 006a 083c          movf    main__command,w
2496 006b 210f          call    analog_mask_set
2497                    ; line_number = 113
2498                    ;  call rb2bus_byte_put(0)
2499                    ;info   113, 108
2500 006c 3000          movlw   0
2501 006d 21cc          call    rb2bus_byte_put
2502   006e :   main__6:
2503                    ; Recombine size1 = 0 || size2 = 0
2504                    ; line_number = 111
2505                    ;  if !rb2bus_error done
2506   006e :   main__14:
2507                    ; line_number = 86
2508                    ;  switch command & 7 done
2509 006e 28cb          goto    main__37
2510                    ; line_number = 115
2511                    ; case 2
2512   006f :   main__31:
2513                    ; # 0001 0ccc (Analog8_Read):
2514                    ; line_number = 117
2515                    ;  switch command & 7 start
2516                    ;info   117, 111
2517                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2518 006f 3000          movlw   main__23>>8
2519 0070 008a          movwf   __pclath
2520 0071 3007          movlw   7
2521 0072 053c          andwf   main__command,w
2522                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2523 0073 3e75          addlw   main__23
2524 0074 0082          movwf   __pcl
2525                    ; page_group 8
2526   0075 :   main__23:
2527 0075 287d          goto    main__15
2528 0076 2880          goto    main__16
2529 0077 2883          goto    main__17
2530 0078 2886          goto    main__18
2531 0079 2888          goto    main__19
2532 007a 288b          goto    main__20
2533 007b 288e          goto    main__21
2534 007c 2891          goto    main__22
2535                    ; line_number = 118
2536                    ; case 0
2537   007d :   main__15:
2538                    ; line_number = 119
2539                    ; channel := 4
2540                    ;info   119, 125
2541 007d 3004          movlw   4
2542 007e 00bd          movwf   main__channel
2543 007f 2893          goto    main__24
2544                    ; line_number = 120
2545                    ; case 1
2546   0080 :   main__16:
2547                    ; line_number = 121
2548                    ; channel := 3
2549                    ;info   121, 128
2550 0080 3003          movlw   3
2551 0081 00bd          movwf   main__channel
2552 0082 2893          goto    main__24
2553                    ; line_number = 122
2554                    ; case 2
2555   0083 :   main__17:
2556                    ; line_number = 123
2557                    ; channel := 5
2558                    ;info   123, 131
2559 0083 3005          movlw   5
2560 0084 00bd          movwf   main__channel
2561 0085 2893          goto    main__24
2562                    ; line_number = 124
2563                    ; case 3
2564   0086 :   main__18:
2565                    ; line_number = 125
2566                    ; channel := 0
2567                    ;info   125, 134
2568 0086 01bd          clrf    main__channel
2569 0087 2893          goto    main__24
2570                    ; line_number = 126
2571                    ; case 4
2572   0088 :   main__19:
2573                    ; line_number = 127
2574                    ; channel := 6
2575                    ;info   127, 136
2576 0088 3006          movlw   6
2577 0089 00bd          movwf   main__channel
2578 008a 2893          goto    main__24
2579                    ; line_number = 128
2580                    ; case 5
2581   008b :   main__20:
2582                    ; line_number = 129
2583                    ; channel := 1
2584                    ;info   129, 139
2585 008b 3001          movlw   1
2586 008c 00bd          movwf   main__channel
2587 008d 2893          goto    main__24
2588                    ; line_number = 130
2589                    ; case 6
2590   008e :   main__21:
2591                    ; line_number = 131
2592                    ; channel := 7
2593                    ;info   131, 142
2594 008e 3007          movlw   7
2595 008f 00bd          movwf   main__channel
2596 0090 2893          goto    main__24
2597                    ; line_number = 132
2598                    ; case 7
2599   0091 :   main__22:
2600                    ; line_number = 133
2601                    ; channel := 2
2602                    ;info   133, 145
2603 0091 3002          movlw   2
2604 0092 00bd          movwf   main__channel
2605            
2606   0093 :   main__24:
2607                    ; line_number = 117
2608                    ;  switch command & 7 done
2609                    ; # Select the channel while keeping the A/D on:
2610                    ; line_number = 136
2611                    ;  _adcon0 := (channel << 2) | 1
2612                    ;info   136, 147
2613 0000004d = main__25 equ globals___0+45
2614 0093 0d3d          rlf     main__channel,w
2615 0094 00cd          movwf   main__25
2616 0095 0d4d          rlf     main__25,w
2617 0096 39fc          andlw   252
2618 0097 3801          iorlw   1
2619 0098 009f          movwf   _adcon0
2620                    ; # It can take up to 20 uS for the A/D to stablize:
2621                    ; line_number = 138
2622                    ;  delay 20 * microsecond start
2623                    ;info   138, 153
2624                    ; Delay expression evaluates to 80
2625                    ; line_number = 139
2626                    ; do_nothing
2627                    ;info   139, 153
2628            
2629                    ; Delay 80 cycles
2630                    ; Delay loop takes 20 * 4 = 80 cycles
2631 0099 3014          movlw   20
2632   009a :   main__26:
2633 009a 3eff          addlw   255
2634 009b 1d03          btfss   __z___byte, __z___bit
2635 009c 289a          goto    main__26
2636                    ; line_number = 138
2637                    ;  delay 20 * microsecond done
2638                    ; # Now take the A/D sample:
2639                    ; line_number = 142
2640                    ;  _go := _true
2641                    ;info   142, 157
2642 009d 149f          bsf     _go___byte, _go___bit
2643                    ; line_number = 143
2644                    ;  while _go start
2645   009e :   main__27:
2646                    ;info   143, 158
2647                    ; =>bit_code_emit@symbol(): sym=_go
2648                    ; 1TEST: Single test with code in skip slot
2649 009e 189f          btfsc   _go___byte, _go___bit
2650                    ; line_number = 144
2651                    ; do_nothing
2652                    ;info   144, 159
2653            
2654 009f 289e          goto    main__27
2655                    ; Recombine size1 = 0 || size2 = 0
2656                    ; line_number = 143
2657                    ;  while _go done
2658                    ; # We've got the result:
2659                    ; line_number = 147
2660                    ;  result := _adresh
2661                    ;info   147, 160
2662 00a0 081e          movf    _adresh,w
2663 00a1 00be          movwf   main__result
2664                    ; line_number = 148
2665                    ;  adc_lsbs[channel] := _adresl
2666                    ;info   148, 162
2667                    ; index_fsr_first
2668 00a2 083d          movf    main__channel,w
2669 00a3 3e2c          addlw   adc_lsbs
2670 00a4 0084          movwf   __fsr
2671 00a5 1383          bcf     __irp___byte, __irp___bit
2672 00a6 1683          bsf     __rp0___byte, __rp0___bit
2673 00a7 081e          movf    _adresl,w
2674 00a8 0080          movwf   __indf
2675                    ; line_number = 149
2676                    ;  adc_msbs[channel] := result
2677                    ;info   149, 169
2678                    ; index_fsr_first
2679 00a9 1283          bcf     __rp0___byte, __rp0___bit
2680 00aa 083d          movf    main__channel,w
2681 00ab 3e34          addlw   adc_msbs
2682 00ac 0084          movwf   __fsr
2683 00ad 1383          bcf     __irp___byte, __irp___bit
2684 00ae 083e          movf    main__result,w
2685 00af 0080          movwf   __indf
2686                    ; line_number = 150
2687                    ;  call rb2bus_byte_put(result)
2688                    ;info   150, 176
2689 00b0 083e          movf    main__result,w
2690 00b1 21cc          call    rb2bus_byte_put
2691 00b2 28cb          goto    main__37
2692                    ; line_number = 151
2693                    ; case 3
2694   00b3 :   main__32:
2695                    ; # 0001 1ccc (Analog10_Read):
2696                    ; line_number = 153
2697                    ;  call rb2bus_byte_put(adc_lsbs[command & 7])
2698                    ;info   153, 179
2699 00b3 3007          movlw   7
2700 00b4 053c          andwf   main__command,w
2701 00b5 3e2c          addlw   adc_lsbs
2702 00b6 0084          movwf   __fsr
2703 00b7 1383          bcf     __irp___byte, __irp___bit
2704 00b8 0800          movf    __indf,w
2705 00b9 21cc          call    rb2bus_byte_put
2706 00ba 28cb          goto    main__37
2707                    ; line_number = 154
2708                    ; case 4, 5
2709   00bb :   main__33:
2710                    ; # 0010 dddd (Low Set):
2711                    ; line_number = 156
2712                    ;  call digital_set((digital_read() & 0xf0) | (command & 0xf))
2713                    ;info   156, 187
2714 0000004d = main__28 equ globals___0+45
2715 00bb 2121          call    digital_read
2716 00bc 39f0          andlw   240
2717 00bd 00cd          movwf   main__28
2718 00be 300f          movlw   15
2719 00bf 053c          andwf   main__command,w
2720 00c0 044d          iorwf   main__28,w
2721 00c1 2138          call    digital_set
2722 00c2 28cb          goto    main__37
2723                    ; line_number = 157
2724                    ; case 6, 7
2725   00c3 :   main__34:
2726                    ; # 0011 dddd (High Set):
2727                    ; line_number = 159
2728                    ;  call digital_set((command << 4) | (digital_read() & 0xf))
2729                    ;info   159, 195
2730 0000004d = main__29 equ globals___0+45
2731 00c3 0e3c          swapf   main__command,w
2732 00c4 00cd          movwf   main__29
2733 00c5 30f0          movlw   240
2734 00c6 05cd          andwf   main__29,f
2735 00c7 2121          call    digital_read
2736 00c8 390f          andlw   15
2737 00c9 044d          iorwf   main__29,w
2738 00ca 2138          call    digital_set
2739   00cb :   main__37:
2740                    ; line_number = 83
2741                    ; switch (command >> 3) & 7 done
2742 00cb 28df          goto    main__46
2743                    ; line_number = 160
2744                    ; case 3
2745   00cc :   main__43:
2746                    ; # 11xx xxxx:
2747                    ; line_number = 162
2748                    ;  switch (command >> 3) & 7 start
2749                    ;info   162, 204
2750                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2751 00cc 3000          movlw   main__39>>8
2752 00cd 008a          movwf   __pclath
2753 0000004d = main__40 equ globals___0+45
2754 00ce 0c3c          rrf     main__command,w
2755 00cf 00cd          movwf   main__40
2756 00d0 0ccd          rrf     main__40,f
2757 00d1 0c4d          rrf     main__40,w
2758 00d2 3907          andlw   7
2759                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2760 00d3 3ed5          addlw   main__39
2761 00d4 0082          movwf   __pcl
2762                    ; page_group 8
2763   00d5 :   main__39:
2764 00d5 28df          goto    main__41
2765 00d6 28df          goto    main__41
2766 00d7 28df          goto    main__41
2767 00d8 28df          goto    main__41
2768 00d9 28df          goto    main__41
2769 00da 28df          goto    main__41
2770 00db 28df          goto    main__41
2771 00dc 28dd          goto    main__38
2772                    ; line_number = 163
2773                    ; case 7
2774   00dd :   main__38:
2775                    ; # 1111 1xxx:
2776                    ; line_number = 165
2777                    ;  call rb2bus_command(command)
2778                    ;info   165, 221
2779 00dd 083c          movf    main__command,w
2780 00de 21e0          call    rb2bus_command
2781            
2782            
2783   00df :   main__41:
2784                    ; line_number = 162
2785                    ;  switch (command >> 3) & 7 done
2786   00df :   main__46:
2787                    ; line_number = 81
2788                    ; switch command >> 6 done
2789                    ; line_number = 74
2790                    ;  loop_forever wrap-up
2791 00df 2818          goto    main__1
2792                    ; line_number = 74
2793                    ;  loop_forever done
2794                    ; delay after procedure statements=non-uniform
2795            
2796            
2797            
2798            
2799                    ; line_number = 168
2800                    ;info   168, 224
2801                    ; procedure wait
2802   00e0 :   wait:
2803                    ; arguments_none
2804                    ; line_number = 170
2805                    ;  returns_nothing
2806            
2807                    ; # This procedure is repeatably called whenever the software
2808                    ; # is waiting for a byte to arrive from the bus.
2809            
2810                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
2811                    ; line_number = 175
2812                    ;  do_nothing
2813                    ;info   175, 224
2814            
2815            
2816                    ; delay after procedure statements=non-uniform
2817                    ; Implied return
2818 00e0 3400          retlw   0
2819            
2820            
2821            
2822            
2823                    ; line_number = 178
2824                    ; string id = "\16,0,8,2,3,5\IO8-B\7\Gramson" start
2825                    ; id = '\16,0,8,2,3,5\IO8-B\7\Gramson'
2826   00e1 :   id:
2827                    ; Temporarily save index into FSR
2828 00e1 0084          movwf   __fsr
2829                    ; Initialize PCLATH to point to this code page
2830 00e2 3000          movlw   id___base>>8
2831 00e3 008a          movwf   __pclath
2832                    ; Restore index from FSR
2833 00e4 0804          movf    __fsr,w
2834 00e5 3ee7          addlw   id___base
2835                    ; Index to the correct return value
2836 00e6 0082          movwf   __pcl
2837                    ; page_group 19
2838   00e7 :   id___base:
2839 00e7 3410          retlw   16
2840 00e8 3400          retlw   0
2841 00e9 3408          retlw   8
2842 00ea 3402          retlw   2
2843 00eb 3403          retlw   3
2844 00ec 3405          retlw   5
2845 00ed 3449          retlw   73
2846 00ee 344f          retlw   79
2847 00ef 3438          retlw   56
2848 00f0 342d          retlw   45
2849 00f1 3442          retlw   66
2850 00f2 3407          retlw   7
2851 00f3 3447          retlw   71
2852 00f4 3472          retlw   114
2853 00f5 3461          retlw   97
2854 00f6 346d          retlw   109
2855 00f7 3473          retlw   115
2856 00f8 346f          retlw   111
2857 00f9 346e          retlw   110
2858                    ; line_number = 178
2859                    ; string id = "\16,0,8,2,3,5\IO8-B\7\Gramson" start
2860            
2861                    ; line_number = 180
2862                    ;info   180, 250
2863                    ; procedure analog_mask_read
2864   00fa :   analog_mask_read:
2865                    ; arguments_none
2866                    ; line_number = 182
2867                    ;  returns byte
2868            
2869                    ; # This procedure will return the analog selection bits.
2870            
2871                    ; line_number = 186
2872                    ;  local analog byte
2873 0000003f = analog_mask_read__analog equ globals___0+31
2874            
2875                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
2876                    ; line_number = 188
2877                    ;  analog := 0
2878                    ;info   188, 250
2879 00fa 01bf          clrf    analog_mask_read__analog
2880                    ; line_number = 189
2881                    ;  if _ansel@0 start
2882                    ;info   189, 251
2883 00000091 = analog_mask_read__select__2___byte equ _ansel
2884 00000000 = analog_mask_read__select__2___bit equ 0
2885                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__2
2886                    ; 1TEST: Single test with code in skip slot
2887 00fb 1683          bsf     __rp0___byte, __rp0___bit
2888 00fc 1811          btfsc   analog_mask_read__select__2___byte, analog_mask_read__select__2___bit
2889                    ; line_number = 190
2890                    ; analog@3 := _true
2891                    ;info   190, 253
2892 0000003f = analog_mask_read__select__1___byte equ analog_mask_read__analog
2893 00000003 = analog_mask_read__select__1___bit equ 3
2894 00fd 15bf          bsf     analog_mask_read__select__1___byte, analog_mask_read__select__1___bit
2895                    ; Recombine size1 = 0 || size2 = 0
2896                    ; line_number = 189
2897                    ;  if _ansel@0 done
2898                    ; line_number = 191
2899                    ; if _ansel@1 start
2900                    ;info   191, 254
2901 00000091 = analog_mask_read__select__4___byte equ _ansel
2902 00000001 = analog_mask_read__select__4___bit equ 1
2903                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__4
2904                    ; 1TEST: Single test with code in skip slot
2905 00fe 1891          btfsc   analog_mask_read__select__4___byte, analog_mask_read__select__4___bit
2906                    ; line_number = 192
2907                    ; analog@5 := _true
2908                    ;info   192, 255
2909 0000003f = analog_mask_read__select__3___byte equ analog_mask_read__analog
2910 00000005 = analog_mask_read__select__3___bit equ 5
2911 00ff 16bf          bsf     analog_mask_read__select__3___byte, analog_mask_read__select__3___bit
2912                    ; Recombine size1 = 0 || size2 = 0
2913                    ; line_number = 191
2914                    ; if _ansel@1 done
2915                    ; line_number = 193
2916                    ; if _ansel@2 start
2917                    ;info   193, 256
2918 00000091 = analog_mask_read__select__6___byte equ _ansel
2919 00000002 = analog_mask_read__select__6___bit equ 2
2920                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__6
2921                    ; 1TEST: Single test with code in skip slot
2922 0100 1911          btfsc   analog_mask_read__select__6___byte, analog_mask_read__select__6___bit
2923                    ; line_number = 194
2924                    ; analog@7 := _true
2925                    ;info   194, 257
2926 0000003f = analog_mask_read__select__5___byte equ analog_mask_read__analog
2927 00000007 = analog_mask_read__select__5___bit equ 7
2928 0101 17bf          bsf     analog_mask_read__select__5___byte, analog_mask_read__select__5___bit
2929                    ; Recombine size1 = 0 || size2 = 0
2930                    ; line_number = 193
2931                    ; if _ansel@2 done
2932                    ; line_number = 195
2933                    ; if _ansel@3 start
2934                    ;info   195, 258
2935 00000091 = analog_mask_read__select__8___byte equ _ansel
2936 00000003 = analog_mask_read__select__8___bit equ 3
2937                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__8
2938                    ; 1TEST: Single test with code in skip slot
2939 0102 1991          btfsc   analog_mask_read__select__8___byte, analog_mask_read__select__8___bit
2940                    ; line_number = 196
2941                    ; analog@1 := _true
2942                    ;info   196, 259
2943 0000003f = analog_mask_read__select__7___byte equ analog_mask_read__analog
2944 00000001 = analog_mask_read__select__7___bit equ 1
2945 0103 14bf          bsf     analog_mask_read__select__7___byte, analog_mask_read__select__7___bit
2946                    ; Recombine size1 = 0 || size2 = 0
2947                    ; line_number = 195
2948                    ; if _ansel@3 done
2949                    ; line_number = 197
2950                    ; if _ansel@4 start
2951                    ;info   197, 260
2952 00000091 = analog_mask_read__select__10___byte equ _ansel
2953 00000004 = analog_mask_read__select__10___bit equ 4
2954                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__10
2955                    ; 1TEST: Single test with code in skip slot
2956 0104 1a11          btfsc   analog_mask_read__select__10___byte, analog_mask_read__select__10___bit
2957                    ; line_number = 198
2958                    ; analog@0 := _true
2959                    ;info   198, 261
2960 0000003f = analog_mask_read__select__9___byte equ analog_mask_read__analog
2961 00000000 = analog_mask_read__select__9___bit equ 0
2962 0105 143f          bsf     analog_mask_read__select__9___byte, analog_mask_read__select__9___bit
2963                    ; Recombine size1 = 0 || size2 = 0
2964                    ; line_number = 197
2965                    ; if _ansel@4 done
2966                    ; line_number = 199
2967                    ; if _ansel@5 start
2968                    ;info   199, 262
2969 00000091 = analog_mask_read__select__12___byte equ _ansel
2970 00000005 = analog_mask_read__select__12___bit equ 5
2971                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__12
2972                    ; 1TEST: Single test with code in skip slot
2973 0106 1a91          btfsc   analog_mask_read__select__12___byte, analog_mask_read__select__12___bit
2974                    ; line_number = 200
2975                    ; analog@2 := _true
2976                    ;info   200, 263
2977 0000003f = analog_mask_read__select__11___byte equ analog_mask_read__analog
2978 00000002 = analog_mask_read__select__11___bit equ 2
2979 0107 153f          bsf     analog_mask_read__select__11___byte, analog_mask_read__select__11___bit
2980                    ; Recombine size1 = 0 || size2 = 0
2981                    ; line_number = 199
2982                    ; if _ansel@5 done
2983                    ; line_number = 201
2984                    ; if _ansel@6 start
2985                    ;info   201, 264
2986 00000091 = analog_mask_read__select__14___byte equ _ansel
2987 00000006 = analog_mask_read__select__14___bit equ 6
2988                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__14
2989                    ; 1TEST: Single test with code in skip slot
2990 0108 1b11          btfsc   analog_mask_read__select__14___byte, analog_mask_read__select__14___bit
2991                    ; line_number = 202
2992                    ; analog@4 := _true
2993                    ;info   202, 265
2994 0000003f = analog_mask_read__select__13___byte equ analog_mask_read__analog
2995 00000004 = analog_mask_read__select__13___bit equ 4
2996 0109 163f          bsf     analog_mask_read__select__13___byte, analog_mask_read__select__13___bit
2997                    ; Recombine size1 = 0 || size2 = 0
2998                    ; line_number = 201
2999                    ; if _ansel@6 done
3000                    ; line_number = 203
3001                    ; if _ansel@7 start
3002                    ;info   203, 266
3003 00000091 = analog_mask_read__select__16___byte equ _ansel
3004 00000007 = analog_mask_read__select__16___bit equ 7
3005                    ; =>bit_code_emit@symbol(): sym=analog_mask_read__select__16
3006                    ; 1TEST: Single test with code in skip slot
3007 010a 1b91          btfsc   analog_mask_read__select__16___byte, analog_mask_read__select__16___bit
3008                    ; line_number = 204
3009                    ; analog@6 := _true
3010                    ;info   204, 267
3011 0000003f = analog_mask_read__select__15___byte equ analog_mask_read__analog
3012 00000006 = analog_mask_read__select__15___bit equ 6
3013 010b 173f          bsf     analog_mask_read__select__15___byte, analog_mask_read__select__15___bit
3014                    ; Recombine size1 = 0 || size2 = 0
3015                    ; line_number = 203
3016                    ; if _ansel@7 done
3017                    ; line_number = 205
3018                    ; return analog start
3019                    ; line_number = 205
3020                    ;info   205, 268
3021 010c 1283          bcf     __rp0___byte, __rp0___bit
3022 010d 083f          movf    analog_mask_read__analog,w
3023 010e 0008          return  
3024                    ; line_number = 205
3025                    ; return analog done
3026            
3027            
3028                    ; delay after procedure statements=non-uniform
3029            
3030            
3031            
3032            
3033                    ; line_number = 208
3034                    ;info   208, 271
3035                    ; procedure analog_mask_set
3036   010f :   analog_mask_set:
3037                    ; Last argument is sitting in W; save into argument variable
3038 010f 00c0          movwf   analog_mask_set__analog
3039                    ; delay=4294967295
3040                    ; line_number = 209
3041                    ; argument analog byte
3042 00000040 = analog_mask_set__analog equ globals___0+32
3043                    ; line_number = 210
3044                    ;  returns_nothing
3045            
3046                    ; # This procedure will set the analog inputs to be equal to {analog}.
3047            
3048                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3049                    ; line_number = 214
3050                    ;  if analog@0 start
3051                    ;info   214, 272
3052 00000040 = analog_mask_set__select__2___byte equ analog_mask_set__analog
3053 00000000 = analog_mask_set__select__2___bit equ 0
3054                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__2
3055                    ; 1TEST: Single test with code in skip slot
3056 0110 1840          btfsc   analog_mask_set__select__2___byte, analog_mask_set__select__2___bit
3057                    ; line_number = 215
3058                    ; _ansel@4 := _true
3059                    ;info   215, 273
3060 00000091 = analog_mask_set__select__1___byte equ _ansel
3061 00000004 = analog_mask_set__select__1___bit equ 4
3062 0111 1611          bsf     analog_mask_set__select__1___byte, analog_mask_set__select__1___bit
3063                    ; Recombine size1 = 0 || size2 = 0
3064                    ; line_number = 214
3065                    ;  if analog@0 done
3066                    ; line_number = 216
3067                    ; if analog@1 start
3068                    ;info   216, 274
3069 00000040 = analog_mask_set__select__4___byte equ analog_mask_set__analog
3070 00000001 = analog_mask_set__select__4___bit equ 1
3071                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__4
3072                    ; 1TEST: Single test with code in skip slot
3073 0112 18c0          btfsc   analog_mask_set__select__4___byte, analog_mask_set__select__4___bit
3074                    ; line_number = 217
3075                    ; _ansel@3 := _true
3076                    ;info   217, 275
3077 00000091 = analog_mask_set__select__3___byte equ _ansel
3078 00000003 = analog_mask_set__select__3___bit equ 3
3079 0113 1591          bsf     analog_mask_set__select__3___byte, analog_mask_set__select__3___bit
3080                    ; Recombine size1 = 0 || size2 = 0
3081                    ; line_number = 216
3082                    ; if analog@1 done
3083                    ; line_number = 218
3084                    ; if analog@2 start
3085                    ;info   218, 276
3086 00000040 = analog_mask_set__select__6___byte equ analog_mask_set__analog
3087 00000002 = analog_mask_set__select__6___bit equ 2
3088                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__6
3089                    ; 1TEST: Single test with code in skip slot
3090 0114 1940          btfsc   analog_mask_set__select__6___byte, analog_mask_set__select__6___bit
3091                    ; line_number = 219
3092                    ; _ansel@5 := _true
3093                    ;info   219, 277
3094 00000091 = analog_mask_set__select__5___byte equ _ansel
3095 00000005 = analog_mask_set__select__5___bit equ 5
3096 0115 1691          bsf     analog_mask_set__select__5___byte, analog_mask_set__select__5___bit
3097                    ; Recombine size1 = 0 || size2 = 0
3098                    ; line_number = 218
3099                    ; if analog@2 done
3100                    ; line_number = 220
3101                    ; if analog@3 start
3102                    ;info   220, 278
3103 00000040 = analog_mask_set__select__8___byte equ analog_mask_set__analog
3104 00000003 = analog_mask_set__select__8___bit equ 3
3105                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__8
3106                    ; 1TEST: Single test with code in skip slot
3107 0116 19c0          btfsc   analog_mask_set__select__8___byte, analog_mask_set__select__8___bit
3108                    ; line_number = 221
3109                    ; _ansel@0 := _true
3110                    ;info   221, 279
3111 00000091 = analog_mask_set__select__7___byte equ _ansel
3112 00000000 = analog_mask_set__select__7___bit equ 0
3113 0117 1411          bsf     analog_mask_set__select__7___byte, analog_mask_set__select__7___bit
3114                    ; Recombine size1 = 0 || size2 = 0
3115                    ; line_number = 220
3116                    ; if analog@3 done
3117                    ; line_number = 222
3118                    ; if analog@4 start
3119                    ;info   222, 280
3120 00000040 = analog_mask_set__select__10___byte equ analog_mask_set__analog
3121 00000004 = analog_mask_set__select__10___bit equ 4
3122                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__10
3123                    ; 1TEST: Single test with code in skip slot
3124 0118 1a40          btfsc   analog_mask_set__select__10___byte, analog_mask_set__select__10___bit
3125                    ; line_number = 223
3126                    ; _ansel@6 := _true
3127                    ;info   223, 281
3128 00000091 = analog_mask_set__select__9___byte equ _ansel
3129 00000006 = analog_mask_set__select__9___bit equ 6
3130 0119 1711          bsf     analog_mask_set__select__9___byte, analog_mask_set__select__9___bit
3131                    ; Recombine size1 = 0 || size2 = 0
3132                    ; line_number = 222
3133                    ; if analog@4 done
3134                    ; line_number = 224
3135                    ; if analog@5 start
3136                    ;info   224, 282
3137 00000040 = analog_mask_set__select__12___byte equ analog_mask_set__analog
3138 00000005 = analog_mask_set__select__12___bit equ 5
3139                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__12
3140                    ; 1TEST: Single test with code in skip slot
3141 011a 1ac0          btfsc   analog_mask_set__select__12___byte, analog_mask_set__select__12___bit
3142                    ; line_number = 225
3143                    ; _ansel@1 := _true
3144                    ;info   225, 283
3145 00000091 = analog_mask_set__select__11___byte equ _ansel
3146 00000001 = analog_mask_set__select__11___bit equ 1
3147 011b 1491          bsf     analog_mask_set__select__11___byte, analog_mask_set__select__11___bit
3148                    ; Recombine size1 = 0 || size2 = 0
3149                    ; line_number = 224
3150                    ; if analog@5 done
3151                    ; line_number = 226
3152                    ; if analog@6 start
3153                    ;info   226, 284
3154 00000040 = analog_mask_set__select__14___byte equ analog_mask_set__analog
3155 00000006 = analog_mask_set__select__14___bit equ 6
3156                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__14
3157                    ; 1TEST: Single test with code in skip slot
3158 011c 1b40          btfsc   analog_mask_set__select__14___byte, analog_mask_set__select__14___bit
3159                    ; line_number = 227
3160                    ; _ansel@7 := _true
3161                    ;info   227, 285
3162 00000091 = analog_mask_set__select__13___byte equ _ansel
3163 00000007 = analog_mask_set__select__13___bit equ 7
3164 011d 1791          bsf     analog_mask_set__select__13___byte, analog_mask_set__select__13___bit
3165                    ; Recombine size1 = 0 || size2 = 0
3166                    ; line_number = 226
3167                    ; if analog@6 done
3168                    ; line_number = 228
3169                    ; if analog@7 start
3170                    ;info   228, 286
3171 00000040 = analog_mask_set__select__16___byte equ analog_mask_set__analog
3172 00000007 = analog_mask_set__select__16___bit equ 7
3173                    ; =>bit_code_emit@symbol(): sym=analog_mask_set__select__16
3174                    ; 1TEST: Single test with code in skip slot
3175 011e 1bc0          btfsc   analog_mask_set__select__16___byte, analog_mask_set__select__16___bit
3176                    ; line_number = 229
3177                    ; _ansel@2 := _true
3178                    ;info   229, 287
3179 00000091 = analog_mask_set__select__15___byte equ _ansel
3180 00000002 = analog_mask_set__select__15___bit equ 2
3181 011f 1511          bsf     analog_mask_set__select__15___byte, analog_mask_set__select__15___bit
3182            
3183            
3184                    ; Recombine size1 = 0 || size2 = 0
3185                    ; line_number = 228
3186                    ; if analog@7 done
3187                    ; delay after procedure statements=non-uniform
3188                    ; Implied return
3189 0120 3400          retlw   0
3190            
3191            
3192            
3193            
3194                    ; line_number = 232
3195                    ;info   232, 289
3196                    ; procedure digital_read
3197   0121 :   digital_read:
3198                    ; arguments_none
3199                    ; line_number = 234
3200                    ;  returns byte
3201            
3202                    ; # This procedure will return the digital bits corresponding to
3203                    ; # the 8 digital data inputs.
3204            
3205                    ; line_number = 239
3206                    ;  local ra byte
3207 00000041 = digital_read__ra equ globals___0+33
3208                    ; line_number = 240
3209                    ;  local rc byte
3210 00000042 = digital_read__rc equ globals___0+34
3211                    ; line_number = 241
3212                    ;  local digital byte
3213 00000043 = digital_read__digital equ globals___0+35
3214            
3215                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3216                    ; line_number = 243
3217                    ;  ra := _porta
3218                    ;info   243, 289
3219 0121 0805          movf    _porta,w
3220 0122 00c1          movwf   digital_read__ra
3221                    ; line_number = 244
3222                    ;  rc := _portc
3223                    ;info   244, 291
3224 0123 0807          movf    _portc,w
3225 0124 00c2          movwf   digital_read__rc
3226                    ; line_number = 245
3227                    ;  digital := 0
3228                    ;info   245, 293
3229 0125 01c3          clrf    digital_read__digital
3230            
3231                    ; line_number = 247
3232                    ;  if rc@io0_bit start
3233                    ;info   247, 294
3234 00000042 = digital_read__select__2___byte equ digital_read__rc
3235 00000000 = digital_read__select__2___bit equ 0
3236                    ; =>bit_code_emit@symbol(): sym=digital_read__select__2
3237                    ; 1TEST: Single test with code in skip slot
3238 0126 1842          btfsc   digital_read__select__2___byte, digital_read__select__2___bit
3239                    ; line_number = 248
3240                    ; digital@0 := _true
3241                    ;info   248, 295
3242 00000043 = digital_read__select__1___byte equ digital_read__digital
3243 00000000 = digital_read__select__1___bit equ 0
3244 0127 1443          bsf     digital_read__select__1___byte, digital_read__select__1___bit
3245                    ; Recombine size1 = 0 || size2 = 0
3246                    ; line_number = 247
3247                    ;  if rc@io0_bit done
3248                    ; line_number = 249
3249                    ; if ra@io1_bit start
3250                    ;info   249, 296
3251 00000041 = digital_read__select__4___byte equ digital_read__ra
3252 00000004 = digital_read__select__4___bit equ 4
3253                    ; =>bit_code_emit@symbol(): sym=digital_read__select__4
3254                    ; 1TEST: Single test with code in skip slot
3255 0128 1a41          btfsc   digital_read__select__4___byte, digital_read__select__4___bit
3256                    ; line_number = 250
3257                    ; digital@1 := _true
3258                    ;info   250, 297
3259 00000043 = digital_read__select__3___byte equ digital_read__digital
3260 00000001 = digital_read__select__3___bit equ 1
3261 0129 14c3          bsf     digital_read__select__3___byte, digital_read__select__3___bit
3262                    ; Recombine size1 = 0 || size2 = 0
3263                    ; line_number = 249
3264                    ; if ra@io1_bit done
3265                    ; line_number = 251
3266                    ; if rc@io2_bit start
3267                    ;info   251, 298
3268 00000042 = digital_read__select__6___byte equ digital_read__rc
3269 00000001 = digital_read__select__6___bit equ 1
3270                    ; =>bit_code_emit@symbol(): sym=digital_read__select__6
3271                    ; 1TEST: Single test with code in skip slot
3272 012a 18c2          btfsc   digital_read__select__6___byte, digital_read__select__6___bit
3273                    ; line_number = 252
3274                    ; digital@2 := _true
3275                    ;info   252, 299
3276 00000043 = digital_read__select__5___byte equ digital_read__digital
3277 00000002 = digital_read__select__5___bit equ 2
3278 012b 1543          bsf     digital_read__select__5___byte, digital_read__select__5___bit
3279                    ; Recombine size1 = 0 || size2 = 0
3280                    ; line_number = 251
3281                    ; if rc@io2_bit done
3282                    ; line_number = 253
3283                    ; if ra@io3_bit start
3284                    ;info   253, 300
3285 00000041 = digital_read__select__8___byte equ digital_read__ra
3286 00000000 = digital_read__select__8___bit equ 0
3287                    ; =>bit_code_emit@symbol(): sym=digital_read__select__8
3288                    ; 1TEST: Single test with code in skip slot
3289 012c 1841          btfsc   digital_read__select__8___byte, digital_read__select__8___bit
3290                    ; line_number = 254
3291                    ; digital@3 := _true
3292                    ;info   254, 301
3293 00000043 = digital_read__select__7___byte equ digital_read__digital
3294 00000003 = digital_read__select__7___bit equ 3
3295 012d 15c3          bsf     digital_read__select__7___byte, digital_read__select__7___bit
3296                    ; Recombine size1 = 0 || size2 = 0
3297                    ; line_number = 253
3298                    ; if ra@io3_bit done
3299                    ; line_number = 255
3300                    ; if rc@io4_bit start
3301                    ;info   255, 302
3302 00000042 = digital_read__select__10___byte equ digital_read__rc
3303 00000002 = digital_read__select__10___bit equ 2
3304                    ; =>bit_code_emit@symbol(): sym=digital_read__select__10
3305                    ; 1TEST: Single test with code in skip slot
3306 012e 1942          btfsc   digital_read__select__10___byte, digital_read__select__10___bit
3307                    ; line_number = 256
3308                    ; digital@4 := _true
3309                    ;info   256, 303
3310 00000043 = digital_read__select__9___byte equ digital_read__digital
3311 00000004 = digital_read__select__9___bit equ 4
3312 012f 1643          bsf     digital_read__select__9___byte, digital_read__select__9___bit
3313                    ; Recombine size1 = 0 || size2 = 0
3314                    ; line_number = 255
3315                    ; if rc@io4_bit done
3316                    ; line_number = 257
3317                    ; if ra@io5_bit start
3318                    ;info   257, 304
3319 00000041 = digital_read__select__12___byte equ digital_read__ra
3320 00000001 = digital_read__select__12___bit equ 1
3321                    ; =>bit_code_emit@symbol(): sym=digital_read__select__12
3322                    ; 1TEST: Single test with code in skip slot
3323 0130 18c1          btfsc   digital_read__select__12___byte, digital_read__select__12___bit
3324                    ; line_number = 258
3325                    ; digital@5 := _true
3326                    ;info   258, 305
3327 00000043 = digital_read__select__11___byte equ digital_read__digital
3328 00000005 = digital_read__select__11___bit equ 5
3329 0131 16c3          bsf     digital_read__select__11___byte, digital_read__select__11___bit
3330                    ; Recombine size1 = 0 || size2 = 0
3331                    ; line_number = 257
3332                    ; if ra@io5_bit done
3333                    ; line_number = 259
3334                    ; if rc@io6_bit start
3335                    ;info   259, 306
3336 00000042 = digital_read__select__14___byte equ digital_read__rc
3337 00000003 = digital_read__select__14___bit equ 3
3338                    ; =>bit_code_emit@symbol(): sym=digital_read__select__14
3339                    ; 1TEST: Single test with code in skip slot
3340 0132 19c2          btfsc   digital_read__select__14___byte, digital_read__select__14___bit
3341                    ; line_number = 260
3342                    ; digital@6 := _true
3343                    ;info   260, 307
3344 00000043 = digital_read__select__13___byte equ digital_read__digital
3345 00000006 = digital_read__select__13___bit equ 6
3346 0133 1743          bsf     digital_read__select__13___byte, digital_read__select__13___bit
3347                    ; Recombine size1 = 0 || size2 = 0
3348                    ; line_number = 259
3349                    ; if rc@io6_bit done
3350                    ; line_number = 261
3351                    ; if ra@io7_bit start
3352                    ;info   261, 308
3353 00000041 = digital_read__select__16___byte equ digital_read__ra
3354 00000002 = digital_read__select__16___bit equ 2
3355                    ; =>bit_code_emit@symbol(): sym=digital_read__select__16
3356                    ; 1TEST: Single test with code in skip slot
3357 0134 1941          btfsc   digital_read__select__16___byte, digital_read__select__16___bit
3358                    ; line_number = 262
3359                    ; digital@7 := _true
3360                    ;info   262, 309
3361 00000043 = digital_read__select__15___byte equ digital_read__digital
3362 00000007 = digital_read__select__15___bit equ 7
3363 0135 17c3          bsf     digital_read__select__15___byte, digital_read__select__15___bit
3364                    ; Recombine size1 = 0 || size2 = 0
3365                    ; line_number = 261
3366                    ; if ra@io7_bit done
3367                    ; line_number = 263
3368                    ; return digital start
3369                    ; line_number = 263
3370                    ;info   263, 310
3371 0136 0843          movf    digital_read__digital,w
3372 0137 0008          return  
3373                    ; line_number = 263
3374                    ; return digital done
3375            
3376            
3377                    ; delay after procedure statements=non-uniform
3378            
3379            
3380            
3381            
3382                    ; line_number = 266
3383                    ;info   266, 312
3384                    ; procedure digital_set
3385   0138 :   digital_set:
3386                    ; Last argument is sitting in W; save into argument variable
3387 0138 00c6          movwf   digital_set__digital
3388                    ; delay=4294967295
3389                    ; line_number = 267
3390                    ; argument digital byte
3391 00000046 = digital_set__digital equ globals___0+38
3392                    ; line_number = 268
3393                    ;  returns_nothing
3394            
3395                    ; # This procedure will set the digital outputs to be equal to {digital}.
3396            
3397                    ; line_number = 272
3398                    ;  local ra byte
3399 00000044 = digital_set__ra equ globals___0+36
3400                    ; line_number = 273
3401                    ;  local rc byte
3402 00000045 = digital_set__rc equ globals___0+37
3403            
3404                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3405                    ; line_number = 275
3406                    ;  ra := 0
3407                    ;info   275, 313
3408 0139 01c4          clrf    digital_set__ra
3409                    ; line_number = 276
3410                    ;  rc := 0
3411                    ;info   276, 314
3412 013a 01c5          clrf    digital_set__rc
3413                    ; line_number = 277
3414                    ;  if digital@0 start
3415                    ;info   277, 315
3416 00000046 = digital_set__select__2___byte equ digital_set__digital
3417 00000000 = digital_set__select__2___bit equ 0
3418                    ; =>bit_code_emit@symbol(): sym=digital_set__select__2
3419                    ; 1TEST: Single test with code in skip slot
3420 013b 1846          btfsc   digital_set__select__2___byte, digital_set__select__2___bit
3421                    ; line_number = 278
3422                    ; rc@io0_bit := _true
3423                    ;info   278, 316
3424 00000045 = digital_set__select__1___byte equ digital_set__rc
3425 00000000 = digital_set__select__1___bit equ 0
3426 013c 1445          bsf     digital_set__select__1___byte, digital_set__select__1___bit
3427                    ; Recombine size1 = 0 || size2 = 0
3428                    ; line_number = 277
3429                    ;  if digital@0 done
3430                    ; line_number = 279
3431                    ; if digital@1 start
3432                    ;info   279, 317
3433 00000046 = digital_set__select__4___byte equ digital_set__digital
3434 00000001 = digital_set__select__4___bit equ 1
3435                    ; =>bit_code_emit@symbol(): sym=digital_set__select__4
3436                    ; 1TEST: Single test with code in skip slot
3437 013d 18c6          btfsc   digital_set__select__4___byte, digital_set__select__4___bit
3438                    ; line_number = 280
3439                    ; ra@io1_bit := _true
3440                    ;info   280, 318
3441 00000044 = digital_set__select__3___byte equ digital_set__ra
3442 00000004 = digital_set__select__3___bit equ 4
3443 013e 1644          bsf     digital_set__select__3___byte, digital_set__select__3___bit
3444                    ; Recombine size1 = 0 || size2 = 0
3445                    ; line_number = 279
3446                    ; if digital@1 done
3447                    ; line_number = 281
3448                    ; if digital@2 start
3449                    ;info   281, 319
3450 00000046 = digital_set__select__6___byte equ digital_set__digital
3451 00000002 = digital_set__select__6___bit equ 2
3452                    ; =>bit_code_emit@symbol(): sym=digital_set__select__6
3453                    ; 1TEST: Single test with code in skip slot
3454 013f 1946          btfsc   digital_set__select__6___byte, digital_set__select__6___bit
3455                    ; line_number = 282
3456                    ; rc@io2_bit := _true
3457                    ;info   282, 320
3458 00000045 = digital_set__select__5___byte equ digital_set__rc
3459 00000001 = digital_set__select__5___bit equ 1
3460 0140 14c5          bsf     digital_set__select__5___byte, digital_set__select__5___bit
3461                    ; Recombine size1 = 0 || size2 = 0
3462                    ; line_number = 281
3463                    ; if digital@2 done
3464                    ; line_number = 283
3465                    ; if digital@3 start
3466                    ;info   283, 321
3467 00000046 = digital_set__select__8___byte equ digital_set__digital
3468 00000003 = digital_set__select__8___bit equ 3
3469                    ; =>bit_code_emit@symbol(): sym=digital_set__select__8
3470                    ; 1TEST: Single test with code in skip slot
3471 0141 19c6          btfsc   digital_set__select__8___byte, digital_set__select__8___bit
3472                    ; line_number = 284
3473                    ; ra@io3_bit := _true
3474                    ;info   284, 322
3475 00000044 = digital_set__select__7___byte equ digital_set__ra
3476 00000000 = digital_set__select__7___bit equ 0
3477 0142 1444          bsf     digital_set__select__7___byte, digital_set__select__7___bit
3478                    ; Recombine size1 = 0 || size2 = 0
3479                    ; line_number = 283
3480                    ; if digital@3 done
3481                    ; line_number = 285
3482                    ; if digital@4 start
3483                    ;info   285, 323
3484 00000046 = digital_set__select__10___byte equ digital_set__digital
3485 00000004 = digital_set__select__10___bit equ 4
3486                    ; =>bit_code_emit@symbol(): sym=digital_set__select__10
3487                    ; 1TEST: Single test with code in skip slot
3488 0143 1a46          btfsc   digital_set__select__10___byte, digital_set__select__10___bit
3489                    ; line_number = 286
3490                    ; rc@io4_bit := _true
3491                    ;info   286, 324
3492 00000045 = digital_set__select__9___byte equ digital_set__rc
3493 00000002 = digital_set__select__9___bit equ 2
3494 0144 1545          bsf     digital_set__select__9___byte, digital_set__select__9___bit
3495                    ; Recombine size1 = 0 || size2 = 0
3496                    ; line_number = 285
3497                    ; if digital@4 done
3498                    ; line_number = 287
3499                    ; if digital@5 start
3500                    ;info   287, 325
3501 00000046 = digital_set__select__12___byte equ digital_set__digital
3502 00000005 = digital_set__select__12___bit equ 5
3503                    ; =>bit_code_emit@symbol(): sym=digital_set__select__12
3504                    ; 1TEST: Single test with code in skip slot
3505 0145 1ac6          btfsc   digital_set__select__12___byte, digital_set__select__12___bit
3506                    ; line_number = 288
3507                    ; ra@io5_bit := _true
3508                    ;info   288, 326
3509 00000044 = digital_set__select__11___byte equ digital_set__ra
3510 00000001 = digital_set__select__11___bit equ 1
3511 0146 14c4          bsf     digital_set__select__11___byte, digital_set__select__11___bit
3512                    ; Recombine size1 = 0 || size2 = 0
3513                    ; line_number = 287
3514                    ; if digital@5 done
3515                    ; line_number = 289
3516                    ; if digital@6 start
3517                    ;info   289, 327
3518 00000046 = digital_set__select__14___byte equ digital_set__digital
3519 00000006 = digital_set__select__14___bit equ 6
3520                    ; =>bit_code_emit@symbol(): sym=digital_set__select__14
3521                    ; 1TEST: Single test with code in skip slot
3522 0147 1b46          btfsc   digital_set__select__14___byte, digital_set__select__14___bit
3523                    ; line_number = 290
3524                    ; rc@io6_bit := _true
3525                    ;info   290, 328
3526 00000045 = digital_set__select__13___byte equ digital_set__rc
3527 00000003 = digital_set__select__13___bit equ 3
3528 0148 15c5          bsf     digital_set__select__13___byte, digital_set__select__13___bit
3529                    ; Recombine size1 = 0 || size2 = 0
3530                    ; line_number = 289
3531                    ; if digital@6 done
3532                    ; line_number = 291
3533                    ; if digital@7 start
3534                    ;info   291, 329
3535 00000046 = digital_set__select__16___byte equ digital_set__digital
3536 00000007 = digital_set__select__16___bit equ 7
3537                    ; =>bit_code_emit@symbol(): sym=digital_set__select__16
3538                    ; 1TEST: Single test with code in skip slot
3539 0149 1bc6          btfsc   digital_set__select__16___byte, digital_set__select__16___bit
3540                    ; line_number = 292
3541                    ; ra@io7_bit := _true
3542                    ;info   292, 330
3543 00000044 = digital_set__select__15___byte equ digital_set__ra
3544 00000002 = digital_set__select__15___bit equ 2
3545 014a 1544          bsf     digital_set__select__15___byte, digital_set__select__15___bit
3546                    ; Recombine size1 = 0 || size2 = 0
3547                    ; line_number = 291
3548                    ; if digital@7 done
3549                    ; line_number = 293
3550                    ; _porta := ra
3551                    ;info   293, 331
3552 014b 0844          movf    digital_set__ra,w
3553 014c 0085          movwf   _porta
3554                    ; line_number = 294
3555                    ;  _portc := rc
3556                    ;info   294, 333
3557 014d 0845          movf    digital_set__rc,w
3558 014e 0087          movwf   _portc
3559            
3560            
3561                    ; delay after procedure statements=non-uniform
3562                    ; Implied return
3563 014f 3400          retlw   0
3564            
3565            
3566            
3567            
3568                    ; line_number = 297
3569                    ;info   297, 336
3570                    ; procedure direction_read
3571   0150 :   direction_read:
3572                    ; arguments_none
3573                    ; line_number = 299
3574                    ;  returns byte
3575            
3576                    ; # This procedure will return the digital bits corresponding to
3577                    ; # the 8 digital data inputs.
3578            
3579                    ; line_number = 304
3580                    ;  local trisa byte
3581 00000047 = direction_read__trisa equ globals___0+39
3582                    ; line_number = 305
3583                    ;  local trisc byte
3584 00000048 = direction_read__trisc equ globals___0+40
3585                    ; line_number = 306
3586                    ;  local direction byte
3587 00000049 = direction_read__direction equ globals___0+41
3588            
3589                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3590                    ; line_number = 308
3591                    ;  direction := 0
3592                    ;info   308, 336
3593 0150 01c9          clrf    direction_read__direction
3594                    ; # Get all data into data bank 0:
3595                    ; line_number = 310
3596                    ;  trisa := _trisa
3597                    ;info   310, 337
3598 0151 1683          bsf     __rp0___byte, __rp0___bit
3599 0152 0805          movf    _trisa,w
3600 0153 1283          bcf     __rp0___byte, __rp0___bit
3601 0154 00c7          movwf   direction_read__trisa
3602                    ; line_number = 311
3603                    ;  trisc := _trisc
3604                    ;info   311, 341
3605 0155 1683          bsf     __rp0___byte, __rp0___bit
3606 0156 0807          movf    _trisc,w
3607 0157 1283          bcf     __rp0___byte, __rp0___bit
3608 0158 00c8          movwf   direction_read__trisc
3609            
3610                    ; line_number = 313
3611                    ;  if trisc@io0_bit start
3612                    ;info   313, 345
3613 00000048 = direction_read__select__2___byte equ direction_read__trisc
3614 00000000 = direction_read__select__2___bit equ 0
3615                    ; =>bit_code_emit@symbol(): sym=direction_read__select__2
3616                    ; 1TEST: Single test with code in skip slot
3617 0159 1848          btfsc   direction_read__select__2___byte, direction_read__select__2___bit
3618                    ; line_number = 314
3619                    ; direction@0 := _true
3620                    ;info   314, 346
3621 00000049 = direction_read__select__1___byte equ direction_read__direction
3622 00000000 = direction_read__select__1___bit equ 0
3623 015a 1449          bsf     direction_read__select__1___byte, direction_read__select__1___bit
3624                    ; Recombine size1 = 0 || size2 = 0
3625                    ; line_number = 313
3626                    ;  if trisc@io0_bit done
3627                    ; line_number = 315
3628                    ; if trisa@io1_bit start
3629                    ;info   315, 347
3630 00000047 = direction_read__select__4___byte equ direction_read__trisa
3631 00000004 = direction_read__select__4___bit equ 4
3632                    ; =>bit_code_emit@symbol(): sym=direction_read__select__4
3633                    ; 1TEST: Single test with code in skip slot
3634 015b 1a47          btfsc   direction_read__select__4___byte, direction_read__select__4___bit
3635                    ; line_number = 316
3636                    ; direction@1 := _true
3637                    ;info   316, 348
3638 00000049 = direction_read__select__3___byte equ direction_read__direction
3639 00000001 = direction_read__select__3___bit equ 1
3640 015c 14c9          bsf     direction_read__select__3___byte, direction_read__select__3___bit
3641                    ; Recombine size1 = 0 || size2 = 0
3642                    ; line_number = 315
3643                    ; if trisa@io1_bit done
3644                    ; line_number = 317
3645                    ; if trisc@io2_bit start
3646                    ;info   317, 349
3647 00000048 = direction_read__select__6___byte equ direction_read__trisc
3648 00000001 = direction_read__select__6___bit equ 1
3649                    ; =>bit_code_emit@symbol(): sym=direction_read__select__6
3650                    ; 1TEST: Single test with code in skip slot
3651 015d 18c8          btfsc   direction_read__select__6___byte, direction_read__select__6___bit
3652                    ; line_number = 318
3653                    ; direction@2 := _true
3654                    ;info   318, 350
3655 00000049 = direction_read__select__5___byte equ direction_read__direction
3656 00000002 = direction_read__select__5___bit equ 2
3657 015e 1549          bsf     direction_read__select__5___byte, direction_read__select__5___bit
3658                    ; Recombine size1 = 0 || size2 = 0
3659                    ; line_number = 317
3660                    ; if trisc@io2_bit done
3661                    ; line_number = 319
3662                    ; if trisa@io3_bit start
3663                    ;info   319, 351
3664 00000047 = direction_read__select__8___byte equ direction_read__trisa
3665 00000000 = direction_read__select__8___bit equ 0
3666                    ; =>bit_code_emit@symbol(): sym=direction_read__select__8
3667                    ; 1TEST: Single test with code in skip slot
3668 015f 1847          btfsc   direction_read__select__8___byte, direction_read__select__8___bit
3669                    ; line_number = 320
3670                    ; direction@3 := _true
3671                    ;info   320, 352
3672 00000049 = direction_read__select__7___byte equ direction_read__direction
3673 00000003 = direction_read__select__7___bit equ 3
3674 0160 15c9          bsf     direction_read__select__7___byte, direction_read__select__7___bit
3675                    ; Recombine size1 = 0 || size2 = 0
3676                    ; line_number = 319
3677                    ; if trisa@io3_bit done
3678                    ; line_number = 321
3679                    ; if trisc@io4_bit start
3680                    ;info   321, 353
3681 00000048 = direction_read__select__10___byte equ direction_read__trisc
3682 00000002 = direction_read__select__10___bit equ 2
3683                    ; =>bit_code_emit@symbol(): sym=direction_read__select__10
3684                    ; 1TEST: Single test with code in skip slot
3685 0161 1948          btfsc   direction_read__select__10___byte, direction_read__select__10___bit
3686                    ; line_number = 322
3687                    ; direction@4 := _true
3688                    ;info   322, 354
3689 00000049 = direction_read__select__9___byte equ direction_read__direction
3690 00000004 = direction_read__select__9___bit equ 4
3691 0162 1649          bsf     direction_read__select__9___byte, direction_read__select__9___bit
3692                    ; Recombine size1 = 0 || size2 = 0
3693                    ; line_number = 321
3694                    ; if trisc@io4_bit done
3695                    ; line_number = 323
3696                    ; if trisa@io5_bit start
3697                    ;info   323, 355
3698 00000047 = direction_read__select__12___byte equ direction_read__trisa
3699 00000001 = direction_read__select__12___bit equ 1
3700                    ; =>bit_code_emit@symbol(): sym=direction_read__select__12
3701                    ; 1TEST: Single test with code in skip slot
3702 0163 18c7          btfsc   direction_read__select__12___byte, direction_read__select__12___bit
3703                    ; line_number = 324
3704                    ; direction@5 := _true
3705                    ;info   324, 356
3706 00000049 = direction_read__select__11___byte equ direction_read__direction
3707 00000005 = direction_read__select__11___bit equ 5
3708 0164 16c9          bsf     direction_read__select__11___byte, direction_read__select__11___bit
3709                    ; Recombine size1 = 0 || size2 = 0
3710                    ; line_number = 323
3711                    ; if trisa@io5_bit done
3712                    ; line_number = 325
3713                    ; if trisc@io6_bit start
3714                    ;info   325, 357
3715 00000048 = direction_read__select__14___byte equ direction_read__trisc
3716 00000003 = direction_read__select__14___bit equ 3
3717                    ; =>bit_code_emit@symbol(): sym=direction_read__select__14
3718                    ; 1TEST: Single test with code in skip slot
3719 0165 19c8          btfsc   direction_read__select__14___byte, direction_read__select__14___bit
3720                    ; line_number = 326
3721                    ; direction@6 := _true
3722                    ;info   326, 358
3723 00000049 = direction_read__select__13___byte equ direction_read__direction
3724 00000006 = direction_read__select__13___bit equ 6
3725 0166 1749          bsf     direction_read__select__13___byte, direction_read__select__13___bit
3726                    ; Recombine size1 = 0 || size2 = 0
3727                    ; line_number = 325
3728                    ; if trisc@io6_bit done
3729                    ; line_number = 327
3730                    ; if trisa@io7_bit start
3731                    ;info   327, 359
3732 00000047 = direction_read__select__16___byte equ direction_read__trisa
3733 00000002 = direction_read__select__16___bit equ 2
3734                    ; =>bit_code_emit@symbol(): sym=direction_read__select__16
3735                    ; 1TEST: Single test with code in skip slot
3736 0167 1947          btfsc   direction_read__select__16___byte, direction_read__select__16___bit
3737                    ; line_number = 328
3738                    ; direction@7 := _true
3739                    ;info   328, 360
3740 00000049 = direction_read__select__15___byte equ direction_read__direction
3741 00000007 = direction_read__select__15___bit equ 7
3742 0168 17c9          bsf     direction_read__select__15___byte, direction_read__select__15___bit
3743                    ; Recombine size1 = 0 || size2 = 0
3744                    ; line_number = 327
3745                    ; if trisa@io7_bit done
3746                    ; line_number = 329
3747                    ; return direction start
3748                    ; line_number = 329
3749                    ;info   329, 361
3750 0169 0849          movf    direction_read__direction,w
3751 016a 0008          return  
3752                    ; line_number = 329
3753                    ; return direction done
3754            
3755            
3756                    ; delay after procedure statements=non-uniform
3757            
3758            
3759            
3760            
3761                    ; line_number = 332
3762                    ;info   332, 363
3763                    ; procedure direction_set
3764   016b :   direction_set:
3765                    ; Last argument is sitting in W; save into argument variable
3766 016b 00cc          movwf   direction_set__direction
3767                    ; delay=4294967295
3768                    ; line_number = 333
3769                    ; argument direction byte
3770 0000004c = direction_set__direction equ globals___0+44
3771                    ; line_number = 334
3772                    ;  returns_nothing
3773            
3774                    ; # This procedure will set the direction outputs to be equal to {direction}.
3775            
3776                    ; line_number = 338
3777                    ;  local trisa byte
3778 0000004a = direction_set__trisa equ globals___0+42
3779                    ; line_number = 339
3780                    ;  local trisc byte
3781 0000004b = direction_set__trisc equ globals___0+43
3782            
3783                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3784                    ; line_number = 341
3785                    ;  trisa := 0xc0
3786                    ;info   341, 364
3787 016c 30c0          movlw   192
3788 016d 00ca          movwf   direction_set__trisa
3789                    ; line_number = 342
3790                    ;  trisc := 0xc0
3791                    ;info   342, 366
3792 016e 30c0          movlw   192
3793 016f 00cb          movwf   direction_set__trisc
3794                    ; line_number = 343
3795                    ;  if direction@0 start
3796                    ;info   343, 368
3797 0000004c = direction_set__select__2___byte equ direction_set__direction
3798 00000000 = direction_set__select__2___bit equ 0
3799                    ; =>bit_code_emit@symbol(): sym=direction_set__select__2
3800                    ; 1TEST: Single test with code in skip slot
3801 0170 184c          btfsc   direction_set__select__2___byte, direction_set__select__2___bit
3802                    ; line_number = 344
3803                    ; trisc@io0_bit := _true
3804                    ;info   344, 369
3805 0000004b = direction_set__select__1___byte equ direction_set__trisc
3806 00000000 = direction_set__select__1___bit equ 0
3807 0171 144b          bsf     direction_set__select__1___byte, direction_set__select__1___bit
3808                    ; Recombine size1 = 0 || size2 = 0
3809                    ; line_number = 343
3810                    ;  if direction@0 done
3811                    ; line_number = 345
3812                    ; if direction@1 start
3813                    ;info   345, 370
3814 0000004c = direction_set__select__4___byte equ direction_set__direction
3815 00000001 = direction_set__select__4___bit equ 1
3816                    ; =>bit_code_emit@symbol(): sym=direction_set__select__4
3817                    ; 1TEST: Single test with code in skip slot
3818 0172 18cc          btfsc   direction_set__select__4___byte, direction_set__select__4___bit
3819                    ; line_number = 346
3820                    ; trisa@io1_bit := _true
3821                    ;info   346, 371
3822 0000004a = direction_set__select__3___byte equ direction_set__trisa
3823 00000004 = direction_set__select__3___bit equ 4
3824 0173 164a          bsf     direction_set__select__3___byte, direction_set__select__3___bit
3825                    ; Recombine size1 = 0 || size2 = 0
3826                    ; line_number = 345
3827                    ; if direction@1 done
3828                    ; line_number = 347
3829                    ; if direction@2 start
3830                    ;info   347, 372
3831 0000004c = direction_set__select__6___byte equ direction_set__direction
3832 00000002 = direction_set__select__6___bit equ 2
3833                    ; =>bit_code_emit@symbol(): sym=direction_set__select__6
3834                    ; 1TEST: Single test with code in skip slot
3835 0174 194c          btfsc   direction_set__select__6___byte, direction_set__select__6___bit
3836                    ; line_number = 348
3837                    ; trisc@io2_bit := _true
3838                    ;info   348, 373
3839 0000004b = direction_set__select__5___byte equ direction_set__trisc
3840 00000001 = direction_set__select__5___bit equ 1
3841 0175 14cb          bsf     direction_set__select__5___byte, direction_set__select__5___bit
3842                    ; Recombine size1 = 0 || size2 = 0
3843                    ; line_number = 347
3844                    ; if direction@2 done
3845                    ; line_number = 349
3846                    ; if direction@3 start
3847                    ;info   349, 374
3848 0000004c = direction_set__select__8___byte equ direction_set__direction
3849 00000003 = direction_set__select__8___bit equ 3
3850                    ; =>bit_code_emit@symbol(): sym=direction_set__select__8
3851                    ; 1TEST: Single test with code in skip slot
3852 0176 19cc          btfsc   direction_set__select__8___byte, direction_set__select__8___bit
3853                    ; line_number = 350
3854                    ; trisa@io3_bit := _true
3855                    ;info   350, 375
3856 0000004a = direction_set__select__7___byte equ direction_set__trisa
3857 00000000 = direction_set__select__7___bit equ 0
3858 0177 144a          bsf     direction_set__select__7___byte, direction_set__select__7___bit
3859                    ; Recombine size1 = 0 || size2 = 0
3860                    ; line_number = 349
3861                    ; if direction@3 done
3862                    ; line_number = 351
3863                    ; if direction@4 start
3864                    ;info   351, 376
3865 0000004c = direction_set__select__10___byte equ direction_set__direction
3866 00000004 = direction_set__select__10___bit equ 4
3867                    ; =>bit_code_emit@symbol(): sym=direction_set__select__10
3868                    ; 1TEST: Single test with code in skip slot
3869 0178 1a4c          btfsc   direction_set__select__10___byte, direction_set__select__10___bit
3870                    ; line_number = 352
3871                    ; trisc@io4_bit := _true
3872                    ;info   352, 377
3873 0000004b = direction_set__select__9___byte equ direction_set__trisc
3874 00000002 = direction_set__select__9___bit equ 2
3875 0179 154b          bsf     direction_set__select__9___byte, direction_set__select__9___bit
3876                    ; Recombine size1 = 0 || size2 = 0
3877                    ; line_number = 351
3878                    ; if direction@4 done
3879                    ; line_number = 353
3880                    ; if direction@5 start
3881                    ;info   353, 378
3882 0000004c = direction_set__select__12___byte equ direction_set__direction
3883 00000005 = direction_set__select__12___bit equ 5
3884                    ; =>bit_code_emit@symbol(): sym=direction_set__select__12
3885                    ; 1TEST: Single test with code in skip slot
3886 017a 1acc          btfsc   direction_set__select__12___byte, direction_set__select__12___bit
3887                    ; line_number = 354
3888                    ; trisa@io5_bit := _true
3889                    ;info   354, 379
3890 0000004a = direction_set__select__11___byte equ direction_set__trisa
3891 00000001 = direction_set__select__11___bit equ 1
3892 017b 14ca          bsf     direction_set__select__11___byte, direction_set__select__11___bit
3893                    ; Recombine size1 = 0 || size2 = 0
3894                    ; line_number = 353
3895                    ; if direction@5 done
3896                    ; line_number = 355
3897                    ; if direction@6 start
3898                    ;info   355, 380
3899 0000004c = direction_set__select__14___byte equ direction_set__direction
3900 00000006 = direction_set__select__14___bit equ 6
3901                    ; =>bit_code_emit@symbol(): sym=direction_set__select__14
3902                    ; 1TEST: Single test with code in skip slot
3903 017c 1b4c          btfsc   direction_set__select__14___byte, direction_set__select__14___bit
3904                    ; line_number = 356
3905                    ; trisc@io6_bit := _true
3906                    ;info   356, 381
3907 0000004b = direction_set__select__13___byte equ direction_set__trisc
3908 00000003 = direction_set__select__13___bit equ 3
3909 017d 15cb          bsf     direction_set__select__13___byte, direction_set__select__13___bit
3910                    ; Recombine size1 = 0 || size2 = 0
3911                    ; line_number = 355
3912                    ; if direction@6 done
3913                    ; line_number = 357
3914                    ; if direction@7 start
3915                    ;info   357, 382
3916 0000004c = direction_set__select__16___byte equ direction_set__direction
3917 00000007 = direction_set__select__16___bit equ 7
3918                    ; =>bit_code_emit@symbol(): sym=direction_set__select__16
3919                    ; 1TEST: Single test with code in skip slot
3920 017e 1bcc          btfsc   direction_set__select__16___byte, direction_set__select__16___bit
3921                    ; line_number = 358
3922                    ; trisa@io7_bit := _true
3923                    ;info   358, 383
3924 0000004a = direction_set__select__15___byte equ direction_set__trisa
3925 00000002 = direction_set__select__15___bit equ 2
3926 017f 154a          bsf     direction_set__select__15___byte, direction_set__select__15___bit
3927                    ; Recombine size1 = 0 || size2 = 0
3928                    ; line_number = 357
3929                    ; if direction@7 done
3930                    ; line_number = 359
3931                    ; trisc@rx_bit := _true
3932                    ;info   359, 384
3933 0000004b = direction_set__select__17___byte equ direction_set__trisc
3934 00000005 = direction_set__select__17___bit equ 5
3935 0180 16cb          bsf     direction_set__select__17___byte, direction_set__select__17___bit
3936                    ; line_number = 360
3937                    ;  trisc@tx_bit := _true
3938                    ;info   360, 385
3939 0000004b = direction_set__select__18___byte equ direction_set__trisc
3940 00000004 = direction_set__select__18___bit equ 4
3941 0181 164b          bsf     direction_set__select__18___byte, direction_set__select__18___bit
3942                    ; line_number = 361
3943                    ;  _trisa := trisa
3944                    ;info   361, 386
3945 0182 084a          movf    direction_set__trisa,w
3946 0183 1683          bsf     __rp0___byte, __rp0___bit
3947 0184 0085          movwf   _trisa
3948                    ; line_number = 362
3949                    ;  _trisc := trisc
3950                    ;info   362, 389
3951 0185 1283          bcf     __rp0___byte, __rp0___bit
3952 0186 084b          movf    direction_set__trisc,w
3953 0187 1683          bsf     __rp0___byte, __rp0___bit
3954 0188 0087          movwf   _trisc
3955            
3956                    ; delay after procedure statements=non-uniform
3957 0189 1283          bcf     __rp0___byte, __rp0___bit
3958                    ; Implied return
3959 018a 3400          retlw   0
3960            
3961            
3962            
3963            
3964            
3965                    ; Appending 8 delayed procedures to code bank 0
3966                    ; buffer = 'rb2bus'
3967                    ; line_number = 57
3968                    ;info   57, 395
3969                    ; procedure rb2bus_select_wait
3970   018b :   rb2bus_select_wait:
3971                    ; arguments_none
3972                    ; line_number = 59
3973                    ;  returns_nothing
3974            
3975                    ; # This procedure will in an infinite loop until the select
3976                    ; # address matches {rb2bus_address}.  {rb2bus_address} is
3977                    ; # typically set in the {rb2bus_initialize} procedure.
3978                    ; #
3979                    ; # This module will repeatably call the {wait} procedure until
3980                    ; # it is properly selected.
3981            
3982                    ; line_number = 68
3983                    ;  local value byte
3984 00000022 = rb2bus_select_wait__value equ globals___0+2
3985                    ; line_number = 69
3986                    ;  local address_bit bit
3987 0000006f = rb2bus_select_wait__address_bit___byte equ globals___0+79
3988 00000002 = rb2bus_select_wait__address_bit___bit equ 2
3989            
3990                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3991                    ; line_number = 71
3992                    ;  rb2bus_error := _false
3993                    ;info   71, 395
3994 018b 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
3995                    ; line_number = 72
3996                    ;  while !rb2bus_selected start
3997   018c :   rb2bus_select_wait__1:
3998                    ;info   72, 396
3999                    ; =>bit_code_emit@symbol(): sym=rb2bus_selected
4000                    ; No 1TEST: true.size=0 false.size=25
4001                    ; No 2TEST: true.size=0 false.size=25
4002                    ; 1GOTO: Single test with GOTO
4003 018c 186f          btfsc   rb2bus_selected___byte, rb2bus_selected___bit
4004 018d 29a7          goto    rb2bus_select_wait__6
4005                    ; line_number = 73
4006                    ; _adden := _true
4007                    ;info   73, 398
4008 018e 1597          bsf     _adden___byte, _adden___bit
4009                    ; # Wait for a byte to arrive.
4010                    ; line_number = 75
4011                    ;  while !_rcif start
4012   018f :   rb2bus_select_wait__2:
4013                    ;info   75, 399
4014                    ; =>bit_code_emit@symbol(): sym=_rcif
4015                    ; No 1TEST: true.size=0 false.size=2
4016                    ; No 2TEST: true.size=0 false.size=2
4017                    ; 1GOTO: Single test with GOTO
4018 018f 1a8c          btfsc   _rcif___byte, _rcif___bit
4019 0190 2993          goto    rb2bus_select_wait__3
4020                    ; line_number = 76
4021                    ; call wait()
4022                    ;info   76, 401
4023 0191 20e0          call    wait
4024            
4025 0192 298f          goto    rb2bus_select_wait__2
4026   0193 :   rb2bus_select_wait__3:
4027                    ; Recombine size1 = 0 || size2 = 0
4028                    ; line_number = 75
4029                    ;  while !_rcif done
4030                    ; # Capture the received value:
4031                    ; line_number = 79
4032                    ;  address_bit := _false
4033                    ;info   79, 403
4034 0193 116f          bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
4035                    ; line_number = 80
4036                    ;  if _rx9d start
4037                    ;info   80, 404
4038                    ; =>bit_code_emit@symbol(): sym=_rx9d
4039                    ; 1TEST: Single test with code in skip slot
4040 0194 1817          btfsc   _rx9d___byte, _rx9d___bit
4041                    ; line_number = 81
4042                    ; address_bit := _true
4043                    ;info   81, 405
4044 0195 156f          bsf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
4045                    ; Recombine size1 = 0 || size2 = 0
4046                    ; line_number = 80
4047                    ;  if _rx9d done
4048                    ; line_number = 82
4049                    ; value := _rcreg
4050                    ;info   82, 406
4051 0196 0814          movf    _rcreg,w
4052 0197 00a2          movwf   rb2bus_select_wait__value
4053            
4054                    ; # Clear any UART errors by toggling {_cren}:
4055                    ; line_number = 85
4056                    ;  if _oerr start
4057                    ;info   85, 408
4058                    ; =>bit_code_emit@symbol(): sym=_oerr
4059                    ; 1TEST: Single test with code in skip slot
4060 0198 1897          btfsc   _oerr___byte, _oerr___bit
4061                    ; line_number = 86
4062                    ; _cren := _false
4063                    ;info   86, 409
4064 0199 1217          bcf     _cren___byte, _cren___bit
4065                    ; Recombine size1 = 0 || size2 = 0
4066                    ; line_number = 85
4067                    ;  if _oerr done
4068                    ; line_number = 87
4069                    ; if _ferr start
4070                    ;info   87, 410
4071                    ; =>bit_code_emit@symbol(): sym=_ferr
4072                    ; 1TEST: Single test with code in skip slot
4073 019a 1917          btfsc   _ferr___byte, _ferr___bit
4074                    ; line_number = 88
4075                    ; _cren := _false
4076                    ;info   88, 411
4077 019b 1217          bcf     _cren___byte, _cren___bit
4078                    ; Recombine size1 = 0 || size2 = 0
4079                    ; line_number = 87
4080                    ; if _ferr done
4081                    ; line_number = 89
4082                    ; _cren := _true
4083                    ;info   89, 412
4084 019c 1617          bsf     _cren___byte, _cren___bit
4085            
4086                    ; line_number = 91
4087                    ;  if address_bit start
4088                    ;info   91, 413
4089                    ; =>bit_code_emit@symbol(): sym=rb2bus_select_wait__address_bit
4090                    ; No 1TEST: true.size=7 false.size=0
4091                    ; No 2TEST: true.size=7 false.size=0
4092                    ; 1GOTO: Single test with GOTO
4093 019d 1d6f          btfss   rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
4094 019e 29a6          goto    rb2bus_select_wait__5
4095                    ; line_number = 92
4096                    ; if value = rb2bus_address start
4097                    ;info   92, 415
4098                    ; Left minus Right
4099 019f 0820          movf    rb2bus_address,w
4100 01a0 0222          subwf   rb2bus_select_wait__value,w
4101                    ; =>bit_code_emit@symbol(): sym=__z
4102                    ; No 1TEST: true.size=3 false.size=0
4103                    ; No 2TEST: true.size=3 false.size=0
4104                    ; 1GOTO: Single test with GOTO
4105 01a1 1d03          btfss   __z___byte, __z___bit
4106 01a2 29a6          goto    rb2bus_select_wait__4
4107                    ; line_number = 93
4108                    ; rb2bus_selected := _true
4109                    ;info   93, 419
4110 01a3 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
4111                    ; line_number = 94
4112                    ;  call rb2bus_byte_put(rb2_ok)
4113                    ;info   94, 420
4114 01a4 30a5          movlw   165
4115 01a5 21cc          call    rb2bus_byte_put
4116            
4117            
4118                    ; Recombine size1 = 0 || size2 = 0
4119   01a6 :   rb2bus_select_wait__4:
4120                    ; line_number = 92
4121                    ; if value = rb2bus_address done
4122                    ; Recombine size1 = 0 || size2 = 0
4123   01a6 :   rb2bus_select_wait__5:
4124                    ; line_number = 91
4125                    ;  if address_bit done
4126 01a6 298c          goto    rb2bus_select_wait__1
4127   01a7 :   rb2bus_select_wait__6:
4128                    ; Recombine size1 = 0 || size2 = 0
4129                    ; line_number = 72
4130                    ;  while !rb2bus_selected done
4131                    ; delay after procedure statements=non-uniform
4132                    ; Implied return
4133 01a7 3400          retlw   0
4134            
4135            
4136            
4137            
4138                    ; line_number = 97
4139                    ;info   97, 424
4140                    ; procedure rb2bus_deselect
4141   01a8 :   rb2bus_deselect:
4142                    ; arguments_none
4143                    ; line_number = 99
4144                    ;  returns_nothing
4145            
4146                    ; # This procedure forces this module into the deselected state until
4147                    ; # it is reselected by some master module on the bus.
4148            
4149                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
4150                    ; line_number = 104
4151                    ;  rb2bus_selected := _false
4152                    ;info   104, 424
4153 01a8 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4154            
4155            
4156                    ; delay after procedure statements=non-uniform
4157                    ; Implied return
4158 01a9 3400          retlw   0
4159            
4160            
4161            
4162            
4163                    ; line_number = 107
4164                    ;info   107, 426
4165                    ; procedure rb2bus_byte_get
4166   01aa :   rb2bus_byte_get:
4167                    ; arguments_none
4168                    ; line_number = 109
4169                    ;  returns byte
4170            
4171                    ; # This procedure will return the next byte received from the bus.
4172                    ; # The address (9th) bit is stored in the global {is_address}.
4173                    ; #
4174                    ; # If {rb2bus_error} is set, 0 is returned.  Otherwise, the {wait}
4175                    ; # procedure is repeatably called until a command byte is successfully
4176                    ; # received.  If an module select byte comes in, we enter a bus
4177                    ; # error condition by setting {rb2bus_error} and returning 0.
4178            
4179                    ; line_number = 119
4180                    ;  local value byte
4181 00000023 = rb2bus_byte_get__value equ globals___0+3
4182                    ; line_number = 120
4183                    ;  local address_bit bit
4184 0000006f = rb2bus_byte_get__address_bit___byte equ globals___0+79
4185 00000003 = rb2bus_byte_get__address_bit___bit equ 3
4186            
4187                    ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
4188                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
4189                    ; line_number = 123
4190                    ;  if rb2bus_error start
4191                    ;info   123, 426
4192                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
4193                    ; 1TEST: Single test with code in skip slot
4194 01aa 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
4195                    ; line_number = 124
4196                    ; return 0 start
4197                    ; line_number = 124
4198                    ;info   124, 427
4199 01ab 3400          retlw   0
4200                    ; line_number = 124
4201                    ; return 0 done
4202            
4203                    ; Recombine size1 = 0 || size2 = 0
4204                    ; line_number = 123
4205                    ;  if rb2bus_error done
4206                    ; # Wait for a byte to arrive.
4207                    ; line_number = 127
4208                    ;  _adden := _false
4209                    ;info   127, 428
4210 01ac 1197          bcf     _adden___byte, _adden___bit
4211                    ; line_number = 128
4212                    ;  while !_rcif start
4213   01ad :   rb2bus_byte_get__1:
4214                    ;info   128, 429
4215                    ; =>bit_code_emit@symbol(): sym=_rcif
4216                    ; No 1TEST: true.size=0 false.size=2
4217                    ; No 2TEST: true.size=0 false.size=2
4218                    ; 1GOTO: Single test with GOTO
4219 01ad 1a8c          btfsc   _rcif___byte, _rcif___bit
4220 01ae 29b1          goto    rb2bus_byte_get__2
4221                    ; line_number = 129
4222                    ; call wait()
4223                    ;info   129, 431
4224 01af 20e0          call    wait
4225            
4226 01b0 29ad          goto    rb2bus_byte_get__1
4227   01b1 :   rb2bus_byte_get__2:
4228                    ; Recombine size1 = 0 || size2 = 0
4229                    ; line_number = 128
4230                    ;  while !_rcif done
4231                    ; # Record the 9th bit in {address_bit}:
4232                    ; line_number = 132
4233                    ;  address_bit := _false
4234                    ;info   132, 433
4235 01b1 11ef          bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
4236                    ; line_number = 133
4237                    ;  if _rx9d start
4238                    ;info   133, 434
4239                    ; =>bit_code_emit@symbol(): sym=_rx9d
4240                    ; 1TEST: Single test with code in skip slot
4241 01b2 1817          btfsc   _rx9d___byte, _rx9d___bit
4242                    ; line_number = 134
4243                    ; address_bit := _true
4244                    ;info   134, 435
4245 01b3 15ef          bsf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
4246                    ; Recombine size1 = 0 || size2 = 0
4247                    ; line_number = 133
4248                    ;  if _rx9d done
4249                    ; line_number = 135
4250                    ; value := _rcreg
4251                    ;info   135, 436
4252 01b4 0814          movf    _rcreg,w
4253 01b5 00a3          movwf   rb2bus_byte_get__value
4254            
4255                    ; # Clear any errors by toggling _{cren}:
4256                    ; # FIXME: All of this should be done *before* reading {_rcreg}!!!
4257                    ; line_number = 139
4258                    ;  if _oerr start
4259                    ;info   139, 438
4260                    ; =>bit_code_emit@symbol(): sym=_oerr
4261                    ; 1TEST: Single test with code in skip slot
4262 01b6 1897          btfsc   _oerr___byte, _oerr___bit
4263                    ; line_number = 140
4264                    ; _cren := _false
4265                    ;info   140, 439
4266 01b7 1217          bcf     _cren___byte, _cren___bit
4267                    ; Recombine size1 = 0 || size2 = 0
4268                    ; line_number = 139
4269                    ;  if _oerr done
4270                    ; line_number = 141
4271                    ; if _ferr start
4272                    ;info   141, 440
4273                    ; =>bit_code_emit@symbol(): sym=_ferr
4274                    ; 1TEST: Single test with code in skip slot
4275 01b8 1917          btfsc   _ferr___byte, _ferr___bit
4276                    ; line_number = 142
4277                    ; _cren := _false
4278                    ;info   142, 441
4279 01b9 1217          bcf     _cren___byte, _cren___bit
4280                    ; Recombine size1 = 0 || size2 = 0
4281                    ; line_number = 141
4282                    ; if _ferr done
4283                    ; line_number = 143
4284                    ; _cren := _true
4285                    ;info   143, 442
4286 01ba 1617          bsf     _cren___byte, _cren___bit
4287            
4288                    ; line_number = 145
4289                    ;  if address_bit start
4290                    ;info   145, 443
4291                    ; =>bit_code_emit@symbol(): sym=rb2bus_byte_get__address_bit
4292                    ; No 1TEST: true.size=13 false.size=0
4293                    ; No 2TEST: true.size=13 false.size=0
4294                    ; 1GOTO: Single test with GOTO
4295 01bb 1def          btfss   rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
4296 01bc 29ca          goto    rb2bus_byte_get__5
4297                    ; # We have an unexpected address select coming in:
4298                    ; line_number = 147
4299                    ;  if value = rb2bus_address start
4300                    ;info   147, 445
4301                    ; Left minus Right
4302 01bd 0820          movf    rb2bus_address,w
4303 01be 0223          subwf   rb2bus_byte_get__value,w
4304                    ; =>bit_code_emit@symbol(): sym=__z
4305                    ; No 1TEST: true.size=4 false.size=2
4306                    ; No 2TEST: true.size=4 false.size=2
4307                    ; 2GOTO: Single test with two GOTO's
4308 01bf 1d03          btfss   __z___byte, __z___bit
4309 01c0 29c6          goto    rb2bus_byte_get__3
4310                    ; # We are being selected again:
4311                    ; line_number = 149
4312                    ;  rb2bus_selected := _true
4313                    ;info   149, 449
4314 01c1 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
4315                    ; line_number = 150
4316                    ;  _adden := _false
4317                    ;info   150, 450
4318 01c2 1197          bcf     _adden___byte, _adden___bit
4319            
4320                    ; line_number = 152
4321                    ;  call rb2bus_byte_put(rb2_ok)
4322                    ;info   152, 451
4323 01c3 30a5          movlw   165
4324 01c4 21cc          call    rb2bus_byte_put
4325                    ; Recombine code1_bit_states != code2_bit_states
4326 01c5 29c8          goto    rb2bus_byte_get__4
4327                    ; 2GOTO: Starting code 2
4328   01c6 :   rb2bus_byte_get__3:
4329                    ; # Somebody else is being selected; we deselect:
4330                    ; line_number = 155
4331                    ;  rb2bus_selected := _false
4332                    ;info   155, 454
4333 01c6 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4334                    ; line_number = 156
4335                    ;  _adden := _true
4336                    ;info   156, 455
4337 01c7 1597          bsf     _adden___byte, _adden___bit
4338            
4339   01c8 :   rb2bus_byte_get__4:
4340                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4341                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4342                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4343                    ; line_number = 147
4344                    ;  if value = rb2bus_address done
4345                    ; # We want to get back to the beginning of decode:
4346                    ; line_number = 159
4347                    ;  rb2bus_error := _true
4348                    ;info   159, 456
4349 01c8 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
4350                    ; line_number = 160
4351                    ;  value := 0
4352                    ;info   160, 457
4353 01c9 01a3          clrf    rb2bus_byte_get__value
4354            
4355                    ; Recombine size1 = 0 || size2 = 0
4356   01ca :   rb2bus_byte_get__5:
4357                    ; line_number = 145
4358                    ;  if address_bit done
4359                    ; # Regular data byte:
4360                    ; line_number = 163
4361                    ;  return value start
4362                    ; line_number = 163
4363                    ;info   163, 458
4364 01ca 0823          movf    rb2bus_byte_get__value,w
4365 01cb 0008          return  
4366                    ; line_number = 163
4367                    ;  return value done
4368            
4369            
4370                    ; delay after procedure statements=non-uniform
4371            
4372            
4373            
4374            
4375                    ; line_number = 166
4376                    ;info   166, 460
4377                    ; procedure rb2bus_byte_put
4378   01cc :   rb2bus_byte_put:
4379                    ; Last argument is sitting in W; save into argument variable
4380 01cc 00a4          movwf   rb2bus_byte_put__value
4381                    ; delay=4294967295
4382                    ; line_number = 167
4383                    ; argument value byte
4384 00000024 = rb2bus_byte_put__value equ globals___0+4
4385                    ; line_number = 168
4386                    ;  returns_nothing
4387            
4388                    ; # This procedure will send {value} to the bus.  It automatically
4389                    ; # consumes the echo that is on the bus.  If {rb2bus_error} is
4390                    ; # set, this procedure does nothing.
4391            
4392                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
4393                    ; line_number = 174
4394                    ;  if !rb2bus_error start
4395                    ;info   174, 461
4396                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
4397                    ; No 1TEST: true.size=0 false.size=16
4398                    ; No 2TEST: true.size=0 false.size=16
4399                    ; 1GOTO: Single test with GOTO
4400 01cd 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
4401 01ce 29df          goto    rb2bus_byte_put__4
4402                    ; # Wait until {_txreg} is ready for a value:
4403                    ; line_number = 176
4404                    ;  while !_txif start
4405   01cf :   rb2bus_byte_put__1:
4406                    ;info   176, 463
4407                    ; =>bit_code_emit@symbol(): sym=_txif
4408                    ; No 1TEST: true.size=0 false.size=2
4409                    ; No 2TEST: true.size=0 false.size=2
4410                    ; 1GOTO: Single test with GOTO
4411 01cf 188c          btfsc   _txif___byte, _txif___bit
4412 01d0 29d3          goto    rb2bus_byte_put__2
4413                    ; line_number = 177
4414                    ; call wait()
4415                    ;info   177, 465
4416 01d1 20e0          call    wait
4417            
4418 01d2 29cf          goto    rb2bus_byte_put__1
4419   01d3 :   rb2bus_byte_put__2:
4420                    ; Recombine size1 = 0 || size2 = 0
4421                    ; line_number = 176
4422                    ;  while !_txif done
4423                    ; # Ship {value} out to the bus with 9th bit turned off:
4424                    ; line_number = 180
4425                    ;  _adden := _false
4426                    ;info   180, 467
4427 01d3 1197          bcf     _adden___byte, _adden___bit
4428                    ; line_number = 181
4429                    ;  _tx9d := _false
4430                    ;info   181, 468
4431 01d4 1016          bcf     _tx9d___byte, _tx9d___bit
4432                    ; line_number = 182
4433                    ;  _txreg := value
4434                    ;info   182, 469
4435 01d5 0824          movf    rb2bus_byte_put__value,w
4436 01d6 0095          movwf   _txreg
4437            
4438                    ; # Wait for the echo to show up:
4439                    ; line_number = 185
4440                    ;  while !_rcif start
4441   01d7 :   rb2bus_byte_put__3:
4442                    ;info   185, 471
4443                    ; =>bit_code_emit@symbol(): sym=_rcif
4444                    ; 1TEST: Single test with code in skip slot
4445 01d7 1e8c          btfss   _rcif___byte, _rcif___bit
4446                    ; # Still waiting:
4447 01d8 29d7          goto    rb2bus_byte_put__3
4448                    ; Recombine size1 = 0 || size2 = 0
4449                    ; line_number = 185
4450                    ;  while !_rcif done
4451                    ; # Throw the received byte away (store into {_w}).
4452                    ; line_number = 188
4453                    ;  assemble
4454                    ;info   188, 473
4455                    ; line_number = 189
4456                    ;info   189, 473
4457 01d9 0814          movf    _rcreg,w
4458            
4459                    ; # Recover from any receive errors by toggling {_cren}:
4460                    ; line_number = 192
4461                    ;  if _oerr start
4462                    ;info   192, 474
4463                    ; =>bit_code_emit@symbol(): sym=_oerr
4464                    ; 1TEST: Single test with code in skip slot
4465 01da 1897          btfsc   _oerr___byte, _oerr___bit
4466                    ; line_number = 193
4467                    ; _cren := _false
4468                    ;info   193, 475
4469 01db 1217          bcf     _cren___byte, _cren___bit
4470                    ; Recombine size1 = 0 || size2 = 0
4471                    ; line_number = 192
4472                    ;  if _oerr done
4473                    ; line_number = 194
4474                    ; if _ferr start
4475                    ;info   194, 476
4476                    ; =>bit_code_emit@symbol(): sym=_ferr
4477                    ; 1TEST: Single test with code in skip slot
4478 01dc 1917          btfsc   _ferr___byte, _ferr___bit
4479                    ; line_number = 195
4480                    ; _cren := _false
4481                    ;info   195, 477
4482 01dd 1217          bcf     _cren___byte, _cren___bit
4483                    ; Recombine size1 = 0 || size2 = 0
4484                    ; line_number = 194
4485                    ; if _ferr done
4486                    ; line_number = 196
4487                    ; _cren := _true
4488                    ;info   196, 478
4489 01de 1617          bsf     _cren___byte, _cren___bit
4490            
4491            
4492   01df :   rb2bus_byte_put__4:
4493                    ; Recombine size1 = 0 || size2 = 0
4494                    ; line_number = 174
4495                    ;  if !rb2bus_error done
4496                    ; delay after procedure statements=non-uniform
4497                    ; Implied return
4498 01df 3400          retlw   0
4499            
4500            
4501            
4502            
4503                    ; line_number = 199
4504                    ;info   199, 480
4505                    ; procedure rb2bus_command
4506   01e0 :   rb2bus_command:
4507                    ; Last argument is sitting in W; save into argument variable
4508 01e0 00a7          movwf   rb2bus_command__command
4509                    ; delay=4294967295
4510                    ; line_number = 200
4511                    ; argument command byte
4512 00000027 = rb2bus_command__command equ globals___0+7
4513                    ; line_number = 201
4514                    ;  returns_nothing
4515            
4516                    ; # This procedure will process an shared {command}.  This procedure
4517                    ; # accesses the global string {id}.
4518            
4519                    ; line_number = 206
4520                    ;  local new_address byte
4521 00000025 = rb2bus_command__new_address equ globals___0+5
4522                    ; line_number = 207
4523                    ;  local temp byte
4524 00000026 = rb2bus_command__temp equ globals___0+6
4525            
4526                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
4527                    ; line_number = 209
4528                    ;  switch command & 7 start
4529                    ;info   209, 481
4530                    ; switch_before:(data:00=uu=>00 code:X0=cu=>X0) size=1
4531 01e1 3001          movlw   rb2bus_command__13>>8
4532 01e2 008a          movwf   __pclath
4533 01e3 3007          movlw   7
4534 01e4 0527          andwf   rb2bus_command__command,w
4535                    ; switch after expression:(data:00=uu=>00 code:X0=cu=>X0)
4536 01e5 3ee7          addlw   rb2bus_command__13
4537 01e6 0082          movwf   __pcl
4538                    ; page_group 8
4539   01e7 :   rb2bus_command__13:
4540 01e7 2a27          goto    rb2bus_command__14
4541 01e8 2a27          goto    rb2bus_command__14
4542 01e9 2a27          goto    rb2bus_command__14
4543 01ea 2a27          goto    rb2bus_command__14
4544 01eb 29ef          goto    rb2bus_command__9
4545 01ec 2a1b          goto    rb2bus_command__10
4546 01ed 2a24          goto    rb2bus_command__11
4547 01ee 2a26          goto    rb2bus_command__12
4548                    ; line_number = 210
4549                    ; case 4
4550   01ef :   rb2bus_command__9:
4551                    ; # 1111 1100 (Address_Set):
4552                    ; # Return old address:
4553                    ; line_number = 213
4554                    ;  call rb2bus_byte_put(rb2bus_address)
4555                    ;info   213, 495
4556 01ef 0820          movf    rb2bus_address,w
4557 01f0 21cc          call    rb2bus_byte_put
4558            
4559                    ; # Fetch new address:
4560                    ; line_number = 216
4561                    ;  new_address := rb2bus_byte_get()
4562                    ;info   216, 497
4563 01f1 21aa          call    rb2bus_byte_get
4564 01f2 00a5          movwf   rb2bus_command__new_address
4565                    ; line_number = 217
4566                    ;  if new_address = 0 || new_address = rb2bus_address start
4567                    ;info   217, 499
4568                    ; Left minus Right
4569 01f3 0825          movf    rb2bus_command__new_address,w
4570                    ; =>bit_code_emit@symbol(): sym=__z
4571                    ; No 1TEST: true.size=1 false.size=36
4572                    ; No 2TEST: true.size=1 false.size=36
4573                    ; 2GOTO: Single test with two GOTO's
4574 01f4 1903          btfsc   __z___byte, __z___bit
4575 01f5 29fa          goto    rb2bus_command__5
4576                    ; Recombine code1_bit_states != code2_bit_states
4577                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4578                    ; Left minus Right
4579 01f6 0820          movf    rb2bus_address,w
4580 01f7 0225          subwf   rb2bus_command__new_address,w
4581                    ; =>bit_code_emit@symbol(): sym=__z
4582                    ; No 1TEST: true.size=4 false.size=27
4583                    ; No 2TEST: true.size=4 false.size=27
4584                    ; 2GOTO: Single test with two GOTO's
4585 01f8 1d03          btfss   __z___byte, __z___bit
4586 01f9 29ff          goto    rb2bus_command__6
4587   01fa :   rb2bus_command__5:
4588                    ; line_number = 218
4589                    ; call rb2bus_byte_put(0)
4590                    ;info   218, 506
4591 01fa 3000          movlw   0
4592 01fb 21cc          call    rb2bus_byte_put
4593                    ; line_number = 219
4594                    ;  rb2bus_error := _true
4595                    ;info   219, 508
4596 01fc 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
4597                    ; line_number = 220
4598                    ;  rb2bus_selected := _false
4599                    ;info   220, 509
4600 01fd 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4601 01fe 2a1a          goto    rb2bus_command__7
4602                    ; 2GOTO: Starting code 2
4603   01ff :   rb2bus_command__6:
4604                    ; # Return new address:
4605                    ; line_number = 223
4606                    ;  call rb2bus_byte_put(new_address)
4607                    ;info   223, 511
4608 01ff 0825          movf    rb2bus_command__new_address,w
4609 0200 21cc          call    rb2bus_byte_put
4610            
4611                    ; # Fetch new address again as a check:
4612                    ; line_number = 226
4613                    ;  temp := rb2bus_byte_get()
4614                    ;info   226, 513
4615 0201 21aa          call    rb2bus_byte_get
4616 0202 00a6          movwf   rb2bus_command__temp
4617                    ; line_number = 227
4618                    ;  if temp != new_address start
4619                    ;info   227, 515
4620                    ; Left minus Right
4621 0203 0825          movf    rb2bus_command__new_address,w
4622 0204 0226          subwf   rb2bus_command__temp,w
4623                    ; =>bit_code_emit@symbol(): sym=__z
4624                    ; No 1TEST: true.size=14 false.size=4
4625                    ; No 2TEST: true.size=14 false.size=4
4626                    ; 2GOTO: Single test with two GOTO's
4627 0205 1d03          btfss   __z___byte, __z___bit
4628 0206 2a16          goto    rb2bus_command__3
4629                    ; line_number = 232
4630                    ; call rb2bus_eedata_write(new_address)
4631                    ;info   232, 519
4632 0207 0825          movf    rb2bus_command__new_address,w
4633 0208 225b          call    rb2bus_eedata_write
4634                    ; line_number = 233
4635                    ;  temp := rb2bus_eedata_read()
4636                    ;info   233, 521
4637 0209 2246          call    rb2bus_eedata_read
4638 020a 00a6          movwf   rb2bus_command__temp
4639                    ; line_number = 234
4640                    ;  if temp = new_address start
4641                    ;info   234, 523
4642                    ; Left minus Right
4643 020b 0825          movf    rb2bus_command__new_address,w
4644 020c 0226          subwf   rb2bus_command__temp,w
4645                    ; =>bit_code_emit@symbol(): sym=__z
4646                    ; No 1TEST: true.size=3 false.size=1
4647                    ; No 2TEST: true.size=3 false.size=1
4648                    ; 2GOTO: Single test with two GOTO's
4649 020d 1d03          btfss   __z___byte, __z___bit
4650 020e 2a13          goto    rb2bus_command__1
4651                    ; line_number = 235
4652                    ; rb2bus_address := new_address
4653                    ;info   235, 527
4654 020f 0825          movf    rb2bus_command__new_address,w
4655 0210 00a0          movwf   rb2bus_address
4656                    ; line_number = 236
4657                    ;  call rb2bus_byte_put(rb2_ok)
4658                    ;info   236, 529
4659 0211 30a5          movlw   165
4660 0212 2a14          goto    rb2bus_command__2
4661                    ; 2GOTO: Starting code 2
4662   0213 :   rb2bus_command__1:
4663                    ; line_number = 238
4664                    ; call rb2bus_byte_put(0)
4665                    ;info   238, 531
4666 0213 3000          movlw   0
4667   0214 :   rb2bus_command__2:
4668                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4669                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4670                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4671 0214 21cc          call    rb2bus_byte_put
4672                    ; line_number = 234
4673                    ;  if temp = new_address done
4674 0215 2a1a          goto    rb2bus_command__4
4675                    ; 2GOTO: Starting code 2
4676   0216 :   rb2bus_command__3:
4677                    ; line_number = 228
4678                    ; call rb2bus_byte_put(0)
4679                    ;info   228, 534
4680 0216 3000          movlw   0
4681 0217 21cc          call    rb2bus_byte_put
4682                    ; line_number = 229
4683                    ;  rb2bus_error := _true
4684                    ;info   229, 536
4685 0218 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
4686                    ; line_number = 230
4687                    ;  rb2bus_selected := _false
4688                    ;info   230, 537
4689 0219 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4690   021a :   rb2bus_command__4:
4691                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4692                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4693                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4694                    ; line_number = 227
4695                    ;  if temp != new_address done
4696   021a :   rb2bus_command__7:
4697                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4698                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4699                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4700                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4701                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
4702                    ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
4703                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4704                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
4705                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
4706                    ; line_number = 217
4707                    ;  if new_address = 0 || new_address = rb2bus_address done
4708 021a 2a27          goto    rb2bus_command__14
4709                    ; line_number = 239
4710                    ; case 5
4711   021b :   rb2bus_command__10:
4712                    ; # 1111 1101 (Id_next):
4713                    ; line_number = 241
4714                    ;  if rb2bus_index < id.size start
4715                    ;info   241, 539
4716 021b 3013          movlw   19
4717 021c 0221          subwf   rb2bus_index,w
4718                    ; =>bit_code_emit@symbol(): sym=__c
4719                    ; No 1TEST: true.size=0 false.size=4
4720                    ; No 2TEST: true.size=0 false.size=4
4721                    ; 1GOTO: Single test with GOTO
4722 021d 1803          btfsc   __c___byte, __c___bit
4723 021e 2a23          goto    rb2bus_command__8
4724                    ; line_number = 242
4725                    ; call rb2bus_byte_put(id[rb2bus_index])
4726                    ;info   242, 543
4727 021f 0821          movf    rb2bus_index,w
4728 0220 20e1          call    id
4729 0221 21cc          call    rb2bus_byte_put
4730                    ; line_number = 243
4731                    ;  rb2bus_index := rb2bus_index + 1
4732                    ;info   243, 546
4733 0222 0aa1          incf    rb2bus_index,f
4734                    ; #if rb2bus_index >= id.size
4735                    ; #	rb2bus_index := rb2bus_index - 1
4736   0223 :   rb2bus_command__8:
4737                    ; Recombine size1 = 0 || size2 = 0
4738                    ; line_number = 241
4739                    ;  if rb2bus_index < id.size done
4740 0223 2a27          goto    rb2bus_command__14
4741                    ; line_number = 246
4742                    ; case 6
4743   0224 :   rb2bus_command__11:
4744                    ; # 1111 1110 (Id_start):
4745                    ; line_number = 248
4746                    ;  rb2bus_index := 0
4747                    ;info   248, 548
4748 0224 01a1          clrf    rb2bus_index
4749 0225 2a27          goto    rb2bus_command__14
4750                    ; line_number = 249
4751                    ; case 7
4752   0226 :   rb2bus_command__12:
4753                    ; # 1111 1111 (Deselect):
4754                    ; line_number = 251
4755                    ;  call rb2bus_deselect()
4756                    ;info   251, 550
4757 0226 21a8          call    rb2bus_deselect
4758            
4759            
4760   0227 :   rb2bus_command__14:
4761                    ; line_number = 209
4762                    ;  switch command & 7 done
4763                    ; delay after procedure statements=non-uniform
4764                    ; Implied return
4765 0227 3400          retlw   0
4766            
4767            
4768            
4769            
4770                    ; buffer = 'rb2bus_pic16f688'
4771                    ; line_number = 18
4772                    ;info   18, 552
4773                    ; procedure rb2bus_initialize
4774   0228 :   rb2bus_initialize:
4775                    ; Last argument is sitting in W; save into argument variable
4776 0228 00a8          movwf   rb2bus_initialize__address
4777                    ; delay=4294967295
4778                    ; line_number = 19
4779                    ; argument address byte
4780 00000028 = rb2bus_initialize__address equ globals___0+8
4781                    ; line_number = 20
4782                    ;  returns_nothing
4783            
4784                    ; # This procedure is responsibile for initializing the UART
4785                    ; # connected to the bus.  {address} is the address of this
4786                    ; # slave module.  This code is specific to the PIC16F688.
4787            
4788                    ; # Warm up the UART:
4789                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
4790                    ; line_number = 27
4791                    ;  _trisc@5 := _true
4792                    ;info   27, 553
4793 00000087 = rb2bus_initialize__select__1___byte equ _trisc
4794 00000005 = rb2bus_initialize__select__1___bit equ 5
4795 0229 1683          bsf     __rp0___byte, __rp0___bit
4796 022a 1687          bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
4797                    ; line_number = 28
4798                    ;  _trisc@4 := _true
4799                    ;info   28, 555
4800 00000087 = rb2bus_initialize__select__2___byte equ _trisc
4801 00000004 = rb2bus_initialize__select__2___bit equ 4
4802 022b 1607          bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit
4803            
4804                    ; # Initialize the {_txsta} register:
4805                    ; line_number = 31
4806                    ;  _txsta := 0
4807                    ;info   31, 556
4808 022c 1283          bcf     __rp0___byte, __rp0___bit
4809 022d 0196          clrf    _txsta
4810                    ; line_number = 32
4811                    ;  _tx9 := _true
4812                    ;info   32, 558
4813 022e 1716          bsf     _tx9___byte, _tx9___bit
4814                    ; #_tx9 := _false
4815                    ; line_number = 34
4816                    ;  _txen := _true
4817                    ;info   34, 559
4818 022f 1696          bsf     _txen___byte, _txen___bit
4819                    ; line_number = 35
4820                    ;  _brgh := _true
4821                    ;info   35, 560
4822 0230 1516          bsf     _brgh___byte, _brgh___bit
4823            
4824                    ; # Initialize the {_rcsta} register:
4825                    ; line_number = 38
4826                    ;  _rcsta := 0
4827                    ;info   38, 561
4828 0231 0197          clrf    _rcsta
4829                    ; line_number = 39
4830                    ;  _spen := _true
4831                    ;info   39, 562
4832 0232 1797          bsf     _spen___byte, _spen___bit
4833                    ; line_number = 40
4834                    ;  _rx9 := _true
4835                    ;info   40, 563
4836 0233 1717          bsf     _rx9___byte, _rx9___bit
4837                    ; line_number = 41
4838                    ;  _cren := _true
4839                    ;info   41, 564
4840 0234 1617          bsf     _cren___byte, _cren___bit
4841                    ; #_adden := _true
4842                    ; line_number = 43
4843                    ;  _adden := _false
4844                    ;info   43, 565
4845 0235 1197          bcf     _adden___byte, _adden___bit
4846            
4847                    ; # Set up the baud rate generator:
4848                    ; line_number = 46
4849                    ;  _baudctl := 0
4850                    ;info   46, 566
4851 0236 0191          clrf    _baudctl
4852                    ; line_number = 47
4853                    ;  _brg16 := _true
4854                    ;info   47, 567
4855 0237 1591          bsf     _brg16___byte, _brg16___bit
4856                    ; line_number = 48
4857                    ;  _spbrg := _eusart_500000_low
4858                    ;info   48, 568
4859 0238 3007          movlw   7
4860 0239 0093          movwf   _spbrg
4861                    ; line_number = 49
4862                    ;  _spbrgh := _eusart_500000_high
4863                    ;info   49, 570
4864 023a 0192          clrf    _spbrgh
4865            
4866                    ; line_number = 51
4867                    ;  rb2bus_selected := _false
4868                    ;info   51, 571
4869 023b 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4870                    ; line_number = 52
4871                    ;  rb2bus_error := _false
4872                    ;info   52, 572
4873 023c 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
4874                    ; line_number = 53
4875                    ;  rb2bus_index := 0
4876                    ;info   53, 573
4877 023d 01a1          clrf    rb2bus_index
4878            
4879                    ; # Deal with setting {rb2bus_address} from EEData memory:
4880                    ; line_number = 56
4881                    ;  rb2bus_address := rb2bus_eedata_read()
4882                    ;info   56, 574
4883 023e 2246          call    rb2bus_eedata_read
4884 023f 00a0          movwf   rb2bus_address
4885                    ; line_number = 57
4886                    ;  if rb2bus_address = 0 start
4887                    ;info   57, 576
4888                    ; Left minus Right
4889 0240 0820          movf    rb2bus_address,w
4890                    ; =>bit_code_emit@symbol(): sym=__z
4891                    ; No 1TEST: true.size=2 false.size=0
4892                    ; No 2TEST: true.size=2 false.size=0
4893                    ; 1GOTO: Single test with GOTO
4894 0241 1d03          btfss   __z___byte, __z___bit
4895 0242 2a45          goto    rb2bus_initialize__3
4896                    ; # EE data not set, so use {address} passed in as a argument:
4897                    ; line_number = 59
4898                    ;  rb2bus_address := address
4899                    ;info   59, 579
4900 0243 0828          movf    rb2bus_initialize__address,w
4901 0244 00a0          movwf   rb2bus_address
4902            
4903            
4904                    ; Recombine size1 = 0 || size2 = 0
4905   0245 :   rb2bus_initialize__3:
4906                    ; line_number = 57
4907                    ;  if rb2bus_address = 0 done
4908                    ; delay after procedure statements=non-uniform
4909                    ; Implied return
4910 0245 3400          retlw   0
4911            
4912            
4913            
4914            
4915                    ; line_number = 64
4916                    ;info   64, 582
4917                    ; procedure rb2bus_eedata_read
4918   0246 :   rb2bus_eedata_read:
4919                    ; arguments_none
4920                    ; line_number = 66
4921                    ;  returns byte
4922            
4923                    ; # This procedure will return the address stored in EEData.  If
4924                    ; # there is no data, 0 is returned.
4925            
4926                    ; line_number = 71
4927                    ;  local temp1 byte
4928 00000029 = rb2bus_eedata_read__temp1 equ globals___0+9
4929                    ; line_number = 72
4930                    ;  local temp2 byte
4931 0000002a = rb2bus_eedata_read__temp2 equ globals___0+10
4932            
4933                    ; # Read the first byte (the address):
4934                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
4935                    ; line_number = 75
4936                    ;  _eecon1 := 0
4937                    ;info   75, 582
4938 0246 1683          bsf     __rp0___byte, __rp0___bit
4939 0247 019c          clrf    _eecon1
4940                    ; line_number = 76
4941                    ;  _eeadr := rb2bus_eedata_address
4942                    ;info   76, 584
4943 0248 30fe          movlw   254
4944 0249 009b          movwf   _eeadr
4945                    ; line_number = 77
4946                    ;  _rd := _true
4947                    ;info   77, 586
4948 024a 141c          bsf     _rd___byte, _rd___bit
4949                    ; line_number = 78
4950                    ;  temp1 := _eedat
4951                    ;info   78, 587
4952 024b 081a          movf    _eedat,w
4953 024c 1283          bcf     __rp0___byte, __rp0___bit
4954 024d 00a9          movwf   rb2bus_eedata_read__temp1
4955            
4956                    ; # Read the second byte (the 1'z complement)
4957                    ; line_number = 81
4958                    ;  _eeadr := _eeadr + 1
4959                    ;info   81, 590
4960 024e 1683          bsf     __rp0___byte, __rp0___bit
4961 024f 0a9b          incf    _eeadr,f
4962                    ; line_number = 82
4963                    ;  _rd := _true
4964                    ;info   82, 592
4965 0250 141c          bsf     _rd___byte, _rd___bit
4966                    ; line_number = 83
4967                    ;  temp2 := _eedat
4968                    ;info   83, 593
4969 0251 081a          movf    _eedat,w
4970 0252 1283          bcf     __rp0___byte, __rp0___bit
4971 0253 00aa          movwf   rb2bus_eedata_read__temp2
4972            
4973                    ; # If they are 1's complement of one another, they are valid:
4974                    ; line_number = 86
4975                    ;  if temp1 = (0xff ^ temp2) start
4976                    ;info   86, 596
4977                    ; Left minus Right
4978 0254 092a          comf    rb2bus_eedata_read__temp2,w
4979 0255 0229          subwf   rb2bus_eedata_read__temp1,w
4980                    ; =>bit_code_emit@symbol(): sym=__z
4981                    ; No 1TEST: true.size=2 false.size=0
4982                    ; No 2TEST: true.size=2 false.size=0
4983                    ; 1GOTO: Single test with GOTO
4984 0256 1d03          btfss   __z___byte, __z___bit
4985 0257 2a5a          goto    rb2bus_eedata_read__1
4986                    ; # Return the valid address:
4987                    ; line_number = 88
4988                    ;  return temp1 start
4989                    ; line_number = 88
4990                    ;info   88, 600
4991 0258 0829          movf    rb2bus_eedata_read__temp1,w
4992 0259 0008          return  
4993                    ; line_number = 88
4994                    ;  return temp1 done
4995            
4996                    ; Recombine size1 = 0 || size2 = 0
4997   025a :   rb2bus_eedata_read__1:
4998                    ; line_number = 86
4999                    ;  if temp1 = (0xff ^ temp2) done
5000                    ; # They are not 1's complement, so return 0 as an error:
5001                    ; line_number = 91
5002                    ;  return 0 start
5003                    ; line_number = 91
5004                    ;info   91, 602
5005 025a 3400          retlw   0
5006                    ; line_number = 91
5007                    ;  return 0 done
5008            
5009            
5010                    ; delay after procedure statements=non-uniform
5011            
5012            
5013            
5014            
5015                    ; line_number = 94
5016                    ;info   94, 603
5017                    ; procedure rb2bus_eedata_write
5018   025b :   rb2bus_eedata_write:
5019                    ; Last argument is sitting in W; save into argument variable
5020 025b 00ab          movwf   rb2bus_eedata_write__address
5021                    ; delay=4294967295
5022                    ; line_number = 95
5023                    ; argument address byte
5024 0000002b = rb2bus_eedata_write__address equ globals___0+11
5025                    ; line_number = 96
5026                    ;  returns_nothing
5027            
5028                    ; # This procedure will write {address} into the EEData.  The
5029                    ; # microcontroll pauses while the EEData is written.
5030            
5031                    ; # Clear out the {_eecon1} register
5032                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
5033                    ; line_number = 102
5034                    ;  _eecon1 := 0
5035                    ;info   102, 604
5036 025c 1683          bsf     __rp0___byte, __rp0___bit
5037 025d 019c          clrf    _eecon1
5038                    ; line_number = 103
5039                    ;  _eeadr := rb2bus_eedata_address
5040                    ;info   103, 606
5041 025e 30fe          movlw   254
5042 025f 009b          movwf   _eeadr
5043                    ; line_number = 104
5044                    ;  _eedat := address
5045                    ;info   104, 608
5046 0260 1283          bcf     __rp0___byte, __rp0___bit
5047 0261 082b          movf    rb2bus_eedata_write__address,w
5048 0262 1683          bsf     __rp0___byte, __rp0___bit
5049 0263 009a          movwf   _eedat
5050            
5051                    ; # Write 2 bytes ({address} followed by {address}^0xff):
5052                    ; line_number = 107
5053                    ;  loop_exactly 2 start
5054                    ;info   107, 612
5055 0000004e = rb2bus_eedata_write__1 equ globals___0+46
5056 0264 3002          movlw   2
5057 0265 1283          bcf     __rp0___byte, __rp0___bit
5058 0266 00ce          movwf   rb2bus_eedata_write__1
5059   0267 :   rb2bus_eedata_write__2:
5060                    ; # Set the data to write:
5061            
5062                    ; # Set up the for the write:
5063                    ; line_number = 111
5064                    ;  _wren := _true
5065                    ;info   111, 615
5066 0267 1683          bsf     __rp0___byte, __rp0___bit
5067 0268 151c          bsf     _wren___byte, _wren___bit
5068                    ; line_number = 112
5069                    ;  _gie := _false
5070                    ;info   112, 617
5071 0269 138b          bcf     _gie___byte, _gie___bit
5072                    ; line_number = 113
5073                    ;  _eecon2 := 0x55
5074                    ;info   113, 618
5075 026a 3055          movlw   85
5076 026b 009d          movwf   _eecon2
5077                    ; line_number = 114
5078                    ;  _eecon2 := 0xaa
5079                    ;info   114, 620
5080 026c 30aa          movlw   170
5081 026d 009d          movwf   _eecon2
5082                    ; # Start the write:
5083                    ; line_number = 116
5084                    ;  _wr := _true
5085                    ;info   116, 622
5086 026e 149c          bsf     _wr___byte, _wr___bit
5087            
5088                    ; # Wait for write to complete:
5089                    ; line_number = 119
5090                    ;  while _wr start
5091   026f :   rb2bus_eedata_write__3:
5092                    ;info   119, 623
5093                    ; =>bit_code_emit@symbol(): sym=_wr
5094                    ; 1TEST: Single test with code in skip slot
5095 026f 189c          btfsc   _wr___byte, _wr___bit
5096                    ; line_number = 120
5097                    ; do_nothing
5098                    ;info   120, 624
5099            
5100 0270 2a6f          goto    rb2bus_eedata_write__3
5101                    ; Recombine size1 = 0 || size2 = 0
5102                    ; line_number = 119
5103                    ;  while _wr done
5104                    ; # Disable writing:
5105                    ; line_number = 123
5106                    ;  _wren := _false
5107                    ;info   123, 625
5108 0271 111c          bcf     _wren___byte, _wren___bit
5109            
5110                    ; # Prepare the second byte of data:
5111                    ; line_number = 126
5112                    ;  _eeadr := _eeadr + 1
5113                    ;info   126, 626
5114 0272 0a9b          incf    _eeadr,f
5115                    ; line_number = 127
5116                    ;  _eedat := address ^ 0xff
5117                    ;info   127, 627
5118 0273 1283          bcf     __rp0___byte, __rp0___bit
5119 0274 092b          comf    rb2bus_eedata_write__address,w
5120 0275 1683          bsf     __rp0___byte, __rp0___bit
5121 0276 009a          movwf   _eedat
5122            
5123 0277 1283          bcf     __rp0___byte, __rp0___bit
5124                    ; line_number = 107
5125                    ;  loop_exactly 2 wrap-up
5126 0278 0bce          decfsz  rb2bus_eedata_write__1,f
5127 0279 2a67          goto    rb2bus_eedata_write__2
5128                    ; line_number = 107
5129                    ;  loop_exactly 2 done
5130                    ; delay after procedure statements=non-uniform
5131                    ; Implied return
5132 027a 3400          retlw   0
5133            
5134            
5135            
5136            
5137                    ; Code bank 1; Start address: 2048; End address: 4095
5138   0800 :           org     2048
5139                    ; Configuration bits
5140                    ; address = 0x2007, fill = 0x3000
5141                    ; fcmen = off (0x0)
5142                    ; ieso = off (0x0)
5143                    ; boden = off (0x0)
5144                    ; cpd = off (0x80)
5145                    ; cp = off (0x40)
5146                    ; mclre = off (0x0)
5147                    ; pwrte = off (0x10)
5148                    ; wdte = off (0x0)
5149                    ; fosc = ec (0x3)
5150                    ; 12499 = 0x30d3
5151   30d3 =           __config 12499
5152                    ; Define start addresses for data regions
5153                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
5154                    ; Region="globals___0" Address=32" Size=80 Bytes=47 Bits=4 Available=32
5155                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
5156                    ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80
5157                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
5158                    end
