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                    ; #library clock16mhz
1660                    ; line_number = 14
1661                    ; library clock20mhz entered
1662                    ; # Copyright (c) 2004 by Wayne C. Gramlich
1663                    ; # All rights reserved.
1664            
1665                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1666                    ; # and {clocks_per_instruction}.
1667            
1668                    ; # Define processor constants:
1669                    ; buffer = 'clock20mhz'
1670                    ; line_number = 9
1671                    ; constant clock_rate = 20000000
1672 01312d00 = clock_rate equ 20000000
1673                    ; line_number = 10
1674                    ; constant clocks_per_instruction = 4
1675 00000004 = clocks_per_instruction equ 4
1676                    ; line_number = 11
1677                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1678 004c4b40 = instruction_rate equ 5000000
1679            
1680            
1681                    ; buffer = 'sonar6'
1682                    ; line_number = 14
1683                    ; library clock20mhz exited
1684                    ; # A microsecond takes 4 cycles at 16MHz:
1685                    ; line_number = 16
1686                    ; constant microsecond = 5
1687 00000005 = microsecond equ 5
1688            
1689                    ; # This module uses 16MHz crystal oscillator; hence mode EC=External Clock:
1690            
1691                    ; # All I/O pins start off as inputs.
1692                    ; # We switch the trigger pins to outputs as needed.
1693                    ; line_number = 23
1694                    ; package dip
1695                    ; line_number = 24
1696                    ; pin 1 = ra2_in, name=signal0
1697 00000005 = signal0___byte equ _porta
1698 00000002 = signal0___bit equ 2
1699                    ; line_number = 25
1700                    ;  pin 2 = ra3_in, name=trigger1
1701 00000005 = trigger1___byte equ _porta
1702 00000003 = trigger1___bit equ 3
1703                    ; line_number = 26
1704                    ;  pin 3 = ra4_in, name=trigger0
1705 00000005 = trigger0___byte equ _porta
1706 00000004 = trigger0___bit equ 4
1707                    ; line_number = 27
1708                    ;  pin 4 = ra5_in, name=signal1
1709 00000005 = signal1___byte equ _porta
1710 00000005 = signal1___bit equ 5
1711                    ; line_number = 28
1712                    ;  pin 5 = ground
1713                    ; line_number = 29
1714                    ;  pin 6 = rb0_in, name=trigger4
1715 00000006 = trigger4___byte equ _portb
1716 00000000 = trigger4___bit equ 0
1717                    ; line_number = 30
1718                    ;  pin 7 = rb1_in, name=signal4
1719 00000006 = signal4___byte equ _portb
1720 00000001 = signal4___bit equ 1
1721                    ; line_number = 31
1722                    ;  pin 8 = rx
1723                    ; line_number = 32
1724                    ;  pin 9 = rb3_in, name=trigger5
1725 00000006 = trigger5___byte equ _portb
1726 00000003 = trigger5___bit equ 3
1727            
1728                    ; line_number = 34
1729                    ;  pin 10 = rb4_in, name=signal5
1730 00000006 = signal5___byte equ _portb
1731 00000004 = signal5___bit equ 4
1732                    ; line_number = 35
1733                    ;  pin 11 = tx
1734                    ; line_number = 36
1735                    ;  pin 12 = rb6_in, name=trigger3
1736 00000006 = trigger3___byte equ _portb
1737 00000006 = trigger3___bit equ 6
1738                    ; line_number = 37
1739                    ;  pin 13 = rb7_in, name=signal3
1740 00000006 = signal3___byte equ _portb
1741 00000006 = signal3___bit equ 6
1742                    ; line_number = 38
1743                    ;  pin 14 = power_supply
1744                    ; line_number = 39
1745                    ;  pin 15 = osc2
1746                    ; line_number = 40
1747                    ;  pin 16 = osc1
1748                    ; line_number = 41
1749                    ;  pin 17 = ra0_out, name=trigger2
1750 00000005 = trigger2___byte equ _porta
1751 00000000 = trigger2___bit equ 0
1752                    ; line_number = 42
1753                    ;  pin 18 = ra1_in, name=signal2
1754 00000005 = signal2___byte equ _porta
1755 00000001 = signal2___bit equ 1
1756            
1757                    ; #FIXME: Add "tris" to pin declaration some time!!!
1758                    ; line_number = 45
1759                    ; bind tris0 = _trisa@4
1760 00000085 = tris0___byte equ _trisa
1761 00000004 = tris0___bit equ 4
1762                    ; line_number = 46
1763                    ; bind tris1 = _trisa@3
1764 00000085 = tris1___byte equ _trisa
1765 00000003 = tris1___bit equ 3
1766                    ; line_number = 47
1767                    ; bind tris2 = _trisa@0
1768 00000085 = tris2___byte equ _trisa
1769 00000000 = tris2___bit equ 0
1770                    ; line_number = 48
1771                    ; bind tris3 = _trisb@6
1772 00000086 = tris3___byte equ _trisb
1773 00000006 = tris3___bit equ 6
1774                    ; line_number = 49
1775                    ; bind tris4 = _trisb@0
1776 00000086 = tris4___byte equ _trisb
1777 00000000 = tris4___bit equ 0
1778                    ; line_number = 50
1779                    ; bind tris5 = _trisb@3
1780 00000086 = tris5___byte equ _trisb
1781 00000003 = tris5___bit equ 3
1782            
1783                    ; line_number = 52
1784                    ; origin 0
1785   0000 :           org     0
1786            
1787                    ; line_number = 54
1788                    ; constant data_bytes = 21
1789 00000015 = data_bytes equ 21
1790            
1791                    ; line_number = 56
1792                    ;info   56, 0
1793                    ; procedure start
1794   0000 :   start:
1795                    ; arguments_none
1796                    ; line_number = 58
1797                    ;  returns_nothing
1798                    ; line_number = 59
1799                    ;  return_suppress
1800            
1801                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
1802                    ; line_number = 61
1803                    ;  assemble
1804                    ;info   61, 0
1805                    ; line_number = 62
1806                    ;info   62, 0
1807                    ; codebank start, main
1808                    ; line_number = 63
1809                    ;info   63, 0
1810 0000 28ec          goto    main
1811            
1812                    ; delay after procedure statements=non-uniform
1813                    ; Return instruction suppressed by 'return_suppress'
1814            
1815            
1816            
1817            
1818                    ; line_number = 65
1819                    ; origin 4
1820   0004 :           org     4
1821            
1822                    ; line_number = 67
1823                    ; constant sonars = 6
1824 00000006 = sonars equ 6
1825                    ; line_number = 68
1826                    ; global raw_highs[sonars] array[byte]
1827 0000003e = raw_highs equ globals___0+30
1828                    ; line_number = 69
1829                    ; global raw_lows[sonars] array[byte]
1830 00000044 = raw_lows equ globals___0+36
1831                    ; line_number = 70
1832                    ; global unit_highs[sonars] array[byte]
1833 0000004a = unit_highs equ globals___0+42
1834                    ; line_number = 71
1835                    ; global unit_lows[sonars] array[byte]
1836 00000050 = unit_lows equ globals___0+48
1837            
1838                    ; line_number = 73
1839                    ; global speed_divisor signed16
1840 00000056 = speed_divisor equ globals___0+54
1841                    ; line_number = 74
1842                    ; global distance signed16
1843 00000058 = distance equ globals___0+56
1844            
1845                    ; line_number = 76
1846                    ; global address byte
1847 0000005a = address equ globals___0+58
1848                    ; line_number = 77
1849                    ; global echo_munch bit
1850 0000006f = echo_munch___byte equ globals___0+79
1851 00000000 = echo_munch___bit equ 0
1852                    ; line_number = 78
1853                    ; global state byte
1854 0000005b = state equ globals___0+59
1855                    ; line_number = 79
1856                    ; global id_index byte
1857 0000005c = id_index equ globals___0+60
1858                    ; line_number = 80
1859                    ; global iteration byte
1860 0000005d = iteration equ globals___0+61
1861            
1862            
1863                    ; line_number = 83
1864                    ; constant sound_speed_meters = 344
1865 00000158 = sound_speed_meters equ 344
1866                    ; line_number = 84
1867                    ; constant sound_speed_centimeters = sound_speed_meters * 100
1868 00008660 = sound_speed_centimeters equ 34400
1869                    ; line_number = 85
1870                    ; constant sound_speed_millimeters = sound_speed_meters * 1000
1871 00053fc0 = sound_speed_millimeters equ 344000
1872                    ; line_number = 86
1873                    ; constant sound_speed_feet = 1128
1874 00000468 = sound_speed_feet equ 1128
1875                    ; line_number = 87
1876                    ; constant sound_speed_inches = sound_speed_feet * 12
1877 000034e0 = sound_speed_inches equ 13536
1878            
1879                    ; # The extra factor of 2 comes from the round trip the sound pulse must make:
1880                    ; line_number = 90
1881                    ; constant ticks_per_second = 1000 * 1000 * microsecond
1882 004c4b40 = ticks_per_second equ 5000000
1883                    ; line_number = 91
1884                    ; constant divisor_meters = 2 * ticks_per_second / sound_speed_meters
1885 0000718d = divisor_meters equ 29069
1886                    ; line_number = 92
1887                    ; constant divisor_centimeters = 2 * ticks_per_second / sound_speed_centimeters
1888 00000122 = divisor_centimeters equ 290
1889                    ; line_number = 93
1890                    ; constant divisor_millimeters = 2 * ticks_per_second / sound_speed_millimeters
1891 0000001d = divisor_millimeters equ 29
1892                    ; line_number = 94
1893                    ; constant divisor_feet = 2 * ticks_per_second / sound_speed_feet
1894 000022a1 = divisor_feet equ 8865
1895                    ; line_number = 95
1896                    ; constant divisor_inches = 2 * ticks_per_second / sound_speed_inches
1897 000002e2 = divisor_inches equ 738
1898            
1899                    ; line_number = 97
1900                    ; constant divisor_millimeters_high = divisor_millimeters >> 8
1901 00000000 = divisor_millimeters_high equ 0
1902                    ; line_number = 98
1903                    ; constant divisor_millimeters_low = divisor_millimeters & 0xff
1904 0000001d = divisor_millimeters_low equ 29
1905            
1906                    ; line_number = 100
1907                    ; share fsr_save byte
1908 00000070 = fsr_save equ shared___globals
1909                    ; line_number = 101
1910                    ; share pclath_save byte
1911 00000071 = pclath_save equ shared___globals+1
1912            
1913                    ; line_number = 103
1914                    ;info   103, 4
1915                    ; procedure interrupt
1916   0004 :   interrupt:
1917 00000073 = interrupt___w_save equ shared___globals+3
1918 00000072 = interrupt___status_save equ shared___globals+2
1919                    ; Carefully save __w and __tatus into RAM
1920                    ; Save W first (easy)
1921 0004 00f3          movwf   interrupt___w_save
1922                    ; Save Status without smashing it (tricky)
1923                    ; Move swapped version of status into W
1924 0005 0e03          swapf   __status,w
1925                    ; Store swapped version of status into RAM
1926 0006 00f2          movwf   interrupt___status_save
1927                    ; arguments_none
1928                    ; line_number = 105
1929                    ;  returns_nothing
1930            
1931                    ; # Process interrupt:
1932            
1933                    ; line_number = 109
1934                    ;  local sonar_index byte
1935 0000005e = interrupt__sonar_index equ globals___0+62
1936                    ; line_number = 110
1937                    ;  local rx9d bit
1938 0000006f = interrupt__rx9d___byte equ globals___0+79
1939 00000001 = interrupt__rx9d___bit equ 1
1940                    ; line_number = 111
1941                    ;  local command byte
1942 0000005f = interrupt__command equ globals___0+63
1943            
1944                    ; # Save the {_fsr}:
1945                    ; before procedure statements delay=non-uniform, bit states=(data:??=uu=>?? code:X0=cu=>X0)
1946                    ; line_number = 114
1947                    ;  fsr_save := _fsr
1948                    ;info   114, 7
1949 0007 0804          movf    _fsr,w
1950 0008 00f0          movwf   fsr_save
1951                    ; line_number = 115
1952                    ;  pclath_save := _pclath
1953                    ;info   115, 9
1954 0009 080a          movf    _pclath,w
1955 000a 00f1          movwf   pclath_save
1956                    ; line_number = 116
1957                    ;  _pclath := 0
1958                    ;info   116, 11
1959 000b 018a          clrf    _pclath
1960                    ; # Now we are really in page 0:
1961            
1962                    ; # Deal with any errors:
1963                    ; line_number = 120
1964                    ;  if _oerr start
1965                    ;info   120, 12
1966                    ; =>bit_code_emit@symbol(): sym=_oerr
1967                    ; 1TEST: Single test with code in skip slot
1968 000c 1283          bcf     __rp0___byte, __rp0___bit
1969 000d 1303          bcf     __rp1___byte, __rp1___bit
1970 000e 1898          btfsc   _oerr___byte, _oerr___bit
1971                    ; line_number = 121
1972                    ; _cren := _false
1973                    ;info   121, 15
1974 000f 1218          bcf     _cren___byte, _cren___bit
1975                    ; Recombine size1 = 0 || size2 = 0
1976                    ; line_number = 120
1977                    ;  if _oerr done
1978                    ; line_number = 122
1979                    ; if _ferr start
1980                    ;info   122, 16
1981                    ; =>bit_code_emit@symbol(): sym=_ferr
1982                    ; 1TEST: Single test with code in skip slot
1983 0010 1918          btfsc   _ferr___byte, _ferr___bit
1984                    ; line_number = 123
1985                    ; _cren := _false
1986                    ;info   123, 17
1987 0011 1218          bcf     _cren___byte, _cren___bit
1988                    ; Recombine size1 = 0 || size2 = 0
1989                    ; line_number = 122
1990                    ; if _ferr done
1991                    ; line_number = 124
1992                    ; _cren := _true
1993                    ;info   124, 18
1994 0012 1618          bsf     _cren___byte, _cren___bit
1995            
1996                    ; # Receive the next byte:
1997                    ; line_number = 127
1998                    ;  rx9d := _false
1999                    ;info   127, 19
2000 0013 10ef          bcf     interrupt__rx9d___byte, interrupt__rx9d___bit
2001                    ; line_number = 128
2002                    ;  if _rx9d start
2003                    ;info   128, 20
2004                    ; =>bit_code_emit@symbol(): sym=_rx9d
2005                    ; 1TEST: Single test with code in skip slot
2006 0014 1818          btfsc   _rx9d___byte, _rx9d___bit
2007                    ; line_number = 129
2008                    ; rx9d := _true
2009                    ;info   129, 21
2010 0015 14ef          bsf     interrupt__rx9d___byte, interrupt__rx9d___bit
2011                    ; Recombine size1 = 0 || size2 = 0
2012                    ; line_number = 128
2013                    ;  if _rx9d done
2014                    ; line_number = 130
2015                    ; command := _rcreg
2016                    ;info   130, 22
2017 0016 081a          movf    _rcreg,w
2018 0017 00df          movwf   interrupt__command
2019                    ; line_number = 131
2020                    ;  _rcif := _false
2021                    ;info   131, 24
2022 0018 128c          bcf     _rcif___byte, _rcif___bit
2023                    ; line_number = 132
2024                    ;  _tx9d := _false
2025                    ;info   132, 25
2026 0019 1683          bsf     __rp0___byte, __rp0___bit
2027 001a 1018          bcf     _tx9d___byte, _tx9d___bit
2028            
2029                    ; # Deal with address select bit:
2030                    ; line_number = 135
2031                    ;  if echo_munch start
2032                    ;info   135, 27
2033                    ; =>bit_code_emit@symbol(): sym=echo_munch
2034                    ; No 1TEST: true.size=1 false.size=195
2035                    ; No 2TEST: true.size=1 false.size=195
2036                    ; 2GOTO: Single test with two GOTO's
2037 001b 1283          bcf     __rp0___byte, __rp0___bit
2038 001c 1c6f          btfss   echo_munch___byte, echo_munch___bit
2039 001d 2820          goto    interrupt__38
2040                    ; # We are munching an echo byte:
2041                    ; line_number = 137
2042                    ;  echo_munch := _false
2043                    ;info   137, 30
2044 001e 106f          bcf     echo_munch___byte, echo_munch___bit
2045                    ; Recombine code1_bit_states != code2_bit_states
2046 001f 28e3          goto    interrupt__39
2047                    ; 2GOTO: Starting code 2
2048   0020 :   interrupt__38:
2049                    ; line_number = 138
2050                    ;info   138, 32
2051                    ; =>bit_code_emit@symbol(): sym=interrupt__rx9d
2052                    ; No 1TEST: true.size=11 false.size=181
2053                    ; No 2TEST: true.size=11 false.size=181
2054                    ; 2GOTO: Single test with two GOTO's
2055 0020 1cef          btfss   interrupt__rx9d___byte, interrupt__rx9d___bit
2056 0021 282e          goto    interrupt__36
2057                    ; # We have an address byte:
2058                    ; line_number = 140
2059                    ;  if command = address start
2060                    ;info   140, 34
2061                    ; Left minus Right
2062 0022 085a          movf    address,w
2063 0023 025f          subwf   interrupt__command,w
2064                    ; =>bit_code_emit@symbol(): sym=__z
2065                    ; No 1TEST: true.size=5 false.size=1
2066                    ; No 2TEST: true.size=5 false.size=1
2067                    ; 2GOTO: Single test with two GOTO's
2068 0024 1d03          btfss   __z___byte, __z___bit
2069 0025 282c          goto    interrupt__34
2070                    ; # We are selected; receive all bytes:
2071                    ; line_number = 142
2072                    ;  state := 0
2073                    ;info   142, 38
2074 0026 01db          clrf    state
2075                    ; #_tx9d := _false
2076                    ; line_number = 144
2077                    ;  _txreg := 0xa5
2078                    ;info   144, 39
2079 0027 30a5          movlw   165
2080 0028 0099          movwf   _txreg
2081                    ; line_number = 145
2082                    ;  echo_munch := _true
2083                    ;info   145, 41
2084 0029 146f          bsf     echo_munch___byte, echo_munch___bit
2085                    ; line_number = 146
2086                    ;  _adden := _false
2087                    ;info   146, 42
2088 002a 1198          bcf     _adden___byte, _adden___bit
2089 002b 282d          goto    interrupt__35
2090                    ; 2GOTO: Starting code 2
2091   002c :   interrupt__34:
2092                    ; # We are not selected; only listen for address bytes:
2093                    ; line_number = 149
2094                    ;  _adden := _true
2095                    ;info   149, 44
2096 002c 1598          bsf     _adden___byte, _adden___bit
2097   002d :   interrupt__35:
2098                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2099                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2100                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2101                    ; line_number = 140
2102                    ;  if command = address done
2103 002d 28e3          goto    interrupt__37
2104                    ; 2GOTO: Starting code 2
2105   002e :   interrupt__36:
2106                    ; # We have a command/data byte:
2107                    ; #_txreg := 0x23
2108                    ; #echo_munch := _true
2109            
2110                    ; line_number = 155
2111                    ;  switch state start
2112                    ;info   155, 46
2113                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2114 002e 3000          movlw   interrupt__32>>8
2115 002f 008a          movwf   __pclath
2116 0030 085b          movf    state,w
2117                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2118 0031 3e33          addlw   interrupt__32
2119 0032 0082          movwf   __pcl
2120                    ; page_group 1
2121   0033 :   interrupt__32:
2122 0033 2834          goto    interrupt__31
2123                    ; line_number = 156
2124                    ; case 0
2125   0034 :   interrupt__31:
2126                    ; # Command byte:
2127                    ; line_number = 158
2128                    ;  switch command >> 6 start
2129                    ;info   158, 52
2130                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2131 0034 3000          movlw   interrupt__28>>8
2132 0035 008a          movwf   __pclath
2133 00000066 = interrupt__29 equ globals___0+70
2134 0036 0e5f          swapf   interrupt__command,w
2135 0037 00e6          movwf   interrupt__29
2136 0038 0ce6          rrf     interrupt__29,f
2137 0039 0c66          rrf     interrupt__29,w
2138 003a 3903          andlw   3
2139                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2140 003b 3e3d          addlw   interrupt__28
2141 003c 0082          movwf   __pcl
2142                    ; page_group 4
2143   003d :   interrupt__28:
2144 003d 2841          goto    interrupt__26
2145 003e 28e3          goto    interrupt__30
2146 003f 28e3          goto    interrupt__30
2147 0040 28b3          goto    interrupt__27
2148                    ; line_number = 159
2149                    ; case 0
2150   0041 :   interrupt__26:
2151                    ; # 00xx xxxx:
2152                    ; line_number = 161
2153                    ;  sonar_index := command & 7
2154                    ;info   161, 65
2155 0041 3007          movlw   7
2156 0042 055f          andwf   interrupt__command,w
2157 0043 00de          movwf   interrupt__sonar_index
2158                    ; line_number = 162
2159                    ;  if sonar_index >= sonars start
2160                    ;info   162, 68
2161 0044 3006          movlw   6
2162 0045 025e          subwf   interrupt__sonar_index,w
2163                    ; =>bit_code_emit@symbol(): sym=__c
2164                    ; 1TEST: Single test with code in skip slot
2165 0046 1803          btfsc   __c___byte, __c___bit
2166                    ; line_number = 163
2167                    ; sonar_index := 0
2168                    ;info   163, 71
2169 0047 01de          clrf    interrupt__sonar_index
2170                    ; Recombine size1 = 0 || size2 = 0
2171                    ; line_number = 162
2172                    ;  if sonar_index >= sonars done
2173                    ; line_number = 164
2174                    ; switch (command >> 3) & 7 start
2175                    ;info   164, 72
2176                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
2177                    ; line_number = 165
2178                    ; case_maximum 7
2179 0048 3000          movlw   interrupt__13>>8
2180 0049 008a          movwf   __pclath
2181 00000066 = interrupt__14 equ globals___0+70
2182 004a 0c5f          rrf     interrupt__command,w
2183 004b 00e6          movwf   interrupt__14
2184 004c 0ce6          rrf     interrupt__14,f
2185 004d 0c66          rrf     interrupt__14,w
2186 004e 3907          andlw   7
2187                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2188 004f 3e51          addlw   interrupt__13
2189 0050 0082          movwf   __pcl
2190                    ; page_group 8
2191   0051 :   interrupt__13:
2192 0051 2859          goto    interrupt__8
2193 0052 2861          goto    interrupt__9
2194 0053 2869          goto    interrupt__10
2195 0054 2871          goto    interrupt__11
2196 0055 2879          goto    interrupt__12
2197 0056 28b2          goto    interrupt__15
2198 0057 28b2          goto    interrupt__15
2199 0058 28b2          goto    interrupt__15
2200                    ; line_number = 166
2201                    ; case 0
2202   0059 :   interrupt__8:
2203                    ; # 0000 0sss (Raw High Get):
2204                    ; line_number = 168
2205                    ;  _txreg := raw_highs[sonar_index]
2206                    ;info   168, 89
2207 0059 085e          movf    interrupt__sonar_index,w
2208 005a 3e3e          addlw   raw_highs
2209 005b 0084          movwf   __fsr
2210 005c 1383          bcf     __irp___byte, __irp___bit
2211 005d 0800          movf    __indf,w
2212 005e 0099          movwf   _txreg
2213                    ; line_number = 169
2214                    ;  echo_munch := _true
2215                    ;info   169, 95
2216 005f 146f          bsf     echo_munch___byte, echo_munch___bit
2217 0060 28b2          goto    interrupt__15
2218                    ; line_number = 170
2219                    ; case 1
2220   0061 :   interrupt__9:
2221                    ; # 0000 1sss (Raw Low Get):
2222                    ; line_number = 172
2223                    ;  _txreg := raw_lows[sonar_index]
2224                    ;info   172, 97
2225 0061 085e          movf    interrupt__sonar_index,w
2226 0062 3e44          addlw   raw_lows
2227 0063 0084          movwf   __fsr
2228 0064 1383          bcf     __irp___byte, __irp___bit
2229 0065 0800          movf    __indf,w
2230 0066 0099          movwf   _txreg
2231                    ; line_number = 173
2232                    ;  echo_munch := _true
2233                    ;info   173, 103
2234 0067 146f          bsf     echo_munch___byte, echo_munch___bit
2235 0068 28b2          goto    interrupt__15
2236                    ; line_number = 174
2237                    ; case 2
2238   0069 :   interrupt__10:
2239                    ; # 0001 0sss (Distance High Get):
2240                    ; line_number = 176
2241                    ;  _txreg := unit_highs[sonar_index]
2242                    ;info   176, 105
2243 0069 085e          movf    interrupt__sonar_index,w
2244 006a 3e4a          addlw   unit_highs
2245 006b 0084          movwf   __fsr
2246 006c 1383          bcf     __irp___byte, __irp___bit
2247 006d 0800          movf    __indf,w
2248 006e 0099          movwf   _txreg
2249                    ; line_number = 177
2250                    ;  echo_munch := _true
2251                    ;info   177, 111
2252 006f 146f          bsf     echo_munch___byte, echo_munch___bit
2253 0070 28b2          goto    interrupt__15
2254                    ; line_number = 178
2255                    ; case 3
2256   0071 :   interrupt__11:
2257                    ; # 0001 1sss (Distance Low Get):
2258                    ; line_number = 180
2259                    ;  _txreg := unit_lows[sonar_index]
2260                    ;info   180, 113
2261 0071 085e          movf    interrupt__sonar_index,w
2262 0072 3e50          addlw   unit_lows
2263 0073 0084          movwf   __fsr
2264 0074 1383          bcf     __irp___byte, __irp___bit
2265 0075 0800          movf    __indf,w
2266 0076 0099          movwf   _txreg
2267                    ; line_number = 181
2268                    ;  echo_munch := _true
2269                    ;info   181, 119
2270 0077 146f          bsf     echo_munch___byte, echo_munch___bit
2271 0078 28b2          goto    interrupt__15
2272                    ; line_number = 182
2273                    ; case 4
2274   0079 :   interrupt__12:
2275                    ; # 0010 0xxx:
2276                    ; line_number = 184
2277                    ;  switch command & 7 start
2278                    ;info   184, 121
2279                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2280                    ; line_number = 185
2281                    ; case_maximum 7
2282 0079 3000          movlw   interrupt__6>>8
2283 007a 008a          movwf   __pclath
2284 007b 3007          movlw   7
2285 007c 055f          andwf   interrupt__command,w
2286                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2287 007d 3e7f          addlw   interrupt__6
2288 007e 0082          movwf   __pcl
2289                    ; page_group 8
2290   007f :   interrupt__6:
2291 007f 2887          goto    interrupt__1
2292 0080 2891          goto    interrupt__2
2293 0081 289b          goto    interrupt__3
2294 0082 28a5          goto    interrupt__4
2295 0083 28af          goto    interrupt__5
2296 0084 28b2          goto    interrupt__7
2297 0085 28b2          goto    interrupt__7
2298 0086 28b2          goto    interrupt__7
2299                    ; line_number = 186
2300                    ; case 0
2301   0087 :   interrupt__1:
2302 0087 158a          bsf     __cb0___byte, __cb0___bit
2303                    ; line_number = 187
2304                    ; _txreg := _signed16_byte_high(speed_divisor)
2305                    ;info   187, 136
2306 0088 302b          movlw   speed_divisor>>1
2307 0089 2000          call    _signed16_pointer_load
2308 008a 301d          movlw   _signed16_byte_high__number>>1
2309 008b 208b          call    _signed16_pointer_store
2310 008c 20c7          call    _signed16_byte_high
2311 008d 0099          movwf   _txreg
2312                    ; line_number = 188
2313                    ;  echo_munch := _true
2314                    ;info   188, 142
2315 008e 146f          bsf     echo_munch___byte, echo_munch___bit
2316 008f 118a          bcf     __cb0___byte, __cb0___bit
2317 0090 28b2          goto    interrupt__7
2318                    ; line_number = 189
2319                    ; case 1
2320   0091 :   interrupt__2:
2321 0091 158a          bsf     __cb0___byte, __cb0___bit
2322                    ; line_number = 190
2323                    ; _txreg := _signed16_byte_low(speed_divisor)
2324                    ;info   190, 146
2325 0092 302b          movlw   speed_divisor>>1
2326 0093 2000          call    _signed16_pointer_load
2327 0094 301e          movlw   _signed16_byte_low__number>>1
2328 0095 208b          call    _signed16_pointer_store
2329 0096 20cb          call    _signed16_byte_low
2330 0097 0099          movwf   _txreg
2331                    ; line_number = 191
2332                    ;  echo_munch := _true
2333                    ;info   191, 152
2334 0098 146f          bsf     echo_munch___byte, echo_munch___bit
2335 0099 118a          bcf     __cb0___byte, __cb0___bit
2336 009a 28b2          goto    interrupt__7
2337                    ; line_number = 192
2338                    ; case 2
2339   009b :   interrupt__3:
2340 009b 158a          bsf     __cb0___byte, __cb0___bit
2341                    ; line_number = 193
2342                    ; _txreg := _signed16_byte_high(distance)
2343                    ;info   193, 156
2344 009c 302c          movlw   distance>>1
2345 009d 2000          call    _signed16_pointer_load
2346 009e 301d          movlw   _signed16_byte_high__number>>1
2347 009f 208b          call    _signed16_pointer_store
2348 00a0 20c7          call    _signed16_byte_high
2349 00a1 0099          movwf   _txreg
2350                    ; line_number = 194
2351                    ;  echo_munch := _true
2352                    ;info   194, 162
2353 00a2 146f          bsf     echo_munch___byte, echo_munch___bit
2354 00a3 118a          bcf     __cb0___byte, __cb0___bit
2355 00a4 28b2          goto    interrupt__7
2356                    ; line_number = 195
2357                    ; case 3
2358   00a5 :   interrupt__4:
2359 00a5 158a          bsf     __cb0___byte, __cb0___bit
2360                    ; line_number = 196
2361                    ; _txreg := _signed16_byte_low(distance)
2362                    ;info   196, 166
2363 00a6 302c          movlw   distance>>1
2364 00a7 2000          call    _signed16_pointer_load
2365 00a8 301e          movlw   _signed16_byte_low__number>>1
2366 00a9 208b          call    _signed16_pointer_store
2367 00aa 20cb          call    _signed16_byte_low
2368 00ab 0099          movwf   _txreg
2369                    ; line_number = 197
2370                    ;  echo_munch := _true
2371                    ;info   197, 172
2372 00ac 146f          bsf     echo_munch___byte, echo_munch___bit
2373 00ad 118a          bcf     __cb0___byte, __cb0___bit
2374 00ae 28b2          goto    interrupt__7
2375                    ; line_number = 198
2376                    ; case 4
2377   00af :   interrupt__5:
2378                    ; line_number = 199
2379                    ; _txreg := 0x12
2380                    ;info   199, 175
2381 00af 3012          movlw   18
2382 00b0 0099          movwf   _txreg
2383                    ; line_number = 200
2384                    ;  echo_munch := _true
2385                    ;info   200, 177
2386 00b1 146f          bsf     echo_munch___byte, echo_munch___bit
2387   00b2 :   interrupt__7:
2388                    ; line_number = 184
2389                    ;  switch command & 7 done
2390   00b2 :   interrupt__15:
2391                    ; line_number = 164
2392                    ; switch (command >> 3) & 7 done
2393 00b2 28e3          goto    interrupt__30
2394                    ; line_number = 201
2395                    ; case 3
2396   00b3 :   interrupt__27:
2397                    ; # 11xx xxxx:
2398                    ; line_number = 203
2399                    ;  switch (command >> 3) & 7 start
2400                    ;info   203, 179
2401                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2402 00b3 3000          movlw   interrupt__23>>8
2403 00b4 008a          movwf   __pclath
2404 00000066 = interrupt__24 equ globals___0+70
2405 00b5 0c5f          rrf     interrupt__command,w
2406 00b6 00e6          movwf   interrupt__24
2407 00b7 0ce6          rrf     interrupt__24,f
2408 00b8 0c66          rrf     interrupt__24,w
2409 00b9 3907          andlw   7
2410                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2411 00ba 3ebc          addlw   interrupt__23
2412 00bb 0082          movwf   __pcl
2413                    ; page_group 8
2414   00bc :   interrupt__23:
2415 00bc 28e3          goto    interrupt__25
2416 00bd 28e3          goto    interrupt__25
2417 00be 28e3          goto    interrupt__25
2418 00bf 28e3          goto    interrupt__25
2419 00c0 28e3          goto    interrupt__25
2420 00c1 28e3          goto    interrupt__25
2421 00c2 28e3          goto    interrupt__25
2422 00c3 28c4          goto    interrupt__22
2423                    ; line_number = 204
2424                    ; case 7
2425   00c4 :   interrupt__22:
2426                    ; line_number = 205
2427                    ; switch command & 7 start
2428                    ;info   205, 196
2429                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2430 00c4 3000          movlw   interrupt__20>>8
2431 00c5 008a          movwf   __pclath
2432 00c6 3007          movlw   7
2433 00c7 055f          andwf   interrupt__command,w
2434                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2435 00c8 3eca          addlw   interrupt__20
2436 00c9 0082          movwf   __pcl
2437                    ; page_group 8
2438   00ca :   interrupt__20:
2439 00ca 28e3          goto    interrupt__21
2440 00cb 28e3          goto    interrupt__21
2441 00cc 28e3          goto    interrupt__21
2442 00cd 28e3          goto    interrupt__21
2443 00ce 28d2          goto    interrupt__16
2444 00cf 28d3          goto    interrupt__17
2445 00d0 28dd          goto    interrupt__18
2446 00d1 28e2          goto    interrupt__19
2447                    ; line_number = 206
2448                    ; case 4
2449   00d2 :   interrupt__16:
2450                    ; # 1111 1100 (Address Set)
2451                    ; line_number = 208
2452                    ;  do_nothing
2453                    ;info   208, 210
2454 00d2 28e3          goto    interrupt__21
2455                    ; line_number = 209
2456                    ; case 5
2457   00d3 :   interrupt__17:
2458                    ; # 1111 1101 (Id_Next):
2459                    ; line_number = 211
2460                    ;  _txreg := id[id_index]
2461                    ;info   211, 211
2462 00d3 085c          movf    id_index,w
2463 00d4 2201          call    id
2464 00d5 0099          movwf   _txreg
2465                    ; line_number = 212
2466                    ;  echo_munch := _true
2467                    ;info   212, 214
2468 00d6 146f          bsf     echo_munch___byte, echo_munch___bit
2469                    ; line_number = 213
2470                    ;  id_index := id_index + 1
2471                    ;info   213, 215
2472 00d7 0adc          incf    id_index,f
2473                    ; line_number = 214
2474                    ;  if id_index >= id.size start
2475                    ;info   214, 216
2476 00d8 3016          movlw   22
2477 00d9 025c          subwf   id_index,w
2478                    ; =>bit_code_emit@symbol(): sym=__c
2479                    ; 1TEST: Single test with code in skip slot
2480 00da 1803          btfsc   __c___byte, __c___bit
2481                    ; line_number = 215
2482                    ; id_index := id_index - 1
2483                    ;info   215, 219
2484 00db 03dc          decf    id_index,f
2485                    ; Recombine size1 = 0 || size2 = 0
2486                    ; line_number = 214
2487                    ;  if id_index >= id.size done
2488 00dc 28e3          goto    interrupt__21
2489                    ; line_number = 216
2490                    ; case 6
2491   00dd :   interrupt__18:
2492                    ; # 1111 1110 (Id_Start):
2493                    ; line_number = 218
2494                    ;  id_index := 0
2495                    ;info   218, 221
2496 00dd 01dc          clrf    id_index
2497                    ; line_number = 219
2498                    ;  _txreg := id.size
2499                    ;info   219, 222
2500 00de 3016          movlw   22
2501 00df 0099          movwf   _txreg
2502                    ; line_number = 220
2503                    ;  echo_munch := _true
2504                    ;info   220, 224
2505 00e0 146f          bsf     echo_munch___byte, echo_munch___bit
2506 00e1 28e3          goto    interrupt__21
2507                    ; line_number = 221
2508                    ; case 7
2509   00e2 :   interrupt__19:
2510                    ; # 1111 1111 (Deselect):
2511                    ; line_number = 223
2512                    ;  _adden := _true
2513                    ;info   223, 226
2514 00e2 1598          bsf     _adden___byte, _adden___bit
2515            
2516   00e3 :   interrupt__21:
2517                    ; line_number = 205
2518                    ; switch command & 7 done
2519   00e3 :   interrupt__25:
2520                    ; line_number = 203
2521                    ;  switch (command >> 3) & 7 done
2522   00e3 :   interrupt__30:
2523                    ; line_number = 158
2524                    ;  switch command >> 6 done
2525   00e3 :   interrupt__33:
2526                    ; line_number = 155
2527                    ;  switch state done
2528   00e3 :   interrupt__37:
2529                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2530                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2531                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2532   00e3 :   interrupt__39:
2533                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
2534                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
2535                    ; 2GOTO: code final bitstates:(data:??=uu=>00 code:X0=cu=>X0)
2536                    ; line_number = 135
2537                    ;  if echo_munch done
2538                    ; # Restore {_pclath} and {_fsr}:
2539                    ; line_number = 226
2540                    ;  _pclath := pclath_save
2541                    ;info   226, 227
2542 00e3 0871          movf    pclath_save,w
2543 00e4 008a          movwf   _pclath
2544                    ; line_number = 227
2545                    ;  _fsr := fsr_save
2546                    ;info   227, 229
2547 00e5 0870          movf    fsr_save,w
2548 00e6 0084          movwf   _fsr
2549            
2550            
2551                    ; delay after procedure statements=non-uniform
2552                    ; Interrupt return
2553                    ; Carefully restore __w and __tatus from RAM
2554                    ; Restore swapped status into W
2555 00e7 0e72          swapf   interrupt___status_save,w
2556                    ; W now contains (unswapped) status
2557                    ; Restore W to __status
2558 00e8 0083          movwf   __status
2559                    ; From here on out, do not modify __status
2560                    ; Swap saved W register in RAM
2561 00e9 0ef3          swapf   interrupt___w_save,f
2562                    ; Unswap the saved W reg and restore to W
2563 00ea 0e73          swapf   interrupt___w_save,w
2564                    ; __w and __status are now restored
2565                    ; Return from interrupt
2566 00eb 0009          retfie  
2567            
2568            
2569            
2570            
2571                    ; line_number = 230
2572                    ;info   230, 236
2573                    ; procedure main
2574   00ec :   main:
2575                    ; Initialize some registers
2576 00ec 019f          clrf    _adcon0
2577 00ed 1683          bsf     __rp0___byte, __rp0___bit
2578 00ee 019b          clrf    _ansel
2579 00ef 3007          movlw   7
2580 00f0 009c          movwf   _cmcon
2581 00f1 30fe          movlw   254
2582 00f2 0085          movwf   _trisa
2583 00f3 30ff          movlw   255
2584 00f4 0086          movwf   _trisb
2585                    ; arguments_none
2586                    ; line_number = 232
2587                    ;  returns_nothing
2588            
2589                    ; # Main procedure and loop:
2590            
2591                    ; line_number = 236
2592                    ;  local sonar_index byte
2593 00000060 = main__sonar_index equ globals___0+64
2594                    ; line_number = 237
2595                    ;  local raw_high byte
2596 00000061 = main__raw_high equ globals___0+65
2597                    ; line_number = 238
2598                    ;  local raw_low byte
2599 00000062 = main__raw_low equ globals___0+66
2600                    ; line_number = 239
2601                    ;  local started bit
2602 0000006f = main__started___byte equ globals___0+79
2603 00000002 = main__started___bit equ 2
2604                    ; line_number = 240
2605                    ;  local count byte
2606 00000063 = main__count equ globals___0+67
2607                    ; line_number = 241
2608                    ;  local period signed16
2609 00000064 = main__period equ globals___0+68
2610            
2611                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:X0=cu=>X0)
2612                    ; line_number = 243
2613                    ;  call reset()
2614                    ;info   243, 245
2615 00f5 1283          bcf     __rp0___byte, __rp0___bit
2616 00f6 21da          call    reset
2617            
2618                    ; line_number = 245
2619                    ;  sonar_index := 0
2620                    ;info   245, 247
2621 00f7 01e0          clrf    main__sonar_index
2622                    ; # Churn over the sonars:
2623                    ; line_number = 247
2624                    ;  loop_forever start
2625   00f8 :   main__1:
2626                    ; line_number = 248
2627                    ; sonar_index := sonar_index + 1
2628                    ;info   248, 248
2629 00f8 0ae0          incf    main__sonar_index,f
2630                    ; line_number = 249
2631                    ;  if sonar_index >= sonars start
2632                    ;info   249, 249
2633 00f9 3006          movlw   6
2634 00fa 0260          subwf   main__sonar_index,w
2635                    ; =>bit_code_emit@symbol(): sym=__c
2636                    ; 1TEST: Single test with code in skip slot
2637 00fb 1803          btfsc   __c___byte, __c___bit
2638                    ; line_number = 250
2639                    ; sonar_index := 0
2640                    ;info   250, 252
2641 00fc 01e0          clrf    main__sonar_index
2642            
2643                    ; Recombine size1 = 0 || size2 = 0
2644                    ; line_number = 249
2645                    ;  if sonar_index >= sonars done
2646                    ; line_number = 252
2647                    ; raw_high := 0x7f
2648                    ;info   252, 253
2649 00fd 307f          movlw   127
2650 00fe 00e1          movwf   main__raw_high
2651                    ; line_number = 253
2652                    ;  raw_low := 0xff
2653                    ;info   253, 255
2654 00ff 30ff          movlw   255
2655 0100 00e2          movwf   main__raw_low
2656            
2657                    ; line_number = 255
2658                    ;  if _true start
2659                    ;info   255, 257
2660                    ; line_number = 256
2661                    ; switch sonar_index start
2662                    ;info   256, 257
2663                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2664 0101 3001          movlw   main__8>>8
2665 0102 008a          movwf   __pclath
2666 0103 0860          movf    main__sonar_index,w
2667                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2668                    ; All case bodies prefer this bit set
2669 0104 1683          bsf     __rp0___byte, __rp0___bit
2670 0105 3e07          addlw   main__8
2671 0106 0082          movwf   __pcl
2672                    ; page_group 6
2673   0107 :   main__8:
2674 0107 290d          goto    main__2
2675 0108 2911          goto    main__3
2676 0109 2915          goto    main__4
2677 010a 2919          goto    main__5
2678 010b 291d          goto    main__6
2679 010c 2921          goto    main__7
2680                    ; line_number = 257
2681                    ; case 0
2682   010d :   main__2:
2683                    ; line_number = 258
2684                    ; tris0 := _false
2685                    ;info   258, 269
2686 010d 1205          bcf     tris0___byte, tris0___bit
2687                    ; line_number = 259
2688                    ;  trigger0 := _true
2689                    ;info   259, 270
2690 010e 1283          bcf     __rp0___byte, __rp0___bit
2691 010f 1605          bsf     trigger0___byte, trigger0___bit
2692 0110 2924          goto    main__9
2693                    ; line_number = 260
2694                    ; case 1
2695   0111 :   main__3:
2696                    ; line_number = 261
2697                    ; tris1 := _false
2698                    ;info   261, 273
2699 0111 1185          bcf     tris1___byte, tris1___bit
2700                    ; line_number = 262
2701                    ;  trigger1 := _true
2702                    ;info   262, 274
2703 0112 1283          bcf     __rp0___byte, __rp0___bit
2704 0113 1585          bsf     trigger1___byte, trigger1___bit
2705 0114 2924          goto    main__9
2706                    ; line_number = 263
2707                    ; case 2
2708   0115 :   main__4:
2709                    ; line_number = 264
2710                    ; tris2 := _false
2711                    ;info   264, 277
2712 0115 1005          bcf     tris2___byte, tris2___bit
2713                    ; line_number = 265
2714                    ;  trigger2 := _true
2715                    ;info   265, 278
2716 0116 1283          bcf     __rp0___byte, __rp0___bit
2717 0117 1405          bsf     trigger2___byte, trigger2___bit
2718 0118 2924          goto    main__9
2719                    ; line_number = 266
2720                    ; case 3
2721   0119 :   main__5:
2722                    ; line_number = 267
2723                    ; tris3 := _false
2724                    ;info   267, 281
2725 0119 1306          bcf     tris3___byte, tris3___bit
2726                    ; line_number = 268
2727                    ;  trigger3 := _true
2728                    ;info   268, 282
2729 011a 1283          bcf     __rp0___byte, __rp0___bit
2730 011b 1706          bsf     trigger3___byte, trigger3___bit
2731 011c 2924          goto    main__9
2732                    ; line_number = 269
2733                    ; case 4
2734   011d :   main__6:
2735                    ; line_number = 270
2736                    ; tris4 := _false
2737                    ;info   270, 285
2738 011d 1006          bcf     tris4___byte, tris4___bit
2739                    ; line_number = 271
2740                    ;  trigger4 := _true
2741                    ;info   271, 286
2742 011e 1283          bcf     __rp0___byte, __rp0___bit
2743 011f 1406          bsf     trigger4___byte, trigger4___bit
2744 0120 2924          goto    main__9
2745                    ; line_number = 272
2746                    ; case 5
2747   0121 :   main__7:
2748                    ; line_number = 273
2749                    ; tris5 := _false
2750                    ;info   273, 289
2751 0121 1186          bcf     tris5___byte, tris5___bit
2752                    ; line_number = 274
2753                    ;  trigger5 := _true
2754                    ;info   274, 290
2755 0122 1283          bcf     __rp0___byte, __rp0___bit
2756 0123 1586          bsf     trigger5___byte, trigger5___bit
2757            
2758   0124 :   main__9:
2759                    ; line_number = 256
2760                    ; switch sonar_index done
2761                    ; # Trigger the sonar for at least 5 microseconds:
2762                    ; line_number = 277
2763                    ;  delay 5 * microsecond start
2764                    ;info   277, 292
2765                    ; Delay expression evaluates to 25
2766                    ; line_number = 278
2767                    ; do_nothing
2768                    ;info   278, 292
2769            
2770                    ; Delay 25 cycles
2771                    ; Delay loop takes 6 * 4 = 24 cycles
2772 0124 3006          movlw   6
2773   0125 :   main__10:
2774 0125 3eff          addlw   255
2775 0126 1d03          btfss   __z___byte, __z___bit
2776 0127 2925          goto    main__10
2777 0128 0000          nop     
2778                    ; line_number = 277
2779                    ;  delay 5 * microsecond done
2780                    ; # Get the trigger pulse turned off:
2781                    ; line_number = 281
2782                    ;  trigger0 := _false
2783                    ;info   281, 297
2784 0129 1205          bcf     trigger0___byte, trigger0___bit
2785                    ; line_number = 282
2786                    ;  trigger1 := _false
2787                    ;info   282, 298
2788 012a 1185          bcf     trigger1___byte, trigger1___bit
2789                    ; line_number = 283
2790                    ;  trigger2 := _false
2791                    ;info   283, 299
2792 012b 1005          bcf     trigger2___byte, trigger2___bit
2793                    ; line_number = 284
2794                    ;  trigger3 := _false
2795                    ;info   284, 300
2796 012c 1306          bcf     trigger3___byte, trigger3___bit
2797                    ; line_number = 285
2798                    ;  trigger4 := _false
2799                    ;info   285, 301
2800 012d 1006          bcf     trigger4___byte, trigger4___bit
2801                    ; line_number = 286
2802                    ;  trigger5 := _false
2803                    ;info   286, 302
2804 012e 1186          bcf     trigger5___byte, trigger5___bit
2805            
2806                    ; # Make for sure all triggers are turned off:
2807                    ; line_number = 289
2808                    ;  tris0 := _true
2809                    ;info   289, 303
2810 012f 1683          bsf     __rp0___byte, __rp0___bit
2811 0130 1605          bsf     tris0___byte, tris0___bit
2812                    ; line_number = 290
2813                    ;  tris1 := _true
2814                    ;info   290, 305
2815 0131 1585          bsf     tris1___byte, tris1___bit
2816                    ; line_number = 291
2817                    ;  tris2 := _true
2818                    ;info   291, 306
2819 0132 1405          bsf     tris2___byte, tris2___bit
2820                    ; line_number = 292
2821                    ;  tris3 := _true
2822                    ;info   292, 307
2823 0133 1706          bsf     tris3___byte, tris3___bit
2824                    ; line_number = 293
2825                    ;  tris4 := _true
2826                    ;info   293, 308
2827 0134 1406          bsf     tris4___byte, tris4___bit
2828                    ; line_number = 294
2829                    ;  tris5 := _true
2830                    ;info   294, 309
2831 0135 1586          bsf     tris5___byte, tris5___bit
2832            
2833                    ; # Get the timer ready to run:
2834                    ; line_number = 297
2835                    ;  _t1con := 0
2836                    ;info   297, 310
2837 0136 1283          bcf     __rp0___byte, __rp0___bit
2838 0137 0190          clrf    _t1con
2839                    ; line_number = 298
2840                    ;  _tmr1l := 0
2841                    ;info   298, 312
2842 0138 018e          clrf    _tmr1l
2843                    ; line_number = 299
2844                    ;  _tmr1h := 0
2845                    ;info   299, 313
2846 0139 018f          clrf    _tmr1h
2847            
2848                    ; # Wait for pulse to start:
2849                    ; line_number = 302
2850                    ;  started := _false
2851                    ;info   302, 314
2852 013a 116f          bcf     main__started___byte, main__started___bit
2853                    ; line_number = 303
2854                    ;  count := 0
2855                    ;info   303, 315
2856 013b 01e3          clrf    main__count
2857                    ; line_number = 304
2858                    ;  while count < 100 && !started start
2859   013c :   main__11:
2860                    ;info   304, 316
2861 013c 3064          movlw   100
2862 013d 0263          subwf   main__count,w
2863                    ; =>bit_code_emit@symbol(): sym=__c
2864                    ; No 1TEST: true.size=1 false.size=38
2865                    ; No 2TEST: true.size=1 false.size=38
2866                    ; 2GOTO: Single test with two GOTO's
2867 013e 1803          btfsc   __c___byte, __c___bit
2868 013f 2966          goto    main__21
2869                    ; Recombine code1_bit_states != code2_bit_states
2870                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2871                    ; =>bit_code_emit@symbol(): sym=main__started
2872                    ; No 1TEST: true.size=0 false.size=36
2873                    ; No 2TEST: true.size=0 false.size=36
2874                    ; 1GOTO: Single test with GOTO
2875 0140 196f          btfsc   main__started___byte, main__started___bit
2876 0141 2966          goto    main__22
2877                    ; line_number = 305
2878                    ; started := _false
2879                    ;info   305, 322
2880 0142 116f          bcf     main__started___byte, main__started___bit
2881                    ; line_number = 306
2882                    ;  switch sonar_index start
2883                    ;info   306, 323
2884                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
2885 0143 3001          movlw   main__18>>8
2886 0144 008a          movwf   __pclath
2887 0145 0860          movf    main__sonar_index,w
2888                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2889 0146 3e48          addlw   main__18
2890 0147 0082          movwf   __pcl
2891                    ; page_group 6
2892   0148 :   main__18:
2893 0148 294e          goto    main__12
2894 0149 2951          goto    main__13
2895 014a 2954          goto    main__14
2896 014b 2957          goto    main__15
2897 014c 295a          goto    main__16
2898 014d 295d          goto    main__17
2899                    ; line_number = 307
2900                    ; case 0
2901   014e :   main__12:
2902                    ; line_number = 308
2903                    ; if signal0 start
2904                    ;info   308, 334
2905                    ; =>bit_code_emit@symbol(): sym=signal0
2906                    ; 1TEST: Single test with code in skip slot
2907 014e 1905          btfsc   signal0___byte, signal0___bit
2908                    ; line_number = 309
2909                    ; started := _true
2910                    ;info   309, 335
2911 014f 156f          bsf     main__started___byte, main__started___bit
2912                    ; Recombine size1 = 0 || size2 = 0
2913                    ; line_number = 308
2914                    ; if signal0 done
2915 0150 295f          goto    main__19
2916                    ; line_number = 310
2917                    ; case 1
2918   0151 :   main__13:
2919                    ; line_number = 311
2920                    ; if signal1 start
2921                    ;info   311, 337
2922                    ; =>bit_code_emit@symbol(): sym=signal1
2923                    ; 1TEST: Single test with code in skip slot
2924 0151 1a85          btfsc   signal1___byte, signal1___bit
2925                    ; line_number = 312
2926                    ; started := _true
2927                    ;info   312, 338
2928 0152 156f          bsf     main__started___byte, main__started___bit
2929                    ; Recombine size1 = 0 || size2 = 0
2930                    ; line_number = 311
2931                    ; if signal1 done
2932 0153 295f          goto    main__19
2933                    ; line_number = 313
2934                    ; case 2
2935   0154 :   main__14:
2936                    ; line_number = 314
2937                    ; if signal2 start
2938                    ;info   314, 340
2939                    ; =>bit_code_emit@symbol(): sym=signal2
2940                    ; 1TEST: Single test with code in skip slot
2941 0154 1885          btfsc   signal2___byte, signal2___bit
2942                    ; line_number = 315
2943                    ; started := _true
2944                    ;info   315, 341
2945 0155 156f          bsf     main__started___byte, main__started___bit
2946                    ; Recombine size1 = 0 || size2 = 0
2947                    ; line_number = 314
2948                    ; if signal2 done
2949 0156 295f          goto    main__19
2950                    ; line_number = 316
2951                    ; case 3
2952   0157 :   main__15:
2953                    ; line_number = 317
2954                    ; if signal3 start
2955                    ;info   317, 343
2956                    ; =>bit_code_emit@symbol(): sym=signal3
2957                    ; 1TEST: Single test with code in skip slot
2958 0157 1b06          btfsc   signal3___byte, signal3___bit
2959                    ; line_number = 318
2960                    ; started := _true
2961                    ;info   318, 344
2962 0158 156f          bsf     main__started___byte, main__started___bit
2963                    ; Recombine size1 = 0 || size2 = 0
2964                    ; line_number = 317
2965                    ; if signal3 done
2966 0159 295f          goto    main__19
2967                    ; line_number = 319
2968                    ; case 4
2969   015a :   main__16:
2970                    ; line_number = 320
2971                    ; if signal4 start
2972                    ;info   320, 346
2973                    ; =>bit_code_emit@symbol(): sym=signal4
2974                    ; 1TEST: Single test with code in skip slot
2975 015a 1886          btfsc   signal4___byte, signal4___bit
2976                    ; line_number = 321
2977                    ; started := _true
2978                    ;info   321, 347
2979 015b 156f          bsf     main__started___byte, main__started___bit
2980                    ; Recombine size1 = 0 || size2 = 0
2981                    ; line_number = 320
2982                    ; if signal4 done
2983 015c 295f          goto    main__19
2984                    ; line_number = 322
2985                    ; case 5
2986   015d :   main__17:
2987                    ; line_number = 323
2988                    ; if signal5 start
2989                    ;info   323, 349
2990                    ; =>bit_code_emit@symbol(): sym=signal5
2991                    ; 1TEST: Single test with code in skip slot
2992 015d 1a06          btfsc   signal5___byte, signal5___bit
2993                    ; line_number = 324
2994                    ; started := _true
2995                    ;info   324, 350
2996 015e 156f          bsf     main__started___byte, main__started___bit
2997                    ; Recombine size1 = 0 || size2 = 0
2998                    ; line_number = 323
2999                    ; if signal5 done
3000   015f :   main__19:
3001                    ; line_number = 306
3002                    ;  switch sonar_index done
3003                    ; line_number = 325
3004                    ; count := count + 1
3005                    ;info   325, 351
3006 015f 0ae3          incf    main__count,f
3007            
3008                    ; line_number = 327
3009                    ;  delay 9 * microsecond start
3010                    ;info   327, 352
3011                    ; Delay expression evaluates to 45
3012                    ; line_number = 328
3013                    ; do_nothing
3014                    ;info   328, 352
3015            
3016                    ; Delay 45 cycles
3017                    ; Delay loop takes 11 * 4 = 44 cycles
3018 0160 300b          movlw   11
3019   0161 :   main__20:
3020 0161 3eff          addlw   255
3021 0162 1d03          btfss   __z___byte, __z___bit
3022 0163 2961          goto    main__20
3023 0164 0000          nop     
3024                    ; line_number = 327
3025                    ;  delay 9 * microsecond done
3026 0165 293c          goto    main__11
3027   0166 :   main__22:
3028   0166 :   main__21:
3029                    ; Recombine code1_bit_states != code2_bit_states
3030                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3031                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
3032                    ; 2GOTO: No goto needed; true=main__21 false= true_size=1 false_size=38
3033                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3034                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
3035                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3036                    ; line_number = 304
3037                    ;  while count < 100 && !started done
3038                    ; line_number = 330
3039                    ; if started start
3040                    ;info   330, 358
3041                    ; =>bit_code_emit@symbol(): sym=main__started
3042                    ; No 1TEST: true.size=56 false.size=0
3043                    ; No 2TEST: true.size=56 false.size=0
3044                    ; 1GOTO: Single test with GOTO
3045 0166 1d6f          btfss   main__started___byte, main__started___bit
3046 0167 29a0          goto    main__39
3047                    ; # Pulse has started; Get TRM1 started:
3048                    ; line_number = 332
3049                    ;  _tmr1on := _true
3050                    ;info   332, 360
3051 0168 1410          bsf     _tmr1on___byte, _tmr1on___bit
3052                    ; line_number = 333
3053                    ;  _tmr1if := _false
3054                    ;info   333, 361
3055 0169 100c          bcf     _tmr1if___byte, _tmr1if___bit
3056            
3057                    ; # Wait for pulse to end:
3058                    ; line_number = 336
3059                    ;  switch sonar_index start
3060                    ;info   336, 362
3061                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=2
3062 016a 3001          movlw   main__35>>8
3063 016b 008a          movwf   __pclath
3064 016c 0860          movf    main__sonar_index,w
3065                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
3066 016d 3e6f          addlw   main__35
3067 016e 0082          movwf   __pcl
3068                    ; page_group 6
3069   016f :   main__35:
3070 016f 2975          goto    main__29
3071 0170 2978          goto    main__30
3072 0171 297b          goto    main__31
3073 0172 297e          goto    main__32
3074 0173 2981          goto    main__33
3075 0174 2984          goto    main__34
3076                    ; line_number = 337
3077                    ; case 0
3078   0175 :   main__29:
3079                    ; line_number = 338
3080                    ; while signal0 start
3081   0175 :   main__23:
3082                    ;info   338, 373
3083                    ; =>bit_code_emit@symbol(): sym=signal0
3084                    ; 1TEST: Single test with code in skip slot
3085 0175 1905          btfsc   signal0___byte, signal0___bit
3086                    ; line_number = 339
3087                    ; do_nothing
3088                    ;info   339, 374
3089                    ; #if _tmr1if
3090                    ; #    break
3091 0176 2975          goto    main__23
3092                    ; Recombine size1 = 0 || size2 = 0
3093                    ; line_number = 338
3094                    ; while signal0 done
3095 0177 2986          goto    main__36
3096                    ; line_number = 342
3097                    ; case 1
3098   0178 :   main__30:
3099                    ; line_number = 343
3100                    ; while signal1 start
3101   0178 :   main__24:
3102                    ;info   343, 376
3103                    ; =>bit_code_emit@symbol(): sym=signal1
3104                    ; 1TEST: Single test with code in skip slot
3105 0178 1a85          btfsc   signal1___byte, signal1___bit
3106                    ; line_number = 344
3107                    ; do_nothing
3108                    ;info   344, 377
3109                    ; #if _tmr1if
3110                    ; #    break
3111 0179 2978          goto    main__24
3112                    ; Recombine size1 = 0 || size2 = 0
3113                    ; line_number = 343
3114                    ; while signal1 done
3115 017a 2986          goto    main__36
3116                    ; line_number = 347
3117                    ; case 2
3118   017b :   main__31:
3119                    ; line_number = 348
3120                    ; while signal2 start
3121   017b :   main__25:
3122                    ;info   348, 379
3123                    ; =>bit_code_emit@symbol(): sym=signal2
3124                    ; 1TEST: Single test with code in skip slot
3125 017b 1885          btfsc   signal2___byte, signal2___bit
3126                    ; line_number = 349
3127                    ; do_nothing
3128                    ;info   349, 380
3129                    ; #if _tmr1if
3130                    ; #    break
3131 017c 297b          goto    main__25
3132                    ; Recombine size1 = 0 || size2 = 0
3133                    ; line_number = 348
3134                    ; while signal2 done
3135 017d 2986          goto    main__36
3136                    ; line_number = 352
3137                    ; case 3
3138   017e :   main__32:
3139                    ; line_number = 353
3140                    ; while signal3 start
3141   017e :   main__26:
3142                    ;info   353, 382
3143                    ; =>bit_code_emit@symbol(): sym=signal3
3144                    ; 1TEST: Single test with code in skip slot
3145 017e 1b06          btfsc   signal3___byte, signal3___bit
3146                    ; line_number = 354
3147                    ; do_nothing
3148                    ;info   354, 383
3149                    ; #if _tmr1if
3150                    ; #    break
3151 017f 297e          goto    main__26
3152                    ; Recombine size1 = 0 || size2 = 0
3153                    ; line_number = 353
3154                    ; while signal3 done
3155 0180 2986          goto    main__36
3156                    ; line_number = 357
3157                    ; case 4
3158   0181 :   main__33:
3159                    ; line_number = 358
3160                    ; while signal4 start
3161   0181 :   main__27:
3162                    ;info   358, 385
3163                    ; =>bit_code_emit@symbol(): sym=signal4
3164                    ; 1TEST: Single test with code in skip slot
3165 0181 1886          btfsc   signal4___byte, signal4___bit
3166                    ; line_number = 359
3167                    ; do_nothing
3168                    ;info   359, 386
3169                    ; #if _tmr1if
3170                    ; #    break
3171 0182 2981          goto    main__27
3172                    ; Recombine size1 = 0 || size2 = 0
3173                    ; line_number = 358
3174                    ; while signal4 done
3175 0183 2986          goto    main__36
3176                    ; line_number = 362
3177                    ; case 5
3178   0184 :   main__34:
3179                    ; line_number = 363
3180                    ; while signal5 start
3181   0184 :   main__28:
3182                    ;info   363, 388
3183                    ; =>bit_code_emit@symbol(): sym=signal5
3184                    ; 1TEST: Single test with code in skip slot
3185 0184 1a06          btfsc   signal5___byte, signal5___bit
3186                    ; line_number = 364
3187                    ; do_nothing
3188                    ;info   364, 389
3189                    ; #if _tmr1if
3190                    ; #    break
3191            
3192 0185 2984          goto    main__28
3193                    ; Recombine size1 = 0 || size2 = 0
3194                    ; line_number = 363
3195                    ; while signal5 done
3196   0186 :   main__36:
3197                    ; line_number = 336
3198                    ;  switch sonar_index done
3199                    ; # Pulse has ended; Turn TMR1 off:
3200                    ; line_number = 369
3201                    ;  _tmr1on := _false
3202                    ;info   369, 390
3203 0186 1010          bcf     _tmr1on___byte, _tmr1on___bit
3204            
3205                    ; line_number = 371
3206                    ;  if _tmr1if start
3207                    ;info   371, 391
3208                    ; =>bit_code_emit@symbol(): sym=_tmr1if
3209                    ; No 1TEST: true.size=3 false.size=3
3210                    ; No 2TEST: true.size=3 false.size=3
3211                    ; 2GOTO: Single test with two GOTO's
3212 0187 1c0c          btfss   _tmr1if___byte, _tmr1if___bit
3213 0188 298d          goto    main__37
3214                    ; # 0xfd8e = 65000 (an unlikely distance):
3215                    ; line_number = 373
3216                    ;  raw_high := 0xfd
3217                    ;info   373, 393
3218 0189 30fd          movlw   253
3219 018a 00e1          movwf   main__raw_high
3220                    ; line_number = 374
3221                    ;  raw_low := 0xe8
3222                    ;info   374, 395
3223 018b 30e8          movlw   232
3224 018c 2990          goto    main__38
3225                    ; 2GOTO: Starting code 2
3226   018d :   main__37:
3227                    ; line_number = 376
3228                    ; raw_high := _tmr1h
3229                    ;info   376, 397
3230 018d 080f          movf    _tmr1h,w
3231 018e 00e1          movwf   main__raw_high
3232                    ; line_number = 377
3233                    ;  raw_low := _tmr1l
3234                    ;info   377, 399
3235 018f 080e          movf    _tmr1l,w
3236   0190 :   main__38:
3237                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3238                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3239                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3240 0190 00e2          movwf   main__raw_low
3241            
3242                    ; line_number = 371
3243                    ;  if _tmr1if done
3244                    ; line_number = 379
3245                    ; period := _signed16_from_byte2(raw_high, raw_low)
3246                    ;info   379, 401
3247 0191 0861          movf    main__raw_high,w
3248 0192 00b4          movwf   _signed16_from_byte2__byte1
3249 0193 0862          movf    main__raw_low,w
3250 0194 158a          bsf     __cb0___byte, __cb0___bit
3251 0195 20ba          call    _signed16_from_byte2
3252 0196 301b          movlw   _signed16_from_byte2__0return>>1
3253 0197 2000          call    _signed16_pointer_load
3254 0198 3032          movlw   main__period>>1
3255 0199 208b          call    _signed16_pointer_store
3256                    ; line_number = 380
3257                    ;  distance := period / speed_divisor
3258                    ;info   380, 410
3259 019a 3032          movlw   main__period>>1
3260 019b 2000          call    _signed16_pointer_load
3261 019c 302b          movlw   speed_divisor>>1
3262 019d 201c          call    _signed16_pointer_divide
3263 019e 302c          movlw   distance>>1
3264 019f 208b          call    _signed16_pointer_store
3265            
3266                    ; # Call to the procedure works around a compiler bug,
3267                    ; # whereby the code bank bit does not get reset.
3268                    ; #call compiler_bug_work_around()
3269            
3270                    ; Recombine size1 = 0 || size2 = 0
3271   01a0 :   main__39:
3272                    ; line_number = 330
3273                    ; if started done
3274                    ; line_number = 255
3275                    ;  if _true done
3276                    ; # Return the result:
3277                    ; line_number = 387
3278                    ;  _gie := _false
3279                    ;info   387, 416
3280 01a0 138b          bcf     _gie___byte, _gie___bit
3281                    ; line_number = 388
3282                    ;  raw_highs[sonar_index] := raw_high
3283                    ;info   388, 417
3284                    ; index_fsr_first
3285 01a1 0860          movf    main__sonar_index,w
3286 01a2 3e3e          addlw   raw_highs
3287 01a3 0084          movwf   __fsr
3288 01a4 1383          bcf     __irp___byte, __irp___bit
3289 01a5 0861          movf    main__raw_high,w
3290 01a6 0080          movwf   __indf
3291                    ; line_number = 389
3292                    ;  raw_lows[sonar_index] := raw_low
3293                    ;info   389, 423
3294                    ; index_fsr_first
3295 01a7 0860          movf    main__sonar_index,w
3296 01a8 3e44          addlw   raw_lows
3297 01a9 0084          movwf   __fsr
3298 01aa 1383          bcf     __irp___byte, __irp___bit
3299 01ab 0862          movf    main__raw_low,w
3300 01ac 0080          movwf   __indf
3301                    ; line_number = 390
3302                    ;  unit_highs[sonar_index] := _signed16_byte_high(distance)
3303                    ;info   390, 429
3304                    ; index_temporary_first
3305 00000067 = main__40 equ globals___0+71
3306 00000068 = main__41 equ globals___0+72
3307 01ad 0860          movf    main__sonar_index,w
3308 01ae 00e7          movwf   main__40
3309 01af 302c          movlw   distance>>1
3310 01b0 158a          bsf     __cb0___byte, __cb0___bit
3311 01b1 2000          call    _signed16_pointer_load
3312 01b2 301d          movlw   _signed16_byte_high__number>>1
3313 01b3 208b          call    _signed16_pointer_store
3314 01b4 20c7          call    _signed16_byte_high
3315 01b5 00e8          movwf   main__41
3316 01b6 0867          movf    main__40,w
3317 01b7 3e4a          addlw   unit_highs
3318 01b8 0084          movwf   __fsr
3319 01b9 1383          bcf     __irp___byte, __irp___bit
3320 01ba 0868          movf    main__41,w
3321 01bb 0080          movwf   __indf
3322                    ; line_number = 391
3323                    ;  unit_lows[sonar_index] := _signed16_byte_low(distance)
3324                    ;info   391, 444
3325                    ; index_temporary_first
3326 00000067 = main__42 equ globals___0+71
3327 00000068 = main__43 equ globals___0+72
3328 01bc 0860          movf    main__sonar_index,w
3329 01bd 00e7          movwf   main__42
3330 01be 302c          movlw   distance>>1
3331 01bf 2000          call    _signed16_pointer_load
3332 01c0 301e          movlw   _signed16_byte_low__number>>1
3333 01c1 208b          call    _signed16_pointer_store
3334 01c2 20cb          call    _signed16_byte_low
3335 01c3 00e8          movwf   main__43
3336 01c4 0867          movf    main__42,w
3337 01c5 3e50          addlw   unit_lows
3338 01c6 0084          movwf   __fsr
3339 01c7 1383          bcf     __irp___byte, __irp___bit
3340 01c8 0868          movf    main__43,w
3341 01c9 0080          movwf   __indf
3342                    ; line_number = 392
3343                    ;  _gie := _true
3344                    ;info   392, 458
3345 01ca 178b          bsf     _gie___byte, _gie___bit
3346            
3347                    ; # Delay .1 sec:
3348                    ; line_number = 395
3349                    ;  loop_exactly 10 start
3350                    ;info   395, 459
3351 00000067 = main__44 equ globals___0+71
3352 01cb 300a          movlw   10
3353 01cc 00e7          movwf   main__44
3354 01cd 118a          bcf     __cb0___byte, __cb0___bit
3355   01ce :   main__45:
3356                    ; line_number = 396
3357                    ; loop_exactly 100 start
3358                    ;info   396, 462
3359 00000068 = main__46 equ globals___0+72
3360 01ce 3064          movlw   100
3361 01cf 00e8          movwf   main__46
3362   01d0 :   main__47:
3363                    ; line_number = 397
3364                    ; delay 100 *microsecond start
3365                    ;info   397, 464
3366                    ; Delay expression evaluates to 500
3367                    ; line_number = 398
3368                    ; do_nothing
3369                    ;info   398, 464
3370            
3371                    ; Delay 500 cycles
3372                    ; Delay loop takes 125 * 4 = 500 cycles
3373 01d0 307d          movlw   125
3374   01d1 :   main__48:
3375 01d1 3eff          addlw   255
3376 01d2 1d03          btfss   __z___byte, __z___bit
3377 01d3 29d1          goto    main__48
3378                    ; line_number = 397
3379                    ; delay 100 *microsecond done
3380                    ; line_number = 396
3381                    ; loop_exactly 100 wrap-up
3382 01d4 0be8          decfsz  main__46,f
3383 01d5 29d0          goto    main__47
3384                    ; line_number = 396
3385                    ; loop_exactly 100 done
3386                    ; line_number = 395
3387                    ;  loop_exactly 10 wrap-up
3388 01d6 0be7          decfsz  main__44,f
3389 01d7 29ce          goto    main__45
3390                    ; line_number = 395
3391                    ;  loop_exactly 10 done
3392                    ; line_number = 400
3393                    ; iteration := iteration + 1
3394                    ;info   400, 472
3395 01d8 0add          incf    iteration,f
3396            
3397            
3398                    ; line_number = 247
3399                    ;  loop_forever wrap-up
3400 01d9 28f8          goto    main__1
3401                    ; line_number = 247
3402                    ;  loop_forever done
3403                    ; delay after procedure statements=non-uniform
3404            
3405            
3406            
3407            
3408                    ; # Baud_Rate = Fosc / (16(X+1))
3409                    ; # 16 * (X+1) = Fosc/Baud_Rate
3410                    ; # X+1 = Fosc/(16*Baud_Rate)
3411                    ; # X = Fosc/(16*Baud_rate) - 1
3412            
3413                    ; line_number = 408
3414                    ; constant baud_rate_500k = 500000
3415 0007a120 = baud_rate_500k equ 500000
3416                    ; line_number = 409
3417                    ; constant spbrg_500k = clock_rate / (16 * baud_rate_500k) - 1
3418 00000001 = spbrg_500k equ 1
3419            
3420                    ; line_number = 411
3421                    ;info   411, 474
3422                    ; procedure reset
3423   01da :   reset:
3424                    ; arguments_none
3425                    ; line_number = 413
3426                    ;  returns_nothing
3427            
3428                    ; # Reset everything:
3429            
3430                    ; # Warm up the UART:
3431                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3432                    ; line_number = 418
3433                    ;  _trisb@2 := _true
3434                    ;info   418, 474
3435 00000086 = reset__select__1___byte equ _trisb
3436 00000002 = reset__select__1___bit equ 2
3437 01da 1683          bsf     __rp0___byte, __rp0___bit
3438 01db 1506          bsf     reset__select__1___byte, reset__select__1___bit
3439                    ; line_number = 419
3440                    ;  _trisb@5 := _true
3441                    ;info   419, 476
3442 00000086 = reset__select__2___byte equ _trisb
3443 00000005 = reset__select__2___bit equ 5
3444 01dc 1686          bsf     reset__select__2___byte, reset__select__2___bit
3445            
3446                    ; # Initialize the {_txsta} register:
3447                    ; line_number = 422
3448                    ;  _txsta := 0
3449                    ;info   422, 477
3450 01dd 0198          clrf    _txsta
3451                    ; line_number = 423
3452                    ;  _tx9 := _true
3453                    ;info   423, 478
3454 01de 1718          bsf     _tx9___byte, _tx9___bit
3455                    ; line_number = 424
3456                    ;  _txen := _true
3457                    ;info   424, 479
3458 01df 1698          bsf     _txen___byte, _txen___bit
3459                    ; line_number = 425
3460                    ;  _brgh := _true
3461                    ;info   425, 480
3462 01e0 1518          bsf     _brgh___byte, _brgh___bit
3463            
3464                    ; # Initialize the {_rcsta} register:
3465                    ; line_number = 428
3466                    ;  _rcsta := 0
3467                    ;info   428, 481
3468 01e1 1283          bcf     __rp0___byte, __rp0___bit
3469 01e2 0198          clrf    _rcsta
3470                    ; line_number = 429
3471                    ;  _spen := _true
3472                    ;info   429, 483
3473 01e3 1798          bsf     _spen___byte, _spen___bit
3474                    ; line_number = 430
3475                    ;  _rx9 := _true
3476                    ;info   430, 484
3477 01e4 1718          bsf     _rx9___byte, _rx9___bit
3478                    ; line_number = 431
3479                    ;  _cren := _true
3480                    ;info   431, 485
3481 01e5 1618          bsf     _cren___byte, _cren___bit
3482                    ; #_adden := _true
3483                    ; line_number = 433
3484                    ;  _adden := _false
3485                    ;info   433, 486
3486 01e6 1198          bcf     _adden___byte, _adden___bit
3487            
3488                    ; # Set up the baud rate generator:
3489                    ; line_number = 436
3490                    ;  _spbrg := spbrg_500k
3491                    ;info   436, 487
3492 01e7 3001          movlw   1
3493 01e8 1683          bsf     __rp0___byte, __rp0___bit
3494 01e9 0099          movwf   _spbrg
3495            
3496                    ; line_number = 438
3497                    ;  address := 0x10
3498                    ;info   438, 490
3499 01ea 3010          movlw   16
3500 01eb 1283          bcf     __rp0___byte, __rp0___bit
3501 01ec 00da          movwf   address
3502                    ; line_number = 439
3503                    ;  state := 0
3504                    ;info   439, 493
3505 01ed 01db          clrf    state
3506                    ; line_number = 440
3507                    ;  echo_munch := _false
3508                    ;info   440, 494
3509 01ee 106f          bcf     echo_munch___byte, echo_munch___bit
3510                    ; line_number = 441
3511                    ;  id_index := 0
3512                    ;info   441, 495
3513 01ef 01dc          clrf    id_index
3514            
3515                    ; line_number = 443
3516                    ;  iteration := 0
3517                    ;info   443, 496
3518 01f0 01dd          clrf    iteration
3519                    ; line_number = 444
3520                    ;  _gie := _true
3521                    ;info   444, 497
3522 01f1 178b          bsf     _gie___byte, _gie___bit
3523                    ; line_number = 445
3524                    ;  _rcie := _true
3525                    ;info   445, 498
3526 01f2 1683          bsf     __rp0___byte, __rp0___bit
3527 01f3 168c          bsf     _rcie___byte, _rcie___bit
3528                    ; line_number = 446
3529                    ;  _peie := _true
3530                    ;info   446, 500
3531 01f4 170b          bsf     _peie___byte, _peie___bit
3532            
3533                    ; line_number = 448
3534                    ;  speed_divisor := _signed16_from_byte2(divisor_millimeters_high, divisor_millimeters_low)  
3535                    ;info   448, 501
3536 01f5 1283          bcf     __rp0___byte, __rp0___bit
3537 01f6 01b4          clrf    _signed16_from_byte2__byte1
3538 01f7 301d          movlw   29
3539 01f8 158a          bsf     __cb0___byte, __cb0___bit
3540 01f9 20ba          call    _signed16_from_byte2
3541 01fa 301b          movlw   _signed16_from_byte2__0return>>1
3542 01fb 2000          call    _signed16_pointer_load
3543 01fc 302b          movlw   speed_divisor>>1
3544 01fd 208b          call    _signed16_pointer_store
3545            
3546                    ; delay after procedure statements=non-uniform
3547                    ; Implied return
3548 01fe 118a          bcf     __cb0___byte, __cb0___bit
3549 01ff 3400          retlw   0
3550            
3551            
3552            
3553            
3554                    ; line_number = 452
3555                    ;info   452, 512
3556                    ; procedure compiler_bug_work_around
3557   0200 :   compiler_bug_work_around:
3558                    ; arguments_none
3559                    ; line_number = 454
3560                    ;  returns_nothing
3561            
3562                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3563                    ; line_number = 456
3564                    ;  do_nothing
3565                    ;info   456, 512
3566            
3567            
3568                    ; delay after procedure statements=non-uniform
3569                    ; Implied return
3570 0200 3400          retlw   0
3571            
3572            
3573            
3574            
3575                    ; line_number = 459
3576                    ; string id = "\16,0,16,2,3,8\Sonar6-B\7\Gramson" start
3577                    ; id = '\16,0,16,2,3,8\Sonar6-B\7\Gramson'
3578   0201 :   id:
3579                    ; Temporarily save index into FSR
3580 0201 0084          movwf   __fsr
3581                    ; Initialize PCLATH to point to this code page
3582 0202 3002          movlw   id___base>>8
3583 0203 008a          movwf   __pclath
3584                    ; Restore index from FSR
3585 0204 0804          movf    __fsr,w
3586 0205 3e07          addlw   id___base
3587                    ; Index to the correct return value
3588 0206 0082          movwf   __pcl
3589                    ; page_group 22
3590   0207 :   id___base:
3591 0207 3410          retlw   16
3592 0208 3400          retlw   0
3593 0209 3410          retlw   16
3594 020a 3402          retlw   2
3595 020b 3403          retlw   3
3596 020c 3408          retlw   8
3597 020d 3453          retlw   83
3598 020e 346f          retlw   111
3599 020f 346e          retlw   110
3600 0210 3461          retlw   97
3601 0211 3472          retlw   114
3602 0212 3436          retlw   54
3603 0213 342d          retlw   45
3604 0214 3442          retlw   66
3605 0215 3407          retlw   7
3606 0216 3447          retlw   71
3607 0217 3472          retlw   114
3608 0218 3461          retlw   97
3609 0219 346d          retlw   109
3610 021a 3473          retlw   115
3611 021b 346f          retlw   111
3612 021c 346e          retlw   110
3613                    ; line_number = 459
3614                    ; string id = "\16,0,16,2,3,8\Sonar6-B\7\Gramson" start
3615                    ; line_number = 460
3616                    ; string priority = "\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\" start
3617                    ; priority = '\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\'
3618   021d :   priority:
3619                    ; Temporarily save index into FSR
3620 021d 0084          movwf   __fsr
3621                    ; Initialize PCLATH to point to this code page
3622 021e 3002          movlw   priority___base>>8
3623 021f 008a          movwf   __pclath
3624                    ; Restore index from FSR
3625 0220 0804          movf    __fsr,w
3626 0221 3e23          addlw   priority___base
3627                    ; Index to the correct return value
3628 0222 0082          movwf   __pcl
3629                    ; page_group 16
3630   0223 :   priority___base:
3631 0223 341f          retlw   31
3632 0224 3401          retlw   1
3633 0225 3403          retlw   3
3634 0226 3401          retlw   1
3635 0227 3407          retlw   7
3636 0228 3401          retlw   1
3637 0229 3403          retlw   3
3638 022a 3401          retlw   1
3639 022b 340f          retlw   15
3640 022c 3401          retlw   1
3641 022d 3403          retlw   3
3642 022e 3401          retlw   1
3643 022f 3407          retlw   7
3644 0230 3401          retlw   1
3645 0231 3403          retlw   3
3646 0232 3401          retlw   1
3647                    ; line_number = 460
3648                    ; string priority = "\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\" start
3649            
3650            
3651                    ; Code bank 1; Start address: 2048; End address: 4095
3652   0800 :           org     2048
3653                    ; Appending 20 delayed procedures to code bank 1
3654                    ; buffer = '_signed16'
3655                    ; line_number = 62
3656                    ;info   62, 2048
3657                    ; procedure _signed16_pointer_load
3658   0800 :   _signed16_pointer_load:
3659                    ; Last argument is sitting in W; save into argument variable
3660 0800 00aa          movwf   _signed16_pointer_load__pointer
3661                    ; delay=4294967295
3662                    ; line_number = 63
3663                    ; argument pointer byte
3664 0000002a = _signed16_pointer_load__pointer equ globals___0+10
3665                    ; line_number = 64
3666                    ;  returns_nothing
3667                    ; line_number = 65
3668                    ;  return_suppress
3669            
3670                    ; # This procedure will load the signed16 "A" register with {pointer}.
3671            
3672                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3673                    ; line_number = 69
3674                    ;  assemble
3675                    ;info   69, 2049
3676                    ; # Pointer is in W; move it to {_fsr}:
3677                    ; line_number = 71
3678                    ;info   71, 2049
3679 0801 0084          movwf   _fsr
3680                    ; # Set up {_irp} and _{fsr}:
3681                    ; line_number = 73
3682                    ;info   73, 2050
3683 0802 1383          bcf     _irp___byte, _irp___bit
3684                    ; line_number = 74
3685                    ;info   74, 2051
3686 0803 0d84          rlf     _fsr,f
3687                    ; line_number = 75
3688                    ;info   75, 2052
3689 0804 1803          btfsc   _c___byte, _c___bit
3690                    ; line_number = 76
3691                    ;info   76, 2053
3692 0805 1783          bsf     _irp___byte, _irp___bit
3693                    ; line_number = 77
3694                    ;info   77, 2054
3695 0806 1004          bcf     _fsr, 0
3696                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}
3697                    ; line_number = 79
3698                    ;info   79, 2055
3699 0807 0800          movf    _indf,w
3700                    ; line_number = 80
3701                    ;info   80, 2056
3702 0808 00a0          movwf   _signed16_a0
3703                    ; line_number = 81
3704                    ;info   81, 2057
3705 0809 0a84          incf    _fsr,f
3706                    ; line_number = 82
3707                    ;info   82, 2058
3708 080a 0800          movf    _indf,w
3709                    ; line_number = 83
3710                    ;info   83, 2059
3711 080b 00a1          movwf   _signed16_a1
3712                    ; line_number = 84
3713                    ;info   84, 2060
3714 080c 0008          return  
3715            
3716            
3717                    ; delay after procedure statements=non-uniform
3718                    ; Return instruction suppressed by 'return_suppress'
3719            
3720            
3721            
3722            
3723                    ; line_number = 87
3724                    ;info   87, 2061
3725                    ; procedure _signed16_pointer_add
3726   080d :   _signed16_pointer_add:
3727                    ; Last argument is sitting in W; save into argument variable
3728 080d 00ab          movwf   _signed16_pointer_add__pointer
3729                    ; delay=4294967295
3730                    ; line_number = 88
3731                    ; argument pointer byte
3732 0000002b = _signed16_pointer_add__pointer equ globals___0+11
3733                    ; line_number = 89
3734                    ;  returns_nothing
3735                    ; line_number = 90
3736                    ;  return_suppress
3737            
3738                    ; # This procedure will add the signed16 "A" register with {pointer}
3739                    ; # and store the result back into the "A" register.
3740            
3741                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3742                    ; line_number = 95
3743                    ;  assemble
3744                    ;info   95, 2062
3745                    ; # Pointer is in W; move it to {_fsr}:
3746                    ; line_number = 97
3747                    ;info   97, 2062
3748 080e 0084          movwf   _fsr
3749                    ; # Set up {_irp} and _{fsr}:
3750                    ; line_number = 99
3751                    ;info   99, 2063
3752 080f 1383          bcf     _irp___byte, _irp___bit
3753                    ; line_number = 100
3754                    ;info   100, 2064
3755 0810 0d84          rlf     _fsr,f
3756                    ; line_number = 101
3757                    ;info   101, 2065
3758 0811 1803          btfsc   _c___byte, _c___bit
3759                    ; line_number = 102
3760                    ;info   102, 2066
3761 0812 1783          bsf     _irp___byte, _irp___bit
3762                    ; line_number = 103
3763                    ;info   103, 2067
3764 0813 1004          bcf     _fsr, 0
3765                    ; # Grab MSB and add it into {_signed16_a0} (MSB):
3766                    ; line_number = 105
3767                    ;info   105, 2068
3768 0814 0800          movf    _indf,w
3769                    ; line_number = 106
3770                    ;info   106, 2069
3771 0815 07a0          addwf   _signed16_a0,f
3772                    ; line_number = 107
3773                    ;info   107, 2070
3774 0816 0a84          incf    _fsr,f
3775            
3776                    ; # Grab LSB and add it into {_signed16_a1} (LSB):
3777                    ; line_number = 110
3778                    ;info   110, 2071
3779 0817 0800          movf    _indf,w
3780                    ; line_number = 111
3781                    ;info   111, 2072
3782 0818 07a1          addwf   _signed16_a1,f
3783            
3784                    ; # If C is 1, increment {_signed16_a0} (MSB):
3785                    ; line_number = 114
3786                    ;info   114, 2073
3787 0819 1803          btfsc   _c___byte, _c___bit
3788                    ; line_number = 115
3789                    ;info   115, 2074
3790 081a 0aa0          incf    _signed16_a0,f
3791                    ; line_number = 116
3792                    ;info   116, 2075
3793 081b 0008          return  
3794            
3795            
3796                    ; delay after procedure statements=non-uniform
3797                    ; Return instruction suppressed by 'return_suppress'
3798            
3799            
3800            
3801            
3802                    ; line_number = 119
3803                    ;info   119, 2076
3804                    ; procedure _signed16_pointer_divide
3805   081c :   _signed16_pointer_divide:
3806                    ; Last argument is sitting in W; save into argument variable
3807 081c 00ac          movwf   _signed16_pointer_divide__pointer
3808                    ; delay=4294967295
3809                    ; line_number = 120
3810                    ; argument pointer byte
3811 0000002c = _signed16_pointer_divide__pointer equ globals___0+12
3812                    ; line_number = 121
3813                    ;  returns_nothing
3814                    ; line_number = 122
3815                    ;  return_suppress
3816            
3817                    ; # This procedure will divide the signed16 A register by {pointer} and
3818                    ; # store the result back into the A "register".
3819            
3820                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3821                    ; line_number = 127
3822                    ;  assemble
3823                    ;info   127, 2077
3824                    ; # Pointer is in W; move it to {_fsr}:
3825                    ; line_number = 129
3826                    ;info   129, 2077
3827 081d 0084          movwf   _fsr
3828                    ; # Set up {_irp} and _{fsr}:
3829                    ; line_number = 131
3830                    ;info   131, 2078
3831 081e 1383          bcf     _irp___byte, _irp___bit
3832                    ; line_number = 132
3833                    ;info   132, 2079
3834 081f 0d84          rlf     _fsr,f
3835                    ; line_number = 133
3836                    ;info   133, 2080
3837 0820 1803          btfsc   _c___byte, _c___bit
3838                    ; line_number = 134
3839                    ;info   134, 2081
3840 0821 1783          bsf     _irp___byte, _irp___bit
3841                    ; line_number = 135
3842                    ;info   135, 2082
3843 0822 1004          bcf     _fsr, 0
3844                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
3845                    ; line_number = 137
3846                    ;info   137, 2083
3847 0823 0800          movf    _indf,w
3848                    ; line_number = 138
3849                    ;info   138, 2084
3850 0824 00a2          movwf   _signed16_b0
3851                    ; line_number = 139
3852                    ;info   139, 2085
3853 0825 0a84          incf    _fsr,f
3854                    ; line_number = 140
3855                    ;info   140, 2086
3856 0826 0800          movf    _indf,w
3857                    ; line_number = 141
3858                    ;info   141, 2087
3859 0827 00a3          movwf   _signed16_b1
3860            
3861                    ; # Perform the divide:
3862                    ; line_number = 144
3863                    ;info   144, 2088
3864 0828 20f2          call    _signed16_divide_raw
3865            
3866                    ; line_number = 146
3867                    ;info   146, 2089
3868 0829 0008          return  
3869            
3870            
3871                    ; delay after procedure statements=non-uniform
3872                    ; Return instruction suppressed by 'return_suppress'
3873            
3874            
3875            
3876            
3877                    ; line_number = 149
3878                    ;info   149, 2090
3879                    ; procedure _signed16_pointer_multiply
3880   082a :   _signed16_pointer_multiply:
3881                    ; Last argument is sitting in W; save into argument variable
3882 082a 00ad          movwf   _signed16_pointer_multiply__pointer
3883                    ; delay=4294967295
3884                    ; line_number = 150
3885                    ; argument pointer byte
3886 0000002d = _signed16_pointer_multiply__pointer equ globals___0+13
3887                    ; line_number = 151
3888                    ;  returns_nothing
3889                    ; line_number = 152
3890                    ;  return_suppress
3891            
3892                    ; # This procedure will multiply {pointer} with the signed16 A "register"
3893                    ; # and store the result back into the A "register".
3894            
3895                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
3896                    ; line_number = 157
3897                    ;  assemble
3898                    ;info   157, 2091
3899                    ; # Pointer is in W; move it to {_fsr}:
3900                    ; line_number = 159
3901                    ;info   159, 2091
3902 082b 0084          movwf   _fsr
3903                    ; # Set up {_irp} and _{fsr}:
3904                    ; line_number = 161
3905                    ;info   161, 2092
3906 082c 1383          bcf     _irp___byte, _irp___bit
3907                    ; line_number = 162
3908                    ;info   162, 2093
3909 082d 0d84          rlf     _fsr,f
3910                    ; line_number = 163
3911                    ;info   163, 2094
3912 082e 1803          btfsc   _c___byte, _c___bit
3913                    ; line_number = 164
3914                    ;info   164, 2095
3915 082f 1783          bsf     _irp___byte, _irp___bit
3916                    ; line_number = 165
3917                    ;info   165, 2096
3918 0830 1004          bcf     _fsr, 0
3919                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
3920                    ; line_number = 167
3921                    ;info   167, 2097
3922 0831 0800          movf    _indf,w
3923                    ; line_number = 168
3924                    ;info   168, 2098
3925 0832 00a2          movwf   _signed16_b0
3926                    ; line_number = 169
3927                    ;info   169, 2099
3928 0833 0a84          incf    _fsr,f
3929                    ; line_number = 170
3930                    ;info   170, 2100
3931 0834 0800          movf    _indf,w
3932                    ; line_number = 171
3933                    ;info   171, 2101
3934 0835 00a3          movwf   _signed16_b1
3935            
3936                    ; # The code below came from <http://www.piclist.com/>.
3937                    ; # It is not totally clear who wrote the code.  The names
3938                    ; # Bob Fehrenbac & Scott Dattalo are present, but there is
3939                    ; # no explicit authorship.  The Multiple byte addition routine
3940                    ; # is from Microchip AN617.  As is typical, nobody bothered
3941                    ; # to comment the code.
3942                    ; #
3943                    ; # This multiplies <_signed16_a0:_signed16_a1> by
3944                    ; # <_signed16_b0:_signed16_b1> and store the signed result into
3945                    ; # <_signed16_result0:_signed16_result1:_signed16_result2:_signed16_result3>
3946                    ; # Then we trim the result down and store it back into
3947                    ; # <_signed16_a0:_signed16_a1>.
3948                    ; #
3949                    ; # This multiply routine takes between 134 to 248 cycles.
3950                    ; #
3951                    ; # This program looks at the lsb of _signed16_a1 to decide whether
3952                    ; # to add _signed16_b1 to _signed16_result2.
3953                    ; # and b2 to _signed16_result1, with appropriate carrys
3954                    ; # It then looks at the lsb of _signed16_a0 to decide whether
3955                    ; # to add _signed16_b1 to _signed16_result1 and 
3956                    ; # signed16_b0 to _signed16_result0, again with appropriate carrys.
3957                    ; # The rotates then only have to be done 8 times
3958                    ; #
3959                    ; # This is uses slightly more program but takes a little less time than 
3960                    ; # a routine that performs one 16 bit addition per rotate and 16 rotates
3961            
3962                    ; line_number = 199
3963                    ;  assemble
3964                    ;info   199, 2102
3965                    ; line_number = 200
3966                    ;info   200, 2102
3967 0836 01a7          clrf    _signed16_result0
3968                    ; line_number = 201
3969                    ;info   201, 2103
3970 0837 01a6          clrf    _signed16_result1
3971                    ; line_number = 202
3972                    ;info   202, 2104
3973 0838 01a5          clrf    _signed16_result2
3974                    ; line_number = 203
3975                    ;info   203, 2105
3976 0839 3080          movlw   128
3977                    ; line_number = 204
3978                    ;info   204, 2106
3979 083a 00a4          movwf   _signed16_result3
3980            
3981                    ; line_number = 206
3982                    ;info   206, 2107
3983 083b 01a8          clrf    _signed16_neg_flag
3984            
3985                    ; line_number = 208
3986                    ;info   208, 2108
3987 083c 1fa0          btfss   _signed16_a0, 7
3988                    ; line_number = 209
3989                    ;info   209, 2109
3990 083d 2844          goto    _signed16_multiply_a_pos
3991                    ; line_number = 210
3992                    ;info   210, 2110
3993 083e 09a0          comf    _signed16_a0,f
3994                    ; line_number = 211
3995                    ;info   211, 2111
3996 083f 09a1          comf    _signed16_a1,f
3997                    ; line_number = 212
3998                    ;info   212, 2112
3999 0840 0aa1          incf    _signed16_a1,f
4000                    ; line_number = 213
4001                    ;info   213, 2113
4002 0841 1903          btfsc   _z___byte, _z___bit
4003                    ; line_number = 214
4004                    ;info   214, 2114
4005 0842 0aa0          incf    _signed16_a0,f
4006                    ; line_number = 215
4007                    ;info   215, 2115
4008 0843 0aa8          incf    _signed16_neg_flag,f
4009            
4010                    ; line_number = 217
4011   0844 :   _signed16_multiply_a_pos:
4012                    ; line_number = 218
4013                    ;info   218, 2116
4014 0844 1fa2          btfss   _signed16_b0, 7
4015                    ; line_number = 219
4016                    ;info   219, 2117
4017 0845 284c          goto    _signed16_multiply_nextbit
4018                    ; line_number = 220
4019                    ;info   220, 2118
4020 0846 09a2          comf    _signed16_b0,f
4021                    ; line_number = 221
4022                    ;info   221, 2119
4023 0847 09a3          comf    _signed16_b1,f
4024                    ; line_number = 222
4025                    ;info   222, 2120
4026 0848 0aa3          incf    _signed16_b1,f
4027                    ; line_number = 223
4028                    ;info   223, 2121
4029 0849 1903          btfsc   _z___byte, _z___bit
4030                    ; line_number = 224
4031                    ;info   224, 2122
4032 084a 0aa2          incf    _signed16_b0,f
4033                    ; line_number = 225
4034                    ;info   225, 2123
4035 084b 0aa8          incf    _signed16_neg_flag,f
4036            
4037                    ; line_number = 227
4038   084c :   _signed16_multiply_nextbit:
4039                    ; line_number = 228
4040                    ;info   228, 2124
4041 084c 0ca0          rrf     _signed16_a0,f
4042                    ; line_number = 229
4043                    ;info   229, 2125
4044 084d 0ca1          rrf     _signed16_a1,f
4045            
4046                    ; line_number = 231
4047                    ;info   231, 2126
4048 084e 1c03          btfss   _c___byte, _c___bit
4049                    ; line_number = 232
4050                    ;info   232, 2127
4051 084f 2859          goto    _signed16_multiply_nobit_l
4052                    ; line_number = 233
4053                    ;info   233, 2128
4054 0850 0823          movf    _signed16_b1,w
4055                    ; line_number = 234
4056                    ;info   234, 2129
4057 0851 07a5          addwf   _signed16_result2,f
4058            
4059                    ; line_number = 236
4060                    ;info   236, 2130
4061 0852 0822          movf    _signed16_b0,w
4062                    ; line_number = 237
4063                    ;info   237, 2131
4064 0853 1803          btfsc   _c___byte, _c___bit
4065                    ; line_number = 238
4066                    ;info   238, 2132
4067 0854 0f22          incfsz  _signed16_b0,w
4068                    ; line_number = 239
4069                    ;info   239, 2133
4070 0855 07a6          addwf   _signed16_result1,f
4071                    ; line_number = 240
4072                    ;info   240, 2134
4073 0856 1803          btfsc   _c___byte, _c___bit
4074                    ; line_number = 241
4075                    ;info   241, 2135
4076 0857 0aa7          incf    _signed16_result0,f
4077                    ; line_number = 242
4078                    ;info   242, 2136
4079 0858 1003          bcf     _c___byte, _c___bit
4080            
4081                    ; line_number = 244
4082   0859 :   _signed16_multiply_nobit_l:
4083                    ; line_number = 245
4084                    ;info   245, 2137
4085 0859 1fa1          btfss   _signed16_a1, 7
4086                    ; line_number = 246
4087                    ;info   246, 2138
4088 085a 2861          goto    _signed16_multiply_nobit_h
4089                    ; line_number = 247
4090                    ;info   247, 2139
4091 085b 0823          movf    _signed16_b1,w
4092                    ; line_number = 248
4093                    ;info   248, 2140
4094 085c 07a6          addwf   _signed16_result1,f
4095                    ; line_number = 249
4096                    ;info   249, 2141
4097 085d 1803          btfsc   _c___byte, _c___bit
4098                    ; line_number = 250
4099                    ;info   250, 2142
4100 085e 0aa7          incf    _signed16_result0,f
4101                    ; line_number = 251
4102                    ;info   251, 2143
4103 085f 0822          movf    _signed16_b0,w
4104                    ; line_number = 252
4105                    ;info   252, 2144
4106 0860 07a7          addwf   _signed16_result0,f
4107            
4108                    ; line_number = 254
4109   0861 :   _signed16_multiply_nobit_h:
4110                    ; line_number = 255
4111                    ;info   255, 2145
4112 0861 0ca7          rrf     _signed16_result0,f
4113                    ; line_number = 256
4114                    ;info   256, 2146
4115 0862 0ca6          rrf     _signed16_result1,f
4116                    ; line_number = 257
4117                    ;info   257, 2147
4118 0863 0ca5          rrf     _signed16_result2,f
4119                    ; line_number = 258
4120                    ;info   258, 2148
4121 0864 0ca4          rrf     _signed16_result3,f
4122            
4123                    ; line_number = 260
4124                    ;info   260, 2149
4125 0865 1c03          btfss   _c___byte, _c___bit
4126                    ; line_number = 261
4127                    ;info   261, 2150
4128 0866 284c          goto    _signed16_multiply_nextbit
4129                    ; line_number = 262
4130                    ;info   262, 2151
4131 0867 1c28          btfss   _signed16_neg_flag, 0
4132                    ; line_number = 263
4133                    ;info   263, 2152
4134 0868 2874          goto    _signed16_mulitply_no_invert
4135            
4136                    ; line_number = 265
4137                    ;info   265, 2153
4138 0869 09a7          comf    _signed16_result0,f
4139                    ; line_number = 266
4140                    ;info   266, 2154
4141 086a 09a6          comf    _signed16_result1,f
4142                    ; line_number = 267
4143                    ;info   267, 2155
4144 086b 09a5          comf    _signed16_result2,f
4145                    ; line_number = 268
4146                    ;info   268, 2156
4147 086c 09a4          comf    _signed16_result3,f
4148            
4149                    ; line_number = 270
4150                    ;info   270, 2157
4151 086d 0aa4          incf    _signed16_result3,f
4152                    ; line_number = 271
4153                    ;info   271, 2158
4154 086e 1903          btfsc   _z___byte, _z___bit
4155                    ; line_number = 272
4156                    ;info   272, 2159
4157 086f 0aa5          incf    _signed16_result2,f
4158                    ; line_number = 273
4159                    ;info   273, 2160
4160 0870 1903          btfsc   _z___byte, _z___bit
4161                    ; line_number = 274
4162                    ;info   274, 2161
4163 0871 0aa6          incf    _signed16_result1,f
4164                    ; line_number = 275
4165                    ;info   275, 2162
4166 0872 1903          btfsc   _z___byte, _z___bit
4167                    ; line_number = 276
4168                    ;info   276, 2163
4169 0873 0aa7          incf    _signed16_result0,f
4170                    ; line_number = 277
4171   0874 :   _signed16_mulitply_no_invert:
4172            
4173                    ; # Store the final result into _signed16_a<0:1>:
4174                    ; line_number = 280
4175                    ;info   280, 2164
4176 0874 0825          movf    _signed16_result2,w
4177                    ; line_number = 281
4178                    ;info   281, 2165
4179 0875 00a0          movwf   _signed16_a0
4180                    ; line_number = 282
4181                    ;info   282, 2166
4182 0876 0824          movf    _signed16_result3,w
4183                    ; line_number = 283
4184                    ;info   283, 2167
4185 0877 00a1          movwf   _signed16_a1
4186                    ; line_number = 284
4187                    ;info   284, 2168
4188 0878 0008          return  
4189            
4190            
4191                    ; delay after procedure statements=non-uniform
4192                    ; Return instruction suppressed by 'return_suppress'
4193            
4194            
4195            
4196            
4197                    ; line_number = 287
4198                    ;info   287, 2169
4199                    ; procedure _signed16_pointer_subtract
4200   0879 :   _signed16_pointer_subtract:
4201                    ; Last argument is sitting in W; save into argument variable
4202 0879 00ae          movwf   _signed16_pointer_subtract__pointer
4203                    ; delay=4294967295
4204                    ; line_number = 288
4205                    ; argument pointer byte
4206 0000002e = _signed16_pointer_subtract__pointer equ globals___0+14
4207                    ; line_number = 289
4208                    ;  returns_nothing
4209                    ; line_number = 290
4210                    ;  return_suppress
4211            
4212                    ; # This procedure will subtract {pointer} from the signed16 A "register"
4213                    ; # and store the result back into the A "register".
4214            
4215                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4216                    ; line_number = 295
4217                    ;  assemble
4218                    ;info   295, 2170
4219                    ; # Pointer is in W; move it to {_fsr}:
4220                    ; line_number = 297
4221                    ;info   297, 2170
4222 087a 0084          movwf   _fsr
4223                    ; # Set up {_irp} and _{fsr}:
4224                    ; line_number = 299
4225                    ;info   299, 2171
4226 087b 1383          bcf     _irp___byte, _irp___bit
4227                    ; line_number = 300
4228                    ;info   300, 2172
4229 087c 0d84          rlf     _fsr,f
4230                    ; line_number = 301
4231                    ;info   301, 2173
4232 087d 1803          btfsc   _c___byte, _c___bit
4233                    ; line_number = 302
4234                    ;info   302, 2174
4235 087e 1783          bsf     _irp___byte, _irp___bit
4236                    ; line_number = 303
4237                    ;info   303, 2175
4238 087f 1004          bcf     _fsr, 0
4239            
4240                    ; # Subtract MSB from {_signed16_a0} (MSB):
4241                    ; line_number = 306
4242                    ;info   306, 2176
4243 0880 0900          comf    _indf,w
4244                    ; line_number = 307
4245                    ;info   307, 2177
4246 0881 07a0          addwf   _signed16_a0,f
4247                    ; line_number = 308
4248                    ;info   308, 2178
4249 0882 0a84          incf    _fsr,f
4250            
4251                    ; # Subtract LSB from {_signed16_a1} (LSB):
4252                    ; line_number = 311
4253                    ;info   311, 2179
4254 0883 0900          comf    _indf,w
4255                    ; line_number = 312
4256                    ;info   312, 2180
4257 0884 3e01          addlw   1
4258            
4259                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
4260                    ; line_number = 315
4261                    ;info   315, 2181
4262 0885 1803          btfsc   _c___byte, _c___bit
4263                    ; line_number = 316
4264                    ;info   316, 2182
4265 0886 0aa0          incf    _signed16_a0,f
4266            
4267                    ; # Finish the subtraction:
4268                    ; line_number = 319
4269                    ;info   319, 2183
4270 0887 07a1          addwf   _signed16_a1,f
4271            
4272                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
4273                    ; line_number = 322
4274                    ;info   322, 2184
4275 0888 1803          btfsc   _c___byte, _c___bit
4276                    ; line_number = 323
4277                    ;info   323, 2185
4278 0889 0aa0          incf    _signed16_a0,f
4279                    ; line_number = 324
4280                    ;info   324, 2186
4281 088a 0008          return  
4282            
4283            
4284                    ; delay after procedure statements=non-uniform
4285                    ; Return instruction suppressed by 'return_suppress'
4286            
4287            
4288            
4289            
4290                    ; line_number = 327
4291                    ;info   327, 2187
4292                    ; procedure _signed16_pointer_store
4293   088b :   _signed16_pointer_store:
4294                    ; Last argument is sitting in W; save into argument variable
4295 088b 00af          movwf   _signed16_pointer_store__pointer
4296                    ; delay=4294967295
4297                    ; line_number = 328
4298                    ; argument pointer byte
4299 0000002f = _signed16_pointer_store__pointer equ globals___0+15
4300                    ; line_number = 329
4301                    ;  returns_nothing
4302                    ; line_number = 330
4303                    ;  return_suppress
4304            
4305                    ; # This procedure will store the signed16 A "register" into {pointer}.
4306            
4307                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4308                    ; line_number = 334
4309                    ;  assemble
4310                    ;info   334, 2188
4311                    ; # Pointer is in W; move it to {_fsr}:
4312                    ; line_number = 336
4313                    ;info   336, 2188
4314 088c 0084          movwf   _fsr
4315                    ; # Set up {_irp} and _{fsr}:
4316                    ; line_number = 338
4317                    ;info   338, 2189
4318 088d 1383          bcf     _irp___byte, _irp___bit
4319                    ; line_number = 339
4320                    ;info   339, 2190
4321 088e 0d84          rlf     _fsr,f
4322                    ; line_number = 340
4323                    ;info   340, 2191
4324 088f 1803          btfsc   _c___byte, _c___bit
4325                    ; line_number = 341
4326                    ;info   341, 2192
4327 0890 1783          bsf     _irp___byte, _irp___bit
4328                    ; line_number = 342
4329                    ;info   342, 2193
4330 0891 1004          bcf     _fsr, 0
4331                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}:
4332                    ; line_number = 344
4333                    ;info   344, 2194
4334 0892 0820          movf    _signed16_a0,w
4335                    ; line_number = 345
4336                    ;info   345, 2195
4337 0893 0080          movwf   _indf
4338                    ; line_number = 346
4339                    ;info   346, 2196
4340 0894 0a84          incf    _fsr,f
4341                    ; line_number = 347
4342                    ;info   347, 2197
4343 0895 0821          movf    _signed16_a1,w
4344                    ; line_number = 348
4345                    ;info   348, 2198
4346 0896 0080          movwf   _indf
4347                    ; line_number = 349
4348                    ;info   349, 2199
4349 0897 0008          return  
4350            
4351            
4352                    ; delay after procedure statements=non-uniform
4353                    ; Return instruction suppressed by 'return_suppress'
4354            
4355            
4356            
4357            
4358                    ; line_number = 352
4359                    ;info   352, 2200
4360                    ; procedure _signed16_negate
4361   0898 :   _signed16_negate:
4362                    ; arguments_none
4363                    ; line_number = 354
4364                    ;  returns_nothing
4365            
4366                    ; # This procedure will negate the signed16 A registers.
4367            
4368                    ; # Flip the sign bit:
4369                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4370                    ; line_number = 359
4371                    ;  _signed16_a0 := 0xff ^ _signed16_a0
4372                    ;info   359, 2200
4373 0898 09a0          comf    _signed16_a0,f
4374                    ; line_number = 360
4375                    ;  _signed16_a1 := 0 - _signed16_a1
4376                    ;info   360, 2201
4377 0899 0821          movf    _signed16_a1,w
4378 089a 3c00          sublw   0
4379 089b 00a1          movwf   _signed16_a1
4380                    ; line_number = 361
4381                    ;  if _c start
4382                    ;info   361, 2204
4383                    ; =>bit_code_emit@symbol(): sym=_c
4384                    ; 1TEST: Single test with code in skip slot
4385 089c 1803          btfsc   _c___byte, _c___bit
4386                    ; line_number = 362
4387                    ; _signed16_a0 := _signed16_a0 + 1    
4388                    ;info   362, 2205
4389 089d 0aa0          incf    _signed16_a0,f
4390            
4391            
4392                    ; Recombine size1 = 0 || size2 = 0
4393                    ; line_number = 361
4394                    ;  if _c done
4395                    ; delay after procedure statements=non-uniform
4396                    ; Implied return
4397 089e 3400          retlw   0
4398            
4399            
4400            
4401            
4402                    ; line_number = 365
4403                    ;info   365, 2207
4404                    ; procedure _signed16_pointer_swap
4405   089f :   _signed16_pointer_swap:
4406                    ; Last argument is sitting in W; save into argument variable
4407 089f 00b0          movwf   _signed16_pointer_swap__pointer
4408                    ; delay=4294967295
4409                    ; line_number = 366
4410                    ; argument pointer byte
4411 00000030 = _signed16_pointer_swap__pointer equ globals___0+16
4412                    ; line_number = 367
4413                    ;  returns_nothing
4414                    ; line_number = 368
4415                    ;  return_suppress
4416            
4417                    ; # This procedure will swap the signed16 A "register" with {pointer}:
4418            
4419                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4420                    ; line_number = 372
4421                    ;  assemble
4422                    ;info   372, 2208
4423                    ; # Pointer is in W; move it to {_fsr}:
4424                    ; line_number = 374
4425                    ;info   374, 2208
4426 08a0 0084          movwf   _fsr
4427                    ; # Set up {_irp} and _{fsr}:
4428                    ; line_number = 376
4429                    ;info   376, 2209
4430 08a1 1383          bcf     _irp___byte, _irp___bit
4431                    ; line_number = 377
4432                    ;info   377, 2210
4433 08a2 0d84          rlf     _fsr,f
4434                    ; line_number = 378
4435                    ;info   378, 2211
4436 08a3 1803          btfsc   _c___byte, _c___bit
4437                    ; line_number = 379
4438                    ;info   379, 2212
4439 08a4 1783          bsf     _irp___byte, _irp___bit
4440                    ; line_number = 380
4441                    ;info   380, 2213
4442 08a5 1004          bcf     _fsr, 0
4443            
4444                    ; # Swap {pointer} with {_signed16_a0}:
4445                    ; line_number = 383
4446                    ;info   383, 2214
4447 08a6 0800          movf    _indf,w
4448                    ; line_number = 384
4449                    ;info   384, 2215
4450 08a7 06a0          xorwf   _signed16_a0,f
4451                    ; line_number = 385
4452                    ;info   385, 2216
4453 08a8 0620          xorwf   _signed16_a0,w
4454                    ; line_number = 386
4455                    ;info   386, 2217
4456 08a9 06a0          xorwf   _signed16_a0,f
4457                    ; line_number = 387
4458                    ;info   387, 2218
4459 08aa 0080          movwf   _indf
4460            
4461                    ; # Swap {pointer}+1 with {_signed16_a1}:
4462                    ; line_number = 390
4463                    ;info   390, 2219
4464 08ab 0a84          incf    _fsr,f
4465                    ; line_number = 391
4466                    ;info   391, 2220
4467 08ac 0800          movf    _indf,w
4468                    ; line_number = 392
4469                    ;info   392, 2221
4470 08ad 06a1          xorwf   _signed16_a1,f
4471                    ; line_number = 393
4472                    ;info   393, 2222
4473 08ae 0621          xorwf   _signed16_a1,w
4474                    ; line_number = 394
4475                    ;info   394, 2223
4476 08af 06a1          xorwf   _signed16_a1,f
4477                    ; line_number = 395
4478                    ;info   395, 2224
4479 08b0 0080          movwf   _indf
4480                    ; line_number = 396
4481                    ;info   396, 2225
4482 08b1 0008          return  
4483            
4484            
4485                    ; delay after procedure statements=non-uniform
4486                    ; Return instruction suppressed by 'return_suppress'
4487            
4488            
4489            
4490            
4491 00000032 = _signed16_from_byte__0return equ globals___0+18
4492                    ; line_number = 399
4493                    ;info   399, 2226
4494                    ; procedure _signed16_from_byte
4495   08b2 :   _signed16_from_byte:
4496                    ; Last argument is sitting in W; save into argument variable
4497 08b2 00b1          movwf   _signed16_from_byte__number
4498                    ; delay=4294967295
4499                    ; line_number = 400
4500                    ; argument number byte
4501 00000031 = _signed16_from_byte__number equ globals___0+17
4502                    ; line_number = 401
4503                    ;  returns signed16
4504            
4505                    ; # This procedure will convert {number} into a signed16 and return it.
4506            
4507                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4508                    ; line_number = 405
4509                    ;  _signed16_a0 := 0
4510                    ;info   405, 2227
4511 08b3 01a0          clrf    _signed16_a0
4512                    ; line_number = 406
4513                    ;  _signed16_a1 := number
4514                    ;info   406, 2228
4515 08b4 0831          movf    _signed16_from_byte__number,w
4516 08b5 00a1          movwf   _signed16_a1
4517                    ; line_number = 407
4518                    ;  assemble
4519                    ;info   407, 2230
4520                    ; line_number = 408
4521                    ;info   408, 2230
4522 08b6 3019          movlw   _signed16_from_byte__0return>>1
4523                    ; line_number = 409
4524                    ;info   409, 2231
4525 08b7 208b          call    _signed16_pointer_store
4526                    ; line_number = 410
4527                    ;info   410, 2232
4528 08b8 3419          retlw   _signed16_from_byte__0return>>1
4529            
4530            
4531                    ; delay after procedure statements=non-uniform
4532                    ; Exiting procedure with no return(s); infinite loop fail
4533   08b9 :   _signed16_from_byte__1:
4534 08b9 28b9          goto    _signed16_from_byte__1
4535            
4536            
4537            
4538            
4539 00000036 = _signed16_from_byte2__0return equ globals___0+22
4540                    ; line_number = 413
4541                    ;info   413, 2234
4542                    ; procedure _signed16_from_byte2
4543   08ba :   _signed16_from_byte2:
4544                    ; Last argument is sitting in W; save into argument variable
4545 08ba 00b5          movwf   _signed16_from_byte2__byte2
4546                    ; delay=4294967295
4547                    ; line_number = 414
4548                    ; argument byte1 byte
4549 00000034 = _signed16_from_byte2__byte1 equ globals___0+20
4550                    ; line_number = 415
4551                    ; argument byte2 byte
4552 00000035 = _signed16_from_byte2__byte2 equ globals___0+21
4553                    ; line_number = 416
4554                    ;  returns signed16
4555            
4556                    ; # This procedure will convert {byte1} and {byte2} into a signed16
4557                    ; # and return it.
4558            
4559                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4560                    ; line_number = 421
4561                    ;  _signed16_a0 := byte1
4562                    ;info   421, 2235
4563 08bb 0834          movf    _signed16_from_byte2__byte1,w
4564 08bc 00a0          movwf   _signed16_a0
4565                    ; line_number = 422
4566                    ;  _signed16_a1 := byte2
4567                    ;info   422, 2237
4568 08bd 0835          movf    _signed16_from_byte2__byte2,w
4569 08be 00a1          movwf   _signed16_a1
4570                    ; line_number = 423
4571                    ;  assemble
4572                    ;info   423, 2239
4573                    ; line_number = 424
4574                    ;info   424, 2239
4575 08bf 301b          movlw   _signed16_from_byte2__0return>>1
4576                    ; line_number = 425
4577                    ;info   425, 2240
4578 08c0 208b          call    _signed16_pointer_store
4579                    ; line_number = 426
4580                    ;info   426, 2241
4581 08c1 341b          retlw   _signed16_from_byte2__0return>>1
4582            
4583            
4584                    ; delay after procedure statements=non-uniform
4585                    ; Exiting procedure with no return(s); infinite loop fail
4586   08c2 :   _signed16_from_byte2__1:
4587 08c2 28c2          goto    _signed16_from_byte2__1
4588            
4589            
4590            
4591            
4592                    ; line_number = 429
4593                    ;info   429, 2243
4594                    ; procedure _signed16_to_byte
4595   08c3 :   _signed16_to_byte:
4596                    ; line_number = 430
4597                    ; argument number signed16
4598 00000038 = _signed16_to_byte__number equ globals___0+24
4599                    ; line_number = 431
4600                    ;  returns byte
4601            
4602                    ; # This procedure will convert {number} into a 8-bit integer and return it.
4603            
4604                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4605                    ; line_number = 435
4606                    ;  assemble
4607                    ;info   435, 2243
4608                    ; # Get the argument stored into the signed16 "A" register:
4609                    ; line_number = 437
4610                    ;info   437, 2243
4611 08c3 301c          movlw   _signed16_to_byte__number>>1
4612                    ; line_number = 438
4613                    ;info   438, 2244
4614 08c4 2000          call    _signed16_pointer_load
4615                    ; line_number = 439
4616                    ; return _signed16_a1 start
4617                    ; line_number = 439
4618                    ;info   439, 2245
4619 08c5 0821          movf    _signed16_a1,w
4620 08c6 0008          return  
4621                    ; line_number = 439
4622                    ; return _signed16_a1 done
4623            
4624            
4625                    ; delay after procedure statements=non-uniform
4626            
4627            
4628            
4629            
4630                    ; line_number = 442
4631                    ;info   442, 2247
4632                    ; procedure _signed16_byte_high
4633   08c7 :   _signed16_byte_high:
4634                    ; line_number = 443
4635                    ; argument number signed16
4636 0000003a = _signed16_byte_high__number equ globals___0+26
4637                    ; line_number = 444
4638                    ;  returns byte
4639            
4640                    ; # This procedure will return the high 8 bits of {number}.
4641            
4642                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4643                    ; line_number = 448
4644                    ;  assemble
4645                    ;info   448, 2247
4646                    ; # Get the argument stored into the signed16 "A" register:
4647                    ; line_number = 450
4648                    ;info   450, 2247
4649 08c7 301d          movlw   _signed16_byte_high__number>>1
4650                    ; line_number = 451
4651                    ;info   451, 2248
4652 08c8 2000          call    _signed16_pointer_load
4653                    ; line_number = 452
4654                    ; return _signed16_a0 start
4655                    ; line_number = 452
4656                    ;info   452, 2249
4657 08c9 0820          movf    _signed16_a0,w
4658 08ca 0008          return  
4659                    ; line_number = 452
4660                    ; return _signed16_a0 done
4661            
4662            
4663                    ; delay after procedure statements=non-uniform
4664            
4665            
4666            
4667            
4668                    ; line_number = 455
4669                    ;info   455, 2251
4670                    ; procedure _signed16_byte_low
4671   08cb :   _signed16_byte_low:
4672                    ; line_number = 456
4673                    ; argument number signed16
4674 0000003c = _signed16_byte_low__number equ globals___0+28
4675                    ; line_number = 457
4676                    ;  returns byte
4677            
4678                    ; # This procedure will return the low 8 bits of {number}.
4679            
4680                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4681                    ; line_number = 461
4682                    ;  assemble
4683                    ;info   461, 2251
4684                    ; # Get the argument stored into the signed16 "A" register:
4685                    ; line_number = 463
4686                    ;info   463, 2251
4687 08cb 301e          movlw   _signed16_byte_low__number>>1
4688                    ; line_number = 464
4689                    ;info   464, 2252
4690 08cc 2000          call    _signed16_pointer_load
4691                    ; line_number = 465
4692                    ; return _signed16_a1 start
4693                    ; line_number = 465
4694                    ;info   465, 2253
4695 08cd 0821          movf    _signed16_a1,w
4696 08ce 0008          return  
4697                    ; line_number = 465
4698                    ; return _signed16_a1 done
4699            
4700            
4701                    ; delay after procedure statements=non-uniform
4702            
4703            
4704            
4705            
4706                    ; line_number = 468
4707                    ;info   468, 2255
4708                    ; procedure _signed16_equals
4709   08cf :   _signed16_equals:
4710                    ; arguments_none
4711                    ; line_number = 470
4712                    ;  returns_nothing
4713            
4714                    ; # This procedure will set the Z bit if register "A" is zero.
4715            
4716                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4717                    ; line_number = 474
4718                    ;  assemble
4719                    ;info   474, 2255
4720                    ; line_number = 475
4721                    ;info   475, 2255
4722 08cf 0820          movf    _signed16_a0,w
4723                    ; line_number = 476
4724                    ;info   476, 2256
4725 08d0 0421          iorwf   _signed16_a1,w
4726                    ; # Return is implicit
4727            
4728            
4729                    ; delay after procedure statements=non-uniform
4730                    ; Implied return
4731 08d1 3400          retlw   0
4732            
4733            
4734            
4735            
4736                    ; line_number = 480
4737                    ;info   480, 2258
4738                    ; procedure _signed16_not_equal
4739   08d2 :   _signed16_not_equal:
4740                    ; arguments_none
4741                    ; line_number = 482
4742                    ;  returns_nothing
4743            
4744                    ; # This procedure will set the Z bit if register "A" is non-zero.
4745            
4746                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4747                    ; line_number = 486
4748                    ;  assemble
4749                    ;info   486, 2258
4750                    ; line_number = 487
4751                    ;info   487, 2258
4752 08d2 0820          movf    _signed16_a0,w
4753                    ; line_number = 488
4754                    ;info   488, 2259
4755 08d3 0421          iorwf   _signed16_a1,w
4756                    ; line_number = 489
4757                    ; if _z start
4758                    ;info   489, 2260
4759                    ; =>bit_code_emit@symbol(): sym=_z
4760                    ; No 1TEST: true.size=2 false.size=0
4761                    ; No 2TEST: true.size=2 false.size=0
4762                    ; 1GOTO: Single test with GOTO
4763 08d4 1d03          btfss   _z___byte, _z___bit
4764 08d5 28d8          goto    _signed16_not_equal__1
4765                    ; line_number = 490
4766                    ; _z := _false
4767                    ;info   490, 2262
4768 08d6 1103          bcf     _z___byte, _z___bit
4769                    ; line_number = 491
4770                    ;  return start
4771                    ; line_number = 491
4772                    ;info   491, 2263
4773 08d7 3400          retlw   0
4774                    ; line_number = 491
4775                    ;  return done
4776                    ; Recombine size1 = 0 || size2 = 0
4777   08d8 :   _signed16_not_equal__1:
4778                    ; line_number = 489
4779                    ; if _z done
4780                    ; line_number = 492
4781                    ; _z := _true
4782                    ;info   492, 2264
4783 08d8 1503          bsf     _z___byte, _z___bit
4784                    ; # Return is implicit
4785            
4786            
4787                    ; delay after procedure statements=non-uniform
4788                    ; Implied return
4789 08d9 3400          retlw   0
4790            
4791            
4792            
4793            
4794                    ; line_number = 496
4795                    ;info   496, 2266
4796                    ; procedure _signed16_less_than
4797   08da :   _signed16_less_than:
4798                    ; arguments_none
4799                    ; line_number = 498
4800                    ;  returns_nothing
4801            
4802                    ; # This procedure will set the Z bit if register "A" is non-zero and
4803                    ; # positive.
4804            
4805                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4806                    ; line_number = 503
4807                    ;  _z := _false
4808                    ;info   503, 2266
4809 08da 1103          bcf     _z___byte, _z___bit
4810                    ; line_number = 504
4811                    ;  if _signed16_a0@7 start
4812                    ;info   504, 2267
4813 00000020 = _signed16_less_than__select__1___byte equ _signed16_a0
4814 00000007 = _signed16_less_than__select__1___bit equ 7
4815                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than__select__1
4816                    ; 1TEST: Single test with code in skip slot
4817 08db 1ba0          btfsc   _signed16_less_than__select__1___byte, _signed16_less_than__select__1___bit
4818                    ; line_number = 505
4819                    ; _z := _true
4820                    ;info   505, 2268
4821 08dc 1503          bsf     _z___byte, _z___bit
4822                    ; Recombine size1 = 0 || size2 = 0
4823                    ; line_number = 504
4824                    ;  if _signed16_a0@7 done
4825                    ; # Return is implicit
4826            
4827            
4828                    ; delay after procedure statements=non-uniform
4829                    ; Implied return
4830 08dd 3400          retlw   0
4831            
4832            
4833            
4834            
4835                    ; line_number = 509
4836                    ;info   509, 2270
4837                    ; procedure _signed16_less_than_or_equal
4838   08de :   _signed16_less_than_or_equal:
4839                    ; arguments_none
4840                    ; line_number = 511
4841                    ;  returns_nothing
4842            
4843                    ; # This procedure will set the Z bit if register "A" is zero or positive.
4844            
4845                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4846                    ; line_number = 515
4847                    ;  assemble
4848                    ;info   515, 2270
4849                    ; line_number = 516
4850                    ;info   516, 2270
4851 08de 0821          movf    _signed16_a1,w
4852                    ; line_number = 517
4853                    ;info   517, 2271
4854 08df 0420          iorwf   _signed16_a0,w
4855                    ; line_number = 518
4856                    ; if _z start
4857                    ;info   518, 2272
4858                    ; =>bit_code_emit@symbol(): sym=_z
4859                    ; 1TEST: Single test with code in skip slot
4860 08e0 1903          btfsc   _z___byte, _z___bit
4861                    ; line_number = 519
4862                    ; return start
4863                    ; line_number = 519
4864                    ;info   519, 2273
4865 08e1 3400          retlw   0
4866                    ; line_number = 519
4867                    ; return done
4868                    ; Recombine size1 = 0 || size2 = 0
4869                    ; line_number = 518
4870                    ; if _z done
4871                    ; # _z == _false
4872                    ; line_number = 521
4873                    ;  if _signed16_a0@7 start
4874                    ;info   521, 2274
4875 00000020 = _signed16_less_than_or_equal__select__1___byte equ _signed16_a0
4876 00000007 = _signed16_less_than_or_equal__select__1___bit equ 7
4877                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than_or_equal__select__1
4878                    ; 1TEST: Single test with code in skip slot
4879 08e2 1ba0          btfsc   _signed16_less_than_or_equal__select__1___byte, _signed16_less_than_or_equal__select__1___bit
4880                    ; line_number = 522
4881                    ; _z := _true
4882                    ;info   522, 2275
4883 08e3 1503          bsf     _z___byte, _z___bit
4884                    ; Recombine size1 = 0 || size2 = 0
4885                    ; line_number = 521
4886                    ;  if _signed16_a0@7 done
4887                    ; # Return is implicit
4888            
4889            
4890                    ; delay after procedure statements=non-uniform
4891                    ; Implied return
4892 08e4 3400          retlw   0
4893            
4894            
4895            
4896            
4897                    ; line_number = 526
4898                    ;info   526, 2277
4899                    ; procedure _signed16_greater_than
4900   08e5 :   _signed16_greater_than:
4901                    ; arguments_none
4902                    ; line_number = 528
4903                    ;  returns_nothing
4904            
4905                    ; # This procedure will set the Z bit if register "A" is non-zero and
4906                    ; # positive.
4907            
4908                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4909                    ; line_number = 533
4910                    ;  assemble
4911                    ;info   533, 2277
4912                    ; line_number = 534
4913                    ;info   534, 2277
4914 08e5 0820          movf    _signed16_a0,w
4915                    ; line_number = 535
4916                    ;info   535, 2278
4917 08e6 0421          iorwf   _signed16_a1,w
4918                    ; line_number = 536
4919                    ; if _z start
4920                    ;info   536, 2279
4921                    ; =>bit_code_emit@symbol(): sym=_z
4922                    ; No 1TEST: true.size=2 false.size=0
4923                    ; No 2TEST: true.size=2 false.size=0
4924                    ; 1GOTO: Single test with GOTO
4925 08e7 1d03          btfss   _z___byte, _z___bit
4926 08e8 28eb          goto    _signed16_greater_than__1
4927                    ; line_number = 537
4928                    ; _z := _false
4929                    ;info   537, 2281
4930 08e9 1103          bcf     _z___byte, _z___bit
4931                    ; line_number = 538
4932                    ;  return     start
4933                    ; line_number = 538
4934                    ;info   538, 2282
4935 08ea 3400          retlw   0
4936                    ; line_number = 538
4937                    ;  return     done
4938                    ; Recombine size1 = 0 || size2 = 0
4939   08eb :   _signed16_greater_than__1:
4940                    ; line_number = 536
4941                    ; if _z done
4942                    ; # _z == _false
4943                    ; line_number = 540
4944                    ;  if !(_signed16_a0@7) start
4945                    ;info   540, 2283
4946 00000020 = _signed16_greater_than__select__2___byte equ _signed16_a0
4947 00000007 = _signed16_greater_than__select__2___bit equ 7
4948                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than__select__2
4949                    ; 1TEST: Single test with code in skip slot
4950 08eb 1fa0          btfss   _signed16_greater_than__select__2___byte, _signed16_greater_than__select__2___bit
4951                    ; line_number = 541
4952                    ; _z := _true
4953                    ;info   541, 2284
4954 08ec 1503          bsf     _z___byte, _z___bit
4955                    ; Recombine size1 = 0 || size2 = 0
4956                    ; line_number = 540
4957                    ;  if !(_signed16_a0@7) done
4958                    ; # Return is implicit:
4959            
4960            
4961                    ; delay after procedure statements=non-uniform
4962                    ; Implied return
4963 08ed 3400          retlw   0
4964            
4965            
4966            
4967            
4968                    ; line_number = 545
4969                    ;info   545, 2286
4970                    ; procedure _signed16_greater_than_or_equal
4971   08ee :   _signed16_greater_than_or_equal:
4972                    ; arguments_none
4973                    ; line_number = 547
4974                    ;  returns_nothing
4975            
4976                    ; # This procedure will set the Z bit if register "A" is zero or positive.
4977            
4978                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
4979                    ; line_number = 551
4980                    ;  _z := _true
4981                    ;info   551, 2286
4982 08ee 1503          bsf     _z___byte, _z___bit
4983                    ; line_number = 552
4984                    ;  if _signed16_a0@7 start
4985                    ;info   552, 2287
4986 00000020 = _signed16_greater_than_or_equal__select__1___byte equ _signed16_a0
4987 00000007 = _signed16_greater_than_or_equal__select__1___bit equ 7
4988                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than_or_equal__select__1
4989                    ; 1TEST: Single test with code in skip slot
4990 08ef 1ba0          btfsc   _signed16_greater_than_or_equal__select__1___byte, _signed16_greater_than_or_equal__select__1___bit
4991                    ; line_number = 553
4992                    ; _z := _false
4993                    ;info   553, 2288
4994 08f0 1103          bcf     _z___byte, _z___bit
4995                    ; Recombine size1 = 0 || size2 = 0
4996                    ; line_number = 552
4997                    ;  if _signed16_a0@7 done
4998                    ; # Return is implicit:
4999            
5000            
5001                    ; delay after procedure statements=non-uniform
5002                    ; Implied return
5003 08f1 3400          retlw   0
5004            
5005            
5006            
5007            
5008                    ; line_number = 578
5009                    ;info   578, 2290
5010                    ; procedure _signed16_divide_raw
5011   08f2 :   _signed16_divide_raw:
5012                    ; arguments_none
5013                    ; line_number = 580
5014                    ;  returns_nothing
5015                    ; line_number = 581
5016                    ;  return_suppress
5017            
5018                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
5019                    ; line_number = 583
5020                    ;  assemble
5021                    ;info   583, 2290
5022                    ; line_number = 584
5023                    ;info   584, 2290
5024 08f2 211e          call    _signed16_divide_s_sign
5025            
5026                    ; #Initialize:
5027                    ; line_number = 587
5028                    ;info   587, 2291
5029 08f3 3010          movlw   16
5030                    ; line_number = 588
5031                    ;info   588, 2292
5032 08f4 00a9          movwf   _signed16_count
5033                    ; line_number = 589
5034                    ;info   589, 2293
5035 08f5 0820          movf    _signed16_a0,w
5036                    ; line_number = 590
5037                    ;info   590, 2294
5038 08f6 00a7          movwf   _signed16_temp0
5039                    ; line_number = 591
5040                    ;info   591, 2295
5041 08f7 0821          movf    _signed16_a1,w
5042                    ; line_number = 592
5043                    ;info   592, 2296
5044 08f8 00a6          movwf   _signed16_temp1
5045                    ; line_number = 593
5046                    ;info   593, 2297
5047 08f9 01a0          clrf    _signed16_a0
5048                    ; line_number = 594
5049                    ;info   594, 2298
5050 08fa 01a1          clrf    _signed16_a1
5051                    ; line_number = 595
5052                    ;info   595, 2299
5053 08fb 01a5          clrf    _signed16_rem0
5054                    ; line_number = 596
5055                    ;info   596, 2300
5056 08fc 01a4          clrf    _signed16_rem1
5057                    ; # Loop 16 times usinge {_signed16_count}:
5058                    ; line_number = 598
5059   08fd :   _signed16_divide_dloop:
5060                    ; line_number = 599
5061                    ;info   599, 2301
5062 08fd 1003          bcf     _c___byte, _c___bit
5063                    ; line_number = 600
5064                    ;info   600, 2302
5065 08fe 0da6          rlf     _signed16_temp1,f
5066                    ; line_number = 601
5067                    ;info   601, 2303
5068 08ff 0da7          rlf     _signed16_temp0,f
5069                    ; line_number = 602
5070                    ;info   602, 2304
5071 0900 0da4          rlf     _signed16_rem1,f
5072                    ; line_number = 603
5073                    ;info   603, 2305
5074 0901 0da5          rlf     _signed16_rem0,f
5075                    ; line_number = 604
5076                    ;info   604, 2306
5077 0902 0822          movf    _signed16_b0,w
5078                    ; line_number = 605
5079                    ;info   605, 2307
5080 0903 0225          subwf   _signed16_rem0,w
5081                    ; line_number = 606
5082                    ;info   606, 2308
5083 0904 1d03          btfss   _z___byte, _z___bit
5084                    ; line_number = 607
5085                    ;info   607, 2309
5086 0905 2908          goto    _signed16_divide_no_check
5087                    ; line_number = 608
5088                    ;info   608, 2310
5089 0906 0823          movf    _signed16_b1,w
5090                    ; line_number = 609
5091                    ;info   609, 2311
5092 0907 0224          subwf   _signed16_rem1,w
5093                    ; line_number = 610
5094   0908 :   _signed16_divide_no_check:
5095                    ; line_number = 611
5096                    ;info   611, 2312
5097 0908 1c03          btfss   _c___byte, _c___bit
5098                    ; line_number = 612
5099                    ;info   612, 2313
5100 0909 2911          goto    _signed16_divide_no_go
5101                    ; line_number = 613
5102                    ;info   613, 2314
5103 090a 0823          movf    _signed16_b1,w
5104                    ; line_number = 614
5105                    ;info   614, 2315
5106 090b 02a4          subwf   _signed16_rem1,f
5107                    ; line_number = 615
5108                    ;info   615, 2316
5109 090c 1c03          btfss   _c___byte, _c___bit
5110                    ; line_number = 616
5111                    ;info   616, 2317
5112 090d 03a5          decf    _signed16_rem0,f
5113                    ; line_number = 617
5114                    ;info   617, 2318
5115 090e 0822          movf    _signed16_b0,w
5116                    ; line_number = 618
5117                    ;info   618, 2319
5118 090f 02a5          subwf   _signed16_rem0,f
5119                    ; line_number = 619
5120                    ;info   619, 2320
5121 0910 1403          bsf     _c___byte, _c___bit
5122                    ; line_number = 620
5123   0911 :   _signed16_divide_no_go:
5124                    ; line_number = 621
5125                    ;info   621, 2321
5126 0911 0da1          rlf     _signed16_a1,f
5127                    ; line_number = 622
5128                    ;info   622, 2322
5129 0912 0da0          rlf     _signed16_a0,f
5130                    ; line_number = 623
5131                    ;info   623, 2323
5132 0913 0ba9          decfsz  _signed16_count,f
5133                    ; line_number = 624
5134                    ;info   624, 2324
5135 0914 28fd          goto    _signed16_divide_dloop
5136            
5137                    ; line_number = 626
5138                    ;info   626, 2325
5139 0915 1fa8          btfss   _signed16_sign, 7
5140                    ; line_number = 627
5141                    ;info   627, 2326
5142 0916 3400          retlw   0
5143                    ; line_number = 628
5144                    ;info   628, 2327
5145 0917 2918          goto    _signed16_divide_neg_b
5146            
5147                    ; line_number = 630
5148   0918 :   _signed16_divide_neg_b:
5149                    ; line_number = 631
5150                    ;info   631, 2328
5151 0918 09a3          comf    _signed16_b1,f
5152                    ; line_number = 632
5153                    ;info   632, 2329
5154 0919 0aa3          incf    _signed16_b1,f
5155                    ; line_number = 633
5156                    ;info   633, 2330
5157 091a 1903          btfsc   _z___byte, _z___bit
5158                    ; line_number = 634
5159                    ;info   634, 2331
5160 091b 03a2          decf    _signed16_b0,f
5161                    ; line_number = 635
5162                    ;info   635, 2332
5163 091c 09a2          comf    _signed16_b0,f
5164                    ; line_number = 636
5165                    ;info   636, 2333
5166 091d 3400          retlw   0
5167            
5168                    ; line_number = 638
5169   091e :   _signed16_divide_s_sign:
5170                    ; line_number = 639
5171                    ;info   639, 2334
5172 091e 0822          movf    _signed16_b0,w
5173                    ; line_number = 640
5174                    ;info   640, 2335
5175 091f 0620          xorwf   _signed16_a0,w
5176                    ; line_number = 641
5177                    ;info   641, 2336
5178 0920 00a8          movwf   _signed16_sign
5179                    ; line_number = 642
5180                    ;info   642, 2337
5181 0921 1fa0          btfss   _signed16_a0, 7
5182                    ; line_number = 643
5183                    ;info   643, 2338
5184 0922 2928          goto    _signed16_divide_check_a
5185            
5186                    ; line_number = 645
5187                    ;info   645, 2339
5188 0923 09a1          comf    _signed16_a1,f
5189                    ; line_number = 646
5190                    ;info   646, 2340
5191 0924 0aa1          incf    _signed16_a1,f
5192                    ; line_number = 647
5193                    ;info   647, 2341
5194 0925 1903          btfsc   _z___byte, _z___bit
5195                    ; line_number = 648
5196                    ;info   648, 2342
5197 0926 03a0          decf    _signed16_a0,f
5198                    ; line_number = 649
5199                    ;info   649, 2343
5200 0927 09a0          comf    _signed16_a0,f
5201            
5202                    ; line_number = 651
5203   0928 :   _signed16_divide_check_a:
5204                    ; line_number = 652
5205                    ;info   652, 2344
5206 0928 1fa2          btfss   _signed16_b0, 7
5207                    ; line_number = 653
5208                    ;info   653, 2345
5209 0929 3400          retlw   0
5210                    ; line_number = 654
5211                    ;info   654, 2346
5212 092a 2918          goto    _signed16_divide_neg_b
5213            
5214                    ; delay after procedure statements=non-uniform
5215                    ; Return instruction suppressed by 'return_suppress'
5216            
5217            
5218            
5219            
5220                    ; Configuration bits
5221                    ; address = 0x2007, fill = 0x0
5222                    ; cp = off (0x2000)
5223                    ; ccpmx = ccp1_rb0 (0x1000)
5224                    ; debug = off (0x800)
5225                    ; wrt = off (0x600)
5226                    ; cpd = off (0x100)
5227                    ; lvp = off (0x0)
5228                    ; boden = off (0x0)
5229                    ; mclre = off (0x0)
5230                    ; pwrte = off (0x8)
5231                    ; wdte = off (0x0)
5232                    ; fosc = hs (0x2)
5233                    ; 16138 = 0x3f0a
5234                    ; 8199 = 0x2007
5235   3f0a =           __config 8199, 16138
5236                    ; Configuration bits
5237                    ; address = 0x2008, fill = 0x3ffc
5238                    ; ieso = off (0x0)
5239                    ; fcmen = off (0x0)
5240                    ; 16380 = 0x3ffc
5241                    ; 8200 = 0x2008
5242   3ffc =           __config 8200, 16380
5243                    ; Define start addresses for data regions
5244                    ; Region="shared___globals" Address=112" Size=16 Bytes=4 Bits=0 Available=12
5245                    ; Region="globals___0" Address=32" Size=80 Bytes=73 Bits=3 Available=6
5246                    ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
5247                    ; Region="globals___2" Address=272" Size=96 Bytes=0 Bits=0 Available=96
5248                    ; Region="globals___3" Address=400" Size=96 Bytes=0 Bits=0 Available=96
5249                    end
