1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 2047
3      0000 :           org     0
4               
5               
6                       ; Define start addresses for data regions
7    00000070 = shared___globals equ 112
8    00000020 = globals___0 equ 32
9    000000a0 = globals___1 equ 160
10   00000110 = globals___2 equ 272
11   00000190 = globals___3 equ 400
12   00000000 = __indf equ 0
13   00000002 = __pcl equ 2
14   00000003 = __status equ 3
15   00000004 = __fsr equ 4
16   00000003 = __c___byte equ 3
17   00000000 = __c___bit equ 0
18   00000003 = __z___byte equ 3
19   00000002 = __z___bit equ 2
20   00000003 = __rp0___byte equ 3
21   00000005 = __rp0___bit equ 5
22   00000003 = __rp1___byte equ 3
23   00000006 = __rp1___bit equ 6
24   00000003 = __irp___byte equ 3
25   00000007 = __irp___bit equ 7
26   0000000a = __pclath equ 10
27   0000000a = __cb0___byte equ 10
28   00000003 = __cb0___bit equ 3
29   0000000a = __cb1___byte equ 10
30   00000004 = __cb1___bit equ 4
31              
32                      ; # Copyright (c) 2007 by Wayne C. Gramlich
33                      ; # All rights reserved.
34              
35                      ; # This module uses a PIC16F88:
36                      ; buffer = 'sonar6'
37                      ; line_number = 7
38                      ; library _pic16f88 entered
39              
40                      ; # Copyright (c) 2007 by Wayne C. Gramlich
41                      ; # All rights reserved.
42              
43                      ; buffer = '_pic16f88'
44                      ; line_number = 6
45                      ; processor pic16f88
46                      ; line_number = 7
47                      ; configure_address 0x2007
48                      ; line_number = 8
49                      ;  configure_fill 0x0000
50                      ; line_number = 9
51                      ;  configure_option cp: off = 0x2000
52                      ; line_number = 10
53                      ;  configure_option cp: on = 0x0000
54                      ; line_number = 11
55                      ;  configure_option ccpmx: ccp1_rb0 = 0x1000
56                      ; line_number = 12
57                      ;  configure_option ccpmx: ccp1_rb3 = 0x0000
58                      ; line_number = 13
59                      ;  configure_option debug: off = 0x800
60                      ; line_number = 14
61                      ;  configure_option debug: on = 0x000
62                      ; line_number = 15
63                      ;  configure_option wrt: off = 0x600
64                      ; line_number = 16
65                      ;  configure_option wrt: to_ff = 0x400
66                      ; line_number = 17
67                      ;  configure_option wrt: to_7ff = 0x200
68                      ; line_number = 18
69                      ;  configure_option wrt: on = 0x000
70                      ; line_number = 19
71                      ;  configure_option cpd: off = 0x100
72                      ; line_number = 20
73                      ;  configure_option cpd: on = 0x000
74                      ; line_number = 21
75                      ;  configure_option lvp: on = 0x80
76                      ; line_number = 22
77                      ;  configure_option lvp: off = 0x00
78                      ; line_number = 23
79                      ;  configure_option boden: on = 0x40
80                      ; line_number = 24
81                      ;  configure_option boden: off = 0x00
82                      ; line_number = 25
83                      ;  configure_option mclre: on = 0x20
84                      ; line_number = 26
85                      ;  configure_option mclre: off = 0x00
86                      ; line_number = 27
87                      ;  configure_option pwrte: on = 0
88                      ; line_number = 28
89                      ;  configure_option pwrte: off = 8
90                      ; line_number = 29
91                      ;  configure_option wdte: on = 4
92                      ; line_number = 30
93                      ;  configure_option wdte: off = 0
94                      ; line_number = 31
95                      ;  configure_option fosc: extrc_clk = 0x13
96                      ; line_number = 32
97                      ;  configure_option fosc: extrc_no_clk = 0x12
98                      ; line_number = 33
99                      ;  configure_option fosc: intrc_clk = 0x11
100                     ; line_number = 34
101                     ;  configure_option fosc: intrc_no_clk = 0x10
102                     ; line_number = 35
103                     ;  configure_option fosc: extclk = 3
104                     ; line_number = 36
105                     ;  configure_option fosc: hs = 2
106                     ; line_number = 37
107                     ;  configure_option fosc: xt = 1
108                     ; line_number = 38
109                     ;  configure_option fosc: lp = 0
110             
111                     ; line_number = 40
112                     ;  configure_address 0x2008
113                     ; line_number = 41
114                     ;  configure_fill 0x3ffc
115                     ; line_number = 42
116                     ;  configure_option ieso: on = 2
117                     ; line_number = 43
118                     ;  configure_option ieso: off = 0
119                     ; line_number = 44
120                     ;  configure_option fcmen: on = 1
121                     ; line_number = 45
122                     ;  configure_option fcmen: off = 0
123             
124                     ; line_number = 47
125                     ;  code_bank 0x0 : 0x7ff
126                     ; line_number = 48
127                     ;  code_bank 0x800 : 0xfff
128                     ; line_number = 49
129                     ;  data_bank 0x0 : 0x7f
130                     ; line_number = 50
131                     ;  data_bank 0x80 : 0xff
132                     ; line_number = 51
133                     ;  data_bank 0x100 : 0x17f
134                     ; line_number = 52
135                     ;  data_bank 0x180 : 0x1ff
136                     ; line_number = 53
137                     ;  global_region 0x20 : 0x6f
138                     ; line_number = 54
139                     ;  global_region 0xa0 : 0xef
140                     ; line_number = 55
141                     ;  global_region 0x110 : 0x16f
142                     ; line_number = 56
143                     ;  global_region 0x190 : 0x1ef
144                     ; line_number = 57
145                     ;  shared_region 0x70 : 0x7f
146                     ; line_number = 58
147                     ;  packages dip=18, soic=18, ssop=20
148                     ; line_number = 59
149                     ;  pin ra2_in, ra2_out, ra2_unused, an2, cvref, vref_minus
150                     ; line_number = 60
151                     ; pin_bindings dip=1, soic=1, ssop=1
152                     ; line_number = 61
153                     ;  bind_to _porta@2
154                     ; line_number = 62
155                     ;  or_if ra2_in _trisa 4
156                     ; line_number = 63
157                     ;  or_if ra2_in _cmcon 7
158                     ; line_number = 64
159                     ;  or_if ra2_in _ansel 0
160                     ; line_number = 65
161                     ;  or_if ra2_in _adcon0 0
162                     ; line_number = 66
163                     ;  or_if ra2_out _trisa 0
164                     ; line_number = 67
165                     ;  or_if ra2_out _cmcon 7
166                     ; line_number = 68
167                     ;  or_if ra2_out _ansel 0
168                     ; line_number = 69
169                     ;  or_if ra2_out _adcon0 0
170                     ; line_number = 70
171                     ;  or_if ra2_unused _trisa 4
172                     ; line_number = 71
173                     ;  or_if ra2_unused _ansel 0
174                     ; line_number = 72
175                     ;  or_if ra2_unused _adcon0 0
176                     ; line_number = 73
177                     ;  or_if an2 _trisa 4
178                     ; line_number = 74
179                     ;  or_if an2 _ansel 4
180                     ; line_number = 75
181                     ;  or_if an2 _cmcon 7
182                     ; line_number = 76
183                     ;  or_if an2 _ancon0 1
184                     ; line_number = 77
185                     ; pin ra3_in, ra3_out, ra3_unused, an3, vref_plus, c1out
186                     ; line_number = 78
187                     ; pin_bindings dip=2, soic=2, ssop=2
188                     ; line_number = 79
189                     ;  bind_to _porta@3
190                     ; line_number = 80
191                     ;  or_if ra3_in _trisa 8
192                     ; line_number = 81
193                     ;  or_if ra3_in _cmcon 7
194                     ; line_number = 82
195                     ;  or_if ra3_in _ansel 0
196                     ; line_number = 83
197                     ;  or_if ra3_in _adcon0 0
198                     ; line_number = 84
199                     ;  or_if ra3_out _trisa 0
200                     ; line_number = 85
201                     ;  or_if ra3_out _cmcon 7
202                     ; line_number = 86
203                     ;  or_if ra3_out _ansel 0
204                     ; line_number = 87
205                     ;  or_if ra3_out _adcon0 0
206                     ; line_number = 88
207                     ;  or_if ra3_unused _trisa 8
208                     ; line_number = 89
209                     ;  or_if ra3_unused _ansel 0
210                     ; line_number = 90
211                     ;  or_if ra3_unused _adcon0 0
212                     ; line_number = 91
213                     ;  or_if an3 _trisa 8
214                     ; line_number = 92
215                     ;  or_if an3 _ansel 8
216                     ; line_number = 93
217                     ;  or_if an3 _cmcon 7
218                     ; line_number = 94
219                     ;  or_if an3 _ancon0 1
220                     ; line_number = 95
221                     ; pin ra4_in, ra4_out, ra4_unused, an4, tocki, c2out
222                     ; line_number = 96
223                     ; pin_bindings dip=3, soic=3, ssop=3
224                     ; line_number = 97
225                     ;  bind_to _porta@4
226                     ; line_number = 98
227                     ;  or_if ra4_in _trisa 16
228                     ; line_number = 99
229                     ;  or_if ra4_in _ansel 0
230                     ; line_number = 100
231                     ;  or_if ra4_in _adcon0 0
232                     ; line_number = 101
233                     ;  or_if ra4_out _trisa 0
234                     ; line_number = 102
235                     ;  or_if ra4_out _ansel 0
236                     ; line_number = 103
237                     ;  or_if ra4_out _adcon0 0
238                     ; line_number = 104
239                     ;  or_if ra4_unused _trisa 16
240                     ; line_number = 105
241                     ;  or_if ra4_unused _ansel 0
242                     ; line_number = 106
243                     ;  or_if ra4_unused _adcon0 0
244                     ; line_number = 107
245                     ;  or_if an4 _trisa 16
246                     ; line_number = 108
247                     ;  or_if an4 _ansel 16
248                     ; line_number = 109
249                     ;  or_if an4 _cmcon 7
250                     ; line_number = 110
251                     ;  or_if an4 _ancon0 1
252                     ; line_number = 111
253                     ; pin ra5_in, ra5_unused, mclr, vpp
254                     ; line_number = 112
255                     ; pin_bindings dip=4, soic=4, ssop=4
256                     ; line_number = 113
257                     ;  bind_to _porta@5
258                     ; line_number = 114
259                     ;  or_if ra5_in _trisa 32
260                     ; line_number = 115
261                     ;  or_if ra5_unused _trisa 32
262                     ; line_number = 116
263                     ; pin vss, ground
264                     ; line_number = 117
265                     ; pin_bindings dip=5, soic=5, ssop=5
266                     ; line_number = 118
267                     ; pin avss, ground2
268                     ; line_number = 119
269                     ; pin_bindings ssop=6
270                     ; line_number = 120
271                     ; pin rb0_in, rb0_out, rb0_unused, int, ccp1
272                     ; line_number = 121
273                     ; pin_bindings dip=6, soic=6, ssop=7
274                     ; line_number = 122
275                     ;  bind_to _portb@0
276                     ; line_number = 123
277                     ;  or_if rb0_in _trisb 1
278                     ; line_number = 124
279                     ;  or_if rb0_out _trisb 0
280                     ; line_number = 125
281                     ;  or_if rb0_unused _trisb 1
282                     ; line_number = 126
283                     ;  or_if int _trisb 1
284                     ; line_number = 127
285                     ; pin rb1_in, rb1_out, rb1_unused, sdi, sda
286                     ; line_number = 128
287                     ; pin_bindings dip=7, soic=7, ssop=8
288                     ; line_number = 129
289                     ;  bind_to _portb@1
290                     ; line_number = 130
291                     ;  or_if rb1_in _trisb 2
292                     ; line_number = 131
293                     ;  or_if rb1_out _trisb 0
294                     ; line_number = 132
295                     ;  or_if rb1_unused _trisb 2
296                     ; line_number = 133
297                     ;  or_if sda _trisb 2
298                     ; line_number = 134
299                     ; pin rb2_in, rb2_out, rb2_unused, sdo, rx, dt
300                     ; line_number = 135
301                     ; pin_bindings dip=8, soic=8, ssop=9
302                     ; line_number = 136
303                     ;  bind_to _portb@2
304                     ; line_number = 137
305                     ;  or_if rb2_in _trisb 4
306                     ; line_number = 138
307                     ;  or_if rb2_out _trisb 0
308                     ; line_number = 139
309                     ;  or_if rb2_unused _trisb 4
310                     ; line_number = 140
311                     ;  or_if rx _trisb 4
312                     ; line_number = 141
313                     ; pin rb3_in, rb3_out, rb3_unused, pgm, ccp1_other
314                     ; line_number = 142
315                     ; pin_bindings dip=9, soic=9, ssop=10
316                     ; line_number = 143
317                     ;  bind_to _portb@3
318                     ; line_number = 144
319                     ;  or_if rb3_in _trisb 8
320                     ; line_number = 145
321                     ;  or_if rb3_out _trisb 0
322                     ; line_number = 146
323                     ;  or_if rb3_unused _trisb 8
324                     ; line_number = 147
325                     ;  or_if ccp1_other _trisb 8
326                     ; line_number = 148
327                     ; pin rb4_in, rb4_out, rb4_unused, sck, scl
328                     ; line_number = 149
329                     ; pin_bindings dip=10, soic=10, ssop=11
330                     ; line_number = 150
331                     ;  bind_to _portb@4
332                     ; line_number = 151
333                     ;  or_if rb4_in _trisb 16
334                     ; line_number = 152
335                     ;  or_if rb4_out _trisb 0
336                     ; line_number = 153
337                     ;  or_if rb4_unused _trisb 16
338                     ; line_number = 154
339                     ;  or_if scl _trisb 16
340                     ; line_number = 155
341                     ; pin rb5_in, rb5_out, rb5_unused, ss, tx, ck
342                     ; line_number = 156
343                     ; pin_bindings dip=11, soic=11, ssop=12
344                     ; line_number = 157
345                     ;  bind_to _portb@5
346                     ; line_number = 158
347                     ;  or_if rb5_in _trisb 32
348                     ; line_number = 159
349                     ;  or_if rb5_out _trisb 0
350                     ; line_number = 160
351                     ;  or_if rb5_unused _trisb 32
352                     ; line_number = 161
353                     ;  or_if tx _trisb 32
354                     ; line_number = 162
355                     ; pin rb6_in, rb6_out, rb6_unused, an5, pgc, t1oso, t1cki
356                     ; line_number = 163
357                     ; pin_bindings dip=12, soic=12, ssop=13
358                     ; line_number = 164
359                     ;  bind_to _portb@6
360                     ; line_number = 165
361                     ;  or_if rb6_in _trisb 64
362                     ; line_number = 166
363                     ;  or_if rb6_in _ansel 0
364                     ; line_number = 167
365                     ;  or_if rb6_in _adcon0 0
366                     ; line_number = 168
367                     ;  or_if rb6_out _trisb 0
368                     ; line_number = 169
369                     ;  or_if rb6_out _ansel 0
370                     ; line_number = 170
371                     ;  or_if rb6_out _adcon0 0
372                     ; line_number = 171
373                     ;  or_if rb6_unused _trisb 64
374                     ; line_number = 172
375                     ;  or_if rb6_unused _ansel 0
376                     ; line_number = 173
377                     ;  or_if rb6_unused _adcon0 0
378                     ; line_number = 174
379                     ;  or_if t1oso _trisb 0
380                     ; line_number = 175
381                     ;  or_if t1cki _trisb 64
382                     ; line_number = 176
383                     ;  or_if an5 _trisa 64
384                     ; line_number = 177
385                     ;  or_if an5 _ansel 32
386                     ; line_number = 178
387                     ;  or_if an5 _cmcon 7
388                     ; line_number = 179
389                     ;  or_if an5 _ancon0 1
390                     ; line_number = 180
391                     ; pin rb7_in, rb7_out, rb7_unused, an6, pgd, t1osi
392                     ; line_number = 181
393                     ; pin_bindings dip=13, soic=13, ssop=14
394                     ; line_number = 182
395                     ;  bind_to _portb@6
396                     ; line_number = 183
397                     ;  or_if rb7_in _trisb 128
398                     ; line_number = 184
399                     ;  or_if rb7_in _ansel 0
400                     ; line_number = 185
401                     ;  or_if rb7_in _adcon0 0
402                     ; line_number = 186
403                     ;  or_if rb7_out _trisb 0
404                     ; line_number = 187
405                     ;  or_if rb7_out _ansel 0
406                     ; line_number = 188
407                     ;  or_if rb7_out _adcon0 0
408                     ; line_number = 189
409                     ;  or_if rb7_unused _trisb 128
410                     ; line_number = 190
411                     ;  or_if rb7_unused _ansel 0
412                     ; line_number = 191
413                     ;  or_if rb7_unused _adcon0 0
414                     ; line_number = 192
415                     ;  or_if t1osi _trisb 128
416                     ; line_number = 193
417                     ;  or_if an6 _trisa 128
418                     ; line_number = 194
419                     ;  or_if an6 _ansel 64
420                     ; line_number = 195
421                     ;  or_if an6 _cmcon 7
422                     ; line_number = 196
423                     ;  or_if an6 _ancon0 1
424                     ; line_number = 197
425                     ; pin avdd, power_supply2
426                     ; line_number = 198
427                     ; pin_bindings ssop=15
428                     ; line_number = 199
429                     ; pin vdd, power_supply
430                     ; line_number = 200
431                     ; pin_bindings dip=14, soic=14, ssop=16
432                     ; line_number = 201
433                     ; pin ra6_in, ra6_out, ra6_unused, osc2, clko
434                     ; line_number = 202
435                     ; pin_bindings dip=15, soic=15, ssop=17
436                     ; line_number = 203
437                     ;  bind_to _porta@6
438                     ; line_number = 204
439                     ;  or_if ra6_in _trisa 64
440                     ; line_number = 205
441                     ;  or_if ra6_out _trisa 0
442                     ; line_number = 206
443                     ;  or_if ra6_unused _trisa 64
444                     ; line_number = 207
445                     ;  or_if clko _trisa 0
446                     ; line_number = 208
447                     ;  or_if osc2 _trisa 64
448                     ; line_number = 209
449                     ; pin ra7_in, ra7_out, ra7_unused, osc1, clki
450                     ; line_number = 210
451                     ; pin_bindings dip=16, soic=16, ssop=18
452                     ; line_number = 211
453                     ;  bind_to _porta@7
454                     ; line_number = 212
455                     ;  or_if ra7_in _trisa 128
456                     ; line_number = 213
457                     ;  or_if ra7_out _trisa 0
458                     ; line_number = 214
459                     ;  or_if ra7_unused _trisa 64
460                     ; line_number = 215
461                     ;  or_if osc1 _trisa 128
462                     ; line_number = 216
463                     ;  or_if clki _trisa 128
464                     ; line_number = 217
465                     ; pin ra0_in, ra0_out, ra0_unused, an0
466                     ; line_number = 218
467                     ; pin_bindings dip=17, soic=17, ssop=19
468                     ; line_number = 219
469                     ;  bind_to _porta@0
470                     ; line_number = 220
471                     ;  or_if ra0_in _trisa 1
472                     ; line_number = 221
473                     ;  or_if ra0_in _cmcon 7
474                     ; line_number = 222
475                     ;  or_if ra0_in _ansel 0
476                     ; line_number = 223
477                     ;  or_if ra0_in _adcon0 0
478                     ; line_number = 224
479                     ;  or_if ra0_out _trisa 0
480                     ; line_number = 225
481                     ;  or_if ra0_out _cmcon 7
482                     ; line_number = 226
483                     ;  or_if ra0_out _ansel 0
484                     ; line_number = 227
485                     ;  or_if ra0_out _adcon0 0
486                     ; line_number = 228
487                     ;  or_if ra0_unused _trisa 1
488                     ; line_number = 229
489                     ;  or_if ra0_unused _ansel 0
490                     ; line_number = 230
491                     ;  or_if ra0_unused _adcon0 0
492                     ; line_number = 231
493                     ;  or_if an0 _trisa 1
494                     ; line_number = 232
495                     ;  or_if an0 _ansel 1
496                     ; line_number = 233
497                     ;  or_if an0 _cmcon 7
498                     ; line_number = 234
499                     ;  or_if an0 _ancon0 1
500                     ; line_number = 235
501                     ; pin ra1_in, ra1_out, ra1_unused, an1
502                     ; line_number = 236
503                     ; pin_bindings dip=18, soic=18, ssop=20
504                     ; line_number = 237
505                     ;  bind_to _porta@1
506                     ; line_number = 238
507                     ;  or_if ra1_in _trisa 2
508                     ; line_number = 239
509                     ;  or_if ra1_in _cmcon 7
510                     ; line_number = 240
511                     ;  or_if ra1_in _ansel 0
512                     ; line_number = 241
513                     ;  or_if ra1_in _adcon0 0
514                     ; line_number = 242
515                     ;  or_if ra1_out _trisa 0
516                     ; line_number = 243
517                     ;  or_if ra1_out _cmcon 7
518                     ; line_number = 244
519                     ;  or_if ra1_out_ansel 0
520                     ; line_number = 245
521                     ;  or_if ra1_out _adcon0 0
522                     ; line_number = 246
523                     ;  or_if ra1_unused _trisa 2
524                     ; line_number = 247
525                     ;  or_if ra1_unused _ansel 0
526                     ; line_number = 248
527                     ;  or_if ra1_unused _adcon0 0
528                     ; line_number = 249
529                     ;  or_if an1 _trisa 2
530                     ; line_number = 250
531                     ;  or_if an1 _ansel 2
532                     ; line_number = 251
533                     ;  or_if an1 _cmcon 7
534                     ; line_number = 252
535                     ;  or_if an1 _ancon0 1
536             
537             
538                     ; line_number = 256
539                     ; library _standard entered
540             
541                     ; # Copyright (c) 2006 by Wayne C. Gramlich
542                     ; # All rights reserved.
543             
544                     ; # Standard definition for uCL:
545             
546                     ; buffer = '_standard'
547                     ; line_number = 8
548                     ; constant _true = (1 = 1)
549  00000001 = _true equ 1
550                     ; line_number = 9
551                     ; constant _false = (0 != 0)
552  00000000 = _false equ 0
553             
554             
555                     ; buffer = '_pic16f88'
556                     ; line_number = 256
557                     ; library _standard exited
558             
559                     ; # Data bank 0:
560             
561                     ; line_number = 260
562                     ; register _indf = 
563  00000000 = _indf equ 0
564             
565                     ; line_number = 262
566                     ; register _tmr0 = 
567  00000001 = _tmr0 equ 1
568             
569                     ; line_number = 264
570                     ; register _pcl = 
571  00000002 = _pcl equ 2
572             
573                     ; line_number = 266
574                     ; register _status = 
575  00000003 = _status equ 3
576                     ; line_number = 267
577                     ; bind _irp = _status@7
578  00000003 = _irp___byte equ _status
579  00000007 = _irp___bit equ 7
580                     ; line_number = 268
581                     ; bind _rp1 = _status@6
582  00000003 = _rp1___byte equ _status
583  00000006 = _rp1___bit equ 6
584                     ; line_number = 269
585                     ; bind _rp0 = _status@5
586  00000003 = _rp0___byte equ _status
587  00000005 = _rp0___bit equ 5
588                     ; line_number = 270
589                     ; bind _to = _status@4
590  00000003 = _to___byte equ _status
591  00000004 = _to___bit equ 4
592                     ; line_number = 271
593                     ; bind _pd = _status@3
594  00000003 = _pd___byte equ _status
595  00000003 = _pd___bit equ 3
596                     ; line_number = 272
597                     ; bind _z = _status@2
598  00000003 = _z___byte equ _status
599  00000002 = _z___bit equ 2
600                     ; line_number = 273
601                     ; bind _dc = _status@1
602  00000003 = _dc___byte equ _status
603  00000001 = _dc___bit equ 1
604                     ; line_number = 274
605                     ; bind _c = _status@0
606  00000003 = _c___byte equ _status
607  00000000 = _c___bit equ 0
608             
609                     ; line_number = 276
610                     ; register _fsr = 
611  00000004 = _fsr equ 4
612             
613                     ; line_number = 278
614                     ; register _porta = 
615  00000005 = _porta equ 5
616                     ; line_number = 279
617                     ; bind _ra7 = _porta@7
618  00000005 = _ra7___byte equ _porta
619  00000007 = _ra7___bit equ 7
620                     ; line_number = 280
621                     ; bind _ra6 = _porta@6
622  00000005 = _ra6___byte equ _porta
623  00000006 = _ra6___bit equ 6
624                     ; line_number = 281
625                     ; bind _ra5 = _porta@5
626  00000005 = _ra5___byte equ _porta
627  00000005 = _ra5___bit equ 5
628                     ; line_number = 282
629                     ; bind _ra4 = _porta@4
630  00000005 = _ra4___byte equ _porta
631  00000004 = _ra4___bit equ 4
632                     ; line_number = 283
633                     ; bind _ra3 = _porta@3
634  00000005 = _ra3___byte equ _porta
635  00000003 = _ra3___bit equ 3
636                     ; line_number = 284
637                     ; bind _ra2 = _porta@2
638  00000005 = _ra2___byte equ _porta
639  00000002 = _ra2___bit equ 2
640                     ; line_number = 285
641                     ; bind _ra1 = _porta@1
642  00000005 = _ra1___byte equ _porta
643  00000001 = _ra1___bit equ 1
644                     ; line_number = 286
645                     ; bind _ra0 = _porta@0
646  00000005 = _ra0___byte equ _porta
647  00000000 = _ra0___bit equ 0
648             
649                     ; line_number = 288
650                     ; register _portb = 
651  00000006 = _portb equ 6
652                     ; line_number = 289
653                     ; bind _rb7 = _portb@7
654  00000006 = _rb7___byte equ _portb
655  00000007 = _rb7___bit equ 7
656                     ; line_number = 290
657                     ; bind _rb6 = _portb@6
658  00000006 = _rb6___byte equ _portb
659  00000006 = _rb6___bit equ 6
660                     ; line_number = 291
661                     ; bind _rb5 = _portb@5
662  00000006 = _rb5___byte equ _portb
663  00000005 = _rb5___bit equ 5
664                     ; line_number = 292
665                     ; bind _rb4 = _portb@4
666  00000006 = _rb4___byte equ _portb
667  00000004 = _rb4___bit equ 4
668                     ; line_number = 293
669                     ; bind _rb3 = _portb@3
670  00000006 = _rb3___byte equ _portb
671  00000003 = _rb3___bit equ 3
672                     ; line_number = 294
673                     ; bind _rb2 = _portb@2
674  00000006 = _rb2___byte equ _portb
675  00000002 = _rb2___bit equ 2
676                     ; line_number = 295
677                     ; bind _rb1 = _portb@1
678  00000006 = _rb1___byte equ _portb
679  00000001 = _rb1___bit equ 1
680                     ; line_number = 296
681                     ; bind _rb0 = _portb@0
682  00000006 = _rb0___byte equ _portb
683  00000000 = _rb0___bit equ 0
684             
685                     ; line_number = 298
686                     ; register _pclath = 
687  0000000a = _pclath equ 10
688             
689                     ; line_number = 300
690                     ; register _intcon = 
691  0000000b = _intcon equ 11
692                     ; line_number = 301
693                     ; bind _gie = _intcon@7
694  0000000b = _gie___byte equ _intcon
695  00000007 = _gie___bit equ 7
696                     ; line_number = 302
697                     ; bind _peie = _intcon@6
698  0000000b = _peie___byte equ _intcon
699  00000006 = _peie___bit equ 6
700                     ; line_number = 303
701                     ; bind _tmr0ie = _intcon@5
702  0000000b = _tmr0ie___byte equ _intcon
703  00000005 = _tmr0ie___bit equ 5
704                     ; line_number = 304
705                     ; bind _int0ie = _intcon@4
706  0000000b = _int0ie___byte equ _intcon
707  00000004 = _int0ie___bit equ 4
708                     ; line_number = 305
709                     ; bind _rbie = _intcon@3
710  0000000b = _rbie___byte equ _intcon
711  00000003 = _rbie___bit equ 3
712                     ; line_number = 306
713                     ; bind _tmr0if = _intcon@2
714  0000000b = _tmr0if___byte equ _intcon
715  00000002 = _tmr0if___bit equ 2
716                     ; line_number = 307
717                     ; bind _int0if = _intcon@1
718  0000000b = _int0if___byte equ _intcon
719  00000001 = _int0if___bit equ 1
720                     ; line_number = 308
721                     ; bind _rbif = _intcon@0
722  0000000b = _rbif___byte equ _intcon
723  00000000 = _rbif___bit equ 0
724             
725                     ; line_number = 310
726                     ; register _pir1 = 
727  0000000c = _pir1 equ 12
728                     ; line_number = 311
729                     ; bind _adif = _pir1@6
730  0000000c = _adif___byte equ _pir1
731  00000006 = _adif___bit equ 6
732                     ; line_number = 312
733                     ; bind _rcif = _pir1@5
734  0000000c = _rcif___byte equ _pir1
735  00000005 = _rcif___bit equ 5
736                     ; line_number = 313
737                     ; bind _txif = _pir1@4
738  0000000c = _txif___byte equ _pir1
739  00000004 = _txif___bit equ 4
740                     ; line_number = 314
741                     ; bind _sspif = _pir1@3
742  0000000c = _sspif___byte equ _pir1
743  00000003 = _sspif___bit equ 3
744                     ; line_number = 315
745                     ; bind _ccp1if = _pir1@2
746  0000000c = _ccp1if___byte equ _pir1
747  00000002 = _ccp1if___bit equ 2
748                     ; line_number = 316
749                     ; bind _tmr2if = _pir1@1
750  0000000c = _tmr2if___byte equ _pir1
751  00000001 = _tmr2if___bit equ 1
752                     ; line_number = 317
753                     ; bind _tmr1if = _pir1@0
754  0000000c = _tmr1if___byte equ _pir1
755  00000000 = _tmr1if___bit equ 0
756             
757                     ; line_number = 319
758                     ; register _pir2 = 
759  0000000d = _pir2 equ 13
760                     ; line_number = 320
761                     ; bind _osfif = _pir1@7
762  0000000c = _osfif___byte equ _pir1
763  00000007 = _osfif___bit equ 7
764                     ; line_number = 321
765                     ; bind _cmif = _pir1@6
766  0000000c = _cmif___byte equ _pir1
767  00000006 = _cmif___bit equ 6
768                     ; line_number = 322
769                     ; bind _eeif = _pir1@4
770  0000000c = _eeif___byte equ _pir1
771  00000004 = _eeif___bit equ 4
772             
773                     ; line_number = 324
774                     ; register _tmr1l = 
775  0000000e = _tmr1l equ 14
776             
777                     ; line_number = 326
778                     ; register _tmr1h = 
779  0000000f = _tmr1h equ 15
780             
781                     ; line_number = 328
782                     ; register _t1con = 
783  00000010 = _t1con equ 16
784                     ; line_number = 329
785                     ; bind _t1run = _t1con@6
786  00000010 = _t1run___byte equ _t1con
787  00000006 = _t1run___bit equ 6
788                     ; line_number = 330
789                     ; bind _t1ckps1 = _t1con@5
790  00000010 = _t1ckps1___byte equ _t1con
791  00000005 = _t1ckps1___bit equ 5
792                     ; line_number = 331
793                     ; bind _t1ckps0 = _t1con@4
794  00000010 = _t1ckps0___byte equ _t1con
795  00000004 = _t1ckps0___bit equ 4
796                     ; line_number = 332
797                     ; bind _t1oscen = _t1con@3
798  00000010 = _t1oscen___byte equ _t1con
799  00000003 = _t1oscen___bit equ 3
800                     ; line_number = 333
801                     ; bind _t1sync = _t1con@2
802  00000010 = _t1sync___byte equ _t1con
803  00000002 = _t1sync___bit equ 2
804                     ; line_number = 334
805                     ; bind _tmr1cs = _t1con@1
806  00000010 = _tmr1cs___byte equ _t1con
807  00000001 = _tmr1cs___bit equ 1
808                     ; line_number = 335
809                     ; bind _tmr1on = _t1con@0
810  00000010 = _tmr1on___byte equ _t1con
811  00000000 = _tmr1on___bit equ 0
812             
813                     ; line_number = 337
814                     ; register _tmr2 = 
815  00000011 = _tmr2 equ 17
816             
817                     ; line_number = 339
818                     ; register _t2con = 
819  00000012 = _t2con equ 18
820                     ; line_number = 340
821                     ; bind _toutps3 = _t2con@6
822  00000012 = _toutps3___byte equ _t2con
823  00000006 = _toutps3___bit equ 6
824                     ; line_number = 341
825                     ; bind _toutps2 = _t2con@5
826  00000012 = _toutps2___byte equ _t2con
827  00000005 = _toutps2___bit equ 5
828                     ; line_number = 342
829                     ; bind _toutps1 = _t2con@4
830  00000012 = _toutps1___byte equ _t2con
831  00000004 = _toutps1___bit equ 4
832                     ; line_number = 343
833                     ; bind _toutps0 = _t2con@3
834  00000012 = _toutps0___byte equ _t2con
835  00000003 = _toutps0___bit equ 3
836                     ; line_number = 344
837                     ; bind _trm2on = _t2con@2
838  00000012 = _trm2on___byte equ _t2con
839  00000002 = _trm2on___bit equ 2
840                     ; line_number = 345
841                     ; bind _t2ckps1 = _t2con@1
842  00000012 = _t2ckps1___byte equ _t2con
843  00000001 = _t2ckps1___bit equ 1
844                     ; line_number = 346
845                     ; bind _t2ckps0 = _t2con@0
846  00000012 = _t2ckps0___byte equ _t2con
847  00000000 = _t2ckps0___bit equ 0
848             
849                     ; line_number = 348
850                     ; register _sspbuf = 
851  00000013 = _sspbuf equ 19
852             
853                     ; line_number = 350
854                     ; register _sspcon = 
855  00000014 = _sspcon equ 20
856                     ; line_number = 351
857                     ; bind _wcol = _sspcon@7
858  00000014 = _wcol___byte equ _sspcon
859  00000007 = _wcol___bit equ 7
860                     ; line_number = 352
861                     ; bind _sspov = _sspcon@6
862  00000014 = _sspov___byte equ _sspcon
863  00000006 = _sspov___bit equ 6
864                     ; line_number = 353
865                     ; bind _sspen = _sspcon@5
866  00000014 = _sspen___byte equ _sspcon
867  00000005 = _sspen___bit equ 5
868                     ; line_number = 354
869                     ; bind _ckp = _sspcon@4
870  00000014 = _ckp___byte equ _sspcon
871  00000004 = _ckp___bit equ 4
872                     ; line_number = 355
873                     ; bind _sspm3 = _sspcon@3
874  00000014 = _sspm3___byte equ _sspcon
875  00000003 = _sspm3___bit equ 3
876                     ; line_number = 356
877                     ; bind _sspm2 = _sspcon@2
878  00000014 = _sspm2___byte equ _sspcon
879  00000002 = _sspm2___bit equ 2
880                     ; line_number = 357
881                     ; bind _sspm1 = _sspcon@1
882  00000014 = _sspm1___byte equ _sspcon
883  00000001 = _sspm1___bit equ 1
884                     ; line_number = 358
885                     ; bind _sspm0 = _sspcon@0
886  00000014 = _sspm0___byte equ _sspcon
887  00000000 = _sspm0___bit equ 0
888             
889                     ; line_number = 360
890                     ; register _ccpr1l = 
891  00000015 = _ccpr1l equ 21
892             
893                     ; line_number = 362
894                     ; register _ccpr1h = 
895  00000016 = _ccpr1h equ 22
896             
897                     ; line_number = 364
898                     ; register _ccp1con = 
899  00000017 = _ccp1con equ 23
900                     ; line_number = 365
901                     ; bind _ccp1x = _ccp1con@5
902  00000017 = _ccp1x___byte equ _ccp1con
903  00000005 = _ccp1x___bit equ 5
904                     ; line_number = 366
905                     ; bind _ccp1y = _ccp1con@4
906  00000017 = _ccp1y___byte equ _ccp1con
907  00000004 = _ccp1y___bit equ 4
908                     ; line_number = 367
909                     ; bind _ccp1m3 = _ccp1con@3
910  00000017 = _ccp1m3___byte equ _ccp1con
911  00000003 = _ccp1m3___bit equ 3
912                     ; line_number = 368
913                     ; bind _ccp1m2 = _ccp1con@2
914  00000017 = _ccp1m2___byte equ _ccp1con
915  00000002 = _ccp1m2___bit equ 2
916                     ; line_number = 369
917                     ; bind _ccp1m1 = _ccp1con@1
918  00000017 = _ccp1m1___byte equ _ccp1con
919  00000001 = _ccp1m1___bit equ 1
920                     ; line_number = 370
921                     ; bind _ccp1m0 = _ccp1con@0
922  00000017 = _ccp1m0___byte equ _ccp1con
923  00000000 = _ccp1m0___bit equ 0
924             
925                     ; line_number = 372
926                     ; register _rcsta = 
927  00000018 = _rcsta equ 24
928                     ; line_number = 373
929                     ; bind _spen = _rcsta@7
930  00000018 = _spen___byte equ _rcsta
931  00000007 = _spen___bit equ 7
932                     ; line_number = 374
933                     ; bind _rx9 = _rcsta@6
934  00000018 = _rx9___byte equ _rcsta
935  00000006 = _rx9___bit equ 6
936                     ; line_number = 375
937                     ; bind _sren = _rcsta@5
938  00000018 = _sren___byte equ _rcsta
939  00000005 = _sren___bit equ 5
940                     ; line_number = 376
941                     ; bind _cren = _rcsta@4
942  00000018 = _cren___byte equ _rcsta
943  00000004 = _cren___bit equ 4
944                     ; line_number = 377
945                     ; bind _adden = _rcsta@3
946  00000018 = _adden___byte equ _rcsta
947  00000003 = _adden___bit equ 3
948                     ; # Some other modules use _aden instead of _adden:
949                     ; line_number = 379
950                     ; bind _aden = _rcsta@3
951  00000018 = _aden___byte equ _rcsta
952  00000003 = _aden___bit equ 3
953                     ; line_number = 380
954                     ; bind _ferr = _rcsta@2
955  00000018 = _ferr___byte equ _rcsta
956  00000002 = _ferr___bit equ 2
957                     ; line_number = 381
958                     ; bind _oerr = _rcsta@1
959  00000018 = _oerr___byte equ _rcsta
960  00000001 = _oerr___bit equ 1
961                     ; line_number = 382
962                     ; bind _rx9d = _rcsta@0
963  00000018 = _rx9d___byte equ _rcsta
964  00000000 = _rx9d___bit equ 0
965             
966                     ; line_number = 384
967                     ; register _txreg = 
968  00000019 = _txreg equ 25
969             
970                     ; line_number = 386
971                     ; register _rcreg = 
972  0000001a = _rcreg equ 26
973             
974                     ; line_number = 388
975                     ; register _adresh = 
976  0000001e = _adresh equ 30
977             
978                     ; line_number = 390
979                     ; register _adcon0 = 
980  0000001f = _adcon0 equ 31
981                     ; line_number = 391
982                     ; bind _adcs1 = _adcon0@7
983  0000001f = _adcs1___byte equ _adcon0
984  00000007 = _adcs1___bit equ 7
985                     ; line_number = 392
986                     ; bind _adcs0 = _adcon0@6
987  0000001f = _adcs0___byte equ _adcon0
988  00000006 = _adcs0___bit equ 6
989                     ; line_number = 393
990                     ; bind _chs2 = _adcon0@5
991  0000001f = _chs2___byte equ _adcon0
992  00000005 = _chs2___bit equ 5
993                     ; line_number = 394
994                     ; bind _chs1 = _adcon0@4
995  0000001f = _chs1___byte equ _adcon0
996  00000004 = _chs1___bit equ 4
997                     ; line_number = 395
998                     ; bind _chs0 = _adcon0@3
999  0000001f = _chs0___byte equ _adcon0
1000 00000003 = _chs0___bit equ 3
1001                    ; line_number = 396
1002                    ; bind _go = _adcon0@2
1003 0000001f = _go___byte equ _adcon0
1004 00000002 = _go___bit equ 2
1005                    ; line_number = 397
1006                    ; bind _adon = _adcon0@0
1007 0000001f = _adon___byte equ _adcon0
1008 00000000 = _adon___bit equ 0
1009            
1010                    ; # Data bank 1:
1011            
1012                    ; line_number = 401
1013                    ; register _option = 
1014 00000081 = _option equ 129
1015                    ; line_number = 402
1016                    ; bind _rbpu = _option@7
1017 00000081 = _rbpu___byte equ _option
1018 00000007 = _rbpu___bit equ 7
1019                    ; line_number = 403
1020                    ; bind _intedg = _option@6
1021 00000081 = _intedg___byte equ _option
1022 00000006 = _intedg___bit equ 6
1023                    ; line_number = 404
1024                    ; bind _t0cs = _option@5
1025 00000081 = _t0cs___byte equ _option
1026 00000005 = _t0cs___bit equ 5
1027                    ; line_number = 405
1028                    ; bind _t0se = _option@4
1029 00000081 = _t0se___byte equ _option
1030 00000004 = _t0se___bit equ 4
1031                    ; line_number = 406
1032                    ; bind _psa = _option@3
1033 00000081 = _psa___byte equ _option
1034 00000003 = _psa___bit equ 3
1035                    ; line_number = 407
1036                    ; bind _ps2 = _option@2
1037 00000081 = _ps2___byte equ _option
1038 00000002 = _ps2___bit equ 2
1039                    ; line_number = 408
1040                    ; bind _ps1 = _option@1
1041 00000081 = _ps1___byte equ _option
1042 00000001 = _ps1___bit equ 1
1043                    ; line_number = 409
1044                    ; bind _ps0 = _option@0
1045 00000081 = _ps0___byte equ _option
1046 00000000 = _ps0___bit equ 0
1047            
1048                    ; line_number = 411
1049                    ; register _trisa = 
1050 00000085 = _trisa equ 133
1051                    ; line_number = 412
1052                    ; bind _trisa7 = _trisa@7
1053 00000085 = _trisa7___byte equ _trisa
1054 00000007 = _trisa7___bit equ 7
1055                    ; line_number = 413
1056                    ; bind _trisa6 = _trisa@6
1057 00000085 = _trisa6___byte equ _trisa
1058 00000006 = _trisa6___bit equ 6
1059                    ; # No _trisa5:
1060                    ; line_number = 415
1061                    ; bind _trisa4 = _trisa@4
1062 00000085 = _trisa4___byte equ _trisa
1063 00000004 = _trisa4___bit equ 4
1064                    ; line_number = 416
1065                    ; bind _trisa3 = _trisa@3
1066 00000085 = _trisa3___byte equ _trisa
1067 00000003 = _trisa3___bit equ 3
1068                    ; line_number = 417
1069                    ; bind _trisa2 = _trisa@2
1070 00000085 = _trisa2___byte equ _trisa
1071 00000002 = _trisa2___bit equ 2
1072                    ; line_number = 418
1073                    ; bind _trisa1 = _trisa@1
1074 00000085 = _trisa1___byte equ _trisa
1075 00000001 = _trisa1___bit equ 1
1076                    ; line_number = 419
1077                    ; bind _trisa0 = _trisa@0
1078 00000085 = _trisa0___byte equ _trisa
1079 00000000 = _trisa0___bit equ 0
1080            
1081                    ; line_number = 421
1082                    ; register _trisb = 
1083 00000086 = _trisb equ 134
1084                    ; line_number = 422
1085                    ; bind _trisb7 = _trisb@7
1086 00000086 = _trisb7___byte equ _trisb
1087 00000007 = _trisb7___bit equ 7
1088                    ; line_number = 423
1089                    ; bind _trisb6 = _trisb@6
1090 00000086 = _trisb6___byte equ _trisb
1091 00000006 = _trisb6___bit equ 6
1092                    ; line_number = 424
1093                    ; bind _trisb5 = _trisb@5
1094 00000086 = _trisb5___byte equ _trisb
1095 00000005 = _trisb5___bit equ 5
1096                    ; line_number = 425
1097                    ; bind _trisb4 = _trisb@4
1098 00000086 = _trisb4___byte equ _trisb
1099 00000004 = _trisb4___bit equ 4
1100                    ; line_number = 426
1101                    ; bind _trisb3 = _trisb@3
1102 00000086 = _trisb3___byte equ _trisb
1103 00000003 = _trisb3___bit equ 3
1104                    ; line_number = 427
1105                    ; bind _trisb2 = _trisb@2
1106 00000086 = _trisb2___byte equ _trisb
1107 00000002 = _trisb2___bit equ 2
1108                    ; line_number = 428
1109                    ; bind _trisb1 = _trisb@1
1110 00000086 = _trisb1___byte equ _trisb
1111 00000001 = _trisb1___bit equ 1
1112                    ; line_number = 429
1113                    ; bind _trisb0 = _trisb@0
1114 00000086 = _trisb0___byte equ _trisb
1115 00000000 = _trisb0___bit equ 0
1116            
1117                    ; line_number = 431
1118                    ; register _pie1 = 
1119 0000008c = _pie1 equ 140
1120                    ; line_number = 432
1121                    ; bind _adie = _pie1@6
1122 0000008c = _adie___byte equ _pie1
1123 00000006 = _adie___bit equ 6
1124                    ; line_number = 433
1125                    ; bind _rcie = _pie1@5
1126 0000008c = _rcie___byte equ _pie1
1127 00000005 = _rcie___bit equ 5
1128                    ; line_number = 434
1129                    ; bind _txie = _pie1@4
1130 0000008c = _txie___byte equ _pie1
1131 00000004 = _txie___bit equ 4
1132                    ; line_number = 435
1133                    ; bind _sspie = _pie1@3
1134 0000008c = _sspie___byte equ _pie1
1135 00000003 = _sspie___bit equ 3
1136                    ; line_number = 436
1137                    ; bind _ccp1ie = _pie1@2
1138 0000008c = _ccp1ie___byte equ _pie1
1139 00000002 = _ccp1ie___bit equ 2
1140                    ; line_number = 437
1141                    ; bind _tmr2ie = _pie1@1
1142 0000008c = _tmr2ie___byte equ _pie1
1143 00000001 = _tmr2ie___bit equ 1
1144                    ; line_number = 438
1145                    ; bind _tmr1ie = _pie1@0
1146 0000008c = _tmr1ie___byte equ _pie1
1147 00000000 = _tmr1ie___bit equ 0
1148            
1149                    ; line_number = 440
1150                    ; register _pie2 = 
1151 0000008d = _pie2 equ 141
1152                    ; line_number = 441
1153                    ; bind _osfie = _pie2@7
1154 0000008d = _osfie___byte equ _pie2
1155 00000007 = _osfie___bit equ 7
1156                    ; line_number = 442
1157                    ; bind _cmie = _pie2@6
1158 0000008d = _cmie___byte equ _pie2
1159 00000006 = _cmie___bit equ 6
1160                    ; line_number = 443
1161                    ; bind _eeie = _pie2@4
1162 0000008d = _eeie___byte equ _pie2
1163 00000004 = _eeie___bit equ 4
1164            
1165                    ; line_number = 445
1166                    ; register _pcon = 
1167 0000008e = _pcon equ 142
1168                    ; line_number = 446
1169                    ; bind _por = _pcon@1
1170 0000008e = _por___byte equ _pcon
1171 00000001 = _por___bit equ 1
1172                    ; line_number = 447
1173                    ; bind _bod = _pcon@0
1174 0000008e = _bod___byte equ _pcon
1175 00000000 = _bod___bit equ 0
1176            
1177                    ; line_number = 449
1178                    ; register _osccon = 
1179 0000008f = _osccon equ 143
1180                    ; line_number = 450
1181                    ; bind _ircf2 = _osccon@6
1182 0000008f = _ircf2___byte equ _osccon
1183 00000006 = _ircf2___bit equ 6
1184                    ; line_number = 451
1185                    ; bind _ircf1 = _osccon@5
1186 0000008f = _ircf1___byte equ _osccon
1187 00000005 = _ircf1___bit equ 5
1188                    ; line_number = 452
1189                    ; bind _ircf0 = _osccon@4
1190 0000008f = _ircf0___byte equ _osccon
1191 00000004 = _ircf0___bit equ 4
1192                    ; line_number = 453
1193                    ; bind _osts = _osccon@3
1194 0000008f = _osts___byte equ _osccon
1195 00000003 = _osts___bit equ 3
1196                    ; line_number = 454
1197                    ; bind _iofs = _osccon@2
1198 0000008f = _iofs___byte equ _osccon
1199 00000002 = _iofs___bit equ 2
1200                    ; line_number = 455
1201                    ; bind _scs1 = _osccon@1
1202 0000008f = _scs1___byte equ _osccon
1203 00000001 = _scs1___bit equ 1
1204                    ; line_number = 456
1205                    ; bind _scs0 = _osccon@0
1206 0000008f = _scs0___byte equ _osccon
1207 00000000 = _scs0___bit equ 0
1208            
1209                    ; line_number = 458
1210                    ; register _osctune = 
1211 00000090 = _osctune equ 144
1212                    ; line_number = 459
1213                    ; bind _tun5 = _osctune@5
1214 00000090 = _tun5___byte equ _osctune
1215 00000005 = _tun5___bit equ 5
1216                    ; line_number = 460
1217                    ; bind _tun4 = _osctune@4
1218 00000090 = _tun4___byte equ _osctune
1219 00000004 = _tun4___bit equ 4
1220                    ; line_number = 461
1221                    ; bind _tun3 = _osctune@3
1222 00000090 = _tun3___byte equ _osctune
1223 00000003 = _tun3___bit equ 3
1224                    ; line_number = 462
1225                    ; bind _tun2 = _osctune@2
1226 00000090 = _tun2___byte equ _osctune
1227 00000002 = _tun2___bit equ 2
1228                    ; line_number = 463
1229                    ; bind _tun1 = _osctune@1
1230 00000090 = _tun1___byte equ _osctune
1231 00000001 = _tun1___bit equ 1
1232                    ; line_number = 464
1233                    ; bind _tun0 = _osctune@0
1234 00000090 = _tun0___byte equ _osctune
1235 00000000 = _tun0___bit equ 0
1236            
1237                    ; line_number = 466
1238                    ; register _pr2 = 
1239 00000092 = _pr2 equ 146
1240            
1241                    ; line_number = 468
1242                    ; register _sspadd = 
1243 00000093 = _sspadd equ 147
1244            
1245                    ; line_number = 470
1246                    ; register _sspstat = 
1247 00000094 = _sspstat equ 148
1248                    ; line_number = 471
1249                    ; bind _smp = _sspstat@7
1250 00000094 = _smp___byte equ _sspstat
1251 00000007 = _smp___bit equ 7
1252                    ; line_number = 472
1253                    ; bind _cke = _sspstat@6
1254 00000094 = _cke___byte equ _sspstat
1255 00000006 = _cke___bit equ 6
1256                    ; line_number = 473
1257                    ; bind _da = _sspstat@5
1258 00000094 = _da___byte equ _sspstat
1259 00000005 = _da___bit equ 5
1260                    ; line_number = 474
1261                    ; bind _p = _sspstat@4
1262 00000094 = _p___byte equ _sspstat
1263 00000004 = _p___bit equ 4
1264                    ; line_number = 475
1265                    ; bind _s = _sspstat@3
1266 00000094 = _s___byte equ _sspstat
1267 00000003 = _s___bit equ 3
1268                    ; line_number = 476
1269                    ; bind _rw = _sspstat@2
1270 00000094 = _rw___byte equ _sspstat
1271 00000002 = _rw___bit equ 2
1272                    ; line_number = 477
1273                    ; bind _ua = _sspstat@1
1274 00000094 = _ua___byte equ _sspstat
1275 00000001 = _ua___bit equ 1
1276                    ; line_number = 478
1277                    ; bind _bf = _sspstat@0
1278 00000094 = _bf___byte equ _sspstat
1279 00000000 = _bf___bit equ 0
1280            
1281                    ; line_number = 480
1282                    ; register _txsta = 
1283 00000098 = _txsta equ 152
1284                    ; line_number = 481
1285                    ; bind _csrc = _txsta@7
1286 00000098 = _csrc___byte equ _txsta
1287 00000007 = _csrc___bit equ 7
1288                    ; line_number = 482
1289                    ; bind _tx9 = _txsta@6
1290 00000098 = _tx9___byte equ _txsta
1291 00000006 = _tx9___bit equ 6
1292                    ; line_number = 483
1293                    ; bind _txen = _txsta@5
1294 00000098 = _txen___byte equ _txsta
1295 00000005 = _txen___bit equ 5
1296                    ; line_number = 484
1297                    ; bind _sync = _txsta@4
1298 00000098 = _sync___byte equ _txsta
1299 00000004 = _sync___bit equ 4
1300                    ; line_number = 485
1301                    ; bind _brgh = _txsta@2
1302 00000098 = _brgh___byte equ _txsta
1303 00000002 = _brgh___bit equ 2
1304                    ; line_number = 486
1305                    ; bind _trmt = _txsta@1
1306 00000098 = _trmt___byte equ _txsta
1307 00000001 = _trmt___bit equ 1
1308                    ; line_number = 487
1309                    ; bind _tx9d = _txsta@0
1310 00000098 = _tx9d___byte equ _txsta
1311 00000000 = _tx9d___bit equ 0
1312            
1313                    ; line_number = 489
1314                    ; register _spbrg = 
1315 00000099 = _spbrg equ 153
1316            
1317                    ; line_number = 491
1318                    ; register _ansel = 
1319 0000009b = _ansel equ 155
1320                    ; line_number = 492
1321                    ; bind _ans6 = _ansel@6
1322 0000009b = _ans6___byte equ _ansel
1323 00000006 = _ans6___bit equ 6
1324                    ; line_number = 493
1325                    ; bind _ans5 = _ansel@5
1326 0000009b = _ans5___byte equ _ansel
1327 00000005 = _ans5___bit equ 5
1328                    ; line_number = 494
1329                    ; bind _ans4 = _ansel@4
1330 0000009b = _ans4___byte equ _ansel
1331 00000004 = _ans4___bit equ 4
1332                    ; line_number = 495
1333                    ; bind _ans3 = _ansel@3
1334 0000009b = _ans3___byte equ _ansel
1335 00000003 = _ans3___bit equ 3
1336                    ; line_number = 496
1337                    ; bind _ans2 = _ansel@2
1338 0000009b = _ans2___byte equ _ansel
1339 00000002 = _ans2___bit equ 2
1340                    ; line_number = 497
1341                    ; bind _ans1 = _ansel@1
1342 0000009b = _ans1___byte equ _ansel
1343 00000001 = _ans1___bit equ 1
1344                    ; line_number = 498
1345                    ; bind _ans0 = _ansel@0
1346 0000009b = _ans0___byte equ _ansel
1347 00000000 = _ans0___bit equ 0
1348            
1349                    ; line_number = 500
1350                    ; register _cmcon = 
1351 0000009c = _cmcon equ 156
1352                    ; line_number = 501
1353                    ; bind _c2out = _cmcon@7
1354 0000009c = _c2out___byte equ _cmcon
1355 00000007 = _c2out___bit equ 7
1356                    ; line_number = 502
1357                    ; bind _c1out = _cmcon@6
1358 0000009c = _c1out___byte equ _cmcon
1359 00000006 = _c1out___bit equ 6
1360                    ; line_number = 503
1361                    ; bind _c2inv = _cmcon@5
1362 0000009c = _c2inv___byte equ _cmcon
1363 00000005 = _c2inv___bit equ 5
1364                    ; line_number = 504
1365                    ; bind _c1inv = _cmcon@4
1366 0000009c = _c1inv___byte equ _cmcon
1367 00000004 = _c1inv___bit equ 4
1368                    ; line_number = 505
1369                    ; bind _cis = _cmcon@3
1370 0000009c = _cis___byte equ _cmcon
1371 00000003 = _cis___bit equ 3
1372                    ; line_number = 506
1373                    ; bind _cm2 = _cmcon@2
1374 0000009c = _cm2___byte equ _cmcon
1375 00000002 = _cm2___bit equ 2
1376                    ; line_number = 507
1377                    ; bind _cm1 = _cmcon@1
1378 0000009c = _cm1___byte equ _cmcon
1379 00000001 = _cm1___bit equ 1
1380                    ; line_number = 508
1381                    ; bind _cm0 = _cmcon@0
1382 0000009c = _cm0___byte equ _cmcon
1383 00000000 = _cm0___bit equ 0
1384            
1385                    ; line_number = 510
1386                    ; register _cvrcon = 
1387 0000009d = _cvrcon equ 157
1388                    ; line_number = 511
1389                    ; bind _cvren = _cvrcon@7
1390 0000009d = _cvren___byte equ _cvrcon
1391 00000007 = _cvren___bit equ 7
1392                    ; line_number = 512
1393                    ; bind _cvroe = _cvrcon@6
1394 0000009d = _cvroe___byte equ _cvrcon
1395 00000006 = _cvroe___bit equ 6
1396                    ; line_number = 513
1397                    ; bind _cvrr = _cvrcon@5
1398 0000009d = _cvrr___byte equ _cvrcon
1399 00000005 = _cvrr___bit equ 5
1400                    ; line_number = 514
1401                    ; bind _cvr3 = _cvrcon@3
1402 0000009d = _cvr3___byte equ _cvrcon
1403 00000003 = _cvr3___bit equ 3
1404                    ; line_number = 515
1405                    ; bind _cvr2 = _cvrcon@2
1406 0000009d = _cvr2___byte equ _cvrcon
1407 00000002 = _cvr2___bit equ 2
1408                    ; line_number = 516
1409                    ; bind _cvr1 = _cvrcon@1
1410 0000009d = _cvr1___byte equ _cvrcon
1411 00000001 = _cvr1___bit equ 1
1412                    ; line_number = 517
1413                    ; bind _cvr0 = _cvrcon@0
1414 0000009d = _cvr0___byte equ _cvrcon
1415 00000000 = _cvr0___bit equ 0
1416            
1417                    ; line_number = 519
1418                    ; register _adresl = 
1419 0000009e = _adresl equ 158
1420            
1421                    ; line_number = 521
1422                    ; register _adcon1 = 
1423 0000009f = _adcon1 equ 159
1424                    ; line_number = 522
1425                    ; bind _adfm = _adcon1@7
1426 0000009f = _adfm___byte equ _adcon1
1427 00000007 = _adfm___bit equ 7
1428                    ; line_number = 523
1429                    ; bind _adcs2 = _adcon1@6
1430 0000009f = _adcs2___byte equ _adcon1
1431 00000006 = _adcs2___bit equ 6
1432                    ; line_number = 524
1433                    ; bind _vcfg1 = _adcon1@5
1434 0000009f = _vcfg1___byte equ _adcon1
1435 00000005 = _vcfg1___bit equ 5
1436                    ; line_number = 525
1437                    ; bind _vcfg0 = _adcon1@4
1438 0000009f = _vcfg0___byte equ _adcon1
1439 00000004 = _vcfg0___bit equ 4
1440            
1441                    ; line_number = 527
1442                    ; register _wdtcon = 
1443 00000105 = _wdtcon equ 261
1444                    ; line_number = 528
1445                    ; bind _wdtps3 = _wdtcon@4
1446 00000105 = _wdtps3___byte equ _wdtcon
1447 00000004 = _wdtps3___bit equ 4
1448                    ; line_number = 529
1449                    ; bind _wdtps2 = _wdtcon@3
1450 00000105 = _wdtps2___byte equ _wdtcon
1451 00000003 = _wdtps2___bit equ 3
1452                    ; line_number = 530
1453                    ; bind _wdtps1 = _wdtcon@2
1454 00000105 = _wdtps1___byte equ _wdtcon
1455 00000002 = _wdtps1___bit equ 2
1456                    ; line_number = 531
1457                    ; bind _wdtps0 = _wdtcon@1
1458 00000105 = _wdtps0___byte equ _wdtcon
1459 00000001 = _wdtps0___bit equ 1
1460                    ; line_number = 532
1461                    ; bind _swdten = _wdtcon@0
1462 00000105 = _swdten___byte equ _wdtcon
1463 00000000 = _swdten___bit equ 0
1464            
1465                    ; line_number = 534
1466                    ; register _eedata = 
1467 0000010c = _eedata equ 268
1468            
1469                    ; line_number = 536
1470                    ; register _eeadr = 
1471 0000010d = _eeadr equ 269
1472            
1473                    ; line_number = 538
1474                    ; register _eedath = 
1475 0000010e = _eedath equ 270
1476            
1477                    ; line_number = 540
1478                    ; register _eedatl = 
1479 0000010f = _eedatl equ 271
1480            
1481                    ; line_number = 542
1482                    ; register _eecon1 = 
1483 0000018c = _eecon1 equ 396
1484                    ; line_number = 543
1485                    ; bind _eepgd = _eecon1@7
1486 0000018c = _eepgd___byte equ _eecon1
1487 00000007 = _eepgd___bit equ 7
1488                    ; line_number = 544
1489                    ; bind _free = _eecon1@4
1490 0000018c = _free___byte equ _eecon1
1491 00000004 = _free___bit equ 4
1492                    ; line_number = 545
1493                    ; bind _wrerr = _eecon1@3
1494 0000018c = _wrerr___byte equ _eecon1
1495 00000003 = _wrerr___bit equ 3
1496                    ; line_number = 546
1497                    ; bind _wren = _eecon1@2
1498 0000018c = _wren___byte equ _eecon1
1499 00000002 = _wren___bit equ 2
1500                    ; line_number = 547
1501                    ; bind _wr = _eecon1@1
1502 0000018c = _wr___byte equ _eecon1
1503 00000001 = _wr___bit equ 1
1504                    ; line_number = 548
1505                    ; bind _rd = _eecon1@0
1506 0000018c = _rd___byte equ _eecon1
1507 00000000 = _rd___bit equ 0
1508            
1509                    ; line_number = 550
1510                    ; register _eecon2 = 
1511 0000009d = _eecon2 equ 157
1512            
1513                    ; buffer = 'sonar6'
1514                    ; line_number = 7
1515                    ; library _pic16f88 exited
1516            
1517                    ; line_number = 9
1518                    ; library_bank 1
1519                    ; line_number = 10
1520                    ; library _signed16 entered
1521            
1522                    ; # Copyright (c) 2007 by Wayne C. Gramlich.
1523                    ; # All rights reserved.
1524            
1525                    ; # This library implements the following procedures for general use
1526                    ; # by users:
1527                    ; #
1528                    ; #    _signed16_from_byte(x)		return signed16(x) where x is a byte
1529                    ; #    _signed16_from_byte2(x,y)		return signed16((x<<8)|y)
1530                    ; #					where x,y are bytes
1531                    ; #    _signed16_to_byte(x)		return x as an 8-bit byte
1532                    ; #    _signed16_byte_high(x)		return bigh byte of x
1533                    ; #    _signed16_byte_low(x))		return low byte of x
1534                    ; #
1535                    ; # The following additional procedures are implemented for use by the
1536                    ; # compiler.
1537                    ; #
1538                    ; #    _signed16_pointer_load()		A := M[W]
1539                    ; #    _signed16_pointer_add()		A := M[W]
1540                    ; #    _signed16_pointer_divide()		A := A / M[W]
1541                    ; #    _signed16_pointer_multiply()	A := A * M[W]
1542                    ; #    _signed16_pointer_subtract()	A := A - M[W]
1543                    ; #    _signed16_pointer_store()		M[W] := A
1544                    ; #    _signed16_pointer_negate()		A := -A
1545                    ; #    _signed16_pointer_swap()		A <=> M[W]
1546                    ; #    _signed16_equals()			_z := A = 0.0
1547                    ; #    _signed16_not_equal()		_z := A != 0.0
1548                    ; #    _signed16_less_than()		_z := if A < 0.0
1549                    ; #    _signed16_less_than_or_equal()	_z := A <= 0.0
1550                    ; #    _signed16_greater_than()		_z := A > 0.0
1551                    ; #    _signed16_greater_than_or_equal()	_z := A >= 0.0
1552                    ; #
1553                    ; # All of the procedures constants and labels in this library are
1554                    ; # prefixed by "_signed16_".
1555                    ; #
1556                    ; # For the uCL compiler, signed16's are required to be aligned on even
1557                    ; # memory addresses.  Since the PIC16F* processor can not access more
1558                    ; # 512 bytes of RAM, this means that a pointer to signed16 can be represented
1559                    ; # in 8-bits as (address>>1).  (Pretty, slick!)
1560            
1561                    ; # FIXME: Make sure that none of the procedures allocate any argument storage!!!
1562            
1563                    ; buffer = '_signed16'
1564                    ; line_number = 44
1565                    ; global _signed16_a0 byte	# A Register MSB
1566 00000020 = _signed16_a0 equ globals___0
1567                    ; line_number = 45
1568                    ; global _signed16_a1 byte	# A Register LSB
1569 00000021 = _signed16_a1 equ globals___0+1
1570                    ; line_number = 46
1571                    ; global _signed16_b0 byte	# B Register MSB
1572 00000022 = _signed16_b0 equ globals___0+2
1573                    ; line_number = 47
1574                    ; global _signed16_b1 byte	# B Register LSB
1575 00000023 = _signed16_b1 equ globals___0+3
1576                    ; line_number = 48
1577                    ; global _signed16_result3 byte	# Mulitply result MSB
1578 00000024 = _signed16_result3 equ globals___0+4
1579                    ; line_number = 49
1580                    ; global _signed16_result2 byte
1581 00000025 = _signed16_result2 equ globals___0+5
1582                    ; line_number = 50
1583                    ; global _signed16_result1 byte
1584 00000026 = _signed16_result1 equ globals___0+6
1585                    ; line_number = 51
1586                    ; global _signed16_result0 byte	# Mulitply resultLSB
1587 00000027 = _signed16_result0 equ globals___0+7
1588                    ; line_number = 52
1589                    ; global _signed16_neg_flag byte	# Negative flag
1590 00000028 = _signed16_neg_flag equ globals___0+8
1591                    ; line_number = 53
1592                    ; global _signed16_count byte	# Loop counter for divide
1593 00000029 = _signed16_count equ globals___0+9
1594            
1595                    ; # Bindings for 
1596                    ; line_number = 56
1597                    ; bind _signed16_rem0 = _signed16_result2
1598 00000025 = _signed16_rem0 equ globals___0+5
1599                    ; line_number = 57
1600                    ; bind _signed16_rem1 = _signed16_result3
1601 00000024 = _signed16_rem1 equ globals___0+4
1602                    ; line_number = 58
1603                    ; bind _signed16_temp0 = _signed16_result0
1604 00000027 = _signed16_temp0 equ globals___0+7
1605                    ; line_number = 59
1606                    ; bind _signed16_temp1 = _signed16_result1
1607 00000026 = _signed16_temp1 equ globals___0+6
1608                    ; line_number = 60
1609                    ; bind _signed16_sign = _signed16_neg_flag
1610 00000028 = _signed16_sign equ globals___0+8
1611            
1612                    ; Delaying code generation for procedure  _signed16_pointer_load
1613                    ; Delaying code generation for procedure  _signed16_pointer_add
1614                    ; Delaying code generation for procedure  _signed16_pointer_divide
1615                    ; Delaying code generation for procedure  _signed16_pointer_multiply
1616                    ; Delaying code generation for procedure  _signed16_pointer_subtract
1617                    ; Delaying code generation for procedure  _signed16_pointer_store
1618                    ; Delaying code generation for procedure  _signed16_negate
1619                    ; Delaying code generation for procedure  _signed16_pointer_swap
1620                    ; Delaying code generation for procedure  _signed16_from_byte
1621                    ; Delaying code generation for procedure  _signed16_from_byte2
1622                    ; Delaying code generation for procedure  _signed16_to_byte
1623                    ; Delaying code generation for procedure  _signed16_byte_high
1624                    ; Delaying code generation for procedure  _signed16_byte_low
1625                    ; Delaying code generation for procedure  _signed16_equals
1626                    ; Delaying code generation for procedure  _signed16_not_equal
1627                    ; Delaying code generation for procedure  _signed16_less_than
1628                    ; Delaying code generation for procedure  _signed16_less_than_or_equal
1629                    ; Delaying code generation for procedure  _signed16_greater_than
1630                    ; Delaying code generation for procedure  _signed16_greater_than_or_equal
1631                    ; #*******************************************************************
1632                    ; #                       Double Precision Division
1633                    ; #
1634                    ; #               ( Optimized for Code Size : Looped Code )
1635                    ; #
1636                    ; #*******************************************************************#
1637                    ; #   Division:
1638                    ; #	Input:
1639                    ; #	    Numeratator=_signed16_a<0:1>
1640                    ; #	    Denominator = _signed16_b<0:1>
1641                    ; #	Outputs:
1642                    ; #	    Quotiant = _signed16_a<0:1>
1643                    ; #	    Remainder in _signed16_rem<0:1>
1644                    ; #
1645                    ; #   Sequence:
1646                    ; #	(a) Load the Numerator in location _signed16_a<0:1> ( 16 bits )
1647                    ; #	(b) Load the Denominator in location _signed16_b<0:1> ( 16 bits )
1648                    ; #	(c) call _signed16_divide_raw
1649                    ; #	(d) The 16 bit quotiant is in location _signed16_a<0:1>
1650                    ; #	(e) The 16 bit remainder is in locations _signed16_rem<0:1>
1651            
1652                    ; Delaying code generation for procedure  _signed16_divide_raw
1653            
1654                    ; buffer = 'sonar6'
1655                    ; line_number = 10
1656                    ; library _signed16 exited
1657            
1658                    ; # The system is running at 16MHz:
1659                    ; line_number = 13
1660                    ; library clock16mhz entered
1661                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1662                    ; # All rights reserved.
1663            
1664                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1665                    ; # and {clocks_per_instruction}.
1666            
1667                    ; # Define processor constants:
1668                    ; buffer = 'clock16mhz'
1669                    ; line_number = 9
1670                    ; constant clock_rate = 16000000
1671 00f42400 = clock_rate equ 16000000
1672                    ; line_number = 10
1673                    ; constant clocks_per_instruction = 4
1674 00000004 = clocks_per_instruction equ 4
1675                    ; line_number = 11
1676                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1677 003d0900 = instruction_rate equ 4000000
1678            
1679            
1680                    ; buffer = 'sonar6'
1681                    ; line_number = 13
1682                    ; library clock16mhz exited
1683                    ; # A microsecond takes 4 cycles at 16MHz:
1684                    ; line_number = 15
1685                    ; constant microsecond = 4
1686 00000004 = microsecond equ 4
1687            
1688                    ; # This module uses 16MHz crystal oscillator; hence mode EC=External Clock:
1689            
1690                    ; # All I/O pins start off as inputs.
1691                    ; # We switch the trigger pins to outputs as needed.
1692                    ; line_number = 22
1693                    ; package dip
1694                    ; line_number = 23
1695                    ; pin 1 = ra2_in, name=signal0
1696 00000005 = signal0___byte equ _porta
1697 00000002 = signal0___bit equ 2
1698                    ; line_number = 24
1699                    ;  pin 2 = ra3_in, name=trigger1
1700 00000005 = trigger1___byte equ _porta
1701 00000003 = trigger1___bit equ 3
1702                    ; line_number = 25
1703                    ;  pin 3 = ra4_in, name=trigger0
1704 00000005 = trigger0___byte equ _porta
1705 00000004 = trigger0___bit equ 4
1706                    ; line_number = 26
1707                    ;  pin 4 = ra5_in, name=signal1
1708 00000005 = signal1___byte equ _porta
1709 00000005 = signal1___bit equ 5
1710                    ; line_number = 27
1711                    ;  pin 5 = ground
1712                    ; line_number = 28
1713                    ;  pin 6 = rb0_in, name=trigger4
1714 00000006 = trigger4___byte equ _portb
1715 00000000 = trigger4___bit equ 0
1716                    ; line_number = 29
1717                    ;  pin 7 = rb1_in, name=signal4
1718 00000006 = signal4___byte equ _portb
1719 00000001 = signal4___bit equ 1
1720                    ; line_number = 30
1721                    ;  pin 8 = rx
1722                    ; line_number = 31
1723                    ;  pin 9 = rb3_in, name=trigger5
1724 00000006 = trigger5___byte equ _portb
1725 00000003 = trigger5___bit equ 3
1726            
1727                    ; line_number = 33
1728                    ;  pin 10 = rb4_in, name=signal5
1729 00000006 = signal5___byte equ _portb
1730 00000004 = signal5___bit equ 4
1731                    ; line_number = 34
1732                    ;  pin 11 = tx
1733                    ; line_number = 35
1734                    ;  pin 12 = rb6_in, name=trigger3
1735 00000006 = trigger3___byte equ _portb
1736 00000006 = trigger3___bit equ 6
1737                    ; line_number = 36
1738                    ;  pin 13 = rb7_in, name=signal3
1739 00000006 = signal3___byte equ _portb
1740 00000006 = signal3___bit equ 6
1741                    ; line_number = 37
1742                    ;  pin 14 = power_supply
1743                    ; line_number = 38
1744                    ;  pin 15 = osc2
1745                    ; line_number = 39
1746                    ;  pin 16 = osc1
1747                    ; line_number = 40
1748                    ;  pin 17 = ra0_out, name=trigger2
1749 00000005 = trigger2___byte equ _porta
1750 00000000 = trigger2___bit equ 0
1751                    ; line_number = 41
1752                    ;  pin 18 = ra1_in, name=signal2
1753 00000005 = signal2___byte equ _porta
1754 00000001 = signal2___bit equ 1
1755            
1756                    ; #FIXME: Add "tris" to pin declaration some time!!!
1757                    ; line_number = 44
1758                    ; bind tris0 = _trisa@4
1759 00000085 = tris0___byte equ _trisa
1760 00000004 = tris0___bit equ 4
1761                    ; line_number = 45
1762                    ; bind tris1 = _trisa@3
1763 00000085 = tris1___byte equ _trisa
1764 00000003 = tris1___bit equ 3
1765                    ; line_number = 46
1766                    ; bind tris2 = _trisa@0
1767 00000085 = tris2___byte equ _trisa
1768 00000000 = tris2___bit equ 0
1769                    ; line_number = 47
1770                    ; bind tris3 = _trisb@6
1771 00000086 = tris3___byte equ _trisb
1772 00000006 = tris3___bit equ 6
1773                    ; line_number = 48
1774                    ; bind tris4 = _trisb@0
1775 00000086 = tris4___byte equ _trisb
1776 00000000 = tris4___bit equ 0
1777                    ; line_number = 49
1778                    ; bind tris5 = _trisb@3
1779 00000086 = tris5___byte equ _trisb
1780 00000003 = tris5___bit equ 3
1781            
1782                    ; line_number = 51
1783                    ; origin 0
1784   0000 :           org     0
1785            
1786                    ; line_number = 53
1787                    ; constant data_bytes = 21
1788 00000015 = data_bytes equ 21
1789            
1790                    ; line_number = 55
1791                    ;info   55, 0
1792                    ; procedure start
1793   0000 :   start:
1794                    ; arguments_none
1795                    ; line_number = 57
1796                    ;  returns_nothing
1797                    ; line_number = 58
1798                    ;  return_suppress
1799            
1800                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
1801                    ; line_number = 60
1802                    ;  assemble
1803                    ;info   60, 0
1804                    ; line_number = 61
1805                    ;info   61, 0
1806                    ; codebank start, main
1807                    ; line_number = 62
1808                    ;info   62, 0
1809 0000 28e7          goto    main
1810            
1811                    ; delay after procedure statements=non-uniform
1812                    ; Return instruction suppressed by 'return_suppress'
1813            
1814            
1815            
1816            
1817                    ; line_number = 64
1818                    ; origin 4
1819   0004 :           org     4
1820            
1821                    ; line_number = 66
1822                    ; constant sonars = 6
1823 00000006 = sonars equ 6
1824                    ; line_number = 67
1825                    ; global raw_highs[sonars] array[byte]
1826 0000003e = raw_highs equ globals___0+30
1827                    ; line_number = 68
1828                    ; global raw_lows[sonars] array[byte]
1829 00000044 = raw_lows equ globals___0+36
1830                    ; line_number = 69
1831                    ; global unit_highs[sonars] array[byte]
1832 0000004a = unit_highs equ globals___0+42
1833                    ; line_number = 70
1834                    ; global unit_lows[sonars] array[byte]
1835 00000050 = unit_lows equ globals___0+48
1836            
1837                    ; line_number = 72
1838                    ; global speed_divisor signed16
1839 00000056 = speed_divisor equ globals___0+54
1840                    ; line_number = 73
1841                    ; global distance signed16
1842 00000058 = distance equ globals___0+56
1843            
1844                    ; line_number = 75
1845                    ; global address byte
1846 0000005a = address equ globals___0+58
1847                    ; line_number = 76
1848                    ; global echo_munch bit
1849 0000006f = echo_munch___byte equ globals___0+79
1850 00000000 = echo_munch___bit equ 0
1851                    ; line_number = 77
1852                    ; global state byte
1853 0000005b = state equ globals___0+59
1854                    ; line_number = 78
1855                    ; global id_index byte
1856 0000005c = id_index equ globals___0+60
1857                    ; line_number = 79
1858                    ; global iteration byte
1859 0000005d = iteration equ globals___0+61
1860            
1861            
1862                    ; line_number = 82
1863                    ; constant sound_speed_meters = 344
1864 00000158 = sound_speed_meters equ 344
1865                    ; line_number = 83
1866                    ; constant sound_speed_centimeters = sound_speed_meters * 100
1867 00008660 = sound_speed_centimeters equ 34400
1868                    ; line_number = 84
1869                    ; constant sound_speed_millimeters = sound_speed_meters * 1000
1870 00053fc0 = sound_speed_millimeters equ 344000
1871                    ; line_number = 85
1872                    ; constant sound_speed_feet = 1128
1873 00000468 = sound_speed_feet equ 1128
1874                    ; line_number = 86
1875                    ; constant sound_speed_inches = sound_speed_feet * 12
1876 000034e0 = sound_speed_inches equ 13536
1877            
1878                    ; # The extra factor of 2 comes from the round trip the sound pulse must make:
1879                    ; line_number = 89
1880                    ; constant ticks_per_second = 1000 * 1000 * microsecond
1881 003d0900 = ticks_per_second equ 4000000
1882                    ; line_number = 90
1883                    ; constant divisor_meters = 2 * ticks_per_second / sound_speed_meters
1884 00005ad7 = divisor_meters equ 23255
1885                    ; line_number = 91
1886                    ; constant divisor_centimeters = 2 * ticks_per_second / sound_speed_centimeters
1887 000000e8 = divisor_centimeters equ 232
1888                    ; line_number = 92
1889                    ; constant divisor_millimeters = 2 * ticks_per_second / sound_speed_millimeters
1890 00000017 = divisor_millimeters equ 23
1891                    ; line_number = 93
1892                    ; constant divisor_feet = 2 * ticks_per_second / sound_speed_feet
1893 00001bb4 = divisor_feet equ 7092
1894                    ; line_number = 94
1895                    ; constant divisor_inches = 2 * ticks_per_second / sound_speed_inches
1896 0000024f = divisor_inches equ 591
1897            
1898                    ; line_number = 96
1899                    ; constant divisor_millimeters_high = divisor_millimeters >> 8
1900 00000000 = divisor_millimeters_high equ 0
1901                    ; line_number = 97
1902                    ; constant divisor_millimeters_low = divisor_millimeters & 0xff
1903 00000017 = divisor_millimeters_low equ 23
1904            
1905                    ; line_number = 99
1906                    ;info   99, 4
1907                    ; procedure interrupt
1908   0004 :   interrupt:
1909 00000071 = interrupt___w_save equ shared___globals+1
1910 00000070 = interrupt___status_save equ shared___globals
1911                    ; Carefully save __w and __tatus into RAM
1912                    ; Save W first (easy)
1913 0004 00f1          movwf   interrupt___w_save
1914                    ; Save Status without smashing it (tricky)
1915                    ; Move swapped version of status into W
1916 0005 0e03          swapf   __status,w
1917                    ; Store swapped version of status into RAM
1918 0006 00f0          movwf   interrupt___status_save
1919                    ; arguments_none
1920                    ; line_number = 101
1921                    ;  returns_nothing
1922            
1923                    ; # Process interrupt:
1924            
1925                    ; line_number = 105
1926                    ;  local sonar_index byte
1927 0000005e = interrupt__sonar_index equ globals___0+62
1928                    ; line_number = 106
1929                    ;  local fsr_save byte
1930 0000005f = interrupt__fsr_save equ globals___0+63
1931                    ; line_number = 107
1932                    ;  local rx9d bit
1933 0000006f = interrupt__rx9d___byte equ globals___0+79
1934 00000001 = interrupt__rx9d___bit equ 1
1935                    ; line_number = 108
1936                    ;  local command byte
1937 00000060 = interrupt__command equ globals___0+64
1938            
1939                    ; # Save the {_fsr}:
1940                    ; before procedure statements delay=non-uniform, bit states=(data:??=uu=>?? code:X0=cu=>X0)
1941                    ; line_number = 111
1942                    ;  fsr_save := _fsr
1943                    ;info   111, 7
1944 0007 0804          movf    _fsr,w
1945 0008 1283          bcf     __rp0___byte, __rp0___bit
1946 0009 1303          bcf     __rp1___byte, __rp1___bit
1947 000a 00df          movwf   interrupt__fsr_save
1948            
1949                    ; # Deal with any errors:
1950                    ; line_number = 114
1951                    ;  if _oerr start
1952                    ;info   114, 11
1953                    ; =>bit_code_emit@symbol(): sym=_oerr
1954                    ; 1TEST: Single test with code in skip slot
1955 000b 1898          btfsc   _oerr___byte, _oerr___bit
1956                    ; line_number = 115
1957                    ; _cren := _false
1958                    ;info   115, 12
1959 000c 1218          bcf     _cren___byte, _cren___bit
1960                    ; Recombine size1 = 0 || size2 = 0
1961                    ; line_number = 114
1962                    ;  if _oerr done
1963                    ; line_number = 116
1964                    ; if _ferr start
1965                    ;info   116, 13
1966                    ; =>bit_code_emit@symbol(): sym=_ferr
1967                    ; 1TEST: Single test with code in skip slot
1968 000d 1918          btfsc   _ferr___byte, _ferr___bit
1969                    ; line_number = 117
1970                    ; _cren := _false
1971                    ;info   117, 14
1972 000e 1218          bcf     _cren___byte, _cren___bit
1973                    ; Recombine size1 = 0 || size2 = 0
1974                    ; line_number = 116
1975                    ; if _ferr done
1976                    ; line_number = 118
1977                    ; _cren := _true
1978                    ;info   118, 15
1979 000f 1618          bsf     _cren___byte, _cren___bit
1980            
1981                    ; # Receive the next byte:
1982                    ; line_number = 121
1983                    ;  rx9d := _false
1984                    ;info   121, 16
1985 0010 10ef          bcf     interrupt__rx9d___byte, interrupt__rx9d___bit
1986                    ; line_number = 122
1987                    ;  if _rx9d start
1988                    ;info   122, 17
1989                    ; =>bit_code_emit@symbol(): sym=_rx9d
1990                    ; 1TEST: Single test with code in skip slot
1991 0011 1818          btfsc   _rx9d___byte, _rx9d___bit
1992                    ; line_number = 123
1993                    ; rx9d := _true
1994                    ;info   123, 18
1995 0012 14ef          bsf     interrupt__rx9d___byte, interrupt__rx9d___bit
1996                    ; Recombine size1 = 0 || size2 = 0
1997                    ; line_number = 122
1998                    ;  if _rx9d done
1999                    ; line_number = 124
2000                    ; command := _rcreg
2001                    ;info   124, 19
2002 0013 081a          movf    _rcreg,w
2003 0014 00e0          movwf   interrupt__command
2004                    ; line_number = 125
2005                    ;  _rcif := _false
2006                    ;info   125, 21
2007 0015 128c          bcf     _rcif___byte, _rcif___bit
2008                    ; line_number = 126
2009                    ;  _tx9d := _false
2010                    ;info   126, 22
2011 0016 1683          bsf     __rp0___byte, __rp0___bit
2012 0017 1018          bcf     _tx9d___byte, _tx9d___bit
2013            
2014                    ; # Deal with address select bit:
2015                    ; line_number = 129
2016                    ;  if echo_munch start
2017                    ;info   129, 24
2018                    ; =>bit_code_emit@symbol(): sym=echo_munch
2019                    ; No 1TEST: true.size=1 false.size=195
2020                    ; No 2TEST: true.size=1 false.size=195
2021                    ; 2GOTO: Single test with two GOTO's
2022 0018 1283          bcf     __rp0___byte, __rp0___bit
2023 0019 1c6f          btfss   echo_munch___byte, echo_munch___bit
2024 001a 281d          goto    interrupt__38
2025                    ; # We are munching an echo byte:
2026                    ; line_number = 131
2027                    ;  echo_munch := _false
2028                    ;info   131, 27
2029 001b 106f          bcf     echo_munch___byte, echo_munch___bit
2030                    ; Recombine code1_bit_states != code2_bit_states
2031 001c 28e0          goto    interrupt__39
2032                    ; 2GOTO: Starting code 2
2033   001d :   interrupt__38:
2034                    ; line_number = 132
2035                    ;info   132, 29
2036                    ; =>bit_code_emit@symbol(): sym=interrupt__rx9d
2037                    ; No 1TEST: true.size=11 false.size=181
2038                    ; No 2TEST: true.size=11 false.size=181
2039                    ; 2GOTO: Single test with two GOTO's
2040 001d 1cef          btfss   interrupt__rx9d___byte, interrupt__rx9d___bit
2041 001e 282b          goto    interrupt__36
2042                    ; # We have an address byte:
2043                    ; line_number = 134
2044                    ;  if command = address start
2045                    ;info   134, 31
2046                    ; Left minus Right
2047 001f 085a          movf    address,w
2048 0020 0260          subwf   interrupt__command,w
2049                    ; =>bit_code_emit@symbol(): sym=__z
2050                    ; No 1TEST: true.size=5 false.size=1
2051                    ; No 2TEST: true.size=5 false.size=1
2052                    ; 2GOTO: Single test with two GOTO's
2053 0021 1d03          btfss   __z___byte, __z___bit
2054 0022 2829          goto    interrupt__34
2055                    ; # We are selected; receive all bytes:
2056                    ; line_number = 136
2057                    ;  state := 0
2058                    ;info   136, 35
2059 0023 01db          clrf    state
2060                    ; #_tx9d := _false
2061                    ; line_number = 138
2062                    ;  _txreg := 0xa5
2063                    ;info   138, 36
2064 0024 30a5          movlw   165
2065 0025 0099          movwf   _txreg
2066                    ; line_number = 139
2067                    ;  echo_munch := _true
2068                    ;info   139, 38
2069 0026 146f          bsf     echo_munch___byte, echo_munch___bit
2070                    ; line_number = 140
2071                    ;  _adden := _false
2072                    ;info   140, 39
2073 0027 1198          bcf     _adden___byte, _adden___bit
2074 0028 282a          goto    interrupt__35
2075                    ; 2GOTO: Starting code 2
2076   0029 :   interrupt__34:
2077                    ; # We are not selected; only listen for address bytes:
2078                    ; line_number = 143
2079                    ;  _adden := _true
2080                    ;info   143, 41
2081 0029 1598          bsf     _adden___byte, _adden___bit
2082   002a :   interrupt__35:
2083                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2084                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2085                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2086                    ; line_number = 134
2087                    ;  if command = address done
2088 002a 28e0          goto    interrupt__37
2089                    ; 2GOTO: Starting code 2
2090   002b :   interrupt__36:
2091                    ; # We have a command/data byte:
2092                    ; #_txreg := 0x23
2093                    ; #echo_munch := _true
2094            
2095                    ; line_number = 149
2096                    ;  switch state start
2097                    ;info   149, 43
2098                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2099 002b 3000          movlw   interrupt__32>>8
2100 002c 008a          movwf   __pclath
2101 002d 085b          movf    state,w
2102                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2103 002e 3e30          addlw   interrupt__32
2104 002f 0082          movwf   __pcl
2105                    ; page_group 1
2106   0030 :   interrupt__32:
2107 0030 2831          goto    interrupt__31
2108                    ; line_number = 150
2109                    ; case 0
2110   0031 :   interrupt__31:
2111                    ; # Command byte:
2112                    ; line_number = 152
2113                    ;  switch command >> 6 start
2114                    ;info   152, 49
2115                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2116 0031 3000          movlw   interrupt__28>>8
2117 0032 008a          movwf   __pclath
2118 00000068 = interrupt__29 equ globals___0+72
2119 0033 0e60          swapf   interrupt__command,w
2120 0034 00e8          movwf   interrupt__29
2121 0035 0ce8          rrf     interrupt__29,f
2122 0036 0c68          rrf     interrupt__29,w
2123 0037 3903          andlw   3
2124                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2125 0038 3e3a          addlw   interrupt__28
2126 0039 0082          movwf   __pcl
2127                    ; page_group 4
2128   003a :   interrupt__28:
2129 003a 283e          goto    interrupt__26
2130 003b 28e0          goto    interrupt__30
2131 003c 28e0          goto    interrupt__30
2132 003d 28b0          goto    interrupt__27
2133                    ; line_number = 153
2134                    ; case 0
2135   003e :   interrupt__26:
2136                    ; # 00xx xxxx:
2137                    ; line_number = 155
2138                    ;  sonar_index := command & 7
2139                    ;info   155, 62
2140 003e 3007          movlw   7
2141 003f 0560          andwf   interrupt__command,w
2142 0040 00de          movwf   interrupt__sonar_index
2143                    ; line_number = 156
2144                    ;  if sonar_index >= sonars start
2145                    ;info   156, 65
2146 0041 3006          movlw   6
2147 0042 025e          subwf   interrupt__sonar_index,w
2148                    ; =>bit_code_emit@symbol(): sym=__c
2149                    ; 1TEST: Single test with code in skip slot
2150 0043 1803          btfsc   __c___byte, __c___bit
2151                    ; line_number = 157
2152                    ; sonar_index := 0
2153                    ;info   157, 68
2154 0044 01de          clrf    interrupt__sonar_index
2155                    ; Recombine size1 = 0 || size2 = 0
2156                    ; line_number = 156
2157                    ;  if sonar_index >= sonars done
2158                    ; line_number = 158
2159                    ; switch (command >> 3) & 7 start
2160                    ;info   158, 69
2161                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
2162                    ; line_number = 159
2163                    ; case_maximum 7
2164 0045 3000          movlw   interrupt__13>>8
2165 0046 008a          movwf   __pclath
2166 00000068 = interrupt__14 equ globals___0+72
2167 0047 0c60          rrf     interrupt__command,w
2168 0048 00e8          movwf   interrupt__14
2169 0049 0ce8          rrf     interrupt__14,f
2170 004a 0c68          rrf     interrupt__14,w
2171 004b 3907          andlw   7
2172                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2173 004c 3e4e          addlw   interrupt__13
2174 004d 0082          movwf   __pcl
2175                    ; page_group 8
2176   004e :   interrupt__13:
2177 004e 2856          goto    interrupt__8
2178 004f 285e          goto    interrupt__9
2179 0050 2866          goto    interrupt__10
2180 0051 286e          goto    interrupt__11
2181 0052 2876          goto    interrupt__12
2182 0053 28af          goto    interrupt__15
2183 0054 28af          goto    interrupt__15
2184 0055 28af          goto    interrupt__15
2185                    ; line_number = 160
2186                    ; case 0
2187   0056 :   interrupt__8:
2188                    ; # 0000 0sss (Raw High Get):
2189                    ; line_number = 162
2190                    ;  _txreg := raw_highs[sonar_index]
2191                    ;info   162, 86
2192 0056 085e          movf    interrupt__sonar_index,w
2193 0057 3e3e          addlw   raw_highs
2194 0058 0084          movwf   __fsr
2195 0059 1383          bcf     __irp___byte, __irp___bit
2196 005a 0800          movf    __indf,w
2197 005b 0099          movwf   _txreg
2198                    ; line_number = 163
2199                    ;  echo_munch := _true
2200                    ;info   163, 92
2201 005c 146f          bsf     echo_munch___byte, echo_munch___bit
2202 005d 28af          goto    interrupt__15
2203                    ; line_number = 164
2204                    ; case 1
2205   005e :   interrupt__9:
2206                    ; # 0000 1sss (Raw Low Get):
2207                    ; line_number = 166
2208                    ;  _txreg := raw_lows[sonar_index]
2209                    ;info   166, 94
2210 005e 085e          movf    interrupt__sonar_index,w
2211 005f 3e44          addlw   raw_lows
2212 0060 0084          movwf   __fsr
2213 0061 1383          bcf     __irp___byte, __irp___bit
2214 0062 0800          movf    __indf,w
2215 0063 0099          movwf   _txreg
2216                    ; line_number = 167
2217                    ;  echo_munch := _true
2218                    ;info   167, 100
2219 0064 146f          bsf     echo_munch___byte, echo_munch___bit
2220 0065 28af          goto    interrupt__15
2221                    ; line_number = 168
2222                    ; case 2
2223   0066 :   interrupt__10:
2224                    ; # 0001 0sss (Distance High Get):
2225                    ; line_number = 170
2226                    ;  _txreg := unit_highs[sonar_index]
2227                    ;info   170, 102
2228 0066 085e          movf    interrupt__sonar_index,w
2229 0067 3e4a          addlw   unit_highs
2230 0068 0084          movwf   __fsr
2231 0069 1383          bcf     __irp___byte, __irp___bit
2232 006a 0800          movf    __indf,w
2233 006b 0099          movwf   _txreg
2234                    ; line_number = 171
2235                    ;  echo_munch := _true
2236                    ;info   171, 108
2237 006c 146f          bsf     echo_munch___byte, echo_munch___bit
2238 006d 28af          goto    interrupt__15
2239                    ; line_number = 172
2240                    ; case 3
2241   006e :   interrupt__11:
2242                    ; # 0001 1sss (Distance Low Get):
2243                    ; line_number = 174
2244                    ;  _txreg := unit_lows[sonar_index]
2245                    ;info   174, 110
2246 006e 085e          movf    interrupt__sonar_index,w
2247 006f 3e50          addlw   unit_lows
2248 0070 0084          movwf   __fsr
2249 0071 1383          bcf     __irp___byte, __irp___bit
2250 0072 0800          movf    __indf,w
2251 0073 0099          movwf   _txreg
2252                    ; line_number = 175
2253                    ;  echo_munch := _true
2254                    ;info   175, 116
2255 0074 146f          bsf     echo_munch___byte, echo_munch___bit
2256 0075 28af          goto    interrupt__15
2257                    ; line_number = 176
2258                    ; case 4
2259   0076 :   interrupt__12:
2260                    ; # 0010 0xxx:
2261                    ; line_number = 178
2262                    ;  switch command & 7 start
2263                    ;info   178, 118
2264                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2265                    ; line_number = 179
2266                    ; case_maximum 7
2267 0076 3000          movlw   interrupt__6>>8
2268 0077 008a          movwf   __pclath
2269 0078 3007          movlw   7
2270 0079 0560          andwf   interrupt__command,w
2271                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2272 007a 3e7c          addlw   interrupt__6
2273 007b 0082          movwf   __pcl
2274                    ; page_group 8
2275   007c :   interrupt__6:
2276 007c 2884          goto    interrupt__1
2277 007d 288e          goto    interrupt__2
2278 007e 2898          goto    interrupt__3
2279 007f 28a2          goto    interrupt__4
2280 0080 28ac          goto    interrupt__5
2281 0081 28af          goto    interrupt__7
2282 0082 28af          goto    interrupt__7
2283 0083 28af          goto    interrupt__7
2284                    ; line_number = 180
2285                    ; case 0
2286   0084 :   interrupt__1:
2287 0084 158a          bsf     __cb0___byte, __cb0___bit
2288                    ; line_number = 181
2289                    ; _txreg := _signed16_byte_high(speed_divisor)
2290                    ;info   181, 133
2291 0085 302b          movlw   speed_divisor>>1
2292 0086 2000          call    _signed16_pointer_load
2293 0087 301d          movlw   _signed16_byte_high__number>>1
2294 0088 208b          call    _signed16_pointer_store
2295 0089 20c7          call    _signed16_byte_high
2296 008a 0099          movwf   _txreg
2297                    ; line_number = 182
2298                    ;  echo_munch := _true
2299                    ;info   182, 139
2300 008b 146f          bsf     echo_munch___byte, echo_munch___bit
2301 008c 118a          bcf     __cb0___byte, __cb0___bit
2302 008d 28af          goto    interrupt__7
2303                    ; line_number = 183
2304                    ; case 1
2305   008e :   interrupt__2:
2306 008e 158a          bsf     __cb0___byte, __cb0___bit
2307                    ; line_number = 184
2308                    ; _txreg := _signed16_byte_low(speed_divisor)
2309                    ;info   184, 143
2310 008f 302b          movlw   speed_divisor>>1
2311 0090 2000          call    _signed16_pointer_load
2312 0091 301e          movlw   _signed16_byte_low__number>>1
2313 0092 208b          call    _signed16_pointer_store
2314 0093 20cb          call    _signed16_byte_low
2315 0094 0099          movwf   _txreg
2316                    ; line_number = 185
2317                    ;  echo_munch := _true
2318                    ;info   185, 149
2319 0095 146f          bsf     echo_munch___byte, echo_munch___bit
2320 0096 118a          bcf     __cb0___byte, __cb0___bit
2321 0097 28af          goto    interrupt__7
2322                    ; line_number = 186
2323                    ; case 2
2324   0098 :   interrupt__3:
2325 0098 158a          bsf     __cb0___byte, __cb0___bit
2326                    ; line_number = 187
2327                    ; _txreg := _signed16_byte_high(distance)
2328                    ;info   187, 153
2329 0099 302c          movlw   distance>>1
2330 009a 2000          call    _signed16_pointer_load
2331 009b 301d          movlw   _signed16_byte_high__number>>1
2332 009c 208b          call    _signed16_pointer_store
2333 009d 20c7          call    _signed16_byte_high
2334 009e 0099          movwf   _txreg
2335                    ; line_number = 188
2336                    ;  echo_munch := _true
2337                    ;info   188, 159
2338 009f 146f          bsf     echo_munch___byte, echo_munch___bit
2339 00a0 118a          bcf     __cb0___byte, __cb0___bit
2340 00a1 28af          goto    interrupt__7
2341                    ; line_number = 189
2342                    ; case 3
2343   00a2 :   interrupt__4:
2344 00a2 158a          bsf     __cb0___byte, __cb0___bit
2345                    ; line_number = 190
2346                    ; _txreg := _signed16_byte_low(distance)
2347                    ;info   190, 163
2348 00a3 302c          movlw   distance>>1
2349 00a4 2000          call    _signed16_pointer_load
2350 00a5 301e          movlw   _signed16_byte_low__number>>1
2351 00a6 208b          call    _signed16_pointer_store
2352 00a7 20cb          call    _signed16_byte_low
2353 00a8 0099          movwf   _txreg
2354                    ; line_number = 191
2355                    ;  echo_munch := _true
2356                    ;info   191, 169
2357 00a9 146f          bsf     echo_munch___byte, echo_munch___bit
2358 00aa 118a          bcf     __cb0___byte, __cb0___bit
2359 00ab 28af          goto    interrupt__7
2360                    ; line_number = 192
2361                    ; case 4
2362   00ac :   interrupt__5:
2363                    ; line_number = 193
2364                    ; _txreg := 0x12
2365                    ;info   193, 172
2366 00ac 3012          movlw   18
2367 00ad 0099          movwf   _txreg
2368                    ; line_number = 194
2369                    ;  echo_munch := _true
2370                    ;info   194, 174
2371 00ae 146f          bsf     echo_munch___byte, echo_munch___bit
2372   00af :   interrupt__7:
2373                    ; line_number = 178
2374                    ;  switch command & 7 done
2375   00af :   interrupt__15:
2376                    ; line_number = 158
2377                    ; switch (command >> 3) & 7 done
2378 00af 28e0          goto    interrupt__30
2379                    ; line_number = 195
2380                    ; case 3
2381   00b0 :   interrupt__27:
2382                    ; # 11xx xxxx:
2383                    ; line_number = 197
2384                    ;  switch (command >> 3) & 7 start
2385                    ;info   197, 176
2386                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2387 00b0 3000          movlw   interrupt__23>>8
2388 00b1 008a          movwf   __pclath
2389 00000068 = interrupt__24 equ globals___0+72
2390 00b2 0c60          rrf     interrupt__command,w
2391 00b3 00e8          movwf   interrupt__24
2392 00b4 0ce8          rrf     interrupt__24,f
2393 00b5 0c68          rrf     interrupt__24,w
2394 00b6 3907          andlw   7
2395                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2396 00b7 3eb9          addlw   interrupt__23
2397 00b8 0082          movwf   __pcl
2398                    ; page_group 8
2399   00b9 :   interrupt__23:
2400 00b9 28e0          goto    interrupt__25
2401 00ba 28e0          goto    interrupt__25
2402 00bb 28e0          goto    interrupt__25
2403 00bc 28e0          goto    interrupt__25
2404 00bd 28e0          goto    interrupt__25
2405 00be 28e0          goto    interrupt__25
2406 00bf 28e0          goto    interrupt__25
2407 00c0 28c1          goto    interrupt__22
2408                    ; line_number = 198
2409                    ; case 7
2410   00c1 :   interrupt__22:
2411                    ; line_number = 199
2412                    ; switch command & 7 start
2413                    ;info   199, 193
2414                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2415 00c1 3000          movlw   interrupt__20>>8
2416 00c2 008a          movwf   __pclath
2417 00c3 3007          movlw   7
2418 00c4 0560          andwf   interrupt__command,w
2419                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2420 00c5 3ec7          addlw   interrupt__20
2421 00c6 0082          movwf   __pcl
2422                    ; page_group 8
2423   00c7 :   interrupt__20:
2424 00c7 28e0          goto    interrupt__21
2425 00c8 28e0          goto    interrupt__21
2426 00c9 28e0          goto    interrupt__21
2427 00ca 28e0          goto    interrupt__21
2428 00cb 28cf          goto    interrupt__16
2429 00cc 28d0          goto    interrupt__17
2430 00cd 28da          goto    interrupt__18
2431 00ce 28df          goto    interrupt__19
2432                    ; line_number = 200
2433                    ; case 4
2434   00cf :   interrupt__16:
2435                    ; # 1111 1100 (Address Set)
2436                    ; line_number = 202
2437                    ;  do_nothing
2438                    ;info   202, 207
2439 00cf 28e0          goto    interrupt__21
2440                    ; line_number = 203
2441                    ; case 5
2442   00d0 :   interrupt__17:
2443                    ; # 1111 1101 (Id_Next):
2444                    ; line_number = 205
2445                    ;  _txreg := id[id_index]
2446                    ;info   205, 208
2447 00d0 085c          movf    id_index,w
2448 00d1 21f3          call    id
2449 00d2 0099          movwf   _txreg
2450                    ; line_number = 206
2451                    ;  echo_munch := _true
2452                    ;info   206, 211
2453 00d3 146f          bsf     echo_munch___byte, echo_munch___bit
2454                    ; line_number = 207
2455                    ;  id_index := id_index + 1
2456                    ;info   207, 212
2457 00d4 0adc          incf    id_index,f
2458                    ; line_number = 208
2459                    ;  if id_index >= id.size start
2460                    ;info   208, 213
2461 00d5 3016          movlw   22
2462 00d6 025c          subwf   id_index,w
2463                    ; =>bit_code_emit@symbol(): sym=__c
2464                    ; 1TEST: Single test with code in skip slot
2465 00d7 1803          btfsc   __c___byte, __c___bit
2466                    ; line_number = 209
2467                    ; id_index := id_index - 1
2468                    ;info   209, 216
2469 00d8 03dc          decf    id_index,f
2470                    ; Recombine size1 = 0 || size2 = 0
2471                    ; line_number = 208
2472                    ;  if id_index >= id.size done
2473 00d9 28e0          goto    interrupt__21
2474                    ; line_number = 210
2475                    ; case 6
2476   00da :   interrupt__18:
2477                    ; # 1111 1110 (Id_Start):
2478                    ; line_number = 212
2479                    ;  id_index := 0
2480                    ;info   212, 218
2481 00da 01dc          clrf    id_index
2482                    ; line_number = 213
2483                    ;  _txreg := id.size
2484                    ;info   213, 219
2485 00db 3016          movlw   22
2486 00dc 0099          movwf   _txreg
2487                    ; line_number = 214
2488                    ;  echo_munch := _true
2489                    ;info   214, 221
2490 00dd 146f          bsf     echo_munch___byte, echo_munch___bit
2491 00de 28e0          goto    interrupt__21
2492                    ; line_number = 215
2493                    ; case 7
2494   00df :   interrupt__19:
2495                    ; # 1111 1111 (Deselect):
2496                    ; line_number = 217
2497                    ;  _adden := _true
2498                    ;info   217, 223
2499 00df 1598          bsf     _adden___byte, _adden___bit
2500            
2501   00e0 :   interrupt__21:
2502                    ; line_number = 199
2503                    ; switch command & 7 done
2504   00e0 :   interrupt__25:
2505                    ; line_number = 197
2506                    ;  switch (command >> 3) & 7 done
2507   00e0 :   interrupt__30:
2508                    ; line_number = 152
2509                    ;  switch command >> 6 done
2510   00e0 :   interrupt__33:
2511                    ; line_number = 149
2512                    ;  switch state done
2513   00e0 :   interrupt__37:
2514                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2515                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2516                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2517   00e0 :   interrupt__39:
2518                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2519                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2520                    ; 2GOTO: code final bitstates:(data:??=uu=>00 code:X0=cu=>X0)
2521                    ; line_number = 129
2522                    ;  if echo_munch done
2523                    ; # Restore {_fsr}:
2524                    ; line_number = 220
2525                    ;  _fsr := fsr_save
2526                    ;info   220, 224
2527 00e0 085f          movf    interrupt__fsr_save,w
2528 00e1 0084          movwf   _fsr
2529            
2530            
2531                    ; delay after procedure statements=non-uniform
2532                    ; Interrupt return
2533                    ; Carefully restore __w and __tatus from RAM
2534                    ; Restore swapped status into W
2535 00e2 0e70          swapf   interrupt___status_save,w
2536                    ; W now contains (unswapped) status
2537                    ; Restore W to __status
2538 00e3 0083          movwf   __status
2539                    ; From here on out, do not modify __status
2540                    ; Swap saved W register in RAM
2541 00e4 0ef1          swapf   interrupt___w_save,f
2542                    ; Unswap the saved W reg and restore to W
2543 00e5 0e71          swapf   interrupt___w_save,w
2544                    ; __w and __status are now restored
2545                    ; Return from interrupt
2546 00e6 0009          retfie  
2547            
2548            
2549            
2550            
2551                    ; line_number = 223
2552                    ;info   223, 231
2553                    ; procedure main
2554   00e7 :   main:
2555                    ; Initialize some registers
2556 00e7 019f          clrf    _adcon0
2557 00e8 1683          bsf     __rp0___byte, __rp0___bit
2558 00e9 019b          clrf    _ansel
2559 00ea 3007          movlw   7
2560 00eb 009c          movwf   _cmcon
2561 00ec 30fe          movlw   254
2562 00ed 0085          movwf   _trisa
2563 00ee 30ff          movlw   255
2564 00ef 0086          movwf   _trisb
2565                    ; arguments_none
2566                    ; line_number = 225
2567                    ;  returns_nothing
2568            
2569                    ; # Main procedure and loop:
2570            
2571                    ; line_number = 229
2572                    ;  local sonar_index byte
2573 00000061 = main__sonar_index equ globals___0+65
2574                    ; line_number = 230
2575                    ;  local raw_high byte
2576 00000062 = main__raw_high equ globals___0+66
2577                    ; line_number = 231
2578                    ;  local raw_low byte
2579 00000063 = main__raw_low equ globals___0+67
2580                    ; line_number = 232
2581                    ;  local started bit
2582 0000006f = main__started___byte equ globals___0+79
2583 00000002 = main__started___bit equ 2
2584                    ; line_number = 233
2585                    ;  local count byte
2586 00000064 = main__count equ globals___0+68
2587                    ; line_number = 234
2588                    ;  local period signed16
2589 00000066 = main__period equ globals___0+70
2590            
2591                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:X0=cu=>X0)
2592                    ; line_number = 236
2593                    ;  call reset()
2594                    ;info   236, 240
2595 00f0 1283          bcf     __rp0___byte, __rp0___bit
2596 00f1 21cc          call    reset
2597            
2598                    ; line_number = 238
2599                    ;  sonar_index := 0
2600                    ;info   238, 242
2601 00f2 01e1          clrf    main__sonar_index
2602                    ; # Churn over the sonars:
2603                    ; line_number = 240
2604                    ;  loop_forever start
2605   00f3 :   main__1:
2606                    ; line_number = 241
2607                    ; sonar_index := sonar_index + 1
2608                    ;info   241, 243
2609 00f3 0ae1          incf    main__sonar_index,f
2610                    ; line_number = 242
2611                    ;  if sonar_index >= sonars start
2612                    ;info   242, 244
2613 00f4 3006          movlw   6
2614 00f5 0261          subwf   main__sonar_index,w
2615                    ; =>bit_code_emit@symbol(): sym=__c
2616                    ; 1TEST: Single test with code in skip slot
2617 00f6 1803          btfsc   __c___byte, __c___bit
2618                    ; line_number = 243
2619                    ; sonar_index := 0
2620                    ;info   243, 247
2621 00f7 01e1          clrf    main__sonar_index
2622            
2623                    ; Recombine size1 = 0 || size2 = 0
2624                    ; line_number = 242
2625                    ;  if sonar_index >= sonars done
2626                    ; line_number = 245
2627                    ; raw_high := 0x7f
2628                    ;info   245, 248
2629 00f8 307f          movlw   127
2630 00f9 00e2          movwf   main__raw_high
2631                    ; line_number = 246
2632                    ;  raw_low := 0xff
2633                    ;info   246, 250
2634 00fa 30ff          movlw   255
2635 00fb 00e3          movwf   main__raw_low
2636            
2637                    ; line_number = 248
2638                    ;  if _true start
2639                    ;info   248, 252
2640                    ; line_number = 249
2641                    ; switch sonar_index start
2642                    ;info   249, 252
2643                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2644 00fc 3001          movlw   main__8>>8
2645 00fd 008a          movwf   __pclath
2646 00fe 0861          movf    main__sonar_index,w
2647                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2648                    ; All case bodies prefer this bit set
2649 00ff 1683          bsf     __rp0___byte, __rp0___bit
2650 0100 3e02          addlw   main__8
2651 0101 0082          movwf   __pcl
2652                    ; page_group 6
2653   0102 :   main__8:
2654 0102 2908          goto    main__2
2655 0103 290c          goto    main__3
2656 0104 2910          goto    main__4
2657 0105 2914          goto    main__5
2658 0106 2918          goto    main__6
2659 0107 291c          goto    main__7
2660                    ; line_number = 250
2661                    ; case 0
2662   0108 :   main__2:
2663                    ; line_number = 251
2664                    ; tris0 := _false
2665                    ;info   251, 264
2666 0108 1205          bcf     tris0___byte, tris0___bit
2667                    ; line_number = 252
2668                    ;  trigger0 := _true
2669                    ;info   252, 265
2670 0109 1283          bcf     __rp0___byte, __rp0___bit
2671 010a 1605          bsf     trigger0___byte, trigger0___bit
2672 010b 291f          goto    main__9
2673                    ; line_number = 253
2674                    ; case 1
2675   010c :   main__3:
2676                    ; line_number = 254
2677                    ; tris1 := _false
2678                    ;info   254, 268
2679 010c 1185          bcf     tris1___byte, tris1___bit
2680                    ; line_number = 255
2681                    ;  trigger1 := _true
2682                    ;info   255, 269
2683 010d 1283          bcf     __rp0___byte, __rp0___bit
2684 010e 1585          bsf     trigger1___byte, trigger1___bit
2685 010f 291f          goto    main__9
2686                    ; line_number = 256
2687                    ; case 2
2688   0110 :   main__4:
2689                    ; line_number = 257
2690                    ; tris2 := _false
2691                    ;info   257, 272
2692 0110 1005          bcf     tris2___byte, tris2___bit
2693                    ; line_number = 258
2694                    ;  trigger2 := _true
2695                    ;info   258, 273
2696 0111 1283          bcf     __rp0___byte, __rp0___bit
2697 0112 1405          bsf     trigger2___byte, trigger2___bit
2698 0113 291f          goto    main__9
2699                    ; line_number = 259
2700                    ; case 3
2701   0114 :   main__5:
2702                    ; line_number = 260
2703                    ; tris3 := _false
2704                    ;info   260, 276
2705 0114 1306          bcf     tris3___byte, tris3___bit
2706                    ; line_number = 261
2707                    ;  trigger3 := _true
2708                    ;info   261, 277
2709 0115 1283          bcf     __rp0___byte, __rp0___bit
2710 0116 1706          bsf     trigger3___byte, trigger3___bit
2711 0117 291f          goto    main__9
2712                    ; line_number = 262
2713                    ; case 4
2714   0118 :   main__6:
2715                    ; line_number = 263
2716                    ; tris4 := _false
2717                    ;info   263, 280
2718 0118 1006          bcf     tris4___byte, tris4___bit
2719                    ; line_number = 264
2720                    ;  trigger4 := _true
2721                    ;info   264, 281
2722 0119 1283          bcf     __rp0___byte, __rp0___bit
2723 011a 1406          bsf     trigger4___byte, trigger4___bit
2724 011b 291f          goto    main__9
2725                    ; line_number = 265
2726                    ; case 5
2727   011c :   main__7:
2728                    ; line_number = 266
2729                    ; tris5 := _false
2730                    ;info   266, 284
2731 011c 1186          bcf     tris5___byte, tris5___bit
2732                    ; line_number = 267
2733                    ;  trigger5 := _true
2734                    ;info   267, 285
2735 011d 1283          bcf     __rp0___byte, __rp0___bit
2736 011e 1586          bsf     trigger5___byte, trigger5___bit
2737            
2738   011f :   main__9:
2739                    ; line_number = 249
2740                    ; switch sonar_index done
2741                    ; # Trigger the sonar for at least 5 microseconds:
2742                    ; line_number = 270
2743                    ;  delay 5 * microsecond start
2744                    ;info   270, 287
2745                    ; Delay expression evaluates to 20
2746                    ; line_number = 271
2747                    ; do_nothing
2748                    ;info   271, 287
2749            
2750                    ; Delay 20 cycles
2751                    ; Delay loop takes 5 * 4 = 20 cycles
2752 011f 3005          movlw   5
2753   0120 :   main__10:
2754 0120 3eff          addlw   255
2755 0121 1d03          btfss   __z___byte, __z___bit
2756 0122 2920          goto    main__10
2757                    ; line_number = 270
2758                    ;  delay 5 * microsecond done
2759                    ; # Get the trigger pulse turned off:
2760                    ; line_number = 274
2761                    ;  trigger0 := _false
2762                    ;info   274, 291
2763 0123 1205          bcf     trigger0___byte, trigger0___bit
2764                    ; line_number = 275
2765                    ;  trigger1 := _false
2766                    ;info   275, 292
2767 0124 1185          bcf     trigger1___byte, trigger1___bit
2768                    ; line_number = 276
2769                    ;  trigger2 := _false
2770                    ;info   276, 293
2771 0125 1005          bcf     trigger2___byte, trigger2___bit
2772                    ; line_number = 277
2773                    ;  trigger3 := _false
2774                    ;info   277, 294
2775 0126 1306          bcf     trigger3___byte, trigger3___bit
2776                    ; line_number = 278
2777                    ;  trigger4 := _false
2778                    ;info   278, 295
2779 0127 1006          bcf     trigger4___byte, trigger4___bit
2780                    ; line_number = 279
2781                    ;  trigger5 := _false
2782                    ;info   279, 296
2783 0128 1186          bcf     trigger5___byte, trigger5___bit
2784            
2785                    ; # Make for sure all triggers are turned off:
2786                    ; line_number = 282
2787                    ;  tris0 := _true
2788                    ;info   282, 297
2789 0129 1683          bsf     __rp0___byte, __rp0___bit
2790 012a 1605          bsf     tris0___byte, tris0___bit
2791                    ; line_number = 283
2792                    ;  tris1 := _true
2793                    ;info   283, 299
2794 012b 1585          bsf     tris1___byte, tris1___bit
2795                    ; line_number = 284
2796                    ;  tris2 := _true
2797                    ;info   284, 300
2798 012c 1405          bsf     tris2___byte, tris2___bit
2799                    ; line_number = 285
2800                    ;  tris3 := _true
2801                    ;info   285, 301
2802 012d 1706          bsf     tris3___byte, tris3___bit
2803                    ; line_number = 286
2804                    ;  tris4 := _true
2805                    ;info   286, 302
2806 012e 1406          bsf     tris4___byte, tris4___bit
2807                    ; line_number = 287
2808                    ;  tris5 := _true
2809                    ;info   287, 303
2810 012f 1586          bsf     tris5___byte, tris5___bit
2811            
2812                    ; # Get the timer ready to run:
2813                    ; line_number = 290
2814                    ;  _t1con := 0
2815                    ;info   290, 304
2816 0130 1283          bcf     __rp0___byte, __rp0___bit
2817 0131 0190          clrf    _t1con
2818                    ; line_number = 291
2819                    ;  _tmr1l := 0
2820                    ;info   291, 306
2821 0132 018e          clrf    _tmr1l
2822                    ; line_number = 292
2823                    ;  _tmr1h := 0
2824                    ;info   292, 307
2825 0133 018f          clrf    _tmr1h
2826            
2827                    ; # Wait for pulse to start:
2828                    ; line_number = 295
2829                    ;  started := _false
2830                    ;info   295, 308
2831 0134 116f          bcf     main__started___byte, main__started___bit
2832                    ; line_number = 296
2833                    ;  count := 0
2834                    ;info   296, 309
2835 0135 01e4          clrf    main__count
2836                    ; line_number = 297
2837                    ;  while count < 100 && !started start
2838   0136 :   main__11:
2839                    ;info   297, 310
2840 0136 3064          movlw   100
2841 0137 0264          subwf   main__count,w
2842                    ; =>bit_code_emit@symbol(): sym=__c
2843                    ; No 1TEST: true.size=1 false.size=37
2844                    ; No 2TEST: true.size=1 false.size=37
2845                    ; 2GOTO: Single test with two GOTO's
2846 0138 1803          btfsc   __c___byte, __c___bit
2847 0139 295f          goto    main__21
2848                    ; Recombine code1_bit_states != code2_bit_states
2849                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2850                    ; =>bit_code_emit@symbol(): sym=main__started
2851                    ; No 1TEST: true.size=0 false.size=35
2852                    ; No 2TEST: true.size=0 false.size=35
2853                    ; 1GOTO: Single test with GOTO
2854 013a 196f          btfsc   main__started___byte, main__started___bit
2855 013b 295f          goto    main__22
2856                    ; line_number = 298
2857                    ; started := _false
2858                    ;info   298, 316
2859 013c 116f          bcf     main__started___byte, main__started___bit
2860                    ; line_number = 299
2861                    ;  switch sonar_index start
2862                    ;info   299, 317
2863                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
2864 013d 3001          movlw   main__18>>8
2865 013e 008a          movwf   __pclath
2866 013f 0861          movf    main__sonar_index,w
2867                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2868 0140 3e42          addlw   main__18
2869 0141 0082          movwf   __pcl
2870                    ; page_group 6
2871   0142 :   main__18:
2872 0142 2948          goto    main__12
2873 0143 294b          goto    main__13
2874 0144 294e          goto    main__14
2875 0145 2951          goto    main__15
2876 0146 2954          goto    main__16
2877 0147 2957          goto    main__17
2878                    ; line_number = 300
2879                    ; case 0
2880   0148 :   main__12:
2881                    ; line_number = 301
2882                    ; if signal0 start
2883                    ;info   301, 328
2884                    ; =>bit_code_emit@symbol(): sym=signal0
2885                    ; 1TEST: Single test with code in skip slot
2886 0148 1905          btfsc   signal0___byte, signal0___bit
2887                    ; line_number = 302
2888                    ; started := _true
2889                    ;info   302, 329
2890 0149 156f          bsf     main__started___byte, main__started___bit
2891                    ; Recombine size1 = 0 || size2 = 0
2892                    ; line_number = 301
2893                    ; if signal0 done
2894 014a 2959          goto    main__19
2895                    ; line_number = 303
2896                    ; case 1
2897   014b :   main__13:
2898                    ; line_number = 304
2899                    ; if signal1 start
2900                    ;info   304, 331
2901                    ; =>bit_code_emit@symbol(): sym=signal1
2902                    ; 1TEST: Single test with code in skip slot
2903 014b 1a85          btfsc   signal1___byte, signal1___bit
2904                    ; line_number = 305
2905                    ; started := _true
2906                    ;info   305, 332
2907 014c 156f          bsf     main__started___byte, main__started___bit
2908                    ; Recombine size1 = 0 || size2 = 0
2909                    ; line_number = 304
2910                    ; if signal1 done
2911 014d 2959          goto    main__19
2912                    ; line_number = 306
2913                    ; case 2
2914   014e :   main__14:
2915                    ; line_number = 307
2916                    ; if signal2 start
2917                    ;info   307, 334
2918                    ; =>bit_code_emit@symbol(): sym=signal2
2919                    ; 1TEST: Single test with code in skip slot
2920 014e 1885          btfsc   signal2___byte, signal2___bit
2921                    ; line_number = 308
2922                    ; started := _true
2923                    ;info   308, 335
2924 014f 156f          bsf     main__started___byte, main__started___bit
2925                    ; Recombine size1 = 0 || size2 = 0
2926                    ; line_number = 307
2927                    ; if signal2 done
2928 0150 2959          goto    main__19
2929                    ; line_number = 309
2930                    ; case 3
2931   0151 :   main__15:
2932                    ; line_number = 310
2933                    ; if signal3 start
2934                    ;info   310, 337
2935                    ; =>bit_code_emit@symbol(): sym=signal3
2936                    ; 1TEST: Single test with code in skip slot
2937 0151 1b06          btfsc   signal3___byte, signal3___bit
2938                    ; line_number = 311
2939                    ; started := _true
2940                    ;info   311, 338
2941 0152 156f          bsf     main__started___byte, main__started___bit
2942                    ; Recombine size1 = 0 || size2 = 0
2943                    ; line_number = 310
2944                    ; if signal3 done
2945 0153 2959          goto    main__19
2946                    ; line_number = 312
2947                    ; case 4
2948   0154 :   main__16:
2949                    ; line_number = 313
2950                    ; if signal4 start
2951                    ;info   313, 340
2952                    ; =>bit_code_emit@symbol(): sym=signal4
2953                    ; 1TEST: Single test with code in skip slot
2954 0154 1886          btfsc   signal4___byte, signal4___bit
2955                    ; line_number = 314
2956                    ; started := _true
2957                    ;info   314, 341
2958 0155 156f          bsf     main__started___byte, main__started___bit
2959                    ; Recombine size1 = 0 || size2 = 0
2960                    ; line_number = 313
2961                    ; if signal4 done
2962 0156 2959          goto    main__19
2963                    ; line_number = 315
2964                    ; case 5
2965   0157 :   main__17:
2966                    ; line_number = 316
2967                    ; if signal5 start
2968                    ;info   316, 343
2969                    ; =>bit_code_emit@symbol(): sym=signal5
2970                    ; 1TEST: Single test with code in skip slot
2971 0157 1a06          btfsc   signal5___byte, signal5___bit
2972                    ; line_number = 317
2973                    ; started := _true
2974                    ;info   317, 344
2975 0158 156f          bsf     main__started___byte, main__started___bit
2976                    ; Recombine size1 = 0 || size2 = 0
2977                    ; line_number = 316
2978                    ; if signal5 done
2979   0159 :   main__19:
2980                    ; line_number = 299
2981                    ;  switch sonar_index done
2982                    ; line_number = 318
2983                    ; count := count + 1
2984                    ;info   318, 345
2985 0159 0ae4          incf    main__count,f
2986            
2987                    ; line_number = 320
2988                    ;  delay 9 * microsecond start
2989                    ;info   320, 346
2990                    ; Delay expression evaluates to 36
2991                    ; line_number = 321
2992                    ; do_nothing
2993                    ;info   321, 346
2994            
2995                    ; Delay 36 cycles
2996                    ; Delay loop takes 9 * 4 = 36 cycles
2997 015a 3009          movlw   9
2998   015b :   main__20:
2999 015b 3eff          addlw   255
3000 015c 1d03          btfss   __z___byte, __z___bit
3001 015d 295b          goto    main__20
3002                    ; line_number = 320
3003                    ;  delay 9 * microsecond done
3004 015e 2936          goto    main__11
3005   015f :   main__22:
3006   015f :   main__21:
3007                    ; Recombine code1_bit_states != code2_bit_states
3008                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3009                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
3010                    ; 2GOTO: No goto needed; true=main__21 false= true_size=1 false_size=37
3011                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3012                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
3013                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3014                    ; line_number = 297
3015                    ;  while count < 100 && !started done
3016                    ; line_number = 323
3017                    ; if started start
3018                    ;info   323, 351
3019                    ; =>bit_code_emit@symbol(): sym=main__started
3020                    ; No 1TEST: true.size=49 false.size=0
3021                    ; No 2TEST: true.size=49 false.size=0
3022                    ; 1GOTO: Single test with GOTO
3023 015f 1d6f          btfss   main__started___byte, main__started___bit
3024 0160 2992          goto    main__37
3025                    ; # Pulse has started; Get TRM1 started:
3026                    ; line_number = 325
3027                    ;  _tmr1on := _true
3028                    ;info   325, 353
3029 0161 1410          bsf     _tmr1on___byte, _tmr1on___bit
3030            
3031                    ; # Wait for pulse to end:
3032                    ; line_number = 328
3033                    ;  switch sonar_index start
3034                    ;info   328, 354
3035                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
3036 0162 3001          movlw   main__35>>8
3037 0163 008a          movwf   __pclath
3038 0164 0861          movf    main__sonar_index,w
3039                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
3040 0165 3e67          addlw   main__35
3041 0166 0082          movwf   __pcl
3042                    ; page_group 6
3043   0167 :   main__35:
3044 0167 296d          goto    main__29
3045 0168 2970          goto    main__30
3046 0169 2973          goto    main__31
3047 016a 2976          goto    main__32
3048 016b 2979          goto    main__33
3049 016c 297c          goto    main__34
3050                    ; line_number = 329
3051                    ; case 0
3052   016d :   main__29:
3053                    ; line_number = 330
3054                    ; while signal0 start
3055   016d :   main__23:
3056                    ;info   330, 365
3057                    ; =>bit_code_emit@symbol(): sym=signal0
3058                    ; 1TEST: Single test with code in skip slot
3059 016d 1905          btfsc   signal0___byte, signal0___bit
3060                    ; line_number = 331
3061                    ; do_nothing
3062                    ;info   331, 366
3063 016e 296d          goto    main__23
3064                    ; Recombine size1 = 0 || size2 = 0
3065                    ; line_number = 330
3066                    ; while signal0 done
3067 016f 297e          goto    main__36
3068                    ; line_number = 332
3069                    ; case 1
3070   0170 :   main__30:
3071                    ; line_number = 333
3072                    ; while signal1 start
3073   0170 :   main__24:
3074                    ;info   333, 368
3075                    ; =>bit_code_emit@symbol(): sym=signal1
3076                    ; 1TEST: Single test with code in skip slot
3077 0170 1a85          btfsc   signal1___byte, signal1___bit
3078                    ; line_number = 334
3079                    ; do_nothing
3080                    ;info   334, 369
3081 0171 2970          goto    main__24
3082                    ; Recombine size1 = 0 || size2 = 0
3083                    ; line_number = 333
3084                    ; while signal1 done
3085 0172 297e          goto    main__36
3086                    ; line_number = 335
3087                    ; case 2
3088   0173 :   main__31:
3089                    ; line_number = 336
3090                    ; while signal2 start
3091   0173 :   main__25:
3092                    ;info   336, 371
3093                    ; =>bit_code_emit@symbol(): sym=signal2
3094                    ; 1TEST: Single test with code in skip slot
3095 0173 1885          btfsc   signal2___byte, signal2___bit
3096                    ; line_number = 337
3097                    ; do_nothing
3098                    ;info   337, 372
3099 0174 2973          goto    main__25
3100                    ; Recombine size1 = 0 || size2 = 0
3101                    ; line_number = 336
3102                    ; while signal2 done
3103 0175 297e          goto    main__36
3104                    ; line_number = 338
3105                    ; case 3
3106   0176 :   main__32:
3107                    ; line_number = 339
3108                    ; while signal3 start
3109   0176 :   main__26:
3110                    ;info   339, 374
3111                    ; =>bit_code_emit@symbol(): sym=signal3
3112                    ; 1TEST: Single test with code in skip slot
3113 0176 1b06          btfsc   signal3___byte, signal3___bit
3114                    ; line_number = 340
3115                    ; do_nothing
3116                    ;info   340, 375
3117 0177 2976          goto    main__26
3118                    ; Recombine size1 = 0 || size2 = 0
3119                    ; line_number = 339
3120                    ; while signal3 done
3121 0178 297e          goto    main__36
3122                    ; line_number = 341
3123                    ; case 4
3124   0179 :   main__33:
3125                    ; line_number = 342
3126                    ; while signal4 start
3127   0179 :   main__27:
3128                    ;info   342, 377
3129                    ; =>bit_code_emit@symbol(): sym=signal4
3130                    ; 1TEST: Single test with code in skip slot
3131 0179 1886          btfsc   signal4___byte, signal4___bit
3132                    ; line_number = 343
3133                    ; do_nothing
3134                    ;info   343, 378
3135 017a 2979          goto    main__27
3136                    ; Recombine size1 = 0 || size2 = 0
3137                    ; line_number = 342
3138                    ; while signal4 done
3139 017b 297e          goto    main__36
3140                    ; line_number = 344
3141                    ; case 5
3142   017c :   main__34:
3143                    ; line_number = 345
3144                    ; while signal5 start
3145   017c :   main__28:
3146                    ;info   345, 380
3147                    ; =>bit_code_emit@symbol(): sym=signal5
3148                    ; 1TEST: Single test with code in skip slot
3149 017c 1a06          btfsc   signal5___byte, signal5___bit
3150                    ; line_number = 346
3151                    ; do_nothing
3152                    ;info   346, 381
3153            
3154 017d 297c          goto    main__28
3155                    ; Recombine size1 = 0 || size2 = 0
3156                    ; line_number = 345
3157                    ; while signal5 done
3158   017e :   main__36:
3159                    ; line_number = 328
3160                    ;  switch sonar_index done
3161                    ; # Pulse has ended; Turn TMR1 off:
3162                    ; line_number = 349
3163                    ;  _tmr1on := _false
3164                    ;info   349, 382
3165 017e 1010          bcf     _tmr1on___byte, _tmr1on___bit
3166            
3167                    ; line_number = 351
3168                    ;  raw_high := _tmr1h
3169                    ;info   351, 383
3170 017f 080f          movf    _tmr1h,w
3171 0180 00e2          movwf   main__raw_high
3172                    ; line_number = 352
3173                    ;  raw_low := _tmr1l
3174                    ;info   352, 385
3175 0181 080e          movf    _tmr1l,w
3176 0182 00e3          movwf   main__raw_low
3177            
3178                    ; line_number = 354
3179                    ;  period := _signed16_from_byte2(raw_high, raw_low)
3180                    ;info   354, 387
3181 0183 0862          movf    main__raw_high,w
3182 0184 00b4          movwf   _signed16_from_byte2__byte1
3183 0185 0863          movf    main__raw_low,w
3184 0186 158a          bsf     __cb0___byte, __cb0___bit
3185 0187 20ba          call    _signed16_from_byte2
3186 0188 301b          movlw   _signed16_from_byte2__0return>>1
3187 0189 2000          call    _signed16_pointer_load
3188 018a 3033          movlw   main__period>>1
3189 018b 208b          call    _signed16_pointer_store
3190                    ; line_number = 355
3191                    ;  distance := period / speed_divisor
3192                    ;info   355, 396
3193 018c 3033          movlw   main__period>>1
3194 018d 2000          call    _signed16_pointer_load
3195 018e 302b          movlw   speed_divisor>>1
3196 018f 201c          call    _signed16_pointer_divide
3197 0190 302c          movlw   distance>>1
3198 0191 208b          call    _signed16_pointer_store
3199            
3200                    ; # Call to the procedure works around a compiler bug,
3201                    ; # whereby the code bank bit does not get reset.
3202                    ; #call compiler_bug_work_around()
3203            
3204                    ; Recombine size1 = 0 || size2 = 0
3205   0192 :   main__37:
3206                    ; line_number = 323
3207                    ; if started done
3208                    ; line_number = 248
3209                    ;  if _true done
3210                    ; # Return the result:
3211                    ; line_number = 362
3212                    ;  _gie := _false
3213                    ;info   362, 402
3214 0192 138b          bcf     _gie___byte, _gie___bit
3215                    ; line_number = 363
3216                    ;  raw_highs[sonar_index] := raw_high
3217                    ;info   363, 403
3218                    ; index_fsr_first
3219 0193 0861          movf    main__sonar_index,w
3220 0194 3e3e          addlw   raw_highs
3221 0195 0084          movwf   __fsr
3222 0196 1383          bcf     __irp___byte, __irp___bit
3223 0197 0862          movf    main__raw_high,w
3224 0198 0080          movwf   __indf
3225                    ; line_number = 364
3226                    ;  raw_lows[sonar_index] := raw_low
3227                    ;info   364, 409
3228                    ; index_fsr_first
3229 0199 0861          movf    main__sonar_index,w
3230 019a 3e44          addlw   raw_lows
3231 019b 0084          movwf   __fsr
3232 019c 1383          bcf     __irp___byte, __irp___bit
3233 019d 0863          movf    main__raw_low,w
3234 019e 0080          movwf   __indf
3235                    ; line_number = 365
3236                    ;  unit_highs[sonar_index] := _signed16_byte_high(distance)
3237                    ;info   365, 415
3238                    ; index_temporary_first
3239 00000069 = main__38 equ globals___0+73
3240 0000006a = main__39 equ globals___0+74
3241 019f 0861          movf    main__sonar_index,w
3242 01a0 00e9          movwf   main__38
3243 01a1 302c          movlw   distance>>1
3244 01a2 158a          bsf     __cb0___byte, __cb0___bit
3245 01a3 2000          call    _signed16_pointer_load
3246 01a4 301d          movlw   _signed16_byte_high__number>>1
3247 01a5 208b          call    _signed16_pointer_store
3248 01a6 20c7          call    _signed16_byte_high
3249 01a7 00ea          movwf   main__39
3250 01a8 0869          movf    main__38,w
3251 01a9 3e4a          addlw   unit_highs
3252 01aa 0084          movwf   __fsr
3253 01ab 1383          bcf     __irp___byte, __irp___bit
3254 01ac 086a          movf    main__39,w
3255 01ad 0080          movwf   __indf
3256                    ; line_number = 366
3257                    ;  unit_lows[sonar_index] := _signed16_byte_low(distance)
3258                    ;info   366, 430
3259                    ; index_temporary_first
3260 00000069 = main__40 equ globals___0+73
3261 0000006a = main__41 equ globals___0+74
3262 01ae 0861          movf    main__sonar_index,w
3263 01af 00e9          movwf   main__40
3264 01b0 302c          movlw   distance>>1
3265 01b1 2000          call    _signed16_pointer_load
3266 01b2 301e          movlw   _signed16_byte_low__number>>1
3267 01b3 208b          call    _signed16_pointer_store
3268 01b4 20cb          call    _signed16_byte_low
3269 01b5 00ea          movwf   main__41
3270 01b6 0869          movf    main__40,w
3271 01b7 3e50          addlw   unit_lows
3272 01b8 0084          movwf   __fsr
3273 01b9 1383          bcf     __irp___byte, __irp___bit
3274 01ba 086a          movf    main__41,w
3275 01bb 0080          movwf   __indf
3276                    ; line_number = 367
3277                    ;  _gie := _true
3278                    ;info   367, 444
3279 01bc 178b          bsf     _gie___byte, _gie___bit
3280            
3281                    ; # Delay .1 sec:
3282                    ; line_number = 370
3283                    ;  loop_exactly 10 start
3284                    ;info   370, 445
3285 00000069 = main__42 equ globals___0+73
3286 01bd 300a          movlw   10
3287 01be 00e9          movwf   main__42
3288 01bf 118a          bcf     __cb0___byte, __cb0___bit
3289   01c0 :   main__43:
3290                    ; line_number = 371
3291                    ; loop_exactly 100 start
3292                    ;info   371, 448
3293 0000006a = main__44 equ globals___0+74
3294 01c0 3064          movlw   100
3295 01c1 00ea          movwf   main__44
3296   01c2 :   main__45:
3297                    ; line_number = 372
3298                    ; delay 100 *microsecond start
3299                    ;info   372, 450
3300                    ; Delay expression evaluates to 400
3301                    ; line_number = 373
3302                    ; do_nothing
3303                    ;info   373, 450
3304            
3305                    ; Delay 400 cycles
3306                    ; Delay loop takes 100 * 4 = 400 cycles
3307 01c2 3064          movlw   100
3308   01c3 :   main__46:
3309 01c3 3eff          addlw   255
3310 01c4 1d03          btfss   __z___byte, __z___bit
3311 01c5 29c3          goto    main__46
3312                    ; line_number = 372
3313                    ; delay 100 *microsecond done
3314                    ; line_number = 371
3315                    ; loop_exactly 100 wrap-up
3316 01c6 0bea          decfsz  main__44,f
3317 01c7 29c2          goto    main__45
3318                    ; line_number = 371
3319                    ; loop_exactly 100 done
3320                    ; line_number = 370
3321                    ;  loop_exactly 10 wrap-up
3322 01c8 0be9          decfsz  main__42,f
3323 01c9 29c0          goto    main__43
3324                    ; line_number = 370
3325                    ;  loop_exactly 10 done
3326                    ; line_number = 375
3327                    ; iteration := iteration + 1
3328                    ;info   375, 458
3329 01ca 0add          incf    iteration,f
3330            
3331            
3332                    ; line_number = 240
3333                    ;  loop_forever wrap-up
3334 01cb 28f3          goto    main__1
3335                    ; line_number = 240
3336                    ;  loop_forever done
3337                    ; delay after procedure statements=non-uniform
3338            
3339            
3340            
3341            
3342                    ; # Baud_Rate = Fosc / (16(X+1))
3343                    ; # 16 * (X+1) = Fosc/Baud_Rate
3344                    ; # X+1 = Fosc/(16*Baud_Rate)
3345                    ; # X = Fosc/(16*Baud_rate) - 1
3346            
3347                    ; line_number = 383
3348                    ; constant baud_rate_500k = 500000
3349 0007a120 = baud_rate_500k equ 500000
3350                    ; line_number = 384
3351                    ; constant spbrg_500k = clock_rate / (16 * baud_rate_500k) - 1
3352 00000001 = spbrg_500k equ 1
3353            
3354                    ; line_number = 386
3355                    ;info   386, 460
3356                    ; procedure reset
3357   01cc :   reset:
3358                    ; arguments_none
3359                    ; line_number = 388
3360                    ;  returns_nothing
3361            
3362                    ; # Reset everything:
3363            
3364                    ; # Warm up the UART:
3365                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3366                    ; line_number = 393
3367                    ;  _trisb@2 := _true
3368                    ;info   393, 460
3369 00000086 = reset__select__1___byte equ _trisb
3370 00000002 = reset__select__1___bit equ 2
3371 01cc 1683          bsf     __rp0___byte, __rp0___bit
3372 01cd 1506          bsf     reset__select__1___byte, reset__select__1___bit
3373                    ; line_number = 394
3374                    ;  _trisb@5 := _true
3375                    ;info   394, 462
3376 00000086 = reset__select__2___byte equ _trisb
3377 00000005 = reset__select__2___bit equ 5
3378 01ce 1686          bsf     reset__select__2___byte, reset__select__2___bit
3379            
3380                    ; # Initialize the {_txsta} register:
3381                    ; line_number = 397
3382                    ;  _txsta := 0
3383                    ;info   397, 463
3384 01cf 0198          clrf    _txsta
3385                    ; line_number = 398
3386                    ;  _tx9 := _true
3387                    ;info   398, 464
3388 01d0 1718          bsf     _tx9___byte, _tx9___bit
3389                    ; line_number = 399
3390                    ;  _txen := _true
3391                    ;info   399, 465
3392 01d1 1698          bsf     _txen___byte, _txen___bit
3393                    ; line_number = 400
3394                    ;  _brgh := _true
3395                    ;info   400, 466
3396 01d2 1518          bsf     _brgh___byte, _brgh___bit
3397            
3398                    ; # Initialize the {_rcsta} register:
3399                    ; line_number = 403
3400                    ;  _rcsta := 0
3401                    ;info   403, 467
3402 01d3 1283          bcf     __rp0___byte, __rp0___bit
3403 01d4 0198          clrf    _rcsta
3404                    ; line_number = 404
3405                    ;  _spen := _true
3406                    ;info   404, 469
3407 01d5 1798          bsf     _spen___byte, _spen___bit
3408                    ; line_number = 405
3409                    ;  _rx9 := _true
3410                    ;info   405, 470
3411 01d6 1718          bsf     _rx9___byte, _rx9___bit
3412                    ; line_number = 406
3413                    ;  _cren := _true
3414                    ;info   406, 471
3415 01d7 1618          bsf     _cren___byte, _cren___bit
3416                    ; #_adden := _true
3417                    ; line_number = 408
3418                    ;  _adden := _false
3419                    ;info   408, 472
3420 01d8 1198          bcf     _adden___byte, _adden___bit
3421            
3422                    ; # Set up the baud rate generator:
3423                    ; line_number = 411
3424                    ;  _spbrg := spbrg_500k
3425                    ;info   411, 473
3426 01d9 3001          movlw   1
3427 01da 1683          bsf     __rp0___byte, __rp0___bit
3428 01db 0099          movwf   _spbrg
3429            
3430                    ; line_number = 413
3431                    ;  address := 0x10
3432                    ;info   413, 476
3433 01dc 3010          movlw   16
3434 01dd 1283          bcf     __rp0___byte, __rp0___bit
3435 01de 00da          movwf   address
3436                    ; line_number = 414
3437                    ;  state := 0
3438                    ;info   414, 479
3439 01df 01db          clrf    state
3440                    ; line_number = 415
3441                    ;  echo_munch := _false
3442                    ;info   415, 480
3443 01e0 106f          bcf     echo_munch___byte, echo_munch___bit
3444                    ; line_number = 416
3445                    ;  id_index := 0
3446                    ;info   416, 481
3447 01e1 01dc          clrf    id_index
3448            
3449                    ; line_number = 418
3450                    ;  iteration := 0
3451                    ;info   418, 482
3452 01e2 01dd          clrf    iteration
3453                    ; line_number = 419
3454                    ;  _gie := _true
3455                    ;info   419, 483
3456 01e3 178b          bsf     _gie___byte, _gie___bit
3457                    ; line_number = 420
3458                    ;  _rcie := _true
3459                    ;info   420, 484
3460 01e4 1683          bsf     __rp0___byte, __rp0___bit
3461 01e5 168c          bsf     _rcie___byte, _rcie___bit
3462                    ; line_number = 421
3463                    ;  _peie := _true
3464                    ;info   421, 486
3465 01e6 170b          bsf     _peie___byte, _peie___bit
3466            
3467                    ; line_number = 423
3468                    ;  speed_divisor := _signed16_from_byte2(divisor_millimeters_high, divisor_millimeters_low)  
3469                    ;info   423, 487
3470 01e7 1283          bcf     __rp0___byte, __rp0___bit
3471 01e8 01b4          clrf    _signed16_from_byte2__byte1
3472 01e9 3017          movlw   23
3473 01ea 158a          bsf     __cb0___byte, __cb0___bit
3474 01eb 20ba          call    _signed16_from_byte2
3475 01ec 301b          movlw   _signed16_from_byte2__0return>>1
3476 01ed 2000          call    _signed16_pointer_load
3477 01ee 302b          movlw   speed_divisor>>1
3478 01ef 208b          call    _signed16_pointer_store
3479            
3480                    ; delay after procedure statements=non-uniform
3481                    ; Implied return
3482 01f0 118a          bcf     __cb0___byte, __cb0___bit
3483 01f1 3400          retlw   0
3484            
3485            
3486            
3487            
3488                    ; line_number = 427
3489                    ;info   427, 498
3490                    ; procedure compiler_bug_work_around
3491   01f2 :   compiler_bug_work_around:
3492                    ; arguments_none
3493                    ; line_number = 429
3494                    ;  returns_nothing
3495            
3496                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3497                    ; line_number = 431
3498                    ;  do_nothing
3499                    ;info   431, 498
3500            
3501            
3502                    ; delay after procedure statements=non-uniform
3503                    ; Implied return
3504 01f2 3400          retlw   0
3505            
3506            
3507            
3508            
3509                    ; line_number = 434
3510                    ; string id = "\16,0,16,1,3,8\Sonar6-A\7\Gramson" start
3511                    ; id = '\16,0,16,1,3,8\Sonar6-A\7\Gramson'
3512   01f3 :   id:
3513                    ; Temporarily save index into FSR
3514 01f3 0084          movwf   __fsr
3515                    ; Initialize PCLATH to point to this code page
3516 01f4 3002          movlw   id___base>>8
3517 01f5 008a          movwf   __pclath
3518                    ; Restore index from FSR
3519 01f6 0804          movf    __fsr,w
3520 01f7 3e00          addlw   id___base
3521                    ; Index to the correct return value
3522 01f8 0082          movwf   __pcl
3523                    ; page_group 22
3524                    ; Add 7 NOP's until start of new page 
3525 01f9 0000          nop     
3526 01fa 0000          nop     
3527 01fb 0000          nop     
3528 01fc 0000          nop     
3529 01fd 0000          nop     
3530 01fe 0000          nop     
3531 01ff 0000          nop     
3532   0200 :   id___base:
3533 0200 3410          retlw   16
3534 0201 3400          retlw   0
3535 0202 3410          retlw   16
3536 0203 3401          retlw   1
3537 0204 3403          retlw   3
3538 0205 3408          retlw   8
3539 0206 3453          retlw   83
3540 0207 346f          retlw   111
3541 0208 346e          retlw   110
3542 0209 3461          retlw   97
3543 020a 3472          retlw   114
3544 020b 3436          retlw   54
3545 020c 342d          retlw   45
3546 020d 3441          retlw   65
3547 020e 3407          retlw   7
3548 020f 3447          retlw   71
3549 0210 3472          retlw   114
3550 0211 3461          retlw   97
3551 0212 346d          retlw   109
3552 0213 3473          retlw   115
3553 0214 346f          retlw   111
3554 0215 346e          retlw   110
3555                    ; line_number = 434
3556                    ; string id = "\16,0,16,1,3,8\Sonar6-A\7\Gramson" start
3557                    ; line_number = 435
3558                    ; string priority = "\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\" start
3559                    ; priority = '\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\'
3560   0216 :   priority:
3561                    ; Temporarily save index into FSR
3562 0216 0084          movwf   __fsr
3563                    ; Initialize PCLATH to point to this code page
3564 0217 3002          movlw   priority___base>>8
3565 0218 008a          movwf   __pclath
3566                    ; Restore index from FSR
3567 0219 0804          movf    __fsr,w
3568 021a 3e1c          addlw   priority___base
3569                    ; Index to the correct return value
3570 021b 0082          movwf   __pcl
3571                    ; page_group 16
3572   021c :   priority___base:
3573 021c 341f          retlw   31
3574 021d 3401          retlw   1
3575 021e 3403          retlw   3
3576 021f 3401          retlw   1
3577 0220 3407          retlw   7
3578 0221 3401          retlw   1
3579 0222 3403          retlw   3
3580 0223 3401          retlw   1
3581 0224 340f          retlw   15
3582 0225 3401          retlw   1
3583 0226 3403          retlw   3
3584 0227 3401          retlw   1
3585 0228 3407          retlw   7
3586 0229 3401          retlw   1
3587 022a 3403          retlw   3
3588 022b 3401          retlw   1
3589                    ; line_number = 435
3590                    ; string priority = "\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\" start
3591            
3592            
3593                    ; Code bank 1; Start address: 2048; End address: 4095
3594   0800 :           org     2048
3595                    ; Appending 20 delayed procedures to code bank 1
3596                    ; buffer = '_signed16'
3597                    ; line_number = 62
3598                    ;info   62, 2048
3599                    ; procedure _signed16_pointer_load
3600   0800 :   _signed16_pointer_load:
3601                    ; Last argument is sitting in W; save into argument variable
3602 0800 00aa          movwf   _signed16_pointer_load__pointer
3603                    ; delay=4294967295
3604                    ; line_number = 63
3605                    ; argument pointer byte
3606 0000002a = _signed16_pointer_load__pointer equ globals___0+10
3607                    ; line_number = 64
3608                    ;  returns_nothing
3609                    ; line_number = 65
3610                    ;  return_suppress
3611            
3612                    ; # This procedure will load the signed16 "A" register with {pointer}.
3613            
3614                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3615                    ; line_number = 69
3616                    ;  assemble
3617                    ;info   69, 2049
3618                    ; # Pointer is in W; move it to {_fsr}:
3619                    ; line_number = 71
3620                    ;info   71, 2049
3621 0801 0084          movwf   _fsr
3622                    ; # Set up {_irp} and _{fsr}:
3623                    ; line_number = 73
3624                    ;info   73, 2050
3625 0802 1383          bcf     _irp___byte, _irp___bit
3626                    ; line_number = 74
3627                    ;info   74, 2051
3628 0803 0d84          rlf     _fsr,f
3629                    ; line_number = 75
3630                    ;info   75, 2052
3631 0804 1803          btfsc   _c___byte, _c___bit
3632                    ; line_number = 76
3633                    ;info   76, 2053
3634 0805 1783          bsf     _irp___byte, _irp___bit
3635                    ; line_number = 77
3636                    ;info   77, 2054
3637 0806 1004          bcf     _fsr, 0
3638                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}
3639                    ; line_number = 79
3640                    ;info   79, 2055
3641 0807 0800          movf    _indf,w
3642                    ; line_number = 80
3643                    ;info   80, 2056
3644 0808 00a0          movwf   _signed16_a0
3645                    ; line_number = 81
3646                    ;info   81, 2057
3647 0809 0a84          incf    _fsr,f
3648                    ; line_number = 82
3649                    ;info   82, 2058
3650 080a 0800          movf    _indf,w
3651                    ; line_number = 83
3652                    ;info   83, 2059
3653 080b 00a1          movwf   _signed16_a1
3654                    ; line_number = 84
3655                    ;info   84, 2060
3656 080c 0008          return  
3657            
3658            
3659                    ; delay after procedure statements=non-uniform
3660                    ; Return instruction suppressed by 'return_suppress'
3661            
3662            
3663            
3664            
3665                    ; line_number = 87
3666                    ;info   87, 2061
3667                    ; procedure _signed16_pointer_add
3668   080d :   _signed16_pointer_add:
3669                    ; Last argument is sitting in W; save into argument variable
3670 080d 00ab          movwf   _signed16_pointer_add__pointer
3671                    ; delay=4294967295
3672                    ; line_number = 88
3673                    ; argument pointer byte
3674 0000002b = _signed16_pointer_add__pointer equ globals___0+11
3675                    ; line_number = 89
3676                    ;  returns_nothing
3677                    ; line_number = 90
3678                    ;  return_suppress
3679            
3680                    ; # This procedure will add the signed16 "A" register with {pointer}
3681                    ; # and store the result back into the "A" register.
3682            
3683                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3684                    ; line_number = 95
3685                    ;  assemble
3686                    ;info   95, 2062
3687                    ; # Pointer is in W; move it to {_fsr}:
3688                    ; line_number = 97
3689                    ;info   97, 2062
3690 080e 0084          movwf   _fsr
3691                    ; # Set up {_irp} and _{fsr}:
3692                    ; line_number = 99
3693                    ;info   99, 2063
3694 080f 1383          bcf     _irp___byte, _irp___bit
3695                    ; line_number = 100
3696                    ;info   100, 2064
3697 0810 0d84          rlf     _fsr,f
3698                    ; line_number = 101
3699                    ;info   101, 2065
3700 0811 1803          btfsc   _c___byte, _c___bit
3701                    ; line_number = 102
3702                    ;info   102, 2066
3703 0812 1783          bsf     _irp___byte, _irp___bit
3704                    ; line_number = 103
3705                    ;info   103, 2067
3706 0813 1004          bcf     _fsr, 0
3707                    ; # Grab MSB and add it into {_signed16_a0} (MSB):
3708                    ; line_number = 105
3709                    ;info   105, 2068
3710 0814 0800          movf    _indf,w
3711                    ; line_number = 106
3712                    ;info   106, 2069
3713 0815 07a0          addwf   _signed16_a0,f
3714                    ; line_number = 107
3715                    ;info   107, 2070
3716 0816 0a84          incf    _fsr,f
3717            
3718                    ; # Grab LSB and add it into {_signed16_a1} (LSB):
3719                    ; line_number = 110
3720                    ;info   110, 2071
3721 0817 0800          movf    _indf,w
3722                    ; line_number = 111
3723                    ;info   111, 2072
3724 0818 07a1          addwf   _signed16_a1,f
3725            
3726                    ; # If C is 1, increment {_signed16_a0} (MSB):
3727                    ; line_number = 114
3728                    ;info   114, 2073
3729 0819 1803          btfsc   _c___byte, _c___bit
3730                    ; line_number = 115
3731                    ;info   115, 2074
3732 081a 0aa0          incf    _signed16_a0,f
3733                    ; line_number = 116
3734                    ;info   116, 2075
3735 081b 0008          return  
3736            
3737            
3738                    ; delay after procedure statements=non-uniform
3739                    ; Return instruction suppressed by 'return_suppress'
3740            
3741            
3742            
3743            
3744                    ; line_number = 119
3745                    ;info   119, 2076
3746                    ; procedure _signed16_pointer_divide
3747   081c :   _signed16_pointer_divide:
3748                    ; Last argument is sitting in W; save into argument variable
3749 081c 00ac          movwf   _signed16_pointer_divide__pointer
3750                    ; delay=4294967295
3751                    ; line_number = 120
3752                    ; argument pointer byte
3753 0000002c = _signed16_pointer_divide__pointer equ globals___0+12
3754                    ; line_number = 121
3755                    ;  returns_nothing
3756                    ; line_number = 122
3757                    ;  return_suppress
3758            
3759                    ; # This procedure will divide the signed16 A register by {pointer} and
3760                    ; # store the result back into the A "register".
3761            
3762                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3763                    ; line_number = 127
3764                    ;  assemble
3765                    ;info   127, 2077
3766                    ; # Pointer is in W; move it to {_fsr}:
3767                    ; line_number = 129
3768                    ;info   129, 2077
3769 081d 0084          movwf   _fsr
3770                    ; # Set up {_irp} and _{fsr}:
3771                    ; line_number = 131
3772                    ;info   131, 2078
3773 081e 1383          bcf     _irp___byte, _irp___bit
3774                    ; line_number = 132
3775                    ;info   132, 2079
3776 081f 0d84          rlf     _fsr,f
3777                    ; line_number = 133
3778                    ;info   133, 2080
3779 0820 1803          btfsc   _c___byte, _c___bit
3780                    ; line_number = 134
3781                    ;info   134, 2081
3782 0821 1783          bsf     _irp___byte, _irp___bit
3783                    ; line_number = 135
3784                    ;info   135, 2082
3785 0822 1004          bcf     _fsr, 0
3786                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
3787                    ; line_number = 137
3788                    ;info   137, 2083
3789 0823 0800          movf    _indf,w
3790                    ; line_number = 138
3791                    ;info   138, 2084
3792 0824 00a2          movwf   _signed16_b0
3793                    ; line_number = 139
3794                    ;info   139, 2085
3795 0825 0a84          incf    _fsr,f
3796                    ; line_number = 140
3797                    ;info   140, 2086
3798 0826 0800          movf    _indf,w
3799                    ; line_number = 141
3800                    ;info   141, 2087
3801 0827 00a3          movwf   _signed16_b1
3802            
3803                    ; # Perform the divide:
3804                    ; line_number = 144
3805                    ;info   144, 2088
3806 0828 20f2          call    _signed16_divide_raw
3807            
3808                    ; line_number = 146
3809                    ;info   146, 2089
3810 0829 0008          return  
3811            
3812            
3813                    ; delay after procedure statements=non-uniform
3814                    ; Return instruction suppressed by 'return_suppress'
3815            
3816            
3817            
3818            
3819                    ; line_number = 149
3820                    ;info   149, 2090
3821                    ; procedure _signed16_pointer_multiply
3822   082a :   _signed16_pointer_multiply:
3823                    ; Last argument is sitting in W; save into argument variable
3824 082a 00ad          movwf   _signed16_pointer_multiply__pointer
3825                    ; delay=4294967295
3826                    ; line_number = 150
3827                    ; argument pointer byte
3828 0000002d = _signed16_pointer_multiply__pointer equ globals___0+13
3829                    ; line_number = 151
3830                    ;  returns_nothing
3831                    ; line_number = 152
3832                    ;  return_suppress
3833            
3834                    ; # This procedure will multiply {pointer} with the signed16 A "register"
3835                    ; # and store the result back into the A "register".
3836            
3837                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3838                    ; line_number = 157
3839                    ;  assemble
3840                    ;info   157, 2091
3841                    ; # Pointer is in W; move it to {_fsr}:
3842                    ; line_number = 159
3843                    ;info   159, 2091
3844 082b 0084          movwf   _fsr
3845                    ; # Set up {_irp} and _{fsr}:
3846                    ; line_number = 161
3847                    ;info   161, 2092
3848 082c 1383          bcf     _irp___byte, _irp___bit
3849                    ; line_number = 162
3850                    ;info   162, 2093
3851 082d 0d84          rlf     _fsr,f
3852                    ; line_number = 163
3853                    ;info   163, 2094
3854 082e 1803          btfsc   _c___byte, _c___bit
3855                    ; line_number = 164
3856                    ;info   164, 2095
3857 082f 1783          bsf     _irp___byte, _irp___bit
3858                    ; line_number = 165
3859                    ;info   165, 2096
3860 0830 1004          bcf     _fsr, 0
3861                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
3862                    ; line_number = 167
3863                    ;info   167, 2097
3864 0831 0800          movf    _indf,w
3865                    ; line_number = 168
3866                    ;info   168, 2098
3867 0832 00a2          movwf   _signed16_b0
3868                    ; line_number = 169
3869                    ;info   169, 2099
3870 0833 0a84          incf    _fsr,f
3871                    ; line_number = 170
3872                    ;info   170, 2100
3873 0834 0800          movf    _indf,w
3874                    ; line_number = 171
3875                    ;info   171, 2101
3876 0835 00a3          movwf   _signed16_b1
3877            
3878                    ; # The code below came from <http://www.piclist.com/>.
3879                    ; # It is not totally clear who wrote the code.  The names
3880                    ; # Bob Fehrenbac & Scott Dattalo are present, but there is
3881                    ; # no explicit authorship.  The Multiple byte addition routine
3882                    ; # is from Microchip AN617.  As is typical, nobody bothered
3883                    ; # to comment the code.
3884                    ; #
3885                    ; # This multiplies <_signed16_a0:_signed16_a1> by
3886                    ; # <_signed16_b0:_signed16_b1> and store the signed result into
3887                    ; # <_signed16_result0:_signed16_result1:_signed16_result2:_signed16_result3>
3888                    ; # Then we trim the result down and store it back into
3889                    ; # <_signed16_a0:_signed16_a1>.
3890                    ; #
3891                    ; # This multiply routine takes between 134 to 248 cycles.
3892                    ; #
3893                    ; # This program looks at the lsb of _signed16_a1 to decide whether
3894                    ; # to add _signed16_b1 to _signed16_result2.
3895                    ; # and b2 to _signed16_result1, with appropriate carrys
3896                    ; # It then looks at the lsb of _signed16_a0 to decide whether
3897                    ; # to add _signed16_b1 to _signed16_result1 and 
3898                    ; # signed16_b0 to _signed16_result0, again with appropriate carrys.
3899                    ; # The rotates then only have to be done 8 times
3900                    ; #
3901                    ; # This is uses slightly more program but takes a little less time than 
3902                    ; # a routine that performs one 16 bit addition per rotate and 16 rotates
3903            
3904                    ; line_number = 199
3905                    ;  assemble
3906                    ;info   199, 2102
3907                    ; line_number = 200
3908                    ;info   200, 2102
3909 0836 01a7          clrf    _signed16_result0
3910                    ; line_number = 201
3911                    ;info   201, 2103
3912 0837 01a6          clrf    _signed16_result1
3913                    ; line_number = 202
3914                    ;info   202, 2104
3915 0838 01a5          clrf    _signed16_result2
3916                    ; line_number = 203
3917                    ;info   203, 2105
3918 0839 3080          movlw   128
3919                    ; line_number = 204
3920                    ;info   204, 2106
3921 083a 00a4          movwf   _signed16_result3
3922            
3923                    ; line_number = 206
3924                    ;info   206, 2107
3925 083b 01a8          clrf    _signed16_neg_flag
3926            
3927                    ; line_number = 208
3928                    ;info   208, 2108
3929 083c 1fa0          btfss   _signed16_a0, 7
3930                    ; line_number = 209
3931                    ;info   209, 2109
3932 083d 2844          goto    _signed16_multiply_a_pos
3933                    ; line_number = 210
3934                    ;info   210, 2110
3935 083e 09a0          comf    _signed16_a0,f
3936                    ; line_number = 211
3937                    ;info   211, 2111
3938 083f 09a1          comf    _signed16_a1,f
3939                    ; line_number = 212
3940                    ;info   212, 2112
3941 0840 0aa1          incf    _signed16_a1,f
3942                    ; line_number = 213
3943                    ;info   213, 2113
3944 0841 1903          btfsc   _z___byte, _z___bit
3945                    ; line_number = 214
3946                    ;info   214, 2114
3947 0842 0aa0          incf    _signed16_a0,f
3948                    ; line_number = 215
3949                    ;info   215, 2115
3950 0843 0aa8          incf    _signed16_neg_flag,f
3951            
3952                    ; line_number = 217
3953   0844 :   _signed16_multiply_a_pos:
3954                    ; line_number = 218
3955                    ;info   218, 2116
3956 0844 1fa2          btfss   _signed16_b0, 7
3957                    ; line_number = 219
3958                    ;info   219, 2117
3959 0845 284c          goto    _signed16_multiply_nextbit
3960                    ; line_number = 220
3961                    ;info   220, 2118
3962 0846 09a2          comf    _signed16_b0,f
3963                    ; line_number = 221
3964                    ;info   221, 2119
3965 0847 09a3          comf    _signed16_b1,f
3966                    ; line_number = 222
3967                    ;info   222, 2120
3968 0848 0aa3          incf    _signed16_b1,f
3969                    ; line_number = 223
3970                    ;info   223, 2121
3971 0849 1903          btfsc   _z___byte, _z___bit
3972                    ; line_number = 224
3973                    ;info   224, 2122
3974 084a 0aa2          incf    _signed16_b0,f
3975                    ; line_number = 225
3976                    ;info   225, 2123
3977 084b 0aa8          incf    _signed16_neg_flag,f
3978            
3979                    ; line_number = 227
3980   084c :   _signed16_multiply_nextbit:
3981                    ; line_number = 228
3982                    ;info   228, 2124
3983 084c 0ca0          rrf     _signed16_a0,f
3984                    ; line_number = 229
3985                    ;info   229, 2125
3986 084d 0ca1          rrf     _signed16_a1,f
3987            
3988                    ; line_number = 231
3989                    ;info   231, 2126
3990 084e 1c03          btfss   _c___byte, _c___bit
3991                    ; line_number = 232
3992                    ;info   232, 2127
3993 084f 2859          goto    _signed16_multiply_nobit_l
3994                    ; line_number = 233
3995                    ;info   233, 2128
3996 0850 0823          movf    _signed16_b1,w
3997                    ; line_number = 234
3998                    ;info   234, 2129
3999 0851 07a5          addwf   _signed16_result2,f
4000            
4001                    ; line_number = 236
4002                    ;info   236, 2130
4003 0852 0822          movf    _signed16_b0,w
4004                    ; line_number = 237
4005                    ;info   237, 2131
4006 0853 1803          btfsc   _c___byte, _c___bit
4007                    ; line_number = 238
4008                    ;info   238, 2132
4009 0854 0f22          incfsz  _signed16_b0,w
4010                    ; line_number = 239
4011                    ;info   239, 2133
4012 0855 07a6          addwf   _signed16_result1,f
4013                    ; line_number = 240
4014                    ;info   240, 2134
4015 0856 1803          btfsc   _c___byte, _c___bit
4016                    ; line_number = 241
4017                    ;info   241, 2135
4018 0857 0aa7          incf    _signed16_result0,f
4019                    ; line_number = 242
4020                    ;info   242, 2136
4021 0858 1003          bcf     _c___byte, _c___bit
4022            
4023                    ; line_number = 244
4024   0859 :   _signed16_multiply_nobit_l:
4025                    ; line_number = 245
4026                    ;info   245, 2137
4027 0859 1fa1          btfss   _signed16_a1, 7
4028                    ; line_number = 246
4029                    ;info   246, 2138
4030 085a 2861          goto    _signed16_multiply_nobit_h
4031                    ; line_number = 247
4032                    ;info   247, 2139
4033 085b 0823          movf    _signed16_b1,w
4034                    ; line_number = 248
4035                    ;info   248, 2140
4036 085c 07a6          addwf   _signed16_result1,f
4037                    ; line_number = 249
4038                    ;info   249, 2141
4039 085d 1803          btfsc   _c___byte, _c___bit
4040                    ; line_number = 250
4041                    ;info   250, 2142
4042 085e 0aa7          incf    _signed16_result0,f
4043                    ; line_number = 251
4044                    ;info   251, 2143
4045 085f 0822          movf    _signed16_b0,w
4046                    ; line_number = 252
4047                    ;info   252, 2144
4048 0860 07a7          addwf   _signed16_result0,f
4049            
4050                    ; line_number = 254
4051   0861 :   _signed16_multiply_nobit_h:
4052                    ; line_number = 255
4053                    ;info   255, 2145
4054 0861 0ca7          rrf     _signed16_result0,f
4055                    ; line_number = 256
4056                    ;info   256, 2146
4057 0862 0ca6          rrf     _signed16_result1,f
4058                    ; line_number = 257
4059                    ;info   257, 2147
4060 0863 0ca5          rrf     _signed16_result2,f
4061                    ; line_number = 258
4062                    ;info   258, 2148
4063 0864 0ca4          rrf     _signed16_result3,f
4064            
4065                    ; line_number = 260
4066                    ;info   260, 2149
4067 0865 1c03          btfss   _c___byte, _c___bit
4068                    ; line_number = 261
4069                    ;info   261, 2150
4070 0866 284c          goto    _signed16_multiply_nextbit
4071                    ; line_number = 262
4072                    ;info   262, 2151
4073 0867 1c28          btfss   _signed16_neg_flag, 0
4074                    ; line_number = 263
4075                    ;info   263, 2152
4076 0868 2874          goto    _signed16_mulitply_no_invert
4077            
4078                    ; line_number = 265
4079                    ;info   265, 2153
4080 0869 09a7          comf    _signed16_result0,f
4081                    ; line_number = 266
4082                    ;info   266, 2154
4083 086a 09a6          comf    _signed16_result1,f
4084                    ; line_number = 267
4085                    ;info   267, 2155
4086 086b 09a5          comf    _signed16_result2,f
4087                    ; line_number = 268
4088                    ;info   268, 2156
4089 086c 09a4          comf    _signed16_result3,f
4090            
4091                    ; line_number = 270
4092                    ;info   270, 2157
4093 086d 0aa4          incf    _signed16_result3,f
4094                    ; line_number = 271
4095                    ;info   271, 2158
4096 086e 1903          btfsc   _z___byte, _z___bit
4097                    ; line_number = 272
4098                    ;info   272, 2159
4099 086f 0aa5          incf    _signed16_result2,f
4100                    ; line_number = 273
4101                    ;info   273, 2160
4102 0870 1903          btfsc   _z___byte, _z___bit
4103                    ; line_number = 274
4104                    ;info   274, 2161
4105 0871 0aa6          incf    _signed16_result1,f
4106                    ; line_number = 275
4107                    ;info   275, 2162
4108 0872 1903          btfsc   _z___byte, _z___bit
4109                    ; line_number = 276
4110                    ;info   276, 2163
4111 0873 0aa7          incf    _signed16_result0,f
4112                    ; line_number = 277
4113   0874 :   _signed16_mulitply_no_invert:
4114            
4115                    ; # Store the final result into _signed16_a<0:1>:
4116                    ; line_number = 280
4117                    ;info   280, 2164
4118 0874 0825          movf    _signed16_result2,w
4119                    ; line_number = 281
4120                    ;info   281, 2165
4121 0875 00a0          movwf   _signed16_a0
4122                    ; line_number = 282
4123                    ;info   282, 2166
4124 0876 0824          movf    _signed16_result3,w
4125                    ; line_number = 283
4126                    ;info   283, 2167
4127 0877 00a1          movwf   _signed16_a1
4128                    ; line_number = 284
4129                    ;info   284, 2168
4130 0878 0008          return  
4131            
4132            
4133                    ; delay after procedure statements=non-uniform
4134                    ; Return instruction suppressed by 'return_suppress'
4135            
4136            
4137            
4138            
4139                    ; line_number = 287
4140                    ;info   287, 2169
4141                    ; procedure _signed16_pointer_subtract
4142   0879 :   _signed16_pointer_subtract:
4143                    ; Last argument is sitting in W; save into argument variable
4144 0879 00ae          movwf   _signed16_pointer_subtract__pointer
4145                    ; delay=4294967295
4146                    ; line_number = 288
4147                    ; argument pointer byte
4148 0000002e = _signed16_pointer_subtract__pointer equ globals___0+14
4149                    ; line_number = 289
4150                    ;  returns_nothing
4151                    ; line_number = 290
4152                    ;  return_suppress
4153            
4154                    ; # This procedure will subtract {pointer} from the signed16 A "register"
4155                    ; # and store the result back into the A "register".
4156            
4157                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4158                    ; line_number = 295
4159                    ;  assemble
4160                    ;info   295, 2170
4161                    ; # Pointer is in W; move it to {_fsr}:
4162                    ; line_number = 297
4163                    ;info   297, 2170
4164 087a 0084          movwf   _fsr
4165                    ; # Set up {_irp} and _{fsr}:
4166                    ; line_number = 299
4167                    ;info   299, 2171
4168 087b 1383          bcf     _irp___byte, _irp___bit
4169                    ; line_number = 300
4170                    ;info   300, 2172
4171 087c 0d84          rlf     _fsr,f
4172                    ; line_number = 301
4173                    ;info   301, 2173
4174 087d 1803          btfsc   _c___byte, _c___bit
4175                    ; line_number = 302
4176                    ;info   302, 2174
4177 087e 1783          bsf     _irp___byte, _irp___bit
4178                    ; line_number = 303
4179                    ;info   303, 2175
4180 087f 1004          bcf     _fsr, 0
4181            
4182                    ; # Subtract MSB from {_signed16_a0} (MSB):
4183                    ; line_number = 306
4184                    ;info   306, 2176
4185 0880 0900          comf    _indf,w
4186                    ; line_number = 307
4187                    ;info   307, 2177
4188 0881 07a0          addwf   _signed16_a0,f
4189                    ; line_number = 308
4190                    ;info   308, 2178
4191 0882 0a84          incf    _fsr,f
4192            
4193                    ; # Subtract LSB from {_signed16_a1} (LSB):
4194                    ; line_number = 311
4195                    ;info   311, 2179
4196 0883 0900          comf    _indf,w
4197                    ; line_number = 312
4198                    ;info   312, 2180
4199 0884 3e01          addlw   1
4200            
4201                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
4202                    ; line_number = 315
4203                    ;info   315, 2181
4204 0885 1803          btfsc   _c___byte, _c___bit
4205                    ; line_number = 316
4206                    ;info   316, 2182
4207 0886 0aa0          incf    _signed16_a0,f
4208            
4209                    ; # Finish the subtraction:
4210                    ; line_number = 319
4211                    ;info   319, 2183
4212 0887 07a1          addwf   _signed16_a1,f
4213            
4214                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
4215                    ; line_number = 322
4216                    ;info   322, 2184
4217 0888 1803          btfsc   _c___byte, _c___bit
4218                    ; line_number = 323
4219                    ;info   323, 2185
4220 0889 0aa0          incf    _signed16_a0,f
4221                    ; line_number = 324
4222                    ;info   324, 2186
4223 088a 0008          return  
4224            
4225            
4226                    ; delay after procedure statements=non-uniform
4227                    ; Return instruction suppressed by 'return_suppress'
4228            
4229            
4230            
4231            
4232                    ; line_number = 327
4233                    ;info   327, 2187
4234                    ; procedure _signed16_pointer_store
4235   088b :   _signed16_pointer_store:
4236                    ; Last argument is sitting in W; save into argument variable
4237 088b 00af          movwf   _signed16_pointer_store__pointer
4238                    ; delay=4294967295
4239                    ; line_number = 328
4240                    ; argument pointer byte
4241 0000002f = _signed16_pointer_store__pointer equ globals___0+15
4242                    ; line_number = 329
4243                    ;  returns_nothing
4244                    ; line_number = 330
4245                    ;  return_suppress
4246            
4247                    ; # This procedure will store the signed16 A "register" into {pointer}.
4248            
4249                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4250                    ; line_number = 334
4251                    ;  assemble
4252                    ;info   334, 2188
4253                    ; # Pointer is in W; move it to {_fsr}:
4254                    ; line_number = 336
4255                    ;info   336, 2188
4256 088c 0084          movwf   _fsr
4257                    ; # Set up {_irp} and _{fsr}:
4258                    ; line_number = 338
4259                    ;info   338, 2189
4260 088d 1383          bcf     _irp___byte, _irp___bit
4261                    ; line_number = 339
4262                    ;info   339, 2190
4263 088e 0d84          rlf     _fsr,f
4264                    ; line_number = 340
4265                    ;info   340, 2191
4266 088f 1803          btfsc   _c___byte, _c___bit
4267                    ; line_number = 341
4268                    ;info   341, 2192
4269 0890 1783          bsf     _irp___byte, _irp___bit
4270                    ; line_number = 342
4271                    ;info   342, 2193
4272 0891 1004          bcf     _fsr, 0
4273                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}:
4274                    ; line_number = 344
4275                    ;info   344, 2194
4276 0892 0820          movf    _signed16_a0,w
4277                    ; line_number = 345
4278                    ;info   345, 2195
4279 0893 0080          movwf   _indf
4280                    ; line_number = 346
4281                    ;info   346, 2196
4282 0894 0a84          incf    _fsr,f
4283                    ; line_number = 347
4284                    ;info   347, 2197
4285 0895 0821          movf    _signed16_a1,w
4286                    ; line_number = 348
4287                    ;info   348, 2198
4288 0896 0080          movwf   _indf
4289                    ; line_number = 349
4290                    ;info   349, 2199
4291 0897 0008          return  
4292            
4293            
4294                    ; delay after procedure statements=non-uniform
4295                    ; Return instruction suppressed by 'return_suppress'
4296            
4297            
4298            
4299            
4300                    ; line_number = 352
4301                    ;info   352, 2200
4302                    ; procedure _signed16_negate
4303   0898 :   _signed16_negate:
4304                    ; arguments_none
4305                    ; line_number = 354
4306                    ;  returns_nothing
4307            
4308                    ; # This procedure will negate the signed16 A registers.
4309            
4310                    ; # Flip the sign bit:
4311                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4312                    ; line_number = 359
4313                    ;  _signed16_a0 := 0xff ^ _signed16_a0
4314                    ;info   359, 2200
4315 0898 09a0          comf    _signed16_a0,f
4316                    ; line_number = 360
4317                    ;  _signed16_a1 := 0 - _signed16_a1
4318                    ;info   360, 2201
4319 0899 0821          movf    _signed16_a1,w
4320 089a 3c00          sublw   0
4321 089b 00a1          movwf   _signed16_a1
4322                    ; line_number = 361
4323                    ;  if _c start
4324                    ;info   361, 2204
4325                    ; =>bit_code_emit@symbol(): sym=_c
4326                    ; 1TEST: Single test with code in skip slot
4327 089c 1803          btfsc   _c___byte, _c___bit
4328                    ; line_number = 362
4329                    ; _signed16_a0 := _signed16_a0 + 1    
4330                    ;info   362, 2205
4331 089d 0aa0          incf    _signed16_a0,f
4332            
4333            
4334                    ; Recombine size1 = 0 || size2 = 0
4335                    ; line_number = 361
4336                    ;  if _c done
4337                    ; delay after procedure statements=non-uniform
4338                    ; Implied return
4339 089e 3400          retlw   0
4340            
4341            
4342            
4343            
4344                    ; line_number = 365
4345                    ;info   365, 2207
4346                    ; procedure _signed16_pointer_swap
4347   089f :   _signed16_pointer_swap:
4348                    ; Last argument is sitting in W; save into argument variable
4349 089f 00b0          movwf   _signed16_pointer_swap__pointer
4350                    ; delay=4294967295
4351                    ; line_number = 366
4352                    ; argument pointer byte
4353 00000030 = _signed16_pointer_swap__pointer equ globals___0+16
4354                    ; line_number = 367
4355                    ;  returns_nothing
4356                    ; line_number = 368
4357                    ;  return_suppress
4358            
4359                    ; # This procedure will swap the signed16 A "register" with {pointer}:
4360            
4361                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4362                    ; line_number = 372
4363                    ;  assemble
4364                    ;info   372, 2208
4365                    ; # Pointer is in W; move it to {_fsr}:
4366                    ; line_number = 374
4367                    ;info   374, 2208
4368 08a0 0084          movwf   _fsr
4369                    ; # Set up {_irp} and _{fsr}:
4370                    ; line_number = 376
4371                    ;info   376, 2209
4372 08a1 1383          bcf     _irp___byte, _irp___bit
4373                    ; line_number = 377
4374                    ;info   377, 2210
4375 08a2 0d84          rlf     _fsr,f
4376                    ; line_number = 378
4377                    ;info   378, 2211
4378 08a3 1803          btfsc   _c___byte, _c___bit
4379                    ; line_number = 379
4380                    ;info   379, 2212
4381 08a4 1783          bsf     _irp___byte, _irp___bit
4382                    ; line_number = 380
4383                    ;info   380, 2213
4384 08a5 1004          bcf     _fsr, 0
4385            
4386                    ; # Swap {pointer} with {_signed16_a0}:
4387                    ; line_number = 383
4388                    ;info   383, 2214
4389 08a6 0800          movf    _indf,w
4390                    ; line_number = 384
4391                    ;info   384, 2215
4392 08a7 06a0          xorwf   _signed16_a0,f
4393                    ; line_number = 385
4394                    ;info   385, 2216
4395 08a8 0620          xorwf   _signed16_a0,w
4396                    ; line_number = 386
4397                    ;info   386, 2217
4398 08a9 06a0          xorwf   _signed16_a0,f
4399                    ; line_number = 387
4400                    ;info   387, 2218
4401 08aa 0080          movwf   _indf
4402            
4403                    ; # Swap {pointer}+1 with {_signed16_a1}:
4404                    ; line_number = 390
4405                    ;info   390, 2219
4406 08ab 0a84          incf    _fsr,f
4407                    ; line_number = 391
4408                    ;info   391, 2220
4409 08ac 0800          movf    _indf,w
4410                    ; line_number = 392
4411                    ;info   392, 2221
4412 08ad 06a1          xorwf   _signed16_a1,f
4413                    ; line_number = 393
4414                    ;info   393, 2222
4415 08ae 0621          xorwf   _signed16_a1,w
4416                    ; line_number = 394
4417                    ;info   394, 2223
4418 08af 06a1          xorwf   _signed16_a1,f
4419                    ; line_number = 395
4420                    ;info   395, 2224
4421 08b0 0080          movwf   _indf
4422                    ; line_number = 396
4423                    ;info   396, 2225
4424 08b1 0008          return  
4425            
4426            
4427                    ; delay after procedure statements=non-uniform
4428                    ; Return instruction suppressed by 'return_suppress'
4429            
4430            
4431            
4432            
4433 00000032 = _signed16_from_byte__0return equ globals___0+18
4434                    ; line_number = 399
4435                    ;info   399, 2226
4436                    ; procedure _signed16_from_byte
4437   08b2 :   _signed16_from_byte:
4438                    ; Last argument is sitting in W; save into argument variable
4439 08b2 00b1          movwf   _signed16_from_byte__number
4440                    ; delay=4294967295
4441                    ; line_number = 400
4442                    ; argument number byte
4443 00000031 = _signed16_from_byte__number equ globals___0+17
4444                    ; line_number = 401
4445                    ;  returns signed16
4446            
4447                    ; # This procedure will convert {number} into a signed16 and return it.
4448            
4449                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4450                    ; line_number = 405
4451                    ;  _signed16_a0 := 0
4452                    ;info   405, 2227
4453 08b3 01a0          clrf    _signed16_a0
4454                    ; line_number = 406
4455                    ;  _signed16_a1 := number
4456                    ;info   406, 2228
4457 08b4 0831          movf    _signed16_from_byte__number,w
4458 08b5 00a1          movwf   _signed16_a1
4459                    ; line_number = 407
4460                    ;  assemble
4461                    ;info   407, 2230
4462                    ; line_number = 408
4463                    ;info   408, 2230
4464 08b6 3019          movlw   _signed16_from_byte__0return>>1
4465                    ; line_number = 409
4466                    ;info   409, 2231
4467 08b7 208b          call    _signed16_pointer_store
4468                    ; line_number = 410
4469                    ;info   410, 2232
4470 08b8 3419          retlw   _signed16_from_byte__0return>>1
4471            
4472            
4473                    ; delay after procedure statements=non-uniform
4474                    ; Exiting procedure with no return(s); infinite loop fail
4475   08b9 :   _signed16_from_byte__1:
4476 08b9 28b9          goto    _signed16_from_byte__1
4477            
4478            
4479            
4480            
4481 00000036 = _signed16_from_byte2__0return equ globals___0+22
4482                    ; line_number = 413
4483                    ;info   413, 2234
4484                    ; procedure _signed16_from_byte2
4485   08ba :   _signed16_from_byte2:
4486                    ; Last argument is sitting in W; save into argument variable
4487 08ba 00b5          movwf   _signed16_from_byte2__byte2
4488                    ; delay=4294967295
4489                    ; line_number = 414
4490                    ; argument byte1 byte
4491 00000034 = _signed16_from_byte2__byte1 equ globals___0+20
4492                    ; line_number = 415
4493                    ; argument byte2 byte
4494 00000035 = _signed16_from_byte2__byte2 equ globals___0+21
4495                    ; line_number = 416
4496                    ;  returns signed16
4497            
4498                    ; # This procedure will convert {byte1} and {byte2} into a signed16
4499                    ; # and return it.
4500            
4501                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4502                    ; line_number = 421
4503                    ;  _signed16_a0 := byte1
4504                    ;info   421, 2235
4505 08bb 0834          movf    _signed16_from_byte2__byte1,w
4506 08bc 00a0          movwf   _signed16_a0
4507                    ; line_number = 422
4508                    ;  _signed16_a1 := byte2
4509                    ;info   422, 2237
4510 08bd 0835          movf    _signed16_from_byte2__byte2,w
4511 08be 00a1          movwf   _signed16_a1
4512                    ; line_number = 423
4513                    ;  assemble
4514                    ;info   423, 2239
4515                    ; line_number = 424
4516                    ;info   424, 2239
4517 08bf 301b          movlw   _signed16_from_byte2__0return>>1
4518                    ; line_number = 425
4519                    ;info   425, 2240
4520 08c0 208b          call    _signed16_pointer_store
4521                    ; line_number = 426
4522                    ;info   426, 2241
4523 08c1 341b          retlw   _signed16_from_byte2__0return>>1
4524            
4525            
4526                    ; delay after procedure statements=non-uniform
4527                    ; Exiting procedure with no return(s); infinite loop fail
4528   08c2 :   _signed16_from_byte2__1:
4529 08c2 28c2          goto    _signed16_from_byte2__1
4530            
4531            
4532            
4533            
4534                    ; line_number = 429
4535                    ;info   429, 2243
4536                    ; procedure _signed16_to_byte
4537   08c3 :   _signed16_to_byte:
4538                    ; line_number = 430
4539                    ; argument number signed16
4540 00000038 = _signed16_to_byte__number equ globals___0+24
4541                    ; line_number = 431
4542                    ;  returns byte
4543            
4544                    ; # This procedure will convert {number} into a 8-bit integer and return it.
4545            
4546                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4547                    ; line_number = 435
4548                    ;  assemble
4549                    ;info   435, 2243
4550                    ; # Get the argument stored into the signed16 "A" register:
4551                    ; line_number = 437
4552                    ;info   437, 2243
4553 08c3 301c          movlw   _signed16_to_byte__number>>1
4554                    ; line_number = 438
4555                    ;info   438, 2244
4556 08c4 2000          call    _signed16_pointer_load
4557                    ; line_number = 439
4558                    ; return _signed16_a1 start
4559                    ; line_number = 439
4560                    ;info   439, 2245
4561 08c5 0821          movf    _signed16_a1,w
4562 08c6 0008          return  
4563                    ; line_number = 439
4564                    ; return _signed16_a1 done
4565            
4566            
4567                    ; delay after procedure statements=non-uniform
4568            
4569            
4570            
4571            
4572                    ; line_number = 442
4573                    ;info   442, 2247
4574                    ; procedure _signed16_byte_high
4575   08c7 :   _signed16_byte_high:
4576                    ; line_number = 443
4577                    ; argument number signed16
4578 0000003a = _signed16_byte_high__number equ globals___0+26
4579                    ; line_number = 444
4580                    ;  returns byte
4581            
4582                    ; # This procedure will return the high 8 bits of {number}.
4583            
4584                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4585                    ; line_number = 448
4586                    ;  assemble
4587                    ;info   448, 2247
4588                    ; # Get the argument stored into the signed16 "A" register:
4589                    ; line_number = 450
4590                    ;info   450, 2247
4591 08c7 301d          movlw   _signed16_byte_high__number>>1
4592                    ; line_number = 451
4593                    ;info   451, 2248
4594 08c8 2000          call    _signed16_pointer_load
4595                    ; line_number = 452
4596                    ; return _signed16_a0 start
4597                    ; line_number = 452
4598                    ;info   452, 2249
4599 08c9 0820          movf    _signed16_a0,w
4600 08ca 0008          return  
4601                    ; line_number = 452
4602                    ; return _signed16_a0 done
4603            
4604            
4605                    ; delay after procedure statements=non-uniform
4606            
4607            
4608            
4609            
4610                    ; line_number = 455
4611                    ;info   455, 2251
4612                    ; procedure _signed16_byte_low
4613   08cb :   _signed16_byte_low:
4614                    ; line_number = 456
4615                    ; argument number signed16
4616 0000003c = _signed16_byte_low__number equ globals___0+28
4617                    ; line_number = 457
4618                    ;  returns byte
4619            
4620                    ; # This procedure will return the low 8 bits of {number}.
4621            
4622                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4623                    ; line_number = 461
4624                    ;  assemble
4625                    ;info   461, 2251
4626                    ; # Get the argument stored into the signed16 "A" register:
4627                    ; line_number = 463
4628                    ;info   463, 2251
4629 08cb 301e          movlw   _signed16_byte_low__number>>1
4630                    ; line_number = 464
4631                    ;info   464, 2252
4632 08cc 2000          call    _signed16_pointer_load
4633                    ; line_number = 465
4634                    ; return _signed16_a1 start
4635                    ; line_number = 465
4636                    ;info   465, 2253
4637 08cd 0821          movf    _signed16_a1,w
4638 08ce 0008          return  
4639                    ; line_number = 465
4640                    ; return _signed16_a1 done
4641            
4642            
4643                    ; delay after procedure statements=non-uniform
4644            
4645            
4646            
4647            
4648                    ; line_number = 468
4649                    ;info   468, 2255
4650                    ; procedure _signed16_equals
4651   08cf :   _signed16_equals:
4652                    ; arguments_none
4653                    ; line_number = 470
4654                    ;  returns_nothing
4655            
4656                    ; # This procedure will set the Z bit if register "A" is zero.
4657            
4658                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4659                    ; line_number = 474
4660                    ;  assemble
4661                    ;info   474, 2255
4662                    ; line_number = 475
4663                    ;info   475, 2255
4664 08cf 0820          movf    _signed16_a0,w
4665                    ; line_number = 476
4666                    ;info   476, 2256
4667 08d0 0421          iorwf   _signed16_a1,w
4668                    ; # Return is implicit
4669            
4670            
4671                    ; delay after procedure statements=non-uniform
4672                    ; Implied return
4673 08d1 3400          retlw   0
4674            
4675            
4676            
4677            
4678                    ; line_number = 480
4679                    ;info   480, 2258
4680                    ; procedure _signed16_not_equal
4681   08d2 :   _signed16_not_equal:
4682                    ; arguments_none
4683                    ; line_number = 482
4684                    ;  returns_nothing
4685            
4686                    ; # This procedure will set the Z bit if register "A" is non-zero.
4687            
4688                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4689                    ; line_number = 486
4690                    ;  assemble
4691                    ;info   486, 2258
4692                    ; line_number = 487
4693                    ;info   487, 2258
4694 08d2 0820          movf    _signed16_a0,w
4695                    ; line_number = 488
4696                    ;info   488, 2259
4697 08d3 0421          iorwf   _signed16_a1,w
4698                    ; line_number = 489
4699                    ; if _z start
4700                    ;info   489, 2260
4701                    ; =>bit_code_emit@symbol(): sym=_z
4702                    ; No 1TEST: true.size=2 false.size=0
4703                    ; No 2TEST: true.size=2 false.size=0
4704                    ; 1GOTO: Single test with GOTO
4705 08d4 1d03          btfss   _z___byte, _z___bit
4706 08d5 28d8          goto    _signed16_not_equal__1
4707                    ; line_number = 490
4708                    ; _z := _false
4709                    ;info   490, 2262
4710 08d6 1103          bcf     _z___byte, _z___bit
4711                    ; line_number = 491
4712                    ;  return start
4713                    ; line_number = 491
4714                    ;info   491, 2263
4715 08d7 3400          retlw   0
4716                    ; line_number = 491
4717                    ;  return done
4718                    ; Recombine size1 = 0 || size2 = 0
4719   08d8 :   _signed16_not_equal__1:
4720                    ; line_number = 489
4721                    ; if _z done
4722                    ; line_number = 492
4723                    ; _z := _true
4724                    ;info   492, 2264
4725 08d8 1503          bsf     _z___byte, _z___bit
4726                    ; # Return is implicit
4727            
4728            
4729                    ; delay after procedure statements=non-uniform
4730                    ; Implied return
4731 08d9 3400          retlw   0
4732            
4733            
4734            
4735            
4736                    ; line_number = 496
4737                    ;info   496, 2266
4738                    ; procedure _signed16_less_than
4739   08da :   _signed16_less_than:
4740                    ; arguments_none
4741                    ; line_number = 498
4742                    ;  returns_nothing
4743            
4744                    ; # This procedure will set the Z bit if register "A" is non-zero and
4745                    ; # positive.
4746            
4747                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4748                    ; line_number = 503
4749                    ;  _z := _false
4750                    ;info   503, 2266
4751 08da 1103          bcf     _z___byte, _z___bit
4752                    ; line_number = 504
4753                    ;  if _signed16_a0@7 start
4754                    ;info   504, 2267
4755 00000020 = _signed16_less_than__select__1___byte equ _signed16_a0
4756 00000007 = _signed16_less_than__select__1___bit equ 7
4757                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than__select__1
4758                    ; 1TEST: Single test with code in skip slot
4759 08db 1ba0          btfsc   _signed16_less_than__select__1___byte, _signed16_less_than__select__1___bit
4760                    ; line_number = 505
4761                    ; _z := _true
4762                    ;info   505, 2268
4763 08dc 1503          bsf     _z___byte, _z___bit
4764                    ; Recombine size1 = 0 || size2 = 0
4765                    ; line_number = 504
4766                    ;  if _signed16_a0@7 done
4767                    ; # Return is implicit
4768            
4769            
4770                    ; delay after procedure statements=non-uniform
4771                    ; Implied return
4772 08dd 3400          retlw   0
4773            
4774            
4775            
4776            
4777                    ; line_number = 509
4778                    ;info   509, 2270
4779                    ; procedure _signed16_less_than_or_equal
4780   08de :   _signed16_less_than_or_equal:
4781                    ; arguments_none
4782                    ; line_number = 511
4783                    ;  returns_nothing
4784            
4785                    ; # This procedure will set the Z bit if register "A" is zero or positive.
4786            
4787                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4788                    ; line_number = 515
4789                    ;  assemble
4790                    ;info   515, 2270
4791                    ; line_number = 516
4792                    ;info   516, 2270
4793 08de 0821          movf    _signed16_a1,w
4794                    ; line_number = 517
4795                    ;info   517, 2271
4796 08df 0420          iorwf   _signed16_a0,w
4797                    ; line_number = 518
4798                    ; if _z start
4799                    ;info   518, 2272
4800                    ; =>bit_code_emit@symbol(): sym=_z
4801                    ; 1TEST: Single test with code in skip slot
4802 08e0 1903          btfsc   _z___byte, _z___bit
4803                    ; line_number = 519
4804                    ; return start
4805                    ; line_number = 519
4806                    ;info   519, 2273
4807 08e1 3400          retlw   0
4808                    ; line_number = 519
4809                    ; return done
4810                    ; Recombine size1 = 0 || size2 = 0
4811                    ; line_number = 518
4812                    ; if _z done
4813                    ; # _z == _false
4814                    ; line_number = 521
4815                    ;  if _signed16_a0@7 start
4816                    ;info   521, 2274
4817 00000020 = _signed16_less_than_or_equal__select__1___byte equ _signed16_a0
4818 00000007 = _signed16_less_than_or_equal__select__1___bit equ 7
4819                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than_or_equal__select__1
4820                    ; 1TEST: Single test with code in skip slot
4821 08e2 1ba0          btfsc   _signed16_less_than_or_equal__select__1___byte, _signed16_less_than_or_equal__select__1___bit
4822                    ; line_number = 522
4823                    ; _z := _true
4824                    ;info   522, 2275
4825 08e3 1503          bsf     _z___byte, _z___bit
4826                    ; Recombine size1 = 0 || size2 = 0
4827                    ; line_number = 521
4828                    ;  if _signed16_a0@7 done
4829                    ; # Return is implicit
4830            
4831            
4832                    ; delay after procedure statements=non-uniform
4833                    ; Implied return
4834 08e4 3400          retlw   0
4835            
4836            
4837            
4838            
4839                    ; line_number = 526
4840                    ;info   526, 2277
4841                    ; procedure _signed16_greater_than
4842   08e5 :   _signed16_greater_than:
4843                    ; arguments_none
4844                    ; line_number = 528
4845                    ;  returns_nothing
4846            
4847                    ; # This procedure will set the Z bit if register "A" is non-zero and
4848                    ; # positive.
4849            
4850                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4851                    ; line_number = 533
4852                    ;  assemble
4853                    ;info   533, 2277
4854                    ; line_number = 534
4855                    ;info   534, 2277
4856 08e5 0820          movf    _signed16_a0,w
4857                    ; line_number = 535
4858                    ;info   535, 2278
4859 08e6 0421          iorwf   _signed16_a1,w
4860                    ; line_number = 536
4861                    ; if _z start
4862                    ;info   536, 2279
4863                    ; =>bit_code_emit@symbol(): sym=_z
4864                    ; No 1TEST: true.size=2 false.size=0
4865                    ; No 2TEST: true.size=2 false.size=0
4866                    ; 1GOTO: Single test with GOTO
4867 08e7 1d03          btfss   _z___byte, _z___bit
4868 08e8 28eb          goto    _signed16_greater_than__1
4869                    ; line_number = 537
4870                    ; _z := _false
4871                    ;info   537, 2281
4872 08e9 1103          bcf     _z___byte, _z___bit
4873                    ; line_number = 538
4874                    ;  return     start
4875                    ; line_number = 538
4876                    ;info   538, 2282
4877 08ea 3400          retlw   0
4878                    ; line_number = 538
4879                    ;  return     done
4880                    ; Recombine size1 = 0 || size2 = 0
4881   08eb :   _signed16_greater_than__1:
4882                    ; line_number = 536
4883                    ; if _z done
4884                    ; # _z == _false
4885                    ; line_number = 540
4886                    ;  if !(_signed16_a0@7) start
4887                    ;info   540, 2283
4888 00000020 = _signed16_greater_than__select__2___byte equ _signed16_a0
4889 00000007 = _signed16_greater_than__select__2___bit equ 7
4890                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than__select__2
4891                    ; 1TEST: Single test with code in skip slot
4892 08eb 1fa0          btfss   _signed16_greater_than__select__2___byte, _signed16_greater_than__select__2___bit
4893                    ; line_number = 541
4894                    ; _z := _true
4895                    ;info   541, 2284
4896 08ec 1503          bsf     _z___byte, _z___bit
4897                    ; Recombine size1 = 0 || size2 = 0
4898                    ; line_number = 540
4899                    ;  if !(_signed16_a0@7) done
4900                    ; # Return is implicit:
4901            
4902            
4903                    ; delay after procedure statements=non-uniform
4904                    ; Implied return
4905 08ed 3400          retlw   0
4906            
4907            
4908            
4909            
4910                    ; line_number = 545
4911                    ;info   545, 2286
4912                    ; procedure _signed16_greater_than_or_equal
4913   08ee :   _signed16_greater_than_or_equal:
4914                    ; arguments_none
4915                    ; line_number = 547
4916                    ;  returns_nothing
4917            
4918                    ; # This procedure will set the Z bit if register "A" is zero or positive.
4919            
4920                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4921                    ; line_number = 551
4922                    ;  _z := _true
4923                    ;info   551, 2286
4924 08ee 1503          bsf     _z___byte, _z___bit
4925                    ; line_number = 552
4926                    ;  if _signed16_a0@7 start
4927                    ;info   552, 2287
4928 00000020 = _signed16_greater_than_or_equal__select__1___byte equ _signed16_a0
4929 00000007 = _signed16_greater_than_or_equal__select__1___bit equ 7
4930                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than_or_equal__select__1
4931                    ; 1TEST: Single test with code in skip slot
4932 08ef 1ba0          btfsc   _signed16_greater_than_or_equal__select__1___byte, _signed16_greater_than_or_equal__select__1___bit
4933                    ; line_number = 553
4934                    ; _z := _false
4935                    ;info   553, 2288
4936 08f0 1103          bcf     _z___byte, _z___bit
4937                    ; Recombine size1 = 0 || size2 = 0
4938                    ; line_number = 552
4939                    ;  if _signed16_a0@7 done
4940                    ; # Return is implicit:
4941            
4942            
4943                    ; delay after procedure statements=non-uniform
4944                    ; Implied return
4945 08f1 3400          retlw   0
4946            
4947            
4948            
4949            
4950                    ; line_number = 578
4951                    ;info   578, 2290
4952                    ; procedure _signed16_divide_raw
4953   08f2 :   _signed16_divide_raw:
4954                    ; arguments_none
4955                    ; line_number = 580
4956                    ;  returns_nothing
4957                    ; line_number = 581
4958                    ;  return_suppress
4959            
4960                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4961                    ; line_number = 583
4962                    ;  assemble
4963                    ;info   583, 2290
4964                    ; line_number = 584
4965                    ;info   584, 2290
4966 08f2 211e          call    _signed16_divide_s_sign
4967            
4968                    ; #Initialize:
4969                    ; line_number = 587
4970                    ;info   587, 2291
4971 08f3 3010          movlw   16
4972                    ; line_number = 588
4973                    ;info   588, 2292
4974 08f4 00a9          movwf   _signed16_count
4975                    ; line_number = 589
4976                    ;info   589, 2293
4977 08f5 0820          movf    _signed16_a0,w
4978                    ; line_number = 590
4979                    ;info   590, 2294
4980 08f6 00a7          movwf   _signed16_temp0
4981                    ; line_number = 591
4982                    ;info   591, 2295
4983 08f7 0821          movf    _signed16_a1,w
4984                    ; line_number = 592
4985                    ;info   592, 2296
4986 08f8 00a6          movwf   _signed16_temp1
4987                    ; line_number = 593
4988                    ;info   593, 2297
4989 08f9 01a0          clrf    _signed16_a0
4990                    ; line_number = 594
4991                    ;info   594, 2298
4992 08fa 01a1          clrf    _signed16_a1
4993                    ; line_number = 595
4994                    ;info   595, 2299
4995 08fb 01a5          clrf    _signed16_rem0
4996                    ; line_number = 596
4997                    ;info   596, 2300
4998 08fc 01a4          clrf    _signed16_rem1
4999                    ; # Loop 16 times usinge {_signed16_count}:
5000                    ; line_number = 598
5001   08fd :   _signed16_divide_dloop:
5002                    ; line_number = 599
5003                    ;info   599, 2301
5004 08fd 1003          bcf     _c___byte, _c___bit
5005                    ; line_number = 600
5006                    ;info   600, 2302
5007 08fe 0da6          rlf     _signed16_temp1,f
5008                    ; line_number = 601
5009                    ;info   601, 2303
5010 08ff 0da7          rlf     _signed16_temp0,f
5011                    ; line_number = 602
5012                    ;info   602, 2304
5013 0900 0da4          rlf     _signed16_rem1,f
5014                    ; line_number = 603
5015                    ;info   603, 2305
5016 0901 0da5          rlf     _signed16_rem0,f
5017                    ; line_number = 604
5018                    ;info   604, 2306
5019 0902 0822          movf    _signed16_b0,w
5020                    ; line_number = 605
5021                    ;info   605, 2307
5022 0903 0225          subwf   _signed16_rem0,w
5023                    ; line_number = 606
5024                    ;info   606, 2308
5025 0904 1d03          btfss   _z___byte, _z___bit
5026                    ; line_number = 607
5027                    ;info   607, 2309
5028 0905 2908          goto    _signed16_divide_no_check
5029                    ; line_number = 608
5030                    ;info   608, 2310
5031 0906 0823          movf    _signed16_b1,w
5032                    ; line_number = 609
5033                    ;info   609, 2311
5034 0907 0224          subwf   _signed16_rem1,w
5035                    ; line_number = 610
5036   0908 :   _signed16_divide_no_check:
5037                    ; line_number = 611
5038                    ;info   611, 2312
5039 0908 1c03          btfss   _c___byte, _c___bit
5040                    ; line_number = 612
5041                    ;info   612, 2313
5042 0909 2911          goto    _signed16_divide_no_go
5043                    ; line_number = 613
5044                    ;info   613, 2314
5045 090a 0823          movf    _signed16_b1,w
5046                    ; line_number = 614
5047                    ;info   614, 2315
5048 090b 02a4          subwf   _signed16_rem1,f
5049                    ; line_number = 615
5050                    ;info   615, 2316
5051 090c 1c03          btfss   _c___byte, _c___bit
5052                    ; line_number = 616
5053                    ;info   616, 2317
5054 090d 03a5          decf    _signed16_rem0,f
5055                    ; line_number = 617
5056                    ;info   617, 2318
5057 090e 0822          movf    _signed16_b0,w
5058                    ; line_number = 618
5059                    ;info   618, 2319
5060 090f 02a5          subwf   _signed16_rem0,f
5061                    ; line_number = 619
5062                    ;info   619, 2320
5063 0910 1403          bsf     _c___byte, _c___bit
5064                    ; line_number = 620
5065   0911 :   _signed16_divide_no_go:
5066                    ; line_number = 621
5067                    ;info   621, 2321
5068 0911 0da1          rlf     _signed16_a1,f
5069                    ; line_number = 622
5070                    ;info   622, 2322
5071 0912 0da0          rlf     _signed16_a0,f
5072                    ; line_number = 623
5073                    ;info   623, 2323
5074 0913 0ba9          decfsz  _signed16_count,f
5075                    ; line_number = 624
5076                    ;info   624, 2324
5077 0914 28fd          goto    _signed16_divide_dloop
5078            
5079                    ; line_number = 626
5080                    ;info   626, 2325
5081 0915 1fa8          btfss   _signed16_sign, 7
5082                    ; line_number = 627
5083                    ;info   627, 2326
5084 0916 3400          retlw   0
5085                    ; line_number = 628
5086                    ;info   628, 2327
5087 0917 2918          goto    _signed16_divide_neg_b
5088            
5089                    ; line_number = 630
5090   0918 :   _signed16_divide_neg_b:
5091                    ; line_number = 631
5092                    ;info   631, 2328
5093 0918 09a3          comf    _signed16_b1,f
5094                    ; line_number = 632
5095                    ;info   632, 2329
5096 0919 0aa3          incf    _signed16_b1,f
5097                    ; line_number = 633
5098                    ;info   633, 2330
5099 091a 1903          btfsc   _z___byte, _z___bit
5100                    ; line_number = 634
5101                    ;info   634, 2331
5102 091b 03a2          decf    _signed16_b0,f
5103                    ; line_number = 635
5104                    ;info   635, 2332
5105 091c 09a2          comf    _signed16_b0,f
5106                    ; line_number = 636
5107                    ;info   636, 2333
5108 091d 3400          retlw   0
5109            
5110                    ; line_number = 638
5111   091e :   _signed16_divide_s_sign:
5112                    ; line_number = 639
5113                    ;info   639, 2334
5114 091e 0822          movf    _signed16_b0,w
5115                    ; line_number = 640
5116                    ;info   640, 2335
5117 091f 0620          xorwf   _signed16_a0,w
5118                    ; line_number = 641
5119                    ;info   641, 2336
5120 0920 00a8          movwf   _signed16_sign
5121                    ; line_number = 642
5122                    ;info   642, 2337
5123 0921 1fa0          btfss   _signed16_a0, 7
5124                    ; line_number = 643
5125                    ;info   643, 2338
5126 0922 2928          goto    _signed16_divide_check_a
5127            
5128                    ; line_number = 645
5129                    ;info   645, 2339
5130 0923 09a1          comf    _signed16_a1,f
5131                    ; line_number = 646
5132                    ;info   646, 2340
5133 0924 0aa1          incf    _signed16_a1,f
5134                    ; line_number = 647
5135                    ;info   647, 2341
5136 0925 1903          btfsc   _z___byte, _z___bit
5137                    ; line_number = 648
5138                    ;info   648, 2342
5139 0926 03a0          decf    _signed16_a0,f
5140                    ; line_number = 649
5141                    ;info   649, 2343
5142 0927 09a0          comf    _signed16_a0,f
5143            
5144                    ; line_number = 651
5145   0928 :   _signed16_divide_check_a:
5146                    ; line_number = 652
5147                    ;info   652, 2344
5148 0928 1fa2          btfss   _signed16_b0, 7
5149                    ; line_number = 653
5150                    ;info   653, 2345
5151 0929 3400          retlw   0
5152                    ; line_number = 654
5153                    ;info   654, 2346
5154 092a 2918          goto    _signed16_divide_neg_b
5155            
5156                    ; delay after procedure statements=non-uniform
5157                    ; Return instruction suppressed by 'return_suppress'
5158            
5159            
5160            
5161            
5162                    ; Configuration bits
5163                    ; address = 0x2007, fill = 0x0
5164                    ; cp = off (0x2000)
5165                    ; ccpmx = ccp1_rb0 (0x1000)
5166                    ; debug = off (0x800)
5167                    ; wrt = off (0x600)
5168                    ; cpd = off (0x100)
5169                    ; lvp = off (0x0)
5170                    ; boden = off (0x0)
5171                    ; mclre = off (0x0)
5172                    ; pwrte = off (0x8)
5173                    ; wdte = off (0x0)
5174                    ; fosc = hs (0x2)
5175                    ; 16138 = 0x3f0a
5176                    ; 8199 = 0x2007
5177   3f0a =           __config 8199, 16138
5178                    ; Configuration bits
5179                    ; address = 0x2008, fill = 0x3ffc
5180                    ; ieso = off (0x0)
5181                    ; fcmen = off (0x0)
5182                    ; 16380 = 0x3ffc
5183                    ; 8200 = 0x2008
5184   3ffc =           __config 8200, 16380
5185                    ; Define start addresses for data regions
5186                    ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
5187                    ; Region="globals___0" Address=32" Size=80 Bytes=75 Bits=3 Available=4
5188                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
5189                    ; Region="globals___2" Address=272" Size=96 Bytes=0 Bits=0 Available=96
5190                    ; Region="globals___3" Address=400" Size=96 Bytes=0 Bits=0 Available=96
5191                    end
