1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 1023
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000020 = shared___globals equ 32
7    00000000 = __indf equ 0
8    00000002 = __pcl equ 2
9    00000003 = __status equ 3
10   00000004 = __fsr equ 4
11   00000003 = __c___byte equ 3
12   00000000 = __c___bit equ 0
13   00000003 = __z___byte equ 3
14   00000002 = __z___bit equ 2
15   00000003 = __rp0___byte equ 3
16   00000005 = __rp0___bit equ 5
17   00000003 = __rp1___byte equ 3
18   00000006 = __rp1___bit equ 6
19   00000003 = __irp___byte equ 3
20   00000007 = __irp___bit equ 7
21   0000000a = __pclath equ 10
22   0000000a = __cb0___byte equ 10
23   00000003 = __cb0___bit equ 3
24   0000000a = __cb1___byte equ 10
25   00000004 = __cb1___bit equ 4
26                      ; # #############################################################################
27                      ; #
28                      ; # Copyright (c) 2000-2004 by Wayne C. Gramlich & William T. Benson.
29                      ; # All rights reserved.
30                      ; #
31                      ; # Permission to use, copy, modify, distribute, and sell this software
32                      ; # for any purpose is hereby granted without fee provided that the above
33                      ; # copyright notice and this permission are retained.  The author makes
34                      ; # no representations about the suitability of this software for any purpose.
35                      ; # It is provided "as is" without express or implied warranty.
36                      ; #
37                      ; # This is the code that implements the DualMotor1Amp module.  Basically
38                      ; # it just waits for commands that come in at 2400 baud and responds
39                      ; # to them.  See:
40                      ; #
41                      ; #   http://gramlich.net/projects/robobricks/dualmotor1amp/index.html
42                      ; #
43                      ; # for more details.
44                      ; #
45                      ; # #############################################################################
46              
47                      ; buffer = 'dualmotor1amp'
48                      ; line_number = 23
49                      ; library _pic16f630 entered
50                      ; # Copyright (c) 2004 by Wayne C. Gramlich
51                      ; # All rights reserved.
52              
53                      ; buffer = '_pic16f630'
54                      ; line_number = 5
55                      ; processor pic16f630
56                      ; line_number = 6
57                      ; configure_address 0x2007
58                      ; line_number = 7
59                      ;  configure_fill 0x0000
60                      ; line_number = 8
61                      ;  configure_option bg: bg11 = 0x3000
62                      ; line_number = 9
63                      ;  configure_option bg: bg10 = 0x2000
64                      ; line_number = 10
65                      ;  configure_option bg: bg01 = 0x1000
66                      ; line_number = 11
67                      ;  configure_option bg: bg00 = 0x0000
68                      ; line_number = 12
69                      ;  configure_option cpd: on = 0x000
70                      ; line_number = 13
71                      ;  configure_option cpd: off = 0x100
72                      ; line_number = 14
73                      ;  configure_option cp: on = 0x00
74                      ; line_number = 15
75                      ;  configure_option cp: off = 0x80
76                      ; line_number = 16
77                      ;  configure_option boden: on = 0x40
78                      ; line_number = 17
79                      ;  configure_option boden: off = 0x00
80                      ; line_number = 18
81                      ;  configure_option mclre: on = 0x20
82                      ; line_number = 19
83                      ;  configure_option mclre: off = 0x00
84                      ; line_number = 20
85                      ;  configure_option pwrte: on = 0x00
86                      ; line_number = 21
87                      ;  configure_option pwrte: off = 0x10
88                      ; line_number = 22
89                      ;  configure_option wdte: on = 8
90                      ; line_number = 23
91                      ;  configure_option wdte: off = 0
92                      ; line_number = 24
93                      ;  configure_option fosc: rc_clk = 7
94                      ; line_number = 25
95                      ;  configure_option fosc: rc_no_clk = 6
96                      ; line_number = 26
97                      ;  configure_option fosc: int_clk = 5
98                      ; line_number = 27
99                      ;  configure_option fosc: int_no_clk = 4
100                     ; line_number = 28
101                     ;  configure_option fosc: ec = 3
102                     ; line_number = 29
103                     ;  configure_option fosc: hs = 2
104                     ; line_number = 30
105                     ;  configure_option fosc: xt = 1
106                     ; line_number = 31
107                     ;  configure_option fosc: lp = 0
108                     ; line_number = 32
109                     ;  code_bank 0x0 : 0x3ff
110                     ; line_number = 33
111                     ;  data_bank 0x0 : 0x7f
112                     ; line_number = 34
113                     ;  data_bank 0x80 : 0xff
114                     ; line_number = 35
115                     ;  shared_region 0x20 : 0x5f
116                     ; line_number = 36
117                     ;  interrupts_possible
118                     ; line_number = 37
119                     ;  osccal_register_symbol _osccal
120                     ; line_number = 38
121                     ;  osccal_at_address 0x3ff
122                     ; line_number = 39
123                     ;  packages pdip=14, soic=14, tssop=14
124                     ; line_number = 40
125                     ;  pin vdd, power_supply
126                     ; line_number = 41
127                     ; pin_bindings pdip=1, soic=1, tssop=1
128                     ; line_number = 42
129                     ; pin ra5_in, ra5_out, t1cki, osc1, clkin, ra5_unused
130                     ; line_number = 43
131                     ; pin_bindings pdip=2, soic=2, tssop=2
132                     ; line_number = 44
133                     ;  bind_to _porta@5
134                     ; line_number = 45
135                     ;  or_if ra5_in _trisa 16
136                     ; line_number = 46
137                     ;  or_if ra5_out _trisa 0
138                     ; line_number = 47
139                     ; pin ra4_in, ra4_out, t1g, osc2, clkout, ra4_unused
140                     ; line_number = 48
141                     ; pin_bindings pdip=3, soic=3, tssop=3
142                     ; line_number = 49
143                     ;  bind_to _porta@4
144                     ; line_number = 50
145                     ;  or_if ra4_in _trisa 8
146                     ; line_number = 51
147                     ;  or_if ra4_out _trisa 0
148                     ; line_number = 52
149                     ; pin ra3_in, mclr, vpp, ra3_unused
150                     ; line_number = 53
151                     ; pin_bindings pdip=4, soic=4, tssop=4
152                     ; line_number = 54
153                     ;  bind_to _porta@3
154                     ; line_number = 55
155                     ;  or_if ra3_in _trisa 4
156                     ; line_number = 56
157                     ; pin rc5_in, rc5_out, rc5_unused
158                     ; line_number = 57
159                     ; pin_bindings pdip=5, soic=5, tssop=5
160                     ; line_number = 58
161                     ;  bind_to _portc@5
162                     ; line_number = 59
163                     ;  or_if rc5_in _trisc 32
164                     ; line_number = 60
165                     ;  or_if rc5_out _trisc 0
166                     ; line_number = 61
167                     ; pin rc4_in, rc4_out, rc4_unused
168                     ; line_number = 62
169                     ; pin_bindings pdip=6, soic=6, tssop=6
170                     ; line_number = 63
171                     ;  bind_to _portc@4
172                     ; line_number = 64
173                     ;  or_if rc4_in _trisc 16
174                     ; line_number = 65
175                     ;  or_if rc4_out _trisc 0
176                     ; line_number = 66
177                     ; pin rc3_in, rc3_out, r3_unused
178                     ; line_number = 67
179                     ; pin_bindings pdip=7, soic=7, tssop=7
180                     ; line_number = 68
181                     ;  bind_to _portc@3
182                     ; line_number = 69
183                     ;  or_if rc3_in _trisc 8
184                     ; line_number = 70
185                     ;  or_if rc3_out _trisc 0
186                     ; line_number = 71
187                     ; pin rc2_in, rc2_out, rc2_unused
188                     ; line_number = 72
189                     ; pin_bindings pdip=8, soic=8, tssop=8
190                     ; line_number = 73
191                     ;  bind_to _portc@2
192                     ; line_number = 74
193                     ;  or_if rc2_in _trisc 4
194                     ; line_number = 75
195                     ;  or_if rc2_out _trisc 0
196                     ; line_number = 76
197                     ; pin rc1_in, rc1_out, rc1_unused
198                     ; line_number = 77
199                     ; pin_bindings pdip=9, soic=9, tssop=9
200                     ; line_number = 78
201                     ;  bind_to _portc@1
202                     ; line_number = 79
203                     ;  or_if rc1_in _trisc 2
204                     ; line_number = 80
205                     ;  or_if rc1_out _trisc 0
206                     ; line_number = 81
207                     ; pin rc0_in, rc0_out, rc0_unused
208                     ; line_number = 82
209                     ; pin_bindings pdip=10, soic=10, tssop=10
210                     ; line_number = 83
211                     ;  bind_to _portc@0
212                     ; line_number = 84
213                     ;  or_if rc0_in _trisc 1
214                     ; line_number = 85
215                     ;  or_if rc0_out _trisc 0
216                     ; line_number = 86
217                     ; pin ra2_in, ra2_out, cout, t0cki, int, ra2_unused
218                     ; line_number = 87
219                     ; pin_bindings pdip=11, soic=11, tssop=11
220                     ; line_number = 88
221                     ;  bind_to _porta@2
222                     ; line_number = 89
223                     ;  or_if ra2_in _trisa 4
224                     ; line_number = 90
225                     ;  or_if ra2_out _trisa 0
226                     ; line_number = 91
227                     ; pin ra1_in, ra1_out, cin_minus, vref, icspclk, ra1_unused
228                     ; line_number = 92
229                     ; pin_bindings pdip=12, soic=12, tssop=12
230                     ; line_number = 93
231                     ;  bind_to _porta@1
232                     ; line_number = 94
233                     ;  or_if ra1_in _trisa 2
234                     ; line_number = 95
235                     ;  or_if ra1_out _trisa 0
236                     ; line_number = 96
237                     ; pin ra0_in, ra0_out, cin_plus, icspdat, ra0_unused
238                     ; line_number = 97
239                     ; pin_bindings pdip=13, soic=13, tssop=13
240                     ; line_number = 98
241                     ;  bind_to _porta@0
242                     ; line_number = 99
243                     ;  or_if ra0_in _trisa 1
244                     ; line_number = 100
245                     ;  or_if ra0_out _trisa 0
246                     ; line_number = 101
247                     ; pin vss, ground
248                     ; line_number = 102
249                     ; pin_bindings pdip=14, soic=14, tssop=14
250             
251             
252                     ; line_number = 107
253                     ; library _pic16f630_676 entered
254                     ; # Copyright (c) 2004 by Wayne C. Gramlich
255                     ; # All rights reserved.
256             
257                     ; # Shared register definitions for the PIC16F630 and PIC16F676.
258             
259                     ; buffer = '_pic16f630_676'
260                     ; line_number = 7
261                     ; register _indf = 
262  00000000 = _indf equ 0
263             
264                     ; line_number = 9
265                     ; register _tmr0 = 
266  00000001 = _tmr0 equ 1
267             
268                     ; line_number = 11
269                     ; register _pcl = 
270  00000002 = _pcl equ 2
271             
272                     ; line_number = 13
273                     ; register _status = 
274  00000003 = _status equ 3
275                     ; line_number = 14
276                     ; bind _rp0 = _status@5
277  00000003 = _rp0___byte equ _status
278  00000005 = _rp0___bit equ 5
279                     ; line_number = 15
280                     ; bind _to = _status@4
281  00000003 = _to___byte equ _status
282  00000004 = _to___bit equ 4
283                     ; line_number = 16
284                     ; bind _pd = _status@3
285  00000003 = _pd___byte equ _status
286  00000003 = _pd___bit equ 3
287                     ; line_number = 17
288                     ; bind _z = _status@2
289  00000003 = _z___byte equ _status
290  00000002 = _z___bit equ 2
291                     ; line_number = 18
292                     ; bind _dc = _status@1
293  00000003 = _dc___byte equ _status
294  00000001 = _dc___bit equ 1
295                     ; line_number = 19
296                     ; bind _c = _status@0
297  00000003 = _c___byte equ _status
298  00000000 = _c___bit equ 0
299             
300                     ; line_number = 21
301                     ; register _fsr = 
302  00000004 = _fsr equ 4
303             
304                     ; line_number = 23
305                     ; register _porta = 
306  00000005 = _porta equ 5
307                     ; line_number = 24
308                     ; register _ra = 
309  00000005 = _ra equ 5
310                     ; line_number = 25
311                     ; bind _ra5 = _porta@5
312  00000005 = _ra5___byte equ _porta
313  00000005 = _ra5___bit equ 5
314                     ; line_number = 26
315                     ; bind _ra4 = _porta@4
316  00000005 = _ra4___byte equ _porta
317  00000004 = _ra4___bit equ 4
318                     ; line_number = 27
319                     ; bind _ra3 = _porta@3
320  00000005 = _ra3___byte equ _porta
321  00000003 = _ra3___bit equ 3
322                     ; line_number = 28
323                     ; bind _ra2 = _porta@2
324  00000005 = _ra2___byte equ _porta
325  00000002 = _ra2___bit equ 2
326                     ; line_number = 29
327                     ; bind _ra1 = _porta@1
328  00000005 = _ra1___byte equ _porta
329  00000001 = _ra1___bit equ 1
330                     ; line_number = 30
331                     ; bind _ra0 = _porta@0
332  00000005 = _ra0___byte equ _porta
333  00000000 = _ra0___bit equ 0
334             
335                     ; line_number = 32
336                     ; register _portc = 
337  00000007 = _portc equ 7
338                     ; line_number = 33
339                     ; register _rc = 
340  00000007 = _rc equ 7
341                     ; line_number = 34
342                     ; bind _rc5 = _portc@5
343  00000007 = _rc5___byte equ _portc
344  00000005 = _rc5___bit equ 5
345                     ; line_number = 35
346                     ; bind _rc4 = _portc@4
347  00000007 = _rc4___byte equ _portc
348  00000004 = _rc4___bit equ 4
349                     ; line_number = 36
350                     ; bind _rc3 = _portc@3
351  00000007 = _rc3___byte equ _portc
352  00000003 = _rc3___bit equ 3
353                     ; line_number = 37
354                     ; bind _rc2 = _portc@2
355  00000007 = _rc2___byte equ _portc
356  00000002 = _rc2___bit equ 2
357                     ; line_number = 38
358                     ; bind _rc1 = _portc@1
359  00000007 = _rc1___byte equ _portc
360  00000001 = _rc1___bit equ 1
361                     ; line_number = 39
362                     ; bind _rc0 = _portc@0
363  00000007 = _rc0___byte equ _portc
364  00000000 = _rc0___bit equ 0
365             
366                     ; line_number = 41
367                     ; register _pclath = 
368  0000000a = _pclath equ 10
369             
370                     ; line_number = 43
371                     ; register _intcon = 
372  0000000b = _intcon equ 11
373                     ; line_number = 44
374                     ; bind _gie = _intcon@7
375  0000000b = _gie___byte equ _intcon
376  00000007 = _gie___bit equ 7
377                     ; line_number = 45
378                     ; bind _peie = _intcon@6
379  0000000b = _peie___byte equ _intcon
380  00000006 = _peie___bit equ 6
381                     ; line_number = 46
382                     ; bind _t0ie = _intcon@5
383  0000000b = _t0ie___byte equ _intcon
384  00000005 = _t0ie___bit equ 5
385                     ; line_number = 47
386                     ; bind _inte = _intcon@4
387  0000000b = _inte___byte equ _intcon
388  00000004 = _inte___bit equ 4
389                     ; line_number = 48
390                     ; bind _raie = _intcon@3
391  0000000b = _raie___byte equ _intcon
392  00000003 = _raie___bit equ 3
393                     ; line_number = 49
394                     ; bind _t0if = _intcon@2
395  0000000b = _t0if___byte equ _intcon
396  00000002 = _t0if___bit equ 2
397                     ; line_number = 50
398                     ; bind _intf = _intcon@1
399  0000000b = _intf___byte equ _intcon
400  00000001 = _intf___bit equ 1
401                     ; line_number = 51
402                     ; bind _raif = _intcon@0
403  0000000b = _raif___byte equ _intcon
404  00000000 = _raif___bit equ 0
405             
406                     ; line_number = 53
407                     ; register _pir1 = 
408  0000000c = _pir1 equ 12
409                     ; line_number = 54
410                     ; bind _eeif = _pir1@7
411  0000000c = _eeif___byte equ _pir1
412  00000007 = _eeif___bit equ 7
413                     ; line_number = 55
414                     ; bind _cmif = _pir1@3
415  0000000c = _cmif___byte equ _pir1
416  00000003 = _cmif___bit equ 3
417                     ; line_number = 56
418                     ; bind _tmr1if = _pir1@0
419  0000000c = _tmr1if___byte equ _pir1
420  00000000 = _tmr1if___bit equ 0
421             
422                     ; line_number = 58
423                     ; register _tmr1l = 
424  0000000e = _tmr1l equ 14
425             
426                     ; line_number = 60
427                     ; register _tmr1h = 
428  0000000f = _tmr1h equ 15
429             
430                     ; line_number = 62
431                     ; register _t1con = 
432  00000010 = _t1con equ 16
433                     ; line_number = 63
434                     ; bind _t1ge = _t1con@6
435  00000010 = _t1ge___byte equ _t1con
436  00000006 = _t1ge___bit equ 6
437                     ; line_number = 64
438                     ; bind _t1ckps1 = _t1con@5
439  00000010 = _t1ckps1___byte equ _t1con
440  00000005 = _t1ckps1___bit equ 5
441                     ; line_number = 65
442                     ; bind _t1ckps0 = _t1con@4
443  00000010 = _t1ckps0___byte equ _t1con
444  00000004 = _t1ckps0___bit equ 4
445                     ; line_number = 66
446                     ; bind _t1oscen = _t1con@3
447  00000010 = _t1oscen___byte equ _t1con
448  00000003 = _t1oscen___bit equ 3
449                     ; line_number = 67
450                     ; bind _t1sync = _t1con@2
451  00000010 = _t1sync___byte equ _t1con
452  00000002 = _t1sync___bit equ 2
453                     ; line_number = 68
454                     ; bind _tmr1cs = _t1con@1
455  00000010 = _tmr1cs___byte equ _t1con
456  00000001 = _tmr1cs___bit equ 1
457                     ; line_number = 69
458                     ; bind _tmr1on = _t1con@0
459  00000010 = _tmr1on___byte equ _t1con
460  00000000 = _tmr1on___bit equ 0
461             
462                     ; line_number = 71
463                     ; register _cmcon = 
464  00000019 = _cmcon equ 25
465                     ; line_number = 72
466                     ; bind _cout = _cmcon@6
467  00000019 = _cout___byte equ _cmcon
468  00000006 = _cout___bit equ 6
469                     ; line_number = 73
470                     ; bind _cinv = _cmcon@4
471  00000019 = _cinv___byte equ _cmcon
472  00000004 = _cinv___bit equ 4
473                     ; line_number = 74
474                     ; bind _cis = _cmcon@3
475  00000019 = _cis___byte equ _cmcon
476  00000003 = _cis___bit equ 3
477                     ; line_number = 75
478                     ; bind _cm2 = _cmcon@2
479  00000019 = _cm2___byte equ _cmcon
480  00000002 = _cm2___bit equ 2
481                     ; line_number = 76
482                     ; bind _cm1 = _cmcon@1
483  00000019 = _cm1___byte equ _cmcon
484  00000001 = _cm1___bit equ 1
485                     ; line_number = 77
486                     ; bind _cm0 = _cmcon@0
487  00000019 = _cm0___byte equ _cmcon
488  00000000 = _cm0___bit equ 0
489             
490                     ; # Data bank 1 (0x80-0xff):
491             
492                     ; line_number = 81
493                     ; register _option_reg = 
494  00000080 = _option_reg equ 128
495                     ; line_number = 82
496                     ; bind _rapu = _option_reg@7
497  00000080 = _rapu___byte equ _option_reg
498  00000007 = _rapu___bit equ 7
499                     ; line_number = 83
500                     ; bind _intedg = _option_reg@6
501  00000080 = _intedg___byte equ _option_reg
502  00000006 = _intedg___bit equ 6
503                     ; line_number = 84
504                     ; bind _t0cs = _option_reg@5
505  00000080 = _t0cs___byte equ _option_reg
506  00000005 = _t0cs___bit equ 5
507                     ; line_number = 85
508                     ; bind _t0se = _option_reg@4
509  00000080 = _t0se___byte equ _option_reg
510  00000004 = _t0se___bit equ 4
511                     ; line_number = 86
512                     ; bind _psa = _option_reg@3
513  00000080 = _psa___byte equ _option_reg
514  00000003 = _psa___bit equ 3
515                     ; line_number = 87
516                     ; bind _ps2 = _option_reg@2
517  00000080 = _ps2___byte equ _option_reg
518  00000002 = _ps2___bit equ 2
519                     ; line_number = 88
520                     ; bind _ps1 = _option_reg@1
521  00000080 = _ps1___byte equ _option_reg
522  00000001 = _ps1___bit equ 1
523                     ; line_number = 89
524                     ; bind _ps0 = _option_reg@0
525  00000080 = _ps0___byte equ _option_reg
526  00000000 = _ps0___bit equ 0
527             
528                     ; line_number = 91
529                     ; register _trisa = 
530  00000085 = _trisa equ 133
531                     ; line_number = 92
532                     ; bind _trisa5 = _trisa@5
533  00000085 = _trisa5___byte equ _trisa
534  00000005 = _trisa5___bit equ 5
535                     ; line_number = 93
536                     ; bind _trisa4 = _trisa@4
537  00000085 = _trisa4___byte equ _trisa
538  00000004 = _trisa4___bit equ 4
539                     ; line_number = 94
540                     ; bind _trisa3 = _trisa@3
541  00000085 = _trisa3___byte equ _trisa
542  00000003 = _trisa3___bit equ 3
543                     ; line_number = 95
544                     ; bind _trisa2 = _trisa@2
545  00000085 = _trisa2___byte equ _trisa
546  00000002 = _trisa2___bit equ 2
547                     ; line_number = 96
548                     ; bind _trisa1 = _trisa@1
549  00000085 = _trisa1___byte equ _trisa
550  00000001 = _trisa1___bit equ 1
551                     ; line_number = 97
552                     ; bind _trisa0 = _trisa@0
553  00000085 = _trisa0___byte equ _trisa
554  00000000 = _trisa0___bit equ 0
555             
556                     ; line_number = 99
557                     ; register _trisc = 
558  00000087 = _trisc equ 135
559                     ; line_number = 100
560                     ; bind _trisc5 = _trisc@5
561  00000087 = _trisc5___byte equ _trisc
562  00000005 = _trisc5___bit equ 5
563                     ; line_number = 101
564                     ; bind _trisc4 = _trisc@4
565  00000087 = _trisc4___byte equ _trisc
566  00000004 = _trisc4___bit equ 4
567                     ; line_number = 102
568                     ; bind _trisc3 = _trisc@3
569  00000087 = _trisc3___byte equ _trisc
570  00000003 = _trisc3___bit equ 3
571                     ; line_number = 103
572                     ; bind _trisc2 = _trisc@2
573  00000087 = _trisc2___byte equ _trisc
574  00000002 = _trisc2___bit equ 2
575                     ; line_number = 104
576                     ; bind _trisc1 = _trisc@1
577  00000087 = _trisc1___byte equ _trisc
578  00000001 = _trisc1___bit equ 1
579                     ; line_number = 105
580                     ; bind _trisc0 = _trisc@0
581  00000087 = _trisc0___byte equ _trisc
582  00000000 = _trisc0___bit equ 0
583             
584                     ; line_number = 107
585                     ; register _pie1 = 
586  0000008c = _pie1 equ 140
587                     ; line_number = 108
588                     ; bind _eeie = _pie1@7
589  0000008c = _eeie___byte equ _pie1
590  00000007 = _eeie___bit equ 7
591                     ; line_number = 109
592                     ; bind _adie = _pie1@6
593  0000008c = _adie___byte equ _pie1
594  00000006 = _adie___bit equ 6
595                     ; line_number = 110
596                     ; bind _cmie = _pie1@3
597  0000008c = _cmie___byte equ _pie1
598  00000003 = _cmie___bit equ 3
599                     ; line_number = 111
600                     ; bind _tmr1ie = _pie1@0
601  0000008c = _tmr1ie___byte equ _pie1
602  00000000 = _tmr1ie___bit equ 0
603             
604                     ; line_number = 113
605                     ; register _pcon = 
606  0000008e = _pcon equ 142
607                     ; line_number = 114
608                     ; bind _por = _pcon@1
609  0000008e = _por___byte equ _pcon
610  00000001 = _por___bit equ 1
611                     ; line_number = 115
612                     ; bind _bor = _pcon@0
613  0000008e = _bor___byte equ _pcon
614  00000000 = _bor___bit equ 0
615             
616                     ; line_number = 117
617                     ; register _osccal = 
618  00000090 = _osccal equ 144
619                     ; line_number = 118
620                     ; bind _cal5 = _osccal@7
621  00000090 = _cal5___byte equ _osccal
622  00000007 = _cal5___bit equ 7
623                     ; line_number = 119
624                     ; bind _cal4 = _osccal@6
625  00000090 = _cal4___byte equ _osccal
626  00000006 = _cal4___bit equ 6
627                     ; line_number = 120
628                     ; bind _cal3 = _osccal@5
629  00000090 = _cal3___byte equ _osccal
630  00000005 = _cal3___bit equ 5
631                     ; line_number = 121
632                     ; bind _cal2 = _osccal@4
633  00000090 = _cal2___byte equ _osccal
634  00000004 = _cal2___bit equ 4
635                     ; line_number = 122
636                     ; bind _cal1 = _osccal@3
637  00000090 = _cal1___byte equ _osccal
638  00000003 = _cal1___bit equ 3
639                     ; line_number = 123
640                     ; bind _cal0 = _osccal@2
641  00000090 = _cal0___byte equ _osccal
642  00000002 = _cal0___bit equ 2
643                     ; line_number = 124
644                     ; constant _osccal_lsb = 4
645  00000004 = _osccal_lsb equ 4
646             
647                     ; line_number = 126
648                     ; register _wpua = 
649  00000095 = _wpua equ 149
650                     ; line_number = 127
651                     ; bind _wpua5 = _wpua@5
652  00000095 = _wpua5___byte equ _wpua
653  00000005 = _wpua5___bit equ 5
654                     ; line_number = 128
655                     ; bind _wpua4 = _wpua@4
656  00000095 = _wpua4___byte equ _wpua
657  00000004 = _wpua4___bit equ 4
658                     ; line_number = 129
659                     ; bind _wpua2 = _wpua@2
660  00000095 = _wpua2___byte equ _wpua
661  00000002 = _wpua2___bit equ 2
662                     ; line_number = 130
663                     ; bind _wpua1 = _wpua@1
664  00000095 = _wpua1___byte equ _wpua
665  00000001 = _wpua1___bit equ 1
666                     ; line_number = 131
667                     ; bind _wpua0 = _wpua@0
668  00000095 = _wpua0___byte equ _wpua
669  00000000 = _wpua0___bit equ 0
670             
671                     ; line_number = 133
672                     ; register _ioca = 
673  00000096 = _ioca equ 150
674                     ; line_number = 134
675                     ; bind _ioca5 = _ioca@5
676  00000096 = _ioca5___byte equ _ioca
677  00000005 = _ioca5___bit equ 5
678                     ; line_number = 135
679                     ; bind _ioca4 = _ioca@4
680  00000096 = _ioca4___byte equ _ioca
681  00000004 = _ioca4___bit equ 4
682                     ; line_number = 136
683                     ; bind _ioca3 = _ioca@3
684  00000096 = _ioca3___byte equ _ioca
685  00000003 = _ioca3___bit equ 3
686                     ; line_number = 137
687                     ; bind _ioca2 = _ioca@2
688  00000096 = _ioca2___byte equ _ioca
689  00000002 = _ioca2___bit equ 2
690                     ; line_number = 138
691                     ; bind _ioca1 = _ioca@1
692  00000096 = _ioca1___byte equ _ioca
693  00000001 = _ioca1___bit equ 1
694                     ; line_number = 139
695                     ; bind _ioca0 = _ioca@0
696  00000096 = _ioca0___byte equ _ioca
697  00000000 = _ioca0___bit equ 0
698             
699                     ; line_number = 141
700                     ; register _vrcon = 
701  00000099 = _vrcon equ 153
702                     ; line_number = 142
703                     ; bind _vren = _vrcon@7
704  00000099 = _vren___byte equ _vrcon
705  00000007 = _vren___bit equ 7
706                     ; line_number = 143
707                     ; bind _vrr = _vrcon@5
708  00000099 = _vrr___byte equ _vrcon
709  00000005 = _vrr___bit equ 5
710                     ; line_number = 144
711                     ; bind _vr3 = _vrcon@3
712  00000099 = _vr3___byte equ _vrcon
713  00000003 = _vr3___bit equ 3
714                     ; line_number = 145
715                     ; bind _vr2 = _vrcon@2
716  00000099 = _vr2___byte equ _vrcon
717  00000002 = _vr2___bit equ 2
718                     ; line_number = 146
719                     ; bind _vr1 = _vrcon@1
720  00000099 = _vr1___byte equ _vrcon
721  00000001 = _vr1___bit equ 1
722                     ; line_number = 147
723                     ; bind _vr0 = _vrcon@0
724  00000099 = _vr0___byte equ _vrcon
725  00000000 = _vr0___bit equ 0
726             
727                     ; line_number = 149
728                     ; register _eedata = 
729  0000009a = _eedata equ 154
730             
731                     ; line_number = 151
732                     ; register _eeadr = 
733  0000009b = _eeadr equ 155
734             
735                     ; line_number = 153
736                     ; register _eecon1 = 
737  0000009c = _eecon1 equ 156
738                     ; line_number = 154
739                     ; bind _wrerr = _eecon1@3
740  0000009c = _wrerr___byte equ _eecon1
741  00000003 = _wrerr___bit equ 3
742                     ; line_number = 155
743                     ; bind _wren = _eecon1@2
744  0000009c = _wren___byte equ _eecon1
745  00000002 = _wren___bit equ 2
746                     ; line_number = 156
747                     ; bind _wr = _eecon1@1
748  0000009c = _wr___byte equ _eecon1
749  00000001 = _wr___bit equ 1
750                     ; line_number = 157
751                     ; bind _rd = _eecon1@0
752  0000009c = _rd___byte equ _eecon1
753  00000000 = _rd___bit equ 0
754             
755                     ; line_number = 159
756                     ; register _eecon2 = 
757  0000009d = _eecon2 equ 157
758             
759             
760                     ; buffer = '_pic16f630'
761                     ; line_number = 107
762                     ; library _pic16f630_676 exited
763             
764             
765                     ; buffer = 'dualmotor1amp'
766                     ; line_number = 23
767                     ; library _pic16f630 exited
768                     ; line_number = 24
769                     ; library clock4mhz entered
770                     ; # Copyright (c) 2004 by Wayne C. Gramlich
771                     ; # All rights reserved.
772             
773                     ; # This library defines the contstants {clock_rate}, {instruction_rate},
774                     ; # and {clocks_per_instruction}.
775             
776                     ; # Define processor constants:
777                     ; buffer = 'clock4mhz'
778                     ; line_number = 9
779                     ; constant clock_rate = 4000000
780  003d0900 = clock_rate equ 4000000
781                     ; line_number = 10
782                     ; constant clocks_per_instruction = 4
783  00000004 = clocks_per_instruction equ 4
784                     ; line_number = 11
785                     ; constant instruction_rate = clock_rate / clocks_per_instruction
786  000f4240 = instruction_rate equ 1000000
787             
788             
789                     ; buffer = 'dualmotor1amp'
790                     ; line_number = 24
791                     ; library clock4mhz exited
792                     ; line_number = 25
793                     ; library bit_bang entered
794                     ; # Copyright (c) 2004 by Wayne C. Gramlich
795                     ; # All rights reserved.
796             
797                     ; # This library provides bit bang routines for sending and receiving
798                     ; # serial data at 2400 baud in 8N1 format (1 start bit, 8 data bits,
799                     ; # No parity bit, 1 stop stop bit.)
800                     ; #
801                     ; # This library requires that the pins {serial_in} and {serial_out}
802                     ; # be defined.  In addition, the variable {instruction_rate} needs
803                     ; # to be defined.  Lastly, there needs to be a {delay} procedure
804                     ; # with an "exact_delay delay_instructions" clause in it.  The {delay}
805                     ; # routine should invoke "watch_dog_reset" so that the watch dog time
806                     ; # can be set.
807             
808                     ; # Define some constants that we will be needing:
809                     ; buffer = 'bit_bang'
810                     ; line_number = 17
811                     ; constant baud_rate = 2400
812  00000960 = baud_rate equ 2400
813                     ; line_number = 18
814                     ; constant instructions_per_bit = instruction_rate / baud_rate
815  000001a0 = instructions_per_bit equ 416
816                     ; line_number = 19
817                     ; constant delays_per_bit = 3
818  00000003 = delays_per_bit equ 3
819                     ; line_number = 20
820                     ; constant instructions_per_delay = instructions_per_bit / delays_per_bit
821  0000008a = instructions_per_delay equ 138
822                     ; line_number = 21
823                     ; constant extra_instructions = 5
824  00000005 = extra_instructions equ 5
825                     ; line_number = 22
826                     ; constant delay_instructions = instructions_per_delay - extra_instructions
827  00000085 = delay_instructions equ 133
828             
829                     ; # The {receiving} bit is sent when data is being received.
830                     ; # It gets cleared whenever data gets sent.  It is used to
831                     ; # determine whether additional delay is needed to turn a
832                     ; # line around for slow interpretted chips like the Basic
833                     ; # Stamp 2 and the OOPIC.
834             
835                     ; line_number = 30
836                     ; global receiving bit
837  0000005f = receiving___byte equ shared___globals+63
838  00000000 = receiving___bit equ 0
839                     ; line_number = 31
840                     ; global waiting bit
841  0000005f = waiting___byte equ shared___globals+63
842  00000001 = waiting___bit equ 1
843             
844                     ; Delaying code generation for procedure  byte_get
845                     ; Delaying code generation for procedure  byte_put
846             
847                     ; buffer = 'dualmotor1amp'
848                     ; line_number = 25
849                     ; library bit_bang exited
850             
851                     ; line_number = 27
852                     ; package pdip
853                     ; line_number = 28
854                     ; pin 1 = power_supply
855                     ; line_number = 29
856                     ;  pin 2 = ra5_unused
857                     ; line_number = 30
858                     ;  pin 3 = ra4_out, name = motor1a, mask = motor1a_mask
859  00000005 = motor1a___byte equ _porta
860  00000004 = motor1a___bit equ 4
861  00000010 = motor1a_mask equ 16
862                     ; line_number = 31
863                     ;  pin 4 = ra3_unused
864                     ; line_number = 32
865                     ;  pin 5 = rc5_unused, name = debug_out
866  00000007 = debug_out___byte equ _portc
867  00000005 = debug_out___bit equ 5
868                     ; line_number = 33
869                     ;  pin 6 = rc4_unused
870                     ; line_number = 34
871                     ;  pin 7 = rc3_out, name = motor1e
872  00000007 = motor1e___byte equ _portc
873  00000003 = motor1e___bit equ 3
874                     ; line_number = 35
875                     ;  pin 8 = rc2_out, name = motor0e
876  00000007 = motor0e___byte equ _portc
877  00000002 = motor0e___bit equ 2
878                     ; line_number = 36
879                     ;  pin 9 = rc1_out, name = serial_out
880  00000007 = serial_out___byte equ _portc
881  00000001 = serial_out___bit equ 1
882                     ; line_number = 37
883                     ;  pin 10 = rc0_out, name = serial_in
884  00000007 = serial_in___byte equ _portc
885  00000000 = serial_in___bit equ 0
886                     ; line_number = 38
887                     ;  pin 11 = ra2_out, name = motor1b, mask = motor1b_mask
888  00000005 = motor1b___byte equ _porta
889  00000002 = motor1b___bit equ 2
890  00000004 = motor1b_mask equ 4
891                     ; line_number = 39
892                     ;  pin 12 = ra1_out, name = motor0b, mask = motor0b_mask
893  00000005 = motor0b___byte equ _porta
894  00000001 = motor0b___bit equ 1
895  00000002 = motor0b_mask equ 2
896                     ; line_number = 40
897                     ;  pin 13 = ra0_out, name = motor0a, mask = motor0a_mask
898  00000005 = motor0a___byte equ _porta
899  00000000 = motor0a___bit equ 0
900  00000001 = motor0a_mask equ 1
901                     ; line_number = 41
902                     ;  pin 14 = ground
903             
904                     ; # Define duty cycle and motor on/off masks:
905                     ; line_number = 44
906                     ; global actual_speed0 byte
907  00000024 = actual_speed0 equ shared___globals+4
908                     ; line_number = 45
909                     ; global actual_speed1 byte
910  00000025 = actual_speed1 equ shared___globals+5
911                     ; line_number = 46
912                     ; global motor0_off byte
913  00000026 = motor0_off equ shared___globals+6
914                     ; line_number = 47
915                     ; global motor0_on byte
916  00000027 = motor0_on equ shared___globals+7
917                     ; line_number = 48
918                     ; global motor1_off byte
919  00000028 = motor1_off equ shared___globals+8
920                     ; line_number = 49
921                     ; global motor1_on byte
922  00000029 = motor1_on equ shared___globals+9
923             
924                     ; # Ramp variables:
925                     ; line_number = 52
926                     ; global desired_speed0 byte
927  0000002a = desired_speed0 equ shared___globals+10
928                     ; line_number = 53
929                     ; global desired_speed1 byte
930  0000002b = desired_speed1 equ shared___globals+11
931                     ; line_number = 54
932                     ; global desired_direction0 bit
933  0000005f = desired_direction0___byte equ shared___globals+63
934  00000002 = desired_direction0___bit equ 2
935                     ; line_number = 55
936                     ; global desired_direction1 bit
937  0000005f = desired_direction1___byte equ shared___globals+63
938  00000003 = desired_direction1___bit equ 3
939                     ; line_number = 56
940                     ; global ramp0 byte
941  0000002c = ramp0 equ shared___globals+12
942                     ; line_number = 57
943                     ; global ramp1 byte
944  0000002d = ramp1 equ shared___globals+13
945                     ; line_number = 58
946                     ; global ramp0_delay byte
947  0000002e = ramp0_delay equ shared___globals+14
948                     ; line_number = 59
949                     ; global ramp1_delay byte
950  0000002f = ramp1_delay equ shared___globals+15
951                     ; line_number = 60
952                     ; global ramp0_offset byte
953  00000030 = ramp0_offset equ shared___globals+16
954                     ; line_number = 61
955                     ; global ramp1_offset byte
956  00000031 = ramp1_offset equ shared___globals+17
957             
958                     ; # Fail safe variables:
959                     ; line_number = 64
960                     ; global fail_safe byte
961  00000032 = fail_safe equ shared___globals+18
962                     ; line_number = 65
963                     ; global fail_safe_errors byte
964  00000033 = fail_safe_errors equ shared___globals+19
965                     ; line_number = 66
966                     ; global fail_safe_high_counter byte
967  00000034 = fail_safe_high_counter equ shared___globals+20
968                     ; line_number = 67
969                     ; global fail_safe_low_counter byte
970  00000035 = fail_safe_low_counter equ shared___globals+21
971             
972                     ; # Second command stuff for ramped direction change:
973                     ; line_number = 70
974                     ; global second_motor0_command bit
975  0000005f = second_motor0_command___byte equ shared___globals+63
976  00000004 = second_motor0_command___bit equ 4
977                     ; line_number = 71
978                     ; global second_motor1_command bit
979  0000005f = second_motor1_command___byte equ shared___globals+63
980  00000005 = second_motor1_command___bit equ 5
981                     ; line_number = 72
982                     ; global second_desired_speed0 byte
983  00000036 = second_desired_speed0 equ shared___globals+22
984                     ; line_number = 73
985                     ; global second_desired_speed1 byte
986  00000037 = second_desired_speed1 equ shared___globals+23
987                     ; line_number = 74
988                     ; global second_ramp0_offset byte
989  00000038 = second_ramp0_offset equ shared___globals+24
990                     ; line_number = 75
991                     ; global second_ramp1_offset byte
992  00000039 = second_ramp1_offset equ shared___globals+25
993                     ; line_number = 76
994                     ; global second_motor0_on byte
995  0000003a = second_motor0_on equ shared___globals+26
996                     ; line_number = 77
997                     ; global second_motor1_on byte
998  0000003b = second_motor1_on equ shared___globals+27
999                     ; line_number = 78
1000                    ; global second_motor0_off byte
1001 0000003c = second_motor0_off equ shared___globals+28
1002                    ; line_number = 79
1003                    ; global second_motor1_off byte
1004 0000003d = second_motor1_off equ shared___globals+29
1005            
1006                    ; line_number = 81
1007                    ; global motor0 byte
1008 0000003e = motor0 equ shared___globals+30
1009                    ; line_number = 82
1010                    ; global motor1 byte
1011 0000003f = motor1 equ shared___globals+31
1012            
1013                    ; # Mode (pulsed vs. continuous) bits:
1014                    ; line_number = 85
1015                    ; global motor0_mode bit
1016 0000005f = motor0_mode___byte equ shared___globals+63
1017 00000006 = motor0_mode___bit equ 6
1018                    ; line_number = 86
1019                    ; global motor1_mode bit
1020 0000005f = motor1_mode___byte equ shared___globals+63
1021 00000007 = motor1_mode___bit equ 7
1022                    ; line_number = 87
1023                    ; global motor0_direction bit
1024 0000005e = motor0_direction___byte equ shared___globals+62
1025 00000000 = motor0_direction___bit equ 0
1026                    ; line_number = 88
1027                    ; global motor1_direction bit
1028 0000005e = motor1_direction___byte equ shared___globals+62
1029 00000001 = motor1_direction___bit equ 1
1030            
1031                    ; # Shared command registers and option:
1032                    ; line_number = 91
1033                    ; global glitch byte
1034 00000040 = glitch equ shared___globals+32
1035                    ; line_number = 92
1036                    ; global id_index byte
1037 00000041 = id_index equ shared___globals+33
1038                    ; line_number = 93
1039                    ; global spare byte
1040 00000042 = spare equ shared___globals+34
1041            
1042                    ; line_number = 95
1043                    ; global command_previous byte
1044 00000043 = command_previous equ shared___globals+35
1045                    ; line_number = 96
1046                    ; global command_last byte
1047 00000044 = command_last equ shared___globals+36
1048                    ; line_number = 97
1049                    ; global sent_previous byte
1050 00000045 = sent_previous equ shared___globals+37
1051                    ; line_number = 98
1052                    ; global sent_last byte
1053 00000046 = sent_last equ shared___globals+38
1054            
1055                    ; line_number = 100
1056                    ; procedure main
1057   0000 :   main:
1058                    ; Need to calibrate the oscillator
1059 0000 23ff          call    1023
1060 0001 1683          bsf     __rp0___byte, __rp0___bit
1061 0002 0090          movwf   _osccal
1062                    ; Initialize some registers
1063 0003 0185          clrf    _trisa
1064 0004 0187          clrf    _trisc
1065                    ; arguments_none
1066                    ; line_number = 102
1067                    ;  returns_nothing
1068            
1069                    ; line_number = 104
1070                    ;  local command byte
1071 00000047 = main__command equ shared___globals+39
1072                    ; line_number = 105
1073                    ;  local temp byte
1074 00000048 = main__temp equ shared___globals+40
1075            
1076                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X1 code:XX=>XX)
1077                    ; line_number = 107
1078                    ;  call reset()
1079 0005 1283          bcf     __rp0___byte, __rp0___bit
1080 0006 21d3          call    reset
1081            
1082                    ; # Loop waiting for commands:
1083                    ; line_number = 110
1084                    ;  loop_forever start
1085   0007 :   main__1:
1086                    ; # Get a command byte:
1087                    ; line_number = 112
1088                    ;  command := byte_get()
1089 0007 2334          call    byte_get
1090 0008 00c7          movwf   main__command
1091            
1092                    ; # Dispatch on command:
1093                    ; line_number = 115
1094                    ;  switch command >> 6 start
1095 0009 3000          movlw   main__97>>8
1096 000a 008a          movwf   __pclath
1097 0000004b = main__98 equ shared___globals+43
1098 000b 0e47          swapf   main__command,w
1099 000c 00cb          movwf   main__98
1100 000d 0ccb          rrf     main__98,f
1101 000e 0c4b          rrf     main__98,w
1102 000f 3903          andlw   3
1103 0010 3e12          addlw   main__97
1104 0011 0082          movwf   __pcl
1105                    ; page_group 4
1106   0012 :   main__97:
1107 0012 2816          goto    main__93
1108 0013 282f          goto    main__94
1109 0014 2846          goto    main__95
1110 0015 2909          goto    main__96
1111                    ; line_number = 116
1112                    ; case 0
1113   0016 :   main__93:
1114                    ; # Set Quick (Command = 00hh hhdm):
1115                    ; line_number = 118
1116                    ;  temp := ((command << 2) & 0xf0) | (command >> 2)
1117 0000004a = main__2 equ shared___globals+42
1118 0000004b = main__3 equ shared___globals+43
1119 0016 0d47          rlf     main__command,w
1120 0017 00cb          movwf   main__3
1121 0018 0d4b          rlf     main__3,w
1122 0019 39f0          andlw   240
1123 001a 00ca          movwf   main__2
1124 0000004b = main__4 equ shared___globals+43
1125 001b 0c47          rrf     main__command,w
1126 001c 00cb          movwf   main__4
1127 001d 0c4b          rrf     main__4,w
1128 001e 393f          andlw   63
1129 001f 044a          iorwf   main__2,w
1130 0020 00c8          movwf   main__temp
1131                    ; line_number = 119
1132                    ;  if command@0 start
1133 00000047 = main__select__7___byte equ main__command
1134 00000000 = main__select__7___bit equ 0
1135                    ; # Motor :
1136                    ; line_number = 121
1137                    ;  desired_speed1 := temp
1138 0021 0848          movf    main__temp,w
1139                    ; line_number = 124
1140                    ; desired_speed0 := temp
1141                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1142                    ; CASE: true_code_size > 1 && false_code_size > 1
1143                    ; true_code_size=4 false_code_size=4
1144 0022 1c47          btfss   main__select__7___byte, main__select__7___bit
1145 0023 2829          goto    main__8
1146 0024 00ab          movwf   desired_speed1
1147                    ; line_number = 122
1148                    ;  desired_direction1 := command@1
1149 0025 11df          bcf     desired_direction1___byte, desired_direction1___bit
1150 00000047 = main__select__6___byte equ main__command
1151 00000001 = main__select__6___bit equ 1
1152                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1153                    ; CASE: True.size=1 False.size=0
1154 0026 18c7          btfsc   main__select__6___byte, main__select__6___bit
1155 0027 15df          bsf     desired_direction1___byte, desired_direction1___bit
1156                    ; Recombine size1 = 0 || size2 = 0
1157                    ; code.delay=4294967295 back_code.delay=4294967295
1158                    ; <=bit_code_emit@symbol; sym=main__select__6 (data:X0=>X0 code:XX=>XX)
1159 0028 282d          goto    main__9
1160   0029 :   main__8:
1161 0029 00aa          movwf   desired_speed0
1162                    ; line_number = 125
1163                    ;  desired_direction0 := command@1
1164 002a 115f          bcf     desired_direction0___byte, desired_direction0___bit
1165 00000047 = main__select__5___byte equ main__command
1166 00000001 = main__select__5___bit equ 1
1167                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1168                    ; CASE: True.size=1 False.size=0
1169 002b 18c7          btfsc   main__select__5___byte, main__select__5___bit
1170 002c 155f          bsf     desired_direction0___byte, desired_direction0___bit
1171                    ; Recombine size1 = 0 || size2 = 0
1172                    ; code.delay=4294967295 back_code.delay=4294967295
1173                    ; <=bit_code_emit@symbol; sym=main__select__5 (data:X0=>X0 code:XX=>XX)
1174   002d :   main__9:
1175                    ; code.delay=4294967295 back_code.delay=4294967295
1176                    ; <=bit_code_emit@symbol; sym=main__select__7 (data:X0=>X0 code:XX=>XX)
1177                    ; line_number = 119
1178                    ;  if command@0 done
1179                    ; line_number = 126
1180                    ; call set_up()
1181 002d 2152          call    set_up
1182 002e 2950          goto    main__99
1183                    ; line_number = 127
1184                    ; case 1
1185   002f :   main__94:
1186                    ; # Set Low (Command = 01ll lldm):
1187                    ; line_number = 129
1188                    ;  temp := (command >> 2) & 0xf
1189 0000004b = main__10 equ shared___globals+43
1190 002f 0c47          rrf     main__command,w
1191 0030 00cb          movwf   main__10
1192 0031 0c4b          rrf     main__10,w
1193 0032 390f          andlw   15
1194 0033 00c8          movwf   main__temp
1195                    ; line_number = 130
1196                    ;  if command@0 start
1197 00000047 = main__select__13___byte equ main__command
1198 00000000 = main__select__13___bit equ 0
1199                    ; # Motor 1:
1200                    ; line_number = 132
1201                    ;  desired_speed1 := desired_speed1 & 0xf0 | temp
1202 0034 30f0          movlw   240
1203                    ; # Motor 0:
1204                    ; line_number = 136
1205                    ;  desired_speed0 := desired_speed0 & 0xf0 | temp
1206                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1207                    ; CASE: true_code_size > 1 && false_code_size > 1
1208                    ; true_code_size=6 false_code_size=6
1209 0035 1c47          btfss   main__select__13___byte, main__select__13___bit
1210 0036 283e          goto    main__14
1211 0037 052b          andwf   desired_speed1,w
1212 0038 0448          iorwf   main__temp,w
1213 0039 00ab          movwf   desired_speed1
1214                    ; line_number = 133
1215                    ;  desired_direction1 := command@1
1216 003a 11df          bcf     desired_direction1___byte, desired_direction1___bit
1217 00000047 = main__select__12___byte equ main__command
1218 00000001 = main__select__12___bit equ 1
1219                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1220                    ; CASE: True.size=1 False.size=0
1221 003b 18c7          btfsc   main__select__12___byte, main__select__12___bit
1222 003c 15df          bsf     desired_direction1___byte, desired_direction1___bit
1223                    ; Recombine size1 = 0 || size2 = 0
1224                    ; code.delay=4294967295 back_code.delay=4294967295
1225                    ; <=bit_code_emit@symbol; sym=main__select__12 (data:X0=>X0 code:XX=>XX)
1226 003d 2844          goto    main__15
1227   003e :   main__14:
1228 003e 052a          andwf   desired_speed0,w
1229 003f 0448          iorwf   main__temp,w
1230 0040 00aa          movwf   desired_speed0
1231                    ; line_number = 137
1232                    ;  desired_direction0 := command@1
1233 0041 115f          bcf     desired_direction0___byte, desired_direction0___bit
1234 00000047 = main__select__11___byte equ main__command
1235 00000001 = main__select__11___bit equ 1
1236                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1237                    ; CASE: True.size=1 False.size=0
1238 0042 18c7          btfsc   main__select__11___byte, main__select__11___bit
1239 0043 155f          bsf     desired_direction0___byte, desired_direction0___bit
1240                    ; Recombine size1 = 0 || size2 = 0
1241                    ; code.delay=4294967295 back_code.delay=4294967295
1242                    ; <=bit_code_emit@symbol; sym=main__select__11 (data:X0=>X0 code:XX=>XX)
1243   0044 :   main__15:
1244                    ; code.delay=4294967295 back_code.delay=4294967295
1245                    ; <=bit_code_emit@symbol; sym=main__select__13 (data:X0=>X0 code:XX=>XX)
1246                    ; line_number = 130
1247                    ;  if command@0 done
1248                    ; line_number = 138
1249                    ; call set_up()
1250 0044 2152          call    set_up
1251 0045 2950          goto    main__99
1252                    ; line_number = 139
1253                    ; case 2
1254   0046 :   main__95:
1255                    ; # Command = 10xx xxxx:
1256                    ; line_number = 141
1257                    ;  switch (command >> 3) & 7 start
1258 0046 3000          movlw   main__75>>8
1259 0047 008a          movwf   __pclath
1260 0000004b = main__76 equ shared___globals+43
1261 0048 0c47          rrf     main__command,w
1262 0049 00cb          movwf   main__76
1263 004a 0ccb          rrf     main__76,f
1264 004b 0c4b          rrf     main__76,w
1265 004c 3907          andlw   7
1266 004d 3e4f          addlw   main__75
1267 004e 0082          movwf   __pcl
1268                    ; page_group 8
1269   004f :   main__75:
1270 004f 2857          goto    main__68
1271 0050 288a          goto    main__69
1272 0051 28a1          goto    main__70
1273 0052 28a7          goto    main__71
1274 0053 28dc          goto    main__72
1275 0054 2900          goto    main__73
1276 0055 2908          goto    main__74
1277 0056 2908          goto    main__74
1278                    ; line_number = 142
1279                    ; case 0
1280   0057 :   main__68:
1281                    ; # Command = 1000 0xxx:
1282                    ; line_number = 144
1283                    ;  switch command & 7 start
1284 0057 3000          movlw   main__26>>8
1285 0058 008a          movwf   __pclath
1286 0059 3007          movlw   7
1287 005a 0547          andwf   main__command,w
1288 005b 3e5d          addlw   main__26
1289 005c 0082          movwf   __pcl
1290                    ; page_group 8
1291   005d :   main__26:
1292 005d 2865          goto    main__22
1293 005e 2865          goto    main__22
1294 005f 286e          goto    main__23
1295 0060 2875          goto    main__24
1296 0061 287a          goto    main__25
1297 0062 287a          goto    main__25
1298 0063 287a          goto    main__25
1299 0064 287a          goto    main__25
1300                    ; line_number = 145
1301                    ; case 0, 1
1302   0065 :   main__22:
1303                    ; # Set Ramp (Command = 1000 000m):
1304                    ; line_number = 147
1305                    ;  temp := byte_get()
1306 0065 2334          call    byte_get
1307 0066 00c8          movwf   main__temp
1308                    ; line_number = 148
1309                    ;  if command@0 start
1310 00000047 = main__select__16___byte equ main__command
1311 00000000 = main__select__16___bit equ 0
1312                    ; line_number = 149
1313                    ; ramp1 := temp
1314 0067 0848          movf    main__temp,w
1315                    ; line_number = 151
1316                    ; ramp0 := temp
1317                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1318                    ; CASE: true_size=1 && false_size=1
1319                    ; SUBCASE: Double test; true, then false
1320 0068 1847          btfsc   main__select__16___byte, main__select__16___bit
1321 0069 00ad          movwf   ramp1
1322 006a 1c47          btfss   main__select__16___byte, main__select__16___bit
1323 006b 00ac          movwf   ramp0
1324                    ; code.delay=4294967295 back_code.delay=4294967295
1325                    ; <=bit_code_emit@symbol; sym=main__select__16 (data:X0=>X0 code:XX=>XX)
1326                    ; line_number = 148
1327                    ;  if command@0 done
1328                    ; line_number = 152
1329                    ; call set_up()
1330 006c 2152          call    set_up
1331 006d 2889          goto    main__27
1332                    ; line_number = 153
1333                    ; case 2
1334   006e :   main__23:
1335                    ; # Set Failsafe (Command = 1000 0010):
1336                    ; line_number = 155
1337                    ;  fail_safe := byte_get()
1338 006e 2334          call    byte_get
1339 006f 00b2          movwf   fail_safe
1340                    ; line_number = 156
1341                    ;  fail_safe_high_counter := fail_safe
1342 0070 0832          movf    fail_safe,w
1343 0071 00b4          movwf   fail_safe_high_counter
1344                    ; line_number = 157
1345                    ;  fail_safe_low_counter := 0
1346 0072 3000          movlw   0
1347 0073 00b5          movwf   fail_safe_low_counter
1348 0074 2889          goto    main__27
1349                    ; line_number = 158
1350                    ; case 3
1351   0075 :   main__24:
1352                    ; # Reset Failsafe (Command = 1000 0011):
1353                    ; line_number = 160
1354                    ;  fail_safe_high_counter := fail_safe
1355 0075 0832          movf    fail_safe,w
1356 0076 00b4          movwf   fail_safe_high_counter
1357                    ; line_number = 161
1358                    ;  fail_safe_low_counter := 0
1359 0077 3000          movlw   0
1360 0078 00b5          movwf   fail_safe_low_counter
1361 0079 2889          goto    main__27
1362                    ; line_number = 162
1363                    ; case 4, 5, 6, 7
1364   007a :   main__25:
1365                    ; # Set Speed (Command = 1000 01dm):
1366                    ; line_number = 164
1367                    ;  temp := byte_get()
1368 007a 2334          call    byte_get
1369 007b 00c8          movwf   main__temp
1370                    ; line_number = 165
1371                    ;  if command@0 start
1372 00000047 = main__select__19___byte equ main__command
1373 00000000 = main__select__19___bit equ 0
1374                    ; # Motor 1:
1375                    ; line_number = 167
1376                    ;  desired_speed1 := temp
1377 007c 0848          movf    main__temp,w
1378                    ; # Motor 0:
1379                    ; line_number = 171
1380                    ;  desired_speed0 := temp
1381                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1382                    ; CASE: true_code_size > 1 && false_code_size > 1
1383                    ; true_code_size=4 false_code_size=4
1384 007d 1c47          btfss   main__select__19___byte, main__select__19___bit
1385 007e 2884          goto    main__20
1386 007f 00ab          movwf   desired_speed1
1387                    ; line_number = 168
1388                    ;  desired_direction1 := command@1
1389 0080 11df          bcf     desired_direction1___byte, desired_direction1___bit
1390 00000047 = main__select__18___byte equ main__command
1391 00000001 = main__select__18___bit equ 1
1392                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1393                    ; CASE: True.size=1 False.size=0
1394 0081 18c7          btfsc   main__select__18___byte, main__select__18___bit
1395 0082 15df          bsf     desired_direction1___byte, desired_direction1___bit
1396                    ; Recombine size1 = 0 || size2 = 0
1397                    ; code.delay=4294967295 back_code.delay=4294967295
1398                    ; <=bit_code_emit@symbol; sym=main__select__18 (data:X0=>X0 code:XX=>XX)
1399 0083 2888          goto    main__21
1400   0084 :   main__20:
1401 0084 00aa          movwf   desired_speed0
1402                    ; line_number = 172
1403                    ;  desired_direction0 := command@1
1404 0085 115f          bcf     desired_direction0___byte, desired_direction0___bit
1405 00000047 = main__select__17___byte equ main__command
1406 00000001 = main__select__17___bit equ 1
1407                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1408                    ; CASE: True.size=1 False.size=0
1409 0086 18c7          btfsc   main__select__17___byte, main__select__17___bit
1410 0087 155f          bsf     desired_direction0___byte, desired_direction0___bit
1411                    ; Recombine size1 = 0 || size2 = 0
1412                    ; code.delay=4294967295 back_code.delay=4294967295
1413                    ; <=bit_code_emit@symbol; sym=main__select__17 (data:X0=>X0 code:XX=>XX)
1414   0088 :   main__21:
1415                    ; code.delay=4294967295 back_code.delay=4294967295
1416                    ; <=bit_code_emit@symbol; sym=main__select__19 (data:X0=>X0 code:XX=>XX)
1417                    ; line_number = 165
1418                    ;  if command@0 done
1419                    ; line_number = 173
1420                    ; call set_up()
1421 0088 2152          call    set_up
1422   0089 :   main__27:
1423                    ; switch end:(data:X0=>X0 code:XX=>XX)
1424                    ; line_number = 144
1425                    ;  switch command & 7 done
1426 0089 2908          goto    main__77
1427                    ; line_number = 174
1428                    ; case 1
1429   008a :   main__69:
1430                    ; # Command = 1000 1xxx:
1431                    ; line_number = 176
1432                    ;  if command@2 start
1433 00000047 = main__select__38___byte equ main__command
1434 00000002 = main__select__38___bit equ 2
1435                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1436                    ; CASE: true_code_size > 1 && false_code_size > 1
1437                    ; true_code_size=9 false_code_size=9
1438 008a 1d47          btfss   main__select__38___byte, main__select__38___bit
1439 008b 2896          goto    main__39
1440                    ; # Set direction (Command = 1000 11dm):
1441                    ; line_number = 178
1442                    ;  if command@0 start
1443 00000047 = main__select__35___byte equ main__command
1444 00000000 = main__select__35___bit equ 0
1445                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1446                    ; CASE: true_code_size > 1 && false_code_size > 1
1447                    ; true_code_size=3 false_code_size=3
1448 008c 1c47          btfss   main__select__35___byte, main__select__35___bit
1449 008d 2892          goto    main__36
1450                    ; # Motor 1:
1451                    ; line_number = 180
1452                    ;  desired_direction1 := command@1
1453 008e 11df          bcf     desired_direction1___byte, desired_direction1___bit
1454 00000047 = main__select__34___byte equ main__command
1455 00000001 = main__select__34___bit equ 1
1456                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1457                    ; CASE: True.size=1 False.size=0
1458 008f 18c7          btfsc   main__select__34___byte, main__select__34___bit
1459 0090 15df          bsf     desired_direction1___byte, desired_direction1___bit
1460                    ; Recombine size1 = 0 || size2 = 0
1461                    ; code.delay=4294967295 back_code.delay=4294967295
1462                    ; <=bit_code_emit@symbol; sym=main__select__34 (data:X0=>X0 code:XX=>XX)
1463 0091 2895          goto    main__37
1464   0092 :   main__36:
1465                    ; # Motor 0:
1466                    ; line_number = 183
1467                    ;  desired_direction0 := command@1
1468 0092 115f          bcf     desired_direction0___byte, desired_direction0___bit
1469 00000047 = main__select__33___byte equ main__command
1470 00000001 = main__select__33___bit equ 1
1471                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1472                    ; CASE: True.size=1 False.size=0
1473 0093 18c7          btfsc   main__select__33___byte, main__select__33___bit
1474 0094 155f          bsf     desired_direction0___byte, desired_direction0___bit
1475                    ; Recombine size1 = 0 || size2 = 0
1476                    ; code.delay=4294967295 back_code.delay=4294967295
1477                    ; <=bit_code_emit@symbol; sym=main__select__33 (data:X0=>X0 code:XX=>XX)
1478   0095 :   main__37:
1479                    ; code.delay=4294967295 back_code.delay=4294967295
1480                    ; <=bit_code_emit@symbol; sym=main__select__35 (data:X0=>X0 code:XX=>XX)
1481                    ; line_number = 178
1482                    ;  if command@0 done
1483 0095 289f          goto    main__40
1484   0096 :   main__39:
1485                    ; # Set mode (Command = 1000 10xm):
1486                    ; line_number = 186
1487                    ;  if command@0 start
1488 00000047 = main__select__30___byte equ main__command
1489 00000000 = main__select__30___bit equ 0
1490                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1491                    ; CASE: true_code_size > 1 && false_code_size > 1
1492                    ; true_code_size=3 false_code_size=3
1493 0096 1c47          btfss   main__select__30___byte, main__select__30___bit
1494 0097 289c          goto    main__31
1495                    ; # Motor 1:
1496                    ; line_number = 188
1497                    ;  motor1_mode := command@1
1498 0098 13df          bcf     motor1_mode___byte, motor1_mode___bit
1499 00000047 = main__select__29___byte equ main__command
1500 00000001 = main__select__29___bit equ 1
1501                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1502                    ; CASE: True.size=1 False.size=0
1503 0099 18c7          btfsc   main__select__29___byte, main__select__29___bit
1504 009a 17df          bsf     motor1_mode___byte, motor1_mode___bit
1505                    ; Recombine size1 = 0 || size2 = 0
1506                    ; code.delay=4294967295 back_code.delay=4294967295
1507                    ; <=bit_code_emit@symbol; sym=main__select__29 (data:X0=>X0 code:XX=>XX)
1508 009b 289f          goto    main__32
1509   009c :   main__31:
1510                    ; # Motor 0:
1511                    ; line_number = 191
1512                    ;  motor0_mode := command@1
1513 009c 135f          bcf     motor0_mode___byte, motor0_mode___bit
1514 00000047 = main__select__28___byte equ main__command
1515 00000001 = main__select__28___bit equ 1
1516                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1517                    ; CASE: True.size=1 False.size=0
1518 009d 18c7          btfsc   main__select__28___byte, main__select__28___bit
1519 009e 175f          bsf     motor0_mode___byte, motor0_mode___bit
1520                    ; Recombine size1 = 0 || size2 = 0
1521                    ; code.delay=4294967295 back_code.delay=4294967295
1522                    ; <=bit_code_emit@symbol; sym=main__select__28 (data:X0=>X0 code:XX=>XX)
1523   009f :   main__32:
1524                    ; code.delay=4294967295 back_code.delay=4294967295
1525                    ; <=bit_code_emit@symbol; sym=main__select__30 (data:X0=>X0 code:XX=>XX)
1526                    ; line_number = 186
1527                    ;  if command@0 done
1528   009f :   main__40:
1529                    ; code.delay=4294967295 back_code.delay=4294967295
1530                    ; <=bit_code_emit@symbol; sym=main__select__38 (data:X0=>X0 code:XX=>XX)
1531                    ; line_number = 176
1532                    ;  if command@2 done
1533                    ; line_number = 192
1534                    ; call set_up()
1535 009f 2152          call    set_up
1536 00a0 2908          goto    main__77
1537                    ; line_number = 193
1538                    ; case 2
1539   00a1 :   main__70:
1540                    ; # Set Prescaler (Command = 1001 0ppp):
1541                    ; line_number = 195
1542                    ;  _option_reg := command & 7
1543 00a1 3007          movlw   7
1544 00a2 0547          andwf   main__command,w
1545 00a3 1683          bsf     __rp0___byte, __rp0___bit
1546 00a4 0080          movwf   _option_reg
1547                    ; line_number = 196
1548                    ;  _rapu := 1
1549 00a5 1780          bsf     _rapu___byte, _rapu___bit
1550 00a6 2908          goto    main__77
1551                    ; line_number = 197
1552                    ; case 3
1553   00a7 :   main__71:
1554                    ; # Command = 1001 1xxx:
1555                    ; line_number = 199
1556                    ;  switch command & 7 start
1557 00a7 3000          movlw   main__55>>8
1558 00a8 008a          movwf   __pclath
1559 00a9 3007          movlw   7
1560 00aa 0547          andwf   main__command,w
1561 00ab 3ead          addlw   main__55
1562 00ac 0082          movwf   __pcl
1563                    ; page_group 8
1564   00ad :   main__55:
1565 00ad 28b5          goto    main__50
1566 00ae 28b8          goto    main__51
1567 00af 28be          goto    main__52
1568 00b0 28be          goto    main__52
1569 00b1 28c4          goto    main__53
1570 00b2 28c4          goto    main__53
1571 00b3 28d4          goto    main__54
1572 00b4 28d4          goto    main__54
1573                    ; line_number = 200
1574                    ; case 0
1575   00b5 :   main__50:
1576                    ; # Read Failsafe (Command = 1001 1000):
1577                    ; line_number = 202
1578                    ;  call byte_put(fail_safe)
1579 00b5 0832          movf    fail_safe,w
1580 00b6 235d          call    byte_put
1581 00b7 28db          goto    main__56
1582                    ; line_number = 203
1583                    ; case 1
1584   00b8 :   main__51:
1585                    ; This case body wants this bit set
1586 00b8 1683          bsf     __rp0___byte, __rp0___bit
1587                    ; # Read Prescaler (Command = 1001 1001):
1588                    ; line_number = 205
1589                    ;  call byte_put(_option_reg & 7)
1590 00b9 3007          movlw   7
1591 00ba 0500          andwf   _option_reg,w
1592 00bb 1283          bcf     __rp0___byte, __rp0___bit
1593 00bc 235d          call    byte_put
1594 00bd 28db          goto    main__56
1595                    ; line_number = 206
1596                    ; case 2, 3
1597   00be :   main__52:
1598                    ; # Read Speed (Command = 1001 101m):
1599                    ; line_number = 208
1600                    ;  if command@0 start
1601 00000047 = main__select__41___byte equ main__command
1602 00000000 = main__select__41___bit equ 0
1603                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1604                    ; CASE: true_size=1 && false_size=1
1605                    ; SUBCASE: Double test; true, then false
1606 00be 1847          btfsc   main__select__41___byte, main__select__41___bit
1607                    ; line_number = 209
1608                    ; call byte_put(actual_speed1)
1609 00bf 0825          movf    actual_speed1,w
1610 00c0 1c47          btfss   main__select__41___byte, main__select__41___bit
1611                    ; line_number = 211
1612                    ; call byte_put(actual_speed0)
1613 00c1 0824          movf    actual_speed0,w
1614                    ; code.delay=4294967295 back_code.delay=4294967295
1615 00c2 235d          call    byte_put
1616                    ; <=bit_code_emit@symbol; sym=main__select__41 (data:X0=>X0 code:XX=>XX)
1617                    ; line_number = 208
1618                    ;  if command@0 done
1619 00c3 28db          goto    main__56
1620                    ; line_number = 212
1621                    ; case 4, 5
1622   00c4 :   main__53:
1623                    ; # Read Mode/Direction (Command = 1001 110m):
1624                    ; line_number = 214
1625                    ;  temp := 0
1626 00c4 3000          movlw   0
1627 00c5 00c8          movwf   main__temp
1628                    ; line_number = 215
1629                    ;  if command@0 start
1630 00000047 = main__select__46___byte equ main__command
1631 00000000 = main__select__46___bit equ 0
1632                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1633                    ; CASE: true_code_size > 1 && false_code_size > 1
1634                    ; true_code_size=4 false_code_size=4
1635 00c6 1c47          btfss   main__select__46___byte, main__select__46___bit
1636 00c7 28cd          goto    main__47
1637                    ; # Motor 1:
1638                    ; line_number = 217
1639                    ;  if motor1_direction start
1640                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1641                    ; CASE: True.size=1 False.size=0
1642 00c8 18de          btfsc   motor1_direction___byte, motor1_direction___bit
1643                    ; line_number = 218
1644                    ; temp@1 := 1
1645 00000048 = main__select__44___byte equ main__temp
1646 00000001 = main__select__44___bit equ 1
1647 00c9 14c8          bsf     main__select__44___byte, main__select__44___bit
1648                    ; Recombine size1 = 0 || size2 = 0
1649                    ; code.delay=4294967295 back_code.delay=4294967295
1650                    ; <=bit_code_emit@symbol; sym=motor1_direction (data:X0=>X0 code:XX=>XX)
1651                    ; line_number = 217
1652                    ;  if motor1_direction done
1653                    ; line_number = 219
1654                    ; if motor1_mode start
1655                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1656                    ; CASE: True.size=1 False.size=0
1657 00ca 1bdf          btfsc   motor1_mode___byte, motor1_mode___bit
1658                    ; line_number = 220
1659                    ; temp@0 := 1
1660 00000048 = main__select__45___byte equ main__temp
1661 00000000 = main__select__45___bit equ 0
1662 00cb 1448          bsf     main__select__45___byte, main__select__45___bit
1663                    ; Recombine size1 = 0 || size2 = 0
1664                    ; code.delay=4294967295 back_code.delay=4294967295
1665                    ; <=bit_code_emit@symbol; sym=motor1_mode (data:X0=>X0 code:XX=>XX)
1666                    ; line_number = 219
1667                    ; if motor1_mode done
1668 00cc 28d1          goto    main__48
1669   00cd :   main__47:
1670                    ; # Motor 0:
1671                    ; line_number = 223
1672                    ;  if motor0_direction start
1673                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1674                    ; CASE: True.size=1 False.size=0
1675 00cd 185e          btfsc   motor0_direction___byte, motor0_direction___bit
1676                    ; line_number = 224
1677                    ; temp@1 := 1
1678 00000048 = main__select__42___byte equ main__temp
1679 00000001 = main__select__42___bit equ 1
1680 00ce 14c8          bsf     main__select__42___byte, main__select__42___bit
1681                    ; Recombine size1 = 0 || size2 = 0
1682                    ; code.delay=4294967295 back_code.delay=4294967295
1683                    ; <=bit_code_emit@symbol; sym=motor0_direction (data:X0=>X0 code:XX=>XX)
1684                    ; line_number = 223
1685                    ;  if motor0_direction done
1686                    ; line_number = 225
1687                    ; if motor0_mode start
1688                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1689                    ; CASE: True.size=1 False.size=0
1690 00cf 1b5f          btfsc   motor0_mode___byte, motor0_mode___bit
1691                    ; line_number = 226
1692                    ; temp@0 := 1
1693 00000048 = main__select__43___byte equ main__temp
1694 00000000 = main__select__43___bit equ 0
1695 00d0 1448          bsf     main__select__43___byte, main__select__43___bit
1696                    ; Recombine size1 = 0 || size2 = 0
1697                    ; code.delay=4294967295 back_code.delay=4294967295
1698                    ; <=bit_code_emit@symbol; sym=motor0_mode (data:X0=>X0 code:XX=>XX)
1699                    ; line_number = 225
1700                    ; if motor0_mode done
1701   00d1 :   main__48:
1702                    ; code.delay=4294967295 back_code.delay=4294967295
1703                    ; <=bit_code_emit@symbol; sym=main__select__46 (data:X0=>X0 code:XX=>XX)
1704                    ; line_number = 215
1705                    ;  if command@0 done
1706                    ; line_number = 227
1707                    ; call byte_put(temp)
1708 00d1 0848          movf    main__temp,w
1709 00d2 235d          call    byte_put
1710 00d3 28db          goto    main__56
1711                    ; line_number = 228
1712                    ; case 6, 7
1713   00d4 :   main__54:
1714                    ; # Read Ramp (Command = 1001 101m):
1715                    ; line_number = 230
1716                    ;  if command@0 start
1717 00000047 = main__select__49___byte equ main__command
1718 00000000 = main__select__49___bit equ 0
1719                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1720                    ; CASE: true_size=1 && false_size=1
1721                    ; SUBCASE: Double test; true, then false
1722 00d4 1847          btfsc   main__select__49___byte, main__select__49___bit
1723                    ; line_number = 231
1724                    ; temp := ramp1
1725 00d5 082d          movf    ramp1,w
1726 00d6 1c47          btfss   main__select__49___byte, main__select__49___bit
1727                    ; line_number = 233
1728                    ; temp := ramp0
1729 00d7 082c          movf    ramp0,w
1730                    ; code.delay=4294967295 back_code.delay=4294967295
1731 00d8 00c8          movwf   main__temp
1732                    ; <=bit_code_emit@symbol; sym=main__select__49 (data:X0=>X0 code:XX=>XX)
1733                    ; line_number = 230
1734                    ;  if command@0 done
1735                    ; line_number = 234
1736                    ; call byte_put(temp)
1737 00d9 0848          movf    main__temp,w
1738 00da 235d          call    byte_put
1739   00db :   main__56:
1740                    ; switch end:(data:X0=>X0 code:XX=>XX)
1741                    ; line_number = 199
1742                    ;  switch command & 7 done
1743 00db 2908          goto    main__77
1744                    ; line_number = 235
1745                    ; case 4
1746   00dc :   main__72:
1747                    ; # Command = 0110 0xxx:
1748                    ; line_number = 237
1749                    ;  switch command & 7 start
1750 00dc 3000          movlw   main__65>>8
1751 00dd 008a          movwf   __pclath
1752 00de 3007          movlw   7
1753 00df 0547          andwf   main__command,w
1754 00e0 3ee2          addlw   main__65
1755 00e1 0082          movwf   __pcl
1756                    ; page_group 8
1757   00e2 :   main__65:
1758 00e2 28ea          goto    main__57
1759 00e3 28ef          goto    main__58
1760 00e4 28f2          goto    main__59
1761 00e5 28f5          goto    main__60
1762 00e6 28f8          goto    main__61
1763 00e7 28fa          goto    main__62
1764 00e8 28fc          goto    main__63
1765 00e9 28fe          goto    main__64
1766                    ; line_number = 238
1767                    ; case 0
1768   00ea :   main__57:
1769                    ; # Read Failsafe Errors (Command = 1010 0000):
1770                    ; line_number = 240
1771                    ;  call byte_put(fail_safe_errors)
1772 00ea 0833          movf    fail_safe_errors,w
1773 00eb 235d          call    byte_put
1774                    ; line_number = 241
1775                    ;  fail_safe_errors := 0
1776 00ec 3000          movlw   0
1777 00ed 00b3          movwf   fail_safe_errors
1778 00ee 28ff          goto    main__66
1779                    ; line_number = 242
1780                    ; case 1
1781   00ef :   main__58:
1782                    ; # Read Failsafe Counter (Command = 1010 0001):
1783                    ; line_number = 244
1784                    ;  call byte_put(fail_safe_high_counter)
1785 00ef 0834          movf    fail_safe_high_counter,w
1786 00f0 235d          call    byte_put
1787 00f1 28ff          goto    main__66
1788                    ; line_number = 245
1789                    ; case 2
1790   00f2 :   main__59:
1791                    ; # Read Actual Speed 0(Command = 1010 0010):
1792                    ; line_number = 247
1793                    ;  call byte_put(actual_speed0)
1794 00f2 0824          movf    actual_speed0,w
1795 00f3 235d          call    byte_put
1796 00f4 28ff          goto    main__66
1797                    ; line_number = 248
1798                    ; case 3
1799   00f5 :   main__60:
1800                    ; # Read Actual Speed 1 (Command = 1010 0011):
1801                    ; line_number = 250
1802                    ;  call byte_put(actual_speed1)
1803 00f5 0825          movf    actual_speed1,w
1804 00f6 235d          call    byte_put
1805 00f7 28ff          goto    main__66
1806                    ; line_number = 251
1807                    ; case 4
1808   00f8 :   main__61:
1809                    ; # Set Motor 0 off (Command = 1010 0100):
1810                    ; line_number = 253
1811                    ;  motor0e := 0
1812 00f8 1107          bcf     motor0e___byte, motor0e___bit
1813 00f9 28ff          goto    main__66
1814                    ; line_number = 254
1815                    ; case 5
1816   00fa :   main__62:
1817                    ; # Set Motor 0 on (Command = 1010 0101):
1818                    ; line_number = 256
1819                    ;  motor0e := 1
1820 00fa 1507          bsf     motor0e___byte, motor0e___bit
1821 00fb 28ff          goto    main__66
1822                    ; line_number = 257
1823                    ; case 6
1824   00fc :   main__63:
1825                    ; # Set Motor 1 off (Command = 1010 0110):
1826                    ; line_number = 259
1827                    ;  motor1e := 0
1828 00fc 1187          bcf     motor1e___byte, motor1e___bit
1829 00fd 28ff          goto    main__66
1830                    ; line_number = 260
1831                    ; case 7
1832   00fe :   main__64:
1833                    ; # Set Motor 1 on (Command = 1010 0111):
1834                    ; line_number = 262
1835                    ;  motor1e := 1
1836 00fe 1587          bsf     motor1e___byte, motor1e___bit
1837   00ff :   main__66:
1838                    ; switch end:(data:X0=>X0 code:XX=>XX)
1839                    ; line_number = 237
1840                    ;  switch command & 7 done
1841 00ff 2908          goto    main__77
1842                    ; line_number = 263
1843                    ; case 5
1844   0100 :   main__73:
1845                    ; line_number = 264
1846                    ; if command & 3 = 0 start
1847                    ; Left minus Right
1848 0100 3003          movlw   3
1849 0101 0547          andwf   main__command,w
1850                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1851                    ; CASE: true_code.size = 0 && false_code.size > 1
1852                    ; bit_code_emit_helper1: body_code.size=3 true_test=true body_code.delay=0 (non-uniform delay)
1853 0102 1d03          btfss   __z___byte, __z___bit
1854 0103 2907          goto    main__67
1855                    ; # FIXME: Code generator chokes on single call instruction
1856                    ; # in the then clause.  Add 'ramp0 := 0' to work around!!!
1857                    ; line_number = 267
1858                    ;  ramp0 := 0
1859 0104 3000          movlw   0
1860 0105 00ac          movwf   ramp0
1861                    ; line_number = 268
1862                    ;  call reset()
1863 0106 21d3          call    reset
1864                    ; Recombine size1 = 0 || size2 = 0
1865   0107 :   main__67:
1866                    ; code.delay=4294967295 back_code.delay=4294967295
1867                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
1868                    ; line_number = 264
1869                    ; if command & 3 = 0 done
1870 0107 2908          goto    main__77
1871                    ; line_number = 269
1872                    ; case 6, 7
1873   0108 :   main__74:
1874                    ; line_number = 270
1875                    ; do_nothing
1876   0108 :   main__77:
1877                    ; switch end:(data:X0=>X? code:XX=>XX)
1878                    ; line_number = 141
1879                    ;  switch (command >> 3) & 7 done
1880 0108 2950          goto    main__99
1881                    ; line_number = 271
1882                    ; case 3
1883   0109 :   main__96:
1884                    ; # Command = 11xx xxxx:
1885                    ; line_number = 273
1886                    ;  switch (command >> 3) & 7 start
1887 0109 3001          movlw   main__90>>8
1888 010a 008a          movwf   __pclath
1889 0000004b = main__91 equ shared___globals+43
1890 010b 0c47          rrf     main__command,w
1891 010c 00cb          movwf   main__91
1892 010d 0ccb          rrf     main__91,f
1893 010e 0c4b          rrf     main__91,w
1894 010f 3907          andlw   7
1895 0110 3e12          addlw   main__90
1896 0111 0082          movwf   __pcl
1897                    ; page_group 8
1898   0112 :   main__90:
1899 0112 2950          goto    main__92
1900 0113 2950          goto    main__92
1901 0114 2950          goto    main__92
1902 0115 2950          goto    main__92
1903 0116 2950          goto    main__92
1904 0117 2950          goto    main__92
1905 0118 2950          goto    main__92
1906 0119 291a          goto    main__89
1907                    ; line_number = 274
1908                    ; case 7
1909   011a :   main__89:
1910                    ; # Shared commands (Command = 1111 1ccc):
1911                    ; line_number = 276
1912                    ;  switch command & 7 start
1913 011a 3001          movlw   main__87>>8
1914 011b 008a          movwf   __pclath
1915 011c 3007          movlw   7
1916 011d 0547          andwf   main__command,w
1917 011e 3e20          addlw   main__87
1918 011f 0082          movwf   __pcl
1919                    ; page_group 8
1920   0120 :   main__87:
1921 0120 2928          goto    main__79
1922 0121 292c          goto    main__80
1923 0122 2930          goto    main__81
1924 0123 2935          goto    main__82
1925 0124 2938          goto    main__83
1926 0125 2945          goto    main__84
1927 0126 2948          goto    main__85
1928 0127 294d          goto    main__86
1929                    ; line_number = 277
1930                    ; case 0
1931   0128 :   main__79:
1932                    ; This case body wants this bit set
1933 0128 1683          bsf     __rp0___byte, __rp0___bit
1934                    ; # Clock Decrement (Command = 1111 1000):
1935                    ; line_number = 279
1936                    ;  _osccal := _osccal - _osccal_lsb
1937 0129 30fc          movlw   252
1938 012a 0790          addwf   _osccal,f
1939 012b 2950          goto    main__88
1940                    ; line_number = 280
1941                    ; case 1
1942   012c :   main__80:
1943                    ; This case body wants this bit set
1944 012c 1683          bsf     __rp0___byte, __rp0___bit
1945                    ; # Clock Increment (Command = 1111 1001):
1946                    ; line_number = 282
1947                    ;  _osccal := _osccal + _osccal_lsb
1948 012d 3004          movlw   4
1949 012e 0790          addwf   _osccal,f
1950 012f 2950          goto    main__88
1951                    ; line_number = 283
1952                    ; case 2
1953   0130 :   main__81:
1954                    ; This case body wants this bit set
1955 0130 1683          bsf     __rp0___byte, __rp0___bit
1956                    ; # Clock Read (Command = 1111 1010):
1957                    ; line_number = 285
1958                    ;  call byte_put(_osccal)
1959 0131 0810          movf    _osccal,w
1960 0132 1283          bcf     __rp0___byte, __rp0___bit
1961 0133 235d          call    byte_put
1962 0134 2950          goto    main__88
1963                    ; line_number = 286
1964                    ; case 3
1965   0135 :   main__82:
1966                    ; # Clock Pulse (Command = 1111 1011):
1967                    ; line_number = 288
1968                    ;  call byte_put(0)
1969 0135 3000          movlw   0
1970 0136 235d          call    byte_put
1971 0137 2950          goto    main__88
1972                    ; line_number = 289
1973                    ; case 4
1974   0138 :   main__83:
1975                    ; # ID Next (Command = 1111 1100):
1976                    ; line_number = 291
1977                    ;  temp := 0
1978 0138 3000          movlw   0
1979 0139 00c8          movwf   main__temp
1980                    ; line_number = 292
1981                    ;  if id_index < id.size start
1982 013a 3034          movlw   52
1983 013b 0241          subwf   id_index,w
1984                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
1985                    ; CASE: true.size=0 && false.size>1
1986                    ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
1987 013c 1803          btfsc   __c___byte, __c___bit
1988 013d 2942          goto    main__78
1989                    ; line_number = 293
1990                    ; temp := id[id_index]
1991 013e 0841          movf    id_index,w
1992 013f 22ee          call    id
1993 0140 00c8          movwf   main__temp
1994                    ; line_number = 294
1995                    ;  id_index := id_index + 1
1996 0141 0ac1          incf    id_index,f
1997   0142 :   main__78:
1998                    ; Recombine size1 = 0 || size2 = 0
1999                    ; code.delay=4294967295 back_code.delay=4294967295
2000                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2001                    ; line_number = 292
2002                    ;  if id_index < id.size done
2003                    ; line_number = 295
2004                    ; call byte_put(temp)
2005 0142 0848          movf    main__temp,w
2006 0143 235d          call    byte_put
2007 0144 2950          goto    main__88
2008                    ; line_number = 296
2009                    ; case 5
2010   0145 :   main__84:
2011                    ; # ID Reset (Command = 1111 1101):
2012                    ; line_number = 298
2013                    ;  id_index := 0
2014 0145 3000          movlw   0
2015 0146 00c1          movwf   id_index
2016 0147 2950          goto    main__88
2017                    ; line_number = 299
2018                    ; case 6
2019   0148 :   main__85:
2020                    ; # Glitch Read (Command = 1111 1110):
2021                    ; line_number = 301
2022                    ;  call byte_put(glitch)
2023 0148 0840          movf    glitch,w
2024 0149 235d          call    byte_put
2025                    ; line_number = 302
2026                    ;  glitch := 0
2027 014a 3000          movlw   0
2028 014b 00c0          movwf   glitch
2029 014c 2950          goto    main__88
2030                    ; line_number = 303
2031                    ; case 7
2032   014d :   main__86:
2033                    ; # Glitch (Command = 1111 1111):
2034                    ; line_number = 305
2035                    ;  if glitch != 0xff start
2036                    ; Left minus Right
2037 014d 0a40          incf    glitch,w
2038                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2039                    ; CASE: true_code.size=0 && false_code.size=1
2040 014e 1d03          btfss   __z___byte, __z___bit
2041                    ; line_number = 306
2042                    ; glitch := glitch + 1
2043 014f 0ac0          incf    glitch,f
2044            
2045            
2046                    ; Recombine size1 = 0 || size2 = 0
2047                    ; code.delay=4294967295 back_code.delay=4294967295
2048                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2049                    ; line_number = 305
2050                    ;  if glitch != 0xff done
2051   0150 :   main__88:
2052                    ; switch end:(data:X0=>X? code:XX=>XX)
2053                    ; line_number = 276
2054                    ;  switch command & 7 done
2055   0150 :   main__92:
2056                    ; switch end:(data:X0=>X? code:XX=>XX)
2057                    ; line_number = 273
2058                    ;  switch (command >> 3) & 7 done
2059   0150 :   main__99:
2060                    ; switch end:(data:X0=>X? code:XX=>XX)
2061                    ; line_number = 115
2062                    ;  switch command >> 6 done
2063                    ; line_number = 110
2064                    ;  loop_forever wrap-up
2065                    ; Need to adjust code banks to match front of loop
2066 0150 1283          bcf     __rp0___byte, __rp0___bit
2067 0151 2807          goto    main__1
2068                    ; line_number = 110
2069                    ;  loop_forever done
2070                    ; delay after procedure statements=non-uniform
2071            
2072            
2073            
2074            
2075                    ; line_number = 309
2076                    ; procedure set_up
2077   0152 :   set_up:
2078                    ; arguments_none
2079                    ; line_number = 311
2080                    ;  returns_nothing
2081            
2082                    ; # This procedure will arrange for the speed and direction of
2083                    ; # each motor to be set to desired_speed0/1 and desired_direction0/1.
2084                    ; # If ramp0/1 is 0, the speed and direction is changed immediately.
2085                    ; # If ramp0/1 is non-zero, the speed is changed gradually.
2086            
2087                    ; line_number = 318
2088                    ;  local temporary byte
2089 00000049 = set_up__temporary equ shared___globals+41
2090            
2091                    ; # Reset failsafe:
2092                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
2093                    ; line_number = 321
2094                    ;  fail_safe_low_counter := 0
2095 0152 3000          movlw   0
2096 0153 00b5          movwf   fail_safe_low_counter
2097                    ; line_number = 322
2098                    ;  fail_safe_high_counter := fail_safe
2099 0154 0832          movf    fail_safe,w
2100 0155 00b4          movwf   fail_safe_high_counter
2101            
2102                    ; # Mode Dir  On   Off
2103                    ; # ==================
2104                    ; #  0    0    A    0
2105                    ; #  0    1    B    0
2106                    ; #  1    0    A    B
2107                    ; #  1    1    B    A
2108            
2109                    ; # Motor 0:
2110            
2111                    ; # Figure out all the ramping stuff:
2112                    ; line_number = 334
2113                    ;  if ramp0 = 0 start
2114                    ; Left minus Right
2115 0156 082c          movf    ramp0,w
2116                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2117                    ; CASE: true_code_size > 1 && false_code_size > 1
2118                    ; true_code_size=8 false_code_size=24
2119 0157 1d03          btfss   __z___byte, __z___bit
2120 0158 2962          goto    set_up__6
2121                    ; # No ramping:
2122                    ; line_number = 336
2123                    ;  actual_speed0 := desired_speed0
2124 0159 082a          movf    desired_speed0,w
2125 015a 00a4          movwf   actual_speed0
2126                    ; line_number = 337
2127                    ;  motor0_direction := desired_direction0
2128 015b 105e          bcf     motor0_direction___byte, motor0_direction___bit
2129                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2130                    ; CASE: True.size=1 False.size=0
2131 015c 195f          btfsc   desired_direction0___byte, desired_direction0___bit
2132 015d 145e          bsf     motor0_direction___byte, motor0_direction___bit
2133                    ; Recombine size1 = 0 || size2 = 0
2134                    ; code.delay=4294967295 back_code.delay=4294967295
2135                    ; <=bit_code_emit@symbol; sym=desired_direction0 (data:X0=>X0 code:XX=>XX)
2136                    ; line_number = 338
2137                    ;  ramp0_delay := 0
2138 015e 3000          movlw   0
2139 015f 00ae          movwf   ramp0_delay
2140                    ; line_number = 339
2141                    ;  ramp0_offset := 0
2142 0160 3000          movlw   0
2143 0161 297a          goto    set_up__7
2144   0162 :   set_up__6:
2145                    ; # We are ramping:
2146            
2147                    ; # Figure out if we are changing direction:
2148                    ; line_number = 344
2149                    ;  temporary := 0
2150 0162 3000          movlw   0
2151 0163 00c9          movwf   set_up__temporary
2152                    ; line_number = 345
2153                    ;  if motor0_direction start
2154                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2155                    ; CASE: True.size=1 False.size=0
2156 0164 185e          btfsc   motor0_direction___byte, motor0_direction___bit
2157                    ; line_number = 346
2158                    ; temporary@0 := 1
2159 00000049 = set_up__select__1___byte equ set_up__temporary
2160 00000000 = set_up__select__1___bit equ 0
2161 0165 1449          bsf     set_up__select__1___byte, set_up__select__1___bit
2162                    ; Recombine size1 = 0 || size2 = 0
2163                    ; code.delay=4294967295 back_code.delay=4294967295
2164                    ; <=bit_code_emit@symbol; sym=motor0_direction (data:X0=>X0 code:XX=>XX)
2165                    ; line_number = 345
2166                    ;  if motor0_direction done
2167                    ; line_number = 347
2168                    ; if desired_direction0 start
2169                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2170                    ; CASE: true_code.size = 0 && false_code.size > 1
2171                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
2172 0166 1d5f          btfss   desired_direction0___byte, desired_direction0___bit
2173 0167 296a          goto    set_up__2
2174                    ; line_number = 348
2175                    ; temporary := temporary ^ 1
2176 0168 3001          movlw   1
2177 0169 06c9          xorwf   set_up__temporary,f
2178            
2179                    ; Recombine size1 = 0 || size2 = 0
2180   016a :   set_up__2:
2181                    ; code.delay=4294967295 back_code.delay=4294967295
2182                    ; <=bit_code_emit@symbol; sym=desired_direction0 (data:X0=>X0 code:XX=>XX)
2183                    ; line_number = 347
2184                    ; if desired_direction0 done
2185                    ; line_number = 350
2186                    ; if temporary@0 start
2187 00000049 = set_up__select__3___byte equ set_up__temporary
2188 00000000 = set_up__select__3___bit equ 0
2189                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2190                    ; CASE: true_code_size > 1 && false_code_size > 1
2191                    ; true_code_size=7 false_code_size=5
2192 016a 1c49          btfss   set_up__select__3___byte, set_up__select__3___bit
2193 016b 2974          goto    set_up__4
2194                    ; # We are changing direction:
2195                    ; line_number = 352
2196                    ;  second_ramp0_offset := 1
2197 016c 3001          movlw   1
2198 016d 00b8          movwf   second_ramp0_offset
2199                    ; line_number = 353
2200                    ;  second_desired_speed0 := desired_speed0
2201 016e 082a          movf    desired_speed0,w
2202 016f 00b6          movwf   second_desired_speed0
2203                    ; line_number = 354
2204                    ;  second_motor0_command := 1
2205 0170 165f          bsf     second_motor0_command___byte, second_motor0_command___bit
2206                    ; line_number = 355
2207                    ;  desired_speed0 := 0
2208 0171 3000          movlw   0
2209 0172 00aa          movwf   desired_speed0
2210                    ; line_number = 356
2211                    ;  ramp0_offset := 0xff
2212 0173 2979          goto    set_up__5
2213   0174 :   set_up__4:
2214                    ; # Direction remains unchanged
2215                    ; line_number = 359
2216                    ;  if desired_speed0 < actual_speed0 start
2217 0174 0824          movf    actual_speed0,w
2218 0175 022a          subwf   desired_speed0,w
2219                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2220                    ; CASE: true_size=1 && false_size=1
2221                    ; SUBCASE: Double test; true, then false
2222 0176 1803          btfsc   __c___byte, __c___bit
2223                    ; line_number = 362
2224                    ; ramp0_offset := 1
2225 0177 3001          movlw   1
2226 0178 1c03          btfss   __c___byte, __c___bit
2227                    ; line_number = 360
2228                    ; ramp0_offset := 0xff
2229   0179 :   set_up__5:
2230                    ; code.delay=4294967295 back_code.delay=4294967295
2231 0179 30ff          movlw   255
2232   017a :   set_up__7:
2233                    ; code.delay=4294967295 back_code.delay=4294967295
2234 017a 00b0          movwf   ramp0_offset
2235                    ; code.delay=4294967295 back_code.delay=4294967295
2236            
2237                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2238                    ; line_number = 359
2239                    ;  if desired_speed0 < actual_speed0 done
2240                    ; <=bit_code_emit@symbol; sym=set_up__select__3 (data:X0=>X0 code:XX=>XX)
2241                    ; line_number = 350
2242                    ; if temporary@0 done
2243                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2244                    ; line_number = 334
2245                    ;  if ramp0 = 0 done
2246                    ; # Figure out all the direction stuff:
2247                    ; line_number = 365
2248                    ;  motor0_off := 0
2249 017b 3000          movlw   0
2250 017c 00a6          movwf   motor0_off
2251                    ; line_number = 366
2252                    ;  second_motor0_off := 0
2253 017d 3000          movlw   0
2254 017e 00bc          movwf   second_motor0_off
2255                    ; line_number = 367
2256                    ;  if motor0_direction start
2257                    ; # Direction = 1 (Backward):
2258                    ; line_number = 369
2259                    ;  if motor0_mode start
2260                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2261                    ; CASE: true_code.size = 0 && false_code.size > 1
2262                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
2263 017f 1f5f          btfss   motor0_mode___byte, motor0_mode___bit
2264                    ; # Direction = 0 (Forward):
2265                    ; line_number = 377
2266                    ;  if motor0_mode start
2267                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2268                    ; CASE: true_code.size = 0 && false_code.size > 1
2269                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
2270                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2271                    ; CASE: true_code_size > 1 && false_code_size > 1
2272                    ; true_code_size=8 false_code_size=8
2273 0180 1c5e          btfss   motor0_direction___byte, motor0_direction___bit
2274 0181 298b          goto    set_up__10
2275 0182 2987          goto    set_up__9
2276                    ; # Mode = 1 (Continuous):
2277                    ; line_number = 371
2278                    ;  motor0_off := motor0a_mask
2279 0183 3001          movlw   1
2280 0184 00a6          movwf   motor0_off
2281                    ; line_number = 372
2282                    ;  second_motor0_off := motor0b_mask
2283 0185 3002          movlw   2
2284 0186 00bc          movwf   second_motor0_off
2285                    ; Recombine size1 = 0 || size2 = 0
2286   0187 :   set_up__9:
2287                    ; code.delay=4294967295 back_code.delay=4294967295
2288                    ; <=bit_code_emit@symbol; sym=motor0_mode (data:X0=>X0 code:XX=>XX)
2289                    ; line_number = 369
2290                    ;  if motor0_mode done
2291                    ; line_number = 373
2292                    ; motor0_on := motor0b_mask
2293 0187 3002          movlw   2
2294 0188 00a7          movwf   motor0_on
2295                    ; line_number = 374
2296                    ;  second_motor0_on := motor0a_mask
2297 0189 3001          movlw   1
2298 018a 2993          goto    set_up__11
2299   018b :   set_up__10:
2300 018b 2990          goto    set_up__8
2301                    ; # Mode = 1 (Continuous):
2302                    ; line_number = 379
2303                    ;  motor0_off := motor0b_mask
2304 018c 3002          movlw   2
2305 018d 00a6          movwf   motor0_off
2306                    ; line_number = 380
2307                    ;  second_motor0_off := motor0a_mask
2308 018e 3001          movlw   1
2309 018f 00bc          movwf   second_motor0_off
2310                    ; Recombine size1 = 0 || size2 = 0
2311   0190 :   set_up__8:
2312                    ; code.delay=4294967295 back_code.delay=4294967295
2313                    ; <=bit_code_emit@symbol; sym=motor0_mode (data:X0=>X0 code:XX=>XX)
2314                    ; line_number = 377
2315                    ;  if motor0_mode done
2316                    ; line_number = 381
2317                    ; motor0_on := motor0a_mask
2318 0190 3001          movlw   1
2319 0191 00a7          movwf   motor0_on
2320                    ; line_number = 382
2321                    ;  second_motor0_on := motor0b_mask
2322 0192 3002          movlw   2
2323   0193 :   set_up__11:
2324                    ; code.delay=4294967295 back_code.delay=4294967295
2325 0193 00ba          movwf   second_motor0_on
2326            
2327                    ; <=bit_code_emit@symbol; sym=motor0_direction (data:X0=>X0 code:XX=>XX)
2328                    ; line_number = 367
2329                    ;  if motor0_direction done
2330                    ; # Motor 1:
2331                    ; line_number = 385
2332                    ;  if ramp1 = 0 start
2333                    ; Left minus Right
2334 0194 082d          movf    ramp1,w
2335                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2336                    ; CASE: true_code_size > 1 && false_code_size > 1
2337                    ; true_code_size=8 false_code_size=24
2338 0195 1d03          btfss   __z___byte, __z___bit
2339 0196 29a0          goto    set_up__17
2340                    ; # No ramping:
2341                    ; line_number = 387
2342                    ;  actual_speed1 := desired_speed1
2343 0197 082b          movf    desired_speed1,w
2344 0198 00a5          movwf   actual_speed1
2345                    ; line_number = 388
2346                    ;  motor1_direction := desired_direction1
2347 0199 10de          bcf     motor1_direction___byte, motor1_direction___bit
2348                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2349                    ; CASE: True.size=1 False.size=0
2350 019a 19df          btfsc   desired_direction1___byte, desired_direction1___bit
2351 019b 14de          bsf     motor1_direction___byte, motor1_direction___bit
2352                    ; Recombine size1 = 0 || size2 = 0
2353                    ; code.delay=4294967295 back_code.delay=4294967295
2354                    ; <=bit_code_emit@symbol; sym=desired_direction1 (data:X0=>X0 code:XX=>XX)
2355                    ; line_number = 389
2356                    ;  ramp1_delay := 0
2357 019c 3000          movlw   0
2358 019d 00af          movwf   ramp1_delay
2359                    ; line_number = 390
2360                    ;  ramp1_offset := 0
2361 019e 3000          movlw   0
2362 019f 29b8          goto    set_up__18
2363   01a0 :   set_up__17:
2364                    ; # We are ramping:
2365            
2366                    ; # Figure out if we are changing direction:
2367                    ; line_number = 395
2368                    ;  temporary := 0
2369 01a0 3000          movlw   0
2370 01a1 00c9          movwf   set_up__temporary
2371                    ; line_number = 396
2372                    ;  if motor1_direction start
2373                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2374                    ; CASE: True.size=1 False.size=0
2375 01a2 18de          btfsc   motor1_direction___byte, motor1_direction___bit
2376                    ; line_number = 397
2377                    ; temporary@0 := 1
2378 00000049 = set_up__select__12___byte equ set_up__temporary
2379 00000000 = set_up__select__12___bit equ 0
2380 01a3 1449          bsf     set_up__select__12___byte, set_up__select__12___bit
2381                    ; Recombine size1 = 0 || size2 = 0
2382                    ; code.delay=4294967295 back_code.delay=4294967295
2383                    ; <=bit_code_emit@symbol; sym=motor1_direction (data:X0=>X0 code:XX=>XX)
2384                    ; line_number = 396
2385                    ;  if motor1_direction done
2386                    ; line_number = 398
2387                    ; if desired_direction1 start
2388                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2389                    ; CASE: true_code.size = 0 && false_code.size > 1
2390                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
2391 01a4 1ddf          btfss   desired_direction1___byte, desired_direction1___bit
2392 01a5 29a8          goto    set_up__13
2393                    ; line_number = 399
2394                    ; temporary := temporary ^ 1
2395 01a6 3001          movlw   1
2396 01a7 06c9          xorwf   set_up__temporary,f
2397            
2398                    ; Recombine size1 = 0 || size2 = 0
2399   01a8 :   set_up__13:
2400                    ; code.delay=4294967295 back_code.delay=4294967295
2401                    ; <=bit_code_emit@symbol; sym=desired_direction1 (data:X0=>X0 code:XX=>XX)
2402                    ; line_number = 398
2403                    ; if desired_direction1 done
2404                    ; line_number = 401
2405                    ; if temporary@0 start
2406 00000049 = set_up__select__14___byte equ set_up__temporary
2407 00000000 = set_up__select__14___bit equ 0
2408                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2409                    ; CASE: true_code_size > 1 && false_code_size > 1
2410                    ; true_code_size=7 false_code_size=5
2411 01a8 1c49          btfss   set_up__select__14___byte, set_up__select__14___bit
2412 01a9 29b2          goto    set_up__15
2413                    ; # We are changing direction:
2414                    ; line_number = 403
2415                    ;  second_ramp1_offset := 1
2416 01aa 3001          movlw   1
2417 01ab 00b9          movwf   second_ramp1_offset
2418                    ; line_number = 404
2419                    ;  second_desired_speed1 := desired_speed1
2420 01ac 082b          movf    desired_speed1,w
2421 01ad 00b7          movwf   second_desired_speed1
2422                    ; line_number = 405
2423                    ;  second_motor1_command := 1
2424 01ae 16df          bsf     second_motor1_command___byte, second_motor1_command___bit
2425                    ; line_number = 406
2426                    ;  desired_speed1 := 0
2427 01af 3000          movlw   0
2428 01b0 00ab          movwf   desired_speed1
2429                    ; line_number = 407
2430                    ;  ramp1_offset := 0xff
2431 01b1 29b7          goto    set_up__16
2432   01b2 :   set_up__15:
2433                    ; # We are not changing direction:
2434                    ; line_number = 410
2435                    ;  if desired_speed1 < actual_speed1 start
2436 01b2 0825          movf    actual_speed1,w
2437 01b3 022b          subwf   desired_speed1,w
2438                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2439                    ; CASE: true_size=1 && false_size=1
2440                    ; SUBCASE: Double test; true, then false
2441 01b4 1803          btfsc   __c___byte, __c___bit
2442                    ; line_number = 413
2443                    ; ramp1_offset := 1
2444 01b5 3001          movlw   1
2445 01b6 1c03          btfss   __c___byte, __c___bit
2446                    ; line_number = 411
2447                    ; ramp1_offset := 0xff
2448   01b7 :   set_up__16:
2449                    ; code.delay=4294967295 back_code.delay=4294967295
2450 01b7 30ff          movlw   255
2451   01b8 :   set_up__18:
2452                    ; code.delay=4294967295 back_code.delay=4294967295
2453 01b8 00b1          movwf   ramp1_offset
2454                    ; code.delay=4294967295 back_code.delay=4294967295
2455            
2456                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2457                    ; line_number = 410
2458                    ;  if desired_speed1 < actual_speed1 done
2459                    ; <=bit_code_emit@symbol; sym=set_up__select__14 (data:X0=>X0 code:XX=>XX)
2460                    ; line_number = 401
2461                    ; if temporary@0 done
2462                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2463                    ; line_number = 385
2464                    ;  if ramp1 = 0 done
2465                    ; line_number = 415
2466                    ; motor1_off := 0
2467 01b9 3000          movlw   0
2468 01ba 00a8          movwf   motor1_off
2469                    ; line_number = 416
2470                    ;  second_motor1_off := 0
2471 01bb 3000          movlw   0
2472 01bc 00bd          movwf   second_motor1_off
2473                    ; line_number = 417
2474                    ;  if motor1_direction start
2475                    ; # Direction = 1 (Backward):
2476                    ; line_number = 419
2477                    ;  if motor1_mode start
2478                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2479                    ; CASE: true_code.size = 0 && false_code.size > 1
2480                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
2481 01bd 1fdf          btfss   motor1_mode___byte, motor1_mode___bit
2482                    ; # Direction = 0 (Forward):
2483                    ; line_number = 427
2484                    ;  if motor1_mode start
2485                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2486                    ; CASE: true_code.size = 0 && false_code.size > 1
2487                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
2488                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
2489                    ; CASE: true_code_size > 1 && false_code_size > 1
2490                    ; true_code_size=8 false_code_size=8
2491 01be 1cde          btfss   motor1_direction___byte, motor1_direction___bit
2492 01bf 29c9          goto    set_up__21
2493 01c0 29c5          goto    set_up__20
2494                    ; # Mode = 1 (Continuous):
2495                    ; line_number = 421
2496                    ;  motor1_off := motor1a_mask
2497 01c1 3010          movlw   16
2498 01c2 00a8          movwf   motor1_off
2499                    ; line_number = 422
2500                    ;  second_motor1_off := motor1b_mask
2501 01c3 3004          movlw   4
2502 01c4 00bd          movwf   second_motor1_off
2503                    ; Recombine size1 = 0 || size2 = 0
2504   01c5 :   set_up__20:
2505                    ; code.delay=4294967295 back_code.delay=4294967295
2506                    ; <=bit_code_emit@symbol; sym=motor1_mode (data:X0=>X0 code:XX=>XX)
2507                    ; line_number = 419
2508                    ;  if motor1_mode done
2509                    ; line_number = 423
2510                    ; motor1_on := motor1b_mask
2511 01c5 3004          movlw   4
2512 01c6 00a9          movwf   motor1_on
2513                    ; line_number = 424
2514                    ;  second_motor1_on := motor1a_mask
2515 01c7 3010          movlw   16
2516 01c8 29d1          goto    set_up__22
2517   01c9 :   set_up__21:
2518 01c9 29ce          goto    set_up__19
2519                    ; # Mode = 1 (Continuous):
2520                    ; line_number = 429
2521                    ;  motor1_off := motor1b_mask
2522 01ca 3004          movlw   4
2523 01cb 00a8          movwf   motor1_off
2524                    ; line_number = 430
2525                    ;  second_motor1_off := motor1a_mask
2526 01cc 3010          movlw   16
2527 01cd 00bd          movwf   second_motor1_off
2528                    ; Recombine size1 = 0 || size2 = 0
2529   01ce :   set_up__19:
2530                    ; code.delay=4294967295 back_code.delay=4294967295
2531                    ; <=bit_code_emit@symbol; sym=motor1_mode (data:X0=>X0 code:XX=>XX)
2532                    ; line_number = 427
2533                    ;  if motor1_mode done
2534                    ; line_number = 431
2535                    ; motor1_on := motor1a_mask
2536 01ce 3010          movlw   16
2537 01cf 00a9          movwf   motor1_on
2538                    ; line_number = 432
2539                    ;  second_motor1_on := motor1b_mask
2540 01d0 3004          movlw   4
2541   01d1 :   set_up__22:
2542                    ; code.delay=4294967295 back_code.delay=4294967295
2543 01d1 00bb          movwf   second_motor1_on
2544            
2545            
2546                    ; <=bit_code_emit@symbol; sym=motor1_direction (data:X0=>X0 code:XX=>XX)
2547                    ; line_number = 417
2548                    ;  if motor1_direction done
2549                    ; delay after procedure statements=non-uniform
2550                    ; Implied return
2551 01d2 3400          retlw   0
2552            
2553            
2554            
2555            
2556                    ; line_number = 435
2557                    ; procedure reset
2558   01d3 :   reset:
2559                    ; arguments_none
2560                    ; line_number = 437
2561                    ;  returns_nothing
2562            
2563                    ; # Initialize everything else:
2564                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
2565                    ; line_number = 440
2566                    ;  motor0e := 1
2567 01d3 1507          bsf     motor0e___byte, motor0e___bit
2568                    ; line_number = 441
2569                    ;  motor1e := 1
2570 01d4 1587          bsf     motor1e___byte, motor1e___bit
2571                    ; line_number = 442
2572                    ;  _intcon := 0
2573 01d5 3000          movlw   0
2574 01d6 008b          movwf   _intcon
2575                    ; line_number = 443
2576                    ;  _option_reg := 0
2577 01d7 3000          movlw   0
2578 01d8 1683          bsf     __rp0___byte, __rp0___bit
2579 01d9 0080          movwf   _option_reg
2580                    ; line_number = 444
2581                    ;  _wpua := 0
2582 01da 3000          movlw   0
2583 01db 0095          movwf   _wpua
2584                    ; line_number = 445
2585                    ;  actual_speed0 := 0
2586 01dc 3000          movlw   0
2587 01dd 1283          bcf     __rp0___byte, __rp0___bit
2588 01de 00a4          movwf   actual_speed0
2589                    ; line_number = 446
2590                    ;  actual_speed1 := 0
2591 01df 3000          movlw   0
2592 01e0 00a5          movwf   actual_speed1
2593                    ; line_number = 447
2594                    ;  motor0_off := 0
2595 01e1 3000          movlw   0
2596 01e2 00a6          movwf   motor0_off
2597                    ; line_number = 448
2598                    ;  motor0_on := 0
2599 01e3 3000          movlw   0
2600 01e4 00a7          movwf   motor0_on
2601                    ; line_number = 449
2602                    ;  motor1_off := 0
2603 01e5 3000          movlw   0
2604 01e6 00a8          movwf   motor1_off
2605                    ; line_number = 450
2606                    ;  motor1_on := 0
2607 01e7 3000          movlw   0
2608 01e8 00a9          movwf   motor1_on
2609                    ; line_number = 451
2610                    ;  desired_direction0 := 0
2611 01e9 115f          bcf     desired_direction0___byte, desired_direction0___bit
2612                    ; line_number = 452
2613                    ;  desired_direction1 := 0
2614 01ea 11df          bcf     desired_direction1___byte, desired_direction1___bit
2615                    ; line_number = 453
2616                    ;  desired_speed0 := 0
2617 01eb 3000          movlw   0
2618 01ec 00aa          movwf   desired_speed0
2619                    ; line_number = 454
2620                    ;  desired_speed1 := 0
2621 01ed 3000          movlw   0
2622 01ee 00ab          movwf   desired_speed1
2623                    ; line_number = 455
2624                    ;  ramp0 := 0
2625 01ef 3000          movlw   0
2626 01f0 00ac          movwf   ramp0
2627                    ; line_number = 456
2628                    ;  ramp1 := 0
2629 01f1 3000          movlw   0
2630 01f2 00ad          movwf   ramp1
2631                    ; line_number = 457
2632                    ;  ramp0_delay := 0
2633 01f3 3000          movlw   0
2634 01f4 00ae          movwf   ramp0_delay
2635                    ; line_number = 458
2636                    ;  ramp1_delay := 0
2637 01f5 3000          movlw   0
2638 01f6 00af          movwf   ramp1_delay
2639                    ; line_number = 459
2640                    ;  ramp0_offset := 0
2641 01f7 3000          movlw   0
2642 01f8 00b0          movwf   ramp0_offset
2643                    ; line_number = 460
2644                    ;  ramp1_offset := 0
2645 01f9 3000          movlw   0
2646 01fa 00b1          movwf   ramp1_offset
2647                    ; line_number = 461
2648                    ;  motor0_direction := 0
2649 01fb 105e          bcf     motor0_direction___byte, motor0_direction___bit
2650                    ; line_number = 462
2651                    ;  motor1_direction := 0
2652 01fc 10de          bcf     motor1_direction___byte, motor1_direction___bit
2653                    ; line_number = 463
2654                    ;  motor0_mode := 0
2655 01fd 135f          bcf     motor0_mode___byte, motor0_mode___bit
2656                    ; line_number = 464
2657                    ;  motor1_mode := 0
2658 01fe 13df          bcf     motor1_mode___byte, motor1_mode___bit
2659                    ; line_number = 465
2660                    ;  second_motor0_command := 0
2661 01ff 125f          bcf     second_motor0_command___byte, second_motor0_command___bit
2662                    ; line_number = 466
2663                    ;  second_motor1_command := 0
2664 0200 12df          bcf     second_motor1_command___byte, second_motor1_command___bit
2665                    ; line_number = 467
2666                    ;  fail_safe := 0
2667 0201 3000          movlw   0
2668 0202 00b2          movwf   fail_safe
2669                    ; line_number = 468
2670                    ;  fail_safe_errors := 0
2671 0203 3000          movlw   0
2672 0204 00b3          movwf   fail_safe_errors
2673                    ; line_number = 469
2674                    ;  fail_safe_high_counter := 0
2675 0205 3000          movlw   0
2676 0206 00b4          movwf   fail_safe_high_counter
2677                    ; line_number = 470
2678                    ;  fail_safe_low_counter := 0
2679 0207 3000          movlw   0
2680 0208 00b5          movwf   fail_safe_low_counter
2681                    ; line_number = 471
2682                    ;  glitch := 0
2683 0209 3000          movlw   0
2684 020a 00c0          movwf   glitch
2685                    ; line_number = 472
2686                    ;  id_index := 0
2687 020b 3000          movlw   0
2688 020c 00c1          movwf   id_index
2689            
2690            
2691                    ; delay after procedure statements=non-uniform
2692                    ; Implied return
2693 020d 3400          retlw   0
2694            
2695            
2696            
2697            
2698                    ; line_number = 475
2699                    ; procedure delay
2700   020e :   delay:
2701                    ; arguments_none
2702                    ; line_number = 477
2703                    ;  returns_nothing
2704                    ; line_number = 478
2705                    ;  exact_delay delay_instructions
2706            
2707                    ; # Delay for 1/3 of a bit time.
2708            
2709                    ; # Kick the dog:
2710                    ; before procedure statements delay=0, bit states=(data:X0=>X0 code:XX=>XX)
2711                    ; line_number = 483
2712                    ;  watch_dog_reset done
2713                    ; Delay at watch_dog_reset is 0
2714 020e 0064          clrwdt  
2715            
2716                    ; # This is the first probe of TMR0:
2717                    ; line_number = 486
2718                    ;  if _tmr0 < actual_speed0 start
2719                    ; Delay at if is 1
2720 020f 0824          movf    actual_speed0,w
2721 0210 0201          subwf   _tmr0,w
2722                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2723                    ; CASE: true_code_size > 1 && false_code_size > 1
2724                    ; true_code_size=2 false_code_size=2
2725 0211 1c03          btfss   __c___byte, __c___bit
2726 0212 2a16          goto    delay__1
2727                    ; line_number = 489
2728                    ; motor0 := motor0_off
2729                    ; Delay at assignment is 0
2730 0213 0826          movf    motor0_off,w
2731 0214 00be          movwf   motor0
2732 0215 2a19          goto    delay__2
2733   0216 :   delay__1:
2734                    ; line_number = 487
2735                    ; motor0 := motor0_on
2736                    ; Delay at assignment is 0
2737 0216 0827          movf    motor0_on,w
2738 0217 00be          movwf   motor0
2739 0218 0000          nop     
2740   0219 :   delay__2:
2741                    ; code.delay=9 back_code.delay=0
2742                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2743                    ; Uniform delay broke in relation_code_emit
2744                    ; if final true delay=2 false delay=2 code delay=9
2745                    ; line_number = 486
2746                    ;  if _tmr0 < actual_speed0 done
2747                    ; line_number = 490
2748                    ; if _tmr0 < actual_speed1 start
2749                    ; Delay at if is 9
2750 0219 0825          movf    actual_speed1,w
2751 021a 0201          subwf   _tmr0,w
2752                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2753                    ; CASE: true_code_size > 1 && false_code_size > 1
2754                    ; true_code_size=2 false_code_size=2
2755 021b 1c03          btfss   __c___byte, __c___bit
2756 021c 2a20          goto    delay__3
2757                    ; line_number = 493
2758                    ; motor1 := motor1_off
2759                    ; Delay at assignment is 0
2760 021d 0828          movf    motor1_off,w
2761 021e 00bf          movwf   motor1
2762 021f 2a23          goto    delay__4
2763   0220 :   delay__3:
2764                    ; line_number = 491
2765                    ; motor1 := motor1_on
2766                    ; Delay at assignment is 0
2767 0220 0829          movf    motor1_on,w
2768 0221 00bf          movwf   motor1
2769 0222 0000          nop     
2770   0223 :   delay__4:
2771                    ; code.delay=17 back_code.delay=0
2772                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2773                    ; Uniform delay broke in relation_code_emit
2774                    ; if final true delay=2 false delay=2 code delay=17
2775                    ; line_number = 490
2776                    ; if _tmr0 < actual_speed1 done
2777                    ; line_number = 494
2778                    ; _porta := motor0 | motor1
2779                    ; Delay at assignment is 17
2780 0223 083e          movf    motor0,w
2781 0224 043f          iorwf   motor1,w
2782 0225 0085          movwf   _porta
2783            
2784                    ; # First check out {fail_safe_counter}:
2785                    ; line_number = 497
2786                    ;  fail_safe_low_counter := fail_safe_low_counter - 1
2787                    ; Delay at assignment is 20
2788 0226 03b5          decf    fail_safe_low_counter,f
2789                    ; line_number = 498
2790                    ;  if _z start
2791                    ; Delay at if is 21
2792                    ; (after recombine) true_delay=25, false_delay=0 uniform_delay=true
2793                    ; CASE: true_code.size = 0 && false_code.size > 1
2794                    ; bit_code_emit_helper1: body_code.size=33 true_test=true body_code.delay=25 (uniform delay)
2795 0227 1903          btfsc   _z___byte, _z___bit
2796 0228 2a2e          goto    delay__11
2797                    ; Delay 24 cycles
2798                    ; Delay loop takes 6 * 4 = 24 cycles
2799 0229 3006          movlw   6
2800   022a :   delay__13:
2801 022a 3eff          addlw   255
2802 022b 1d03          btfss   __z___byte, __z___bit
2803 022c 2a2a          goto    delay__13
2804 022d 2a4f          goto    delay__12
2805   022e :   delay__11:
2806                    ; line_number = 499
2807                    ; fail_safe_high_counter := fail_safe_high_counter - 1
2808                    ; Delay at assignment is 0
2809 022e 03b4          decf    fail_safe_high_counter,f
2810                    ; line_number = 500
2811                    ;  if _z start
2812                    ; Delay at if is 1
2813                    ; (after recombine) true_delay=21, false_delay=0 uniform_delay=true
2814                    ; CASE: true_code.size = 0 && false_code.size > 1
2815                    ; bit_code_emit_helper1: body_code.size=25 true_test=true body_code.delay=21 (uniform delay)
2816 022f 1903          btfsc   _z___byte, _z___bit
2817 0230 2a36          goto    delay__8
2818                    ; Delay 20 cycles
2819                    ; Delay loop takes 5 * 4 = 20 cycles
2820 0231 3005          movlw   5
2821   0232 :   delay__10:
2822 0232 3eff          addlw   255
2823 0233 1d03          btfss   __z___byte, __z___bit
2824 0234 2a32          goto    delay__10
2825 0235 2a4f          goto    delay__9
2826   0236 :   delay__8:
2827                    ; line_number = 501
2828                    ; if fail_safe != 0 start
2829                    ; Delay at if is 0
2830                    ; Left minus Right
2831 0236 0832          movf    fail_safe,w
2832                    ; (after recombine) true_delay=0, false_delay=17 uniform_delay=true
2833                    ; CASE: true.size=0 && false.size>1
2834                    ; bit_code_emit_helper1: body_code.size=17 true_test=false body_code.delay=17 (uniform delay)
2835 0237 1d03          btfss   __z___byte, __z___bit
2836 0238 2a3e          goto    delay__5
2837                    ; Delay 16 cycles
2838                    ; Delay loop takes 4 * 4 = 16 cycles
2839 0239 3004          movlw   4
2840   023a :   delay__7:
2841 023a 3eff          addlw   255
2842 023b 1d03          btfss   __z___byte, __z___bit
2843 023c 2a3a          goto    delay__7
2844 023d 2a4f          goto    delay__6
2845   023e :   delay__5:
2846                    ; # Turn the motors off:
2847                    ; line_number = 503
2848                    ;  motor0_on := 0
2849                    ; Delay at assignment is 0
2850 023e 3000          movlw   0
2851 023f 00a7          movwf   motor0_on
2852                    ; line_number = 504
2853                    ;  motor0_off := 0
2854                    ; Delay at assignment is 2
2855 0240 3000          movlw   0
2856 0241 00a6          movwf   motor0_off
2857                    ; line_number = 505
2858                    ;  motor1_on := 0
2859                    ; Delay at assignment is 4
2860 0242 3000          movlw   0
2861 0243 00a9          movwf   motor1_on
2862                    ; line_number = 506
2863                    ;  motor1_off := 0
2864                    ; Delay at assignment is 6
2865 0244 3000          movlw   0
2866 0245 00a8          movwf   motor1_off
2867                    ; line_number = 507
2868                    ;  desired_speed0 := 0
2869                    ; Delay at assignment is 8
2870 0246 3000          movlw   0
2871 0247 00aa          movwf   desired_speed0
2872                    ; line_number = 508
2873                    ;  desired_speed1 := 0
2874                    ; Delay at assignment is 10
2875 0248 3000          movlw   0
2876 0249 00ab          movwf   desired_speed1
2877                    ; line_number = 509
2878                    ;  actual_speed0 := 0
2879                    ; Delay at assignment is 12
2880 024a 3000          movlw   0
2881 024b 00a4          movwf   actual_speed0
2882                    ; line_number = 510
2883                    ;  actual_speed1 := 0
2884                    ; Delay at assignment is 14
2885 024c 3000          movlw   0
2886 024d 00a5          movwf   actual_speed1
2887                    ; line_number = 511
2888                    ;  fail_safe_errors := fail_safe_errors + 1
2889                    ; Delay at assignment is 16
2890 024e 0ab3          incf    fail_safe_errors,f
2891            
2892   024f :   delay__6:
2893                    ; code.delay=21 back_code.delay=0
2894                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
2895                    ; Uniform delay broke in relation_code_emit
2896                    ; if final true delay=17 false delay=0 code delay=21
2897                    ; line_number = 501
2898                    ; if fail_safe != 0 done
2899   024f :   delay__9:
2900                    ; code.delay=25 back_code.delay=0
2901                    ; <=bit_code_emit@symbol; sym=_z (data:X0=>X0 code:XX=>XX)
2902                    ; if final true delay=21 false delay=0 code delay=25
2903                    ; line_number = 500
2904                    ;  if _z done
2905   024f :   delay__12:
2906                    ; code.delay=49 back_code.delay=0
2907                    ; <=bit_code_emit@symbol; sym=_z (data:X0=>X0 code:XX=>XX)
2908                    ; if final true delay=25 false delay=0 code delay=49
2909                    ; line_number = 498
2910                    ;  if _z done
2911                    ; # This is the second probe of TMR0:
2912                    ; line_number = 514
2913                    ;  if _tmr0 < actual_speed0 start
2914                    ; Delay at if is 49
2915 024f 0824          movf    actual_speed0,w
2916 0250 0201          subwf   _tmr0,w
2917                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2918                    ; CASE: true_code_size > 1 && false_code_size > 1
2919                    ; true_code_size=2 false_code_size=2
2920 0251 1c03          btfss   __c___byte, __c___bit
2921 0252 2a56          goto    delay__14
2922                    ; line_number = 517
2923                    ; motor0 := motor0_off
2924                    ; Delay at assignment is 0
2925 0253 0826          movf    motor0_off,w
2926 0254 00be          movwf   motor0
2927 0255 2a59          goto    delay__15
2928   0256 :   delay__14:
2929                    ; line_number = 515
2930                    ; motor0 := motor0_on
2931                    ; Delay at assignment is 0
2932 0256 0827          movf    motor0_on,w
2933 0257 00be          movwf   motor0
2934 0258 0000          nop     
2935   0259 :   delay__15:
2936                    ; code.delay=57 back_code.delay=0
2937                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2938                    ; Uniform delay broke in relation_code_emit
2939                    ; if final true delay=2 false delay=2 code delay=57
2940                    ; line_number = 514
2941                    ;  if _tmr0 < actual_speed0 done
2942                    ; line_number = 518
2943                    ; if _tmr0 < actual_speed1 start
2944                    ; Delay at if is 57
2945 0259 0825          movf    actual_speed1,w
2946 025a 0201          subwf   _tmr0,w
2947                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
2948                    ; CASE: true_code_size > 1 && false_code_size > 1
2949                    ; true_code_size=2 false_code_size=2
2950 025b 1c03          btfss   __c___byte, __c___bit
2951 025c 2a60          goto    delay__16
2952                    ; line_number = 521
2953                    ; motor1 := motor1_off
2954                    ; Delay at assignment is 0
2955 025d 0828          movf    motor1_off,w
2956 025e 00bf          movwf   motor1
2957 025f 2a63          goto    delay__17
2958   0260 :   delay__16:
2959                    ; line_number = 519
2960                    ; motor1 := motor1_on
2961                    ; Delay at assignment is 0
2962 0260 0829          movf    motor1_on,w
2963 0261 00bf          movwf   motor1
2964 0262 0000          nop     
2965   0263 :   delay__17:
2966                    ; code.delay=65 back_code.delay=0
2967                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
2968                    ; Uniform delay broke in relation_code_emit
2969                    ; if final true delay=2 false delay=2 code delay=65
2970                    ; line_number = 518
2971                    ; if _tmr0 < actual_speed1 done
2972                    ; line_number = 522
2973                    ; _porta := motor0 | motor1
2974                    ; Delay at assignment is 65
2975 0263 083e          movf    motor0,w
2976 0264 043f          iorwf   motor1,w
2977 0265 0085          movwf   _porta
2978            
2979                    ; # Do {ramp0} management:
2980                    ; line_number = 525
2981                    ;  ramp0_delay := ramp0_delay - 1
2982                    ; Delay at assignment is 68
2983 0266 03ae          decf    ramp0_delay,f
2984                    ; line_number = 526
2985                    ;  if _z start
2986                    ; Delay at if is 69
2987                    ; (after recombine) true_delay=9, false_delay=0 uniform_delay=true
2988                    ; CASE: true_code.size = 0 && false_code.size > 1
2989                    ; bit_code_emit_helper1: body_code.size=34 true_test=true body_code.delay=9 (uniform delay)
2990 0267 1903          btfsc   _z___byte, _z___bit
2991 0268 2a6e          goto    delay__25
2992                    ; Delay 8 cycles
2993                    ; Delay loop takes 2 * 4 = 8 cycles
2994 0269 3002          movlw   2
2995   026a :   delay__27:
2996 026a 3eff          addlw   255
2997 026b 1d03          btfss   __z___byte, __z___bit
2998 026c 2a6a          goto    delay__27
2999 026d 2a90          goto    delay__26
3000   026e :   delay__25:
3001                    ; line_number = 527
3002                    ; ramp0_delay := ramp0
3003                    ; Delay at assignment is 0
3004 026e 082c          movf    ramp0,w
3005 026f 00ae          movwf   ramp0_delay
3006                    ; line_number = 528
3007                    ;  if actual_speed0 != desired_speed0 start
3008                    ; Delay at if is 2
3009                    ; Left minus Right
3010 0270 082a          movf    desired_speed0,w
3011 0271 0224          subwf   actual_speed0,w
3012                    ; (after recombine) true_delay=15, false_delay=2 uniform_delay=true
3013                    ; CASE: true_code_size > 1 && false_code_size > 1
3014                    ; true_code_size=21 false_code_size=2
3015 0272 1903          btfsc   __z___byte, __z___bit
3016 0273 2a7b          goto    delay__22
3017                    ; Delay 12 cycles
3018                    ; Delay loop takes 3 * 4 = 12 cycles
3019 0274 3003          movlw   3
3020   0275 :   delay__24:
3021 0275 3eff          addlw   255
3022 0276 1d03          btfss   __z___byte, __z___bit
3023 0277 2a75          goto    delay__24
3024                    ; line_number = 529
3025                    ; actual_speed0 := actual_speed0 + ramp0_offset
3026                    ; Delay at assignment is 0
3027 0278 0830          movf    ramp0_offset,w
3028 0279 07a4          addwf   actual_speed0,f
3029 027a 2a90          goto    delay__23
3030   027b :   delay__22:
3031                    ; line_number = 530
3032                    ; (after recombine) true_delay=12, false_delay=0 uniform_delay=true
3033                    ; CASE: true_code.size = 0 && false_code.size > 1
3034                    ; bit_code_emit_helper1: body_code.size=12 true_test=true body_code.delay=12 (uniform delay)
3035 027b 1a5f          btfsc   second_motor0_command___byte, second_motor0_command___bit
3036 027c 2a84          goto    delay__18
3037                    ; Delay 11 cycles
3038                    ; Delay loop takes 2 * 4 = 8 cycles
3039 027d 3002          movlw   2
3040   027e :   delay__20:
3041 027e 3eff          addlw   255
3042 027f 1d03          btfss   __z___byte, __z___bit
3043 0280 2a7e          goto    delay__20
3044 0281 2a82          goto    delay__21
3045   0282 :   delay__21:
3046 0282 0000          nop     
3047 0283 2a90          goto    delay__19
3048   0284 :   delay__18:
3049                    ; line_number = 531
3050                    ; second_motor0_command := 0
3051                    ; Delay at assignment is 0
3052 0284 125f          bcf     second_motor0_command___byte, second_motor0_command___bit
3053                    ; line_number = 532
3054                    ;  desired_speed0 := second_desired_speed0
3055                    ; Delay at assignment is 1
3056 0285 0836          movf    second_desired_speed0,w
3057 0286 00aa          movwf   desired_speed0
3058                    ; line_number = 533
3059                    ;  ramp0_offset := second_ramp0_offset
3060                    ; Delay at assignment is 3
3061 0287 0838          movf    second_ramp0_offset,w
3062 0288 00b0          movwf   ramp0_offset
3063                    ; line_number = 534
3064                    ;  motor0_on := second_motor0_on
3065                    ; Delay at assignment is 5
3066 0289 083a          movf    second_motor0_on,w
3067 028a 00a7          movwf   motor0_on
3068                    ; line_number = 535
3069                    ;  motor0_off := second_motor0_off
3070                    ; Delay at assignment is 7
3071 028b 083c          movf    second_motor0_off,w
3072 028c 00a6          movwf   motor0_off
3073                    ; line_number = 536
3074                    ;  motor0_direction := desired_direction0
3075                    ; Delay at assignment is 9
3076 028d 105e          bcf     motor0_direction___byte, motor0_direction___bit
3077                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
3078                    ; CASE: True.size=1 False.size=0
3079 028e 195f          btfsc   desired_direction0___byte, desired_direction0___bit
3080 028f 145e          bsf     motor0_direction___byte, motor0_direction___bit
3081                    ; code.delay=12 back_code.delay=0
3082                    ; <=bit_code_emit@symbol; sym=desired_direction0 (data:XX=>X0 code:XX=>XX)
3083            
3084   0290 :   delay__19:
3085                    ; code.delay=15 back_code.delay=0
3086                    ; <=bit_code_emit@symbol; sym=second_motor0_command (data:X0=>X0 code:XX=>XX)
3087   0290 :   delay__23:
3088                    ; code.delay=9 back_code.delay=0
3089                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
3090                    ; Uniform delay broke in relation_code_emit
3091                    ; if final true delay=2 false delay=15 code delay=9
3092                    ; line_number = 528
3093                    ;  if actual_speed0 != desired_speed0 done
3094   0290 :   delay__26:
3095                    ; code.delay=81 back_code.delay=0
3096                    ; <=bit_code_emit@symbol; sym=_z (data:X0=>X0 code:XX=>XX)
3097                    ; if final true delay=9 false delay=0 code delay=81
3098                    ; line_number = 526
3099                    ;  if _z done
3100                    ; # This is the third probe of TMR0:
3101                    ; line_number = 539
3102                    ;  if _tmr0 < actual_speed0 start
3103                    ; Delay at if is 81
3104 0290 0824          movf    actual_speed0,w
3105 0291 0201          subwf   _tmr0,w
3106                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
3107                    ; CASE: true_code_size > 1 && false_code_size > 1
3108                    ; true_code_size=2 false_code_size=2
3109 0292 1c03          btfss   __c___byte, __c___bit
3110 0293 2a97          goto    delay__28
3111                    ; line_number = 542
3112                    ; motor0 := motor0_off
3113                    ; Delay at assignment is 0
3114 0294 0826          movf    motor0_off,w
3115 0295 00be          movwf   motor0
3116            
3117 0296 2a9a          goto    delay__29
3118   0297 :   delay__28:
3119                    ; line_number = 540
3120                    ; motor0 := motor0_on
3121                    ; Delay at assignment is 0
3122 0297 0827          movf    motor0_on,w
3123 0298 00be          movwf   motor0
3124 0299 0000          nop     
3125   029a :   delay__29:
3126                    ; code.delay=89 back_code.delay=0
3127                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3128                    ; Uniform delay broke in relation_code_emit
3129                    ; if final true delay=2 false delay=2 code delay=89
3130                    ; line_number = 539
3131                    ;  if _tmr0 < actual_speed0 done
3132                    ; line_number = 544
3133                    ; if _tmr0 < actual_speed1 start
3134                    ; Delay at if is 89
3135 029a 0825          movf    actual_speed1,w
3136 029b 0201          subwf   _tmr0,w
3137                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
3138                    ; CASE: true_code_size > 1 && false_code_size > 1
3139                    ; true_code_size=2 false_code_size=2
3140 029c 1c03          btfss   __c___byte, __c___bit
3141 029d 2aa1          goto    delay__30
3142                    ; line_number = 547
3143                    ; motor1 := motor1_off
3144                    ; Delay at assignment is 0
3145 029e 0828          movf    motor1_off,w
3146 029f 00bf          movwf   motor1
3147 02a0 2aa4          goto    delay__31
3148   02a1 :   delay__30:
3149                    ; line_number = 545
3150                    ; motor1 := motor1_on
3151                    ; Delay at assignment is 0
3152 02a1 0829          movf    motor1_on,w
3153 02a2 00bf          movwf   motor1
3154 02a3 0000          nop     
3155   02a4 :   delay__31:
3156                    ; code.delay=97 back_code.delay=0
3157                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3158                    ; Uniform delay broke in relation_code_emit
3159                    ; if final true delay=2 false delay=2 code delay=97
3160                    ; line_number = 544
3161                    ; if _tmr0 < actual_speed1 done
3162                    ; line_number = 548
3163                    ; _porta := motor0 | motor1
3164                    ; Delay at assignment is 97
3165 02a4 083e          movf    motor0,w
3166 02a5 043f          iorwf   motor1,w
3167 02a6 0085          movwf   _porta
3168            
3169                    ; # Do {ramp1} management:
3170                    ; line_number = 551
3171                    ;  ramp1_delay := ramp1_delay - 1
3172                    ; Delay at assignment is 100
3173 02a7 03af          decf    ramp1_delay,f
3174                    ; line_number = 552
3175                    ;  if _z start
3176                    ; Delay at if is 101
3177                    ; (after recombine) true_delay=9, false_delay=19 uniform_delay=true
3178                    ; CASE: true_code_size > 1 && false_code_size > 1
3179                    ; true_code_size=34 false_code_size=23
3180 02a8 1d03          btfss   _z___byte, _z___bit
3181 02a9 2ad2          goto    delay__43
3182                    ; line_number = 553
3183                    ; ramp1_delay := ramp1
3184                    ; Delay at assignment is 0
3185 02aa 082d          movf    ramp1,w
3186 02ab 00af          movwf   ramp1_delay
3187                    ; line_number = 554
3188                    ;  if actual_speed1 != desired_speed1 start
3189                    ; Delay at if is 2
3190                    ; Left minus Right
3191 02ac 082b          movf    desired_speed1,w
3192 02ad 0225          subwf   actual_speed1,w
3193                    ; (after recombine) true_delay=15, false_delay=2 uniform_delay=true
3194                    ; CASE: true_code_size > 1 && false_code_size > 1
3195                    ; true_code_size=21 false_code_size=2
3196 02ae 1903          btfsc   __z___byte, __z___bit
3197 02af 2ab7          goto    delay__40
3198                    ; Delay 12 cycles
3199                    ; Delay loop takes 3 * 4 = 12 cycles
3200 02b0 3003          movlw   3
3201   02b1 :   delay__42:
3202 02b1 3eff          addlw   255
3203 02b2 1d03          btfss   __z___byte, __z___bit
3204 02b3 2ab1          goto    delay__42
3205                    ; line_number = 555
3206                    ; actual_speed1 := actual_speed1 + ramp1_offset
3207                    ; Delay at assignment is 0
3208 02b4 0831          movf    ramp1_offset,w
3209 02b5 07a5          addwf   actual_speed1,f
3210 02b6 2acc          goto    delay__41
3211   02b7 :   delay__40:
3212                    ; line_number = 556
3213                    ; (after recombine) true_delay=12, false_delay=0 uniform_delay=true
3214                    ; CASE: true_code.size = 0 && false_code.size > 1
3215                    ; bit_code_emit_helper1: body_code.size=12 true_test=true body_code.delay=12 (uniform delay)
3216 02b7 1adf          btfsc   second_motor1_command___byte, second_motor1_command___bit
3217 02b8 2ac0          goto    delay__36
3218                    ; Delay 11 cycles
3219                    ; Delay loop takes 2 * 4 = 8 cycles
3220 02b9 3002          movlw   2
3221   02ba :   delay__38:
3222 02ba 3eff          addlw   255
3223 02bb 1d03          btfss   __z___byte, __z___bit
3224 02bc 2aba          goto    delay__38
3225 02bd 2abe          goto    delay__39
3226   02be :   delay__39:
3227 02be 0000          nop     
3228 02bf 2acc          goto    delay__37
3229   02c0 :   delay__36:
3230                    ; line_number = 557
3231                    ; second_motor1_command := 0
3232                    ; Delay at assignment is 0
3233 02c0 12df          bcf     second_motor1_command___byte, second_motor1_command___bit
3234                    ; line_number = 558
3235                    ;  desired_speed1 := second_desired_speed1
3236                    ; Delay at assignment is 1
3237 02c1 0837          movf    second_desired_speed1,w
3238 02c2 00ab          movwf   desired_speed1
3239                    ; line_number = 559
3240                    ;  ramp1_offset := second_ramp1_offset
3241                    ; Delay at assignment is 3
3242 02c3 0839          movf    second_ramp1_offset,w
3243 02c4 00b1          movwf   ramp1_offset
3244                    ; line_number = 560
3245                    ;  motor1_on := second_motor1_on
3246                    ; Delay at assignment is 5
3247 02c5 083b          movf    second_motor1_on,w
3248 02c6 00a9          movwf   motor1_on
3249                    ; line_number = 561
3250                    ;  motor1_off := second_motor1_off
3251                    ; Delay at assignment is 7
3252 02c7 083d          movf    second_motor1_off,w
3253 02c8 00a8          movwf   motor1_off
3254                    ; line_number = 562
3255                    ;  motor1_direction := desired_direction1
3256                    ; Delay at assignment is 9
3257 02c9 10de          bcf     motor1_direction___byte, motor1_direction___bit
3258                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
3259                    ; CASE: True.size=1 False.size=0
3260 02ca 19df          btfsc   desired_direction1___byte, desired_direction1___bit
3261 02cb 14de          bsf     motor1_direction___byte, motor1_direction___bit
3262                    ; code.delay=12 back_code.delay=0
3263                    ; <=bit_code_emit@symbol; sym=desired_direction1 (data:XX=>X0 code:XX=>XX)
3264   02cc :   delay__37:
3265                    ; code.delay=15 back_code.delay=0
3266                    ; <=bit_code_emit@symbol; sym=second_motor1_command (data:X0=>X0 code:XX=>XX)
3267   02cc :   delay__41:
3268                    ; code.delay=9 back_code.delay=0
3269                    ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
3270                    ; Uniform delay broke in relation_code_emit
3271                    ; if final true delay=2 false delay=15 code delay=9
3272                    ; line_number = 554
3273                    ;  if actual_speed1 != desired_speed1 done
3274                    ; Delay 9 cycles
3275                    ; Delay loop takes 2 * 4 = 8 cycles
3276 02cc 3002          movlw   2
3277   02cd :   delay__45:
3278 02cd 3eff          addlw   255
3279 02ce 1d03          btfss   __z___byte, __z___bit
3280 02cf 2acd          goto    delay__45
3281 02d0 0000          nop     
3282 02d1 2ae9          goto    delay__44
3283   02d2 :   delay__43:
3284                    ; # This is the forth probe of TMR0:
3285                    ; line_number = 565
3286                    ;  if _tmr0 < actual_speed0 start
3287                    ; Delay at if is 0
3288 02d2 0824          movf    actual_speed0,w
3289 02d3 0201          subwf   _tmr0,w
3290                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
3291                    ; CASE: true_code_size > 1 && false_code_size > 1
3292                    ; true_code_size=2 false_code_size=2
3293 02d4 1c03          btfss   __c___byte, __c___bit
3294 02d5 2ad9          goto    delay__32
3295                    ; line_number = 568
3296                    ; motor0 := motor0_off
3297                    ; Delay at assignment is 0
3298 02d6 0826          movf    motor0_off,w
3299 02d7 00be          movwf   motor0
3300 02d8 2adc          goto    delay__33
3301   02d9 :   delay__32:
3302                    ; line_number = 566
3303                    ; motor0 := motor0_on
3304                    ; Delay at assignment is 0
3305 02d9 0827          movf    motor0_on,w
3306 02da 00be          movwf   motor0
3307 02db 0000          nop     
3308   02dc :   delay__33:
3309                    ; code.delay=8 back_code.delay=0
3310                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3311                    ; Uniform delay broke in relation_code_emit
3312                    ; if final true delay=2 false delay=2 code delay=8
3313                    ; line_number = 565
3314                    ;  if _tmr0 < actual_speed0 done
3315                    ; line_number = 569
3316                    ; if _tmr0 < actual_speed1 start
3317                    ; Delay at if is 8
3318 02dc 0825          movf    actual_speed1,w
3319 02dd 0201          subwf   _tmr0,w
3320                    ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
3321                    ; CASE: true_code_size > 1 && false_code_size > 1
3322                    ; true_code_size=2 false_code_size=2
3323 02de 1c03          btfss   __c___byte, __c___bit
3324 02df 2ae3          goto    delay__34
3325                    ; line_number = 572
3326                    ; motor1 := motor1_off
3327                    ; Delay at assignment is 0
3328 02e0 0828          movf    motor1_off,w
3329 02e1 00bf          movwf   motor1
3330 02e2 2ae6          goto    delay__35
3331   02e3 :   delay__34:
3332                    ; line_number = 570
3333                    ; motor1 := motor1_on
3334                    ; Delay at assignment is 0
3335 02e3 0829          movf    motor1_on,w
3336 02e4 00bf          movwf   motor1
3337 02e5 0000          nop     
3338   02e6 :   delay__35:
3339                    ; code.delay=16 back_code.delay=0
3340                    ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
3341                    ; Uniform delay broke in relation_code_emit
3342                    ; if final true delay=2 false delay=2 code delay=16
3343                    ; line_number = 569
3344                    ; if _tmr0 < actual_speed1 done
3345                    ; line_number = 573
3346                    ; _porta := motor0 | motor1
3347                    ; Delay at assignment is 16
3348 02e6 083e          movf    motor0,w
3349 02e7 043f          iorwf   motor1,w
3350 02e8 0085          movwf   _porta
3351            
3352            
3353   02e9 :   delay__44:
3354                    ; code.delay=123 back_code.delay=0
3355                    ; <=bit_code_emit@symbol; sym=_z (data:X0=>X0 code:XX=>XX)
3356                    ; if final true delay=9 false delay=19 code delay=123
3357                    ; line_number = 552
3358                    ;  if _z done
3359                    ; delay after procedure statements=123
3360                    ; Delay 8 cycles
3361                    ; Delay loop takes 2 * 4 = 8 cycles
3362 02e9 3002          movlw   2
3363   02ea :   delay__46:
3364 02ea 3eff          addlw   255
3365 02eb 1d03          btfss   __z___byte, __z___bit
3366 02ec 2aea          goto    delay__46
3367                    ; Implied return
3368 02ed 3400          retlw   0
3369                    ; Final delay = 133
3370            
3371            
3372            
3373            
3374                    ; line_number = 576
3375                    ; constant zero8 = "\0,0,0,0,0,0,0,0\"
3376                    ; zero8 = '\0,0,0,0,0,0,0,0\'
3377                    ; line_number = 577
3378                    ; constant module_name = "\13\DualMotor1Amp"
3379                    ; module_name = '\13\DualMotor1Amp'
3380                    ; line_number = 578
3381                    ; constant vendor_name = "\13\Mondo-tronics"
3382                    ; vendor_name = '\13\Mondo-tronics'
3383            
3384                    ; line_number = 580
3385                    ; string id = "\1,0,14,2,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
3386                    ; id = '\1,0,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13\DualMotor1Amp\13\Mondo-tronics'
3387   02ee :   id:
3388                    ; Temporarily save index into FSR
3389 02ee 0084          movwf   __fsr
3390                    ; Initialize PCLATH to point to this code page
3391 02ef 3003          movlw   id___base>>8
3392 02f0 008a          movwf   __pclath
3393                    ; Restore index from FSR
3394 02f1 0804          movf    __fsr,w
3395 02f2 3e00          addlw   id___base
3396                    ; Index to the correct return value
3397 02f3 0082          movwf   __pcl
3398                    ; page_group 52
3399                    ; Add 12 NOP's until start of new page 
3400 02f4 0000          nop     
3401 02f5 0000          nop     
3402 02f6 0000          nop     
3403 02f7 0000          nop     
3404 02f8 0000          nop     
3405 02f9 0000          nop     
3406 02fa 0000          nop     
3407 02fb 0000          nop     
3408 02fc 0000          nop     
3409 02fd 0000          nop     
3410 02fe 0000          nop     
3411 02ff 0000          nop     
3412   0300 :   id___base:
3413 0300 3401          retlw   1
3414 0301 3400          retlw   0
3415 0302 340e          retlw   14
3416 0303 3402          retlw   2
3417 0304 3400          retlw   0
3418 0305 3400          retlw   0
3419 0306 3400          retlw   0
3420 0307 3400          retlw   0
3421 0308 3400          retlw   0
3422 0309 3400          retlw   0
3423 030a 3400          retlw   0
3424 030b 3400          retlw   0
3425 030c 3400          retlw   0
3426 030d 3400          retlw   0
3427 030e 3400          retlw   0
3428 030f 3400          retlw   0
3429 0310 3400          retlw   0
3430 0311 3400          retlw   0
3431 0312 3400          retlw   0
3432 0313 3400          retlw   0
3433 0314 3400          retlw   0
3434 0315 3400          retlw   0
3435 0316 3400          retlw   0
3436 0317 3400          retlw   0
3437 0318 340d          retlw   13
3438 0319 3444          retlw   68
3439 031a 3475          retlw   117
3440 031b 3461          retlw   97
3441 031c 346c          retlw   108
3442 031d 344d          retlw   77
3443 031e 346f          retlw   111
3444 031f 3474          retlw   116
3445 0320 346f          retlw   111
3446 0321 3472          retlw   114
3447 0322 3431          retlw   49
3448 0323 3441          retlw   65
3449 0324 346d          retlw   109
3450 0325 3470          retlw   112
3451 0326 340d          retlw   13
3452 0327 344d          retlw   77
3453 0328 346f          retlw   111
3454 0329 346e          retlw   110
3455 032a 3464          retlw   100
3456 032b 346f          retlw   111
3457 032c 342d          retlw   45
3458 032d 3474          retlw   116
3459 032e 3472          retlw   114
3460 032f 346f          retlw   111
3461 0330 346e          retlw   110
3462 0331 3469          retlw   105
3463 0332 3463          retlw   99
3464 0333 3473          retlw   115
3465                    ; line_number = 580
3466                    ; string id = "\1,0,14,2,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
3467            
3468                    ; Appending 2 delayed procedures to code bank 0
3469                    ; buffer = 'bit_bang'
3470                    ; line_number = 33
3471                    ; procedure byte_get
3472   0334 :   byte_get:
3473                    ; arguments_none
3474                    ; line_number = 35
3475                    ;  returns byte
3476            
3477                    ; # This procedure will wait for a byte to be received from
3478                    ; # serial_in_bit.  It calls the delay procedure for all delays.
3479                    ; # This procedure will keep calling the {delay} routine until
3480                    ; # data is received.
3481            
3482                    ; line_number = 42
3483                    ;  local count byte
3484 00000020 = byte_get__count equ shared___globals
3485                    ; line_number = 43
3486                    ;  local byte byte
3487 00000021 = byte_get__byte equ shared___globals+1
3488            
3489                    ; # Why does the delay procedure wait for a third of bit?  Well, it
3490                    ; # has to do with the loop immediately below.  If we catch the
3491                    ; # start bit at the beginning of a 1/3 bit time, we will be
3492                    ; # sampling data at approximately 1/3 of the way into each bit.
3493                    ; # Conversely, if we catch the start near the end of a 1/3 bit
3494                    ; # bit time, we will be sampling data at approximately 2/3 of the
3495                    ; # way into each bit.  So, what this means is that our bit sample
3496                    ; # times will be somewhere between 1/3 and 2/3 of bit (i.e. in
3497                    ; # the middle of the bit.
3498            
3499                    ; # It would be nice to tweak the code to shorter delay times
3500                    ; # (1/4 bit, 1/5 bit, etc.) but then it gets too hard to get
3501                    ; # the bookeeping done in the delay routine.  A PIC running at
3502                    ; # 4MHz (=1MIPS), only has 138 instructions available for the
3503                    ; # delay routine when at 1/3 of bit.
3504            
3505                    ; # Wait for a start bit:
3506                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3507                    ; line_number = 62
3508                    ;  waiting := 1
3509 0334 14df          bsf     waiting___byte, waiting___bit
3510                    ; line_number = 63
3511                    ;  receiving := 1
3512 0335 145f          bsf     receiving___byte, receiving___bit
3513                    ; line_number = 64
3514                    ;  while serial_in start
3515   0336 :   byte_get__1:
3516                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
3517                    ; CASE: true_code.size = 0 && false_code.size > 1
3518                    ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
3519 0336 1c07          btfss   serial_in___byte, serial_in___bit
3520 0337 2b3a          goto    byte_get__2
3521                    ; line_number = 65
3522                    ; delay instructions_per_delay - 3 start
3523                    ; Delay expression evaluates to 135
3524                    ; line_number = 66
3525                    ; call delay()
3526                    ; Delay at call is 0
3527 0338 220e          call    delay
3528                    ; line_number = 65
3529                    ; delay instructions_per_delay - 3 done
3530 0339 2b36          goto    byte_get__1
3531                    ; Recombine size1 = 0 || size2 = 0
3532   033a :   byte_get__2:
3533                    ; code.delay=4294967295 back_code.delay=4294967295
3534                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
3535                    ; line_number = 64
3536                    ;  while serial_in done
3537                    ; line_number = 67
3538                    ; waiting := 0
3539 033a 10df          bcf     waiting___byte, waiting___bit
3540            
3541                    ; # Clear out any preceeding interrupt condition:
3542                    ; line_number = 70
3543                    ;  serial_out := 1
3544 033b 1487          bsf     serial_out___byte, serial_out___bit
3545            
3546                    ; # Skip over start bit:
3547                    ; line_number = 73
3548                    ;  delay instructions_per_bit - 2 start
3549                    ; Delay expression evaluates to 414
3550                    ; # There are two instructions of set-up for following loop_exactly:
3551                    ; line_number = 75
3552                    ;  call delay()
3553                    ; Delay at call is 0
3554 033c 220e          call    delay
3555                    ; line_number = 76
3556                    ;  call delay()
3557                    ; Delay at call is 135
3558 033d 220e          call    delay
3559                    ; line_number = 77
3560                    ;  call delay()
3561                    ; Delay at call is 270
3562 033e 220e          call    delay
3563                    ; line_number = 78
3564                    ;  byte := 0
3565                    ; Delay at assignment is 405
3566 033f 3000          movlw   0
3567 0340 00a1          movwf   byte_get__byte
3568            
3569                    ; Delay 7 cycles
3570 0341 2b42          goto    byte_get__3
3571   0342 :   byte_get__3:
3572 0342 2b43          goto    byte_get__4
3573   0343 :   byte_get__4:
3574 0343 2b44          goto    byte_get__5
3575   0344 :   byte_get__5:
3576 0344 0000          nop     
3577                    ; line_number = 73
3578                    ;  delay instructions_per_bit - 2 done
3579                    ; # Read in 8 bits of data:
3580                    ; line_number = 81
3581                    ;  loop_exactly 8 start
3582 0000004c = byte_get__6 equ shared___globals+44
3583 0345 3008          movlw   8
3584 0346 00cc          movwf   byte_get__6
3585   0347 :   byte_get__7:
3586                    ; # There are 3 instrucitons of loop_exactly overhead:
3587                    ; line_number = 83
3588                    ;  delay instructions_per_bit - 3 start
3589                    ; Delay expression evaluates to 413
3590                    ; line_number = 84
3591                    ; call delay()
3592                    ; Delay at call is 0
3593 0347 220e          call    delay
3594                    ; line_number = 85
3595                    ;  byte := byte >> 1
3596                    ; Delay at assignment is 135
3597                    ; Assignment of variable to self (no code needed)
3598 0348 0ca1          rrf     byte_get__byte,f
3599 0349 13a1          bcf     byte_get__byte, 7
3600                    ; line_number = 86
3601                    ;  if serial_in start
3602                    ; Delay at if is 137
3603                    ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
3604                    ; CASE: True.size=1 False.size=0
3605 034a 1807          btfsc   serial_in___byte, serial_in___bit
3606                    ; line_number = 87
3607                    ; byte@7 := 1
3608                    ; Delay at assignment is 0
3609 00000021 = byte_get__select__8___byte equ byte_get__byte
3610 00000007 = byte_get__select__8___bit equ 7
3611 034b 17a1          bsf     byte_get__select__8___byte, byte_get__select__8___bit
3612                    ; code.delay=139 back_code.delay=0
3613                    ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
3614                    ; if final true delay=1 false delay=0 code delay=139
3615                    ; line_number = 86
3616                    ;  if serial_in done
3617                    ; line_number = 88
3618                    ; call delay()
3619                    ; Delay at call is 139
3620 034c 220e          call    delay
3621                    ; line_number = 89
3622                    ;  call delay()
3623                    ; Delay at call is 274
3624 034d 220e          call    delay
3625            
3626                    ; Delay 4 cycles
3627 034e 2b4f          goto    byte_get__9
3628   034f :   byte_get__9:
3629 034f 2b50          goto    byte_get__10
3630   0350 :   byte_get__10:
3631                    ; line_number = 83
3632                    ;  delay instructions_per_bit - 3 done
3633                    ; line_number = 81
3634                    ;  loop_exactly 8 wrap-up
3635 0350 0bcc          decfsz  byte_get__6,f
3636 0351 2b47          goto    byte_get__7
3637                    ; line_number = 81
3638                    ;  loop_exactly 8 done
3639                    ; # Skip over 2/3's of stop bit; 3 cycles for return:
3640                    ; line_number = 92
3641                    ;  delay instructions_per_delay*2 - 3 start
3642                    ; Delay expression evaluates to 273
3643                    ; line_number = 93
3644                    ; call delay()
3645                    ; Delay at call is 0
3646 0352 220e          call    delay
3647                    ; line_number = 94
3648                    ;  call delay()
3649                    ; Delay at call is 135
3650 0353 220e          call    delay
3651                    ; Delay 3 cycles
3652 0354 2b55          goto    byte_get__11
3653   0355 :   byte_get__11:
3654 0355 0000          nop     
3655                    ; line_number = 92
3656                    ;  delay instructions_per_delay*2 - 3 done
3657                    ; line_number = 95
3658                    ; command_previous := command_last
3659 0356 0844          movf    command_last,w
3660 0357 00c3          movwf   command_previous
3661                    ; line_number = 96
3662                    ;  command_last := byte
3663 0358 0821          movf    byte_get__byte,w
3664 0359 00c4          movwf   command_last
3665                    ; line_number = 97
3666                    ;  serial_out := 1
3667 035a 1487          bsf     serial_out___byte, serial_out___bit
3668                    ; line_number = 98
3669                    ;  return byte start
3670                    ; line_number = 98
3671 035b 0821          movf    byte_get__byte,w
3672 035c 0008          return  
3673                    ; line_number = 98
3674                    ;  return byte done
3675            
3676            
3677                    ; delay after procedure statements=non-uniform
3678            
3679            
3680            
3681            
3682                    ; line_number = 101
3683                    ; procedure byte_put
3684   035d :   byte_put:
3685                    ; Last argument is sitting in W; save into argument variable
3686 035d 00a3          movwf   byte_put__byte
3687                    ; delay=4294967295
3688                    ; line_number = 102
3689                    ; argument byte byte
3690 00000023 = byte_put__byte equ shared___globals+3
3691                    ; line_number = 103
3692                    ;  returns_nothing
3693            
3694                    ; # This procedure will send {byte} to {serial_out} pin.  The {delay}
3695                    ; # procedure is called to provide the appropriate bit timing.
3696            
3697                    ; line_number = 108
3698                    ;  local count byte
3699 00000022 = byte_put__count equ shared___globals+2
3700            
3701                    ; # {receiving} will be 1 if the last get/put routine was a get.
3702                    ; # Before we start transmitting a response back, we want to ensure
3703                    ; # that there has been enough time to turn the line around.
3704                    ; # We delay the first 1/3 of a bit to pad out the 9-2/3 bits
3705                    ; # from get_byte to 10 bits.  We delay another 3 bits just to
3706                    ; # ensure that slow interpreters do not get overrun.
3707                    ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
3708                    ; line_number = 116
3709                    ;  sent_previous := sent_last
3710 035e 0846          movf    sent_last,w
3711 035f 00c5          movwf   sent_previous
3712                    ; line_number = 117
3713                    ;  sent_last := byte
3714 0360 0823          movf    byte_put__byte,w
3715 0361 00c6          movwf   sent_last
3716                    ; line_number = 118
3717                    ;  if receiving start
3718                    ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
3719                    ; CASE: true_code.size = 0 && false_code.size > 1
3720                    ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
3721 0362 1c5f          btfss   receiving___byte, receiving___bit
3722 0363 2b6a          goto    byte_put__3
3723                    ; line_number = 119
3724                    ; receiving := 0
3725 0364 105f          bcf     receiving___byte, receiving___bit
3726                    ; # 10 = 1 + 3*3 = 3-1/3 extra bits of delay:
3727                    ; line_number = 121
3728                    ;  loop_exactly 10 start
3729 0000004d = byte_put__1 equ shared___globals+45
3730 0365 300a          movlw   10
3731 0366 00cd          movwf   byte_put__1
3732   0367 :   byte_put__2:
3733                    ; line_number = 122
3734                    ; call delay()
3735 0367 220e          call    delay
3736            
3737                    ; line_number = 121
3738                    ;  loop_exactly 10 wrap-up
3739 0368 0bcd          decfsz  byte_put__1,f
3740 0369 2b67          goto    byte_put__2
3741                    ; line_number = 121
3742                    ;  loop_exactly 10 done
3743                    ; Recombine size1 = 0 || size2 = 0
3744   036a :   byte_put__3:
3745                    ; code.delay=4294967295 back_code.delay=4294967295
3746                    ; <=bit_code_emit@symbol; sym=receiving (data:X0=>X0 code:XX=>XX)
3747                    ; line_number = 118
3748                    ;  if receiving done
3749                    ; # Send the start bit:
3750                    ; line_number = 125
3751                    ;  delay instructions_per_bit - 2 start
3752                    ; Delay expression evaluates to 414
3753                    ; # The loop_exactly setup after this is 2 instructions:
3754                    ; line_number = 127
3755                    ;  serial_out := 0
3756                    ; Delay at assignment is 0
3757 036a 1087          bcf     serial_out___byte, serial_out___bit
3758                    ; line_number = 128
3759                    ;  call delay()
3760                    ; Delay at call is 1
3761 036b 220e          call    delay
3762                    ; line_number = 129
3763                    ;  call delay()
3764                    ; Delay at call is 136
3765 036c 220e          call    delay
3766                    ; line_number = 130
3767                    ;  call delay()
3768                    ; Delay at call is 271
3769 036d 220e          call    delay
3770            
3771                    ; Delay 8 cycles
3772                    ; Delay loop takes 2 * 4 = 8 cycles
3773 036e 3002          movlw   2
3774   036f :   byte_put__4:
3775 036f 3eff          addlw   255
3776 0370 1d03          btfss   __z___byte, __z___bit
3777 0371 2b6f          goto    byte_put__4
3778                    ; line_number = 125
3779                    ;  delay instructions_per_bit - 2 done
3780                    ; # Send the data:
3781                    ; line_number = 133
3782                    ;  loop_exactly 8 start
3783 0000004d = byte_put__5 equ shared___globals+45
3784 0372 3008          movlw   8
3785 0373 00cd          movwf   byte_put__5
3786   0374 :   byte_put__6:
3787                    ; # Loop_exactly overhead is 3 instructions:
3788                    ; line_number = 135
3789                    ;  delay instructions_per_bit - 3 start
3790                    ; Delay expression evaluates to 413
3791                    ; line_number = 136
3792                    ; if byte@0 start
3793                    ; Delay at if is 0
3794 00000023 = byte_put__select__7___byte equ byte_put__byte
3795 00000000 = byte_put__select__7___bit equ 0
3796                    ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
3797                    ; CASE: true_size=1 && false_size=1
3798                    ; SUBCASE: Double test; true, then false
3799 0374 1823          btfsc   byte_put__select__7___byte, byte_put__select__7___bit
3800                    ; line_number = 137
3801                    ; serial_out := 1
3802                    ; Delay at assignment is 0
3803 0375 1487          bsf     serial_out___byte, serial_out___bit
3804 0376 1c23          btfss   byte_put__select__7___byte, byte_put__select__7___bit
3805                    ; line_number = 139
3806                    ; serial_out := 0
3807                    ; Delay at assignment is 0
3808 0377 1087          bcf     serial_out___byte, serial_out___bit
3809                    ; code.delay=4 back_code.delay=0
3810                    ; <=bit_code_emit@symbol; sym=byte_put__select__7 (data:X0=>X0 code:XX=>XX)
3811                    ; if final true delay=1 false delay=1 code delay=4
3812                    ; line_number = 136
3813                    ; if byte@0 done
3814                    ; line_number = 140
3815                    ; byte := byte >> 1
3816                    ; Delay at assignment is 4
3817                    ; Assignment of variable to self (no code needed)
3818 0378 0ca3          rrf     byte_put__byte,f
3819 0379 13a3          bcf     byte_put__byte, 7
3820                    ; line_number = 141
3821                    ;  call delay()
3822                    ; Delay at call is 6
3823 037a 220e          call    delay
3824                    ; line_number = 142
3825                    ;  call delay()
3826                    ; Delay at call is 141
3827 037b 220e          call    delay
3828                    ; line_number = 143
3829                    ;  call delay()
3830                    ; Delay at call is 276
3831 037c 220e          call    delay
3832            
3833                    ; Delay 2 cycles
3834 037d 2b7e          goto    byte_put__8
3835   037e :   byte_put__8:
3836                    ; line_number = 135
3837                    ;  delay instructions_per_bit - 3 done
3838                    ; line_number = 133
3839                    ;  loop_exactly 8 wrap-up
3840 037e 0bcd          decfsz  byte_put__5,f
3841 037f 2b74          goto    byte_put__6
3842                    ; line_number = 133
3843                    ;  loop_exactly 8 done
3844                    ; # Send the stop bit:
3845                    ; line_number = 146
3846                    ;  delay instructions_per_bit start
3847                    ; Delay expression evaluates to 416
3848                    ; line_number = 147
3849                    ; serial_out := 1
3850                    ; Delay at assignment is 0
3851 0380 1487          bsf     serial_out___byte, serial_out___bit
3852                    ; line_number = 148
3853                    ;  call delay()
3854                    ; Delay at call is 1
3855 0381 220e          call    delay
3856                    ; line_number = 149
3857                    ;  call delay()
3858                    ; Delay at call is 136
3859 0382 220e          call    delay
3860                    ; line_number = 150
3861                    ;  call delay()
3862                    ; Delay at call is 271
3863 0383 220e          call    delay
3864            
3865            
3866                    ; Delay 10 cycles
3867                    ; Delay loop takes 2 * 4 = 8 cycles
3868 0384 3002          movlw   2
3869   0385 :   byte_put__9:
3870 0385 3eff          addlw   255
3871 0386 1d03          btfss   __z___byte, __z___bit
3872 0387 2b85          goto    byte_put__9
3873 0388 2b89          goto    byte_put__10
3874   0389 :   byte_put__10:
3875                    ; line_number = 146
3876                    ;  delay instructions_per_bit done
3877                    ; delay after procedure statements=non-uniform
3878                    ; Implied return
3879 0389 3400          retlw   0
3880            
3881            
3882            
3883            
3884                    ; Configuration bits
3885                    ; fill = 0x0
3886                    ; bg = bg11 (0x3000)
3887                    ; cpd = off (0x100)
3888                    ; cp = off (0x80)
3889                    ; boden = off (0x0)
3890                    ; mclre = off (0x0)
3891                    ; pwrte = off (0x10)
3892                    ; wdte = off (0x0)
3893                    ; fosc = int_no_clk (0x4)
3894                    ; 12692 = 0x3194
3895   3194 =           __config 12692
3896                    ; Define start addresses for data regions
3897                    ; Region="shared___globals" Address=32" Size=64 Bytes=46 Bits=10 Available=16
3898                    ; Region="shared___globals" Address=32" Size=64 Bytes=46 Bits=10 Available=16
3899                    ; Region="shared___globals" Address=32" Size=64 Bytes=46 Bits=10 Available=16
3900                    end
