1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 4095
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000070 = shared___globals equ 112
7    00000020 = globals___0 equ 32
8    000000a0 = globals___1 equ 160
9    00000120 = globals___2 equ 288
10   00000000 = __indf equ 0
11   00000002 = __pcl equ 2
12   00000003 = __status equ 3
13   00000004 = __fsr equ 4
14   00000003 = __c___byte equ 3
15   00000000 = __c___bit equ 0
16   00000003 = __z___byte equ 3
17   00000002 = __z___bit equ 2
18   00000003 = __rp0___byte equ 3
19   00000005 = __rp0___bit equ 5
20   00000003 = __rp1___byte equ 3
21   00000006 = __rp1___bit equ 6
22   00000003 = __irp___byte equ 3
23   00000007 = __irp___bit equ 7
24   0000000a = __pclath equ 10
25   0000000a = __cb0___byte equ 10
26   00000003 = __cb0___bit equ 3
27   0000000a = __cb1___byte equ 10
28   00000004 = __cb1___bit equ 4
29              
30                      ; # Copyright (c) 2005-2007 by Wayne C. Gramlich
31                      ; # All rights reserved.
32              
33                      ; # This module uses a PIC16F688:
34                      ; buffer = 'irdistance2'
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 : 0xfff
103                     ; line_number = 37
104                     ;  data_bank 0x0 : 0x7f
105                     ; line_number = 38
106                     ;  data_bank 0x80 : 0xff
107                     ; line_number = 39
108                     ;  data_bank 0x100 : 0x17f
109                     ; line_number = 40
110                     ;  data_bank 0x180 : 0x1ff
111             
112                     ; line_number = 42
113                     ;  global_region 0x20 : 0x6f
114                     ; line_number = 43
115                     ;  icd2_global_region 0x20 : 0x6f
116             
117                     ; line_number = 45
118                     ;  global_region 0xa0 : 0xef
119                     ; line_number = 46
120                     ;  icd2_global_region 0xa0 : 0xef
121             
122                     ; line_number = 48
123                     ;  global_region 0x120 : 0x16f
124                     ; line_number = 49
125                     ;  icd2_global_region 0x120 : 0x164
126             
127                     ; line_number = 51
128                     ;  shared_region 0x70 : 0x7f
129                     ; line_number = 52
130                     ;  icd2_shared_region 0x71 : 0x7f
131             
132                     ; line_number = 54
133                     ;  interrupts_possible
134                     ; line_number = 55
135                     ;  packages pdip=14, soic=14, tssop=14
136                     ; line_number = 56
137                     ;  pin vdd, power_supply
138                     ; line_number = 57
139                     ; pin_bindings pdip=1, soic=1, tssop=1
140                     ; line_number = 58
141                     ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin
142                     ; line_number = 59
143                     ; pin_bindings pdip=2, soic=2, tssop=2
144                     ; line_number = 60
145                     ;  bind_to _porta@5
146                     ; line_number = 61
147                     ;  or_if ra5_in _trisa 32
148                     ; line_number = 62
149                     ;  or_if ra5_nc _trisa 32
150                     ; line_number = 63
151                     ;  or_if ra5_out _trisa 0
152                     ; line_number = 64
153                     ;  or_if osc1 _trisa 32
154                     ; line_number = 65
155                     ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout
156                     ; line_number = 66
157                     ; pin_bindings pdip=3, soic=3, tssop=3
158                     ; line_number = 67
159                     ;  bind_to _porta@4
160                     ; line_number = 68
161                     ;  or_if ra4_in _trisa 16
162                     ; line_number = 69
163                     ;  or_if ra4_nc _trisa 16
164                     ; line_number = 70
165                     ;  or_if ra4_out _trisa 0
166                     ; line_number = 71
167                     ;  or_if an3 _trisa 16
168                     ; line_number = 72
169                     ;  or_if osc2 _trisa 16
170                     ; line_number = 73
171                     ;  or_if ra4_in _ansel 0
172                     ; line_number = 74
173                     ;  or_if ra4_out _ansel 0
174                     ; line_number = 75
175                     ;  or_if an3 _ansel 8
176                     ; line_number = 76
177                     ;  or_if ra4_in _adcon0 0
178                     ; line_number = 77
179                     ;  or_if ra4_out _adcon0 0
180                     ; line_number = 78
181                     ;  or_if an3 _adcon0 1
182                     ; line_number = 79
183                     ; pin ra3_in, ra3_nc, mclr, vpp
184                     ; line_number = 80
185                     ; pin_bindings pdip=4, soic=4, tssop=4
186                     ; line_number = 81
187                     ;  bind_to _porta@3
188                     ; line_number = 82
189                     ;  or_if ra3_in _trisa 8
190                     ; line_number = 83
191                     ;  or_if ra3_nc _trisa 8
192                     ; line_number = 84
193                     ; pin rc5_in, rc5_nc, rc5_out, rx, dt
194                     ; line_number = 85
195                     ; pin_bindings pdip=5, soic=5, tssop=5
196                     ; line_number = 86
197                     ;  bind_to _portc@5
198                     ; line_number = 87
199                     ;  or_if rc5_in _trisc 32
200                     ; line_number = 88
201                     ;  or_if rc5_nc _trisc 32
202                     ; line_number = 89
203                     ;  or_if rc5_out _trisc 0
204                     ; line_number = 90
205                     ;  or_if rx _trisc 32
206                     ; line_number = 91
207                     ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck
208                     ; line_number = 92
209                     ; pin_bindings pdip=6, soic=6, tssop=6
210                     ; line_number = 93
211                     ;  bind_to _portc@4
212                     ; line_number = 94
213                     ;  or_if rc4_in _trisc 16
214                     ; line_number = 95
215                     ;  or_if rc4_nc _trisc 16
216                     ; line_number = 96
217                     ;  or_if rc4_out _trisc 0
218                     ; # The UART documentation says TX must be marked as in input:
219                     ; line_number = 98
220                     ;  or_if tx _trisc 16
221                     ; line_number = 99
222                     ; pin rc3_in, rc3_nc, rc3_out, an7
223                     ; line_number = 100
224                     ; pin_bindings pdip=7, soic=7, tssop=7
225                     ; line_number = 101
226                     ;  bind_to _portc@3
227                     ; line_number = 102
228                     ;  or_if rc3_in _trisc 8
229                     ; line_number = 103
230                     ;  or_if rc3_nc _trisc 8
231                     ; line_number = 104
232                     ;  or_if rc3_out _trisc 0
233                     ; line_number = 105
234                     ;  or_if an7 _trisc 8
235                     ; line_number = 106
236                     ;  or_if rc3_in _ansel 0
237                     ; line_number = 107
238                     ;  or_if rc3_out _ansel 0
239                     ; line_number = 108
240                     ;  or_if an7 _ansel 128
241                     ; line_number = 109
242                     ;  or_if rc3_in _adcon0 0
243                     ; line_number = 110
244                     ;  or_if rc3_out _adcon0 0
245                     ; line_number = 111
246                     ;  or_if an7 _adcon0 1
247                     ; line_number = 112
248                     ; pin rc2_in, rc2_nc, rc2_out, an6
249                     ; line_number = 113
250                     ; pin_bindings pdip=8, soic=8, tssop=8
251                     ; line_number = 114
252                     ;  bind_to _portc@2
253                     ; line_number = 115
254                     ;  or_if rc2_in _trisc 4
255                     ; line_number = 116
256                     ;  or_if rc2_nc _trisc 4
257                     ; line_number = 117
258                     ;  or_if rc2_out _trisc 0
259                     ; line_number = 118
260                     ;  or_if an6 _trisc 4
261                     ; line_number = 119
262                     ;  or_if rc2_in _ansel 0
263                     ; line_number = 120
264                     ;  or_if rc2_out _ansel 0
265                     ; line_number = 121
266                     ;  or_if an6 _ansel 64
267                     ; line_number = 122
268                     ;  or_if rc2_in _adcon0 0
269                     ; line_number = 123
270                     ;  or_if rc2_out _adcon0 0
271                     ; line_number = 124
272                     ;  or_if an6 _adcon0 1
273                     ; line_number = 125
274                     ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus
275                     ; line_number = 126
276                     ; pin_bindings pdip=9, soic=9, tssop=9
277                     ; line_number = 127
278                     ;  bind_to _portc@1
279                     ; line_number = 128
280                     ;  or_if rc1_in _trisc 2
281                     ; line_number = 129
282                     ;  or_if rc1_nc _trisc 2
283                     ; line_number = 130
284                     ;  or_if rc1_out _trisc 0
285                     ; line_number = 131
286                     ;  or_if rc1_in _cmcon0 7
287                     ; line_number = 132
288                     ;  or_if rc1_out _cmcon0 7
289                     ; line_number = 133
290                     ;  or_if an5 _trisc 2
291                     ; line_number = 134
292                     ;  or_if rc1_in _ansel 0
293                     ; line_number = 135
294                     ;  or_if rc1_out _ansel 0
295                     ; line_number = 136
296                     ;  or_if an5 _ansel 32
297                     ; line_number = 137
298                     ;  or_if rc1_in _adcon0 0
299                     ; line_number = 138
300                     ;  or_if rc1_out _adcon0 0
301                     ; line_number = 139
302                     ;  or_if an5 _adcon0 1
303                     ; line_number = 140
304                     ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus
305                     ; line_number = 141
306                     ; pin_bindings pdip=10, soic=10, tssop=10
307                     ; line_number = 142
308                     ;  bind_to _portc@0
309                     ; line_number = 143
310                     ;  or_if rc0_in _trisc 1
311                     ; line_number = 144
312                     ;  or_if rc0_nc _trisc 1
313                     ; line_number = 145
314                     ;  or_if rc0_out _trisc 0
315                     ; line_number = 146
316                     ;  or_if rc0_in _cmcon0 7
317                     ; line_number = 147
318                     ;  or_if rc0_out _cmcon0 7
319                     ; line_number = 148
320                     ;  or_if an4 _trisc 1
321                     ; line_number = 149
322                     ;  or_if rc0_in _ansel 0
323                     ; line_number = 150
324                     ;  or_if rc0_out _ansel 0
325                     ; line_number = 151
326                     ;  or_if an4 _ansel 16
327                     ; line_number = 152
328                     ;  or_if rc0_in _adcon0 0
329                     ; line_number = 153
330                     ;  or_if rc0_out _adcon0 0
331                     ; line_number = 154
332                     ;  or_if an4 _adcon0 1
333                     ; line_number = 155
334                     ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int
335                     ; line_number = 156
336                     ; pin_bindings pdip=11, soic=11, tssop=11
337                     ; line_number = 157
338                     ;  bind_to _porta@2
339                     ; line_number = 158
340                     ;  or_if ra2_in _trisa 4
341                     ; line_number = 159
342                     ;  or_if ra2_nc _trisa 4
343                     ; line_number = 160
344                     ;  or_if ra2_out _trisa 0
345                     ; line_number = 161
346                     ;  or_if an2 _trisa 4
347                     ; line_number = 162
348                     ;  or_if ra2_in _ansel 0
349                     ; line_number = 163
350                     ;  or_if ra2_out _ansel 0
351                     ; line_number = 164
352                     ;  or_if an2 _ansel 4
353                     ; line_number = 165
354                     ;  or_if ra2_in _adcon0 0
355                     ; line_number = 166
356                     ;  or_if ra2_out _adcon0 0
357                     ; line_number = 167
358                     ;  or_if an2 _adcon0 1
359                     ; line_number = 168
360                     ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk
361                     ; line_number = 169
362                     ; pin_bindings pdip=12, soic=12, tssop=12
363                     ; line_number = 170
364                     ;  bind_to _porta@1
365                     ; line_number = 171
366                     ;  or_if ra1_in _trisa 2
367                     ; line_number = 172
368                     ;  or_if ra1_nc _trisa 2
369                     ; line_number = 173
370                     ;  or_if ra1_out _trisa 0
371                     ; line_number = 174
372                     ;  or_if ra1_in _cmcon0 7
373                     ; line_number = 175
374                     ;  or_if ra1_out _cmcon0 7
375                     ; line_number = 176
376                     ;  or_if an1 _trisa 2
377                     ; line_number = 177
378                     ;  or_if vref _trisa 2
379                     ; line_number = 178
380                     ;  or_if ra1_in _ansel 0
381                     ; line_number = 179
382                     ;  or_if ra1_out _ansel 0
383                     ; line_number = 180
384                     ;  or_if an1 _ansel 2
385                     ; line_number = 181
386                     ;  or_if vref _ansel 2
387                     ; line_number = 182
388                     ;  or_if ra1_in _adcon0 0
389                     ; line_number = 183
390                     ;  or_if ra1_out _adcon0 0
391                     ; line_number = 184
392                     ;  or_if an1 _adcon0 1		# Turn on _addon
393                     ; line_number = 185
394                     ;  or_if vref _adcon0 1		# Turn on _addon
395                     ; line_number = 186
396                     ;  or_if vref _adcon0 64		# Turn of _vcfg
397                     ; line_number = 187
398                     ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu
399                     ; line_number = 188
400                     ; pin_bindings pdip=13, soic=13, tssop=13
401                     ; line_number = 189
402                     ;  bind_to _porta@0
403                     ; line_number = 190
404                     ;  or_if ra0_in _trisa 1
405                     ; line_number = 191
406                     ;  or_if ra0_nc _trisa 1
407                     ; line_number = 192
408                     ;  or_if ra0_out _trisa 0
409                     ; line_number = 193
410                     ;  or_if ra0_in _cmcon0 7
411                     ; line_number = 194
412                     ;  or_if ra0_out _cmcon0 7
413                     ; line_number = 195
414                     ;  or_if an0 _trisa 1
415                     ; line_number = 196
416                     ;  or_if ra0_in _ansel 0
417                     ; line_number = 197
418                     ;  or_if ra0_out _ansel 0
419                     ; line_number = 198
420                     ;  or_if an0 _ansel 1
421                     ; line_number = 199
422                     ;  or_if ra0_in _adcon0 0
423                     ; line_number = 200
424                     ;  or_if ra0_out _adcon0 0
425                     ; line_number = 201
426                     ;  or_if an0 _adcon0 1
427                     ; line_number = 202
428                     ; pin vss, ground
429                     ; line_number = 203
430                     ; pin_bindings pdip=14, soic=14, tssop=14
431             
432                     ; line_number = 205
433                     ; library _standard entered
434             
435                     ; # Copyright (c) 2006 by Wayne C. Gramlich
436                     ; # All rights reserved.
437             
438                     ; # Standard definition for uCL:
439             
440                     ; buffer = '_standard'
441                     ; line_number = 8
442                     ; constant _true = (1 = 1)
443  00000001 = _true equ 1
444                     ; line_number = 9
445                     ; constant _false = (0 != 0)
446  00000000 = _false equ 0
447             
448             
449                     ; buffer = '_pic16f688'
450                     ; line_number = 205
451                     ; library _standard exited
452             
453             
454                     ; # Register/bit bindings:
455             
456                     ; # Databank 0 (0x0 - 0x7f):
457             
458                     ; line_number = 216
459                     ; register _indf = 
460  00000000 = _indf equ 0
461             
462                     ; line_number = 218
463                     ; register _tmr0 = 
464  00000001 = _tmr0 equ 1
465             
466                     ; line_number = 220
467                     ; register _pcl = 
468  00000002 = _pcl equ 2
469             
470                     ; line_number = 222
471                     ; register _status = 
472  00000003 = _status equ 3
473                     ; line_number = 223
474                     ; bind _irp = _status@7
475  00000003 = _irp___byte equ _status
476  00000007 = _irp___bit equ 7
477                     ; line_number = 224
478                     ; bind _rp1 = _status@5
479  00000003 = _rp1___byte equ _status
480  00000005 = _rp1___bit equ 5
481                     ; line_number = 225
482                     ; bind _rp0 = _status@5
483  00000003 = _rp0___byte equ _status
484  00000005 = _rp0___bit equ 5
485                     ; line_number = 226
486                     ; bind _to = _status@4
487  00000003 = _to___byte equ _status
488  00000004 = _to___bit equ 4
489                     ; line_number = 227
490                     ; bind _pd = _status@3
491  00000003 = _pd___byte equ _status
492  00000003 = _pd___bit equ 3
493                     ; line_number = 228
494                     ; bind _z = _status@2
495  00000003 = _z___byte equ _status
496  00000002 = _z___bit equ 2
497                     ; line_number = 229
498                     ; bind _dc = _status@1
499  00000003 = _dc___byte equ _status
500  00000001 = _dc___bit equ 1
501                     ; line_number = 230
502                     ; bind _c = _status@0
503  00000003 = _c___byte equ _status
504  00000000 = _c___bit equ 0
505             
506                     ; line_number = 232
507                     ; register _fsr = 
508  00000004 = _fsr equ 4
509             
510                     ; line_number = 234
511                     ; register _porta = 
512  00000005 = _porta equ 5
513                     ; line_number = 235
514                     ; register _ra = 
515  00000005 = _ra equ 5
516                     ; line_number = 236
517                     ; bind _ra5 = _porta@5
518  00000005 = _ra5___byte equ _porta
519  00000005 = _ra5___bit equ 5
520                     ; line_number = 237
521                     ; bind _ra4 = _porta@4
522  00000005 = _ra4___byte equ _porta
523  00000004 = _ra4___bit equ 4
524                     ; line_number = 238
525                     ; bind _ra3 = _porta@3
526  00000005 = _ra3___byte equ _porta
527  00000003 = _ra3___bit equ 3
528                     ; line_number = 239
529                     ; bind _ra2 = _porta@2
530  00000005 = _ra2___byte equ _porta
531  00000002 = _ra2___bit equ 2
532                     ; line_number = 240
533                     ; bind _ra1 = _porta@1
534  00000005 = _ra1___byte equ _porta
535  00000001 = _ra1___bit equ 1
536                     ; line_number = 241
537                     ; bind _ra0 = _porta@0
538  00000005 = _ra0___byte equ _porta
539  00000000 = _ra0___bit equ 0
540             
541                     ; line_number = 243
542                     ; register _portc = 
543  00000007 = _portc equ 7
544                     ; line_number = 244
545                     ; register _rc = 
546  00000007 = _rc equ 7
547                     ; line_number = 245
548                     ; bind _rc5 = _portc@5
549  00000007 = _rc5___byte equ _portc
550  00000005 = _rc5___bit equ 5
551                     ; line_number = 246
552                     ; bind _rc4 = _portc@4
553  00000007 = _rc4___byte equ _portc
554  00000004 = _rc4___bit equ 4
555                     ; line_number = 247
556                     ; bind _rc3 = _portc@3
557  00000007 = _rc3___byte equ _portc
558  00000003 = _rc3___bit equ 3
559                     ; line_number = 248
560                     ; bind _rc2 = _portc@2
561  00000007 = _rc2___byte equ _portc
562  00000002 = _rc2___bit equ 2
563                     ; line_number = 249
564                     ; bind _rc1 = _portc@1
565  00000007 = _rc1___byte equ _portc
566  00000001 = _rc1___bit equ 1
567                     ; line_number = 250
568                     ; bind _rc0 = _portc@0
569  00000007 = _rc0___byte equ _portc
570  00000000 = _rc0___bit equ 0
571             
572                     ; line_number = 252
573                     ; register _pclath = 
574  0000000a = _pclath equ 10
575             
576                     ; line_number = 254
577                     ; register _intcon = 
578  0000000b = _intcon equ 11
579                     ; line_number = 255
580                     ; bind _gie = _intcon@7
581  0000000b = _gie___byte equ _intcon
582  00000007 = _gie___bit equ 7
583                     ; line_number = 256
584                     ; bind _peie = _intcon@6
585  0000000b = _peie___byte equ _intcon
586  00000006 = _peie___bit equ 6
587                     ; line_number = 257
588                     ; bind _t0ie = _intcon@5
589  0000000b = _t0ie___byte equ _intcon
590  00000005 = _t0ie___bit equ 5
591                     ; line_number = 258
592                     ; bind _inte = _intcon@4
593  0000000b = _inte___byte equ _intcon
594  00000004 = _inte___bit equ 4
595                     ; line_number = 259
596                     ; bind _raie = _intcon@3
597  0000000b = _raie___byte equ _intcon
598  00000003 = _raie___bit equ 3
599                     ; line_number = 260
600                     ; bind _t0if = _intcon@2
601  0000000b = _t0if___byte equ _intcon
602  00000002 = _t0if___bit equ 2
603                     ; line_number = 261
604                     ; bind _intf = _intcon@1
605  0000000b = _intf___byte equ _intcon
606  00000001 = _intf___bit equ 1
607                     ; line_number = 262
608                     ; bind _raif = _intcon@0
609  0000000b = _raif___byte equ _intcon
610  00000000 = _raif___bit equ 0
611             
612                     ; line_number = 264
613                     ; register _pir1 = 
614  0000000c = _pir1 equ 12
615                     ; line_number = 265
616                     ; bind _eeif = _pir1@7
617  0000000c = _eeif___byte equ _pir1
618  00000007 = _eeif___bit equ 7
619                     ; line_number = 266
620                     ; bind _adif = _pir1@6
621  0000000c = _adif___byte equ _pir1
622  00000006 = _adif___bit equ 6
623                     ; line_number = 267
624                     ; bind _rcif = _pir1@5
625  0000000c = _rcif___byte equ _pir1
626  00000005 = _rcif___bit equ 5
627                     ; line_number = 268
628                     ; bind _c2if = _pir1@4
629  0000000c = _c2if___byte equ _pir1
630  00000004 = _c2if___bit equ 4
631                     ; line_number = 269
632                     ; bind _c1if = _pir1@3
633  0000000c = _c1if___byte equ _pir1
634  00000003 = _c1if___bit equ 3
635                     ; line_number = 270
636                     ; bind _osfif = _pir1@2
637  0000000c = _osfif___byte equ _pir1
638  00000002 = _osfif___bit equ 2
639                     ; line_number = 271
640                     ; bind _txif = _pir1@1
641  0000000c = _txif___byte equ _pir1
642  00000001 = _txif___bit equ 1
643                     ; line_number = 272
644                     ; bind _tmr1if = _pir1@0
645  0000000c = _tmr1if___byte equ _pir1
646  00000000 = _tmr1if___bit equ 0
647             
648                     ; line_number = 274
649                     ; register _tmr1l = 
650  0000000e = _tmr1l equ 14
651             
652                     ; line_number = 276
653                     ; register _tmr1h = 
654  0000000f = _tmr1h equ 15
655             
656                     ; line_number = 278
657                     ; register _t1con = 
658  00000010 = _t1con equ 16
659                     ; line_number = 279
660                     ; bind t1ginv = _t1con@7
661  00000010 = t1ginv___byte equ _t1con
662  00000007 = t1ginv___bit equ 7
663                     ; line_number = 280
664                     ; bind _tmr1ge = _t1con@6
665  00000010 = _tmr1ge___byte equ _t1con
666  00000006 = _tmr1ge___bit equ 6
667                     ; line_number = 281
668                     ; bind _t1ckps1 = _t1con@5
669  00000010 = _t1ckps1___byte equ _t1con
670  00000005 = _t1ckps1___bit equ 5
671                     ; line_number = 282
672                     ; bind _t1ckps0 = _t1con@4
673  00000010 = _t1ckps0___byte equ _t1con
674  00000004 = _t1ckps0___bit equ 4
675                     ; line_number = 283
676                     ; bind _t1oscen = _t1con@3
677  00000010 = _t1oscen___byte equ _t1con
678  00000003 = _t1oscen___bit equ 3
679                     ; line_number = 284
680                     ; bind _t1sync = _t1con@2
681  00000010 = _t1sync___byte equ _t1con
682  00000002 = _t1sync___bit equ 2
683                     ; line_number = 285
684                     ; bind _tmr1cs = _t1con@1
685  00000010 = _tmr1cs___byte equ _t1con
686  00000001 = _tmr1cs___bit equ 1
687                     ; line_number = 286
688                     ; bind _tmr1on = _t1con@0
689  00000010 = _tmr1on___byte equ _t1con
690  00000000 = _tmr1on___bit equ 0
691             
692                     ; line_number = 288
693                     ; register _baudctl = 
694  00000011 = _baudctl equ 17
695                     ; line_number = 289
696                     ; bind _abdovf = _baudctl@7
697  00000011 = _abdovf___byte equ _baudctl
698  00000007 = _abdovf___bit equ 7
699                     ; line_number = 290
700                     ; bind _rcidl = _baudctl@6
701  00000011 = _rcidl___byte equ _baudctl
702  00000006 = _rcidl___bit equ 6
703                     ; line_number = 291
704                     ; bind _sckp = _baudctl@4
705  00000011 = _sckp___byte equ _baudctl
706  00000004 = _sckp___bit equ 4
707                     ; line_number = 292
708                     ; bind _brg16 = _baudctl@3
709  00000011 = _brg16___byte equ _baudctl
710  00000003 = _brg16___bit equ 3
711                     ; line_number = 293
712                     ; bind _wue = _baudctl@1
713  00000011 = _wue___byte equ _baudctl
714  00000001 = _wue___bit equ 1
715                     ; line_number = 294
716                     ; bind _abden = _baudctl@0
717  00000011 = _abden___byte equ _baudctl
718  00000000 = _abden___bit equ 0
719             
720                     ; line_number = 296
721                     ; register _spbrgh = 
722  00000012 = _spbrgh equ 18
723             
724                     ; line_number = 298
725                     ; register _spbrg = 
726  00000013 = _spbrg equ 19
727             
728                     ; line_number = 300
729                     ; register _rcreg = 
730  00000014 = _rcreg equ 20
731             
732                     ; line_number = 302
733                     ; register _txreg = 
734  00000015 = _txreg equ 21
735             
736                     ; line_number = 304
737                     ; register _txsta = 
738  00000016 = _txsta equ 22
739                     ; line_number = 305
740                     ; bind _csrc = _txsta@7
741  00000016 = _csrc___byte equ _txsta
742  00000007 = _csrc___bit equ 7
743                     ; line_number = 306
744                     ; bind _tx9 = _txsta@6
745  00000016 = _tx9___byte equ _txsta
746  00000006 = _tx9___bit equ 6
747                     ; line_number = 307
748                     ; bind _txen = _txsta@5
749  00000016 = _txen___byte equ _txsta
750  00000005 = _txen___bit equ 5
751                     ; line_number = 308
752                     ; bind _sync = _txsta@4
753  00000016 = _sync___byte equ _txsta
754  00000004 = _sync___bit equ 4
755                     ; line_number = 309
756                     ; bind _sendb = _txsta@3
757  00000016 = _sendb___byte equ _txsta
758  00000003 = _sendb___bit equ 3
759                     ; line_number = 310
760                     ; bind _brgh = _txsta@2
761  00000016 = _brgh___byte equ _txsta
762  00000002 = _brgh___bit equ 2
763                     ; line_number = 311
764                     ; bind _trmt = _txsta@1
765  00000016 = _trmt___byte equ _txsta
766  00000001 = _trmt___bit equ 1
767                     ; line_number = 312
768                     ; bind _tx9d = _txsta@0
769  00000016 = _tx9d___byte equ _txsta
770  00000000 = _tx9d___bit equ 0
771             
772                     ; line_number = 314
773                     ; register _rcsta = 
774  00000017 = _rcsta equ 23
775                     ; line_number = 315
776                     ; bind _spen = _rcsta@7
777  00000017 = _spen___byte equ _rcsta
778  00000007 = _spen___bit equ 7
779                     ; line_number = 316
780                     ; bind _rx9 = _rcsta@6
781  00000017 = _rx9___byte equ _rcsta
782  00000006 = _rx9___bit equ 6
783                     ; line_number = 317
784                     ; bind _sren = _rcsta@5
785  00000017 = _sren___byte equ _rcsta
786  00000005 = _sren___bit equ 5
787                     ; line_number = 318
788                     ; bind _cren = _rcsta@4
789  00000017 = _cren___byte equ _rcsta
790  00000004 = _cren___bit equ 4
791                     ; line_number = 319
792                     ; bind _adden = _rcsta@3
793  00000017 = _adden___byte equ _rcsta
794  00000003 = _adden___bit equ 3
795                     ; line_number = 320
796                     ; bind _ferr = _rcsta@2
797  00000017 = _ferr___byte equ _rcsta
798  00000002 = _ferr___bit equ 2
799                     ; line_number = 321
800                     ; bind _oerr = _rcsta@1
801  00000017 = _oerr___byte equ _rcsta
802  00000001 = _oerr___bit equ 1
803                     ; line_number = 322
804                     ; bind _rx9d = _rcsta@0
805  00000017 = _rx9d___byte equ _rcsta
806  00000000 = _rx9d___bit equ 0
807             
808                     ; line_number = 324
809                     ; register _wdtcon = 
810  00000018 = _wdtcon equ 24
811                     ; line_number = 325
812                     ; bind _wdtps3 = _wdtcon@4
813  00000018 = _wdtps3___byte equ _wdtcon
814  00000004 = _wdtps3___bit equ 4
815                     ; line_number = 326
816                     ; bind _wdtps2 = _wdtcon@3
817  00000018 = _wdtps2___byte equ _wdtcon
818  00000003 = _wdtps2___bit equ 3
819                     ; line_number = 327
820                     ; bind _wdtps1 = _wdtcon@2
821  00000018 = _wdtps1___byte equ _wdtcon
822  00000002 = _wdtps1___bit equ 2
823                     ; line_number = 328
824                     ; bind _wdtps0 = _wdtcon@1
825  00000018 = _wdtps0___byte equ _wdtcon
826  00000001 = _wdtps0___bit equ 1
827                     ; line_number = 329
828                     ; bind _swdten = _wdtcon@0
829  00000018 = _swdten___byte equ _wdtcon
830  00000000 = _swdten___bit equ 0
831             
832                     ; line_number = 331
833                     ; register _cmcon0 = 
834  00000019 = _cmcon0 equ 25
835                     ; line_number = 332
836                     ; bind _c1out = _cmcon0@7
837  00000019 = _c1out___byte equ _cmcon0
838  00000007 = _c1out___bit equ 7
839                     ; line_number = 333
840                     ; bind _c2out = _cmcon0@6
841  00000019 = _c2out___byte equ _cmcon0
842  00000006 = _c2out___bit equ 6
843                     ; line_number = 334
844                     ; bind _c1inv = _cmcon0@5
845  00000019 = _c1inv___byte equ _cmcon0
846  00000005 = _c1inv___bit equ 5
847                     ; line_number = 335
848                     ; bind _c2inv = _cmcon0@4
849  00000019 = _c2inv___byte equ _cmcon0
850  00000004 = _c2inv___bit equ 4
851                     ; line_number = 336
852                     ; bind _cis = _cmcon0@3
853  00000019 = _cis___byte equ _cmcon0
854  00000003 = _cis___bit equ 3
855                     ; line_number = 337
856                     ; bind _cm2 = _cmcon0@2
857  00000019 = _cm2___byte equ _cmcon0
858  00000002 = _cm2___bit equ 2
859                     ; line_number = 338
860                     ; bind _cm1 = _cmcon0@1
861  00000019 = _cm1___byte equ _cmcon0
862  00000001 = _cm1___bit equ 1
863                     ; line_number = 339
864                     ; bind _cm0 = _cmcon0@0
865  00000019 = _cm0___byte equ _cmcon0
866  00000000 = _cm0___bit equ 0
867             
868                     ; line_number = 341
869                     ; register _cmcon1 = 
870  0000001a = _cmcon1 equ 26
871                     ; line_number = 342
872                     ; bind _t1gss = _cmcon1@0
873  0000001a = _t1gss___byte equ _cmcon1
874  00000000 = _t1gss___bit equ 0
875                     ; line_number = 343
876                     ; bind _c2sync = _cmcon1@1
877  0000001a = _c2sync___byte equ _cmcon1
878  00000001 = _c2sync___bit equ 1
879             
880                     ; line_number = 345
881                     ; register _adresh = 
882  0000001e = _adresh equ 30
883             
884                     ; line_number = 347
885                     ; register _adcon0 = 
886  0000001f = _adcon0 equ 31
887                     ; line_number = 348
888                     ; bind _adfm = _adcon0@7
889  0000001f = _adfm___byte equ _adcon0
890  00000007 = _adfm___bit equ 7
891                     ; line_number = 349
892                     ; bind _vcfg = _adcon0@6
893  0000001f = _vcfg___byte equ _adcon0
894  00000006 = _vcfg___bit equ 6
895                     ; line_number = 350
896                     ; bind _chs2 = _adcon0@4
897  0000001f = _chs2___byte equ _adcon0
898  00000004 = _chs2___bit equ 4
899                     ; line_number = 351
900                     ; bind _chs1 = _adcon0@3
901  0000001f = _chs1___byte equ _adcon0
902  00000003 = _chs1___bit equ 3
903                     ; line_number = 352
904                     ; bind _chs0 = _adcon0@2
905  0000001f = _chs0___byte equ _adcon0
906  00000002 = _chs0___bit equ 2
907                     ; line_number = 353
908                     ; bind _go = _adcon0@1
909  0000001f = _go___byte equ _adcon0
910  00000001 = _go___bit equ 1
911                     ; line_number = 354
912                     ; bind _adon = _adcon0@0
913  0000001f = _adon___byte equ _adcon0
914  00000000 = _adon___bit equ 0
915             
916                     ; # Data bank 1 (0x80-0xff):
917             
918                     ; line_number = 358
919                     ; register _option_reg = 
920  00000081 = _option_reg equ 129
921                     ; line_number = 359
922                     ; bind _rapu = _option_reg@7
923  00000081 = _rapu___byte equ _option_reg
924  00000007 = _rapu___bit equ 7
925                     ; line_number = 360
926                     ; bind _intedg = _option_reg@6
927  00000081 = _intedg___byte equ _option_reg
928  00000006 = _intedg___bit equ 6
929                     ; line_number = 361
930                     ; bind _t0cs = _option_reg@5
931  00000081 = _t0cs___byte equ _option_reg
932  00000005 = _t0cs___bit equ 5
933                     ; line_number = 362
934                     ; bind _t0se = _option_reg@4
935  00000081 = _t0se___byte equ _option_reg
936  00000004 = _t0se___bit equ 4
937                     ; line_number = 363
938                     ; bind _psa = _option_reg@3
939  00000081 = _psa___byte equ _option_reg
940  00000003 = _psa___bit equ 3
941                     ; line_number = 364
942                     ; bind _ps2 = _option_reg@2
943  00000081 = _ps2___byte equ _option_reg
944  00000002 = _ps2___bit equ 2
945                     ; line_number = 365
946                     ; bind _ps1 = _option_reg@1
947  00000081 = _ps1___byte equ _option_reg
948  00000001 = _ps1___bit equ 1
949                     ; line_number = 366
950                     ; bind _ps0 = _option_reg@0
951  00000081 = _ps0___byte equ _option_reg
952  00000000 = _ps0___bit equ 0
953             
954                     ; line_number = 368
955                     ; register _trisa = 
956  00000085 = _trisa equ 133
957                     ; line_number = 369
958                     ; bind _trisa5 = _trisa@5
959  00000085 = _trisa5___byte equ _trisa
960  00000005 = _trisa5___bit equ 5
961                     ; line_number = 370
962                     ; bind _trisa4 = _trisa@4
963  00000085 = _trisa4___byte equ _trisa
964  00000004 = _trisa4___bit equ 4
965                     ; line_number = 371
966                     ; bind _trisa3 = _trisa@3
967  00000085 = _trisa3___byte equ _trisa
968  00000003 = _trisa3___bit equ 3
969                     ; line_number = 372
970                     ; bind _trisa2 = _trisa@2
971  00000085 = _trisa2___byte equ _trisa
972  00000002 = _trisa2___bit equ 2
973                     ; line_number = 373
974                     ; bind _trisa1 = _trisa@1
975  00000085 = _trisa1___byte equ _trisa
976  00000001 = _trisa1___bit equ 1
977                     ; line_number = 374
978                     ; bind _trisa0 = _trisa@0
979  00000085 = _trisa0___byte equ _trisa
980  00000000 = _trisa0___bit equ 0
981             
982                     ; line_number = 376
983                     ; register _trisc = 
984  00000087 = _trisc equ 135
985                     ; line_number = 377
986                     ; bind _trisc5 = _trisc@5
987  00000087 = _trisc5___byte equ _trisc
988  00000005 = _trisc5___bit equ 5
989                     ; line_number = 378
990                     ; bind _trisc4 = _trisc@4
991  00000087 = _trisc4___byte equ _trisc
992  00000004 = _trisc4___bit equ 4
993                     ; line_number = 379
994                     ; bind _trisc3 = _trisc@3
995  00000087 = _trisc3___byte equ _trisc
996  00000003 = _trisc3___bit equ 3
997                     ; line_number = 380
998                     ; bind _trisc2 = _trisc@2
999  00000087 = _trisc2___byte equ _trisc
1000 00000002 = _trisc2___bit equ 2
1001                    ; line_number = 381
1002                    ; bind _trisc1 = _trisc@1
1003 00000087 = _trisc1___byte equ _trisc
1004 00000001 = _trisc1___bit equ 1
1005                    ; line_number = 382
1006                    ; bind _trisc0 = _trisc@0
1007 00000087 = _trisc0___byte equ _trisc
1008 00000000 = _trisc0___bit equ 0
1009            
1010                    ; line_number = 384
1011                    ; register _pie1 = 
1012 0000008c = _pie1 equ 140
1013                    ; line_number = 385
1014                    ; bind _eeie = _pie1@7
1015 0000008c = _eeie___byte equ _pie1
1016 00000007 = _eeie___bit equ 7
1017                    ; line_number = 386
1018                    ; bind _adie = _pie1@6
1019 0000008c = _adie___byte equ _pie1
1020 00000006 = _adie___bit equ 6
1021                    ; line_number = 387
1022                    ; bind _rcie = _pie1@5
1023 0000008c = _rcie___byte equ _pie1
1024 00000005 = _rcie___bit equ 5
1025                    ; line_number = 388
1026                    ; bind _c2ie = _pie1@4
1027 0000008c = _c2ie___byte equ _pie1
1028 00000004 = _c2ie___bit equ 4
1029                    ; line_number = 389
1030                    ; bind _c1ie = _pie1@3
1031 0000008c = _c1ie___byte equ _pie1
1032 00000003 = _c1ie___bit equ 3
1033                    ; line_number = 390
1034                    ; bind _osfie = _pie1@2
1035 0000008c = _osfie___byte equ _pie1
1036 00000002 = _osfie___bit equ 2
1037                    ; line_number = 391
1038                    ; bind _txie = _pie1@1
1039 0000008c = _txie___byte equ _pie1
1040 00000001 = _txie___bit equ 1
1041                    ; line_number = 392
1042                    ; bind _tmr1ie = _pie1@0
1043 0000008c = _tmr1ie___byte equ _pie1
1044 00000000 = _tmr1ie___bit equ 0
1045            
1046                    ; line_number = 394
1047                    ; register _pcon = 
1048 0000008e = _pcon equ 142
1049                    ; line_number = 395
1050                    ; bind _ulpwue = _pcon@5
1051 0000008e = _ulpwue___byte equ _pcon
1052 00000005 = _ulpwue___bit equ 5
1053                    ; line_number = 396
1054                    ; bind _sboden = _pcon@4
1055 0000008e = _sboden___byte equ _pcon
1056 00000004 = _sboden___bit equ 4
1057                    ; line_number = 397
1058                    ; bind _por = _pcon@1
1059 0000008e = _por___byte equ _pcon
1060 00000001 = _por___bit equ 1
1061                    ; line_number = 398
1062                    ; bind _bod = _pcon@0
1063 0000008e = _bod___byte equ _pcon
1064 00000000 = _bod___bit equ 0
1065            
1066                    ; line_number = 400
1067                    ; register _osccon = 
1068 0000008f = _osccon equ 143
1069                    ; line_number = 401
1070                    ; bind _ircf2 = _osccon@6
1071 0000008f = _ircf2___byte equ _osccon
1072 00000006 = _ircf2___bit equ 6
1073                    ; line_number = 402
1074                    ; bind _ircf1 = _osccon@5
1075 0000008f = _ircf1___byte equ _osccon
1076 00000005 = _ircf1___bit equ 5
1077                    ; line_number = 403
1078                    ; bind _ircf0 = _osccon@4
1079 0000008f = _ircf0___byte equ _osccon
1080 00000004 = _ircf0___bit equ 4
1081                    ; line_number = 404
1082                    ; bind _osts = _osccon@3
1083 0000008f = _osts___byte equ _osccon
1084 00000003 = _osts___bit equ 3
1085                    ; line_number = 405
1086                    ; bind _hts = _osccon@2
1087 0000008f = _hts___byte equ _osccon
1088 00000002 = _hts___bit equ 2
1089                    ; line_number = 406
1090                    ; bind _lts = _osccon@3
1091 0000008f = _lts___byte equ _osccon
1092 00000003 = _lts___bit equ 3
1093                    ; line_number = 407
1094                    ; bind _scs = _osccon@2
1095 0000008f = _scs___byte equ _osccon
1096 00000002 = _scs___bit equ 2
1097            
1098                    ; line_number = 409
1099                    ; register _osctune = 
1100 00000090 = _osctune equ 144
1101                    ; line_number = 410
1102                    ; bind _tun4 = _osctune@4
1103 00000090 = _tun4___byte equ _osctune
1104 00000004 = _tun4___bit equ 4
1105                    ; line_number = 411
1106                    ; bind _tun3 = _osctune@3
1107 00000090 = _tun3___byte equ _osctune
1108 00000003 = _tun3___bit equ 3
1109                    ; line_number = 412
1110                    ; bind _tun2 = _osctune@2
1111 00000090 = _tun2___byte equ _osctune
1112 00000002 = _tun2___bit equ 2
1113                    ; line_number = 413
1114                    ; bind _tun1 = _osctune@1
1115 00000090 = _tun1___byte equ _osctune
1116 00000001 = _tun1___bit equ 1
1117                    ; line_number = 414
1118                    ; bind _tun0 = _osctune@0
1119 00000090 = _tun0___byte equ _osctune
1120 00000000 = _tun0___bit equ 0
1121                    ; line_number = 415
1122                    ; constant _osccal_lsb = 1
1123 00000001 = _osccal_lsb equ 1
1124            
1125                    ; line_number = 417
1126                    ; register _ansel = 
1127 00000091 = _ansel equ 145
1128                    ; line_number = 418
1129                    ; bind _ans7 = _ansel@7
1130 00000091 = _ans7___byte equ _ansel
1131 00000007 = _ans7___bit equ 7
1132                    ; line_number = 419
1133                    ; bind _ans6 = _ansel@6
1134 00000091 = _ans6___byte equ _ansel
1135 00000006 = _ans6___bit equ 6
1136                    ; line_number = 420
1137                    ; bind _ans5 = _ansel@5
1138 00000091 = _ans5___byte equ _ansel
1139 00000005 = _ans5___bit equ 5
1140                    ; line_number = 421
1141                    ; bind _ans4 = _ansel@4
1142 00000091 = _ans4___byte equ _ansel
1143 00000004 = _ans4___bit equ 4
1144                    ; line_number = 422
1145                    ; bind _ans3 = _ansel@3
1146 00000091 = _ans3___byte equ _ansel
1147 00000003 = _ans3___bit equ 3
1148                    ; line_number = 423
1149                    ; bind _ans2 = _ansel@2
1150 00000091 = _ans2___byte equ _ansel
1151 00000002 = _ans2___bit equ 2
1152                    ; line_number = 424
1153                    ; bind _ans1 = _ansel@1
1154 00000091 = _ans1___byte equ _ansel
1155 00000001 = _ans1___bit equ 1
1156                    ; line_number = 425
1157                    ; bind _ans0 = _ansel@0
1158 00000091 = _ans0___byte equ _ansel
1159 00000000 = _ans0___bit equ 0
1160            
1161                    ; line_number = 427
1162                    ; register _wpua = 
1163 00000095 = _wpua equ 149
1164                    ; line_number = 428
1165                    ; bind _wpua5 = _wpua@5
1166 00000095 = _wpua5___byte equ _wpua
1167 00000005 = _wpua5___bit equ 5
1168                    ; line_number = 429
1169                    ; bind _wpua4 = _wpua@4
1170 00000095 = _wpua4___byte equ _wpua
1171 00000004 = _wpua4___bit equ 4
1172                    ; line_number = 430
1173                    ; bind _wpua2 = _wpua@2
1174 00000095 = _wpua2___byte equ _wpua
1175 00000002 = _wpua2___bit equ 2
1176                    ; line_number = 431
1177                    ; bind _wpua1 = _wpua@1
1178 00000095 = _wpua1___byte equ _wpua
1179 00000001 = _wpua1___bit equ 1
1180                    ; line_number = 432
1181                    ; bind _wpua0 = _wpua@0
1182 00000095 = _wpua0___byte equ _wpua
1183 00000000 = _wpua0___bit equ 0
1184            
1185                    ; line_number = 434
1186                    ; register _ioca = 
1187 00000096 = _ioca equ 150
1188                    ; line_number = 435
1189                    ; bind _ioca5 = _ioca@5
1190 00000096 = _ioca5___byte equ _ioca
1191 00000005 = _ioca5___bit equ 5
1192                    ; line_number = 436
1193                    ; bind _ioca4 = _ioca@4
1194 00000096 = _ioca4___byte equ _ioca
1195 00000004 = _ioca4___bit equ 4
1196                    ; line_number = 437
1197                    ; bind _ioca3 = _ioca@3
1198 00000096 = _ioca3___byte equ _ioca
1199 00000003 = _ioca3___bit equ 3
1200                    ; line_number = 438
1201                    ; bind _ioca2 = _ioca@2
1202 00000096 = _ioca2___byte equ _ioca
1203 00000002 = _ioca2___bit equ 2
1204                    ; line_number = 439
1205                    ; bind _ioca1 = _ioca@1
1206 00000096 = _ioca1___byte equ _ioca
1207 00000001 = _ioca1___bit equ 1
1208                    ; line_number = 440
1209                    ; bind _ioca0 = _ioca@0
1210 00000096 = _ioca0___byte equ _ioca
1211 00000000 = _ioca0___bit equ 0
1212            
1213                    ; line_number = 442
1214                    ; register _eedath = 
1215 00000097 = _eedath equ 151
1216            
1217                    ; line_number = 444
1218                    ; register _eeadrh = 
1219 00000098 = _eeadrh equ 152
1220            
1221                    ; line_number = 446
1222                    ; register _vrcon = 
1223 00000099 = _vrcon equ 153
1224                    ; line_number = 447
1225                    ; bind _vren = _vrcon@7
1226 00000099 = _vren___byte equ _vrcon
1227 00000007 = _vren___bit equ 7
1228                    ; line_number = 448
1229                    ; bind _vrr = _vrcon@5
1230 00000099 = _vrr___byte equ _vrcon
1231 00000005 = _vrr___bit equ 5
1232                    ; line_number = 449
1233                    ; bind _vr3 = _vrcon@3
1234 00000099 = _vr3___byte equ _vrcon
1235 00000003 = _vr3___bit equ 3
1236                    ; line_number = 450
1237                    ; bind _vr2 = _vrcon@2
1238 00000099 = _vr2___byte equ _vrcon
1239 00000002 = _vr2___bit equ 2
1240                    ; line_number = 451
1241                    ; bind _vr1 = _vrcon@1
1242 00000099 = _vr1___byte equ _vrcon
1243 00000001 = _vr1___bit equ 1
1244                    ; line_number = 452
1245                    ; bind _vr0 = _vrcon@0
1246 00000099 = _vr0___byte equ _vrcon
1247 00000000 = _vr0___bit equ 0
1248            
1249                    ; line_number = 454
1250                    ; register _eedat = 
1251 0000009a = _eedat equ 154
1252                    ; line_number = 455
1253                    ; bind _eedat7 = _eedat@7
1254 0000009a = _eedat7___byte equ _eedat
1255 00000007 = _eedat7___bit equ 7
1256                    ; line_number = 456
1257                    ; bind _eedat6 = _eedat@6
1258 0000009a = _eedat6___byte equ _eedat
1259 00000006 = _eedat6___bit equ 6
1260                    ; line_number = 457
1261                    ; bind _eedat5 = _eedat@5
1262 0000009a = _eedat5___byte equ _eedat
1263 00000005 = _eedat5___bit equ 5
1264                    ; line_number = 458
1265                    ; bind _eedat4 = _eedat@4
1266 0000009a = _eedat4___byte equ _eedat
1267 00000004 = _eedat4___bit equ 4
1268                    ; line_number = 459
1269                    ; bind _eedat3 = _eedat@3
1270 0000009a = _eedat3___byte equ _eedat
1271 00000003 = _eedat3___bit equ 3
1272                    ; line_number = 460
1273                    ; bind _eedat2 = _eedat@2
1274 0000009a = _eedat2___byte equ _eedat
1275 00000002 = _eedat2___bit equ 2
1276                    ; line_number = 461
1277                    ; bind _eedat1 = _eedat@1
1278 0000009a = _eedat1___byte equ _eedat
1279 00000001 = _eedat1___bit equ 1
1280                    ; line_number = 462
1281                    ; bind _eedat0 = _eedat@0
1282 0000009a = _eedat0___byte equ _eedat
1283 00000000 = _eedat0___bit equ 0
1284            
1285                    ; line_number = 464
1286                    ; register _eeadr = 
1287 0000009b = _eeadr equ 155
1288                    ; line_number = 465
1289                    ; bind _eeadr7 = _eeadr@7
1290 0000009b = _eeadr7___byte equ _eeadr
1291 00000007 = _eeadr7___bit equ 7
1292                    ; line_number = 466
1293                    ; bind _eeadr6 = _eeadr@6
1294 0000009b = _eeadr6___byte equ _eeadr
1295 00000006 = _eeadr6___bit equ 6
1296                    ; line_number = 467
1297                    ; bind _eeadr5 = _eeadr@5
1298 0000009b = _eeadr5___byte equ _eeadr
1299 00000005 = _eeadr5___bit equ 5
1300                    ; line_number = 468
1301                    ; bind _eeadr4 = _eeadr@4
1302 0000009b = _eeadr4___byte equ _eeadr
1303 00000004 = _eeadr4___bit equ 4
1304                    ; line_number = 469
1305                    ; bind _eeadr3 = _eeadr@3
1306 0000009b = _eeadr3___byte equ _eeadr
1307 00000003 = _eeadr3___bit equ 3
1308                    ; line_number = 470
1309                    ; bind _eeadr2 = _eeadr@2
1310 0000009b = _eeadr2___byte equ _eeadr
1311 00000002 = _eeadr2___bit equ 2
1312                    ; line_number = 471
1313                    ; bind _eeadr1 = _eeadr@1
1314 0000009b = _eeadr1___byte equ _eeadr
1315 00000001 = _eeadr1___bit equ 1
1316                    ; line_number = 472
1317                    ; bind _eeadr0 = _eeadr@0
1318 0000009b = _eeadr0___byte equ _eeadr
1319 00000000 = _eeadr0___bit equ 0
1320            
1321                    ; line_number = 474
1322                    ; register _eecon1 = 
1323 0000009c = _eecon1 equ 156
1324                    ; line_number = 475
1325                    ; bind _eepgd = _eecon1@7
1326 0000009c = _eepgd___byte equ _eecon1
1327 00000007 = _eepgd___bit equ 7
1328                    ; line_number = 476
1329                    ; bind _wrerr = _eecon1@3
1330 0000009c = _wrerr___byte equ _eecon1
1331 00000003 = _wrerr___bit equ 3
1332                    ; line_number = 477
1333                    ; bind _wren = _eecon1@2
1334 0000009c = _wren___byte equ _eecon1
1335 00000002 = _wren___bit equ 2
1336                    ; line_number = 478
1337                    ; bind _wr = _eecon1@1
1338 0000009c = _wr___byte equ _eecon1
1339 00000001 = _wr___bit equ 1
1340                    ; line_number = 479
1341                    ; bind _rd = _eecon1@0
1342 0000009c = _rd___byte equ _eecon1
1343 00000000 = _rd___bit equ 0
1344            
1345                    ; line_number = 481
1346                    ; register _eecon2 = 
1347 0000009d = _eecon2 equ 157
1348            
1349                    ; line_number = 483
1350                    ; register _adresl = 
1351 0000009e = _adresl equ 158
1352            
1353                    ; line_number = 485
1354                    ; register _adcon1 = 
1355 0000009f = _adcon1 equ 159
1356                    ; line_number = 486
1357                    ; bind _adcs2 = _adcon1@6
1358 0000009f = _adcs2___byte equ _adcon1
1359 00000006 = _adcs2___bit equ 6
1360                    ; line_number = 487
1361                    ; bind _adcs1 = _adcon1@5
1362 0000009f = _adcs1___byte equ _adcon1
1363 00000005 = _adcs1___bit equ 5
1364                    ; line_number = 488
1365                    ; bind _adcs0 = _adcon1@4
1366 0000009f = _adcs0___byte equ _adcon1
1367 00000004 = _adcs0___bit equ 4
1368            
1369                    ; # Data Bank 2 (0x100 - 0x17f):
1370            
1371                    ; buffer = 'irdistance2'
1372                    ; line_number = 7
1373                    ; library _pic16f688 exited
1374            
1375                    ; # The system is running at 20MHz:
1376                    ; line_number = 10
1377                    ; library clock20mhz entered
1378                    ; # Copyright (c) 2004 by Wayne C. Gramlich
1379                    ; # All rights reserved.
1380            
1381                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1382                    ; # and {clocks_per_instruction}.
1383            
1384                    ; # Define processor constants:
1385                    ; buffer = 'clock20mhz'
1386                    ; line_number = 9
1387                    ; constant clock_rate = 20000000
1388 01312d00 = clock_rate equ 20000000
1389                    ; line_number = 10
1390                    ; constant clocks_per_instruction = 4
1391 00000004 = clocks_per_instruction equ 4
1392                    ; line_number = 11
1393                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1394 004c4b40 = instruction_rate equ 5000000
1395            
1396            
1397                    ; buffer = 'irdistance2'
1398                    ; line_number = 10
1399                    ; library clock20mhz exited
1400                    ; # A microsecond takes 4 cycles at 20MHz:
1401                    ; line_number = 12
1402                    ; constant microsecond = 5
1403 00000005 = microsecond equ 5
1404            
1405                    ; # The {_eusart} library defines some baud rate generator constants:
1406                    ; line_number = 15
1407                    ; constant _eusart_clock = clock_rate
1408 01312d00 = _eusart_clock equ 20000000
1409                    ; line_number = 16
1410                    ; constant _eusart_factor = 4
1411 00000004 = _eusart_factor equ 4
1412                    ; line_number = 17
1413                    ; library _eusart entered
1414            
1415                    ; # Copyright (c) 2005 by Wayne C. Gramlich
1416                    ; # All rights reserved.
1417            
1418                    ; # This library contains a bunch of definitions for the Enhanced Universal
1419                    ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available
1420                    ; # on many of the PIC microcontrollers.
1421            
1422                    ; # In order to use this module you have to get two constants defined
1423                    ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}.
1424                    ; # {_eusart_clock} should be set to the frequency oscillator for the chip.
1425                    ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether
1426                    ; # the {_brg16} and {_brgh} bits are set.  Use the table below to select:
1427                    ; #
1428                    ; #        _{brg16}	{_brgh}		_{eusart_factor}
1429                    ; #	    0		   0		      64
1430                    ; #	    0		   1		      16
1431                    ; #	    1		   0		      16
1432                    ; #	    1		   1		       4
1433            
1434                    ; # 2400 baud:
1435                    ; buffer = '_eusart'
1436                    ; line_number = 23
1437                    ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1
1438 00000822 = _eusart_2400 equ 2082
1439                    ; line_number = 24
1440                    ; constant _eusart_2400_low = _eusart_2400 & 0xff
1441 00000022 = _eusart_2400_low equ 34
1442                    ; line_number = 25
1443                    ; constant _eusart_2400_high = _eusart_2400 >> 8
1444 00000008 = _eusart_2400_high equ 8
1445                    ; line_number = 26
1446                    ; constant _eusart_2400_index = 0
1447 00000000 = _eusart_2400_index equ 0
1448                    ; # 4800 baud:
1449                    ; line_number = 28
1450                    ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1
1451 00000410 = _eusart_4800 equ 1040
1452                    ; line_number = 29
1453                    ; constant _eusart_4800_low = _eusart_4800 & 0xff
1454 00000010 = _eusart_4800_low equ 16
1455                    ; line_number = 30
1456                    ; constant _eusart_4800_high = _eusart_4800 >> 8
1457 00000004 = _eusart_4800_high equ 4
1458                    ; line_number = 31
1459                    ; constant _eusart_4800_index = 1
1460 00000001 = _eusart_4800_index equ 1
1461                    ; # 9600 baud:
1462                    ; line_number = 33
1463                    ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1
1464 00000207 = _eusart_9600 equ 519
1465                    ; line_number = 34
1466                    ; constant _eusart_9600_low = _eusart_9600 & 0xff
1467 00000007 = _eusart_9600_low equ 7
1468                    ; line_number = 35
1469                    ; constant _eusart_9600_high = _eusart_9600 >> 8
1470 00000002 = _eusart_9600_high equ 2
1471                    ; line_number = 36
1472                    ; constant _eusart_9600_index = 2
1473 00000002 = _eusart_9600_index equ 2
1474                    ; # 19200 baud:
1475                    ; line_number = 38
1476                    ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1
1477 00000103 = _eusart_19200 equ 259
1478                    ; line_number = 39
1479                    ; constant _eusart_19200_low = _eusart_19200 & 0xff
1480 00000003 = _eusart_19200_low equ 3
1481                    ; line_number = 40
1482                    ; constant _eusart_19200_high = _eusart_19200 >> 8
1483 00000001 = _eusart_19200_high equ 1
1484                    ; line_number = 41
1485                    ; constant _eusart_19200_index = 3
1486 00000003 = _eusart_19200_index equ 3
1487                    ; # 38400 baud:
1488                    ; line_number = 43
1489                    ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1
1490 00000081 = _eusart_38400 equ 129
1491                    ; line_number = 44
1492                    ; constant _eusart_38400_low = _eusart_38400 & 0xff
1493 00000081 = _eusart_38400_low equ 129
1494                    ; line_number = 45
1495                    ; constant _eusart_38400_high = _eusart_38400 >> 8
1496 00000000 = _eusart_38400_high equ 0
1497                    ; line_number = 46
1498                    ; constant _eusart_38400_index = 4
1499 00000004 = _eusart_38400_index equ 4
1500                    ; # 57600 baud:
1501                    ; line_number = 48
1502                    ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1
1503 00000055 = _eusart_57600 equ 85
1504                    ; line_number = 49
1505                    ; constant _eusart_57600_low = _eusart_57600 & 0xff
1506 00000055 = _eusart_57600_low equ 85
1507                    ; line_number = 50
1508                    ; constant _eusart_57600_high = _eusart_57600 >> 8
1509 00000000 = _eusart_57600_high equ 0
1510                    ; line_number = 51
1511                    ; constant _eusart_57600_index = 5
1512 00000005 = _eusart_57600_index equ 5
1513                    ; # 115200 baud:
1514                    ; line_number = 53
1515                    ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1
1516 0000002a = _eusart_115200 equ 42
1517                    ; line_number = 54
1518                    ; constant _eusart_115200_low = _eusart_115200 & 0xff
1519 0000002a = _eusart_115200_low equ 42
1520                    ; line_number = 55
1521                    ; constant _eusart_115200_high = _eusart_115200 >> 8
1522 00000000 = _eusart_115200_high equ 0
1523                    ; line_number = 56
1524                    ; constant _eusart_115200_index = 6
1525 00000006 = _eusart_115200_index equ 6
1526                    ; # 203400 baud:
1527                    ; line_number = 58
1528                    ; constant _eusart_230400 = (_eusart_clock / (230400 * _eusart_factor)) - 1
1529 00000014 = _eusart_230400 equ 20
1530                    ; line_number = 59
1531                    ; constant _eusart_230400_low = _eusart_230400 & 0xff
1532 00000014 = _eusart_230400_low equ 20
1533                    ; line_number = 60
1534                    ; constant _eusart_230400_high = _eusart_230400 >> 8
1535 00000000 = _eusart_230400_high equ 0
1536                    ; line_number = 61
1537                    ; constant _eusart_230400_index = 7
1538 00000007 = _eusart_230400_index equ 7
1539                    ; # 406800 baud:
1540                    ; line_number = 63
1541                    ; constant _eusart_406800 = (_eusart_clock / (406800 * _eusart_factor)) - 1
1542 0000000b = _eusart_406800 equ 11
1543                    ; line_number = 64
1544                    ; constant _eusart_406800_low = _eusart_406800 & 0xff
1545 0000000b = _eusart_406800_low equ 11
1546                    ; line_number = 65
1547                    ; constant _eusart_406800_high = _eusart_406800 >> 8
1548 00000000 = _eusart_406800_high equ 0
1549                    ; line_number = 66
1550                    ; constant _eusart_406800_index = 8
1551 00000008 = _eusart_406800_index equ 8
1552                    ; # 500000 baud:
1553                    ; line_number = 68
1554                    ; constant _eusart_500000 = (_eusart_clock / (500000 * _eusart_factor)) - 1
1555 00000009 = _eusart_500000 equ 9
1556                    ; line_number = 69
1557                    ; constant _eusart_500000_low = _eusart_500000 & 0xff
1558 00000009 = _eusart_500000_low equ 9
1559                    ; line_number = 70
1560                    ; constant _eusart_500000_high = _eusart_500000 >> 8
1561 00000000 = _eusart_500000_high equ 0
1562                    ; line_number = 71
1563                    ; constant _eusart_500000_index = 8
1564 00000008 = _eusart_500000_index equ 8
1565                    ; # 62500 baud:
1566                    ; line_number = 73
1567                    ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1
1568 00000007 = _eusart_625000 equ 7
1569                    ; line_number = 74
1570                    ; constant _eusart_625000_low = _eusart_625000 & 0xff
1571 00000007 = _eusart_625000_low equ 7
1572                    ; line_number = 75
1573                    ; constant _eusart_625000_high = _eusart_625000 >> 8
1574 00000000 = _eusart_625000_high equ 0
1575                    ; line_number = 76
1576                    ; constant _eusart_625000_index = 9
1577 00000009 = _eusart_625000_index equ 9
1578                    ; # 833333 baud:
1579                    ; line_number = 78
1580                    ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1
1581 00000005 = _eusart_833333 equ 5
1582                    ; line_number = 79
1583                    ; constant _eusart_833333_low = _eusart_833333 & 0xff
1584 00000005 = _eusart_833333_low equ 5
1585                    ; line_number = 80
1586                    ; constant _eusart_833333_high = _eusart_833333 >> 8
1587 00000000 = _eusart_833333_high equ 0
1588                    ; line_number = 81
1589                    ; constant _eusart_833333_index = 10
1590 0000000a = _eusart_833333_index equ 10
1591                    ; # 1000000 baud (1MHz):
1592                    ; line_number = 83
1593                    ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1
1594 00000004 = _eusart_1000000 equ 4
1595                    ; line_number = 84
1596                    ; constant _eusart_1000000_low = _eusart_1000000 & 0xff
1597 00000004 = _eusart_1000000_low equ 4
1598                    ; line_number = 85
1599                    ; constant _eusart_1000000_high = _eusart_1000000 >> 8
1600 00000000 = _eusart_1000000_high equ 0
1601                    ; line_number = 86
1602                    ; constant _eusart_1000000_index = 11
1603 0000000b = _eusart_1000000_index equ 11
1604            
1605                    ; buffer = 'irdistance2'
1606                    ; line_number = 17
1607                    ; library _eusart exited
1608            
1609                    ; # The library of bus access routines for use by a PIC16F688.
1610                    ; line_number = 20
1611                    ; library rb2bus_pic16f688 entered
1612            
1613                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1614                    ; # All rights reserved.
1615            
1616                    ; # This module provides some procedures for accessing a RoboBricks2
1617                    ; # bus via a UART.  It is speicialized for the PIC16F688.
1618                    ; #
1619                    ; # It defines the following procedure:
1620                    ; #
1621                    ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
1622                    ; #                                for bus access.
1623            
1624                    ; # All other bus access procedures are defined in the {rb2bus} library
1625                    ; # which is accessed below:
1626                    ; buffer = 'rb2bus_pic16f688'
1627                    ; line_number = 16
1628                    ; library rb2bus entered
1629            
1630                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1631                    ; # All rights reserved.
1632            
1633                    ; # This module provides some procedures for accessing a RoboBricks2
1634                    ; # bus via a UART.
1635                    ; #
1636                    ; # This procedure defines the following procedures:
1637                    ; #
1638                    ; # {rb2bus_select_wait}  This procedure waits for the module to become selected
1639                    ; # {rb2bus_deselect}     This procedure causes this module to be deselected.
1640                    ; # {rb2bus_byte_get}     This procedure will get a byte form the bus.
1641                    ; # {rb2bus_byte_put}     This procedure will send a byte to the bus.
1642                    ; #
1643                    ; # The global variable {rb2bus_error} is set to 1 whenever the procedures
1644                    ; # feel like there is a command decoding error.
1645                    ; #
1646                    ; # The way to use these procedures is quite as follows:
1647                    ; #
1648                    ; #    # Comamnd byte variable:
1649                    ; #    local command byte
1650                    ; #
1651                    ; #    # Other initialize code goes here:
1652                    ; #
1653                    ; #    # Process commands from bus master:
1654                    ; #    loop_forever
1655                    ; #        rb2bus_error := _true
1656                    ; #	 while rb2bus_error
1657                    ; #	     call rb2bus_select_wait()
1658                    ; #	     command := rb2bus_byte_get()
1659                    ; #
1660                    ; #        # Decode command:
1661                    ; #	 switch command >> 6
1662                    ; #	   ...
1663                    ; #             case 5:
1664                    ; #	        # 0000 0101 (Foo command):
1665                    ; #	          if !rb2bus_error
1666                    ; #		      # Do foo command:
1667                    ; #
1668                    ; # The key concept behind these procedures is to make command
1669                    ; # decoding for the slave module easy.  If the slave module
1670                    ; # is in the middle of command decoding and the master suddenly
1671                    ; # sends out a module select command, we need to gracefully recover
1672                    ; # from the problem.  A command should only be executed if
1673                    ; # {rb2bus_error} is not set.  If {rb2bus_error} is set, we want
1674                    ; # to gracefully get back to the beginning of the loop without
1675                    ; # doing any damage.  Once {rb2bus_error} is set, all calls to
1676                    ; # {rb2bus_byte_get} return 0 and all calls to {rb2bus_byte_put}
1677                    ; # do nothing.  At the beginning of the loop, {rb2bus_error} is
1678                    ; # cleared by the {rb2bus_select_wait}() procedure and we have
1679                    ; # recovered from the situation.
1680            
1681                    ; buffer = 'rb2bus'
1682                    ; line_number = 54
1683                    ; library rb2_constants entered
1684            
1685                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
1686                    ; # All rights reserved.
1687            
1688                    ; buffer = 'rb2_constants'
1689                    ; line_number = 6
1690                    ; constant rb2_ok = 0xa5
1691 000000a5 = rb2_ok equ 165
1692            
1693                    ; line_number = 8
1694                    ; constant rb2_common_address_set = 0xfc
1695 000000fc = rb2_common_address_set equ 252
1696                    ; line_number = 9
1697                    ; constant rb2_common_id_next = 0xfd
1698 000000fd = rb2_common_id_next equ 253
1699                    ; line_number = 10
1700                    ; constant rb2_common_id_start = 0xfe
1701 000000fe = rb2_common_id_start equ 254
1702                    ; line_number = 11
1703                    ; constant rb2_common_deselect = 0xff
1704 000000ff = rb2_common_deselect equ 255
1705            
1706                    ; line_number = 13
1707                    ; constant rb2_laser1_address = 1
1708 00000001 = rb2_laser1_address equ 1
1709            
1710                    ; line_number = 15
1711                    ; constant rb2_minimotor2_address = 2
1712 00000002 = rb2_minimotor2_address equ 2
1713                    ; line_number = 16
1714                    ; constant rb2_midimotor2_address = 3
1715 00000003 = rb2_midimotor2_address equ 3
1716                    ; line_number = 17
1717                    ; constant rb2_motor0_speed_get = 0
1718 00000000 = rb2_motor0_speed_get equ 0
1719                    ; line_number = 18
1720                    ; constant rb2_motor0_speed_set = 1
1721 00000001 = rb2_motor0_speed_set equ 1
1722                    ; line_number = 19
1723                    ; constant rb2_motor1_speed_get = 2
1724 00000002 = rb2_motor1_speed_get equ 2
1725                    ; line_number = 20
1726                    ; constant rb2_motor1_speed_set = 3
1727 00000003 = rb2_motor1_speed_set equ 3
1728                    ; line_number = 21
1729                    ; constant rb2_duty_cycle_get = 4
1730 00000004 = rb2_duty_cycle_get equ 4
1731                    ; line_number = 22
1732                    ; constant rb2_duty_cycle_set = 8
1733 00000008 = rb2_duty_cycle_set equ 8
1734            
1735                    ; line_number = 24
1736                    ; constant rb2_irdistance2_address = 4
1737 00000004 = rb2_irdistance2_address equ 4
1738                    ; line_number = 25
1739                    ; constant rb2_irdistance2_raw0_get = 0
1740 00000000 = rb2_irdistance2_raw0_get equ 0
1741                    ; line_number = 26
1742                    ; constant rb2_irdistance2_raw1_get = 1
1743 00000001 = rb2_irdistance2_raw1_get equ 1
1744                    ; line_number = 27
1745                    ; constant rb2_irdistance2_smooth0_get = 2
1746 00000002 = rb2_irdistance2_smooth0_get equ 2
1747                    ; line_number = 28
1748                    ; constant rb2_irdistance2_smooth1_get = 3
1749 00000003 = rb2_irdistance2_smooth1_get equ 3
1750                    ; line_number = 29
1751                    ; constant rb2_irdistance2_linear0_get = 4
1752 00000004 = rb2_irdistance2_linear0_get equ 4
1753                    ; line_number = 30
1754                    ; constant rb2_irdistance2_linear1_get = 6
1755 00000006 = rb2_irdistance2_linear1_get equ 6
1756            
1757                    ; line_number = 32
1758                    ; constant rb2_shaft2_address = 5
1759 00000005 = rb2_shaft2_address equ 5
1760                    ; line_number = 33
1761                    ; constant rb2_shaft2_count_latch = 0
1762 00000000 = rb2_shaft2_count_latch equ 0
1763                    ; line_number = 34
1764                    ; constant rb2_shaft2_count_clear = 1
1765 00000001 = rb2_shaft2_count_clear equ 1
1766                    ; line_number = 35
1767                    ; constant rb2_shaft2_shaft0_high_get = 2
1768 00000002 = rb2_shaft2_shaft0_high_get equ 2
1769                    ; line_number = 36
1770                    ; constant rb2_shaft2_shaft1_high_get = 3
1771 00000003 = rb2_shaft2_shaft1_high_get equ 3
1772                    ; line_number = 37
1773                    ; constant rb2_shaft2_continue_get = 4
1774 00000004 = rb2_shaft2_continue_get equ 4
1775                    ; line_number = 38
1776                    ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
1777 00000004 = rb2_shaft2_shaft0_low_get equ 4
1778                    ; line_number = 39
1779                    ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
1780 00000004 = rb2_shaft2_shaft1_low_get equ 4
1781                    ; line_number = 40
1782                    ; constant rb2_shaft2_x_get = 0x10
1783 00000010 = rb2_shaft2_x_get equ 16
1784                    ; line_number = 41
1785                    ; constant rb2_shaft2_y_get = 0x11
1786 00000011 = rb2_shaft2_y_get equ 17
1787                    ; line_number = 42
1788                    ; constant rb2_shaft2_bearing16_get = 0x12
1789 00000012 = rb2_shaft2_bearing16_get equ 18
1790                    ; line_number = 43
1791                    ; constant rb2_shaft2_bearing8_get = 0x13
1792 00000013 = rb2_shaft2_bearing8_get equ 19
1793                    ; line_number = 44
1794                    ; constant rb2_shaft2_target_x_get = 0x14
1795 00000014 = rb2_shaft2_target_x_get equ 20
1796                    ; line_number = 45
1797                    ; constant rb2_shaft2_target_y_get = 0x15
1798 00000015 = rb2_shaft2_target_y_get equ 21
1799                    ; line_number = 46
1800                    ; constant rb2_shaft2_target_bearing16_get = 0x16
1801 00000016 = rb2_shaft2_target_bearing16_get equ 22
1802                    ; line_number = 47
1803                    ; constant rb2_shaft2_target_bearing8_get = 0x17
1804 00000017 = rb2_shaft2_target_bearing8_get equ 23
1805                    ; line_number = 48
1806                    ; constant rb2_shaft2_target_distance_get = 0x18
1807 00000018 = rb2_shaft2_target_distance_get equ 24
1808                    ; line_number = 49
1809                    ; constant rb2_shaft2_wheel_spacing_get = 0x19
1810 00000019 = rb2_shaft2_wheel_spacing_get equ 25
1811                    ; line_number = 50
1812                    ; constant rb2_shaft2_wheel_ticks_get = 0x1a
1813 0000001a = rb2_shaft2_wheel_ticks_get equ 26
1814                    ; line_number = 51
1815                    ; constant rb2_shaft2_wheel_diameter_get = 0x1b
1816 0000001b = rb2_shaft2_wheel_diameter_get equ 27
1817                    ; line_number = 52
1818                    ; constant rb2_shaft2_x_set = 0x20
1819 00000020 = rb2_shaft2_x_set equ 32
1820                    ; line_number = 53
1821                    ; constant rb2_shaft2_y_set = 0x21
1822 00000021 = rb2_shaft2_y_set equ 33
1823                    ; line_number = 54
1824                    ; constant rb2_shaft2_bearing16_set = 0x22
1825 00000022 = rb2_shaft2_bearing16_set equ 34
1826                    ; line_number = 55
1827                    ; constant rb2_shaft2_navigation_latch = 0x23
1828 00000023 = rb2_shaft2_navigation_latch equ 35
1829                    ; line_number = 56
1830                    ; constant rb2_shaft2_target_x_set = 0x24
1831 00000024 = rb2_shaft2_target_x_set equ 36
1832                    ; line_number = 57
1833                    ; constant rb2_shaft2_target_y_set = 0x25
1834 00000025 = rb2_shaft2_target_y_set equ 37
1835                    ; line_number = 58
1836                    ; constant rb2_shaft2_wheel_spacing_set = 0x29
1837 00000029 = rb2_shaft2_wheel_spacing_set equ 41
1838                    ; line_number = 59
1839                    ; constant rb2_shaft2_wheel_ticks_set = 0x2a
1840 0000002a = rb2_shaft2_wheel_ticks_set equ 42
1841                    ; line_number = 60
1842                    ; constant rb2_shaft2_wheel_diameter_set = 0x2b
1843 0000002b = rb2_shaft2_wheel_diameter_set equ 43
1844            
1845            
1846                    ; line_number = 63
1847                    ; constant rb2_orient5_address = 6
1848 00000006 = rb2_orient5_address equ 6
1849            
1850                    ; line_number = 65
1851                    ; constant rb2_compass8_address = 7
1852 00000007 = rb2_compass8_address equ 7
1853            
1854                    ; line_number = 67
1855                    ; constant rb2_io8_address = 8
1856 00000008 = rb2_io8_address equ 8
1857                    ; line_number = 68
1858                    ; constant rb2_io8_digital8_get = 0
1859 00000000 = rb2_io8_digital8_get equ 0
1860                    ; line_number = 69
1861                    ; constant rb2_io8_digital8_set = 1
1862 00000001 = rb2_io8_digital8_set equ 1
1863                    ; line_number = 70
1864                    ; constant rb2_io8_direction_get = 2
1865 00000002 = rb2_io8_direction_get equ 2
1866                    ; line_number = 71
1867                    ; constant rb2_io8_direction_set = 3
1868 00000003 = rb2_io8_direction_set equ 3
1869                    ; line_number = 72
1870                    ; constant rb2_io8_analog_mask_get = 4
1871 00000004 = rb2_io8_analog_mask_get equ 4
1872                    ; line_number = 73
1873                    ; constant rb2_io8_analog_mask_set = 5
1874 00000005 = rb2_io8_analog_mask_set equ 5
1875                    ; line_number = 74
1876                    ; constant rb2_io8_analog8_get = 0x10
1877 00000010 = rb2_io8_analog8_get equ 16
1878                    ; line_number = 75
1879                    ; constant rb2_io8_analog10_get = 0x18
1880 00000018 = rb2_io8_analog10_get equ 24
1881                    ; line_number = 76
1882                    ; constant rb2_low_set = 0x20
1883 00000020 = rb2_low_set equ 32
1884                    ; line_number = 77
1885                    ; constant rb2_high_set = 0x30
1886 00000030 = rb2_high_set equ 48
1887            
1888                    ; line_number = 79
1889                    ; constant rb2_sonar2_address = 9
1890 00000009 = rb2_sonar2_address equ 9
1891            
1892                    ; line_number = 81
1893                    ; constant rb2_voice1_address = 10
1894 0000000a = rb2_voice1_address equ 10
1895            
1896                    ; line_number = 83
1897                    ; constant rb2_servo4_address = 11
1898 0000000b = rb2_servo4_address equ 11
1899                    ; line_number = 84
1900                    ; constant rb2_servo4_servo0 = 0
1901 00000000 = rb2_servo4_servo0 equ 0
1902                    ; line_number = 85
1903                    ; constant rb2_servo4_servo1 = 1
1904 00000001 = rb2_servo4_servo1 equ 1
1905                    ; line_number = 86
1906                    ; constant rb2_servo4_servo2 = 2
1907 00000002 = rb2_servo4_servo2 equ 2
1908                    ; line_number = 87
1909                    ; constant rb2_servo4_servo3 = 3
1910 00000003 = rb2_servo4_servo3 equ 3
1911                    ; line_number = 88
1912                    ; constant rb2_servo4_quick_set = 0
1913 00000000 = rb2_servo4_quick_set equ 0
1914                    ; line_number = 89
1915                    ; constant rb2_servo4_quick_low = 0
1916 00000000 = rb2_servo4_quick_low equ 0
1917                    ; line_number = 90
1918                    ; constant rb2_servo4_quick_center = 40
1919 00000028 = rb2_servo4_quick_center equ 40
1920                    ; line_number = 91
1921                    ; constant rb2_servo4_quick_high = 0x7c
1922 0000007c = rb2_servo4_quick_high equ 124
1923                    ; line_number = 92
1924                    ; constant rb2_servo4_high_low_set = 0x80
1925 00000080 = rb2_servo4_high_low_set equ 128
1926                    ; line_number = 93
1927                    ; constant rb2_servo4_short_high_low_set = 0x84
1928 00000084 = rb2_servo4_short_high_low_set equ 132
1929                    ; line_number = 94
1930                    ; constant rb2_servo4_high_set = 0x88
1931 00000088 = rb2_servo4_high_set equ 136
1932                    ; line_number = 95
1933                    ; constant rb2_servo4_low_set = 0x8c
1934 0000008c = rb2_servo4_low_set equ 140
1935                    ; line_number = 96
1936                    ; constant rb2_servo4_enables_set = 0x90
1937 00000090 = rb2_servo4_enables_set equ 144
1938                    ; line_number = 97
1939                    ; constant rb2_servo4_enable0 = 1
1940 00000001 = rb2_servo4_enable0 equ 1
1941                    ; line_number = 98
1942                    ; constant rb2_servo4_enable1 = 2
1943 00000002 = rb2_servo4_enable1 equ 2
1944                    ; line_number = 99
1945                    ; constant rb2_servo4_enable2 = 4
1946 00000004 = rb2_servo4_enable2 equ 4
1947                    ; line_number = 100
1948                    ; constant rb2_servo4_enable3 = 8
1949 00000008 = rb2_servo4_enable3 equ 8
1950                    ; line_number = 101
1951                    ; constant rb2_servo4_enable_all = 0xf
1952 0000000f = rb2_servo4_enable_all equ 15
1953                    ; line_number = 102
1954                    ; constant rb2_servo4_enable_none = 0
1955 00000000 = rb2_servo4_enable_none equ 0
1956                    ; line_number = 103
1957                    ; constant rb2_servo4_high_get = 0xa0
1958 000000a0 = rb2_servo4_high_get equ 160
1959                    ; line_number = 104
1960                    ; constant rb2_servo4_low_get = 0xa4
1961 000000a4 = rb2_servo4_low_get equ 164
1962                    ; line_number = 105
1963                    ; constant rb2_servo4_enables_get = 0xa8
1964 000000a8 = rb2_servo4_enables_get equ 168
1965            
1966                    ; line_number = 107
1967                    ; constant rb2_controller28_address = 28
1968 0000001c = rb2_controller28_address equ 28
1969            
1970                    ; line_number = 109
1971                    ; constant rb2_lcd32_address = 32
1972 00000020 = rb2_lcd32_address equ 32
1973                    ; line_number = 110
1974                    ; constant rb2_lcd32_new_line = 0xa
1975 0000000a = rb2_lcd32_new_line equ 10
1976                    ; line_number = 111
1977                    ; constant rb2_lcd32_form_feed = 0xc
1978 0000000c = rb2_lcd32_form_feed equ 12
1979                    ; line_number = 112
1980                    ; constant rb2_lcd32_carriage_return = 0xd
1981 0000000d = rb2_lcd32_carriage_return equ 13
1982                    ; line_number = 113
1983                    ; constant rb2_lcd32_column_set = 0x20
1984 00000020 = rb2_lcd32_column_set equ 32
1985            
1986            
1987                    ; buffer = 'rb2bus'
1988                    ; line_number = 54
1989                    ; library rb2_constants exited
1990                    ; line_number = 55
1991                    ; library rb2bus_globals entered
1992            
1993                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1994                    ; # All rights reserved.
1995            
1996                    ; # These are the global variables used by both the {rb2bus} and
1997                    ; # the various {rb2bus_picXXXX} libraries.  Poll based firmware
1998                    ; # uses both libraries, whereas interrupt driven software only
1999                    ; # uses the {rb2bus_picXXX} libraries.
2000            
2001                    ; buffer = 'rb2bus_globals'
2002                    ; line_number = 11
2003                    ; global rb2bus_selected bit	# 
2004 0000006f = rb2bus_selected___byte equ globals___0+79
2005 00000000 = rb2bus_selected___bit equ 0
2006                    ; line_number = 12
2007                    ; global rb2bus_error bit		# Global error bit
2008 0000006f = rb2bus_error___byte equ globals___0+79
2009 00000001 = rb2bus_error___bit equ 1
2010                    ; line_number = 13
2011                    ; global rb2bus_address byte	# Bus address to respond to
2012 00000020 = rb2bus_address equ globals___0
2013                    ; line_number = 14
2014                    ; global rb2bus_index byte	# Index into id information
2015 00000021 = rb2bus_index equ globals___0+1
2016            
2017            
2018                    ; buffer = 'rb2bus'
2019                    ; line_number = 55
2020                    ; library rb2bus_globals exited
2021            
2022                    ; Delaying code generation for procedure  rb2bus_select_wait
2023                    ; Delaying code generation for procedure  rb2bus_deselect
2024                    ; Delaying code generation for procedure  rb2bus_byte_get
2025                    ; Delaying code generation for procedure  rb2bus_byte_put
2026                    ; Delaying code generation for procedure  rb2bus_command
2027            
2028                    ; buffer = 'rb2bus_pic16f688'
2029                    ; line_number = 16
2030                    ; library rb2bus exited
2031            
2032                    ; Delaying code generation for procedure  rb2bus_initialize
2033                    ; line_number = 62
2034                    ; constant rb2bus_eedata_address = 0xfe
2035 000000fe = rb2bus_eedata_address equ 254
2036            
2037                    ; Delaying code generation for procedure  rb2bus_eedata_read
2038                    ; Delaying code generation for procedure  rb2bus_eedata_write
2039            
2040                    ; buffer = 'irdistance2'
2041                    ; line_number = 20
2042                    ; library rb2bus_pic16f688 exited
2043            
2044                    ; line_number = 23
2045                    ; library _signed16 entered
2046            
2047                    ; # Copyright (c) 2007 by Wayne C. Gramlich.
2048                    ; # All rights reserved.
2049            
2050                    ; # This library implements the following procedures for general use
2051                    ; # by users:
2052                    ; #
2053                    ; #    _signed16_from_byte(x)		return signed16(x) where x is a byte
2054                    ; #    _signed16_from_byte2(x,y)		return signed16((x<<8)|y)
2055                    ; #					where x,y are bytes
2056                    ; #    _signed16_to_byte(x)		return x as an 8-bit byte
2057                    ; #    _signed16_byte_high(x)		return bigh byte of x
2058                    ; #    _signed16_byte_low(x))		return low byte of x
2059                    ; #
2060                    ; # The following additional procedures are implemented for use by the
2061                    ; # compiler.
2062                    ; #
2063                    ; #    _signed16_pointer_load()		A := M[W]
2064                    ; #    _signed16_pointer_add()		A := M[W]
2065                    ; #    _signed16_pointer_divide()		A := A / M[W]
2066                    ; #    _signed16_pointer_multiply()	A := A * M[W]
2067                    ; #    _signed16_pointer_subtract()	A := A - M[W]
2068                    ; #    _signed16_pointer_store()		M[W] := A
2069                    ; #    _signed16_pointer_negate()		A := -A
2070                    ; #    _signed16_pointer_swap()		A <=> M[W]
2071                    ; #    _signed16_equals()			_z := A = 0.0
2072                    ; #    _signed16_not_equal()		_z := A != 0.0
2073                    ; #    _signed16_less_than()		_z := if A < 0.0
2074                    ; #    _signed16_less_than_or_equal()	_z := A <= 0.0
2075                    ; #    _signed16_greater_than()		_z := A > 0.0
2076                    ; #    _signed16_greater_than_or_equal()	_z := A >= 0.0
2077                    ; #
2078                    ; # All of the procedures constants and labels in this library are
2079                    ; # prefixed by "_signed16_".
2080                    ; #
2081                    ; # For the uCL compiler, signed16's are required to be aligned on even
2082                    ; # memory addresses.  Since the PIC16F* processor can not access more
2083                    ; # 512 bytes of RAM, this means that a pointer to signed16 can be represented
2084                    ; # in 8-bits as (address>>1).  (Pretty, slick!)
2085            
2086                    ; # FIXME: Make sure that none of the procedures allocate any argument storage!!!
2087            
2088                    ; buffer = '_signed16'
2089                    ; line_number = 44
2090                    ; global _signed16_a0 byte	# A Register MSB
2091 000000a0 = _signed16_a0 equ globals___1
2092                    ; line_number = 45
2093                    ; global _signed16_a1 byte	# A Register LSB
2094 000000a1 = _signed16_a1 equ globals___1+1
2095                    ; line_number = 46
2096                    ; global _signed16_b0 byte	# B Register MSB
2097 000000a2 = _signed16_b0 equ globals___1+2
2098                    ; line_number = 47
2099                    ; global _signed16_b1 byte	# B Register LSB
2100 000000a3 = _signed16_b1 equ globals___1+3
2101                    ; line_number = 48
2102                    ; global _signed16_result3 byte	# Mulitply result MSB
2103 000000a4 = _signed16_result3 equ globals___1+4
2104                    ; line_number = 49
2105                    ; global _signed16_result2 byte
2106 000000a5 = _signed16_result2 equ globals___1+5
2107                    ; line_number = 50
2108                    ; global _signed16_result1 byte
2109 000000a6 = _signed16_result1 equ globals___1+6
2110                    ; line_number = 51
2111                    ; global _signed16_result0 byte	# Mulitply resultLSB
2112 000000a7 = _signed16_result0 equ globals___1+7
2113                    ; line_number = 52
2114                    ; global _signed16_neg_flag byte	# Negative flag
2115 000000a8 = _signed16_neg_flag equ globals___1+8
2116                    ; line_number = 53
2117                    ; global _signed16_count byte	# Loop counter for divide
2118 000000a9 = _signed16_count equ globals___1+9
2119            
2120                    ; # Bindings for 
2121                    ; line_number = 56
2122                    ; bind _signed16_rem0 = _signed16_result2
2123 000000a5 = _signed16_rem0 equ globals___1+5
2124                    ; line_number = 57
2125                    ; bind _signed16_rem1 = _signed16_result3
2126 000000a4 = _signed16_rem1 equ globals___1+4
2127                    ; line_number = 58
2128                    ; bind _signed16_temp0 = _signed16_result0
2129 000000a7 = _signed16_temp0 equ globals___1+7
2130                    ; line_number = 59
2131                    ; bind _signed16_temp1 = _signed16_result1
2132 000000a6 = _signed16_temp1 equ globals___1+6
2133                    ; line_number = 60
2134                    ; bind _signed16_sign = _signed16_neg_flag
2135 000000a8 = _signed16_sign equ globals___1+8
2136            
2137                    ; Delaying code generation for procedure  _signed16_pointer_load
2138                    ; Delaying code generation for procedure  _signed16_pointer_add
2139                    ; Delaying code generation for procedure  _signed16_pointer_divide
2140                    ; Delaying code generation for procedure  _signed16_pointer_multiply
2141                    ; Delaying code generation for procedure  _signed16_pointer_subtract
2142                    ; Delaying code generation for procedure  _signed16_pointer_store
2143                    ; Delaying code generation for procedure  _signed16_negate
2144                    ; Delaying code generation for procedure  _signed16_pointer_swap
2145                    ; Delaying code generation for procedure  _signed16_from_byte
2146                    ; Delaying code generation for procedure  _signed16_from_byte2
2147                    ; Delaying code generation for procedure  _signed16_to_byte
2148                    ; Delaying code generation for procedure  _signed16_byte_high
2149                    ; Delaying code generation for procedure  _signed16_byte_low
2150                    ; Delaying code generation for procedure  _signed16_equals
2151                    ; Delaying code generation for procedure  _signed16_not_equal
2152                    ; Delaying code generation for procedure  _signed16_less_than
2153                    ; Delaying code generation for procedure  _signed16_less_than_or_equal
2154                    ; Delaying code generation for procedure  _signed16_greater_than
2155                    ; Delaying code generation for procedure  _signed16_greater_than_or_equal
2156                    ; #*******************************************************************
2157                    ; #                       Double Precision Division
2158                    ; #
2159                    ; #               ( Optimized for Code Size : Looped Code )
2160                    ; #
2161                    ; #*******************************************************************#
2162                    ; #   Division:
2163                    ; #	Input:
2164                    ; #	    Numeratator=_signed16_a<0:1>
2165                    ; #	    Denominator = _signed16_b<0:1>
2166                    ; #	Outputs:
2167                    ; #	    Quotiant = _signed16_a<0:1>
2168                    ; #	    Remainder in _signed16_rem<0:1>
2169                    ; #
2170                    ; #   Sequence:
2171                    ; #	(a) Load the Numerator in location _signed16_a<0:1> ( 16 bits )
2172                    ; #	(b) Load the Denominator in location _signed16_b<0:1> ( 16 bits )
2173                    ; #	(c) call _signed16_divide_raw
2174                    ; #	(d) The 16 bit quotiant is in location _signed16_a<0:1>
2175                    ; #	(e) The 16 bit remainder is in locations _signed16_rem<0:1>
2176            
2177                    ; Delaying code generation for procedure  _signed16_divide_raw
2178            
2179                    ; buffer = 'irdistance2'
2180                    ; line_number = 23
2181                    ; library _signed16 exited
2182            
2183                    ; # This module uses 20Hz crystal resonator; hence mode HS ocs. config.:
2184            
2185                    ; # Kludge to deal with the fact that RA4 is used as OSC2:
2186                    ; line_number = 29
2187                    ; constant io1_bit = 4
2188 00000004 = io1_bit equ 4
2189            
2190                    ; # All pins on this package are used except RA3.
2191                    ; line_number = 32
2192                    ; package pdip
2193                    ; line_number = 33
2194                    ; pin 1 = power_supply
2195                    ; line_number = 34
2196                    ;  pin 2 = osc1
2197                    ; line_number = 35
2198                    ;  pin 3 = osc2
2199                    ; line_number = 36
2200                    ;  pin 4 = ra3_nc, name=nc1
2201 00000005 = nc1___byte equ _porta
2202 00000003 = nc1___bit equ 3
2203                    ; line_number = 37
2204                    ;  pin 5 = rx, name=rx, bit=rx_bit
2205 00000007 = rx___byte equ _portc
2206 00000005 = rx___bit equ 5
2207 00000005 = rx_bit equ 5
2208                    ; line_number = 38
2209                    ;  pin 6 = tx, name=tx, bit=tx_bit
2210 00000007 = tx___byte equ _portc
2211 00000004 = tx___bit equ 4
2212 00000004 = tx_bit equ 4
2213                    ; line_number = 39
2214                    ;  pin 7 = rc3_nc
2215                    ; line_number = 40
2216                    ;  pin 8 = an6, name=in1
2217 00000007 = in1___byte equ _portc
2218 00000002 = in1___bit equ 2
2219                    ; line_number = 41
2220                    ;  pin 9 = an5, name=in0
2221 00000007 = in0___byte equ _portc
2222 00000001 = in0___bit equ 1
2223                    ; line_number = 42
2224                    ;  pin 10 = rc0_nc
2225                    ; line_number = 43
2226                    ;  pin 11 = ra2_nc
2227                    ; line_number = 44
2228                    ;  pin 12 = vref
2229                    ; line_number = 45
2230                    ;  pin 13 = ra0_nc
2231                    ; line_number = 46
2232                    ;  pin 14 = ground
2233            
2234                    ; line_number = 48
2235                    ; origin 0
2236   0000 :           org     0
2237            
2238                    ; line_number = 51
2239                    ; constant xxx = 30
2240 0000001e = xxx equ 30
2241                    ; line_number = 52
2242                    ; constant buffer_size = 8			# Rolling buffer size
2243 00000008 = buffer_size equ 8
2244                    ; line_number = 53
2245                    ; constant buffer_mask = buffer_size - 1		# Mask for buffer
2246 00000007 = buffer_mask equ 7
2247                    ; line_number = 54
2248                    ; global sensor0_high[buffer_size] array[byte]	# Sensor 0 MSB bytes
2249 0000002c = sensor0_high equ globals___0+12
2250                    ; line_number = 55
2251                    ; global sensor0_low[buffer_size] array[byte]	# Sensor 0 MSB bytes
2252 00000034 = sensor0_low equ globals___0+20
2253                    ; line_number = 56
2254                    ; global sensor1_high[buffer_size] array[byte]	# Sensor 0 MSB bytes
2255 0000003c = sensor1_high equ globals___0+28
2256                    ; line_number = 57
2257                    ; global sensor1_low[buffer_size] array[byte]	# Sensor 0 MSB bytes
2258 00000044 = sensor1_low equ globals___0+36
2259                    ; line_number = 58
2260                    ; global rolling_index byte			# Rolling index
2261 0000004c = rolling_index equ globals___0+44
2262                    ; line_number = 59
2263                    ; global state byte				# State index
2264 0000004d = state equ globals___0+45
2265                    ; line_number = 60
2266                    ; global adcon0_save byte				# Global value of _{adcon0}
2267 0000004e = adcon0_save equ globals___0+46
2268            
2269                    ; line_number = 62
2270                    ; global adc_lsbs[2] array[byte]
2271 0000004f = adc_lsbs equ globals___0+47
2272                    ; line_number = 63
2273                    ; global adc_msbs[2] array[byte]
2274 00000051 = adc_msbs equ globals___0+49
2275            
2276            
2277                    ; line_number = 67
2278                    ; global sensor0_map[8] array[byte]
2279 000000be = sensor0_map equ globals___1+30
2280                    ; line_number = 68
2281                    ; global sensor1_map[8] array[byte]
2282 000000c6 = sensor1_map equ globals___1+38
2283            
2284            
2285                    ; line_number = 72
2286                    ;info   72, 0
2287                    ; procedure main
2288   0000 :   main:
2289                    ; Initialize some registers
2290 0000 3041          movlw   65
2291 0001 009f          movwf   _adcon0
2292 0002 3062          movlw   98
2293 0003 1683          bsf     __rp0___byte, __rp0___bit
2294 0004 0091          movwf   _ansel
2295 0005 303f          movlw   63
2296 0006 0085          movwf   _trisa
2297 0007 303f          movlw   63
2298 0008 0087          movwf   _trisc
2299                    ; arguments_none
2300                    ; line_number = 74
2301                    ;  returns_nothing
2302            
2303                    ; # This procedure initializes everything and does command decoding.
2304            
2305                    ; line_number = 78
2306                    ;  local command byte
2307 00000053 = main__command equ globals___0+51
2308                    ; line_number = 79
2309                    ;  local channel byte
2310 00000054 = main__channel equ globals___0+52
2311                    ; line_number = 80
2312                    ;  local offset byte
2313 00000055 = main__offset equ globals___0+53
2314                    ; line_number = 81
2315                    ;  local result byte
2316 00000056 = main__result equ globals___0+54
2317                    ; line_number = 82
2318                    ;  local temp byte
2319 00000057 = main__temp equ globals___0+55
2320                    ; line_number = 83
2321                    ;  local maximum byte
2322 00000058 = main__maximum equ globals___0+56
2323                    ; line_number = 84
2324                    ;  local index byte
2325 00000059 = main__index equ globals___0+57
2326                    ; line_number = 85
2327                    ;  local xxx16 signed16
2328 0000005a = main__xxx16 equ globals___0+58
2329                    ; line_number = 86
2330                    ;  local numerator signed16
2331 0000005c = main__numerator equ globals___0+60
2332                    ; line_number = 87
2333                    ;  local denominator signed16
2334 0000005e = main__denominator equ globals___0+62
2335                    ; line_number = 88
2336                    ;  local high byte
2337 00000060 = main__high equ globals___0+64
2338                    ; line_number = 89
2339                    ;  local low byte
2340 00000061 = main__low equ globals___0+65
2341                    ; line_number = 90
2342                    ;  local value byte
2343 00000062 = main__value equ globals___0+66
2344                    ; line_number = 91
2345                    ;  local got_it bit
2346 0000006f = main__got_it___byte equ globals___0+79
2347 00000004 = main__got_it___bit equ 4
2348            
2349                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX)
2350                    ; line_number = 93
2351                    ;  call rb2bus_initialize(4)
2352                    ;info   93, 9
2353 0009 3004          movlw   4
2354 000a 1283          bcf     __rp0___byte, __rp0___bit
2355 000b 224b          call    rb2bus_initialize
2356            
2357                    ; # We are running at 16MHz.  We want Tad to be as close to 1.6uS
2358                    ; # as possible.  1/(16MHz/32) = 2uS which is about as close as
2359                    ; # we are going to get.  Thus, ADCS<2:0> = 010.
2360                    ; line_number = 98
2361                    ;  _adcon1 := 0x20
2362                    ;info   98, 12
2363 000c 3020          movlw   32
2364 000d 1683          bsf     __rp0___byte, __rp0___bit
2365 000e 009f          movwf   _adcon1
2366            
2367                    ; # A/D result is left justified (10-bits) in ADRESH::ADRESL
2368                    ; #_adcon0 := 0
2369                    ; #_adfm := _false
2370                    ; # Use 3 volt voltage reference:
2371                    ; #_vcfg := _true
2372                    ; # Turn on the A/D:
2373                    ; #_adon := _true
2374                    ; line_number = 107
2375                    ;  adcon0_save := _adcon0 & 0xe3
2376                    ;info   107, 15
2377 000f 30e3          movlw   227
2378 0010 1283          bcf     __rp0___byte, __rp0___bit
2379 0011 051f          andwf   _adcon0,w
2380 0012 00ce          movwf   adcon0_save
2381            
2382                    ; # A little more initialization:
2383                    ; line_number = 110
2384                    ;  state := 0
2385                    ;info   110, 19
2386 0013 01cd          clrf    state
2387                    ; line_number = 111
2388                    ;  rolling_index := 0
2389                    ;info   111, 20
2390 0014 01cc          clrf    rolling_index
2391                    ; # Set the PS<2:0>=6 (i.e 1:128 prescale) and PSA=0:
2392                    ; line_number = 113
2393                    ;  _option_reg := 6
2394                    ;info   113, 21
2395 0015 3006          movlw   6
2396 0016 1683          bsf     __rp0___byte, __rp0___bit
2397 0017 0081          movwf   _option_reg
2398                    ; line_number = 114
2399                    ;  _gie := _false
2400                    ;info   114, 24
2401 0018 138b          bcf     _gie___byte, _gie___bit
2402                    ; line_number = 115
2403                    ;  _tmr0 := 0
2404                    ;info   115, 25
2405 0019 1283          bcf     __rp0___byte, __rp0___bit
2406 001a 0181          clrf    _tmr0
2407                    ; line_number = 116
2408                    ;  _t0if := _false
2409                    ;info   116, 27
2410 001b 110b          bcf     _t0if___byte, _t0if___bit
2411            
2412                    ; line_number = 118
2413                    ;  xxx16 := _signed16_from_byte(xxx)
2414                    ;info   118, 28
2415 001c 301e          movlw   30
2416 001d 1683          bsf     __rp0___byte, __rp0___bit
2417 001e 2350          call    _signed16_from_byte
2418 001f 3059          movlw   _signed16_from_byte__0return>>1
2419 0020 229e          call    _signed16_pointer_load
2420 0021 302d          movlw   main__xxx16>>1
2421 0022 2329          call    _signed16_pointer_store
2422                    ; line_number = 119
2423                    ;  sensor0_map[0] := 0xd8
2424                    ;info   119, 35
2425 0023 30d8          movlw   216
2426 0024 00be          movwf   sensor0_map
2427                    ; line_number = 120
2428                    ;  sensor0_map[1] := 0x80
2429                    ;info   120, 37
2430 0025 3080          movlw   128
2431 0026 00bf          movwf   sensor0_map+1
2432                    ; line_number = 121
2433                    ;  sensor0_map[2] := 0x5b
2434                    ;info   121, 39
2435 0027 305b          movlw   91
2436 0028 00c0          movwf   sensor0_map+2
2437                    ; line_number = 122
2438                    ;  sensor0_map[3] := 0x47
2439                    ;info   122, 41
2440 0029 3047          movlw   71
2441 002a 00c1          movwf   sensor0_map+3
2442                    ; line_number = 123
2443                    ;  sensor0_map[4] := 0x3c
2444                    ;info   123, 43
2445 002b 303c          movlw   60
2446 002c 00c2          movwf   sensor0_map+4
2447                    ; line_number = 124
2448                    ;  sensor0_map[5] := 0x32
2449                    ;info   124, 45
2450 002d 3032          movlw   50
2451 002e 00c3          movwf   sensor0_map+5
2452                    ; line_number = 125
2453                    ;  sensor0_map[6] := 0x2a
2454                    ;info   125, 47
2455 002f 302a          movlw   42
2456 0030 00c4          movwf   sensor0_map+6
2457                    ; line_number = 126
2458                    ;  sensor0_map[7] := 0x22
2459                    ;info   126, 49
2460 0031 3022          movlw   34
2461 0032 00c5          movwf   sensor0_map+7
2462                    ; line_number = 127
2463                    ;  sensor1_map[0] := 0xd8
2464                    ;info   127, 51
2465 0033 30d8          movlw   216
2466 0034 00c6          movwf   sensor1_map
2467                    ; line_number = 128
2468                    ;  sensor1_map[1] := 0x80
2469                    ;info   128, 53
2470 0035 3080          movlw   128
2471 0036 00c7          movwf   sensor1_map+1
2472                    ; line_number = 129
2473                    ;  sensor1_map[2] := 0x5b
2474                    ;info   129, 55
2475 0037 305b          movlw   91
2476 0038 00c8          movwf   sensor1_map+2
2477                    ; line_number = 130
2478                    ;  sensor1_map[3] := 0x47
2479                    ;info   130, 57
2480 0039 3047          movlw   71
2481 003a 00c9          movwf   sensor1_map+3
2482                    ; line_number = 131
2483                    ;  sensor1_map[4] := 0x3c
2484                    ;info   131, 59
2485 003b 303c          movlw   60
2486 003c 00ca          movwf   sensor1_map+4
2487                    ; line_number = 132
2488                    ;  sensor1_map[5] := 0x32
2489                    ;info   132, 61
2490 003d 3032          movlw   50
2491 003e 00cb          movwf   sensor1_map+5
2492                    ; line_number = 133
2493                    ;  sensor1_map[6] := 0x2a
2494                    ;info   133, 63
2495 003f 302a          movlw   42
2496 0040 00cc          movwf   sensor1_map+6
2497                    ; line_number = 134
2498                    ;  sensor1_map[7] := 0x22
2499                    ;info   134, 65
2500 0041 3022          movlw   34
2501 0042 00cd          movwf   sensor1_map+7
2502            
2503                    ; line_number = 136
2504                    ;  loop_forever start
2505   0043 :   main__1:
2506 0043 1283          bcf     __rp0___byte, __rp0___bit
2507                    ; # Make sure that we have been selected:
2508                    ; line_number = 138
2509                    ;  rb2bus_error := _true
2510                    ;info   138, 68
2511 0044 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
2512                    ; line_number = 139
2513                    ;  while rb2bus_error start
2514   0045 :   main__2:
2515                    ;info   139, 69
2516                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2517                    ; No 1TEST: true.size=4 false.size=0
2518                    ; No 2TEST: true.size=4 false.size=0
2519                    ; 1GOTO: Single test with GOTO
2520 0045 1cef          btfss   rb2bus_error___byte, rb2bus_error___bit
2521 0046 284b          goto    main__3
2522                    ; line_number = 140
2523                    ; call rb2bus_select_wait()
2524                    ;info   140, 71
2525 0047 21ae          call    rb2bus_select_wait
2526                    ; line_number = 141
2527                    ;  command := rb2bus_byte_get()
2528                    ;info   141, 72
2529 0048 21cd          call    rb2bus_byte_get
2530 0049 00d3          movwf   main__command
2531            
2532 004a 2845          goto    main__2
2533                    ; Recombine size1 = 0 || size2 = 0
2534   004b :   main__3:
2535                    ; line_number = 139
2536                    ;  while rb2bus_error done
2537                    ; line_number = 143
2538                    ; switch command >> 6 start
2539                    ;info   143, 75
2540                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
2541 004b 3000          movlw   main__32>>8
2542 004c 008a          movwf   __pclath
2543 00000069 = main__33 equ globals___0+73
2544 004d 0e53          swapf   main__command,w
2545 004e 00e9          movwf   main__33
2546 004f 0ce9          rrf     main__33,f
2547 0050 0c69          rrf     main__33,w
2548 0051 3903          andlw   3
2549                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2550 0052 3e54          addlw   main__32
2551 0053 0082          movwf   __pcl
2552                    ; page_group 4
2553   0054 :   main__32:
2554 0054 2858          goto    main__30
2555 0055 291f          goto    main__34
2556 0056 291f          goto    main__34
2557 0057 290c          goto    main__31
2558                    ; line_number = 144
2559                    ; case 0
2560   0058 :   main__30:
2561                    ; line_number = 145
2562                    ; switch (command >> 3) & 7 start
2563                    ;info   145, 88
2564                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2565 0058 3000          movlw   main__23>>8
2566 0059 008a          movwf   __pclath
2567 00000069 = main__24 equ globals___0+73
2568 005a 0c53          rrf     main__command,w
2569 005b 00e9          movwf   main__24
2570 005c 0ce9          rrf     main__24,f
2571 005d 0c69          rrf     main__24,w
2572 005e 3907          andlw   7
2573                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2574 005f 3e61          addlw   main__23
2575 0060 0082          movwf   __pcl
2576                    ; page_group 1
2577   0061 :   main__23:
2578 0061 2862          goto    main__22
2579                    ; line_number = 146
2580                    ; case 0
2581   0062 :   main__22:
2582                    ; # 0000 0xxx:
2583                    ; line_number = 148
2584                    ;  switch command & 7 start
2585                    ;info   148, 98
2586                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2587                    ; line_number = 149
2588                    ; case_maximum 7
2589 0062 3000          movlw   main__20>>8
2590 0063 008a          movwf   __pclath
2591 0064 3007          movlw   7
2592 0065 0553          andwf   main__command,w
2593                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2594 0066 3e68          addlw   main__20
2595 0067 0082          movwf   __pcl
2596                    ; page_group 8
2597   0068 :   main__20:
2598 0068 2870          goto    main__14
2599 0069 2876          goto    main__15
2600 006a 287c          goto    main__16
2601 006b 287f          goto    main__17
2602 006c 2882          goto    main__18
2603 006d 28c7          goto    main__19
2604 006e 290b          goto    main__21
2605 006f 290b          goto    main__21
2606                    ; line_number = 150
2607                    ; case 0
2608   0070 :   main__14:
2609                    ; # 0000 0000 (Sensor0 Raw Get):
2610                    ; line_number = 152
2611                    ;  call rb2bus_byte_put(sensor0_high[rolling_index])
2612                    ;info   152, 112
2613 0070 084c          movf    rolling_index,w
2614 0071 3e2c          addlw   sensor0_high
2615 0072 0084          movwf   __fsr
2616 0073 0800          movf    __indf,w
2617 0074 21ef          call    rb2bus_byte_put
2618 0075 290b          goto    main__21
2619                    ; line_number = 153
2620                    ; case 1
2621   0076 :   main__15:
2622                    ; # 0000 0000 (Sensor1 Raw Get):
2623                    ; line_number = 155
2624                    ;  call rb2bus_byte_put(sensor1_high[rolling_index])
2625                    ;info   155, 118
2626 0076 084c          movf    rolling_index,w
2627 0077 3e3c          addlw   sensor1_high
2628 0078 0084          movwf   __fsr
2629 0079 0800          movf    __indf,w
2630 007a 21ef          call    rb2bus_byte_put
2631 007b 290b          goto    main__21
2632                    ; line_number = 156
2633                    ; case 2
2634   007c :   main__16:
2635                    ; # 0000 0010 (Sensor0 Smoothed Get):
2636                    ; line_number = 158
2637                    ;  call rb2bus_byte_put(sensor0_value())
2638                    ;info   158, 124
2639 007c 2120          call    sensor0_value
2640 007d 21ef          call    rb2bus_byte_put
2641 007e 290b          goto    main__21
2642                    ; line_number = 159
2643                    ; case 3
2644   007f :   main__17:
2645                    ; # 0000 0011 (Sensor1 Smoothed Get):
2646                    ; line_number = 161
2647                    ;  call rb2bus_byte_put(sensor1_value())
2648                    ;info   161, 127
2649 007f 2138          call    sensor1_value
2650 0080 21ef          call    rb2bus_byte_put
2651 0081 290b          goto    main__21
2652                    ; line_number = 162
2653                    ; case 4
2654   0082 :   main__18:
2655                    ; # 0000 0100 (Sensor0 Linear Get):
2656                    ; line_number = 164
2657                    ;  value := sensor0_value()
2658                    ;info   164, 130
2659 0082 2120          call    sensor0_value
2660 0083 00e2          movwf   main__value
2661                    ; line_number = 165
2662                    ;  temp := 0
2663                    ;info   165, 132
2664 0084 01d7          clrf    main__temp
2665                    ; line_number = 166
2666                    ;  result := 0xff
2667                    ;info   166, 133
2668 0085 30ff          movlw   255
2669 0086 00d6          movwf   main__result
2670                    ; line_number = 167
2671                    ;  high := 0xff
2672                    ;info   167, 135
2673 0087 30ff          movlw   255
2674 0088 00e0          movwf   main__high
2675                    ; line_number = 168
2676                    ;  index := 0
2677                    ;info   168, 137
2678 0089 01d9          clrf    main__index
2679                    ; line_number = 169
2680                    ;  got_it := _false
2681                    ;info   169, 138
2682 008a 126f          bcf     main__got_it___byte, main__got_it___bit
2683                    ; line_number = 170
2684                    ;  while index < 8 && !got_it start
2685   008b :   main__4:
2686                    ;info   170, 139
2687 008b 3008          movlw   8
2688 008c 0259          subwf   main__index,w
2689                    ; =>bit_code_emit@symbol(): sym=__c
2690                    ; No 1TEST: true.size=1 false.size=49
2691                    ; No 2TEST: true.size=1 false.size=49
2692                    ; 2GOTO: Single test with two GOTO's
2693 008d 1803          btfsc   __c___byte, __c___bit
2694 008e 28c0          goto    main__6
2695                    ; Recombine code1_bit_states != code2_bit_states
2696                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2697                    ; =>bit_code_emit@symbol(): sym=main__got_it
2698                    ; No 1TEST: true.size=0 false.size=47
2699                    ; No 2TEST: true.size=0 false.size=47
2700                    ; 1GOTO: Single test with GOTO
2701 008f 1a6f          btfsc   main__got_it___byte, main__got_it___bit
2702 0090 28c0          goto    main__7
2703                    ; line_number = 171
2704                    ; low := sensor0_map[index]
2705                    ;info   171, 145
2706 0091 0859          movf    main__index,w
2707 0092 3ebe          addlw   sensor0_map
2708 0093 0084          movwf   __fsr
2709 0094 0800          movf    __indf,w
2710 0095 00e1          movwf   main__low
2711                    ; line_number = 172
2712                    ;  if low <= value start
2713                    ;info   172, 150
2714 0096 0862          movf    main__value,w
2715 0097 0261          subwf   main__low,w
2716 0098 1903          btfsc   __z___byte, __z___bit
2717 0099 1003          bcf     __c___byte, __c___bit
2718                    ; =>bit_code_emit@symbol(): sym=__c
2719                    ; No 1TEST: true.size=0 false.size=30
2720                    ; No 2TEST: true.size=0 false.size=30
2721                    ; 1GOTO: Single test with GOTO
2722 009a 1803          btfsc   __c___byte, __c___bit
2723 009b 28ba          goto    main__5
2724                    ; # We have the answer:
2725                    ; line_number = 174
2726                    ;  numerator := _signed16_from_byte(high - value)
2727                    ;info   174, 156
2728 009c 0862          movf    main__value,w
2729 009d 0260          subwf   main__high,w
2730 009e 1683          bsf     __rp0___byte, __rp0___bit
2731 009f 2350          call    _signed16_from_byte
2732 00a0 3059          movlw   _signed16_from_byte__0return>>1
2733 00a1 229e          call    _signed16_pointer_load
2734 00a2 302e          movlw   main__numerator>>1
2735 00a3 2329          call    _signed16_pointer_store
2736                    ; line_number = 175
2737                    ;  denominator := _signed16_from_byte(high - low)
2738                    ;info   175, 164
2739 00a4 1283          bcf     __rp0___byte, __rp0___bit
2740 00a5 0861          movf    main__low,w
2741 00a6 0260          subwf   main__high,w
2742 00a7 1683          bsf     __rp0___byte, __rp0___bit
2743 00a8 2350          call    _signed16_from_byte
2744 00a9 3059          movlw   _signed16_from_byte__0return>>1
2745 00aa 229e          call    _signed16_pointer_load
2746 00ab 302f          movlw   main__denominator>>1
2747 00ac 2329          call    _signed16_pointer_store
2748                    ; line_number = 176
2749                    ;  result := temp + _signed16_to_byte( xxx16 * numerator / denominator)
2750                    ;info   176, 173
2751 00ad 302d          movlw   main__xxx16>>1
2752 00ae 229e          call    _signed16_pointer_load
2753 00af 302e          movlw   main__numerator>>1
2754 00b0 22c8          call    _signed16_pointer_multiply
2755 00b1 302f          movlw   main__denominator>>1
2756 00b2 22ba          call    _signed16_pointer_divide
2757 00b3 305c          movlw   _signed16_to_byte__number>>1
2758 00b4 2329          call    _signed16_pointer_store
2759 00b5 2361          call    _signed16_to_byte
2760 00b6 1283          bcf     __rp0___byte, __rp0___bit
2761 00b7 0757          addwf   main__temp,w
2762 00b8 00d6          movwf   main__result
2763            
2764                    ; line_number = 178
2765                    ; got_it := _true
2766                    ;info   178, 185
2767 00b9 166f          bsf     main__got_it___byte, main__got_it___bit
2768   00ba :   main__5:
2769                    ; Recombine size1 = 0 || size2 = 0
2770                    ; line_number = 172
2771                    ;  if low <= value done
2772                    ; line_number = 179
2773                    ; temp := temp + xxx
2774                    ;info   179, 186
2775 00ba 301e          movlw   30
2776 00bb 07d7          addwf   main__temp,f
2777                    ; line_number = 180
2778                    ;  high := low
2779                    ;info   180, 188
2780 00bc 0861          movf    main__low,w
2781 00bd 00e0          movwf   main__high
2782                    ; line_number = 181
2783                    ;  index := index + 1
2784                    ;info   181, 190
2785 00be 0ad9          incf    main__index,f
2786 00bf 288b          goto    main__4
2787   00c0 :   main__7:
2788   00c0 :   main__6:
2789                    ; Recombine code1_bit_states != code2_bit_states
2790                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2791                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
2792                    ; 2GOTO: No goto needed; true=main__6 false= true_size=1 false_size=49
2793                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2794                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
2795                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2796                    ; line_number = 170
2797                    ;  while index < 8 && !got_it done
2798                    ; line_number = 182
2799                    ; if !got_it start
2800                    ;info   182, 192
2801                    ; =>bit_code_emit@symbol(): sym=main__got_it
2802                    ; No 1TEST: true.size=0 false.size=2
2803                    ; No 2TEST: true.size=0 false.size=2
2804                    ; 1GOTO: Single test with GOTO
2805 00c0 1a6f          btfsc   main__got_it___byte, main__got_it___bit
2806 00c1 28c4          goto    main__8
2807                    ; line_number = 183
2808                    ; result := 0xfe
2809                    ;info   183, 194
2810 00c2 30fe          movlw   254
2811 00c3 00d6          movwf   main__result
2812   00c4 :   main__8:
2813                    ; Recombine size1 = 0 || size2 = 0
2814                    ; line_number = 182
2815                    ; if !got_it done
2816                    ; line_number = 184
2817                    ; call rb2bus_byte_put(result)
2818                    ;info   184, 196
2819 00c4 0856          movf    main__result,w
2820 00c5 21ef          call    rb2bus_byte_put
2821 00c6 290b          goto    main__21
2822                    ; line_number = 185
2823                    ; case 5
2824   00c7 :   main__19:
2825                    ; # 0000 0101 (Sensor1 Linear Get):
2826                    ; line_number = 187
2827                    ;  value := sensor1_value()
2828                    ;info   187, 199
2829 00c7 2138          call    sensor1_value
2830 00c8 00e2          movwf   main__value
2831                    ; line_number = 188
2832                    ;  temp := 0
2833                    ;info   188, 201
2834 00c9 01d7          clrf    main__temp
2835                    ; line_number = 189
2836                    ;  result := 0xff
2837                    ;info   189, 202
2838 00ca 30ff          movlw   255
2839 00cb 00d6          movwf   main__result
2840                    ; line_number = 190
2841                    ;  high := 0xff
2842                    ;info   190, 204
2843 00cc 30ff          movlw   255
2844 00cd 00e0          movwf   main__high
2845                    ; line_number = 191
2846                    ;  index := 0
2847                    ;info   191, 206
2848 00ce 01d9          clrf    main__index
2849                    ; line_number = 192
2850                    ;  got_it := _false
2851                    ;info   192, 207
2852 00cf 126f          bcf     main__got_it___byte, main__got_it___bit
2853                    ; line_number = 193
2854                    ;  while index < 8 && !got_it start
2855   00d0 :   main__9:
2856                    ;info   193, 208
2857 00d0 3008          movlw   8
2858 00d1 0259          subwf   main__index,w
2859                    ; =>bit_code_emit@symbol(): sym=__c
2860                    ; No 1TEST: true.size=1 false.size=49
2861                    ; No 2TEST: true.size=1 false.size=49
2862                    ; 2GOTO: Single test with two GOTO's
2863 00d2 1803          btfsc   __c___byte, __c___bit
2864 00d3 2905          goto    main__11
2865                    ; Recombine code1_bit_states != code2_bit_states
2866                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2867                    ; =>bit_code_emit@symbol(): sym=main__got_it
2868                    ; No 1TEST: true.size=0 false.size=47
2869                    ; No 2TEST: true.size=0 false.size=47
2870                    ; 1GOTO: Single test with GOTO
2871 00d4 1a6f          btfsc   main__got_it___byte, main__got_it___bit
2872 00d5 2905          goto    main__12
2873                    ; line_number = 194
2874                    ; low := sensor1_map[index]
2875                    ;info   194, 214
2876 00d6 0859          movf    main__index,w
2877 00d7 3ec6          addlw   sensor1_map
2878 00d8 0084          movwf   __fsr
2879 00d9 0800          movf    __indf,w
2880 00da 00e1          movwf   main__low
2881                    ; line_number = 195
2882                    ;  if low <= value start
2883                    ;info   195, 219
2884 00db 0862          movf    main__value,w
2885 00dc 0261          subwf   main__low,w
2886 00dd 1903          btfsc   __z___byte, __z___bit
2887 00de 1003          bcf     __c___byte, __c___bit
2888                    ; =>bit_code_emit@symbol(): sym=__c
2889                    ; No 1TEST: true.size=0 false.size=30
2890                    ; No 2TEST: true.size=0 false.size=30
2891                    ; 1GOTO: Single test with GOTO
2892 00df 1803          btfsc   __c___byte, __c___bit
2893 00e0 28ff          goto    main__10
2894                    ; # We have the answer:
2895                    ; line_number = 197
2896                    ;  numerator := _signed16_from_byte(high - value)
2897                    ;info   197, 225
2898 00e1 0862          movf    main__value,w
2899 00e2 0260          subwf   main__high,w
2900 00e3 1683          bsf     __rp0___byte, __rp0___bit
2901 00e4 2350          call    _signed16_from_byte
2902 00e5 3059          movlw   _signed16_from_byte__0return>>1
2903 00e6 229e          call    _signed16_pointer_load
2904 00e7 302e          movlw   main__numerator>>1
2905 00e8 2329          call    _signed16_pointer_store
2906                    ; line_number = 198
2907                    ;  denominator := _signed16_from_byte(high - low)
2908                    ;info   198, 233
2909 00e9 1283          bcf     __rp0___byte, __rp0___bit
2910 00ea 0861          movf    main__low,w
2911 00eb 0260          subwf   main__high,w
2912 00ec 1683          bsf     __rp0___byte, __rp0___bit
2913 00ed 2350          call    _signed16_from_byte
2914 00ee 3059          movlw   _signed16_from_byte__0return>>1
2915 00ef 229e          call    _signed16_pointer_load
2916 00f0 302f          movlw   main__denominator>>1
2917 00f1 2329          call    _signed16_pointer_store
2918                    ; line_number = 199
2919                    ;  result := temp + _signed16_to_byte( xxx16 * numerator / denominator)
2920                    ;info   199, 242
2921 00f2 302d          movlw   main__xxx16>>1
2922 00f3 229e          call    _signed16_pointer_load
2923 00f4 302e          movlw   main__numerator>>1
2924 00f5 22c8          call    _signed16_pointer_multiply
2925 00f6 302f          movlw   main__denominator>>1
2926 00f7 22ba          call    _signed16_pointer_divide
2927 00f8 305c          movlw   _signed16_to_byte__number>>1
2928 00f9 2329          call    _signed16_pointer_store
2929 00fa 2361          call    _signed16_to_byte
2930 00fb 1283          bcf     __rp0___byte, __rp0___bit
2931 00fc 0757          addwf   main__temp,w
2932 00fd 00d6          movwf   main__result
2933            
2934                    ; line_number = 201
2935                    ; got_it := _true
2936                    ;info   201, 254
2937 00fe 166f          bsf     main__got_it___byte, main__got_it___bit
2938   00ff :   main__10:
2939                    ; Recombine size1 = 0 || size2 = 0
2940                    ; line_number = 195
2941                    ;  if low <= value done
2942                    ; line_number = 202
2943                    ; temp := temp + xxx
2944                    ;info   202, 255
2945 00ff 301e          movlw   30
2946 0100 07d7          addwf   main__temp,f
2947                    ; line_number = 203
2948                    ;  high := low
2949                    ;info   203, 257
2950 0101 0861          movf    main__low,w
2951 0102 00e0          movwf   main__high
2952                    ; line_number = 204
2953                    ;  index := index + 1
2954                    ;info   204, 259
2955 0103 0ad9          incf    main__index,f
2956 0104 28d0          goto    main__9
2957   0105 :   main__12:
2958   0105 :   main__11:
2959                    ; Recombine code1_bit_states != code2_bit_states
2960                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2961                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
2962                    ; 2GOTO: No goto needed; true=main__11 false= true_size=1 false_size=49
2963                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2964                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
2965                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2966                    ; line_number = 193
2967                    ;  while index < 8 && !got_it done
2968                    ; line_number = 205
2969                    ; if !got_it start
2970                    ;info   205, 261
2971                    ; =>bit_code_emit@symbol(): sym=main__got_it
2972                    ; No 1TEST: true.size=0 false.size=2
2973                    ; No 2TEST: true.size=0 false.size=2
2974                    ; 1GOTO: Single test with GOTO
2975 0105 1a6f          btfsc   main__got_it___byte, main__got_it___bit
2976 0106 2909          goto    main__13
2977                    ; line_number = 206
2978                    ; result := 0xfe
2979                    ;info   206, 263
2980 0107 30fe          movlw   254
2981 0108 00d6          movwf   main__result
2982   0109 :   main__13:
2983                    ; Recombine size1 = 0 || size2 = 0
2984                    ; line_number = 205
2985                    ; if !got_it done
2986                    ; line_number = 207
2987                    ; call rb2bus_byte_put(result)
2988                    ;info   207, 265
2989 0109 0856          movf    main__result,w
2990 010a 21ef          call    rb2bus_byte_put
2991   010b :   main__21:
2992                    ; line_number = 148
2993                    ;  switch command & 7 done
2994   010b :   main__25:
2995                    ; line_number = 145
2996                    ; switch (command >> 3) & 7 done
2997 010b 291f          goto    main__34
2998                    ; line_number = 208
2999                    ; case 3
3000   010c :   main__31:
3001                    ; # 11xx xxxx:
3002                    ; line_number = 210
3003                    ;  switch (command >> 3) & 7 start
3004                    ;info   210, 268
3005                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
3006 010c 3001          movlw   main__27>>8
3007 010d 008a          movwf   __pclath
3008 00000069 = main__28 equ globals___0+73
3009 010e 0c53          rrf     main__command,w
3010 010f 00e9          movwf   main__28
3011 0110 0ce9          rrf     main__28,f
3012 0111 0c69          rrf     main__28,w
3013 0112 3907          andlw   7
3014                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
3015 0113 3e15          addlw   main__27
3016 0114 0082          movwf   __pcl
3017                    ; page_group 8
3018   0115 :   main__27:
3019 0115 291f          goto    main__29
3020 0116 291f          goto    main__29
3021 0117 291f          goto    main__29
3022 0118 291f          goto    main__29
3023 0119 291f          goto    main__29
3024 011a 291f          goto    main__29
3025 011b 291f          goto    main__29
3026 011c 291d          goto    main__26
3027                    ; line_number = 211
3028                    ; case 7
3029   011d :   main__26:
3030                    ; # 1111 1xxx:
3031                    ; line_number = 213
3032                    ;  call rb2bus_command(command)
3033                    ;info   213, 285
3034 011d 0853          movf    main__command,w
3035 011e 2203          call    rb2bus_command
3036            
3037            
3038   011f :   main__29:
3039                    ; line_number = 210
3040                    ;  switch (command >> 3) & 7 done
3041   011f :   main__34:
3042                    ; line_number = 143
3043                    ; switch command >> 6 done
3044                    ; line_number = 136
3045                    ;  loop_forever wrap-up
3046 011f 2843          goto    main__1
3047                    ; line_number = 136
3048                    ;  loop_forever done
3049                    ; delay after procedure statements=non-uniform
3050            
3051            
3052            
3053            
3054                    ; line_number = 216
3055                    ;info   216, 288
3056                    ; procedure sensor0_value
3057   0120 :   sensor0_value:
3058                    ; arguments_none
3059                    ; line_number = 218
3060                    ;  returns byte
3061            
3062                    ; #: This procedure will compute and return the best value for sensor0.
3063            
3064                    ; line_number = 222
3065                    ;  local index byte
3066 00000063 = sensor0_value__index equ globals___0+67
3067                    ; line_number = 223
3068                    ;  local maximum byte
3069 00000064 = sensor0_value__maximum equ globals___0+68
3070                    ; line_number = 224
3071                    ;  local temp byte
3072 00000065 = sensor0_value__temp equ globals___0+69
3073            
3074                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3075                    ; line_number = 226
3076                    ;  maximum := sensor0_high[0]
3077                    ;info   226, 288
3078 0120 082c          movf    sensor0_high,w
3079 0121 00e4          movwf   sensor0_value__maximum
3080                    ; line_number = 227
3081                    ;  index := 1
3082                    ;info   227, 290
3083 0122 3001          movlw   1
3084 0123 00e3          movwf   sensor0_value__index
3085                    ; line_number = 228
3086                    ;  loop_exactly 7 start
3087                    ;info   228, 292
3088 0000006a = sensor0_value__1 equ globals___0+74
3089 0124 3007          movlw   7
3090 0125 00ea          movwf   sensor0_value__1
3091   0126 :   sensor0_value__2:
3092                    ; line_number = 229
3093                    ; temp := sensor0_high[index]
3094                    ;info   229, 294
3095 0126 0863          movf    sensor0_value__index,w
3096 0127 3e2c          addlw   sensor0_high
3097 0128 0084          movwf   __fsr
3098 0129 0800          movf    __indf,w
3099 012a 00e5          movwf   sensor0_value__temp
3100                    ; line_number = 230
3101                    ;  if temp > maximum start
3102                    ;info   230, 299
3103 012b 0864          movf    sensor0_value__maximum,w
3104 012c 0265          subwf   sensor0_value__temp,w
3105 012d 1903          btfsc   __z___byte, __z___bit
3106 012e 1003          bcf     __c___byte, __c___bit
3107                    ; =>bit_code_emit@symbol(): sym=__c
3108                    ; No 1TEST: true.size=2 false.size=0
3109                    ; No 2TEST: true.size=2 false.size=0
3110                    ; 1GOTO: Single test with GOTO
3111 012f 1c03          btfss   __c___byte, __c___bit
3112 0130 2933          goto    sensor0_value__3
3113                    ; line_number = 231
3114                    ; maximum := temp
3115                    ;info   231, 305
3116 0131 0865          movf    sensor0_value__temp,w
3117 0132 00e4          movwf   sensor0_value__maximum
3118                    ; Recombine size1 = 0 || size2 = 0
3119   0133 :   sensor0_value__3:
3120                    ; line_number = 230
3121                    ;  if temp > maximum done
3122                    ; line_number = 232
3123                    ; index := index + 1
3124                    ;info   232, 307
3125 0133 0ae3          incf    sensor0_value__index,f
3126                    ; line_number = 228
3127                    ;  loop_exactly 7 wrap-up
3128 0134 0bea          decfsz  sensor0_value__1,f
3129 0135 2926          goto    sensor0_value__2
3130                    ; line_number = 228
3131                    ;  loop_exactly 7 done
3132                    ; line_number = 233
3133                    ; return maximum     start
3134                    ; line_number = 233
3135                    ;info   233, 310
3136 0136 0864          movf    sensor0_value__maximum,w
3137 0137 0008          return  
3138                    ; line_number = 233
3139                    ; return maximum     done
3140            
3141            
3142                    ; delay after procedure statements=non-uniform
3143            
3144            
3145            
3146            
3147                    ; line_number = 236
3148                    ;info   236, 312
3149                    ; procedure sensor1_value
3150   0138 :   sensor1_value:
3151                    ; arguments_none
3152                    ; line_number = 238
3153                    ;  returns byte
3154            
3155                    ; #: This procedure will compute and return the best value for sensor1.
3156            
3157                    ; line_number = 242
3158                    ;  local index byte
3159 00000066 = sensor1_value__index equ globals___0+70
3160                    ; line_number = 243
3161                    ;  local maximum byte
3162 00000067 = sensor1_value__maximum equ globals___0+71
3163                    ; line_number = 244
3164                    ;  local temp byte
3165 00000068 = sensor1_value__temp equ globals___0+72
3166            
3167                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3168                    ; line_number = 246
3169                    ;  maximum := sensor1_high[0]
3170                    ;info   246, 312
3171 0138 083c          movf    sensor1_high,w
3172 0139 00e7          movwf   sensor1_value__maximum
3173                    ; line_number = 247
3174                    ;  index := 1
3175                    ;info   247, 314
3176 013a 3001          movlw   1
3177 013b 00e6          movwf   sensor1_value__index
3178                    ; line_number = 248
3179                    ;  loop_exactly 7 start
3180                    ;info   248, 316
3181 0000006b = sensor1_value__1 equ globals___0+75
3182 013c 3007          movlw   7
3183 013d 00eb          movwf   sensor1_value__1
3184   013e :   sensor1_value__2:
3185                    ; line_number = 249
3186                    ; temp := sensor1_high[index]
3187                    ;info   249, 318
3188 013e 0866          movf    sensor1_value__index,w
3189 013f 3e3c          addlw   sensor1_high
3190 0140 0084          movwf   __fsr
3191 0141 0800          movf    __indf,w
3192 0142 00e8          movwf   sensor1_value__temp
3193                    ; line_number = 250
3194                    ;  if temp > maximum start
3195                    ;info   250, 323
3196 0143 0867          movf    sensor1_value__maximum,w
3197 0144 0268          subwf   sensor1_value__temp,w
3198 0145 1903          btfsc   __z___byte, __z___bit
3199 0146 1003          bcf     __c___byte, __c___bit
3200                    ; =>bit_code_emit@symbol(): sym=__c
3201                    ; No 1TEST: true.size=2 false.size=0
3202                    ; No 2TEST: true.size=2 false.size=0
3203                    ; 1GOTO: Single test with GOTO
3204 0147 1c03          btfss   __c___byte, __c___bit
3205 0148 294b          goto    sensor1_value__3
3206                    ; line_number = 251
3207                    ; maximum := temp
3208                    ;info   251, 329
3209 0149 0868          movf    sensor1_value__temp,w
3210 014a 00e7          movwf   sensor1_value__maximum
3211                    ; Recombine size1 = 0 || size2 = 0
3212   014b :   sensor1_value__3:
3213                    ; line_number = 250
3214                    ;  if temp > maximum done
3215                    ; line_number = 252
3216                    ; index := index + 1
3217                    ;info   252, 331
3218 014b 0ae6          incf    sensor1_value__index,f
3219                    ; line_number = 248
3220                    ;  loop_exactly 7 wrap-up
3221 014c 0beb          decfsz  sensor1_value__1,f
3222 014d 293e          goto    sensor1_value__2
3223                    ; line_number = 248
3224                    ;  loop_exactly 7 done
3225                    ; line_number = 253
3226                    ; return maximum     start
3227                    ; line_number = 253
3228                    ;info   253, 334
3229 014e 0867          movf    sensor1_value__maximum,w
3230 014f 0008          return  
3231                    ; line_number = 253
3232                    ; return maximum     done
3233            
3234            
3235                    ; delay after procedure statements=non-uniform
3236            
3237            
3238            
3239            
3240                    ; line_number = 256
3241                    ;info   256, 336
3242                    ; procedure wait
3243   0150 :   wait:
3244                    ; arguments_none
3245                    ; line_number = 258
3246                    ;  returns_nothing
3247            
3248                    ; # This procedure is repeatably called whenever the software
3249                    ; # is waiting for a byte to arrive from the bus.
3250            
3251                    ; # The bus is running at 500kbps or 2uSec/bit.  Since each
3252                    ; # byte consists of 1 start bit, 9 data bits, and 1 stop bit,
3253                    ; # a byte takes 11bit/byte * 2uSec/bit = 22uSec/byte.  Since
3254                    ; # the system is running off of a 20MHz resonator that is
3255                    ; # divided by 4 to get the basic clock rate of 5MHz, that
3256                    ; # works out to .2uSec/cycle (=5cycle/uSec), we get a total
3257                    ; # of 5cycle/uSec * 22uSec/Byte = 110cycle/byte.  Now we
3258                    ; # want to leave some time for the calling routine to get
3259                    ; # its job done, so shooting for ~50 cycles per call to this
3260                    ; # routine is just about right.
3261            
3262                    ; # The GP2D12's take a sample every 38.3mSec +/- 9.6mSec.
3263                    ; # That yields a range of 28.7mSec - 47.9mSec.  If we take
3264                    ; # a sample from each channel every 50mSec, we'll never get
3265                    ; # a duplicate.
3266            
3267                    ; # TMR0 is an 8-bit timer that will set {_t0if} after every
3268                    ; # 256 ticks.  The presclaler can be set to 1:128.  Thus, the
3269                    ; # TMR0 turns over 128 * 256 * .2uSec = 6553.6uSec = 6.5536mSec.
3270                    ; # If we give the A/D 4 slices of 6.5536mSec or 26.2mSec.
3271            
3272                    ; # Wait for timer:
3273                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3274                    ; line_number = 285
3275                    ;  if _t0if start
3276                    ;info   285, 336
3277                    ; =>bit_code_emit@symbol(): sym=_t0if
3278                    ; No 1TEST: true.size=58 false.size=0
3279                    ; No 2TEST: true.size=58 false.size=0
3280                    ; 1GOTO: Single test with GOTO
3281 0150 1d0b          btfss   _t0if___byte, _t0if___bit
3282 0151 298c          goto    wait__11
3283                    ; line_number = 286
3284                    ; _t0if := _false
3285                    ;info   286, 338
3286 0152 110b          bcf     _t0if___byte, _t0if___bit
3287                    ; line_number = 287
3288                    ;  switch state & 7 start
3289                    ;info   287, 339
3290                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=1
3291 0153 3001          movlw   wait__9>>8
3292 0154 008a          movwf   __pclath
3293 0155 3007          movlw   7
3294 0156 054d          andwf   state,w
3295                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
3296 0157 3e59          addlw   wait__9
3297 0158 0082          movwf   __pcl
3298                    ; page_group 8
3299   0159 :   wait__9:
3300 0159 2961          goto    wait__1
3301 015a 2965          goto    wait__2
3302 015b 2967          goto    wait__3
3303 015c 2973          goto    wait__4
3304 015d 2974          goto    wait__5
3305 015e 2978          goto    wait__6
3306 015f 297a          goto    wait__7
3307 0160 298a          goto    wait__8
3308                    ; line_number = 288
3309                    ; case 0
3310   0161 :   wait__1:
3311                    ; # Select channel sensor 0 (A/D channel 5):
3312                    ; line_number = 290
3313                    ;  _adcon0 := (5 << 2) | adcon0_save
3314                    ;info   290, 353
3315 0161 3014          movlw   20
3316 0162 044e          iorwf   adcon0_save,w
3317 0163 009f          movwf   _adcon0
3318                    ; # Let the Sample and Hold settle:
3319 0164 298a          goto    wait__10
3320                    ; line_number = 292
3321                    ; case 1
3322   0165 :   wait__2:
3323                    ; # Start the A/D:
3324                    ; line_number = 294
3325                    ;  _go := _true
3326                    ;info   294, 357
3327 0165 149f          bsf     _go___byte, _go___bit
3328                    ; # Let the A/D do its thing:
3329 0166 298a          goto    wait__10
3330                    ; line_number = 296
3331                    ; case 2
3332   0167 :   wait__3:
3333                    ; # Read out the A/D result for sensor 0:
3334                    ; line_number = 298
3335                    ;  sensor0_high[rolling_index] := _adresh
3336                    ;info   298, 359
3337                    ; index_fsr_first
3338 0167 084c          movf    rolling_index,w
3339 0168 3e2c          addlw   sensor0_high
3340 0169 0084          movwf   __fsr
3341 016a 081e          movf    _adresh,w
3342 016b 0080          movwf   __indf
3343                    ; line_number = 299
3344                    ;  sensor0_low[rolling_index] := _adresl
3345                    ;info   299, 364
3346                    ; index_fsr_first
3347 016c 084c          movf    rolling_index,w
3348 016d 3e34          addlw   sensor0_low
3349 016e 0084          movwf   __fsr
3350 016f 1683          bsf     __rp0___byte, __rp0___bit
3351 0170 081e          movf    _adresl,w
3352 0171 0080          movwf   __indf
3353 0172 298a          goto    wait__10
3354                    ; line_number = 300
3355                    ; case 3
3356   0173 :   wait__4:
3357                    ; line_number = 301
3358                    ; do_nothing
3359                    ;info   301, 371
3360 0173 298a          goto    wait__10
3361                    ; line_number = 302
3362                    ; case 4
3363   0174 :   wait__5:
3364                    ; # Select channel sensor 0 (A/D channel 6):
3365                    ; line_number = 304
3366                    ;  _adcon0 := (6 << 2) | adcon0_save
3367                    ;info   304, 372
3368 0174 3018          movlw   24
3369 0175 044e          iorwf   adcon0_save,w
3370 0176 009f          movwf   _adcon0
3371                    ; # Let the Sample and Hold settle:
3372 0177 298a          goto    wait__10
3373                    ; line_number = 306
3374                    ; case 5
3375   0178 :   wait__6:
3376                    ; # Start the A/D:
3377                    ; line_number = 308
3378                    ;  _go := _true
3379                    ;info   308, 376
3380 0178 149f          bsf     _go___byte, _go___bit
3381                    ; # Let the A/D do its thing:
3382 0179 298a          goto    wait__10
3383                    ; line_number = 310
3384                    ; case 6
3385   017a :   wait__7:
3386                    ; # Read out the A/D result for sensor 1:
3387                    ; line_number = 312
3388                    ;  sensor1_high[rolling_index] := _adresh
3389                    ;info   312, 378
3390                    ; index_fsr_first
3391 017a 084c          movf    rolling_index,w
3392 017b 3e3c          addlw   sensor1_high
3393 017c 0084          movwf   __fsr
3394 017d 081e          movf    _adresh,w
3395 017e 0080          movwf   __indf
3396                    ; line_number = 313
3397                    ;  sensor1_low[rolling_index] := _adresl
3398                    ;info   313, 383
3399                    ; index_fsr_first
3400 017f 084c          movf    rolling_index,w
3401 0180 3e44          addlw   sensor1_low
3402 0181 0084          movwf   __fsr
3403 0182 1683          bsf     __rp0___byte, __rp0___bit
3404 0183 081e          movf    _adresl,w
3405 0184 0080          movwf   __indf
3406                    ; line_number = 314
3407                    ;  rolling_index := (rolling_index + 1) & 7
3408                    ;info   314, 389
3409 0185 1283          bcf     __rp0___byte, __rp0___bit
3410 0186 0a4c          incf    rolling_index,w
3411 0187 3907          andlw   7
3412 0188 00cc          movwf   rolling_index
3413 0189 298a          goto    wait__10
3414                    ; line_number = 315
3415                    ; case 7
3416   018a :   wait__8:
3417                    ; line_number = 316
3418                    ; do_nothing
3419                    ;info   316, 394
3420   018a :   wait__10:
3421                    ; line_number = 287
3422                    ;  switch state & 7 done
3423                    ; line_number = 317
3424                    ; state := state + 1
3425                    ;info   317, 394
3426 018a 1283          bcf     __rp0___byte, __rp0___bit
3427 018b 0acd          incf    state,f
3428            
3429            
3430                    ; Recombine size1 = 0 || size2 = 0
3431   018c :   wait__11:
3432                    ; line_number = 285
3433                    ;  if _t0if done
3434                    ; delay after procedure statements=non-uniform
3435                    ; Implied return
3436 018c 3400          retlw   0
3437            
3438            
3439            
3440            
3441                    ; line_number = 320
3442                    ; string id = "\16,0,4,3,3,13\IRDistance2-C\7\Gramson" start
3443                    ; id = '\16,0,4,3,3,13\IRDistance2-C\7\Gramson'
3444   018d :   id:
3445                    ; Temporarily save index into FSR
3446 018d 0084          movwf   __fsr
3447                    ; Initialize PCLATH to point to this code page
3448 018e 3001          movlw   id___base>>8
3449 018f 008a          movwf   __pclath
3450                    ; Restore index from FSR
3451 0190 0804          movf    __fsr,w
3452 0191 3e93          addlw   id___base
3453                    ; Index to the correct return value
3454 0192 0082          movwf   __pcl
3455                    ; page_group 27
3456   0193 :   id___base:
3457 0193 3410          retlw   16
3458 0194 3400          retlw   0
3459 0195 3404          retlw   4
3460 0196 3403          retlw   3
3461 0197 3403          retlw   3
3462 0198 340d          retlw   13
3463 0199 3449          retlw   73
3464 019a 3452          retlw   82
3465 019b 3444          retlw   68
3466 019c 3469          retlw   105
3467 019d 3473          retlw   115
3468 019e 3474          retlw   116
3469 019f 3461          retlw   97
3470 01a0 346e          retlw   110
3471 01a1 3463          retlw   99
3472 01a2 3465          retlw   101
3473 01a3 3432          retlw   50
3474 01a4 342d          retlw   45
3475 01a5 3443          retlw   67
3476 01a6 3407          retlw   7
3477 01a7 3447          retlw   71
3478 01a8 3472          retlw   114
3479 01a9 3461          retlw   97
3480 01aa 346d          retlw   109
3481 01ab 3473          retlw   115
3482 01ac 346f          retlw   111
3483 01ad 346e          retlw   110
3484                    ; line_number = 320
3485                    ; string id = "\16,0,4,3,3,13\IRDistance2-C\7\Gramson" start
3486            
3487            
3488                    ; Appending 28 delayed procedures to code bank 0
3489                    ; buffer = 'rb2bus'
3490                    ; line_number = 57
3491                    ;info   57, 430
3492                    ; procedure rb2bus_select_wait
3493   01ae :   rb2bus_select_wait:
3494                    ; arguments_none
3495                    ; line_number = 59
3496                    ;  returns_nothing
3497            
3498                    ; # This procedure will in an infinite loop until the select
3499                    ; # address matches {rb2bus_address}.  {rb2bus_address} is
3500                    ; # typically set in the {rb2bus_initialize} procedure.
3501                    ; #
3502                    ; # This module will repeatably call the {wait} procedure until
3503                    ; # it is properly selected.
3504            
3505                    ; line_number = 68
3506                    ;  local value byte
3507 00000022 = rb2bus_select_wait__value equ globals___0+2
3508                    ; line_number = 69
3509                    ;  local address_bit bit
3510 0000006f = rb2bus_select_wait__address_bit___byte equ globals___0+79
3511 00000002 = rb2bus_select_wait__address_bit___bit equ 2
3512            
3513                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3514                    ; line_number = 71
3515                    ;  rb2bus_error := _false
3516                    ;info   71, 430
3517 01ae 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
3518                    ; line_number = 72
3519                    ;  while !rb2bus_selected start
3520   01af :   rb2bus_select_wait__1:
3521                    ;info   72, 431
3522                    ; =>bit_code_emit@symbol(): sym=rb2bus_selected
3523                    ; No 1TEST: true.size=0 false.size=25
3524                    ; No 2TEST: true.size=0 false.size=25
3525                    ; 1GOTO: Single test with GOTO
3526 01af 186f          btfsc   rb2bus_selected___byte, rb2bus_selected___bit
3527 01b0 29ca          goto    rb2bus_select_wait__6
3528                    ; line_number = 73
3529                    ; _adden := _true
3530                    ;info   73, 433
3531 01b1 1597          bsf     _adden___byte, _adden___bit
3532                    ; # Wait for a byte to arrive.
3533                    ; line_number = 75
3534                    ;  while !_rcif start
3535   01b2 :   rb2bus_select_wait__2:
3536                    ;info   75, 434
3537                    ; =>bit_code_emit@symbol(): sym=_rcif
3538                    ; No 1TEST: true.size=0 false.size=2
3539                    ; No 2TEST: true.size=0 false.size=2
3540                    ; 1GOTO: Single test with GOTO
3541 01b2 1a8c          btfsc   _rcif___byte, _rcif___bit
3542 01b3 29b6          goto    rb2bus_select_wait__3
3543                    ; line_number = 76
3544                    ; call wait()
3545                    ;info   76, 436
3546 01b4 2150          call    wait
3547            
3548 01b5 29b2          goto    rb2bus_select_wait__2
3549   01b6 :   rb2bus_select_wait__3:
3550                    ; Recombine size1 = 0 || size2 = 0
3551                    ; line_number = 75
3552                    ;  while !_rcif done
3553                    ; # Capture the received value:
3554                    ; line_number = 79
3555                    ;  address_bit := _false
3556                    ;info   79, 438
3557 01b6 116f          bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
3558                    ; line_number = 80
3559                    ;  if _rx9d start
3560                    ;info   80, 439
3561                    ; =>bit_code_emit@symbol(): sym=_rx9d
3562                    ; 1TEST: Single test with code in skip slot
3563 01b7 1817          btfsc   _rx9d___byte, _rx9d___bit
3564                    ; line_number = 81
3565                    ; address_bit := _true
3566                    ;info   81, 440
3567 01b8 156f          bsf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
3568                    ; Recombine size1 = 0 || size2 = 0
3569                    ; line_number = 80
3570                    ;  if _rx9d done
3571                    ; line_number = 82
3572                    ; value := _rcreg
3573                    ;info   82, 441
3574 01b9 0814          movf    _rcreg,w
3575 01ba 00a2          movwf   rb2bus_select_wait__value
3576            
3577                    ; # Clear any UART errors by toggling {_cren}:
3578                    ; line_number = 85
3579                    ;  if _oerr start
3580                    ;info   85, 443
3581                    ; =>bit_code_emit@symbol(): sym=_oerr
3582                    ; 1TEST: Single test with code in skip slot
3583 01bb 1897          btfsc   _oerr___byte, _oerr___bit
3584                    ; line_number = 86
3585                    ; _cren := _false
3586                    ;info   86, 444
3587 01bc 1217          bcf     _cren___byte, _cren___bit
3588                    ; Recombine size1 = 0 || size2 = 0
3589                    ; line_number = 85
3590                    ;  if _oerr done
3591                    ; line_number = 87
3592                    ; if _ferr start
3593                    ;info   87, 445
3594                    ; =>bit_code_emit@symbol(): sym=_ferr
3595                    ; 1TEST: Single test with code in skip slot
3596 01bd 1917          btfsc   _ferr___byte, _ferr___bit
3597                    ; line_number = 88
3598                    ; _cren := _false
3599                    ;info   88, 446
3600 01be 1217          bcf     _cren___byte, _cren___bit
3601                    ; Recombine size1 = 0 || size2 = 0
3602                    ; line_number = 87
3603                    ; if _ferr done
3604                    ; line_number = 89
3605                    ; _cren := _true
3606                    ;info   89, 447
3607 01bf 1617          bsf     _cren___byte, _cren___bit
3608            
3609                    ; line_number = 91
3610                    ;  if address_bit start
3611                    ;info   91, 448
3612                    ; =>bit_code_emit@symbol(): sym=rb2bus_select_wait__address_bit
3613                    ; No 1TEST: true.size=7 false.size=0
3614                    ; No 2TEST: true.size=7 false.size=0
3615                    ; 1GOTO: Single test with GOTO
3616 01c0 1d6f          btfss   rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
3617 01c1 29c9          goto    rb2bus_select_wait__5
3618                    ; line_number = 92
3619                    ; if value = rb2bus_address start
3620                    ;info   92, 450
3621                    ; Left minus Right
3622 01c2 0820          movf    rb2bus_address,w
3623 01c3 0222          subwf   rb2bus_select_wait__value,w
3624                    ; =>bit_code_emit@symbol(): sym=__z
3625                    ; No 1TEST: true.size=3 false.size=0
3626                    ; No 2TEST: true.size=3 false.size=0
3627                    ; 1GOTO: Single test with GOTO
3628 01c4 1d03          btfss   __z___byte, __z___bit
3629 01c5 29c9          goto    rb2bus_select_wait__4
3630                    ; line_number = 93
3631                    ; rb2bus_selected := _true
3632                    ;info   93, 454
3633 01c6 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
3634                    ; line_number = 94
3635                    ;  call rb2bus_byte_put(rb2_ok)
3636                    ;info   94, 455
3637 01c7 30a5          movlw   165
3638 01c8 21ef          call    rb2bus_byte_put
3639            
3640            
3641                    ; Recombine size1 = 0 || size2 = 0
3642   01c9 :   rb2bus_select_wait__4:
3643                    ; line_number = 92
3644                    ; if value = rb2bus_address done
3645                    ; Recombine size1 = 0 || size2 = 0
3646   01c9 :   rb2bus_select_wait__5:
3647                    ; line_number = 91
3648                    ;  if address_bit done
3649 01c9 29af          goto    rb2bus_select_wait__1
3650   01ca :   rb2bus_select_wait__6:
3651                    ; Recombine size1 = 0 || size2 = 0
3652                    ; line_number = 72
3653                    ;  while !rb2bus_selected done
3654                    ; delay after procedure statements=non-uniform
3655                    ; Implied return
3656 01ca 3400          retlw   0
3657            
3658            
3659            
3660            
3661                    ; line_number = 97
3662                    ;info   97, 459
3663                    ; procedure rb2bus_deselect
3664   01cb :   rb2bus_deselect:
3665                    ; arguments_none
3666                    ; line_number = 99
3667                    ;  returns_nothing
3668            
3669                    ; # This procedure forces this module into the deselected state until
3670                    ; # it is reselected by some master module on the bus.
3671            
3672                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3673                    ; line_number = 104
3674                    ;  rb2bus_selected := _false
3675                    ;info   104, 459
3676 01cb 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3677            
3678            
3679                    ; delay after procedure statements=non-uniform
3680                    ; Implied return
3681 01cc 3400          retlw   0
3682            
3683            
3684            
3685            
3686                    ; line_number = 107
3687                    ;info   107, 461
3688                    ; procedure rb2bus_byte_get
3689   01cd :   rb2bus_byte_get:
3690                    ; arguments_none
3691                    ; line_number = 109
3692                    ;  returns byte
3693            
3694                    ; # This procedure will return the next byte received from the bus.
3695                    ; # The address (9th) bit is stored in the global {is_address}.
3696                    ; #
3697                    ; # If {rb2bus_error} is set, 0 is returned.  Otherwise, the {wait}
3698                    ; # procedure is repeatably called until a command byte is successfully
3699                    ; # received.  If an module select byte comes in, we enter a bus
3700                    ; # error condition by setting {rb2bus_error} and returning 0.
3701            
3702                    ; line_number = 119
3703                    ;  local value byte
3704 00000023 = rb2bus_byte_get__value equ globals___0+3
3705                    ; line_number = 120
3706                    ;  local address_bit bit
3707 0000006f = rb2bus_byte_get__address_bit___byte equ globals___0+79
3708 00000003 = rb2bus_byte_get__address_bit___bit equ 3
3709            
3710                    ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
3711                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3712                    ; line_number = 123
3713                    ;  if rb2bus_error start
3714                    ;info   123, 461
3715                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
3716                    ; 1TEST: Single test with code in skip slot
3717 01cd 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
3718                    ; line_number = 124
3719                    ; return 0 start
3720                    ; line_number = 124
3721                    ;info   124, 462
3722 01ce 3400          retlw   0
3723                    ; line_number = 124
3724                    ; return 0 done
3725            
3726                    ; Recombine size1 = 0 || size2 = 0
3727                    ; line_number = 123
3728                    ;  if rb2bus_error done
3729                    ; # Wait for a byte to arrive.
3730                    ; line_number = 127
3731                    ;  _adden := _false
3732                    ;info   127, 463
3733 01cf 1197          bcf     _adden___byte, _adden___bit
3734                    ; line_number = 128
3735                    ;  while !_rcif start
3736   01d0 :   rb2bus_byte_get__1:
3737                    ;info   128, 464
3738                    ; =>bit_code_emit@symbol(): sym=_rcif
3739                    ; No 1TEST: true.size=0 false.size=2
3740                    ; No 2TEST: true.size=0 false.size=2
3741                    ; 1GOTO: Single test with GOTO
3742 01d0 1a8c          btfsc   _rcif___byte, _rcif___bit
3743 01d1 29d4          goto    rb2bus_byte_get__2
3744                    ; line_number = 129
3745                    ; call wait()
3746                    ;info   129, 466
3747 01d2 2150          call    wait
3748            
3749 01d3 29d0          goto    rb2bus_byte_get__1
3750   01d4 :   rb2bus_byte_get__2:
3751                    ; Recombine size1 = 0 || size2 = 0
3752                    ; line_number = 128
3753                    ;  while !_rcif done
3754                    ; # Record the 9th bit in {address_bit}:
3755                    ; line_number = 132
3756                    ;  address_bit := _false
3757                    ;info   132, 468
3758 01d4 11ef          bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3759                    ; line_number = 133
3760                    ;  if _rx9d start
3761                    ;info   133, 469
3762                    ; =>bit_code_emit@symbol(): sym=_rx9d
3763                    ; 1TEST: Single test with code in skip slot
3764 01d5 1817          btfsc   _rx9d___byte, _rx9d___bit
3765                    ; line_number = 134
3766                    ; address_bit := _true
3767                    ;info   134, 470
3768 01d6 15ef          bsf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3769                    ; Recombine size1 = 0 || size2 = 0
3770                    ; line_number = 133
3771                    ;  if _rx9d done
3772                    ; line_number = 135
3773                    ; value := _rcreg
3774                    ;info   135, 471
3775 01d7 0814          movf    _rcreg,w
3776 01d8 00a3          movwf   rb2bus_byte_get__value
3777            
3778                    ; # Clear any errors by toggling _{cren}:
3779                    ; # FIXME: All of this should be done *before* reading {_rcreg}!!!
3780                    ; line_number = 139
3781                    ;  if _oerr start
3782                    ;info   139, 473
3783                    ; =>bit_code_emit@symbol(): sym=_oerr
3784                    ; 1TEST: Single test with code in skip slot
3785 01d9 1897          btfsc   _oerr___byte, _oerr___bit
3786                    ; line_number = 140
3787                    ; _cren := _false
3788                    ;info   140, 474
3789 01da 1217          bcf     _cren___byte, _cren___bit
3790                    ; Recombine size1 = 0 || size2 = 0
3791                    ; line_number = 139
3792                    ;  if _oerr done
3793                    ; line_number = 141
3794                    ; if _ferr start
3795                    ;info   141, 475
3796                    ; =>bit_code_emit@symbol(): sym=_ferr
3797                    ; 1TEST: Single test with code in skip slot
3798 01db 1917          btfsc   _ferr___byte, _ferr___bit
3799                    ; line_number = 142
3800                    ; _cren := _false
3801                    ;info   142, 476
3802 01dc 1217          bcf     _cren___byte, _cren___bit
3803                    ; Recombine size1 = 0 || size2 = 0
3804                    ; line_number = 141
3805                    ; if _ferr done
3806                    ; line_number = 143
3807                    ; _cren := _true
3808                    ;info   143, 477
3809 01dd 1617          bsf     _cren___byte, _cren___bit
3810            
3811                    ; line_number = 145
3812                    ;  if address_bit start
3813                    ;info   145, 478
3814                    ; =>bit_code_emit@symbol(): sym=rb2bus_byte_get__address_bit
3815                    ; No 1TEST: true.size=13 false.size=0
3816                    ; No 2TEST: true.size=13 false.size=0
3817                    ; 1GOTO: Single test with GOTO
3818 01de 1def          btfss   rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
3819 01df 29ed          goto    rb2bus_byte_get__5
3820                    ; # We have an unexpected address select coming in:
3821                    ; line_number = 147
3822                    ;  if value = rb2bus_address start
3823                    ;info   147, 480
3824                    ; Left minus Right
3825 01e0 0820          movf    rb2bus_address,w
3826 01e1 0223          subwf   rb2bus_byte_get__value,w
3827                    ; =>bit_code_emit@symbol(): sym=__z
3828                    ; No 1TEST: true.size=4 false.size=2
3829                    ; No 2TEST: true.size=4 false.size=2
3830                    ; 2GOTO: Single test with two GOTO's
3831 01e2 1d03          btfss   __z___byte, __z___bit
3832 01e3 29e9          goto    rb2bus_byte_get__3
3833                    ; # We are being selected again:
3834                    ; line_number = 149
3835                    ;  rb2bus_selected := _true
3836                    ;info   149, 484
3837 01e4 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
3838                    ; line_number = 150
3839                    ;  _adden := _false
3840                    ;info   150, 485
3841 01e5 1197          bcf     _adden___byte, _adden___bit
3842            
3843                    ; line_number = 152
3844                    ;  call rb2bus_byte_put(rb2_ok)
3845                    ;info   152, 486
3846 01e6 30a5          movlw   165
3847 01e7 21ef          call    rb2bus_byte_put
3848 01e8 29eb          goto    rb2bus_byte_get__4
3849                    ; 2GOTO: Starting code 2
3850   01e9 :   rb2bus_byte_get__3:
3851                    ; # Somebody else is being selected; we deselect:
3852                    ; line_number = 155
3853                    ;  rb2bus_selected := _false
3854                    ;info   155, 489
3855 01e9 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
3856                    ; line_number = 156
3857                    ;  _adden := _true
3858                    ;info   156, 490
3859 01ea 1597          bsf     _adden___byte, _adden___bit
3860            
3861   01eb :   rb2bus_byte_get__4:
3862                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3863                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3864                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3865                    ; line_number = 147
3866                    ;  if value = rb2bus_address done
3867                    ; # We want to get back to the beginning of decode:
3868                    ; line_number = 159
3869                    ;  rb2bus_error := _true
3870                    ;info   159, 491
3871 01eb 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
3872                    ; line_number = 160
3873                    ;  value := 0
3874                    ;info   160, 492
3875 01ec 01a3          clrf    rb2bus_byte_get__value
3876            
3877                    ; Recombine size1 = 0 || size2 = 0
3878   01ed :   rb2bus_byte_get__5:
3879                    ; line_number = 145
3880                    ;  if address_bit done
3881                    ; # Regular data byte:
3882                    ; line_number = 163
3883                    ;  return value start
3884                    ; line_number = 163
3885                    ;info   163, 493
3886 01ed 0823          movf    rb2bus_byte_get__value,w
3887 01ee 0008          return  
3888                    ; line_number = 163
3889                    ;  return value done
3890            
3891            
3892                    ; delay after procedure statements=non-uniform
3893            
3894            
3895            
3896            
3897                    ; line_number = 166
3898                    ;info   166, 495
3899                    ; procedure rb2bus_byte_put
3900   01ef :   rb2bus_byte_put:
3901                    ; Last argument is sitting in W; save into argument variable
3902 01ef 00a4          movwf   rb2bus_byte_put__value
3903                    ; delay=4294967295
3904                    ; line_number = 167
3905                    ; argument value byte
3906 00000024 = rb2bus_byte_put__value equ globals___0+4
3907                    ; line_number = 168
3908                    ;  returns_nothing
3909            
3910                    ; # This procedure will send {value} to the bus.  It automatically
3911                    ; # consumes the echo that is on the bus.  If {rb2bus_error} is
3912                    ; # set, this procedure does nothing.
3913            
3914                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
3915                    ; line_number = 174
3916                    ;  if !rb2bus_error start
3917                    ;info   174, 496
3918                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
3919                    ; No 1TEST: true.size=0 false.size=16
3920                    ; No 2TEST: true.size=0 false.size=16
3921                    ; 1GOTO: Single test with GOTO
3922 01f0 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
3923 01f1 2a02          goto    rb2bus_byte_put__4
3924                    ; # Wait until {_txreg} is ready for a value:
3925                    ; line_number = 176
3926                    ;  while !_txif start
3927   01f2 :   rb2bus_byte_put__1:
3928                    ;info   176, 498
3929                    ; =>bit_code_emit@symbol(): sym=_txif
3930                    ; No 1TEST: true.size=0 false.size=2
3931                    ; No 2TEST: true.size=0 false.size=2
3932                    ; 1GOTO: Single test with GOTO
3933 01f2 188c          btfsc   _txif___byte, _txif___bit
3934 01f3 29f6          goto    rb2bus_byte_put__2
3935                    ; line_number = 177
3936                    ; call wait()
3937                    ;info   177, 500
3938 01f4 2150          call    wait
3939            
3940 01f5 29f2          goto    rb2bus_byte_put__1
3941   01f6 :   rb2bus_byte_put__2:
3942                    ; Recombine size1 = 0 || size2 = 0
3943                    ; line_number = 176
3944                    ;  while !_txif done
3945                    ; # Ship {value} out to the bus with 9th bit turned off:
3946                    ; line_number = 180
3947                    ;  _adden := _false
3948                    ;info   180, 502
3949 01f6 1197          bcf     _adden___byte, _adden___bit
3950                    ; line_number = 181
3951                    ;  _tx9d := _false
3952                    ;info   181, 503
3953 01f7 1016          bcf     _tx9d___byte, _tx9d___bit
3954                    ; line_number = 182
3955                    ;  _txreg := value
3956                    ;info   182, 504
3957 01f8 0824          movf    rb2bus_byte_put__value,w
3958 01f9 0095          movwf   _txreg
3959            
3960                    ; # Wait for the echo to show up:
3961                    ; line_number = 185
3962                    ;  while !_rcif start
3963   01fa :   rb2bus_byte_put__3:
3964                    ;info   185, 506
3965                    ; =>bit_code_emit@symbol(): sym=_rcif
3966                    ; 1TEST: Single test with code in skip slot
3967 01fa 1e8c          btfss   _rcif___byte, _rcif___bit
3968                    ; # Still waiting:
3969 01fb 29fa          goto    rb2bus_byte_put__3
3970                    ; Recombine size1 = 0 || size2 = 0
3971                    ; line_number = 185
3972                    ;  while !_rcif done
3973                    ; # Throw the received byte away (store into {_w}).
3974                    ; line_number = 188
3975                    ;  assemble
3976                    ;info   188, 508
3977                    ; line_number = 189
3978                    ;info   189, 508
3979 01fc 0814          movf    _rcreg,w
3980            
3981                    ; # Recover from any receive errors by toggling {_cren}:
3982                    ; line_number = 192
3983                    ;  if _oerr start
3984                    ;info   192, 509
3985                    ; =>bit_code_emit@symbol(): sym=_oerr
3986                    ; 1TEST: Single test with code in skip slot
3987 01fd 1897          btfsc   _oerr___byte, _oerr___bit
3988                    ; line_number = 193
3989                    ; _cren := _false
3990                    ;info   193, 510
3991 01fe 1217          bcf     _cren___byte, _cren___bit
3992                    ; Recombine size1 = 0 || size2 = 0
3993                    ; line_number = 192
3994                    ;  if _oerr done
3995                    ; line_number = 194
3996                    ; if _ferr start
3997                    ;info   194, 511
3998                    ; =>bit_code_emit@symbol(): sym=_ferr
3999                    ; 1TEST: Single test with code in skip slot
4000 01ff 1917          btfsc   _ferr___byte, _ferr___bit
4001                    ; line_number = 195
4002                    ; _cren := _false
4003                    ;info   195, 512
4004 0200 1217          bcf     _cren___byte, _cren___bit
4005                    ; Recombine size1 = 0 || size2 = 0
4006                    ; line_number = 194
4007                    ; if _ferr done
4008                    ; line_number = 196
4009                    ; _cren := _true
4010                    ;info   196, 513
4011 0201 1617          bsf     _cren___byte, _cren___bit
4012            
4013            
4014   0202 :   rb2bus_byte_put__4:
4015                    ; Recombine size1 = 0 || size2 = 0
4016                    ; line_number = 174
4017                    ;  if !rb2bus_error done
4018                    ; delay after procedure statements=non-uniform
4019                    ; Implied return
4020 0202 3400          retlw   0
4021            
4022            
4023            
4024            
4025                    ; line_number = 199
4026                    ;info   199, 515
4027                    ; procedure rb2bus_command
4028   0203 :   rb2bus_command:
4029                    ; Last argument is sitting in W; save into argument variable
4030 0203 00a7          movwf   rb2bus_command__command
4031                    ; delay=4294967295
4032                    ; line_number = 200
4033                    ; argument command byte
4034 00000027 = rb2bus_command__command equ globals___0+7
4035                    ; line_number = 201
4036                    ;  returns_nothing
4037            
4038                    ; # This procedure will process an shared {command}.  This procedure
4039                    ; # accesses the global string {id}.
4040            
4041                    ; line_number = 206
4042                    ;  local new_address byte
4043 00000025 = rb2bus_command__new_address equ globals___0+5
4044                    ; line_number = 207
4045                    ;  local temp byte
4046 00000026 = rb2bus_command__temp equ globals___0+6
4047            
4048                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
4049                    ; line_number = 209
4050                    ;  switch command & 7 start
4051                    ;info   209, 516
4052                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
4053 0204 3002          movlw   rb2bus_command__13>>8
4054 0205 008a          movwf   __pclath
4055 0206 3007          movlw   7
4056 0207 0527          andwf   rb2bus_command__command,w
4057                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
4058 0208 3e0a          addlw   rb2bus_command__13
4059 0209 0082          movwf   __pcl
4060                    ; page_group 8
4061   020a :   rb2bus_command__13:
4062 020a 2a4a          goto    rb2bus_command__14
4063 020b 2a4a          goto    rb2bus_command__14
4064 020c 2a4a          goto    rb2bus_command__14
4065 020d 2a4a          goto    rb2bus_command__14
4066 020e 2a12          goto    rb2bus_command__9
4067 020f 2a3e          goto    rb2bus_command__10
4068 0210 2a47          goto    rb2bus_command__11
4069 0211 2a49          goto    rb2bus_command__12
4070                    ; line_number = 210
4071                    ; case 4
4072   0212 :   rb2bus_command__9:
4073                    ; # 1111 1100 (Address_Set):
4074                    ; # Return old address:
4075                    ; line_number = 213
4076                    ;  call rb2bus_byte_put(rb2bus_address)
4077                    ;info   213, 530
4078 0212 0820          movf    rb2bus_address,w
4079 0213 21ef          call    rb2bus_byte_put
4080            
4081                    ; # Fetch new address:
4082                    ; line_number = 216
4083                    ;  new_address := rb2bus_byte_get()
4084                    ;info   216, 532
4085 0214 21cd          call    rb2bus_byte_get
4086 0215 00a5          movwf   rb2bus_command__new_address
4087                    ; line_number = 217
4088                    ;  if new_address = 0 || new_address = rb2bus_address start
4089                    ;info   217, 534
4090                    ; Left minus Right
4091 0216 0825          movf    rb2bus_command__new_address,w
4092                    ; =>bit_code_emit@symbol(): sym=__z
4093                    ; No 1TEST: true.size=1 false.size=36
4094                    ; No 2TEST: true.size=1 false.size=36
4095                    ; 2GOTO: Single test with two GOTO's
4096 0217 1903          btfsc   __z___byte, __z___bit
4097 0218 2a1d          goto    rb2bus_command__5
4098                    ; Recombine code1_bit_states != code2_bit_states
4099                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4100                    ; Left minus Right
4101 0219 0820          movf    rb2bus_address,w
4102 021a 0225          subwf   rb2bus_command__new_address,w
4103                    ; =>bit_code_emit@symbol(): sym=__z
4104                    ; No 1TEST: true.size=4 false.size=27
4105                    ; No 2TEST: true.size=4 false.size=27
4106                    ; 2GOTO: Single test with two GOTO's
4107 021b 1d03          btfss   __z___byte, __z___bit
4108 021c 2a22          goto    rb2bus_command__6
4109   021d :   rb2bus_command__5:
4110                    ; line_number = 218
4111                    ; call rb2bus_byte_put(0)
4112                    ;info   218, 541
4113 021d 3000          movlw   0
4114 021e 21ef          call    rb2bus_byte_put
4115                    ; line_number = 219
4116                    ;  rb2bus_error := _true
4117                    ;info   219, 543
4118 021f 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
4119                    ; line_number = 220
4120                    ;  rb2bus_selected := _false
4121                    ;info   220, 544
4122 0220 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4123 0221 2a3d          goto    rb2bus_command__7
4124                    ; 2GOTO: Starting code 2
4125   0222 :   rb2bus_command__6:
4126                    ; # Return new address:
4127                    ; line_number = 223
4128                    ;  call rb2bus_byte_put(new_address)
4129                    ;info   223, 546
4130 0222 0825          movf    rb2bus_command__new_address,w
4131 0223 21ef          call    rb2bus_byte_put
4132            
4133                    ; # Fetch new address again as a check:
4134                    ; line_number = 226
4135                    ;  temp := rb2bus_byte_get()
4136                    ;info   226, 548
4137 0224 21cd          call    rb2bus_byte_get
4138 0225 00a6          movwf   rb2bus_command__temp
4139                    ; line_number = 227
4140                    ;  if temp != new_address start
4141                    ;info   227, 550
4142                    ; Left minus Right
4143 0226 0825          movf    rb2bus_command__new_address,w
4144 0227 0226          subwf   rb2bus_command__temp,w
4145                    ; =>bit_code_emit@symbol(): sym=__z
4146                    ; No 1TEST: true.size=14 false.size=4
4147                    ; No 2TEST: true.size=14 false.size=4
4148                    ; 2GOTO: Single test with two GOTO's
4149 0228 1d03          btfss   __z___byte, __z___bit
4150 0229 2a39          goto    rb2bus_command__3
4151                    ; line_number = 232
4152                    ; call rb2bus_eedata_write(new_address)
4153                    ;info   232, 554
4154 022a 0825          movf    rb2bus_command__new_address,w
4155 022b 227e          call    rb2bus_eedata_write
4156                    ; line_number = 233
4157                    ;  temp := rb2bus_eedata_read()
4158                    ;info   233, 556
4159 022c 2269          call    rb2bus_eedata_read
4160 022d 00a6          movwf   rb2bus_command__temp
4161                    ; line_number = 234
4162                    ;  if temp = new_address start
4163                    ;info   234, 558
4164                    ; Left minus Right
4165 022e 0825          movf    rb2bus_command__new_address,w
4166 022f 0226          subwf   rb2bus_command__temp,w
4167                    ; =>bit_code_emit@symbol(): sym=__z
4168                    ; No 1TEST: true.size=3 false.size=1
4169                    ; No 2TEST: true.size=3 false.size=1
4170                    ; 2GOTO: Single test with two GOTO's
4171 0230 1d03          btfss   __z___byte, __z___bit
4172 0231 2a36          goto    rb2bus_command__1
4173                    ; line_number = 235
4174                    ; rb2bus_address := new_address
4175                    ;info   235, 562
4176 0232 0825          movf    rb2bus_command__new_address,w
4177 0233 00a0          movwf   rb2bus_address
4178                    ; line_number = 236
4179                    ;  call rb2bus_byte_put(rb2_ok)
4180                    ;info   236, 564
4181 0234 30a5          movlw   165
4182 0235 2a37          goto    rb2bus_command__2
4183                    ; 2GOTO: Starting code 2
4184   0236 :   rb2bus_command__1:
4185                    ; line_number = 238
4186                    ; call rb2bus_byte_put(0)
4187                    ;info   238, 566
4188 0236 3000          movlw   0
4189   0237 :   rb2bus_command__2:
4190                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4191                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4192                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4193 0237 21ef          call    rb2bus_byte_put
4194                    ; line_number = 234
4195                    ;  if temp = new_address done
4196 0238 2a3d          goto    rb2bus_command__4
4197                    ; 2GOTO: Starting code 2
4198   0239 :   rb2bus_command__3:
4199                    ; line_number = 228
4200                    ; call rb2bus_byte_put(0)
4201                    ;info   228, 569
4202 0239 3000          movlw   0
4203 023a 21ef          call    rb2bus_byte_put
4204                    ; line_number = 229
4205                    ;  rb2bus_error := _true
4206                    ;info   229, 571
4207 023b 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
4208                    ; line_number = 230
4209                    ;  rb2bus_selected := _false
4210                    ;info   230, 572
4211 023c 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4212   023d :   rb2bus_command__4:
4213                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4214                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4215                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4216                    ; line_number = 227
4217                    ;  if temp != new_address done
4218   023d :   rb2bus_command__7:
4219                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4220                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4221                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4222                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4223                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
4224                    ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
4225                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4226                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
4227                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4228                    ; line_number = 217
4229                    ;  if new_address = 0 || new_address = rb2bus_address done
4230 023d 2a4a          goto    rb2bus_command__14
4231                    ; line_number = 239
4232                    ; case 5
4233   023e :   rb2bus_command__10:
4234                    ; # 1111 1101 (Id_next):
4235                    ; line_number = 241
4236                    ;  if rb2bus_index < id.size start
4237                    ;info   241, 574
4238 023e 301b          movlw   27
4239 023f 0221          subwf   rb2bus_index,w
4240                    ; =>bit_code_emit@symbol(): sym=__c
4241                    ; No 1TEST: true.size=0 false.size=4
4242                    ; No 2TEST: true.size=0 false.size=4
4243                    ; 1GOTO: Single test with GOTO
4244 0240 1803          btfsc   __c___byte, __c___bit
4245 0241 2a46          goto    rb2bus_command__8
4246                    ; line_number = 242
4247                    ; call rb2bus_byte_put(id[rb2bus_index])
4248                    ;info   242, 578
4249 0242 0821          movf    rb2bus_index,w
4250 0243 218d          call    id
4251 0244 21ef          call    rb2bus_byte_put
4252                    ; line_number = 243
4253                    ;  rb2bus_index := rb2bus_index + 1
4254                    ;info   243, 581
4255 0245 0aa1          incf    rb2bus_index,f
4256                    ; #if rb2bus_index >= id.size
4257                    ; #	rb2bus_index := rb2bus_index - 1
4258   0246 :   rb2bus_command__8:
4259                    ; Recombine size1 = 0 || size2 = 0
4260                    ; line_number = 241
4261                    ;  if rb2bus_index < id.size done
4262 0246 2a4a          goto    rb2bus_command__14
4263                    ; line_number = 246
4264                    ; case 6
4265   0247 :   rb2bus_command__11:
4266                    ; # 1111 1110 (Id_start):
4267                    ; line_number = 248
4268                    ;  rb2bus_index := 0
4269                    ;info   248, 583
4270 0247 01a1          clrf    rb2bus_index
4271 0248 2a4a          goto    rb2bus_command__14
4272                    ; line_number = 249
4273                    ; case 7
4274   0249 :   rb2bus_command__12:
4275                    ; # 1111 1111 (Deselect):
4276                    ; line_number = 251
4277                    ;  call rb2bus_deselect()
4278                    ;info   251, 585
4279 0249 21cb          call    rb2bus_deselect
4280            
4281            
4282   024a :   rb2bus_command__14:
4283                    ; line_number = 209
4284                    ;  switch command & 7 done
4285                    ; delay after procedure statements=non-uniform
4286                    ; Implied return
4287 024a 3400          retlw   0
4288            
4289            
4290            
4291            
4292                    ; buffer = 'rb2bus_pic16f688'
4293                    ; line_number = 18
4294                    ;info   18, 587
4295                    ; procedure rb2bus_initialize
4296   024b :   rb2bus_initialize:
4297                    ; Last argument is sitting in W; save into argument variable
4298 024b 00a8          movwf   rb2bus_initialize__address
4299                    ; delay=4294967295
4300                    ; line_number = 19
4301                    ; argument address byte
4302 00000028 = rb2bus_initialize__address equ globals___0+8
4303                    ; line_number = 20
4304                    ;  returns_nothing
4305            
4306                    ; # This procedure is responsibile for initializing the UART
4307                    ; # connected to the bus.  {address} is the address of this
4308                    ; # slave module.  This code is specific to the PIC16F688.
4309            
4310                    ; # Warm up the UART:
4311                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
4312                    ; line_number = 27
4313                    ;  _trisc@5 := _true
4314                    ;info   27, 588
4315 00000087 = rb2bus_initialize__select__1___byte equ _trisc
4316 00000005 = rb2bus_initialize__select__1___bit equ 5
4317 024c 1683          bsf     __rp0___byte, __rp0___bit
4318 024d 1687          bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
4319                    ; line_number = 28
4320                    ;  _trisc@4 := _true
4321                    ;info   28, 590
4322 00000087 = rb2bus_initialize__select__2___byte equ _trisc
4323 00000004 = rb2bus_initialize__select__2___bit equ 4
4324 024e 1607          bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit
4325            
4326                    ; # Initialize the {_txsta} register:
4327                    ; line_number = 31
4328                    ;  _txsta := 0
4329                    ;info   31, 591
4330 024f 1283          bcf     __rp0___byte, __rp0___bit
4331 0250 0196          clrf    _txsta
4332                    ; line_number = 32
4333                    ;  _tx9 := _true
4334                    ;info   32, 593
4335 0251 1716          bsf     _tx9___byte, _tx9___bit
4336                    ; #_tx9 := _false
4337                    ; line_number = 34
4338                    ;  _txen := _true
4339                    ;info   34, 594
4340 0252 1696          bsf     _txen___byte, _txen___bit
4341                    ; line_number = 35
4342                    ;  _brgh := _true
4343                    ;info   35, 595
4344 0253 1516          bsf     _brgh___byte, _brgh___bit
4345            
4346                    ; # Initialize the {_rcsta} register:
4347                    ; line_number = 38
4348                    ;  _rcsta := 0
4349                    ;info   38, 596
4350 0254 0197          clrf    _rcsta
4351                    ; line_number = 39
4352                    ;  _spen := _true
4353                    ;info   39, 597
4354 0255 1797          bsf     _spen___byte, _spen___bit
4355                    ; line_number = 40
4356                    ;  _rx9 := _true
4357                    ;info   40, 598
4358 0256 1717          bsf     _rx9___byte, _rx9___bit
4359                    ; line_number = 41
4360                    ;  _cren := _true
4361                    ;info   41, 599
4362 0257 1617          bsf     _cren___byte, _cren___bit
4363                    ; #_adden := _true
4364                    ; line_number = 43
4365                    ;  _adden := _false
4366                    ;info   43, 600
4367 0258 1197          bcf     _adden___byte, _adden___bit
4368            
4369                    ; # Set up the baud rate generator:
4370                    ; line_number = 46
4371                    ;  _baudctl := 0
4372                    ;info   46, 601
4373 0259 0191          clrf    _baudctl
4374                    ; line_number = 47
4375                    ;  _brg16 := _true
4376                    ;info   47, 602
4377 025a 1591          bsf     _brg16___byte, _brg16___bit
4378                    ; line_number = 48
4379                    ;  _spbrg := _eusart_500000_low
4380                    ;info   48, 603
4381 025b 3009          movlw   9
4382 025c 0093          movwf   _spbrg
4383                    ; line_number = 49
4384                    ;  _spbrgh := _eusart_500000_high
4385                    ;info   49, 605
4386 025d 0192          clrf    _spbrgh
4387            
4388                    ; line_number = 51
4389                    ;  rb2bus_selected := _false
4390                    ;info   51, 606
4391 025e 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4392                    ; line_number = 52
4393                    ;  rb2bus_error := _false
4394                    ;info   52, 607
4395 025f 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
4396                    ; line_number = 53
4397                    ;  rb2bus_index := 0
4398                    ;info   53, 608
4399 0260 01a1          clrf    rb2bus_index
4400            
4401                    ; # Deal with setting {rb2bus_address} from EEData memory:
4402                    ; line_number = 56
4403                    ;  rb2bus_address := rb2bus_eedata_read()
4404                    ;info   56, 609
4405 0261 2269          call    rb2bus_eedata_read
4406 0262 00a0          movwf   rb2bus_address
4407                    ; line_number = 57
4408                    ;  if rb2bus_address = 0 start
4409                    ;info   57, 611
4410                    ; Left minus Right
4411 0263 0820          movf    rb2bus_address,w
4412                    ; =>bit_code_emit@symbol(): sym=__z
4413                    ; No 1TEST: true.size=2 false.size=0
4414                    ; No 2TEST: true.size=2 false.size=0
4415                    ; 1GOTO: Single test with GOTO
4416 0264 1d03          btfss   __z___byte, __z___bit
4417 0265 2a68          goto    rb2bus_initialize__3
4418                    ; # EE data not set, so use {address} passed in as a argument:
4419                    ; line_number = 59
4420                    ;  rb2bus_address := address
4421                    ;info   59, 614
4422 0266 0828          movf    rb2bus_initialize__address,w
4423 0267 00a0          movwf   rb2bus_address
4424            
4425            
4426                    ; Recombine size1 = 0 || size2 = 0
4427   0268 :   rb2bus_initialize__3:
4428                    ; line_number = 57
4429                    ;  if rb2bus_address = 0 done
4430                    ; delay after procedure statements=non-uniform
4431                    ; Implied return
4432 0268 3400          retlw   0
4433            
4434            
4435            
4436            
4437                    ; line_number = 64
4438                    ;info   64, 617
4439                    ; procedure rb2bus_eedata_read
4440   0269 :   rb2bus_eedata_read:
4441                    ; arguments_none
4442                    ; line_number = 66
4443                    ;  returns byte
4444            
4445                    ; # This procedure will return the address stored in EEData.  If
4446                    ; # there is no data, 0 is returned.
4447            
4448                    ; line_number = 71
4449                    ;  local temp1 byte
4450 00000029 = rb2bus_eedata_read__temp1 equ globals___0+9
4451                    ; line_number = 72
4452                    ;  local temp2 byte
4453 0000002a = rb2bus_eedata_read__temp2 equ globals___0+10
4454            
4455                    ; # Read the first byte (the address):
4456                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
4457                    ; line_number = 75
4458                    ;  _eecon1 := 0
4459                    ;info   75, 617
4460 0269 1683          bsf     __rp0___byte, __rp0___bit
4461 026a 019c          clrf    _eecon1
4462                    ; line_number = 76
4463                    ;  _eeadr := rb2bus_eedata_address
4464                    ;info   76, 619
4465 026b 30fe          movlw   254
4466 026c 009b          movwf   _eeadr
4467                    ; line_number = 77
4468                    ;  _rd := _true
4469                    ;info   77, 621
4470 026d 141c          bsf     _rd___byte, _rd___bit
4471                    ; line_number = 78
4472                    ;  temp1 := _eedat
4473                    ;info   78, 622
4474 026e 081a          movf    _eedat,w
4475 026f 1283          bcf     __rp0___byte, __rp0___bit
4476 0270 00a9          movwf   rb2bus_eedata_read__temp1
4477            
4478                    ; # Read the second byte (the 1'z complement)
4479                    ; line_number = 81
4480                    ;  _eeadr := _eeadr + 1
4481                    ;info   81, 625
4482 0271 1683          bsf     __rp0___byte, __rp0___bit
4483 0272 0a9b          incf    _eeadr,f
4484                    ; line_number = 82
4485                    ;  _rd := _true
4486                    ;info   82, 627
4487 0273 141c          bsf     _rd___byte, _rd___bit
4488                    ; line_number = 83
4489                    ;  temp2 := _eedat
4490                    ;info   83, 628
4491 0274 081a          movf    _eedat,w
4492 0275 1283          bcf     __rp0___byte, __rp0___bit
4493 0276 00aa          movwf   rb2bus_eedata_read__temp2
4494            
4495                    ; # If they are 1's complement of one another, they are valid:
4496                    ; line_number = 86
4497                    ;  if temp1 = (0xff ^ temp2) start
4498                    ;info   86, 631
4499                    ; Left minus Right
4500 0277 092a          comf    rb2bus_eedata_read__temp2,w
4501 0278 0229          subwf   rb2bus_eedata_read__temp1,w
4502                    ; =>bit_code_emit@symbol(): sym=__z
4503                    ; No 1TEST: true.size=2 false.size=0
4504                    ; No 2TEST: true.size=2 false.size=0
4505                    ; 1GOTO: Single test with GOTO
4506 0279 1d03          btfss   __z___byte, __z___bit
4507 027a 2a7d          goto    rb2bus_eedata_read__1
4508                    ; # Return the valid address:
4509                    ; line_number = 88
4510                    ;  return temp1 start
4511                    ; line_number = 88
4512                    ;info   88, 635
4513 027b 0829          movf    rb2bus_eedata_read__temp1,w
4514 027c 0008          return  
4515                    ; line_number = 88
4516                    ;  return temp1 done
4517            
4518                    ; Recombine size1 = 0 || size2 = 0
4519   027d :   rb2bus_eedata_read__1:
4520                    ; line_number = 86
4521                    ;  if temp1 = (0xff ^ temp2) done
4522                    ; # They are not 1's complement, so return 0 as an error:
4523                    ; line_number = 91
4524                    ;  return 0 start
4525                    ; line_number = 91
4526                    ;info   91, 637
4527 027d 3400          retlw   0
4528                    ; line_number = 91
4529                    ;  return 0 done
4530            
4531            
4532                    ; delay after procedure statements=non-uniform
4533            
4534            
4535            
4536            
4537                    ; line_number = 94
4538                    ;info   94, 638
4539                    ; procedure rb2bus_eedata_write
4540   027e :   rb2bus_eedata_write:
4541                    ; Last argument is sitting in W; save into argument variable
4542 027e 00ab          movwf   rb2bus_eedata_write__address
4543                    ; delay=4294967295
4544                    ; line_number = 95
4545                    ; argument address byte
4546 0000002b = rb2bus_eedata_write__address equ globals___0+11
4547                    ; line_number = 96
4548                    ;  returns_nothing
4549            
4550                    ; # This procedure will write {address} into the EEData.  The
4551                    ; # microcontroll pauses while the EEData is written.
4552            
4553                    ; # Clear out the {_eecon1} register
4554                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
4555                    ; line_number = 102
4556                    ;  _eecon1 := 0
4557                    ;info   102, 639
4558 027f 1683          bsf     __rp0___byte, __rp0___bit
4559 0280 019c          clrf    _eecon1
4560                    ; line_number = 103
4561                    ;  _eeadr := rb2bus_eedata_address
4562                    ;info   103, 641
4563 0281 30fe          movlw   254
4564 0282 009b          movwf   _eeadr
4565                    ; line_number = 104
4566                    ;  _eedat := address
4567                    ;info   104, 643
4568 0283 1283          bcf     __rp0___byte, __rp0___bit
4569 0284 082b          movf    rb2bus_eedata_write__address,w
4570 0285 1683          bsf     __rp0___byte, __rp0___bit
4571 0286 009a          movwf   _eedat
4572            
4573                    ; # Write 2 bytes ({address} followed by {address}^0xff):
4574                    ; line_number = 107
4575                    ;  loop_exactly 2 start
4576                    ;info   107, 647
4577 0000006c = rb2bus_eedata_write__1 equ globals___0+76
4578 0287 3002          movlw   2
4579 0288 1283          bcf     __rp0___byte, __rp0___bit
4580 0289 00ec          movwf   rb2bus_eedata_write__1
4581   028a :   rb2bus_eedata_write__2:
4582                    ; # Set the data to write:
4583            
4584                    ; # Set up the for the write:
4585                    ; line_number = 111
4586                    ;  _wren := _true
4587                    ;info   111, 650
4588 028a 1683          bsf     __rp0___byte, __rp0___bit
4589 028b 151c          bsf     _wren___byte, _wren___bit
4590                    ; line_number = 112
4591                    ;  _gie := _false
4592                    ;info   112, 652
4593 028c 138b          bcf     _gie___byte, _gie___bit
4594                    ; line_number = 113
4595                    ;  _eecon2 := 0x55
4596                    ;info   113, 653
4597 028d 3055          movlw   85
4598 028e 009d          movwf   _eecon2
4599                    ; line_number = 114
4600                    ;  _eecon2 := 0xaa
4601                    ;info   114, 655
4602 028f 30aa          movlw   170
4603 0290 009d          movwf   _eecon2
4604                    ; # Start the write:
4605                    ; line_number = 116
4606                    ;  _wr := _true
4607                    ;info   116, 657
4608 0291 149c          bsf     _wr___byte, _wr___bit
4609            
4610                    ; # Wait for write to complete:
4611                    ; line_number = 119
4612                    ;  while _wr start
4613   0292 :   rb2bus_eedata_write__3:
4614                    ;info   119, 658
4615                    ; =>bit_code_emit@symbol(): sym=_wr
4616                    ; 1TEST: Single test with code in skip slot
4617 0292 189c          btfsc   _wr___byte, _wr___bit
4618                    ; line_number = 120
4619                    ; do_nothing
4620                    ;info   120, 659
4621            
4622 0293 2a92          goto    rb2bus_eedata_write__3
4623                    ; Recombine size1 = 0 || size2 = 0
4624                    ; line_number = 119
4625                    ;  while _wr done
4626                    ; # Disable writing:
4627                    ; line_number = 123
4628                    ;  _wren := _false
4629                    ;info   123, 660
4630 0294 111c          bcf     _wren___byte, _wren___bit
4631            
4632                    ; # Prepare the second byte of data:
4633                    ; line_number = 126
4634                    ;  _eeadr := _eeadr + 1
4635                    ;info   126, 661
4636 0295 0a9b          incf    _eeadr,f
4637                    ; line_number = 127
4638                    ;  _eedat := address ^ 0xff
4639                    ;info   127, 662
4640 0296 1283          bcf     __rp0___byte, __rp0___bit
4641 0297 092b          comf    rb2bus_eedata_write__address,w
4642 0298 1683          bsf     __rp0___byte, __rp0___bit
4643 0299 009a          movwf   _eedat
4644            
4645 029a 1283          bcf     __rp0___byte, __rp0___bit
4646                    ; line_number = 107
4647                    ;  loop_exactly 2 wrap-up
4648 029b 0bec          decfsz  rb2bus_eedata_write__1,f
4649 029c 2a8a          goto    rb2bus_eedata_write__2
4650                    ; line_number = 107
4651                    ;  loop_exactly 2 done
4652                    ; delay after procedure statements=non-uniform
4653                    ; Implied return
4654 029d 3400          retlw   0
4655            
4656            
4657            
4658            
4659                    ; buffer = '_signed16'
4660                    ; line_number = 62
4661                    ;info   62, 670
4662                    ; procedure _signed16_pointer_load
4663   029e :   _signed16_pointer_load:
4664                    ; Last argument is sitting in W; save into argument variable
4665 029e 00aa          movwf   _signed16_pointer_load__pointer
4666                    ; delay=4294967295
4667                    ; line_number = 63
4668                    ; argument pointer byte
4669 000000aa = _signed16_pointer_load__pointer equ globals___1+10
4670                    ; line_number = 64
4671                    ;  returns_nothing
4672                    ; line_number = 65
4673                    ;  return_suppress
4674            
4675                    ; # This procedure will load the signed16 "A" register with {pointer}.
4676            
4677                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
4678                    ; line_number = 69
4679                    ;  assemble
4680                    ;info   69, 671
4681                    ; # Pointer is in W; move it to {_fsr}:
4682                    ; line_number = 71
4683                    ;info   71, 671
4684 029f 0084          movwf   _fsr
4685                    ; # Set up {_irp} and _{fsr}:
4686                    ; line_number = 73
4687                    ;info   73, 672
4688 02a0 1383          bcf     _irp___byte, _irp___bit
4689                    ; line_number = 74
4690                    ;info   74, 673
4691 02a1 0d84          rlf     _fsr,f
4692                    ; line_number = 75
4693                    ;info   75, 674
4694 02a2 1803          btfsc   _c___byte, _c___bit
4695                    ; line_number = 76
4696                    ;info   76, 675
4697 02a3 1783          bsf     _irp___byte, _irp___bit
4698                    ; line_number = 77
4699                    ;info   77, 676
4700 02a4 1004          bcf     _fsr, 0
4701                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}
4702                    ; line_number = 79
4703                    ;info   79, 677
4704 02a5 0800          movf    _indf,w
4705                    ; line_number = 80
4706                    ;info   80, 678
4707 02a6 00a0          movwf   _signed16_a0
4708                    ; line_number = 81
4709                    ;info   81, 679
4710 02a7 0a84          incf    _fsr,f
4711                    ; line_number = 82
4712                    ;info   82, 680
4713 02a8 0800          movf    _indf,w
4714                    ; line_number = 83
4715                    ;info   83, 681
4716 02a9 00a1          movwf   _signed16_a1
4717                    ; line_number = 84
4718                    ;info   84, 682
4719 02aa 0008          return  
4720            
4721            
4722                    ; delay after procedure statements=non-uniform
4723                    ; Return instruction suppressed by 'return_suppress'
4724            
4725            
4726            
4727            
4728                    ; line_number = 87
4729                    ;info   87, 683
4730                    ; procedure _signed16_pointer_add
4731   02ab :   _signed16_pointer_add:
4732                    ; Last argument is sitting in W; save into argument variable
4733 02ab 00ab          movwf   _signed16_pointer_add__pointer
4734                    ; delay=4294967295
4735                    ; line_number = 88
4736                    ; argument pointer byte
4737 000000ab = _signed16_pointer_add__pointer equ globals___1+11
4738                    ; line_number = 89
4739                    ;  returns_nothing
4740                    ; line_number = 90
4741                    ;  return_suppress
4742            
4743                    ; # This procedure will add the signed16 "A" register with {pointer}
4744                    ; # and store the result back into the "A" register.
4745            
4746                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
4747                    ; line_number = 95
4748                    ;  assemble
4749                    ;info   95, 684
4750                    ; # Pointer is in W; move it to {_fsr}:
4751                    ; line_number = 97
4752                    ;info   97, 684
4753 02ac 0084          movwf   _fsr
4754                    ; # Set up {_irp} and _{fsr}:
4755                    ; line_number = 99
4756                    ;info   99, 685
4757 02ad 1383          bcf     _irp___byte, _irp___bit
4758                    ; line_number = 100
4759                    ;info   100, 686
4760 02ae 0d84          rlf     _fsr,f
4761                    ; line_number = 101
4762                    ;info   101, 687
4763 02af 1803          btfsc   _c___byte, _c___bit
4764                    ; line_number = 102
4765                    ;info   102, 688
4766 02b0 1783          bsf     _irp___byte, _irp___bit
4767                    ; line_number = 103
4768                    ;info   103, 689
4769 02b1 1004          bcf     _fsr, 0
4770                    ; # Grab MSB and add it into {_signed16_a0} (MSB):
4771                    ; line_number = 105
4772                    ;info   105, 690
4773 02b2 0800          movf    _indf,w
4774                    ; line_number = 106
4775                    ;info   106, 691
4776 02b3 07a0          addwf   _signed16_a0,f
4777                    ; line_number = 107
4778                    ;info   107, 692
4779 02b4 0a84          incf    _fsr,f
4780            
4781                    ; # Grab LSB and add it into {_signed16_a1} (LSB):
4782                    ; line_number = 110
4783                    ;info   110, 693
4784 02b5 0800          movf    _indf,w
4785                    ; line_number = 111
4786                    ;info   111, 694
4787 02b6 07a1          addwf   _signed16_a1,f
4788            
4789                    ; # If C is 1, increment {_signed16_a0} (MSB):
4790                    ; line_number = 114
4791                    ;info   114, 695
4792 02b7 1803          btfsc   _c___byte, _c___bit
4793                    ; line_number = 115
4794                    ;info   115, 696
4795 02b8 0aa0          incf    _signed16_a0,f
4796                    ; line_number = 116
4797                    ;info   116, 697
4798 02b9 0008          return  
4799            
4800            
4801                    ; delay after procedure statements=non-uniform
4802                    ; Return instruction suppressed by 'return_suppress'
4803            
4804            
4805            
4806            
4807                    ; line_number = 119
4808                    ;info   119, 698
4809                    ; procedure _signed16_pointer_divide
4810   02ba :   _signed16_pointer_divide:
4811                    ; Last argument is sitting in W; save into argument variable
4812 02ba 00ac          movwf   _signed16_pointer_divide__pointer
4813                    ; delay=4294967295
4814                    ; line_number = 120
4815                    ; argument pointer byte
4816 000000ac = _signed16_pointer_divide__pointer equ globals___1+12
4817                    ; line_number = 121
4818                    ;  returns_nothing
4819                    ; line_number = 122
4820                    ;  return_suppress
4821            
4822                    ; # This procedure will divide the signed16 A register by {pointer} and
4823                    ; # store the result back into the A "register".
4824            
4825                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
4826                    ; line_number = 127
4827                    ;  assemble
4828                    ;info   127, 699
4829                    ; # Pointer is in W; move it to {_fsr}:
4830                    ; line_number = 129
4831                    ;info   129, 699
4832 02bb 0084          movwf   _fsr
4833                    ; # Set up {_irp} and _{fsr}:
4834                    ; line_number = 131
4835                    ;info   131, 700
4836 02bc 1383          bcf     _irp___byte, _irp___bit
4837                    ; line_number = 132
4838                    ;info   132, 701
4839 02bd 0d84          rlf     _fsr,f
4840                    ; line_number = 133
4841                    ;info   133, 702
4842 02be 1803          btfsc   _c___byte, _c___bit
4843                    ; line_number = 134
4844                    ;info   134, 703
4845 02bf 1783          bsf     _irp___byte, _irp___bit
4846                    ; line_number = 135
4847                    ;info   135, 704
4848 02c0 1004          bcf     _fsr, 0
4849                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
4850                    ; line_number = 137
4851                    ;info   137, 705
4852 02c1 0800          movf    _indf,w
4853                    ; line_number = 138
4854                    ;info   138, 706
4855 02c2 00a2          movwf   _signed16_b0
4856                    ; line_number = 139
4857                    ;info   139, 707
4858 02c3 0a84          incf    _fsr,f
4859                    ; line_number = 140
4860                    ;info   140, 708
4861 02c4 0800          movf    _indf,w
4862                    ; line_number = 141
4863                    ;info   141, 709
4864 02c5 00a3          movwf   _signed16_b1
4865            
4866                    ; # Perform the divide:
4867                    ; line_number = 144
4868                    ;info   144, 710
4869 02c6 2390          call    _signed16_divide_raw
4870            
4871                    ; line_number = 146
4872                    ;info   146, 711
4873 02c7 0008          return  
4874            
4875            
4876                    ; delay after procedure statements=non-uniform
4877                    ; Return instruction suppressed by 'return_suppress'
4878            
4879            
4880            
4881            
4882                    ; line_number = 149
4883                    ;info   149, 712
4884                    ; procedure _signed16_pointer_multiply
4885   02c8 :   _signed16_pointer_multiply:
4886                    ; Last argument is sitting in W; save into argument variable
4887 02c8 00ad          movwf   _signed16_pointer_multiply__pointer
4888                    ; delay=4294967295
4889                    ; line_number = 150
4890                    ; argument pointer byte
4891 000000ad = _signed16_pointer_multiply__pointer equ globals___1+13
4892                    ; line_number = 151
4893                    ;  returns_nothing
4894                    ; line_number = 152
4895                    ;  return_suppress
4896            
4897                    ; # This procedure will multiply {pointer} with the signed16 A "register"
4898                    ; # and store the result back into the A "register".
4899            
4900                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
4901                    ; line_number = 157
4902                    ;  assemble
4903                    ;info   157, 713
4904                    ; # Pointer is in W; move it to {_fsr}:
4905                    ; line_number = 159
4906                    ;info   159, 713
4907 02c9 0084          movwf   _fsr
4908                    ; # Set up {_irp} and _{fsr}:
4909                    ; line_number = 161
4910                    ;info   161, 714
4911 02ca 1383          bcf     _irp___byte, _irp___bit
4912                    ; line_number = 162
4913                    ;info   162, 715
4914 02cb 0d84          rlf     _fsr,f
4915                    ; line_number = 163
4916                    ;info   163, 716
4917 02cc 1803          btfsc   _c___byte, _c___bit
4918                    ; line_number = 164
4919                    ;info   164, 717
4920 02cd 1783          bsf     _irp___byte, _irp___bit
4921                    ; line_number = 165
4922                    ;info   165, 718
4923 02ce 1004          bcf     _fsr, 0
4924                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
4925                    ; line_number = 167
4926                    ;info   167, 719
4927 02cf 0800          movf    _indf,w
4928                    ; line_number = 168
4929                    ;info   168, 720
4930 02d0 00a2          movwf   _signed16_b0
4931                    ; line_number = 169
4932                    ;info   169, 721
4933 02d1 0a84          incf    _fsr,f
4934                    ; line_number = 170
4935                    ;info   170, 722
4936 02d2 0800          movf    _indf,w
4937                    ; line_number = 171
4938                    ;info   171, 723
4939 02d3 00a3          movwf   _signed16_b1
4940            
4941                    ; # The code below came from <http://www.piclist.com/>.
4942                    ; # It is not totally clear who wrote the code.  The names
4943                    ; # Bob Fehrenbac & Scott Dattalo are present, but there is
4944                    ; # no explicit authorship.  The Multiple byte addition routine
4945                    ; # is from Microchip AN617.  As is typical, nobody bothered
4946                    ; # to comment the code.
4947                    ; #
4948                    ; # This multiplies <_signed16_a0:_signed16_a1> by
4949                    ; # <_signed16_b0:_signed16_b1> and store the signed result into
4950                    ; # <_signed16_result0:_signed16_result1:_signed16_result2:_signed16_result3>
4951                    ; # Then we trim the result down and store it back into
4952                    ; # <_signed16_a0:_signed16_a1>.
4953                    ; #
4954                    ; # This multiply routine takes between 134 to 248 cycles.
4955                    ; #
4956                    ; # This program looks at the lsb of _signed16_a1 to decide whether
4957                    ; # to add _signed16_b1 to _signed16_result2.
4958                    ; # and b2 to _signed16_result1, with appropriate carrys
4959                    ; # It then looks at the lsb of _signed16_a0 to decide whether
4960                    ; # to add _signed16_b1 to _signed16_result1 and 
4961                    ; # signed16_b0 to _signed16_result0, again with appropriate carrys.
4962                    ; # The rotates then only have to be done 8 times
4963                    ; #
4964                    ; # This is uses slightly more program but takes a little less time than 
4965                    ; # a routine that performs one 16 bit addition per rotate and 16 rotates
4966            
4967                    ; line_number = 199
4968                    ;  assemble
4969                    ;info   199, 724
4970                    ; line_number = 200
4971                    ;info   200, 724
4972 02d4 01a7          clrf    _signed16_result0
4973                    ; line_number = 201
4974                    ;info   201, 725
4975 02d5 01a6          clrf    _signed16_result1
4976                    ; line_number = 202
4977                    ;info   202, 726
4978 02d6 01a5          clrf    _signed16_result2
4979                    ; line_number = 203
4980                    ;info   203, 727
4981 02d7 3080          movlw   128
4982                    ; line_number = 204
4983                    ;info   204, 728
4984 02d8 00a4          movwf   _signed16_result3
4985            
4986                    ; line_number = 206
4987                    ;info   206, 729
4988 02d9 01a8          clrf    _signed16_neg_flag
4989            
4990                    ; line_number = 208
4991                    ;info   208, 730
4992 02da 1fa0          btfss   _signed16_a0, 7
4993                    ; line_number = 209
4994                    ;info   209, 731
4995 02db 2ae2          goto    _signed16_multiply_a_pos
4996                    ; line_number = 210
4997                    ;info   210, 732
4998 02dc 09a0          comf    _signed16_a0,f
4999                    ; line_number = 211
5000                    ;info   211, 733
5001 02dd 09a1          comf    _signed16_a1,f
5002                    ; line_number = 212
5003                    ;info   212, 734
5004 02de 0aa1          incf    _signed16_a1,f
5005                    ; line_number = 213
5006                    ;info   213, 735
5007 02df 1903          btfsc   _z___byte, _z___bit
5008                    ; line_number = 214
5009                    ;info   214, 736
5010 02e0 0aa0          incf    _signed16_a0,f
5011                    ; line_number = 215
5012                    ;info   215, 737
5013 02e1 0aa8          incf    _signed16_neg_flag,f
5014            
5015                    ; line_number = 217
5016   02e2 :   _signed16_multiply_a_pos:
5017                    ; line_number = 218
5018                    ;info   218, 738
5019 02e2 1fa2          btfss   _signed16_b0, 7
5020                    ; line_number = 219
5021                    ;info   219, 739
5022 02e3 2aea          goto    _signed16_multiply_nextbit
5023                    ; line_number = 220
5024                    ;info   220, 740
5025 02e4 09a2          comf    _signed16_b0,f
5026                    ; line_number = 221
5027                    ;info   221, 741
5028 02e5 09a3          comf    _signed16_b1,f
5029                    ; line_number = 222
5030                    ;info   222, 742
5031 02e6 0aa3          incf    _signed16_b1,f
5032                    ; line_number = 223
5033                    ;info   223, 743
5034 02e7 1903          btfsc   _z___byte, _z___bit
5035                    ; line_number = 224
5036                    ;info   224, 744
5037 02e8 0aa2          incf    _signed16_b0,f
5038                    ; line_number = 225
5039                    ;info   225, 745
5040 02e9 0aa8          incf    _signed16_neg_flag,f
5041            
5042                    ; line_number = 227
5043   02ea :   _signed16_multiply_nextbit:
5044                    ; line_number = 228
5045                    ;info   228, 746
5046 02ea 0ca0          rrf     _signed16_a0,f
5047                    ; line_number = 229
5048                    ;info   229, 747
5049 02eb 0ca1          rrf     _signed16_a1,f
5050            
5051                    ; line_number = 231
5052                    ;info   231, 748
5053 02ec 1c03          btfss   _c___byte, _c___bit
5054                    ; line_number = 232
5055                    ;info   232, 749
5056 02ed 2af7          goto    _signed16_multiply_nobit_l
5057                    ; line_number = 233
5058                    ;info   233, 750
5059 02ee 0823          movf    _signed16_b1,w
5060                    ; line_number = 234
5061                    ;info   234, 751
5062 02ef 07a5          addwf   _signed16_result2,f
5063            
5064                    ; line_number = 236
5065                    ;info   236, 752
5066 02f0 0822          movf    _signed16_b0,w
5067                    ; line_number = 237
5068                    ;info   237, 753
5069 02f1 1803          btfsc   _c___byte, _c___bit
5070                    ; line_number = 238
5071                    ;info   238, 754
5072 02f2 0f22          incfsz  _signed16_b0,w
5073                    ; line_number = 239
5074                    ;info   239, 755
5075 02f3 07a6          addwf   _signed16_result1,f
5076                    ; line_number = 240
5077                    ;info   240, 756
5078 02f4 1803          btfsc   _c___byte, _c___bit
5079                    ; line_number = 241
5080                    ;info   241, 757
5081 02f5 0aa7          incf    _signed16_result0,f
5082                    ; line_number = 242
5083                    ;info   242, 758
5084 02f6 1003          bcf     _c___byte, _c___bit
5085            
5086                    ; line_number = 244
5087   02f7 :   _signed16_multiply_nobit_l:
5088                    ; line_number = 245
5089                    ;info   245, 759
5090 02f7 1fa1          btfss   _signed16_a1, 7
5091                    ; line_number = 246
5092                    ;info   246, 760
5093 02f8 2aff          goto    _signed16_multiply_nobit_h
5094                    ; line_number = 247
5095                    ;info   247, 761
5096 02f9 0823          movf    _signed16_b1,w
5097                    ; line_number = 248
5098                    ;info   248, 762
5099 02fa 07a6          addwf   _signed16_result1,f
5100                    ; line_number = 249
5101                    ;info   249, 763
5102 02fb 1803          btfsc   _c___byte, _c___bit
5103                    ; line_number = 250
5104                    ;info   250, 764
5105 02fc 0aa7          incf    _signed16_result0,f
5106                    ; line_number = 251
5107                    ;info   251, 765
5108 02fd 0822          movf    _signed16_b0,w
5109                    ; line_number = 252
5110                    ;info   252, 766
5111 02fe 07a7          addwf   _signed16_result0,f
5112            
5113                    ; line_number = 254
5114   02ff :   _signed16_multiply_nobit_h:
5115                    ; line_number = 255
5116                    ;info   255, 767
5117 02ff 0ca7          rrf     _signed16_result0,f
5118                    ; line_number = 256
5119                    ;info   256, 768
5120 0300 0ca6          rrf     _signed16_result1,f
5121                    ; line_number = 257
5122                    ;info   257, 769
5123 0301 0ca5          rrf     _signed16_result2,f
5124                    ; line_number = 258
5125                    ;info   258, 770
5126 0302 0ca4          rrf     _signed16_result3,f
5127            
5128                    ; line_number = 260
5129                    ;info   260, 771
5130 0303 1c03          btfss   _c___byte, _c___bit
5131                    ; line_number = 261
5132                    ;info   261, 772
5133 0304 2aea          goto    _signed16_multiply_nextbit
5134                    ; line_number = 262
5135                    ;info   262, 773
5136 0305 1c28          btfss   _signed16_neg_flag, 0
5137                    ; line_number = 263
5138                    ;info   263, 774
5139 0306 2b12          goto    _signed16_mulitply_no_invert
5140            
5141                    ; line_number = 265
5142                    ;info   265, 775
5143 0307 09a7          comf    _signed16_result0,f
5144                    ; line_number = 266
5145                    ;info   266, 776
5146 0308 09a6          comf    _signed16_result1,f
5147                    ; line_number = 267
5148                    ;info   267, 777
5149 0309 09a5          comf    _signed16_result2,f
5150                    ; line_number = 268
5151                    ;info   268, 778
5152 030a 09a4          comf    _signed16_result3,f
5153            
5154                    ; line_number = 270
5155                    ;info   270, 779
5156 030b 0aa4          incf    _signed16_result3,f
5157                    ; line_number = 271
5158                    ;info   271, 780
5159 030c 1903          btfsc   _z___byte, _z___bit
5160                    ; line_number = 272
5161                    ;info   272, 781
5162 030d 0aa5          incf    _signed16_result2,f
5163                    ; line_number = 273
5164                    ;info   273, 782
5165 030e 1903          btfsc   _z___byte, _z___bit
5166                    ; line_number = 274
5167                    ;info   274, 783
5168 030f 0aa6          incf    _signed16_result1,f
5169                    ; line_number = 275
5170                    ;info   275, 784
5171 0310 1903          btfsc   _z___byte, _z___bit
5172                    ; line_number = 276
5173                    ;info   276, 785
5174 0311 0aa7          incf    _signed16_result0,f
5175                    ; line_number = 277
5176   0312 :   _signed16_mulitply_no_invert:
5177            
5178                    ; # Store the final result into _signed16_a<0:1>:
5179                    ; line_number = 280
5180                    ;info   280, 786
5181 0312 0825          movf    _signed16_result2,w
5182                    ; line_number = 281
5183                    ;info   281, 787
5184 0313 00a0          movwf   _signed16_a0
5185                    ; line_number = 282
5186                    ;info   282, 788
5187 0314 0824          movf    _signed16_result3,w
5188                    ; line_number = 283
5189                    ;info   283, 789
5190 0315 00a1          movwf   _signed16_a1
5191                    ; line_number = 284
5192                    ;info   284, 790
5193 0316 0008          return  
5194            
5195            
5196                    ; delay after procedure statements=non-uniform
5197                    ; Return instruction suppressed by 'return_suppress'
5198            
5199            
5200            
5201            
5202                    ; line_number = 287
5203                    ;info   287, 791
5204                    ; procedure _signed16_pointer_subtract
5205   0317 :   _signed16_pointer_subtract:
5206                    ; Last argument is sitting in W; save into argument variable
5207 0317 00ae          movwf   _signed16_pointer_subtract__pointer
5208                    ; delay=4294967295
5209                    ; line_number = 288
5210                    ; argument pointer byte
5211 000000ae = _signed16_pointer_subtract__pointer equ globals___1+14
5212                    ; line_number = 289
5213                    ;  returns_nothing
5214                    ; line_number = 290
5215                    ;  return_suppress
5216            
5217                    ; # This procedure will subtract {pointer} from the signed16 A "register"
5218                    ; # and store the result back into the A "register".
5219            
5220                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5221                    ; line_number = 295
5222                    ;  assemble
5223                    ;info   295, 792
5224                    ; # Pointer is in W; move it to {_fsr}:
5225                    ; line_number = 297
5226                    ;info   297, 792
5227 0318 0084          movwf   _fsr
5228                    ; # Set up {_irp} and _{fsr}:
5229                    ; line_number = 299
5230                    ;info   299, 793
5231 0319 1383          bcf     _irp___byte, _irp___bit
5232                    ; line_number = 300
5233                    ;info   300, 794
5234 031a 0d84          rlf     _fsr,f
5235                    ; line_number = 301
5236                    ;info   301, 795
5237 031b 1803          btfsc   _c___byte, _c___bit
5238                    ; line_number = 302
5239                    ;info   302, 796
5240 031c 1783          bsf     _irp___byte, _irp___bit
5241                    ; line_number = 303
5242                    ;info   303, 797
5243 031d 1004          bcf     _fsr, 0
5244            
5245                    ; # Subtract MSB from {_signed16_a0} (MSB):
5246                    ; line_number = 306
5247                    ;info   306, 798
5248 031e 0900          comf    _indf,w
5249                    ; line_number = 307
5250                    ;info   307, 799
5251 031f 07a0          addwf   _signed16_a0,f
5252                    ; line_number = 308
5253                    ;info   308, 800
5254 0320 0a84          incf    _fsr,f
5255            
5256                    ; # Subtract LSB from {_signed16_a1} (LSB):
5257                    ; line_number = 311
5258                    ;info   311, 801
5259 0321 0900          comf    _indf,w
5260                    ; line_number = 312
5261                    ;info   312, 802
5262 0322 3e01          addlw   1
5263            
5264                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
5265                    ; line_number = 315
5266                    ;info   315, 803
5267 0323 1803          btfsc   _c___byte, _c___bit
5268                    ; line_number = 316
5269                    ;info   316, 804
5270 0324 0aa0          incf    _signed16_a0,f
5271            
5272                    ; # Finish the subtraction:
5273                    ; line_number = 319
5274                    ;info   319, 805
5275 0325 07a1          addwf   _signed16_a1,f
5276            
5277                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
5278                    ; line_number = 322
5279                    ;info   322, 806
5280 0326 1803          btfsc   _c___byte, _c___bit
5281                    ; line_number = 323
5282                    ;info   323, 807
5283 0327 0aa0          incf    _signed16_a0,f
5284                    ; line_number = 324
5285                    ;info   324, 808
5286 0328 0008          return  
5287            
5288            
5289                    ; delay after procedure statements=non-uniform
5290                    ; Return instruction suppressed by 'return_suppress'
5291            
5292            
5293            
5294            
5295                    ; line_number = 327
5296                    ;info   327, 809
5297                    ; procedure _signed16_pointer_store
5298   0329 :   _signed16_pointer_store:
5299                    ; Last argument is sitting in W; save into argument variable
5300 0329 00af          movwf   _signed16_pointer_store__pointer
5301                    ; delay=4294967295
5302                    ; line_number = 328
5303                    ; argument pointer byte
5304 000000af = _signed16_pointer_store__pointer equ globals___1+15
5305                    ; line_number = 329
5306                    ;  returns_nothing
5307                    ; line_number = 330
5308                    ;  return_suppress
5309            
5310                    ; # This procedure will store the signed16 A "register" into {pointer}.
5311            
5312                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5313                    ; line_number = 334
5314                    ;  assemble
5315                    ;info   334, 810
5316                    ; # Pointer is in W; move it to {_fsr}:
5317                    ; line_number = 336
5318                    ;info   336, 810
5319 032a 0084          movwf   _fsr
5320                    ; # Set up {_irp} and _{fsr}:
5321                    ; line_number = 338
5322                    ;info   338, 811
5323 032b 1383          bcf     _irp___byte, _irp___bit
5324                    ; line_number = 339
5325                    ;info   339, 812
5326 032c 0d84          rlf     _fsr,f
5327                    ; line_number = 340
5328                    ;info   340, 813
5329 032d 1803          btfsc   _c___byte, _c___bit
5330                    ; line_number = 341
5331                    ;info   341, 814
5332 032e 1783          bsf     _irp___byte, _irp___bit
5333                    ; line_number = 342
5334                    ;info   342, 815
5335 032f 1004          bcf     _fsr, 0
5336                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}:
5337                    ; line_number = 344
5338                    ;info   344, 816
5339 0330 0820          movf    _signed16_a0,w
5340                    ; line_number = 345
5341                    ;info   345, 817
5342 0331 0080          movwf   _indf
5343                    ; line_number = 346
5344                    ;info   346, 818
5345 0332 0a84          incf    _fsr,f
5346                    ; line_number = 347
5347                    ;info   347, 819
5348 0333 0821          movf    _signed16_a1,w
5349                    ; line_number = 348
5350                    ;info   348, 820
5351 0334 0080          movwf   _indf
5352                    ; line_number = 349
5353                    ;info   349, 821
5354 0335 0008          return  
5355            
5356            
5357                    ; delay after procedure statements=non-uniform
5358                    ; Return instruction suppressed by 'return_suppress'
5359            
5360            
5361            
5362            
5363                    ; line_number = 352
5364                    ;info   352, 822
5365                    ; procedure _signed16_negate
5366   0336 :   _signed16_negate:
5367                    ; arguments_none
5368                    ; line_number = 354
5369                    ;  returns_nothing
5370            
5371                    ; # This procedure will negate the signed16 A registers.
5372            
5373                    ; # Flip the sign bit:
5374                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5375                    ; line_number = 359
5376                    ;  _signed16_a0 := 0xff ^ _signed16_a0
5377                    ;info   359, 822
5378 0336 09a0          comf    _signed16_a0,f
5379                    ; line_number = 360
5380                    ;  _signed16_a1 := 0 - _signed16_a1
5381                    ;info   360, 823
5382 0337 0821          movf    _signed16_a1,w
5383 0338 3c00          sublw   0
5384 0339 00a1          movwf   _signed16_a1
5385                    ; line_number = 361
5386                    ;  if _c start
5387                    ;info   361, 826
5388                    ; =>bit_code_emit@symbol(): sym=_c
5389                    ; 1TEST: Single test with code in skip slot
5390 033a 1803          btfsc   _c___byte, _c___bit
5391                    ; line_number = 362
5392                    ; _signed16_a0 := _signed16_a0 + 1    
5393                    ;info   362, 827
5394 033b 0aa0          incf    _signed16_a0,f
5395            
5396            
5397                    ; Recombine size1 = 0 || size2 = 0
5398                    ; line_number = 361
5399                    ;  if _c done
5400                    ; delay after procedure statements=non-uniform
5401                    ; Implied return
5402 033c 3400          retlw   0
5403            
5404            
5405            
5406            
5407                    ; line_number = 365
5408                    ;info   365, 829
5409                    ; procedure _signed16_pointer_swap
5410   033d :   _signed16_pointer_swap:
5411                    ; Last argument is sitting in W; save into argument variable
5412 033d 00b0          movwf   _signed16_pointer_swap__pointer
5413                    ; delay=4294967295
5414                    ; line_number = 366
5415                    ; argument pointer byte
5416 000000b0 = _signed16_pointer_swap__pointer equ globals___1+16
5417                    ; line_number = 367
5418                    ;  returns_nothing
5419                    ; line_number = 368
5420                    ;  return_suppress
5421            
5422                    ; # This procedure will swap the signed16 A "register" with {pointer}:
5423            
5424                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5425                    ; line_number = 372
5426                    ;  assemble
5427                    ;info   372, 830
5428                    ; # Pointer is in W; move it to {_fsr}:
5429                    ; line_number = 374
5430                    ;info   374, 830
5431 033e 0084          movwf   _fsr
5432                    ; # Set up {_irp} and _{fsr}:
5433                    ; line_number = 376
5434                    ;info   376, 831
5435 033f 1383          bcf     _irp___byte, _irp___bit
5436                    ; line_number = 377
5437                    ;info   377, 832
5438 0340 0d84          rlf     _fsr,f
5439                    ; line_number = 378
5440                    ;info   378, 833
5441 0341 1803          btfsc   _c___byte, _c___bit
5442                    ; line_number = 379
5443                    ;info   379, 834
5444 0342 1783          bsf     _irp___byte, _irp___bit
5445                    ; line_number = 380
5446                    ;info   380, 835
5447 0343 1004          bcf     _fsr, 0
5448            
5449                    ; # Swap {pointer} with {_signed16_a0}:
5450                    ; line_number = 383
5451                    ;info   383, 836
5452 0344 0800          movf    _indf,w
5453                    ; line_number = 384
5454                    ;info   384, 837
5455 0345 06a0          xorwf   _signed16_a0,f
5456                    ; line_number = 385
5457                    ;info   385, 838
5458 0346 0620          xorwf   _signed16_a0,w
5459                    ; line_number = 386
5460                    ;info   386, 839
5461 0347 06a0          xorwf   _signed16_a0,f
5462                    ; line_number = 387
5463                    ;info   387, 840
5464 0348 0080          movwf   _indf
5465            
5466                    ; # Swap {pointer}+1 with {_signed16_a1}:
5467                    ; line_number = 390
5468                    ;info   390, 841
5469 0349 0a84          incf    _fsr,f
5470                    ; line_number = 391
5471                    ;info   391, 842
5472 034a 0800          movf    _indf,w
5473                    ; line_number = 392
5474                    ;info   392, 843
5475 034b 06a1          xorwf   _signed16_a1,f
5476                    ; line_number = 393
5477                    ;info   393, 844
5478 034c 0621          xorwf   _signed16_a1,w
5479                    ; line_number = 394
5480                    ;info   394, 845
5481 034d 06a1          xorwf   _signed16_a1,f
5482                    ; line_number = 395
5483                    ;info   395, 846
5484 034e 0080          movwf   _indf
5485                    ; line_number = 396
5486                    ;info   396, 847
5487 034f 0008          return  
5488            
5489            
5490                    ; delay after procedure statements=non-uniform
5491                    ; Return instruction suppressed by 'return_suppress'
5492            
5493            
5494            
5495            
5496 000000b2 = _signed16_from_byte__0return equ globals___1+18
5497                    ; line_number = 399
5498                    ;info   399, 848
5499                    ; procedure _signed16_from_byte
5500   0350 :   _signed16_from_byte:
5501                    ; Last argument is sitting in W; save into argument variable
5502 0350 00b1          movwf   _signed16_from_byte__number
5503                    ; delay=4294967295
5504                    ; line_number = 400
5505                    ; argument number byte
5506 000000b1 = _signed16_from_byte__number equ globals___1+17
5507                    ; line_number = 401
5508                    ;  returns signed16
5509            
5510                    ; # This procedure will convert {number} into a signed16 and return it.
5511            
5512                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5513                    ; line_number = 405
5514                    ;  _signed16_a0 := 0
5515                    ;info   405, 849
5516 0351 01a0          clrf    _signed16_a0
5517                    ; line_number = 406
5518                    ;  _signed16_a1 := number
5519                    ;info   406, 850
5520 0352 0831          movf    _signed16_from_byte__number,w
5521 0353 00a1          movwf   _signed16_a1
5522                    ; line_number = 407
5523                    ;  assemble
5524                    ;info   407, 852
5525                    ; line_number = 408
5526                    ;info   408, 852
5527 0354 3059          movlw   _signed16_from_byte__0return>>1
5528                    ; line_number = 409
5529                    ;info   409, 853
5530 0355 2329          call    _signed16_pointer_store
5531                    ; line_number = 410
5532                    ;info   410, 854
5533 0356 3459          retlw   _signed16_from_byte__0return>>1
5534            
5535            
5536                    ; delay after procedure statements=non-uniform
5537                    ; Exiting procedure with no return(s); infinite loop fail
5538   0357 :   _signed16_from_byte__1:
5539 0357 2b57          goto    _signed16_from_byte__1
5540            
5541            
5542            
5543            
5544 000000b6 = _signed16_from_byte2__0return equ globals___1+22
5545                    ; line_number = 413
5546                    ;info   413, 856
5547                    ; procedure _signed16_from_byte2
5548   0358 :   _signed16_from_byte2:
5549                    ; Last argument is sitting in W; save into argument variable
5550 0358 00b5          movwf   _signed16_from_byte2__byte2
5551                    ; delay=4294967295
5552                    ; line_number = 414
5553                    ; argument byte1 byte
5554 000000b4 = _signed16_from_byte2__byte1 equ globals___1+20
5555                    ; line_number = 415
5556                    ; argument byte2 byte
5557 000000b5 = _signed16_from_byte2__byte2 equ globals___1+21
5558                    ; line_number = 416
5559                    ;  returns signed16
5560            
5561                    ; # This procedure will convert {byte1} and {byte2} into a signed16
5562                    ; # and return it.
5563            
5564                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5565                    ; line_number = 421
5566                    ;  _signed16_a0 := byte1
5567                    ;info   421, 857
5568 0359 0834          movf    _signed16_from_byte2__byte1,w
5569 035a 00a0          movwf   _signed16_a0
5570                    ; line_number = 422
5571                    ;  _signed16_a1 := byte2
5572                    ;info   422, 859
5573 035b 0835          movf    _signed16_from_byte2__byte2,w
5574 035c 00a1          movwf   _signed16_a1
5575                    ; line_number = 423
5576                    ;  assemble
5577                    ;info   423, 861
5578                    ; line_number = 424
5579                    ;info   424, 861
5580 035d 305b          movlw   _signed16_from_byte2__0return>>1
5581                    ; line_number = 425
5582                    ;info   425, 862
5583 035e 2329          call    _signed16_pointer_store
5584                    ; line_number = 426
5585                    ;info   426, 863
5586 035f 345b          retlw   _signed16_from_byte2__0return>>1
5587            
5588            
5589                    ; delay after procedure statements=non-uniform
5590                    ; Exiting procedure with no return(s); infinite loop fail
5591   0360 :   _signed16_from_byte2__1:
5592 0360 2b60          goto    _signed16_from_byte2__1
5593            
5594            
5595            
5596            
5597                    ; line_number = 429
5598                    ;info   429, 865
5599                    ; procedure _signed16_to_byte
5600   0361 :   _signed16_to_byte:
5601                    ; line_number = 430
5602                    ; argument number signed16
5603 000000b8 = _signed16_to_byte__number equ globals___1+24
5604                    ; line_number = 431
5605                    ;  returns byte
5606            
5607                    ; # This procedure will convert {number} into a 8-bit integer and return it.
5608            
5609                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5610                    ; line_number = 435
5611                    ;  assemble
5612                    ;info   435, 865
5613                    ; # Get the argument stored into the signed16 "A" register:
5614                    ; line_number = 437
5615                    ;info   437, 865
5616 0361 305c          movlw   _signed16_to_byte__number>>1
5617                    ; line_number = 438
5618                    ;info   438, 866
5619 0362 229e          call    _signed16_pointer_load
5620                    ; line_number = 439
5621                    ; return _signed16_a1 start
5622                    ; line_number = 439
5623                    ;info   439, 867
5624 0363 0821          movf    _signed16_a1,w
5625 0364 0008          return  
5626                    ; line_number = 439
5627                    ; return _signed16_a1 done
5628            
5629            
5630                    ; delay after procedure statements=non-uniform
5631            
5632            
5633            
5634            
5635                    ; line_number = 442
5636                    ;info   442, 869
5637                    ; procedure _signed16_byte_high
5638   0365 :   _signed16_byte_high:
5639                    ; line_number = 443
5640                    ; argument number signed16
5641 000000ba = _signed16_byte_high__number equ globals___1+26
5642                    ; line_number = 444
5643                    ;  returns byte
5644            
5645                    ; # This procedure will return the high 8 bits of {number}.
5646            
5647                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5648                    ; line_number = 448
5649                    ;  assemble
5650                    ;info   448, 869
5651                    ; # Get the argument stored into the signed16 "A" register:
5652                    ; line_number = 450
5653                    ;info   450, 869
5654 0365 305d          movlw   _signed16_byte_high__number>>1
5655                    ; line_number = 451
5656                    ;info   451, 870
5657 0366 229e          call    _signed16_pointer_load
5658                    ; line_number = 452
5659                    ; return _signed16_a0 start
5660                    ; line_number = 452
5661                    ;info   452, 871
5662 0367 0820          movf    _signed16_a0,w
5663 0368 0008          return  
5664                    ; line_number = 452
5665                    ; return _signed16_a0 done
5666            
5667            
5668                    ; delay after procedure statements=non-uniform
5669            
5670            
5671            
5672            
5673                    ; line_number = 455
5674                    ;info   455, 873
5675                    ; procedure _signed16_byte_low
5676   0369 :   _signed16_byte_low:
5677                    ; line_number = 456
5678                    ; argument number signed16
5679 000000bc = _signed16_byte_low__number equ globals___1+28
5680                    ; line_number = 457
5681                    ;  returns byte
5682            
5683                    ; # This procedure will return the low 8 bits of {number}.
5684            
5685                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5686                    ; line_number = 461
5687                    ;  assemble
5688                    ;info   461, 873
5689                    ; # Get the argument stored into the signed16 "A" register:
5690                    ; line_number = 463
5691                    ;info   463, 873
5692 0369 305e          movlw   _signed16_byte_low__number>>1
5693                    ; line_number = 464
5694                    ;info   464, 874
5695 036a 229e          call    _signed16_pointer_load
5696                    ; line_number = 465
5697                    ; return _signed16_a1 start
5698                    ; line_number = 465
5699                    ;info   465, 875
5700 036b 0821          movf    _signed16_a1,w
5701 036c 0008          return  
5702                    ; line_number = 465
5703                    ; return _signed16_a1 done
5704            
5705            
5706                    ; delay after procedure statements=non-uniform
5707            
5708            
5709            
5710            
5711                    ; line_number = 468
5712                    ;info   468, 877
5713                    ; procedure _signed16_equals
5714   036d :   _signed16_equals:
5715                    ; arguments_none
5716                    ; line_number = 470
5717                    ;  returns_nothing
5718            
5719                    ; # This procedure will set the Z bit if register "A" is zero.
5720            
5721                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5722                    ; line_number = 474
5723                    ;  assemble
5724                    ;info   474, 877
5725                    ; line_number = 475
5726                    ;info   475, 877
5727 036d 0820          movf    _signed16_a0,w
5728                    ; line_number = 476
5729                    ;info   476, 878
5730 036e 0421          iorwf   _signed16_a1,w
5731                    ; # Return is implicit
5732            
5733            
5734                    ; delay after procedure statements=non-uniform
5735                    ; Implied return
5736 036f 3400          retlw   0
5737            
5738            
5739            
5740            
5741                    ; line_number = 480
5742                    ;info   480, 880
5743                    ; procedure _signed16_not_equal
5744   0370 :   _signed16_not_equal:
5745                    ; arguments_none
5746                    ; line_number = 482
5747                    ;  returns_nothing
5748            
5749                    ; # This procedure will set the Z bit if register "A" is non-zero.
5750            
5751                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5752                    ; line_number = 486
5753                    ;  assemble
5754                    ;info   486, 880
5755                    ; line_number = 487
5756                    ;info   487, 880
5757 0370 0820          movf    _signed16_a0,w
5758                    ; line_number = 488
5759                    ;info   488, 881
5760 0371 0421          iorwf   _signed16_a1,w
5761                    ; line_number = 489
5762                    ; if _z start
5763                    ;info   489, 882
5764                    ; =>bit_code_emit@symbol(): sym=_z
5765                    ; No 1TEST: true.size=2 false.size=0
5766                    ; No 2TEST: true.size=2 false.size=0
5767                    ; 1GOTO: Single test with GOTO
5768 0372 1d03          btfss   _z___byte, _z___bit
5769 0373 2b76          goto    _signed16_not_equal__1
5770                    ; line_number = 490
5771                    ; _z := _false
5772                    ;info   490, 884
5773 0374 1103          bcf     _z___byte, _z___bit
5774                    ; line_number = 491
5775                    ;  return start
5776                    ; line_number = 491
5777                    ;info   491, 885
5778 0375 3400          retlw   0
5779                    ; line_number = 491
5780                    ;  return done
5781                    ; Recombine size1 = 0 || size2 = 0
5782   0376 :   _signed16_not_equal__1:
5783                    ; line_number = 489
5784                    ; if _z done
5785                    ; line_number = 492
5786                    ; _z := _true
5787                    ;info   492, 886
5788 0376 1503          bsf     _z___byte, _z___bit
5789                    ; # Return is implicit
5790            
5791            
5792                    ; delay after procedure statements=non-uniform
5793                    ; Implied return
5794 0377 3400          retlw   0
5795            
5796            
5797            
5798            
5799                    ; line_number = 496
5800                    ;info   496, 888
5801                    ; procedure _signed16_less_than
5802   0378 :   _signed16_less_than:
5803                    ; arguments_none
5804                    ; line_number = 498
5805                    ;  returns_nothing
5806            
5807                    ; # This procedure will set the Z bit if register "A" is non-zero and
5808                    ; # positive.
5809            
5810                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5811                    ; line_number = 503
5812                    ;  _z := _false
5813                    ;info   503, 888
5814 0378 1103          bcf     _z___byte, _z___bit
5815                    ; line_number = 504
5816                    ;  if _signed16_a0@7 start
5817                    ;info   504, 889
5818 000000a0 = _signed16_less_than__select__1___byte equ _signed16_a0
5819 00000007 = _signed16_less_than__select__1___bit equ 7
5820                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than__select__1
5821                    ; 1TEST: Single test with code in skip slot
5822 0379 1ba0          btfsc   _signed16_less_than__select__1___byte, _signed16_less_than__select__1___bit
5823                    ; line_number = 505
5824                    ; _z := _true
5825                    ;info   505, 890
5826 037a 1503          bsf     _z___byte, _z___bit
5827                    ; Recombine size1 = 0 || size2 = 0
5828                    ; line_number = 504
5829                    ;  if _signed16_a0@7 done
5830                    ; # Return is implicit
5831            
5832            
5833                    ; delay after procedure statements=non-uniform
5834                    ; Implied return
5835 037b 3400          retlw   0
5836            
5837            
5838            
5839            
5840                    ; line_number = 509
5841                    ;info   509, 892
5842                    ; procedure _signed16_less_than_or_equal
5843   037c :   _signed16_less_than_or_equal:
5844                    ; arguments_none
5845                    ; line_number = 511
5846                    ;  returns_nothing
5847            
5848                    ; # This procedure will set the Z bit if register "A" is zero or positive.
5849            
5850                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5851                    ; line_number = 515
5852                    ;  assemble
5853                    ;info   515, 892
5854                    ; line_number = 516
5855                    ;info   516, 892
5856 037c 0821          movf    _signed16_a1,w
5857                    ; line_number = 517
5858                    ;info   517, 893
5859 037d 0420          iorwf   _signed16_a0,w
5860                    ; line_number = 518
5861                    ; if _z start
5862                    ;info   518, 894
5863                    ; =>bit_code_emit@symbol(): sym=_z
5864                    ; 1TEST: Single test with code in skip slot
5865 037e 1903          btfsc   _z___byte, _z___bit
5866                    ; line_number = 519
5867                    ; return start
5868                    ; line_number = 519
5869                    ;info   519, 895
5870 037f 3400          retlw   0
5871                    ; line_number = 519
5872                    ; return done
5873                    ; Recombine size1 = 0 || size2 = 0
5874                    ; line_number = 518
5875                    ; if _z done
5876                    ; # _z == _false
5877                    ; line_number = 521
5878                    ;  if _signed16_a0@7 start
5879                    ;info   521, 896
5880 000000a0 = _signed16_less_than_or_equal__select__1___byte equ _signed16_a0
5881 00000007 = _signed16_less_than_or_equal__select__1___bit equ 7
5882                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than_or_equal__select__1
5883                    ; 1TEST: Single test with code in skip slot
5884 0380 1ba0          btfsc   _signed16_less_than_or_equal__select__1___byte, _signed16_less_than_or_equal__select__1___bit
5885                    ; line_number = 522
5886                    ; _z := _true
5887                    ;info   522, 897
5888 0381 1503          bsf     _z___byte, _z___bit
5889                    ; Recombine size1 = 0 || size2 = 0
5890                    ; line_number = 521
5891                    ;  if _signed16_a0@7 done
5892                    ; # Return is implicit
5893            
5894            
5895                    ; delay after procedure statements=non-uniform
5896                    ; Implied return
5897 0382 3400          retlw   0
5898            
5899            
5900            
5901            
5902                    ; line_number = 526
5903                    ;info   526, 899
5904                    ; procedure _signed16_greater_than
5905   0383 :   _signed16_greater_than:
5906                    ; arguments_none
5907                    ; line_number = 528
5908                    ;  returns_nothing
5909            
5910                    ; # This procedure will set the Z bit if register "A" is non-zero and
5911                    ; # positive.
5912            
5913                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5914                    ; line_number = 533
5915                    ;  assemble
5916                    ;info   533, 899
5917                    ; line_number = 534
5918                    ;info   534, 899
5919 0383 0820          movf    _signed16_a0,w
5920                    ; line_number = 535
5921                    ;info   535, 900
5922 0384 0421          iorwf   _signed16_a1,w
5923                    ; line_number = 536
5924                    ; if _z start
5925                    ;info   536, 901
5926                    ; =>bit_code_emit@symbol(): sym=_z
5927                    ; No 1TEST: true.size=2 false.size=0
5928                    ; No 2TEST: true.size=2 false.size=0
5929                    ; 1GOTO: Single test with GOTO
5930 0385 1d03          btfss   _z___byte, _z___bit
5931 0386 2b89          goto    _signed16_greater_than__1
5932                    ; line_number = 537
5933                    ; _z := _false
5934                    ;info   537, 903
5935 0387 1103          bcf     _z___byte, _z___bit
5936                    ; line_number = 538
5937                    ;  return     start
5938                    ; line_number = 538
5939                    ;info   538, 904
5940 0388 3400          retlw   0
5941                    ; line_number = 538
5942                    ;  return     done
5943                    ; Recombine size1 = 0 || size2 = 0
5944   0389 :   _signed16_greater_than__1:
5945                    ; line_number = 536
5946                    ; if _z done
5947                    ; # _z == _false
5948                    ; line_number = 540
5949                    ;  if !(_signed16_a0@7) start
5950                    ;info   540, 905
5951 000000a0 = _signed16_greater_than__select__2___byte equ _signed16_a0
5952 00000007 = _signed16_greater_than__select__2___bit equ 7
5953                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than__select__2
5954                    ; 1TEST: Single test with code in skip slot
5955 0389 1fa0          btfss   _signed16_greater_than__select__2___byte, _signed16_greater_than__select__2___bit
5956                    ; line_number = 541
5957                    ; _z := _true
5958                    ;info   541, 906
5959 038a 1503          bsf     _z___byte, _z___bit
5960                    ; Recombine size1 = 0 || size2 = 0
5961                    ; line_number = 540
5962                    ;  if !(_signed16_a0@7) done
5963                    ; # Return is implicit:
5964            
5965            
5966                    ; delay after procedure statements=non-uniform
5967                    ; Implied return
5968 038b 3400          retlw   0
5969            
5970            
5971            
5972            
5973                    ; line_number = 545
5974                    ;info   545, 908
5975                    ; procedure _signed16_greater_than_or_equal
5976   038c :   _signed16_greater_than_or_equal:
5977                    ; arguments_none
5978                    ; line_number = 547
5979                    ;  returns_nothing
5980            
5981                    ; # This procedure will set the Z bit if register "A" is zero or positive.
5982            
5983                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
5984                    ; line_number = 551
5985                    ;  _z := _true
5986                    ;info   551, 908
5987 038c 1503          bsf     _z___byte, _z___bit
5988                    ; line_number = 552
5989                    ;  if _signed16_a0@7 start
5990                    ;info   552, 909
5991 000000a0 = _signed16_greater_than_or_equal__select__1___byte equ _signed16_a0
5992 00000007 = _signed16_greater_than_or_equal__select__1___bit equ 7
5993                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than_or_equal__select__1
5994                    ; 1TEST: Single test with code in skip slot
5995 038d 1ba0          btfsc   _signed16_greater_than_or_equal__select__1___byte, _signed16_greater_than_or_equal__select__1___bit
5996                    ; line_number = 553
5997                    ; _z := _false
5998                    ;info   553, 910
5999 038e 1103          bcf     _z___byte, _z___bit
6000                    ; Recombine size1 = 0 || size2 = 0
6001                    ; line_number = 552
6002                    ;  if _signed16_a0@7 done
6003                    ; # Return is implicit:
6004            
6005            
6006                    ; delay after procedure statements=non-uniform
6007                    ; Implied return
6008 038f 3400          retlw   0
6009            
6010            
6011            
6012            
6013                    ; line_number = 578
6014                    ;info   578, 912
6015                    ; procedure _signed16_divide_raw
6016   0390 :   _signed16_divide_raw:
6017                    ; arguments_none
6018                    ; line_number = 580
6019                    ;  returns_nothing
6020                    ; line_number = 581
6021                    ;  return_suppress
6022            
6023                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
6024                    ; line_number = 583
6025                    ;  assemble
6026                    ;info   583, 912
6027                    ; line_number = 584
6028                    ;info   584, 912
6029 0390 23bc          call    _signed16_divide_s_sign
6030            
6031                    ; #Initialize:
6032                    ; line_number = 587
6033                    ;info   587, 913
6034 0391 3010          movlw   16
6035                    ; line_number = 588
6036                    ;info   588, 914
6037 0392 00a9          movwf   _signed16_count
6038                    ; line_number = 589
6039                    ;info   589, 915
6040 0393 0820          movf    _signed16_a0,w
6041                    ; line_number = 590
6042                    ;info   590, 916
6043 0394 00a7          movwf   _signed16_temp0
6044                    ; line_number = 591
6045                    ;info   591, 917
6046 0395 0821          movf    _signed16_a1,w
6047                    ; line_number = 592
6048                    ;info   592, 918
6049 0396 00a6          movwf   _signed16_temp1
6050                    ; line_number = 593
6051                    ;info   593, 919
6052 0397 01a0          clrf    _signed16_a0
6053                    ; line_number = 594
6054                    ;info   594, 920
6055 0398 01a1          clrf    _signed16_a1
6056                    ; line_number = 595
6057                    ;info   595, 921
6058 0399 01a5          clrf    _signed16_rem0
6059                    ; line_number = 596
6060                    ;info   596, 922
6061 039a 01a4          clrf    _signed16_rem1
6062                    ; # Loop 16 times usinge {_signed16_count}:
6063                    ; line_number = 598
6064   039b :   _signed16_divide_dloop:
6065                    ; line_number = 599
6066                    ;info   599, 923
6067 039b 1003          bcf     _c___byte, _c___bit
6068                    ; line_number = 600
6069                    ;info   600, 924
6070 039c 0da6          rlf     _signed16_temp1,f
6071                    ; line_number = 601
6072                    ;info   601, 925
6073 039d 0da7          rlf     _signed16_temp0,f
6074                    ; line_number = 602
6075                    ;info   602, 926
6076 039e 0da4          rlf     _signed16_rem1,f
6077                    ; line_number = 603
6078                    ;info   603, 927
6079 039f 0da5          rlf     _signed16_rem0,f
6080                    ; line_number = 604
6081                    ;info   604, 928
6082 03a0 0822          movf    _signed16_b0,w
6083                    ; line_number = 605
6084                    ;info   605, 929
6085 03a1 0225          subwf   _signed16_rem0,w
6086                    ; line_number = 606
6087                    ;info   606, 930
6088 03a2 1d03          btfss   _z___byte, _z___bit
6089                    ; line_number = 607
6090                    ;info   607, 931
6091 03a3 2ba6          goto    _signed16_divide_no_check
6092                    ; line_number = 608
6093                    ;info   608, 932
6094 03a4 0823          movf    _signed16_b1,w
6095                    ; line_number = 609
6096                    ;info   609, 933
6097 03a5 0224          subwf   _signed16_rem1,w
6098                    ; line_number = 610
6099   03a6 :   _signed16_divide_no_check:
6100                    ; line_number = 611
6101                    ;info   611, 934
6102 03a6 1c03          btfss   _c___byte, _c___bit
6103                    ; line_number = 612
6104                    ;info   612, 935
6105 03a7 2baf          goto    _signed16_divide_no_go
6106                    ; line_number = 613
6107                    ;info   613, 936
6108 03a8 0823          movf    _signed16_b1,w
6109                    ; line_number = 614
6110                    ;info   614, 937
6111 03a9 02a4          subwf   _signed16_rem1,f
6112                    ; line_number = 615
6113                    ;info   615, 938
6114 03aa 1c03          btfss   _c___byte, _c___bit
6115                    ; line_number = 616
6116                    ;info   616, 939
6117 03ab 03a5          decf    _signed16_rem0,f
6118                    ; line_number = 617
6119                    ;info   617, 940
6120 03ac 0822          movf    _signed16_b0,w
6121                    ; line_number = 618
6122                    ;info   618, 941
6123 03ad 02a5          subwf   _signed16_rem0,f
6124                    ; line_number = 619
6125                    ;info   619, 942
6126 03ae 1403          bsf     _c___byte, _c___bit
6127                    ; line_number = 620
6128   03af :   _signed16_divide_no_go:
6129                    ; line_number = 621
6130                    ;info   621, 943
6131 03af 0da1          rlf     _signed16_a1,f
6132                    ; line_number = 622
6133                    ;info   622, 944
6134 03b0 0da0          rlf     _signed16_a0,f
6135                    ; line_number = 623
6136                    ;info   623, 945
6137 03b1 0ba9          decfsz  _signed16_count,f
6138                    ; line_number = 624
6139                    ;info   624, 946
6140 03b2 2b9b          goto    _signed16_divide_dloop
6141            
6142                    ; line_number = 626
6143                    ;info   626, 947
6144 03b3 1fa8          btfss   _signed16_sign, 7
6145                    ; line_number = 627
6146                    ;info   627, 948
6147 03b4 3400          retlw   0
6148                    ; line_number = 628
6149                    ;info   628, 949
6150 03b5 2bb6          goto    _signed16_divide_neg_b
6151            
6152                    ; line_number = 630
6153   03b6 :   _signed16_divide_neg_b:
6154                    ; line_number = 631
6155                    ;info   631, 950
6156 03b6 09a3          comf    _signed16_b1,f
6157                    ; line_number = 632
6158                    ;info   632, 951
6159 03b7 0aa3          incf    _signed16_b1,f
6160                    ; line_number = 633
6161                    ;info   633, 952
6162 03b8 1903          btfsc   _z___byte, _z___bit
6163                    ; line_number = 634
6164                    ;info   634, 953
6165 03b9 03a2          decf    _signed16_b0,f
6166                    ; line_number = 635
6167                    ;info   635, 954
6168 03ba 09a2          comf    _signed16_b0,f
6169                    ; line_number = 636
6170                    ;info   636, 955
6171 03bb 3400          retlw   0
6172            
6173                    ; line_number = 638
6174   03bc :   _signed16_divide_s_sign:
6175                    ; line_number = 639
6176                    ;info   639, 956
6177 03bc 0822          movf    _signed16_b0,w
6178                    ; line_number = 640
6179                    ;info   640, 957
6180 03bd 0620          xorwf   _signed16_a0,w
6181                    ; line_number = 641
6182                    ;info   641, 958
6183 03be 00a8          movwf   _signed16_sign
6184                    ; line_number = 642
6185                    ;info   642, 959
6186 03bf 1fa0          btfss   _signed16_a0, 7
6187                    ; line_number = 643
6188                    ;info   643, 960
6189 03c0 2bc6          goto    _signed16_divide_check_a
6190            
6191                    ; line_number = 645
6192                    ;info   645, 961
6193 03c1 09a1          comf    _signed16_a1,f
6194                    ; line_number = 646
6195                    ;info   646, 962
6196 03c2 0aa1          incf    _signed16_a1,f
6197                    ; line_number = 647
6198                    ;info   647, 963
6199 03c3 1903          btfsc   _z___byte, _z___bit
6200                    ; line_number = 648
6201                    ;info   648, 964
6202 03c4 03a0          decf    _signed16_a0,f
6203                    ; line_number = 649
6204                    ;info   649, 965
6205 03c5 09a0          comf    _signed16_a0,f
6206            
6207                    ; line_number = 651
6208   03c6 :   _signed16_divide_check_a:
6209                    ; line_number = 652
6210                    ;info   652, 966
6211 03c6 1fa2          btfss   _signed16_b0, 7
6212                    ; line_number = 653
6213                    ;info   653, 967
6214 03c7 3400          retlw   0
6215                    ; line_number = 654
6216                    ;info   654, 968
6217 03c8 2bb6          goto    _signed16_divide_neg_b
6218            
6219                    ; delay after procedure statements=non-uniform
6220                    ; Return instruction suppressed by 'return_suppress'
6221            
6222            
6223            
6224            
6225                    ; Configuration bits
6226                    ; address = 0x2007, fill = 0x3000
6227                    ; fcmen = off (0x0)
6228                    ; ieso = off (0x0)
6229                    ; boden = off (0x0)
6230                    ; cpd = off (0x80)
6231                    ; cp = off (0x40)
6232                    ; mclre = off (0x0)
6233                    ; pwrte = off (0x10)
6234                    ; wdte = off (0x0)
6235                    ; fosc = hs (0x2)
6236                    ; 12498 = 0x30d2
6237   30d2 =           __config 12498
6238                    ; Define start addresses for data regions
6239                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
6240                    ; Region="globals___0" Address=32" Size=80 Bytes=77 Bits=5 Available=2
6241                    ; Region="globals___1" Address=160" Size=80 Bytes=46 Bits=0 Available=34
6242                    ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80
6243                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
6244                    end
