1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 2047
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000070 = shared___globals equ 112
7    00000020 = globals___0 equ 32
8    000000a0 = globals___1 equ 160
9    00000120 = globals___2 equ 288
10   00000000 = __indf equ 0
11   00000002 = __pcl equ 2
12   00000003 = __status equ 3
13   00000004 = __fsr equ 4
14   00000003 = __c___byte equ 3
15   00000000 = __c___bit equ 0
16   00000003 = __z___byte equ 3
17   00000002 = __z___bit equ 2
18   00000003 = __rp0___byte equ 3
19   00000005 = __rp0___bit equ 5
20   00000003 = __rp1___byte equ 3
21   00000006 = __rp1___bit equ 6
22   00000003 = __irp___byte equ 3
23   00000007 = __irp___bit equ 7
24   0000000a = __pclath equ 10
25   0000000a = __cb0___byte equ 10
26   00000003 = __cb0___bit equ 3
27   0000000a = __cb1___byte equ 10
28   00000004 = __cb1___bit equ 4
29              
30                      ; # Copyright (c) 2006-2009 by Wayne C. Gramlich
31                      ; # All rights reserved.
32              
33                      ; # This code implements the firmware for the MidiMotor1E.
34                      ; # The MidiMotor1E differs from the MidiMotor1 in that the '1E has
35                      ; # two extra connectors N2 and N4.  N2 is a 5 pin connector that can
36                      ; # be used to read in two channels of quardarature position (plus an
37                      ; # an index pulse.)  Alternatively, N2 can be used to read in an
38                      ; # analog signal between 0 and 5V for an absolute position.  N4 is
39                      ; # used as an active low limit switch that can be used to term off
40                      ; # the motor.
41                      ; #
42                      ; # The architecture of this firmware is actually pretty complicated.
43                      ; # The pulse width modulation is controlled by the Timer0 and Timer1
44                      ; # modules.  The quadrature encoding and limit switch is delt with
45                      ; # via some pins on Port A.  The UART is responsible for dealing
46                      ; # with RoboBricks2 bus I/O.  The A/D converter is responsible
47                      ; # for processing Analog to digital conversions.  The code in the
48                      ; # main loop is responsible for running a PID (Proportional,
49                      ; # Integral, Derivative) motor control loop.  The PID algorithm is
50                      ; # done using 32-bit floating point arithmetic.  Heavy use of interrupts
51                      ; # is used to ensure that everything works in a timely fashion.
52                      ; #
53                      ; # There are three main routines -- interrupt(), main() and uart_manage().
54                      ; # The interrupt() routine is responsible for processing all interrupt
55                      ; # events.  UART processing is sufficiently complicated, that UART input
56                      ; # is quickly stuffed into a temporary buffer, to minimize intterupt
57                      ; # latency.  Further UART process is handled by the uart_manage() routine.
58                      ; # Calls to the uart_manage() routine are sprinkled throught the main
59                      ; # loop in main() to ensure that any buffered uart commands are processed
60                      ; # fairly quickly.
61              
62                      ; # We use the PIC16F688 for this module:
63                      ; buffer = 'midimotor1e'
64                      ; line_number = 36
65                      ; library _pic16f688 entered
66              
67                      ; # Copyright (c) 2004-2006 by Wayne C. Gramlich
68                      ; # All rights reserved.
69              
70                      ; buffer = '_pic16f688'
71                      ; line_number = 6
72                      ; processor pic16f688
73                      ; line_number = 7
74                      ; configure_address 0x2007
75                      ; line_number = 8
76                      ;  configure_fill 0x3000
77                      ; line_number = 9
78                      ;  configure_option fcmen: on = 0x800
79                      ; line_number = 10
80                      ;  configure_option fcmen: off = 0x000
81                      ; line_number = 11
82                      ;  configure_option ieso: on = 0x400
83                      ; line_number = 12
84                      ;  configure_option ieso: off = 0x000
85                      ; line_number = 13
86                      ;  configure_option boden: on = 0x300
87                      ; line_number = 14
88                      ;  configure_option boden: partial = 0x200
89                      ; line_number = 15
90                      ;  configure_option boden: sboden = 0x100
91                      ; line_number = 16
92                      ;  configure_option boden: off = 0x000
93                      ; line_number = 17
94                      ;  configure_option cpd: on = 0x00
95                      ; line_number = 18
96                      ;  configure_option cpd: off = 0x80
97                      ; line_number = 19
98                      ;  configure_option cp: on = 0x00
99                      ; line_number = 20
100                     ;  configure_option cp: off = 0x40
101                     ; line_number = 21
102                     ;  configure_option mclre: on = 0x20
103                     ; line_number = 22
104                     ;  configure_option mclre: off = 0x00
105                     ; line_number = 23
106                     ;  configure_option pwrte: on = 0x00
107                     ; line_number = 24
108                     ;  configure_option pwrte: off = 0x10
109                     ; line_number = 25
110                     ;  configure_option wdte: on = 8
111                     ; line_number = 26
112                     ;  configure_option wdte: off = 0
113                     ; line_number = 27
114                     ;  configure_option fosc: rc_clk = 7
115                     ; line_number = 28
116                     ;  configure_option fosc: rc_no_clk = 6
117                     ; line_number = 29
118                     ;  configure_option fosc: int_clk = 5
119                     ; line_number = 30
120                     ;  configure_option fosc: int_no_clk = 4
121                     ; line_number = 31
122                     ;  configure_option fosc: ec = 3
123                     ; line_number = 32
124                     ;  configure_option fosc: hs = 2
125                     ; line_number = 33
126                     ;  configure_option fosc: xt = 1
127                     ; line_number = 34
128                     ;  configure_option fosc: lp = 0
129             
130                     ; line_number = 36
131                     ;  code_bank 0x0 : 0x7ff
132                     ; line_number = 37
133                     ;  code_bank 0x800 : 0xfff
134                     ; line_number = 38
135                     ;  data_bank 0x0 : 0x7f
136                     ; line_number = 39
137                     ;  data_bank 0x80 : 0xff
138                     ; line_number = 40
139                     ;  data_bank 0x100 : 0x17f
140                     ; line_number = 41
141                     ;  data_bank 0x180 : 0x1ff
142             
143                     ; line_number = 43
144                     ;  global_region 0x20 : 0x6f
145                     ; line_number = 44
146                     ;  icd2_global_region 0x20 : 0x6f
147             
148                     ; line_number = 46
149                     ;  global_region 0xa0 : 0xef
150                     ; line_number = 47
151                     ;  icd2_global_region 0xa0 : 0xef
152             
153                     ; line_number = 49
154                     ;  global_region 0x120 : 0x16f
155                     ; line_number = 50
156                     ;  icd2_global_region 0x120 : 0x164
157             
158                     ; line_number = 52
159                     ;  shared_region 0x70 : 0x7f
160                     ; line_number = 53
161                     ;  icd2_shared_region 0x71 : 0x7f
162             
163                     ; line_number = 55
164                     ;  interrupts_possible
165                     ; line_number = 56
166                     ;  packages pdip=14, soic=14, tssop=14
167                     ; line_number = 57
168                     ;  pin vdd, power_supply
169                     ; line_number = 58
170                     ; pin_bindings pdip=1, soic=1, tssop=1
171                     ; line_number = 59
172                     ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin
173                     ; line_number = 60
174                     ; pin_bindings pdip=2, soic=2, tssop=2
175                     ; line_number = 61
176                     ;  bind_to _porta@5
177                     ; line_number = 62
178                     ;  or_if ra5_in _trisa 32
179                     ; line_number = 63
180                     ;  or_if ra5_nc _trisa 32
181                     ; line_number = 64
182                     ;  or_if ra5_out _trisa 0
183                     ; line_number = 65
184                     ;  or_if osc1 _trisa 32
185                     ; line_number = 66
186                     ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout
187                     ; line_number = 67
188                     ; pin_bindings pdip=3, soic=3, tssop=3
189                     ; line_number = 68
190                     ;  bind_to _porta@4
191                     ; line_number = 69
192                     ;  or_if ra4_in _trisa 16
193                     ; line_number = 70
194                     ;  or_if ra4_nc _trisa 16
195                     ; line_number = 71
196                     ;  or_if ra4_out _trisa 0
197                     ; line_number = 72
198                     ;  or_if an3 _trisa 16
199                     ; line_number = 73
200                     ;  or_if osc2 _trisa 16
201                     ; line_number = 74
202                     ;  or_if ra4_in _ansel 0
203                     ; line_number = 75
204                     ;  or_if ra4_out _ansel 0
205                     ; line_number = 76
206                     ;  or_if an3 _ansel 8
207                     ; line_number = 77
208                     ;  or_if ra4_in _adcon0 0
209                     ; line_number = 78
210                     ;  or_if ra4_out _adcon0 0
211                     ; line_number = 79
212                     ;  or_if an3 _adcon0 1
213                     ; line_number = 80
214                     ; pin ra3_in, ra3_nc, mclr, vpp
215                     ; line_number = 81
216                     ; pin_bindings pdip=4, soic=4, tssop=4
217                     ; line_number = 82
218                     ;  bind_to _porta@3
219                     ; line_number = 83
220                     ;  or_if ra3_in _trisa 8
221                     ; line_number = 84
222                     ;  or_if ra3_nc _trisa 8
223                     ; line_number = 85
224                     ; pin rc5_in, rc5_nc, rc5_out, rx, dt
225                     ; line_number = 86
226                     ; pin_bindings pdip=5, soic=5, tssop=5
227                     ; line_number = 87
228                     ;  bind_to _portc@5
229                     ; line_number = 88
230                     ;  or_if rc5_in _trisc 32
231                     ; line_number = 89
232                     ;  or_if rc5_nc _trisc 32
233                     ; line_number = 90
234                     ;  or_if rc5_out _trisc 0
235                     ; line_number = 91
236                     ;  or_if rx _trisc 32
237                     ; line_number = 92
238                     ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck
239                     ; line_number = 93
240                     ; pin_bindings pdip=6, soic=6, tssop=6
241                     ; line_number = 94
242                     ;  bind_to _portc@4
243                     ; line_number = 95
244                     ;  or_if rc4_in _trisc 16
245                     ; line_number = 96
246                     ;  or_if rc4_nc _trisc 16
247                     ; line_number = 97
248                     ;  or_if rc4_out _trisc 0
249                     ; # The UART documentation says TX must be marked as in input:
250                     ; line_number = 99
251                     ;  or_if tx _trisc 16
252                     ; line_number = 100
253                     ; pin rc3_in, rc3_nc, rc3_out, an7
254                     ; line_number = 101
255                     ; pin_bindings pdip=7, soic=7, tssop=7
256                     ; line_number = 102
257                     ;  bind_to _portc@3
258                     ; line_number = 103
259                     ;  or_if rc3_in _trisc 8
260                     ; line_number = 104
261                     ;  or_if rc3_nc _trisc 8
262                     ; line_number = 105
263                     ;  or_if rc3_out _trisc 0
264                     ; line_number = 106
265                     ;  or_if an7 _trisc 8
266                     ; line_number = 107
267                     ;  or_if rc3_in _ansel 0
268                     ; line_number = 108
269                     ;  or_if rc3_out _ansel 0
270                     ; line_number = 109
271                     ;  or_if an7 _ansel 128
272                     ; line_number = 110
273                     ;  or_if rc3_in _adcon0 0
274                     ; line_number = 111
275                     ;  or_if rc3_out _adcon0 0
276                     ; line_number = 112
277                     ;  or_if an7 _adcon0 1
278                     ; line_number = 113
279                     ; pin rc2_in, rc2_nc, rc2_out, an6
280                     ; line_number = 114
281                     ; pin_bindings pdip=8, soic=8, tssop=8
282                     ; line_number = 115
283                     ;  bind_to _portc@2
284                     ; line_number = 116
285                     ;  or_if rc2_in _trisc 4
286                     ; line_number = 117
287                     ;  or_if rc2_nc _trisc 4
288                     ; line_number = 118
289                     ;  or_if rc2_out _trisc 0
290                     ; line_number = 119
291                     ;  or_if an6 _trisc 4
292                     ; line_number = 120
293                     ;  or_if rc2_in _ansel 0
294                     ; line_number = 121
295                     ;  or_if rc2_out _ansel 0
296                     ; line_number = 122
297                     ;  or_if an6 _ansel 64
298                     ; line_number = 123
299                     ;  or_if rc2_in _adcon0 0
300                     ; line_number = 124
301                     ;  or_if rc2_out _adcon0 0
302                     ; line_number = 125
303                     ;  or_if an6 _adcon0 1
304                     ; line_number = 126
305                     ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus
306                     ; line_number = 127
307                     ; pin_bindings pdip=9, soic=9, tssop=9
308                     ; line_number = 128
309                     ;  bind_to _portc@1
310                     ; line_number = 129
311                     ;  or_if rc1_in _trisc 2
312                     ; line_number = 130
313                     ;  or_if rc1_nc _trisc 2
314                     ; line_number = 131
315                     ;  or_if rc1_out _trisc 0
316                     ; line_number = 132
317                     ;  or_if rc1_in _cmcon0 7
318                     ; line_number = 133
319                     ;  or_if rc1_out _cmcon0 7
320                     ; line_number = 134
321                     ;  or_if an5 _trisc 2
322                     ; line_number = 135
323                     ;  or_if rc1_in _ansel 0
324                     ; line_number = 136
325                     ;  or_if rc1_out _ansel 0
326                     ; line_number = 137
327                     ;  or_if an5 _ansel 32
328                     ; line_number = 138
329                     ;  or_if rc1_in _adcon0 0
330                     ; line_number = 139
331                     ;  or_if rc1_out _adcon0 0
332                     ; line_number = 140
333                     ;  or_if an5 _adcon0 1
334                     ; line_number = 141
335                     ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus
336                     ; line_number = 142
337                     ; pin_bindings pdip=10, soic=10, tssop=10
338                     ; line_number = 143
339                     ;  bind_to _portc@0
340                     ; line_number = 144
341                     ;  or_if rc0_in _trisc 1
342                     ; line_number = 145
343                     ;  or_if rc0_nc _trisc 1
344                     ; line_number = 146
345                     ;  or_if rc0_out _trisc 0
346                     ; line_number = 147
347                     ;  or_if rc0_in _cmcon0 7
348                     ; line_number = 148
349                     ;  or_if rc0_out _cmcon0 7
350                     ; line_number = 149
351                     ;  or_if an4 _trisc 1
352                     ; line_number = 150
353                     ;  or_if rc0_in _ansel 0
354                     ; line_number = 151
355                     ;  or_if rc0_out _ansel 0
356                     ; line_number = 152
357                     ;  or_if an4 _ansel 16
358                     ; line_number = 153
359                     ;  or_if rc0_in _adcon0 0
360                     ; line_number = 154
361                     ;  or_if rc0_out _adcon0 0
362                     ; line_number = 155
363                     ;  or_if an4 _adcon0 1
364                     ; line_number = 156
365                     ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int
366                     ; line_number = 157
367                     ; pin_bindings pdip=11, soic=11, tssop=11
368                     ; line_number = 158
369                     ;  bind_to _porta@2
370                     ; line_number = 159
371                     ;  or_if ra2_in _trisa 4
372                     ; line_number = 160
373                     ;  or_if ra2_nc _trisa 4
374                     ; line_number = 161
375                     ;  or_if ra2_out _trisa 0
376                     ; line_number = 162
377                     ;  or_if an2 _trisa 4
378                     ; line_number = 163
379                     ;  or_if ra2_in _ansel 0
380                     ; line_number = 164
381                     ;  or_if ra2_out _ansel 0
382                     ; line_number = 165
383                     ;  or_if an2 _ansel 4
384                     ; line_number = 166
385                     ;  or_if ra2_in _adcon0 0
386                     ; line_number = 167
387                     ;  or_if ra2_out _adcon0 0
388                     ; line_number = 168
389                     ;  or_if an2 _adcon0 1
390                     ; line_number = 169
391                     ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk
392                     ; line_number = 170
393                     ; pin_bindings pdip=12, soic=12, tssop=12
394                     ; line_number = 171
395                     ;  bind_to _porta@1
396                     ; line_number = 172
397                     ;  or_if ra1_in _trisa 2
398                     ; line_number = 173
399                     ;  or_if ra1_nc _trisa 2
400                     ; line_number = 174
401                     ;  or_if ra1_out _trisa 0
402                     ; line_number = 175
403                     ;  or_if ra1_in _cmcon0 7
404                     ; line_number = 176
405                     ;  or_if ra1_out _cmcon0 7
406                     ; line_number = 177
407                     ;  or_if an1 _trisa 2
408                     ; line_number = 178
409                     ;  or_if vref _trisa 2
410                     ; line_number = 179
411                     ;  or_if ra1_in _ansel 0
412                     ; line_number = 180
413                     ;  or_if ra1_out _ansel 0
414                     ; line_number = 181
415                     ;  or_if an1 _ansel 2
416                     ; line_number = 182
417                     ;  or_if vref _ansel 2
418                     ; line_number = 183
419                     ;  or_if ra1_in _adcon0 0
420                     ; line_number = 184
421                     ;  or_if ra1_out _adcon0 0
422                     ; line_number = 185
423                     ;  or_if an1 _adcon0 1		# Turn on _addon
424                     ; line_number = 186
425                     ;  or_if vref _adcon0 1		# Turn on _addon
426                     ; line_number = 187
427                     ;  or_if vref _adcon0 64		# Turn of _vcfg
428                     ; line_number = 188
429                     ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu
430                     ; line_number = 189
431                     ; pin_bindings pdip=13, soic=13, tssop=13
432                     ; line_number = 190
433                     ;  bind_to _porta@0
434                     ; line_number = 191
435                     ;  or_if ra0_in _trisa 1
436                     ; line_number = 192
437                     ;  or_if ra0_nc _trisa 1
438                     ; line_number = 193
439                     ;  or_if ra0_out _trisa 0
440                     ; line_number = 194
441                     ;  or_if ra0_in _cmcon0 7
442                     ; line_number = 195
443                     ;  or_if ra0_out _cmcon0 7
444                     ; line_number = 196
445                     ;  or_if an0 _trisa 1
446                     ; line_number = 197
447                     ;  or_if ra0_in _ansel 0
448                     ; line_number = 198
449                     ;  or_if ra0_out _ansel 0
450                     ; line_number = 199
451                     ;  or_if an0 _ansel 1
452                     ; line_number = 200
453                     ;  or_if ra0_in _adcon0 0
454                     ; line_number = 201
455                     ;  or_if ra0_out _adcon0 0
456                     ; line_number = 202
457                     ;  or_if an0 _adcon0 1
458                     ; line_number = 203
459                     ; pin vss, ground
460                     ; line_number = 204
461                     ; pin_bindings pdip=14, soic=14, tssop=14
462             
463                     ; line_number = 206
464                     ; library _standard entered
465             
466                     ; # Copyright (c) 2006 by Wayne C. Gramlich
467                     ; # All rights reserved.
468             
469                     ; # Standard definition for uCL:
470             
471                     ; buffer = '_standard'
472                     ; line_number = 8
473                     ; constant _true = (1 = 1)
474  00000001 = _true equ 1
475                     ; line_number = 9
476                     ; constant _false = (0 != 0)
477  00000000 = _false equ 0
478             
479             
480                     ; buffer = '_pic16f688'
481                     ; line_number = 206
482                     ; library _standard exited
483             
484             
485                     ; # Register/bit bindings:
486             
487                     ; # Databank 0 (0x0 - 0x7f):
488             
489                     ; line_number = 217
490                     ; register _indf = 
491  00000000 = _indf equ 0
492             
493                     ; line_number = 219
494                     ; register _tmr0 = 
495  00000001 = _tmr0 equ 1
496             
497                     ; line_number = 221
498                     ; register _pcl = 
499  00000002 = _pcl equ 2
500             
501                     ; line_number = 223
502                     ; register _status = 
503  00000003 = _status equ 3
504                     ; line_number = 224
505                     ; bind _irp = _status@7
506  00000003 = _irp___byte equ _status
507  00000007 = _irp___bit equ 7
508                     ; line_number = 225
509                     ; bind _rp1 = _status@5
510  00000003 = _rp1___byte equ _status
511  00000005 = _rp1___bit equ 5
512                     ; line_number = 226
513                     ; bind _rp0 = _status@5
514  00000003 = _rp0___byte equ _status
515  00000005 = _rp0___bit equ 5
516                     ; line_number = 227
517                     ; bind _to = _status@4
518  00000003 = _to___byte equ _status
519  00000004 = _to___bit equ 4
520                     ; line_number = 228
521                     ; bind _pd = _status@3
522  00000003 = _pd___byte equ _status
523  00000003 = _pd___bit equ 3
524                     ; line_number = 229
525                     ; bind _z = _status@2
526  00000003 = _z___byte equ _status
527  00000002 = _z___bit equ 2
528                     ; line_number = 230
529                     ; bind _dc = _status@1
530  00000003 = _dc___byte equ _status
531  00000001 = _dc___bit equ 1
532                     ; line_number = 231
533                     ; bind _c = _status@0
534  00000003 = _c___byte equ _status
535  00000000 = _c___bit equ 0
536             
537                     ; line_number = 233
538                     ; register _fsr = 
539  00000004 = _fsr equ 4
540             
541                     ; line_number = 235
542                     ; register _porta = 
543  00000005 = _porta equ 5
544                     ; line_number = 236
545                     ; register _ra = 
546  00000005 = _ra equ 5
547                     ; line_number = 237
548                     ; bind _ra5 = _porta@5
549  00000005 = _ra5___byte equ _porta
550  00000005 = _ra5___bit equ 5
551                     ; line_number = 238
552                     ; bind _ra4 = _porta@4
553  00000005 = _ra4___byte equ _porta
554  00000004 = _ra4___bit equ 4
555                     ; line_number = 239
556                     ; bind _ra3 = _porta@3
557  00000005 = _ra3___byte equ _porta
558  00000003 = _ra3___bit equ 3
559                     ; line_number = 240
560                     ; bind _ra2 = _porta@2
561  00000005 = _ra2___byte equ _porta
562  00000002 = _ra2___bit equ 2
563                     ; line_number = 241
564                     ; bind _ra1 = _porta@1
565  00000005 = _ra1___byte equ _porta
566  00000001 = _ra1___bit equ 1
567                     ; line_number = 242
568                     ; bind _ra0 = _porta@0
569  00000005 = _ra0___byte equ _porta
570  00000000 = _ra0___bit equ 0
571             
572                     ; line_number = 244
573                     ; register _portc = 
574  00000007 = _portc equ 7
575                     ; line_number = 245
576                     ; register _rc = 
577  00000007 = _rc equ 7
578                     ; line_number = 246
579                     ; bind _rc5 = _portc@5
580  00000007 = _rc5___byte equ _portc
581  00000005 = _rc5___bit equ 5
582                     ; line_number = 247
583                     ; bind _rc4 = _portc@4
584  00000007 = _rc4___byte equ _portc
585  00000004 = _rc4___bit equ 4
586                     ; line_number = 248
587                     ; bind _rc3 = _portc@3
588  00000007 = _rc3___byte equ _portc
589  00000003 = _rc3___bit equ 3
590                     ; line_number = 249
591                     ; bind _rc2 = _portc@2
592  00000007 = _rc2___byte equ _portc
593  00000002 = _rc2___bit equ 2
594                     ; line_number = 250
595                     ; bind _rc1 = _portc@1
596  00000007 = _rc1___byte equ _portc
597  00000001 = _rc1___bit equ 1
598                     ; line_number = 251
599                     ; bind _rc0 = _portc@0
600  00000007 = _rc0___byte equ _portc
601  00000000 = _rc0___bit equ 0
602             
603                     ; line_number = 253
604                     ; register _pclath = 
605  0000000a = _pclath equ 10
606             
607                     ; line_number = 255
608                     ; register _intcon = 
609  0000000b = _intcon equ 11
610                     ; line_number = 256
611                     ; bind _gie = _intcon@7
612  0000000b = _gie___byte equ _intcon
613  00000007 = _gie___bit equ 7
614                     ; line_number = 257
615                     ; bind _peie = _intcon@6
616  0000000b = _peie___byte equ _intcon
617  00000006 = _peie___bit equ 6
618                     ; line_number = 258
619                     ; bind _t0ie = _intcon@5
620  0000000b = _t0ie___byte equ _intcon
621  00000005 = _t0ie___bit equ 5
622                     ; line_number = 259
623                     ; bind _inte = _intcon@4
624  0000000b = _inte___byte equ _intcon
625  00000004 = _inte___bit equ 4
626                     ; line_number = 260
627                     ; bind _raie = _intcon@3
628  0000000b = _raie___byte equ _intcon
629  00000003 = _raie___bit equ 3
630                     ; line_number = 261
631                     ; bind _t0if = _intcon@2
632  0000000b = _t0if___byte equ _intcon
633  00000002 = _t0if___bit equ 2
634                     ; line_number = 262
635                     ; bind _intf = _intcon@1
636  0000000b = _intf___byte equ _intcon
637  00000001 = _intf___bit equ 1
638                     ; line_number = 263
639                     ; bind _raif = _intcon@0
640  0000000b = _raif___byte equ _intcon
641  00000000 = _raif___bit equ 0
642             
643                     ; line_number = 265
644                     ; register _pir1 = 
645  0000000c = _pir1 equ 12
646                     ; line_number = 266
647                     ; bind _eeif = _pir1@7
648  0000000c = _eeif___byte equ _pir1
649  00000007 = _eeif___bit equ 7
650                     ; line_number = 267
651                     ; bind _adif = _pir1@6
652  0000000c = _adif___byte equ _pir1
653  00000006 = _adif___bit equ 6
654                     ; line_number = 268
655                     ; bind _rcif = _pir1@5
656  0000000c = _rcif___byte equ _pir1
657  00000005 = _rcif___bit equ 5
658                     ; line_number = 269
659                     ; bind _c2if = _pir1@4
660  0000000c = _c2if___byte equ _pir1
661  00000004 = _c2if___bit equ 4
662                     ; line_number = 270
663                     ; bind _c1if = _pir1@3
664  0000000c = _c1if___byte equ _pir1
665  00000003 = _c1if___bit equ 3
666                     ; line_number = 271
667                     ; bind _osfif = _pir1@2
668  0000000c = _osfif___byte equ _pir1
669  00000002 = _osfif___bit equ 2
670                     ; line_number = 272
671                     ; bind _txif = _pir1@1
672  0000000c = _txif___byte equ _pir1
673  00000001 = _txif___bit equ 1
674                     ; line_number = 273
675                     ; bind _tmr1if = _pir1@0
676  0000000c = _tmr1if___byte equ _pir1
677  00000000 = _tmr1if___bit equ 0
678             
679                     ; line_number = 275
680                     ; register _tmr1l = 
681  0000000e = _tmr1l equ 14
682             
683                     ; line_number = 277
684                     ; register _tmr1h = 
685  0000000f = _tmr1h equ 15
686             
687                     ; line_number = 279
688                     ; register _t1con = 
689  00000010 = _t1con equ 16
690                     ; line_number = 280
691                     ; bind t1ginv = _t1con@7
692  00000010 = t1ginv___byte equ _t1con
693  00000007 = t1ginv___bit equ 7
694                     ; line_number = 281
695                     ; bind _tmr1ge = _t1con@6
696  00000010 = _tmr1ge___byte equ _t1con
697  00000006 = _tmr1ge___bit equ 6
698                     ; line_number = 282
699                     ; bind _t1ckps1 = _t1con@5
700  00000010 = _t1ckps1___byte equ _t1con
701  00000005 = _t1ckps1___bit equ 5
702                     ; line_number = 283
703                     ; bind _t1ckps0 = _t1con@4
704  00000010 = _t1ckps0___byte equ _t1con
705  00000004 = _t1ckps0___bit equ 4
706                     ; line_number = 284
707                     ; bind _t1oscen = _t1con@3
708  00000010 = _t1oscen___byte equ _t1con
709  00000003 = _t1oscen___bit equ 3
710                     ; line_number = 285
711                     ; bind _t1sync = _t1con@2
712  00000010 = _t1sync___byte equ _t1con
713  00000002 = _t1sync___bit equ 2
714                     ; line_number = 286
715                     ; bind _tmr1cs = _t1con@1
716  00000010 = _tmr1cs___byte equ _t1con
717  00000001 = _tmr1cs___bit equ 1
718                     ; line_number = 287
719                     ; bind _tmr1on = _t1con@0
720  00000010 = _tmr1on___byte equ _t1con
721  00000000 = _tmr1on___bit equ 0
722             
723                     ; line_number = 289
724                     ; register _baudctl = 
725  00000011 = _baudctl equ 17
726                     ; line_number = 290
727                     ; bind _abdovf = _baudctl@7
728  00000011 = _abdovf___byte equ _baudctl
729  00000007 = _abdovf___bit equ 7
730                     ; line_number = 291
731                     ; bind _rcidl = _baudctl@6
732  00000011 = _rcidl___byte equ _baudctl
733  00000006 = _rcidl___bit equ 6
734                     ; line_number = 292
735                     ; bind _sckp = _baudctl@4
736  00000011 = _sckp___byte equ _baudctl
737  00000004 = _sckp___bit equ 4
738                     ; line_number = 293
739                     ; bind _brg16 = _baudctl@3
740  00000011 = _brg16___byte equ _baudctl
741  00000003 = _brg16___bit equ 3
742                     ; line_number = 294
743                     ; bind _wue = _baudctl@1
744  00000011 = _wue___byte equ _baudctl
745  00000001 = _wue___bit equ 1
746                     ; line_number = 295
747                     ; bind _abden = _baudctl@0
748  00000011 = _abden___byte equ _baudctl
749  00000000 = _abden___bit equ 0
750             
751                     ; line_number = 297
752                     ; register _spbrgh = 
753  00000012 = _spbrgh equ 18
754             
755                     ; line_number = 299
756                     ; register _spbrg = 
757  00000013 = _spbrg equ 19
758             
759                     ; line_number = 301
760                     ; register _rcreg = 
761  00000014 = _rcreg equ 20
762             
763                     ; line_number = 303
764                     ; register _txreg = 
765  00000015 = _txreg equ 21
766             
767                     ; line_number = 305
768                     ; register _txsta = 
769  00000016 = _txsta equ 22
770                     ; line_number = 306
771                     ; bind _csrc = _txsta@7
772  00000016 = _csrc___byte equ _txsta
773  00000007 = _csrc___bit equ 7
774                     ; line_number = 307
775                     ; bind _tx9 = _txsta@6
776  00000016 = _tx9___byte equ _txsta
777  00000006 = _tx9___bit equ 6
778                     ; line_number = 308
779                     ; bind _txen = _txsta@5
780  00000016 = _txen___byte equ _txsta
781  00000005 = _txen___bit equ 5
782                     ; line_number = 309
783                     ; bind _sync = _txsta@4
784  00000016 = _sync___byte equ _txsta
785  00000004 = _sync___bit equ 4
786                     ; line_number = 310
787                     ; bind _sendb = _txsta@3
788  00000016 = _sendb___byte equ _txsta
789  00000003 = _sendb___bit equ 3
790                     ; line_number = 311
791                     ; bind _brgh = _txsta@2
792  00000016 = _brgh___byte equ _txsta
793  00000002 = _brgh___bit equ 2
794                     ; line_number = 312
795                     ; bind _trmt = _txsta@1
796  00000016 = _trmt___byte equ _txsta
797  00000001 = _trmt___bit equ 1
798                     ; line_number = 313
799                     ; bind _tx9d = _txsta@0
800  00000016 = _tx9d___byte equ _txsta
801  00000000 = _tx9d___bit equ 0
802             
803                     ; line_number = 315
804                     ; register _rcsta = 
805  00000017 = _rcsta equ 23
806                     ; line_number = 316
807                     ; bind _spen = _rcsta@7
808  00000017 = _spen___byte equ _rcsta
809  00000007 = _spen___bit equ 7
810                     ; line_number = 317
811                     ; bind _rx9 = _rcsta@6
812  00000017 = _rx9___byte equ _rcsta
813  00000006 = _rx9___bit equ 6
814                     ; line_number = 318
815                     ; bind _sren = _rcsta@5
816  00000017 = _sren___byte equ _rcsta
817  00000005 = _sren___bit equ 5
818                     ; line_number = 319
819                     ; bind _cren = _rcsta@4
820  00000017 = _cren___byte equ _rcsta
821  00000004 = _cren___bit equ 4
822                     ; line_number = 320
823                     ; bind _adden = _rcsta@3
824  00000017 = _adden___byte equ _rcsta
825  00000003 = _adden___bit equ 3
826                     ; line_number = 321
827                     ; bind _ferr = _rcsta@2
828  00000017 = _ferr___byte equ _rcsta
829  00000002 = _ferr___bit equ 2
830                     ; line_number = 322
831                     ; bind _oerr = _rcsta@1
832  00000017 = _oerr___byte equ _rcsta
833  00000001 = _oerr___bit equ 1
834                     ; line_number = 323
835                     ; bind _rx9d = _rcsta@0
836  00000017 = _rx9d___byte equ _rcsta
837  00000000 = _rx9d___bit equ 0
838             
839                     ; line_number = 325
840                     ; register _wdtcon = 
841  00000018 = _wdtcon equ 24
842                     ; line_number = 326
843                     ; bind _wdtps3 = _wdtcon@4
844  00000018 = _wdtps3___byte equ _wdtcon
845  00000004 = _wdtps3___bit equ 4
846                     ; line_number = 327
847                     ; bind _wdtps2 = _wdtcon@3
848  00000018 = _wdtps2___byte equ _wdtcon
849  00000003 = _wdtps2___bit equ 3
850                     ; line_number = 328
851                     ; bind _wdtps1 = _wdtcon@2
852  00000018 = _wdtps1___byte equ _wdtcon
853  00000002 = _wdtps1___bit equ 2
854                     ; line_number = 329
855                     ; bind _wdtps0 = _wdtcon@1
856  00000018 = _wdtps0___byte equ _wdtcon
857  00000001 = _wdtps0___bit equ 1
858                     ; line_number = 330
859                     ; bind _swdten = _wdtcon@0
860  00000018 = _swdten___byte equ _wdtcon
861  00000000 = _swdten___bit equ 0
862             
863                     ; line_number = 332
864                     ; register _cmcon0 = 
865  00000019 = _cmcon0 equ 25
866                     ; line_number = 333
867                     ; bind _c1out = _cmcon0@7
868  00000019 = _c1out___byte equ _cmcon0
869  00000007 = _c1out___bit equ 7
870                     ; line_number = 334
871                     ; bind _c2out = _cmcon0@6
872  00000019 = _c2out___byte equ _cmcon0
873  00000006 = _c2out___bit equ 6
874                     ; line_number = 335
875                     ; bind _c1inv = _cmcon0@5
876  00000019 = _c1inv___byte equ _cmcon0
877  00000005 = _c1inv___bit equ 5
878                     ; line_number = 336
879                     ; bind _c2inv = _cmcon0@4
880  00000019 = _c2inv___byte equ _cmcon0
881  00000004 = _c2inv___bit equ 4
882                     ; line_number = 337
883                     ; bind _cis = _cmcon0@3
884  00000019 = _cis___byte equ _cmcon0
885  00000003 = _cis___bit equ 3
886                     ; line_number = 338
887                     ; bind _cm2 = _cmcon0@2
888  00000019 = _cm2___byte equ _cmcon0
889  00000002 = _cm2___bit equ 2
890                     ; line_number = 339
891                     ; bind _cm1 = _cmcon0@1
892  00000019 = _cm1___byte equ _cmcon0
893  00000001 = _cm1___bit equ 1
894                     ; line_number = 340
895                     ; bind _cm0 = _cmcon0@0
896  00000019 = _cm0___byte equ _cmcon0
897  00000000 = _cm0___bit equ 0
898             
899                     ; line_number = 342
900                     ; register _cmcon1 = 
901  0000001a = _cmcon1 equ 26
902                     ; line_number = 343
903                     ; bind _t1gss = _cmcon1@0
904  0000001a = _t1gss___byte equ _cmcon1
905  00000000 = _t1gss___bit equ 0
906                     ; line_number = 344
907                     ; bind _c2sync = _cmcon1@1
908  0000001a = _c2sync___byte equ _cmcon1
909  00000001 = _c2sync___bit equ 1
910             
911                     ; line_number = 346
912                     ; register _adresh = 
913  0000001e = _adresh equ 30
914             
915                     ; line_number = 348
916                     ; register _adcon0 = 
917  0000001f = _adcon0 equ 31
918                     ; line_number = 349
919                     ; bind _adfm = _adcon0@7
920  0000001f = _adfm___byte equ _adcon0
921  00000007 = _adfm___bit equ 7
922                     ; line_number = 350
923                     ; bind _vcfg = _adcon0@6
924  0000001f = _vcfg___byte equ _adcon0
925  00000006 = _vcfg___bit equ 6
926                     ; line_number = 351
927                     ; bind _chs2 = _adcon0@4
928  0000001f = _chs2___byte equ _adcon0
929  00000004 = _chs2___bit equ 4
930                     ; line_number = 352
931                     ; bind _chs1 = _adcon0@3
932  0000001f = _chs1___byte equ _adcon0
933  00000003 = _chs1___bit equ 3
934                     ; line_number = 353
935                     ; bind _chs0 = _adcon0@2
936  0000001f = _chs0___byte equ _adcon0
937  00000002 = _chs0___bit equ 2
938                     ; line_number = 354
939                     ; bind _go = _adcon0@1
940  0000001f = _go___byte equ _adcon0
941  00000001 = _go___bit equ 1
942                     ; line_number = 355
943                     ; bind _adon = _adcon0@0
944  0000001f = _adon___byte equ _adcon0
945  00000000 = _adon___bit equ 0
946             
947                     ; # Data bank 1 (0x80-0xff):
948             
949                     ; line_number = 359
950                     ; register _option_reg = 
951  00000081 = _option_reg equ 129
952                     ; line_number = 360
953                     ; bind _rapu = _option_reg@7
954  00000081 = _rapu___byte equ _option_reg
955  00000007 = _rapu___bit equ 7
956                     ; line_number = 361
957                     ; bind _intedg = _option_reg@6
958  00000081 = _intedg___byte equ _option_reg
959  00000006 = _intedg___bit equ 6
960                     ; line_number = 362
961                     ; bind _t0cs = _option_reg@5
962  00000081 = _t0cs___byte equ _option_reg
963  00000005 = _t0cs___bit equ 5
964                     ; line_number = 363
965                     ; bind _t0se = _option_reg@4
966  00000081 = _t0se___byte equ _option_reg
967  00000004 = _t0se___bit equ 4
968                     ; line_number = 364
969                     ; bind _psa = _option_reg@3
970  00000081 = _psa___byte equ _option_reg
971  00000003 = _psa___bit equ 3
972                     ; line_number = 365
973                     ; bind _ps2 = _option_reg@2
974  00000081 = _ps2___byte equ _option_reg
975  00000002 = _ps2___bit equ 2
976                     ; line_number = 366
977                     ; bind _ps1 = _option_reg@1
978  00000081 = _ps1___byte equ _option_reg
979  00000001 = _ps1___bit equ 1
980                     ; line_number = 367
981                     ; bind _ps0 = _option_reg@0
982  00000081 = _ps0___byte equ _option_reg
983  00000000 = _ps0___bit equ 0
984             
985                     ; line_number = 369
986                     ; register _trisa = 
987  00000085 = _trisa equ 133
988                     ; line_number = 370
989                     ; bind _trisa5 = _trisa@5
990  00000085 = _trisa5___byte equ _trisa
991  00000005 = _trisa5___bit equ 5
992                     ; line_number = 371
993                     ; bind _trisa4 = _trisa@4
994  00000085 = _trisa4___byte equ _trisa
995  00000004 = _trisa4___bit equ 4
996                     ; line_number = 372
997                     ; bind _trisa3 = _trisa@3
998  00000085 = _trisa3___byte equ _trisa
999  00000003 = _trisa3___bit equ 3
1000                    ; line_number = 373
1001                    ; bind _trisa2 = _trisa@2
1002 00000085 = _trisa2___byte equ _trisa
1003 00000002 = _trisa2___bit equ 2
1004                    ; line_number = 374
1005                    ; bind _trisa1 = _trisa@1
1006 00000085 = _trisa1___byte equ _trisa
1007 00000001 = _trisa1___bit equ 1
1008                    ; line_number = 375
1009                    ; bind _trisa0 = _trisa@0
1010 00000085 = _trisa0___byte equ _trisa
1011 00000000 = _trisa0___bit equ 0
1012            
1013                    ; line_number = 377
1014                    ; register _trisc = 
1015 00000087 = _trisc equ 135
1016                    ; line_number = 378
1017                    ; bind _trisc5 = _trisc@5
1018 00000087 = _trisc5___byte equ _trisc
1019 00000005 = _trisc5___bit equ 5
1020                    ; line_number = 379
1021                    ; bind _trisc4 = _trisc@4
1022 00000087 = _trisc4___byte equ _trisc
1023 00000004 = _trisc4___bit equ 4
1024                    ; line_number = 380
1025                    ; bind _trisc3 = _trisc@3
1026 00000087 = _trisc3___byte equ _trisc
1027 00000003 = _trisc3___bit equ 3
1028                    ; line_number = 381
1029                    ; bind _trisc2 = _trisc@2
1030 00000087 = _trisc2___byte equ _trisc
1031 00000002 = _trisc2___bit equ 2
1032                    ; line_number = 382
1033                    ; bind _trisc1 = _trisc@1
1034 00000087 = _trisc1___byte equ _trisc
1035 00000001 = _trisc1___bit equ 1
1036                    ; line_number = 383
1037                    ; bind _trisc0 = _trisc@0
1038 00000087 = _trisc0___byte equ _trisc
1039 00000000 = _trisc0___bit equ 0
1040            
1041                    ; line_number = 385
1042                    ; register _pie1 = 
1043 0000008c = _pie1 equ 140
1044                    ; line_number = 386
1045                    ; bind _eeie = _pie1@7
1046 0000008c = _eeie___byte equ _pie1
1047 00000007 = _eeie___bit equ 7
1048                    ; line_number = 387
1049                    ; bind _adie = _pie1@6
1050 0000008c = _adie___byte equ _pie1
1051 00000006 = _adie___bit equ 6
1052                    ; line_number = 388
1053                    ; bind _rcie = _pie1@5
1054 0000008c = _rcie___byte equ _pie1
1055 00000005 = _rcie___bit equ 5
1056                    ; line_number = 389
1057                    ; bind _c2ie = _pie1@4
1058 0000008c = _c2ie___byte equ _pie1
1059 00000004 = _c2ie___bit equ 4
1060                    ; line_number = 390
1061                    ; bind _c1ie = _pie1@3
1062 0000008c = _c1ie___byte equ _pie1
1063 00000003 = _c1ie___bit equ 3
1064                    ; line_number = 391
1065                    ; bind _osfie = _pie1@2
1066 0000008c = _osfie___byte equ _pie1
1067 00000002 = _osfie___bit equ 2
1068                    ; line_number = 392
1069                    ; bind _txie = _pie1@1
1070 0000008c = _txie___byte equ _pie1
1071 00000001 = _txie___bit equ 1
1072                    ; line_number = 393
1073                    ; bind _tmr1ie = _pie1@0
1074 0000008c = _tmr1ie___byte equ _pie1
1075 00000000 = _tmr1ie___bit equ 0
1076            
1077                    ; line_number = 395
1078                    ; register _pcon = 
1079 0000008e = _pcon equ 142
1080                    ; line_number = 396
1081                    ; bind _ulpwue = _pcon@5
1082 0000008e = _ulpwue___byte equ _pcon
1083 00000005 = _ulpwue___bit equ 5
1084                    ; line_number = 397
1085                    ; bind _sboden = _pcon@4
1086 0000008e = _sboden___byte equ _pcon
1087 00000004 = _sboden___bit equ 4
1088                    ; line_number = 398
1089                    ; bind _por = _pcon@1
1090 0000008e = _por___byte equ _pcon
1091 00000001 = _por___bit equ 1
1092                    ; line_number = 399
1093                    ; bind _bod = _pcon@0
1094 0000008e = _bod___byte equ _pcon
1095 00000000 = _bod___bit equ 0
1096            
1097                    ; line_number = 401
1098                    ; register _osccon = 
1099 0000008f = _osccon equ 143
1100                    ; line_number = 402
1101                    ; bind _ircf2 = _osccon@6
1102 0000008f = _ircf2___byte equ _osccon
1103 00000006 = _ircf2___bit equ 6
1104                    ; line_number = 403
1105                    ; bind _ircf1 = _osccon@5
1106 0000008f = _ircf1___byte equ _osccon
1107 00000005 = _ircf1___bit equ 5
1108                    ; line_number = 404
1109                    ; bind _ircf0 = _osccon@4
1110 0000008f = _ircf0___byte equ _osccon
1111 00000004 = _ircf0___bit equ 4
1112                    ; line_number = 405
1113                    ; bind _osts = _osccon@3
1114 0000008f = _osts___byte equ _osccon
1115 00000003 = _osts___bit equ 3
1116                    ; line_number = 406
1117                    ; bind _hts = _osccon@2
1118 0000008f = _hts___byte equ _osccon
1119 00000002 = _hts___bit equ 2
1120                    ; line_number = 407
1121                    ; bind _lts = _osccon@3
1122 0000008f = _lts___byte equ _osccon
1123 00000003 = _lts___bit equ 3
1124                    ; line_number = 408
1125                    ; bind _scs = _osccon@2
1126 0000008f = _scs___byte equ _osccon
1127 00000002 = _scs___bit equ 2
1128            
1129                    ; line_number = 410
1130                    ; register _osctune = 
1131 00000090 = _osctune equ 144
1132                    ; line_number = 411
1133                    ; bind _tun4 = _osctune@4
1134 00000090 = _tun4___byte equ _osctune
1135 00000004 = _tun4___bit equ 4
1136                    ; line_number = 412
1137                    ; bind _tun3 = _osctune@3
1138 00000090 = _tun3___byte equ _osctune
1139 00000003 = _tun3___bit equ 3
1140                    ; line_number = 413
1141                    ; bind _tun2 = _osctune@2
1142 00000090 = _tun2___byte equ _osctune
1143 00000002 = _tun2___bit equ 2
1144                    ; line_number = 414
1145                    ; bind _tun1 = _osctune@1
1146 00000090 = _tun1___byte equ _osctune
1147 00000001 = _tun1___bit equ 1
1148                    ; line_number = 415
1149                    ; bind _tun0 = _osctune@0
1150 00000090 = _tun0___byte equ _osctune
1151 00000000 = _tun0___bit equ 0
1152                    ; line_number = 416
1153                    ; constant _osccal_lsb = 1
1154 00000001 = _osccal_lsb equ 1
1155            
1156                    ; line_number = 418
1157                    ; register _ansel = 
1158 00000091 = _ansel equ 145
1159                    ; line_number = 419
1160                    ; bind _ans7 = _ansel@7
1161 00000091 = _ans7___byte equ _ansel
1162 00000007 = _ans7___bit equ 7
1163                    ; line_number = 420
1164                    ; bind _ans6 = _ansel@6
1165 00000091 = _ans6___byte equ _ansel
1166 00000006 = _ans6___bit equ 6
1167                    ; line_number = 421
1168                    ; bind _ans5 = _ansel@5
1169 00000091 = _ans5___byte equ _ansel
1170 00000005 = _ans5___bit equ 5
1171                    ; line_number = 422
1172                    ; bind _ans4 = _ansel@4
1173 00000091 = _ans4___byte equ _ansel
1174 00000004 = _ans4___bit equ 4
1175                    ; line_number = 423
1176                    ; bind _ans3 = _ansel@3
1177 00000091 = _ans3___byte equ _ansel
1178 00000003 = _ans3___bit equ 3
1179                    ; line_number = 424
1180                    ; bind _ans2 = _ansel@2
1181 00000091 = _ans2___byte equ _ansel
1182 00000002 = _ans2___bit equ 2
1183                    ; line_number = 425
1184                    ; bind _ans1 = _ansel@1
1185 00000091 = _ans1___byte equ _ansel
1186 00000001 = _ans1___bit equ 1
1187                    ; line_number = 426
1188                    ; bind _ans0 = _ansel@0
1189 00000091 = _ans0___byte equ _ansel
1190 00000000 = _ans0___bit equ 0
1191            
1192                    ; line_number = 428
1193                    ; register _wpua = 
1194 00000095 = _wpua equ 149
1195                    ; line_number = 429
1196                    ; bind _wpua5 = _wpua@5
1197 00000095 = _wpua5___byte equ _wpua
1198 00000005 = _wpua5___bit equ 5
1199                    ; line_number = 430
1200                    ; bind _wpua4 = _wpua@4
1201 00000095 = _wpua4___byte equ _wpua
1202 00000004 = _wpua4___bit equ 4
1203                    ; line_number = 431
1204                    ; bind _wpua2 = _wpua@2
1205 00000095 = _wpua2___byte equ _wpua
1206 00000002 = _wpua2___bit equ 2
1207                    ; line_number = 432
1208                    ; bind _wpua1 = _wpua@1
1209 00000095 = _wpua1___byte equ _wpua
1210 00000001 = _wpua1___bit equ 1
1211                    ; line_number = 433
1212                    ; bind _wpua0 = _wpua@0
1213 00000095 = _wpua0___byte equ _wpua
1214 00000000 = _wpua0___bit equ 0
1215            
1216                    ; line_number = 435
1217                    ; register _ioca = 
1218 00000096 = _ioca equ 150
1219                    ; line_number = 436
1220                    ; bind _ioca5 = _ioca@5
1221 00000096 = _ioca5___byte equ _ioca
1222 00000005 = _ioca5___bit equ 5
1223                    ; line_number = 437
1224                    ; bind _ioca4 = _ioca@4
1225 00000096 = _ioca4___byte equ _ioca
1226 00000004 = _ioca4___bit equ 4
1227                    ; line_number = 438
1228                    ; bind _ioca3 = _ioca@3
1229 00000096 = _ioca3___byte equ _ioca
1230 00000003 = _ioca3___bit equ 3
1231                    ; line_number = 439
1232                    ; bind _ioca2 = _ioca@2
1233 00000096 = _ioca2___byte equ _ioca
1234 00000002 = _ioca2___bit equ 2
1235                    ; line_number = 440
1236                    ; bind _ioca1 = _ioca@1
1237 00000096 = _ioca1___byte equ _ioca
1238 00000001 = _ioca1___bit equ 1
1239                    ; line_number = 441
1240                    ; bind _ioca0 = _ioca@0
1241 00000096 = _ioca0___byte equ _ioca
1242 00000000 = _ioca0___bit equ 0
1243            
1244                    ; line_number = 443
1245                    ; register _eedath = 
1246 00000097 = _eedath equ 151
1247            
1248                    ; line_number = 445
1249                    ; register _eeadrh = 
1250 00000098 = _eeadrh equ 152
1251            
1252                    ; line_number = 447
1253                    ; register _vrcon = 
1254 00000099 = _vrcon equ 153
1255                    ; line_number = 448
1256                    ; bind _vren = _vrcon@7
1257 00000099 = _vren___byte equ _vrcon
1258 00000007 = _vren___bit equ 7
1259                    ; line_number = 449
1260                    ; bind _vrr = _vrcon@5
1261 00000099 = _vrr___byte equ _vrcon
1262 00000005 = _vrr___bit equ 5
1263                    ; line_number = 450
1264                    ; bind _vr3 = _vrcon@3
1265 00000099 = _vr3___byte equ _vrcon
1266 00000003 = _vr3___bit equ 3
1267                    ; line_number = 451
1268                    ; bind _vr2 = _vrcon@2
1269 00000099 = _vr2___byte equ _vrcon
1270 00000002 = _vr2___bit equ 2
1271                    ; line_number = 452
1272                    ; bind _vr1 = _vrcon@1
1273 00000099 = _vr1___byte equ _vrcon
1274 00000001 = _vr1___bit equ 1
1275                    ; line_number = 453
1276                    ; bind _vr0 = _vrcon@0
1277 00000099 = _vr0___byte equ _vrcon
1278 00000000 = _vr0___bit equ 0
1279            
1280                    ; line_number = 455
1281                    ; register _eedat = 
1282 0000009a = _eedat equ 154
1283                    ; line_number = 456
1284                    ; bind _eedat7 = _eedat@7
1285 0000009a = _eedat7___byte equ _eedat
1286 00000007 = _eedat7___bit equ 7
1287                    ; line_number = 457
1288                    ; bind _eedat6 = _eedat@6
1289 0000009a = _eedat6___byte equ _eedat
1290 00000006 = _eedat6___bit equ 6
1291                    ; line_number = 458
1292                    ; bind _eedat5 = _eedat@5
1293 0000009a = _eedat5___byte equ _eedat
1294 00000005 = _eedat5___bit equ 5
1295                    ; line_number = 459
1296                    ; bind _eedat4 = _eedat@4
1297 0000009a = _eedat4___byte equ _eedat
1298 00000004 = _eedat4___bit equ 4
1299                    ; line_number = 460
1300                    ; bind _eedat3 = _eedat@3
1301 0000009a = _eedat3___byte equ _eedat
1302 00000003 = _eedat3___bit equ 3
1303                    ; line_number = 461
1304                    ; bind _eedat2 = _eedat@2
1305 0000009a = _eedat2___byte equ _eedat
1306 00000002 = _eedat2___bit equ 2
1307                    ; line_number = 462
1308                    ; bind _eedat1 = _eedat@1
1309 0000009a = _eedat1___byte equ _eedat
1310 00000001 = _eedat1___bit equ 1
1311                    ; line_number = 463
1312                    ; bind _eedat0 = _eedat@0
1313 0000009a = _eedat0___byte equ _eedat
1314 00000000 = _eedat0___bit equ 0
1315            
1316                    ; line_number = 465
1317                    ; register _eeadr = 
1318 0000009b = _eeadr equ 155
1319                    ; line_number = 466
1320                    ; bind _eeadr7 = _eeadr@7
1321 0000009b = _eeadr7___byte equ _eeadr
1322 00000007 = _eeadr7___bit equ 7
1323                    ; line_number = 467
1324                    ; bind _eeadr6 = _eeadr@6
1325 0000009b = _eeadr6___byte equ _eeadr
1326 00000006 = _eeadr6___bit equ 6
1327                    ; line_number = 468
1328                    ; bind _eeadr5 = _eeadr@5
1329 0000009b = _eeadr5___byte equ _eeadr
1330 00000005 = _eeadr5___bit equ 5
1331                    ; line_number = 469
1332                    ; bind _eeadr4 = _eeadr@4
1333 0000009b = _eeadr4___byte equ _eeadr
1334 00000004 = _eeadr4___bit equ 4
1335                    ; line_number = 470
1336                    ; bind _eeadr3 = _eeadr@3
1337 0000009b = _eeadr3___byte equ _eeadr
1338 00000003 = _eeadr3___bit equ 3
1339                    ; line_number = 471
1340                    ; bind _eeadr2 = _eeadr@2
1341 0000009b = _eeadr2___byte equ _eeadr
1342 00000002 = _eeadr2___bit equ 2
1343                    ; line_number = 472
1344                    ; bind _eeadr1 = _eeadr@1
1345 0000009b = _eeadr1___byte equ _eeadr
1346 00000001 = _eeadr1___bit equ 1
1347                    ; line_number = 473
1348                    ; bind _eeadr0 = _eeadr@0
1349 0000009b = _eeadr0___byte equ _eeadr
1350 00000000 = _eeadr0___bit equ 0
1351            
1352                    ; line_number = 475
1353                    ; register _eecon1 = 
1354 0000009c = _eecon1 equ 156
1355                    ; line_number = 476
1356                    ; bind _eepgd = _eecon1@7
1357 0000009c = _eepgd___byte equ _eecon1
1358 00000007 = _eepgd___bit equ 7
1359                    ; line_number = 477
1360                    ; bind _wrerr = _eecon1@3
1361 0000009c = _wrerr___byte equ _eecon1
1362 00000003 = _wrerr___bit equ 3
1363                    ; line_number = 478
1364                    ; bind _wren = _eecon1@2
1365 0000009c = _wren___byte equ _eecon1
1366 00000002 = _wren___bit equ 2
1367                    ; line_number = 479
1368                    ; bind _wr = _eecon1@1
1369 0000009c = _wr___byte equ _eecon1
1370 00000001 = _wr___bit equ 1
1371                    ; line_number = 480
1372                    ; bind _rd = _eecon1@0
1373 0000009c = _rd___byte equ _eecon1
1374 00000000 = _rd___bit equ 0
1375            
1376                    ; line_number = 482
1377                    ; register _eecon2 = 
1378 0000009d = _eecon2 equ 157
1379            
1380                    ; line_number = 484
1381                    ; register _adresl = 
1382 0000009e = _adresl equ 158
1383            
1384                    ; line_number = 486
1385                    ; register _adcon1 = 
1386 0000009f = _adcon1 equ 159
1387                    ; line_number = 487
1388                    ; bind _adcs2 = _adcon1@6
1389 0000009f = _adcs2___byte equ _adcon1
1390 00000006 = _adcs2___bit equ 6
1391                    ; line_number = 488
1392                    ; bind _adcs1 = _adcon1@5
1393 0000009f = _adcs1___byte equ _adcon1
1394 00000005 = _adcs1___bit equ 5
1395                    ; line_number = 489
1396                    ; bind _adcs0 = _adcon1@4
1397 0000009f = _adcs0___byte equ _adcon1
1398 00000004 = _adcs0___bit equ 4
1399            
1400                    ; # Data Bank 2 (0x100 - 0x17f):
1401            
1402                    ; buffer = 'midimotor1e'
1403                    ; line_number = 36
1404                    ; library _pic16f688 exited
1405            
1406                    ; # The module runs at 20MHz:
1407                    ; line_number = 39
1408                    ; library clock20mhz entered
1409                    ; # Copyright (c) 2004 by Wayne C. Gramlich
1410                    ; # All rights reserved.
1411            
1412                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1413                    ; # and {clocks_per_instruction}.
1414            
1415                    ; # Define processor constants:
1416                    ; buffer = 'clock20mhz'
1417                    ; line_number = 9
1418                    ; constant clock_rate = 20000000
1419 01312d00 = clock_rate equ 20000000
1420                    ; line_number = 10
1421                    ; constant clocks_per_instruction = 4
1422 00000004 = clocks_per_instruction equ 4
1423                    ; line_number = 11
1424                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1425 004c4b40 = instruction_rate equ 5000000
1426            
1427            
1428                    ; buffer = 'midimotor1e'
1429                    ; line_number = 39
1430                    ; library clock20mhz exited
1431            
1432                    ; # The {_eusart} module needs the following 2 constants defined
1433                    ; # before inclusion:
1434                    ; line_number = 43
1435                    ; constant _eusart_clock = clock_rate
1436 01312d00 = _eusart_clock equ 20000000
1437                    ; line_number = 44
1438                    ; constant _eusart_factor = 4
1439 00000004 = _eusart_factor equ 4
1440                    ; line_number = 45
1441                    ; library _eusart entered
1442            
1443                    ; # Copyright (c) 2005 by Wayne C. Gramlich
1444                    ; # All rights reserved.
1445            
1446                    ; # This library contains a bunch of definitions for the Enhanced Universal
1447                    ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available
1448                    ; # on many of the PIC microcontrollers.
1449            
1450                    ; # In order to use this module you have to get two constants defined
1451                    ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}.
1452                    ; # {_eusart_clock} should be set to the frequency oscillator for the chip.
1453                    ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether
1454                    ; # the {_brg16} and {_brgh} bits are set.  Use the table below to select:
1455                    ; #
1456                    ; #        _{brg16}	{_brgh}		_{eusart_factor}
1457                    ; #	    0		   0		      64
1458                    ; #	    0		   1		      16
1459                    ; #	    1		   0		      16
1460                    ; #	    1		   1		       4
1461            
1462                    ; # 2400 bits/sec:
1463                    ; buffer = '_eusart'
1464                    ; line_number = 23
1465                    ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1
1466 00000822 = _eusart_2400 equ 2082
1467                    ; line_number = 24
1468                    ; constant _eusart_2400_low = _eusart_2400 & 0xff
1469 00000022 = _eusart_2400_low equ 34
1470                    ; line_number = 25
1471                    ; constant _eusart_2400_high = _eusart_2400 >> 8
1472 00000008 = _eusart_2400_high equ 8
1473                    ; line_number = 26
1474                    ; constant _eusart_2400_index = 0
1475 00000000 = _eusart_2400_index equ 0
1476                    ; # 4800 bits/sec:
1477                    ; line_number = 28
1478                    ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1
1479 00000410 = _eusart_4800 equ 1040
1480                    ; line_number = 29
1481                    ; constant _eusart_4800_low = _eusart_4800 & 0xff
1482 00000010 = _eusart_4800_low equ 16
1483                    ; line_number = 30
1484                    ; constant _eusart_4800_high = _eusart_4800 >> 8
1485 00000004 = _eusart_4800_high equ 4
1486                    ; line_number = 31
1487                    ; constant _eusart_4800_index = 1
1488 00000001 = _eusart_4800_index equ 1
1489                    ; # 9600 bits/sec:
1490                    ; line_number = 33
1491                    ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1
1492 00000207 = _eusart_9600 equ 519
1493                    ; line_number = 34
1494                    ; constant _eusart_9600_low = _eusart_9600 & 0xff
1495 00000007 = _eusart_9600_low equ 7
1496                    ; line_number = 35
1497                    ; constant _eusart_9600_high = _eusart_9600 >> 8
1498 00000002 = _eusart_9600_high equ 2
1499                    ; line_number = 36
1500                    ; constant _eusart_9600_index = 2
1501 00000002 = _eusart_9600_index equ 2
1502                    ; # 19200 bits/sec:
1503                    ; line_number = 38
1504                    ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1
1505 00000103 = _eusart_19200 equ 259
1506                    ; line_number = 39
1507                    ; constant _eusart_19200_low = _eusart_19200 & 0xff
1508 00000003 = _eusart_19200_low equ 3
1509                    ; line_number = 40
1510                    ; constant _eusart_19200_high = _eusart_19200 >> 8
1511 00000001 = _eusart_19200_high equ 1
1512                    ; line_number = 41
1513                    ; constant _eusart_19200_index = 3
1514 00000003 = _eusart_19200_index equ 3
1515                    ; # 38400 bits/sec:
1516                    ; line_number = 43
1517                    ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1
1518 00000081 = _eusart_38400 equ 129
1519                    ; line_number = 44
1520                    ; constant _eusart_38400_low = _eusart_38400 & 0xff
1521 00000081 = _eusart_38400_low equ 129
1522                    ; line_number = 45
1523                    ; constant _eusart_38400_high = _eusart_38400 >> 8
1524 00000000 = _eusart_38400_high equ 0
1525                    ; line_number = 46
1526                    ; constant _eusart_38400_index = 4
1527 00000004 = _eusart_38400_index equ 4
1528                    ; # 57600 bits/sec:
1529                    ; line_number = 48
1530                    ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1
1531 00000055 = _eusart_57600 equ 85
1532                    ; line_number = 49
1533                    ; constant _eusart_57600_low = _eusart_57600 & 0xff
1534 00000055 = _eusart_57600_low equ 85
1535                    ; line_number = 50
1536                    ; constant _eusart_57600_high = _eusart_57600 >> 8
1537 00000000 = _eusart_57600_high equ 0
1538                    ; line_number = 51
1539                    ; constant _eusart_57600_index = 5
1540 00000005 = _eusart_57600_index equ 5
1541                    ; # 115200 bits/sec:
1542                    ; line_number = 53
1543                    ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1
1544 0000002a = _eusart_115200 equ 42
1545                    ; line_number = 54
1546                    ; constant _eusart_115200_low = _eusart_115200 & 0xff
1547 0000002a = _eusart_115200_low equ 42
1548                    ; line_number = 55
1549                    ; constant _eusart_115200_high = _eusart_115200 >> 8
1550 00000000 = _eusart_115200_high equ 0
1551                    ; line_number = 56
1552                    ; constant _eusart_115200_index = 6
1553 00000006 = _eusart_115200_index equ 6
1554                    ; # 203400 bits/sec:
1555                    ; line_number = 58
1556                    ; constant _eusart_230400 = (_eusart_clock / (230400 * _eusart_factor)) - 1
1557 00000014 = _eusart_230400 equ 20
1558                    ; line_number = 59
1559                    ; constant _eusart_230400_low = _eusart_230400 & 0xff
1560 00000014 = _eusart_230400_low equ 20
1561                    ; line_number = 60
1562                    ; constant _eusart_230400_high = _eusart_230400 >> 8
1563 00000000 = _eusart_230400_high equ 0
1564                    ; line_number = 61
1565                    ; constant _eusart_230400_index = 7
1566 00000007 = _eusart_230400_index equ 7
1567                    ; # 406800 bits/sec:
1568                    ; line_number = 63
1569                    ; constant _eusart_460800 = (_eusart_clock / (460800 * _eusart_factor)) - 1
1570 00000009 = _eusart_460800 equ 9
1571                    ; line_number = 64
1572                    ; constant _eusart_460800_low = _eusart_460800 & 0xff
1573 00000009 = _eusart_460800_low equ 9
1574                    ; line_number = 65
1575                    ; constant _eusart_460800_high = _eusart_460800 >> 8
1576 00000000 = _eusart_460800_high equ 0
1577                    ; line_number = 66
1578                    ; constant _eusart_460800_index = 8
1579 00000008 = _eusart_460800_index equ 8
1580                    ; # 500000 bits/sec:
1581                    ; line_number = 68
1582                    ; constant _eusart_500000 = (_eusart_clock / (500000 * _eusart_factor)) - 1
1583 00000009 = _eusart_500000 equ 9
1584                    ; line_number = 69
1585                    ; constant _eusart_500000_low = _eusart_500000 & 0xff
1586 00000009 = _eusart_500000_low equ 9
1587                    ; line_number = 70
1588                    ; constant _eusart_500000_high = _eusart_500000 >> 8
1589 00000000 = _eusart_500000_high equ 0
1590                    ; line_number = 71
1591                    ; constant _eusart_500000_index = 9
1592 00000009 = _eusart_500000_index equ 9
1593                    ; # 576000 bits/sec (1MHz):
1594                    ; line_number = 73
1595                    ; constant _eusart_576000 = (_eusart_clock / (576000 * _eusart_factor)) - 1
1596 00000007 = _eusart_576000 equ 7
1597                    ; line_number = 74
1598                    ; constant _eusart_576000_low = _eusart_576000 & 0xff
1599 00000007 = _eusart_576000_low equ 7
1600                    ; line_number = 75
1601                    ; constant _eusart_576000_high = _eusart_576000 >> 8
1602 00000000 = _eusart_576000_high equ 0
1603                    ; line_number = 76
1604                    ; constant _eusart_576000_index = 10
1605 0000000a = _eusart_576000_index equ 10
1606                    ; # 625000 bits/sec:
1607                    ; line_number = 78
1608                    ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1
1609 00000007 = _eusart_625000 equ 7
1610                    ; line_number = 79
1611                    ; constant _eusart_625000_low = _eusart_625000 & 0xff
1612 00000007 = _eusart_625000_low equ 7
1613                    ; line_number = 80
1614                    ; constant _eusart_625000_high = _eusart_625000 >> 8
1615 00000000 = _eusart_625000_high equ 0
1616                    ; line_number = 81
1617                    ; constant _eusart_625000_index = 11
1618 0000000b = _eusart_625000_index equ 11
1619                    ; # 833333 bits/sec:
1620                    ; line_number = 83
1621                    ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1
1622 00000005 = _eusart_833333 equ 5
1623                    ; line_number = 84
1624                    ; constant _eusart_833333_low = _eusart_833333 & 0xff
1625 00000005 = _eusart_833333_low equ 5
1626                    ; line_number = 85
1627                    ; constant _eusart_833333_high = _eusart_833333 >> 8
1628 00000000 = _eusart_833333_high equ 0
1629                    ; line_number = 86
1630                    ; constant _eusart_833333_index = 12
1631 0000000c = _eusart_833333_index equ 12
1632                    ; # 921600 bits/sec:
1633                    ; line_number = 88
1634                    ; constant _eusart_921600 = (_eusart_clock / (921600 * _eusart_factor)) - 1
1635 00000004 = _eusart_921600 equ 4
1636                    ; line_number = 89
1637                    ; constant _eusart_921600_low = _eusart_921600 & 0xff
1638 00000004 = _eusart_921600_low equ 4
1639                    ; line_number = 90
1640                    ; constant _eusart_921600_high = _eusart_921600 >> 8
1641 00000000 = _eusart_921600_high equ 0
1642                    ; line_number = 91
1643                    ; constant _eusart_921600_index = 13
1644 0000000d = _eusart_921600_index equ 13
1645                    ; # 1000000 bits/sec (1MHz):
1646                    ; line_number = 93
1647                    ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1
1648 00000004 = _eusart_1000000 equ 4
1649                    ; line_number = 94
1650                    ; constant _eusart_1000000_low = _eusart_1000000 & 0xff
1651 00000004 = _eusart_1000000_low equ 4
1652                    ; line_number = 95
1653                    ; constant _eusart_1000000_high = _eusart_1000000 >> 8
1654 00000000 = _eusart_1000000_high equ 0
1655                    ; line_number = 96
1656                    ; constant _eusart_1000000_index = 14
1657 0000000e = _eusart_1000000_index equ 14
1658            
1659                    ; buffer = 'midimotor1e'
1660                    ; line_number = 45
1661                    ; library _eusart exited
1662            
1663                    ; line_number = 47
1664                    ; library rb2_constants entered
1665            
1666                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
1667                    ; # All rights reserved.
1668            
1669                    ; buffer = 'rb2_constants'
1670                    ; line_number = 6
1671                    ; constant rb2_ok = 0xa5
1672 000000a5 = rb2_ok equ 165
1673            
1674                    ; line_number = 8
1675                    ; constant rb2_common_address_set = 0xfc
1676 000000fc = rb2_common_address_set equ 252
1677                    ; line_number = 9
1678                    ; constant rb2_common_id_next = 0xfd
1679 000000fd = rb2_common_id_next equ 253
1680                    ; line_number = 10
1681                    ; constant rb2_common_id_start = 0xfe
1682 000000fe = rb2_common_id_start equ 254
1683                    ; line_number = 11
1684                    ; constant rb2_common_deselect = 0xff
1685 000000ff = rb2_common_deselect equ 255
1686            
1687                    ; line_number = 13
1688                    ; constant rb2_laser1_address = 1
1689 00000001 = rb2_laser1_address equ 1
1690                    ; line_number = 14
1691                    ; constant rb2_laser1_sense_read = 0
1692 00000000 = rb2_laser1_sense_read equ 0
1693                    ; line_number = 15
1694                    ; constant rb2_laser1_enable_read = 1
1695 00000001 = rb2_laser1_enable_read equ 1
1696                    ; line_number = 16
1697                    ; constant rb2_laser1_enable_clear = 2
1698 00000002 = rb2_laser1_enable_clear equ 2
1699                    ; line_number = 17
1700                    ; constant rb2_laser1_enable_set = 3
1701 00000003 = rb2_laser1_enable_set equ 3
1702            
1703                    ; line_number = 19
1704                    ; constant rb2_minimotor2_address = 2
1705 00000002 = rb2_minimotor2_address equ 2
1706                    ; line_number = 20
1707                    ; constant rb2_midimotor2_address = 3
1708 00000003 = rb2_midimotor2_address equ 3
1709                    ; line_number = 21
1710                    ; constant rb2_motor0_speed_get = 0
1711 00000000 = rb2_motor0_speed_get equ 0
1712                    ; line_number = 22
1713                    ; constant rb2_motor0_speed_set = 1
1714 00000001 = rb2_motor0_speed_set equ 1
1715                    ; line_number = 23
1716                    ; constant rb2_motor1_speed_get = 2
1717 00000002 = rb2_motor1_speed_get equ 2
1718                    ; line_number = 24
1719                    ; constant rb2_motor1_speed_set = 3
1720 00000003 = rb2_motor1_speed_set equ 3
1721                    ; line_number = 25
1722                    ; constant rb2_duty_cycle_get = 4
1723 00000004 = rb2_duty_cycle_get equ 4
1724                    ; line_number = 26
1725                    ; constant rb2_duty_cycle_set = 8
1726 00000008 = rb2_duty_cycle_set equ 8
1727            
1728                    ; line_number = 28
1729                    ; constant rb2_irdistance2_address = 4
1730 00000004 = rb2_irdistance2_address equ 4
1731                    ; line_number = 29
1732                    ; constant rb2_irdistance2_raw0_get = 0
1733 00000000 = rb2_irdistance2_raw0_get equ 0
1734                    ; line_number = 30
1735                    ; constant rb2_irdistance2_raw1_get = 1
1736 00000001 = rb2_irdistance2_raw1_get equ 1
1737                    ; line_number = 31
1738                    ; constant rb2_irdistance2_smooth0_get = 2
1739 00000002 = rb2_irdistance2_smooth0_get equ 2
1740                    ; line_number = 32
1741                    ; constant rb2_irdistance2_smooth1_get = 3
1742 00000003 = rb2_irdistance2_smooth1_get equ 3
1743                    ; line_number = 33
1744                    ; constant rb2_irdistance2_linear0_get = 4
1745 00000004 = rb2_irdistance2_linear0_get equ 4
1746                    ; line_number = 34
1747                    ; constant rb2_irdistance2_linear1_get = 6
1748 00000006 = rb2_irdistance2_linear1_get equ 6
1749            
1750                    ; line_number = 36
1751                    ; constant rb2_shaft2_address = 5
1752 00000005 = rb2_shaft2_address equ 5
1753                    ; line_number = 37
1754                    ; constant rb2_shaft2_count_latch = 0
1755 00000000 = rb2_shaft2_count_latch equ 0
1756                    ; line_number = 38
1757                    ; constant rb2_shaft2_count_clear = 1
1758 00000001 = rb2_shaft2_count_clear equ 1
1759                    ; line_number = 39
1760                    ; constant rb2_shaft2_shaft0_high_get = 2
1761 00000002 = rb2_shaft2_shaft0_high_get equ 2
1762                    ; line_number = 40
1763                    ; constant rb2_shaft2_shaft1_high_get = 3
1764 00000003 = rb2_shaft2_shaft1_high_get equ 3
1765                    ; line_number = 41
1766                    ; constant rb2_shaft2_continue_get = 4
1767 00000004 = rb2_shaft2_continue_get equ 4
1768                    ; line_number = 42
1769                    ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
1770 00000004 = rb2_shaft2_shaft0_low_get equ 4
1771                    ; line_number = 43
1772                    ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
1773 00000004 = rb2_shaft2_shaft1_low_get equ 4
1774                    ; line_number = 44
1775                    ; constant rb2_shaft2_x_get = 0x10
1776 00000010 = rb2_shaft2_x_get equ 16
1777                    ; line_number = 45
1778                    ; constant rb2_shaft2_y_get = 0x11
1779 00000011 = rb2_shaft2_y_get equ 17
1780                    ; line_number = 46
1781                    ; constant rb2_shaft2_bearing16_get = 0x12
1782 00000012 = rb2_shaft2_bearing16_get equ 18
1783                    ; line_number = 47
1784                    ; constant rb2_shaft2_bearing8_get = 0x13
1785 00000013 = rb2_shaft2_bearing8_get equ 19
1786                    ; line_number = 48
1787                    ; constant rb2_shaft2_target_x_get = 0x14
1788 00000014 = rb2_shaft2_target_x_get equ 20
1789                    ; line_number = 49
1790                    ; constant rb2_shaft2_target_y_get = 0x15
1791 00000015 = rb2_shaft2_target_y_get equ 21
1792                    ; line_number = 50
1793                    ; constant rb2_shaft2_target_bearing16_get = 0x16
1794 00000016 = rb2_shaft2_target_bearing16_get equ 22
1795                    ; line_number = 51
1796                    ; constant rb2_shaft2_target_bearing8_get = 0x17
1797 00000017 = rb2_shaft2_target_bearing8_get equ 23
1798                    ; line_number = 52
1799                    ; constant rb2_shaft2_target_distance_get = 0x18
1800 00000018 = rb2_shaft2_target_distance_get equ 24
1801                    ; line_number = 53
1802                    ; constant rb2_shaft2_wheel_spacing_get = 0x19
1803 00000019 = rb2_shaft2_wheel_spacing_get equ 25
1804                    ; line_number = 54
1805                    ; constant rb2_shaft2_wheel_ticks_get = 0x1a
1806 0000001a = rb2_shaft2_wheel_ticks_get equ 26
1807                    ; line_number = 55
1808                    ; constant rb2_shaft2_wheel_diameter_get = 0x1b
1809 0000001b = rb2_shaft2_wheel_diameter_get equ 27
1810                    ; line_number = 56
1811                    ; constant rb2_shaft2_count_iteration_get = 0x1c
1812 0000001c = rb2_shaft2_count_iteration_get equ 28
1813                    ; line_number = 57
1814                    ; constant rb2_shaft2_counter_signs_get = 0x1d
1815 0000001d = rb2_shaft2_counter_signs_get equ 29
1816                    ; line_number = 58
1817                    ; constant rb2_shaft2_x_set = 0x20
1818 00000020 = rb2_shaft2_x_set equ 32
1819                    ; line_number = 59
1820                    ; constant rb2_shaft2_y_set = 0x21
1821 00000021 = rb2_shaft2_y_set equ 33
1822                    ; line_number = 60
1823                    ; constant rb2_shaft2_bearing16_set = 0x22
1824 00000022 = rb2_shaft2_bearing16_set equ 34
1825                    ; line_number = 61
1826                    ; constant rb2_shaft2_navigation_latch = 0x23
1827 00000023 = rb2_shaft2_navigation_latch equ 35
1828                    ; line_number = 62
1829                    ; constant rb2_shaft2_target_x_set = 0x24
1830 00000024 = rb2_shaft2_target_x_set equ 36
1831                    ; line_number = 63
1832                    ; constant rb2_shaft2_target_y_set = 0x25
1833 00000025 = rb2_shaft2_target_y_set equ 37
1834                    ; line_number = 64
1835                    ; constant rb2_shaft2_wheel_spacing_set = 0x29
1836 00000029 = rb2_shaft2_wheel_spacing_set equ 41
1837                    ; line_number = 65
1838                    ; constant rb2_shaft2_wheel_ticks_set = 0x2a
1839 0000002a = rb2_shaft2_wheel_ticks_set equ 42
1840                    ; line_number = 66
1841                    ; constant rb2_shaft2_wheel_diameter_set = 0x2b
1842 0000002b = rb2_shaft2_wheel_diameter_set equ 43
1843                    ; line_number = 67
1844                    ; constant rb2_shaft2_counter_signs_set = 0x2c
1845 0000002c = rb2_shaft2_counter_signs_set equ 44
1846            
1847                    ; line_number = 69
1848                    ; constant rb2_orient5_address = 6
1849 00000006 = rb2_orient5_address equ 6
1850            
1851                    ; line_number = 71
1852                    ; constant rb2_compass8_address = 7
1853 00000007 = rb2_compass8_address equ 7
1854            
1855                    ; line_number = 73
1856                    ; constant rb2_io8_address = 8
1857 00000008 = rb2_io8_address equ 8
1858                    ; line_number = 74
1859                    ; constant rb2_io8_digital8_get = 0
1860 00000000 = rb2_io8_digital8_get equ 0
1861                    ; line_number = 75
1862                    ; constant rb2_io8_digital8_set = 1
1863 00000001 = rb2_io8_digital8_set equ 1
1864                    ; line_number = 76
1865                    ; constant rb2_io8_direction_get = 2
1866 00000002 = rb2_io8_direction_get equ 2
1867                    ; line_number = 77
1868                    ; constant rb2_io8_direction_set = 3
1869 00000003 = rb2_io8_direction_set equ 3
1870                    ; line_number = 78
1871                    ; constant rb2_io8_analog_mask_get = 4
1872 00000004 = rb2_io8_analog_mask_get equ 4
1873                    ; line_number = 79
1874                    ; constant rb2_io8_analog_mask_set = 5
1875 00000005 = rb2_io8_analog_mask_set equ 5
1876                    ; line_number = 80
1877                    ; constant rb2_io8_analog8_get = 0x10
1878 00000010 = rb2_io8_analog8_get equ 16
1879                    ; line_number = 81
1880                    ; constant rb2_io8_analog10_get = 0x18
1881 00000018 = rb2_io8_analog10_get equ 24
1882                    ; line_number = 82
1883                    ; constant rb2_low_set = 0x20
1884 00000020 = rb2_low_set equ 32
1885                    ; line_number = 83
1886                    ; constant rb2_high_set = 0x30
1887 00000030 = rb2_high_set equ 48
1888            
1889                    ; line_number = 85
1890                    ; constant rb2_sonar2_address = 9
1891 00000009 = rb2_sonar2_address equ 9
1892            
1893                    ; line_number = 87
1894                    ; constant rb2_voice1_address = 10
1895 0000000a = rb2_voice1_address equ 10
1896            
1897                    ; line_number = 89
1898                    ; constant rb2_servo4_address = 11
1899 0000000b = rb2_servo4_address equ 11
1900                    ; line_number = 90
1901                    ; constant rb2_servo4_servo0 = 0
1902 00000000 = rb2_servo4_servo0 equ 0
1903                    ; line_number = 91
1904                    ; constant rb2_servo4_servo1 = 1
1905 00000001 = rb2_servo4_servo1 equ 1
1906                    ; line_number = 92
1907                    ; constant rb2_servo4_servo2 = 2
1908 00000002 = rb2_servo4_servo2 equ 2
1909                    ; line_number = 93
1910                    ; constant rb2_servo4_servo3 = 3
1911 00000003 = rb2_servo4_servo3 equ 3
1912                    ; line_number = 94
1913                    ; constant rb2_servo4_quick_set = 0
1914 00000000 = rb2_servo4_quick_set equ 0
1915                    ; line_number = 95
1916                    ; constant rb2_servo4_quick_low = 0
1917 00000000 = rb2_servo4_quick_low equ 0
1918                    ; line_number = 96
1919                    ; constant rb2_servo4_quick_center = 40
1920 00000028 = rb2_servo4_quick_center equ 40
1921                    ; line_number = 97
1922                    ; constant rb2_servo4_quick_high = 0x7c
1923 0000007c = rb2_servo4_quick_high equ 124
1924                    ; line_number = 98
1925                    ; constant rb2_servo4_high_low_set = 0x80
1926 00000080 = rb2_servo4_high_low_set equ 128
1927                    ; line_number = 99
1928                    ; constant rb2_servo4_short_high_low_set = 0x84
1929 00000084 = rb2_servo4_short_high_low_set equ 132
1930                    ; line_number = 100
1931                    ; constant rb2_servo4_high_set = 0x88
1932 00000088 = rb2_servo4_high_set equ 136
1933                    ; line_number = 101
1934                    ; constant rb2_servo4_low_set = 0x8c
1935 0000008c = rb2_servo4_low_set equ 140
1936                    ; line_number = 102
1937                    ; constant rb2_servo4_enables_set = 0x90
1938 00000090 = rb2_servo4_enables_set equ 144
1939                    ; line_number = 103
1940                    ; constant rb2_servo4_enable0 = 1
1941 00000001 = rb2_servo4_enable0 equ 1
1942                    ; line_number = 104
1943                    ; constant rb2_servo4_enable1 = 2
1944 00000002 = rb2_servo4_enable1 equ 2
1945                    ; line_number = 105
1946                    ; constant rb2_servo4_enable2 = 4
1947 00000004 = rb2_servo4_enable2 equ 4
1948                    ; line_number = 106
1949                    ; constant rb2_servo4_enable3 = 8
1950 00000008 = rb2_servo4_enable3 equ 8
1951                    ; line_number = 107
1952                    ; constant rb2_servo4_enable_all = 0xf
1953 0000000f = rb2_servo4_enable_all equ 15
1954                    ; line_number = 108
1955                    ; constant rb2_servo4_enable_none = 0
1956 00000000 = rb2_servo4_enable_none equ 0
1957                    ; line_number = 109
1958                    ; constant rb2_servo4_high_get = 0xa0
1959 000000a0 = rb2_servo4_high_get equ 160
1960                    ; line_number = 110
1961                    ; constant rb2_servo4_low_get = 0xa4
1962 000000a4 = rb2_servo4_low_get equ 164
1963                    ; line_number = 111
1964                    ; constant rb2_servo4_enables_get = 0xa8
1965 000000a8 = rb2_servo4_enables_get equ 168
1966            
1967                    ; line_number = 113
1968                    ; constant rb2_controller28_address = 28
1969 0000001c = rb2_controller28_address equ 28
1970            
1971                    ; line_number = 115
1972                    ; constant rb2_lcd32_address = 32
1973 00000020 = rb2_lcd32_address equ 32
1974                    ; line_number = 116
1975                    ; constant rb2_lcd32_row_set = 4
1976 00000004 = rb2_lcd32_row_set equ 4
1977                    ; line_number = 117
1978                    ; constant rb2_lcd32_row0_set = rb2_lcd32_row_set | 0
1979 00000004 = rb2_lcd32_row0_set equ 4
1980                    ; line_number = 118
1981                    ; constant rb2_lcd32_row1_set = rb2_lcd32_row_set | 1
1982 00000005 = rb2_lcd32_row1_set equ 5
1983                    ; line_number = 119
1984                    ; constant rb2_lcd32_row2_set = rb2_lcd32_row_set | 2
1985 00000006 = rb2_lcd32_row2_set equ 6
1986                    ; line_number = 120
1987                    ; constant rb2_lcd32_row3_set = rb2_lcd32_row_set | 3
1988 00000007 = rb2_lcd32_row3_set equ 7
1989                    ; line_number = 121
1990                    ; constant rb2_lcd32_new_line = 0xa
1991 0000000a = rb2_lcd32_new_line equ 10
1992                    ; line_number = 122
1993                    ; constant rb2_lcd32_form_feed = 0xc
1994 0000000c = rb2_lcd32_form_feed equ 12
1995                    ; line_number = 123
1996                    ; constant rb2_lcd32_carriage_return = 0xd
1997 0000000d = rb2_lcd32_carriage_return equ 13
1998                    ; line_number = 124
1999                    ; constant rb2_lcd32_column_set = 0x10
2000 00000010 = rb2_lcd32_column_set equ 16
2001            
2002            
2003                    ; buffer = 'midimotor1e'
2004                    ; line_number = 47
2005                    ; library rb2_constants exited
2006            
2007                    ; # The module uses a 20MHz resonator; thus, the oscillator mode is HS:
2008            
2009                    ; # Besides the bus RX/TX lines, only 4 other lines are used to
2010                    ; # control the motor -- RC<0:3>:
2011                    ; line_number = 54
2012                    ; package pdip
2013                    ; line_number = 55
2014                    ; pin 1 = power_supply
2015                    ; line_number = 56
2016                    ;  pin 2 = osc1
2017                    ; line_number = 57
2018                    ;  pin 3 = osc2
2019                    ; line_number = 58
2020                    ;  pin 4 = ra3_nc
2021                    ; line_number = 59
2022                    ;  pin 5 = rx, name=rx, bit=rx_bit
2023 00000007 = rx___byte equ _portc
2024 00000005 = rx___bit equ 5
2025 00000005 = rx_bit equ 5
2026                    ; line_number = 60
2027                    ;  pin 6 = tx, name=tx, bit=tx_bit
2028 00000007 = tx___byte equ _portc
2029 00000004 = tx___bit equ 4
2030 00000004 = tx_bit equ 4
2031                    ; line_number = 61
2032                    ;  pin 7 = rc3_nc
2033                    ; line_number = 62
2034                    ;  pin 8 = rc2_nc
2035                    ; line_number = 63
2036                    ;  pin 9 = rc1_out, name=m1b, mask=m1b_mask, bit=m1b_bit
2037 00000007 = m1b___byte equ _portc
2038 00000001 = m1b___bit equ 1
2039 00000002 = m1b_mask equ 2
2040 00000001 = m1b_bit equ 1
2041                    ; line_number = 64
2042                    ;  pin 10 = rc0_out, name=m1a, mask=m1a_mask, bit=m1a_bit
2043 00000007 = m1a___byte equ _portc
2044 00000000 = m1a___bit equ 0
2045 00000001 = m1a_mask equ 1
2046 00000000 = m1a_bit equ 0
2047                    ; line_number = 65
2048                    ;  pin 11 = an2
2049                    ; line_number = 66
2050                    ;  pin 12 = ra1_in, name=quad_a, mask=quad_a_mask, bit=quad_a_bit
2051 00000005 = quad_a___byte equ _porta
2052 00000001 = quad_a___bit equ 1
2053 00000002 = quad_a_mask equ 2
2054 00000001 = quad_a_bit equ 1
2055                    ; line_number = 67
2056                    ;  pin 13 = ra0_in, name=quad_b, mask=quad_b_mask, bit=quad_b_bit
2057 00000005 = quad_b___byte equ _porta
2058 00000000 = quad_b___bit equ 0
2059 00000001 = quad_b_mask equ 1
2060 00000000 = quad_b_bit equ 0
2061                    ; line_number = 68
2062                    ;  pin 14 = ground
2063            
2064                    ; # All of the 24-bit signed file24 in the 24-bit register file are stored
2065                    ; # in the {highs}, {middles} and {lows} arrays:
2066                    ; line_number = 72
2067                    ; constant position_index = 0		# Current position
2068 00000000 = position_index equ 0
2069                    ; line_number = 73
2070                    ; constant target_index = 1		# Target position
2071 00000001 = target_index equ 1
2072                    ; line_number = 74
2073                    ; constant divisor_index = 2		# Denominator for {kp}, {ki}, and {kd}
2074 00000002 = divisor_index equ 2
2075                    ; line_number = 75
2076                    ; constant kp_index = 3			# Numerator for {kp}
2077 00000003 = kp_index equ 3
2078                    ; line_number = 76
2079                    ; constant ki_index = 4			# Numerator for {ki}
2080 00000004 = ki_index equ 4
2081                    ; line_number = 77
2082                    ; constant kd_index = 5			# Numerator for {kd}
2083 00000005 = kd_index equ 5
2084                    ; line_number = 78
2085                    ; constant debug_index = 6
2086 00000006 = debug_index equ 6
2087                    ; line_number = 79
2088                    ; constant file24_size = 7		# 24-bit register file has 6 registers
2089 00000007 = file24_size equ 7
2090            
2091                    ; # We are short of bytes in data bank 0, so we stuff the 24-bit register
2092                    ; # files off into data bank 2:
2093                    ; line_number = 84
2094                    ; global highs[file24_size] array[byte]	# All the highs are grouped together
2095 00000120 = highs equ globals___2
2096                    ; line_number = 85
2097                    ; global middles[file24_size] array[byte]	# All the middles are grouped together
2098 00000127 = middles equ globals___2+7
2099                    ; line_number = 86
2100                    ; global lows[file24_size] array[byte]	# All the lows are grouped together
2101 0000012e = lows equ globals___2+14
2102            
2103                    ; # The quardarture is actually the same as the position:
2104                    ; line_number = 89
2105                    ; bind quad_high = highs[position_index]
2106 00000120 = quad_high equ globals___2
2107                    ; line_number = 90
2108                    ; bind quad_middle = middles[position_index]
2109 00000127 = quad_middle equ globals___2+7
2110                    ; line_number = 91
2111                    ; bind quad_low = lows[position_index]
2112 0000012e = quad_low equ globals___2+14
2113                    ; line_number = 92
2114                    ; global quad_state byte			# The quadrature state
2115 00000135 = quad_state equ globals___2+21
2116            
2117                    ; line_number = 94
2118                    ; global xstates[32] array[byte]
2119 00000136 = xstates equ globals___2+22
2120            
2121                    ; # Every else with the 24-bit register file24 is in data bank 0:
2122                    ; line_number = 98
2123                    ; global file24_changed byte		# 1 bit for each value to mark change
2124 00000020 = file24_changed equ globals___0
2125                    ; line_number = 99
2126                    ; global file24_zero byte			# 1 bit for each value set to zero
2127 00000021 = file24_zero equ globals___0+1
2128            
2129                    ; # A number of places need a temporary for high, middle and low.  Rather
2130                    ; # than chew up scarse memory, we share them all with globals.  As of now,
2131                    ; # these bytes are used in {file24_float_convert}() and {uart_manage}():
2132                    ; line_number = 104
2133                    ; global high byte			# Temporary high byte
2134 00000022 = high equ globals___0+2
2135                    ; line_number = 105
2136                    ; global middle byte			# Temporary middle byte
2137 00000023 = middle equ globals___0+3
2138                    ; line_number = 106
2139                    ; global low byte				# Temporary low byte
2140 00000024 = low equ globals___0+4
2141            
2142                    ; # The 8-bit register file is stored in {file8} and indexed using the
2143                    ; # indices below:
2144                    ; line_number = 110
2145                    ; constant configure_index = 0		# Configuration byte index
2146 00000000 = configure_index equ 0
2147                    ; line_number = 111
2148                    ; constant status_index = 1		# Status byte index
2149 00000001 = status_index equ 1
2150                    ; line_number = 112
2151                    ; constant speed_index = 2		# Current motor speed index
2152 00000002 = speed_index equ 2
2153                    ; line_number = 113
2154                    ; constant errors_index = 3		# Error count
2155 00000003 = errors_index equ 3
2156                    ; line_number = 114
2157                    ; constant deadband_index = 4		# Deadband for motor speed
2158 00000004 = deadband_index equ 4
2159                    ; line_number = 115
2160                    ; constant idle_index = 5			# Current idle count
2161 00000005 = idle_index equ 5
2162                    ; line_number = 116
2163                    ; constant limit_index = 6		# Loop index
2164 00000006 = limit_index equ 6
2165                    ; line_number = 117
2166                    ; constant file24_index_index = 7		# Index into 24-bit register file
2167 00000007 = file24_index_index equ 7
2168                    ; line_number = 118
2169                    ; constant file8_size = 8		# We have 8 registers in {file8]
2170 00000008 = file8_size equ 8
2171            
2172                    ; # Here is the actual array of {file8}:
2173                    ; line_number = 121
2174                    ; global file8[file8_size] array[byte]
2175 00000025 = file8 equ globals___0+5
2176            
2177                    ; # It is a hassle to always index into {file8}, we use binds to make
2178                    ; # the code more readable:
2179                    ; line_number = 125
2180                    ; bind configure = file8[configure_index]
2181 00000025 = configure equ globals___0+5
2182                    ; line_number = 126
2183                    ; bind motor_reverse = configure@0	# 1=>reverse motor direction
2184 00000025 = motor_reverse___byte equ globals___0+5
2185 00000000 = motor_reverse___bit equ 0
2186                    ; line_number = 127
2187                    ; bind position_reverse = configure@1	# 1=>reverse position direction
2188 00000025 = position_reverse___byte equ globals___0+5
2189 00000001 = position_reverse___bit equ 1
2190                    ; line_number = 128
2191                    ; bind use_potentiometer = configure@2	# 1=>potentiometer; 0=>quadrature
2192 00000025 = use_potentiometer___byte equ globals___0+5
2193 00000002 = use_potentiometer___bit equ 2
2194                    ; line_number = 129
2195                    ; bind status = file8[status_index]
2196 00000026 = status equ globals___0+6
2197                    ; line_number = 130
2198                    ; bind speed = file8[speed_index]
2199 00000027 = speed equ globals___0+7
2200                    ; line_number = 131
2201                    ; bind errors = file8[errors_index]
2202 00000028 = errors equ globals___0+8
2203                    ; line_number = 132
2204                    ; bind deadband = file8[deadband_index]
2205 00000029 = deadband equ globals___0+9
2206                    ; line_number = 133
2207                    ; bind idle = file8[idle_index]
2208 0000002a = idle equ globals___0+10
2209                    ; line_number = 134
2210                    ; bind limit = file8[limit_index]
2211 0000002b = limit equ globals___0+11
2212                    ; line_number = 135
2213                    ; bind file24_index = file8[file24_index_index]
2214 0000002c = file24_index equ globals___0+12
2215            
2216                    ; # These are the variables used to control motor1:
2217                    ; line_number = 138
2218                    ; global motor1_speed byte
2219 0000002d = motor1_speed equ globals___0+13
2220                    ; line_number = 139
2221                    ; global motor1_on_mask byte
2222 0000002e = motor1_on_mask equ globals___0+14
2223                    ; line_number = 140
2224                    ; global motor1_pulse_width byte
2225 0000002f = motor1_pulse_width equ globals___0+15
2226            
2227                    ; # UART Globals and constants:
2228            
2229                    ; line_number = 144
2230                    ; global state byte			# State machine for command parsing
2231 00000030 = state equ globals___0+16
2232                    ; line_number = 145
2233                    ; constant state_select_wait = 0		# Waiting for a select address
2234 00000000 = state_select_wait equ 0
2235                    ; line_number = 146
2236                    ; constant state_echo_then_command = 1	# Wait for echo then a command
2237 00000001 = state_echo_then_command equ 1
2238                    ; line_number = 147
2239                    ; constant state_command = 2		# Wait for a command
2240 00000002 = state_command equ 2
2241                    ; line_number = 148
2242                    ; constant state_file24_full_get1 = 3
2243 00000003 = state_file24_full_get1 equ 3
2244                    ; line_number = 149
2245                    ; constant state_file24_full_get2 = 4
2246 00000004 = state_file24_full_get2 equ 4
2247                    ; line_number = 150
2248                    ; constant state_file24_full_set1 = 5
2249 00000005 = state_file24_full_set1 equ 5
2250                    ; line_number = 151
2251                    ; constant state_file24_full_set2 = 6
2252 00000006 = state_file24_full_set2 equ 6
2253                    ; line_number = 152
2254                    ; constant state_file24_full_set3 = 7
2255 00000007 = state_file24_full_set3 equ 7
2256                    ; line_number = 153
2257                    ; constant state_value_low_set1 = 8
2258 00000008 = state_value_low_set1 equ 8
2259                    ; line_number = 154
2260                    ; constant state_value_middle_set1 = 9
2261 00000009 = state_value_middle_set1 equ 9
2262                    ; line_number = 155
2263                    ; constant state_value_high_set1 = 10
2264 0000000a = state_value_high_set1 equ 10
2265                    ; line_number = 156
2266                    ; constant state_file8_set1 = 11
2267 0000000b = state_file8_set1 equ 11
2268                    ; line_number = 157
2269                    ; constant state_file8_set2 = 12
2270 0000000c = state_file8_set2 equ 12
2271                    ; line_number = 158
2272                    ; constant state_file8_set3 = 13
2273 0000000d = state_file8_set3 equ 13
2274                    ; line_number = 159
2275                    ; constant state_address_set1 = 14
2276 0000000e = state_address_set1 equ 14
2277                    ; line_number = 160
2278                    ; constant state_address_set2 = 15
2279 0000000f = state_address_set2 equ 15
2280                    ; line_number = 161
2281                    ; constant state_address_set3 = 16
2282 00000010 = state_address_set3 equ 16
2283                    ; line_number = 162
2284                    ; constant state_address_set4 = 17
2285 00000011 = state_address_set4 equ 17
2286                    ; line_number = 163
2287                    ; constant state_probe_get1 = 18
2288 00000012 = state_probe_get1 equ 18
2289                    ; line_number = 164
2290                    ; constant state_probe_get2 = 19
2291 00000013 = state_probe_get2 equ 19
2292            
2293                    ; line_number = 166
2294                    ; global id_index byte			# Index into id string
2295 00000031 = id_index equ globals___0+17
2296            
2297                    ; # UART data input buffer:
2298                    ; line_number = 169
2299                    ; constant uart_input_size = 4			# Buffer size (=power of 2)
2300 00000004 = uart_input_size equ 4
2301                    ; line_number = 170
2302                    ; constant uart_input_mask = uart_input_size - 1	# Mask for index
2303 00000003 = uart_input_mask equ 3
2304                    ; line_number = 171
2305                    ; global uart_input[uart_input_size] array[byte]	# Buffer for input
2306 00000032 = uart_input equ globals___0+18
2307                    ; line_number = 172
2308                    ; global uart_input_in_index byte			# Next index to insert into
2309 00000036 = uart_input_in_index equ globals___0+22
2310                    ; line_number = 173
2311                    ; global uart_input_out_index byte		# Next index to remove from
2312 00000037 = uart_input_out_index equ globals___0+23
2313                    ; line_number = 174
2314                    ; global uart_input_count byte			# Bytes in buffer
2315 00000038 = uart_input_count equ globals___0+24
2316                    ; line_number = 175
2317                    ; global uart_input_pending bit			# 1=>data is pending; 0=>no data
2318 0000006f = uart_input_pending___byte equ globals___0+79
2319 00000000 = uart_input_pending___bit equ 0
2320            
2321                    ; line_number = 177
2322                    ; global address byte			# Address of this module
2323 00000039 = address equ globals___0+25
2324                    ; line_number = 178
2325                    ; global new_address byte			# New address of this module
2326 0000003a = new_address equ globals___0+26
2327            
2328                    ; # Load up floating point library in code bank 1 using datab bank 0:
2329                    ; line_number = 181
2330                    ; library_bank 1
2331                    ; line_number = 183
2332                    ; library _float32 entered
2333            
2334                    ; # Copyright (c) 2005-2006 Wayne C. Gramlich
2335                    ; # All rights reserved.
2336            
2337                    ; # This library implements the following procedures for general use
2338                    ; # by users:
2339                    ; #
2340                    ; #    _float32_from_byte			return float(x) where x is a byte
2341                    ; #    _float32_to_byte			return byte(x) whre x is a float
2342                    ; #
2343                    ; # The following additional procedures are implemented for use by the
2344                    ; # compiler.
2345                    ; #
2346                    ; #    _float32_pointer_load()		A := M[W]
2347                    ; #    _float32_pointer_add()		A := M[W]
2348                    ; #    _float32_pointer_divide()		A := A / M[W]
2349                    ; #    _float32_pointer_multiply()	A := A * M[W]
2350                    ; #    _float32_pointer_subtract()	A := A - M[W]
2351                    ; #    _float32_pointer_store		M[W] := A
2352                    ; #    _float32_pointer_negate		A := -A
2353                    ; #    _float32_pointer_reciprocal	A := 1/A
2354                    ; #    _float32_pointer_swap		A <=> M[W]
2355                    ; #    _float32_equals			_z := A = 0.0
2356                    ; #    _float32_not_equal			_z := A != 0.0
2357                    ; #    _float32_less_than			_z := if A < 0.0
2358                    ; #    _float32_less_than_or_equal	_z := A <= 0.0
2359                    ; #    _float32_greater_than		_z := A > 0.0
2360                    ; #    _float32_greater_than_or_equal	_z := A >= 0.0
2361                    ; #
2362                    ; # All of the procedures constants and labels in this library are
2363                    ; # prefixed by "_float32_".
2364                    ; #
2365                    ; # The _float32 library is seriously intertwingled (technical term)
2366                    ; # with the _float32_base library.  What this means is both libraries
2367                    ; # need to be loaded into the same code bank and data bank.  There
2368                    ; # is no real nead to worry since there is a "library _float32_base"
2369                    ; # immediately below.  These two libraries pretty much fill up
2370                    ; # all of the code bank they are loaded into.
2371                    ; #
2372                    ; # For the uCL compiler, floats are required to be aligned on even
2373                    ; # memory addresses.  Since the PIC16F* processor can not access more
2374                    ; # 512 bytes of RAM, this means that a pointer a float can be represented
2375                    ; # in 8-bits as (float_address>>1).  (Pretty, slick!)
2376            
2377                    ; buffer = '_float32'
2378                    ; line_number = 46
2379                    ; library _float32_base entered
2380            
2381                    ; # Copyright (c) 2005-2006 by Wayne C. Gramlich
2382                    ; # All rights reserved.
2383                    ; # Copyright (c) 1997 by Microchip, Inc.
2384                    ; # All rights reserved.
2385                    ; #
2386                    ; # This code is based on a floating point library provided by Microchip
2387                    ; # in AN575.  Note, only the translation aspect is copyright Wayne C.
2388                    ; # Gramlich; the original code is copyright by Microchip.
2389                    ; #
2390                    ; #
2391                    ; # This library implements the following procedures:
2392                    ; #
2393                    ; #    _float32_from_integer24()		Convert 24-bit integer into float
2394                    ; #    _float32_normalize()		Normalize a float
2395                    ; #    _float32_from integer32()		Convert 32-bit integer into float
2396                    ; #    _float32_normalize40()		Normalize a 40-bit float
2397                    ; #    _float32_integer24_convert()	Convert float into 24 bit integer
2398                    ; #    _float32_integer32_convert()	Convert float into 32 bit integer
2399                    ; #    _float32_multiply()		Multiply two floats
2400                    ; #    _float32_divide()			Divide two floats
2401                    ; #    _float32_subtract()		Subtract two floats
2402                    ; #    _float32_add()			Add two floats
2403                    ; #
2404                    ; # All procedures, constants, and labels in this procedure are
2405                    ; # prefixed with "_float32_".
2406                    ; #
2407                    ; # Every attempt has been made to ensure that it compiles *exactly* as
2408                    ; # the .hex file that ships with AN575.  The remaining procedures
2409                    ; # needed by the uCL compiler are in library _float32.
2410                    ; #
2411                    ; # Note that this procedure defines memory needed for both the
2412                    ; # main arithmetic procedures and some of the square root and trigametric
2413                    ; # procedures in the _float32_trig library.
2414            
2415                    ; buffer = '_float32_base'
2416                    ; line_number = 37
2417                    ; constant _float32_status = 3
2418 00000003 = _float32_status equ 3
2419                    ; line_number = 38
2420                    ; constant _float32_c = 0
2421 00000000 = _float32_c equ 0
2422                    ; line_number = 39
2423                    ; constant _float32_z = 2
2424 00000002 = _float32_z equ 2
2425            
2426                    ; # The floating point variables:
2427                    ; line_number = 42
2428                    ; constant _float32_msb = 7
2429 00000007 = _float32_msb equ 7
2430                    ; line_number = 43
2431                    ; constant _float32_lsb = 0
2432 00000000 = _float32_lsb equ 0
2433            
2434                    ; line_number = 45
2435                    ; global _float32_loc20 byte
2436 000000a0 = _float32_loc20 equ globals___1
2437                    ; line_number = 46
2438                    ; global _float32_loc21 byte
2439 000000a1 = _float32_loc21 equ globals___1+1
2440                    ; line_number = 47
2441                    ; global _float32_loc22 byte
2442 000000a2 = _float32_loc22 equ globals___1+2
2443                    ; line_number = 48
2444                    ; global _float32_loc23 byte
2445 000000a3 = _float32_loc23 equ globals___1+3
2446                    ; line_number = 49
2447                    ; global _float32_loc24 byte
2448 000000a4 = _float32_loc24 equ globals___1+4
2449                    ; line_number = 50
2450                    ; global _float32_loc25 byte
2451 000000a5 = _float32_loc25 equ globals___1+5
2452                    ; line_number = 51
2453                    ; global _float32_loc26 byte
2454 000000a6 = _float32_loc26 equ globals___1+6
2455                    ; line_number = 52
2456                    ; global _float32_loc27 byte
2457 000000a7 = _float32_loc27 equ globals___1+7
2458                    ; line_number = 53
2459                    ; global _float32_loc28 byte
2460 000000a8 = _float32_loc28 equ globals___1+8
2461                    ; line_number = 54
2462                    ; global _float32_loc29 byte
2463 000000a9 = _float32_loc29 equ globals___1+9
2464                    ; line_number = 55
2465                    ; global _float32_loc2a byte
2466 000000aa = _float32_loc2a equ globals___1+10
2467                    ; line_number = 56
2468                    ; global _float32_loc2b byte
2469 000000ab = _float32_loc2b equ globals___1+11
2470                    ; line_number = 57
2471                    ; global _float32_loc2c byte
2472 000000ac = _float32_loc2c equ globals___1+12
2473                    ; line_number = 58
2474                    ; global _float32_loc2d byte
2475 000000ad = _float32_loc2d equ globals___1+13
2476                    ; line_number = 59
2477                    ; global _float32_loc2e byte
2478 000000ae = _float32_loc2e equ globals___1+14
2479                    ; line_number = 60
2480                    ; global _float32_loc2f byte
2481 000000af = _float32_loc2f equ globals___1+15
2482                    ; line_number = 61
2483                    ; global _float32_loc30 byte
2484 000000b0 = _float32_loc30 equ globals___1+16
2485                    ; line_number = 62
2486                    ; global _float32_loc31 byte
2487 000000b1 = _float32_loc31 equ globals___1+17
2488                    ; line_number = 63
2489                    ; global _float32_loc32 byte
2490 000000b2 = _float32_loc32 equ globals___1+18
2491                    ; line_number = 64
2492                    ; global _float32_loc33 byte
2493 000000b3 = _float32_loc33 equ globals___1+19
2494                    ; line_number = 65
2495                    ; global _float32_loc34 byte
2496 000000b4 = _float32_loc34 equ globals___1+20
2497                    ; line_number = 66
2498                    ; global _float32_loc35 byte
2499 000000b5 = _float32_loc35 equ globals___1+21
2500                    ; line_number = 67
2501                    ; global _float32_loc36 byte
2502 000000b6 = _float32_loc36 equ globals___1+22
2503                    ; line_number = 68
2504                    ; global _float32_loc37 byte
2505 000000b7 = _float32_loc37 equ globals___1+23
2506                    ; line_number = 69
2507                    ; global _float32_loc38 byte
2508 000000b8 = _float32_loc38 equ globals___1+24
2509                    ; line_number = 70
2510                    ; global _float32_loc39 byte
2511 000000b9 = _float32_loc39 equ globals___1+25
2512                    ; line_number = 71
2513                    ; global _float32_loc3a byte
2514 000000ba = _float32_loc3a equ globals___1+26
2515                    ; line_number = 72
2516                    ; global _float32_loc3b byte
2517 000000bb = _float32_loc3b equ globals___1+27
2518                    ; line_number = 73
2519                    ; global _float32_loc3c byte
2520 000000bc = _float32_loc3c equ globals___1+28
2521                    ; line_number = 74
2522                    ; global _float32_loc3d byte
2523 000000bd = _float32_loc3d equ globals___1+29
2524                    ; line_number = 75
2525                    ; global _float32_loc3e byte
2526 000000be = _float32_loc3e equ globals___1+30
2527                    ; line_number = 76
2528                    ; global _float32_loc3f byte
2529 000000bf = _float32_loc3f equ globals___1+31
2530                    ; line_number = 77
2531                    ; global _float32_loc40 byte
2532 000000c0 = _float32_loc40 equ globals___1+32
2533                    ; line_number = 78
2534                    ; global _float32_loc41 byte
2535 000000c1 = _float32_loc41 equ globals___1+33
2536                    ; line_number = 79
2537                    ; global _float32_loc42 byte
2538 000000c2 = _float32_loc42 equ globals___1+34
2539                    ; line_number = 80
2540                    ; global _float32_loc43 byte
2541 000000c3 = _float32_loc43 equ globals___1+35
2542                    ; #global _float32_loc44 byte
2543                    ; #global _float32_loc45 byte
2544                    ; #global _float32_loc46 byte
2545                    ; #global _float32_loc47 byte
2546                    ; #global _float32_loc48 byte
2547                    ; #global _float32_loc49 byte
2548                    ; #global _float32_loc4a byte
2549                    ; #global _float32_loc4b byte
2550            
2551                    ; # general register variables
2552            
2553                    ; # These are not used currently!!!
2554                    ; #bind _float32_accb7 = _float32_loc20
2555                    ; #bind _float32_accb6 = _float32_loc21
2556                    ; #bind _float32_accb5 = _float32_loc22
2557                    ; #bind _float32_accb4 = _float32_loc23
2558                    ; #bind _float32_accb3 = _float32_loc24
2559                    ; #bind _float32_accb2 = _float32_loc25
2560                    ; #bind _float32_accb1 = _float32_loc26
2561                    ; #bind _float32_accb0 = _float32_loc27
2562                    ; # most significant byte of contiguous 8 byte accumulator
2563                    ; #bind _float32_acc = _float32_loc27
2564            
2565                    ; # save location for sign in MSB
2566                    ; line_number = 105
2567                    ; bind _float32_sign = _float32_loc29
2568 000000a9 = _float32_sign equ globals___1+9
2569            
2570                    ; line_number = 107
2571                    ; bind _float32_tempb3 = _float32_loc30
2572 000000b0 = _float32_tempb3 equ globals___1+16
2573                    ; line_number = 108
2574                    ; bind _float32_tempb2 = _float32_loc31
2575 000000b1 = _float32_tempb2 equ globals___1+17
2576                    ; line_number = 109
2577                    ; bind _float32_tempb1 = _float32_loc32
2578 000000b2 = _float32_tempb1 equ globals___1+18
2579                    ; line_number = 110
2580                    ; bind _float32_tempb0 = _float32_loc33
2581 000000b3 = _float32_tempb0 equ globals___1+19
2582                    ; # temporary storage
2583                    ; line_number = 112
2584                    ; bind _float32_temp = _float32_loc33
2585 000000b3 = _float32_temp equ globals___1+19
2586            
2587                    ; # binary operation arguments
2588            
2589                    ; line_number = 116
2590                    ; bind _float32_aargb7 = _float32_loc20
2591 000000a0 = _float32_aargb7 equ globals___1
2592                    ; line_number = 117
2593                    ; bind _float32_aargb6 = _float32_loc21
2594 000000a1 = _float32_aargb6 equ globals___1+1
2595                    ; line_number = 118
2596                    ; bind _float32_aargb5 = _float32_loc22
2597 000000a2 = _float32_aargb5 equ globals___1+2
2598                    ; line_number = 119
2599                    ; bind _float32_aargb4 = _float32_loc23
2600 000000a3 = _float32_aargb4 equ globals___1+3
2601                    ; line_number = 120
2602                    ; bind _float32_aargb3 = _float32_loc24
2603 000000a4 = _float32_aargb3 equ globals___1+4
2604                    ; line_number = 121
2605                    ; bind _float32_aargb2 = _float32_loc25
2606 000000a5 = _float32_aargb2 equ globals___1+5
2607                    ; line_number = 122
2608                    ; bind _float32_aargb1 = _float32_loc26
2609 000000a6 = _float32_aargb1 equ globals___1+6
2610                    ; line_number = 123
2611                    ; bind _float32_aargb0 = _float32_loc27
2612 000000a7 = _float32_aargb0 equ globals___1+7
2613                    ; # most significant byte of argument A
2614                    ; line_number = 125
2615                    ; bind _float32_aarg = _float32_loc27
2616 000000a7 = _float32_aarg equ globals___1+7
2617            
2618                    ; line_number = 127
2619                    ; bind _float32_bargb3 = _float32_loc2b
2620 000000ab = _float32_bargb3 equ globals___1+11
2621                    ; line_number = 128
2622                    ; bind _float32_bargb2 = _float32_loc2c
2623 000000ac = _float32_bargb2 equ globals___1+12
2624                    ; line_number = 129
2625                    ; bind _float32_bargb1 = _float32_loc2d
2626 000000ad = _float32_bargb1 equ globals___1+13
2627                    ; line_number = 130
2628                    ; bind _float32_bargb0 = _float32_loc2e
2629 000000ae = _float32_bargb0 equ globals___1+14
2630                    ; # most significant byte of argument B
2631                    ; line_number = 132
2632                    ; bind _float32_barg = _float32_loc2e
2633 000000ae = _float32_barg equ globals___1+14
2634            
2635                    ; # Note that AARG and ACC reference the same storage locations
2636            
2637                    ; # FIXED POINT SPECIFIC DEFINITIONS
2638                    ; # remainder storage
2639            
2640                    ; # These are not currently being used!!!
2641                    ; #bind _float32_remb3 = _float32_loc20
2642                    ; #bind _float32_remb2 = _float32_loc21
2643                    ; #bind _float32_remb1 = _float32_loc22
2644                    ; ## most significant byte of remainder
2645                    ; #bind _float32_remb0 = _float32_loc23
2646            
2647                    ; line_number = 146
2648                    ; bind _float32_loopcount = _float32_loc34
2649 000000b4 = _float32_loopcount equ globals___1+20
2650            
2651                    ; # FLOATING POINT SPECIFIC DEFINITIONS
2652                    ; # literal constants
2653                    ; line_number = 150
2654                    ; constant _float32_expbias = 127
2655 0000007f = _float32_expbias equ 127
2656                    ; line_number = 151
2657                    ; constant _float32_expbias_1 = _float32_expbias - 1
2658 0000007e = _float32_expbias_1 equ 126
2659                    ; line_number = 152
2660                    ; constant _float32_expbias_23 = _float32_expbias + 23
2661 00000096 = _float32_expbias_23 equ 150
2662                    ; line_number = 153
2663                    ; constant _float32_expbias_31 = _float32_expbias + 31
2664 0000009e = _float32_expbias_31 equ 158
2665            
2666                    ; # biased exponents:
2667            
2668                    ; # 8 bit biased exponent
2669                    ; line_number = 158
2670                    ; bind _float32_exp = _float32_loc28
2671 000000a8 = _float32_exp equ globals___1+8
2672            
2673                    ; # 8 bit biased exponent for argument A
2674                    ; line_number = 161
2675                    ; bind _float32_aexp = _float32_loc28
2676 000000a8 = _float32_aexp equ globals___1+8
2677            
2678                    ; # 8 bit biased exponent for argument B
2679                    ; line_number = 164
2680                    ; bind _float32_bexp = _float32_loc2f
2681 000000af = _float32_bexp equ globals___1+15
2682            
2683                    ; # floating point library exception flags
2684            
2685                    ; # floating point library exception flags
2686                    ; line_number = 169
2687                    ; bind _float32_fpflags = _float32_loc2a
2688 000000aa = _float32_fpflags equ globals___1+10
2689            
2690                    ; # bit0 = integer overflow flag
2691                    ; line_number = 172
2692                    ; constant _float32_iov = 0
2693 00000000 = _float32_iov equ 0
2694            
2695                    ; # bit1 = floating point overflow flag
2696                    ; line_number = 175
2697                    ; constant _float32_fov = 1
2698 00000001 = _float32_fov equ 1
2699            
2700                    ; # bit2 = floating point underflow flag
2701                    ; line_number = 178
2702                    ; constant _float32_fun = 2
2703 00000002 = _float32_fun equ 2
2704            
2705                    ; # bit3 = floating point divide by zero flag
2706                    ; line_number = 181
2707                    ; constant _float32_fdz = 3
2708 00000003 = _float32_fdz equ 3
2709            
2710                    ; # bit4 = not-a-number exception flag
2711                    ; line_number = 184
2712                    ; constant _float32_nan = 4
2713 00000004 = _float32_nan equ 4
2714            
2715                    ; # bit5 = domain error exception flag
2716                    ; line_number = 187
2717                    ; constant _float32_dom = 5
2718 00000005 = _float32_dom equ 5
2719            
2720                    ; # bit6 = floating point rounding flag, 0 = truncation; 1 = unbiased rounding
2721                    ; # to nearest LSB
2722                    ; line_number = 191
2723                    ; constant _float32_rnd = 6
2724 00000006 = _float32_rnd equ 6
2725            
2726                    ; # bit7 = floating point saturate flag, 0 = terminate on
2727                    ; # exception without saturation, 1 = terminate on
2728                    ; # exception with saturation to appropriate value
2729                    ; line_number = 196
2730                    ; constant _float32_sat = 7
2731 00000007 = _float32_sat equ 7
2732            
2733                    ; #	ELEMENTARY FUNCTION MEMORY
2734            
2735                    ; line_number = 200
2736                    ; bind _float32_cexp = _float32_loc35
2737 000000b5 = _float32_cexp equ globals___1+21
2738                    ; line_number = 201
2739                    ; bind _float32_cargb0 = _float32_loc36
2740 000000b6 = _float32_cargb0 equ globals___1+22
2741                    ; line_number = 202
2742                    ; bind _float32_cargb1 = _float32_loc37
2743 000000b7 = _float32_cargb1 equ globals___1+23
2744                    ; line_number = 203
2745                    ; bind _float32_cargb2 = _float32_loc38
2746 000000b8 = _float32_cargb2 equ globals___1+24
2747                    ; line_number = 204
2748                    ; bind _float32_cargb3 = _float32_loc39
2749 000000b9 = _float32_cargb3 equ globals___1+25
2750            
2751                    ; line_number = 206
2752                    ; bind _float32_dexp = _float32_loc3a
2753 000000ba = _float32_dexp equ globals___1+26
2754                    ; line_number = 207
2755                    ; bind _float32_dargb0 = _float32_loc3b
2756 000000bb = _float32_dargb0 equ globals___1+27
2757                    ; line_number = 208
2758                    ; bind _float32_dargb1 = _float32_loc3c
2759 000000bc = _float32_dargb1 equ globals___1+28
2760                    ; line_number = 209
2761                    ; bind _float32_dargb2 = _float32_loc3d
2762 000000bd = _float32_dargb2 equ globals___1+29
2763                    ; line_number = 210
2764                    ; bind _float32_dargb3 = _float32_loc3e
2765 000000be = _float32_dargb3 equ globals___1+30
2766            
2767                    ; line_number = 212
2768                    ; bind _float32_eexp = _float32_loc3f
2769 000000bf = _float32_eexp equ globals___1+31
2770                    ; line_number = 213
2771                    ; bind _float32_eargb0 = _float32_loc40
2772 000000c0 = _float32_eargb0 equ globals___1+32
2773                    ; line_number = 214
2774                    ; bind _float32_eargb1 = _float32_loc41
2775 000000c1 = _float32_eargb1 equ globals___1+33
2776                    ; line_number = 215
2777                    ; bind _float32_eargb2 = _float32_loc42
2778 000000c2 = _float32_eargb2 equ globals___1+34
2779                    ; line_number = 216
2780                    ; bind _float32_eargb3 = _float32_loc43
2781 000000c3 = _float32_eargb3 equ globals___1+35
2782            
2783                    ; #bind _float32_zargb0 = _float32_loc44
2784                    ; #bind _float32_zargb1 = _float32_loc45
2785                    ; #bind _float32_zargb2 = _float32_loc46
2786                    ; #bind _float32_zargb3 = _float32_loc47
2787            
2788                    ; #bind _float32_randb0 = _float32_loc48
2789                    ; #bind _float32_randb1 = _float32_loc49
2790                    ; #bind _float32_randb2 = _float32_loc4a
2791                    ; #bind _float32_randb3 = _float32_loc4b
2792            
2793                    ; # 32 BIT FLOATING POINT CONSTANTS
2794            
2795                    ; # Machine precision
2796                    ; # 5.96046447754E-8 = 2**-24
2797                    ; line_number = 232
2798                    ; constant _float32_machep32exp = 0x67
2799 00000067 = _float32_machep32exp equ 103
2800                    ; line_number = 233
2801                    ; constant _float32_machep32b0 = 0
2802 00000000 = _float32_machep32b0 equ 0
2803                    ; line_number = 234
2804                    ; constant _float32_machep32b1 = 0
2805 00000000 = _float32_machep32b1 equ 0
2806                    ; line_number = 235
2807                    ; constant _float32_machep32b2 = 0
2808 00000000 = _float32_machep32b2 equ 0
2809            
2810                    ; # Maximum argument to EXP32
2811                    ; # 88.7228391117 = log(2**128)
2812                    ; line_number = 239
2813                    ; constant _float32_maxlog32exp = 0x85
2814 00000085 = _float32_maxlog32exp equ 133
2815                    ; line_number = 240
2816                    ; constant _float32_maxlog32b0 = 0x31
2817 00000031 = _float32_maxlog32b0 equ 49
2818                    ; line_number = 241
2819                    ; constant _float32_maxlog32b1 = 0x72
2820 00000072 = _float32_maxlog32b1 equ 114
2821                    ; line_number = 242
2822                    ; constant _float32_maxlog32b2 = 0x18
2823 00000018 = _float32_maxlog32b2 equ 24
2824            
2825                    ; # Minimum argument to EXP32
2826                    ; # -87.3365447506 = log(2**-126)
2827                    ; line_number = 246
2828                    ; constant _float32_minlog32exp = 0x85
2829 00000085 = _float32_minlog32exp equ 133
2830                    ; line_number = 247
2831                    ; constant _float32_minlog32b0 = 0xae
2832 000000ae = _float32_minlog32b0 equ 174
2833                    ; line_number = 248
2834                    ; constant _float32_minlog32b1 = 0xac
2835 000000ac = _float32_minlog32b1 equ 172
2836                    ; line_number = 249
2837                    ; constant _float32_minlog32b2 = 0x50
2838 00000050 = _float32_minlog32b2 equ 80
2839            
2840                    ; # Maximum argument to EXP1032
2841                    ; # 38.531839445 = log10(2**128)
2842                    ; line_number = 253
2843                    ; constant _float32_maxlog1032exp = 0x84
2844 00000084 = _float32_maxlog1032exp equ 132
2845                    ; line_number = 254
2846                    ; constant _float32_maxlog1032b0 = 0x1a
2847 0000001a = _float32_maxlog1032b0 equ 26
2848                    ; line_number = 255
2849                    ; constant _float32_maxlog1032b1 = 0x20
2850 00000020 = _float32_maxlog1032b1 equ 32
2851                    ; line_number = 256
2852                    ; constant _float32_maxlog1032b2 = 0x9b
2853 0000009b = _float32_maxlog1032b2 equ 155
2854            
2855                    ; # Minimum argument to EXP1032
2856                    ; # -37.9297794537 = log10(2**-126)
2857                    ; line_number = 260
2858                    ; constant _float32_minlog1032exp = 0x84
2859 00000084 = _float32_minlog1032exp equ 132
2860                    ; line_number = 261
2861                    ; constant _float32_minlog1032b0 = 0x97
2862 00000097 = _float32_minlog1032b0 equ 151
2863                    ; line_number = 262
2864                    ; constant _float32_minlog1032b1 = 0xb8
2865 000000b8 = _float32_minlog1032b1 equ 184
2866                    ; line_number = 263
2867                    ; constant _float32_minlog1032b2 = 0x18
2868 00000018 = _float32_minlog1032b2 equ 24
2869            
2870                    ; # Maximum representable number before overflow
2871                    ; # 6.80564774407E38 = (2**128) * (2 - 2**-23)
2872                    ; line_number = 267
2873                    ; constant _float32_maxnum32exp = 0xff
2874 000000ff = _float32_maxnum32exp equ 255
2875                    ; line_number = 268
2876                    ; constant _float32_maxnum32b0 = 0x7f
2877 0000007f = _float32_maxnum32b0 equ 127
2878                    ; line_number = 269
2879                    ; constant _float32_maxnum32b1 = 0xff
2880 000000ff = _float32_maxnum32b1 equ 255
2881                    ; line_number = 270
2882                    ; constant _float32_maxnum32b2 = 0xff
2883 000000ff = _float32_maxnum32b2 equ 255
2884            
2885                    ; # Minimum representable number before underflow
2886                    ; # 1.17549435082E-38 = (2**-126) * 1
2887                    ; line_number = 274
2888                    ; constant _float32_minnum32exp = 1
2889 00000001 = _float32_minnum32exp equ 1
2890                    ; line_number = 275
2891                    ; constant _float32_minnum32b0 = 0
2892 00000000 = _float32_minnum32b0 equ 0
2893                    ; line_number = 276
2894                    ; constant _float32_minnum32b1 = 0
2895 00000000 = _float32_minnum32b1 equ 0
2896                    ; line_number = 277
2897                    ; constant _float32_minnum32b2 = 0
2898 00000000 = _float32_minnum32b2 equ 0
2899            
2900                    ; # Loss threshhold for argument to SIN32 and COS32
2901                    ; # 4096 = sqrt(2**24)
2902                    ; line_number = 281
2903                    ; constant _float32_lossthr32exp = 0x8b
2904 0000008b = _float32_lossthr32exp equ 139
2905                    ; line_number = 282
2906                    ; constant _float32_lossthr32b0 = 0
2907 00000000 = _float32_lossthr32b0 equ 0
2908                    ; line_number = 283
2909                    ; constant _float32_lossthr32b1 = 0
2910 00000000 = _float32_lossthr32b1 equ 0
2911                    ; line_number = 284
2912                    ; constant _float32_lossthr32b2 = 0
2913 00000000 = _float32_lossthr32b2 equ 0
2914            
2915                    ; # PIC16 32 BIT FLOATING POINT LIBRARY
2916                    ; #
2917                    ; # Unary operations: both input and output are in _float32_aexp,_FLOAT32_AARG
2918                    ; # Binary operations: input in _float32_aexp,_FLOAT32_AARG and _float32_bexp,_FLOAT32_BARG with output in _float32_aexp,_FLOAT32_AARG
2919                    ; #
2920                    ; # All routines return WREG = 0x00 for successful completion, and WREG = 0xFF
2921                    ; # for an error condition specified in _FLOAT32_FPFLAGS.
2922                    ; # All timings are worst case cycle counts
2923            
2924                    ; # Routine		Function
2925            
2926                    ; # FLO2432	24 bit integer to 32 bit floating point conversion
2927                    ; # FLO32
2928                    ; #	Timing:	RND0	RND1
2929                    ; #	SAT0	104	104
2930                    ; #	SAT1	110	110
2931            
2932                    ; # NRM3232	32 bit normalization of unnormalized 32 bit
2933                    ; # NRM32		floating point numbers
2934                    ; #	Timing:	RND0	RND1
2935                    ; #	SAT0	90	90
2936                    ; #	SAT1	96	96
2937            
2938                    ; # INT3224	32 bit floating point to 24 bit integer conversion
2939                    ; # INT32
2940                    ; #	Timing:	RND0	RND1
2941                    ; #	SAT0	104	112
2942                    ; #	SAT1	104	114
2943            
2944                    ; # FLO3232	32 bit integer to 32 bit floating point conversion
2945                    ; #	Timing:	RND0	RND1
2946                    ; #	SAT0	129	145
2947                    ; #	SAT1	129	152
2948            
2949                    ; # NRM4032	32 bit normalization of unnormalized 40 bit floating
2950                    ; #		 point numbers
2951                    ; #	Timing: RND0	RND1
2952                    ; #	SAT0	112	128
2953                    ; #	SAT1	112	135
2954            
2955                    ; # INT3232	32 bit floating point to 32 bit integer conversion
2956                    ; #	Timing:	RND0	RND1
2957                    ; #	SAT0	130	137
2958                    ; #	SAT1	130	137
2959            
2960                    ; # FPA32		32 bit floating point add
2961                    ; #	Timing:	RND0	RND1
2962                    ; #	SAT0	251	265
2963                    ; #	SAT1	251	271
2964            
2965                    ; # FPS32		32 bit floating point subtract
2966                    ; #	Timing:	RND0	RND1
2967                    ; #	SAT0	253	267
2968                    ; #	SAT1	253	273
2969            
2970                    ; # FPM32		32 bit floating point multiply
2971                    ; # 	Timing: RND0	RND1
2972                    ; #	SAT0	574	588
2973                    ; #	SAT1	574	591
2974            
2975                    ; # FPD32		32 bit floating point divide
2976                    ; #	Timing:	RND0	RND1
2977                    ; #	SAT0	932	968
2978                    ; #	SAT1	932	971
2979            
2980                    ; # 32 bit floating point representation
2981                    ; #
2982                    ; # EXPONENT	8 bit biased exponent
2983                    ; #		It is important to note that the use of biased
2984                    ; #		exponents produces a unique representation of a
2985                    ; #		floating point 0, given by
2986                    ; #		EXP = HIGHBYTE = MIDBYTE = LOWBYTE = 0x00,
2987                    ; #		with 0 being the only number with EXP = 0.
2988                    ; #
2989                    ; # HIGHBYTE	8 bit most significant byte of fraction in
2990                    ; #		sign-magnitude representation, with SIGN = MSB,
2991                    ; #		implicit MSB = 1 and radix point to the right of MSB
2992                    ; #
2993                    ; # MIDBYTE	8 bit middle significant byte of sign-magnitude fraction
2994                    ; #
2995                    ; # LOWBYTE	8 bit least significant byte of sign-magnitude fraction
2996                    ; #
2997                    ; # EXPONENT	HIGHBYTE	MIDBYTE		LOWBYTE
2998                    ; # xxxxxxxx	S.xxxxxxx	xxxxxxxx	xxxxxxxx
2999                    ; #                |
3000                    ; #		RADIX
3001                    ; #		POINT
3002            
3003                    ; Delaying code generation for procedure  _float32_from_integer24
3004                    ; Delaying code generation for procedure  _float32_normalize
3005                    ; Delaying code generation for procedure  _float32_from_integer32
3006                    ; Delaying code generation for procedure  _float32_normalize40
3007                    ; Delaying code generation for procedure  _float32_integer24_convert
3008                    ; Delaying code generation for procedure  float32_integer32_convert
3009                    ; Delaying code generation for procedure  _float32_multiply
3010                    ; Delaying code generation for procedure  _float32_divide
3011                    ; Delaying code generation for procedure  _float32_subtract
3012                    ; Delaying code generation for procedure  _float32_add
3013            
3014                    ; buffer = '_float32'
3015                    ; line_number = 46
3016                    ; library _float32_base exited
3017            
3018                    ; # FIXME: Make sure that none of the procedure allocate any argument storage!!!
3019            
3020                    ; Delaying code generation for procedure  _float32_pointer_load
3021                    ; Delaying code generation for procedure  _float32_pointer_add
3022                    ; Delaying code generation for procedure  _float32_pointer_divide
3023                    ; Delaying code generation for procedure  _float32_pointer_multiply
3024                    ; Delaying code generation for procedure  _float32_pointer_subtract
3025                    ; Delaying code generation for procedure  _float32_pointer_store
3026                    ; Delaying code generation for procedure  _float32_negate
3027                    ; Delaying code generation for procedure  _float32_reciprocal
3028                    ; Delaying code generation for procedure  _float32_pointer_swap
3029                    ; Delaying code generation for procedure  _float32_from_byte
3030                    ; Delaying code generation for procedure  _float32_to_byte
3031                    ; Delaying code generation for procedure  _float32_equals
3032                    ; Delaying code generation for procedure  _float32_not_equal
3033                    ; Delaying code generation for procedure  _float32_less_than
3034                    ; Delaying code generation for procedure  _float32_less_than_or_equal
3035                    ; Delaying code generation for procedure  _float32_greater_than
3036                    ; Delaying code generation for procedure  _float32_greater_than_or_equal
3037            
3038                    ; buffer = 'midimotor1e'
3039                    ; line_number = 183
3040                    ; library _float32 exited
3041            
3042                    ; line_number = 186
3043                    ; origin 0
3044   0000 :           org     0
3045            
3046                    ; line_number = 188
3047                    ;info   188, 0
3048                    ; procedure start
3049   0000 :   start:
3050                    ; arguments_none
3051                    ; line_number = 190
3052                    ;  returns_nothing
3053                    ; line_number = 191
3054                    ;  return_suppress
3055            
3056                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
3057                    ; line_number = 193
3058                    ;  assemble
3059                    ;info   193, 0
3060                    ; line_number = 194
3061                    ;info   194, 0
3062                    ; databank start, main
3063                    ; line_number = 195
3064                    ;info   195, 0
3065                    ; codebank start, main
3066                    ; line_number = 196
3067                    ;info   196, 0
3068 0000 28a6          goto    main
3069            
3070                    ; delay after procedure statements=non-uniform
3071                    ; Return instruction suppressed by 'return_suppress'
3072            
3073            
3074            
3075            
3076                    ; line_number = 198
3077                    ; origin 4
3078   0004 :           org     4
3079            
3080                    ; line_number = 200
3081                    ;info   200, 4
3082                    ; procedure interrupt
3083   0004 :   interrupt:
3084 00000071 = interrupt___w_save equ shared___globals+1
3085 00000070 = interrupt___status_save equ shared___globals
3086                    ; Carefully save __w and __tatus into RAM
3087                    ; Save W first (easy)
3088 0004 00f1          movwf   interrupt___w_save
3089                    ; Save Status without smashing it (tricky)
3090                    ; Move swapped version of status into W
3091 0005 0e03          swapf   __status,w
3092                    ; Store swapped version of status into RAM
3093 0006 00f0          movwf   interrupt___status_save
3094                    ; arguments_none
3095                    ; line_number = 202
3096                    ;  returns_nothing
3097            
3098                    ; # This is the interrupt processing routine.  While it is quite long
3099                    ; # it actually does not take very long to execute.  This is important
3100                    ; # since long interrupt routines can cause problems with over module
3101                    ; # latency.
3102            
3103                    ; # Step1:  Save our system registers.  There are 4 registers that
3104                    ; # need to be saved -- W, STATUS, FSR, and PCLATH.
3105                    ; # 
3106                    ; #  W & STATUS:
3107                    ; #	  The compiler takes care of the weird code needed to safely
3108                    ; #     save W adn STATUS registers.  (Read the generated assembly code
3109                    ; #     comments to see some strange usage of the SWAPF instruction.)
3110                    ; #     Since the microcontroller can be using any of the 4 register
3111                    ; #     banks when the interrupt occurs, the W and STATUS register
3112                    ; #     are stored into a couple of shared memory bank registers.
3113                    ; #     There are 16 of these registers available, and the interupt
3114                    ; #     takes 2 of the 16.
3115                    ; #
3116                    ; #  PCLATH:
3117                    ; #     When the interrupt occurs, the previous progam counter is
3118                    ; #     pushed onto the stack and then the program counter is set
3119                    ; #     to 4 to force execution of the interrupt routine.  The PCLATH
3120                    ; #     register is left unchanged.  Since the PCLATH register can
3121                    ; #     pointing to any of the 4 code banks (only 2 implemented for
3122                    ; #     the PIC16F688), it is vital that we update PCLATH to point
3123                    ; #     to code bank 0 (where the interrupt routine is) before the
3124                    ; #     first GOTO, CALL, or computed GOTO.  Otherwise, the first
3125                    ; #     GOTO, CALL, or computed GOTO will jump off into code bank
3126                    ; #     that was being used prior to the interrupt.
3127                    ; #
3128                    ; #  FSR:
3129                    ; #     The FSR register needs to be saved since we using code that
3130                    ; #     indexes into a small buffer to store UART input.
3131                    ; #
3132                    ; #  Both PCLATH and FSR can be saved into regular registers in
3133                    ; #  register bank 0.  No shared registers are needed.  Once we have
3134                    ; #  STATUS stashed away, the register bank can be set to 0.  The
3135                    ; #  compiler takes care of this automagically before the first save
3136                    ; #  assignment.
3137            
3138                    ; line_number = 244
3139                    ;  local fsr_save byte
3140 0000003b = interrupt__fsr_save equ globals___0+27
3141                    ; line_number = 245
3142                    ;  local pclath_save byte
3143 0000003c = interrupt__pclath_save equ globals___0+28
3144            
3145                    ; before procedure statements delay=non-uniform, bit states=(data:??=uu=>?? code:X0=cu=>X0)
3146                    ; line_number = 247
3147                    ;  fsr_save := _fsr
3148                    ;info   247, 7
3149 0007 0804          movf    _fsr,w
3150 0008 1283          bcf     __rp0___byte, __rp0___bit
3151 0009 1303          bcf     __rp1___byte, __rp1___bit
3152 000a 00bb          movwf   interrupt__fsr_save
3153                    ; line_number = 248
3154                    ;  pclath_save := _pclath
3155                    ;info   248, 11
3156 000b 080a          movf    _pclath,w
3157 000c 00bc          movwf   interrupt__pclath_save
3158                    ; # Make sure we are on correct page:
3159                    ; line_number = 250
3160                    ;  _pclath := 0
3161                    ;info   250, 13
3162 000d 018a          clrf    _pclath
3163            
3164                    ; # Now we have to deal with any of the pending interrupts.  Timer0
3165                    ; # is set to go off at the overall duty cycle of the PWM (Pulse Width
3166                    ; # Modulation) rate.  We turn the motor "on" each time Timer0 triggers
3167                    ; # an interrupt.  We also start Timer1 to specifiy the over width of
3168                    ; # the pulse before we turn it off.  When Timer1 triggers, it is time
3169                    ; # to turn the pulse off.  Timer0 is an 8-bit register and it it is
3170                    ; # being driven by a the system clock divided by 256.  Thus, the Timer0
3171                    ; # triggers every 65536 (=2^16) clock ticks.  Timer 1 is a 16-bit
3172                    ; # counter that runs at the system clock.  We always set the low
3173                    ; # order byte to 0, and the high order byte to W, where W=255-PW and
3174                    ; # PW is the pulse width as a number between 0 and 255.  Thus, we can
3175                    ; # have the pulse width vary in increments of 1/256 of the total duty
3176                    ; # cycle.
3177            
3178                    ; # Deal with Timer 0 interrupt:
3179                    ; line_number = 267
3180                    ;  if _t0if start
3181                    ;info   267, 14
3182                    ; =>bit_code_emit@symbol(): sym=_t0if
3183                    ; No 1TEST: true.size=36 false.size=0
3184                    ; No 2TEST: true.size=36 false.size=0
3185                    ; 1GOTO: Single test with GOTO
3186 000e 1d0b          btfss   _t0if___byte, _t0if___bit
3187 000f 2834          goto    interrupt__4
3188                    ; # Timer 0 just triggered.  It is time to start a new pulse width
3189                    ; # duty cycle:
3190            
3191                    ; # Clear the interrupt flag:
3192                    ; line_number = 272
3193                    ;  _t0if := _false
3194                    ;info   272, 16
3195 0010 110b          bcf     _t0if___byte, _t0if___bit
3196            
3197                    ; # Make sure Timer1 is off while we muck around with Timer1:
3198                    ; line_number = 275
3199                    ;  _tmr1on := _false
3200                    ;info   275, 17
3201 0011 1010          bcf     _tmr1on___byte, _tmr1on___bit
3202            
3203                    ; # Set the pulse width to W::0, where W=255-PW, where PW={0,...,255}.
3204                    ; line_number = 278
3205                    ;  _tmr1l := 0
3206                    ;info   278, 18
3207 0012 018e          clrf    _tmr1l
3208                    ; line_number = 279
3209                    ;  _tmr1h := motor1_pulse_width
3210                    ;info   279, 19
3211 0013 082f          movf    motor1_pulse_width,w
3212 0014 008f          movwf   _tmr1h
3213            
3214                    ; # Make sure that we clear off the Timer1 interrupt flag, just in case:
3215                    ; line_number = 282
3216                    ;  _tmr1if := _false
3217                    ;info   282, 21
3218 0015 100c          bcf     _tmr1if___byte, _tmr1if___bit
3219            
3220                    ; # Turn on Timer1:
3221                    ; line_number = 285
3222                    ;  _tmr1on := _true
3223                    ;info   285, 22
3224 0016 1410          bsf     _tmr1on___byte, _tmr1on___bit
3225            
3226                    ; # Finally, turn on the appropriate leads of the motor to make it move.
3227                    ; line_number = 288
3228                    ;  _portc := motor1_on_mask
3229                    ;info   288, 23
3230 0017 082e          movf    motor1_on_mask,w
3231 0018 0087          movwf   _portc
3232            
3233                    ; line_number = 290
3234                    ;  if use_potentiometer start
3235                    ;info   290, 25
3236                    ; =>bit_code_emit@symbol(): sym=use_potentiometer
3237                    ; No 1TEST: true.size=22 false.size=0
3238                    ; No 2TEST: true.size=22 false.size=0
3239                    ; 1GOTO: Single test with GOTO
3240 0019 1d25          btfss   use_potentiometer___byte, use_potentiometer___bit
3241 001a 2832          goto    interrupt__3
3242 001b 1683          bsf     __rp0___byte, __rp0___bit
3243                    ; line_number = 291
3244                    ; quad_low := _adresl
3245                    ;info   291, 28
3246 001c 081e          movf    _adresl,w
3247 001d 1283          bcf     __rp0___byte, __rp0___bit
3248 001e 1703          bsf     __rp1___byte, __rp1___bit
3249 001f 00ae          movwf   quad_low
3250                    ; line_number = 292
3251                    ;  quad_middle := _adresh
3252                    ;info   292, 32
3253 0020 1303          bcf     __rp1___byte, __rp1___bit
3254 0021 081e          movf    _adresh,w
3255 0022 1703          bsf     __rp1___byte, __rp1___bit
3256 0023 00a7          movwf   quad_middle
3257                    ; line_number = 293
3258                    ;  quad_high := 0
3259                    ;info   293, 36
3260 0024 01a0          clrf    quad_high
3261                    ; line_number = 294
3262                    ;  if position_reverse start
3263                    ;info   294, 37
3264                    ; =>bit_code_emit@symbol(): sym=position_reverse
3265                    ; No 1TEST: true.size=9 false.size=0
3266                    ; No 2TEST: true.size=9 false.size=0
3267                    ; 1GOTO: Single test with GOTO
3268 0025 1303          bcf     __rp1___byte, __rp1___bit
3269 0026 1ca5          btfss   position_reverse___byte, position_reverse___bit
3270 0027 2832          goto    interrupt__2
3271 0028 1703          bsf     __rp1___byte, __rp1___bit
3272                    ; # Perform a 1's complement of the result:
3273                    ; line_number = 296
3274                    ;  quad_low := quad_low ^ 0xff
3275                    ;info   296, 41
3276 0029 09ae          comf    quad_low,f
3277                    ; line_number = 297
3278                    ;  quad_middle := quad_middle ^ 3
3279                    ;info   297, 42
3280 002a 3003          movlw   3
3281 002b 06a7          xorwf   quad_middle,f
3282                    ; line_number = 298
3283                    ;  quad_low := quad_low + 1
3284                    ;info   298, 44
3285 002c 0aae          incf    quad_low,f
3286                    ; line_number = 299
3287                    ;  if _z start
3288                    ;info   299, 45
3289                    ; =>bit_code_emit@symbol(): sym=_z
3290                    ; No 1TEST: true.size=3 false.size=0
3291                    ; No 2TEST: true.size=3 false.size=0
3292                    ; 1GOTO: Single test with GOTO
3293 002d 1d03          btfss   _z___byte, _z___bit
3294 002e 2832          goto    interrupt__1
3295                    ; line_number = 300
3296                    ; quad_middle := (quad_middle + 1) & 3
3297                    ;info   300, 47
3298 002f 0a27          incf    quad_middle,w
3299 0030 3903          andlw   3
3300 0031 00a7          movwf   quad_middle
3301            
3302                    ; Recombine size1 = 0 || size2 = 0
3303   0032 :   interrupt__1:
3304                    ; line_number = 299
3305                    ;  if _z done
3306                    ; Recombine size1 = 0 || size2 = 0
3307   0032 :   interrupt__2:
3308                    ; line_number = 294
3309                    ;  if position_reverse done
3310                    ; Recombine size1 = 0 || size2 = 0
3311   0032 :   interrupt__3:
3312                    ; line_number = 290
3313                    ;  if use_potentiometer done
3314                    ; # Trigger an A/D conversion to pick up next time:
3315                    ; line_number = 303
3316                    ;  _go := _true
3317                    ;info   303, 50
3318 0032 1303          bcf     __rp1___byte, __rp1___bit
3319 0033 149f          bsf     _go___byte, _go___bit
3320            
3321                    ; Recombine size1 = 0 || size2 = 0
3322   0034 :   interrupt__4:
3323                    ; line_number = 267
3324                    ;  if _t0if done
3325                    ; # Deal with Timer 1 interrupt:
3326                    ; line_number = 306
3327                    ;  if _tmr1if start
3328                    ;info   306, 52
3329                    ; =>bit_code_emit@symbol(): sym=_tmr1if
3330                    ; No 1TEST: true.size=3 false.size=0
3331                    ; No 2TEST: true.size=3 false.size=0
3332                    ; 1GOTO: Single test with GOTO
3333 0034 1c0c          btfss   _tmr1if___byte, _tmr1if___bit
3334 0035 2839          goto    interrupt__5
3335                    ; # Timer 1 just triggered.  It is time to turn off the pulse width.
3336            
3337                    ; # Turn off the motor leads:
3338                    ; line_number = 310
3339                    ;  _portc := 0
3340                    ;info   310, 54
3341 0036 0187          clrf    _portc
3342            
3343                    ; # Turn off Timer 1:
3344                    ; line_number = 313
3345                    ;  _tmr1on := _false
3346                    ;info   313, 55
3347 0037 1010          bcf     _tmr1on___byte, _tmr1on___bit
3348            
3349                    ; # Make sure we clear timer 1 interrupt flag:
3350                    ; line_number = 316
3351                    ;  _tmr1if := _false
3352                    ;info   316, 56
3353 0038 100c          bcf     _tmr1if___byte, _tmr1if___bit
3354            
3355                    ; Recombine size1 = 0 || size2 = 0
3356   0039 :   interrupt__5:
3357                    ; line_number = 306
3358                    ;  if _tmr1if done
3359                    ; # Deal with UART receive interrupt:
3360                    ; line_number = 319
3361                    ;  if _rcif start
3362                    ;info   319, 57
3363                    ; =>bit_code_emit@symbol(): sym=_rcif
3364                    ; No 1TEST: true.size=35 false.size=0
3365                    ; No 2TEST: true.size=35 false.size=0
3366                    ; 1GOTO: Single test with GOTO
3367 0039 1e8c          btfss   _rcif___byte, _rcif___bit
3368 003a 285e          goto    interrupt__10
3369                    ; # We have a byte in the UART receive buffer.  We want to be as
3370                    ; # quick as possible here.  Do the minimum to process the incoming
3371                    ; # byte and move on.a
3372            
3373                    ; # First, look at the ninth bit.  If the ninth bit is set, we
3374                    ; # process it immediately.
3375                    ; line_number = 326
3376                    ;  if _rx9d start
3377                    ;info   326, 59
3378                    ; =>bit_code_emit@symbol(): sym=_rx9d
3379                    ; No 1TEST: true.size=16 false.size=10
3380                    ; No 2TEST: true.size=16 false.size=10
3381                    ; 2GOTO: Single test with two GOTO's
3382 003b 1c17          btfss   _rx9d___byte, _rx9d___bit
3383 003c 284e          goto    interrupt__8
3384                    ; # The ninth bit is set, we have an module address select
3385                    ; # command:
3386                    ; line_number = 329
3387                    ;  if _rcreg = address start
3388                    ;info   329, 61
3389                    ; Left minus Right
3390 003d 0839          movf    address,w
3391 003e 0214          subwf   _rcreg,w
3392                    ; =>bit_code_emit@symbol(): sym=__z
3393                    ; No 1TEST: true.size=9 false.size=2
3394                    ; No 2TEST: true.size=9 false.size=2
3395                    ; 2GOTO: Single test with two GOTO's
3396 003f 1d03          btfss   __z___byte, __z___bit
3397 0040 284b          goto    interrupt__6
3398                    ; # The address that came in matches ours in {address}.
3399                    ; # We need to prepare for further incoming data bytes:
3400            
3401                    ; # Force the UART to start accepting data bytes with the
3402                    ; # ninth bit clear:
3403                    ; line_number = 335
3404                    ;  _adden := _false
3405                    ;info   335, 65
3406 0041 1197          bcf     _adden___byte, _adden___bit
3407            
3408                    ; # Clear out the input data buffer:
3409                    ; line_number = 338
3410                    ;  uart_input_in_index := 0
3411                    ;info   338, 66
3412 0042 01b6          clrf    uart_input_in_index
3413                    ; line_number = 339
3414                    ;  uart_input_out_index := 0
3415                    ;info   339, 67
3416 0043 01b7          clrf    uart_input_out_index
3417                    ; line_number = 340
3418                    ;  uart_input_count := 0
3419                    ;info   340, 68
3420 0044 01b8          clrf    uart_input_count
3421                    ; line_number = 341
3422                    ;  uart_input_pending := _false
3423                    ;info   341, 69
3424 0045 106f          bcf     uart_input_pending___byte, uart_input_pending___bit
3425            
3426                    ; # Send an acknowledge byte:
3427                    ; line_number = 344
3428                    ;  call uart_byte_put(rb2_ok)
3429                    ;info   344, 70
3430 0046 30a5          movlw   165
3431 0047 2479          call    uart_byte_put
3432            
3433                    ; # Set the state machine for {uart_manage} to eat the echo
3434                    ; # and start processing commands:
3435                    ; line_number = 348
3436                    ;  state := state_echo_then_command
3437                    ;info   348, 72
3438 0048 3001          movlw   1
3439 0049 00b0          movwf   state
3440                    ; Recombine code1_bit_states != code2_bit_states
3441 004a 284d          goto    interrupt__7
3442                    ; 2GOTO: Starting code 2
3443   004b :   interrupt__6:
3444                    ; # The address that came in did not match our address:
3445            
3446                    ; # Force the UART to only listen to bytes that have the
3447                    ; # ninth bit set (i.e. address commands).  All data bytes
3448                    ; # to the other selected module will be invisible to us:
3449                    ; line_number = 355
3450                    ;  _adden := _true
3451                    ;info   355, 75
3452 004b 1597          bsf     _adden___byte, _adden___bit
3453            
3454                    ; # Set the state machine for {uart_manage} to ignore any
3455                    ; # incoming data bytes.  This should never happen, be it
3456                    ; # it never hurts to be careful.
3457                    ; line_number = 360
3458                    ;  state := state_select_wait
3459                    ;info   360, 76
3460 004c 01b0          clrf    state
3461   004d :   interrupt__7:
3462                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3463                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3464                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3465                    ; line_number = 329
3466                    ;  if _rcreg = address done
3467                    ; Recombine code1_bit_states != code2_bit_states
3468 004d 2858          goto    interrupt__9
3469                    ; 2GOTO: Starting code 2
3470   004e :   interrupt__8:
3471                    ; # We have a data byte for us to process.  For now we
3472                    ; # stuff it into an input buffer:
3473            
3474                    ; # Stuff the byte into the {uart_input} buffer being careful
3475                    ; # not to go out of bounds.  The buffer is a power of 2 in
3476                    ; # size, so masking {uart_input_in_index} with {uart_input_mask}
3477                    ; # will keep us in bounds:
3478                    ; line_number = 369
3479                    ;  uart_input[uart_input_in_index & uart_input_mask] := _rcreg
3480                    ;info   369, 78
3481                    ; index_fsr_first
3482 004e 3003          movlw   3
3483 004f 0536          andwf   uart_input_in_index,w
3484 0050 3e32          addlw   uart_input
3485 0051 0084          movwf   __fsr
3486 0052 1383          bcf     __irp___byte, __irp___bit
3487 0053 0814          movf    _rcreg,w
3488 0054 0080          movwf   __indf
3489            
3490                    ; # Bump {uart_input_in_index} so that we next byte the comes
3491                    ; # in will follow this current byte:
3492                    ; line_number = 373
3493                    ;  uart_input_in_index := uart_input_in_index + 1
3494                    ;info   373, 85
3495 0055 0ab6          incf    uart_input_in_index,f
3496            
3497                    ; # Keep track of how many bytes are in the input buffer:
3498                    ; line_number = 376
3499                    ;  uart_input_count := uart_input_count + 1
3500                    ;info   376, 86
3501 0056 0ab8          incf    uart_input_count,f
3502            
3503                    ; # Let the {uart_manage} routine know that it has work to do:
3504                    ; line_number = 379
3505                    ;  uart_input_pending := _true
3506                    ;info   379, 87
3507 0057 146f          bsf     uart_input_pending___byte, uart_input_pending___bit
3508            
3509   0058 :   interrupt__9:
3510                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3511                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
3512                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
3513                    ; line_number = 326
3514                    ;  if _rx9d done
3515                    ; # The PIC UART can get wedged by errors.  We fix that problem
3516                    ; # by toggling {_cren} whenever we have an overrun error.  The
3517                    ; # code below is really tight (5 instructions):
3518                    ; line_number = 384
3519                    ;  if _oerr start
3520                    ;info   384, 88
3521                    ; =>bit_code_emit@symbol(): sym=_oerr
3522                    ; 1TEST: Single test with code in skip slot
3523 0058 1897          btfsc   _oerr___byte, _oerr___bit
3524                    ; # We have an over run error, clear {_cren}:
3525                    ; line_number = 386
3526                    ;  _cren := _false
3527                    ;info   386, 89
3528 0059 1217          bcf     _cren___byte, _cren___bit
3529                    ; Recombine size1 = 0 || size2 = 0
3530                    ; line_number = 384
3531                    ;  if _oerr done
3532                    ; line_number = 387
3533                    ; if _ferr start
3534                    ;info   387, 90
3535                    ; =>bit_code_emit@symbol(): sym=_ferr
3536                    ; 1TEST: Single test with code in skip slot
3537 005a 1917          btfsc   _ferr___byte, _ferr___bit
3538                    ; # We have a framing error, clear {_cren}:
3539                    ; line_number = 389
3540                    ;  _cren := _false
3541                    ;info   389, 91
3542 005b 1217          bcf     _cren___byte, _cren___bit
3543                    ; Recombine size1 = 0 || size2 = 0
3544                    ; line_number = 387
3545                    ; if _ferr done
3546                    ; # If either of the two previous statements triggered, {_cren}
3547                    ; # got turned off.  This next statement will turn it on again.
3548                    ; # Otherwise, {_cren} is already on, and this statement will do
3549                    ; # nothing:
3550                    ; line_number = 394
3551                    ;  _cren := _true
3552                    ;info   394, 92
3553 005c 1617          bsf     _cren___byte, _cren___bit
3554            
3555                    ; # Clear the recieve interrupt condition:
3556                    ; line_number = 397
3557                    ;  _rcif := _false
3558                    ;info   397, 93
3559 005d 128c          bcf     _rcif___byte, _rcif___bit
3560            
3561                    ; Recombine size1 = 0 || size2 = 0
3562   005e :   interrupt__10:
3563                    ; line_number = 319
3564                    ;  if _rcif done
3565                    ; # Deal with quadrature input changes:
3566                    ; line_number = 400
3567                    ;  if _raif start
3568                    ;info   400, 94
3569                    ; =>bit_code_emit@symbol(): sym=_raif
3570                    ; No 1TEST: true.size=59 false.size=0
3571                    ; No 2TEST: true.size=59 false.size=0
3572                    ; 1GOTO: Single test with GOTO
3573 005e 1c0b          btfss   _raif___byte, _raif___bit
3574 005f 289c          goto    interrupt__25
3575 0060 1703          bsf     __rp1___byte, __rp1___bit
3576                    ; # The file24 a the A and B channels of Port A have changed
3577                    ; # since the last time we read Port A.  Deal with the change
3578                    ; # by cycling the {quad_state} state machine.  Please carefully
3579                    ; # read the documentation in the states.ucl library to understand
3580                    ; # the format of the {states} vector.
3581            
3582                    ; # Cycle the {quad_state} state machine.  Use only the lower 3 bits
3583                    ; # currently in {quad_state} concatenated with the low order 2 bits
3584                    ; # of {_porta} (the A and B quadrature channels).  That gives a total
3585                    ; # of 5 bits to work with:
3586                    ; line_number = 411
3587                    ;  quad_state := xstates[quad_state & 7 | (_porta << 3) & 0x18]
3588                    ;info   411, 97
3589 0000005e = interrupt__11 equ globals___0+62
3590 0061 3007          movlw   7
3591 0062 0535          andwf   quad_state,w
3592 0063 1303          bcf     __rp1___byte, __rp1___bit
3593 0064 00de          movwf   interrupt__11
3594 0000005f = interrupt__12 equ globals___0+63
3595 0065 0d05          rlf     _porta,w
3596 0066 00df          movwf   interrupt__12
3597 0067 0ddf          rlf     interrupt__12,f
3598 0068 0d5f          rlf     interrupt__12,w
3599 0069 3918          andlw   24
3600 006a 045e          iorwf   interrupt__11,w
3601 006b 3e36          addlw   xstates
3602 006c 0084          movwf   __fsr
3603 006d 1783          bsf     __irp___byte, __irp___bit
3604 006e 0800          movf    __indf,w
3605 006f 1703          bsf     __rp1___byte, __rp1___bit
3606 0070 00b5          movwf   quad_state
3607            
3608                    ; # Disable interrupt condition until the next time:
3609                    ; line_number = 414
3610                    ;  _raif := _false
3611                    ;info   414, 113
3612 0071 100b          bcf     _raif___byte, _raif___bit
3613            
3614                    ; # The rest of this code just increments and decrements the quadrature
3615                    ; # counter.  The quad counter is signed 24 bit integer that is stored
3616                    ; # in {quad_high}, {quad_middle}, and {quad_low}.  This code is kind
3617                    ; # big and long, but in reality, 99% of the time we will perform either
3618                    ; # a single increment or decrement of {quad_low}.  So, most of the
3619                    ; # time this code very fast:
3620            
3621                    ; line_number = 423
3622                    ;  if quad_state@7 start
3623                    ;info   423, 114
3624 00000135 = interrupt__select__17___byte equ quad_state
3625 00000007 = interrupt__select__17___bit equ 7
3626                    ; =>bit_code_emit@symbol(): sym=interrupt__select__17
3627                    ; No 1TEST: true.size=17 false.size=0
3628                    ; No 2TEST: true.size=17 false.size=0
3629                    ; 1GOTO: Single test with GOTO
3630 0072 1fb5          btfss   interrupt__select__17___byte, interrupt__select__17___bit
3631 0073 2885          goto    interrupt__18
3632                    ; # The state machine wants us to increment the quadrature counter
3633                    ; # by 1.  We work our way from {quad_low} through {quad_high}:
3634                    ; line_number = 426
3635                    ;  quad_low := quad_low + 1
3636                    ;info   426, 116
3637 0074 0aae          incf    quad_low,f
3638                    ; line_number = 427
3639                    ;  if _z start
3640                    ;info   427, 117
3641                    ; =>bit_code_emit@symbol(): sym=_z
3642                    ; No 1TEST: true.size=3 false.size=0
3643                    ; No 2TEST: true.size=3 false.size=0
3644                    ; 1GOTO: Single test with GOTO
3645 0075 1d03          btfss   _z___byte, _z___bit
3646 0076 287a          goto    interrupt__13
3647                    ; # The zero status flag is set, so {quad_low} just wrapped from
3648                    ; # 0xff to 0.  Thus, we need to increment {quad_middle}"
3649                    ; line_number = 430
3650                    ;  quad_middle := quad_middle + 1
3651                    ;info   430, 119
3652 0077 0aa7          incf    quad_middle,f
3653                    ; line_number = 431
3654                    ;  if _z start
3655                    ;info   431, 120
3656                    ; =>bit_code_emit@symbol(): sym=_z
3657                    ; 1TEST: Single test with code in skip slot
3658 0078 1903          btfsc   _z___byte, _z___bit
3659                    ; # The zero status flat is set, so {quad_middle} just
3660                    ; # wrapped from 0xff to 0.  Thus we need to increment
3661                    ; # {quad_high}:
3662                    ; line_number = 435
3663                    ;  quad_high := quad_high + 1
3664                    ;info   435, 121
3665 0079 0aa0          incf    quad_high,f
3666            
3667                    ; Recombine size1 = 0 || size2 = 0
3668                    ; line_number = 431
3669                    ;  if _z done
3670                    ; Recombine size1 = 0 || size2 = 0
3671   007a :   interrupt__13:
3672                    ; line_number = 427
3673                    ;  if _z done
3674                    ; line_number = 437
3675                    ; if quad_state@6 start
3676                    ;info   437, 122
3677 00000135 = interrupt__select__15___byte equ quad_state
3678 00000006 = interrupt__select__15___bit equ 6
3679                    ; =>bit_code_emit@symbol(): sym=interrupt__select__15
3680                    ; No 1TEST: true.size=8 false.size=0
3681                    ; No 2TEST: true.size=8 false.size=0
3682                    ; 1GOTO: Single test with GOTO
3683 007a 1f35          btfss   interrupt__select__15___byte, interrupt__select__15___bit
3684 007b 2885          goto    interrupt__16
3685 007c 1303          bcf     __rp1___byte, __rp1___bit
3686                    ; # This bit will be set in the state machine if we have an
3687                    ; # "illegal" state machine transistion.
3688            
3689                    ; # Bump the {errors} counter to let somebody know
3690                    ; # that we are having problems:
3691                    ; line_number = 443
3692                    ;  errors := errors + 1
3693                    ;info   443, 125
3694 007d 0aa8          incf    errors,f
3695            
3696                    ; # This code is the same as the first increment, so the
3697                    ; # comments are not repeated:
3698                    ; line_number = 447
3699                    ;  quad_low := quad_low + 1
3700                    ;info   447, 126
3701 007e 1703          bsf     __rp1___byte, __rp1___bit
3702 007f 0aae          incf    quad_low,f
3703                    ; line_number = 448
3704                    ;  if _z start
3705                    ;info   448, 128
3706                    ; =>bit_code_emit@symbol(): sym=_z
3707                    ; No 1TEST: true.size=3 false.size=0
3708                    ; No 2TEST: true.size=3 false.size=0
3709                    ; 1GOTO: Single test with GOTO
3710 0080 1d03          btfss   _z___byte, _z___bit
3711 0081 2885          goto    interrupt__14
3712                    ; line_number = 449
3713                    ; quad_middle := quad_middle + 1
3714                    ;info   449, 130
3715 0082 0aa7          incf    quad_middle,f
3716                    ; line_number = 450
3717                    ;  if _z start
3718                    ;info   450, 131
3719                    ; =>bit_code_emit@symbol(): sym=_z
3720                    ; 1TEST: Single test with code in skip slot
3721 0083 1903          btfsc   _z___byte, _z___bit
3722                    ; line_number = 451
3723                    ; quad_high := quad_high + 1
3724                    ;info   451, 132
3725 0084 0aa0          incf    quad_high,f
3726                    ; Recombine size1 = 0 || size2 = 0
3727                    ; line_number = 450
3728                    ;  if _z done
3729                    ; Recombine size1 = 0 || size2 = 0
3730   0085 :   interrupt__14:
3731                    ; line_number = 448
3732                    ;  if _z done
3733                    ; Recombine size1 = 0 || size2 = 0
3734   0085 :   interrupt__16:
3735                    ; line_number = 437
3736                    ; if quad_state@6 done
3737                    ; Recombine size1 = 0 || size2 = 0
3738   0085 :   interrupt__18:
3739                    ; line_number = 423
3740                    ;  if quad_state@7 done
3741                    ; line_number = 452
3742                    ; if quad_state@5 start
3743                    ;info   452, 133
3744 00000135 = interrupt__select__23___byte equ quad_state
3745 00000005 = interrupt__select__23___bit equ 5
3746                    ; =>bit_code_emit@symbol(): sym=interrupt__select__23
3747                    ; No 1TEST: true.size=21 false.size=0
3748                    ; No 2TEST: true.size=21 false.size=0
3749                    ; 1GOTO: Single test with GOTO
3750 0085 1eb5          btfss   interrupt__select__23___byte, interrupt__select__23___bit
3751 0086 289c          goto    interrupt__24
3752                    ; # The state machine wants us to decrement the quadrature counter
3753                    ; # by 1.  We work our way from {quad_low} through {quad_high}:
3754                    ; line_number = 455
3755                    ;  if quad_low = 0 start
3756                    ;info   455, 135
3757                    ; Left minus Right
3758 0087 082e          movf    quad_low,w
3759                    ; =>bit_code_emit@symbol(): sym=__z
3760                    ; No 1TEST: true.size=4 false.size=0
3761                    ; No 2TEST: true.size=4 false.size=0
3762                    ; 1GOTO: Single test with GOTO
3763 0088 1d03          btfss   __z___byte, __z___bit
3764 0089 288e          goto    interrupt__19
3765                    ; # {quad_low} is 0, so we are going to wrap down to 0xff.
3766                    ; # We need to decrement {quad_middle}:
3767                    ; line_number = 458
3768                    ;  if quad_middle = 0 start
3769                    ;info   458, 138
3770                    ; Left minus Right
3771 008a 0827          movf    quad_middle,w
3772                    ; =>bit_code_emit@symbol(): sym=__z
3773                    ; 1TEST: Single test with code in skip slot
3774 008b 1903          btfsc   __z___byte, __z___bit
3775                    ; # {quad_middle} is 0, we are going to wrap down to 0xff.
3776                    ; # We need to decrement {quad_high}:
3777                    ; line_number = 461
3778                    ;  quad_high := quad_high - 1
3779                    ;info   461, 140
3780 008c 03a0          decf    quad_high,f
3781                    ; Recombine size1 = 0 || size2 = 0
3782                    ; line_number = 458
3783                    ;  if quad_middle = 0 done
3784                    ; # Do the {quad_middle} decrement:
3785                    ; line_number = 463
3786                    ;  quad_middle := quad_middle - 1
3787                    ;info   463, 141
3788 008d 03a7          decf    quad_middle,f
3789                    ; Recombine size1 = 0 || size2 = 0
3790   008e :   interrupt__19:
3791                    ; line_number = 455
3792                    ;  if quad_low = 0 done
3793                    ; # Do the {quad_low} decrement:
3794                    ; line_number = 465
3795                    ;  quad_low := quad_low - 1
3796                    ;info   465, 142
3797 008e 03ae          decf    quad_low,f
3798            
3799                    ; line_number = 467
3800                    ;  if quad_state@4 start
3801                    ;info   467, 143
3802 00000135 = interrupt__select__21___byte equ quad_state
3803 00000004 = interrupt__select__21___bit equ 4
3804                    ; =>bit_code_emit@symbol(): sym=interrupt__select__21
3805                    ; No 1TEST: true.size=10 false.size=0
3806                    ; No 2TEST: true.size=10 false.size=0
3807                    ; 1GOTO: Single test with GOTO
3808 008f 1e35          btfss   interrupt__select__21___byte, interrupt__select__21___bit
3809 0090 289c          goto    interrupt__22
3810 0091 1303          bcf     __rp1___byte, __rp1___bit
3811                    ; # This bit will be set in the state machine if we have an
3812                    ; # "illegal" state machine transition:
3813            
3814                    ; # Bump the {errors} counter to let somebody know that
3815                    ; # we are having problems:
3816                    ; line_number = 473
3817                    ;  errors := errors + 1
3818                    ;info   473, 146
3819 0092 0aa8          incf    errors,f
3820            
3821                    ; # This code is the same as the first decrement, so the
3822                    ; # comments are not repeated:
3823                    ; line_number = 477
3824                    ;  if quad_low = 0 start
3825                    ;info   477, 147
3826                    ; Left minus Right
3827 0093 1703          bsf     __rp1___byte, __rp1___bit
3828 0094 082e          movf    quad_low,w
3829                    ; =>bit_code_emit@symbol(): sym=__z
3830                    ; No 1TEST: true.size=4 false.size=0
3831                    ; No 2TEST: true.size=4 false.size=0
3832                    ; 1GOTO: Single test with GOTO
3833 0095 1d03          btfss   __z___byte, __z___bit
3834 0096 289b          goto    interrupt__20
3835                    ; line_number = 478
3836                    ; if quad_middle = 0 start
3837                    ;info   478, 151
3838                    ; Left minus Right
3839 0097 0827          movf    quad_middle,w
3840                    ; =>bit_code_emit@symbol(): sym=__z
3841                    ; 1TEST: Single test with code in skip slot
3842 0098 1903          btfsc   __z___byte, __z___bit
3843                    ; line_number = 479
3844                    ; quad_high := quad_high - 1
3845                    ;info   479, 153
3846 0099 03a0          decf    quad_high,f
3847                    ; Recombine size1 = 0 || size2 = 0
3848                    ; line_number = 478
3849                    ; if quad_middle = 0 done
3850                    ; line_number = 480
3851                    ; quad_middle := quad_middle - 1
3852                    ;info   480, 154
3853 009a 03a7          decf    quad_middle,f
3854                    ; Recombine size1 = 0 || size2 = 0
3855   009b :   interrupt__20:
3856                    ; line_number = 477
3857                    ;  if quad_low = 0 done
3858                    ; line_number = 481
3859                    ; quad_low := quad_low - 1
3860                    ;info   481, 155
3861 009b 03ae          decf    quad_low,f
3862            
3863                    ; Recombine size1 = 0 || size2 = 0
3864   009c :   interrupt__22:
3865                    ; line_number = 467
3866                    ;  if quad_state@4 done
3867                    ; Recombine size1 = 0 || size2 = 0
3868   009c :   interrupt__24:
3869                    ; line_number = 452
3870                    ; if quad_state@5 done
3871                    ; Recombine size1 = 0 || size2 = 0
3872   009c :   interrupt__25:
3873                    ; line_number = 400
3874                    ;  if _raif done
3875                    ; # All done processing interrupt conditions.  Let's get out of here by
3876                    ; # restoring {_fsr} and {_pclath}:
3877                    ; line_number = 485
3878                    ;  _fsr := fsr_save    
3879                    ;info   485, 156
3880 009c 1303          bcf     __rp1___byte, __rp1___bit
3881 009d 083b          movf    interrupt__fsr_save,w
3882 009e 0084          movwf   _fsr
3883                    ; line_number = 486
3884                    ;  _pclath := pclath_save
3885                    ;info   486, 159
3886 009f 083c          movf    interrupt__pclath_save,w
3887 00a0 008a          movwf   _pclath
3888            
3889                    ; # The compiler takes care of restoring {_status} and {_w}.
3890            
3891                    ; delay after procedure statements=non-uniform
3892                    ; Interrupt return
3893                    ; Carefully restore __w and __tatus from RAM
3894                    ; Restore swapped status into W
3895 00a1 0e70          swapf   interrupt___status_save,w
3896                    ; W now contains (unswapped) status
3897                    ; Restore W to __status
3898 00a2 0083          movwf   __status
3899                    ; From here on out, do not modify __status
3900                    ; Swap saved W register in RAM
3901 00a3 0ef1          swapf   interrupt___w_save,f
3902                    ; Unswap the saved W reg and restore to W
3903 00a4 0e71          swapf   interrupt___w_save,w
3904                    ; __w and __status are now restored
3905                    ; Return from interrupt
3906 00a5 0009          retfie  
3907            
3908            
3909            
3910            
3911                    ; # Split the floats between data banks 1 and 2:
3912            
3913            
3914                    ; line_number = 494
3915                    ; global error float32
3916 00000156 = error equ globals___2+54
3917                    ; line_number = 495
3918                    ; global position float32
3919 0000015a = position equ globals___2+58
3920                    ; line_number = 496
3921                    ; global target float32
3922 0000015e = target equ globals___2+62
3923                    ; line_number = 497
3924                    ; global kp float32
3925 00000162 = kp equ globals___2+66
3926                    ; line_number = 498
3927                    ; global ki float32
3928 00000166 = ki equ globals___2+70
3929            
3930            
3931                    ; line_number = 502
3932                    ; global kd float32
3933 000000d4 = kd equ globals___1+52
3934                    ; line_number = 503
3935                    ; global pid float32
3936 000000d8 = pid equ globals___1+56
3937                    ; line_number = 504
3938                    ; global divisor float32
3939 000000dc = divisor equ globals___1+60
3940                    ; line_number = 505
3941                    ; global numerator float32
3942 000000e0 = numerator equ globals___1+64
3943            
3944            
3945                    ; line_number = 509
3946                    ; global target_speed byte		# Target motor speed
3947 0000003d = target_speed equ globals___0+29
3948                    ; line_number = 510
3949                    ; global target_seek bit
3950 0000006f = target_seek___byte equ globals___0+79
3951 00000001 = target_seek___bit equ 1
3952            
3953                    ; line_number = 512
3954                    ;info   512, 166
3955                    ; procedure main
3956   00a6 :   main:
3957                    ; Initialize some registers
3958 00a6 3001          movlw   1
3959 00a7 009f          movwf   _adcon0
3960 00a8 3004          movlw   4
3961 00a9 1683          bsf     __rp0___byte, __rp0___bit
3962 00aa 0091          movwf   _ansel
3963 00ab 3007          movlw   7
3964 00ac 1283          bcf     __rp0___byte, __rp0___bit
3965 00ad 0099          movwf   _cmcon0
3966 00ae 303f          movlw   63
3967 00af 1683          bsf     __rp0___byte, __rp0___bit
3968 00b0 0085          movwf   _trisa
3969 00b1 303c          movlw   60
3970 00b2 0087          movwf   _trisc
3971                    ; arguments_none
3972                    ; line_number = 514
3973                    ;  returns_nothing
3974            
3975                    ; line_number = 516
3976                    ;  local pos_high byte
3977 0000003e = main__pos_high equ globals___0+30
3978                    ; line_number = 517
3979                    ;  local pos_middle byte
3980 0000003f = main__pos_middle equ globals___0+31
3981                    ; line_number = 518
3982                    ;  local pos_low byte
3983 00000040 = main__pos_low equ globals___0+32
3984                    ; line_number = 519
3985                    ;  local negative bit
3986 0000006f = main__negative___byte equ globals___0+79
3987 00000002 = main__negative___bit equ 2
3988                    ; line_number = 520
3989                    ;  local small_error byte
3990 00000041 = main__small_error equ globals___0+33
3991            
3992                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:X0=cu=>X0)
3993                    ; line_number = 522
3994                    ;  call reset()
3995                    ;info   522, 179
3996 00b3 1283          bcf     __rp0___byte, __rp0___bit
3997 00b4 21e8          call    reset
3998            
3999                    ; line_number = 524
4000                    ;  loop_forever start
4001   00b5 :   main__1:
4002                    ; # Make sure we manage the UART:
4003                    ; line_number = 526
4004                    ;  call uart_manage()
4005                    ;info   526, 181
4006 00b5 224d          call    uart_manage
4007            
4008                    ; # Update target if necesary
4009                    ; line_number = 529
4010                    ;  if file24_changed != 0 start
4011                    ;info   529, 182
4012                    ; Left minus Right
4013 00b6 0820          movf    file24_changed,w
4014                    ; =>bit_code_emit@symbol(): sym=__z
4015                    ; No 1TEST: true.size=0 false.size=120
4016                    ; No 2TEST: true.size=0 false.size=120
4017                    ; 1GOTO: Single test with GOTO
4018 00b7 1903          btfsc   __z___byte, __z___bit
4019 00b8 2931          goto    main__22
4020                    ; # Something has changed:
4021                    ; line_number = 531
4022                    ;  if file24_changed@target_index start
4023                    ;info   531, 185
4024 00000020 = main__select__3___byte equ file24_changed
4025 00000001 = main__select__3___bit equ 1
4026                    ; =>bit_code_emit@symbol(): sym=main__select__3
4027                    ; No 1TEST: true.size=13 false.size=0
4028                    ; No 2TEST: true.size=13 false.size=0
4029                    ; 1GOTO: Single test with GOTO
4030 00b9 1ca0          btfss   main__select__3___byte, main__select__3___bit
4031 00ba 28c8          goto    main__4
4032                    ; line_number = 532
4033                    ; target_seek := _true
4034                    ;info   532, 187
4035 00bb 14ef          bsf     target_seek___byte, target_seek___bit
4036                    ; line_number = 533
4037                    ;  target := file24_float_convert(target_index)
4038                    ;info   533, 188
4039 00bc 3001          movlw   1
4040 00bd 2424          call    file24_float_convert
4041 00be 3024          movlw   file24_float_convert__0return>>1
4042 00bf 158a          bsf     __cb0___byte, __cb0___bit
4043 00c0 1683          bsf     __rp0___byte, __rp0___bit
4044 00c1 22d8          call    _float32_pointer_load
4045 00c2 30af          movlw   target>>1
4046 00c3 2337          call    _float32_pointer_store
4047                    ; line_number = 534
4048                    ;  file24_changed@target_index := _false
4049                    ;info   534, 196
4050 00000020 = main__select__2___byte equ file24_changed
4051 00000001 = main__select__2___bit equ 1
4052 00c4 1283          bcf     __rp0___byte, __rp0___bit
4053 00c5 10a0          bcf     main__select__2___byte, main__select__2___bit
4054                    ; line_number = 535
4055                    ;  call uart_manage()
4056                    ;info   535, 198
4057 00c6 118a          bcf     __cb0___byte, __cb0___bit
4058 00c7 224d          call    uart_manage
4059                    ; Recombine size1 = 0 || size2 = 0
4060   00c8 :   main__4:
4061                    ; line_number = 531
4062                    ;  if file24_changed@target_index done
4063                    ; line_number = 536
4064                    ; if file24_changed@divisor_index start
4065                    ;info   536, 200
4066 00000020 = main__select__11___byte equ file24_changed
4067 00000002 = main__select__11___bit equ 2
4068                    ; =>bit_code_emit@symbol(): sym=main__select__11
4069                    ; No 1TEST: true.size=28 false.size=0
4070                    ; No 2TEST: true.size=28 false.size=0
4071                    ; 1GOTO: Single test with GOTO
4072 00c8 1d20          btfss   main__select__11___byte, main__select__11___bit
4073 00c9 28e6          goto    main__12
4074                    ; line_number = 537
4075                    ; divisor := file24_float_convert(divisor_index)
4076                    ;info   537, 202
4077 00ca 3002          movlw   2
4078 00cb 2424          call    file24_float_convert
4079 00cc 3024          movlw   file24_float_convert__0return>>1
4080 00cd 158a          bsf     __cb0___byte, __cb0___bit
4081 00ce 1683          bsf     __rp0___byte, __rp0___bit
4082 00cf 22d8          call    _float32_pointer_load
4083 00d0 306e          movlw   divisor>>1
4084 00d1 2337          call    _float32_pointer_store
4085                    ; line_number = 538
4086                    ;  if file24_zero@divisor_index start
4087                    ;info   538, 210
4088 00000021 = main__select__5___byte equ file24_zero
4089 00000002 = main__select__5___bit equ 2
4090                    ; =>bit_code_emit@symbol(): sym=main__select__5
4091                    ; No 1TEST: true.size=9 false.size=0
4092                    ; No 2TEST: true.size=9 false.size=0
4093                    ; 1GOTO: Single test with GOTO
4094 00d2 1283          bcf     __rp0___byte, __rp0___bit
4095 00d3 118a          bcf     __cb0___byte, __cb0___bit
4096 00d4 1d21          btfss   main__select__5___byte, main__select__5___bit
4097 00d5 28e0          goto    main__6
4098 00d6 1703          bsf     __rp1___byte, __rp1___bit
4099                    ; # Yikes, the user set the divisor to zero; set to 1 instead:
4100                    ; line_number = 540
4101                    ;  lows[divisor_index] := 1
4102                    ;info   540, 215
4103 00d7 3001          movlw   1
4104 00d8 00b0          movwf   lows+2
4105                    ; line_number = 541
4106                    ;  divisor := 1.0
4107                    ;info   541, 217
4108                    ; divisor := 1 (7F 00 00 00)
4109 00d9 307f          movlw   127
4110 00da 1683          bsf     __rp0___byte, __rp0___bit
4111 00db 1303          bcf     __rp1___byte, __rp1___bit
4112 00dc 00dc          movwf   divisor
4113 00dd 01dd          clrf    divisor+1
4114 00de 01de          clrf    divisor+2
4115 00df 01df          clrf    divisor+3
4116                    ; Recombine size1 = 0 || size2 = 0
4117   00e0 :   main__6:
4118                    ; line_number = 538
4119                    ;  if file24_zero@divisor_index done
4120                    ; line_number = 542
4121                    ; file24_changed@divisor_index := _false
4122                    ;info   542, 224
4123 00000020 = main__select__7___byte equ file24_changed
4124 00000002 = main__select__7___bit equ 2
4125 00e0 1283          bcf     __rp0___byte, __rp0___bit
4126 00e1 1120          bcf     main__select__7___byte, main__select__7___bit
4127                    ; line_number = 543
4128                    ;  file24_changed@kp_index := _true
4129                    ;info   543, 226
4130 00000020 = main__select__8___byte equ file24_changed
4131 00000003 = main__select__8___bit equ 3
4132 00e2 15a0          bsf     main__select__8___byte, main__select__8___bit
4133                    ; line_number = 544
4134                    ;  file24_changed@ki_index := _true
4135                    ;info   544, 227
4136 00000020 = main__select__9___byte equ file24_changed
4137 00000004 = main__select__9___bit equ 4
4138 00e3 1620          bsf     main__select__9___byte, main__select__9___bit
4139                    ; line_number = 545
4140                    ;  file24_changed@kd_index := _true
4141                    ;info   545, 228
4142 00000020 = main__select__10___byte equ file24_changed
4143 00000005 = main__select__10___bit equ 5
4144 00e4 16a0          bsf     main__select__10___byte, main__select__10___bit
4145                    ; line_number = 546
4146                    ;  call uart_manage()
4147                    ;info   546, 229
4148 00e5 224d          call    uart_manage
4149                    ; Recombine size1 = 0 || size2 = 0
4150   00e6 :   main__12:
4151                    ; line_number = 536
4152                    ; if file24_changed@divisor_index done
4153                    ; line_number = 547
4154                    ; if file24_changed@kp_index start
4155                    ;info   547, 230
4156 00000020 = main__select__14___byte equ file24_changed
4157 00000003 = main__select__14___bit equ 3
4158                    ; =>bit_code_emit@symbol(): sym=main__select__14
4159                    ; No 1TEST: true.size=23 false.size=0
4160                    ; No 2TEST: true.size=23 false.size=0
4161                    ; 1GOTO: Single test with GOTO
4162 00e6 1da0          btfss   main__select__14___byte, main__select__14___bit
4163 00e7 28ff          goto    main__15
4164                    ; line_number = 548
4165                    ; numerator := file24_float_convert(kp_index)
4166                    ;info   548, 232
4167 00e8 3003          movlw   3
4168 00e9 2424          call    file24_float_convert
4169 00ea 3024          movlw   file24_float_convert__0return>>1
4170 00eb 158a          bsf     __cb0___byte, __cb0___bit
4171 00ec 1683          bsf     __rp0___byte, __rp0___bit
4172 00ed 22d8          call    _float32_pointer_load
4173 00ee 3070          movlw   numerator>>1
4174 00ef 2337          call    _float32_pointer_store
4175                    ; line_number = 549
4176                    ;  call uart_manage()
4177                    ;info   549, 240
4178 00f0 118a          bcf     __cb0___byte, __cb0___bit
4179 00f1 1283          bcf     __rp0___byte, __rp0___bit
4180 00f2 224d          call    uart_manage
4181                    ; line_number = 550
4182                    ;  kp := numerator / divisor
4183                    ;info   550, 243
4184 00f3 3070          movlw   numerator>>1
4185 00f4 158a          bsf     __cb0___byte, __cb0___bit
4186 00f5 1683          bsf     __rp0___byte, __rp0___bit
4187 00f6 22d8          call    _float32_pointer_load
4188 00f7 306e          movlw   divisor>>1
4189 00f8 22fe          call    _float32_pointer_divide
4190 00f9 30b1          movlw   kp>>1
4191 00fa 2337          call    _float32_pointer_store
4192                    ; line_number = 551
4193                    ;  file24_changed@kp_index := _false
4194                    ;info   551, 251
4195 00000020 = main__select__13___byte equ file24_changed
4196 00000003 = main__select__13___bit equ 3
4197 00fb 1283          bcf     __rp0___byte, __rp0___bit
4198 00fc 11a0          bcf     main__select__13___byte, main__select__13___bit
4199                    ; line_number = 552
4200                    ;  call uart_manage()
4201                    ;info   552, 253
4202 00fd 118a          bcf     __cb0___byte, __cb0___bit
4203 00fe 224d          call    uart_manage
4204                    ; Recombine size1 = 0 || size2 = 0
4205   00ff :   main__15:
4206                    ; line_number = 547
4207                    ; if file24_changed@kp_index done
4208                    ; line_number = 553
4209                    ; if file24_changed@ki_index start
4210                    ;info   553, 255
4211 00000020 = main__select__17___byte equ file24_changed
4212 00000004 = main__select__17___bit equ 4
4213                    ; =>bit_code_emit@symbol(): sym=main__select__17
4214                    ; No 1TEST: true.size=23 false.size=0
4215                    ; No 2TEST: true.size=23 false.size=0
4216                    ; 1GOTO: Single test with GOTO
4217 00ff 1e20          btfss   main__select__17___byte, main__select__17___bit
4218 0100 2918          goto    main__18
4219                    ; line_number = 554
4220                    ; numerator := file24_float_convert(ki_index)
4221                    ;info   554, 257
4222 0101 3004          movlw   4
4223 0102 2424          call    file24_float_convert
4224 0103 3024          movlw   file24_float_convert__0return>>1
4225 0104 158a          bsf     __cb0___byte, __cb0___bit
4226 0105 1683          bsf     __rp0___byte, __rp0___bit
4227 0106 22d8          call    _float32_pointer_load
4228 0107 3070          movlw   numerator>>1
4229 0108 2337          call    _float32_pointer_store
4230                    ; line_number = 555
4231                    ;  call uart_manage()
4232                    ;info   555, 265
4233 0109 118a          bcf     __cb0___byte, __cb0___bit
4234 010a 1283          bcf     __rp0___byte, __rp0___bit
4235 010b 224d          call    uart_manage
4236                    ; line_number = 556
4237                    ;  ki := numerator / divisor
4238                    ;info   556, 268
4239 010c 3070          movlw   numerator>>1
4240 010d 158a          bsf     __cb0___byte, __cb0___bit
4241 010e 1683          bsf     __rp0___byte, __rp0___bit
4242 010f 22d8          call    _float32_pointer_load
4243 0110 306e          movlw   divisor>>1
4244 0111 22fe          call    _float32_pointer_divide
4245 0112 30b3          movlw   ki>>1
4246 0113 2337          call    _float32_pointer_store
4247                    ; line_number = 557
4248                    ;  file24_changed@ki_index := _false
4249                    ;info   557, 276
4250 00000020 = main__select__16___byte equ file24_changed
4251 00000004 = main__select__16___bit equ 4
4252 0114 1283          bcf     __rp0___byte, __rp0___bit
4253 0115 1220          bcf     main__select__16___byte, main__select__16___bit
4254                    ; line_number = 558
4255                    ;  call uart_manage()
4256                    ;info   558, 278
4257 0116 118a          bcf     __cb0___byte, __cb0___bit
4258 0117 224d          call    uart_manage
4259                    ; Recombine size1 = 0 || size2 = 0
4260   0118 :   main__18:
4261                    ; line_number = 553
4262                    ; if file24_changed@ki_index done
4263                    ; line_number = 559
4264                    ; if file24_changed@kd_index start
4265                    ;info   559, 280
4266 00000020 = main__select__20___byte equ file24_changed
4267 00000005 = main__select__20___bit equ 5
4268                    ; =>bit_code_emit@symbol(): sym=main__select__20
4269                    ; No 1TEST: true.size=23 false.size=0
4270                    ; No 2TEST: true.size=23 false.size=0
4271                    ; 1GOTO: Single test with GOTO
4272 0118 1ea0          btfss   main__select__20___byte, main__select__20___bit
4273 0119 2931          goto    main__21
4274                    ; line_number = 560
4275                    ; numerator := file24_float_convert(kd_index)
4276                    ;info   560, 282
4277 011a 3005          movlw   5
4278 011b 2424          call    file24_float_convert
4279 011c 3024          movlw   file24_float_convert__0return>>1
4280 011d 158a          bsf     __cb0___byte, __cb0___bit
4281 011e 1683          bsf     __rp0___byte, __rp0___bit
4282 011f 22d8          call    _float32_pointer_load
4283 0120 3070          movlw   numerator>>1
4284 0121 2337          call    _float32_pointer_store
4285                    ; line_number = 561
4286                    ;  call uart_manage()
4287                    ;info   561, 290
4288 0122 118a          bcf     __cb0___byte, __cb0___bit
4289 0123 1283          bcf     __rp0___byte, __rp0___bit
4290 0124 224d          call    uart_manage
4291                    ; line_number = 562
4292                    ;  kd := numerator / divisor
4293                    ;info   562, 293
4294 0125 3070          movlw   numerator>>1
4295 0126 158a          bsf     __cb0___byte, __cb0___bit
4296 0127 1683          bsf     __rp0___byte, __rp0___bit
4297 0128 22d8          call    _float32_pointer_load
4298 0129 306e          movlw   divisor>>1
4299 012a 22fe          call    _float32_pointer_divide
4300 012b 306a          movlw   kd>>1
4301 012c 2337          call    _float32_pointer_store
4302                    ; line_number = 563
4303                    ;  file24_changed@kd_index := _false
4304                    ;info   563, 301
4305 00000020 = main__select__19___byte equ file24_changed
4306 00000005 = main__select__19___bit equ 5
4307 012d 1283          bcf     __rp0___byte, __rp0___bit
4308 012e 12a0          bcf     main__select__19___byte, main__select__19___bit
4309                    ; line_number = 564
4310                    ;  call uart_manage()
4311                    ;info   564, 303
4312 012f 118a          bcf     __cb0___byte, __cb0___bit
4313 0130 224d          call    uart_manage
4314            
4315                    ; Recombine size1 = 0 || size2 = 0
4316   0131 :   main__21:
4317                    ; line_number = 559
4318                    ; if file24_changed@kd_index done
4319   0131 :   main__22:
4320                    ; Recombine size1 = 0 || size2 = 0
4321                    ; line_number = 529
4322                    ;  if file24_changed != 0 done
4323                    ; line_number = 566
4324                    ; if target_seek start
4325                    ;info   566, 305
4326                    ; =>bit_code_emit@symbol(): sym=target_seek
4327                    ; No 1TEST: true.size=179 false.size=0
4328                    ; No 2TEST: true.size=179 false.size=0
4329                    ; 1GOTO: Single test with GOTO
4330 0131 1cef          btfss   target_seek___byte, target_seek___bit
4331 0132 29e7          goto    main__35
4332 0133 1703          bsf     __rp1___byte, __rp1___bit
4333                    ; # Fetch the position atomically:
4334                    ; line_number = 568
4335                    ;  _gie := _false
4336                    ;info   568, 308
4337 0134 138b          bcf     _gie___byte, _gie___bit
4338                    ; line_number = 569
4339                    ;  pos_high := quad_high
4340                    ;info   569, 309
4341 0135 0820          movf    quad_high,w
4342 0136 1303          bcf     __rp1___byte, __rp1___bit
4343 0137 00be          movwf   main__pos_high
4344                    ; line_number = 570
4345                    ;  pos_middle := quad_middle
4346                    ;info   570, 312
4347 0138 1703          bsf     __rp1___byte, __rp1___bit
4348 0139 0827          movf    quad_middle,w
4349 013a 1303          bcf     __rp1___byte, __rp1___bit
4350 013b 00bf          movwf   main__pos_middle
4351                    ; line_number = 571
4352                    ;  pos_low := quad_low
4353                    ;info   571, 316
4354 013c 1703          bsf     __rp1___byte, __rp1___bit
4355 013d 082e          movf    quad_low,w
4356 013e 1303          bcf     __rp1___byte, __rp1___bit
4357 013f 00c0          movwf   main__pos_low
4358                    ; line_number = 572
4359                    ;  _gie := _true
4360                    ;info   572, 320
4361 0140 178b          bsf     _gie___byte, _gie___bit
4362                    ; line_number = 573
4363                    ;  call uart_manage()
4364                    ;info   573, 321
4365 0141 224d          call    uart_manage
4366            
4367                    ; # Convert the position bytes into a float:
4368                    ; line_number = 576
4369                    ;  position := xyz(pos_high, pos_middle, pos_low)
4370                    ;info   576, 322
4371 0142 083e          movf    main__pos_high,w
4372 0143 00d3          movwf   xyz__high
4373 0144 083f          movf    main__pos_middle,w
4374 0145 00d4          movwf   xyz__middle
4375 0146 0840          movf    main__pos_low,w
4376 0147 24f0          call    xyz
4377 0148 302b          movlw   xyz__0return>>1
4378 0149 158a          bsf     __cb0___byte, __cb0___bit
4379 014a 1683          bsf     __rp0___byte, __rp0___bit
4380 014b 22d8          call    _float32_pointer_load
4381 014c 30ad          movlw   position>>1
4382 014d 2337          call    _float32_pointer_store
4383                    ; line_number = 577
4384                    ;  call uart_manage()
4385                    ;info   577, 334
4386 014e 118a          bcf     __cb0___byte, __cb0___bit
4387 014f 1283          bcf     __rp0___byte, __rp0___bit
4388 0150 224d          call    uart_manage
4389            
4390                    ; # Figure out the proportional error:
4391                    ; line_number = 580
4392                    ;  error := position - target
4393                    ;info   580, 337
4394 0151 30ad          movlw   position>>1
4395 0152 158a          bsf     __cb0___byte, __cb0___bit
4396 0153 1683          bsf     __rp0___byte, __rp0___bit
4397 0154 22d8          call    _float32_pointer_load
4398 0155 30af          movlw   target>>1
4399 0156 2324          call    _float32_pointer_subtract
4400 0157 30ab          movlw   error>>1
4401 0158 2337          call    _float32_pointer_store
4402                    ; line_number = 581
4403                    ;  call uart_manage()
4404                    ;info   581, 345
4405 0159 118a          bcf     __cb0___byte, __cb0___bit
4406 015a 1283          bcf     __rp0___byte, __rp0___bit
4407 015b 224d          call    uart_manage
4408            
4409                    ; # Compute the PID equation:
4410                    ; line_number = 584
4411                    ;  pid := kp * error
4412                    ;info   584, 348
4413 015c 30b1          movlw   kp>>1
4414 015d 158a          bsf     __cb0___byte, __cb0___bit
4415 015e 1683          bsf     __rp0___byte, __rp0___bit
4416 015f 22d8          call    _float32_pointer_load
4417 0160 30ab          movlw   error>>1
4418 0161 2311          call    _float32_pointer_multiply
4419 0162 306c          movlw   pid>>1
4420 0163 2337          call    _float32_pointer_store
4421                    ; line_number = 585
4422                    ;  call uart_manage()
4423                    ;info   585, 356
4424 0164 118a          bcf     __cb0___byte, __cb0___bit
4425 0165 1283          bcf     __rp0___byte, __rp0___bit
4426 0166 224d          call    uart_manage
4427            
4428                    ; # Set the new motor speed:
4429                    ; line_number = 588
4430                    ;  negative := _false
4431                    ;info   588, 359
4432 0167 116f          bcf     main__negative___byte, main__negative___bit
4433                    ; line_number = 589
4434                    ;  if pid < 0.0 start
4435                    ;info   589, 360
4436 0168 306c          movlw   pid>>1
4437 0169 158a          bsf     __cb0___byte, __cb0___bit
4438 016a 1683          bsf     __rp0___byte, __rp0___bit
4439 016b 22d8          call    _float32_pointer_load
4440 016c 2393          call    _float32_less_than
4441                    ; =>bit_code_emit@symbol(): sym=__z
4442                    ; No 1TEST: true.size=7 false.size=0
4443                    ; No 2TEST: true.size=7 false.size=0
4444                    ; 1GOTO: Single test with GOTO
4445 016d 118a          bcf     __cb0___byte, __cb0___bit
4446 016e 1d03          btfss   __z___byte, __z___bit
4447 016f 2979          goto    main__23
4448 0170 158a          bsf     __cb0___byte, __cb0___bit
4449 0171 1283          bcf     __rp0___byte, __rp0___bit
4450                    ; # Work in positive arithmetic:
4451                    ; line_number = 591
4452                    ;  negative := _true
4453                    ;info   591, 370
4454 0172 156f          bsf     main__negative___byte, main__negative___bit
4455                    ; line_number = 592
4456                    ;  pid := -pid
4457                    ;info   592, 371
4458 0173 306c          movlw   pid>>1
4459 0174 1683          bsf     __rp0___byte, __rp0___bit
4460 0175 22d8          call    _float32_pointer_load
4461 0176 234a          call    _float32_negate
4462 0177 306c          movlw   pid>>1
4463 0178 2337          call    _float32_pointer_store
4464                    ; Recombine size1 = 0 || size2 = 0
4465   0179 :   main__23:
4466                    ; line_number = 589
4467                    ;  if pid < 0.0 done
4468                    ; line_number = 593
4469                    ; if pid > 127.0 start
4470                    ;info   593, 377
4471                    ; -127 = 85 fe 00 00
4472 0179 3085          movlw   133
4473 017a 00a8          movwf   _float32_aexp
4474 017b 30fe          movlw   254
4475 017c 00a7          movwf   _float32_aargb0
4476 017d 01a6          clrf    _float32_aargb1
4477 017e 01a5          clrf    _float32_aargb2
4478 017f 306c          movlw   pid>>1
4479 0180 158a          bsf     __cb0___byte, __cb0___bit
4480 0181 22eb          call    _float32_pointer_add
4481 0182 23a1          call    _float32_greater_than
4482                    ; =>bit_code_emit@symbol(): sym=__z
4483                    ; No 1TEST: true.size=3 false.size=84
4484                    ; No 2TEST: true.size=3 false.size=84
4485 0183 118a          bcf     __cb0___byte, __cb0___bit
4486                    ; 2GOTO: Single test with two GOTO's
4487 0184 1d03          btfss   __z___byte, __z___bit
4488 0185 298b          goto    main__32
4489 0186 1283          bcf     __rp0___byte, __rp0___bit
4490                    ; line_number = 594
4491                    ; target_speed := 127
4492                    ;info   594, 391
4493 0187 307f          movlw   127
4494 0188 00bd          movwf   target_speed
4495                    ; line_number = 595
4496                    ;  idle := 0
4497                    ;info   595, 393
4498 0189 01aa          clrf    idle
4499                    ; Recombine code1_bit_states != code2_bit_states
4500 018a 29e0          goto    main__33
4501                    ; 2GOTO: Starting code 2
4502   018b :   main__32:
4503 018b 158a          bsf     __cb0___byte, __cb0___bit
4504                    ; line_number = 597
4505                    ; target_speed := _float32_to_byte(pid)
4506                    ;info   597, 396
4507 018c 306c          movlw   pid>>1
4508 018d 22d8          call    _float32_pointer_load
4509 018e 3068          movlw   _float32_to_byte__number>>1
4510 018f 2337          call    _float32_pointer_store
4511 0190 2385          call    _float32_to_byte
4512 0191 1283          bcf     __rp0___byte, __rp0___bit
4513 0192 00bd          movwf   target_speed
4514                    ; line_number = 598
4515                    ;  call uart_manage()
4516                    ;info   598, 403
4517 0193 118a          bcf     __cb0___byte, __cb0___bit
4518 0194 224d          call    uart_manage
4519                    ; line_number = 599
4520                    ;  if error >= 0.0 start
4521                    ;info   599, 405
4522 0195 30ab          movlw   error>>1
4523 0196 158a          bsf     __cb0___byte, __cb0___bit
4524 0197 1683          bsf     __rp0___byte, __rp0___bit
4525 0198 22d8          call    _float32_pointer_load
4526 0199 23a9          call    _float32_greater_than_or_equal
4527                    ; =>bit_code_emit@symbol(): sym=__z
4528                    ; line_number = 600
4529                    ; if error >= 255.0 start
4530                    ;info   600, 410
4531                    ; -255 = 86 ff 00 00
4532 019a 3086          movlw   134
4533 019b 00a8          movwf   _float32_aexp
4534                    ; line_number = 605
4535                    ; if error < -255.0 start
4536                    ;info   605, 412
4537                    ; 255 = 86 7f 00 00
4538                    ; No 1TEST: true.size=22 false.size=23
4539                    ; No 2TEST: true.size=22 false.size=23
4540 019c 118a          bcf     __cb0___byte, __cb0___bit
4541                    ; 2GOTO: Single test with two GOTO's
4542 019d 1d03          btfss   __z___byte, __z___bit
4543 019e 29b8          goto    main__28
4544 019f 158a          bsf     __cb0___byte, __cb0___bit
4545 01a0 30ff          movlw   255
4546 01a1 00a7          movwf   _float32_aargb0
4547 01a2 01a6          clrf    _float32_aargb1
4548 01a3 01a5          clrf    _float32_aargb2
4549 01a4 30ab          movlw   error>>1
4550 01a5 22eb          call    _float32_pointer_add
4551 01a6 23a9          call    _float32_greater_than_or_equal
4552                    ; =>bit_code_emit@symbol(): sym=__z
4553                    ; No 1TEST: true.size=2 false.size=7
4554                    ; No 2TEST: true.size=2 false.size=7
4555 01a7 118a          bcf     __cb0___byte, __cb0___bit
4556                    ; 2GOTO: Single test with two GOTO's
4557 01a8 1d03          btfss   __z___byte, __z___bit
4558 01a9 29ae          goto    main__26
4559 01aa 1283          bcf     __rp0___byte, __rp0___bit
4560                    ; line_number = 601
4561                    ; small_error := 255
4562                    ;info   601, 427
4563 01ab 30ff          movlw   255
4564 01ac 00c1          movwf   main__small_error
4565                    ; Recombine code1_bit_states != code2_bit_states
4566 01ad 29b6          goto    main__27
4567                    ; 2GOTO: Starting code 2
4568   01ae :   main__26:
4569 01ae 158a          bsf     __cb0___byte, __cb0___bit
4570                    ; line_number = 603
4571                    ; small_error := _float32_to_byte(error)
4572                    ;info   603, 431
4573 01af 30ab          movlw   error>>1
4574 01b0 22d8          call    _float32_pointer_load
4575 01b1 3068          movlw   _float32_to_byte__number>>1
4576 01b2 2337          call    _float32_pointer_store
4577 01b3 2385          call    _float32_to_byte
4578 01b4 1283          bcf     __rp0___byte, __rp0___bit
4579 01b5 00c1          movwf   main__small_error
4580   01b6 :   main__27:
4581                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4582                    ; 2GOTO: code2 final bitstates:(data:01=uu=>00 code:X1=cu=>X1)
4583                    ; 2GOTO: code final bitstates:(data:01=uu=>00 code:X1=cu=>X?)
4584                    ; line_number = 600
4585                    ; if error >= 255.0 done
4586 01b6 118a          bcf     __cb0___byte, __cb0___bit
4587 01b7 29d0          goto    main__29
4588                    ; 2GOTO: Starting code 2
4589   01b8 :   main__28:
4590 01b8 158a          bsf     __cb0___byte, __cb0___bit
4591 01b9 307f          movlw   127
4592 01ba 00a7          movwf   _float32_aargb0
4593 01bb 01a6          clrf    _float32_aargb1
4594 01bc 01a5          clrf    _float32_aargb2
4595 01bd 30ab          movlw   error>>1
4596 01be 22eb          call    _float32_pointer_add
4597 01bf 2393          call    _float32_less_than
4598                    ; =>bit_code_emit@symbol(): sym=__z
4599                    ; No 1TEST: true.size=2 false.size=8
4600                    ; No 2TEST: true.size=2 false.size=8
4601 01c0 118a          bcf     __cb0___byte, __cb0___bit
4602                    ; 2GOTO: Single test with two GOTO's
4603 01c1 1d03          btfss   __z___byte, __z___bit
4604 01c2 29c7          goto    main__24
4605 01c3 1283          bcf     __rp0___byte, __rp0___bit
4606                    ; line_number = 606
4607                    ; small_error := 255
4608                    ;info   606, 452
4609 01c4 30ff          movlw   255
4610 01c5 00c1          movwf   main__small_error
4611                    ; Recombine code1_bit_states != code2_bit_states
4612 01c6 29d0          goto    main__25
4613                    ; 2GOTO: Starting code 2
4614   01c7 :   main__24:
4615 01c7 158a          bsf     __cb0___byte, __cb0___bit
4616                    ; line_number = 608
4617                    ; small_error := _float32_to_byte(-error)
4618                    ;info   608, 456
4619 01c8 30ab          movlw   error>>1
4620 01c9 22d8          call    _float32_pointer_load
4621 01ca 234a          call    _float32_negate
4622 01cb 3068          movlw   _float32_to_byte__number>>1
4623 01cc 2337          call    _float32_pointer_store
4624 01cd 2385          call    _float32_to_byte
4625 01ce 1283          bcf     __rp0___byte, __rp0___bit
4626 01cf 00c1          movwf   main__small_error
4627   01d0 :   main__25:
4628                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4629                    ; 2GOTO: code2 final bitstates:(data:01=uu=>00 code:X1=cu=>X1)
4630                    ; 2GOTO: code final bitstates:(data:01=uu=>00 code:X1=cu=>X?)
4631                    ; line_number = 605
4632                    ; if error < -255.0 done
4633   01d0 :   main__29:
4634                    ; 2GOTO: code1 final bitstates:(data:01=uu=>01 code:X1=cu=>X1)
4635                    ; 2GOTO: code2 final bitstates:(data:01=uu=>01 code:X1=cu=>X1)
4636                    ; 2GOTO: code final bitstates:(data:01=uu=>01 code:X1=cu=>X?)
4637 01d0 1283          bcf     __rp0___byte, __rp0___bit
4638                    ; line_number = 599
4639                    ;  if error >= 0.0 done
4640                    ; line_number = 609
4641                    ; call uart_manage()
4642                    ;info   609, 465
4643 01d1 118a          bcf     __cb0___byte, __cb0___bit
4644 01d2 224d          call    uart_manage
4645                    ; line_number = 610
4646                    ;  if small_error <= deadband start
4647                    ;info   610, 467
4648 01d3 0829          movf    deadband,w
4649 01d4 0241          subwf   main__small_error,w
4650 01d5 1903          btfsc   __z___byte, __z___bit
4651 01d6 1003          bcf     __c___byte, __c___bit
4652                    ; =>bit_code_emit@symbol(): sym=__c
4653                    ; No 1TEST: true.size=0 false.size=7
4654                    ; No 2TEST: true.size=0 false.size=7
4655                    ; 1GOTO: Single test with GOTO
4656 01d7 1803          btfsc   __c___byte, __c___bit
4657 01d8 29e0          goto    main__31
4658                    ; line_number = 611
4659                    ; idle := idle + 1
4660                    ;info   611, 473
4661 01d9 0aaa          incf    idle,f
4662                    ; line_number = 612
4663                    ;  if idle >= limit start
4664                    ;info   612, 474
4665 01da 082b          movf    limit,w
4666 01db 022a          subwf   idle,w
4667                    ; =>bit_code_emit@symbol(): sym=__c
4668                    ; No 1TEST: true.size=2 false.size=0
4669                    ; No 2TEST: true.size=2 false.size=0
4670                    ; 1GOTO: Single test with GOTO
4671 01dc 1c03          btfss   __c___byte, __c___bit
4672 01dd 29e0          goto    main__30
4673                    ; line_number = 613
4674                    ; target_seek := _false
4675                    ;info   613, 478
4676 01de 10ef          bcf     target_seek___byte, target_seek___bit
4677                    ; line_number = 614
4678                    ;  target_speed := 0
4679                    ;info   614, 479
4680 01df 01bd          clrf    target_speed
4681                    ; Recombine size1 = 0 || size2 = 0
4682   01e0 :   main__30:
4683                    ; line_number = 612
4684                    ;  if idle >= limit done
4685   01e0 :   main__31:
4686                    ; Recombine size1 = 0 || size2 = 0
4687                    ; line_number = 610
4688                    ;  if small_error <= deadband done
4689   01e0 :   main__33:
4690                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
4691                    ; 2GOTO: code2 final bitstates:(data:01=uu=>00 code:X1=cu=>X0)
4692                    ; 2GOTO: code final bitstates:(data:10=uu=>00 code:X0=cu=>X0)
4693                    ; line_number = 593
4694                    ; if pid > 127.0 done
4695                    ; line_number = 615
4696                    ; if negative start
4697                    ;info   615, 480
4698                    ; =>bit_code_emit@symbol(): sym=main__negative
4699                    ; No 1TEST: true.size=3 false.size=0
4700                    ; No 2TEST: true.size=3 false.size=0
4701                    ; 1GOTO: Single test with GOTO
4702 01e0 1d6f          btfss   main__negative___byte, main__negative___bit
4703 01e1 29e5          goto    main__34
4704                    ; line_number = 616
4705                    ; target_speed := 0 - target_speed
4706                    ;info   616, 482
4707 01e2 083d          movf    target_speed,w
4708 01e3 3c00          sublw   0
4709 01e4 00bd          movwf   target_speed
4710                    ; Recombine size1 = 0 || size2 = 0
4711   01e5 :   main__34:
4712                    ; line_number = 615
4713                    ; if negative done
4714                    ; line_number = 617
4715                    ; call speed_set(target_speed)
4716                    ;info   617, 485
4717 01e5 083d          movf    target_speed,w
4718 01e6 249e          call    speed_set
4719            
4720            
4721                    ; Recombine size1 = 0 || size2 = 0
4722   01e7 :   main__35:
4723                    ; line_number = 566
4724                    ; if target_seek done
4725                    ; line_number = 524
4726                    ;  loop_forever wrap-up
4727 01e7 28b5          goto    main__1
4728                    ; line_number = 524
4729                    ;  loop_forever done
4730                    ; delay after procedure statements=non-uniform
4731            
4732            
4733            
4734            
4735                    ; line_number = 620
4736                    ;info   620, 488
4737                    ; procedure reset
4738   01e8 :   reset:
4739                    ; arguments_none
4740                    ; line_number = 622
4741                    ;  returns_nothing
4742            
4743                    ; # This procedure will return the restore all of the state to start-up state.
4744            
4745                    ; line_number = 626
4746                    ;  local index byte
4747 00000042 = reset__index equ globals___0+34
4748            
4749                    ; # Initialize UART:
4750                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
4751                    ; line_number = 629
4752                    ;  address := rb2bus_eedata_read()
4753                    ;info   629, 488
4754 01e8 24bb          call    rb2bus_eedata_read
4755 01e9 00b9          movwf   address
4756                    ; line_number = 630
4757                    ;  if address = 0 start
4758                    ;info   630, 490
4759                    ; Left minus Right
4760 01ea 0839          movf    address,w
4761                    ; =>bit_code_emit@symbol(): sym=__z
4762                    ; No 1TEST: true.size=2 false.size=0
4763                    ; No 2TEST: true.size=2 false.size=0
4764                    ; 1GOTO: Single test with GOTO
4765 01eb 1d03          btfss   __z___byte, __z___bit
4766 01ec 29ef          goto    reset__1
4767                    ; line_number = 631
4768                    ; address := 21
4769                    ;info   631, 493
4770 01ed 3015          movlw   21
4771 01ee 00b9          movwf   address
4772                    ; Recombine size1 = 0 || size2 = 0
4773   01ef :   reset__1:
4774                    ; line_number = 630
4775                    ;  if address = 0 done
4776                    ; line_number = 632
4777                    ; call uart_initialize()
4778                    ;info   632, 495
4779 01ef 2481          call    uart_initialize
4780            
4781                    ; # Initialize prescaler for use by Timer 0:
4782                    ; # _rapu := _true	# Disable bit port A pull-ups (bit 7)
4783                    ; # _integ := _false	# Interrupt edge select (bit 6)
4784                    ; # _t0cs := _false	# Use clock for tmr0 (bit 5)
4785                    ; # _t0se := _false	# Source edge select (bit 4)
4786                    ; # _psa := _false	# Prescaler is assigned to timer0 (bit 3)
4787                    ; # _ps2 := _true
4788                    ; # _ps1 := _true
4789                    ; # _ps0 := _true	# Prescaler = 256
4790                    ; # 1000 0111 = 0x87
4791                    ; line_number = 644
4792                    ;  _option_reg := 0x87
4793                    ;info   644, 496
4794 01f0 3087          movlw   135
4795 01f1 1683          bsf     __rp0___byte, __rp0___bit
4796 01f2 0081          movwf   _option_reg
4797            
4798                    ; # Initialize Timer 1:
4799                    ; # _t1ginv := _false	# Timer1 gate (bit 7)
4800                    ; # _tmr1ge := _false	# Timer1 gate enable (bit 6)
4801                    ; # _t1ckps1 := _false # (bit 5)
4802                    ; # _t1ckps0 := _false # Timer1 prescale = 1:1 (bit 4)
4803                    ; # _t10scen := _false # LP oscillator is off (bit 3)
4804                    ; # _t1sync := _false	# Timer 1 synchorinize (bit 2)
4805                    ; # _tmr1cs := _false	# Use internal clock (bit 1)
4806                    ; # _tmr1on := _false	# Leave timer off for now (bit 0)
4807                    ; # 0000 0000 = 0
4808                    ; line_number = 656
4809                    ;  _t1con := 0
4810                    ;info   656, 499
4811 01f3 1283          bcf     __rp0___byte, __rp0___bit
4812 01f4 0190          clrf    _t1con
4813            
4814                    ; # Initialize A/D module:
4815                    ; # ANSEL is already set by the compiler:
4816                    ; #
4817                    ; # ADCON0 needs to be configured:
4818                    ; # _adfm := _true	# Right justified result
4819                    ; # _vcfg := _false	# Use 5V as Vref
4820                    ; # _chs2 := _false
4821                    ; # _chs1 := _true
4822                    ; # _chs0 := _false	# Channel = 010 = AN2
4823                    ; # _go := _false
4824                    ; # _adon := _true	# Turn on A/D converter
4825                    ; # 10x0 1001 = 0x89
4826                    ; line_number = 670
4827                    ;  _adcon0 := 0x89
4828                    ;info   670, 501
4829 01f5 3089          movlw   137
4830 01f6 009f          movwf   _adcon0
4831            
4832                    ; # ADCON1 needs to be configured:
4833                    ; # ADCS<2:0> := 110 = Tad=3.2uS at Fosc=20MHz
4834                    ; # _adcs2 := _true
4835                    ; # _adcs1 := _true
4836                    ; # _adcs0 := _false
4837                    ; # x110 xxxx = 0x60
4838                    ; line_number = 678
4839                    ;  _adcon1 := 0x60
4840                    ;info   678, 503
4841 01f7 3060          movlw   96
4842 01f8 1683          bsf     __rp0___byte, __rp0___bit
4843 01f9 009f          movwf   _adcon1
4844            
4845                    ; # Initialize motor:
4846                    ; line_number = 681
4847                    ;  call speed_set(0)
4848                    ;info   681, 506
4849 01fa 3000          movlw   0
4850 01fb 1283          bcf     __rp0___byte, __rp0___bit
4851 01fc 249e          call    speed_set
4852            
4853                    ; # Initialize {file8}:
4854                    ; line_number = 684
4855                    ;  index := 0
4856                    ;info   684, 509
4857 01fd 01c2          clrf    reset__index
4858                    ; line_number = 685
4859                    ;  while index < file8_size start
4860   01fe :   reset__2:
4861                    ;info   685, 510
4862 01fe 3008          movlw   8
4863 01ff 0242          subwf   reset__index,w
4864                    ; =>bit_code_emit@symbol(): sym=__c
4865                    ; No 1TEST: true.size=0 false.size=7
4866                    ; No 2TEST: true.size=0 false.size=7
4867                    ; 1GOTO: Single test with GOTO
4868 0200 1803          btfsc   __c___byte, __c___bit
4869 0201 2a09          goto    reset__3
4870                    ; line_number = 686
4871                    ; file8[index] := 0
4872                    ;info   686, 514
4873                    ; index_fsr_first
4874 0202 0842          movf    reset__index,w
4875 0203 3e25          addlw   file8
4876 0204 0084          movwf   __fsr
4877 0205 1383          bcf     __irp___byte, __irp___bit
4878 0206 0180          clrf    __indf
4879                    ; line_number = 687
4880                    ;  index := index + 1
4881                    ;info   687, 519
4882 0207 0ac2          incf    reset__index,f
4883 0208 29fe          goto    reset__2
4884   0209 :   reset__3:
4885                    ; Recombine size1 = 0 || size2 = 0
4886                    ; line_number = 685
4887                    ;  while index < file8_size done
4888                    ; line_number = 688
4889                    ; call configure_update()
4890                    ;info   688, 521
4891 0209 2458          call    configure_update
4892                    ; line_number = 689
4893                    ;  deadband := 4
4894                    ;info   689, 522
4895 020a 3004          movlw   4
4896 020b 00a9          movwf   deadband
4897                    ; line_number = 690
4898                    ;  limit := 20
4899                    ;info   690, 524
4900 020c 3014          movlw   20
4901 020d 00ab          movwf   limit
4902            
4903                    ; # Initialize {file24}:
4904                    ; line_number = 693
4905                    ;  index := 0
4906                    ;info   693, 526
4907 020e 01c2          clrf    reset__index
4908                    ; line_number = 694
4909                    ;  while index < file24_size start
4910   020f :   reset__4:
4911                    ;info   694, 527
4912 020f 3007          movlw   7
4913 0210 0242          subwf   reset__index,w
4914                    ; =>bit_code_emit@symbol(): sym=__c
4915                    ; No 1TEST: true.size=0 false.size=17
4916                    ; No 2TEST: true.size=0 false.size=17
4917                    ; 1GOTO: Single test with GOTO
4918 0211 1803          btfsc   __c___byte, __c___bit
4919 0212 2a24          goto    reset__5
4920                    ; line_number = 695
4921                    ; highs[index] := 0
4922                    ;info   695, 531
4923                    ; index_fsr_first
4924 0213 0842          movf    reset__index,w
4925 0214 3e20          addlw   highs
4926 0215 0084          movwf   __fsr
4927 0216 1783          bsf     __irp___byte, __irp___bit
4928 0217 0180          clrf    __indf
4929                    ; line_number = 696
4930                    ;  middles[index] := 0
4931                    ;info   696, 536
4932                    ; index_fsr_first
4933 0218 0842          movf    reset__index,w
4934 0219 3e27          addlw   middles
4935 021a 0084          movwf   __fsr
4936 021b 1783          bsf     __irp___byte, __irp___bit
4937 021c 0180          clrf    __indf
4938                    ; line_number = 697
4939                    ;  lows[index] := 0
4940                    ;info   697, 541
4941                    ; index_fsr_first
4942 021d 0842          movf    reset__index,w
4943 021e 3e2e          addlw   lows
4944 021f 0084          movwf   __fsr
4945 0220 1783          bsf     __irp___byte, __irp___bit
4946 0221 0180          clrf    __indf
4947                    ; line_number = 698
4948                    ;  index := index + 1
4949                    ;info   698, 546
4950 0222 0ac2          incf    reset__index,f
4951 0223 2a0f          goto    reset__4
4952   0224 :   reset__5:
4953                    ; Recombine size1 = 0 || size2 = 0
4954                    ; line_number = 694
4955                    ;  while index < file24_size done
4956                    ; line_number = 699
4957                    ; file24_index := 0
4958                    ;info   699, 548
4959 0224 01ac          clrf    file24_index
4960                    ; line_number = 700
4961                    ;  file24_changed := 0
4962                    ;info   700, 549
4963 0225 01a0          clrf    file24_changed
4964                    ; line_number = 701
4965                    ;  file24_zero := 0	
4966                    ;info   701, 550
4967 0226 01a1          clrf    file24_zero
4968            
4969                    ; # For now force divisor to -1:
4970                    ; line_number = 704
4971                    ;  highs[divisor_index] := 0xff
4972                    ;info   704, 551
4973 0227 30ff          movlw   255
4974 0228 1703          bsf     __rp1___byte, __rp1___bit
4975 0229 00a2          movwf   highs+2
4976                    ; line_number = 705
4977                    ;  middles[divisor_index] := 0xff
4978                    ;info   705, 554
4979 022a 30ff          movlw   255
4980 022b 00a9          movwf   middles+2
4981                    ; line_number = 706
4982                    ;  lows[divisor_index] := 0xff
4983                    ;info   706, 556
4984 022c 30ff          movlw   255
4985 022d 00b0          movwf   lows+2
4986            
4987                    ; # Force the an update of {divisor}:
4988                    ; line_number = 709
4989                    ;  file24_changed@divisor_index := _true
4990                    ;info   709, 558
4991 00000020 = reset__select__6___byte equ file24_changed
4992 00000002 = reset__select__6___bit equ 2
4993 022e 1303          bcf     __rp1___byte, __rp1___bit
4994 022f 1520          bsf     reset__select__6___byte, reset__select__6___bit
4995            
4996                    ; # For now kp = 20:
4997                    ; line_number = 712
4998                    ;  lows[kp_index] := 1
4999                    ;info   712, 560
5000 0230 3001          movlw   1
5001 0231 1703          bsf     __rp1___byte, __rp1___bit
5002 0232 00b1          movwf   lows+3
5003            
5004                    ; # No need to manually force a {kp} update, since updating {divisor} does
5005                    ; # that already:
5006            
5007                    ; # We only turn on target seeking when the {target} is changed.
5008                    ; # It gets turned off when find the target (or a limit switch is hit):
5009                    ; line_number = 719
5010                    ;  target_seek := _false
5011                    ;info   719, 563
5012 0233 1303          bcf     __rp1___byte, __rp1___bit
5013 0234 10ef          bcf     target_seek___byte, target_seek___bit
5014            
5015                    ; # It does not really matter, but setting {target} to 0.0 does not hurt:
5016                    ; line_number = 722
5017                    ;  target := 0.0
5018                    ;info   722, 565
5019                    ; target := 0 (00 00 00 00)
5020 0235 1703          bsf     __rp1___byte, __rp1___bit
5021 0236 01de          clrf    target
5022 0237 01df          clrf    target+1
5023 0238 01e0          clrf    target+2
5024 0239 01e1          clrf    target+3
5025            
5026                    ; # Always initialize {quad_state} even if we do not use quadrature:
5027                    ; line_number = 725
5028                    ;  quad_state := 0
5029                    ;info   725, 570
5030 023a 01b5          clrf    quad_state
5031            
5032                    ; # The weak pull-ups can be turned off:
5033                    ; line_number = 728
5034                    ;  _wpua := 0
5035                    ;info   728, 571
5036 023b 1683          bsf     __rp0___byte, __rp0___bit
5037 023c 1303          bcf     __rp1___byte, __rp1___bit
5038 023d 0195          clrf    _wpua
5039            
5040                    ; # We are only interested in changes in the A and B channels:
5041                    ; line_number = 731
5042                    ;  _ioca := quad_a_mask | quad_b_mask
5043                    ;info   731, 574
5044 023e 3003          movlw   3
5045 023f 0096          movwf   _ioca
5046            
5047                    ; # We only want to turn on the interrupt on change if we are using
5048                    ; # the quadrature (i.e. !{use_potentiometer}:
5049                    ; line_number = 735
5050                    ;  _raie := !use_potentiometer
5051                    ;info   735, 576
5052 0240 118b          bcf     _raie___byte, _raie___bit
5053                    ; =>bit_code_emit@symbol(): sym=use_potentiometer
5054                    ; 1TEST: Single test with code in skip slot
5055 0241 1283          bcf     __rp0___byte, __rp0___bit
5056 0242 1d25          btfss   use_potentiometer___byte, use_potentiometer___bit
5057 0243 158b          bsf     _raie___byte, _raie___bit
5058                    ; Recombine size1 = 0 || size2 = 0
5059            
5060                    ; # Enable the appropriate interrupts:
5061                    ; line_number = 738
5062                    ;  _t0if := _false
5063                    ;info   738, 580
5064 0244 110b          bcf     _t0if___byte, _t0if___bit
5065                    ; line_number = 739
5066                    ;  _t0ie := _true
5067                    ;info   739, 581
5068 0245 168b          bsf     _t0ie___byte, _t0ie___bit
5069                    ; line_number = 740
5070                    ;  _tmr1if := _false
5071                    ;info   740, 582
5072 0246 100c          bcf     _tmr1if___byte, _tmr1if___bit
5073                    ; line_number = 741
5074                    ;  _tmr1ie := _true
5075                    ;info   741, 583
5076 0247 1683          bsf     __rp0___byte, __rp0___bit
5077 0248 140c          bsf     _tmr1ie___byte, _tmr1ie___bit
5078                    ; line_number = 742
5079                    ;  _peie := _true
5080                    ;info   742, 585
5081 0249 170b          bsf     _peie___byte, _peie___bit
5082                    ; line_number = 743
5083                    ;  _gie := _true
5084                    ;info   743, 586
5085 024a 178b          bsf     _gie___byte, _gie___bit
5086            
5087            
5088                    ; delay after procedure statements=non-uniform
5089 024b 1283          bcf     __rp0___byte, __rp0___bit
5090                    ; Implied return
5091 024c 3400          retlw   0
5092            
5093            
5094            
5095            
5096                    ; line_number = 746
5097                    ;info   746, 589
5098                    ; procedure uart_manage
5099   024d :   uart_manage:
5100                    ; arguments_none
5101                    ; line_number = 748
5102                    ;  returns_nothing
5103            
5104                    ; line_number = 750
5105                    ;  local command byte
5106 00000043 = uart_manage__command equ globals___0+35
5107                    ; line_number = 751
5108                    ;  local index byte
5109 00000044 = uart_manage__index equ globals___0+36
5110            
5111                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
5112                    ; line_number = 753
5113                    ;  if uart_input_count != 0 start
5114                    ;info   753, 589
5115                    ; Left minus Right
5116 024d 0838          movf    uart_input_count,w
5117                    ; =>bit_code_emit@symbol(): sym=__z
5118                    ; No 1TEST: true.size=0 false.size=443
5119                    ; No 2TEST: true.size=0 false.size=443
5120                    ; 1GOTO: Single test with GOTO
5121 024e 1903          btfsc   __z___byte, __z___bit
5122 024f 2c0d          goto    uart_manage__69
5123                    ; # We have a data/command byte to process:
5124                    ; line_number = 755
5125                    ;  command := uart_input[uart_input_out_index & uart_input_mask]
5126                    ;info   755, 592
5127 0250 3003          movlw   3
5128 0251 0537          andwf   uart_input_out_index,w
5129 0252 3e32          addlw   uart_input
5130 0253 0084          movwf   __fsr
5131 0254 1383          bcf     __irp___byte, __irp___bit
5132 0255 0800          movf    __indf,w
5133 0256 00c3          movwf   uart_manage__command
5134                    ; line_number = 756
5135                    ;  uart_input_out_index := uart_input_out_index + 1
5136                    ;info   756, 599
5137 0257 0ab7          incf    uart_input_out_index,f
5138            
5139                    ; # Manage {uart_input_count} and {uart_input_pending} atomically:
5140                    ; line_number = 759
5141                    ;  _gie := _false
5142                    ;info   759, 600
5143 0258 138b          bcf     _gie___byte, _gie___bit
5144                    ; line_number = 760
5145                    ;  uart_input_count := uart_input_count - 1
5146                    ;info   760, 601
5147 0259 03b8          decf    uart_input_count,f
5148                    ; line_number = 761
5149                    ;  if uart_input_count = 0 start
5150                    ;info   761, 602
5151                    ; Left minus Right
5152 025a 0838          movf    uart_input_count,w
5153                    ; =>bit_code_emit@symbol(): sym=__z
5154                    ; 1TEST: Single test with code in skip slot
5155 025b 1903          btfsc   __z___byte, __z___bit
5156                    ; line_number = 762
5157                    ; uart_input_pending := _false
5158                    ;info   762, 604
5159 025c 106f          bcf     uart_input_pending___byte, uart_input_pending___bit
5160                    ; Recombine size1 = 0 || size2 = 0
5161                    ; line_number = 761
5162                    ;  if uart_input_count = 0 done
5163                    ; line_number = 763
5164                    ; _gie := _true
5165                    ;info   763, 605
5166 025d 178b          bsf     _gie___byte, _gie___bit
5167            
5168                    ; # We received a "data" byte"
5169                    ; line_number = 766
5170                    ;  switch state start
5171                    ;info   766, 606
5172                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=14
5173 025e 3002          movlw   uart_manage__67>>8
5174 025f 008a          movwf   __pclath
5175 0260 0830          movf    state,w
5176                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5177 0261 3e63          addlw   uart_manage__67
5178 0262 0082          movwf   __pcl
5179                    ; page_group 20
5180   0263 :   uart_manage__67:
5181 0263 2a77          goto    uart_manage__49
5182 0264 2a78          goto    uart_manage__50
5183 0265 2a7b          goto    uart_manage__51
5184 0266 2b76          goto    uart_manage__52
5185 0267 2b7f          goto    uart_manage__53
5186 0268 2b88          goto    uart_manage__54
5187 0269 2b8d          goto    uart_manage__55
5188 026a 2b92          goto    uart_manage__56
5189 026b 2ba8          goto    uart_manage__57
5190 026c 2bb2          goto    uart_manage__58
5191 026d 2bbc          goto    uart_manage__59
5192 026e 2bc6          goto    uart_manage__60
5193 026f 2c0d          goto    uart_manage__68
5194 0270 2c0d          goto    uart_manage__68
5195 0271 2be7          goto    uart_manage__61
5196 0272 2bea          goto    uart_manage__62
5197 0273 2bf1          goto    uart_manage__63
5198 0274 2bf4          goto    uart_manage__64
5199 0275 2c04          goto    uart_manage__65
5200 0276 2c09          goto    uart_manage__66
5201                    ; line_number = 767
5202                    ; case 0
5203   0277 :   uart_manage__49:
5204                    ; # Technically we should not get here because {_adden} should
5205                    ; # be {_true}, but just in case we do, we just ignore the byte:
5206                    ; line_number = 770
5207                    ;  do_nothing
5208                    ;info   770, 631
5209 0277 2c0d          goto    uart_manage__68
5210                    ; line_number = 771
5211                    ; case 1
5212   0278 :   uart_manage__50:
5213                    ; # Ignore the echo before processing a command byte:
5214                    ; line_number = 773
5215                    ;  state := state_command
5216                    ;info   773, 632
5217 0278 3002          movlw   2
5218 0279 00b0          movwf   state
5219 027a 2c0d          goto    uart_manage__68
5220                    ; line_number = 774
5221                    ; case 2
5222   027b :   uart_manage__51:
5223                    ; # Process a command byte:
5224                    ; line_number = 776
5225                    ;  switch command >> 6 start
5226                    ;info   776, 635
5227                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
5228 027b 3002          movlw   uart_manage__39>>8
5229 027c 008a          movwf   __pclath
5230 00000060 = uart_manage__40 equ globals___0+64
5231 027d 0e43          swapf   uart_manage__command,w
5232 027e 00e0          movwf   uart_manage__40
5233 027f 0ce0          rrf     uart_manage__40,f
5234 0280 0c60          rrf     uart_manage__40,w
5235 0281 3903          andlw   3
5236                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5237 0282 3e84          addlw   uart_manage__39
5238 0283 0082          movwf   __pcl
5239                    ; page_group 4
5240   0284 :   uart_manage__39:
5241 0284 2a88          goto    uart_manage__37
5242 0285 2b75          goto    uart_manage__41
5243 0286 2b75          goto    uart_manage__41
5244 0287 2b42          goto    uart_manage__38
5245                    ; line_number = 777
5246                    ; case 0
5247   0288 :   uart_manage__37:
5248                    ; # 00xx xxxx:
5249                    ; line_number = 779
5250                    ;  switch (command >> 3) & 7 start
5251                    ;info   779, 648
5252                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
5253                    ; line_number = 848
5254                    ; case_maximum 7
5255 0288 3002          movlw   uart_manage__24>>8
5256 0289 008a          movwf   __pclath
5257 00000060 = uart_manage__25 equ globals___0+64
5258 028a 0c43          rrf     uart_manage__command,w
5259 028b 00e0          movwf   uart_manage__25
5260 028c 0ce0          rrf     uart_manage__25,f
5261 028d 0c60          rrf     uart_manage__25,w
5262 028e 3907          andlw   7
5263                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5264 028f 3e91          addlw   uart_manage__24
5265 0290 0082          movwf   __pcl
5266                    ; page_group 8
5267   0291 :   uart_manage__24:
5268 0291 2a99          goto    uart_manage__19
5269 0292 2ad7          goto    uart_manage__20
5270 0293 2ae1          goto    uart_manage__21
5271 0294 2af1          goto    uart_manage__22
5272 0295 2af7          goto    uart_manage__23
5273 0296 2b41          goto    uart_manage__26
5274 0297 2b41          goto    uart_manage__26
5275 0298 2b41          goto    uart_manage__26
5276                    ; line_number = 780
5277                    ; case 0
5278   0299 :   uart_manage__19:
5279                    ; # 0000 0xxx:
5280                    ; line_number = 782
5281                    ;  switch command & 7 start
5282                    ;info   782, 665
5283                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
5284 0299 3002          movlw   uart_manage__9>>8
5285 029a 008a          movwf   __pclath
5286 029b 3007          movlw   7
5287 029c 0543          andwf   uart_manage__command,w
5288                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5289 029d 3e9f          addlw   uart_manage__9
5290 029e 0082          movwf   __pcl
5291                    ; page_group 8
5292   029f :   uart_manage__9:
5293 029f 2aa7          goto    uart_manage__1
5294 02a0 2ab0          goto    uart_manage__2
5295 02a1 2ab9          goto    uart_manage__3
5296 02a2 2ac2          goto    uart_manage__4
5297 02a3 2acb          goto    uart_manage__5
5298 02a4 2ace          goto    uart_manage__6
5299 02a5 2ad1          goto    uart_manage__7
5300 02a6 2ad4          goto    uart_manage__8
5301                    ; line_number = 783
5302                    ; case 0
5303   02a7 :   uart_manage__1:
5304                    ; # 0000 0000 (Value All Get):
5305                    ; line_number = 785
5306                    ;  call uart_byte_put(highs[file24_index])
5307                    ;info   785, 679
5308 02a7 082c          movf    file24_index,w
5309 02a8 3e20          addlw   highs
5310 02a9 0084          movwf   __fsr
5311 02aa 1783          bsf     __irp___byte, __irp___bit
5312 02ab 0800          movf    __indf,w
5313 02ac 2479          call    uart_byte_put
5314                    ; line_number = 786
5315                    ;  state := state_file24_full_get1
5316                    ;info   786, 685
5317 02ad 3003          movlw   3
5318 02ae 00b0          movwf   state
5319 02af 2ad6          goto    uart_manage__10
5320                    ; line_number = 787
5321                    ; case 1
5322   02b0 :   uart_manage__2:
5323                    ; # 0000 0001 (Value Low Get):
5324                    ; line_number = 789
5325                    ;  call uart_byte_put(lows[file24_index])
5326                    ;info   789, 688
5327 02b0 082c          movf    file24_index,w
5328 02b1 3e2e          addlw   lows
5329 02b2 0084          movwf   __fsr
5330 02b3 1783          bsf     __irp___byte, __irp___bit
5331 02b4 0800          movf    __indf,w
5332 02b5 2479          call    uart_byte_put
5333                    ; line_number = 790
5334                    ;  state := state_echo_then_command
5335                    ;info   790, 694
5336 02b6 3001          movlw   1
5337 02b7 00b0          movwf   state
5338 02b8 2ad6          goto    uart_manage__10
5339                    ; line_number = 791
5340                    ; case 2
5341   02b9 :   uart_manage__3:
5342                    ; # 0000 0010 (Value Middle Get):
5343                    ; line_number = 793
5344                    ;  call uart_byte_put(middles[file24_index])
5345                    ;info   793, 697
5346 02b9 082c          movf    file24_index,w
5347 02ba 3e27          addlw   middles
5348 02bb 0084          movwf   __fsr
5349 02bc 1783          bsf     __irp___byte, __irp___bit
5350 02bd 0800          movf    __indf,w
5351 02be 2479          call    uart_byte_put
5352                    ; line_number = 794
5353                    ;  state := state_echo_then_command
5354                    ;info   794, 703
5355 02bf 3001          movlw   1
5356 02c0 00b0          movwf   state
5357 02c1 2ad6          goto    uart_manage__10
5358                    ; line_number = 795
5359                    ; case 3
5360   02c2 :   uart_manage__4:
5361                    ; # 0000 0011 (Value High Get):
5362                    ; line_number = 797
5363                    ;  call uart_byte_put(highs[file24_index])
5364                    ;info   797, 706
5365 02c2 082c          movf    file24_index,w
5366 02c3 3e20          addlw   highs
5367 02c4 0084          movwf   __fsr
5368 02c5 1783          bsf     __irp___byte, __irp___bit
5369 02c6 0800          movf    __indf,w
5370 02c7 2479          call    uart_byte_put
5371                    ; line_number = 798
5372                    ;  state := state_echo_then_command
5373                    ;info   798, 712
5374 02c8 3001          movlw   1
5375 02c9 00b0          movwf   state
5376 02ca 2ad6          goto    uart_manage__10
5377                    ; line_number = 799
5378                    ; case 4
5379   02cb :   uart_manage__5:
5380                    ; # 0000 0100 (Value All Set):
5381                    ; line_number = 801
5382                    ;  state := state_file24_full_set1
5383                    ;info   801, 715
5384 02cb 3005          movlw   5
5385 02cc 00b0          movwf   state
5386 02cd 2ad6          goto    uart_manage__10
5387                    ; line_number = 802
5388                    ; case 5
5389   02ce :   uart_manage__6:
5390                    ; # 0000 0101 (Value Low Set):
5391                    ; line_number = 804
5392                    ;  state := state_value_low_set1
5393                    ;info   804, 718
5394 02ce 3008          movlw   8
5395 02cf 00b0          movwf   state
5396 02d0 2ad6          goto    uart_manage__10
5397                    ; line_number = 805
5398                    ; case 6
5399   02d1 :   uart_manage__7:
5400                    ; # 0000 0110 (Value Middle Set):
5401                    ; line_number = 807
5402                    ;  state := state_value_middle_set1
5403                    ;info   807, 721
5404 02d1 3009          movlw   9
5405 02d2 00b0          movwf   state
5406 02d3 2ad6          goto    uart_manage__10
5407                    ; line_number = 808
5408                    ; case 7
5409   02d4 :   uart_manage__8:
5410                    ; # 0000 0111 (Value High Set):
5411                    ; line_number = 810
5412                    ;  state := state_value_high_set1
5413                    ;info   810, 724
5414 02d4 300a          movlw   10
5415 02d5 00b0          movwf   state
5416   02d6 :   uart_manage__10:
5417                    ; line_number = 782
5418                    ;  switch command & 7 done
5419 02d6 2b41          goto    uart_manage__26
5420                    ; line_number = 811
5421                    ; case 1
5422   02d7 :   uart_manage__20:
5423                    ; # 0000 1sss (Value Index Set):
5424                    ; line_number = 813
5425                    ;  file24_index := command & 7
5426                    ;info   813, 727
5427 02d7 3007          movlw   7
5428 02d8 0543          andwf   uart_manage__command,w
5429 02d9 00ac          movwf   file24_index
5430                    ; # Make sure we stay in bounds:
5431                    ; line_number = 815
5432                    ;  if file24_index >= file24_size start
5433                    ;info   815, 730
5434 02da 3007          movlw   7
5435 02db 022c          subwf   file24_index,w
5436                    ; =>bit_code_emit@symbol(): sym=__c
5437                    ; 1TEST: Single test with code in skip slot
5438 02dc 1803          btfsc   __c___byte, __c___bit
5439                    ; line_number = 816
5440                    ; file24_index := 0
5441                    ;info   816, 733
5442 02dd 01ac          clrf    file24_index
5443                    ; Recombine size1 = 0 || size2 = 0
5444                    ; line_number = 815
5445                    ;  if file24_index >= file24_size done
5446                    ; line_number = 817
5447                    ; state := state_command
5448                    ;info   817, 734
5449 02de 3002          movlw   2
5450 02df 00b0          movwf   state
5451 02e0 2b41          goto    uart_manage__26
5452                    ; line_number = 818
5453                    ; case 2
5454   02e1 :   uart_manage__21:
5455                    ; # 0001 0xxx (Byte Get):
5456                    ; line_number = 820
5457                    ;  index := command & 7
5458                    ;info   820, 737
5459 02e1 3007          movlw   7
5460 02e2 0543          andwf   uart_manage__command,w
5461 02e3 00c4          movwf   uart_manage__index
5462                    ; line_number = 821
5463                    ;  if index = 2 start
5464                    ;info   821, 740
5465                    ; Left minus Right
5466 02e4 30fe          movlw   254
5467 02e5 0744          addwf   uart_manage__index,w
5468                    ; =>bit_code_emit@symbol(): sym=__z
5469                    ; 1TEST: Single test with code in skip slot
5470 02e6 1903          btfsc   __z___byte, __z___bit
5471                    ; # 0001 0010: (Status_Get):
5472                    ; line_number = 823
5473                    ;  call status_update()
5474                    ;info   823, 743
5475 02e7 2457          call    status_update
5476                    ; Recombine size1 = 0 || size2 = 0
5477                    ; line_number = 821
5478                    ;  if index = 2 done
5479                    ; line_number = 824
5480                    ; call uart_byte_put(file8[index])
5481                    ;info   824, 744
5482 02e8 0844          movf    uart_manage__index,w
5483 02e9 3e25          addlw   file8
5484 02ea 0084          movwf   __fsr
5485 02eb 1383          bcf     __irp___byte, __irp___bit
5486 02ec 0800          movf    __indf,w
5487 02ed 2479          call    uart_byte_put
5488                    ; line_number = 825
5489                    ;  state := state_echo_then_command
5490                    ;info   825, 750
5491 02ee 3001          movlw   1
5492 02ef 00b0          movwf   state
5493 02f0 2b41          goto    uart_manage__26
5494                    ; line_number = 826
5495                    ; case 3
5496   02f1 :   uart_manage__22:
5497                    ; # 0001 1xxx (Byte Set):
5498                    ; line_number = 828
5499                    ;  index := command & 7
5500                    ;info   828, 753
5501 02f1 3007          movlw   7
5502 02f2 0543          andwf   uart_manage__command,w
5503 02f3 00c4          movwf   uart_manage__index
5504                    ; line_number = 829
5505                    ;  state := state_file8_set1
5506                    ;info   829, 756
5507 02f4 300b          movlw   11
5508 02f5 00b0          movwf   state
5509 02f6 2b41          goto    uart_manage__26
5510                    ; line_number = 830
5511                    ; case 4
5512   02f7 :   uart_manage__23:
5513                    ; # 0010 0xxx (Probe Get):
5514                    ; line_number = 832
5515                    ;  switch command & 7 start
5516                    ;info   832, 759
5517                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
5518                    ; line_number = 845
5519                    ; case_maximum 7
5520 02f7 3003          movlw   uart_manage__17>>8
5521 02f8 008a          movwf   __pclath
5522 02f9 3007          movlw   7
5523 02fa 0543          andwf   uart_manage__command,w
5524                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5525                    ; All case bodies prefer this bit set
5526 02fb 1683          bsf     __rp0___byte, __rp0___bit
5527 02fc 3e00          addlw   uart_manage__17
5528 02fd 0082          movwf   __pcl
5529                    ; page_group 8
5530                    ; Add 2 NOP's until start of new page 
5531 02fe 0000          nop     
5532 02ff 0000          nop     
5533   0300 :   uart_manage__17:
5534 0300 2b08          goto    uart_manage__11
5535 0301 2b11          goto    uart_manage__12
5536 0302 2b1a          goto    uart_manage__13
5537 0303 2b23          goto    uart_manage__14
5538 0304 2b2c          goto    uart_manage__15
5539 0305 2b35          goto    uart_manage__16
5540 0306 2b3d          goto    uart_manage__18
5541 0307 2b3d          goto    uart_manage__18
5542                    ; line_number = 833
5543                    ; case 0
5544   0308 :   uart_manage__11:
5545 0308 158a          bsf     __cb0___byte, __cb0___bit
5546                    ; line_number = 834
5547                    ; call zyx(position)
5548                    ;info   834, 777
5549 0309 30ad          movlw   position>>1
5550 030a 22d8          call    _float32_pointer_load
5551 030b 302d          movlw   zyx__value>>1
5552 030c 2337          call    _float32_pointer_store
5553 030d 118a          bcf     __cb0___byte, __cb0___bit
5554 030e 1283          bcf     __rp0___byte, __rp0___bit
5555 030f 2503          call    zyx
5556 0310 2b3d          goto    uart_manage__18
5557                    ; line_number = 835
5558                    ; case 1
5559   0311 :   uart_manage__12:
5560 0311 158a          bsf     __cb0___byte, __cb0___bit
5561                    ; line_number = 836
5562                    ; call zyx(target)
5563                    ;info   836, 786
5564 0312 30af          movlw   target>>1
5565 0313 22d8          call    _float32_pointer_load
5566 0314 302d          movlw   zyx__value>>1
5567 0315 2337          call    _float32_pointer_store
5568 0316 118a          bcf     __cb0___byte, __cb0___bit
5569 0317 1283          bcf     __rp0___byte, __rp0___bit
5570 0318 2503          call    zyx
5571 0319 2b3d          goto    uart_manage__18
5572                    ; line_number = 837
5573                    ; case 2
5574   031a :   uart_manage__13:
5575 031a 158a          bsf     __cb0___byte, __cb0___bit
5576                    ; line_number = 838
5577                    ; call zyx(error)
5578                    ;info   838, 795
5579 031b 30ab          movlw   error>>1
5580 031c 22d8          call    _float32_pointer_load
5581 031d 302d          movlw   zyx__value>>1
5582 031e 2337          call    _float32_pointer_store
5583 031f 118a          bcf     __cb0___byte, __cb0___bit
5584 0320 1283          bcf     __rp0___byte, __rp0___bit
5585 0321 2503          call    zyx
5586 0322 2b3d          goto    uart_manage__18
5587                    ; line_number = 839
5588                    ; case 3
5589   0323 :   uart_manage__14:
5590 0323 158a          bsf     __cb0___byte, __cb0___bit
5591                    ; line_number = 840
5592                    ; call zyx(pid)
5593                    ;info   840, 804
5594 0324 306c          movlw   pid>>1
5595 0325 22d8          call    _float32_pointer_load
5596 0326 302d          movlw   zyx__value>>1
5597 0327 2337          call    _float32_pointer_store
5598 0328 118a          bcf     __cb0___byte, __cb0___bit
5599 0329 1283          bcf     __rp0___byte, __rp0___bit
5600 032a 2503          call    zyx
5601 032b 2b3d          goto    uart_manage__18
5602                    ; line_number = 841
5603                    ; case 4
5604   032c :   uart_manage__15:
5605 032c 158a          bsf     __cb0___byte, __cb0___bit
5606                    ; line_number = 842
5607                    ; call zyx(divisor)
5608                    ;info   842, 813
5609 032d 306e          movlw   divisor>>1
5610 032e 22d8          call    _float32_pointer_load
5611 032f 302d          movlw   zyx__value>>1
5612 0330 2337          call    _float32_pointer_store
5613 0331 118a          bcf     __cb0___byte, __cb0___bit
5614 0332 1283          bcf     __rp0___byte, __rp0___bit
5615 0333 2503          call    zyx
5616 0334 2b3d          goto    uart_manage__18
5617                    ; line_number = 843
5618                    ; case 5
5619   0335 :   uart_manage__16:
5620 0335 158a          bsf     __cb0___byte, __cb0___bit
5621                    ; line_number = 844
5622                    ; call zyx(kp)
5623                    ;info   844, 822
5624 0336 30b1          movlw   kp>>1
5625 0337 22d8          call    _float32_pointer_load
5626 0338 302d          movlw   zyx__value>>1
5627 0339 2337          call    _float32_pointer_store
5628 033a 118a          bcf     __cb0___byte, __cb0___bit
5629 033b 1283          bcf     __rp0___byte, __rp0___bit
5630 033c 2503          call    zyx
5631   033d :   uart_manage__18:
5632                    ; line_number = 832
5633                    ;  switch command & 7 done
5634                    ; line_number = 846
5635                    ; call uart_byte_put(high)
5636                    ;info   846, 829
5637 033d 0822          movf    high,w
5638 033e 2479          call    uart_byte_put
5639                    ; line_number = 847
5640                    ;  state := state_probe_get1
5641                    ;info   847, 831
5642 033f 3012          movlw   18
5643 0340 00b0          movwf   state
5644   0341 :   uart_manage__26:
5645                    ; line_number = 779
5646                    ;  switch (command >> 3) & 7 done
5647 0341 2b75          goto    uart_manage__41
5648                    ; line_number = 849
5649                    ; case 3
5650   0342 :   uart_manage__38:
5651                    ; # 11xx xxxx:
5652                    ; line_number = 851
5653                    ;  switch (command >> 3) & 7 start
5654                    ;info   851, 834
5655                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
5656 0342 3003          movlw   uart_manage__34>>8
5657 0343 008a          movwf   __pclath
5658 00000060 = uart_manage__35 equ globals___0+64
5659 0344 0c43          rrf     uart_manage__command,w
5660 0345 00e0          movwf   uart_manage__35
5661 0346 0ce0          rrf     uart_manage__35,f
5662 0347 0c60          rrf     uart_manage__35,w
5663 0348 3907          andlw   7
5664                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5665 0349 3e4b          addlw   uart_manage__34
5666 034a 0082          movwf   __pcl
5667                    ; page_group 8
5668   034b :   uart_manage__34:
5669 034b 2b75          goto    uart_manage__36
5670 034c 2b75          goto    uart_manage__36
5671 034d 2b75          goto    uart_manage__36
5672 034e 2b75          goto    uart_manage__36
5673 034f 2b75          goto    uart_manage__36
5674 0350 2b75          goto    uart_manage__36
5675 0351 2b75          goto    uart_manage__36
5676 0352 2b53          goto    uart_manage__33
5677                    ; line_number = 852
5678                    ; case 7
5679   0353 :   uart_manage__33:
5680                    ; # 1111 1xxx:
5681                    ; line_number = 854
5682                    ;  switch command & 7 start
5683                    ;info   854, 851
5684                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
5685 0353 3003          movlw   uart_manage__31>>8
5686 0354 008a          movwf   __pclath
5687 0355 3007          movlw   7
5688 0356 0543          andwf   uart_manage__command,w
5689                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5690 0357 3e59          addlw   uart_manage__31
5691 0358 0082          movwf   __pcl
5692                    ; page_group 8
5693   0359 :   uart_manage__31:
5694 0359 2b75          goto    uart_manage__32
5695 035a 2b75          goto    uart_manage__32
5696 035b 2b75          goto    uart_manage__32
5697 035c 2b75          goto    uart_manage__32
5698 035d 2b61          goto    uart_manage__27
5699 035e 2b66          goto    uart_manage__28
5700 035f 2b71          goto    uart_manage__29
5701 0360 2b73          goto    uart_manage__30
5702                    ; line_number = 855
5703                    ; case 4
5704   0361 :   uart_manage__27:
5705                    ; # 1111 1100 (Address Set):
5706                    ; line_number = 857
5707                    ;  call uart_byte_put(address)
5708                    ;info   857, 865
5709 0361 0839          movf    address,w
5710 0362 2479          call    uart_byte_put
5711                    ; line_number = 858
5712                    ;  state := state_address_set1
5713                    ;info   858, 867
5714 0363 300e          movlw   14
5715 0364 00b0          movwf   state
5716 0365 2b75          goto    uart_manage__32
5717                    ; line_number = 859
5718                    ; case 5
5719   0366 :   uart_manage__28:
5720                    ; # 1111 1101 (Id_Next):
5721                    ; line_number = 861
5722                    ;  call uart_byte_put(id[id_index])
5723                    ;info   861, 870
5724 0366 0831          movf    id_index,w
5725 0367 2523          call    id
5726 0368 2479          call    uart_byte_put
5727                    ; line_number = 862
5728                    ;  id_index := id_index + 1
5729                    ;info   862, 873
5730 0369 0ab1          incf    id_index,f
5731                    ; line_number = 863
5732                    ;  if id_index >= id.size start
5733                    ;info   863, 874
5734 036a 301b          movlw   27
5735 036b 0231          subwf   id_index,w
5736                    ; =>bit_code_emit@symbol(): sym=__c
5737                    ; 1TEST: Single test with code in skip slot
5738 036c 1803          btfsc   __c___byte, __c___bit
5739                    ; line_number = 864
5740                    ; id_index := id_index - 1
5741                    ;info   864, 877
5742 036d 03b1          decf    id_index,f
5743                    ; Recombine size1 = 0 || size2 = 0
5744                    ; line_number = 863
5745                    ;  if id_index >= id.size done
5746                    ; line_number = 865
5747                    ; state := state_echo_then_command
5748                    ;info   865, 878
5749 036e 3001          movlw   1
5750 036f 00b0          movwf   state
5751 0370 2b75          goto    uart_manage__32
5752                    ; line_number = 866
5753                    ; case 6
5754   0371 :   uart_manage__29:
5755                    ; # 1111 1110 (Id_Start):
5756                    ; line_number = 868
5757                    ;  id_index := 0
5758                    ;info   868, 881
5759 0371 01b1          clrf    id_index
5760 0372 2b75          goto    uart_manage__32
5761                    ; line_number = 869
5762                    ; case 7
5763   0373 :   uart_manage__30:
5764                    ; # 1111 1111 (Deselect):
5765                    ; line_number = 871
5766                    ;  _adden := _true
5767                    ;info   871, 883
5768 0373 1597          bsf     _adden___byte, _adden___bit
5769                    ; line_number = 872
5770                    ;  state := state_select_wait
5771                    ;info   872, 884
5772 0374 01b0          clrf    state
5773   0375 :   uart_manage__32:
5774                    ; line_number = 854
5775                    ;  switch command & 7 done
5776   0375 :   uart_manage__36:
5777                    ; line_number = 851
5778                    ;  switch (command >> 3) & 7 done
5779   0375 :   uart_manage__41:
5780                    ; line_number = 776
5781                    ;  switch command >> 6 done
5782 0375 2c0d          goto    uart_manage__68
5783                    ; line_number = 873
5784                    ; case 3
5785   0376 :   uart_manage__52:
5786                    ; # Value All Get 2nd response byte:
5787                    ; line_number = 875
5788                    ;  call uart_byte_put(middles[file24_index])
5789                    ;info   875, 886
5790 0376 082c          movf    file24_index,w
5791 0377 3e27          addlw   middles
5792 0378 0084          movwf   __fsr
5793 0379 1783          bsf     __irp___byte, __irp___bit
5794 037a 0800          movf    __indf,w
5795 037b 2479          call    uart_byte_put
5796                    ; line_number = 876
5797                    ;  state := state_file24_full_get2
5798                    ;info   876, 892
5799 037c 3004          movlw   4
5800 037d 00b0          movwf   state
5801 037e 2c0d          goto    uart_manage__68
5802                    ; line_number = 877
5803                    ; case 4
5804   037f :   uart_manage__53:
5805                    ; # Value All Get 3rd response byte:
5806                    ; line_number = 879
5807                    ;  call uart_byte_put(lows[file24_index])
5808                    ;info   879, 895
5809 037f 082c          movf    file24_index,w
5810 0380 3e2e          addlw   lows
5811 0381 0084          movwf   __fsr
5812 0382 1783          bsf     __irp___byte, __irp___bit
5813 0383 0800          movf    __indf,w
5814 0384 2479          call    uart_byte_put
5815                    ; line_number = 880
5816                    ;  state := state_echo_then_command
5817                    ;info   880, 901
5818 0385 3001          movlw   1
5819 0386 00b0          movwf   state
5820 0387 2c0d          goto    uart_manage__68
5821                    ; line_number = 881
5822                    ; case 5
5823   0388 :   uart_manage__54:
5824                    ; # Value All Set 2nd command byte:
5825                    ; line_number = 883
5826                    ;  high := command
5827                    ;info   883, 904
5828 0388 0843          movf    uart_manage__command,w
5829 0389 00a2          movwf   high
5830                    ; line_number = 884
5831                    ;  state := state_file24_full_set2
5832                    ;info   884, 906
5833 038a 3006          movlw   6
5834 038b 00b0          movwf   state
5835 038c 2c0d          goto    uart_manage__68
5836                    ; line_number = 885
5837                    ; case 6
5838   038d :   uart_manage__55:
5839                    ; # Value All Set 3rd command byte:
5840                    ; line_number = 887
5841                    ;  middle := command
5842                    ;info   887, 909
5843 038d 0843          movf    uart_manage__command,w
5844 038e 00a3          movwf   middle
5845                    ; line_number = 888
5846                    ;  state := state_file24_full_set3
5847                    ;info   888, 911
5848 038f 3007          movlw   7
5849 0390 00b0          movwf   state
5850 0391 2c0d          goto    uart_manage__68
5851                    ; line_number = 889
5852                    ; case 7
5853   0392 :   uart_manage__56:
5854                    ; # Value All Set 4th command byte:
5855                    ; line_number = 891
5856                    ;  highs[file24_index] := high
5857                    ;info   891, 914
5858                    ; index_fsr_first
5859 0392 082c          movf    file24_index,w
5860 0393 3e20          addlw   highs
5861 0394 0084          movwf   __fsr
5862 0395 1783          bsf     __irp___byte, __irp___bit
5863 0396 0822          movf    high,w
5864 0397 0080          movwf   __indf
5865                    ; line_number = 892
5866                    ;  middles[file24_index] := middle
5867                    ;info   892, 920
5868                    ; index_fsr_first
5869 0398 082c          movf    file24_index,w
5870 0399 3e27          addlw   middles
5871 039a 0084          movwf   __fsr
5872 039b 1783          bsf     __irp___byte, __irp___bit
5873 039c 0823          movf    middle,w
5874 039d 0080          movwf   __indf
5875                    ; line_number = 893
5876                    ;  lows[file24_index] := command
5877                    ;info   893, 926
5878                    ; index_fsr_first
5879 039e 082c          movf    file24_index,w
5880 039f 3e2e          addlw   lows
5881 03a0 0084          movwf   __fsr
5882 03a1 1783          bsf     __irp___byte, __irp___bit
5883 03a2 0843          movf    uart_manage__command,w
5884 03a3 0080          movwf   __indf
5885                    ; line_number = 894
5886                    ;  call file24_updated()
5887                    ;info   894, 932
5888 03a4 240e          call    file24_updated
5889                    ; line_number = 895
5890                    ;  state := state_command
5891                    ;info   895, 933
5892 03a5 3002          movlw   2
5893 03a6 00b0          movwf   state
5894 03a7 2c0d          goto    uart_manage__68
5895                    ; line_number = 896
5896                    ; case 8
5897   03a8 :   uart_manage__57:
5898                    ; # Value Low Set 2nd command byte:
5899                    ; line_number = 898
5900                    ;  lows[file24_index] := command
5901                    ;info   898, 936
5902                    ; index_fsr_first
5903 03a8 082c          movf    file24_index,w
5904 03a9 3e2e          addlw   lows
5905 03aa 0084          movwf   __fsr
5906 03ab 1783          bsf     __irp___byte, __irp___bit
5907 03ac 0843          movf    uart_manage__command,w
5908 03ad 0080          movwf   __indf
5909                    ; line_number = 899
5910                    ;  call file24_updated()
5911                    ;info   899, 942
5912 03ae 240e          call    file24_updated
5913                    ; line_number = 900
5914                    ;  state := state_command
5915                    ;info   900, 943
5916 03af 3002          movlw   2
5917 03b0 00b0          movwf   state
5918 03b1 2c0d          goto    uart_manage__68
5919                    ; line_number = 901
5920                    ; case 9
5921   03b2 :   uart_manage__58:
5922                    ; # Value Middle Set 2nd command byte:
5923                    ; line_number = 903
5924                    ;  middles[file24_index] := command
5925                    ;info   903, 946
5926                    ; index_fsr_first
5927 03b2 082c          movf    file24_index,w
5928 03b3 3e27          addlw   middles
5929 03b4 0084          movwf   __fsr
5930 03b5 1783          bsf     __irp___byte, __irp___bit
5931 03b6 0843          movf    uart_manage__command,w
5932 03b7 0080          movwf   __indf
5933                    ; line_number = 904
5934                    ;  call file24_updated()
5935                    ;info   904, 952
5936 03b8 240e          call    file24_updated
5937                    ; line_number = 905
5938                    ;  state := state_command
5939                    ;info   905, 953
5940 03b9 3002          movlw   2
5941 03ba 00b0          movwf   state
5942 03bb 2c0d          goto    uart_manage__68
5943                    ; line_number = 906
5944                    ; case 10
5945   03bc :   uart_manage__59:
5946                    ; # Value High Set 2nd command byte:
5947                    ; line_number = 908
5948                    ;  highs[file24_index] := command
5949                    ;info   908, 956
5950                    ; index_fsr_first
5951 03bc 082c          movf    file24_index,w
5952 03bd 3e20          addlw   highs
5953 03be 0084          movwf   __fsr
5954 03bf 1783          bsf     __irp___byte, __irp___bit
5955 03c0 0843          movf    uart_manage__command,w
5956 03c1 0080          movwf   __indf
5957                    ; line_number = 909
5958                    ;  call file24_updated()
5959                    ;info   909, 962
5960 03c2 240e          call    file24_updated
5961                    ; line_number = 910
5962                    ;  state := state_command
5963                    ;info   910, 963
5964 03c3 3002          movlw   2
5965 03c4 00b0          movwf   state
5966 03c5 2c0d          goto    uart_manage__68
5967                    ; line_number = 911
5968                    ; case 11
5969   03c6 :   uart_manage__60:
5970                    ; # File8 Set 2nd command byte:
5971                    ; line_number = 913
5972                    ;  file8[index] := command
5973                    ;info   913, 966
5974                    ; index_fsr_first
5975 03c6 0844          movf    uart_manage__index,w
5976 03c7 3e25          addlw   file8
5977 03c8 0084          movwf   __fsr
5978 03c9 1383          bcf     __irp___byte, __irp___bit
5979 03ca 0843          movf    uart_manage__command,w
5980 03cb 0080          movwf   __indf
5981                    ; line_number = 914
5982                    ;  switch index start
5983                    ;info   914, 972
5984                    ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=6
5985                    ; line_number = 922
5986                    ; case_maximum 7
5987 03cc 3003          movlw   uart_manage__45>>8
5988 03cd 008a          movwf   __pclath
5989 03ce 0844          movf    uart_manage__index,w
5990                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
5991 03cf 3ed1          addlw   uart_manage__45
5992 03d0 0082          movwf   __pcl
5993                    ; page_group 8
5994   03d1 :   uart_manage__45:
5995 03d1 2bd9          goto    uart_manage__42
5996 03d2 2be4          goto    uart_manage__46
5997 03d3 2bdb          goto    uart_manage__43
5998 03d4 2be4          goto    uart_manage__46
5999 03d5 2be4          goto    uart_manage__46
6000 03d6 2be4          goto    uart_manage__46
6001 03d7 2be4          goto    uart_manage__46
6002 03d8 2bde          goto    uart_manage__44
6003                    ; line_number = 915
6004                    ; case 0
6005   03d9 :   uart_manage__42:
6006                    ; line_number = 916
6007                    ; call configure_update()
6008                    ;info   916, 985
6009 03d9 2458          call    configure_update
6010 03da 2be4          goto    uart_manage__46
6011                    ; line_number = 917
6012                    ; case 2
6013   03db :   uart_manage__43:
6014                    ; line_number = 918
6015                    ; call speed_set(speed)
6016                    ;info   918, 987
6017 03db 0827          movf    speed,w
6018 03dc 249e          call    speed_set
6019 03dd 2be4          goto    uart_manage__46
6020                    ; line_number = 919
6021                    ; case 7
6022   03de :   uart_manage__44:
6023                    ; line_number = 920
6024                    ; if command > file24_size start
6025                    ;info   920, 990
6026 03de 3007          movlw   7
6027 03df 0243          subwf   uart_manage__command,w
6028 03e0 1903          btfsc   __z___byte, __z___bit
6029 03e1 1003          bcf     __c___byte, __c___bit
6030                    ; =>bit_code_emit@symbol(): sym=__c
6031                    ; 1TEST: Single test with code in skip slot
6032 03e2 1803          btfsc   __c___byte, __c___bit
6033                    ; line_number = 921
6034                    ; command := 0
6035                    ;info   921, 995
6036 03e3 01c3          clrf    uart_manage__command
6037                    ; Recombine size1 = 0 || size2 = 0
6038                    ; line_number = 920
6039                    ; if command > file24_size done
6040   03e4 :   uart_manage__46:
6041                    ; line_number = 914
6042                    ;  switch index done
6043                    ; line_number = 923
6044                    ; state:= state_command
6045                    ;info   923, 996
6046 03e4 3002          movlw   2
6047 03e5 00b0          movwf   state
6048 03e6 2c0d          goto    uart_manage__68
6049                    ; line_number = 924
6050                    ; case 14
6051   03e7 :   uart_manage__61:
6052                    ; # Ignore the echo and wait for the new address:
6053                    ; line_number = 926
6054                    ;  state := state_address_set2
6055                    ;info   926, 999
6056 03e7 300f          movlw   15
6057 03e8 00b0          movwf   state
6058 03e9 2c0d          goto    uart_manage__68
6059                    ; line_number = 927
6060                    ; case 15
6061   03ea :   uart_manage__62:
6062                    ; # First, copy of new address just arrived:
6063                    ; line_number = 929
6064                    ;  new_address := command
6065                    ;info   929, 1002
6066 03ea 0843          movf    uart_manage__command,w
6067 03eb 00ba          movwf   new_address
6068                    ; # Return it
6069                    ; line_number = 931
6070                    ;  call uart_byte_put(new_address)
6071                    ;info   931, 1004
6072 03ec 083a          movf    new_address,w
6073 03ed 2479          call    uart_byte_put
6074                    ; line_number = 932
6075                    ;  state := state_address_set3
6076                    ;info   932, 1006
6077 03ee 3010          movlw   16
6078 03ef 00b0          movwf   state
6079 03f0 2c0d          goto    uart_manage__68
6080                    ; line_number = 933
6081                    ; case 16
6082   03f1 :   uart_manage__63:
6083                    ; # Ignore the echo
6084                    ; line_number = 935
6085                    ;  state := state_address_set4
6086                    ;info   935, 1009
6087 03f1 3011          movlw   17
6088 03f2 00b0          movwf   state
6089 03f3 2c0d          goto    uart_manage__68
6090                    ; line_number = 936
6091                    ; case 17
6092   03f4 :   uart_manage__64:
6093                    ; # We have the 2nd copy of new addres.
6094                    ; line_number = 938
6095                    ;  if command = new_address start
6096                    ;info   938, 1012
6097                    ; Left minus Right
6098 03f4 083a          movf    new_address,w
6099 03f5 0243          subwf   uart_manage__command,w
6100                    ; =>bit_code_emit@symbol(): sym=__z
6101                    ; No 1TEST: true.size=6 false.size=1
6102                    ; No 2TEST: true.size=6 false.size=1
6103                    ; 2GOTO: Single test with two GOTO's
6104 03f6 1d03          btfss   __z___byte, __z___bit
6105 03f7 2bff          goto    uart_manage__47
6106                    ; # They match; write it in:
6107                    ; line_number = 940
6108                    ;  call rb2bus_eedata_write(new_address)
6109                    ;info   940, 1016
6110 03f8 083a          movf    new_address,w
6111 03f9 24d0          call    rb2bus_eedata_write
6112                    ; line_number = 941
6113                    ;  _gie := _true
6114                    ;info   941, 1018
6115 03fa 178b          bsf     _gie___byte, _gie___bit
6116                    ; line_number = 942
6117                    ;  address := new_address
6118                    ;info   942, 1019
6119 03fb 083a          movf    new_address,w
6120 03fc 00b9          movwf   address
6121                    ; line_number = 943
6122                    ;  call uart_byte_put(rb2_ok)
6123                    ;info   943, 1021
6124 03fd 30a5          movlw   165
6125 03fe 2c00          goto    uart_manage__48
6126                    ; 2GOTO: Starting code 2
6127   03ff :   uart_manage__47:
6128                    ; # They do not match, return an error:
6129                    ; line_number = 946
6130                    ;  call uart_byte_put(0)
6131                    ;info   946, 1023
6132 03ff 3000          movlw   0
6133   0400 :   uart_manage__48:
6134                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6135                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6136                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6137 0400 2479          call    uart_byte_put
6138                    ; line_number = 938
6139                    ;  if command = new_address done
6140                    ; line_number = 947
6141                    ; state := state_echo_then_command
6142                    ;info   947, 1025
6143 0401 3001          movlw   1
6144 0402 00b0          movwf   state
6145 0403 2c0d          goto    uart_manage__68
6146                    ; line_number = 948
6147                    ; case 18
6148   0404 :   uart_manage__65:
6149                    ; line_number = 949
6150                    ; call uart_byte_put(middle)
6151                    ;info   949, 1028
6152 0404 0823          movf    middle,w
6153 0405 2479          call    uart_byte_put
6154                    ; line_number = 950
6155                    ;  state := state_probe_get2
6156                    ;info   950, 1030
6157 0406 3013          movlw   19
6158 0407 00b0          movwf   state
6159 0408 2c0d          goto    uart_manage__68
6160                    ; line_number = 951
6161                    ; case 19
6162   0409 :   uart_manage__66:
6163                    ; line_number = 952
6164                    ; call uart_byte_put(low)
6165                    ;info   952, 1033
6166 0409 0824          movf    low,w
6167 040a 2479          call    uart_byte_put
6168                    ; line_number = 953
6169                    ;  state := state_echo_then_command
6170                    ;info   953, 1035
6171 040b 3001          movlw   1
6172 040c 00b0          movwf   state
6173            
6174            
6175            
6176   040d :   uart_manage__68:
6177                    ; line_number = 766
6178                    ;  switch state done
6179   040d :   uart_manage__69:
6180                    ; Recombine size1 = 0 || size2 = 0
6181                    ; line_number = 753
6182                    ;  if uart_input_count != 0 done
6183                    ; delay after procedure statements=non-uniform
6184                    ; Implied return
6185 040d 3400          retlw   0
6186            
6187            
6188            
6189            
6190                    ; line_number = 957
6191                    ;info   957, 1038
6192                    ; procedure file24_updated
6193   040e :   file24_updated:
6194                    ; arguments_none
6195                    ; line_number = 959
6196                    ;  returns_nothing
6197            
6198                    ; # This routine will cause the {file24_change} mask to be updated
6199                    ; # with the value that changed.
6200            
6201                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6202                    ; line_number = 964
6203                    ;  switch file24_index start
6204                    ;info   964, 1038
6205                    ; switch_before:(data:00=uu=>00 code:X0=cu=>X0) size=0
6206 040e 3004          movlw   file24_updated__12>>8
6207 040f 008a          movwf   __pclath
6208 0410 082c          movf    file24_index,w
6209                    ; switch after expression:(data:00=uu=>00 code:X0=cu=>X0)
6210 0411 3e13          addlw   file24_updated__12
6211 0412 0082          movwf   __pcl
6212                    ; page_group 6
6213   0413 :   file24_updated__12:
6214 0413 2c19          goto    file24_updated__6
6215 0414 2c1a          goto    file24_updated__7
6216 0415 2c1c          goto    file24_updated__8
6217 0416 2c1e          goto    file24_updated__9
6218 0417 2c20          goto    file24_updated__10
6219 0418 2c22          goto    file24_updated__11
6220                    ; line_number = 965
6221                    ; case 0
6222   0419 :   file24_updated__6:
6223                    ; line_number = 966
6224                    ; do_nothing
6225                    ;info   966, 1049
6226 0419 2c23          goto    file24_updated__13
6227                    ; line_number = 967
6228                    ; case 1
6229   041a :   file24_updated__7:
6230                    ; line_number = 968
6231                    ; file24_changed@target_index := _true
6232                    ;info   968, 1050
6233 00000020 = file24_updated__select__1___byte equ file24_changed
6234 00000001 = file24_updated__select__1___bit equ 1
6235 041a 14a0          bsf     file24_updated__select__1___byte, file24_updated__select__1___bit
6236 041b 2c23          goto    file24_updated__13
6237                    ; line_number = 969
6238                    ; case 2
6239   041c :   file24_updated__8:
6240                    ; line_number = 970
6241                    ; file24_changed@divisor_index := _true
6242                    ;info   970, 1052
6243 00000020 = file24_updated__select__2___byte equ file24_changed
6244 00000002 = file24_updated__select__2___bit equ 2
6245 041c 1520          bsf     file24_updated__select__2___byte, file24_updated__select__2___bit
6246                    ; # Changing the divisor will cause kp, ki, and kd to be updated:
6247 041d 2c23          goto    file24_updated__13
6248                    ; line_number = 972
6249                    ; case 3
6250   041e :   file24_updated__9:
6251                    ; line_number = 973
6252                    ; file24_changed@kp_index := _true
6253                    ;info   973, 1054
6254 00000020 = file24_updated__select__3___byte equ file24_changed
6255 00000003 = file24_updated__select__3___bit equ 3
6256 041e 15a0          bsf     file24_updated__select__3___byte, file24_updated__select__3___bit
6257 041f 2c23          goto    file24_updated__13
6258                    ; line_number = 974
6259                    ; case 4
6260   0420 :   file24_updated__10:
6261                    ; line_number = 975
6262                    ; file24_changed@ki_index := _true
6263                    ;info   975, 1056
6264 00000020 = file24_updated__select__4___byte equ file24_changed
6265 00000004 = file24_updated__select__4___bit equ 4
6266 0420 1620          bsf     file24_updated__select__4___byte, file24_updated__select__4___bit
6267 0421 2c23          goto    file24_updated__13
6268                    ; line_number = 976
6269                    ; case 5
6270   0422 :   file24_updated__11:
6271                    ; line_number = 977
6272                    ; file24_changed@kd_index := _true
6273                    ;info   977, 1058
6274 00000020 = file24_updated__select__5___byte equ file24_changed
6275 00000005 = file24_updated__select__5___bit equ 5
6276 0422 16a0          bsf     file24_updated__select__5___byte, file24_updated__select__5___bit
6277            
6278            
6279   0423 :   file24_updated__13:
6280                    ; line_number = 964
6281                    ;  switch file24_index done
6282                    ; delay after procedure statements=non-uniform
6283                    ; Implied return
6284 0423 3400          retlw   0
6285            
6286            
6287            
6288            
6289 00000048 = file24_float_convert__0return equ globals___0+40
6290                    ; line_number = 980
6291                    ;info   980, 1060
6292                    ; procedure file24_float_convert
6293   0424 :   file24_float_convert:
6294                    ; Last argument is sitting in W; save into argument variable
6295 0424 00c6          movwf   file24_float_convert__index
6296                    ; delay=4294967295
6297                    ; line_number = 981
6298                    ; argument index byte
6299 00000046 = file24_float_convert__index equ globals___0+38
6300                    ; line_number = 982
6301                    ;  returns float32
6302            
6303                    ; # This routine will return {file24}[{index}] as a {float32}.
6304            
6305                    ; line_number = 986
6306                    ;  local mask byte
6307 00000045 = file24_float_convert__mask equ globals___0+37
6308            
6309                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6310                    ; line_number = 988
6311                    ;  high := highs[index]
6312                    ;info   988, 1061
6313 0425 0846          movf    file24_float_convert__index,w
6314 0426 3e20          addlw   highs
6315 0427 0084          movwf   __fsr
6316 0428 1783          bsf     __irp___byte, __irp___bit
6317 0429 0800          movf    __indf,w
6318 042a 00a2          movwf   high
6319                    ; line_number = 989
6320                    ;  middle := middles[index]
6321                    ;info   989, 1067
6322 042b 0846          movf    file24_float_convert__index,w
6323 042c 3e27          addlw   middles
6324 042d 0084          movwf   __fsr
6325 042e 1783          bsf     __irp___byte, __irp___bit
6326 042f 0800          movf    __indf,w
6327 0430 00a3          movwf   middle
6328                    ; line_number = 990
6329                    ;  low := lows[index]
6330                    ;info   990, 1073
6331 0431 0846          movf    file24_float_convert__index,w
6332 0432 3e2e          addlw   lows
6333 0433 0084          movwf   __fsr
6334 0434 1783          bsf     __irp___byte, __irp___bit
6335 0435 0800          movf    __indf,w
6336 0436 00a4          movwf   low
6337                    ; line_number = 991
6338                    ;  mask := index2mask[index]
6339                    ;info   991, 1079
6340 0437 0846          movf    file24_float_convert__index,w
6341 0438 2515          call    index2mask
6342 0439 00c5          movwf   file24_float_convert__mask
6343                    ; line_number = 992
6344                    ;  if high = 0 && middle = 0 && low = 0 start
6345                    ;info   992, 1082
6346                    ; Left minus Right
6347 043a 0822          movf    high,w
6348                    ; =>bit_code_emit@symbol(): sym=__z
6349                    ; No 1TEST: true.size=11 false.size=1
6350                    ; No 2TEST: true.size=11 false.size=1
6351                    ; 2GOTO: Single test with two GOTO's
6352 043b 1d03          btfss   __z___byte, __z___bit
6353 043c 2c46          goto    file24_float_convert__1
6354                    ; Left minus Right
6355 043d 0823          movf    middle,w
6356                    ; =>bit_code_emit@symbol(): sym=__z
6357                    ; No 1TEST: true.size=8 false.size=1
6358                    ; No 2TEST: true.size=8 false.size=1
6359                    ; 2GOTO: Single test with two GOTO's
6360 043e 1d03          btfss   __z___byte, __z___bit
6361 043f 2c46          goto    file24_float_convert__1
6362                    ; &&||: index=2 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
6363                    ; Left minus Right
6364 0440 0824          movf    low,w
6365                    ; =>bit_code_emit@symbol(): sym=__z
6366                    ; No 1TEST: true.size=2 false.size=2
6367                    ; No 2TEST: true.size=2 false.size=2
6368                    ; 2GOTO: Single test with two GOTO's
6369 0441 1d03          btfss   __z___byte, __z___bit
6370 0442 2c46          goto    file24_float_convert__2
6371                    ; line_number = 993
6372                    ; file24_zero := file24_zero | mask
6373                    ;info   993, 1091
6374 0443 0845          movf    file24_float_convert__mask,w
6375 0444 04a1          iorwf   file24_zero,f
6376 0445 2c48          goto    file24_float_convert__3
6377                    ; 2GOTO: Starting code 2
6378   0446 :   file24_float_convert__2:
6379   0446 :   file24_float_convert__1:
6380                    ; line_number = 995
6381                    ; file24_zero := file24_zero & (mask ^ 0xff)
6382                    ;info   995, 1094
6383 0446 0945          comf    file24_float_convert__mask,w
6384 0447 05a1          andwf   file24_zero,f
6385   0448 :   file24_float_convert__3:
6386                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
6387                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
6388                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6389                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
6390                    ; &&||:: index=1 new_delay=4294967295 goto_delay=4294967295
6391                    ; Recombine code1_bit_states != code2_bit_states
6392                    ; 2GOTO: No goto needed; true= false=file24_float_convert__1 true_size=8 false_size=1
6393                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6394                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
6395                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6396                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
6397                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
6398                    ; Recombine code1_bit_states != code2_bit_states
6399                    ; 2GOTO: No goto needed; true= false=file24_float_convert__1 true_size=11 false_size=1
6400                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6401                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
6402                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6403                    ; line_number = 992
6404                    ;  if high = 0 && middle = 0 && low = 0 done
6405                    ; line_number = 996
6406                    ; return xyz(high, middle, low) start
6407                    ; line_number = 996
6408                    ;info   996, 1096
6409 0448 0822          movf    high,w
6410 0449 00d3          movwf   xyz__high
6411 044a 0823          movf    middle,w
6412 044b 00d4          movwf   xyz__middle
6413 044c 0824          movf    low,w
6414 044d 24f0          call    xyz
6415 044e 302b          movlw   xyz__0return>>1
6416 044f 158a          bsf     __cb0___byte, __cb0___bit
6417 0450 1683          bsf     __rp0___byte, __rp0___bit
6418 0451 22d8          call    _float32_pointer_load
6419 0452 3024          movlw   file24_float_convert__0return>>1
6420 0453 2337          call    _float32_pointer_store
6421 0454 1283          bcf     __rp0___byte, __rp0___bit
6422 0455 118a          bcf     __cb0___byte, __cb0___bit
6423 0456 0008          return  
6424                    ; line_number = 996
6425                    ; return xyz(high, middle, low) done
6426            
6427            
6428                    ; delay after procedure statements=non-uniform
6429            
6430            
6431            
6432            
6433                    ; line_number = 999
6434                    ;info   999, 1111
6435                    ; procedure status_update
6436   0457 :   status_update:
6437                    ; arguments_none
6438                    ; line_number = 1001
6439                    ;  returns_nothing
6440            
6441                    ; # This routine will cause {status} to be updated.
6442            
6443                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6444                    ; line_number = 1005
6445                    ;  do_nothing
6446                    ;info   1005, 1111
6447            
6448                    ; delay after procedure statements=non-uniform
6449                    ; Implied return
6450 0457 3400          retlw   0
6451            
6452            
6453            
6454            
6455                    ; line_number = 1007
6456                    ;info   1007, 1112
6457                    ; procedure configure_update
6458   0458 :   configure_update:
6459                    ; arguments_none
6460                    ; line_number = 1009
6461                    ;  returns_nothing
6462            
6463                    ; line_number = 1011
6464                    ;  local index byte
6465 0000004c = configure_update__index equ globals___0+44
6466                    ; line_number = 1012
6467                    ;  local state byte
6468 0000004d = configure_update__state equ globals___0+45
6469            
6470                    ; # This routine will read {configure} and process it:
6471            
6472                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6473                    ; line_number = 1016
6474                    ;  index := 0
6475                    ;info   1016, 1112
6476 0458 01cc          clrf    configure_update__index
6477                    ; line_number = 1017
6478                    ;  while index < 32 start
6479   0459 :   configure_update__1:
6480                    ;info   1017, 1113
6481 0459 3020          movlw   32
6482 045a 024c          subwf   configure_update__index,w
6483                    ; =>bit_code_emit@symbol(): sym=__c
6484                    ; No 1TEST: true.size=0 false.size=27
6485                    ; No 2TEST: true.size=0 false.size=27
6486                    ; 1GOTO: Single test with GOTO
6487 045b 1803          btfsc   __c___byte, __c___bit
6488 045c 2c78          goto    configure_update__6
6489                    ; line_number = 1018
6490                    ; state := states[index]
6491                    ;info   1018, 1117
6492 045d 084c          movf    configure_update__index,w
6493 045e 2544          call    states
6494 045f 00cd          movwf   configure_update__state
6495                    ; line_number = 1019
6496                    ;  if position_reverse start
6497                    ;info   1019, 1120
6498                    ; =>bit_code_emit@symbol(): sym=position_reverse
6499                    ; No 1TEST: true.size=14 false.size=0
6500                    ; No 2TEST: true.size=14 false.size=0
6501                    ; 1GOTO: Single test with GOTO
6502 0460 1ca5          btfss   position_reverse___byte, position_reverse___bit
6503 0461 2c70          goto    configure_update__5
6504                    ; # Swap the increment and decrement bits in {xstates}:
6505                    ; line_number = 1021
6506                    ;  state := state & 0xf | (state << 2) & 0xc0 | (state >> 2) & 0x30
6507                    ;info   1021, 1122
6508 00000061 = configure_update__2 equ globals___0+65
6509 0462 300f          movlw   15
6510 0463 054d          andwf   configure_update__state,w
6511 0464 00e1          movwf   configure_update__2
6512 00000062 = configure_update__3 equ globals___0+66
6513 0465 0d4d          rlf     configure_update__state,w
6514 0466 00e2          movwf   configure_update__3
6515 0467 0d62          rlf     configure_update__3,w
6516 0468 39c0          andlw   192
6517 0469 04e1          iorwf   configure_update__2,f
6518 00000063 = configure_update__4 equ globals___0+67
6519 046a 0c4d          rrf     configure_update__state,w
6520 046b 00e3          movwf   configure_update__4
6521 046c 0c63          rrf     configure_update__4,w
6522 046d 3930          andlw   48
6523 046e 0461          iorwf   configure_update__2,w
6524 046f 00cd          movwf   configure_update__state
6525                    ; Recombine size1 = 0 || size2 = 0
6526   0470 :   configure_update__5:
6527                    ; line_number = 1019
6528                    ;  if position_reverse done
6529                    ; line_number = 1022
6530                    ; xstates[index] := state
6531                    ;info   1022, 1136
6532                    ; index_fsr_first
6533 0470 084c          movf    configure_update__index,w
6534 0471 3e36          addlw   xstates
6535 0472 0084          movwf   __fsr
6536 0473 1783          bsf     __irp___byte, __irp___bit
6537 0474 084d          movf    configure_update__state,w
6538 0475 0080          movwf   __indf
6539                    ; line_number = 1023
6540                    ;  index := index + 1
6541                    ;info   1023, 1142
6542 0476 0acc          incf    configure_update__index,f
6543            
6544            
6545 0477 2c59          goto    configure_update__1
6546   0478 :   configure_update__6:
6547                    ; Recombine size1 = 0 || size2 = 0
6548                    ; line_number = 1017
6549                    ;  while index < 32 done
6550                    ; delay after procedure statements=non-uniform
6551                    ; Implied return
6552 0478 3400          retlw   0
6553            
6554            
6555            
6556            
6557                    ; line_number = 1026
6558                    ;info   1026, 1145
6559                    ; procedure uart_byte_put
6560   0479 :   uart_byte_put:
6561                    ; Last argument is sitting in W; save into argument variable
6562 0479 00ce          movwf   uart_byte_put__value
6563                    ; delay=4294967295
6564                    ; line_number = 1027
6565                    ; argument value byte
6566 0000004e = uart_byte_put__value equ globals___0+46
6567                    ; line_number = 1028
6568                    ;  returns_nothing
6569            
6570                    ; # This routine will send {value} to the bus.
6571            
6572                    ; # Wait until {_txreg} is ready for a value:
6573                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6574                    ; line_number = 1033
6575                    ;  while !_txif start
6576   047a :   uart_byte_put__1:
6577                    ;info   1033, 1146
6578                    ; =>bit_code_emit@symbol(): sym=_txif
6579                    ; 1TEST: Single test with code in skip slot
6580 047a 1c8c          btfss   _txif___byte, _txif___bit
6581                    ; line_number = 1034
6582                    ; do_nothing
6583                    ;info   1034, 1147
6584            
6585 047b 2c7a          goto    uart_byte_put__1
6586                    ; Recombine size1 = 0 || size2 = 0
6587                    ; line_number = 1033
6588                    ;  while !_txif done
6589                    ; # Ship {value} out to the bus with 9th bit turned off:
6590                    ; line_number = 1037
6591                    ;  _adden := _false
6592                    ;info   1037, 1148
6593 047c 1197          bcf     _adden___byte, _adden___bit
6594                    ; line_number = 1038
6595                    ;  _tx9d := _false
6596                    ;info   1038, 1149
6597 047d 1016          bcf     _tx9d___byte, _tx9d___bit
6598                    ; line_number = 1039
6599                    ;  _txreg := value
6600                    ;info   1039, 1150
6601 047e 084e          movf    uart_byte_put__value,w
6602 047f 0095          movwf   _txreg
6603            
6604            
6605                    ; delay after procedure statements=non-uniform
6606                    ; Implied return
6607 0480 3400          retlw   0
6608            
6609            
6610            
6611            
6612                    ; line_number = 1042
6613                    ;info   1042, 1153
6614                    ; procedure uart_initialize
6615   0481 :   uart_initialize:
6616                    ; arguments_none
6617                    ; line_number = 1044
6618                    ;  returns_nothing
6619            
6620                    ; # This procedure is responsibile for initializing the UART
6621                    ; # connected to the bus.  This code is currently specific to
6622                    ; # the PIC16F688.
6623            
6624                    ; #FIXME: Use {rx_bit} and {tx_bit}!!!
6625            
6626                    ; # Warm up the UART:
6627                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6628                    ; line_number = 1053
6629                    ;  _trisc@5 := _true
6630                    ;info   1053, 1153
6631 00000087 = uart_initialize__select__1___byte equ _trisc
6632 00000005 = uart_initialize__select__1___bit equ 5
6633 0481 1683          bsf     __rp0___byte, __rp0___bit
6634 0482 1687          bsf     uart_initialize__select__1___byte, uart_initialize__select__1___bit
6635                    ; line_number = 1054
6636                    ;  _trisc@4 := _true
6637                    ;info   1054, 1155
6638 00000087 = uart_initialize__select__2___byte equ _trisc
6639 00000004 = uart_initialize__select__2___bit equ 4
6640 0483 1607          bsf     uart_initialize__select__2___byte, uart_initialize__select__2___bit
6641            
6642                    ; # Initialize the {_txsta} register:
6643                    ; line_number = 1057
6644                    ;  _txsta := 0
6645                    ;info   1057, 1156
6646 0484 1283          bcf     __rp0___byte, __rp0___bit
6647 0485 0196          clrf    _txsta
6648                    ; line_number = 1058
6649                    ;  _tx9 := _true
6650                    ;info   1058, 1158
6651 0486 1716          bsf     _tx9___byte, _tx9___bit
6652                    ; line_number = 1059
6653                    ;  _txen := _true
6654                    ;info   1059, 1159
6655 0487 1696          bsf     _txen___byte, _txen___bit
6656                    ; line_number = 1060
6657                    ;  _brgh := _true
6658                    ;info   1060, 1160
6659 0488 1516          bsf     _brgh___byte, _brgh___bit
6660            
6661                    ; # Initialize the {_rcsta} register:
6662                    ; line_number = 1063
6663                    ;  _rcsta := 0
6664                    ;info   1063, 1161
6665 0489 0197          clrf    _rcsta
6666                    ; line_number = 1064
6667                    ;  _spen := _true
6668                    ;info   1064, 1162
6669 048a 1797          bsf     _spen___byte, _spen___bit
6670                    ; line_number = 1065
6671                    ;  _rx9 := _true
6672                    ;info   1065, 1163
6673 048b 1717          bsf     _rx9___byte, _rx9___bit
6674                    ; line_number = 1066
6675                    ;  _cren := _true
6676                    ;info   1066, 1164
6677 048c 1617          bsf     _cren___byte, _cren___bit
6678                    ; line_number = 1067
6679                    ;  _adden := _true
6680                    ;info   1067, 1165
6681 048d 1597          bsf     _adden___byte, _adden___bit
6682            
6683                    ; # Set up the baud rate generator:
6684                    ; line_number = 1070
6685                    ;  _baudctl := 0
6686                    ;info   1070, 1166
6687 048e 0191          clrf    _baudctl
6688                    ; line_number = 1071
6689                    ;  _brg16 := _true
6690                    ;info   1071, 1167
6691 048f 1591          bsf     _brg16___byte, _brg16___bit
6692                    ; line_number = 1072
6693                    ;  _spbrg := _eusart_500000_low
6694                    ;info   1072, 1168
6695 0490 3009          movlw   9
6696 0491 0093          movwf   _spbrg
6697                    ; line_number = 1073
6698                    ;  _spbrgh := _eusart_500000_high
6699                    ;info   1073, 1170
6700 0492 0192          clrf    _spbrgh
6701            
6702                    ; line_number = 1075
6703                    ;  state := state_select_wait
6704                    ;info   1075, 1171
6705 0493 01b0          clrf    state
6706                    ; line_number = 1076
6707                    ;  id_index := 0
6708                    ;info   1076, 1172
6709 0494 01b1          clrf    id_index
6710                    ; line_number = 1077
6711                    ;  uart_input_in_index := 0
6712                    ;info   1077, 1173
6713 0495 01b6          clrf    uart_input_in_index
6714                    ; line_number = 1078
6715                    ;  uart_input_out_index := 0
6716                    ;info   1078, 1174
6717 0496 01b7          clrf    uart_input_out_index
6718                    ; line_number = 1079
6719                    ;  uart_input_count := 0
6720                    ;info   1079, 1175
6721 0497 01b8          clrf    uart_input_count
6722                    ; line_number = 1080
6723                    ;  uart_input_pending := _false
6724                    ;info   1080, 1176
6725 0498 106f          bcf     uart_input_pending___byte, uart_input_pending___bit
6726            
6727                    ; # Turn on the interrupts:
6728                    ; line_number = 1083
6729                    ;  _txie := _false
6730                    ;info   1083, 1177
6731 0499 1683          bsf     __rp0___byte, __rp0___bit
6732 049a 108c          bcf     _txie___byte, _txie___bit
6733                    ; line_number = 1084
6734                    ;  _rcie := _true
6735                    ;info   1084, 1179
6736 049b 168c          bsf     _rcie___byte, _rcie___bit
6737            
6738            
6739                    ; delay after procedure statements=non-uniform
6740 049c 1283          bcf     __rp0___byte, __rp0___bit
6741                    ; Implied return
6742 049d 3400          retlw   0
6743            
6744            
6745            
6746            
6747                    ; line_number = 1087
6748                    ;info   1087, 1182
6749                    ; procedure speed_set
6750   049e :   speed_set:
6751                    ; Last argument is sitting in W; save into argument variable
6752 049e 00cf          movwf   speed_set__speed
6753                    ; delay=4294967295
6754                    ; line_number = 1088
6755                    ; argument speed byte
6756 0000004f = speed_set__speed equ globals___0+47
6757                    ; line_number = 1089
6758                    ;  returns_nothing
6759            
6760                    ; # This procedure will set {motor1_speed}, {motor1_on_mask}, and
6761                    ; # {motor1_pulse_width} from {speed}.
6762            
6763                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6764                    ; line_number = 1094
6765                    ;  motor1_speed := speed
6766                    ;info   1094, 1183
6767 049f 084f          movf    speed_set__speed,w
6768 04a0 00ad          movwf   motor1_speed
6769                    ; line_number = 1095
6770                    ;  if motor1_speed@7 start
6771                    ;info   1095, 1185
6772 0000002d = speed_set__select__4___byte equ motor1_speed
6773 00000007 = speed_set__select__4___bit equ 7
6774                    ; =>bit_code_emit@symbol(): sym=speed_set__select__4
6775                    ; No 1TEST: true.size=8 false.size=14
6776                    ; No 2TEST: true.size=8 false.size=14
6777                    ; 2GOTO: Single test with two GOTO's
6778 04a1 1fad          btfss   speed_set__select__4___byte, speed_set__select__4___bit
6779 04a2 2cac          goto    speed_set__5
6780                    ; # Reverse direction:
6781                    ; line_number = 1097
6782                    ;  if motor_reverse start
6783                    ;info   1097, 1187
6784                    ; =>bit_code_emit@symbol(): sym=motor_reverse
6785                    ; No 1TEST: true.size=1 false.size=1
6786                    ; 2TEST: two tests with code in both delay slots
6787 04a3 1825          btfsc   motor_reverse___byte, motor_reverse___bit
6788                    ; line_number = 1098
6789                    ; motor1_on_mask := 1
6790                    ;info   1098, 1188
6791 04a4 3001          movlw   1
6792 04a5 1c25          btfss   motor_reverse___byte, motor_reverse___bit
6793                    ; line_number = 1100
6794                    ; motor1_on_mask := 2
6795                    ;info   1100, 1190
6796 04a6 3002          movlw   2
6797 04a7 00ae          movwf   motor1_on_mask
6798                    ; line_number = 1097
6799                    ;  if motor_reverse done
6800                    ; line_number = 1101
6801                    ; motor1_pulse_width := speed << 1
6802                    ;info   1101, 1192
6803 04a8 0d4f          rlf     speed_set__speed,w
6804 04a9 00af          movwf   motor1_pulse_width
6805 04aa 102f          bcf     motor1_pulse_width, 0
6806                    ; Recombine code1_bit_states != code2_bit_states
6807 04ab 2cba          goto    speed_set__6
6808                    ; 2GOTO: Starting code 2
6809   04ac :   speed_set__5:
6810                    ; line_number = 1103
6811                    ; if speed = 0 start
6812                    ;info   1103, 1196
6813                    ; Left minus Right
6814 04ac 084f          movf    speed_set__speed,w
6815                    ; =>bit_code_emit@symbol(): sym=__z
6816                    ; No 1TEST: true.size=1 false.size=5
6817                    ; No 2TEST: true.size=1 false.size=5
6818                    ; 2GOTO: Single test with two GOTO's
6819 04ad 1d03          btfss   __z___byte, __z___bit
6820 04ae 2cb1          goto    speed_set__1
6821                    ; # Stopped
6822                    ; line_number = 1105
6823                    ;  motor1_on_mask := 0
6824                    ;info   1105, 1199
6825 04af 01ae          clrf    motor1_on_mask
6826 04b0 2cb6          goto    speed_set__2
6827                    ; 2GOTO: Starting code 2
6828   04b1 :   speed_set__1:
6829                    ; # Forward direction:
6830                    ; line_number = 1108
6831                    ;  if motor_reverse start
6832                    ;info   1108, 1201
6833                    ; =>bit_code_emit@symbol(): sym=motor_reverse
6834                    ; No 1TEST: true.size=1 false.size=1
6835                    ; 2TEST: two tests with code in both delay slots
6836 04b1 1825          btfsc   motor_reverse___byte, motor_reverse___bit
6837                    ; line_number = 1109
6838                    ; motor1_on_mask := 2
6839                    ;info   1109, 1202
6840 04b2 3002          movlw   2
6841 04b3 1c25          btfss   motor_reverse___byte, motor_reverse___bit
6842                    ; line_number = 1111
6843                    ; motor1_on_mask := 1
6844                    ;info   1111, 1204
6845 04b4 3001          movlw   1
6846 04b5 00ae          movwf   motor1_on_mask
6847                    ; line_number = 1108
6848                    ;  if motor_reverse done
6849   04b6 :   speed_set__2:
6850                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
6851                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
6852                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6853                    ; line_number = 1103
6854                    ; if speed = 0 done
6855                    ; line_number = 1112
6856                    ; motor1_pulse_width := 0xff - (speed << 1)
6857                    ;info   1112, 1206
6858 00000064 = speed_set__3 equ globals___0+68
6859 04b6 0d4f          rlf     speed_set__speed,w
6860 04b7 39fe          andlw   254
6861 04b8 3cff          sublw   255
6862 04b9 00af          movwf   motor1_pulse_width
6863            
6864            
6865   04ba :   speed_set__6:
6866                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
6867                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6868                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
6869                    ; line_number = 1095
6870                    ;  if motor1_speed@7 done
6871                    ; delay after procedure statements=non-uniform
6872                    ; Implied return
6873 04ba 3400          retlw   0
6874            
6875            
6876            
6877            
6878                    ; # FIXME: These two routines are directly copied from rb2_pic16f688.ucl
6879                    ; # and should be included via a library command.   Alas, the rb2_pic16f688.ucl
6880                    ; # library also include rb2bus.ucl, which we do not want!!!
6881            
6882                    ; line_number = 1119
6883                    ; constant rb2bus_eedata_address = 0xfe
6884 000000fe = rb2bus_eedata_address equ 254
6885            
6886                    ; line_number = 1121
6887                    ;info   1121, 1211
6888                    ; procedure rb2bus_eedata_read
6889   04bb :   rb2bus_eedata_read:
6890                    ; arguments_none
6891                    ; line_number = 1123
6892                    ;  returns byte
6893            
6894                    ; # This procedure will return the address stored in EEData.  If
6895                    ; # there is no data, 0 is returned.
6896            
6897                    ; line_number = 1128
6898                    ;  local temp1 byte
6899 00000050 = rb2bus_eedata_read__temp1 equ globals___0+48
6900                    ; line_number = 1129
6901                    ;  local temp2 byte
6902 00000051 = rb2bus_eedata_read__temp2 equ globals___0+49
6903            
6904                    ; # Read the first byte (the address):
6905                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
6906                    ; line_number = 1132
6907                    ;  _eecon1 := 0
6908                    ;info   1132, 1211
6909 04bb 1683          bsf     __rp0___byte, __rp0___bit
6910 04bc 019c          clrf    _eecon1
6911                    ; line_number = 1133
6912                    ;  _eeadr := rb2bus_eedata_address
6913                    ;info   1133, 1213
6914 04bd 30fe          movlw   254
6915 04be 009b          movwf   _eeadr
6916                    ; line_number = 1134
6917                    ;  _rd := _true
6918                    ;info   1134, 1215
6919 04bf 141c          bsf     _rd___byte, _rd___bit
6920                    ; line_number = 1135
6921                    ;  temp1 := _eedat
6922                    ;info   1135, 1216
6923 04c0 081a          movf    _eedat,w
6924 04c1 1283          bcf     __rp0___byte, __rp0___bit
6925 04c2 00d0          movwf   rb2bus_eedata_read__temp1
6926            
6927                    ; # Read the second byte (the 1'z complement)
6928                    ; line_number = 1138
6929                    ;  _eeadr := _eeadr + 1
6930                    ;info   1138, 1219
6931 04c3 1683          bsf     __rp0___byte, __rp0___bit
6932 04c4 0a9b          incf    _eeadr,f
6933                    ; line_number = 1139
6934                    ;  _rd := _true
6935                    ;info   1139, 1221
6936 04c5 141c          bsf     _rd___byte, _rd___bit
6937                    ; line_number = 1140
6938                    ;  temp2 := _eedat
6939                    ;info   1140, 1222
6940 04c6 081a          movf    _eedat,w
6941 04c7 1283          bcf     __rp0___byte, __rp0___bit
6942 04c8 00d1          movwf   rb2bus_eedata_read__temp2
6943            
6944                    ; # If they are 1's complement of one another, they are valid:
6945                    ; line_number = 1143
6946                    ;  if temp1 = (0xff ^ temp2) start
6947                    ;info   1143, 1225
6948                    ; Left minus Right
6949 04c9 0951          comf    rb2bus_eedata_read__temp2,w
6950 04ca 0250          subwf   rb2bus_eedata_read__temp1,w
6951                    ; =>bit_code_emit@symbol(): sym=__z
6952                    ; No 1TEST: true.size=2 false.size=0
6953                    ; No 2TEST: true.size=2 false.size=0
6954                    ; 1GOTO: Single test with GOTO
6955 04cb 1d03          btfss   __z___byte, __z___bit
6956 04cc 2ccf          goto    rb2bus_eedata_read__1
6957                    ; # Return the valid address:
6958                    ; line_number = 1145
6959                    ;  return temp1 start
6960                    ; line_number = 1145
6961                    ;info   1145, 1229
6962 04cd 0850          movf    rb2bus_eedata_read__temp1,w
6963 04ce 0008          return  
6964                    ; line_number = 1145
6965                    ;  return temp1 done
6966            
6967                    ; Recombine size1 = 0 || size2 = 0
6968   04cf :   rb2bus_eedata_read__1:
6969                    ; line_number = 1143
6970                    ;  if temp1 = (0xff ^ temp2) done
6971                    ; # They are not 1's complement, so return 0 as an error:
6972                    ; line_number = 1148
6973                    ;  return 0 start
6974                    ; line_number = 1148
6975                    ;info   1148, 1231
6976 04cf 3400          retlw   0
6977                    ; line_number = 1148
6978                    ;  return 0 done
6979            
6980            
6981                    ; delay after procedure statements=non-uniform
6982            
6983            
6984            
6985            
6986                    ; line_number = 1151
6987                    ;info   1151, 1232
6988                    ; procedure rb2bus_eedata_write
6989   04d0 :   rb2bus_eedata_write:
6990                    ; Last argument is sitting in W; save into argument variable
6991 04d0 00d2          movwf   rb2bus_eedata_write__address
6992                    ; delay=4294967295
6993                    ; line_number = 1152
6994                    ; argument address byte
6995 00000052 = rb2bus_eedata_write__address equ globals___0+50
6996                    ; line_number = 1153
6997                    ;  returns_nothing
6998            
6999                    ; # This procedure will write {address} into the EEData.  The
7000                    ; # microcontroller pauses while the EEData is written.
7001            
7002                    ; # Clear out the {_eecon1} register
7003                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
7004                    ; line_number = 1159
7005                    ;  _eecon1 := 0
7006                    ;info   1159, 1233
7007 04d1 1683          bsf     __rp0___byte, __rp0___bit
7008 04d2 019c          clrf    _eecon1
7009                    ; line_number = 1160
7010                    ;  _eeadr := rb2bus_eedata_address
7011                    ;info   1160, 1235
7012 04d3 30fe          movlw   254
7013 04d4 009b          movwf   _eeadr
7014                    ; line_number = 1161
7015                    ;  _eedat := address
7016                    ;info   1161, 1237
7017 04d5 1283          bcf     __rp0___byte, __rp0___bit
7018 04d6 0852          movf    rb2bus_eedata_write__address,w
7019 04d7 1683          bsf     __rp0___byte, __rp0___bit
7020 04d8 009a          movwf   _eedat
7021            
7022                    ; # Write 2 bytes ({address} followed by {address}^0xff):
7023                    ; line_number = 1164
7024                    ;  loop_exactly 2 start
7025                    ;info   1164, 1241
7026 00000065 = rb2bus_eedata_write__1 equ globals___0+69
7027 04d9 3002          movlw   2
7028 04da 1283          bcf     __rp0___byte, __rp0___bit
7029 04db 00e5          movwf   rb2bus_eedata_write__1
7030   04dc :   rb2bus_eedata_write__2:
7031                    ; # Set the data to write:
7032            
7033                    ; # Set up the for the write:
7034                    ; line_number = 1168
7035                    ;  _wren := _true
7036                    ;info   1168, 1244
7037 04dc 1683          bsf     __rp0___byte, __rp0___bit
7038 04dd 151c          bsf     _wren___byte, _wren___bit
7039                    ; line_number = 1169
7040                    ;  _gie := _false
7041                    ;info   1169, 1246
7042 04de 138b          bcf     _gie___byte, _gie___bit
7043                    ; line_number = 1170
7044                    ;  _eecon2 := 0x55
7045                    ;info   1170, 1247
7046 04df 3055          movlw   85
7047 04e0 009d          movwf   _eecon2
7048                    ; line_number = 1171
7049                    ;  _eecon2 := 0xaa
7050                    ;info   1171, 1249
7051 04e1 30aa          movlw   170
7052 04e2 009d          movwf   _eecon2
7053                    ; # Start the write:
7054                    ; line_number = 1173
7055                    ;  _wr := _true
7056                    ;info   1173, 1251
7057 04e3 149c          bsf     _wr___byte, _wr___bit
7058            
7059                    ; # Wait for write to complete:
7060                    ; line_number = 1176
7061                    ;  while _wr start
7062   04e4 :   rb2bus_eedata_write__3:
7063                    ;info   1176, 1252
7064                    ; =>bit_code_emit@symbol(): sym=_wr
7065                    ; 1TEST: Single test with code in skip slot
7066 04e4 189c          btfsc   _wr___byte, _wr___bit
7067                    ; line_number = 1177
7068                    ; do_nothing
7069                    ;info   1177, 1253
7070            
7071 04e5 2ce4          goto    rb2bus_eedata_write__3
7072                    ; Recombine size1 = 0 || size2 = 0
7073                    ; line_number = 1176
7074                    ;  while _wr done
7075                    ; # Disable writing:
7076                    ; line_number = 1180
7077                    ;  _wren := _false
7078                    ;info   1180, 1254
7079 04e6 111c          bcf     _wren___byte, _wren___bit
7080            
7081                    ; # Prepare the second byte of data:
7082                    ; line_number = 1183
7083                    ;  _eeadr := _eeadr + 1
7084                    ;info   1183, 1255
7085 04e7 0a9b          incf    _eeadr,f
7086                    ; line_number = 1184
7087                    ;  _eedat := address ^ 0xff
7088                    ;info   1184, 1256
7089 04e8 1283          bcf     __rp0___byte, __rp0___bit
7090 04e9 0952          comf    rb2bus_eedata_write__address,w
7091 04ea 1683          bsf     __rp0___byte, __rp0___bit
7092 04eb 009a          movwf   _eedat
7093            
7094            
7095 04ec 1283          bcf     __rp0___byte, __rp0___bit
7096                    ; line_number = 1164
7097                    ;  loop_exactly 2 wrap-up
7098 04ed 0be5          decfsz  rb2bus_eedata_write__1,f
7099 04ee 2cdc          goto    rb2bus_eedata_write__2
7100                    ; line_number = 1164
7101                    ;  loop_exactly 2 done
7102                    ; delay after procedure statements=non-uniform
7103                    ; Implied return
7104 04ef 3400          retlw   0
7105            
7106            
7107            
7108            
7109                    ; # 24-bit convert to from float code:
7110 00000056 = xyz__0return equ globals___0+54
7111                    ; line_number = 1188
7112                    ;info   1188, 1264
7113                    ; procedure xyz
7114   04f0 :   xyz:
7115                    ; Last argument is sitting in W; save into argument variable
7116 04f0 00d5          movwf   xyz__low
7117                    ; delay=4294967295
7118                    ; line_number = 1189
7119                    ; argument high byte
7120 00000053 = xyz__high equ globals___0+51
7121                    ; line_number = 1190
7122                    ; argument middle byte
7123 00000054 = xyz__middle equ globals___0+52
7124                    ; line_number = 1191
7125                    ; argument low byte
7126 00000055 = xyz__low equ globals___0+53
7127                    ; line_number = 1192
7128                    ;  returns float32
7129                    ; line_number = 1193
7130                    ;  return_suppress
7131            
7132                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
7133                    ; line_number = 1195
7134                    ;  assemble
7135                    ;info   1195, 1265
7136                    ; # Grab the high byte:
7137                    ; line_number = 1197
7138                    ;info   1197, 1265
7139 04f1 0853          movf    xyz__high,w
7140                    ; line_number = 1198
7141                    ;info   1198, 1266
7142                    ; databank xyz, _float32_aargb0
7143 04f2 1683          bsf     __rp0___byte, __rp0___bit
7144                    ; line_number = 1199
7145                    ;info   1199, 1267
7146 04f3 00a7          movwf   _float32_aargb0
7147            
7148                    ; # Grab the middle byte:
7149                    ; line_number = 1202
7150                    ;info   1202, 1268
7151                    ; databank _float32_aargb0, xyz
7152 04f4 1283          bcf     __rp0___byte, __rp0___bit
7153                    ; line_number = 1203
7154                    ;info   1203, 1269
7155 04f5 0854          movf    xyz__middle,w
7156                    ; line_number = 1204
7157                    ;info   1204, 1270
7158                    ; databank xyz, _float32_aargb1
7159 04f6 1683          bsf     __rp0___byte, __rp0___bit
7160                    ; line_number = 1205
7161                    ;info   1205, 1271
7162 04f7 00a6          movwf   _float32_aargb1
7163            
7164                    ; # Grab the low byte:
7165                    ; line_number = 1208
7166                    ;info   1208, 1272
7167                    ; databank _float32_aargb1, xyz
7168 04f8 1283          bcf     __rp0___byte, __rp0___bit
7169                    ; line_number = 1209
7170                    ;info   1209, 1273
7171 04f9 0855          movf    xyz__low,w
7172                    ; line_number = 1210
7173                    ;info   1210, 1274
7174                    ; databank xyz, _float32_aargb2
7175 04fa 1683          bsf     __rp0___byte, __rp0___bit
7176                    ; line_number = 1211
7177                    ;info   1211, 1275
7178 04fb 00a5          movwf   _float32_aargb2
7179            
7180                    ; # Do the conversion to float32:
7181                    ; line_number = 1214
7182                    ;info   1214, 1276
7183                    ; databank _float32_aargb2, _float32_from_integer24
7184                    ; line_number = 1215
7185                    ;info   1215, 1276
7186                    ; codebank xyz, _float32_from_integer24
7187 04fc 158a          bsf     __cb0___byte, __cb0___bit
7188                    ; line_number = 1216
7189                    ;info   1216, 1277
7190 04fd 2000          call    _float32_from_integer24
7191            
7192                    ; # Result is in the float32 A "register"l not move to 0return:
7193                    ; line_number = 1219
7194                    ;info   1219, 1278
7195 04fe 302b          movlw   xyz__0return>>1
7196                    ; line_number = 1220
7197                    ;info   1220, 1279
7198                    ; databank _float32_from_integer24, _float32_pointer_store
7199                    ; line_number = 1221
7200                    ;info   1221, 1279
7201                    ; codebank _float32_from_integer24, _float32_pointer_store
7202                    ; line_number = 1222
7203                    ;info   1222, 1279
7204 04ff 2337          call    _float32_pointer_store
7205            
7206                    ; # Get out code and data banks back home:
7207                    ; line_number = 1225
7208                    ;info   1225, 1280
7209                    ; databank _float32_pointer_store, xyz
7210 0500 1283          bcf     __rp0___byte, __rp0___bit
7211                    ; line_number = 1226
7212                    ;info   1226, 1281
7213                    ; codebank _float32_pointer_store, xyz
7214 0501 118a          bcf     __cb0___byte, __cb0___bit
7215                    ; line_number = 1227
7216                    ;info   1227, 1282
7217 0502 0008          return  
7218            
7219                    ; delay after procedure statements=non-uniform
7220                    ; Return instruction suppressed by 'return_suppress'
7221            
7222            
7223            
7224            
7225                    ; # 24-bit convert to from float code:
7226                    ; line_number = 1230
7227                    ;info   1230, 1283
7228                    ; procedure zyx
7229   0503 :   zyx:
7230                    ; line_number = 1231
7231                    ; argument value float32
7232 0000005a = zyx__value equ globals___0+58
7233                    ; line_number = 1232
7234                    ;  returns byte
7235                    ; line_number = 1233
7236                    ;  return_suppress
7237            
7238                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
7239                    ; line_number = 1235
7240                    ;  assemble
7241                    ;info   1235, 1283
7242                    ; line_number = 1236
7243                    ;info   1236, 1283
7244 0503 302d          movlw   zyx__value>>1
7245                    ; line_number = 1237
7246                    ;info   1237, 1284
7247                    ; databank zyx, _float32_pointer_load
7248 0504 1683          bsf     __rp0___byte, __rp0___bit
7249                    ; line_number = 1238
7250                    ;info   1238, 1285
7251                    ; codebank zyx, _float32_pointer_load
7252 0505 158a          bsf     __cb0___byte, __cb0___bit
7253                    ; line_number = 1239
7254                    ;info   1239, 1286
7255 0506 22d8          call    _float32_pointer_load
7256            
7257                    ; line_number = 1241
7258                    ;info   1241, 1287
7259                    ; databank _float32_pointer_load, _float32_integer24_convert
7260                    ; line_number = 1242
7261                    ;info   1242, 1287
7262                    ; codebank _float32_pointer_load, _float32_integer24_convert
7263                    ; line_number = 1243
7264                    ;info   1243, 1287
7265 0507 208d          call    _float32_integer24_convert
7266                    ; line_number = 1244
7267                    ;info   1244, 1288
7268                    ; codebank _float32_integer24_convert, zyx
7269 0508 118a          bcf     __cb0___byte, __cb0___bit
7270            
7271                    ; line_number = 1246
7272                    ;info   1246, 1289
7273                    ; databank _float32_integer24_convert, _float32_aargb0
7274                    ; line_number = 1247
7275                    ;info   1247, 1289
7276 0509 0827          movf    _float32_aargb0,w
7277                    ; line_number = 1248
7278                    ;info   1248, 1290
7279                    ; databank _float32_aargb0, high
7280 050a 1283          bcf     __rp0___byte, __rp0___bit
7281                    ; line_number = 1249
7282                    ;info   1249, 1291
7283 050b 00a2          movwf   high
7284            
7285                    ; line_number = 1251
7286                    ;info   1251, 1292
7287                    ; databank high, _float32_aargb1
7288 050c 1683          bsf     __rp0___byte, __rp0___bit
7289                    ; line_number = 1252
7290                    ;info   1252, 1293
7291 050d 0826          movf    _float32_aargb1,w
7292                    ; line_number = 1253
7293                    ;info   1253, 1294
7294                    ; databank _float32_aargb0, middle
7295 050e 1283          bcf     __rp0___byte, __rp0___bit
7296                    ; line_number = 1254
7297                    ;info   1254, 1295
7298 050f 00a3          movwf   middle
7299            
7300                    ; line_number = 1256
7301                    ;info   1256, 1296
7302                    ; databank middle, _float32_aargb2
7303 0510 1683          bsf     __rp0___byte, __rp0___bit
7304                    ; line_number = 1257
7305                    ;info   1257, 1297
7306 0511 0825          movf    _float32_aargb2,w
7307                    ; line_number = 1258
7308                    ;info   1258, 1298
7309                    ; databank _float32_aargb0, low
7310 0512 1283          bcf     __rp0___byte, __rp0___bit
7311                    ; line_number = 1259
7312                    ;info   1259, 1299
7313 0513 00a4          movwf   low
7314            
7315                    ; line_number = 1261
7316                    ;info   1261, 1300
7317                    ; databank low, zyx
7318            
7319                    ; line_number = 1263
7320                    ;info   1263, 1300
7321 0514 0008          return  
7322            
7323            
7324            
7325                    ; delay after procedure statements=non-uniform
7326                    ; Return instruction suppressed by 'return_suppress'
7327            
7328            
7329            
7330            
7331                    ; line_number = 1267
7332                    ; string index2mask = "\1,2,4,8,16,32,64,128\" start
7333                    ; index2mask = '\1,2,4,8,16\ @\128\'
7334   0515 :   index2mask:
7335                    ; Temporarily save index into FSR
7336 0515 0084          movwf   __fsr
7337                    ; Initialize PCLATH to point to this code page
7338 0516 3005          movlw   index2mask___base>>8
7339 0517 008a          movwf   __pclath
7340                    ; Restore index from FSR
7341 0518 0804          movf    __fsr,w
7342 0519 3e1b          addlw   index2mask___base
7343                    ; Index to the correct return value
7344 051a 0082          movwf   __pcl
7345                    ; page_group 8
7346   051b :   index2mask___base:
7347 051b 3401          retlw   1
7348 051c 3402          retlw   2
7349 051d 3404          retlw   4
7350 051e 3408          retlw   8
7351 051f 3410          retlw   16
7352 0520 3420          retlw   32
7353 0521 3440          retlw   64
7354 0522 3480          retlw   128
7355                    ; line_number = 1267
7356                    ; string index2mask = "\1,2,4,8,16,32,64,128\" start
7357                    ; line_number = 1268
7358                    ; string id = "\16,0,21,1,3,13\MidiMotor1E-A\7\Gramson" start
7359                    ; id = '\16,0,21,1,3,13\MidiMotor1E-A\7\Gramson'
7360   0523 :   id:
7361                    ; Temporarily save index into FSR
7362 0523 0084          movwf   __fsr
7363                    ; Initialize PCLATH to point to this code page
7364 0524 3005          movlw   id___base>>8
7365 0525 008a          movwf   __pclath
7366                    ; Restore index from FSR
7367 0526 0804          movf    __fsr,w
7368 0527 3e29          addlw   id___base
7369                    ; Index to the correct return value
7370 0528 0082          movwf   __pcl
7371                    ; page_group 27
7372   0529 :   id___base:
7373 0529 3410          retlw   16
7374 052a 3400          retlw   0
7375 052b 3415          retlw   21
7376 052c 3401          retlw   1
7377 052d 3403          retlw   3
7378 052e 340d          retlw   13
7379 052f 344d          retlw   77
7380 0530 3469          retlw   105
7381 0531 3464          retlw   100
7382 0532 3469          retlw   105
7383 0533 344d          retlw   77
7384 0534 346f          retlw   111
7385 0535 3474          retlw   116
7386 0536 346f          retlw   111
7387 0537 3472          retlw   114
7388 0538 3431          retlw   49
7389 0539 3445          retlw   69
7390 053a 342d          retlw   45
7391 053b 3441          retlw   65
7392 053c 3407          retlw   7
7393 053d 3447          retlw   71
7394 053e 3472          retlw   114
7395 053f 3461          retlw   97
7396 0540 346d          retlw   109
7397 0541 3473          retlw   115
7398 0542 346f          retlw   111
7399 0543 346e          retlw   110
7400                    ; line_number = 1268
7401                    ; string id = "\16,0,21,1,3,13\MidiMotor1E-A\7\Gramson" start
7402            
7403                    ; # {state} is defined by another file:
7404                    ; line_number = 1271
7405                    ; library states entered
7406            
7407                    ; # Copyright (c) 2009 by Wayne C. Gramlich
7408                    ; # All rights reserved
7409            
7410                    ; # A quadrature encoder is a state machine that cycles through
7411                    ; # 4 states in the following possible cycle:
7412                    ; #
7413                    ; #     00 <=> 01
7414                    ; #     ^      ^
7415                    ; #     |      |
7416                    ; #     v      v
7417                    ; #     10 <=> 11
7418                    ; #
7419                    ; # This is also known as a 2-bit Gray code.  The bit on the left
7420                    ; # is called the A channel and the bit on the right is called the
7421                    ; # B channel.  Typically, a counter is incremented for each
7422                    ; # clockwise state transistion and decremented for each counter
7423                    ; # clockwise transistion.  The following state transistions show the
7424                    ; # counter increments and decrements:
7425                    ; #
7426                    ; #  00 => 01 => 11 => 10 => 00 => 01 => 00 => 10 => 00
7427                    ; #     +1    +1    +1    +1    +1    -1    -1    +1
7428                    ; #   0     1     2     3     4     5     4     3     4 
7429                    ; #
7430                    ; # Quadrature encoding does not allow two state transitions:
7431                    ; #
7432                    ; #     00 <=> 11   and    01 <=> 10
7433                    ; #
7434                    ; # because it is ambigous whether or not to increment or decrement
7435                    ; # the counter.  None-the-less, sometimes such a state transition
7436                    ; # occurs by accident.  The solution is to double the number of states
7437                    ; # from 4 to 8 and remember whether or not the last operation was an
7438                    ; # increment or a decrement.  Thus, the 8 new states are {+00},
7439                    ; # {+01}, {+11}, {+10}, {-00}, {-01}, {-11}, and {-11}.  If the
7440                    ; # Current state is {+01} and the new inputs are 11, then the new
7441                    ; # state is {+11} and the counter is incremented.  If the current
7442                    ; # state is {+01} and the new inputs are 00, the next state is {-00}
7443                    ; # and the counter is decremented; we changed from {+} to {-}.
7444                    ; # Lastly, if we are in the state {+01} and the new inputs are 10,
7445                    ; # we have an illegal/ambiguous transition that is resolved by
7446                    ; # transitioning to {+10} and incrementing the counter by 2.
7447                    ; # 
7448                    ; # This file contains the state transition table between all 8 of
7449                    ; # these states along with the operations to perform.  It a table
7450                    ; # that is 32 bytes long.   The current 8-bit state is concatenated
7451                    ; # with two bits of input (for a total of 5 bits).  This 5 bit
7452                    ; # quantity indexes into a 32 byte table (2^5=32) to determine the
7453                    ; # new state and whether to incement or decrement the counter by 1
7454                    ; # or 2.  The index is constructed as follows:
7455                    ; # 
7456                    ; #     ABmab
7457                    ; # 
7458                    ; # where {A} and {B} are the new inputs, and {m}, {a] and {b}
7459                    ; # are the current 8-bit state, where m=0 for + and m=1 for -.
7460                    ; # where {A} and {B} are the new inputs, and {m}, {a] and {b}
7461                    ; # Each entry in the table looks as follows:
7462                    ; # 
7463                    ; #     iIdD 0mab
7464                    ; # 
7465                    ; # where {i} means increment by 1, and {I} means increment by 2,
7466                    ; # where {d} means decrement by 1, and {D} means decrement by 2,
7467                    ; # and {mab} is the new state.
7468                    ; # 
7469                    ; # Here is the {state vector}:
7470            
7471                    ; # [0= 00 000]: 0=0000 0000 0=>0
7472                    ; # [1= 00 001]: 32=0010 0000 1=>0
7473                    ; # [2= 00 010]: 128=1000 0000 3=>0
7474                    ; # [3= 00 011]: 192=1100 0000 2=>0
7475                    ; # [4= 00 100]: 4=0000 0100 0=>0
7476                    ; # [5= 00 101]: 36=0010 0100 1=>0
7477                    ; # [6= 00 110]: 132=1000 0100 3=>0
7478                    ; # [7= 00 111]: 52=0011 0100 2=>0
7479                    ; # [8= 01 000]: 129=1000 0001 0=>1
7480                    ; # [9= 01 001]: 1=0000 0001 1=>1
7481                    ; # [10= 01 010]: 193=1100 0001 3=>1
7482                    ; # [11= 01 011]: 33=0010 0001 2=>1
7483                    ; # [12= 01 100]: 133=1000 0101 0=>1
7484                    ; # [13= 01 101]: 5=0000 0101 1=>1
7485                    ; # [14= 01 110]: 53=0011 0101 3=>1
7486                    ; # [15= 01 111]: 37=0010 0101 2=>1
7487                    ; # [16= 10 000]: 34=0010 0010 0=>3
7488                    ; # [17= 10 001]: 194=1100 0010 1=>3
7489                    ; # [18= 10 010]: 2=0000 0010 3=>3
7490                    ; # [19= 10 011]: 130=1000 0010 2=>3
7491                    ; # [20= 10 100]: 38=0010 0110 0=>3
7492                    ; # [21= 10 101]: 54=0011 0110 1=>3
7493                    ; # [22= 10 110]: 6=0000 0110 3=>3
7494                    ; # [23= 10 111]: 134=1000 0110 2=>3
7495                    ; # [24= 11 000]: 195=1100 0011 0=>2
7496                    ; # [25= 11 001]: 131=1000 0011 1=>2
7497                    ; # [26= 11 010]: 35=0010 0011 3=>2
7498                    ; # [27= 11 011]: 3=0000 0011 2=>2
7499                    ; # [28= 11 100]: 55=0011 0111 0=>2
7500                    ; # [29= 11 101]: 135=1000 0111 1=>2
7501                    ; # [30= 11 110]: 39=0010 0111 3=>2
7502                    ; # [31= 11 111]: 7=0000 0111 2=>2
7503                    ; buffer = 'states'
7504                    ; line_number = 99
7505                    ; string states = "\0,32,128,192,4,36,132,52,129,1,193,33,133,5,53,37,34,194,2,130,38,54,6,134,195,131,35,3,55,135,39,7\" start
7506                    ; states = '\0\ \128,192,4\_\132\4\129,1,193\!\133,5\5%"\194,2,130\&6\6,134,195,131\#\3\7\135,39,7\'
7507   0544 :   states:
7508                    ; Temporarily save index into FSR
7509 0544 0084          movwf   __fsr
7510                    ; Initialize PCLATH to point to this code page
7511 0545 3005          movlw   states___base>>8
7512 0546 008a          movwf   __pclath
7513                    ; Restore index from FSR
7514 0547 0804          movf    __fsr,w
7515 0548 3e4a          addlw   states___base
7516                    ; Index to the correct return value
7517 0549 0082          movwf   __pcl
7518                    ; page_group 32
7519   054a :   states___base:
7520 054a 3400          retlw   0
7521 054b 3420          retlw   32
7522 054c 3480          retlw   128
7523 054d 34c0          retlw   192
7524 054e 3404          retlw   4
7525 054f 3424          retlw   36
7526 0550 3484          retlw   132
7527 0551 3434          retlw   52
7528 0552 3481          retlw   129
7529 0553 3401          retlw   1
7530 0554 34c1          retlw   193
7531 0555 3421          retlw   33
7532 0556 3485          retlw   133
7533 0557 3405          retlw   5
7534 0558 3435          retlw   53
7535 0559 3425          retlw   37
7536 055a 3422          retlw   34
7537 055b 34c2          retlw   194
7538 055c 3402          retlw   2
7539 055d 3482          retlw   130
7540 055e 3426          retlw   38
7541 055f 3436          retlw   54
7542 0560 3406          retlw   6
7543 0561 3486          retlw   134
7544 0562 34c3          retlw   195
7545 0563 3483          retlw   131
7546 0564 3423          retlw   35
7547 0565 3403          retlw   3
7548 0566 3437          retlw   55
7549 0567 3487          retlw   135
7550 0568 3427          retlw   39
7551 0569 3407          retlw   7
7552                    ; line_number = 99
7553                    ; string states = "\0,32,128,192,4,36,132,52,129,1,193,33,133,5,53,37,34,194,2,130,38,54,6,134,195,131,35,3,55,135,39,7\" start
7554            
7555                    ; buffer = 'midimotor1e'
7556                    ; line_number = 1271
7557                    ; library states exited
7558            
7559            
7560            
7561                    ; Code bank 1; Start address: 2048; End address: 4095
7562   0800 :           org     2048
7563                    ; Appending 27 delayed procedures to code bank 1
7564                    ; buffer = '_float32_base'
7565                    ; line_number = 374
7566                    ;info   374, 2048
7567                    ; procedure _float32_from_integer24
7568   0800 :   _float32_from_integer24:
7569                    ; arguments_none
7570                    ; line_number = 376
7571                    ;  returns_nothing
7572                    ; line_number = 377
7573                    ;  return_suppress
7574            
7575                    ; # Integer to float conversion
7576                    ; # Input: 24 bit 2's complement integer right justified in
7577                    ; #        _FLOAT32_AARGB0, _FLOAT32_AARGB1, _FLOAT32_AARGB2
7578                    ; # Use: call flo2432()
7579                    ; # Output: 32 bit floating point number in _float32_aexp, _FLOAT32_AARGB0, _FLOAT32_AARGB1, _FLOAT32_AARGB2
7580                    ; # Result: _FLOAT32_AARG  <--  FLOAT( _FLOAT32_AARG )
7581                    ; # Max Timing:	14+90 = 104 clks	SAT = 0
7582                    ; #			14+96 = 110 clks	SAT = 1
7583                    ; # Min Timing:	6+28 = 34 clks		_FLOAT32_AARG = 0
7584                    ; #			6+18 = 24 clks
7585                    ; # PM: 14+38 = 52	DM: 7
7586            
7587                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
7588                    ; line_number = 391
7589                    ;  assemble
7590                    ;info   391, 2048
7591                    ; line_number = 392
7592   0800 :   _float32_flo32:
7593                    ; # initialize exponent and add bias
7594                    ; line_number = 394
7595                    ;info   394, 2048
7596 0800 3096          movlw   _float32_expbias_23
7597                    ; line_number = 395
7598                    ;info   395, 2049
7599 0801 00a8          movwf   _float32_exp
7600                    ; line_number = 396
7601                    ;info   396, 2050
7602 0802 01a9          clrf    _float32_sign
7603                    ; # test sign
7604                    ; line_number = 398
7605                    ;info   398, 2051
7606 0803 1fa7          btfss   _float32_aargb0, _float32_msb
7607                    ; line_number = 399
7608                    ;info   399, 2052
7609 0804 280e          goto    _float32_normalize
7610                    ; # if < 0, negate and set MSB in _float32_sign
7611                    ; line_number = 401
7612                    ;info   401, 2053
7613 0805 09a5          comf    _float32_aargb2,f
7614                    ; line_number = 402
7615                    ;info   402, 2054
7616 0806 09a6          comf    _float32_aargb1,f
7617                    ; line_number = 403
7618                    ;info   403, 2055
7619 0807 09a7          comf    _float32_aargb0,f
7620                    ; line_number = 404
7621                    ;info   404, 2056
7622 0808 0aa5          incf    _float32_aargb2,f
7623                    ; line_number = 405
7624                    ;info   405, 2057
7625 0809 1903          btfsc   _float32_status, _float32_z
7626                    ; line_number = 406
7627                    ;info   406, 2058
7628 080a 0aa6          incf    _float32_aargb1,f
7629                    ; line_number = 407
7630                    ;info   407, 2059
7631 080b 1903          btfsc   _float32_status, _float32_z
7632                    ; line_number = 408
7633                    ;info   408, 2060
7634 080c 0aa7          incf    _float32_aargb0,f
7635                    ; line_number = 409
7636                    ;info   409, 2061
7637 080d 17a9          bsf     _float32_sign, _float32_msb
7638                    ; # Note that this procedure runs into _float_normalize
7639                    ; #goto _float_normalize
7640            
7641            
7642                    ; delay after procedure statements=non-uniform
7643                    ; Return instruction suppressed by 'return_suppress'
7644            
7645            
7646            
7647            
7648                    ; line_number = 414
7649                    ;info   414, 2062
7650                    ; procedure _float32_normalize
7651   080e :   _float32_normalize:
7652                    ; arguments_none
7653                    ; line_number = 416
7654                    ;  returns_nothing
7655                    ; line_number = 417
7656                    ;  return_suppress
7657            
7658                    ; # Normalization routine
7659                    ; # Input:  32 bit unnormalized floating point number in
7660                    ; #         _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2, with sign in _float32_sign msb
7661                    ; # Use: call _float32_normalize()
7662                    ; # Output: 32 bit normalized floating point number in
7663                    ; #         _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
7664                    ; # Result: _FLOAT32_AARG  <--  NORMALIZE( _FLOAT32_AARG )
7665                    ; # Max Timing:	21+6+7*8+7 = 90 clks	SAT = 0
7666                    ; #			21+6+7*8+1+12 = 96 clks	SAT = 1
7667                    ; # Min Timing:	22+6 = 28 clks		_FLOAT32_AARG = 0
7668                    ; #			5+9+4 = 18 clks
7669                    ; # PM: 38	DM: 7
7670            
7671                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
7672                    ; line_number = 432
7673                    ;  assemble
7674                    ;info   432, 2062
7675                    ; #:nrm3232
7676                    ; line_number = 434
7677   080e :   _float32_nrm32:
7678                    ; # lear exponent decrement
7679                    ; line_number = 436
7680                    ;info   436, 2062
7681 080e 01b3          clrf    _float32_temp
7682                    ; # test if highbyte=0
7683                    ; line_number = 438
7684                    ;info   438, 2063
7685 080f 0827          movf    _float32_aargb0,w
7686                    ; line_number = 439
7687                    ;info   439, 2064
7688 0810 1d03          btfss   _float32_status, _float32_z
7689                    ; line_number = 440
7690                    ;info   440, 2065
7691 0811 2823          goto    _float32_norm3232
7692                    ; # if so, shift 8 bits by move
7693                    ; line_number = 442
7694                    ;info   442, 2066
7695 0812 0826          movf    _float32_aargb1,w
7696                    ; line_number = 443
7697                    ;info   443, 2067
7698 0813 00a7          movwf   _float32_aargb0
7699                    ; line_number = 444
7700                    ;info   444, 2068
7701 0814 0825          movf    _float32_aargb2,w
7702                    ; line_number = 445
7703                    ;info   445, 2069
7704 0815 00a6          movwf   _float32_aargb1
7705                    ; line_number = 446
7706                    ;info   446, 2070
7707 0816 01a5          clrf    _float32_aargb2
7708                    ; # increase decrement by 8
7709                    ; line_number = 448
7710                    ;info   448, 2071
7711 0817 15b3          bsf     _float32_temp, 3
7712            
7713                    ; # test if highbyte=0
7714                    ; line_number = 451
7715                    ;info   451, 2072
7716 0818 0827          movf    _float32_aargb0,w
7717                    ; line_number = 452
7718                    ;info   452, 2073
7719 0819 1d03          btfss   _float32_status, _float32_z
7720                    ; line_number = 453
7721                    ;info   453, 2074
7722 081a 2823          goto    _float32_norm3232
7723                    ; # if so, shift 8 bits by move
7724                    ; line_number = 455
7725                    ;info   455, 2075
7726 081b 0826          movf    _float32_aargb1,w
7727                    ; line_number = 456
7728                    ;info   456, 2076
7729 081c 00a7          movwf   _float32_aargb0
7730                    ; line_number = 457
7731                    ;info   457, 2077
7732 081d 01a6          clrf    _float32_aargb1
7733                    ; # increase decrement by 8
7734                    ; line_number = 459
7735                    ;info   459, 2078
7736 081e 11b3          bcf     _float32_temp, 3
7737                    ; line_number = 460
7738                    ;info   460, 2079
7739 081f 1633          bsf     _float32_temp, 4
7740            
7741                    ; # if highbyte=0, result=0
7742                    ; line_number = 463
7743                    ;info   463, 2080
7744 0820 0827          movf    _float32_aargb0,w
7745                    ; line_number = 464
7746                    ;info   464, 2081
7747 0821 1903          btfsc   _float32_status, _float32_z
7748                    ; line_number = 465
7749                    ;info   465, 2082
7750 0822 2834          goto    _float32_res032
7751            
7752                    ; line_number = 467
7753   0823 :   _float32_norm3232:
7754                    ; line_number = 468
7755                    ;info   468, 2083
7756 0823 0833          movf    _float32_temp,w
7757                    ; line_number = 469
7758                    ;info   469, 2084
7759 0824 02a8          subwf   _float32_exp,f
7760                    ; line_number = 470
7761                    ;info   470, 2085
7762 0825 1d03          btfss   _float32_status, _float32_z
7763                    ; line_number = 471
7764                    ;info   471, 2086
7765 0826 1c03          btfss   _float32_status, _float32_c
7766                    ; line_number = 472
7767                    ;info   472, 2087
7768 0827 2a3f          goto    _float32_setfun32
7769            
7770                    ; # clear carry bit
7771                    ; line_number = 475
7772                    ;info   475, 2088
7773 0828 1003          bcf     _float32_status, _float32_c
7774            
7775                    ; line_number = 477
7776   0829 :   _float32_norm3232a:
7777                    ; # if MSB=1, normalization done
7778                    ; line_number = 479
7779                    ;info   479, 2089
7780 0829 1ba7          btfsc   _float32_aargb0, _float32_msb
7781                    ; line_number = 480
7782                    ;info   480, 2090
7783 082a 2831          goto    _float32_fixsign32
7784                    ; # otherwise, shift left and
7785                    ; line_number = 482
7786                    ;info   482, 2091
7787 082b 0da5          rlf     _float32_aargb2,f
7788                    ; # decrement exp
7789                    ; line_number = 484
7790                    ;info   484, 2092
7791 082c 0da6          rlf     _float32_aargb1,f
7792                    ; line_number = 485
7793                    ;info   485, 2093
7794 082d 0da7          rlf     _float32_aargb0,f
7795                    ; line_number = 486
7796                    ;info   486, 2094
7797 082e 0ba8          decfsz  _float32_exp,f
7798                    ; line_number = 487
7799                    ;info   487, 2095
7800 082f 2829          goto    _float32_norm3232a
7801            
7802                    ; # underflow if exp=0
7803                    ; line_number = 490
7804                    ;info   490, 2096
7805 0830 2a3f          goto    _float32_setfun32
7806            
7807                    ; line_number = 492
7808   0831 :   _float32_fixsign32:
7809                    ; line_number = 493
7810                    ;info   493, 2097
7811 0831 1fa9          btfss   _float32_sign, _float32_msb
7812                    ; # clear explicit MSB if positive
7813                    ; line_number = 495
7814                    ;info   495, 2098
7815 0832 13a7          bcf     _float32_aargb0, _float32_msb
7816                    ; line_number = 496
7817                    ;info   496, 2099
7818 0833 3400          retlw   0
7819            
7820                    ; # result equals zero
7821                    ; line_number = 499
7822   0834 :   _float32_res032:
7823                    ; line_number = 500
7824                    ;info   500, 2100
7825 0834 01a7          clrf    _float32_aargb0
7826                    ; line_number = 501
7827                    ;info   501, 2101
7828 0835 01a6          clrf    _float32_aargb1
7829                    ; line_number = 502
7830                    ;info   502, 2102
7831 0836 01a5          clrf    _float32_aargb2
7832                    ; line_number = 503
7833                    ;info   503, 2103
7834 0837 01a4          clrf    _float32_aargb3
7835                    ; line_number = 504
7836                    ;info   504, 2104
7837 0838 01a8          clrf    _float32_exp
7838                    ; line_number = 505
7839                    ;info   505, 2105
7840 0839 3400          retlw   0
7841            
7842            
7843                    ; delay after procedure statements=non-uniform
7844                    ; Return instruction suppressed by 'return_suppress'
7845            
7846            
7847            
7848            
7849                    ; line_number = 508
7850                    ;info   508, 2106
7851                    ; procedure _float32_from_integer32
7852   083a :   _float32_from_integer32:
7853                    ; arguments_none
7854                    ; line_number = 510
7855                    ;  returns_nothing
7856                    ; line_number = 511
7857                    ;  return_suppress
7858            
7859                    ; # Integer to float conversion
7860                    ; # Input:  32 bit 2's complement integer right justified in
7861                    ; #          _float32_aargb0, _float32_aargb1, _float32_aargb2, _float32_aargb3
7862                    ; # Use: call flo3232()
7863                    ; # Output: 32 bit floating point number in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
7864                    ; # Result: _FLOAT32_AARG  <--  FLOAT( _FLOAT32_AARG )
7865                    ; # Max Timing:	17+112 = 129 clks	RND = 0
7866                    ; #			17+128 = 145 clks	RND = 1, SAT = 0
7867                    ; #			17+135 = 152 clks	RND = 1, SAT = 1
7868                    ; # Min Timing:	6+39 = 45 clks		_FLOAT32_AARG = 0
7869                    ; #			6+22 = 28 clks
7870                    ; # PM: 17+66 = 83	DM: 8
7871            
7872                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
7873                    ; line_number = 526
7874                    ;  assemble
7875                    ;info   526, 2106
7876                    ; # initialize exponent and add bias
7877                    ; line_number = 528
7878                    ;info   528, 2106
7879 083a 309e          movlw   _float32_expbias_31
7880                    ; line_number = 529
7881                    ;info   529, 2107
7882 083b 00a8          movwf   _float32_exp
7883                    ; line_number = 530
7884                    ;info   530, 2108
7885 083c 01a9          clrf    _float32_sign
7886                    ; # test sign
7887                    ; line_number = 532
7888                    ;info   532, 2109
7889 083d 1fa7          btfss   _float32_aargb0, _float32_msb
7890                    ; line_number = 533
7891                    ;info   533, 2110
7892 083e 284b          goto    _float32_normalize40
7893                    ; # if < 0, negate and set MSB in _float32_sign
7894                    ; line_number = 535
7895                    ;info   535, 2111
7896 083f 09a4          comf    _float32_aargb3,f
7897                    ; line_number = 536
7898                    ;info   536, 2112
7899 0840 09a5          comf    _float32_aargb2,f
7900                    ; line_number = 537
7901                    ;info   537, 2113
7902 0841 09a6          comf    _float32_aargb1,f
7903                    ; line_number = 538
7904                    ;info   538, 2114
7905 0842 09a7          comf    _float32_aargb0,f
7906                    ; line_number = 539
7907                    ;info   539, 2115
7908 0843 0aa4          incf    _float32_aargb3,f
7909                    ; line_number = 540
7910                    ;info   540, 2116
7911 0844 1903          btfsc   _float32_status, _float32_z
7912                    ; line_number = 541
7913                    ;info   541, 2117
7914 0845 0aa5          incf    _float32_aargb2,f
7915                    ; line_number = 542
7916                    ;info   542, 2118
7917 0846 1903          btfsc   _float32_status, _float32_z
7918                    ; line_number = 543
7919                    ;info   543, 2119
7920 0847 0aa6          incf    _float32_aargb1,f
7921                    ; line_number = 544
7922                    ;info   544, 2120
7923 0848 1903          btfsc   _float32_status, _float32_z
7924                    ; line_number = 545
7925                    ;info   545, 2121
7926 0849 0aa7          incf    _float32_aargb0,f
7927                    ; line_number = 546
7928                    ;info   546, 2122
7929 084a 17a9          bsf     _float32_sign, _float32_msb
7930                    ; # This procedure falls through to nrm4032
7931                    ; #goto nrm4032
7932            
7933            
7934                    ; delay after procedure statements=non-uniform
7935                    ; Return instruction suppressed by 'return_suppress'
7936            
7937            
7938            
7939            
7940                    ; line_number = 551
7941                    ;info   551, 2123
7942                    ; procedure _float32_normalize40
7943   084b :   _float32_normalize40:
7944                    ; arguments_none
7945                    ; line_number = 553
7946                    ;  returns_nothing
7947                    ; line_number = 554
7948                    ;  return_suppress
7949            
7950                    ; # Normalization routine
7951                    ; # Input: 40 bit unnormalized floating point number in
7952                    ; #        _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2, _float32_aargb3 with sign in _float32_sign, MSB
7953                    ; # Use: call nrm4032()
7954                    ; # Output: 32 bit normalized floating point number in
7955                    ; #         _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2, _float32_aargb3
7956                    ; # Result: _FLOAT32_AARG  <--  NORMALIZE( _FLOAT32_AARG )
7957                    ; # Max Timing:	38+6*9+12+8 = 112 clks	RND = 0
7958                    ; #			38+6*9+12+24 = 128 clks	RND = 1, SAT = 0
7959                    ; #			38+6*9+12+31 = 135 clks	RND = 1, SAT = 1
7960                    ; # Min Timing:	33+6 = 39 clks		_FLOAT32_AARG = 0
7961                    ; #			5+9+8 = 22 clks
7962                    ; # PM: 66	DM: 8
7963            
7964                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
7965                    ; line_number = 570
7966                    ;  assemble
7967                    ;info   570, 2123
7968                    ; #:nrm4032
7969                    ; # clear exponent decrement
7970                    ; line_number = 573
7971                    ;info   573, 2123
7972 084b 01b3          clrf    _float32_temp
7973                    ; # test if highbyte=0
7974                    ; line_number = 575
7975                    ;info   575, 2124
7976 084c 0827          movf    _float32_aargb0,w
7977                    ; line_number = 576
7978                    ;info   576, 2125
7979 084d 1d03          btfss   _float32_status, _float32_z
7980                    ; line_number = 577
7981                    ;info   577, 2126
7982 084e 286b          goto    _float32_norm4032
7983                    ; # if so, shift 8 bits by move
7984                    ; line_number = 579
7985                    ;info   579, 2127
7986 084f 0826          movf    _float32_aargb1,w
7987                    ; line_number = 580
7988                    ;info   580, 2128
7989 0850 00a7          movwf   _float32_aargb0
7990                    ; line_number = 581
7991                    ;info   581, 2129
7992 0851 0825          movf    _float32_aargb2,w
7993                    ; line_number = 582
7994                    ;info   582, 2130
7995 0852 00a6          movwf   _float32_aargb1
7996                    ; line_number = 583
7997                    ;info   583, 2131
7998 0853 0824          movf    _float32_aargb3,w
7999                    ; line_number = 584
8000                    ;info   584, 2132
8001 0854 00a5          movwf   _float32_aargb2
8002                    ; line_number = 585
8003                    ;info   585, 2133
8004 0855 01a4          clrf    _float32_aargb3
8005                    ; # increase decrement by 8
8006                    ; line_number = 587
8007                    ;info   587, 2134
8008 0856 15b3          bsf     _float32_temp, 3
8009            
8010                    ; # test if highbyte=0
8011                    ; line_number = 590
8012                    ;info   590, 2135
8013 0857 0827          movf    _float32_aargb0,w
8014                    ; line_number = 591
8015                    ;info   591, 2136
8016 0858 1d03          btfss   _float32_status, _float32_z
8017                    ; line_number = 592
8018                    ;info   592, 2137
8019 0859 286b          goto    _float32_norm4032
8020                    ; # if so, shift 8 bits by move
8021                    ; line_number = 594
8022                    ;info   594, 2138
8023 085a 0826          movf    _float32_aargb1,w
8024                    ; line_number = 595
8025                    ;info   595, 2139
8026 085b 00a7          movwf   _float32_aargb0
8027                    ; line_number = 596
8028                    ;info   596, 2140
8029 085c 0825          movf    _float32_aargb2,w
8030                    ; line_number = 597
8031                    ;info   597, 2141
8032 085d 00a6          movwf   _float32_aargb1
8033                    ; line_number = 598
8034                    ;info   598, 2142
8035 085e 01a5          clrf    _float32_aargb2
8036                    ; # increase decrement by 8
8037                    ; line_number = 600
8038                    ;info   600, 2143
8039 085f 11b3          bcf     _float32_temp, 3
8040                    ; line_number = 601
8041                    ;info   601, 2144
8042 0860 1633          bsf     _float32_temp, 4
8043            
8044                    ; # test if highbyte=0
8045                    ; line_number = 604
8046                    ;info   604, 2145
8047 0861 0827          movf    _float32_aargb0,w
8048                    ; line_number = 605
8049                    ;info   605, 2146
8050 0862 1d03          btfss   _float32_status, _float32_z
8051                    ; line_number = 606
8052                    ;info   606, 2147
8053 0863 286b          goto    _float32_norm4032
8054                    ; # if so, shift 8 bits by move
8055                    ; line_number = 608
8056                    ;info   608, 2148
8057 0864 0826          movf    _float32_aargb1,w
8058                    ; line_number = 609
8059                    ;info   609, 2149
8060 0865 00a7          movwf   _float32_aargb0
8061                    ; line_number = 610
8062                    ;info   610, 2150
8063 0866 01a6          clrf    _float32_aargb1
8064                    ; # increase decrement by 8
8065                    ; line_number = 612
8066                    ;info   612, 2151
8067 0867 15b3          bsf     _float32_temp, 3
8068            
8069                    ; # if highbyte=0, result=0
8070                    ; line_number = 615
8071                    ;info   615, 2152
8072 0868 0827          movf    _float32_aargb0,w
8073                    ; line_number = 616
8074                    ;info   616, 2153
8075 0869 1903          btfsc   _float32_status, _float32_z
8076                    ; line_number = 617
8077                    ;info   617, 2154
8078 086a 2834          goto    _float32_res032
8079            
8080                    ; line_number = 619
8081   086b :   _float32_norm4032:
8082                    ; line_number = 620
8083                    ;info   620, 2155
8084 086b 0833          movf    _float32_temp,w
8085                    ; line_number = 621
8086                    ;info   621, 2156
8087 086c 02a8          subwf   _float32_exp,f
8088                    ; line_number = 622
8089                    ;info   622, 2157
8090 086d 1d03          btfss   _float32_status, _float32_z
8091                    ; line_number = 623
8092                    ;info   623, 2158
8093 086e 1c03          btfss   _float32_status, _float32_c
8094                    ; line_number = 624
8095                    ;info   624, 2159
8096 086f 2a3f          goto    _float32_setfun32
8097            
8098                    ; # clear carry bit
8099                    ; line_number = 627
8100                    ;info   627, 2160
8101 0870 1003          bcf     _float32_status, _float32_c
8102            
8103                    ; line_number = 629
8104   0871 :   _float32_norm4032a:
8105                    ; # if MSB=1, normalization done
8106                    ; line_number = 631
8107                    ;info   631, 2161
8108 0871 1ba7          btfsc   _float32_aargb0, _float32_msb
8109                    ; line_number = 632
8110                    ;info   632, 2162
8111 0872 287a          goto    _float32_nrmrnd4032
8112                    ; # otherwise, shift left and
8113                    ; line_number = 634
8114                    ;info   634, 2163
8115 0873 0da4          rlf     _float32_aargb3,f
8116                    ; # decrement exp
8117                    ; line_number = 636
8118                    ;info   636, 2164
8119 0874 0da5          rlf     _float32_aargb2,f
8120                    ; line_number = 637
8121                    ;info   637, 2165
8122 0875 0da6          rlf     _float32_aargb1,f
8123                    ; line_number = 638
8124                    ;info   638, 2166
8125 0876 0da7          rlf     _float32_aargb0,f
8126                    ; line_number = 639
8127                    ;info   639, 2167
8128 0877 0ba8          decfsz  _float32_exp,f
8129                    ; line_number = 640
8130                    ;info   640, 2168
8131 0878 2871          goto    _float32_norm4032a
8132            
8133                    ; # underflow if exp=0
8134                    ; line_number = 643
8135                    ;info   643, 2169
8136 0879 2a3f          goto    _float32_setfun32
8137            
8138                    ; line_number = 645
8139   087a :   _float32_nrmrnd4032:
8140                    ; line_number = 646
8141                    ;info   646, 2170
8142 087a 1b2a          btfsc   _float32_fpflags, _float32_rnd
8143                    ; line_number = 647
8144                    ;info   647, 2171
8145 087b 1c25          btfss   _float32_aargb2, _float32_lsb
8146                    ; line_number = 648
8147                    ;info   648, 2172
8148 087c 2831          goto    _float32_fixsign32
8149                    ; # round if next bit is set
8150                    ; line_number = 650
8151                    ;info   650, 2173
8152 087d 1fa4          btfss   _float32_aargb3, _float32_msb
8153                    ; line_number = 651
8154                    ;info   651, 2174
8155 087e 2831          goto    _float32_fixsign32
8156                    ; line_number = 652
8157                    ;info   652, 2175
8158 087f 0aa5          incf    _float32_aargb2,f
8159                    ; line_number = 653
8160                    ;info   653, 2176
8161 0880 1903          btfsc   _float32_status, _float32_z
8162                    ; line_number = 654
8163                    ;info   654, 2177
8164 0881 0aa6          incf    _float32_aargb1,f
8165                    ; line_number = 655
8166                    ;info   655, 2178
8167 0882 1903          btfsc   _float32_status, _float32_z
8168                    ; line_number = 656
8169                    ;info   656, 2179
8170 0883 0aa7          incf    _float32_aargb0,f
8171            
8172                    ; # has rounding caused carryout
8173                    ; line_number = 659
8174                    ;info   659, 2180
8175 0884 1d03          btfss   _float32_status, _float32_z
8176                    ; line_number = 660
8177                    ;info   660, 2181
8178 0885 2831          goto    _float32_fixsign32
8179                    ; # if so, right shift
8180                    ; line_number = 662
8181                    ;info   662, 2182
8182 0886 0ca7          rrf     _float32_aargb0,f
8183                    ; line_number = 663
8184                    ;info   663, 2183
8185 0887 0ca6          rrf     _float32_aargb1,f
8186                    ; line_number = 664
8187                    ;info   664, 2184
8188 0888 0ca5          rrf     _float32_aargb2,f
8189                    ; line_number = 665
8190                    ;info   665, 2185
8191 0889 0aa8          incf    _float32_exp,f
8192                    ; # check for overflow
8193                    ; line_number = 667
8194                    ;info   667, 2186
8195 088a 1903          btfsc   _float32_status, _float32_z
8196                    ; line_number = 668
8197                    ;info   668, 2187
8198 088b 29ac          goto    _float32_setfov32
8199                    ; line_number = 669
8200                    ;info   669, 2188
8201 088c 2831          goto    _float32_fixsign32
8202            
8203            
8204                    ; delay after procedure statements=non-uniform
8205                    ; Return instruction suppressed by 'return_suppress'
8206            
8207            
8208            
8209            
8210                    ; line_number = 672
8211                    ;info   672, 2189
8212                    ; procedure _float32_integer24_convert
8213   088d :   _float32_integer24_convert:
8214                    ; arguments_none
8215                    ; line_number = 674
8216                    ;  returns_nothing
8217                    ; line_number = 675
8218                    ;  return_suppress
8219            
8220                    ; # Float to integer conversion
8221                    ; # Input: 32 bit floating point number in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
8222                    ; # Use: call int3224()
8223                    ; # Output: 24 bit 2's complement integer right justified in
8224                    ; #         _float32_aargb0, _float32_aargb1, _float32_aargb2
8225                    ; # Result: _FLOAT32_AARG  <--  INT( _FLOAT32_AARG )
8226                    ; # Max Timing:	40+6*7+6+16 = 104 clks	RND = 0
8227                    ; #			40+6*7+6+24 = 112 clks	RND = 1, SAT = 0
8228                    ; #			40+6*7+6+26 = 114 clks	RND = 1, SAT = 1
8229                    ; # Min Timing:	4 clks
8230                    ; # PM: 82	DM: 6
8231            
8232                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
8233                    ; line_number = 689
8234                    ;  assemble
8235                    ;info   689, 2189
8236                    ; line_number = 690
8237   088d :   _float32_int32:
8238                    ; # test for zero argument
8239                    ; line_number = 692
8240                    ;info   692, 2189
8241 088d 0828          movf    _float32_exp,w
8242                    ; line_number = 693
8243                    ;info   693, 2190
8244 088e 1903          btfsc   _float32_status, _float32_z
8245                    ; line_number = 694
8246                    ;info   694, 2191
8247 088f 3400          retlw   0
8248            
8249                    ; # save sign in _float32_sign
8250                    ; line_number = 697
8251                    ;info   697, 2192
8252 0890 0827          movf    _float32_aargb0,w
8253                    ; line_number = 698
8254                    ;info   698, 2193
8255 0891 00a9          movwf   _float32_sign
8256                    ; # make MSB explicit
8257                    ; line_number = 700
8258                    ;info   700, 2194
8259 0892 17a7          bsf     _float32_aargb0, _float32_msb
8260            
8261                    ; # remove bias from exp
8262                    ; line_number = 703
8263                    ;info   703, 2195
8264 0893 3096          movlw   _float32_expbias_23
8265                    ; line_number = 704
8266                    ;info   704, 2196
8267 0894 02a8          subwf   _float32_exp,f
8268                    ; line_number = 705
8269                    ;info   705, 2197
8270 0895 1fa8          btfss   _float32_exp, _float32_msb
8271                    ; line_number = 706
8272                    ;info   706, 2198
8273 0896 28dc          goto    _float32_setiov3224
8274                    ; line_number = 707
8275                    ;info   707, 2199
8276 0897 09a8          comf    _float32_exp,f
8277                    ; line_number = 708
8278                    ;info   708, 2200
8279 0898 0aa8          incf    _float32_exp,f
8280            
8281                    ; # do byte shift if exp >= 8
8282                    ; line_number = 711
8283                    ;info   711, 2201
8284 0899 3008          movlw   8
8285                    ; line_number = 712
8286                    ;info   712, 2202
8287 089a 0228          subwf   _float32_exp,w
8288                    ; line_number = 713
8289                    ;info   713, 2203
8290 089b 1c03          btfss   _float32_status, _float32_c
8291                    ; line_number = 714
8292                    ;info   714, 2204
8293 089c 28b8          goto    _float32_tshift3224
8294                    ; line_number = 715
8295                    ;info   715, 2205
8296 089d 00a8          movwf   _float32_exp
8297                    ; # rotate next bit for rounding
8298                    ; line_number = 717
8299                    ;info   717, 2206
8300 089e 0da5          rlf     _float32_aargb2,f
8301                    ; line_number = 718
8302                    ;info   718, 2207
8303 089f 0826          movf    _float32_aargb1,w
8304                    ; line_number = 719
8305                    ;info   719, 2208
8306 08a0 00a5          movwf   _float32_aargb2
8307                    ; line_number = 720
8308                    ;info   720, 2209
8309 08a1 0827          movf    _float32_aargb0,w
8310                    ; line_number = 721
8311                    ;info   721, 2210
8312 08a2 00a6          movwf   _float32_aargb1
8313                    ; line_number = 722
8314                    ;info   722, 2211
8315 08a3 01a7          clrf    _float32_aargb0
8316            
8317                    ; # do another byte shift if exp >= 8
8318                    ; line_number = 725
8319                    ;info   725, 2212
8320 08a4 3008          movlw   8
8321                    ; line_number = 726
8322                    ;info   726, 2213
8323 08a5 0228          subwf   _float32_exp,w
8324                    ; line_number = 727
8325                    ;info   727, 2214
8326 08a6 1c03          btfss   _float32_status, _float32_c
8327                    ; line_number = 728
8328                    ;info   728, 2215
8329 08a7 28b8          goto    _float32_tshift3224
8330                    ; line_number = 729
8331                    ;info   729, 2216
8332 08a8 00a8          movwf   _float32_exp
8333                    ; # rotate next bit for rounding
8334                    ; line_number = 731
8335                    ;info   731, 2217
8336 08a9 0da5          rlf     _float32_aargb2,f
8337                    ; line_number = 732
8338                    ;info   732, 2218
8339 08aa 0826          movf    _float32_aargb1,w
8340                    ; line_number = 733
8341                    ;info   733, 2219
8342 08ab 00a5          movwf   _float32_aargb2
8343                    ; line_number = 734
8344                    ;info   734, 2220
8345 08ac 01a6          clrf    _float32_aargb1
8346            
8347                    ; # do another byte shift if exp >= 8
8348                    ; line_number = 737
8349                    ;info   737, 2221
8350 08ad 3008          movlw   8
8351                    ; line_number = 738
8352                    ;info   738, 2222
8353 08ae 0228          subwf   _float32_exp,w
8354                    ; line_number = 739
8355                    ;info   739, 2223
8356 08af 1c03          btfss   _float32_status, _float32_c
8357                    ; line_number = 740
8358                    ;info   740, 2224
8359 08b0 28b8          goto    _float32_tshift3224
8360                    ; line_number = 741
8361                    ;info   741, 2225
8362 08b1 00a8          movwf   _float32_exp
8363                    ; # rotate next bit for rounding
8364                    ; line_number = 743
8365                    ;info   743, 2226
8366 08b2 0da5          rlf     _float32_aargb2,f
8367                    ; line_number = 744
8368                    ;info   744, 2227
8369 08b3 01a5          clrf    _float32_aargb2
8370                    ; line_number = 745
8371                    ;info   745, 2228
8372 08b4 0828          movf    _float32_exp,w
8373                    ; line_number = 746
8374                    ;info   746, 2229
8375 08b5 1d03          btfss   _float32_status, _float32_z
8376                    ; line_number = 747
8377                    ;info   747, 2230
8378 08b6 1003          bcf     _float32_status, _float32_c
8379                    ; line_number = 748
8380                    ;info   748, 2231
8381 08b7 28c1          goto    _float32_shift3224ok
8382            
8383                    ; line_number = 750
8384   08b8 :   _float32_tshift3224:
8385                    ; # shift completed if exp = 0
8386                    ; line_number = 752
8387                    ;info   752, 2232
8388 08b8 0828          movf    _float32_exp,w
8389                    ; line_number = 753
8390                    ;info   753, 2233
8391 08b9 1903          btfsc   _float32_status, _float32_z
8392                    ; line_number = 754
8393                    ;info   754, 2234
8394 08ba 28c1          goto    _float32_shift3224ok
8395            
8396                    ; line_number = 756
8397   08bb :   _float32_shift3224:
8398                    ; line_number = 757
8399                    ;info   757, 2235
8400 08bb 1003          bcf     _float32_status, _float32_c
8401                    ; # right shift by exp
8402                    ; line_number = 759
8403                    ;info   759, 2236
8404 08bc 0ca7          rrf     _float32_aargb0,f
8405                    ; line_number = 760
8406                    ;info   760, 2237
8407 08bd 0ca6          rrf     _float32_aargb1,f
8408                    ; line_number = 761
8409                    ;info   761, 2238
8410 08be 0ca5          rrf     _float32_aargb2,f
8411                    ; line_number = 762
8412                    ;info   762, 2239
8413 08bf 0ba8          decfsz  _float32_exp,f
8414                    ; line_number = 763
8415                    ;info   763, 2240
8416 08c0 28bb          goto    _float32_shift3224
8417            
8418                    ; line_number = 765
8419   08c1 :   _float32_shift3224ok:
8420                    ; line_number = 766
8421                    ;info   766, 2241
8422 08c1 1b2a          btfsc   _float32_fpflags, _float32_rnd
8423                    ; line_number = 767
8424                    ;info   767, 2242
8425 08c2 1c25          btfss   _float32_aargb2, _float32_lsb
8426                    ; line_number = 768
8427                    ;info   768, 2243
8428 08c3 28cd          goto    _float32_int3224ok
8429                    ; line_number = 769
8430                    ;info   769, 2244
8431 08c4 1c03          btfss   _float32_status, _float32_c
8432                    ; line_number = 770
8433                    ;info   770, 2245
8434 08c5 28cd          goto    _float32_int3224ok
8435                    ; line_number = 771
8436                    ;info   771, 2246
8437 08c6 0aa5          incf    _float32_aargb2,f
8438                    ; line_number = 772
8439                    ;info   772, 2247
8440 08c7 1903          btfsc   _float32_status, _float32_z
8441                    ; line_number = 773
8442                    ;info   773, 2248
8443 08c8 0aa6          incf    _float32_aargb1,f
8444                    ; line_number = 774
8445                    ;info   774, 2249
8446 08c9 1903          btfsc   _float32_status, _float32_z
8447                    ; line_number = 775
8448                    ;info   775, 2250
8449 08ca 0aa7          incf    _float32_aargb0,f
8450                    ; # test for overflow
8451                    ; line_number = 777
8452                    ;info   777, 2251
8453 08cb 1ba7          btfsc   _float32_aargb0, _float32_msb
8454                    ; line_number = 778
8455                    ;info   778, 2252
8456 08cc 28dc          goto    _float32_setiov3224
8457            
8458                    ; line_number = 780
8459   08cd :   _float32_int3224ok:
8460                    ; # if sign bit set, negate
8461                    ; line_number = 782
8462                    ;info   782, 2253
8463 08cd 1fa9          btfss   _float32_sign, _float32_msb
8464                    ; line_number = 783
8465                    ;info   783, 2254
8466 08ce 3400          retlw   0
8467                    ; line_number = 784
8468                    ;info   784, 2255
8469 08cf 09a7          comf    _float32_aargb0,f
8470                    ; line_number = 785
8471                    ;info   785, 2256
8472 08d0 09a6          comf    _float32_aargb1,f
8473                    ; line_number = 786
8474                    ;info   786, 2257
8475 08d1 09a5          comf    _float32_aargb2,f
8476                    ; line_number = 787
8477                    ;info   787, 2258
8478 08d2 0aa5          incf    _float32_aargb2,f
8479                    ; line_number = 788
8480                    ;info   788, 2259
8481 08d3 1903          btfsc   _float32_status, _float32_z
8482                    ; line_number = 789
8483                    ;info   789, 2260
8484 08d4 0aa6          incf    _float32_aargb1,f
8485                    ; line_number = 790
8486                    ;info   790, 2261
8487 08d5 1903          btfsc   _float32_status, _float32_z
8488                    ; line_number = 791
8489                    ;info   791, 2262
8490 08d6 0aa7          incf    _float32_aargb0,f
8491                    ; line_number = 792
8492                    ;info   792, 2263
8493 08d7 3400          retlw   0
8494            
8495                    ; line_number = 794
8496   08d8 :   _float32_ires03224:
8497                    ; # integer result equals zero
8498                    ; line_number = 796
8499                    ;info   796, 2264
8500 08d8 01a7          clrf    _float32_aargb0
8501                    ; line_number = 797
8502                    ;info   797, 2265
8503 08d9 01a6          clrf    _float32_aargb1
8504                    ; line_number = 798
8505                    ;info   798, 2266
8506 08da 01a5          clrf    _float32_aargb2
8507                    ; line_number = 799
8508                    ;info   799, 2267
8509 08db 3400          retlw   0
8510            
8511                    ; # set integer overflow flag
8512                    ; line_number = 802
8513   08dc :   _float32_setiov3224:
8514                    ; line_number = 803
8515                    ;info   803, 2268
8516 08dc 142a          bsf     _float32_fpflags, _float32_iov
8517                    ; # test for saturation
8518                    ; line_number = 805
8519                    ;info   805, 2269
8520 08dd 1faa          btfss   _float32_fpflags, _float32_sat
8521                    ; # return error code in WREG
8522                    ; line_number = 807
8523                    ;info   807, 2270
8524 08de 34ff          retlw   255
8525            
8526                    ; # saturate to largest two's
8527                    ; line_number = 810
8528                    ;info   810, 2271
8529 08df 01a7          clrf    _float32_aargb0
8530                    ; # complement 24 bit integer
8531                    ; line_number = 812
8532                    ;info   812, 2272
8533 08e0 1fa9          btfss   _float32_sign, _float32_msb
8534                    ; line_number = 813
8535                    ;info   813, 2273
8536 08e1 30ff          movlw   255
8537                    ; # sign = 0, 0x 7F FF FF
8538                    ; line_number = 815
8539                    ;info   815, 2274
8540 08e2 00a7          movwf   _float32_aargb0
8541                    ; # sign = 1, 0x 80 00 00
8542                    ; line_number = 817
8543                    ;info   817, 2275
8544 08e3 00a6          movwf   _float32_aargb1
8545                    ; line_number = 818
8546                    ;info   818, 2276
8547 08e4 00a5          movwf   _float32_aargb2
8548                    ; line_number = 819
8549                    ;info   819, 2277
8550 08e5 0da9          rlf     _float32_sign,f
8551                    ; line_number = 820
8552                    ;info   820, 2278
8553 08e6 0ca7          rrf     _float32_aargb0,f
8554                    ; # return error code in WREG
8555                    ; line_number = 822
8556                    ;info   822, 2279
8557 08e7 34ff          retlw   255
8558            
8559            
8560                    ; delay after procedure statements=non-uniform
8561                    ; Return instruction suppressed by 'return_suppress'
8562            
8563            
8564            
8565            
8566                    ; line_number = 825
8567                    ;info   825, 2280
8568                    ; procedure float32_integer32_convert
8569   08e8 :   float32_integer32_convert:
8570                    ; arguments_none
8571                    ; line_number = 827
8572                    ;  returns_nothing
8573                    ; line_number = 828
8574                    ;  return_suppress
8575            
8576                    ; # Float to integer conversion
8577                    ; # Input:  32 bit floating point number in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
8578                    ; # Use: call int3232()
8579                    ; # Output: 32 bit 2's complement integer right justified in
8580                    ; #         _float32_aargb0, _float32_aargb1, _float32_aargb2, _float32_aargb3
8581                    ; # Result: _FLOAT32_AARG  <--  INT( _FLOAT32_AARG )
8582                    ; # Max Timing:	54+6*8+7+21 = 130 clks	RND = 0
8583                    ; #			54+6*8+7+29 = 137 clks	RND = 1, SAT = 0
8584                    ; #			54+6*8+7+29 = 137 clks	RND = 1, SAT = 1
8585                    ; # Min Timing:	5 clks
8586                    ; # PM: 102	DM: 7
8587            
8588                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
8589                    ; line_number = 842
8590                    ;  assemble
8591                    ;info   842, 2280
8592                    ; #:int3232
8593                    ; line_number = 844
8594                    ;info   844, 2280
8595 08e8 01a4          clrf    _float32_aargb3
8596                    ; # test for zero argument
8597                    ; line_number = 846
8598                    ;info   846, 2281
8599 08e9 0828          movf    _float32_exp,w
8600                    ; line_number = 847
8601                    ;info   847, 2282
8602 08ea 1903          btfsc   _float32_status, _float32_z
8603                    ; line_number = 848
8604                    ;info   848, 2283
8605 08eb 3400          retlw   0
8606            
8607                    ; # save sign in _float32_sign
8608                    ; line_number = 851
8609                    ;info   851, 2284
8610 08ec 0827          movf    _float32_aargb0,w
8611                    ; line_number = 852
8612                    ;info   852, 2285
8613 08ed 00a9          movwf   _float32_sign
8614                    ; # make MSB explicit
8615                    ; line_number = 854
8616                    ;info   854, 2286
8617 08ee 17a7          bsf     _float32_aargb0, _float32_msb
8618            
8619                    ; # remove bias from exp
8620                    ; line_number = 857
8621                    ;info   857, 2287
8622 08ef 309e          movlw   _float32_expbias_31
8623                    ; line_number = 858
8624                    ;info   858, 2288
8625 08f0 02a8          subwf   _float32_exp,f
8626                    ; line_number = 859
8627                    ;info   859, 2289
8628 08f1 1fa8          btfss   _float32_exp, _float32_msb
8629                    ; line_number = 860
8630                    ;info   860, 2290
8631 08f2 294c          goto    _float32_setiov32
8632                    ; line_number = 861
8633                    ;info   861, 2291
8634 08f3 09a8          comf    _float32_exp,f
8635                    ; line_number = 862
8636                    ;info   862, 2292
8637 08f4 0aa8          incf    _float32_exp,f
8638            
8639                    ; # do byte shift if exp >= 8
8640                    ; line_number = 865
8641                    ;info   865, 2293
8642 08f5 3008          movlw   8
8643                    ; line_number = 866
8644                    ;info   866, 2294
8645 08f6 0228          subwf   _float32_exp,w
8646                    ; line_number = 867
8647                    ;info   867, 2295
8648 08f7 1c03          btfss   _float32_status, _float32_c
8649                    ; line_number = 868
8650                    ;info   868, 2296
8651 08f8 2921          goto    _float32_tshift3232
8652                    ; line_number = 869
8653                    ;info   869, 2297
8654 08f9 00a8          movwf   _float32_exp
8655                    ; # rotate next bit for rounding
8656                    ; line_number = 871
8657                    ;info   871, 2298
8658 08fa 0da4          rlf     _float32_aargb3,f
8659                    ; line_number = 872
8660                    ;info   872, 2299
8661 08fb 0825          movf    _float32_aargb2,w
8662                    ; line_number = 873
8663                    ;info   873, 2300
8664 08fc 00a4          movwf   _float32_aargb3
8665                    ; line_number = 874
8666                    ;info   874, 2301
8667 08fd 0826          movf    _float32_aargb1,w
8668                    ; line_number = 875
8669                    ;info   875, 2302
8670 08fe 00a5          movwf   _float32_aargb2
8671                    ; line_number = 876
8672                    ;info   876, 2303
8673 08ff 0827          movf    _float32_aargb0,w
8674                    ; line_number = 877
8675                    ;info   877, 2304
8676 0900 00a6          movwf   _float32_aargb1
8677                    ; line_number = 878
8678                    ;info   878, 2305
8679 0901 01a7          clrf    _float32_aargb0
8680            
8681                    ; # do another byte shift if exp >= 8
8682                    ; line_number = 881
8683                    ;info   881, 2306
8684 0902 3008          movlw   8
8685                    ; line_number = 882
8686                    ;info   882, 2307
8687 0903 0228          subwf   _float32_exp,w
8688                    ; line_number = 883
8689                    ;info   883, 2308
8690 0904 1c03          btfss   _float32_status, _float32_c
8691                    ; line_number = 884
8692                    ;info   884, 2309
8693 0905 2921          goto    _float32_tshift3232
8694                    ; line_number = 885
8695                    ;info   885, 2310
8696 0906 00a8          movwf   _float32_exp
8697                    ; # rotate next bit for rounding
8698                    ; line_number = 887
8699                    ;info   887, 2311
8700 0907 0da4          rlf     _float32_aargb3,f
8701                    ; line_number = 888
8702                    ;info   888, 2312
8703 0908 0825          movf    _float32_aargb2,w
8704                    ; line_number = 889
8705                    ;info   889, 2313
8706 0909 00a4          movwf   _float32_aargb3
8707                    ; line_number = 890
8708                    ;info   890, 2314
8709 090a 0826          movf    _float32_aargb1,w
8710                    ; line_number = 891
8711                    ;info   891, 2315
8712 090b 00a5          movwf   _float32_aargb2
8713                    ; line_number = 892
8714                    ;info   892, 2316
8715 090c 01a6          clrf    _float32_aargb1
8716            
8717                    ; # do another byte shift if exp >= 8
8718                    ; line_number = 895
8719                    ;info   895, 2317
8720 090d 3008          movlw   8
8721                    ; line_number = 896
8722                    ;info   896, 2318
8723 090e 0228          subwf   _float32_exp,w
8724                    ; line_number = 897
8725                    ;info   897, 2319
8726 090f 1c03          btfss   _float32_status, _float32_c
8727                    ; line_number = 898
8728                    ;info   898, 2320
8729 0910 2921          goto    _float32_tshift3232
8730                    ; line_number = 899
8731                    ;info   899, 2321
8732 0911 00a8          movwf   _float32_exp
8733                    ; # rotate next bit for rounding
8734                    ; line_number = 901
8735                    ;info   901, 2322
8736 0912 0da4          rlf     _float32_aargb3,f
8737                    ; line_number = 902
8738                    ;info   902, 2323
8739 0913 0825          movf    _float32_aargb2,w
8740                    ; line_number = 903
8741                    ;info   903, 2324
8742 0914 00a4          movwf   _float32_aargb3
8743                    ; line_number = 904
8744                    ;info   904, 2325
8745 0915 01a5          clrf    _float32_aargb2
8746            
8747                    ; # do another byte shift if exp >= 8
8748                    ; line_number = 907
8749                    ;info   907, 2326
8750 0916 3008          movlw   8
8751                    ; line_number = 908
8752                    ;info   908, 2327
8753 0917 0228          subwf   _float32_exp,w
8754                    ; line_number = 909
8755                    ;info   909, 2328
8756 0918 1c03          btfss   _float32_status, _float32_c
8757                    ; line_number = 910
8758                    ;info   910, 2329
8759 0919 2921          goto    _float32_tshift3232
8760                    ; line_number = 911
8761                    ;info   911, 2330
8762 091a 00a8          movwf   _float32_exp
8763                    ; # rotate next bit for rounding
8764                    ; line_number = 913
8765                    ;info   913, 2331
8766 091b 0da4          rlf     _float32_aargb3,f
8767                    ; line_number = 914
8768                    ;info   914, 2332
8769 091c 01a4          clrf    _float32_aargb3
8770                    ; line_number = 915
8771                    ;info   915, 2333
8772 091d 0828          movf    _float32_exp,w
8773                    ; line_number = 916
8774                    ;info   916, 2334
8775 091e 1d03          btfss   _float32_status, _float32_z
8776                    ; line_number = 917
8777                    ;info   917, 2335
8778 091f 1003          bcf     _float32_status, _float32_c
8779                    ; line_number = 918
8780                    ;info   918, 2336
8781 0920 292b          goto    _float32_shift3232ok
8782            
8783                    ; line_number = 920
8784   0921 :   _float32_tshift3232:
8785                    ; # shift completed if exp = 0
8786                    ; line_number = 922
8787                    ;info   922, 2337
8788 0921 0828          movf    _float32_exp,w
8789                    ; line_number = 923
8790                    ;info   923, 2338
8791 0922 1903          btfsc   _float32_status, _float32_z
8792                    ; line_number = 924
8793                    ;info   924, 2339
8794 0923 292b          goto    _float32_shift3232ok
8795            
8796                    ; line_number = 926
8797   0924 :   _float32_shift3232:
8798                    ; line_number = 927
8799                    ;info   927, 2340
8800 0924 1003          bcf     _float32_status, _float32_c
8801                    ; # right shift by exp
8802                    ; line_number = 929
8803                    ;info   929, 2341
8804 0925 0ca7          rrf     _float32_aargb0,f
8805                    ; line_number = 930
8806                    ;info   930, 2342
8807 0926 0ca6          rrf     _float32_aargb1,f
8808                    ; line_number = 931
8809                    ;info   931, 2343
8810 0927 0ca5          rrf     _float32_aargb2,f
8811                    ; line_number = 932
8812                    ;info   932, 2344
8813 0928 0ca4          rrf     _float32_aargb3,f
8814                    ; line_number = 933
8815                    ;info   933, 2345
8816 0929 0ba8          decfsz  _float32_exp,f
8817                    ; line_number = 934
8818                    ;info   934, 2346
8819 092a 2924          goto    _float32_shift3232
8820            
8821                    ; line_number = 936
8822   092b :   _float32_shift3232ok:
8823                    ; line_number = 937
8824                    ;info   937, 2347
8825 092b 1b2a          btfsc   _float32_fpflags, _float32_rnd
8826                    ; line_number = 938
8827                    ;info   938, 2348
8828 092c 1c24          btfss   _float32_aargb3, _float32_lsb
8829                    ; line_number = 939
8830                    ;info   939, 2349
8831 092d 2939          goto    _float32_int3232ok
8832                    ; line_number = 940
8833                    ;info   940, 2350
8834 092e 1c03          btfss   _float32_status, _float32_c
8835                    ; line_number = 941
8836                    ;info   941, 2351
8837 092f 2939          goto    _float32_int3232ok
8838                    ; line_number = 942
8839                    ;info   942, 2352
8840 0930 0aa4          incf    _float32_aargb3,f
8841                    ; line_number = 943
8842                    ;info   943, 2353
8843 0931 1903          btfsc   _float32_status, _float32_z
8844                    ; line_number = 944
8845                    ;info   944, 2354
8846 0932 0aa5          incf    _float32_aargb2,f
8847                    ; line_number = 945
8848                    ;info   945, 2355
8849 0933 1903          btfsc   _float32_status, _float32_z
8850                    ; line_number = 946
8851                    ;info   946, 2356
8852 0934 0aa6          incf    _float32_aargb1,f
8853                    ; line_number = 947
8854                    ;info   947, 2357
8855 0935 1903          btfsc   _float32_status, _float32_z
8856                    ; line_number = 948
8857                    ;info   948, 2358
8858 0936 0aa7          incf    _float32_aargb0,f
8859                    ; # test for overflow
8860                    ; line_number = 950
8861                    ;info   950, 2359
8862 0937 1ba7          btfsc   _float32_aargb0, _float32_msb
8863                    ; line_number = 951
8864                    ;info   951, 2360
8865 0938 28dc          goto    _float32_setiov3224
8866            
8867                    ; line_number = 953
8868   0939 :   _float32_int3232ok:
8869                    ; # if sign bit set, negate
8870                    ; line_number = 955
8871                    ;info   955, 2361
8872 0939 1fa9          btfss   _float32_sign, _float32_msb
8873                    ; line_number = 956
8874                    ;info   956, 2362
8875 093a 3400          retlw   0
8876                    ; line_number = 957
8877                    ;info   957, 2363
8878 093b 09a7          comf    _float32_aargb0,f
8879                    ; line_number = 958
8880                    ;info   958, 2364
8881 093c 09a6          comf    _float32_aargb1,f
8882                    ; line_number = 959
8883                    ;info   959, 2365
8884 093d 09a5          comf    _float32_aargb2,f
8885                    ; line_number = 960
8886                    ;info   960, 2366
8887 093e 09a4          comf    _float32_aargb3,f
8888                    ; line_number = 961
8889                    ;info   961, 2367
8890 093f 0aa4          incf    _float32_aargb3,f
8891                    ; line_number = 962
8892                    ;info   962, 2368
8893 0940 1903          btfsc   _float32_status, _float32_z
8894                    ; line_number = 963
8895                    ;info   963, 2369
8896 0941 0aa5          incf    _float32_aargb2,f
8897                    ; line_number = 964
8898                    ;info   964, 2370
8899 0942 1903          btfsc   _float32_status, _float32_z
8900                    ; line_number = 965
8901                    ;info   965, 2371
8902 0943 0aa6          incf    _float32_aargb1,f
8903                    ; line_number = 966
8904                    ;info   966, 2372
8905 0944 1903          btfsc   _float32_status, _float32_z
8906                    ; line_number = 967
8907                    ;info   967, 2373
8908 0945 0aa7          incf    _float32_aargb0,f
8909                    ; line_number = 968
8910                    ;info   968, 2374
8911 0946 3400          retlw   0
8912            
8913                    ; line_number = 970
8914   0947 :   _float32_ires032:
8915                    ; # integer result equals zero
8916                    ; line_number = 972
8917                    ;info   972, 2375
8918 0947 01a7          clrf    _float32_aargb0
8919                    ; line_number = 973
8920                    ;info   973, 2376
8921 0948 01a6          clrf    _float32_aargb1
8922                    ; line_number = 974
8923                    ;info   974, 2377
8924 0949 01a5          clrf    _float32_aargb2
8925                    ; line_number = 975
8926                    ;info   975, 2378
8927 094a 01a4          clrf    _float32_aargb3
8928                    ; line_number = 976
8929                    ;info   976, 2379
8930 094b 3400          retlw   0
8931            
8932                    ; line_number = 978
8933   094c :   _float32_setiov32:
8934                    ; # set integer overflow flag
8935                    ; line_number = 980
8936                    ;info   980, 2380
8937 094c 142a          bsf     _float32_fpflags, _float32_iov
8938                    ; # test for saturation
8939                    ; line_number = 982
8940                    ;info   982, 2381
8941 094d 1faa          btfss   _float32_fpflags, _float32_sat
8942                    ; # return error code in WREG
8943                    ; line_number = 984
8944                    ;info   984, 2382
8945 094e 34ff          retlw   255
8946            
8947                    ; #saturate to largest two's
8948                    ; line_number = 987
8949                    ;info   987, 2383
8950 094f 01a7          clrf    _float32_aargb0
8951                    ; # complement 32 bit integer
8952                    ; line_number = 989
8953                    ;info   989, 2384
8954 0950 1fa9          btfss   _float32_sign, _float32_msb
8955                    ; line_number = 990
8956                    ;info   990, 2385
8957 0951 30ff          movlw   255
8958                    ; # sign = 0, 0x 7F FF FF FF
8959                    ; line_number = 992
8960                    ;info   992, 2386
8961 0952 00a7          movwf   _float32_aargb0
8962                    ; # sign = 1, 0x 80 00 00 00
8963                    ; line_number = 994
8964                    ;info   994, 2387
8965 0953 00a6          movwf   _float32_aargb1
8966                    ; line_number = 995
8967                    ;info   995, 2388
8968 0954 00a5          movwf   _float32_aargb2
8969                    ; line_number = 996
8970                    ;info   996, 2389
8971 0955 00a4          movwf   _float32_aargb3
8972                    ; line_number = 997
8973                    ;info   997, 2390
8974 0956 0da9          rlf     _float32_sign,f
8975                    ; line_number = 998
8976                    ;info   998, 2391
8977 0957 0ca7          rrf     _float32_aargb0,f
8978                    ; # return error code in WREG
8979                    ; line_number = 1000
8980                    ;info   1000, 2392
8981 0958 34ff          retlw   255
8982            
8983            
8984                    ; delay after procedure statements=non-uniform
8985                    ; Return instruction suppressed by 'return_suppress'
8986            
8987            
8988            
8989            
8990                    ; line_number = 1003
8991                    ;info   1003, 2393
8992                    ; procedure _float32_multiply
8993   0959 :   _float32_multiply:
8994                    ; arguments_none
8995                    ; line_number = 1005
8996                    ;  returns_nothing
8997                    ; line_number = 1006
8998                    ;  return_suppress
8999            
9000                    ; # Floating Point Multiply
9001                    ; # Input: 32 bit floating point number in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9002                    ; #        32 bit floating point number in _float32_bexp, _FLOAT32_BARGB0, _FLOAT32_BARGB1, _FLOAT32_BARGB2
9003                    ; # Use: call fpm32()
9004                    ; # Output: 32 bit floating point product in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9005                    ; # Result: _FLOAT32_AARG  <--  _FLOAT32_AARG * _FLOAT32_BARG
9006                    ; # Max Timing:	26+23*22+21+21 = 574 clks	RND = 0
9007                    ; #			26+23*22+21+35 = 588 clks	RND = 1, SAT = 0
9008                    ; #			26+23*22+21+38 = 591 clks	RND = 1, SAT = 1
9009                    ; # Min Timing:	6+6 = 12 clks			_FLOAT32_AARG * _FLOAT32_BARG = 0
9010                    ; #			24+23*11+21+17 = 315 clks
9011                    ; # PM: 94		DM: 14
9012            
9013                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
9014                    ; line_number = 1021
9015                    ;  assemble
9016                    ;info   1021, 2393
9017                    ; # test for zero arguments
9018                    ; line_number = 1023
9019                    ;info   1023, 2393
9020 0959 0828          movf    _float32_aexp,w
9021                    ; line_number = 1024
9022                    ;info   1024, 2394
9023 095a 1d03          btfss   _float32_status, _float32_z
9024                    ; line_number = 1025
9025                    ;info   1025, 2395
9026 095b 082f          movf    _float32_bexp,w
9027                    ; line_number = 1026
9028                    ;info   1026, 2396
9029 095c 1903          btfsc   _float32_status, _float32_z
9030                    ; line_number = 1027
9031                    ;info   1027, 2397
9032 095d 2834          goto    _float32_res032
9033            
9034                    ; line_number = 1029
9035   095e :   _float32_m32bne0:
9036                    ; line_number = 1030
9037                    ;info   1030, 2398
9038 095e 0827          movf    _float32_aargb0,w
9039                    ; line_number = 1031
9040                    ;info   1031, 2399
9041 095f 062e          xorwf   _float32_bargb0,w
9042                    ; # save sign in _float32_sign
9043                    ; line_number = 1033
9044                    ;info   1033, 2400
9045 0960 00a9          movwf   _float32_sign
9046            
9047                    ; line_number = 1035
9048                    ;info   1035, 2401
9049 0961 082f          movf    _float32_bexp,w
9050                    ; line_number = 1036
9051                    ;info   1036, 2402
9052 0962 07a8          addwf   _float32_exp,f
9053                    ; line_number = 1037
9054                    ;info   1037, 2403
9055 0963 307e          movlw   _float32_expbias_1
9056                    ; line_number = 1038
9057                    ;info   1038, 2404
9058 0964 1c03          btfss   _float32_status, _float32_c
9059                    ; line_number = 1039
9060                    ;info   1039, 2405
9061 0965 296a          goto    _float32_mtun32
9062            
9063                    ; line_number = 1041
9064                    ;info   1041, 2406
9065 0966 02a8          subwf   _float32_exp,f
9066                    ; line_number = 1042
9067                    ;info   1042, 2407
9068 0967 1803          btfsc   _float32_status, _float32_c
9069                    ; # set multiply overflow flag
9070                    ; line_number = 1044
9071                    ;info   1044, 2408
9072 0968 29ac          goto    _float32_setfov32
9073                    ; line_number = 1045
9074                    ;info   1045, 2409
9075 0969 296d          goto    _float32_mok32
9076            
9077                    ; line_number = 1047
9078   096a :   _float32_mtun32:
9079                    ; line_number = 1048
9080                    ;info   1048, 2410
9081 096a 02a8          subwf   _float32_exp,f
9082                    ; line_number = 1049
9083                    ;info   1049, 2411
9084 096b 1c03          btfss   _float32_status, _float32_c
9085                    ; line_number = 1050
9086                    ;info   1050, 2412
9087 096c 2a3f          goto    _float32_setfun32
9088            
9089                    ; line_number = 1052
9090   096d :   _float32_mok32:
9091                    ; line_number = 1053
9092                    ;info   1053, 2413
9093 096d 0827          movf    _float32_aargb0,w
9094                    ; line_number = 1054
9095                    ;info   1054, 2414
9096 096e 00a4          movwf   _float32_aargb3
9097                    ; line_number = 1055
9098                    ;info   1055, 2415
9099 096f 0826          movf    _float32_aargb1,w
9100                    ; line_number = 1056
9101                    ;info   1056, 2416
9102 0970 00a3          movwf   _float32_aargb4
9103                    ; line_number = 1057
9104                    ;info   1057, 2417
9105 0971 0825          movf    _float32_aargb2,w
9106                    ; line_number = 1058
9107                    ;info   1058, 2418
9108 0972 00a2          movwf   _float32_aargb5
9109                    ; # make argument MSB's explicit
9110                    ; line_number = 1060
9111                    ;info   1060, 2419
9112 0973 17a4          bsf     _float32_aargb3, _float32_msb
9113                    ; line_number = 1061
9114                    ;info   1061, 2420
9115 0974 17ae          bsf     _float32_bargb0, _float32_msb
9116                    ; line_number = 1062
9117                    ;info   1062, 2421
9118 0975 1003          bcf     _float32_status, _float32_c
9119                    ; # clear initial partial product
9120                    ; line_number = 1064
9121                    ;info   1064, 2422
9122 0976 01a7          clrf    _float32_aargb0
9123                    ; line_number = 1065
9124                    ;info   1065, 2423
9125 0977 01a6          clrf    _float32_aargb1
9126                    ; line_number = 1066
9127                    ;info   1066, 2424
9128 0978 01a5          clrf    _float32_aargb2
9129                    ; line_number = 1067
9130                    ;info   1067, 2425
9131 0979 3018          movlw   24
9132                    ; # initialize counter
9133                    ; line_number = 1069
9134                    ;info   1069, 2426
9135 097a 00b3          movwf   _float32_temp
9136            
9137                    ; # test next bit
9138                    ; line_number = 1072
9139   097b :   _float32_mloop32:
9140                    ; line_number = 1073
9141                    ;info   1073, 2427
9142 097b 1c22          btfss   _float32_aargb5, _float32_lsb
9143                    ; line_number = 1074
9144                    ;info   1074, 2428
9145 097c 2987          goto    _float32_mnoadd32
9146            
9147                    ; line_number = 1076
9148   097d :   _float32_madd32:
9149                    ; line_number = 1077
9150                    ;info   1077, 2429
9151 097d 082c          movf    _float32_bargb2,w
9152                    ; line_number = 1078
9153                    ;info   1078, 2430
9154 097e 07a5          addwf   _float32_aargb2,f
9155                    ; line_number = 1079
9156                    ;info   1079, 2431
9157 097f 082d          movf    _float32_bargb1,w
9158                    ; line_number = 1080
9159                    ;info   1080, 2432
9160 0980 1803          btfsc   _float32_status, _float32_c
9161                    ; line_number = 1081
9162                    ;info   1081, 2433
9163 0981 0f2d          incfsz  _float32_bargb1,w
9164                    ; line_number = 1082
9165                    ;info   1082, 2434
9166 0982 07a6          addwf   _float32_aargb1,f
9167            
9168                    ; line_number = 1084
9169                    ;info   1084, 2435
9170 0983 082e          movf    _float32_bargb0,w
9171                    ; line_number = 1085
9172                    ;info   1085, 2436
9173 0984 1803          btfsc   _float32_status, _float32_c
9174                    ; line_number = 1086
9175                    ;info   1086, 2437
9176 0985 0f2e          incfsz  _float32_bargb0,w
9177                    ; line_number = 1087
9178                    ;info   1087, 2438
9179 0986 07a7          addwf   _float32_aargb0,f
9180            
9181                    ; line_number = 1089
9182   0987 :   _float32_mnoadd32:
9183                    ; line_number = 1090
9184                    ;info   1090, 2439
9185 0987 0ca7          rrf     _float32_aargb0,f
9186                    ; line_number = 1091
9187                    ;info   1091, 2440
9188 0988 0ca6          rrf     _float32_aargb1,f
9189                    ; line_number = 1092
9190                    ;info   1092, 2441
9191 0989 0ca5          rrf     _float32_aargb2,f
9192                    ; line_number = 1093
9193                    ;info   1093, 2442
9194 098a 0ca4          rrf     _float32_aargb3,f
9195                    ; line_number = 1094
9196                    ;info   1094, 2443
9197 098b 0ca3          rrf     _float32_aargb4,f
9198                    ; line_number = 1095
9199                    ;info   1095, 2444
9200 098c 0ca2          rrf     _float32_aargb5,f
9201                    ; line_number = 1096
9202                    ;info   1096, 2445
9203 098d 1003          bcf     _float32_status, _float32_c
9204                    ; line_number = 1097
9205                    ;info   1097, 2446
9206 098e 0bb3          decfsz  _float32_temp,f
9207                    ; line_number = 1098
9208                    ;info   1098, 2447
9209 098f 297b          goto    _float32_mloop32
9210            
9211                    ; # check for postnormalization
9212                    ; line_number = 1101
9213                    ;info   1101, 2448
9214 0990 1ba7          btfsc   _float32_aargb0, _float32_msb
9215                    ; line_number = 1102
9216                    ;info   1102, 2449
9217 0991 2997          goto    _float32_mround32
9218                    ; line_number = 1103
9219                    ;info   1103, 2450
9220 0992 0da4          rlf     _float32_aargb3,f
9221                    ; line_number = 1104
9222                    ;info   1104, 2451
9223 0993 0da5          rlf     _float32_aargb2,f
9224                    ; line_number = 1105
9225                    ;info   1105, 2452
9226 0994 0da6          rlf     _float32_aargb1,f
9227                    ; line_number = 1106
9228                    ;info   1106, 2453
9229 0995 0da7          rlf     _float32_aargb0,f
9230                    ; line_number = 1107
9231                    ;info   1107, 2454
9232 0996 03a8          decf    _float32_exp,f
9233            
9234                    ; line_number = 1109
9235   0997 :   _float32_mround32:
9236                    ; line_number = 1110
9237                    ;info   1110, 2455
9238 0997 1b2a          btfsc   _float32_fpflags, _float32_rnd
9239                    ; line_number = 1111
9240                    ;info   1111, 2456
9241 0998 1c25          btfss   _float32_aargb2, _float32_lsb
9242                    ; line_number = 1112
9243                    ;info   1112, 2457
9244 0999 29a9          goto    _float32_mul32ok
9245                    ; line_number = 1113
9246                    ;info   1113, 2458
9247 099a 1fa4          btfss   _float32_aargb3, _float32_msb
9248                    ; line_number = 1114
9249                    ;info   1114, 2459
9250 099b 29a9          goto    _float32_mul32ok
9251                    ; line_number = 1115
9252                    ;info   1115, 2460
9253 099c 0aa5          incf    _float32_aargb2,f
9254                    ; line_number = 1116
9255                    ;info   1116, 2461
9256 099d 1903          btfsc   _float32_status, _float32_z
9257                    ; line_number = 1117
9258                    ;info   1117, 2462
9259 099e 0aa6          incf    _float32_aargb1,f
9260                    ; line_number = 1118
9261                    ;info   1118, 2463
9262 099f 1903          btfsc   _float32_status, _float32_z
9263                    ; line_number = 1119
9264                    ;info   1119, 2464
9265 09a0 0aa7          incf    _float32_aargb0,f
9266            
9267                    ; # has rounding caused carryout?
9268                    ; line_number = 1122
9269                    ;info   1122, 2465
9270 09a1 1d03          btfss   _float32_status, _float32_z
9271                    ; line_number = 1123
9272                    ;info   1123, 2466
9273 09a2 29a9          goto    _float32_mul32ok
9274                    ; # if so, right shift
9275                    ; line_number = 1125
9276                    ;info   1125, 2467
9277 09a3 0ca7          rrf     _float32_aargb0,f
9278                    ; line_number = 1126
9279                    ;info   1126, 2468
9280 09a4 0ca6          rrf     _float32_aargb1,f
9281                    ; line_number = 1127
9282                    ;info   1127, 2469
9283 09a5 0ca5          rrf     _float32_aargb2,f
9284                    ; line_number = 1128
9285                    ;info   1128, 2470
9286 09a6 0aa8          incf    _float32_exp,f
9287                    ; # check for overflow
9288                    ; line_number = 1130
9289                    ;info   1130, 2471
9290 09a7 1903          btfsc   _float32_status, _float32_z
9291                    ; line_number = 1131
9292                    ;info   1131, 2472
9293 09a8 29ac          goto    _float32_setfov32
9294            
9295                    ; line_number = 1133
9296   09a9 :   _float32_mul32ok:
9297                    ; line_number = 1134
9298                    ;info   1134, 2473
9299 09a9 1fa9          btfss   _float32_sign, _float32_msb
9300                    ; # clear explicit MSB if positive
9301                    ; line_number = 1136
9302                    ;info   1136, 2474
9303 09aa 13a7          bcf     _float32_aargb0, _float32_msb
9304            
9305                    ; line_number = 1138
9306                    ;info   1138, 2475
9307 09ab 3400          retlw   0
9308            
9309                    ; # set floating point underflag
9310                    ; line_number = 1141
9311   09ac :   _float32_setfov32:
9312                    ; line_number = 1142
9313                    ;info   1142, 2476
9314 09ac 14aa          bsf     _float32_fpflags, _float32_fov
9315                    ; # test for saturation
9316                    ; line_number = 1144
9317                    ;info   1144, 2477
9318 09ad 1faa          btfss   _float32_fpflags, _float32_sat
9319                    ; # return error code in WREG
9320                    ; line_number = 1146
9321                    ;info   1146, 2478
9322 09ae 34ff          retlw   255
9323            
9324                    ; line_number = 1148
9325                    ;info   1148, 2479
9326 09af 30ff          movlw   255
9327                    ; # saturate to largest floating
9328                    ; line_number = 1150
9329                    ;info   1150, 2480
9330 09b0 00a8          movwf   _float32_aexp
9331                    ; # point number = 0x FF 7F FF FF
9332                    ; line_number = 1152
9333                    ;info   1152, 2481
9334 09b1 00a7          movwf   _float32_aargb0
9335                    ; # modulo the appropriate sign bit
9336                    ; line_number = 1154
9337                    ;info   1154, 2482
9338 09b2 00a6          movwf   _float32_aargb1
9339                    ; line_number = 1155
9340                    ;info   1155, 2483
9341 09b3 00a5          movwf   _float32_aargb2
9342                    ; line_number = 1156
9343                    ;info   1156, 2484
9344 09b4 0da9          rlf     _float32_sign,f
9345                    ; line_number = 1157
9346                    ;info   1157, 2485
9347 09b5 0ca7          rrf     _float32_aargb0,f
9348                    ; # return error code in WREG
9349                    ; line_number = 1159
9350                    ;info   1159, 2486
9351 09b6 34ff          retlw   255
9352            
9353            
9354                    ; delay after procedure statements=non-uniform
9355                    ; Return instruction suppressed by 'return_suppress'
9356            
9357            
9358            
9359            
9360                    ; line_number = 1162
9361                    ;info   1162, 2487
9362                    ; procedure _float32_divide
9363   09b7 :   _float32_divide:
9364                    ; arguments_none
9365                    ; line_number = 1164
9366                    ;  returns_nothing
9367                    ; line_number = 1165
9368                    ;  return_suppress
9369            
9370                    ; # Floating Point Divide
9371                    ; # Input:  32 bit floating point dividend in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9372                    ; #         32 bit floating point divisor in _float32_bexp, _float32_bargb0, _float32_bargb1, _float32_bargb2
9373                    ; # Use: call fpd32()
9374                    ; # Output: 32 bit floating point quotient in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9375                    ; # Result: _FLOAT32_AARG  <--  _FLOAT32_AARG / _FLOAT32_BARG
9376                    ; # Max Timing:	43+12+23*36+35+14 = 932 clks	RND = 0
9377                    ; #			43+12+23*36+35+50 = 968 clks	RND = 1, SAT = 0
9378                    ; #			43+12+23*36+35+53 = 971 clks    RND = 1, SAT = 1
9379                    ; # Min Timing:	7+6 = 13 clks
9380                    ; # PM: 155		DM: 14
9381            
9382                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
9383                    ; line_number = 1179
9384                    ;  assemble
9385                    ;info   1179, 2487
9386                    ; # test for divide by zero
9387                    ; line_number = 1181
9388                    ;info   1181, 2487
9389 09b7 082f          movf    _float32_bexp,w
9390                    ; line_number = 1182
9391                    ;info   1182, 2488
9392 09b8 1903          btfsc   _float32_status, _float32_z
9393                    ; line_number = 1183
9394                    ;info   1183, 2489
9395 09b9 2a4a          goto    _float32_setfdz32
9396            
9397                    ; line_number = 1185
9398                    ;info   1185, 2490
9399 09ba 0828          movf    _float32_aexp,w
9400                    ; line_number = 1186
9401                    ;info   1186, 2491
9402 09bb 1903          btfsc   _float32_status, _float32_z
9403                    ; line_number = 1187
9404                    ;info   1187, 2492
9405 09bc 2834          goto    _float32_res032
9406            
9407                    ; line_number = 1189
9408   09bd :   _float32_d32bne0:
9409                    ; line_number = 1190
9410                    ;info   1190, 2493
9411 09bd 0827          movf    _float32_aargb0,w
9412                    ; line_number = 1191
9413                    ;info   1191, 2494
9414 09be 062e          xorwf   _float32_bargb0,w
9415                    ; # save sign in _float32_sign
9416                    ; line_number = 1193
9417                    ;info   1193, 2495
9418 09bf 00a9          movwf   _float32_sign
9419                    ; # make argument MSB's explicit
9420                    ; line_number = 1195
9421                    ;info   1195, 2496
9422 09c0 17a7          bsf     _float32_aargb0, _float32_msb
9423                    ; line_number = 1196
9424                    ;info   1196, 2497
9425 09c1 17ae          bsf     _float32_bargb0, _float32_msb
9426            
9427                    ; line_number = 1198
9428   09c2 :   _float32_talign32:
9429                    ; # clear align increment
9430                    ; line_number = 1200
9431                    ;info   1200, 2498
9432 09c2 01b3          clrf    _float32_temp
9433                    ; line_number = 1201
9434                    ;info   1201, 2499
9435 09c3 0827          movf    _float32_aargb0,w
9436                    ; # test for alignment
9437                    ; line_number = 1203
9438                    ;info   1203, 2500
9439 09c4 00a4          movwf   _float32_aargb3
9440                    ; line_number = 1204
9441                    ;info   1204, 2501
9442 09c5 0826          movf    _float32_aargb1,w
9443                    ; line_number = 1205
9444                    ;info   1205, 2502
9445 09c6 00a3          movwf   _float32_aargb4
9446                    ; line_number = 1206
9447                    ;info   1206, 2503
9448 09c7 0825          movf    _float32_aargb2,w
9449                    ; line_number = 1207
9450                    ;info   1207, 2504
9451 09c8 00a2          movwf   _float32_aargb5
9452            
9453                    ; line_number = 1209
9454                    ;info   1209, 2505
9455 09c9 082c          movf    _float32_bargb2,w
9456                    ; line_number = 1210
9457                    ;info   1210, 2506
9458 09ca 02a2          subwf   _float32_aargb5,f
9459                    ; line_number = 1211
9460                    ;info   1211, 2507
9461 09cb 082d          movf    _float32_bargb1,w
9462                    ; line_number = 1212
9463                    ;info   1212, 2508
9464 09cc 1c03          btfss   _float32_status, _float32_c
9465                    ; line_number = 1213
9466                    ;info   1213, 2509
9467 09cd 0f2d          incfsz  _float32_bargb1,w
9468            
9469                    ; line_number = 1215
9470   09ce :   _float32_ts1align32:
9471                    ; line_number = 1216
9472                    ;info   1216, 2510
9473 09ce 02a3          subwf   _float32_aargb4,f
9474                    ; line_number = 1217
9475                    ;info   1217, 2511
9476 09cf 082e          movf    _float32_bargb0,w
9477                    ; line_number = 1218
9478                    ;info   1218, 2512
9479 09d0 1c03          btfss   _float32_status, _float32_c
9480                    ; line_number = 1219
9481                    ;info   1219, 2513
9482 09d1 0f2e          incfsz  _float32_bargb0,w
9483            
9484                    ; line_number = 1221
9485   09d2 :   _float32_ts2align32:
9486                    ; line_number = 1222
9487                    ;info   1222, 2514
9488 09d2 02a4          subwf   _float32_aargb3,f
9489            
9490                    ; line_number = 1224
9491                    ;info   1224, 2515
9492 09d3 01a4          clrf    _float32_aargb3
9493                    ; line_number = 1225
9494                    ;info   1225, 2516
9495 09d4 01a3          clrf    _float32_aargb4
9496                    ; line_number = 1226
9497                    ;info   1226, 2517
9498 09d5 01a2          clrf    _float32_aargb5
9499            
9500                    ; line_number = 1228
9501                    ;info   1228, 2518
9502 09d6 1c03          btfss   _float32_status, _float32_c
9503                    ; line_number = 1229
9504                    ;info   1229, 2519
9505 09d7 29df          goto    _float32_dalign32ok
9506            
9507                    ; # align if necessary
9508                    ; line_number = 1232
9509                    ;info   1232, 2520
9510 09d8 1003          bcf     _float32_status, _float32_c
9511                    ; line_number = 1233
9512                    ;info   1233, 2521
9513 09d9 0ca7          rrf     _float32_aargb0,f
9514                    ; line_number = 1234
9515                    ;info   1234, 2522
9516 09da 0ca6          rrf     _float32_aargb1,f
9517                    ; line_number = 1235
9518                    ;info   1235, 2523
9519 09db 0ca5          rrf     _float32_aargb2,f
9520                    ; line_number = 1236
9521                    ;info   1236, 2524
9522 09dc 0ca4          rrf     _float32_aargb3,f
9523                    ; line_number = 1237
9524                    ;info   1237, 2525
9525 09dd 3001          movlw   1
9526                    ; # save align increment
9527                    ; line_number = 1239
9528                    ;info   1239, 2526
9529 09de 00b3          movwf   _float32_temp
9530            
9531                    ; line_number = 1241
9532   09df :   _float32_dalign32ok:
9533                    ; # compare _float32_aexp and _float32_bexp
9534                    ; line_number = 1243
9535                    ;info   1243, 2527
9536 09df 082f          movf    _float32_bexp,w
9537                    ; line_number = 1244
9538                    ;info   1244, 2528
9539 09e0 02a8          subwf   _float32_exp,f
9540                    ; line_number = 1245
9541                    ;info   1245, 2529
9542 09e1 1c03          btfss   _float32_status, _float32_c
9543                    ; line_number = 1246
9544                    ;info   1246, 2530
9545 09e2 29e9          goto    _float32_altb32
9546            
9547                    ; line_number = 1248
9548   09e3 :   _float32_ageb32:
9549                    ; line_number = 1249
9550                    ;info   1249, 2531
9551 09e3 307e          movlw   _float32_expbias_1
9552                    ; line_number = 1250
9553                    ;info   1250, 2532
9554 09e4 0733          addwf   _float32_temp,w
9555                    ; line_number = 1251
9556                    ;info   1251, 2533
9557 09e5 07a8          addwf   _float32_exp,f
9558                    ; line_number = 1252
9559                    ;info   1252, 2534
9560 09e6 1803          btfsc   _float32_status, _float32_c
9561                    ; line_number = 1253
9562                    ;info   1253, 2535
9563 09e7 29ac          goto    _float32_setfov32
9564                    ; # set overflow flag
9565                    ; line_number = 1255
9566                    ;info   1255, 2536
9567 09e8 29ee          goto    _float32_dargok32
9568            
9569                    ; line_number = 1257
9570   09e9 :   _float32_altb32:
9571                    ; line_number = 1258
9572                    ;info   1258, 2537
9573 09e9 307e          movlw   _float32_expbias_1
9574                    ; line_number = 1259
9575                    ;info   1259, 2538
9576 09ea 0733          addwf   _float32_temp,w
9577                    ; line_number = 1260
9578                    ;info   1260, 2539
9579 09eb 07a8          addwf   _float32_exp,f
9580                    ; line_number = 1261
9581                    ;info   1261, 2540
9582 09ec 1c03          btfss   _float32_status, _float32_c
9583                    ; # set underflow flag
9584                    ; line_number = 1263
9585                    ;info   1263, 2541
9586 09ed 2a3f          goto    _float32_setfun32
9587            
9588                    ; line_number = 1265
9589   09ee :   _float32_dargok32:
9590                    ; # initialize counter
9591                    ; line_number = 1267
9592                    ;info   1267, 2542
9593 09ee 3018          movlw   24
9594                    ; line_number = 1268
9595                    ;info   1268, 2543
9596 09ef 00b2          movwf   _float32_tempb1
9597            
9598                    ; line_number = 1270
9599   09f0 :   _float32_dloop32:
9600                    ; # left shift
9601                    ; line_number = 1272
9602                    ;info   1272, 2544
9603 09f0 0da2          rlf     _float32_aargb5,f
9604                    ; line_number = 1273
9605                    ;info   1273, 2545
9606 09f1 0da3          rlf     _float32_aargb4,f
9607                    ; line_number = 1274
9608                    ;info   1274, 2546
9609 09f2 0da4          rlf     _float32_aargb3,f
9610                    ; line_number = 1275
9611                    ;info   1275, 2547
9612 09f3 0da5          rlf     _float32_aargb2,f
9613                    ; line_number = 1276
9614                    ;info   1276, 2548
9615 09f4 0da6          rlf     _float32_aargb1,f
9616                    ; line_number = 1277
9617                    ;info   1277, 2549
9618 09f5 0da7          rlf     _float32_aargb0,f
9619                    ; line_number = 1278
9620                    ;info   1278, 2550
9621 09f6 0db3          rlf     _float32_temp,f
9622            
9623                    ; # subtract
9624                    ; line_number = 1281
9625                    ;info   1281, 2551
9626 09f7 082c          movf    _float32_bargb2,w
9627                    ; line_number = 1282
9628                    ;info   1282, 2552
9629 09f8 02a5          subwf   _float32_aargb2,f
9630                    ; line_number = 1283
9631                    ;info   1283, 2553
9632 09f9 082d          movf    _float32_bargb1,w
9633                    ; line_number = 1284
9634                    ;info   1284, 2554
9635 09fa 1c03          btfss   _float32_status, _float32_c
9636                    ; line_number = 1285
9637                    ;info   1285, 2555
9638 09fb 0f2d          incfsz  _float32_bargb1,w
9639                    ; line_number = 1286
9640   09fc :   _float32_ds132:
9641                    ; line_number = 1287
9642                    ;info   1287, 2556
9643 09fc 02a6          subwf   _float32_aargb1,f
9644            
9645                    ; line_number = 1289
9646                    ;info   1289, 2557
9647 09fd 082e          movf    _float32_bargb0,w
9648                    ; line_number = 1290
9649                    ;info   1290, 2558
9650 09fe 1c03          btfss   _float32_status, _float32_c
9651                    ; line_number = 1291
9652                    ;info   1291, 2559
9653 09ff 0f2e          incfsz  _float32_bargb0,w
9654                    ; line_number = 1292
9655   0a00 :   _float32_DS232:
9656                    ; line_number = 1293
9657                    ;info   1293, 2560
9658 0a00 02a7          subwf   _float32_aargb0,f
9659            
9660                    ; line_number = 1295
9661                    ;info   1295, 2561
9662 0a01 0d2e          rlf     _float32_bargb0,w
9663                    ; line_number = 1296
9664                    ;info   1296, 2562
9665 0a02 04b3          iorwf   _float32_temp,f
9666            
9667                    ; # test for restore
9668                    ; line_number = 1299
9669                    ;info   1299, 2563
9670 0a03 1c33          btfss   _float32_temp, _float32_lsb
9671                    ; line_number = 1300
9672                    ;info   1300, 2564
9673 0a04 2a07          goto    _float32_drest32
9674            
9675                    ; line_number = 1302
9676                    ;info   1302, 2565
9677 0a05 1422          bsf     _float32_aargb5, _float32_lsb
9678                    ; line_number = 1303
9679                    ;info   1303, 2566
9680 0a06 2a12          goto    _float32_dok32
9681            
9682                    ; line_number = 1305
9683   0a07 :   _float32_drest32:
9684                    ; # restore if necessary
9685                    ; line_number = 1307
9686                    ;info   1307, 2567
9687 0a07 082c          movf    _float32_bargb2,w
9688                    ; line_number = 1308
9689                    ;info   1308, 2568
9690 0a08 07a5          addwf   _float32_aargb2,f
9691                    ; line_number = 1309
9692                    ;info   1309, 2569
9693 0a09 082d          movf    _float32_bargb1,w
9694                    ; line_number = 1310
9695                    ;info   1310, 2570
9696 0a0a 1803          btfsc   _float32_status, _float32_c
9697                    ; line_number = 1311
9698                    ;info   1311, 2571
9699 0a0b 0f2d          incfsz  _float32_bargb1,w
9700                    ; line_number = 1312
9701   0a0c :   _float32_darest32:
9702                    ; line_number = 1313
9703                    ;info   1313, 2572
9704 0a0c 07a6          addwf   _float32_aargb1,f
9705            
9706                    ; line_number = 1315
9707                    ;info   1315, 2573
9708 0a0d 082e          movf    _float32_bargb0,w
9709                    ; line_number = 1316
9710                    ;info   1316, 2574
9711 0a0e 1803          btfsc   _float32_status, _float32_c
9712                    ; line_number = 1317
9713                    ;info   1317, 2575
9714 0a0f 0a2e          incf    _float32_bargb0,w
9715                    ; line_number = 1318
9716                    ;info   1318, 2576
9717 0a10 07a7          addwf   _float32_aargb0,f
9718            
9719                    ; line_number = 1320
9720                    ;info   1320, 2577
9721 0a11 1022          bcf     _float32_aargb5, _float32_lsb
9722            
9723                    ; line_number = 1322
9724   0a12 :   _float32_dok32:
9725                    ; line_number = 1323
9726                    ;info   1323, 2578
9727 0a12 0bb2          decfsz  _float32_tempb1,f
9728                    ; line_number = 1324
9729                    ;info   1324, 2579
9730 0a13 29f0          goto    _float32_dloop32
9731            
9732                    ; line_number = 1326
9733   0a14 :   _float32_dround32:
9734                    ; line_number = 1327
9735                    ;info   1327, 2580
9736 0a14 1b2a          btfsc   _float32_fpflags, _float32_rnd
9737                    ; line_number = 1328
9738                    ;info   1328, 2581
9739 0a15 1c22          btfss   _float32_aargb5, _float32_lsb
9740                    ; line_number = 1329
9741                    ;info   1329, 2582
9742 0a16 2a36          goto    _float32_div32ok
9743                    ; line_number = 1330
9744                    ;info   1330, 2583
9745 0a17 1003          bcf     _float32_status, _float32_c
9746                    ; # compute next significant bit
9747                    ; line_number = 1332
9748                    ;info   1332, 2584
9749 0a18 0da5          rlf     _float32_aargb2,f
9750                    ; # for rounding
9751                    ; line_number = 1334
9752                    ;info   1334, 2585
9753 0a19 0da6          rlf     _float32_aargb1,f
9754                    ; line_number = 1335
9755                    ;info   1335, 2586
9756 0a1a 0da7          rlf     _float32_aargb0,f
9757                    ; line_number = 1336
9758                    ;info   1336, 2587
9759 0a1b 0db3          rlf     _float32_temp,f
9760            
9761                    ; # subtract
9762                    ; line_number = 1339
9763                    ;info   1339, 2588
9764 0a1c 082c          movf    _float32_bargb2,w
9765                    ; line_number = 1340
9766                    ;info   1340, 2589
9767 0a1d 02a5          subwf   _float32_aargb2,f
9768                    ; line_number = 1341
9769                    ;info   1341, 2590
9770 0a1e 082d          movf    _float32_bargb1,w
9771                    ; line_number = 1342
9772                    ;info   1342, 2591
9773 0a1f 1c03          btfss   _float32_status, _float32_c
9774                    ; line_number = 1343
9775                    ;info   1343, 2592
9776 0a20 0f2d          incfsz  _float32_bargb1,w
9777                    ; line_number = 1344
9778                    ;info   1344, 2593
9779 0a21 02a6          subwf   _float32_aargb1,f
9780            
9781                    ; line_number = 1346
9782                    ;info   1346, 2594
9783 0a22 082e          movf    _float32_bargb0,w
9784                    ; line_number = 1347
9785                    ;info   1347, 2595
9786 0a23 1c03          btfss   _float32_status, _float32_c
9787                    ; line_number = 1348
9788                    ;info   1348, 2596
9789 0a24 0f2e          incfsz  _float32_bargb0,w
9790                    ; line_number = 1349
9791                    ;info   1349, 2597
9792 0a25 02a7          subwf   _float32_aargb0,f
9793            
9794                    ; line_number = 1351
9795                    ;info   1351, 2598
9796 0a26 0d2e          rlf     _float32_bargb0,w
9797                    ; line_number = 1352
9798                    ;info   1352, 2599
9799 0a27 0433          iorwf   _float32_temp,w
9800                    ; line_number = 1353
9801                    ;info   1353, 2600
9802 0a28 3901          andlw   1
9803            
9804                    ; line_number = 1355
9805                    ;info   1355, 2601
9806 0a29 07a2          addwf   _float32_aargb5,f
9807                    ; line_number = 1356
9808                    ;info   1356, 2602
9809 0a2a 1803          btfsc   _float32_status, _float32_c
9810                    ; line_number = 1357
9811                    ;info   1357, 2603
9812 0a2b 0aa3          incf    _float32_aargb4,f
9813                    ; line_number = 1358
9814                    ;info   1358, 2604
9815 0a2c 1903          btfsc   _float32_status, _float32_z
9816                    ; line_number = 1359
9817                    ;info   1359, 2605
9818 0a2d 0aa4          incf    _float32_aargb3,f
9819            
9820                    ; # test if rounding caused carryout
9821                    ; line_number = 1362
9822                    ;info   1362, 2606
9823 0a2e 1d03          btfss   _float32_status, _float32_z
9824                    ; line_number = 1363
9825                    ;info   1363, 2607
9826 0a2f 2a36          goto    _float32_div32ok
9827                    ; line_number = 1364
9828                    ;info   1364, 2608
9829 0a30 0ca4          rrf     _float32_aargb3,f
9830                    ; line_number = 1365
9831                    ;info   1365, 2609
9832 0a31 0ca3          rrf     _float32_aargb4,f
9833                    ; line_number = 1366
9834                    ;info   1366, 2610
9835 0a32 0ca2          rrf     _float32_aargb5,f
9836                    ; line_number = 1367
9837                    ;info   1367, 2611
9838 0a33 0aa8          incf    _float32_exp,f
9839                    ; # test for overflow#
9840                    ; line_number = 1369
9841                    ;info   1369, 2612
9842 0a34 1903          btfsc   _float32_status, _float32_z
9843                    ; line_number = 1370
9844                    ;info   1370, 2613
9845 0a35 29ac          goto    _float32_setfov32
9846            
9847                    ; line_number = 1372
9848   0a36 :   _float32_div32ok:
9849                    ; line_number = 1373
9850                    ;info   1373, 2614
9851 0a36 1fa9          btfss   _float32_sign, _float32_msb
9852                    ; # clear explicit MSB if positive
9853                    ; line_number = 1375
9854                    ;info   1375, 2615
9855 0a37 13a4          bcf     _float32_aargb3, _float32_msb
9856            
9857                    ; line_number = 1377
9858                    ;info   1377, 2616
9859 0a38 0824          movf    _float32_aargb3,w
9860                    ; # move result to _FLOAT32_AARG
9861                    ; line_number = 1379
9862                    ;info   1379, 2617
9863 0a39 00a7          movwf   _float32_aargb0
9864                    ; line_number = 1380
9865                    ;info   1380, 2618
9866 0a3a 0823          movf    _float32_aargb4,w
9867                    ; line_number = 1381
9868                    ;info   1381, 2619
9869 0a3b 00a6          movwf   _float32_aargb1
9870                    ; line_number = 1382
9871                    ;info   1382, 2620
9872 0a3c 0822          movf    _float32_aargb5,w
9873                    ; line_number = 1383
9874                    ;info   1383, 2621
9875 0a3d 00a5          movwf   _float32_aargb2
9876            
9877                    ; line_number = 1385
9878                    ;info   1385, 2622
9879 0a3e 3400          retlw   0
9880            
9881                    ; line_number = 1387
9882   0a3f :   _float32_setfun32:
9883                    ; # set floating point underflag
9884                    ; line_number = 1389
9885                    ;info   1389, 2623
9886 0a3f 152a          bsf     _float32_fpflags, _float32_fun
9887                    ; # test for saturation
9888                    ; line_number = 1391
9889                    ;info   1391, 2624
9890 0a40 1faa          btfss   _float32_fpflags, _float32_sat
9891                    ; # return error code in WREG
9892                    ; line_number = 1393
9893                    ;info   1393, 2625
9894 0a41 34ff          retlw   255
9895            
9896                    ; # saturate to smallest floating
9897                    ; line_number = 1396
9898                    ;info   1396, 2626
9899 0a42 3001          movlw   1
9900                    ; # point number = 0x 01 00 00 00
9901                    ; line_number = 1398
9902                    ;info   1398, 2627
9903 0a43 00a8          movwf   _float32_aexp
9904                    ; # modulo the appropriate sign bit
9905                    ; line_number = 1400
9906                    ;info   1400, 2628
9907 0a44 01a7          clrf    _float32_aargb0
9908                    ; line_number = 1401
9909                    ;info   1401, 2629
9910 0a45 01a6          clrf    _float32_aargb1
9911                    ; line_number = 1402
9912                    ;info   1402, 2630
9913 0a46 01a5          clrf    _float32_aargb2
9914                    ; line_number = 1403
9915                    ;info   1403, 2631
9916 0a47 0da9          rlf     _float32_sign,f
9917                    ; line_number = 1404
9918                    ;info   1404, 2632
9919 0a48 0ca7          rrf     _float32_aargb0,f
9920                    ; # return error code in WREG
9921                    ; line_number = 1406
9922                    ;info   1406, 2633
9923 0a49 34ff          retlw   255
9924            
9925                    ; # set divide by zero flag
9926                    ; line_number = 1409
9927   0a4a :   _float32_setfdz32:
9928                    ; line_number = 1410
9929                    ;info   1410, 2634
9930 0a4a 15aa          bsf     _float32_fpflags, _float32_fdz
9931                    ; line_number = 1411
9932                    ;info   1411, 2635
9933 0a4b 34ff          retlw   255
9934            
9935            
9936                    ; delay after procedure statements=non-uniform
9937                    ; Return instruction suppressed by 'return_suppress'
9938            
9939            
9940            
9941            
9942                    ; line_number = 1414
9943                    ;info   1414, 2636
9944                    ; procedure _float32_subtract
9945   0a4c :   _float32_subtract:
9946                    ; arguments_none
9947                    ; line_number = 1416
9948                    ;  returns_nothing
9949                    ; line_number = 1417
9950                    ;  return_suppress
9951            
9952                    ; # Floating Point Subtract
9953                    ; # Input:  32 bit floating point number in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9954                    ; #         32 bit floating point number in _float32_bexp, _float32_bargb0, _float32_bargb1, _float32_bargb2
9955                    ; # Use: call fps32()
9956                    ; # Output: 32 bit floating point sum in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9957                    ; # Result: _FLOAT32_AARG  <--  _FLOAT32_AARG - _FLOAT32_BARG
9958                    ; # Max Timing:	2+251 = 253 clks	RND = 0
9959                    ; #			2+265 = 267 clks	RND = 1, SAT = 0
9960                    ; #			2+271 = 273 clks	RND = 1, SAT = 1
9961                    ; # Min Timing:	2+12 = 14 clks
9962                    ; # PM: 2+146 = 148	DM: 14
9963            
9964                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
9965                    ; line_number = 1431
9966                    ;  assemble
9967                    ;info   1431, 2636
9968                    ; line_number = 1432
9969                    ;info   1432, 2636
9970 0a4c 3080          movlw   128
9971                    ; line_number = 1433
9972                    ;info   1433, 2637
9973 0a4d 06ae          xorwf   _float32_bargb0,f
9974                    ; # This procedure runs into FPA32
9975                    ; #goto fpa32
9976            
9977            
9978                    ; delay after procedure statements=non-uniform
9979                    ; Return instruction suppressed by 'return_suppress'
9980            
9981            
9982            
9983            
9984                    ; line_number = 1438
9985                    ;info   1438, 2638
9986                    ; procedure _float32_add
9987   0a4e :   _float32_add:
9988                    ; arguments_none
9989                    ; line_number = 1440
9990                    ;  returns_nothing
9991                    ; line_number = 1441
9992                    ;  return_suppress
9993            
9994                    ; # Floating Point Add
9995                    ; # Input: 32 bit floating point number in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9996                    ; #        32 bit floating point number in _float32_bexp, _float32_bargb0, _float32_bargb1, _float32_bargb2
9997                    ; # Use: call fpa32()
9998                    ; # Output: 32 bit floating point sum in _float32_aexp, _float32_aargb0, _float32_aargb1, _float32_aargb2
9999                    ; # Result: _FLOAT32_AARG  <--  _FLOAT32_AARG - _FLOAT32_BARG
10000                   ; # Max Timing:	31+41+6*7+6+41+90 = 251 clks	RND = 0
10001                   ; #			31+41+6*7+6+55+90 = 265 clks	RND = 1, SAT = 0
10002                   ; #			31+41+6*7+6+55+96 = 271 clks	RND = 1, SAT = 1
10003                   ; # Min Timing:	8+4 = 12 clks
10004                   ; # PM: 146		DM: 14
10005           
10006                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
10007                   ; line_number = 1455
10008                   ;  assemble
10009                   ;info   1455, 2638
10010                   ; # exclusive or of signs in temp
10011                   ; line_number = 1457
10012                   ;info   1457, 2638
100130a4e 0827          movf    _float32_aargb0,w
10014                   ; line_number = 1458
10015                   ;info   1458, 2639
100160a4f 062e          xorwf   _float32_bargb0,w
10017                   ; line_number = 1459
10018                   ;info   1459, 2640
100190a50 00b3          movwf   _float32_temp
10020           
10021                   ; # clear extended byte
10022                   ; line_number = 1462
10023                   ;info   1462, 2641
100240a51 01a4          clrf    _float32_aargb3
10025                   ; line_number = 1463
10026                   ;info   1463, 2642
100270a52 01ab          clrf    _float32_bargb3
10028           
10029                   ; # use _FLOAT32_AARG if _float32_aexp >= _float32_bexp
10030                   ; line_number = 1466
10031                   ;info   1466, 2643
100320a53 0828          movf    _float32_aexp,w
10033                   ; line_number = 1467
10034                   ;info   1467, 2644
100350a54 022f          subwf   _float32_bexp,w
10036                   ; line_number = 1468
10037                   ;info   1468, 2645
100380a55 1c03          btfss   _float32_status, _float32_c
10039                   ; line_number = 1469
10040                   ;info   1469, 2646
100410a56 2a6f          goto    _float32_usea32
10042           
10043                   ; # use _FLOAT32_BARG if _float32_aexp < _float32_bexp
10044                   ; line_number = 1472
10045                   ;info   1472, 2647
100460a57 082f          movf    _float32_bexp,w
10047                   ; # therefore, swap _FLOAT32_AARG and _FLOAT32_BARG
10048                   ; line_number = 1474
10049                   ;info   1474, 2648
100500a58 00a2          movwf   _float32_aargb5
10051                   ; line_number = 1475
10052                   ;info   1475, 2649
100530a59 0828          movf    _float32_aexp,w
10054                   ; line_number = 1476
10055                   ;info   1476, 2650
100560a5a 00af          movwf   _float32_bexp
10057                   ; line_number = 1477
10058                   ;info   1477, 2651
100590a5b 0822          movf    _float32_aargb5,w
10060                   ; line_number = 1478
10061                   ;info   1478, 2652
100620a5c 00a8          movwf   _float32_aexp
10063           
10064                   ; line_number = 1480
10065                   ;info   1480, 2653
100660a5d 082e          movf    _float32_bargb0,w
10067                   ; line_number = 1481
10068                   ;info   1481, 2654
100690a5e 00a2          movwf   _float32_aargb5
10070                   ; line_number = 1482
10071                   ;info   1482, 2655
100720a5f 0827          movf    _float32_aargb0,w
10073                   ; line_number = 1483
10074                   ;info   1483, 2656
100750a60 00ae          movwf   _float32_bargb0
10076                   ; line_number = 1484
10077                   ;info   1484, 2657
100780a61 0822          movf    _float32_aargb5,w
10079                   ; line_number = 1485
10080                   ;info   1485, 2658
100810a62 00a7          movwf   _float32_aargb0
10082           
10083                   ; line_number = 1487
10084                   ;info   1487, 2659
100850a63 082d          movf    _float32_bargb1,w
10086                   ; line_number = 1488
10087                   ;info   1488, 2660
100880a64 00a2          movwf   _float32_aargb5
10089                   ; line_number = 1489
10090                   ;info   1489, 2661
100910a65 0826          movf    _float32_aargb1,w
10092                   ; line_number = 1490
10093                   ;info   1490, 2662
100940a66 00ad          movwf   _float32_bargb1
10095                   ; line_number = 1491
10096                   ;info   1491, 2663
100970a67 0822          movf    _float32_aargb5,w
10098                   ; line_number = 1492
10099                   ;info   1492, 2664
101000a68 00a6          movwf   _float32_aargb1
10101           
10102                   ; line_number = 1494
10103                   ;info   1494, 2665
101040a69 082c          movf    _float32_bargb2,w
10105                   ; line_number = 1495
10106                   ;info   1495, 2666
101070a6a 00a2          movwf   _float32_aargb5
10108                   ; line_number = 1496
10109                   ;info   1496, 2667
101100a6b 0825          movf    _float32_aargb2,w
10111                   ; line_number = 1497
10112                   ;info   1497, 2668
101130a6c 00ac          movwf   _float32_bargb2
10114                   ; line_number = 1498
10115                   ;info   1498, 2669
101160a6d 0822          movf    _float32_aargb5,w
10117                   ; line_number = 1499
10118                   ;info   1499, 2670
101190a6e 00a5          movwf   _float32_aargb2
10120           
10121                   ; line_number = 1501
10122  0a6f :   _float32_usea32:
10123                   ; # return _FLOAT32_AARG if _FLOAT32_BARG = 0
10124                   ; line_number = 1503
10125                   ;info   1503, 2671
101260a6f 082f          movf    _float32_bexp,w
10127                   ; line_number = 1504
10128                   ;info   1504, 2672
101290a70 1903          btfsc   _float32_status, _float32_z
10130                   ; line_number = 1505
10131                   ;info   1505, 2673
101320a71 3400          retlw   0
10133           
10134                   ; line_number = 1507
10135                   ;info   1507, 2674
101360a72 0827          movf    _float32_aargb0,w
10137                   ; # save sign in _float32_sign
10138                   ; line_number = 1509
10139                   ;info   1509, 2675
101400a73 00a9          movwf   _float32_sign
10141                   ; # make MSB's explicit
10142                   ; line_number = 1511
10143                   ;info   1511, 2676
101440a74 17a7          bsf     _float32_aargb0, _float32_msb
10145                   ; line_number = 1512
10146                   ;info   1512, 2677
101470a75 17ae          bsf     _float32_bargb0, _float32_msb
10148           
10149                   ; # compute shift count in _float32_bexp
10150                   ; line_number = 1515
10151                   ;info   1515, 2678
101520a76 082f          movf    _float32_bexp,w
10153                   ; line_number = 1516
10154                   ;info   1516, 2679
101550a77 0228          subwf   _float32_aexp,w
10156                   ; line_number = 1517
10157                   ;info   1517, 2680
101580a78 00af          movwf   _float32_bexp
10159                   ; line_number = 1518
10160                   ;info   1518, 2681
101610a79 1903          btfsc   _float32_status, _float32_z
10162                   ; line_number = 1519
10163                   ;info   1519, 2682
101640a7a 2aa2          goto    _float32_aligned32
10165           
10166                   ; line_number = 1521
10167                   ;info   1521, 2683
101680a7b 3008          movlw   8
10169                   ; line_number = 1522
10170                   ;info   1522, 2684
101710a7c 022f          subwf   _float32_bexp,w
10172                   ; # if _float32_bexp >= 8, do byte shift
10173                   ; line_number = 1524
10174                   ;info   1524, 2685
101750a7d 1c03          btfss   _float32_status, _float32_c
10176                   ; line_number = 1525
10177                   ;info   1525, 2686
101780a7e 2a98          goto    _float32_alignb32
10179                   ; line_number = 1526
10180                   ;info   1526, 2687
101810a7f 00af          movwf   _float32_bexp
10182                   ; # keep for postnormalization
10183                   ; line_number = 1528
10184                   ;info   1528, 2688
101850a80 082c          movf    _float32_bargb2,w
10186                   ; line_number = 1529
10187                   ;info   1529, 2689
101880a81 00ab          movwf   _float32_bargb3
10189                   ; line_number = 1530
10190                   ;info   1530, 2690
101910a82 082d          movf    _float32_bargb1,w
10192                   ; line_number = 1531
10193                   ;info   1531, 2691
101940a83 00ac          movwf   _float32_bargb2
10195                   ; line_number = 1532
10196                   ;info   1532, 2692
101970a84 082e          movf    _float32_bargb0,w
10198                   ; line_number = 1533
10199                   ;info   1533, 2693
102000a85 00ad          movwf   _float32_bargb1
10201                   ; line_number = 1534
10202                   ;info   1534, 2694
102030a86 01ae          clrf    _float32_bargb0
10204           
10205                   ; line_number = 1536
10206                   ;info   1536, 2695
102070a87 3008          movlw   8
10208                   ; line_number = 1537
10209                   ;info   1537, 2696
102100a88 022f          subwf   _float32_bexp,w
10211                   ; # if _float32_bexp >= 8, do byte shift
10212                   ; line_number = 1539
10213                   ;info   1539, 2697
102140a89 1c03          btfss   _float32_status, _float32_c
10215                   ; line_number = 1540
10216                   ;info   1540, 2698
102170a8a 2a98          goto    _float32_alignb32
10218                   ; line_number = 1541
10219                   ;info   1541, 2699
102200a8b 00af          movwf   _float32_bexp
10221                   ; # keep for postnormalization
10222                   ; line_number = 1543
10223                   ;info   1543, 2700
102240a8c 082c          movf    _float32_bargb2,w
10225                   ; line_number = 1544
10226                   ;info   1544, 2701
102270a8d 00ab          movwf   _float32_bargb3
10228                   ; line_number = 1545
10229                   ;info   1545, 2702
102300a8e 082d          movf    _float32_bargb1,w
10231                   ; line_number = 1546
10232                   ;info   1546, 2703
102330a8f 00ac          movwf   _float32_bargb2
10234                   ; line_number = 1547
10235                   ;info   1547, 2704
102360a90 01ad          clrf    _float32_bargb1
10237           
10238                   ; line_number = 1549
10239                   ;info   1549, 2705
102400a91 3008          movlw   8
10241                   ; line_number = 1550
10242                   ;info   1550, 2706
102430a92 022f          subwf   _float32_bexp,w
10244                   ; # if _float32_bexp >= 8, _FLOAT32_BARG = 0 relative to _FLOAT32_AARG
10245                   ; line_number = 1552
10246                   ;info   1552, 2707
102470a93 1c03          btfss   _float32_status, _float32_c
10248                   ; line_number = 1553
10249                   ;info   1553, 2708
102500a94 2a98          goto    _float32_alignb32
10251                   ; line_number = 1554
10252                   ;info   1554, 2709
102530a95 0829          movf    _float32_sign,w
10254                   ; line_number = 1555
10255                   ;info   1555, 2710
102560a96 00a7          movwf   _float32_aargb0
10257                   ; line_number = 1556
10258                   ;info   1556, 2711
102590a97 3400          retlw   0
10260           
10261                   ; line_number = 1558
10262  0a98 :   _float32_alignb32:
10263                   ; # already aligned if _float32_bexp = 0
10264                   ; line_number = 1560
10265                   ;info   1560, 2712
102660a98 082f          movf    _float32_bexp,w
10267                   ; line_number = 1561
10268                   ;info   1561, 2713
102690a99 1903          btfsc   _float32_status, _float32_z
10270                   ; line_number = 1562
10271                   ;info   1562, 2714
102720a9a 2aa2          goto    _float32_aligned32
10273           
10274                   ; line_number = 1564
10275  0a9b :   _float32_aloopb32:
10276                   ; # right shift by _float32_bexp
10277                   ; line_number = 1566
10278                   ;info   1566, 2715
102790a9b 1003          bcf     _float32_status, _float32_c
10280                   ; line_number = 1567
10281                   ;info   1567, 2716
102820a9c 0cae          rrf     _float32_bargb0,f
10283                   ; line_number = 1568
10284                   ;info   1568, 2717
102850a9d 0cad          rrf     _float32_bargb1,f
10286                   ; line_number = 1569
10287                   ;info   1569, 2718
102880a9e 0cac          rrf     _float32_bargb2,f
10289                   ; line_number = 1570
10290                   ;info   1570, 2719
102910a9f 0cab          rrf     _float32_bargb3,f
10292                   ; line_number = 1571
10293                   ;info   1571, 2720
102940aa0 0baf          decfsz  _float32_bexp,f
10295                   ; line_number = 1572
10296                   ;info   1572, 2721
102970aa1 2a9b          goto    _float32_aloopb32
10298           
10299                   ; line_number = 1574
10300  0aa2 :   _float32_aligned32:
10301                   ; # negate if signs opposite
10302                   ; line_number = 1576
10303                   ;info   1576, 2722
103040aa2 1fb3          btfss   _float32_temp, _float32_msb
10305                   ; line_number = 1577
10306                   ;info   1577, 2723
103070aa3 2aaf          goto    _float32_aok32
10308           
10309                   ; line_number = 1579
10310                   ;info   1579, 2724
103110aa4 09ab          comf    _float32_bargb3,f
10312                   ; line_number = 1580
10313                   ;info   1580, 2725
103140aa5 09ac          comf    _float32_bargb2,f
10315                   ; line_number = 1581
10316                   ;info   1581, 2726
103170aa6 09ad          comf    _float32_bargb1,f
10318                   ; line_number = 1582
10319                   ;info   1582, 2727
103200aa7 09ae          comf    _float32_bargb0,f
10321                   ; line_number = 1583
10322                   ;info   1583, 2728
103230aa8 0aab          incf    _float32_bargb3,f
10324                   ; line_number = 1584
10325                   ;info   1584, 2729
103260aa9 1903          btfsc   _float32_status, _float32_z
10327                   ; line_number = 1585
10328                   ;info   1585, 2730
103290aaa 0aac          incf    _float32_bargb2,f
10330                   ; line_number = 1586
10331                   ;info   1586, 2731
103320aab 1903          btfsc   _float32_status, _float32_z
10333                   ; line_number = 1587
10334                   ;info   1587, 2732
103350aac 0aad          incf    _float32_bargb1,f
10336                   ; line_number = 1588
10337                   ;info   1588, 2733
103380aad 1903          btfsc   _float32_status, _float32_z
10339                   ; line_number = 1589
10340                   ;info   1589, 2734
103410aae 0aae          incf    _float32_bargb0,f
10342           
10343                   ; line_number = 1591
10344  0aaf :   _float32_aok32:
10345                   ; line_number = 1592
10346                   ;info   1592, 2735
103470aaf 082b          movf    _float32_bargb3,w
10348                   ; line_number = 1593
10349                   ;info   1593, 2736
103500ab0 07a4          addwf   _float32_aargb3,f
10351                   ; line_number = 1594
10352                   ;info   1594, 2737
103530ab1 082c          movf    _float32_bargb2,w
10354                   ; line_number = 1595
10355                   ;info   1595, 2738
103560ab2 1803          btfsc   _float32_status, _float32_c
10357                   ; line_number = 1596
10358                   ;info   1596, 2739
103590ab3 0f2c          incfsz  _float32_bargb2,w
10360                   ; line_number = 1597
10361                   ;info   1597, 2740
103620ab4 07a5          addwf   _float32_aargb2,f
10363                   ; line_number = 1598
10364                   ;info   1598, 2741
103650ab5 082d          movf    _float32_bargb1,w
10366                   ; line_number = 1599
10367                   ;info   1599, 2742
103680ab6 1803          btfsc   _float32_status, _float32_c
10369                   ; line_number = 1600
10370                   ;info   1600, 2743
103710ab7 0f2d          incfsz  _float32_bargb1,w
10372                   ; line_number = 1601
10373                   ;info   1601, 2744
103740ab8 07a6          addwf   _float32_aargb1,f
10375                   ; line_number = 1602
10376                   ;info   1602, 2745
103770ab9 082e          movf    _float32_bargb0,w
10378                   ; line_number = 1603
10379                   ;info   1603, 2746
103800aba 1803          btfsc   _float32_status, _float32_c
10381                   ; line_number = 1604
10382                   ;info   1604, 2747
103830abb 0f2e          incfsz  _float32_bargb0,w
10384                   ; line_number = 1605
10385                   ;info   1605, 2748
103860abc 07a7          addwf   _float32_aargb0,f
10387           
10388                   ; line_number = 1607
10389                   ;info   1607, 2749
103900abd 1bb3          btfsc   _float32_temp, _float32_msb
10391                   ; line_number = 1608
10392                   ;info   1608, 2750
103930abe 2ac8          goto    _float32_acomp32
10394                   ; line_number = 1609
10395                   ;info   1609, 2751
103960abf 1c03          btfss   _float32_status, _float32_c
10397                   ; line_number = 1610
10398                   ;info   1610, 2752
103990ac0 287a          goto    _float32_nrmrnd4032
10400           
10401                   ; # shift right and increment exp
10402                   ; line_number = 1613
10403                   ;info   1613, 2753
104040ac1 0ca7          rrf     _float32_aargb0,f
10405                   ; line_number = 1614
10406                   ;info   1614, 2754
104070ac2 0ca6          rrf     _float32_aargb1,f
10408                   ; line_number = 1615
10409                   ;info   1615, 2755
104100ac3 0ca5          rrf     _float32_aargb2,f
10411                   ; line_number = 1616
10412                   ;info   1616, 2756
104130ac4 0ca4          rrf     _float32_aargb3,f
10414                   ; line_number = 1617
10415                   ;info   1617, 2757
104160ac5 0fa8          incfsz  _float32_aexp,f
10417                   ; line_number = 1618
10418                   ;info   1618, 2758
104190ac6 287a          goto    _float32_nrmrnd4032
10420                   ; line_number = 1619
10421                   ;info   1619, 2759
104220ac7 29ac          goto    _float32_setfov32
10423           
10424                   ; line_number = 1621
10425  0ac8 :   _float32_acomp32:
10426                   ; line_number = 1622
10427                   ;info   1622, 2760
104280ac8 1803          btfsc   _float32_status, _float32_c
10429                   ; # normalize and fix sign
10430                   ; line_number = 1624
10431                   ;info   1624, 2761
104320ac9 284b          goto    _float32_normalize40
10433           
10434                   ; line_number = 1626
10435                   ;info   1626, 2762
104360aca 09a4          comf    _float32_aargb3,f
10437                   ; # negate, toggle sign bit and
10438                   ; line_number = 1628
10439                   ;info   1628, 2763
104400acb 09a5          comf    _float32_aargb2,f
10441                   ; # then normalize
10442                   ; line_number = 1630
10443                   ;info   1630, 2764
104440acc 09a6          comf    _float32_aargb1,f
10445                   ; line_number = 1631
10446                   ;info   1631, 2765
104470acd 09a7          comf    _float32_aargb0,f
10448                   ; line_number = 1632
10449                   ;info   1632, 2766
104500ace 0aa4          incf    _float32_aargb3,f
10451                   ; line_number = 1633
10452                   ;info   1633, 2767
104530acf 1903          btfsc   _float32_status, _float32_z
10454                   ; line_number = 1634
10455                   ;info   1634, 2768
104560ad0 0aa5          incf    _float32_aargb2,f
10457                   ; line_number = 1635
10458                   ;info   1635, 2769
104590ad1 1903          btfsc   _float32_status, _float32_z
10460                   ; line_number = 1636
10461                   ;info   1636, 2770
104620ad2 0aa6          incf    _float32_aargb1,f
10463                   ; line_number = 1637
10464                   ;info   1637, 2771
104650ad3 1903          btfsc   _float32_status, _float32_z
10466                   ; line_number = 1638
10467                   ;info   1638, 2772
104680ad4 0aa7          incf    _float32_aargb0,f
10469           
10470                   ; line_number = 1640
10471                   ;info   1640, 2773
104720ad5 3080          movlw   128
10473                   ; line_number = 1641
10474                   ;info   1641, 2774
104750ad6 06a9          xorwf   _float32_sign,f
10476                   ; line_number = 1642
10477                   ;info   1642, 2775
104780ad7 280e          goto    _float32_nrm32
10479           
10480           
10481                   ; delay after procedure statements=non-uniform
10482                   ; Return instruction suppressed by 'return_suppress'
10483           
10484           
10485           
10486           
10487                   ; buffer = '_float32'
10488                   ; line_number = 50
10489                   ;info   50, 2776
10490                   ; procedure _float32_pointer_load
10491  0ad8 :   _float32_pointer_load:
10492                   ; Last argument is sitting in W; save into argument variable
104930ad8 00c4          movwf   _float32_pointer_load__pointer
10494                   ; delay=4294967295
10495                   ; line_number = 51
10496                   ; argument pointer byte
10497000000c4 = _float32_pointer_load__pointer equ globals___1+36
10498                   ; line_number = 52
10499                   ;  returns_nothing
10500           
10501                   ; # This procedure will load the float32 "A" register with {pointer}.
10502           
10503                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
10504                   ; line_number = 56
10505                   ;  assemble
10506                   ;info   56, 2777
10507                   ; # Pointer is in W; move it to {_fsr}:
10508                   ; line_number = 58
10509                   ;info   58, 2777
105100ad9 0084          movwf   _fsr
10511                   ; # Set up {_irp} and _{fsr}:
10512                   ; line_number = 60
10513                   ;info   60, 2778
105140ada 1383          bcf     _irp___byte, _irp___bit
10515                   ; line_number = 61
10516                   ;info   61, 2779
105170adb 0d84          rlf     _fsr,f
10518                   ; line_number = 62
10519                   ;info   62, 2780
105200adc 1803          btfsc   _c___byte, _c___bit
10521                   ; line_number = 63
10522                   ;info   63, 2781
105230add 1783          bsf     _irp___byte, _irp___bit
10524                   ; line_number = 64
10525                   ;info   64, 2782
105260ade 1004          bcf     _fsr, 0
10527                   ; # Grab the value and store into {_float32_aexp},...,{_float32_aargb2}
10528                   ; line_number = 66
10529                   ;info   66, 2783
105300adf 0800          movf    _indf,w
10531                   ; line_number = 67
10532                   ;info   67, 2784
105330ae0 00a8          movwf   _float32_aexp
10534                   ; line_number = 68
10535                   ;info   68, 2785
105360ae1 0a84          incf    _fsr,f
10537                   ; line_number = 69
10538                   ;info   69, 2786
105390ae2 0800          movf    _indf,w
10540                   ; line_number = 70
10541                   ;info   70, 2787
105420ae3 00a7          movwf   _float32_aargb0
10543                   ; line_number = 71
10544                   ;info   71, 2788
105450ae4 0a84          incf    _fsr,f
10546                   ; line_number = 72
10547                   ;info   72, 2789
105480ae5 0800          movf    _indf,w
10549                   ; line_number = 73
10550                   ;info   73, 2790
105510ae6 00a6          movwf   _float32_aargb1
10552                   ; line_number = 74
10553                   ;info   74, 2791
105540ae7 0a84          incf    _fsr,f
10555                   ; line_number = 75
10556                   ;info   75, 2792
105570ae8 0800          movf    _indf,w
10558                   ; line_number = 76
10559                   ;info   76, 2793
105600ae9 00a5          movwf   _float32_aargb2
10561           
10562           
10563                   ; delay after procedure statements=non-uniform
10564                   ; Implied return
105650aea 3400          retlw   0
10566           
10567           
10568           
10569           
10570                   ; line_number = 79
10571                   ;info   79, 2795
10572                   ; procedure _float32_pointer_add
10573  0aeb :   _float32_pointer_add:
10574                   ; Last argument is sitting in W; save into argument variable
105750aeb 00c5          movwf   _float32_pointer_add__pointer
10576                   ; delay=4294967295
10577                   ; line_number = 80
10578                   ; argument pointer byte
10579000000c5 = _float32_pointer_add__pointer equ globals___1+37
10580                   ; line_number = 81
10581                   ;  returns_nothing
10582                   ; line_number = 82
10583                   ;  return_suppress
10584           
10585                   ; # This procedure will add the float32 "A" register with {pointer}
10586                   ; # and store the result back into the "A" register.
10587           
10588                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
10589                   ; line_number = 87
10590                   ;  assemble
10591                   ;info   87, 2796
10592                   ; # Pointer is in W; move it to {_fsr}:
10593                   ; line_number = 89
10594                   ;info   89, 2796
105950aec 0084          movwf   _fsr
10596                   ; # Set up {_irp} and _{fsr}:
10597                   ; line_number = 91
10598                   ;info   91, 2797
105990aed 1383          bcf     _irp___byte, _irp___bit
10600                   ; line_number = 92
10601                   ;info   92, 2798
106020aee 0d84          rlf     _fsr,f
10603                   ; line_number = 93
10604                   ;info   93, 2799
106050aef 1803          btfsc   _c___byte, _c___bit
10606                   ; line_number = 94
10607                   ;info   94, 2800
106080af0 1783          bsf     _irp___byte, _irp___bit
10609                   ; line_number = 95
10610                   ;info   95, 2801
106110af1 1004          bcf     _fsr, 0
10612                   ; # Grab the value and store into {_float32_bexp},...,{_float32_bargb2}
10613                   ; line_number = 97
10614                   ;info   97, 2802
106150af2 0800          movf    _indf,w
10616                   ; line_number = 98
10617                   ;info   98, 2803
106180af3 00af          movwf   _float32_bexp
10619                   ; line_number = 99
10620                   ;info   99, 2804
106210af4 0a84          incf    _fsr,f
10622                   ; line_number = 100
10623                   ;info   100, 2805
106240af5 0800          movf    _indf,w
10625                   ; line_number = 101
10626                   ;info   101, 2806
106270af6 00ae          movwf   _float32_bargb0
10628                   ; line_number = 102
10629                   ;info   102, 2807
106300af7 0a84          incf    _fsr,f
10631                   ; line_number = 103
10632                   ;info   103, 2808
106330af8 0800          movf    _indf,w
10634                   ; line_number = 104
10635                   ;info   104, 2809
106360af9 00ad          movwf   _float32_bargb1
10637                   ; line_number = 105
10638                   ;info   105, 2810
106390afa 0a84          incf    _fsr,f
10640                   ; line_number = 106
10641                   ;info   106, 2811
106420afb 0800          movf    _indf,w
10643                   ; line_number = 107
10644                   ;info   107, 2812
106450afc 00ac          movwf   _float32_bargb2
10646                   ; line_number = 108
10647                   ;info   108, 2813
106480afd 2a4e          goto    _float32_add
10649           
10650           
10651                   ; delay after procedure statements=non-uniform
10652                   ; Return instruction suppressed by 'return_suppress'
10653           
10654           
10655           
10656           
10657                   ; line_number = 111
10658                   ;info   111, 2814
10659                   ; procedure _float32_pointer_divide
10660  0afe :   _float32_pointer_divide:
10661                   ; Last argument is sitting in W; save into argument variable
106620afe 00c6          movwf   _float32_pointer_divide__pointer
10663                   ; delay=4294967295
10664                   ; line_number = 112
10665                   ; argument pointer byte
10666000000c6 = _float32_pointer_divide__pointer equ globals___1+38
10667                   ; line_number = 113
10668                   ;  returns_nothing
10669                   ; line_number = 114
10670                   ;  return_suppress
10671           
10672                   ; # This procedure will divide the float32 A register by {pointer} and
10673                   ; # store the result back into the A "register".
10674           
10675                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
10676                   ; line_number = 119
10677                   ;  assemble
10678                   ;info   119, 2815
10679                   ; # Pointer is in W; move it to {_fsr}:
10680                   ; line_number = 121
10681                   ;info   121, 2815
106820aff 0084          movwf   _fsr
10683                   ; # Set up {_irp} and _{fsr}:
10684                   ; line_number = 123
10685                   ;info   123, 2816
106860b00 1383          bcf     _irp___byte, _irp___bit
10687                   ; line_number = 124
10688                   ;info   124, 2817
106890b01 0d84          rlf     _fsr,f
10690                   ; line_number = 125
10691                   ;info   125, 2818
106920b02 1803          btfsc   _c___byte, _c___bit
10693                   ; line_number = 126
10694                   ;info   126, 2819
106950b03 1783          bsf     _irp___byte, _irp___bit
10696                   ; line_number = 127
10697                   ;info   127, 2820
106980b04 1004          bcf     _fsr, 0
10699                   ; # Grab the value and store into {_float32_bexp},...,{_float32_bargb2}
10700                   ; line_number = 129
10701                   ;info   129, 2821
107020b05 0800          movf    _indf,w
10703                   ; line_number = 130
10704                   ;info   130, 2822
107050b06 00af          movwf   _float32_bexp
10706                   ; line_number = 131
10707                   ;info   131, 2823
107080b07 0a84          incf    _fsr,f
10709                   ; line_number = 132
10710                   ;info   132, 2824
107110b08 0800          movf    _indf,w
10712                   ; line_number = 133
10713                   ;info   133, 2825
107140b09 00ae          movwf   _float32_bargb0
10715                   ; line_number = 134
10716                   ;info   134, 2826
107170b0a 0a84          incf    _fsr,f
10718                   ; line_number = 135
10719                   ;info   135, 2827
107200b0b 0800          movf    _indf,w
10721                   ; line_number = 136
10722                   ;info   136, 2828
107230b0c 00ad          movwf   _float32_bargb1
10724                   ; line_number = 137
10725                   ;info   137, 2829
107260b0d 0a84          incf    _fsr,f
10727                   ; line_number = 138
10728                   ;info   138, 2830
107290b0e 0800          movf    _indf,w
10730                   ; line_number = 139
10731                   ;info   139, 2831
107320b0f 00ac          movwf   _float32_bargb2
10733                   ; line_number = 140
10734                   ;info   140, 2832
107350b10 29b7          goto    _float32_divide
10736           
10737           
10738                   ; delay after procedure statements=non-uniform
10739                   ; Return instruction suppressed by 'return_suppress'
10740           
10741           
10742           
10743           
10744                   ; line_number = 143
10745                   ;info   143, 2833
10746                   ; procedure _float32_pointer_multiply
10747  0b11 :   _float32_pointer_multiply:
10748                   ; Last argument is sitting in W; save into argument variable
107490b11 00c7          movwf   _float32_pointer_multiply__pointer
10750                   ; delay=4294967295
10751                   ; line_number = 144
10752                   ; argument pointer byte
10753000000c7 = _float32_pointer_multiply__pointer equ globals___1+39
10754                   ; line_number = 145
10755                   ;  returns_nothing
10756                   ; line_number = 146
10757                   ;  return_suppress
10758           
10759                   ; # This procedure will multiply {pointer} with the float32 A "register"
10760                   ; # and store the result back into the A "register".
10761           
10762                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
10763                   ; line_number = 151
10764                   ;  assemble
10765                   ;info   151, 2834
10766                   ; # Pointer is in W; move it to {_fsr}:
10767                   ; line_number = 153
10768                   ;info   153, 2834
107690b12 0084          movwf   _fsr
10770                   ; # Set up {_irp} and _{fsr}:
10771                   ; line_number = 155
10772                   ;info   155, 2835
107730b13 1383          bcf     _irp___byte, _irp___bit
10774                   ; line_number = 156
10775                   ;info   156, 2836
107760b14 0d84          rlf     _fsr,f
10777                   ; line_number = 157
10778                   ;info   157, 2837
107790b15 1803          btfsc   _c___byte, _c___bit
10780                   ; line_number = 158
10781                   ;info   158, 2838
107820b16 1783          bsf     _irp___byte, _irp___bit
10783                   ; line_number = 159
10784                   ;info   159, 2839
107850b17 1004          bcf     _fsr, 0
10786                   ; # Grab the value and store into {_float32_bexp},...,{_float32_bargb2}
10787                   ; line_number = 161
10788                   ;info   161, 2840
107890b18 0800          movf    _indf,w
10790                   ; line_number = 162
10791                   ;info   162, 2841
107920b19 00af          movwf   _float32_bexp
10793                   ; line_number = 163
10794                   ;info   163, 2842
107950b1a 0a84          incf    _fsr,f
10796                   ; line_number = 164
10797                   ;info   164, 2843
107980b1b 0800          movf    _indf,w
10799                   ; line_number = 165
10800                   ;info   165, 2844
108010b1c 00ae          movwf   _float32_bargb0
10802                   ; line_number = 166
10803                   ;info   166, 2845
108040b1d 0a84          incf    _fsr,f
10805                   ; line_number = 167
10806                   ;info   167, 2846
108070b1e 0800          movf    _indf,w
10808                   ; line_number = 168
10809                   ;info   168, 2847
108100b1f 00ad          movwf   _float32_bargb1
10811                   ; line_number = 169
10812                   ;info   169, 2848
108130b20 0a84          incf    _fsr,f
10814                   ; line_number = 170
10815                   ;info   170, 2849
108160b21 0800          movf    _indf,w
10817                   ; line_number = 171
10818                   ;info   171, 2850
108190b22 00ac          movwf   _float32_bargb2
10820                   ; line_number = 172
10821                   ;info   172, 2851
108220b23 2959          goto    _float32_multiply
10823           
10824           
10825                   ; delay after procedure statements=non-uniform
10826                   ; Return instruction suppressed by 'return_suppress'
10827           
10828           
10829           
10830           
10831                   ; line_number = 175
10832                   ;info   175, 2852
10833                   ; procedure _float32_pointer_subtract
10834  0b24 :   _float32_pointer_subtract:
10835                   ; Last argument is sitting in W; save into argument variable
108360b24 00c8          movwf   _float32_pointer_subtract__pointer
10837                   ; delay=4294967295
10838                   ; line_number = 176
10839                   ; argument pointer byte
10840000000c8 = _float32_pointer_subtract__pointer equ globals___1+40
10841                   ; line_number = 177
10842                   ;  returns_nothing
10843                   ; line_number = 178
10844                   ;  return_suppress
10845           
10846                   ; # This procedure will subtract {pointer} from the float32 A "register"
10847                   ; # and store the result back into the A "register".
10848           
10849                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
10850                   ; line_number = 183
10851                   ;  assemble
10852                   ;info   183, 2853
10853                   ; # Pointer is in W; move it to {_fsr}:
10854                   ; line_number = 185
10855                   ;info   185, 2853
108560b25 0084          movwf   _fsr
10857                   ; # Set up {_irp} and _{fsr}:
10858                   ; line_number = 187
10859                   ;info   187, 2854
108600b26 1383          bcf     _irp___byte, _irp___bit
10861                   ; line_number = 188
10862                   ;info   188, 2855
108630b27 0d84          rlf     _fsr,f
10864                   ; line_number = 189
10865                   ;info   189, 2856
108660b28 1803          btfsc   _c___byte, _c___bit
10867                   ; line_number = 190
10868                   ;info   190, 2857
108690b29 1783          bsf     _irp___byte, _irp___bit
10870                   ; line_number = 191
10871                   ;info   191, 2858
108720b2a 1004          bcf     _fsr, 0
10873                   ; # Grab the value and store into {_float32_bexp},...,{_float32_bargb2}
10874                   ; line_number = 193
10875                   ;info   193, 2859
108760b2b 0800          movf    _indf,w
10877                   ; line_number = 194
10878                   ;info   194, 2860
108790b2c 00af          movwf   _float32_bexp
10880                   ; line_number = 195
10881                   ;info   195, 2861
108820b2d 0a84          incf    _fsr,f
10883                   ; line_number = 196
10884                   ;info   196, 2862
108850b2e 0800          movf    _indf,w
10886                   ; line_number = 197
10887                   ;info   197, 2863
108880b2f 00ae          movwf   _float32_bargb0
10889                   ; line_number = 198
10890                   ;info   198, 2864
108910b30 0a84          incf    _fsr,f
10892                   ; line_number = 199
10893                   ;info   199, 2865
108940b31 0800          movf    _indf,w
10895                   ; line_number = 200
10896                   ;info   200, 2866
108970b32 00ad          movwf   _float32_bargb1
10898                   ; line_number = 201
10899                   ;info   201, 2867
109000b33 0a84          incf    _fsr,f
10901                   ; line_number = 202
10902                   ;info   202, 2868
109030b34 0800          movf    _indf,w
10904                   ; line_number = 203
10905                   ;info   203, 2869
109060b35 00ac          movwf   _float32_bargb2
10907                   ; line_number = 204
10908                   ;info   204, 2870
109090b36 2a4c          goto    _float32_subtract
10910           
10911           
10912                   ; delay after procedure statements=non-uniform
10913                   ; Return instruction suppressed by 'return_suppress'
10914           
10915           
10916           
10917           
10918                   ; line_number = 207
10919                   ;info   207, 2871
10920                   ; procedure _float32_pointer_store
10921  0b37 :   _float32_pointer_store:
10922                   ; Last argument is sitting in W; save into argument variable
109230b37 00c9          movwf   _float32_pointer_store__pointer
10924                   ; delay=4294967295
10925                   ; line_number = 208
10926                   ; argument pointer byte
10927000000c9 = _float32_pointer_store__pointer equ globals___1+41
10928                   ; line_number = 209
10929                   ;  returns_nothing
10930           
10931                   ; # This procedure will store the float32 A "register" into {pointer}.
10932           
10933                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
10934                   ; line_number = 213
10935                   ;  assemble
10936                   ;info   213, 2872
10937                   ; # Pointer is in W; move it to {_fsr}:
10938                   ; line_number = 215
10939                   ;info   215, 2872
109400b38 0084          movwf   _fsr
10941                   ; # Set up {_irp} and _{fsr}:
10942                   ; line_number = 217
10943                   ;info   217, 2873
109440b39 1383          bcf     _irp___byte, _irp___bit
10945                   ; line_number = 218
10946                   ;info   218, 2874
109470b3a 0d84          rlf     _fsr,f
10948                   ; line_number = 219
10949                   ;info   219, 2875
109500b3b 1803          btfsc   _c___byte, _c___bit
10951                   ; line_number = 220
10952                   ;info   220, 2876
109530b3c 1783          bsf     _irp___byte, _irp___bit
10954                   ; line_number = 221
10955                   ;info   221, 2877
109560b3d 1004          bcf     _fsr, 0
10957                   ; # Grab the value and store into {_float32_aexp},...,{_float32_aargb2}
10958                   ; line_number = 223
10959                   ;info   223, 2878
109600b3e 0828          movf    _float32_aexp,w
10961                   ; line_number = 224
10962                   ;info   224, 2879
109630b3f 0080          movwf   _indf
10964                   ; line_number = 225
10965                   ;info   225, 2880
109660b40 0a84          incf    _fsr,f
10967                   ; line_number = 226
10968                   ;info   226, 2881
109690b41 0827          movf    _float32_aargb0,w
10970                   ; line_number = 227
10971                   ;info   227, 2882
109720b42 0080          movwf   _indf
10973                   ; line_number = 228
10974                   ;info   228, 2883
109750b43 0a84          incf    _fsr,f
10976                   ; line_number = 229
10977                   ;info   229, 2884
109780b44 0826          movf    _float32_aargb1,w
10979                   ; line_number = 230
10980                   ;info   230, 2885
109810b45 0080          movwf   _indf
10982                   ; line_number = 231
10983                   ;info   231, 2886
109840b46 0a84          incf    _fsr,f
10985                   ; line_number = 232
10986                   ;info   232, 2887
109870b47 0825          movf    _float32_aargb2,w
10988                   ; line_number = 233
10989                   ;info   233, 2888
109900b48 0080          movwf   _indf
10991           
10992           
10993                   ; delay after procedure statements=non-uniform
10994                   ; Implied return
109950b49 3400          retlw   0
10996           
10997           
10998           
10999           
11000                   ; line_number = 236
11001                   ;info   236, 2890
11002                   ; procedure _float32_negate
11003  0b4a :   _float32_negate:
11004                   ; arguments_none
11005                   ; line_number = 238
11006                   ;  returns_nothing
11007           
11008                   ; # This procedure will negate the float32 A registers.
11009           
11010                   ; # Flip the sign bit:
11011                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11012                   ; line_number = 243
11013                   ;  assemble
11014                   ;info   243, 2890
11015                   ; line_number = 244
11016                   ;info   244, 2890
110170b4a 3080          movlw   128
11018                   ; line_number = 245
11019                   ;info   245, 2891
110200b4b 06a7          xorwf   _float32_aargb0,f
11021           
11022           
11023                   ; delay after procedure statements=non-uniform
11024                   ; Implied return
110250b4c 3400          retlw   0
11026           
11027           
11028           
11029           
11030                   ; line_number = 248
11031                   ;info   248, 2893
11032                   ; procedure _float32_reciprocal
11033  0b4d :   _float32_reciprocal:
11034                   ; arguments_none
11035                   ; line_number = 250
11036                   ;  returns_nothing
11037           
11038                   ; # This procedure will compute the reciprocal of the float32 A "register"
11039                   ; # an store the result back into the float32 A "register".
11040           
11041                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11042                   ; line_number = 255
11043                   ;  assemble
11044                   ;info   255, 2893
11045                   ; # Move A register to B register:
11046                   ; line_number = 257
11047                   ;info   257, 2893
110480b4d 0828          movf    _float32_aexp,w
11049                   ; line_number = 258
11050                   ;info   258, 2894
110510b4e 00af          movwf   _float32_bexp
11052                   ; line_number = 259
11053                   ;info   259, 2895
110540b4f 0827          movf    _float32_aargb0,w
11055                   ; line_number = 260
11056                   ;info   260, 2896
110570b50 00ae          movwf   _float32_bargb0
11058                   ; line_number = 261
11059                   ;info   261, 2897
110600b51 0826          movf    _float32_aargb1,w
11061                   ; line_number = 262
11062                   ;info   262, 2898
110630b52 00ad          movwf   _float32_bargb1
11064                   ; line_number = 263
11065                   ;info   263, 2899
110660b53 0825          movf    _float32_aargb2,w
11067                   ; line_number = 264
11068                   ;info   264, 2900
110690b54 00ac          movwf   _float32_bargb2
11070           
11071                   ; # Now store 1 into A:
11072                   ; line_number = 267
11073                   ;info   267, 2901
110740b55 307f          movlw   127
11075                   ; line_number = 268
11076                   ;info   268, 2902
110770b56 00a8          movwf   _float32_aexp
11078                   ; line_number = 269
11079                   ;info   269, 2903
110800b57 01a7          clrf    _float32_aargb0
11081                   ; line_number = 270
11082                   ;info   270, 2904
110830b58 01a6          clrf    _float32_aargb1
11084                   ; line_number = 271
11085                   ;info   271, 2905
110860b59 01a5          clrf    _float32_aargb2
11087           
11088                   ; # Now perform the division:
11089                   ; line_number = 274
11090                   ;info   274, 2906
110910b5a 29b7          goto    _float32_divide
11092           
11093           
11094                   ; delay after procedure statements=non-uniform
11095                   ; Implied return
110960b5b 3400          retlw   0
11097           
11098           
11099           
11100           
11101                   ; line_number = 277
11102                   ;info   277, 2908
11103                   ; procedure _float32_pointer_swap
11104  0b5c :   _float32_pointer_swap:
11105                   ; Last argument is sitting in W; save into argument variable
111060b5c 00ca          movwf   _float32_pointer_swap__pointer
11107                   ; delay=4294967295
11108                   ; line_number = 278
11109                   ; argument pointer byte
11110000000ca = _float32_pointer_swap__pointer equ globals___1+42
11111                   ; line_number = 279
11112                   ;  returns_nothing
11113           
11114                   ; # This procedure will swap the float32 A "register" with {pointer}:
11115           
11116                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11117                   ; line_number = 283
11118                   ;  assemble
11119                   ;info   283, 2909
11120                   ; # Pointer is in W; move it to {_fsr}:
11121                   ; line_number = 285
11122                   ;info   285, 2909
111230b5d 0084          movwf   _fsr
11124                   ; # Set up {_irp} and _{fsr}:
11125                   ; line_number = 287
11126                   ;info   287, 2910
111270b5e 1383          bcf     _irp___byte, _irp___bit
11128                   ; line_number = 288
11129                   ;info   288, 2911
111300b5f 0d84          rlf     _fsr,f
11131                   ; line_number = 289
11132                   ;info   289, 2912
111330b60 1803          btfsc   _c___byte, _c___bit
11134                   ; line_number = 290
11135                   ;info   290, 2913
111360b61 1783          bsf     _irp___byte, _irp___bit
11137                   ; line_number = 291
11138                   ;info   291, 2914
111390b62 1004          bcf     _fsr, 0
11140           
11141                   ; # Swap {pointer} with {_float32_aexp}:
11142                   ; line_number = 294
11143                   ;info   294, 2915
111440b63 0800          movf    _indf,w
11145                   ; line_number = 295
11146                   ;info   295, 2916
111470b64 06a8          xorwf   _float32_aexp,f
11148                   ; line_number = 296
11149                   ;info   296, 2917
111500b65 0628          xorwf   _float32_aexp,w
11151                   ; line_number = 297
11152                   ;info   297, 2918
111530b66 06a8          xorwf   _float32_aexp,f
11154                   ; line_number = 298
11155                   ;info   298, 2919
111560b67 0080          movwf   _indf
11157           
11158                   ; # Swap {pointer}+1 with {_float32_aargb0}:
11159                   ; line_number = 301
11160                   ;info   301, 2920
111610b68 0a84          incf    _fsr,f
11162                   ; line_number = 302
11163                   ;info   302, 2921
111640b69 0800          movf    _indf,w
11165                   ; line_number = 303
11166                   ;info   303, 2922
111670b6a 06a7          xorwf   _float32_aargb0,f
11168                   ; line_number = 304
11169                   ;info   304, 2923
111700b6b 0627          xorwf   _float32_aargb0,w
11171                   ; line_number = 305
11172                   ;info   305, 2924
111730b6c 06a7          xorwf   _float32_aargb0,f
11174                   ; line_number = 306
11175                   ;info   306, 2925
111760b6d 0080          movwf   _indf
11177           
11178                   ; # Swap {pointer}+2 with {_float32_aargb1}:
11179                   ; line_number = 309
11180                   ;info   309, 2926
111810b6e 0a84          incf    _fsr,f
11182                   ; line_number = 310
11183                   ;info   310, 2927
111840b6f 0800          movf    _indf,w
11185                   ; line_number = 311
11186                   ;info   311, 2928
111870b70 06a6          xorwf   _float32_aargb1,f
11188                   ; line_number = 312
11189                   ;info   312, 2929
111900b71 0626          xorwf   _float32_aargb1,w
11191                   ; line_number = 313
11192                   ;info   313, 2930
111930b72 06a6          xorwf   _float32_aargb1,f
11194                   ; line_number = 314
11195                   ;info   314, 2931
111960b73 0080          movwf   _indf
11197           
11198                   ; # Swap {pointer}+3 with {_float32_aargb2}:
11199                   ; line_number = 317
11200                   ;info   317, 2932
112010b74 0a84          incf    _fsr,f
11202                   ; line_number = 318
11203                   ;info   318, 2933
112040b75 0800          movf    _indf,w
11205                   ; line_number = 319
11206                   ;info   319, 2934
112070b76 06a5          xorwf   _float32_aargb2,f
11208                   ; line_number = 320
11209                   ;info   320, 2935
112100b77 0625          xorwf   _float32_aargb2,w
11211                   ; line_number = 321
11212                   ;info   321, 2936
112130b78 06a5          xorwf   _float32_aargb2,f
11214                   ; line_number = 322
11215                   ;info   322, 2937
112160b79 0080          movwf   _indf
11217           
11218           
11219                   ; delay after procedure statements=non-uniform
11220                   ; Implied return
112210b7a 3400          retlw   0
11222           
11223           
11224           
11225           
11226000000cc = _float32_from_byte__0return equ globals___1+44
11227                   ; line_number = 325
11228                   ;info   325, 2939
11229                   ; procedure _float32_from_byte
11230  0b7b :   _float32_from_byte:
11231                   ; Last argument is sitting in W; save into argument variable
112320b7b 00cb          movwf   _float32_from_byte__number
11233                   ; delay=4294967295
11234                   ; line_number = 326
11235                   ; argument number byte
11236000000cb = _float32_from_byte__number equ globals___1+43
11237                   ; line_number = 327
11238                   ;  returns float32
11239           
11240                   ; # This procedure will convert {number} into a float32 and return it.
11241           
11242                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11243                   ; line_number = 331
11244                   ;  _float32_aargb0 := 0
11245                   ;info   331, 2940
112460b7c 01a7          clrf    _float32_aargb0
11247                   ; line_number = 332
11248                   ;  _float32_aargb1 := 0
11249                   ;info   332, 2941
112500b7d 01a6          clrf    _float32_aargb1
11251                   ; line_number = 333
11252                   ;  _float32_aargb2 := number
11253                   ;info   333, 2942
112540b7e 084b          movf    _float32_from_byte__number,w
112550b7f 00a5          movwf   _float32_aargb2
11256                   ; line_number = 334
11257                   ;  assemble
11258                   ;info   334, 2944
11259                   ; line_number = 335
11260                   ;info   335, 2944
112610b80 2000          call    _float32_from_integer24
11262                   ; line_number = 336
11263                   ;info   336, 2945
112640b81 3066          movlw   _float32_from_byte__0return>>1
11265                   ; line_number = 337
11266                   ;info   337, 2946
112670b82 2337          call    _float32_pointer_store
11268                   ; line_number = 338
11269                   ;info   338, 2947
112700b83 3400          retlw   0
11271           
11272           
11273                   ; delay after procedure statements=non-uniform
11274                   ; Exiting procedure with no return(s); infinite loop fail
11275  0b84 :   _float32_from_byte__1:
112760b84 2b84          goto    _float32_from_byte__1
11277           
11278           
11279           
11280           
11281                   ; line_number = 341
11282                   ;info   341, 2949
11283                   ; procedure _float32_to_byte
11284  0b85 :   _float32_to_byte:
11285                   ; line_number = 342
11286                   ; argument number float32
11287000000d0 = _float32_to_byte__number equ globals___1+48
11288                   ; line_number = 343
11289                   ;  returns byte
11290           
11291                   ; # This procedure will convert {number} into a 8-bit integer and return it.
11292           
11293                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11294                   ; line_number = 347
11295                   ;  assemble
11296                   ;info   347, 2949
11297                   ; # Get the argument stored into the float32 "A" register:
11298                   ; line_number = 349
11299                   ;info   349, 2949
113000b85 3068          movlw   _float32_to_byte__number>>1
11301                   ; line_number = 350
11302                   ;info   350, 2950
113030b86 2337          call    _float32_pointer_store
11304                   ; line_number = 351
11305                   ;info   351, 2951
113060b87 208d          call    _float32_integer24_convert
11307                   ; line_number = 352
11308                   ; return _float32_aargb2 start
11309                   ; line_number = 352
11310                   ;info   352, 2952
113110b88 0825          movf    _float32_aargb2,w
113120b89 0008          return  
11313                   ; line_number = 352
11314                   ; return _float32_aargb2 done
11315           
11316           
11317                   ; delay after procedure statements=non-uniform
11318           
11319           
11320           
11321           
11322                   ; line_number = 355
11323                   ;info   355, 2954
11324                   ; procedure _float32_equals
11325  0b8a :   _float32_equals:
11326                   ; arguments_none
11327                   ; line_number = 357
11328                   ;  returns_nothing
11329           
11330                   ; # This procedure will set the Z bit if register "A" is zero.
11331           
11332                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11333                   ; line_number = 361
11334                   ;  assemble
11335                   ;info   361, 2954
11336                   ; line_number = 362
11337                   ;info   362, 2954
113380b8a 0828          movf    _float32_aexp,w
11339                   ; # Return is implicit
11340           
11341           
11342                   ; delay after procedure statements=non-uniform
11343                   ; Implied return
113440b8b 3400          retlw   0
11345           
11346           
11347           
11348           
11349                   ; line_number = 366
11350                   ;info   366, 2956
11351                   ; procedure _float32_not_equal
11352  0b8c :   _float32_not_equal:
11353                   ; arguments_none
11354                   ; line_number = 368
11355                   ;  returns_nothing
11356           
11357                   ; # This procedure will set the Z bit if register "A" is non-zero.
11358           
11359                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11360                   ; line_number = 372
11361                   ;  assemble
11362                   ;info   372, 2956
11363                   ; line_number = 373
11364                   ;info   373, 2956
113650b8c 0828          movf    _float32_aexp,w
11366                   ; line_number = 374
11367                   ;info   374, 2957
113680b8d 1d03          btfss   _float32_status, _float32_z
11369                   ; line_number = 375
11370                   ;info   375, 2958
113710b8e 2b91          goto    _float32_not_equal1
11372                   ; # AEXP is zero; thus not_equal is false:
11373                   ; line_number = 377
11374                   ;info   377, 2959
113750b8f 1103          bcf     _float32_status, _float32_z
11376                   ; line_number = 378
11377                   ;info   378, 2960
113780b90 3400          retlw   0
11379                   ; line_number = 379
11380  0b91 :   _float32_not_equal1:
11381                   ; # AEXP is non-zero, the not_equal is true:
11382                   ; line_number = 381
11383                   ;info   381, 2961
113840b91 1503          bsf     _float32_status, _float32_z
11385                   ; # Return is implicit
11386           
11387           
11388                   ; delay after procedure statements=non-uniform
11389                   ; Implied return
113900b92 3400          retlw   0
11391           
11392           
11393           
11394           
11395                   ; line_number = 385
11396                   ;info   385, 2963
11397                   ; procedure _float32_less_than
11398  0b93 :   _float32_less_than:
11399                   ; arguments_none
11400                   ; line_number = 387
11401                   ;  returns_nothing
11402           
11403                   ; # This procedure will set the Z bit if register "A" is non-zero and
11404                   ; # positive.
11405           
11406                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11407                   ; line_number = 392
11408                   ;  assemble
11409                   ;info   392, 2963
11410                   ; # Test AEXP for 0:
11411                   ; line_number = 394
11412                   ;info   394, 2963
114130b93 0827          movf    _float32_aargb0,w
11414                   ; line_number = 395
11415                   ;info   395, 2964
114160b94 1903          btfsc   _float32_status, _float32_z
11417                   ; # AEXP=0; Z=1; clear Z:
11418                   ; line_number = 397
11419                   ;info   397, 2965
114200b95 2b99          goto    _float32_less_than1
11421                   ; # AEXP!=0; Z=0; Test sign
11422                   ; line_number = 399
11423                   ;info   399, 2966
114240b96 1ba7          btfsc   _float32_aargb0, 7
11425                   ; # Sign=1; Set Z
11426                   ; line_number = 401
11427                   ;info   401, 2967
114280b97 1503          bsf     _float32_status, _float32_z
11429                   ; line_number = 402
11430                   ;info   402, 2968
114310b98 3400          retlw   0
11432                   ; line_number = 403
11433  0b99 :   _float32_less_than1:
11434                   ; # AXP=0; Z=1; clear Z:
11435                   ; line_number = 405
11436                   ;info   405, 2969
114370b99 1103          bcf     _float32_status, _float32_z
11438                   ; # Return is implicit
11439           
11440           
11441                   ; delay after procedure statements=non-uniform
11442                   ; Implied return
114430b9a 3400          retlw   0
11444           
11445           
11446           
11447           
11448                   ; line_number = 409
11449                   ;info   409, 2971
11450                   ; procedure _float32_less_than_or_equal
11451  0b9b :   _float32_less_than_or_equal:
11452                   ; arguments_none
11453                   ; line_number = 411
11454                   ;  returns_nothing
11455           
11456                   ; # This procedure will set the Z bit if register "A" is zero or positive.
11457           
11458                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11459                   ; line_number = 415
11460                   ;  assemble
11461                   ;info   415, 2971
11462                   ; # Test AEXP for 0:
11463                   ; line_number = 417
11464                   ;info   417, 2971
114650b9b 0828          movf    _float32_aexp,w
11466                   ; line_number = 418
11467                   ;info   418, 2972
114680b9c 1903          btfsc   _float32_status, _float32_z
11469                   ; # AEXP=0; Z=1; Return
11470                   ; line_number = 420
11471                   ;info   420, 2973
114720b9d 3400          retlw   0
11473                   ; # AEXP!=0; Z=0; Test sign:
11474                   ; line_number = 422
11475                   ;info   422, 2974
114760b9e 1ba7          btfsc   _float32_aargb0, 7
11477                   ; # Sign=1; Set Z
11478                   ; line_number = 424
11479                   ;info   424, 2975
114800b9f 1503          bsf     _float32_status, _float32_z
11481                   ; # Return is implicit
11482           
11483           
11484                   ; delay after procedure statements=non-uniform
11485                   ; Implied return
114860ba0 3400          retlw   0
11487           
11488           
11489           
11490           
11491                   ; line_number = 428
11492                   ;info   428, 2977
11493                   ; procedure _float32_greater_than
11494  0ba1 :   _float32_greater_than:
11495                   ; arguments_none
11496                   ; line_number = 430
11497                   ;  returns_nothing
11498           
11499                   ; # This procedure will set the Z bit if register "A" is non-zero and
11500                   ; # positive.
11501           
11502                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11503                   ; line_number = 435
11504                   ;  assemble
11505                   ;info   435, 2977
11506                   ; # Test AEXP for 0:
11507                   ; line_number = 437
11508                   ;info   437, 2977
115090ba1 0828          movf    _float32_aexp,w
11510                   ; line_number = 438
11511                   ;info   438, 2978
115120ba2 1903          btfsc   _float32_status, _float32_z
11513                   ; # AEXP=0 Z=1; Clear Z and return:
11514                   ; line_number = 440
11515                   ;info   440, 2979
115160ba3 2ba7          goto    _float32_greater_than1
11517                   ; # AEXP!=0 Z=0; Test sign bit
11518                   ; line_number = 442
11519                   ;info   442, 2980
115200ba4 1fa7          btfss   _float32_aargb0, 7
11521                   ; # Sign bit=0; Set Z
11522                   ; line_number = 444
11523                   ;info   444, 2981
115240ba5 1503          bsf     _float32_status, _float32_z
11525                   ; line_number = 445
11526                   ;info   445, 2982
115270ba6 3400          retlw   0
11528                   ; line_number = 446
11529  0ba7 :   _float32_greater_than1:
11530                   ; # AEXP=0 Z=1; Clear Z and return:
11531                   ; line_number = 448
11532                   ;info   448, 2983
115330ba7 1103          bcf     _float32_status, _float32_z
11534                   ; # Return is implicit
11535           
11536           
11537                   ; delay after procedure statements=non-uniform
11538                   ; Implied return
115390ba8 3400          retlw   0
11540           
11541           
11542           
11543           
11544                   ; line_number = 452
11545                   ;info   452, 2985
11546                   ; procedure _float32_greater_than_or_equal
11547  0ba9 :   _float32_greater_than_or_equal:
11548                   ; arguments_none
11549                   ; line_number = 454
11550                   ;  returns_nothing
11551           
11552                   ; # This procedure will set the Z bit if register "A" is zero or positive.
11553           
11554                   ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:X1=cu=>X1)
11555                   ; line_number = 458
11556                   ;  assemble
11557                   ;info   458, 2985
11558                   ; # Test AEXP for 0:
11559                   ; line_number = 460
11560                   ;info   460, 2985
115610ba9 0828          movf    _float32_aexp,w
11562                   ; line_number = 461
11563                   ;info   461, 2986
115640baa 1903          btfsc   _float32_status, _float32_z
11565                   ; # AEXP=0; Z=1; We can return
11566                   ; line_number = 463
11567                   ;info   463, 2987
115680bab 3400          retlw   0
11569                   ; # AEXP!=0; Z=0; now check sign
11570                   ; line_number = 465
11571                   ;info   465, 2988
115720bac 1fa7          btfss   _float32_aargb0, 7
11573                   ; # Sign=0; Set Z
11574                   ; line_number = 467
11575                   ;info   467, 2989
115760bad 1503          bsf     _float32_status, _float32_z
11577                   ; # Return is implicit
11578           
11579           
11580                   ; delay after procedure statements=non-uniform
11581                   ; Implied return
115820bae 3400          retlw   0
11583           
11584           
11585           
11586           
11587                   ; Configuration bits
11588                   ; address = 0x2007, fill = 0x3000
11589                   ; fcmen = off (0x0)
11590                   ; ieso = off (0x0)
11591                   ; boden = off (0x0)
11592                   ; cpd = off (0x80)
11593                   ; cp = off (0x40)
11594                   ; mclre = off (0x0)
11595                   ; pwrte = off (0x10)
11596                   ; wdte = off (0x0)
11597                   ; fosc = hs (0x2)
11598                   ; 12498 = 0x30d2
11599  30d2 =           __config 12498
11600                   ; Define start addresses for data regions
11601                   ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
11602                   ; Region="globals___0" Address=32" Size=80 Bytes=70 Bits=3 Available=9
11603                   ; Region="globals___1" Address=160" Size=80 Bytes=68 Bits=0 Available=12
11604                   ; Region="globals___2" Address=288" Size=80 Bytes=74 Bits=0 Available=6
11605                   ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
11606                   end
