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