1                       radix   dec
2                       ; Code bank 0; Start address: 0; End address: 2047
3      0000 :           org     0
4               
5                       ; Define start addresses for data regions
6    00000070 = shared___globals equ 112
7    00000020 = globals___0 equ 32
8    000000a0 = globals___1 equ 160
9    00000110 = globals___2 equ 272
10   00000190 = globals___3 equ 400
11   00000000 = __indf equ 0
12   00000002 = __pcl equ 2
13   00000003 = __status equ 3
14   00000004 = __fsr equ 4
15   00000003 = __c___byte equ 3
16   00000000 = __c___bit equ 0
17   00000003 = __z___byte equ 3
18   00000002 = __z___bit equ 2
19   00000003 = __rp0___byte equ 3
20   00000005 = __rp0___bit equ 5
21   00000003 = __rp1___byte equ 3
22   00000006 = __rp1___bit equ 6
23   00000003 = __irp___byte equ 3
24   00000007 = __irp___bit equ 7
25   0000000a = __pclath equ 10
26   0000000a = __cb0___byte equ 10
27   00000003 = __cb0___bit equ 3
28   0000000a = __cb1___byte equ 10
29   00000004 = __cb1___bit equ 4
30              
31                      ; # Copyright (c) 2006 by Wayne C. Gramlich.
32                      ; # All rights reserved.
33              
34                      ; # This is a boot loader that resides in high memory for
35                      ; # loading programs into low memory.
36              
37                      ; # This module is using a PIC16F767
38                      ; #library _pic16f767
39                      ; buffer = 'test'
40                      ; line_number = 11
41                      ; library _pic16f876 entered
42              
43                      ; # Copyright (c) 2004-2007 by Wayne C. Gramlich
44                      ; # All rights reserved.
45              
46                      ; buffer = '_pic16f876'
47                      ; line_number = 6
48                      ; processor pic16f876
49                      ; line_number = 7
50                      ; configure_address 0x2007
51                      ; line_number = 8
52                      ;  configure_fill 0x0400
53                      ; line_number = 9
54                      ;  configure_option cp: off = 0x3030
55                      ; line_number = 10
56                      ;  configure_option cp: quarter = 0x2020
57                      ; line_number = 11
58                      ;  configure_option cp: half = 0x1010
59                      ; line_number = 12
60                      ;  configure_option cp: on = 0x0000
61                      ; line_number = 13
62                      ;  configure_option debug: on = 0x000
63                      ; line_number = 14
64                      ;  configure_option debug: off = 0x800
65                      ; line_number = 15
66                      ;  configure_option wrt: on = 0x200
67                      ; line_number = 16
68                      ;  configure_option wrt: off = 0x000
69                      ; line_number = 17
70                      ;  configure_option cpd: on = 0x000
71                      ; line_number = 18
72                      ;  configure_option cpd: off = 0x100
73                      ; line_number = 19
74                      ;  configure_option lvp: on = 0x80
75                      ; line_number = 20
76                      ;  configure_option lvp: off = 0x00
77                      ; line_number = 21
78                      ;  configure_option boden: on = 0x40
79                      ; line_number = 22
80                      ;  configure_option boden: off = 0x00
81                      ; line_number = 23
82                      ;  configure_option pwrte: on = 0
83                      ; line_number = 24
84                      ;  configure_option pwrte: off = 8
85                      ; line_number = 25
86                      ;  configure_option wdte: on = 4
87                      ; line_number = 26
88                      ;  configure_option wdte: off = 0
89                      ; line_number = 27
90                      ;  configure_option fosc: rc = 3
91                      ; line_number = 28
92                      ;  configure_option fosc: hs = 2
93                      ; line_number = 29
94                      ;  configure_option fosc: xt = 1
95                      ; line_number = 30
96                      ;  configure_option fosc: lp = 0
97                      ; line_number = 31
98                      ;  code_bank 0x0 : 0x7ff
99                      ; line_number = 32
100                     ;  code_bank 0x800 : 0xfff
101                     ; line_number = 33
102                     ;  code_bank 0x1000 : 0x17ff
103                     ; line_number = 34
104                     ;  code_bank 0x1800 : 0x1fff
105                     ; line_number = 35
106                     ;  data_bank 0x0 : 0x7f
107                     ; line_number = 36
108                     ;  data_bank 0x80 : 0xff
109                     ; line_number = 37
110                     ;  data_bank 0x100 : 0x17f
111                     ; line_number = 38
112                     ;  data_bank 0x180 : 0x1ff
113                     ; line_number = 39
114                     ;  global_region 0x20 : 0x6f
115                     ; line_number = 40
116                     ;  global_region 0xa0 : 0xef
117                     ; line_number = 41
118                     ;  global_region 0x110 : 0x16f
119                     ; line_number = 42
120                     ;  global_region 0x190 : 0x1ff
121                     ; line_number = 43
122                     ;  shared_region 0x70 : 0x7f
123                     ; line_number = 44
124                     ;  interrupts_possible
125                     ; line_number = 45
126                     ;  packages pdip = 28
127                     ; line_number = 46
128                     ;  pin mclr, vpp, thv, mclr_unused
129                     ; line_number = 47
130                     ; pin_bindings pdip = 1
131                     ; line_number = 48
132                     ; pin ra0_in, ra0_out, an0, ra0_unused
133                     ; line_number = 49
134                     ; pin_bindings pdip = 2
135                     ; line_number = 50
136                     ;  bind_to _porta@0
137                     ; line_number = 51
138                     ;  or_if ra0_in _trisa 1
139                     ; line_number = 52
140                     ;  or_if ra0_in _adcon1 7
141                     ; line_number = 53
142                     ;  or_if ra0_in _adcon0 0
143                     ; line_number = 54
144                     ;  or_if ra0_in _cmcon 7
145                     ; line_number = 55
146                     ;  or_if ra0_out _trisa 0
147                     ; line_number = 56
148                     ;  or_if ra0_out _adcon1 7
149                     ; line_number = 57
150                     ;  or_if ra0_out _adcon0 0
151                     ; line_number = 58
152                     ;  or_if ra0_out _cmcon 7
153                     ; line_number = 59
154                     ;  or_if ra0_unused _trisa 1
155                     ; line_number = 60
156                     ;  or_if ra0_unused _adcon1 7
157                     ; line_number = 61
158                     ;  or_if ra0_unused _adcon0 0
159                     ; line_number = 62
160                     ;  or_if ra0_unused _cmcon 7
161                     ; line_number = 63
162                     ; pin ra1_in, ra1_out, an1, ra1_unused
163                     ; line_number = 64
164                     ; pin_bindings pdip = 3
165                     ; line_number = 65
166                     ;  bind_to _porta@1
167                     ; line_number = 66
168                     ;  or_if ra1_in _trisa 2
169                     ; line_number = 67
170                     ;  or_if ra1_in _adcon1 7
171                     ; line_number = 68
172                     ;  or_if ra1_in _adcon0 0
173                     ; line_number = 69
174                     ;  or_if ra1_in _cmcon 7
175                     ; line_number = 70
176                     ;  or_if ra1_out _trisa 0
177                     ; line_number = 71
178                     ;  or_if ra1_out _adcon1 7
179                     ; line_number = 72
180                     ;  or_if ra1_out _adcon0 0
181                     ; line_number = 73
182                     ;  or_if ra1_out _cmcon 7
183                     ; line_number = 74
184                     ;  or_if ra1_unused _trisa 2
185                     ; line_number = 75
186                     ;  or_if ra1_unused _adcon1 7
187                     ; line_number = 76
188                     ;  or_if ra1_unused _adcon0 0
189                     ; line_number = 77
190                     ;  or_if ra1_unused _cmcon 7
191                     ; line_number = 78
192                     ; pin ra2_in, ra2_out, an2, vref_minus, ra2_unused
193                     ; line_number = 79
194                     ; pin_bindings pdip = 4
195                     ; line_number = 80
196                     ;  bind_to _porta@2
197                     ; line_number = 81
198                     ;  or_if ra2_in _trisa 4
199                     ; line_number = 82
200                     ;  or_if ra2_in _adcon1 7
201                     ; line_number = 83
202                     ;  or_if ra2_in _adcon0 0
203                     ; line_number = 84
204                     ;  or_if ra2_in _cmcon 7
205                     ; line_number = 85
206                     ;  or_if ra2_out _trisa 0
207                     ; line_number = 86
208                     ;  or_if ra2_out _adcon1 7
209                     ; line_number = 87
210                     ;  or_if ra2_out _adcon0 0
211                     ; line_number = 88
212                     ;  or_if ra2_out _cmcon 7
213                     ; line_number = 89
214                     ;  or_if ra2_unused _trisa 4
215                     ; line_number = 90
216                     ;  or_if ra2_unused _adcon1 7
217                     ; line_number = 91
218                     ;  or_if ra2_unused _adcon0 0
219                     ; line_number = 92
220                     ;  or_if ra2_unused _cmcon 7
221                     ; line_number = 93
222                     ; pin ra3_in, ra3_out, an3, vrev_plus, ra3_unused
223                     ; line_number = 94
224                     ; pin_bindings pdip = 5
225                     ; line_number = 95
226                     ;  bind_to _porta@3
227                     ; line_number = 96
228                     ;  or_if ra3_in _trisa 8
229                     ; line_number = 97
230                     ;  or_if ra3_in _adcon1 7
231                     ; line_number = 98
232                     ;  or_if ra3_in _adcon0 0
233                     ; line_number = 99
234                     ;  or_if ra3_in _cmcon 7
235                     ; line_number = 100
236                     ;  or_if ra3_out _trisa 0
237                     ; line_number = 101
238                     ;  or_if ra3_out _adcon1 7
239                     ; line_number = 102
240                     ;  or_if ra3_out _adcon0 0
241                     ; line_number = 103
242                     ;  or_if ra3_out _cmcon 7
243                     ; line_number = 104
244                     ;  or_if ra3_unused _trisa 8
245                     ; line_number = 105
246                     ;  or_if ra3_unused _adcon1 7
247                     ; line_number = 106
248                     ;  or_if ra3_unused _adcon0 0
249                     ; line_number = 107
250                     ;  or_if ra3_unused _cmcon 7
251                     ; line_number = 108
252                     ; pin ra4_in, ra4_out, t0cki, ra4_unused
253                     ; line_number = 109
254                     ; pin_bindings pdip = 6
255                     ; line_number = 110
256                     ;  bind_to _porta@4
257                     ; line_number = 111
258                     ;  or_if ra4_in _trisa 16
259                     ; line_number = 112
260                     ;  or_if ra4_in _adcon1 7
261                     ; line_number = 113
262                     ;  or_if ra4_in _adcon0 0
263                     ; line_number = 114
264                     ;  or_if ra4_out _trisa 0
265                     ; line_number = 115
266                     ;  or_if ra4_out _adcon1 7
267                     ; line_number = 116
268                     ;  or_if ra4_out _adcon0 0
269                     ; line_number = 117
270                     ;  or_if ra4_unused _trisa 16
271                     ; line_number = 118
272                     ;  or_if ra4_unused _adcon1 7
273                     ; line_number = 119
274                     ;  or_if ra4_unused _adcon0 0
275                     ; line_number = 120
276                     ; pin ra5_in, ra5_out, an4, ra5_unused
277                     ; line_number = 121
278                     ; pin_bindings pdip = 7
279                     ; line_number = 122
280                     ;  bind_to _porta@5
281                     ; line_number = 123
282                     ;  or_if ra5_in _trisa 32
283                     ; line_number = 124
284                     ;  or_if ra5_in _adcon1 7
285                     ; line_number = 125
286                     ;  or_if ra5_in _adcon1 0
287                     ; line_number = 126
288                     ;  or_if ra5_out _trisa 0
289                     ; line_number = 127
290                     ;  or_if ra5_out _adcon1 7
291                     ; line_number = 128
292                     ;  or_if ra5_out _adcon0 0
293                     ; line_number = 129
294                     ;  or_if ra5_unused _trisa 32
295                     ; line_number = 130
296                     ;  or_if ra5_unused _adcon1 7
297                     ; line_number = 131
298                     ;  or_if ra5_unused _adcon1 0
299                     ; line_number = 132
300                     ; pin vss, ground
301                     ; line_number = 133
302                     ; pin_bindings pdip = 8
303                     ; line_number = 134
304                     ; pin osc1, clkin
305                     ; line_number = 135
306                     ; pin_bindings pdip = 9
307                     ; line_number = 136
308                     ; pin osc2, clkout
309                     ; line_number = 137
310                     ; pin_bindings pdip = 10
311                     ; line_number = 138
312                     ; pin rc0_in, rc0_out, t1oso, t1cki, rc0_unused
313                     ; line_number = 139
314                     ; pin_bindings pdip = 11
315                     ; line_number = 140
316                     ;  bind_to _portc@0
317                     ; line_number = 141
318                     ;  or_if rc0_in _trisc 1
319                     ; line_number = 142
320                     ;  or_if rc0_in _adcon1 7
321                     ; line_number = 143
322                     ;  or_if rc0_in _adcon0 0
323                     ; line_number = 144
324                     ;  or_if rc0_out _trisc 0
325                     ; line_number = 145
326                     ;  or_if rc0_out _adcon1 7
327                     ; line_number = 146
328                     ;  or_if rc0_out _adcon0 0
329                     ; line_number = 147
330                     ;  or_if rc0_unused _trisc 1
331                     ; line_number = 148
332                     ;  or_if rc0_unused _adcon1 7
333                     ; line_number = 149
334                     ;  or_if rc0_unused _adcon0 0
335                     ; line_number = 150
336                     ; pin rc1_in, rc1_out, t1osi, ccp2, rc1_unused
337                     ; line_number = 151
338                     ; pin_bindings pdip = 12
339                     ; line_number = 152
340                     ;  bind_to _portc@1
341                     ; line_number = 153
342                     ;  or_if rc1_in _trisc 2
343                     ; line_number = 154
344                     ;  or_if rc1_in _adcon1 7
345                     ; line_number = 155
346                     ;  or_if rc1_in _adcon0 0
347                     ; line_number = 156
348                     ;  or_if rc1_out _trisc 0
349                     ; line_number = 157
350                     ;  or_if rc1_out _adcon1 7
351                     ; line_number = 158
352                     ;  or_if rc1_out _adcon0 0
353                     ; line_number = 159
354                     ;  or_if rc1_unused _trisc 2
355                     ; line_number = 160
356                     ;  or_if rc1_unused _adcon1 7
357                     ; line_number = 161
358                     ;  or_if rc1_unused _adcon0 0
359                     ; line_number = 162
360                     ; pin rc2_in, rc2_out, ccp1, rc2_unused
361                     ; line_number = 163
362                     ; pin_bindings pdip = 13
363                     ; line_number = 164
364                     ;  bind_to _portc@2
365                     ; line_number = 165
366                     ;  or_if rc2_in _trisc 4
367                     ; line_number = 166
368                     ;  or_if rc2_in _adcon1 7
369                     ; line_number = 167
370                     ;  or_if rc2_in _adcon0 0
371                     ; line_number = 168
372                     ;  or_if rc2_out _trisc 0
373                     ; line_number = 169
374                     ;  or_if rc2_out _adcon1 7
375                     ; line_number = 170
376                     ;  or_if rc2_out _adcon0 0
377                     ; line_number = 171
378                     ;  or_if rc2_unused _trisc 4
379                     ; line_number = 172
380                     ;  or_if rc2_unused _adcon1 7
381                     ; line_number = 173
382                     ;  or_if rc2_unused _adcon0 0
383                     ; line_number = 174
384                     ; pin rc3_in, rc3_out, sck_master, sck_slave, scl, rc3_unused
385                     ; line_number = 175
386                     ; pin_bindings pdip = 14
387                     ; line_number = 176
388                     ;  bind_to _portc@3
389                     ; line_number = 177
390                     ;  or_if rc3_in _trisc 8
391                     ; line_number = 178
392                     ;  or_if rc3_in _adcon1 7
393                     ; line_number = 179
394                     ;  or_if rc3_in _adcon0 0
395                     ; line_number = 180
396                     ;  or_if rc3_out _trisc 0
397                     ; line_number = 181
398                     ;  or_if rc3_out _adcon1 7
399                     ; line_number = 182
400                     ;  or_if rc3_out _adcon0 0
401                     ; line_number = 183
402                     ;  or_if sck_slave _trisc 8
403                     ; line_number = 184
404                     ;  or_if sck_slave _adcon1 7
405                     ; line_number = 185
406                     ;  or_if sck_slave _adcon0 0
407                     ; line_number = 186
408                     ;  or_if sck_master _trisc 0
409                     ; line_number = 187
410                     ;  or_if sck_master _adcon1 7
411                     ; line_number = 188
412                     ;  or_if sck_master _adcon0 0
413                     ; line_number = 189
414                     ;  or_if rc3_unused _trisc 8
415                     ; line_number = 190
416                     ;  or_if rc3_unused _adcon1 7
417                     ; line_number = 191
418                     ;  or_if rc3_unused _adcon0 0
419                     ; line_number = 192
420                     ; pin rc4_in, rc4_out, sdi, sda, rc4_unused
421                     ; line_number = 193
422                     ; pin_bindings pdip = 15
423                     ; line_number = 194
424                     ;  bind_to _portc@4
425                     ; line_number = 195
426                     ;  or_if rc4_in _trisc 16
427                     ; line_number = 196
428                     ;  or_if rc4_in _adcon1 7
429                     ; line_number = 197
430                     ;  or_if rc4_in _adcon0 0
431                     ; line_number = 198
432                     ;  or_if rc4_out _trisc 0
433                     ; line_number = 199
434                     ;  or_if rc4_out _adcon1 7
435                     ; line_number = 200
436                     ;  or_if rc4_out _adcon0 0
437                     ; line_number = 201
438                     ;  or_if sdi _trisc 16
439                     ; line_number = 202
440                     ;  or_if sdi _adcon1 7
441                     ; line_number = 203
442                     ;  or_if sdi _adcon0 0
443                     ; line_number = 204
444                     ;  or_if rc4_unused _trisc 16
445                     ; line_number = 205
446                     ;  or_if rc4_unused _adcon1 7
447                     ; line_number = 206
448                     ;  or_if rc4_unused _adcon0 0
449                     ; line_number = 207
450                     ; pin rc5_in, rc5_out, sdo, rc5_unused
451                     ; line_number = 208
452                     ; pin_bindings pdip = 16
453                     ; line_number = 209
454                     ;  bind_to _portc@5
455                     ; line_number = 210
456                     ;  or_if rc5_in _trisc 32
457                     ; line_number = 211
458                     ;  or_if rc5_in _adcon1 7
459                     ; line_number = 212
460                     ;  or_if rc5_in _adcon0 0
461                     ; line_number = 213
462                     ;  or_if rc5_out _trisc 0
463                     ; line_number = 214
464                     ;  or_if rc5_out _adcon1 7
465                     ; line_number = 215
466                     ;  or_if rc5_out _adcon0 0
467                     ; line_number = 216
468                     ;  or_if sdo _trisc 0
469                     ; line_number = 217
470                     ;  or_if sdo _adcon1 7
471                     ; line_number = 218
472                     ;  or_if sdo _adcon0 0
473                     ; line_number = 219
474                     ;  or_if rc5_unused _trisc 32
475                     ; line_number = 220
476                     ;  or_if rc5_unused _adcon1 7
477                     ; line_number = 221
478                     ;  or_if rc5_unused _adcon0 0
479                     ; line_number = 222
480                     ; pin rc6_in, rc6_out, tx, ck, rc6_unused
481                     ; line_number = 223
482                     ; pin_bindings pdip = 17
483                     ; line_number = 224
484                     ;  bind_to _portc@6
485                     ; line_number = 225
486                     ;  or_if rc6_in _trisc 64
487                     ; line_number = 226
488                     ;  or_if rc6_in _adcon1 7
489                     ; line_number = 227
490                     ;  or_if rc6_in _adcon0 0
491                     ; line_number = 228
492                     ;  or_if rc6_out _trisc 0
493                     ; line_number = 229
494                     ;  or_if rc6_out _adcon1 7
495                     ; line_number = 230
496                     ;  or_if rc6_out _adcon0 0
497                     ; line_number = 231
498                     ;  or_if tx _trisc 0
499                     ; line_number = 232
500                     ;  or_if tx _adcon1 7
501                     ; line_number = 233
502                     ;  or_if tx _adcon0 0
503                     ; line_number = 234
504                     ;  or_if rc6_unused _trisc 64
505                     ; line_number = 235
506                     ;  or_if rc6_unused _adcon1 7
507                     ; line_number = 236
508                     ;  or_if rc6_unused _adcon0 0
509                     ; line_number = 237
510                     ; pin rc7_in, rc7_out, rx, dt, rc7_unused
511                     ; line_number = 238
512                     ; pin_bindings pdip = 18
513                     ; line_number = 239
514                     ;  bind_to _portc@7
515                     ; line_number = 240
516                     ;  or_if rc7_in _trisc 128
517                     ; line_number = 241
518                     ;  or_if rc7_in _adcon1 7
519                     ; line_number = 242
520                     ;  or_if rc7_in _adcon0 0
521                     ; line_number = 243
522                     ;  or_if rx _trisc 128
523                     ; line_number = 244
524                     ;  or_if rx _adcon1 7
525                     ; line_number = 245
526                     ;  or_if rx _adcon0 0
527                     ; line_number = 246
528                     ;  or_if rc7_out _trisc 0
529                     ; line_number = 247
530                     ;  or_if rc7_out _adcon1 7
531                     ; line_number = 248
532                     ;  or_if rc7_out _adcon0 0
533                     ; line_number = 249
534                     ;  or_if rc7_unused _trisc 128
535                     ; line_number = 250
536                     ;  or_if rc7_unused _adcon1 7
537                     ; line_number = 251
538                     ;  or_if rc7_unused _adcon0 0
539                     ; line_number = 252
540                     ; pin vss2, ground2
541                     ; line_number = 253
542                     ; pin_bindings pdip = 19
543                     ; line_number = 254
544                     ; pin vdd, power_supply
545                     ; line_number = 255
546                     ; pin_bindings pdip = 20
547                     ; line_number = 256
548                     ; pin rb0_in, rb0_out, int, rb0_unused
549                     ; line_number = 257
550                     ; pin_bindings pdip = 21
551                     ; line_number = 258
552                     ;  bind_to _portb@0
553                     ; line_number = 259
554                     ;  or_if rb0_in _trisb 1
555                     ; line_number = 260
556                     ;  or_if rb0_in _adcon1 7
557                     ; line_number = 261
558                     ;  or_if rb0_in _adcon0 0
559                     ; line_number = 262
560                     ;  or_if rb0_out _trisb 0
561                     ; line_number = 263
562                     ;  or_if rb0_out _adcon1 7
563                     ; line_number = 264
564                     ;  or_if rb0_out _adcon0 0
565                     ; line_number = 265
566                     ;  or_if rb0_unused _trisb 1
567                     ; line_number = 266
568                     ;  or_if rb0_unused _adcon1 7
569                     ; line_number = 267
570                     ;  or_if rb0_unused _adcon0 0
571                     ; line_number = 268
572                     ; pin rb1_in, rb1_out, rb1_unused
573                     ; line_number = 269
574                     ; pin_bindings pdip = 22
575                     ; line_number = 270
576                     ;  bind_to _portb@1
577                     ; line_number = 271
578                     ;  or_if rb1_in _trisb 2
579                     ; line_number = 272
580                     ;  or_if rb1_in _adcon1 7
581                     ; line_number = 273
582                     ;  or_if rb1_in _adcon0 0
583                     ; line_number = 274
584                     ;  or_if rb1_out _trisb 0
585                     ; line_number = 275
586                     ;  or_if rb1_out _adcon1 7
587                     ; line_number = 276
588                     ;  or_if rb1_out _adcon0 0
589                     ; line_number = 277
590                     ;  or_if rb1_unused _trisb 2
591                     ; line_number = 278
592                     ;  or_if rb1_unused _adcon1 7
593                     ; line_number = 279
594                     ;  or_if rb1_unused _adcon0 0
595                     ; line_number = 280
596                     ; pin rb2_in, rb2_out, rb2_unused
597                     ; line_number = 281
598                     ; pin_bindings pdip = 23
599                     ; line_number = 282
600                     ;  bind_to _portb@2
601                     ; line_number = 283
602                     ;  or_if rb2_in _trisb 4
603                     ; line_number = 284
604                     ;  or_if rb2_in _adcon1 7
605                     ; line_number = 285
606                     ;  or_if rb2_in _adcon0 0
607                     ; line_number = 286
608                     ;  or_if rb2_out _trisb 0
609                     ; line_number = 287
610                     ;  or_if rb2_out _adcon1 7
611                     ; line_number = 288
612                     ;  or_if rb2_out _adcon0 0
613                     ; line_number = 289
614                     ;  or_if rb2_unused _trisb 4
615                     ; line_number = 290
616                     ;  or_if rb2_unused _adcon1 7
617                     ; line_number = 291
618                     ;  or_if rb2_unused _adcon0 0
619                     ; line_number = 292
620                     ; pin rb3_in, rb3_out, pgm, rb3_unused
621                     ; line_number = 293
622                     ; pin_bindings pdip = 24
623                     ; line_number = 294
624                     ;  bind_to _portb@3
625                     ; line_number = 295
626                     ;  or_if rb3_in _trisb 8
627                     ; line_number = 296
628                     ;  or_if rb3_in _adcon1 7
629                     ; line_number = 297
630                     ;  or_if rb3_in _adcon0 0
631                     ; line_number = 298
632                     ;  or_if rb3_out _trisb 0
633                     ; line_number = 299
634                     ;  or_if rb3_out _adcon1 7
635                     ; line_number = 300
636                     ;  or_if rb3_out _adcon0 0
637                     ; line_number = 301
638                     ;  or_if rb3_unused _trisb 8
639                     ; line_number = 302
640                     ;  or_if rb3_unused _adcon1 7
641                     ; line_number = 303
642                     ;  or_if rb3_unused _adcon0 0
643                     ; line_number = 304
644                     ; pin rb4_in, rb4_out, rb4_unused
645                     ; line_number = 305
646                     ; pin_bindings pdip = 25
647                     ; line_number = 306
648                     ;  bind_to _portb@4
649                     ; line_number = 307
650                     ;  or_if rb4_in _trisb 16
651                     ; line_number = 308
652                     ;  or_if rb4_in _adcon1 7
653                     ; line_number = 309
654                     ;  or_if rb4_in _adcon0 0
655                     ; line_number = 310
656                     ;  or_if rb4_out _trisb 0
657                     ; line_number = 311
658                     ;  or_if rb4_out _adcon1 7
659                     ; line_number = 312
660                     ;  or_if rb4_out _adcon0 0
661                     ; line_number = 313
662                     ;  or_if rb4_unused _trisb 16
663                     ; line_number = 314
664                     ;  or_if rb4_unused _adcon1 7
665                     ; line_number = 315
666                     ;  or_if rb4_unused _adcon0 0
667                     ; line_number = 316
668                     ; pin rb5_in, rb5_out, rb5_unused
669                     ; line_number = 317
670                     ; pin_bindings pdip = 26
671                     ; line_number = 318
672                     ;  bind_to _portb@5
673                     ; line_number = 319
674                     ;  or_if rb5_in _trisb 32
675                     ; line_number = 320
676                     ;  or_if rb5_in _adcon1 7
677                     ; line_number = 321
678                     ;  or_if rb5_in _adcon0 0
679                     ; line_number = 322
680                     ;  or_if rb5_out _trisb 0
681                     ; line_number = 323
682                     ;  or_if rb5_out _adcon1 7
683                     ; line_number = 324
684                     ;  or_if rb5_out _adcon0 0
685                     ; line_number = 325
686                     ;  or_if rb5_unused _trisb 32
687                     ; line_number = 326
688                     ;  or_if rb5_unused _adcon1 7
689                     ; line_number = 327
690                     ;  or_if rb5_unused _adcon0 0
691                     ; line_number = 328
692                     ; pin rb6_in, rb6_out, pgc, rb6_unused
693                     ; line_number = 329
694                     ; pin_bindings pdip = 27
695                     ; line_number = 330
696                     ;  bind_to _portb@6
697                     ; line_number = 331
698                     ;  or_if rb6_in _trisb 64
699                     ; line_number = 332
700                     ;  or_if rb6_in _adcon1 7
701                     ; line_number = 333
702                     ;  or_if rb6_in _adcon0 0
703                     ; line_number = 334
704                     ;  or_if rb6_out _trisb 0
705                     ; line_number = 335
706                     ;  or_if rb6_out _adcon1 7
707                     ; line_number = 336
708                     ;  or_if rb6_out _adcon0 0
709                     ; line_number = 337
710                     ;  or_if rb6_unused _trisb 64
711                     ; line_number = 338
712                     ;  or_if rb6_unused _adcon1 7
713                     ; line_number = 339
714                     ;  or_if rb6_unused _adcon0 0
715                     ; line_number = 340
716                     ; pin rb7_in, rb7_out, pgd, rb7_unused
717                     ; line_number = 341
718                     ; pin_bindings pdip = 28
719                     ; line_number = 342
720                     ;  bind_to _portb@7
721                     ; line_number = 343
722                     ;  or_if rb7_in _trisb 128
723                     ; line_number = 344
724                     ;  or_if rb7_in _adcon1 7
725                     ; line_number = 345
726                     ;  or_if rb7_in _adcon0 0
727                     ; line_number = 346
728                     ;  or_if rb7_out _trisb 0
729                     ; line_number = 347
730                     ;  or_if rb7_out _adcon1 7
731                     ; line_number = 348
732                     ;  or_if rb7_out _adcon0 0
733                     ; line_number = 349
734                     ;  or_if rb7_unused _trisb 128
735                     ; line_number = 350
736                     ;  or_if rb7_unused _adcon1 7
737                     ; line_number = 351
738                     ;  or_if rb7_unused _adcon0 0
739             
740             
741                     ; # Register and pin definitions:
742             
743                     ; line_number = 358
744                     ; library _pic16f87x entered
745             
746                     ; # Copyright (c) 2004-2006 by Wayne C. Gramlich
747                     ; # All rights reserved.
748             
749                     ; # Common declarations for PIC16F87x series microcontrollers:
750             
751                     ; buffer = '_pic16f87x'
752                     ; line_number = 8
753                     ; library _standard entered
754             
755                     ; # Copyright (c) 2006 by Wayne C. Gramlich
756                     ; # All rights reserved.
757             
758                     ; # Standard definition for uCL:
759             
760                     ; buffer = '_standard'
761                     ; line_number = 8
762                     ; constant _true = (1 = 1)
763  00000001 = _true equ 1
764                     ; line_number = 9
765                     ; constant _false = (0 != 0)
766  00000000 = _false equ 0
767             
768             
769                     ; buffer = '_pic16f87x'
770                     ; line_number = 8
771                     ; library _standard exited
772             
773                     ; # Register and pin definitions:
774             
775                     ; # Bank 0:
776             
777                     ; line_number = 14
778                     ; register _indf = 
779  00000000 = _indf equ 0
780             
781                     ; line_number = 16
782                     ; register _tmr0 = 
783  00000001 = _tmr0 equ 1
784             
785                     ; line_number = 18
786                     ; register _pcl = 
787  00000002 = _pcl equ 2
788             
789                     ; line_number = 20
790                     ; register _status = 
791  00000003 = _status equ 3
792                     ; line_number = 21
793                     ; bind _irp = _status@7
794  00000003 = _irp___byte equ _status
795  00000007 = _irp___bit equ 7
796                     ; line_number = 22
797                     ; bind _rp1 = _status@6
798  00000003 = _rp1___byte equ _status
799  00000006 = _rp1___bit equ 6
800                     ; line_number = 23
801                     ; bind _rp0 = _status@5
802  00000003 = _rp0___byte equ _status
803  00000005 = _rp0___bit equ 5
804                     ; line_number = 24
805                     ; bind _to = _status@4
806  00000003 = _to___byte equ _status
807  00000004 = _to___bit equ 4
808                     ; line_number = 25
809                     ; bind _pd = _status@3
810  00000003 = _pd___byte equ _status
811  00000003 = _pd___bit equ 3
812                     ; line_number = 26
813                     ; bind _z = _status@2
814  00000003 = _z___byte equ _status
815  00000002 = _z___bit equ 2
816                     ; line_number = 27
817                     ; bind _dc = _status@1
818  00000003 = _dc___byte equ _status
819  00000001 = _dc___bit equ 1
820                     ; line_number = 28
821                     ; bind _c = _status@0
822  00000003 = _c___byte equ _status
823  00000000 = _c___bit equ 0
824             
825                     ; line_number = 30
826                     ; register _fsr = 
827  00000004 = _fsr equ 4
828             
829                     ; line_number = 32
830                     ; register _porta = 
831  00000005 = _porta equ 5
832             
833                     ; line_number = 34
834                     ; register _portb = 
835  00000006 = _portb equ 6
836             
837                     ; line_number = 36
838                     ; register _portc = 
839  00000007 = _portc equ 7
840             
841                     ; line_number = 38
842                     ; register _pclath = 
843  0000000a = _pclath equ 10
844             
845                     ; line_number = 40
846                     ; register _intcon = 
847  0000000b = _intcon equ 11
848                     ; line_number = 41
849                     ; bind _gie = _intcon@7
850  0000000b = _gie___byte equ _intcon
851  00000007 = _gie___bit equ 7
852                     ; line_number = 42
853                     ; bind _peie = _intcon@6
854  0000000b = _peie___byte equ _intcon
855  00000006 = _peie___bit equ 6
856                     ; line_number = 43
857                     ; bind _t0ie = _intcon@5
858  0000000b = _t0ie___byte equ _intcon
859  00000005 = _t0ie___bit equ 5
860                     ; line_number = 44
861                     ; bind _inte = _intcon@4
862  0000000b = _inte___byte equ _intcon
863  00000004 = _inte___bit equ 4
864                     ; line_number = 45
865                     ; bind _rbie = _intcon@3
866  0000000b = _rbie___byte equ _intcon
867  00000003 = _rbie___bit equ 3
868                     ; line_number = 46
869                     ; bind _t0if = _intcon@2
870  0000000b = _t0if___byte equ _intcon
871  00000002 = _t0if___bit equ 2
872                     ; line_number = 47
873                     ; bind _intf = _intcon@1
874  0000000b = _intf___byte equ _intcon
875  00000001 = _intf___bit equ 1
876                     ; line_number = 48
877                     ; bind _rbf = _intcon@0
878  0000000b = _rbf___byte equ _intcon
879  00000000 = _rbf___bit equ 0
880             
881                     ; line_number = 50
882                     ; register _pir1 = 
883  0000000c = _pir1 equ 12
884                     ; line_number = 51
885                     ; bind _pspif = _pir1@7
886  0000000c = _pspif___byte equ _pir1
887  00000007 = _pspif___bit equ 7
888                     ; line_number = 52
889                     ; bind _adif = _pir1@6
890  0000000c = _adif___byte equ _pir1
891  00000006 = _adif___bit equ 6
892                     ; line_number = 53
893                     ; bind _rcif = _pir1@5
894  0000000c = _rcif___byte equ _pir1
895  00000005 = _rcif___bit equ 5
896                     ; line_number = 54
897                     ; bind _txif = _pir1@4
898  0000000c = _txif___byte equ _pir1
899  00000004 = _txif___bit equ 4
900                     ; line_number = 55
901                     ; bind _sspif = _pir1@3
902  0000000c = _sspif___byte equ _pir1
903  00000003 = _sspif___bit equ 3
904                     ; line_number = 56
905                     ; bind _ccpif = _pir1@2
906  0000000c = _ccpif___byte equ _pir1
907  00000002 = _ccpif___bit equ 2
908                     ; line_number = 57
909                     ; bind _tmr2if = _pir1@1
910  0000000c = _tmr2if___byte equ _pir1
911  00000001 = _tmr2if___bit equ 1
912                     ; line_number = 58
913                     ; bind _tmr1if = _pir1@0
914  0000000c = _tmr1if___byte equ _pir1
915  00000000 = _tmr1if___bit equ 0
916             
917                     ; line_number = 60
918                     ; register _pir2 = 
919  0000000d = _pir2 equ 13
920                     ; line_number = 61
921                     ; bind _eeif = _pir2@4
922  0000000d = _eeif___byte equ _pir2
923  00000004 = _eeif___bit equ 4
924                     ; line_number = 62
925                     ; bind _bclif = _pir2@3
926  0000000d = _bclif___byte equ _pir2
927  00000003 = _bclif___bit equ 3
928                     ; line_number = 63
929                     ; bind _ccp2if = _pir2@0
930  0000000d = _ccp2if___byte equ _pir2
931  00000000 = _ccp2if___bit equ 0
932             
933                     ; line_number = 65
934                     ; register _tmr1l = 
935  0000000e = _tmr1l equ 14
936             
937                     ; line_number = 67
938                     ; register _tmr1h = 
939  0000000f = _tmr1h equ 15
940             
941                     ; line_number = 69
942                     ; register _t1con = 
943  00000010 = _t1con equ 16
944                     ; line_number = 70
945                     ; bind _t1ckps1 = _t1con@5
946  00000010 = _t1ckps1___byte equ _t1con
947  00000005 = _t1ckps1___bit equ 5
948                     ; line_number = 71
949                     ; bind _t1ckps0 = _t1con@4
950  00000010 = _t1ckps0___byte equ _t1con
951  00000004 = _t1ckps0___bit equ 4
952                     ; line_number = 72
953                     ; bind _t1oscen = _t1con@3
954  00000010 = _t1oscen___byte equ _t1con
955  00000003 = _t1oscen___bit equ 3
956                     ; line_number = 73
957                     ; bind _t1sync = _t1con@2
958  00000010 = _t1sync___byte equ _t1con
959  00000002 = _t1sync___bit equ 2
960                     ; line_number = 74
961                     ; bind _tmr1cs = _t1con@1
962  00000010 = _tmr1cs___byte equ _t1con
963  00000001 = _tmr1cs___bit equ 1
964                     ; line_number = 75
965                     ; bind _tmr1on = _t1con@0
966  00000010 = _tmr1on___byte equ _t1con
967  00000000 = _tmr1on___bit equ 0
968             
969                     ; line_number = 77
970                     ; register _tmr2 = 
971  00000011 = _tmr2 equ 17
972             
973                     ; line_number = 79
974                     ; register _t2con = 
975  00000012 = _t2con equ 18
976                     ; line_number = 80
977                     ; bind _toutps3 = _t2con@6
978  00000012 = _toutps3___byte equ _t2con
979  00000006 = _toutps3___bit equ 6
980                     ; line_number = 81
981                     ; bind _toutps2 = _t2con@5
982  00000012 = _toutps2___byte equ _t2con
983  00000005 = _toutps2___bit equ 5
984                     ; line_number = 82
985                     ; bind _toutps1 = _t2con@4
986  00000012 = _toutps1___byte equ _t2con
987  00000004 = _toutps1___bit equ 4
988                     ; line_number = 83
989                     ; bind _toutps0 = _t2con@3
990  00000012 = _toutps0___byte equ _t2con
991  00000003 = _toutps0___bit equ 3
992                     ; line_number = 84
993                     ; bind _tmr2on = _t2con@2
994  00000012 = _tmr2on___byte equ _t2con
995  00000002 = _tmr2on___bit equ 2
996                     ; line_number = 85
997                     ; bind _t2ckps1 = _t2con@1
998  00000012 = _t2ckps1___byte equ _t2con
999  00000001 = _t2ckps1___bit equ 1
1000                    ; line_number = 86
1001                    ; bind _t2ckps0 = _t2con@0
1002 00000012 = _t2ckps0___byte equ _t2con
1003 00000000 = _t2ckps0___bit equ 0
1004            
1005                    ; line_number = 88
1006                    ; register _sspbuf = 
1007 00000013 = _sspbuf equ 19
1008            
1009                    ; line_number = 90
1010                    ; register _sspcon = 
1011 00000014 = _sspcon equ 20
1012                    ; line_number = 91
1013                    ; bind _wcol = _sspcon@7
1014 00000014 = _wcol___byte equ _sspcon
1015 00000007 = _wcol___bit equ 7
1016                    ; line_number = 92
1017                    ; bind _sspov = _sspcon@6
1018 00000014 = _sspov___byte equ _sspcon
1019 00000006 = _sspov___bit equ 6
1020                    ; line_number = 93
1021                    ; bind _sspen = _sspcon@5
1022 00000014 = _sspen___byte equ _sspcon
1023 00000005 = _sspen___bit equ 5
1024                    ; line_number = 94
1025                    ; bind _ckp = _sspcon@4
1026 00000014 = _ckp___byte equ _sspcon
1027 00000004 = _ckp___bit equ 4
1028                    ; line_number = 95
1029                    ; bind _sspm3 = _sspcon@3
1030 00000014 = _sspm3___byte equ _sspcon
1031 00000003 = _sspm3___bit equ 3
1032                    ; line_number = 96
1033                    ; bind _sspm2 = _sspcon@2
1034 00000014 = _sspm2___byte equ _sspcon
1035 00000002 = _sspm2___bit equ 2
1036                    ; line_number = 97
1037                    ; bind _sspm1 = _sspcon@1
1038 00000014 = _sspm1___byte equ _sspcon
1039 00000001 = _sspm1___bit equ 1
1040                    ; line_number = 98
1041                    ; bind _sspm0 = _sspcon@0
1042 00000014 = _sspm0___byte equ _sspcon
1043 00000000 = _sspm0___bit equ 0
1044            
1045                    ; line_number = 100
1046                    ; register _ccpr1l = 
1047 00000015 = _ccpr1l equ 21
1048            
1049                    ; line_number = 102
1050                    ; register _ccpr1h = 
1051 00000016 = _ccpr1h equ 22
1052            
1053                    ; line_number = 104
1054                    ; register _ccp1con = 
1055 00000017 = _ccp1con equ 23
1056                    ; line_number = 105
1057                    ; bind _ccp1x = _ccp1con@5
1058 00000017 = _ccp1x___byte equ _ccp1con
1059 00000005 = _ccp1x___bit equ 5
1060                    ; line_number = 106
1061                    ; bind _ccp1y = _ccp1con@4
1062 00000017 = _ccp1y___byte equ _ccp1con
1063 00000004 = _ccp1y___bit equ 4
1064                    ; line_number = 107
1065                    ; bind _ccp1m3 = _ccp1con@3
1066 00000017 = _ccp1m3___byte equ _ccp1con
1067 00000003 = _ccp1m3___bit equ 3
1068                    ; line_number = 108
1069                    ; bind _ccp1m2 = _ccp1con@2
1070 00000017 = _ccp1m2___byte equ _ccp1con
1071 00000002 = _ccp1m2___bit equ 2
1072                    ; line_number = 109
1073                    ; bind _ccp1m1 = _ccp1con@1
1074 00000017 = _ccp1m1___byte equ _ccp1con
1075 00000001 = _ccp1m1___bit equ 1
1076                    ; line_number = 110
1077                    ; bind _ccp1m0 = _ccp1con@0
1078 00000017 = _ccp1m0___byte equ _ccp1con
1079 00000000 = _ccp1m0___bit equ 0
1080            
1081                    ; line_number = 112
1082                    ; register _rcsta = 
1083 00000018 = _rcsta equ 24
1084                    ; line_number = 113
1085                    ; bind _spen = _rcsta@7
1086 00000018 = _spen___byte equ _rcsta
1087 00000007 = _spen___bit equ 7
1088                    ; line_number = 114
1089                    ; bind _rx9 = _rcsta@6
1090 00000018 = _rx9___byte equ _rcsta
1091 00000006 = _rx9___bit equ 6
1092                    ; line_number = 115
1093                    ; bind _sren = _rcsta@5
1094 00000018 = _sren___byte equ _rcsta
1095 00000005 = _sren___bit equ 5
1096                    ; line_number = 116
1097                    ; bind _cren = _rcsta@4
1098 00000018 = _cren___byte equ _rcsta
1099 00000004 = _cren___bit equ 4
1100                    ; line_number = 117
1101                    ; bind _adden = _rcsta@3
1102 00000018 = _adden___byte equ _rcsta
1103 00000003 = _adden___bit equ 3
1104                    ; line_number = 118
1105                    ; bind _ferr = _rcsta@2
1106 00000018 = _ferr___byte equ _rcsta
1107 00000002 = _ferr___bit equ 2
1108                    ; line_number = 119
1109                    ; bind _oerr = _rcsta@1
1110 00000018 = _oerr___byte equ _rcsta
1111 00000001 = _oerr___bit equ 1
1112                    ; line_number = 120
1113                    ; bind _rx9d = _rcsta@0
1114 00000018 = _rx9d___byte equ _rcsta
1115 00000000 = _rx9d___bit equ 0
1116            
1117                    ; line_number = 122
1118                    ; register _txreg = 
1119 00000019 = _txreg equ 25
1120            
1121                    ; line_number = 124
1122                    ; register _rcreg = 
1123 0000001a = _rcreg equ 26
1124            
1125                    ; line_number = 126
1126                    ; register _ccpr2l = 
1127 0000001b = _ccpr2l equ 27
1128            
1129                    ; line_number = 128
1130                    ; register _ccpr2h = 
1131 0000001c = _ccpr2h equ 28
1132            
1133                    ; line_number = 130
1134                    ; register _ccp2con = 
1135 0000001d = _ccp2con equ 29
1136                    ; line_number = 131
1137                    ; bind _ccp2x = _ccp2con@5
1138 0000001d = _ccp2x___byte equ _ccp2con
1139 00000005 = _ccp2x___bit equ 5
1140                    ; line_number = 132
1141                    ; bind _ccp2y = _ccp2con@4
1142 0000001d = _ccp2y___byte equ _ccp2con
1143 00000004 = _ccp2y___bit equ 4
1144                    ; line_number = 133
1145                    ; bind _ccp2m3 = _ccp2con@3
1146 0000001d = _ccp2m3___byte equ _ccp2con
1147 00000003 = _ccp2m3___bit equ 3
1148                    ; line_number = 134
1149                    ; bind _ccp2m2 = _ccp2con@2
1150 0000001d = _ccp2m2___byte equ _ccp2con
1151 00000002 = _ccp2m2___bit equ 2
1152                    ; line_number = 135
1153                    ; bind _ccp2m1 = _ccp2con@1
1154 0000001d = _ccp2m1___byte equ _ccp2con
1155 00000001 = _ccp2m1___bit equ 1
1156                    ; line_number = 136
1157                    ; bind _ccp2m0 = _ccp2con@0
1158 0000001d = _ccp2m0___byte equ _ccp2con
1159 00000000 = _ccp2m0___bit equ 0
1160            
1161                    ; line_number = 138
1162                    ; register _adresh = 
1163 0000001e = _adresh equ 30
1164            
1165                    ; line_number = 140
1166                    ; register _adcon0 = 
1167 0000001f = _adcon0 equ 31
1168                    ; line_number = 141
1169                    ; bind _adcs1 = _adcon0@7
1170 0000001f = _adcs1___byte equ _adcon0
1171 00000007 = _adcs1___bit equ 7
1172                    ; line_number = 142
1173                    ; bind _adcs0 = _adcon0@6
1174 0000001f = _adcs0___byte equ _adcon0
1175 00000006 = _adcs0___bit equ 6
1176                    ; line_number = 143
1177                    ; bind _chs2 = _adcon0@5
1178 0000001f = _chs2___byte equ _adcon0
1179 00000005 = _chs2___bit equ 5
1180                    ; line_number = 144
1181                    ; bind _chs1 = _adcon0@4
1182 0000001f = _chs1___byte equ _adcon0
1183 00000004 = _chs1___bit equ 4
1184                    ; line_number = 145
1185                    ; bind _chs0 = _adcon0@3
1186 0000001f = _chs0___byte equ _adcon0
1187 00000003 = _chs0___bit equ 3
1188                    ; line_number = 146
1189                    ; bind _go_done = _adcon0@2
1190 0000001f = _go_done___byte equ _adcon0
1191 00000002 = _go_done___bit equ 2
1192                    ; line_number = 147
1193                    ; bind _adon = _adcon0@0
1194 0000001f = _adon___byte equ _adcon0
1195 00000000 = _adon___bit equ 0
1196            
1197                    ; # Bank 1:
1198            
1199                    ; line_number = 151
1200                    ; register _option_reg = 
1201 00000081 = _option_reg equ 129
1202                    ; line_number = 152
1203                    ; bind _rbpu = _option_reg@7
1204 00000081 = _rbpu___byte equ _option_reg
1205 00000007 = _rbpu___bit equ 7
1206                    ; line_number = 153
1207                    ; bind _intedg = _option_reg@6
1208 00000081 = _intedg___byte equ _option_reg
1209 00000006 = _intedg___bit equ 6
1210                    ; line_number = 154
1211                    ; bind _t0cs = _option_reg@5
1212 00000081 = _t0cs___byte equ _option_reg
1213 00000005 = _t0cs___bit equ 5
1214                    ; line_number = 155
1215                    ; bind _t0se = _option_reg@4
1216 00000081 = _t0se___byte equ _option_reg
1217 00000004 = _t0se___bit equ 4
1218                    ; line_number = 156
1219                    ; bind _psa = _option_reg@3
1220 00000081 = _psa___byte equ _option_reg
1221 00000003 = _psa___bit equ 3
1222                    ; line_number = 157
1223                    ; bind _ps2 = _option_reg@2
1224 00000081 = _ps2___byte equ _option_reg
1225 00000002 = _ps2___bit equ 2
1226                    ; line_number = 158
1227                    ; bind _ps1 = _option_reg@1
1228 00000081 = _ps1___byte equ _option_reg
1229 00000001 = _ps1___bit equ 1
1230                    ; line_number = 159
1231                    ; bind _ps0 = _option_reg@0
1232 00000081 = _ps0___byte equ _option_reg
1233 00000000 = _ps0___bit equ 0
1234            
1235                    ; line_number = 161
1236                    ; register _trisa = 
1237 00000085 = _trisa equ 133
1238            
1239                    ; line_number = 163
1240                    ; register _trisb = 
1241 00000086 = _trisb equ 134
1242            
1243                    ; line_number = 165
1244                    ; register _trisc = 
1245 00000087 = _trisc equ 135
1246            
1247                    ; line_number = 167
1248                    ; register _pie1 = 
1249 0000008c = _pie1 equ 140
1250                    ; line_number = 168
1251                    ; bind _pspie = _pie1@7
1252 0000008c = _pspie___byte equ _pie1
1253 00000007 = _pspie___bit equ 7
1254                    ; line_number = 169
1255                    ; bind _adie = _pie1@6
1256 0000008c = _adie___byte equ _pie1
1257 00000006 = _adie___bit equ 6
1258                    ; line_number = 170
1259                    ; bind _rcie = _pie1@5
1260 0000008c = _rcie___byte equ _pie1
1261 00000005 = _rcie___bit equ 5
1262                    ; line_number = 171
1263                    ; bind _txie = _pie1@4
1264 0000008c = _txie___byte equ _pie1
1265 00000004 = _txie___bit equ 4
1266                    ; line_number = 172
1267                    ; bind _sspie = _pie1@3
1268 0000008c = _sspie___byte equ _pie1
1269 00000003 = _sspie___bit equ 3
1270                    ; line_number = 173
1271                    ; bind _ccp1ie = _pie1@2
1272 0000008c = _ccp1ie___byte equ _pie1
1273 00000002 = _ccp1ie___bit equ 2
1274                    ; line_number = 174
1275                    ; bind _tmr2ie = _pie1@1
1276 0000008c = _tmr2ie___byte equ _pie1
1277 00000001 = _tmr2ie___bit equ 1
1278                    ; line_number = 175
1279                    ; bind _tmr1ie = _pie1@0
1280 0000008c = _tmr1ie___byte equ _pie1
1281 00000000 = _tmr1ie___bit equ 0
1282            
1283                    ; line_number = 177
1284                    ; register _pie2 = 
1285 0000008d = _pie2 equ 141
1286                    ; line_number = 178
1287                    ; bind _eeie = _pie2@4
1288 0000008d = _eeie___byte equ _pie2
1289 00000004 = _eeie___bit equ 4
1290                    ; line_number = 179
1291                    ; bind _bcie = _pie2@3
1292 0000008d = _bcie___byte equ _pie2
1293 00000003 = _bcie___bit equ 3
1294                    ; line_number = 180
1295                    ; bind _ccp2ie = _pie2@0
1296 0000008d = _ccp2ie___byte equ _pie2
1297 00000000 = _ccp2ie___bit equ 0
1298            
1299                    ; line_number = 182
1300                    ; register _pcon = 
1301 0000008e = _pcon equ 142
1302                    ; line_number = 183
1303                    ; bind _por = _pcon@1
1304 0000008e = _por___byte equ _pcon
1305 00000001 = _por___bit equ 1
1306                    ; line_number = 184
1307                    ; bind _bor = _pcon@0
1308 0000008e = _bor___byte equ _pcon
1309 00000000 = _bor___bit equ 0
1310            
1311                    ; line_number = 186
1312                    ; register _sspcon2 = 
1313 00000091 = _sspcon2 equ 145
1314                    ; line_number = 187
1315                    ; bind _gcen = _sspcon2@7
1316 00000091 = _gcen___byte equ _sspcon2
1317 00000007 = _gcen___bit equ 7
1318                    ; line_number = 188
1319                    ; bind _ackstat = _sspcon2@6
1320 00000091 = _ackstat___byte equ _sspcon2
1321 00000006 = _ackstat___bit equ 6
1322                    ; line_number = 189
1323                    ; bind _ackdt = _sspcon2@5
1324 00000091 = _ackdt___byte equ _sspcon2
1325 00000005 = _ackdt___bit equ 5
1326                    ; line_number = 190
1327                    ; bind _acken = _sspcon2@4
1328 00000091 = _acken___byte equ _sspcon2
1329 00000004 = _acken___bit equ 4
1330                    ; line_number = 191
1331                    ; bind _rcen = _sspcon2@3
1332 00000091 = _rcen___byte equ _sspcon2
1333 00000003 = _rcen___bit equ 3
1334                    ; line_number = 192
1335                    ; bind _pen = _sspcon2@2
1336 00000091 = _pen___byte equ _sspcon2
1337 00000002 = _pen___bit equ 2
1338                    ; line_number = 193
1339                    ; bind _rsen = _sspcon2@1
1340 00000091 = _rsen___byte equ _sspcon2
1341 00000001 = _rsen___bit equ 1
1342                    ; line_number = 194
1343                    ; bind _sen = _sspcon2@0
1344 00000091 = _sen___byte equ _sspcon2
1345 00000000 = _sen___bit equ 0
1346            
1347                    ; line_number = 196
1348                    ; register _pr2 = 
1349 00000092 = _pr2 equ 146
1350            
1351                    ; line_number = 198
1352                    ; register _sspadd = 
1353 00000093 = _sspadd equ 147
1354            
1355                    ; line_number = 200
1356                    ; register _sspstat = 
1357 00000094 = _sspstat equ 148
1358                    ; line_number = 201
1359                    ; bind _smp = _sspstat@7
1360 00000094 = _smp___byte equ _sspstat
1361 00000007 = _smp___bit equ 7
1362                    ; line_number = 202
1363                    ; bind _cke = _sspstat@6
1364 00000094 = _cke___byte equ _sspstat
1365 00000006 = _cke___bit equ 6
1366                    ; line_number = 203
1367                    ; bind _da = _sspstat@5
1368 00000094 = _da___byte equ _sspstat
1369 00000005 = _da___bit equ 5
1370                    ; line_number = 204
1371                    ; bind _p = _sspstat@4
1372 00000094 = _p___byte equ _sspstat
1373 00000004 = _p___bit equ 4
1374                    ; line_number = 205
1375                    ; bind _s = _sspstat@3
1376 00000094 = _s___byte equ _sspstat
1377 00000003 = _s___bit equ 3
1378                    ; line_number = 206
1379                    ; bind _rw = _sspstat@2
1380 00000094 = _rw___byte equ _sspstat
1381 00000002 = _rw___bit equ 2
1382                    ; line_number = 207
1383                    ; bind _ua = _sspstat@1
1384 00000094 = _ua___byte equ _sspstat
1385 00000001 = _ua___bit equ 1
1386                    ; line_number = 208
1387                    ; bind _bf = _sspstat@0
1388 00000094 = _bf___byte equ _sspstat
1389 00000000 = _bf___bit equ 0
1390            
1391                    ; line_number = 210
1392                    ; register _txsta = 
1393 00000098 = _txsta equ 152
1394                    ; line_number = 211
1395                    ; bind _csrc = _txsta@7
1396 00000098 = _csrc___byte equ _txsta
1397 00000007 = _csrc___bit equ 7
1398                    ; line_number = 212
1399                    ; bind _tx9 = _txsta@6
1400 00000098 = _tx9___byte equ _txsta
1401 00000006 = _tx9___bit equ 6
1402                    ; line_number = 213
1403                    ; bind _txen = _txsta@5
1404 00000098 = _txen___byte equ _txsta
1405 00000005 = _txen___bit equ 5
1406                    ; line_number = 214
1407                    ; bind _sync = _txsta@4
1408 00000098 = _sync___byte equ _txsta
1409 00000004 = _sync___bit equ 4
1410                    ; line_number = 215
1411                    ; bind _brgh = _txsta@2
1412 00000098 = _brgh___byte equ _txsta
1413 00000002 = _brgh___bit equ 2
1414                    ; line_number = 216
1415                    ; bind _trmt = _txsta@1
1416 00000098 = _trmt___byte equ _txsta
1417 00000001 = _trmt___bit equ 1
1418                    ; line_number = 217
1419                    ; bind _tx9d = _txsta@0
1420 00000098 = _tx9d___byte equ _txsta
1421 00000000 = _tx9d___bit equ 0
1422            
1423                    ; line_number = 219
1424                    ; register _spbrg = 
1425 00000099 = _spbrg equ 153
1426            
1427                    ; line_number = 221
1428                    ; register _cmcon = 
1429 0000009c = _cmcon equ 156
1430                    ; line_number = 222
1431                    ; bind _c2out = _cmcon@7
1432 0000009c = _c2out___byte equ _cmcon
1433 00000007 = _c2out___bit equ 7
1434                    ; line_number = 223
1435                    ; bind _c1out = _cmcon@6
1436 0000009c = _c1out___byte equ _cmcon
1437 00000006 = _c1out___bit equ 6
1438                    ; line_number = 224
1439                    ; bind _c2inv = _cmcon@5
1440 0000009c = _c2inv___byte equ _cmcon
1441 00000005 = _c2inv___bit equ 5
1442                    ; line_number = 225
1443                    ; bind _c1inv = _cmcon@4
1444 0000009c = _c1inv___byte equ _cmcon
1445 00000004 = _c1inv___bit equ 4
1446                    ; line_number = 226
1447                    ; bind _cis = _cmcon@3
1448 0000009c = _cis___byte equ _cmcon
1449 00000003 = _cis___bit equ 3
1450                    ; line_number = 227
1451                    ; bind _cm2 = _cmcon@2
1452 0000009c = _cm2___byte equ _cmcon
1453 00000002 = _cm2___bit equ 2
1454                    ; line_number = 228
1455                    ; bind _cm1 = _cmcon@1
1456 0000009c = _cm1___byte equ _cmcon
1457 00000001 = _cm1___bit equ 1
1458                    ; line_number = 229
1459                    ; bind _cm0 = _cmcon@0
1460 0000009c = _cm0___byte equ _cmcon
1461 00000000 = _cm0___bit equ 0
1462            
1463                    ; line_number = 231
1464                    ; register _cvrcon = 
1465 0000009d = _cvrcon equ 157
1466                    ; line_number = 232
1467                    ; bind _cvren = _cvrcon@7
1468 0000009d = _cvren___byte equ _cvrcon
1469 00000007 = _cvren___bit equ 7
1470                    ; line_number = 233
1471                    ; bind _cvroe = _cvrcon@6
1472 0000009d = _cvroe___byte equ _cvrcon
1473 00000006 = _cvroe___bit equ 6
1474                    ; line_number = 234
1475                    ; bind _cvrr = _cvrcon@5
1476 0000009d = _cvrr___byte equ _cvrcon
1477 00000005 = _cvrr___bit equ 5
1478                    ; line_number = 235
1479                    ; bind _cvr3 = _cvrcon@3
1480 0000009d = _cvr3___byte equ _cvrcon
1481 00000003 = _cvr3___bit equ 3
1482                    ; line_number = 236
1483                    ; bind _cvr2 = _cvrcon@2
1484 0000009d = _cvr2___byte equ _cvrcon
1485 00000002 = _cvr2___bit equ 2
1486                    ; line_number = 237
1487                    ; bind _cvr1 = _cvrcon@1
1488 0000009d = _cvr1___byte equ _cvrcon
1489 00000001 = _cvr1___bit equ 1
1490                    ; line_number = 238
1491                    ; bind _cvr0 = _cvrcon@0
1492 0000009d = _cvr0___byte equ _cvrcon
1493 00000000 = _cvr0___bit equ 0
1494            
1495                    ; line_number = 240
1496                    ; register _adresl = 
1497 0000009e = _adresl equ 158
1498            
1499                    ; line_number = 242
1500                    ; register _adcon1 = 
1501 0000009f = _adcon1 equ 159
1502                    ; line_number = 243
1503                    ; bind _adfm = _adcon1@7
1504 0000009f = _adfm___byte equ _adcon1
1505 00000007 = _adfm___bit equ 7
1506                    ; line_number = 244
1507                    ; bind _pcfg3 = _adcon1@3
1508 0000009f = _pcfg3___byte equ _adcon1
1509 00000003 = _pcfg3___bit equ 3
1510                    ; line_number = 245
1511                    ; bind _pcfg2 = _adcon1@2
1512 0000009f = _pcfg2___byte equ _adcon1
1513 00000002 = _pcfg2___bit equ 2
1514                    ; line_number = 246
1515                    ; bind _pcfg1 = _adcon1@1
1516 0000009f = _pcfg1___byte equ _adcon1
1517 00000001 = _pcfg1___bit equ 1
1518                    ; line_number = 247
1519                    ; bind _pcfg0 = _adcon1@0
1520 0000009f = _pcfg0___byte equ _adcon1
1521 00000000 = _pcfg0___bit equ 0
1522            
1523                    ; # Bank 2:
1524            
1525                    ; line_number = 251
1526                    ; register _eedata = 
1527 0000010c = _eedata equ 268
1528            
1529                    ; line_number = 253
1530                    ; register _eeadr = 
1531 0000010d = _eeadr equ 269
1532            
1533                    ; line_number = 255
1534                    ; register _eedath = 
1535 0000010e = _eedath equ 270
1536            
1537                    ; line_number = 257
1538                    ; register _eeadrh = 
1539 0000010f = _eeadrh equ 271
1540            
1541                    ; # Bank 3:
1542            
1543                    ; line_number = 261
1544                    ; register _eecon1 = 
1545 0000018c = _eecon1 equ 396
1546                    ; line_number = 262
1547                    ; bind _eepgd = _eecon1@7
1548 0000018c = _eepgd___byte equ _eecon1
1549 00000007 = _eepgd___bit equ 7
1550                    ; line_number = 263
1551                    ; bind _wrerr = _eecon1@3
1552 0000018c = _wrerr___byte equ _eecon1
1553 00000003 = _wrerr___bit equ 3
1554                    ; line_number = 264
1555                    ; bind _wren = _eecon1@2
1556 0000018c = _wren___byte equ _eecon1
1557 00000002 = _wren___bit equ 2
1558                    ; line_number = 265
1559                    ; bind _wr = _eecon1@1
1560 0000018c = _wr___byte equ _eecon1
1561 00000001 = _wr___bit equ 1
1562                    ; line_number = 266
1563                    ; bind _rd = _eecon1@0
1564 0000018c = _rd___byte equ _eecon1
1565 00000000 = _rd___bit equ 0
1566            
1567                    ; line_number = 268
1568                    ; register _eecon2 = 
1569 0000018d = _eecon2 equ 397
1570            
1571            
1572                    ; buffer = '_pic16f876'
1573                    ; line_number = 358
1574                    ; library _pic16f87x exited
1575            
1576            
1577                    ; buffer = 'test'
1578                    ; line_number = 11
1579                    ; library _pic16f876 exited
1580            
1581                    ; # The resonator is running at 16MHz:
1582                    ; line_number = 14
1583                    ; library clock16mhz entered
1584                    ; # Copyright (c) 2006 by Wayne C. Gramlich
1585                    ; # All rights reserved.
1586            
1587                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1588                    ; # and {clocks_per_instruction}.
1589            
1590                    ; # Define processor constants:
1591                    ; buffer = 'clock16mhz'
1592                    ; line_number = 9
1593                    ; constant clock_rate = 16000000
1594 00f42400 = clock_rate equ 16000000
1595                    ; line_number = 10
1596                    ; constant clocks_per_instruction = 4
1597 00000004 = clocks_per_instruction equ 4
1598                    ; line_number = 11
1599                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1600 003d0900 = instruction_rate equ 4000000
1601            
1602            
1603                    ; buffer = 'test'
1604                    ; line_number = 14
1605                    ; library clock16mhz exited
1606                    ; line_number = 15
1607                    ; constant microsecond = 4
1608 00000004 = microsecond equ 4
1609            
1610                    ; # The libary of bus access routines for use by the PIC16F767:
1611                    ; #library rb2bus_pic16f767
1612                    ; line_number = 19
1613                    ; library rb2bus_pic16f876 entered
1614            
1615                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1616                    ; # All rights reserved.
1617            
1618                    ; # This module provides some procedures for accessing a RoboBricks2
1619                    ; # bus via a UART.  It is speicialized for the PIC16F876:
1620                    ; #
1621                    ; # It defines the following procedure:
1622                    ; #
1623                    ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
1624                    ; #                                for bus access.
1625            
1626                    ; # Global variables used by {rb2bus} library and {rb2bus_picXXXX} libraries:
1627                    ; buffer = 'rb2bus_pic16f876'
1628                    ; line_number = 15
1629                    ; library rb2bus_globals entered
1630            
1631                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1632                    ; # All rights reserved.
1633            
1634                    ; # These are the global variables used by both the {rb2bus} and
1635                    ; # the various {rb2bus_picXXXX} libraries.  Poll based firmware
1636                    ; # uses both libraries, whereas interrupt driven software only
1637                    ; # uses the {rb2bus_picXXX} libraries.
1638            
1639                    ; buffer = 'rb2bus_globals'
1640                    ; line_number = 11
1641                    ; global rb2bus_selected bit	# 
1642 0000006f = rb2bus_selected___byte equ globals___0+79
1643 00000000 = rb2bus_selected___bit equ 0
1644                    ; line_number = 12
1645                    ; global rb2bus_error bit		# Global error bit
1646 0000006f = rb2bus_error___byte equ globals___0+79
1647 00000001 = rb2bus_error___bit equ 1
1648                    ; line_number = 13
1649                    ; global rb2bus_address byte	# Bus address to respond to
1650 00000020 = rb2bus_address equ globals___0
1651                    ; line_number = 14
1652                    ; global rb2bus_index byte	# Index into id information
1653 00000021 = rb2bus_index equ globals___0+1
1654            
1655            
1656                    ; buffer = 'rb2bus_pic16f876'
1657                    ; line_number = 15
1658                    ; library rb2bus_globals exited
1659            
1660                    ; # All other bus access procedures are defined in the {rb2bus} library
1661                    ; # which is accessed below:
1662            
1663                    ; # Baud_Rate = Fosc / (16(X+1))
1664                    ; # 16 * (X+1) = Fosc/Baud_Rate
1665                    ; # X+1 = Fosc/(16*Baud_Rate)
1666                    ; # X = Fosc/(16*Baud_rate) - 1
1667            
1668                    ; line_number = 25
1669                    ; constant baud_rate_500k = 500000
1670 0007a120 = baud_rate_500k equ 500000
1671                    ; line_number = 26
1672                    ; constant spbrg_500k = clock_rate / (16 * baud_rate_500k) - 1
1673 00000001 = spbrg_500k equ 1
1674            
1675                    ; Delaying code generation for procedure  rb2bus_initialize
1676                    ; line_number = 64
1677                    ; constant rb2bus_eedata_address = 0xfe
1678 000000fe = rb2bus_eedata_address equ 254
1679            
1680                    ; Delaying code generation for procedure  rb2bus_eedata_read
1681                    ; Delaying code generation for procedure  rb2bus_eedata_write
1682            
1683                    ; buffer = 'test'
1684                    ; line_number = 19
1685                    ; library rb2bus_pic16f876 exited
1686            
1687                    ; # Make sure we get the bus access routines:
1688                    ; line_number = 22
1689                    ; library rb2bus entered
1690            
1691                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
1692                    ; # All rights reserved.
1693            
1694                    ; # This module provides some procedures for accessing a RoboBricks2
1695                    ; # bus via a UART.
1696                    ; #
1697                    ; # This procedure defines the following procedures:
1698                    ; #
1699                    ; # {rb2bus_select_wait}  This procedure waits for the module to become selected
1700                    ; # {rb2bus_deselect}     This procedure causes this module to be deselected.
1701                    ; # {rb2bus_byte_get}     This procedure will get a byte form the bus.
1702                    ; # {rb2bus_byte_put}     This procedure will send a byte to the bus.
1703                    ; #
1704                    ; # The global variable {rb2bus_error} is set to 1 whenever the procedures
1705                    ; # feel like there is a command decoding error.
1706                    ; #
1707                    ; # The way to use these procedures is quite as follows:
1708                    ; #
1709                    ; #    # Comamnd byte variable:
1710                    ; #    local command byte
1711                    ; #
1712                    ; #    # Other initialize code goes here:
1713                    ; #
1714                    ; #    # Process commands from bus master:
1715                    ; #    loop_forever
1716                    ; #        rb2bus_error := _true
1717                    ; #	 while rb2bus_error
1718                    ; #	     call rb2bus_select_wait()
1719                    ; #	     command := rb2bus_byte_get()
1720                    ; #
1721                    ; #        # Decode command:
1722                    ; #	 switch command >> 6
1723                    ; #	   ...
1724                    ; #             case 5:
1725                    ; #	        # 0000 0101 (Foo command):
1726                    ; #	          if !rb2bus_error
1727                    ; #		      # Do foo command:
1728                    ; #
1729                    ; # The key concept behind these procedures is to make command
1730                    ; # decoding for the slave module easy.  If the slave module
1731                    ; # is in the middle of command decoding and the master suddenly
1732                    ; # sends out a module select command, we need to gracefully recover
1733                    ; # from the problem.  A command should only be executed if
1734                    ; # {rb2bus_error} is not set.  If {rb2bus_error} is set, we want
1735                    ; # to gracefully get back to the beginning of the loop without
1736                    ; # doing any damage.  Once {rb2bus_error} is set, all calls to
1737                    ; # {rb2bus_byte_get} return 0 and all calls to {rb2bus_byte_put}
1738                    ; # do nothing.  At the beginning of the loop, {rb2bus_error} is
1739                    ; # cleared by the {rb2bus_select_wait}() procedure and we have
1740                    ; # recovered from the situation.
1741            
1742                    ; buffer = 'rb2bus'
1743                    ; line_number = 54
1744                    ; library rb2_constants entered
1745            
1746                    ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
1747                    ; # All rights reserved.
1748            
1749                    ; buffer = 'rb2_constants'
1750                    ; line_number = 6
1751                    ; constant rb2_ok = 0xa5
1752 000000a5 = rb2_ok equ 165
1753            
1754                    ; line_number = 8
1755                    ; constant rb2_common_address_set = 0xfc
1756 000000fc = rb2_common_address_set equ 252
1757                    ; line_number = 9
1758                    ; constant rb2_common_id_next = 0xfd
1759 000000fd = rb2_common_id_next equ 253
1760                    ; line_number = 10
1761                    ; constant rb2_common_id_start = 0xfe
1762 000000fe = rb2_common_id_start equ 254
1763                    ; line_number = 11
1764                    ; constant rb2_common_deselect = 0xff
1765 000000ff = rb2_common_deselect equ 255
1766            
1767                    ; line_number = 13
1768                    ; constant rb2_laser1_address = 1
1769 00000001 = rb2_laser1_address equ 1
1770            
1771                    ; line_number = 15
1772                    ; constant rb2_minimotor2_address = 2
1773 00000002 = rb2_minimotor2_address equ 2
1774                    ; line_number = 16
1775                    ; constant rb2_midimotor2_address = 3
1776 00000003 = rb2_midimotor2_address equ 3
1777                    ; line_number = 17
1778                    ; constant rb2_motor0_speed_get = 0
1779 00000000 = rb2_motor0_speed_get equ 0
1780                    ; line_number = 18
1781                    ; constant rb2_motor0_speed_set = 1
1782 00000001 = rb2_motor0_speed_set equ 1
1783                    ; line_number = 19
1784                    ; constant rb2_motor1_speed_get = 2
1785 00000002 = rb2_motor1_speed_get equ 2
1786                    ; line_number = 20
1787                    ; constant rb2_motor1_speed_set = 3
1788 00000003 = rb2_motor1_speed_set equ 3
1789                    ; line_number = 21
1790                    ; constant rb2_duty_cycle_get = 4
1791 00000004 = rb2_duty_cycle_get equ 4
1792                    ; line_number = 22
1793                    ; constant rb2_duty_cycle_set = 8
1794 00000008 = rb2_duty_cycle_set equ 8
1795            
1796                    ; line_number = 24
1797                    ; constant rb2_irdistance2_address = 4
1798 00000004 = rb2_irdistance2_address equ 4
1799                    ; line_number = 25
1800                    ; constant rb2_irdistance2_raw0_get = 0
1801 00000000 = rb2_irdistance2_raw0_get equ 0
1802                    ; line_number = 26
1803                    ; constant rb2_irdistance2_raw1_get = 1
1804 00000001 = rb2_irdistance2_raw1_get equ 1
1805                    ; line_number = 27
1806                    ; constant rb2_irdistance2_smooth0_get = 2
1807 00000002 = rb2_irdistance2_smooth0_get equ 2
1808                    ; line_number = 28
1809                    ; constant rb2_irdistance2_smooth1_get = 3
1810 00000003 = rb2_irdistance2_smooth1_get equ 3
1811                    ; line_number = 29
1812                    ; constant rb2_irdistance2_linear0_get = 4
1813 00000004 = rb2_irdistance2_linear0_get equ 4
1814                    ; line_number = 30
1815                    ; constant rb2_irdistance2_linear1_get = 6
1816 00000006 = rb2_irdistance2_linear1_get equ 6
1817            
1818                    ; line_number = 32
1819                    ; constant rb2_shaft2_address = 5
1820 00000005 = rb2_shaft2_address equ 5
1821                    ; line_number = 33
1822                    ; constant rb2_shaft2_count_latch = 0
1823 00000000 = rb2_shaft2_count_latch equ 0
1824                    ; line_number = 34
1825                    ; constant rb2_shaft2_count_clear = 1
1826 00000001 = rb2_shaft2_count_clear equ 1
1827                    ; line_number = 35
1828                    ; constant rb2_shaft2_shaft0_high_get = 2
1829 00000002 = rb2_shaft2_shaft0_high_get equ 2
1830                    ; line_number = 36
1831                    ; constant rb2_shaft2_shaft1_high_get = 3
1832 00000003 = rb2_shaft2_shaft1_high_get equ 3
1833                    ; line_number = 37
1834                    ; constant rb2_shaft2_continue_get = 4
1835 00000004 = rb2_shaft2_continue_get equ 4
1836                    ; line_number = 38
1837                    ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
1838 00000004 = rb2_shaft2_shaft0_low_get equ 4
1839                    ; line_number = 39
1840                    ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
1841 00000004 = rb2_shaft2_shaft1_low_get equ 4
1842                    ; line_number = 40
1843                    ; constant rb2_shaft2_x_get = 0x10
1844 00000010 = rb2_shaft2_x_get equ 16
1845                    ; line_number = 41
1846                    ; constant rb2_shaft2_y_get = 0x11
1847 00000011 = rb2_shaft2_y_get equ 17
1848                    ; line_number = 42
1849                    ; constant rb2_shaft2_bearing16_get = 0x12
1850 00000012 = rb2_shaft2_bearing16_get equ 18
1851                    ; line_number = 43
1852                    ; constant rb2_shaft2_bearing8_get = 0x13
1853 00000013 = rb2_shaft2_bearing8_get equ 19
1854                    ; line_number = 44
1855                    ; constant rb2_shaft2_target_x_get = 0x14
1856 00000014 = rb2_shaft2_target_x_get equ 20
1857                    ; line_number = 45
1858                    ; constant rb2_shaft2_target_y_get = 0x15
1859 00000015 = rb2_shaft2_target_y_get equ 21
1860                    ; line_number = 46
1861                    ; constant rb2_shaft2_target_bearing16_get = 0x16
1862 00000016 = rb2_shaft2_target_bearing16_get equ 22
1863                    ; line_number = 47
1864                    ; constant rb2_shaft2_target_bearing8_get = 0x17
1865 00000017 = rb2_shaft2_target_bearing8_get equ 23
1866                    ; line_number = 48
1867                    ; constant rb2_shaft2_target_distance_get = 0x18
1868 00000018 = rb2_shaft2_target_distance_get equ 24
1869                    ; line_number = 49
1870                    ; constant rb2_shaft2_wheel_spacing_get = 0x19
1871 00000019 = rb2_shaft2_wheel_spacing_get equ 25
1872                    ; line_number = 50
1873                    ; constant rb2_shaft2_wheel_ticks_get = 0x1a
1874 0000001a = rb2_shaft2_wheel_ticks_get equ 26
1875                    ; line_number = 51
1876                    ; constant rb2_shaft2_wheel_diameter_get = 0x1b
1877 0000001b = rb2_shaft2_wheel_diameter_get equ 27
1878                    ; line_number = 52
1879                    ; constant rb2_shaft2_count_iteration_get = 0x1c
1880 0000001c = rb2_shaft2_count_iteration_get equ 28
1881                    ; line_number = 53
1882                    ; constant rb2_shaft2_x_set = 0x20
1883 00000020 = rb2_shaft2_x_set equ 32
1884                    ; line_number = 54
1885                    ; constant rb2_shaft2_y_set = 0x21
1886 00000021 = rb2_shaft2_y_set equ 33
1887                    ; line_number = 55
1888                    ; constant rb2_shaft2_bearing16_set = 0x22
1889 00000022 = rb2_shaft2_bearing16_set equ 34
1890                    ; line_number = 56
1891                    ; constant rb2_shaft2_navigation_latch = 0x23
1892 00000023 = rb2_shaft2_navigation_latch equ 35
1893                    ; line_number = 57
1894                    ; constant rb2_shaft2_target_x_set = 0x24
1895 00000024 = rb2_shaft2_target_x_set equ 36
1896                    ; line_number = 58
1897                    ; constant rb2_shaft2_target_y_set = 0x25
1898 00000025 = rb2_shaft2_target_y_set equ 37
1899                    ; line_number = 59
1900                    ; constant rb2_shaft2_wheel_spacing_set = 0x29
1901 00000029 = rb2_shaft2_wheel_spacing_set equ 41
1902                    ; line_number = 60
1903                    ; constant rb2_shaft2_wheel_ticks_set = 0x2a
1904 0000002a = rb2_shaft2_wheel_ticks_set equ 42
1905                    ; line_number = 61
1906                    ; constant rb2_shaft2_wheel_diameter_set = 0x2b
1907 0000002b = rb2_shaft2_wheel_diameter_set equ 43
1908            
1909            
1910                    ; line_number = 64
1911                    ; constant rb2_orient5_address = 6
1912 00000006 = rb2_orient5_address equ 6
1913            
1914                    ; line_number = 66
1915                    ; constant rb2_compass8_address = 7
1916 00000007 = rb2_compass8_address equ 7
1917            
1918                    ; line_number = 68
1919                    ; constant rb2_io8_address = 8
1920 00000008 = rb2_io8_address equ 8
1921                    ; line_number = 69
1922                    ; constant rb2_io8_digital8_get = 0
1923 00000000 = rb2_io8_digital8_get equ 0
1924                    ; line_number = 70
1925                    ; constant rb2_io8_digital8_set = 1
1926 00000001 = rb2_io8_digital8_set equ 1
1927                    ; line_number = 71
1928                    ; constant rb2_io8_direction_get = 2
1929 00000002 = rb2_io8_direction_get equ 2
1930                    ; line_number = 72
1931                    ; constant rb2_io8_direction_set = 3
1932 00000003 = rb2_io8_direction_set equ 3
1933                    ; line_number = 73
1934                    ; constant rb2_io8_analog_mask_get = 4
1935 00000004 = rb2_io8_analog_mask_get equ 4
1936                    ; line_number = 74
1937                    ; constant rb2_io8_analog_mask_set = 5
1938 00000005 = rb2_io8_analog_mask_set equ 5
1939                    ; line_number = 75
1940                    ; constant rb2_io8_analog8_get = 0x10
1941 00000010 = rb2_io8_analog8_get equ 16
1942                    ; line_number = 76
1943                    ; constant rb2_io8_analog10_get = 0x18
1944 00000018 = rb2_io8_analog10_get equ 24
1945                    ; line_number = 77
1946                    ; constant rb2_low_set = 0x20
1947 00000020 = rb2_low_set equ 32
1948                    ; line_number = 78
1949                    ; constant rb2_high_set = 0x30
1950 00000030 = rb2_high_set equ 48
1951            
1952                    ; line_number = 80
1953                    ; constant rb2_sonar2_address = 9
1954 00000009 = rb2_sonar2_address equ 9
1955            
1956                    ; line_number = 82
1957                    ; constant rb2_voice1_address = 10
1958 0000000a = rb2_voice1_address equ 10
1959            
1960                    ; line_number = 84
1961                    ; constant rb2_servo4_address = 11
1962 0000000b = rb2_servo4_address equ 11
1963                    ; line_number = 85
1964                    ; constant rb2_servo4_servo0 = 0
1965 00000000 = rb2_servo4_servo0 equ 0
1966                    ; line_number = 86
1967                    ; constant rb2_servo4_servo1 = 1
1968 00000001 = rb2_servo4_servo1 equ 1
1969                    ; line_number = 87
1970                    ; constant rb2_servo4_servo2 = 2
1971 00000002 = rb2_servo4_servo2 equ 2
1972                    ; line_number = 88
1973                    ; constant rb2_servo4_servo3 = 3
1974 00000003 = rb2_servo4_servo3 equ 3
1975                    ; line_number = 89
1976                    ; constant rb2_servo4_quick_set = 0
1977 00000000 = rb2_servo4_quick_set equ 0
1978                    ; line_number = 90
1979                    ; constant rb2_servo4_quick_low = 0
1980 00000000 = rb2_servo4_quick_low equ 0
1981                    ; line_number = 91
1982                    ; constant rb2_servo4_quick_center = 40
1983 00000028 = rb2_servo4_quick_center equ 40
1984                    ; line_number = 92
1985                    ; constant rb2_servo4_quick_high = 0x7c
1986 0000007c = rb2_servo4_quick_high equ 124
1987                    ; line_number = 93
1988                    ; constant rb2_servo4_high_low_set = 0x80
1989 00000080 = rb2_servo4_high_low_set equ 128
1990                    ; line_number = 94
1991                    ; constant rb2_servo4_short_high_low_set = 0x84
1992 00000084 = rb2_servo4_short_high_low_set equ 132
1993                    ; line_number = 95
1994                    ; constant rb2_servo4_high_set = 0x88
1995 00000088 = rb2_servo4_high_set equ 136
1996                    ; line_number = 96
1997                    ; constant rb2_servo4_low_set = 0x8c
1998 0000008c = rb2_servo4_low_set equ 140
1999                    ; line_number = 97
2000                    ; constant rb2_servo4_enables_set = 0x90
2001 00000090 = rb2_servo4_enables_set equ 144
2002                    ; line_number = 98
2003                    ; constant rb2_servo4_enable0 = 1
2004 00000001 = rb2_servo4_enable0 equ 1
2005                    ; line_number = 99
2006                    ; constant rb2_servo4_enable1 = 2
2007 00000002 = rb2_servo4_enable1 equ 2
2008                    ; line_number = 100
2009                    ; constant rb2_servo4_enable2 = 4
2010 00000004 = rb2_servo4_enable2 equ 4
2011                    ; line_number = 101
2012                    ; constant rb2_servo4_enable3 = 8
2013 00000008 = rb2_servo4_enable3 equ 8
2014                    ; line_number = 102
2015                    ; constant rb2_servo4_enable_all = 0xf
2016 0000000f = rb2_servo4_enable_all equ 15
2017                    ; line_number = 103
2018                    ; constant rb2_servo4_enable_none = 0
2019 00000000 = rb2_servo4_enable_none equ 0
2020                    ; line_number = 104
2021                    ; constant rb2_servo4_high_get = 0xa0
2022 000000a0 = rb2_servo4_high_get equ 160
2023                    ; line_number = 105
2024                    ; constant rb2_servo4_low_get = 0xa4
2025 000000a4 = rb2_servo4_low_get equ 164
2026                    ; line_number = 106
2027                    ; constant rb2_servo4_enables_get = 0xa8
2028 000000a8 = rb2_servo4_enables_get equ 168
2029            
2030                    ; line_number = 108
2031                    ; constant rb2_controller28_address = 28
2032 0000001c = rb2_controller28_address equ 28
2033            
2034                    ; line_number = 110
2035                    ; constant rb2_lcd32_address = 32
2036 00000020 = rb2_lcd32_address equ 32
2037                    ; line_number = 111
2038                    ; constant rb2_lcd32_row_set = 4
2039 00000004 = rb2_lcd32_row_set equ 4
2040                    ; line_number = 112
2041                    ; constant rb2_lcd32_row0_set = rb2_lcd32_row_set | 0
2042 00000004 = rb2_lcd32_row0_set equ 4
2043                    ; line_number = 113
2044                    ; constant rb2_lcd32_row1_set = rb2_lcd32_row_set | 1
2045 00000005 = rb2_lcd32_row1_set equ 5
2046                    ; line_number = 114
2047                    ; constant rb2_lcd32_row2_set = rb2_lcd32_row_set | 2
2048 00000006 = rb2_lcd32_row2_set equ 6
2049                    ; line_number = 115
2050                    ; constant rb2_lcd32_row3_set = rb2_lcd32_row_set | 3
2051 00000007 = rb2_lcd32_row3_set equ 7
2052                    ; line_number = 116
2053                    ; constant rb2_lcd32_new_line = 0xa
2054 0000000a = rb2_lcd32_new_line equ 10
2055                    ; line_number = 117
2056                    ; constant rb2_lcd32_form_feed = 0xc
2057 0000000c = rb2_lcd32_form_feed equ 12
2058                    ; line_number = 118
2059                    ; constant rb2_lcd32_carriage_return = 0xd
2060 0000000d = rb2_lcd32_carriage_return equ 13
2061                    ; line_number = 119
2062                    ; constant rb2_lcd32_column_set = 0x10
2063 00000010 = rb2_lcd32_column_set equ 16
2064            
2065            
2066                    ; buffer = 'rb2bus'
2067                    ; line_number = 54
2068                    ; library rb2_constants exited
2069                    ; line_number = 55
2070                    ; library rb2bus_globals Skipped (duplicate)
2071            
2072                    ; Delaying code generation for procedure  rb2bus_select_wait
2073                    ; Delaying code generation for procedure  rb2bus_deselect
2074                    ; Delaying code generation for procedure  rb2bus_byte_get
2075                    ; Delaying code generation for procedure  rb2bus_byte_put
2076                    ; Delaying code generation for procedure  rb2bus_command
2077            
2078                    ; buffer = 'test'
2079                    ; line_number = 22
2080                    ; library rb2bus exited
2081            
2082                    ; # This module uses a 16Mhz resonator; hence mode HS=High Speed:
2083            
2084                    ; # Only the RX and TX pins on this package are used:
2085                    ; line_number = 28
2086                    ; package pdip
2087                    ; line_number = 29
2088                    ; pin 1 = mclr
2089                    ; line_number = 30
2090                    ;  pin 2 = ra0_unused
2091                    ; line_number = 31
2092                    ;  pin 3 = ra1_unused
2093                    ; line_number = 32
2094                    ;  pin 4 = ra2_unused
2095                    ; line_number = 33
2096                    ;  pin 5 = ra3_unused
2097                    ; line_number = 34
2098                    ;  pin 6 = ra4_unused
2099                    ; line_number = 35
2100                    ;  pin 7 = ra5_unused
2101                    ; line_number = 36
2102                    ;  pin 8 = ground
2103                    ; line_number = 37
2104                    ;  pin 9 = osc1
2105                    ; line_number = 38
2106                    ;  pin 10 = osc2
2107                    ; line_number = 39
2108                    ;  pin 11 = rc0_unused
2109                    ; line_number = 40
2110                    ;  pin 12 = rc1_unused
2111                    ; line_number = 41
2112                    ;  pin 13 = rc2_unused
2113                    ; line_number = 42
2114                    ;  pin 14 = rc3_unused
2115                    ; line_number = 43
2116                    ;  pin 15 = rc4_unused
2117                    ; line_number = 44
2118                    ;  pin 16 = rc5_unused
2119                    ; line_number = 45
2120                    ;  pin 17 = tx
2121                    ; line_number = 46
2122                    ;  pin 18 = rx
2123                    ; line_number = 47
2124                    ;  pin 19 = ground2
2125                    ; line_number = 48
2126                    ;  pin 20 = power_supply
2127                    ; line_number = 49
2128                    ;  pin 21 = rb0_unused
2129                    ; line_number = 50
2130                    ;  pin 22 = rb1_unused
2131                    ; line_number = 51
2132                    ;  pin 23 = rb2_unused
2133                    ; line_number = 52
2134                    ;  pin 24 = rb3_unused
2135                    ; line_number = 53
2136                    ;  pin 25 = rb4_unused
2137                    ; line_number = 54
2138                    ;  pin 26 = rb5_unused
2139                    ; line_number = 55
2140                    ;  pin 27 = rb6_unused
2141                    ; line_number = 56
2142                    ;  pin 28 = rb7_unused
2143            
2144                    ; line_number = 59
2145                    ; library_bank 0
2146                    ; line_number = 60
2147                    ; library _signed16 entered
2148            
2149                    ; # Copyright (c) 2007 by Wayne C. Gramlich.
2150                    ; # All rights reserved.
2151            
2152                    ; # This library implements the following procedures for general use
2153                    ; # by users:
2154                    ; #
2155                    ; #    _signed16_from_byte(x)		return signed16(x) where x is a byte
2156                    ; #    _signed16_from_byte2(x,y)		return signed16((x<<8)|y)
2157                    ; #					where x,y are bytes
2158                    ; #    _signed16_to_byte(x)		return x as an 8-bit byte
2159                    ; #    _signed16_byte_high(x)		return bigh byte of x
2160                    ; #    _signed16_byte_low(x))		return low byte of x
2161                    ; #
2162                    ; # The following additional procedures are implemented for use by the
2163                    ; # compiler.
2164                    ; #
2165                    ; #    _signed16_pointer_load()		A := M[W]
2166                    ; #    _signed16_pointer_add()		A := M[W]
2167                    ; #    _signed16_pointer_divide()		A := A / M[W]
2168                    ; #    _signed16_pointer_multiply()	A := A * M[W]
2169                    ; #    _signed16_pointer_subtract()	A := A - M[W]
2170                    ; #    _signed16_pointer_store()		M[W] := A
2171                    ; #    _signed16_pointer_negate()		A := -A
2172                    ; #    _signed16_pointer_swap()		A <=> M[W]
2173                    ; #    _signed16_equals()			_z := A = 0.0
2174                    ; #    _signed16_not_equal()		_z := A != 0.0
2175                    ; #    _signed16_less_than()		_z := if A < 0.0
2176                    ; #    _signed16_less_than_or_equal()	_z := A <= 0.0
2177                    ; #    _signed16_greater_than()		_z := A > 0.0
2178                    ; #    _signed16_greater_than_or_equal()	_z := A >= 0.0
2179                    ; #
2180                    ; # All of the procedures constants and labels in this library are
2181                    ; # prefixed by "_signed16_".
2182                    ; #
2183                    ; # For the uCL compiler, signed16's are required to be aligned on even
2184                    ; # memory addresses.  Since the PIC16F* processor can not access more
2185                    ; # 512 bytes of RAM, this means that a pointer to signed16 can be represented
2186                    ; # in 8-bits as (address>>1).  (Pretty, slick!)
2187            
2188                    ; # FIXME: Make sure that none of the procedures allocate any argument storage!!!
2189            
2190                    ; buffer = '_signed16'
2191                    ; line_number = 44
2192                    ; global _signed16_a0 byte	# A Register MSB
2193 0000002c = _signed16_a0 equ globals___0+12
2194                    ; line_number = 45
2195                    ; global _signed16_a1 byte	# A Register LSB
2196 0000002d = _signed16_a1 equ globals___0+13
2197                    ; line_number = 46
2198                    ; global _signed16_b0 byte	# B Register MSB
2199 0000002e = _signed16_b0 equ globals___0+14
2200                    ; line_number = 47
2201                    ; global _signed16_b1 byte	# B Register LSB
2202 0000002f = _signed16_b1 equ globals___0+15
2203                    ; line_number = 48
2204                    ; global _signed16_result3 byte	# Mulitply result MSB
2205 00000030 = _signed16_result3 equ globals___0+16
2206                    ; line_number = 49
2207                    ; global _signed16_result2 byte
2208 00000031 = _signed16_result2 equ globals___0+17
2209                    ; line_number = 50
2210                    ; global _signed16_result1 byte
2211 00000032 = _signed16_result1 equ globals___0+18
2212                    ; line_number = 51
2213                    ; global _signed16_result0 byte	# Mulitply resultLSB
2214 00000033 = _signed16_result0 equ globals___0+19
2215                    ; line_number = 52
2216                    ; global _signed16_neg_flag byte	# Negative flag
2217 00000034 = _signed16_neg_flag equ globals___0+20
2218                    ; line_number = 53
2219                    ; global _signed16_count byte	# Loop counter for divide
2220 00000035 = _signed16_count equ globals___0+21
2221            
2222                    ; # Bindings for 
2223                    ; line_number = 56
2224                    ; bind _signed16_rem0 = _signed16_result2
2225 00000031 = _signed16_rem0 equ globals___0+17
2226                    ; line_number = 57
2227                    ; bind _signed16_rem1 = _signed16_result3
2228 00000030 = _signed16_rem1 equ globals___0+16
2229                    ; line_number = 58
2230                    ; bind _signed16_temp0 = _signed16_result0
2231 00000033 = _signed16_temp0 equ globals___0+19
2232                    ; line_number = 59
2233                    ; bind _signed16_temp1 = _signed16_result1
2234 00000032 = _signed16_temp1 equ globals___0+18
2235                    ; line_number = 60
2236                    ; bind _signed16_sign = _signed16_neg_flag
2237 00000034 = _signed16_sign equ globals___0+20
2238            
2239                    ; Delaying code generation for procedure  _signed16_pointer_load
2240                    ; Delaying code generation for procedure  _signed16_pointer_add
2241                    ; Delaying code generation for procedure  _signed16_pointer_divide
2242                    ; Delaying code generation for procedure  _signed16_pointer_multiply
2243                    ; Delaying code generation for procedure  _signed16_pointer_subtract
2244                    ; Delaying code generation for procedure  _signed16_pointer_store
2245                    ; Delaying code generation for procedure  _signed16_negate
2246                    ; Delaying code generation for procedure  _signed16_pointer_swap
2247                    ; Delaying code generation for procedure  _signed16_from_byte
2248                    ; Delaying code generation for procedure  _signed16_from_byte2
2249                    ; Delaying code generation for procedure  _signed16_to_byte
2250                    ; Delaying code generation for procedure  _signed16_byte_high
2251                    ; Delaying code generation for procedure  _signed16_byte_low
2252                    ; Delaying code generation for procedure  _signed16_equals
2253                    ; Delaying code generation for procedure  _signed16_not_equal
2254                    ; Delaying code generation for procedure  _signed16_less_than
2255                    ; Delaying code generation for procedure  _signed16_less_than_or_equal
2256                    ; Delaying code generation for procedure  _signed16_greater_than
2257                    ; Delaying code generation for procedure  _signed16_greater_than_or_equal
2258                    ; #*******************************************************************
2259                    ; #                       Double Precision Division
2260                    ; #
2261                    ; #               ( Optimized for Code Size : Looped Code )
2262                    ; #
2263                    ; #*******************************************************************#
2264                    ; #   Division:
2265                    ; #	Input:
2266                    ; #	    Numeratator=_signed16_a<0:1>
2267                    ; #	    Denominator = _signed16_b<0:1>
2268                    ; #	Outputs:
2269                    ; #	    Quotiant = _signed16_a<0:1>
2270                    ; #	    Remainder in _signed16_rem<0:1>
2271                    ; #
2272                    ; #   Sequence:
2273                    ; #	(a) Load the Numerator in location _signed16_a<0:1> ( 16 bits )
2274                    ; #	(b) Load the Denominator in location _signed16_b<0:1> ( 16 bits )
2275                    ; #	(c) call _signed16_divide_raw
2276                    ; #	(d) The 16 bit quotiant is in location _signed16_a<0:1>
2277                    ; #	(e) The 16 bit remainder is in locations _signed16_rem<0:1>
2278            
2279                    ; Delaying code generation for procedure  _signed16_divide_raw
2280            
2281                    ; buffer = 'test'
2282                    ; line_number = 60
2283                    ; library _signed16 exited
2284            
2285            
2286                    ; line_number = 64
2287                    ; origin 0
2288   0000 :           org     0
2289            
2290                    ; line_number = 66
2291                    ;info   66, 0
2292                    ; procedure start
2293   0000 :   start:
2294                    ; arguments_none
2295                    ; line_number = 68
2296                    ;  returns_nothing
2297                    ; line_number = 69
2298                    ;  return_suppress
2299            
2300                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
2301                    ; line_number = 71
2302                    ;  assemble
2303                    ;info   71, 0
2304                    ; line_number = 72
2305                    ;info   72, 0
2306                    ; codebank start, main
2307                    ; line_number = 73
2308                    ;info   73, 0
2309 0000 280e          goto    main
2310            
2311                    ; delay after procedure statements=non-uniform
2312                    ; Return instruction suppressed by 'return_suppress'
2313            
2314            
2315            
2316            
2317                    ; line_number = 75
2318                    ; origin 4
2319   0004 :           org     4
2320            
2321                    ; line_number = 77
2322                    ;info   77, 4
2323                    ; procedure interrupt
2324   0004 :   interrupt:
2325 00000071 = interrupt___w_save equ shared___globals+1
2326 00000070 = interrupt___status_save equ shared___globals
2327                    ; Carefully save __w and __tatus into RAM
2328                    ; Save W first (easy)
2329 0004 00f1          movwf   interrupt___w_save
2330                    ; Save Status without smashing it (tricky)
2331                    ; Move swapped version of status into W
2332 0005 0e03          swapf   __status,w
2333                    ; Store swapped version of status into RAM
2334 0006 00f0          movwf   interrupt___status_save
2335                    ; arguments_none
2336                    ; line_number = 79
2337                    ;  returns_nothing
2338            
2339                    ; # An interrupt soaker.
2340            
2341                    ; before procedure statements delay=non-uniform, bit states=(data:??=uu=>?? code:00=uu=>00)
2342                    ; line_number = 83
2343                    ;  do_nothing
2344                    ;info   83, 7
2345            
2346            
2347                    ; delay after procedure statements=non-uniform
2348 0007 1283          bcf     __rp0___byte, __rp0___bit
2349 0008 1303          bcf     __rp1___byte, __rp1___bit
2350                    ; Interrupt return
2351                    ; Carefully restore __w and __tatus from RAM
2352                    ; Restore swapped status into W
2353 0009 0e70          swapf   interrupt___status_save,w
2354                    ; W now contains (unswapped) status
2355                    ; Restore W to __status
2356 000a 0083          movwf   __status
2357                    ; From here on out, do not modify __status
2358                    ; Swap saved W register in RAM
2359 000b 0ef1          swapf   interrupt___w_save,f
2360                    ; Unswap the saved W reg and restore to W
2361 000c 0e71          swapf   interrupt___w_save,w
2362                    ; __w and __status are now restored
2363                    ; Return from interrupt
2364 000d 0009          retfie  
2365            
2366            
2367            
2368            
2369                    ; line_number = 86
2370                    ;info   86, 14
2371                    ; procedure main
2372   000e :   main:
2373                    ; Initialize some registers
2374 000e 019f          clrf    _adcon0
2375 000f 3007          movlw   7
2376 0010 1683          bsf     __rp0___byte, __rp0___bit
2377 0011 009f          movwf   _adcon1
2378 0012 3007          movlw   7
2379 0013 009c          movwf   _cmcon
2380 0014 303f          movlw   63
2381 0015 0085          movwf   _trisa
2382 0016 30ff          movlw   255
2383 0017 0086          movwf   _trisb
2384 0018 30bf          movlw   191
2385 0019 0087          movwf   _trisc
2386                    ; arguments_none
2387                    ; line_number = 88
2388                    ;  returns_nothing
2389            
2390                    ; line_number = 90
2391                    ;  local command byte
2392 0000004a = main__command equ globals___0+42
2393                    ; line_number = 91
2394                    ;  local id_index byte
2395 0000004b = main__id_index equ globals___0+43
2396            
2397                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:00=uu=>00)
2398                    ; line_number = 93
2399                    ;  _gie := _false
2400                    ;info   93, 26
2401 001a 138b          bcf     _gie___byte, _gie___bit
2402                    ; line_number = 94
2403                    ;  call rb2bus_initialize(28)
2404                    ;info   94, 27
2405 001b 301c          movlw   28
2406 001c 1283          bcf     __rp0___byte, __rp0___bit
2407 001d 233d          call    rb2bus_initialize
2408            
2409                    ; line_number = 96
2410                    ;  id_index := 0
2411                    ;info   96, 30
2412 001e 01cb          clrf    main__id_index
2413            
2414                    ; line_number = 98
2415                    ;  loop_forever start
2416   001f :   main__1:
2417                    ; # Make sure that we have been selected:
2418                    ; line_number = 100
2419                    ;  rb2bus_error := _true
2420                    ;info   100, 31
2421 001f 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
2422                    ; line_number = 101
2423                    ;  while rb2bus_error start
2424   0020 :   main__2:
2425                    ;info   101, 32
2426                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
2427                    ; No 1TEST: true.size=4 false.size=0
2428                    ; No 2TEST: true.size=4 false.size=0
2429                    ; 1GOTO: Single test with GOTO
2430 0020 1cef          btfss   rb2bus_error___byte, rb2bus_error___bit
2431 0021 2826          goto    main__3
2432                    ; line_number = 102
2433                    ; call rb2bus_select_wait()
2434                    ;info   102, 34
2435 0022 2399          call    rb2bus_select_wait
2436                    ; line_number = 103
2437                    ;  command := rb2bus_byte_get()
2438                    ;info   103, 35
2439 0023 23b8          call    rb2bus_byte_get
2440 0024 00ca          movwf   main__command
2441            
2442 0025 2820          goto    main__2
2443                    ; Recombine size1 = 0 || size2 = 0
2444   0026 :   main__3:
2445                    ; line_number = 101
2446                    ;  while rb2bus_error done
2447                    ; line_number = 105
2448                    ; switch command >> 6 start
2449                    ;info   105, 38
2450                    ; switch_before:(data:00=uu=>00 code:00=uu=>00) size=7
2451 0026 3000          movlw   main__23>>8
2452 0027 008a          movwf   __pclath
2453 00000057 = main__24 equ globals___0+55
2454 0028 0e4a          swapf   main__command,w
2455 0029 00d7          movwf   main__24
2456 002a 0cd7          rrf     main__24,f
2457 002b 0c57          rrf     main__24,w
2458 002c 3903          andlw   3
2459                    ; switch after expression:(data:00=uu=>00 code:00=uu=>00)
2460 002d 3e2f          addlw   main__23
2461 002e 0082          movwf   __pcl
2462                    ; page_group 4
2463   002f :   main__23:
2464 002f 2880          goto    main__25
2465 0030 2880          goto    main__25
2466 0031 2833          goto    main__21
2467 0032 2855          goto    main__22
2468                    ; line_number = 106
2469                    ; case 2
2470   0033 :   main__21:
2471                    ; # 10xx xxxx:
2472                    ; line_number = 108
2473                    ;  switch (command >> 3) & 7 start
2474                    ;info   108, 51
2475                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2476                    ; line_number = 116
2477                    ; case_maximum 7
2478 0033 3000          movlw   main__8>>8
2479 0034 008a          movwf   __pclath
2480 00000057 = main__9 equ globals___0+55
2481 0035 0c4a          rrf     main__command,w
2482 0036 00d7          movwf   main__9
2483 0037 0cd7          rrf     main__9,f
2484 0038 0c57          rrf     main__9,w
2485 0039 3907          andlw   7
2486                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2487 003a 3e3c          addlw   main__8
2488 003b 0082          movwf   __pcl
2489                    ; page_group 8
2490   003c :   main__8:
2491 003c 2844          goto    main__7
2492 003d 2854          goto    main__10
2493 003e 2854          goto    main__10
2494 003f 2854          goto    main__10
2495 0040 2854          goto    main__10
2496 0041 2854          goto    main__10
2497 0042 2854          goto    main__10
2498 0043 2854          goto    main__10
2499                    ; line_number = 109
2500                    ; case 0
2501   0044 :   main__7:
2502                    ; # 1000 0xxx:
2503                    ; line_number = 111
2504                    ;  switch command & 7 start
2505                    ;info   111, 68
2506                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2507                    ; line_number = 115
2508                    ; case_maximum 7
2509 0044 3000          movlw   main__5>>8
2510 0045 008a          movwf   __pclath
2511 0046 3007          movlw   7
2512 0047 054a          andwf   main__command,w
2513                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2514                    ; All case bodies prefer this bit set
2515 0048 1683          bsf     __rp0___byte, __rp0___bit
2516 0049 3e4b          addlw   main__5
2517 004a 0082          movwf   __pcl
2518                    ; page_group 8
2519   004b :   main__5:
2520 004b 2853          goto    main__4
2521 004c 2854          goto    main__6
2522 004d 2854          goto    main__6
2523 004e 2854          goto    main__6
2524 004f 2854          goto    main__6
2525 0050 2854          goto    main__6
2526 0051 2854          goto    main__6
2527 0052 2854          goto    main__6
2528                    ; line_number = 112
2529                    ; case 0
2530   0053 :   main__4:
2531                    ; # 1000 0000 (Run Program)
2532                    ; line_number = 114
2533                    ;  call program2()
2534                    ;info   114, 83
2535 0053 211c          call    program2
2536   0054 :   main__6:
2537                    ; line_number = 111
2538                    ;  switch command & 7 done
2539   0054 :   main__10:
2540                    ; line_number = 108
2541                    ;  switch (command >> 3) & 7 done
2542 0054 2880          goto    main__25
2543                    ; line_number = 117
2544                    ; case 3
2545   0055 :   main__22:
2546                    ; # 11xx xxxx:
2547                    ; line_number = 119
2548                    ;  switch (command >> 3) & 7 start
2549                    ;info   119, 85
2550                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2551 0055 3000          movlw   main__18>>8
2552 0056 008a          movwf   __pclath
2553 00000057 = main__19 equ globals___0+55
2554 0057 0c4a          rrf     main__command,w
2555 0058 00d7          movwf   main__19
2556 0059 0cd7          rrf     main__19,f
2557 005a 0c57          rrf     main__19,w
2558 005b 3907          andlw   7
2559                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2560 005c 3e5e          addlw   main__18
2561 005d 0082          movwf   __pcl
2562                    ; page_group 8
2563   005e :   main__18:
2564 005e 2880          goto    main__20
2565 005f 2880          goto    main__20
2566 0060 2880          goto    main__20
2567 0061 2880          goto    main__20
2568 0062 2880          goto    main__20
2569 0063 2880          goto    main__20
2570 0064 2880          goto    main__20
2571 0065 2866          goto    main__17
2572                    ; line_number = 120
2573                    ; case 7
2574   0066 :   main__17:
2575                    ; # 1111 1xxx:
2576                    ; line_number = 122
2577                    ;  switch command & 7 start
2578                    ;info   122, 102
2579                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
2580 0066 3000          movlw   main__15>>8
2581 0067 008a          movwf   __pclath
2582 0068 3007          movlw   7
2583 0069 054a          andwf   main__command,w
2584                    ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
2585 006a 3e6c          addlw   main__15
2586 006b 0082          movwf   __pcl
2587                    ; page_group 8
2588   006c :   main__15:
2589 006c 2880          goto    main__16
2590 006d 2880          goto    main__16
2591 006e 2880          goto    main__16
2592 006f 2880          goto    main__16
2593 0070 2880          goto    main__16
2594 0071 2874          goto    main__12
2595 0072 287d          goto    main__13
2596 0073 287f          goto    main__14
2597                    ; line_number = 123
2598                    ; case 5
2599   0074 :   main__12:
2600                    ; # 1111 1101 (Id_next):
2601                    ; line_number = 125
2602                    ;  if id_index < id.size start
2603                    ;info   125, 116
2604 0074 301c          movlw   28
2605 0075 024b          subwf   main__id_index,w
2606                    ; =>bit_code_emit@symbol(): sym=__c
2607                    ; No 1TEST: true.size=0 false.size=4
2608                    ; No 2TEST: true.size=0 false.size=4
2609                    ; 1GOTO: Single test with GOTO
2610 0076 1803          btfsc   __c___byte, __c___bit
2611 0077 287c          goto    main__11
2612                    ; line_number = 126
2613                    ; call rb2bus_byte_put(id[id_index])
2614                    ;info   126, 120
2615 0078 084b          movf    main__id_index,w
2616 0079 20f1          call    id
2617 007a 23da          call    rb2bus_byte_put
2618                    ; line_number = 127
2619                    ;  id_index := id_index + 1
2620                    ;info   127, 123
2621 007b 0acb          incf    main__id_index,f
2622   007c :   main__11:
2623                    ; Recombine size1 = 0 || size2 = 0
2624                    ; line_number = 125
2625                    ;  if id_index < id.size done
2626 007c 2880          goto    main__16
2627                    ; line_number = 128
2628                    ; case 6
2629   007d :   main__13:
2630                    ; # 1111 1110 (Id_start):
2631                    ; line_number = 130
2632                    ;  id_index := 0
2633                    ;info   130, 125
2634 007d 01cb          clrf    main__id_index
2635 007e 2880          goto    main__16
2636                    ; line_number = 131
2637                    ; case 7
2638   007f :   main__14:
2639                    ; # 1111 1111 (Deselect):
2640                    ; line_number = 133
2641                    ;  call rb2bus_deselect()
2642                    ;info   133, 127
2643 007f 23b6          call    rb2bus_deselect
2644            
2645   0080 :   main__16:
2646                    ; line_number = 122
2647                    ;  switch command & 7 done
2648   0080 :   main__20:
2649                    ; line_number = 119
2650                    ;  switch (command >> 3) & 7 done
2651   0080 :   main__25:
2652                    ; line_number = 105
2653                    ; switch command >> 6 done
2654                    ; line_number = 98
2655                    ;  loop_forever wrap-up
2656                    ; Need to adjust code banks to match front of loop
2657 0080 1283          bcf     __rp0___byte, __rp0___bit
2658 0081 281f          goto    main__1
2659                    ; line_number = 98
2660                    ;  loop_forever done
2661                    ; delay after procedure statements=non-uniform
2662            
2663            
2664            
2665            
2666                    ; line_number = 135
2667                    ;info   135, 130
2668                    ; procedure wait
2669   0082 :   wait:
2670                    ; arguments_none
2671                    ; line_number = 137
2672                    ;  returns_nothing
2673            
2674                    ; # This procedure is repeatably called whenever the software
2675                    ; # is waiting for a byte to arrive from the bus.
2676            
2677                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
2678                    ; line_number = 142
2679                    ;  do_nothing
2680                    ;info   142, 130
2681            
2682            
2683                    ; delay after procedure statements=non-uniform
2684                    ; Implied return
2685 0082 3400          retlw   0
2686            
2687            
2688            
2689            
2690                    ; #procedure program
2691                    ; #    arguments_none
2692                    ; #    returns_nothing
2693                    ; #
2694                    ; #    # This is a quick little program to copy the contents of
2695                    ; #    # A/D channel 0 on the IO8 to the motor 0 speed on the
2696                    ; #    # MiniMotor2.
2697                    ; #
2698                    ; #    # Initialize the LCD32:
2699                    ; #
2700                    ; #    _gie := _false
2701                    ; #
2702                    ; #    call rb2bus_address_put(rb2_lcd32_address)
2703                    ; #    call rb2bus_byte_put(rb2_lcd32_form_feed)
2704                    ; #
2705                    ; #    call rb2bus_address_put(rb2_lcd32_address + 1)
2706                    ; #    call rb2bus_byte_put(rb2_lcd32_form_feed)
2707                    ; #
2708                    ; #    loop_forever
2709                    ; #	call rb2bus_address_put(rb2_shaft2_address)
2710                    ; #	call rb2bus_byte_put(rb2_shaft2_navigation_latch)
2711                    ; #
2712                    ; #	call number_show('X', rb2_shaft2_x_get, 0, 0, 0)
2713                    ; #	call number_show('Y', rb2_shaft2_y_get, 0, 0, 8)
2714                    ; #
2715                    ; #	call number_show('B', rb2_shaft2_bearing16_get, 1, 0, 0)
2716                    ; #
2717                    ; #	call number_show('b', rb2_shaft2_target_bearing16_get, 1, 1, 0)
2718                    ; #	call number_show('d', rb2_shaft2_target_distance_get, 1, 1, 8)
2719                    ; #
2720                    ; #	call delay_ms(200)
2721                    ; #
2722                    ; #	do_nothing
2723            
2724            
2725                    ; line_number = 180
2726                    ;info   180, 131
2727                    ; procedure number_show
2728   0083 :   number_show:
2729                    ; Last argument is sitting in W; save into argument variable
2730 0083 00d2          movwf   number_show__column
2731                    ; delay=4294967295
2732                    ; line_number = 181
2733                    ; argument label byte
2734 0000004e = number_show__label equ globals___0+46
2735                    ; line_number = 182
2736                    ; argument command byte
2737 0000004f = number_show__command equ globals___0+47
2738                    ; line_number = 183
2739                    ; argument lcd byte
2740 00000050 = number_show__lcd equ globals___0+48
2741                    ; line_number = 184
2742                    ; argument row byte
2743 00000051 = number_show__row equ globals___0+49
2744                    ; line_number = 185
2745                    ; argument column byte
2746 00000052 = number_show__column equ globals___0+50
2747                    ; line_number = 186
2748                    ;  returns_nothing
2749            
2750                    ; # This routine will show the number obtained via {command} from
2751                    ; # the Shaft5 module starting a {row} and {column} on the LCD32
2752                    ; # module.  {label} is the label to be displayed.
2753            
2754                    ; line_number = 192
2755                    ;  local high byte
2756 0000004c = number_show__high equ globals___0+44
2757                    ; line_number = 193
2758                    ;  local low byte
2759 0000004d = number_show__low equ globals___0+45
2760            
2761                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
2762                    ; line_number = 195
2763                    ;  call rb2bus_address_put(rb2_shaft2_address)
2764                    ;info   195, 132
2765 0084 3005          movlw   5
2766 0085 20ca          call    rb2bus_address_put
2767                    ; line_number = 196
2768                    ;  call rb2bus_byte_put(command)
2769                    ;info   196, 134
2770 0086 084f          movf    number_show__command,w
2771 0087 23da          call    rb2bus_byte_put
2772                    ; line_number = 197
2773                    ;  high := rb2bus_byte_get()
2774                    ;info   197, 136
2775 0088 23b8          call    rb2bus_byte_get
2776 0089 00cc          movwf   number_show__high
2777                    ; line_number = 198
2778                    ;  low := rb2bus_byte_get()
2779                    ;info   198, 138
2780 008a 23b8          call    rb2bus_byte_get
2781 008b 00cd          movwf   number_show__low
2782            
2783                    ; line_number = 200
2784                    ;  call rb2bus_address_put(rb2_lcd32_address + lcd)
2785                    ;info   200, 140
2786 008c 3020          movlw   32
2787 008d 0750          addwf   number_show__lcd,w
2788 008e 20ca          call    rb2bus_address_put
2789                    ; line_number = 201
2790                    ;  call rb2bus_byte_put(rb2_lcd32_row_set | row)
2791                    ;info   201, 143
2792 008f 3004          movlw   4
2793 0090 0451          iorwf   number_show__row,w
2794 0091 23da          call    rb2bus_byte_put
2795                    ; line_number = 202
2796                    ;  call rb2bus_byte_put(rb2_lcd32_column_set | column)
2797                    ;info   202, 146
2798 0092 3010          movlw   16
2799 0093 0452          iorwf   number_show__column,w
2800 0094 23da          call    rb2bus_byte_put
2801                    ; line_number = 203
2802                    ;  call rb2bus_byte_put(label)
2803                    ;info   203, 149
2804 0095 084e          movf    number_show__label,w
2805 0096 23da          call    rb2bus_byte_put
2806                    ; line_number = 204
2807                    ;  call rb2bus_byte_put(':')
2808                    ;info   204, 151
2809 0097 303a          movlw   58
2810 0098 23da          call    rb2bus_byte_put
2811                    ; line_number = 205
2812                    ;  if high@7 start
2813                    ;info   205, 153
2814 0000004c = number_show__select__1___byte equ number_show__high
2815 00000007 = number_show__select__1___bit equ 7
2816                    ; =>bit_code_emit@symbol(): sym=number_show__select__1
2817                    ; No 1TEST: true.size=7 false.size=1
2818                    ; No 2TEST: true.size=7 false.size=1
2819                    ; 2GOTO: Single test with two GOTO's
2820 0099 1fcc          btfss   number_show__select__1___byte, number_show__select__1___bit
2821 009a 28a3          goto    number_show__2
2822                    ; # Negative number:
2823                    ; line_number = 207
2824                    ;  low := low ^ 0xff
2825                    ;info   207, 155
2826 009b 09cd          comf    number_show__low,f
2827                    ; line_number = 208
2828                    ;  high := high ^ 0xff
2829                    ;info   208, 156
2830 009c 09cc          comf    number_show__high,f
2831                    ; line_number = 209
2832                    ;  low := low + 1
2833                    ;info   209, 157
2834 009d 0acd          incf    number_show__low,f
2835                    ; line_number = 210
2836                    ;  if low = 0 start
2837                    ;info   210, 158
2838                    ; Left minus Right
2839 009e 084d          movf    number_show__low,w
2840                    ; =>bit_code_emit@symbol(): sym=__z
2841                    ; 1TEST: Single test with code in skip slot
2842 009f 1903          btfsc   __z___byte, __z___bit
2843                    ; line_number = 211
2844                    ; high := high + 1
2845                    ;info   211, 160
2846 00a0 0acc          incf    number_show__high,f
2847                    ; Recombine size1 = 0 || size2 = 0
2848                    ; line_number = 210
2849                    ;  if low = 0 done
2850                    ; line_number = 212
2851                    ; call rb2bus_byte_put('-')
2852                    ;info   212, 161
2853 00a1 302d          movlw   45
2854 00a2 28a4          goto    number_show__3
2855                    ; 2GOTO: Starting code 2
2856   00a3 :   number_show__2:
2857                    ; # Positive number
2858                    ; line_number = 215
2859                    ;  call rb2bus_byte_put('+')
2860                    ;info   215, 163
2861 00a3 302b          movlw   43
2862   00a4 :   number_show__3:
2863                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
2864                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
2865                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
2866 00a4 23da          call    rb2bus_byte_put
2867                    ; line_number = 205
2868                    ;  if high@7 done
2869                    ; line_number = 216
2870                    ; call rb2bus_hex_put(high)
2871                    ;info   216, 165
2872 00a5 084c          movf    number_show__high,w
2873 00a6 20c0          call    rb2bus_hex_put
2874                    ; line_number = 217
2875                    ;  call rb2bus_hex_put(low)
2876                    ;info   217, 167
2877 00a7 084d          movf    number_show__low,w
2878 00a8 20c0          call    rb2bus_hex_put
2879            
2880            
2881                    ; delay after procedure statements=non-uniform
2882                    ; Implied return
2883 00a9 3400          retlw   0
2884            
2885            
2886            
2887            
2888                    ; line_number = 220
2889                    ; string hex = "0123456789abcdef" start
2890                    ; hex = '0123456789abcdef'
2891   00aa :   hex:
2892                    ; Temporarily save index into FSR
2893 00aa 0084          movwf   __fsr
2894                    ; Initialize PCLATH to point to this code page
2895 00ab 3000          movlw   hex___base>>8
2896 00ac 008a          movwf   __pclath
2897                    ; Restore index from FSR
2898 00ad 0804          movf    __fsr,w
2899 00ae 3eb0          addlw   hex___base
2900                    ; Index to the correct return value
2901 00af 0082          movwf   __pcl
2902                    ; page_group 16
2903   00b0 :   hex___base:
2904 00b0 3430          retlw   48
2905 00b1 3431          retlw   49
2906 00b2 3432          retlw   50
2907 00b3 3433          retlw   51
2908 00b4 3434          retlw   52
2909 00b5 3435          retlw   53
2910 00b6 3436          retlw   54
2911 00b7 3437          retlw   55
2912 00b8 3438          retlw   56
2913 00b9 3439          retlw   57
2914 00ba 3461          retlw   97
2915 00bb 3462          retlw   98
2916 00bc 3463          retlw   99
2917 00bd 3464          retlw   100
2918 00be 3465          retlw   101
2919 00bf 3466          retlw   102
2920                    ; line_number = 220
2921                    ; string hex = "0123456789abcdef" start
2922            
2923                    ; line_number = 222
2924                    ;info   222, 192
2925                    ; procedure rb2bus_hex_put
2926   00c0 :   rb2bus_hex_put:
2927                    ; Last argument is sitting in W; save into argument variable
2928 00c0 00d3          movwf   rb2bus_hex_put__data
2929                    ; delay=4294967295
2930                    ; line_number = 223
2931                    ; argument data byte
2932 00000053 = rb2bus_hex_put__data equ globals___0+51
2933                    ; line_number = 224
2934                    ;  returns_nothing
2935            
2936                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
2937                    ; line_number = 226
2938                    ;  call rb2bus_byte_put(hex[data >> 4])
2939                    ;info   226, 193
2940 00000058 = rb2bus_hex_put__1 equ globals___0+56
2941 00c1 0e53          swapf   rb2bus_hex_put__data,w
2942 00c2 390f          andlw   15
2943 00c3 20aa          call    hex
2944 00c4 23da          call    rb2bus_byte_put
2945                    ; line_number = 227
2946                    ;  call rb2bus_byte_put(hex[data & 0xf])
2947                    ;info   227, 197
2948 00c5 300f          movlw   15
2949 00c6 0553          andwf   rb2bus_hex_put__data,w
2950 00c7 20aa          call    hex
2951 00c8 23da          call    rb2bus_byte_put
2952            
2953            
2954                    ; delay after procedure statements=non-uniform
2955                    ; Implied return
2956 00c9 3400          retlw   0
2957            
2958            
2959            
2960            
2961                    ; line_number = 230
2962                    ;info   230, 202
2963                    ; procedure rb2bus_address_put
2964   00ca :   rb2bus_address_put:
2965                    ; Last argument is sitting in W; save into argument variable
2966 00ca 00d5          movwf   rb2bus_address_put__address
2967                    ; delay=4294967295
2968                    ; line_number = 231
2969                    ; argument address byte
2970 00000055 = rb2bus_address_put__address equ globals___0+53
2971                    ; line_number = 232
2972                    ;  returns_nothing
2973            
2974                    ; # This procedure will select the module that matches {address}.
2975            
2976                    ; line_number = 236
2977                    ;  local result byte
2978 00000054 = rb2bus_address_put__result equ globals___0+52
2979            
2980                    ; # Wait until {_txreg} is ready for a value:
2981                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
2982                    ; line_number = 239
2983                    ;  while !_txif start
2984   00cb :   rb2bus_address_put__1:
2985                    ;info   239, 203
2986                    ; =>bit_code_emit@symbol(): sym=_txif
2987                    ; No 1TEST: true.size=0 false.size=2
2988                    ; No 2TEST: true.size=0 false.size=2
2989                    ; 1GOTO: Single test with GOTO
2990 00cb 1a0c          btfsc   _txif___byte, _txif___bit
2991 00cc 28cf          goto    rb2bus_address_put__2
2992                    ; line_number = 240
2993                    ; call wait()
2994                    ;info   240, 205
2995 00cd 2082          call    wait
2996            
2997 00ce 28cb          goto    rb2bus_address_put__1
2998   00cf :   rb2bus_address_put__2:
2999                    ; Recombine size1 = 0 || size2 = 0
3000                    ; line_number = 239
3001                    ;  while !_txif done
3002                    ; # Ship the address select byte:
3003                    ; line_number = 243
3004                    ;  _adden := _false
3005                    ;info   243, 207
3006 00cf 1198          bcf     _adden___byte, _adden___bit
3007                    ; line_number = 244
3008                    ;  _tx9d := _true
3009                    ;info   244, 208
3010 00d0 1683          bsf     __rp0___byte, __rp0___bit
3011 00d1 1418          bsf     _tx9d___byte, _tx9d___bit
3012                    ; line_number = 245
3013                    ;  _txreg := address
3014                    ;info   245, 210
3015 00d2 1283          bcf     __rp0___byte, __rp0___bit
3016 00d3 0855          movf    rb2bus_address_put__address,w
3017 00d4 0099          movwf   _txreg
3018            
3019                    ; line_number = 247
3020                    ;  loop_exactly 2 start
3021                    ;info   247, 213
3022 00000059 = rb2bus_address_put__3 equ globals___0+57
3023 00d5 3002          movlw   2
3024 00d6 00d9          movwf   rb2bus_address_put__3
3025   00d7 :   rb2bus_address_put__4:
3026                    ; line_number = 248
3027                    ; while !_rcif start
3028   00d7 :   rb2bus_address_put__5:
3029                    ;info   248, 215
3030                    ; =>bit_code_emit@symbol(): sym=_rcif
3031                    ; 1TEST: Single test with code in skip slot
3032 00d7 1e8c          btfss   _rcif___byte, _rcif___bit
3033                    ; line_number = 249
3034                    ; do_nothing
3035                    ;info   249, 216
3036 00d8 28d7          goto    rb2bus_address_put__5
3037                    ; Recombine size1 = 0 || size2 = 0
3038                    ; line_number = 248
3039                    ; while !_rcif done
3040                    ; line_number = 250
3041                    ; result := _rcreg
3042                    ;info   250, 217
3043 00d9 081a          movf    _rcreg,w
3044 00da 00d4          movwf   rb2bus_address_put__result
3045                    ; line_number = 251
3046                    ;  if _oerr start
3047                    ;info   251, 219
3048                    ; =>bit_code_emit@symbol(): sym=_oerr
3049                    ; 1TEST: Single test with code in skip slot
3050 00db 1898          btfsc   _oerr___byte, _oerr___bit
3051                    ; line_number = 252
3052                    ; _cren := _false
3053                    ;info   252, 220
3054 00dc 1218          bcf     _cren___byte, _cren___bit
3055                    ; Recombine size1 = 0 || size2 = 0
3056                    ; line_number = 251
3057                    ;  if _oerr done
3058                    ; line_number = 253
3059                    ; if _ferr start
3060                    ;info   253, 221
3061                    ; =>bit_code_emit@symbol(): sym=_ferr
3062                    ; 1TEST: Single test with code in skip slot
3063 00dd 1918          btfsc   _ferr___byte, _ferr___bit
3064                    ; line_number = 254
3065                    ; _cren := _false
3066                    ;info   254, 222
3067 00de 1218          bcf     _cren___byte, _cren___bit
3068                    ; Recombine size1 = 0 || size2 = 0
3069                    ; line_number = 253
3070                    ; if _ferr done
3071                    ; line_number = 255
3072                    ; _cren := _true
3073                    ;info   255, 223
3074 00df 1618          bsf     _cren___byte, _cren___bit
3075            
3076            
3077                    ; line_number = 247
3078                    ;  loop_exactly 2 wrap-up
3079 00e0 0bd9          decfsz  rb2bus_address_put__3,f
3080 00e1 28d7          goto    rb2bus_address_put__4
3081                    ; line_number = 247
3082                    ;  loop_exactly 2 done
3083                    ; delay after procedure statements=non-uniform
3084                    ; Implied return
3085 00e2 3400          retlw   0
3086            
3087            
3088            
3089            
3090                    ; line_number = 258
3091                    ;info   258, 227
3092                    ; procedure delay_ms
3093   00e3 :   delay_ms:
3094                    ; Last argument is sitting in W; save into argument variable
3095 00e3 00d6          movwf   delay_ms__ms
3096                    ; delay=4294967295
3097                    ; line_number = 259
3098                    ; argument ms byte
3099 00000056 = delay_ms__ms equ globals___0+54
3100                    ; line_number = 260
3101                    ;  returns_nothing
3102            
3103                    ; # This procedure will delay {ms} milliseconds.
3104            
3105                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
3106                    ; line_number = 264
3107                    ;  loop_exactly ms start
3108                    ;info   264, 228
3109 0000005a = delay_ms__1 equ globals___0+58
3110 00e4 0856          movf    delay_ms__ms,w
3111 00e5 00da          movwf   delay_ms__1
3112   00e6 :   delay_ms__2:
3113                    ; line_number = 265
3114                    ; loop_exactly 100 start
3115                    ;info   265, 230
3116 0000005b = delay_ms__3 equ globals___0+59
3117 00e6 3064          movlw   100
3118 00e7 00db          movwf   delay_ms__3
3119   00e8 :   delay_ms__4:
3120                    ; line_number = 266
3121                    ; delay 10*microsecond start
3122                    ;info   266, 232
3123                    ; Delay expression evaluates to 40
3124                    ; line_number = 267
3125                    ; do_nothing
3126                    ;info   267, 232
3127            
3128            
3129                    ; Delay 40 cycles
3130                    ; Delay loop takes 10 * 4 = 40 cycles
3131 00e8 300a          movlw   10
3132   00e9 :   delay_ms__5:
3133 00e9 3eff          addlw   255
3134 00ea 1d03          btfss   __z___byte, __z___bit
3135 00eb 28e9          goto    delay_ms__5
3136                    ; line_number = 266
3137                    ; delay 10*microsecond done
3138                    ; line_number = 265
3139                    ; loop_exactly 100 wrap-up
3140 00ec 0bdb          decfsz  delay_ms__3,f
3141 00ed 28e8          goto    delay_ms__4
3142                    ; line_number = 265
3143                    ; loop_exactly 100 done
3144                    ; line_number = 264
3145                    ;  loop_exactly ms wrap-up
3146 00ee 0bda          decfsz  delay_ms__1,f
3147 00ef 28e6          goto    delay_ms__2
3148                    ; line_number = 264
3149                    ;  loop_exactly ms done
3150                    ; delay after procedure statements=non-uniform
3151                    ; Implied return
3152 00f0 3400          retlw   0
3153            
3154            
3155            
3156            
3157                    ; line_number = 270
3158                    ; string id = "\16,0,28,3,3,14\Controller28-D\7\Gramson" start
3159                    ; id = '\16,0,28,3,3,14\Controller28-D\7\Gramson'
3160   00f1 :   id:
3161                    ; Temporarily save index into FSR
3162 00f1 0084          movwf   __fsr
3163                    ; Initialize PCLATH to point to this code page
3164 00f2 3001          movlw   id___base>>8
3165 00f3 008a          movwf   __pclath
3166                    ; Restore index from FSR
3167 00f4 0804          movf    __fsr,w
3168 00f5 3e00          addlw   id___base
3169                    ; Index to the correct return value
3170 00f6 0082          movwf   __pcl
3171                    ; page_group 28
3172                    ; Add 9 NOP's until start of new page 
3173 00f7 0000          nop     
3174 00f8 0000          nop     
3175 00f9 0000          nop     
3176 00fa 0000          nop     
3177 00fb 0000          nop     
3178 00fc 0000          nop     
3179 00fd 0000          nop     
3180 00fe 0000          nop     
3181 00ff 0000          nop     
3182   0100 :   id___base:
3183 0100 3410          retlw   16
3184 0101 3400          retlw   0
3185 0102 341c          retlw   28
3186 0103 3403          retlw   3
3187 0104 3403          retlw   3
3188 0105 340e          retlw   14
3189 0106 3443          retlw   67
3190 0107 346f          retlw   111
3191 0108 346e          retlw   110
3192 0109 3474          retlw   116
3193 010a 3472          retlw   114
3194 010b 346f          retlw   111
3195 010c 346c          retlw   108
3196 010d 346c          retlw   108
3197 010e 3465          retlw   101
3198 010f 3472          retlw   114
3199 0110 3432          retlw   50
3200 0111 3438          retlw   56
3201 0112 342d          retlw   45
3202 0113 3444          retlw   68
3203 0114 3407          retlw   7
3204 0115 3447          retlw   71
3205 0116 3472          retlw   114
3206 0117 3461          retlw   97
3207 0118 346d          retlw   109
3208 0119 3473          retlw   115
3209 011a 346f          retlw   111
3210 011b 346e          retlw   110
3211                    ; line_number = 270
3212                    ; string id = "\16,0,28,3,3,14\Controller28-D\7\Gramson" start
3213            
3214            
3215                    ; line_number = 274
3216                    ;info   274, 284
3217                    ; procedure program2
3218   011c :   program2:
3219                    ; arguments_none
3220                    ; line_number = 276
3221                    ;  returns_nothing
3222            
3223                    ; # This is a quick little program to copy the contents of
3224                    ; # A/D channel 0 on the IO8 to the motor 0 speed on the
3225                    ; # MiniMotor2.
3226            
3227                    ; # Initialize the LCD32:
3228            
3229                    ; #local actual_left signed16
3230                    ; #local actual_right signed16
3231                    ; line_number = 286
3232                    ;  local bearing_absolute signed16
3233 000000a0 = program2__bearing_absolute equ globals___1
3234                    ; line_number = 287
3235                    ;  local bearing_gain signed16
3236 000000a2 = program2__bearing_gain equ globals___1+2
3237                    ; line_number = 288
3238                    ;  local bearing signed16
3239 000000a4 = program2__bearing equ globals___1+4
3240                    ; line_number = 289
3241                    ;  local count_current byte
3242 000000a6 = program2__count_current equ globals___1+6
3243                    ; line_number = 290
3244                    ;  local count_previous byte
3245 000000a7 = program2__count_previous equ globals___1+7
3246                    ; line_number = 291
3247                    ;  local computed_left signed16
3248 000000a8 = program2__computed_left equ globals___1+8
3249                    ; line_number = 292
3250                    ;  local computed_right signed16
3251 000000aa = program2__computed_right equ globals___1+10
3252                    ; line_number = 293
3253                    ;  local distance signed16
3254 000000ac = program2__distance equ globals___1+12
3255                    ; line_number = 294
3256                    ;  local distance_gain signed16
3257 000000ae = program2__distance_gain equ globals___1+14
3258                    ; line_number = 295
3259                    ;  local distance_slow_down signed16
3260 000000b0 = program2__distance_slow_down equ globals___1+16
3261                    ; line_number = 296
3262                    ;  local distance_stop signed16
3263 000000b2 = program2__distance_stop equ globals___1+18
3264                    ; line_number = 297
3265                    ;  local forward signed16
3266 000000b4 = program2__forward equ globals___1+20
3267                    ; line_number = 298
3268                    ;  local forward_fast signed16
3269 000000b6 = program2__forward_fast equ globals___1+22
3270                    ; line_number = 299
3271                    ;  local limit_positive signed16
3272 000000b8 = program2__limit_positive equ globals___1+24
3273                    ; line_number = 300
3274                    ;  local limit_negative signed16
3275 000000ba = program2__limit_negative equ globals___1+26
3276                    ; line_number = 301
3277                    ;  local motor_left byte
3278 000000bc = program2__motor_left equ globals___1+28
3279                    ; line_number = 302
3280                    ;  local motor_right byte
3281 000000bd = program2__motor_right equ globals___1+29
3282                    ; line_number = 303
3283                    ;  local motor_adjust signed16
3284 000000be = program2__motor_adjust equ globals___1+30
3285                    ; line_number = 304
3286                    ;  local turn_limit signed16
3287 000000c0 = program2__turn_limit equ globals___1+32
3288                    ; line_number = 305
3289                    ;  local zero signed16 
3290 000000c2 = program2__zero equ globals___1+34
3291                    ; line_number = 306
3292                    ;  local x signed16
3293 000000c4 = program2__x equ globals___1+36
3294                    ; line_number = 307
3295                    ;  local y signed16
3296 000000c6 = program2__y equ globals___1+38
3297                    ; line_number = 308
3298                    ;  local five signed16
3299 000000c8 = program2__five equ globals___1+40
3300                    ; line_number = 309
3301                    ;  local corner byte
3302 000000ca = program2__corner equ globals___1+42
3303                    ; line_number = 310
3304                    ;  local corner_previous byte
3305 000000cb = program2__corner_previous equ globals___1+43
3306                    ; line_number = 311
3307                    ;  local x_high byte
3308 000000cc = program2__x_high equ globals___1+44
3309                    ; line_number = 312
3310                    ;  local y_high byte
3311 000000cd = program2__y_high equ globals___1+45
3312                    ; line_number = 313
3313                    ;  local degree_360 signed16
3314 000000ce = program2__degree_360 equ globals___1+46
3315                    ; line_number = 314
3316                    ;  local degree_180 signed16
3317 000000d0 = program2__degree_180 equ globals___1+48
3318                    ; line_number = 315
3319                    ;  local minus_degree_180 signed16
3320 000000d2 = program2__minus_degree_180 equ globals___1+50
3321            
3322                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
3323                    ; line_number = 317
3324                    ;  _gie := _false
3325                    ;info   317, 284
3326 011c 138b          bcf     _gie___byte, _gie___bit
3327            
3328                    ; line_number = 319
3329                    ;  call rb2bus_address_put(rb2_lcd32_address)
3330                    ;info   319, 285
3331 011d 3020          movlw   32
3332 011e 1283          bcf     __rp0___byte, __rp0___bit
3333 011f 20ca          call    rb2bus_address_put
3334                    ; line_number = 320
3335                    ;  call rb2bus_byte_put(rb2_lcd32_form_feed)
3336                    ;info   320, 288
3337 0120 300c          movlw   12
3338 0121 23da          call    rb2bus_byte_put
3339            
3340                    ; line_number = 322
3341                    ;  limit_positive := _signed16_from_byte(127)
3342                    ;info   322, 290
3343 0122 307f          movlw   127
3344 0123 24ea          call    _signed16_from_byte
3345 0124 301f          movlw   _signed16_from_byte__0return>>1
3346 0125 2438          call    _signed16_pointer_load
3347 0126 305c          movlw   program2__limit_positive>>1
3348 0127 24c3          call    _signed16_pointer_store
3349                    ; line_number = 323
3350                    ;  limit_negative := -limit_positive
3351                    ;info   323, 296
3352 0128 305c          movlw   program2__limit_positive>>1
3353 0129 2438          call    _signed16_pointer_load
3354 012a 24d0          call    _signed16_negate
3355 012b 305d          movlw   program2__limit_negative>>1
3356 012c 24c3          call    _signed16_pointer_store
3357                    ; line_number = 324
3358                    ;  bearing_gain := _signed16_from_byte(0x10)
3359                    ;info   324, 301
3360 012d 3010          movlw   16
3361 012e 24ea          call    _signed16_from_byte
3362 012f 301f          movlw   _signed16_from_byte__0return>>1
3363 0130 2438          call    _signed16_pointer_load
3364 0131 3051          movlw   program2__bearing_gain>>1
3365 0132 24c3          call    _signed16_pointer_store
3366                    ; line_number = 325
3367                    ;  zero := _signed16_from_byte(0)
3368                    ;info   325, 307
3369 0133 3000          movlw   0
3370 0134 24ea          call    _signed16_from_byte
3371 0135 301f          movlw   _signed16_from_byte__0return>>1
3372 0136 2438          call    _signed16_pointer_load
3373 0137 3061          movlw   program2__zero>>1
3374 0138 24c3          call    _signed16_pointer_store
3375                    ; line_number = 326
3376                    ;  turn_limit := _signed16_from_byte(20)
3377                    ;info   326, 313
3378 0139 3014          movlw   20
3379 013a 24ea          call    _signed16_from_byte
3380 013b 301f          movlw   _signed16_from_byte__0return>>1
3381 013c 2438          call    _signed16_pointer_load
3382 013d 3060          movlw   program2__turn_limit>>1
3383 013e 24c3          call    _signed16_pointer_store
3384                    ; line_number = 327
3385                    ;  motor_adjust := _signed16_from_byte(10)
3386                    ;info   327, 319
3387 013f 300a          movlw   10
3388 0140 24ea          call    _signed16_from_byte
3389 0141 301f          movlw   _signed16_from_byte__0return>>1
3390 0142 2438          call    _signed16_pointer_load
3391 0143 305f          movlw   program2__motor_adjust>>1
3392 0144 24c3          call    _signed16_pointer_store
3393            
3394                    ; #actual_left := zero
3395                    ; #actual_right := zero
3396            
3397                    ; line_number = 332
3398                    ;  degree_360 := _signed16_from_byte2(1, 104)	# 360 = 256 + 104
3399                    ;info   332, 325
3400 0145 3001          movlw   1
3401 0146 00c0          movwf   _signed16_from_byte2__byte1
3402 0147 3068          movlw   104
3403 0148 24f2          call    _signed16_from_byte2
3404 0149 3021          movlw   _signed16_from_byte2__0return>>1
3405 014a 2438          call    _signed16_pointer_load
3406 014b 3067          movlw   program2__degree_360>>1
3407 014c 24c3          call    _signed16_pointer_store
3408                    ; line_number = 333
3409                    ;  degree_180 := _signed16_from_byte2(0, 180)	# 180
3410                    ;info   333, 333
3411 014d 01c0          clrf    _signed16_from_byte2__byte1
3412 014e 30b4          movlw   180
3413 014f 24f2          call    _signed16_from_byte2
3414 0150 3021          movlw   _signed16_from_byte2__0return>>1
3415 0151 2438          call    _signed16_pointer_load
3416 0152 3068          movlw   program2__degree_180>>1
3417 0153 24c3          call    _signed16_pointer_store
3418                    ; line_number = 334
3419                    ;  minus_degree_180 := -degree_180
3420                    ;info   334, 340
3421 0154 3068          movlw   program2__degree_180>>1
3422 0155 2438          call    _signed16_pointer_load
3423 0156 24d0          call    _signed16_negate
3424 0157 3069          movlw   program2__minus_degree_180>>1
3425 0158 24c3          call    _signed16_pointer_store
3426            
3427                    ; line_number = 336
3428                    ;  distance_slow_down := _signed16_from_byte(50)
3429                    ;info   336, 345
3430 0159 3032          movlw   50
3431 015a 24ea          call    _signed16_from_byte
3432 015b 301f          movlw   _signed16_from_byte__0return>>1
3433 015c 2438          call    _signed16_pointer_load
3434 015d 3058          movlw   program2__distance_slow_down>>1
3435 015e 24c3          call    _signed16_pointer_store
3436                    ; line_number = 337
3437                    ;  five := _signed16_from_byte(2)
3438                    ;info   337, 351
3439 015f 3002          movlw   2
3440 0160 24ea          call    _signed16_from_byte
3441 0161 301f          movlw   _signed16_from_byte__0return>>1
3442 0162 2438          call    _signed16_pointer_load
3443 0163 3064          movlw   program2__five>>1
3444 0164 24c3          call    _signed16_pointer_store
3445                    ; line_number = 338
3446                    ;  distance_stop := distance_slow_down / five
3447                    ;info   338, 357
3448 0165 3058          movlw   program2__distance_slow_down>>1
3449 0166 2438          call    _signed16_pointer_load
3450 0167 3064          movlw   program2__five>>1
3451 0168 2454          call    _signed16_pointer_divide
3452 0169 3059          movlw   program2__distance_stop>>1
3453 016a 24c3          call    _signed16_pointer_store
3454                    ; line_number = 339
3455                    ;  forward_fast := _signed16_from_byte(100)
3456                    ;info   339, 363
3457 016b 3064          movlw   100
3458 016c 24ea          call    _signed16_from_byte
3459 016d 301f          movlw   _signed16_from_byte__0return>>1
3460 016e 2438          call    _signed16_pointer_load
3461 016f 305b          movlw   program2__forward_fast>>1
3462 0170 24c3          call    _signed16_pointer_store
3463                    ; line_number = 340
3464                    ;  distance_gain := forward_fast / distance_slow_down
3465                    ;info   340, 369
3466 0171 305b          movlw   program2__forward_fast>>1
3467 0172 2438          call    _signed16_pointer_load
3468 0173 3058          movlw   program2__distance_slow_down>>1
3469 0174 2454          call    _signed16_pointer_divide
3470 0175 3057          movlw   program2__distance_gain>>1
3471 0176 24c3          call    _signed16_pointer_store
3472            
3473                    ; line_number = 342
3474                    ;  corner_previous := 0xff
3475                    ;info   342, 375
3476 0177 30ff          movlw   255
3477 0178 1683          bsf     __rp0___byte, __rp0___bit
3478 0179 00cb          movwf   program2__corner_previous
3479                    ; line_number = 343
3480                    ;  corner := 0
3481                    ;info   343, 378
3482 017a 01ca          clrf    program2__corner
3483                    ; line_number = 344
3484                    ;  call rb2bus_address_put(rb2_shaft2_address)
3485                    ;info   344, 379
3486 017b 3005          movlw   5
3487 017c 1283          bcf     __rp0___byte, __rp0___bit
3488 017d 20ca          call    rb2bus_address_put
3489                    ; line_number = 345
3490                    ;  call rb2bus_byte3_put(rb2_shaft2_target_x_set, 0, 0)
3491                    ;info   345, 382
3492 017e 3024          movlw   36
3493 017f 1683          bsf     __rp0___byte, __rp0___bit
3494 0180 00d6          movwf   rb2bus_byte3_put__command
3495 0181 01d7          clrf    rb2bus_byte3_put__high
3496 0182 3000          movlw   0
3497 0183 22ad          call    rb2bus_byte3_put
3498                    ; line_number = 346
3499                    ;  call rb2bus_byte3_put(rb2_shaft2_target_y_set, 1, 0)
3500                    ;info   346, 388
3501 0184 3025          movlw   37
3502 0185 00d6          movwf   rb2bus_byte3_put__command
3503 0186 3001          movlw   1
3504 0187 00d7          movwf   rb2bus_byte3_put__high
3505 0188 3000          movlw   0
3506 0189 22ad          call    rb2bus_byte3_put
3507            
3508                    ; #count_previous := 0
3509                    ; line_number = 349
3510                    ;  loop_forever start
3511   018a :   program2__1:
3512 018a 1283          bcf     __rp0___byte, __rp0___bit
3513                    ; line_number = 350
3514                    ; call rb2bus_address_put(rb2_shaft2_address)
3515                    ;info   350, 395
3516 018b 3005          movlw   5
3517 018c 20ca          call    rb2bus_address_put
3518            
3519                    ; line_number = 352
3520                    ;  if corner_previous != corner start
3521                    ;info   352, 397
3522                    ; Left minus Right
3523 018d 1683          bsf     __rp0___byte, __rp0___bit
3524 018e 084a          movf    program2__corner,w
3525 018f 024b          subwf   program2__corner_previous,w
3526                    ; =>bit_code_emit@symbol(): sym=__z
3527                    ; No 1TEST: true.size=0 false.size=37
3528                    ; No 2TEST: true.size=0 false.size=37
3529                    ; 1GOTO: Single test with GOTO
3530 0190 1903          btfsc   __z___byte, __z___bit
3531 0191 29b7          goto    program2__8
3532                    ; line_number = 353
3533                    ; switch corner & 3 start
3534                    ;info   353, 402
3535                    ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
3536 0192 3001          movlw   program2__6>>8
3537 0193 008a          movwf   __pclath
3538 0194 3003          movlw   3
3539 0195 054a          andwf   program2__corner,w
3540                    ; switch after expression:(data:01=uu=>01 code:XX=cc=>XX)
3541 0196 3e98          addlw   program2__6
3542 0197 0082          movwf   __pcl
3543                    ; page_group 4
3544   0198 :   program2__6:
3545 0198 299c          goto    program2__2
3546 0199 29a0          goto    program2__3
3547 019a 29a5          goto    program2__4
3548 019b 29a9          goto    program2__5
3549                    ; line_number = 354
3550                    ; case 0
3551   019c :   program2__2:
3552                    ; line_number = 355
3553                    ; x_high := 1
3554                    ;info   355, 412
3555 019c 3001          movlw   1
3556 019d 00cc          movwf   program2__x_high
3557                    ; line_number = 356
3558                    ;  y_high := 0
3559                    ;info   356, 414
3560 019e 01cd          clrf    program2__y_high
3561 019f 29ab          goto    program2__7
3562                    ; line_number = 357
3563                    ; case 1
3564   01a0 :   program2__3:
3565                    ; line_number = 358
3566                    ; x_high := 1
3567                    ;info   358, 416
3568 01a0 3001          movlw   1
3569 01a1 00cc          movwf   program2__x_high
3570                    ; line_number = 359
3571                    ;  y_high := 1
3572                    ;info   359, 418
3573 01a2 3001          movlw   1
3574 01a3 00cd          movwf   program2__y_high
3575 01a4 29ab          goto    program2__7
3576                    ; line_number = 360
3577                    ; case 2
3578   01a5 :   program2__4:
3579                    ; line_number = 361
3580                    ; x_high := 0
3581                    ;info   361, 421
3582 01a5 01cc          clrf    program2__x_high
3583                    ; line_number = 362
3584                    ;  y_high := 1
3585                    ;info   362, 422
3586 01a6 3001          movlw   1
3587 01a7 00cd          movwf   program2__y_high
3588 01a8 29ab          goto    program2__7
3589                    ; line_number = 363
3590                    ; case 3
3591   01a9 :   program2__5:
3592                    ; line_number = 364
3593                    ; x_high := 0
3594                    ;info   364, 425
3595 01a9 01cc          clrf    program2__x_high
3596                    ; line_number = 365
3597                    ;  y_high := 0
3598                    ;info   365, 426
3599 01aa 01cd          clrf    program2__y_high
3600   01ab :   program2__7:
3601                    ; line_number = 353
3602                    ; switch corner & 3 done
3603                    ; line_number = 366
3604                    ; call rb2bus_byte3_put(rb2_shaft2_target_x_set, x_high, 0)
3605                    ;info   366, 427
3606 01ab 3024          movlw   36
3607 01ac 00d6          movwf   rb2bus_byte3_put__command
3608 01ad 084c          movf    program2__x_high,w
3609 01ae 00d7          movwf   rb2bus_byte3_put__high
3610 01af 3000          movlw   0
3611 01b0 22ad          call    rb2bus_byte3_put
3612                    ; line_number = 367
3613                    ;  call rb2bus_byte3_put(rb2_shaft2_target_y_set, y_high, 0)
3614                    ;info   367, 433
3615 01b1 3025          movlw   37
3616 01b2 00d6          movwf   rb2bus_byte3_put__command
3617 01b3 084d          movf    program2__y_high,w
3618 01b4 00d7          movwf   rb2bus_byte3_put__high
3619 01b5 3000          movlw   0
3620 01b6 22ad          call    rb2bus_byte3_put
3621            
3622   01b7 :   program2__8:
3623                    ; Recombine size1 = 0 || size2 = 0
3624                    ; line_number = 352
3625                    ;  if corner_previous != corner done
3626                    ; #count_current := count_previous
3627                    ; #while count_current = count_previous
3628                    ; #    call rb2bus_byte_put(rb2_shaft2_navigation_latch)
3629                    ; #    count_current :=
3630                    ; #      rb2bus_byte_put_get(rb2_shaft2_count_iteration_get)
3631                    ; #count_previous := count_current
3632            
3633                    ; line_number = 376
3634                    ;  call number_show('X', rb2_shaft2_x_get, 0, 0, 0)
3635                    ;info   376, 439
3636 01b7 3058          movlw   88
3637 01b8 1283          bcf     __rp0___byte, __rp0___bit
3638 01b9 00ce          movwf   number_show__label
3639 01ba 3010          movlw   16
3640 01bb 00cf          movwf   number_show__command
3641 01bc 01d0          clrf    number_show__lcd
3642 01bd 01d1          clrf    number_show__row
3643 01be 3000          movlw   0
3644 01bf 2083          call    number_show
3645                    ; line_number = 377
3646                    ;  call number_show('Y', rb2_shaft2_y_get, 0, 0, 8)
3647                    ;info   377, 448
3648 01c0 3059          movlw   89
3649 01c1 00ce          movwf   number_show__label
3650 01c2 3011          movlw   17
3651 01c3 00cf          movwf   number_show__command
3652 01c4 01d0          clrf    number_show__lcd
3653 01c5 01d1          clrf    number_show__row
3654 01c6 3008          movlw   8
3655 01c7 2083          call    number_show
3656                    ; line_number = 378
3657                    ;  call number_show('b', rb2_shaft2_target_bearing16_get, 0, 1, 0)
3658                    ;info   378, 456
3659 01c8 3062          movlw   98
3660 01c9 00ce          movwf   number_show__label
3661 01ca 3016          movlw   22
3662 01cb 00cf          movwf   number_show__command
3663 01cc 01d0          clrf    number_show__lcd
3664 01cd 3001          movlw   1
3665 01ce 00d1          movwf   number_show__row
3666 01cf 3000          movlw   0
3667 01d0 2083          call    number_show
3668                    ; line_number = 379
3669                    ;  call number_show('d', rb2_shaft2_target_distance_get, 0, 1, 8)
3670                    ;info   379, 465
3671 01d1 3064          movlw   100
3672 01d2 00ce          movwf   number_show__label
3673 01d3 3018          movlw   24
3674 01d4 00cf          movwf   number_show__command
3675 01d5 01d0          clrf    number_show__lcd
3676 01d6 3001          movlw   1
3677 01d7 00d1          movwf   number_show__row
3678 01d8 3008          movlw   8
3679 01d9 2083          call    number_show
3680            
3681                    ; line_number = 381
3682                    ;  call rb2bus_address_put(rb2_shaft2_address)
3683                    ;info   381, 474
3684 01da 3005          movlw   5
3685 01db 20ca          call    rb2bus_address_put
3686                    ; line_number = 382
3687                    ;  x := rb2bus_signed16_put_get(rb2_shaft2_x_get)
3688                    ;info   382, 476
3689 01dc 3010          movlw   16
3690 01dd 1683          bsf     __rp0___byte, __rp0___bit
3691 01de 2325          call    rb2bus_signed16_put_get
3692 01df 3076          movlw   rb2bus_signed16_put_get__0return>>1
3693 01e0 1283          bcf     __rp0___byte, __rp0___bit
3694 01e1 2438          call    _signed16_pointer_load
3695 01e2 3062          movlw   program2__x>>1
3696 01e3 24c3          call    _signed16_pointer_store
3697                    ; line_number = 383
3698                    ;  y := rb2bus_signed16_put_get(rb2_shaft2_y_get)
3699                    ;info   383, 484
3700 01e4 3011          movlw   17
3701 01e5 1683          bsf     __rp0___byte, __rp0___bit
3702 01e6 2325          call    rb2bus_signed16_put_get
3703 01e7 3076          movlw   rb2bus_signed16_put_get__0return>>1
3704 01e8 1283          bcf     __rp0___byte, __rp0___bit
3705 01e9 2438          call    _signed16_pointer_load
3706 01ea 3063          movlw   program2__y>>1
3707 01eb 24c3          call    _signed16_pointer_store
3708                    ; line_number = 384
3709                    ;  bearing := rb2bus_signed16_put_get(rb2_shaft2_target_bearing16_get)
3710                    ;info   384, 492
3711 01ec 3016          movlw   22
3712 01ed 1683          bsf     __rp0___byte, __rp0___bit
3713 01ee 2325          call    rb2bus_signed16_put_get
3714 01ef 3076          movlw   rb2bus_signed16_put_get__0return>>1
3715 01f0 1283          bcf     __rp0___byte, __rp0___bit
3716 01f1 2438          call    _signed16_pointer_load
3717 01f2 3052          movlw   program2__bearing>>1
3718 01f3 24c3          call    _signed16_pointer_store
3719                    ; line_number = 385
3720                    ;  distance := rb2bus_signed16_put_get(rb2_shaft2_target_distance_get)
3721                    ;info   385, 500
3722 01f4 3018          movlw   24
3723 01f5 1683          bsf     __rp0___byte, __rp0___bit
3724 01f6 2325          call    rb2bus_signed16_put_get
3725 01f7 3076          movlw   rb2bus_signed16_put_get__0return>>1
3726 01f8 1283          bcf     __rp0___byte, __rp0___bit
3727 01f9 2438          call    _signed16_pointer_load
3728 01fa 3056          movlw   program2__distance>>1
3729 01fb 24c3          call    _signed16_pointer_store
3730            
3731                    ; #if bearing < minus_degree_180
3732                    ; #    bearing := bearing + degree_360
3733                    ; #else_if bearing > degree_180
3734                    ; #    bearing := bearing - degree_360
3735            
3736                    ; line_number = 392
3737                    ;  bearing_absolute := bearing
3738                    ;info   392, 508
3739 01fc 3052          movlw   program2__bearing>>1
3740 01fd 2438          call    _signed16_pointer_load
3741 01fe 3050          movlw   program2__bearing_absolute>>1
3742 01ff 24c3          call    _signed16_pointer_store
3743                    ; line_number = 393
3744                    ;  if bearing < zero start
3745                    ;info   393, 512
3746 0200 3052          movlw   program2__bearing>>1
3747 0201 2438          call    _signed16_pointer_load
3748 0202 3061          movlw   program2__zero>>1
3749 0203 24b1          call    _signed16_pointer_subtract
3750 0204 2512          call    _signed16_less_than
3751                    ; =>bit_code_emit@symbol(): sym=__z
3752                    ; No 1TEST: true.size=5 false.size=0
3753                    ; No 2TEST: true.size=5 false.size=0
3754                    ; 1GOTO: Single test with GOTO
3755 0205 1d03          btfss   __z___byte, __z___bit
3756 0206 2a0c          goto    program2__9
3757                    ; line_number = 394
3758                    ; bearing_absolute := -bearing
3759                    ;info   394, 519
3760 0207 3052          movlw   program2__bearing>>1
3761 0208 2438          call    _signed16_pointer_load
3762 0209 24d0          call    _signed16_negate
3763 020a 3050          movlw   program2__bearing_absolute>>1
3764 020b 24c3          call    _signed16_pointer_store
3765                    ; Recombine size1 = 0 || size2 = 0
3766   020c :   program2__9:
3767                    ; line_number = 393
3768                    ;  if bearing < zero done
3769                    ; line_number = 395
3770                    ; if bearing_absolute < turn_limit start
3771                    ;info   395, 524
3772 020c 3050          movlw   program2__bearing_absolute>>1
3773 020d 2438          call    _signed16_pointer_load
3774 020e 3060          movlw   program2__turn_limit>>1
3775 020f 24b1          call    _signed16_pointer_subtract
3776 0210 2512          call    _signed16_less_than
3777                    ; =>bit_code_emit@symbol(): sym=__z
3778                    ; No 1TEST: true.size=38 false.size=4
3779                    ; No 2TEST: true.size=38 false.size=4
3780                    ; 2GOTO: Single test with two GOTO's
3781 0211 1d03          btfss   __z___byte, __z___bit
3782 0212 2a3a          goto    program2__14
3783                    ; #Let's move forward:
3784                    ; line_number = 397
3785                    ;  if distance < distance_slow_down start
3786                    ;info   397, 531
3787 0213 3056          movlw   program2__distance>>1
3788 0214 2438          call    _signed16_pointer_load
3789 0215 3058          movlw   program2__distance_slow_down>>1
3790 0216 24b1          call    _signed16_pointer_subtract
3791 0217 2512          call    _signed16_less_than
3792                    ; =>bit_code_emit@symbol(): sym=__z
3793                    ; No 1TEST: true.size=25 false.size=4
3794                    ; No 2TEST: true.size=25 false.size=4
3795                    ; 2GOTO: Single test with two GOTO's
3796 0218 1d03          btfss   __z___byte, __z___bit
3797 0219 2a34          goto    program2__12
3798                    ; line_number = 398
3799                    ; if distance < distance_stop start
3800                    ;info   398, 538
3801 021a 3056          movlw   program2__distance>>1
3802 021b 2438          call    _signed16_pointer_load
3803 021c 3059          movlw   program2__distance_stop>>1
3804 021d 24b1          call    _signed16_pointer_subtract
3805 021e 2512          call    _signed16_less_than
3806                    ; =>bit_code_emit@symbol(): sym=__z
3807                    ; No 1TEST: true.size=10 false.size=6
3808                    ; No 2TEST: true.size=10 false.size=6
3809                    ; 2GOTO: Single test with two GOTO's
3810 021f 1d03          btfss   __z___byte, __z___bit
3811 0220 2a2c          goto    program2__10
3812                    ; line_number = 399
3813                    ; forward := zero
3814                    ;info   399, 545
3815 0221 3061          movlw   program2__zero>>1
3816 0222 2438          call    _signed16_pointer_load
3817 0223 305a          movlw   program2__forward>>1
3818 0224 24c3          call    _signed16_pointer_store
3819                    ; line_number = 400
3820                    ;  bearing := zero
3821                    ;info   400, 549
3822 0225 3061          movlw   program2__zero>>1
3823 0226 2438          call    _signed16_pointer_load
3824 0227 3052          movlw   program2__bearing>>1
3825 0228 24c3          call    _signed16_pointer_store
3826                    ; line_number = 401
3827                    ;  corner := corner + 1
3828                    ;info   401, 553
3829 0229 1683          bsf     __rp0___byte, __rp0___bit
3830 022a 0aca          incf    program2__corner,f
3831 022b 2a32          goto    program2__11
3832                    ; 2GOTO: Starting code 2
3833   022c :   program2__10:
3834                    ; line_number = 403
3835                    ; forward := distance * distance_gain
3836                    ;info   403, 556
3837 022c 3056          movlw   program2__distance>>1
3838 022d 2438          call    _signed16_pointer_load
3839 022e 3057          movlw   program2__distance_gain>>1
3840 022f 2462          call    _signed16_pointer_multiply
3841 0230 305a          movlw   program2__forward>>1
3842 0231 24c3          call    _signed16_pointer_store
3843   0232 :   program2__11:
3844                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3845                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3846                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
3847 0232 1683          bsf     __rp0___byte, __rp0___bit
3848                    ; line_number = 398
3849                    ; if distance < distance_stop done
3850 0233 2a38          goto    program2__13
3851                    ; 2GOTO: Starting code 2
3852   0234 :   program2__12:
3853                    ; line_number = 405
3854                    ; forward := forward_fast
3855                    ;info   405, 564
3856 0234 305b          movlw   program2__forward_fast>>1
3857 0235 2438          call    _signed16_pointer_load
3858 0236 305a          movlw   program2__forward>>1
3859 0237 24c3          call    _signed16_pointer_store
3860   0238 :   program2__13:
3861                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3862                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3863                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
3864 0238 1683          bsf     __rp0___byte, __rp0___bit
3865                    ; line_number = 397
3866                    ;  if distance < distance_slow_down done
3867 0239 2a3e          goto    program2__15
3868                    ; 2GOTO: Starting code 2
3869   023a :   program2__14:
3870                    ; line_number = 407
3871                    ; forward := zero
3872                    ;info   407, 570
3873 023a 3061          movlw   program2__zero>>1
3874 023b 2438          call    _signed16_pointer_load
3875 023c 305a          movlw   program2__forward>>1
3876 023d 24c3          call    _signed16_pointer_store
3877   023e :   program2__15:
3878                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3879                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3880                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
3881 023e 1683          bsf     __rp0___byte, __rp0___bit
3882                    ; line_number = 395
3883                    ; if bearing_absolute < turn_limit done
3884                    ; line_number = 408
3885                    ; computed_right := bearing * bearing_gain
3886                    ;info   408, 575
3887 023f 3052          movlw   program2__bearing>>1
3888 0240 1283          bcf     __rp0___byte, __rp0___bit
3889 0241 2438          call    _signed16_pointer_load
3890 0242 3051          movlw   program2__bearing_gain>>1
3891 0243 2462          call    _signed16_pointer_multiply
3892 0244 3055          movlw   program2__computed_right>>1
3893 0245 24c3          call    _signed16_pointer_store
3894                    ; line_number = 409
3895                    ;  computed_left := -computed_right
3896                    ;info   409, 582
3897 0246 3055          movlw   program2__computed_right>>1
3898 0247 2438          call    _signed16_pointer_load
3899 0248 24d0          call    _signed16_negate
3900 0249 3054          movlw   program2__computed_left>>1
3901 024a 24c3          call    _signed16_pointer_store
3902                    ; line_number = 410
3903                    ;  computed_left := computed_left + forward
3904                    ;info   410, 587
3905 024b 3054          movlw   program2__computed_left>>1
3906 024c 2438          call    _signed16_pointer_load
3907 024d 305a          movlw   program2__forward>>1
3908 024e 2445          call    _signed16_pointer_add
3909 024f 3054          movlw   program2__computed_left>>1
3910 0250 24c3          call    _signed16_pointer_store
3911                    ; line_number = 411
3912                    ;  computed_right := computed_right + forward
3913                    ;info   411, 593
3914 0251 3055          movlw   program2__computed_right>>1
3915 0252 2438          call    _signed16_pointer_load
3916 0253 305a          movlw   program2__forward>>1
3917 0254 2445          call    _signed16_pointer_add
3918 0255 3055          movlw   program2__computed_right>>1
3919 0256 24c3          call    _signed16_pointer_store
3920            
3921                    ; #call signed16_show('L', computed_left, 0, 0, 0)
3922                    ; #call signed16_show('R', computed_right, 0, 0, 8)
3923                    ; #call signed16_show('F', forward, 0, 1, 8)
3924            
3925                    ; # Limit the number:
3926                    ; line_number = 418
3927                    ;  if computed_left > limit_positive start
3928                    ;info   418, 599
3929 0257 3054          movlw   program2__computed_left>>1
3930 0258 2438          call    _signed16_pointer_load
3931 0259 305c          movlw   program2__limit_positive>>1
3932 025a 24b1          call    _signed16_pointer_subtract
3933 025b 251d          call    _signed16_greater_than
3934                    ; =>bit_code_emit@symbol(): sym=__z
3935                    ; No 1TEST: true.size=4 false.size=11
3936                    ; No 2TEST: true.size=4 false.size=11
3937                    ; 2GOTO: Single test with two GOTO's
3938 025c 1d03          btfss   __z___byte, __z___bit
3939 025d 2a63          goto    program2__17
3940                    ; line_number = 419
3941                    ; computed_left := limit_positive
3942                    ;info   419, 606
3943 025e 305c          movlw   program2__limit_positive>>1
3944 025f 2438          call    _signed16_pointer_load
3945 0260 3054          movlw   program2__computed_left>>1
3946 0261 24c3          call    _signed16_pointer_store
3947 0262 2a6e          goto    program2__18
3948                    ; 2GOTO: Starting code 2
3949   0263 :   program2__17:
3950                    ; line_number = 420
3951                    ;info   420, 611
3952 0263 3054          movlw   program2__computed_left>>1
3953 0264 2438          call    _signed16_pointer_load
3954 0265 305d          movlw   program2__limit_negative>>1
3955 0266 24b1          call    _signed16_pointer_subtract
3956 0267 2512          call    _signed16_less_than
3957                    ; =>bit_code_emit@symbol(): sym=__z
3958                    ; No 1TEST: true.size=4 false.size=0
3959                    ; No 2TEST: true.size=4 false.size=0
3960                    ; 1GOTO: Single test with GOTO
3961 0268 1d03          btfss   __z___byte, __z___bit
3962 0269 2a6e          goto    program2__16
3963                    ; line_number = 421
3964                    ; computed_left := limit_negative
3965                    ;info   421, 618
3966 026a 305d          movlw   program2__limit_negative>>1
3967 026b 2438          call    _signed16_pointer_load
3968 026c 3054          movlw   program2__computed_left>>1
3969 026d 24c3          call    _signed16_pointer_store
3970                    ; Recombine size1 = 0 || size2 = 0
3971   026e :   program2__16:
3972   026e :   program2__18:
3973                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3974                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
3975                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
3976                    ; line_number = 418
3977                    ;  if computed_left > limit_positive done
3978                    ; line_number = 422
3979                    ; if computed_right > limit_positive start
3980                    ;info   422, 622
3981 026e 3055          movlw   program2__computed_right>>1
3982 026f 2438          call    _signed16_pointer_load
3983 0270 305c          movlw   program2__limit_positive>>1
3984 0271 24b1          call    _signed16_pointer_subtract
3985 0272 251d          call    _signed16_greater_than
3986                    ; =>bit_code_emit@symbol(): sym=__z
3987                    ; No 1TEST: true.size=4 false.size=11
3988                    ; No 2TEST: true.size=4 false.size=11
3989                    ; 2GOTO: Single test with two GOTO's
3990 0273 1d03          btfss   __z___byte, __z___bit
3991 0274 2a7a          goto    program2__20
3992                    ; line_number = 423
3993                    ; computed_right := limit_positive
3994                    ;info   423, 629
3995 0275 305c          movlw   program2__limit_positive>>1
3996 0276 2438          call    _signed16_pointer_load
3997 0277 3055          movlw   program2__computed_right>>1
3998 0278 24c3          call    _signed16_pointer_store
3999 0279 2a85          goto    program2__21
4000                    ; 2GOTO: Starting code 2
4001   027a :   program2__20:
4002                    ; line_number = 424
4003                    ;info   424, 634
4004 027a 3055          movlw   program2__computed_right>>1
4005 027b 2438          call    _signed16_pointer_load
4006 027c 305d          movlw   program2__limit_negative>>1
4007 027d 24b1          call    _signed16_pointer_subtract
4008 027e 2512          call    _signed16_less_than
4009                    ; =>bit_code_emit@symbol(): sym=__z
4010                    ; No 1TEST: true.size=4 false.size=0
4011                    ; No 2TEST: true.size=4 false.size=0
4012                    ; 1GOTO: Single test with GOTO
4013 027f 1d03          btfss   __z___byte, __z___bit
4014 0280 2a85          goto    program2__19
4015                    ; line_number = 425
4016                    ; computed_right := limit_negative
4017                    ;info   425, 641
4018 0281 305d          movlw   program2__limit_negative>>1
4019 0282 2438          call    _signed16_pointer_load
4020 0283 3055          movlw   program2__computed_right>>1
4021 0284 24c3          call    _signed16_pointer_store
4022            
4023                    ; Recombine size1 = 0 || size2 = 0
4024   0285 :   program2__19:
4025   0285 :   program2__21:
4026                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
4027                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
4028                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
4029                    ; line_number = 422
4030                    ; if computed_right > limit_positive done
4031                    ; #ctual_left := computed_left
4032                    ; #actual_right := computed_right
4033                    ; #if computed_left > actual_left
4034                    ; #    actual_left := actual_left - motor_adjust
4035                    ; #else_if computed_left < actual_left
4036                    ; #    actual_left := actual_left + motor_adjust
4037                    ; #if computed_right > actual_right
4038                    ; #    actual_right := actual_right - motor_adjust
4039                    ; #else_if computed_right < actual_right
4040                    ; #    actual_right := actual_right + motor_adjust
4041            
4042                    ; #motor_left := _signed16_to_byte(actual_left)
4043                    ; #motor_right := _signed16_to_byte(actual_right)
4044            
4045                    ; line_number = 441
4046                    ;  motor_left := _signed16_to_byte(computed_left)
4047                    ;info   441, 645
4048 0285 3054          movlw   program2__computed_left>>1
4049 0286 2438          call    _signed16_pointer_load
4050 0287 3022          movlw   _signed16_to_byte__number>>1
4051 0288 24c3          call    _signed16_pointer_store
4052 0289 24fb          call    _signed16_to_byte
4053 028a 1683          bsf     __rp0___byte, __rp0___bit
4054 028b 00bc          movwf   program2__motor_left
4055                    ; line_number = 442
4056                    ;  motor_right := _signed16_to_byte(computed_right)
4057                    ;info   442, 652
4058 028c 3055          movlw   program2__computed_right>>1
4059 028d 1283          bcf     __rp0___byte, __rp0___bit
4060 028e 2438          call    _signed16_pointer_load
4061 028f 3022          movlw   _signed16_to_byte__number>>1
4062 0290 24c3          call    _signed16_pointer_store
4063 0291 24fb          call    _signed16_to_byte
4064 0292 1683          bsf     __rp0___byte, __rp0___bit
4065 0293 00bd          movwf   program2__motor_right
4066            
4067                    ; #call byte_show('l', motor_left, 0, 1, 0)
4068                    ; #call byte_show('r', motor_right, 0, 1, 8)
4069            
4070                    ; line_number = 447
4071                    ;  call rb2bus_address_put(rb2_midimotor2_address)
4072                    ;info   447, 660
4073 0294 3003          movlw   3
4074 0295 1283          bcf     __rp0___byte, __rp0___bit
4075 0296 20ca          call    rb2bus_address_put
4076                    ; line_number = 448
4077                    ;  call rb2bus_byte2_put(rb2_motor0_speed_set, motor_left)
4078                    ;info   448, 663
4079 0297 3001          movlw   1
4080 0298 1683          bsf     __rp0___byte, __rp0___bit
4081 0299 00d4          movwf   rb2bus_byte2_put__command
4082 029a 083c          movf    program2__motor_left,w
4083 029b 22a3          call    rb2bus_byte2_put
4084                    ; line_number = 449
4085                    ;  call rb2bus_byte2_put(rb2_motor1_speed_set, motor_right)
4086                    ;info   449, 668
4087 029c 3003          movlw   3
4088 029d 00d4          movwf   rb2bus_byte2_put__command
4089 029e 083d          movf    program2__motor_right,w
4090 029f 22a3          call    rb2bus_byte2_put
4091            
4092            
4093                    ; line_number = 349
4094                    ;  loop_forever wrap-up
4095                    ; Need to adjust code banks to match front of loop
4096 02a0 1283          bcf     __rp0___byte, __rp0___bit
4097 02a1 298a          goto    program2__1
4098                    ; line_number = 349
4099                    ;  loop_forever done
4100                    ; delay after procedure statements=non-uniform
4101 02a2 1683          bsf     __rp0___byte, __rp0___bit
4102            
4103            
4104            
4105            
4106                    ; line_number = 452
4107                    ;info   452, 675
4108                    ; procedure rb2bus_byte2_put
4109   02a3 :   rb2bus_byte2_put:
4110                    ; Last argument is sitting in W; save into argument variable
4111 02a3 00d5          movwf   rb2bus_byte2_put__data
4112                    ; delay=4294967295
4113                    ; line_number = 453
4114                    ; argument command byte
4115 000000d4 = rb2bus_byte2_put__command equ globals___1+52
4116                    ; line_number = 454
4117                    ; argument data byte
4118 000000d5 = rb2bus_byte2_put__data equ globals___1+53
4119                    ; line_number = 455
4120                    ;  returns_nothing
4121            
4122                    ; # This routine will send {command} followed by {data} to the currently
4123                    ; # selected module.
4124            
4125                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
4126                    ; line_number = 460
4127                    ;  call rb2bus_byte_put(command)
4128                    ;info   460, 676
4129 02a4 0854          movf    rb2bus_byte2_put__command,w
4130 02a5 1283          bcf     __rp0___byte, __rp0___bit
4131 02a6 23da          call    rb2bus_byte_put
4132                    ; line_number = 461
4133                    ;  call rb2bus_byte_put(data)
4134                    ;info   461, 679
4135 02a7 1683          bsf     __rp0___byte, __rp0___bit
4136 02a8 0855          movf    rb2bus_byte2_put__data,w
4137 02a9 1283          bcf     __rp0___byte, __rp0___bit
4138 02aa 23da          call    rb2bus_byte_put
4139            
4140            
4141                    ; delay after procedure statements=non-uniform
4142 02ab 1683          bsf     __rp0___byte, __rp0___bit
4143                    ; Implied return
4144 02ac 3400          retlw   0
4145            
4146            
4147            
4148            
4149                    ; line_number = 464
4150                    ;info   464, 685
4151                    ; procedure rb2bus_byte3_put
4152   02ad :   rb2bus_byte3_put:
4153                    ; Last argument is sitting in W; save into argument variable
4154 02ad 00d8          movwf   rb2bus_byte3_put__low
4155                    ; delay=4294967295
4156                    ; line_number = 465
4157                    ; argument command byte
4158 000000d6 = rb2bus_byte3_put__command equ globals___1+54
4159                    ; line_number = 466
4160                    ; argument high byte
4161 000000d7 = rb2bus_byte3_put__high equ globals___1+55
4162                    ; line_number = 467
4163                    ; argument low byte
4164 000000d8 = rb2bus_byte3_put__low equ globals___1+56
4165                    ; line_number = 468
4166                    ;  returns_nothing
4167            
4168                    ; # This routine will send {command} followed by {data} to the currently
4169                    ; # selected module.
4170            
4171                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
4172                    ; line_number = 473
4173                    ;  call rb2bus_byte_put(command)
4174                    ;info   473, 686
4175 02ae 0856          movf    rb2bus_byte3_put__command,w
4176 02af 1283          bcf     __rp0___byte, __rp0___bit
4177 02b0 23da          call    rb2bus_byte_put
4178                    ; line_number = 474
4179                    ;  call rb2bus_byte_put(high)
4180                    ;info   474, 689
4181 02b1 1683          bsf     __rp0___byte, __rp0___bit
4182 02b2 0857          movf    rb2bus_byte3_put__high,w
4183 02b3 1283          bcf     __rp0___byte, __rp0___bit
4184 02b4 23da          call    rb2bus_byte_put
4185                    ; line_number = 475
4186                    ;  call rb2bus_byte_put(low)
4187                    ;info   475, 693
4188 02b5 1683          bsf     __rp0___byte, __rp0___bit
4189 02b6 0858          movf    rb2bus_byte3_put__low,w
4190 02b7 1283          bcf     __rp0___byte, __rp0___bit
4191 02b8 23da          call    rb2bus_byte_put
4192            
4193            
4194                    ; delay after procedure statements=non-uniform
4195 02b9 1683          bsf     __rp0___byte, __rp0___bit
4196                    ; Implied return
4197 02ba 3400          retlw   0
4198            
4199            
4200            
4201            
4202                    ; line_number = 478
4203                    ;info   478, 699
4204                    ; procedure byte_show
4205   02bb :   byte_show:
4206                    ; Last argument is sitting in W; save into argument variable
4207 02bb 00dd          movwf   byte_show__column
4208                    ; delay=4294967295
4209                    ; line_number = 479
4210                    ; argument label byte
4211 000000d9 = byte_show__label equ globals___1+57
4212                    ; line_number = 480
4213                    ; argument value byte
4214 000000da = byte_show__value equ globals___1+58
4215                    ; line_number = 481
4216                    ; argument lcd byte
4217 000000db = byte_show__lcd equ globals___1+59
4218                    ; line_number = 482
4219                    ; argument row byte
4220 000000dc = byte_show__row equ globals___1+60
4221                    ; line_number = 483
4222                    ; argument column byte
4223 000000dd = byte_show__column equ globals___1+61
4224                    ; line_number = 484
4225                    ;  returns_nothing
4226            
4227                    ; # This routine will ...
4228            
4229                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
4230                    ; line_number = 488
4231                    ;  call rb2bus_address_put(rb2_lcd32_address + lcd)
4232                    ;info   488, 700
4233 02bc 3020          movlw   32
4234 02bd 075b          addwf   byte_show__lcd,w
4235 02be 1283          bcf     __rp0___byte, __rp0___bit
4236 02bf 20ca          call    rb2bus_address_put
4237                    ; line_number = 489
4238                    ;  call rb2bus_byte_put(rb2_lcd32_row_set | row)
4239                    ;info   489, 704
4240 02c0 3004          movlw   4
4241 02c1 1683          bsf     __rp0___byte, __rp0___bit
4242 02c2 045c          iorwf   byte_show__row,w
4243 02c3 1283          bcf     __rp0___byte, __rp0___bit
4244 02c4 23da          call    rb2bus_byte_put
4245                    ; line_number = 490
4246                    ;  call rb2bus_byte_put(rb2_lcd32_column_set | column)
4247                    ;info   490, 709
4248 02c5 3010          movlw   16
4249 02c6 1683          bsf     __rp0___byte, __rp0___bit
4250 02c7 045d          iorwf   byte_show__column,w
4251 02c8 1283          bcf     __rp0___byte, __rp0___bit
4252 02c9 23da          call    rb2bus_byte_put
4253                    ; line_number = 491
4254                    ;  call rb2bus_byte_put(label)
4255                    ;info   491, 714
4256 02ca 1683          bsf     __rp0___byte, __rp0___bit
4257 02cb 0859          movf    byte_show__label,w
4258 02cc 1283          bcf     __rp0___byte, __rp0___bit
4259 02cd 23da          call    rb2bus_byte_put
4260                    ; line_number = 492
4261                    ;  call rb2bus_byte_put(':')
4262                    ;info   492, 718
4263 02ce 303a          movlw   58
4264 02cf 23da          call    rb2bus_byte_put
4265                    ; line_number = 493
4266                    ;  if value@7 start
4267                    ;info   493, 720
4268 000000da = byte_show__select__1___byte equ byte_show__value
4269 00000007 = byte_show__select__1___bit equ 7
4270                    ; =>bit_code_emit@symbol(): sym=byte_show__select__1
4271                    ; No 1TEST: true.size=6 false.size=2
4272                    ; No 2TEST: true.size=6 false.size=2
4273                    ; 2GOTO: Single test with two GOTO's
4274 02d0 1683          bsf     __rp0___byte, __rp0___bit
4275 02d1 1fda          btfss   byte_show__select__1___byte, byte_show__select__1___bit
4276 02d2 2adb          goto    byte_show__2
4277 02d3 1283          bcf     __rp0___byte, __rp0___bit
4278                    ; line_number = 494
4279                    ; call rb2bus_byte_put('-')
4280                    ;info   494, 724
4281 02d4 302d          movlw   45
4282 02d5 23da          call    rb2bus_byte_put
4283                    ; line_number = 495
4284                    ;  value := 0 - value
4285                    ;info   495, 726
4286 02d6 1683          bsf     __rp0___byte, __rp0___bit
4287 02d7 085a          movf    byte_show__value,w
4288 02d8 3c00          sublw   0
4289 02d9 00da          movwf   byte_show__value
4290 02da 2ade          goto    byte_show__3
4291                    ; 2GOTO: Starting code 2
4292   02db :   byte_show__2:
4293 02db 1283          bcf     __rp0___byte, __rp0___bit
4294                    ; line_number = 497
4295                    ; call rb2bus_byte_put('+')
4296                    ;info   497, 732
4297 02dc 302b          movlw   43
4298 02dd 23da          call    rb2bus_byte_put
4299   02de :   byte_show__3:
4300                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
4301                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
4302                    ; 2GOTO: code final bitstates:(data:01=uu=>00 code:00=uu=>00)
4303 02de 1683          bsf     __rp0___byte, __rp0___bit
4304                    ; line_number = 493
4305                    ;  if value@7 done
4306                    ; line_number = 498
4307                    ; call rb2bus_hex_put(value)
4308                    ;info   498, 735
4309 02df 085a          movf    byte_show__value,w
4310 02e0 1283          bcf     __rp0___byte, __rp0___bit
4311 02e1 20c0          call    rb2bus_hex_put
4312            
4313            
4314                    ; delay after procedure statements=non-uniform
4315 02e2 1683          bsf     __rp0___byte, __rp0___bit
4316                    ; Implied return
4317 02e3 3400          retlw   0
4318            
4319            
4320            
4321            
4322                    ; line_number = 501
4323                    ;info   501, 740
4324                    ; procedure signed16_show
4325   02e4 :   signed16_show:
4326                    ; Last argument is sitting in W; save into argument variable
4327 02e4 00e6          movwf   signed16_show__column
4328                    ; delay=4294967295
4329                    ; line_number = 502
4330                    ; argument label byte
4331 000000e0 = signed16_show__label equ globals___1+64
4332                    ; line_number = 503
4333                    ; argument value signed16
4334 000000e2 = signed16_show__value equ globals___1+66
4335                    ; line_number = 504
4336                    ; argument lcd byte
4337 000000e4 = signed16_show__lcd equ globals___1+68
4338                    ; line_number = 505
4339                    ; argument row byte
4340 000000e5 = signed16_show__row equ globals___1+69
4341                    ; line_number = 506
4342                    ; argument column byte
4343 000000e6 = signed16_show__column equ globals___1+70
4344                    ; line_number = 507
4345                    ;  returns_nothing
4346            
4347                    ; # This routine will ...
4348            
4349                    ; line_number = 511
4350                    ;  local zero signed16
4351 000000de = signed16_show__zero equ globals___1+62
4352            
4353                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
4354                    ; line_number = 513
4355                    ;  call rb2bus_address_put(rb2_lcd32_address + lcd)
4356                    ;info   513, 741
4357 02e5 3020          movlw   32
4358 02e6 0764          addwf   signed16_show__lcd,w
4359 02e7 1283          bcf     __rp0___byte, __rp0___bit
4360 02e8 20ca          call    rb2bus_address_put
4361                    ; line_number = 514
4362                    ;  call rb2bus_byte_put(rb2_lcd32_row_set | row)
4363                    ;info   514, 745
4364 02e9 3004          movlw   4
4365 02ea 1683          bsf     __rp0___byte, __rp0___bit
4366 02eb 0465          iorwf   signed16_show__row,w
4367 02ec 1283          bcf     __rp0___byte, __rp0___bit
4368 02ed 23da          call    rb2bus_byte_put
4369                    ; line_number = 515
4370                    ;  call rb2bus_byte_put(rb2_lcd32_column_set | column)
4371                    ;info   515, 750
4372 02ee 3010          movlw   16
4373 02ef 1683          bsf     __rp0___byte, __rp0___bit
4374 02f0 0466          iorwf   signed16_show__column,w
4375 02f1 1283          bcf     __rp0___byte, __rp0___bit
4376 02f2 23da          call    rb2bus_byte_put
4377                    ; line_number = 516
4378                    ;  call rb2bus_byte_put(label)
4379                    ;info   516, 755
4380 02f3 1683          bsf     __rp0___byte, __rp0___bit
4381 02f4 0860          movf    signed16_show__label,w
4382 02f5 1283          bcf     __rp0___byte, __rp0___bit
4383 02f6 23da          call    rb2bus_byte_put
4384                    ; line_number = 517
4385                    ;  call rb2bus_byte_put(':')
4386                    ;info   517, 759
4387 02f7 303a          movlw   58
4388 02f8 23da          call    rb2bus_byte_put
4389            
4390                    ; line_number = 519
4391                    ;  zero := _signed16_from_byte(0)
4392                    ;info   519, 761
4393 02f9 3000          movlw   0
4394 02fa 24ea          call    _signed16_from_byte
4395 02fb 301f          movlw   _signed16_from_byte__0return>>1
4396 02fc 2438          call    _signed16_pointer_load
4397 02fd 306f          movlw   signed16_show__zero>>1
4398 02fe 24c3          call    _signed16_pointer_store
4399                    ; line_number = 520
4400                    ;  if value < zero start
4401                    ;info   520, 767
4402 02ff 3071          movlw   signed16_show__value>>1
4403 0300 2438          call    _signed16_pointer_load
4404 0301 306f          movlw   signed16_show__zero>>1
4405 0302 24b1          call    _signed16_pointer_subtract
4406 0303 2512          call    _signed16_less_than
4407                    ; =>bit_code_emit@symbol(): sym=__z
4408                    ; No 1TEST: true.size=7 false.size=1
4409                    ; No 2TEST: true.size=7 false.size=1
4410                    ; 2GOTO: Single test with two GOTO's
4411 0304 1d03          btfss   __z___byte, __z___bit
4412 0305 2b0e          goto    signed16_show__1
4413                    ; line_number = 521
4414                    ; value := zero - value
4415                    ;info   521, 774
4416 0306 306f          movlw   signed16_show__zero>>1
4417 0307 2438          call    _signed16_pointer_load
4418 0308 3071          movlw   signed16_show__value>>1
4419 0309 24b1          call    _signed16_pointer_subtract
4420 030a 3071          movlw   signed16_show__value>>1
4421 030b 24c3          call    _signed16_pointer_store
4422                    ; line_number = 522
4423                    ;  call rb2bus_byte_put('-')
4424                    ;info   522, 780
4425 030c 302d          movlw   45
4426 030d 2b0f          goto    signed16_show__2
4427                    ; 2GOTO: Starting code 2
4428   030e :   signed16_show__1:
4429                    ; line_number = 524
4430                    ; call rb2bus_byte_put('+')
4431                    ;info   524, 782
4432 030e 302b          movlw   43
4433   030f :   signed16_show__2:
4434                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
4435                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
4436                    ; 2GOTO: code final bitstates:(data:01=uu=>00 code:00=uu=>00)
4437 030f 23da          call    rb2bus_byte_put
4438                    ; line_number = 520
4439                    ;  if value < zero done
4440                    ; line_number = 525
4441                    ; call rb2bus_hex_put(_signed16_byte_high(value))
4442                    ;info   525, 784
4443 0310 3071          movlw   signed16_show__value>>1
4444 0311 2438          call    _signed16_pointer_load
4445 0312 3023          movlw   _signed16_byte_high__number>>1
4446 0313 24c3          call    _signed16_pointer_store
4447 0314 24ff          call    _signed16_byte_high
4448 0315 20c0          call    rb2bus_hex_put
4449                    ; line_number = 526
4450                    ;  call rb2bus_hex_put(_signed16_byte_low(value))
4451                    ;info   526, 790
4452 0316 3071          movlw   signed16_show__value>>1
4453 0317 2438          call    _signed16_pointer_load
4454 0318 3024          movlw   _signed16_byte_low__number>>1
4455 0319 24c3          call    _signed16_pointer_store
4456 031a 2503          call    _signed16_byte_low
4457 031b 20c0          call    rb2bus_hex_put
4458            
4459            
4460                    ; delay after procedure statements=non-uniform
4461 031c 1683          bsf     __rp0___byte, __rp0___bit
4462                    ; Implied return
4463 031d 3400          retlw   0
4464            
4465            
4466            
4467            
4468                    ; line_number = 529
4469                    ;info   529, 798
4470                    ; procedure rb2bus_byte_put_get
4471   031e :   rb2bus_byte_put_get:
4472                    ; Last argument is sitting in W; save into argument variable
4473 031e 00e7          movwf   rb2bus_byte_put_get__command
4474                    ; delay=4294967295
4475                    ; line_number = 530
4476                    ; argument command byte
4477 000000e7 = rb2bus_byte_put_get__command equ globals___1+71
4478                    ; line_number = 531
4479                    ;  returns byte
4480            
4481                    ; # This routine will send {command} to the currently selected module
4482                    ; # and return the one byte response.
4483            
4484                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
4485                    ; line_number = 536
4486                    ;  call rb2bus_byte_put(command)
4487                    ;info   536, 799
4488 031f 0867          movf    rb2bus_byte_put_get__command,w
4489 0320 1283          bcf     __rp0___byte, __rp0___bit
4490 0321 23da          call    rb2bus_byte_put
4491                    ; line_number = 537
4492                    ;  return rb2bus_byte_get() start
4493                    ; line_number = 537
4494                    ;info   537, 802
4495 0322 23b8          call    rb2bus_byte_get
4496 0323 1683          bsf     __rp0___byte, __rp0___bit
4497 0324 0008          return  
4498                    ; line_number = 537
4499                    ;  return rb2bus_byte_get() done
4500            
4501            
4502                    ; delay after procedure statements=non-uniform
4503            
4504            
4505            
4506            
4507 000000ec = rb2bus_signed16_put_get__0return equ globals___1+76
4508                    ; line_number = 540
4509                    ;info   540, 805
4510                    ; procedure rb2bus_signed16_put_get
4511   0325 :   rb2bus_signed16_put_get:
4512                    ; Last argument is sitting in W; save into argument variable
4513 0325 00ea          movwf   rb2bus_signed16_put_get__command
4514                    ; delay=4294967295
4515                    ; line_number = 541
4516                    ; argument command byte
4517 000000ea = rb2bus_signed16_put_get__command equ globals___1+74
4518                    ; line_number = 542
4519                    ;  returns signed16
4520            
4521                    ; # This routine will send {command} to the currently selected module.
4522                    ; # and retreive a two byte result as a signed 16 number and return it.
4523            
4524                    ; line_number = 547
4525                    ;  local high byte
4526 000000e8 = rb2bus_signed16_put_get__high equ globals___1+72
4527                    ; line_number = 548
4528                    ;  local low byte
4529 000000e9 = rb2bus_signed16_put_get__low equ globals___1+73
4530            
4531                    ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
4532                    ; line_number = 550
4533                    ;  call rb2bus_byte_put(command)
4534                    ;info   550, 806
4535 0326 086a          movf    rb2bus_signed16_put_get__command,w
4536 0327 1283          bcf     __rp0___byte, __rp0___bit
4537 0328 23da          call    rb2bus_byte_put
4538                    ; line_number = 551
4539                    ;  high := rb2bus_byte_get()
4540                    ;info   551, 809
4541 0329 23b8          call    rb2bus_byte_get
4542 032a 1683          bsf     __rp0___byte, __rp0___bit
4543 032b 00e8          movwf   rb2bus_signed16_put_get__high
4544                    ; line_number = 552
4545                    ;  low := rb2bus_byte_get()
4546                    ;info   552, 812
4547 032c 1283          bcf     __rp0___byte, __rp0___bit
4548 032d 23b8          call    rb2bus_byte_get
4549 032e 1683          bsf     __rp0___byte, __rp0___bit
4550 032f 00e9          movwf   rb2bus_signed16_put_get__low
4551                    ; line_number = 553
4552                    ;  return _signed16_from_byte2(high, low) start
4553                    ; line_number = 553
4554                    ;info   553, 816
4555 0330 0868          movf    rb2bus_signed16_put_get__high,w
4556 0331 1283          bcf     __rp0___byte, __rp0___bit
4557 0332 00c0          movwf   _signed16_from_byte2__byte1
4558 0333 1683          bsf     __rp0___byte, __rp0___bit
4559 0334 0869          movf    rb2bus_signed16_put_get__low,w
4560 0335 1283          bcf     __rp0___byte, __rp0___bit
4561 0336 24f2          call    _signed16_from_byte2
4562 0337 3021          movlw   _signed16_from_byte2__0return>>1
4563 0338 2438          call    _signed16_pointer_load
4564 0339 3076          movlw   rb2bus_signed16_put_get__0return>>1
4565 033a 24c3          call    _signed16_pointer_store
4566 033b 1683          bsf     __rp0___byte, __rp0___bit
4567 033c 0008          return  
4568                    ; line_number = 553
4569                    ;  return _signed16_from_byte2(high, low) done
4570            
4571            
4572            
4573                    ; delay after procedure statements=non-uniform
4574            
4575            
4576            
4577            
4578            
4579                    ; Appending 28 delayed procedures to code bank 0
4580                    ; buffer = 'rb2bus_pic16f876'
4581                    ; line_number = 28
4582                    ;info   28, 829
4583                    ; procedure rb2bus_initialize
4584   033d :   rb2bus_initialize:
4585                    ; Last argument is sitting in W; save into argument variable
4586 033d 00a2          movwf   rb2bus_initialize__address
4587                    ; delay=4294967295
4588                    ; line_number = 29
4589                    ; argument address byte
4590 00000022 = rb2bus_initialize__address equ globals___0+2
4591                    ; line_number = 30
4592                    ;  returns_nothing
4593            
4594                    ; # This procedure is responsibile for initializing the UART
4595                    ; # connected to the bus.  {address} is the address of this
4596                    ; # slave module.  This code is specific to the PIC16F688.
4597            
4598                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
4599                    ; line_number = 36
4600                    ;  rb2bus_address := address
4601                    ;info   36, 830
4602 033e 0822          movf    rb2bus_initialize__address,w
4603 033f 00a0          movwf   rb2bus_address
4604            
4605                    ; # Warm up the UART:
4606                    ; line_number = 39
4607                    ;  _trisc@7 := _true
4608                    ;info   39, 832
4609 00000087 = rb2bus_initialize__select__1___byte equ _trisc
4610 00000007 = rb2bus_initialize__select__1___bit equ 7
4611 0340 1683          bsf     __rp0___byte, __rp0___bit
4612 0341 1787          bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
4613                    ; line_number = 40
4614                    ;  _trisc@6 := _true
4615                    ;info   40, 834
4616 00000087 = rb2bus_initialize__select__2___byte equ _trisc
4617 00000006 = rb2bus_initialize__select__2___bit equ 6
4618 0342 1707          bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit
4619            
4620                    ; # Initialize the {_txsta} register:
4621                    ; line_number = 43
4622                    ;  _txsta := 0
4623                    ;info   43, 835
4624 0343 0198          clrf    _txsta
4625                    ; line_number = 44
4626                    ;  _tx9 := _true
4627                    ;info   44, 836
4628 0344 1718          bsf     _tx9___byte, _tx9___bit
4629                    ; line_number = 45
4630                    ;  _txen := _true
4631                    ;info   45, 837
4632 0345 1698          bsf     _txen___byte, _txen___bit
4633                    ; line_number = 46
4634                    ;  _brgh := _true
4635                    ;info   46, 838
4636 0346 1518          bsf     _brgh___byte, _brgh___bit
4637            
4638                    ; # Initialize the {_rcsta} register:
4639                    ; line_number = 49
4640                    ;  _rcsta := 0
4641                    ;info   49, 839
4642 0347 1283          bcf     __rp0___byte, __rp0___bit
4643 0348 0198          clrf    _rcsta
4644                    ; line_number = 50
4645                    ;  _spen := _true
4646                    ;info   50, 841
4647 0349 1798          bsf     _spen___byte, _spen___bit
4648                    ; line_number = 51
4649                    ;  _rx9 := _true
4650                    ;info   51, 842
4651 034a 1718          bsf     _rx9___byte, _rx9___bit
4652                    ; line_number = 52
4653                    ;  _cren := _true
4654                    ;info   52, 843
4655 034b 1618          bsf     _cren___byte, _cren___bit
4656                    ; #_adden := _true
4657                    ; line_number = 54
4658                    ;  _adden := _false
4659                    ;info   54, 844
4660 034c 1198          bcf     _adden___byte, _adden___bit
4661            
4662                    ; # Set up the baud rate generator:
4663                    ; line_number = 57
4664                    ;  _spbrg := spbrg_500k
4665                    ;info   57, 845
4666 034d 3001          movlw   1
4667 034e 1683          bsf     __rp0___byte, __rp0___bit
4668 034f 0099          movwf   _spbrg
4669            
4670                    ; line_number = 59
4671                    ;  rb2bus_selected := _false
4672                    ;info   59, 848
4673 0350 1283          bcf     __rp0___byte, __rp0___bit
4674 0351 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
4675                    ; line_number = 60
4676                    ;  rb2bus_error := _true
4677                    ;info   60, 850
4678 0352 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
4679                    ; line_number = 61
4680                    ;  rb2bus_index := 0
4681                    ;info   61, 851
4682 0353 01a1          clrf    rb2bus_index
4683            
4684            
4685                    ; delay after procedure statements=non-uniform
4686                    ; Implied return
4687 0354 3400          retlw   0
4688            
4689            
4690            
4691            
4692                    ; line_number = 66
4693                    ;info   66, 853
4694                    ; procedure rb2bus_eedata_read
4695   0355 :   rb2bus_eedata_read:
4696                    ; arguments_none
4697                    ; line_number = 68
4698                    ;  returns byte
4699            
4700                    ; # This procedure will return the address stored in EEData.  If
4701                    ; # there is no data, 0 is returned.
4702            
4703                    ; line_number = 73
4704                    ;  local temp1 byte
4705 00000023 = rb2bus_eedata_read__temp1 equ globals___0+3
4706                    ; line_number = 74
4707                    ;  local temp2 byte
4708 00000024 = rb2bus_eedata_read__temp2 equ globals___0+4
4709            
4710                    ; # Read the first byte (the address):
4711                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
4712                    ; line_number = 77
4713                    ;  _eecon1 := 0
4714                    ;info   77, 853
4715 0355 1683          bsf     __rp0___byte, __rp0___bit
4716 0356 1703          bsf     __rp1___byte, __rp1___bit
4717 0357 018c          clrf    _eecon1
4718                    ; line_number = 78
4719                    ;  _eeadr := rb2bus_eedata_address
4720                    ;info   78, 856
4721 0358 30fe          movlw   254
4722 0359 1283          bcf     __rp0___byte, __rp0___bit
4723 035a 008d          movwf   _eeadr
4724                    ; line_number = 79
4725                    ;  _rd := _true
4726                    ;info   79, 859
4727 035b 1683          bsf     __rp0___byte, __rp0___bit
4728 035c 140c          bsf     _rd___byte, _rd___bit
4729                    ; line_number = 80
4730                    ;  temp1 := _eedata
4731                    ;info   80, 861
4732 035d 1283          bcf     __rp0___byte, __rp0___bit
4733 035e 080c          movf    _eedata,w
4734 035f 1303          bcf     __rp1___byte, __rp1___bit
4735 0360 00a3          movwf   rb2bus_eedata_read__temp1
4736            
4737                    ; # Read the second byte (the 1'z complement)
4738                    ; line_number = 83
4739                    ;  _eeadr := _eeadr + 1
4740                    ;info   83, 865
4741 0361 1703          bsf     __rp1___byte, __rp1___bit
4742 0362 0a8d          incf    _eeadr,f
4743                    ; line_number = 84
4744                    ;  _rd := _true
4745                    ;info   84, 867
4746 0363 1683          bsf     __rp0___byte, __rp0___bit
4747 0364 140c          bsf     _rd___byte, _rd___bit
4748                    ; line_number = 85
4749                    ;  temp2 := _eedata
4750                    ;info   85, 869
4751 0365 1283          bcf     __rp0___byte, __rp0___bit
4752 0366 080c          movf    _eedata,w
4753 0367 1303          bcf     __rp1___byte, __rp1___bit
4754 0368 00a4          movwf   rb2bus_eedata_read__temp2
4755            
4756                    ; # If they are 1's complement of one another, they are valid:
4757                    ; line_number = 88
4758                    ;  if temp1 = (0xff ^ temp2) start
4759                    ;info   88, 873
4760                    ; Left minus Right
4761 0369 0924          comf    rb2bus_eedata_read__temp2,w
4762 036a 0223          subwf   rb2bus_eedata_read__temp1,w
4763                    ; =>bit_code_emit@symbol(): sym=__z
4764                    ; No 1TEST: true.size=2 false.size=0
4765                    ; No 2TEST: true.size=2 false.size=0
4766                    ; 1GOTO: Single test with GOTO
4767 036b 1d03          btfss   __z___byte, __z___bit
4768 036c 2b6f          goto    rb2bus_eedata_read__1
4769                    ; # Return the valid address:
4770                    ; line_number = 90
4771                    ;  return temp1 start
4772                    ; line_number = 90
4773                    ;info   90, 877
4774 036d 0823          movf    rb2bus_eedata_read__temp1,w
4775 036e 0008          return  
4776                    ; line_number = 90
4777                    ;  return temp1 done
4778            
4779                    ; Recombine size1 = 0 || size2 = 0
4780   036f :   rb2bus_eedata_read__1:
4781                    ; line_number = 88
4782                    ;  if temp1 = (0xff ^ temp2) done
4783                    ; # They are not 1's complement, so return 0 as an error:
4784                    ; line_number = 93
4785                    ;  return 0 start
4786                    ; line_number = 93
4787                    ;info   93, 879
4788 036f 3400          retlw   0
4789                    ; line_number = 93
4790                    ;  return 0 done
4791            
4792            
4793                    ; delay after procedure statements=non-uniform
4794            
4795            
4796            
4797            
4798                    ; line_number = 96
4799                    ;info   96, 880
4800                    ; procedure rb2bus_eedata_write
4801   0370 :   rb2bus_eedata_write:
4802                    ; Last argument is sitting in W; save into argument variable
4803 0370 00a5          movwf   rb2bus_eedata_write__address
4804                    ; delay=4294967295
4805                    ; line_number = 97
4806                    ; argument address byte
4807 00000025 = rb2bus_eedata_write__address equ globals___0+5
4808                    ; line_number = 98
4809                    ;  returns_nothing
4810            
4811                    ; # This procedure will write {address} into the EEData.  The
4812                    ; # microcontroll pauses while the EEData is written.
4813            
4814                    ; # Clear out the {_eecon1} register
4815                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
4816                    ; line_number = 104
4817                    ;  _eecon1 := 0
4818                    ;info   104, 881
4819 0371 1683          bsf     __rp0___byte, __rp0___bit
4820 0372 1703          bsf     __rp1___byte, __rp1___bit
4821 0373 018c          clrf    _eecon1
4822                    ; line_number = 105
4823                    ;  _eeadr := rb2bus_eedata_address
4824                    ;info   105, 884
4825 0374 30fe          movlw   254
4826 0375 1283          bcf     __rp0___byte, __rp0___bit
4827 0376 008d          movwf   _eeadr
4828                    ; line_number = 106
4829                    ;  _eedata := address
4830                    ;info   106, 887
4831 0377 1303          bcf     __rp1___byte, __rp1___bit
4832 0378 0825          movf    rb2bus_eedata_write__address,w
4833 0379 1703          bsf     __rp1___byte, __rp1___bit
4834 037a 008c          movwf   _eedata
4835            
4836                    ; # Write 2 bytes ({address} followed by {address}^0xff):
4837                    ; line_number = 109
4838                    ;  loop_exactly 2 start
4839                    ;info   109, 891
4840 0000005c = rb2bus_eedata_write__1 equ globals___0+60
4841 037b 3002          movlw   2
4842 037c 1303          bcf     __rp1___byte, __rp1___bit
4843 037d 00dc          movwf   rb2bus_eedata_write__1
4844   037e :   rb2bus_eedata_write__2:
4845                    ; # Set the data to write:
4846            
4847                    ; # Set up the for the write:
4848                    ; line_number = 113
4849                    ;  _wren := _true
4850                    ;info   113, 894
4851 037e 1683          bsf     __rp0___byte, __rp0___bit
4852 037f 1703          bsf     __rp1___byte, __rp1___bit
4853 0380 150c          bsf     _wren___byte, _wren___bit
4854                    ; line_number = 114
4855                    ;  _gie := _false
4856                    ;info   114, 897
4857 0381 138b          bcf     _gie___byte, _gie___bit
4858                    ; line_number = 115
4859                    ;  _eecon2 := 0x55
4860                    ;info   115, 898
4861 0382 3055          movlw   85
4862 0383 008d          movwf   _eecon2
4863                    ; line_number = 116
4864                    ;  _eecon2 := 0xaa
4865                    ;info   116, 900
4866 0384 30aa          movlw   170
4867 0385 008d          movwf   _eecon2
4868                    ; # Start the write:
4869                    ; line_number = 118
4870                    ;  _wr := _true
4871                    ;info   118, 902
4872 0386 148c          bsf     _wr___byte, _wr___bit
4873            
4874                    ; # Wait for write to complete:
4875                    ; line_number = 121
4876                    ;  while _wr start
4877   0387 :   rb2bus_eedata_write__3:
4878                    ;info   121, 903
4879                    ; =>bit_code_emit@symbol(): sym=_wr
4880                    ; 1TEST: Single test with code in skip slot
4881 0387 188c          btfsc   _wr___byte, _wr___bit
4882                    ; line_number = 122
4883                    ; do_nothing
4884                    ;info   122, 904
4885            
4886 0388 2b87          goto    rb2bus_eedata_write__3
4887                    ; Recombine size1 = 0 || size2 = 0
4888                    ; line_number = 121
4889                    ;  while _wr done
4890                    ; # Disable writing:
4891                    ; line_number = 125
4892                    ;  _wren := _false
4893                    ;info   125, 905
4894 0389 110c          bcf     _wren___byte, _wren___bit
4895            
4896                    ; # Prepare the second byte of data:
4897                    ; line_number = 128
4898                    ;  _eeadr := _eeadr + 1
4899                    ;info   128, 906
4900 038a 1283          bcf     __rp0___byte, __rp0___bit
4901 038b 0a8d          incf    _eeadr,f
4902                    ; line_number = 129
4903                    ;  _eedata := address ^ 0xff
4904                    ;info   129, 908
4905 038c 1303          bcf     __rp1___byte, __rp1___bit
4906 038d 0925          comf    rb2bus_eedata_write__address,w
4907 038e 1703          bsf     __rp1___byte, __rp1___bit
4908 038f 008c          movwf   _eedata
4909            
4910            
4911 0390 1303          bcf     __rp1___byte, __rp1___bit
4912                    ; line_number = 109
4913                    ;  loop_exactly 2 wrap-up
4914 0391 0bdc          decfsz  rb2bus_eedata_write__1,f
4915 0392 2b7e          goto    rb2bus_eedata_write__2
4916                    ; line_number = 109
4917                    ;  loop_exactly 2 done
4918                    ; # Disable everything:
4919                    ; line_number = 133
4920                    ;  _eecon1 := 0
4921                    ;info   133, 915
4922 0393 1683          bsf     __rp0___byte, __rp0___bit
4923 0394 1703          bsf     __rp1___byte, __rp1___bit
4924 0395 018c          clrf    _eecon1
4925            
4926                    ; delay after procedure statements=non-uniform
4927 0396 1283          bcf     __rp0___byte, __rp0___bit
4928 0397 1303          bcf     __rp1___byte, __rp1___bit
4929                    ; Implied return
4930 0398 3400          retlw   0
4931            
4932            
4933            
4934            
4935                    ; buffer = 'rb2bus'
4936                    ; line_number = 57
4937                    ;info   57, 921
4938                    ; procedure rb2bus_select_wait
4939   0399 :   rb2bus_select_wait:
4940                    ; arguments_none
4941                    ; line_number = 59
4942                    ;  returns_nothing
4943            
4944                    ; # This procedure will in an infinite loop until the select
4945                    ; # address matches {rb2bus_address}.  {rb2bus_address} is
4946                    ; # typically set in the {rb2bus_initialize} procedure.
4947                    ; #
4948                    ; # This module will repeatably call the {wait} procedure until
4949                    ; # it is properly selected.
4950            
4951                    ; line_number = 68
4952                    ;  local value byte
4953 00000026 = rb2bus_select_wait__value equ globals___0+6
4954                    ; line_number = 69
4955                    ;  local address_bit bit
4956 0000006f = rb2bus_select_wait__address_bit___byte equ globals___0+79
4957 00000002 = rb2bus_select_wait__address_bit___bit equ 2
4958            
4959                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
4960                    ; line_number = 71
4961                    ;  rb2bus_error := _false
4962                    ;info   71, 921
4963 0399 10ef          bcf     rb2bus_error___byte, rb2bus_error___bit
4964                    ; line_number = 72
4965                    ;  while !rb2bus_selected start
4966   039a :   rb2bus_select_wait__1:
4967                    ;info   72, 922
4968                    ; =>bit_code_emit@symbol(): sym=rb2bus_selected
4969                    ; No 1TEST: true.size=0 false.size=25
4970                    ; No 2TEST: true.size=0 false.size=25
4971                    ; 1GOTO: Single test with GOTO
4972 039a 186f          btfsc   rb2bus_selected___byte, rb2bus_selected___bit
4973 039b 2bb5          goto    rb2bus_select_wait__6
4974                    ; line_number = 73
4975                    ; _adden := _true
4976                    ;info   73, 924
4977 039c 1598          bsf     _adden___byte, _adden___bit
4978                    ; # Wait for a byte to arrive.
4979                    ; line_number = 75
4980                    ;  while !_rcif start
4981   039d :   rb2bus_select_wait__2:
4982                    ;info   75, 925
4983                    ; =>bit_code_emit@symbol(): sym=_rcif
4984                    ; No 1TEST: true.size=0 false.size=2
4985                    ; No 2TEST: true.size=0 false.size=2
4986                    ; 1GOTO: Single test with GOTO
4987 039d 1a8c          btfsc   _rcif___byte, _rcif___bit
4988 039e 2ba1          goto    rb2bus_select_wait__3
4989                    ; line_number = 76
4990                    ; call wait()
4991                    ;info   76, 927
4992 039f 2082          call    wait
4993            
4994 03a0 2b9d          goto    rb2bus_select_wait__2
4995   03a1 :   rb2bus_select_wait__3:
4996                    ; Recombine size1 = 0 || size2 = 0
4997                    ; line_number = 75
4998                    ;  while !_rcif done
4999                    ; # Capture the received value:
5000                    ; line_number = 79
5001                    ;  address_bit := _false
5002                    ;info   79, 929
5003 03a1 116f          bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
5004                    ; line_number = 80
5005                    ;  if _rx9d start
5006                    ;info   80, 930
5007                    ; =>bit_code_emit@symbol(): sym=_rx9d
5008                    ; 1TEST: Single test with code in skip slot
5009 03a2 1818          btfsc   _rx9d___byte, _rx9d___bit
5010                    ; line_number = 81
5011                    ; address_bit := _true
5012                    ;info   81, 931
5013 03a3 156f          bsf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
5014                    ; Recombine size1 = 0 || size2 = 0
5015                    ; line_number = 80
5016                    ;  if _rx9d done
5017                    ; line_number = 82
5018                    ; value := _rcreg
5019                    ;info   82, 932
5020 03a4 081a          movf    _rcreg,w
5021 03a5 00a6          movwf   rb2bus_select_wait__value
5022            
5023                    ; # Clear any UART errors by toggling {_cren}:
5024                    ; line_number = 85
5025                    ;  if _oerr start
5026                    ;info   85, 934
5027                    ; =>bit_code_emit@symbol(): sym=_oerr
5028                    ; 1TEST: Single test with code in skip slot
5029 03a6 1898          btfsc   _oerr___byte, _oerr___bit
5030                    ; line_number = 86
5031                    ; _cren := _false
5032                    ;info   86, 935
5033 03a7 1218          bcf     _cren___byte, _cren___bit
5034                    ; Recombine size1 = 0 || size2 = 0
5035                    ; line_number = 85
5036                    ;  if _oerr done
5037                    ; line_number = 87
5038                    ; if _ferr start
5039                    ;info   87, 936
5040                    ; =>bit_code_emit@symbol(): sym=_ferr
5041                    ; 1TEST: Single test with code in skip slot
5042 03a8 1918          btfsc   _ferr___byte, _ferr___bit
5043                    ; line_number = 88
5044                    ; _cren := _false
5045                    ;info   88, 937
5046 03a9 1218          bcf     _cren___byte, _cren___bit
5047                    ; Recombine size1 = 0 || size2 = 0
5048                    ; line_number = 87
5049                    ; if _ferr done
5050                    ; line_number = 89
5051                    ; _cren := _true
5052                    ;info   89, 938
5053 03aa 1618          bsf     _cren___byte, _cren___bit
5054            
5055                    ; line_number = 91
5056                    ;  if address_bit start
5057                    ;info   91, 939
5058                    ; =>bit_code_emit@symbol(): sym=rb2bus_select_wait__address_bit
5059                    ; No 1TEST: true.size=7 false.size=0
5060                    ; No 2TEST: true.size=7 false.size=0
5061                    ; 1GOTO: Single test with GOTO
5062 03ab 1d6f          btfss   rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
5063 03ac 2bb4          goto    rb2bus_select_wait__5
5064                    ; line_number = 92
5065                    ; if value = rb2bus_address start
5066                    ;info   92, 941
5067                    ; Left minus Right
5068 03ad 0820          movf    rb2bus_address,w
5069 03ae 0226          subwf   rb2bus_select_wait__value,w
5070                    ; =>bit_code_emit@symbol(): sym=__z
5071                    ; No 1TEST: true.size=3 false.size=0
5072                    ; No 2TEST: true.size=3 false.size=0
5073                    ; 1GOTO: Single test with GOTO
5074 03af 1d03          btfss   __z___byte, __z___bit
5075 03b0 2bb4          goto    rb2bus_select_wait__4
5076                    ; line_number = 93
5077                    ; rb2bus_selected := _true
5078                    ;info   93, 945
5079 03b1 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
5080                    ; line_number = 94
5081                    ;  call rb2bus_byte_put(rb2_ok)
5082                    ;info   94, 946
5083 03b2 30a5          movlw   165
5084 03b3 23da          call    rb2bus_byte_put
5085            
5086            
5087                    ; Recombine size1 = 0 || size2 = 0
5088   03b4 :   rb2bus_select_wait__4:
5089                    ; line_number = 92
5090                    ; if value = rb2bus_address done
5091                    ; Recombine size1 = 0 || size2 = 0
5092   03b4 :   rb2bus_select_wait__5:
5093                    ; line_number = 91
5094                    ;  if address_bit done
5095 03b4 2b9a          goto    rb2bus_select_wait__1
5096   03b5 :   rb2bus_select_wait__6:
5097                    ; Recombine size1 = 0 || size2 = 0
5098                    ; line_number = 72
5099                    ;  while !rb2bus_selected done
5100                    ; delay after procedure statements=non-uniform
5101                    ; Implied return
5102 03b5 3400          retlw   0
5103            
5104            
5105            
5106            
5107                    ; line_number = 97
5108                    ;info   97, 950
5109                    ; procedure rb2bus_deselect
5110   03b6 :   rb2bus_deselect:
5111                    ; arguments_none
5112                    ; line_number = 99
5113                    ;  returns_nothing
5114            
5115                    ; # This procedure forces this module into the deselected state until
5116                    ; # it is reselected by some master module on the bus.
5117            
5118                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5119                    ; line_number = 104
5120                    ;  rb2bus_selected := _false
5121                    ;info   104, 950
5122 03b6 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
5123            
5124            
5125                    ; delay after procedure statements=non-uniform
5126                    ; Implied return
5127 03b7 3400          retlw   0
5128            
5129            
5130            
5131            
5132                    ; line_number = 107
5133                    ;info   107, 952
5134                    ; procedure rb2bus_byte_get
5135   03b8 :   rb2bus_byte_get:
5136                    ; arguments_none
5137                    ; line_number = 109
5138                    ;  returns byte
5139            
5140                    ; # This procedure will return the next byte received from the bus.
5141                    ; # The address (9th) bit is stored in the global {is_address}.
5142                    ; #
5143                    ; # If {rb2bus_error} is set, 0 is returned.  Otherwise, the {wait}
5144                    ; # procedure is repeatably called until a command byte is successfully
5145                    ; # received.  If an module select byte comes in, we enter a bus
5146                    ; # error condition by setting {rb2bus_error} and returning 0.
5147            
5148                    ; line_number = 119
5149                    ;  local value byte
5150 00000027 = rb2bus_byte_get__value equ globals___0+7
5151                    ; line_number = 120
5152                    ;  local address_bit bit
5153 0000006f = rb2bus_byte_get__address_bit___byte equ globals___0+79
5154 00000003 = rb2bus_byte_get__address_bit___bit equ 3
5155            
5156                    ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
5157                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5158                    ; line_number = 123
5159                    ;  if rb2bus_error start
5160                    ;info   123, 952
5161                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
5162                    ; 1TEST: Single test with code in skip slot
5163 03b8 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
5164                    ; line_number = 124
5165                    ; return 0 start
5166                    ; line_number = 124
5167                    ;info   124, 953
5168 03b9 3400          retlw   0
5169                    ; line_number = 124
5170                    ; return 0 done
5171            
5172                    ; Recombine size1 = 0 || size2 = 0
5173                    ; line_number = 123
5174                    ;  if rb2bus_error done
5175                    ; # Wait for a byte to arrive.
5176                    ; line_number = 127
5177                    ;  _adden := _false
5178                    ;info   127, 954
5179 03ba 1198          bcf     _adden___byte, _adden___bit
5180                    ; line_number = 128
5181                    ;  while !_rcif start
5182   03bb :   rb2bus_byte_get__1:
5183                    ;info   128, 955
5184                    ; =>bit_code_emit@symbol(): sym=_rcif
5185                    ; No 1TEST: true.size=0 false.size=2
5186                    ; No 2TEST: true.size=0 false.size=2
5187                    ; 1GOTO: Single test with GOTO
5188 03bb 1a8c          btfsc   _rcif___byte, _rcif___bit
5189 03bc 2bbf          goto    rb2bus_byte_get__2
5190                    ; line_number = 129
5191                    ; call wait()
5192                    ;info   129, 957
5193 03bd 2082          call    wait
5194            
5195 03be 2bbb          goto    rb2bus_byte_get__1
5196   03bf :   rb2bus_byte_get__2:
5197                    ; Recombine size1 = 0 || size2 = 0
5198                    ; line_number = 128
5199                    ;  while !_rcif done
5200                    ; # Record the 9th bit in {address_bit}:
5201                    ; line_number = 132
5202                    ;  address_bit := _false
5203                    ;info   132, 959
5204 03bf 11ef          bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
5205                    ; line_number = 133
5206                    ;  if _rx9d start
5207                    ;info   133, 960
5208                    ; =>bit_code_emit@symbol(): sym=_rx9d
5209                    ; 1TEST: Single test with code in skip slot
5210 03c0 1818          btfsc   _rx9d___byte, _rx9d___bit
5211                    ; line_number = 134
5212                    ; address_bit := _true
5213                    ;info   134, 961
5214 03c1 15ef          bsf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
5215                    ; Recombine size1 = 0 || size2 = 0
5216                    ; line_number = 133
5217                    ;  if _rx9d done
5218                    ; line_number = 135
5219                    ; value := _rcreg
5220                    ;info   135, 962
5221 03c2 081a          movf    _rcreg,w
5222 03c3 00a7          movwf   rb2bus_byte_get__value
5223            
5224                    ; # Clear any errors by toggling _{cren}:
5225                    ; # FIXME: All of this should be done *before* reading {_rcreg}!!!
5226                    ; line_number = 139
5227                    ;  if _oerr start
5228                    ;info   139, 964
5229                    ; =>bit_code_emit@symbol(): sym=_oerr
5230                    ; 1TEST: Single test with code in skip slot
5231 03c4 1898          btfsc   _oerr___byte, _oerr___bit
5232                    ; line_number = 140
5233                    ; _cren := _false
5234                    ;info   140, 965
5235 03c5 1218          bcf     _cren___byte, _cren___bit
5236                    ; Recombine size1 = 0 || size2 = 0
5237                    ; line_number = 139
5238                    ;  if _oerr done
5239                    ; line_number = 141
5240                    ; if _ferr start
5241                    ;info   141, 966
5242                    ; =>bit_code_emit@symbol(): sym=_ferr
5243                    ; 1TEST: Single test with code in skip slot
5244 03c6 1918          btfsc   _ferr___byte, _ferr___bit
5245                    ; line_number = 142
5246                    ; _cren := _false
5247                    ;info   142, 967
5248 03c7 1218          bcf     _cren___byte, _cren___bit
5249                    ; Recombine size1 = 0 || size2 = 0
5250                    ; line_number = 141
5251                    ; if _ferr done
5252                    ; line_number = 143
5253                    ; _cren := _true
5254                    ;info   143, 968
5255 03c8 1618          bsf     _cren___byte, _cren___bit
5256            
5257                    ; line_number = 145
5258                    ;  if address_bit start
5259                    ;info   145, 969
5260                    ; =>bit_code_emit@symbol(): sym=rb2bus_byte_get__address_bit
5261                    ; No 1TEST: true.size=13 false.size=0
5262                    ; No 2TEST: true.size=13 false.size=0
5263                    ; 1GOTO: Single test with GOTO
5264 03c9 1def          btfss   rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
5265 03ca 2bd8          goto    rb2bus_byte_get__5
5266                    ; # We have an unexpected address select coming in:
5267                    ; line_number = 147
5268                    ;  if value = rb2bus_address start
5269                    ;info   147, 971
5270                    ; Left minus Right
5271 03cb 0820          movf    rb2bus_address,w
5272 03cc 0227          subwf   rb2bus_byte_get__value,w
5273                    ; =>bit_code_emit@symbol(): sym=__z
5274                    ; No 1TEST: true.size=4 false.size=2
5275                    ; No 2TEST: true.size=4 false.size=2
5276                    ; 2GOTO: Single test with two GOTO's
5277 03cd 1d03          btfss   __z___byte, __z___bit
5278 03ce 2bd4          goto    rb2bus_byte_get__3
5279                    ; # We are being selected again:
5280                    ; line_number = 149
5281                    ;  rb2bus_selected := _true
5282                    ;info   149, 975
5283 03cf 146f          bsf     rb2bus_selected___byte, rb2bus_selected___bit
5284                    ; line_number = 150
5285                    ;  _adden := _false
5286                    ;info   150, 976
5287 03d0 1198          bcf     _adden___byte, _adden___bit
5288            
5289                    ; line_number = 152
5290                    ;  call rb2bus_byte_put(rb2_ok)
5291                    ;info   152, 977
5292 03d1 30a5          movlw   165
5293 03d2 23da          call    rb2bus_byte_put
5294                    ; Recombine code1_bit_states != code2_bit_states
5295 03d3 2bd6          goto    rb2bus_byte_get__4
5296                    ; 2GOTO: Starting code 2
5297   03d4 :   rb2bus_byte_get__3:
5298                    ; # Somebody else is being selected; we deselect:
5299                    ; line_number = 155
5300                    ;  rb2bus_selected := _false
5301                    ;info   155, 980
5302 03d4 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
5303                    ; line_number = 156
5304                    ;  _adden := _true
5305                    ;info   156, 981
5306 03d5 1598          bsf     _adden___byte, _adden___bit
5307            
5308   03d6 :   rb2bus_byte_get__4:
5309                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5310                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
5311                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
5312                    ; line_number = 147
5313                    ;  if value = rb2bus_address done
5314                    ; # We want to get back to the beginning of decode:
5315                    ; line_number = 159
5316                    ;  rb2bus_error := _true
5317                    ;info   159, 982
5318 03d6 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
5319                    ; line_number = 160
5320                    ;  value := 0
5321                    ;info   160, 983
5322 03d7 01a7          clrf    rb2bus_byte_get__value
5323            
5324                    ; Recombine size1 = 0 || size2 = 0
5325   03d8 :   rb2bus_byte_get__5:
5326                    ; line_number = 145
5327                    ;  if address_bit done
5328                    ; # Regular data byte:
5329                    ; line_number = 163
5330                    ;  return value start
5331                    ; line_number = 163
5332                    ;info   163, 984
5333 03d8 0827          movf    rb2bus_byte_get__value,w
5334 03d9 0008          return  
5335                    ; line_number = 163
5336                    ;  return value done
5337            
5338            
5339                    ; delay after procedure statements=non-uniform
5340            
5341            
5342            
5343            
5344                    ; line_number = 166
5345                    ;info   166, 986
5346                    ; procedure rb2bus_byte_put
5347   03da :   rb2bus_byte_put:
5348                    ; Last argument is sitting in W; save into argument variable
5349 03da 00a8          movwf   rb2bus_byte_put__value
5350                    ; delay=4294967295
5351                    ; line_number = 167
5352                    ; argument value byte
5353 00000028 = rb2bus_byte_put__value equ globals___0+8
5354                    ; line_number = 168
5355                    ;  returns_nothing
5356            
5357                    ; # This procedure will send {value} to the bus.  It automatically
5358                    ; # consumes the echo that is on the bus.  If {rb2bus_error} is
5359                    ; # set, this procedure does nothing.
5360            
5361                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5362                    ; line_number = 174
5363                    ;  if !rb2bus_error start
5364                    ;info   174, 987
5365                    ; =>bit_code_emit@symbol(): sym=rb2bus_error
5366                    ; No 1TEST: true.size=0 false.size=18
5367                    ; No 2TEST: true.size=0 false.size=18
5368                    ; 1GOTO: Single test with GOTO
5369 03db 18ef          btfsc   rb2bus_error___byte, rb2bus_error___bit
5370 03dc 2bef          goto    rb2bus_byte_put__4
5371                    ; # Wait until {_txreg} is ready for a value:
5372                    ; line_number = 176
5373                    ;  while !_txif start
5374   03dd :   rb2bus_byte_put__1:
5375                    ;info   176, 989
5376                    ; =>bit_code_emit@symbol(): sym=_txif
5377                    ; No 1TEST: true.size=0 false.size=2
5378                    ; No 2TEST: true.size=0 false.size=2
5379                    ; 1GOTO: Single test with GOTO
5380 03dd 1a0c          btfsc   _txif___byte, _txif___bit
5381 03de 2be1          goto    rb2bus_byte_put__2
5382                    ; line_number = 177
5383                    ; call wait()
5384                    ;info   177, 991
5385 03df 2082          call    wait
5386            
5387 03e0 2bdd          goto    rb2bus_byte_put__1
5388   03e1 :   rb2bus_byte_put__2:
5389                    ; Recombine size1 = 0 || size2 = 0
5390                    ; line_number = 176
5391                    ;  while !_txif done
5392                    ; # Ship {value} out to the bus with 9th bit turned off:
5393                    ; line_number = 180
5394                    ;  _adden := _false
5395                    ;info   180, 993
5396 03e1 1198          bcf     _adden___byte, _adden___bit
5397                    ; line_number = 181
5398                    ;  _tx9d := _false
5399                    ;info   181, 994
5400 03e2 1683          bsf     __rp0___byte, __rp0___bit
5401 03e3 1018          bcf     _tx9d___byte, _tx9d___bit
5402                    ; line_number = 182
5403                    ;  _txreg := value
5404                    ;info   182, 996
5405 03e4 1283          bcf     __rp0___byte, __rp0___bit
5406 03e5 0828          movf    rb2bus_byte_put__value,w
5407 03e6 0099          movwf   _txreg
5408            
5409                    ; # Wait for the echo to show up:
5410                    ; line_number = 185
5411                    ;  while !_rcif start
5412   03e7 :   rb2bus_byte_put__3:
5413                    ;info   185, 999
5414                    ; =>bit_code_emit@symbol(): sym=_rcif
5415                    ; 1TEST: Single test with code in skip slot
5416 03e7 1e8c          btfss   _rcif___byte, _rcif___bit
5417                    ; # Still waiting:
5418 03e8 2be7          goto    rb2bus_byte_put__3
5419                    ; Recombine size1 = 0 || size2 = 0
5420                    ; line_number = 185
5421                    ;  while !_rcif done
5422                    ; # Throw the received byte away (store into {_w}).
5423                    ; line_number = 188
5424                    ;  assemble
5425                    ;info   188, 1001
5426                    ; line_number = 189
5427                    ;info   189, 1001
5428 03e9 081a          movf    _rcreg,w
5429            
5430                    ; # Recover from any receive errors by toggling {_cren}:
5431                    ; line_number = 192
5432                    ;  if _oerr start
5433                    ;info   192, 1002
5434                    ; =>bit_code_emit@symbol(): sym=_oerr
5435                    ; 1TEST: Single test with code in skip slot
5436 03ea 1898          btfsc   _oerr___byte, _oerr___bit
5437                    ; line_number = 193
5438                    ; _cren := _false
5439                    ;info   193, 1003
5440 03eb 1218          bcf     _cren___byte, _cren___bit
5441                    ; Recombine size1 = 0 || size2 = 0
5442                    ; line_number = 192
5443                    ;  if _oerr done
5444                    ; line_number = 194
5445                    ; if _ferr start
5446                    ;info   194, 1004
5447                    ; =>bit_code_emit@symbol(): sym=_ferr
5448                    ; 1TEST: Single test with code in skip slot
5449 03ec 1918          btfsc   _ferr___byte, _ferr___bit
5450                    ; line_number = 195
5451                    ; _cren := _false
5452                    ;info   195, 1005
5453 03ed 1218          bcf     _cren___byte, _cren___bit
5454                    ; Recombine size1 = 0 || size2 = 0
5455                    ; line_number = 194
5456                    ; if _ferr done
5457                    ; line_number = 196
5458                    ; _cren := _true
5459                    ;info   196, 1006
5460 03ee 1618          bsf     _cren___byte, _cren___bit
5461            
5462            
5463   03ef :   rb2bus_byte_put__4:
5464                    ; Recombine size1 = 0 || size2 = 0
5465                    ; line_number = 174
5466                    ;  if !rb2bus_error done
5467                    ; delay after procedure statements=non-uniform
5468                    ; Implied return
5469 03ef 3400          retlw   0
5470            
5471            
5472            
5473            
5474                    ; line_number = 199
5475                    ;info   199, 1008
5476                    ; procedure rb2bus_command
5477   03f0 :   rb2bus_command:
5478                    ; Last argument is sitting in W; save into argument variable
5479 03f0 00ab          movwf   rb2bus_command__command
5480                    ; delay=4294967295
5481                    ; line_number = 200
5482                    ; argument command byte
5483 0000002b = rb2bus_command__command equ globals___0+11
5484                    ; line_number = 201
5485                    ;  returns_nothing
5486            
5487                    ; # This procedure will process an shared {command}.  This procedure
5488                    ; # accesses the global string {id}.
5489            
5490                    ; line_number = 206
5491                    ;  local new_address byte
5492 00000029 = rb2bus_command__new_address equ globals___0+9
5493                    ; line_number = 207
5494                    ;  local temp byte
5495 0000002a = rb2bus_command__temp equ globals___0+10
5496            
5497                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5498                    ; line_number = 209
5499                    ;  switch command & 7 start
5500                    ;info   209, 1009
5501                    ; switch_before:(data:00=uu=>00 code:00=uu=>00) size=1
5502 03f1 3003          movlw   rb2bus_command__13>>8
5503 03f2 008a          movwf   __pclath
5504 03f3 3007          movlw   7
5505 03f4 052b          andwf   rb2bus_command__command,w
5506                    ; switch after expression:(data:00=uu=>00 code:00=uu=>00)
5507 03f5 3ef7          addlw   rb2bus_command__13
5508 03f6 0082          movwf   __pcl
5509                    ; page_group 8
5510   03f7 :   rb2bus_command__13:
5511 03f7 2c37          goto    rb2bus_command__14
5512 03f8 2c37          goto    rb2bus_command__14
5513 03f9 2c37          goto    rb2bus_command__14
5514 03fa 2c37          goto    rb2bus_command__14
5515 03fb 2bff          goto    rb2bus_command__9
5516 03fc 2c2b          goto    rb2bus_command__10
5517 03fd 2c34          goto    rb2bus_command__11
5518 03fe 2c36          goto    rb2bus_command__12
5519                    ; line_number = 210
5520                    ; case 4
5521   03ff :   rb2bus_command__9:
5522                    ; # 1111 1100 (Address_Set):
5523                    ; # Return old address:
5524                    ; line_number = 213
5525                    ;  call rb2bus_byte_put(rb2bus_address)
5526                    ;info   213, 1023
5527 03ff 0820          movf    rb2bus_address,w
5528 0400 23da          call    rb2bus_byte_put
5529            
5530                    ; # Fetch new address:
5531                    ; line_number = 216
5532                    ;  new_address := rb2bus_byte_get()
5533                    ;info   216, 1025
5534 0401 23b8          call    rb2bus_byte_get
5535 0402 00a9          movwf   rb2bus_command__new_address
5536                    ; line_number = 217
5537                    ;  if new_address = 0 || new_address = rb2bus_address start
5538                    ;info   217, 1027
5539                    ; Left minus Right
5540 0403 0829          movf    rb2bus_command__new_address,w
5541                    ; =>bit_code_emit@symbol(): sym=__z
5542                    ; No 1TEST: true.size=1 false.size=36
5543                    ; No 2TEST: true.size=1 false.size=36
5544                    ; 2GOTO: Single test with two GOTO's
5545 0404 1903          btfsc   __z___byte, __z___bit
5546 0405 2c0a          goto    rb2bus_command__5
5547                    ; Recombine code1_bit_states != code2_bit_states
5548                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
5549                    ; Left minus Right
5550 0406 0820          movf    rb2bus_address,w
5551 0407 0229          subwf   rb2bus_command__new_address,w
5552                    ; =>bit_code_emit@symbol(): sym=__z
5553                    ; No 1TEST: true.size=4 false.size=27
5554                    ; No 2TEST: true.size=4 false.size=27
5555                    ; 2GOTO: Single test with two GOTO's
5556 0408 1d03          btfss   __z___byte, __z___bit
5557 0409 2c0f          goto    rb2bus_command__6
5558   040a :   rb2bus_command__5:
5559                    ; line_number = 218
5560                    ; call rb2bus_byte_put(0)
5561                    ;info   218, 1034
5562 040a 3000          movlw   0
5563 040b 23da          call    rb2bus_byte_put
5564                    ; line_number = 219
5565                    ;  rb2bus_error := _true
5566                    ;info   219, 1036
5567 040c 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
5568                    ; line_number = 220
5569                    ;  rb2bus_selected := _false
5570                    ;info   220, 1037
5571 040d 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
5572 040e 2c2a          goto    rb2bus_command__7
5573                    ; 2GOTO: Starting code 2
5574   040f :   rb2bus_command__6:
5575                    ; # Return new address:
5576                    ; line_number = 223
5577                    ;  call rb2bus_byte_put(new_address)
5578                    ;info   223, 1039
5579 040f 0829          movf    rb2bus_command__new_address,w
5580 0410 23da          call    rb2bus_byte_put
5581            
5582                    ; # Fetch new address again as a check:
5583                    ; line_number = 226
5584                    ;  temp := rb2bus_byte_get()
5585                    ;info   226, 1041
5586 0411 23b8          call    rb2bus_byte_get
5587 0412 00aa          movwf   rb2bus_command__temp
5588                    ; line_number = 227
5589                    ;  if temp != new_address start
5590                    ;info   227, 1043
5591                    ; Left minus Right
5592 0413 0829          movf    rb2bus_command__new_address,w
5593 0414 022a          subwf   rb2bus_command__temp,w
5594                    ; =>bit_code_emit@symbol(): sym=__z
5595                    ; No 1TEST: true.size=14 false.size=4
5596                    ; No 2TEST: true.size=14 false.size=4
5597                    ; 2GOTO: Single test with two GOTO's
5598 0415 1d03          btfss   __z___byte, __z___bit
5599 0416 2c26          goto    rb2bus_command__3
5600                    ; line_number = 232
5601                    ; call rb2bus_eedata_write(new_address)
5602                    ;info   232, 1047
5603 0417 0829          movf    rb2bus_command__new_address,w
5604 0418 2370          call    rb2bus_eedata_write
5605                    ; line_number = 233
5606                    ;  temp := rb2bus_eedata_read()
5607                    ;info   233, 1049
5608 0419 2355          call    rb2bus_eedata_read
5609 041a 00aa          movwf   rb2bus_command__temp
5610                    ; line_number = 234
5611                    ;  if temp = new_address start
5612                    ;info   234, 1051
5613                    ; Left minus Right
5614 041b 0829          movf    rb2bus_command__new_address,w
5615 041c 022a          subwf   rb2bus_command__temp,w
5616                    ; =>bit_code_emit@symbol(): sym=__z
5617                    ; No 1TEST: true.size=3 false.size=1
5618                    ; No 2TEST: true.size=3 false.size=1
5619                    ; 2GOTO: Single test with two GOTO's
5620 041d 1d03          btfss   __z___byte, __z___bit
5621 041e 2c23          goto    rb2bus_command__1
5622                    ; line_number = 235
5623                    ; rb2bus_address := new_address
5624                    ;info   235, 1055
5625 041f 0829          movf    rb2bus_command__new_address,w
5626 0420 00a0          movwf   rb2bus_address
5627                    ; line_number = 236
5628                    ;  call rb2bus_byte_put(rb2_ok)
5629                    ;info   236, 1057
5630 0421 30a5          movlw   165
5631 0422 2c24          goto    rb2bus_command__2
5632                    ; 2GOTO: Starting code 2
5633   0423 :   rb2bus_command__1:
5634                    ; line_number = 238
5635                    ; call rb2bus_byte_put(0)
5636                    ;info   238, 1059
5637 0423 3000          movlw   0
5638   0424 :   rb2bus_command__2:
5639                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5640                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5641                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
5642 0424 23da          call    rb2bus_byte_put
5643                    ; line_number = 234
5644                    ;  if temp = new_address done
5645 0425 2c2a          goto    rb2bus_command__4
5646                    ; 2GOTO: Starting code 2
5647   0426 :   rb2bus_command__3:
5648                    ; line_number = 228
5649                    ; call rb2bus_byte_put(0)
5650                    ;info   228, 1062
5651 0426 3000          movlw   0
5652 0427 23da          call    rb2bus_byte_put
5653                    ; line_number = 229
5654                    ;  rb2bus_error := _true
5655                    ;info   229, 1064
5656 0428 14ef          bsf     rb2bus_error___byte, rb2bus_error___bit
5657                    ; line_number = 230
5658                    ;  rb2bus_selected := _false
5659                    ;info   230, 1065
5660 0429 106f          bcf     rb2bus_selected___byte, rb2bus_selected___bit
5661   042a :   rb2bus_command__4:
5662                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5663                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5664                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
5665                    ; line_number = 227
5666                    ;  if temp != new_address done
5667   042a :   rb2bus_command__7:
5668                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5669                    ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5670                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
5671                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
5672                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
5673                    ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
5674                    ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
5675                    ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:00=uu=>00)
5676                    ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
5677                    ; line_number = 217
5678                    ;  if new_address = 0 || new_address = rb2bus_address done
5679 042a 2c37          goto    rb2bus_command__14
5680                    ; line_number = 239
5681                    ; case 5
5682   042b :   rb2bus_command__10:
5683                    ; # 1111 1101 (Id_next):
5684                    ; line_number = 241
5685                    ;  if rb2bus_index < id.size start
5686                    ;info   241, 1067
5687 042b 301c          movlw   28
5688 042c 0221          subwf   rb2bus_index,w
5689                    ; =>bit_code_emit@symbol(): sym=__c
5690                    ; No 1TEST: true.size=0 false.size=4
5691                    ; No 2TEST: true.size=0 false.size=4
5692                    ; 1GOTO: Single test with GOTO
5693 042d 1803          btfsc   __c___byte, __c___bit
5694 042e 2c33          goto    rb2bus_command__8
5695                    ; line_number = 242
5696                    ; call rb2bus_byte_put(id[rb2bus_index])
5697                    ;info   242, 1071
5698 042f 0821          movf    rb2bus_index,w
5699 0430 20f1          call    id
5700 0431 23da          call    rb2bus_byte_put
5701                    ; line_number = 243
5702                    ;  rb2bus_index := rb2bus_index + 1
5703                    ;info   243, 1074
5704 0432 0aa1          incf    rb2bus_index,f
5705                    ; #if rb2bus_index >= id.size
5706                    ; #	rb2bus_index := rb2bus_index - 1
5707   0433 :   rb2bus_command__8:
5708                    ; Recombine size1 = 0 || size2 = 0
5709                    ; line_number = 241
5710                    ;  if rb2bus_index < id.size done
5711 0433 2c37          goto    rb2bus_command__14
5712                    ; line_number = 246
5713                    ; case 6
5714   0434 :   rb2bus_command__11:
5715                    ; # 1111 1110 (Id_start):
5716                    ; line_number = 248
5717                    ;  rb2bus_index := 0
5718                    ;info   248, 1076
5719 0434 01a1          clrf    rb2bus_index
5720 0435 2c37          goto    rb2bus_command__14
5721                    ; line_number = 249
5722                    ; case 7
5723   0436 :   rb2bus_command__12:
5724                    ; # 1111 1111 (Deselect):
5725                    ; line_number = 251
5726                    ;  call rb2bus_deselect()
5727                    ;info   251, 1078
5728 0436 23b6          call    rb2bus_deselect
5729            
5730            
5731   0437 :   rb2bus_command__14:
5732                    ; line_number = 209
5733                    ;  switch command & 7 done
5734                    ; delay after procedure statements=non-uniform
5735                    ; Implied return
5736 0437 3400          retlw   0
5737            
5738            
5739            
5740            
5741                    ; buffer = '_signed16'
5742                    ; line_number = 62
5743                    ;info   62, 1080
5744                    ; procedure _signed16_pointer_load
5745   0438 :   _signed16_pointer_load:
5746                    ; Last argument is sitting in W; save into argument variable
5747 0438 00b6          movwf   _signed16_pointer_load__pointer
5748                    ; delay=4294967295
5749                    ; line_number = 63
5750                    ; argument pointer byte
5751 00000036 = _signed16_pointer_load__pointer equ globals___0+22
5752                    ; line_number = 64
5753                    ;  returns_nothing
5754                    ; line_number = 65
5755                    ;  return_suppress
5756            
5757                    ; # This procedure will load the signed16 "A" register with {pointer}.
5758            
5759                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5760                    ; line_number = 69
5761                    ;  assemble
5762                    ;info   69, 1081
5763                    ; # Pointer is in W; move it to {_fsr}:
5764                    ; line_number = 71
5765                    ;info   71, 1081
5766 0439 0084          movwf   _fsr
5767                    ; # Set up {_irp} and _{fsr}:
5768                    ; line_number = 73
5769                    ;info   73, 1082
5770 043a 1383          bcf     _irp___byte, _irp___bit
5771                    ; line_number = 74
5772                    ;info   74, 1083
5773 043b 0d84          rlf     _fsr,f
5774                    ; line_number = 75
5775                    ;info   75, 1084
5776 043c 1803          btfsc   _c___byte, _c___bit
5777                    ; line_number = 76
5778                    ;info   76, 1085
5779 043d 1783          bsf     _irp___byte, _irp___bit
5780                    ; line_number = 77
5781                    ;info   77, 1086
5782 043e 1004          bcf     _fsr, 0
5783                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}
5784                    ; line_number = 79
5785                    ;info   79, 1087
5786 043f 0800          movf    _indf,w
5787                    ; line_number = 80
5788                    ;info   80, 1088
5789 0440 00ac          movwf   _signed16_a0
5790                    ; line_number = 81
5791                    ;info   81, 1089
5792 0441 0a84          incf    _fsr,f
5793                    ; line_number = 82
5794                    ;info   82, 1090
5795 0442 0800          movf    _indf,w
5796                    ; line_number = 83
5797                    ;info   83, 1091
5798 0443 00ad          movwf   _signed16_a1
5799                    ; line_number = 84
5800                    ;info   84, 1092
5801 0444 0008          return  
5802            
5803            
5804                    ; delay after procedure statements=non-uniform
5805                    ; Return instruction suppressed by 'return_suppress'
5806            
5807            
5808            
5809            
5810                    ; line_number = 87
5811                    ;info   87, 1093
5812                    ; procedure _signed16_pointer_add
5813   0445 :   _signed16_pointer_add:
5814                    ; Last argument is sitting in W; save into argument variable
5815 0445 00b7          movwf   _signed16_pointer_add__pointer
5816                    ; delay=4294967295
5817                    ; line_number = 88
5818                    ; argument pointer byte
5819 00000037 = _signed16_pointer_add__pointer equ globals___0+23
5820                    ; line_number = 89
5821                    ;  returns_nothing
5822                    ; line_number = 90
5823                    ;  return_suppress
5824            
5825                    ; # This procedure will add the signed16 "A" register with {pointer}
5826                    ; # and store the result back into the "A" register.
5827            
5828                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5829                    ; line_number = 95
5830                    ;  assemble
5831                    ;info   95, 1094
5832                    ; # Pointer is in W; move it to {_fsr}:
5833                    ; line_number = 97
5834                    ;info   97, 1094
5835 0446 0084          movwf   _fsr
5836                    ; # Set up {_irp} and _{fsr}:
5837                    ; line_number = 99
5838                    ;info   99, 1095
5839 0447 1383          bcf     _irp___byte, _irp___bit
5840                    ; line_number = 100
5841                    ;info   100, 1096
5842 0448 0d84          rlf     _fsr,f
5843                    ; line_number = 101
5844                    ;info   101, 1097
5845 0449 1803          btfsc   _c___byte, _c___bit
5846                    ; line_number = 102
5847                    ;info   102, 1098
5848 044a 1783          bsf     _irp___byte, _irp___bit
5849                    ; line_number = 103
5850                    ;info   103, 1099
5851 044b 1004          bcf     _fsr, 0
5852                    ; # Grab MSB and add it into {_signed16_a0} (MSB):
5853                    ; line_number = 105
5854                    ;info   105, 1100
5855 044c 0800          movf    _indf,w
5856                    ; line_number = 106
5857                    ;info   106, 1101
5858 044d 07ac          addwf   _signed16_a0,f
5859                    ; line_number = 107
5860                    ;info   107, 1102
5861 044e 0a84          incf    _fsr,f
5862            
5863                    ; # Grab LSB and add it into {_signed16_a1} (LSB):
5864                    ; line_number = 110
5865                    ;info   110, 1103
5866 044f 0800          movf    _indf,w
5867                    ; line_number = 111
5868                    ;info   111, 1104
5869 0450 07ad          addwf   _signed16_a1,f
5870            
5871                    ; # If C is 1, increment {_signed16_a0} (MSB):
5872                    ; line_number = 114
5873                    ;info   114, 1105
5874 0451 1803          btfsc   _c___byte, _c___bit
5875                    ; line_number = 115
5876                    ;info   115, 1106
5877 0452 0aac          incf    _signed16_a0,f
5878                    ; line_number = 116
5879                    ;info   116, 1107
5880 0453 0008          return  
5881            
5882            
5883                    ; delay after procedure statements=non-uniform
5884                    ; Return instruction suppressed by 'return_suppress'
5885            
5886            
5887            
5888            
5889                    ; line_number = 119
5890                    ;info   119, 1108
5891                    ; procedure _signed16_pointer_divide
5892   0454 :   _signed16_pointer_divide:
5893                    ; Last argument is sitting in W; save into argument variable
5894 0454 00b8          movwf   _signed16_pointer_divide__pointer
5895                    ; delay=4294967295
5896                    ; line_number = 120
5897                    ; argument pointer byte
5898 00000038 = _signed16_pointer_divide__pointer equ globals___0+24
5899                    ; line_number = 121
5900                    ;  returns_nothing
5901                    ; line_number = 122
5902                    ;  return_suppress
5903            
5904                    ; # This procedure will divide the signed16 A register by {pointer} and
5905                    ; # store the result back into the A "register".
5906            
5907                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5908                    ; line_number = 127
5909                    ;  assemble
5910                    ;info   127, 1109
5911                    ; # Pointer is in W; move it to {_fsr}:
5912                    ; line_number = 129
5913                    ;info   129, 1109
5914 0455 0084          movwf   _fsr
5915                    ; # Set up {_irp} and _{fsr}:
5916                    ; line_number = 131
5917                    ;info   131, 1110
5918 0456 1383          bcf     _irp___byte, _irp___bit
5919                    ; line_number = 132
5920                    ;info   132, 1111
5921 0457 0d84          rlf     _fsr,f
5922                    ; line_number = 133
5923                    ;info   133, 1112
5924 0458 1803          btfsc   _c___byte, _c___bit
5925                    ; line_number = 134
5926                    ;info   134, 1113
5927 0459 1783          bsf     _irp___byte, _irp___bit
5928                    ; line_number = 135
5929                    ;info   135, 1114
5930 045a 1004          bcf     _fsr, 0
5931                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
5932                    ; line_number = 137
5933                    ;info   137, 1115
5934 045b 0800          movf    _indf,w
5935                    ; line_number = 138
5936                    ;info   138, 1116
5937 045c 00ae          movwf   _signed16_b0
5938                    ; line_number = 139
5939                    ;info   139, 1117
5940 045d 0a84          incf    _fsr,f
5941                    ; line_number = 140
5942                    ;info   140, 1118
5943 045e 0800          movf    _indf,w
5944                    ; line_number = 141
5945                    ;info   141, 1119
5946 045f 00af          movwf   _signed16_b1
5947            
5948                    ; # Perform the divide:
5949                    ; line_number = 144
5950                    ;info   144, 1120
5951 0460 252a          call    _signed16_divide_raw
5952            
5953                    ; line_number = 146
5954                    ;info   146, 1121
5955 0461 0008          return  
5956            
5957            
5958                    ; delay after procedure statements=non-uniform
5959                    ; Return instruction suppressed by 'return_suppress'
5960            
5961            
5962            
5963            
5964                    ; line_number = 149
5965                    ;info   149, 1122
5966                    ; procedure _signed16_pointer_multiply
5967   0462 :   _signed16_pointer_multiply:
5968                    ; Last argument is sitting in W; save into argument variable
5969 0462 00b9          movwf   _signed16_pointer_multiply__pointer
5970                    ; delay=4294967295
5971                    ; line_number = 150
5972                    ; argument pointer byte
5973 00000039 = _signed16_pointer_multiply__pointer equ globals___0+25
5974                    ; line_number = 151
5975                    ;  returns_nothing
5976                    ; line_number = 152
5977                    ;  return_suppress
5978            
5979                    ; # This procedure will multiply {pointer} with the signed16 A "register"
5980                    ; # and store the result back into the A "register".
5981            
5982                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
5983                    ; line_number = 157
5984                    ;  assemble
5985                    ;info   157, 1123
5986                    ; # Pointer is in W; move it to {_fsr}:
5987                    ; line_number = 159
5988                    ;info   159, 1123
5989 0463 0084          movwf   _fsr
5990                    ; # Set up {_irp} and _{fsr}:
5991                    ; line_number = 161
5992                    ;info   161, 1124
5993 0464 1383          bcf     _irp___byte, _irp___bit
5994                    ; line_number = 162
5995                    ;info   162, 1125
5996 0465 0d84          rlf     _fsr,f
5997                    ; line_number = 163
5998                    ;info   163, 1126
5999 0466 1803          btfsc   _c___byte, _c___bit
6000                    ; line_number = 164
6001                    ;info   164, 1127
6002 0467 1783          bsf     _irp___byte, _irp___bit
6003                    ; line_number = 165
6004                    ;info   165, 1128
6005 0468 1004          bcf     _fsr, 0
6006                    ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
6007                    ; line_number = 167
6008                    ;info   167, 1129
6009 0469 0800          movf    _indf,w
6010                    ; line_number = 168
6011                    ;info   168, 1130
6012 046a 00ae          movwf   _signed16_b0
6013                    ; line_number = 169
6014                    ;info   169, 1131
6015 046b 0a84          incf    _fsr,f
6016                    ; line_number = 170
6017                    ;info   170, 1132
6018 046c 0800          movf    _indf,w
6019                    ; line_number = 171
6020                    ;info   171, 1133
6021 046d 00af          movwf   _signed16_b1
6022            
6023                    ; # The code below came from <http://www.piclist.com/>.
6024                    ; # It is not totally clear who wrote the code.  The names
6025                    ; # Bob Fehrenbac & Scott Dattalo are present, but there is
6026                    ; # no explicit authorship.  The Multiple byte addition routine
6027                    ; # is from Microchip AN617.  As is typical, nobody bothered
6028                    ; # to comment the code.
6029                    ; #
6030                    ; # This multiplies <_signed16_a0:_signed16_a1> by
6031                    ; # <_signed16_b0:_signed16_b1> and store the signed result into
6032                    ; # <_signed16_result0:_signed16_result1:_signed16_result2:_signed16_result3>
6033                    ; # Then we trim the result down and store it back into
6034                    ; # <_signed16_a0:_signed16_a1>.
6035                    ; #
6036                    ; # This multiply routine takes between 134 to 248 cycles.
6037                    ; #
6038                    ; # This program looks at the lsb of _signed16_a1 to decide whether
6039                    ; # to add _signed16_b1 to _signed16_result2.
6040                    ; # and b2 to _signed16_result1, with appropriate carrys
6041                    ; # It then looks at the lsb of _signed16_a0 to decide whether
6042                    ; # to add _signed16_b1 to _signed16_result1 and 
6043                    ; # signed16_b0 to _signed16_result0, again with appropriate carrys.
6044                    ; # The rotates then only have to be done 8 times
6045                    ; #
6046                    ; # This is uses slightly more program but takes a little less time than 
6047                    ; # a routine that performs one 16 bit addition per rotate and 16 rotates
6048            
6049                    ; line_number = 199
6050                    ;  assemble
6051                    ;info   199, 1134
6052                    ; line_number = 200
6053                    ;info   200, 1134
6054 046e 01b3          clrf    _signed16_result0
6055                    ; line_number = 201
6056                    ;info   201, 1135
6057 046f 01b2          clrf    _signed16_result1
6058                    ; line_number = 202
6059                    ;info   202, 1136
6060 0470 01b1          clrf    _signed16_result2
6061                    ; line_number = 203
6062                    ;info   203, 1137
6063 0471 3080          movlw   128
6064                    ; line_number = 204
6065                    ;info   204, 1138
6066 0472 00b0          movwf   _signed16_result3
6067            
6068                    ; line_number = 206
6069                    ;info   206, 1139
6070 0473 01b4          clrf    _signed16_neg_flag
6071            
6072                    ; line_number = 208
6073                    ;info   208, 1140
6074 0474 1fac          btfss   _signed16_a0, 7
6075                    ; line_number = 209
6076                    ;info   209, 1141
6077 0475 2c7c          goto    _signed16_multiply_a_pos
6078                    ; line_number = 210
6079                    ;info   210, 1142
6080 0476 09ac          comf    _signed16_a0,f
6081                    ; line_number = 211
6082                    ;info   211, 1143
6083 0477 09ad          comf    _signed16_a1,f
6084                    ; line_number = 212
6085                    ;info   212, 1144
6086 0478 0aad          incf    _signed16_a1,f
6087                    ; line_number = 213
6088                    ;info   213, 1145
6089 0479 1903          btfsc   _z___byte, _z___bit
6090                    ; line_number = 214
6091                    ;info   214, 1146
6092 047a 0aac          incf    _signed16_a0,f
6093                    ; line_number = 215
6094                    ;info   215, 1147
6095 047b 0ab4          incf    _signed16_neg_flag,f
6096            
6097                    ; line_number = 217
6098   047c :   _signed16_multiply_a_pos:
6099                    ; line_number = 218
6100                    ;info   218, 1148
6101 047c 1fae          btfss   _signed16_b0, 7
6102                    ; line_number = 219
6103                    ;info   219, 1149
6104 047d 2c84          goto    _signed16_multiply_nextbit
6105                    ; line_number = 220
6106                    ;info   220, 1150
6107 047e 09ae          comf    _signed16_b0,f
6108                    ; line_number = 221
6109                    ;info   221, 1151
6110 047f 09af          comf    _signed16_b1,f
6111                    ; line_number = 222
6112                    ;info   222, 1152
6113 0480 0aaf          incf    _signed16_b1,f
6114                    ; line_number = 223
6115                    ;info   223, 1153
6116 0481 1903          btfsc   _z___byte, _z___bit
6117                    ; line_number = 224
6118                    ;info   224, 1154
6119 0482 0aae          incf    _signed16_b0,f
6120                    ; line_number = 225
6121                    ;info   225, 1155
6122 0483 0ab4          incf    _signed16_neg_flag,f
6123            
6124                    ; line_number = 227
6125   0484 :   _signed16_multiply_nextbit:
6126                    ; line_number = 228
6127                    ;info   228, 1156
6128 0484 0cac          rrf     _signed16_a0,f
6129                    ; line_number = 229
6130                    ;info   229, 1157
6131 0485 0cad          rrf     _signed16_a1,f
6132            
6133                    ; line_number = 231
6134                    ;info   231, 1158
6135 0486 1c03          btfss   _c___byte, _c___bit
6136                    ; line_number = 232
6137                    ;info   232, 1159
6138 0487 2c91          goto    _signed16_multiply_nobit_l
6139                    ; line_number = 233
6140                    ;info   233, 1160
6141 0488 082f          movf    _signed16_b1,w
6142                    ; line_number = 234
6143                    ;info   234, 1161
6144 0489 07b1          addwf   _signed16_result2,f
6145            
6146                    ; line_number = 236
6147                    ;info   236, 1162
6148 048a 082e          movf    _signed16_b0,w
6149                    ; line_number = 237
6150                    ;info   237, 1163
6151 048b 1803          btfsc   _c___byte, _c___bit
6152                    ; line_number = 238
6153                    ;info   238, 1164
6154 048c 0f2e          incfsz  _signed16_b0,w
6155                    ; line_number = 239
6156                    ;info   239, 1165
6157 048d 07b2          addwf   _signed16_result1,f
6158                    ; line_number = 240
6159                    ;info   240, 1166
6160 048e 1803          btfsc   _c___byte, _c___bit
6161                    ; line_number = 241
6162                    ;info   241, 1167
6163 048f 0ab3          incf    _signed16_result0,f
6164                    ; line_number = 242
6165                    ;info   242, 1168
6166 0490 1003          bcf     _c___byte, _c___bit
6167            
6168                    ; line_number = 244
6169   0491 :   _signed16_multiply_nobit_l:
6170                    ; line_number = 245
6171                    ;info   245, 1169
6172 0491 1fad          btfss   _signed16_a1, 7
6173                    ; line_number = 246
6174                    ;info   246, 1170
6175 0492 2c99          goto    _signed16_multiply_nobit_h
6176                    ; line_number = 247
6177                    ;info   247, 1171
6178 0493 082f          movf    _signed16_b1,w
6179                    ; line_number = 248
6180                    ;info   248, 1172
6181 0494 07b2          addwf   _signed16_result1,f
6182                    ; line_number = 249
6183                    ;info   249, 1173
6184 0495 1803          btfsc   _c___byte, _c___bit
6185                    ; line_number = 250
6186                    ;info   250, 1174
6187 0496 0ab3          incf    _signed16_result0,f
6188                    ; line_number = 251
6189                    ;info   251, 1175
6190 0497 082e          movf    _signed16_b0,w
6191                    ; line_number = 252
6192                    ;info   252, 1176
6193 0498 07b3          addwf   _signed16_result0,f
6194            
6195                    ; line_number = 254
6196   0499 :   _signed16_multiply_nobit_h:
6197                    ; line_number = 255
6198                    ;info   255, 1177
6199 0499 0cb3          rrf     _signed16_result0,f
6200                    ; line_number = 256
6201                    ;info   256, 1178
6202 049a 0cb2          rrf     _signed16_result1,f
6203                    ; line_number = 257
6204                    ;info   257, 1179
6205 049b 0cb1          rrf     _signed16_result2,f
6206                    ; line_number = 258
6207                    ;info   258, 1180
6208 049c 0cb0          rrf     _signed16_result3,f
6209            
6210                    ; line_number = 260
6211                    ;info   260, 1181
6212 049d 1c03          btfss   _c___byte, _c___bit
6213                    ; line_number = 261
6214                    ;info   261, 1182
6215 049e 2c84          goto    _signed16_multiply_nextbit
6216                    ; line_number = 262
6217                    ;info   262, 1183
6218 049f 1c34          btfss   _signed16_neg_flag, 0
6219                    ; line_number = 263
6220                    ;info   263, 1184
6221 04a0 2cac          goto    _signed16_mulitply_no_invert
6222            
6223                    ; line_number = 265
6224                    ;info   265, 1185
6225 04a1 09b3          comf    _signed16_result0,f
6226                    ; line_number = 266
6227                    ;info   266, 1186
6228 04a2 09b2          comf    _signed16_result1,f
6229                    ; line_number = 267
6230                    ;info   267, 1187
6231 04a3 09b1          comf    _signed16_result2,f
6232                    ; line_number = 268
6233                    ;info   268, 1188
6234 04a4 09b0          comf    _signed16_result3,f
6235            
6236                    ; line_number = 270
6237                    ;info   270, 1189
6238 04a5 0ab0          incf    _signed16_result3,f
6239                    ; line_number = 271
6240                    ;info   271, 1190
6241 04a6 1903          btfsc   _z___byte, _z___bit
6242                    ; line_number = 272
6243                    ;info   272, 1191
6244 04a7 0ab1          incf    _signed16_result2,f
6245                    ; line_number = 273
6246                    ;info   273, 1192
6247 04a8 1903          btfsc   _z___byte, _z___bit
6248                    ; line_number = 274
6249                    ;info   274, 1193
6250 04a9 0ab2          incf    _signed16_result1,f
6251                    ; line_number = 275
6252                    ;info   275, 1194
6253 04aa 1903          btfsc   _z___byte, _z___bit
6254                    ; line_number = 276
6255                    ;info   276, 1195
6256 04ab 0ab3          incf    _signed16_result0,f
6257                    ; line_number = 277
6258   04ac :   _signed16_mulitply_no_invert:
6259            
6260                    ; # Store the final result into _signed16_a<0:1>:
6261                    ; line_number = 280
6262                    ;info   280, 1196
6263 04ac 0831          movf    _signed16_result2,w
6264                    ; line_number = 281
6265                    ;info   281, 1197
6266 04ad 00ac          movwf   _signed16_a0
6267                    ; line_number = 282
6268                    ;info   282, 1198
6269 04ae 0830          movf    _signed16_result3,w
6270                    ; line_number = 283
6271                    ;info   283, 1199
6272 04af 00ad          movwf   _signed16_a1
6273                    ; line_number = 284
6274                    ;info   284, 1200
6275 04b0 0008          return  
6276            
6277            
6278                    ; delay after procedure statements=non-uniform
6279                    ; Return instruction suppressed by 'return_suppress'
6280            
6281            
6282            
6283            
6284                    ; line_number = 287
6285                    ;info   287, 1201
6286                    ; procedure _signed16_pointer_subtract
6287   04b1 :   _signed16_pointer_subtract:
6288                    ; Last argument is sitting in W; save into argument variable
6289 04b1 00ba          movwf   _signed16_pointer_subtract__pointer
6290                    ; delay=4294967295
6291                    ; line_number = 288
6292                    ; argument pointer byte
6293 0000003a = _signed16_pointer_subtract__pointer equ globals___0+26
6294                    ; line_number = 289
6295                    ;  returns_nothing
6296                    ; line_number = 290
6297                    ;  return_suppress
6298            
6299                    ; # This procedure will subtract {pointer} from the signed16 A "register"
6300                    ; # and store the result back into the A "register".
6301            
6302                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6303                    ; line_number = 295
6304                    ;  assemble
6305                    ;info   295, 1202
6306                    ; # Pointer is in W; move it to {_fsr}:
6307                    ; line_number = 297
6308                    ;info   297, 1202
6309 04b2 0084          movwf   _fsr
6310                    ; # Set up {_irp} and _{fsr}:
6311                    ; line_number = 299
6312                    ;info   299, 1203
6313 04b3 1383          bcf     _irp___byte, _irp___bit
6314                    ; line_number = 300
6315                    ;info   300, 1204
6316 04b4 0d84          rlf     _fsr,f
6317                    ; line_number = 301
6318                    ;info   301, 1205
6319 04b5 1803          btfsc   _c___byte, _c___bit
6320                    ; line_number = 302
6321                    ;info   302, 1206
6322 04b6 1783          bsf     _irp___byte, _irp___bit
6323                    ; line_number = 303
6324                    ;info   303, 1207
6325 04b7 1004          bcf     _fsr, 0
6326            
6327                    ; # Subtract MSB from {_signed16_a0} (MSB):
6328                    ; line_number = 306
6329                    ;info   306, 1208
6330 04b8 0900          comf    _indf,w
6331                    ; line_number = 307
6332                    ;info   307, 1209
6333 04b9 07ac          addwf   _signed16_a0,f
6334                    ; line_number = 308
6335                    ;info   308, 1210
6336 04ba 0a84          incf    _fsr,f
6337            
6338                    ; # Subtract LSB from {_signed16_a1} (LSB):
6339                    ; line_number = 311
6340                    ;info   311, 1211
6341 04bb 0900          comf    _indf,w
6342                    ; line_number = 312
6343                    ;info   312, 1212
6344 04bc 3e01          addlw   1
6345            
6346                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
6347                    ; line_number = 315
6348                    ;info   315, 1213
6349 04bd 1803          btfsc   _c___byte, _c___bit
6350                    ; line_number = 316
6351                    ;info   316, 1214
6352 04be 0aac          incf    _signed16_a0,f
6353            
6354                    ; # Finish the subtraction:
6355                    ; line_number = 319
6356                    ;info   319, 1215
6357 04bf 07ad          addwf   _signed16_a1,f
6358            
6359                    ; # If the C bit is set, increment {_signed16_a0} (MSB):
6360                    ; line_number = 322
6361                    ;info   322, 1216
6362 04c0 1803          btfsc   _c___byte, _c___bit
6363                    ; line_number = 323
6364                    ;info   323, 1217
6365 04c1 0aac          incf    _signed16_a0,f
6366                    ; line_number = 324
6367                    ;info   324, 1218
6368 04c2 0008          return  
6369            
6370            
6371                    ; delay after procedure statements=non-uniform
6372                    ; Return instruction suppressed by 'return_suppress'
6373            
6374            
6375            
6376            
6377                    ; line_number = 327
6378                    ;info   327, 1219
6379                    ; procedure _signed16_pointer_store
6380   04c3 :   _signed16_pointer_store:
6381                    ; Last argument is sitting in W; save into argument variable
6382 04c3 00bb          movwf   _signed16_pointer_store__pointer
6383                    ; delay=4294967295
6384                    ; line_number = 328
6385                    ; argument pointer byte
6386 0000003b = _signed16_pointer_store__pointer equ globals___0+27
6387                    ; line_number = 329
6388                    ;  returns_nothing
6389                    ; line_number = 330
6390                    ;  return_suppress
6391            
6392                    ; # This procedure will store the signed16 A "register" into {pointer}.
6393            
6394                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6395                    ; line_number = 334
6396                    ;  assemble
6397                    ;info   334, 1220
6398                    ; # Pointer is in W; move it to {_fsr}:
6399                    ; line_number = 336
6400                    ;info   336, 1220
6401 04c4 0084          movwf   _fsr
6402                    ; # Set up {_irp} and _{fsr}:
6403                    ; line_number = 338
6404                    ;info   338, 1221
6405 04c5 1383          bcf     _irp___byte, _irp___bit
6406                    ; line_number = 339
6407                    ;info   339, 1222
6408 04c6 0d84          rlf     _fsr,f
6409                    ; line_number = 340
6410                    ;info   340, 1223
6411 04c7 1803          btfsc   _c___byte, _c___bit
6412                    ; line_number = 341
6413                    ;info   341, 1224
6414 04c8 1783          bsf     _irp___byte, _irp___bit
6415                    ; line_number = 342
6416                    ;info   342, 1225
6417 04c9 1004          bcf     _fsr, 0
6418                    ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}:
6419                    ; line_number = 344
6420                    ;info   344, 1226
6421 04ca 082c          movf    _signed16_a0,w
6422                    ; line_number = 345
6423                    ;info   345, 1227
6424 04cb 0080          movwf   _indf
6425                    ; line_number = 346
6426                    ;info   346, 1228
6427 04cc 0a84          incf    _fsr,f
6428                    ; line_number = 347
6429                    ;info   347, 1229
6430 04cd 082d          movf    _signed16_a1,w
6431                    ; line_number = 348
6432                    ;info   348, 1230
6433 04ce 0080          movwf   _indf
6434                    ; line_number = 349
6435                    ;info   349, 1231
6436 04cf 0008          return  
6437            
6438            
6439                    ; delay after procedure statements=non-uniform
6440                    ; Return instruction suppressed by 'return_suppress'
6441            
6442            
6443            
6444            
6445                    ; line_number = 352
6446                    ;info   352, 1232
6447                    ; procedure _signed16_negate
6448   04d0 :   _signed16_negate:
6449                    ; arguments_none
6450                    ; line_number = 354
6451                    ;  returns_nothing
6452            
6453                    ; # This procedure will negate the signed16 A registers.
6454            
6455                    ; # Flip the sign bit:
6456                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6457                    ; line_number = 359
6458                    ;  _signed16_a0 := 0xff ^ _signed16_a0
6459                    ;info   359, 1232
6460 04d0 09ac          comf    _signed16_a0,f
6461                    ; line_number = 360
6462                    ;  _signed16_a1 := 0 - _signed16_a1
6463                    ;info   360, 1233
6464 04d1 082d          movf    _signed16_a1,w
6465 04d2 3c00          sublw   0
6466 04d3 00ad          movwf   _signed16_a1
6467                    ; line_number = 361
6468                    ;  if _c start
6469                    ;info   361, 1236
6470                    ; =>bit_code_emit@symbol(): sym=_c
6471                    ; 1TEST: Single test with code in skip slot
6472 04d4 1803          btfsc   _c___byte, _c___bit
6473                    ; line_number = 362
6474                    ; _signed16_a0 := _signed16_a0 + 1    
6475                    ;info   362, 1237
6476 04d5 0aac          incf    _signed16_a0,f
6477            
6478            
6479                    ; Recombine size1 = 0 || size2 = 0
6480                    ; line_number = 361
6481                    ;  if _c done
6482                    ; delay after procedure statements=non-uniform
6483                    ; Implied return
6484 04d6 3400          retlw   0
6485            
6486            
6487            
6488            
6489                    ; line_number = 365
6490                    ;info   365, 1239
6491                    ; procedure _signed16_pointer_swap
6492   04d7 :   _signed16_pointer_swap:
6493                    ; Last argument is sitting in W; save into argument variable
6494 04d7 00bc          movwf   _signed16_pointer_swap__pointer
6495                    ; delay=4294967295
6496                    ; line_number = 366
6497                    ; argument pointer byte
6498 0000003c = _signed16_pointer_swap__pointer equ globals___0+28
6499                    ; line_number = 367
6500                    ;  returns_nothing
6501                    ; line_number = 368
6502                    ;  return_suppress
6503            
6504                    ; # This procedure will swap the signed16 A "register" with {pointer}:
6505            
6506                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6507                    ; line_number = 372
6508                    ;  assemble
6509                    ;info   372, 1240
6510                    ; # Pointer is in W; move it to {_fsr}:
6511                    ; line_number = 374
6512                    ;info   374, 1240
6513 04d8 0084          movwf   _fsr
6514                    ; # Set up {_irp} and _{fsr}:
6515                    ; line_number = 376
6516                    ;info   376, 1241
6517 04d9 1383          bcf     _irp___byte, _irp___bit
6518                    ; line_number = 377
6519                    ;info   377, 1242
6520 04da 0d84          rlf     _fsr,f
6521                    ; line_number = 378
6522                    ;info   378, 1243
6523 04db 1803          btfsc   _c___byte, _c___bit
6524                    ; line_number = 379
6525                    ;info   379, 1244
6526 04dc 1783          bsf     _irp___byte, _irp___bit
6527                    ; line_number = 380
6528                    ;info   380, 1245
6529 04dd 1004          bcf     _fsr, 0
6530            
6531                    ; # Swap {pointer} with {_signed16_a0}:
6532                    ; line_number = 383
6533                    ;info   383, 1246
6534 04de 0800          movf    _indf,w
6535                    ; line_number = 384
6536                    ;info   384, 1247
6537 04df 06ac          xorwf   _signed16_a0,f
6538                    ; line_number = 385
6539                    ;info   385, 1248
6540 04e0 062c          xorwf   _signed16_a0,w
6541                    ; line_number = 386
6542                    ;info   386, 1249
6543 04e1 06ac          xorwf   _signed16_a0,f
6544                    ; line_number = 387
6545                    ;info   387, 1250
6546 04e2 0080          movwf   _indf
6547            
6548                    ; # Swap {pointer}+1 with {_signed16_a1}:
6549                    ; line_number = 390
6550                    ;info   390, 1251
6551 04e3 0a84          incf    _fsr,f
6552                    ; line_number = 391
6553                    ;info   391, 1252
6554 04e4 0800          movf    _indf,w
6555                    ; line_number = 392
6556                    ;info   392, 1253
6557 04e5 06ad          xorwf   _signed16_a1,f
6558                    ; line_number = 393
6559                    ;info   393, 1254
6560 04e6 062d          xorwf   _signed16_a1,w
6561                    ; line_number = 394
6562                    ;info   394, 1255
6563 04e7 06ad          xorwf   _signed16_a1,f
6564                    ; line_number = 395
6565                    ;info   395, 1256
6566 04e8 0080          movwf   _indf
6567                    ; line_number = 396
6568                    ;info   396, 1257
6569 04e9 0008          return  
6570            
6571            
6572                    ; delay after procedure statements=non-uniform
6573                    ; Return instruction suppressed by 'return_suppress'
6574            
6575            
6576            
6577            
6578 0000003e = _signed16_from_byte__0return equ globals___0+30
6579                    ; line_number = 399
6580                    ;info   399, 1258
6581                    ; procedure _signed16_from_byte
6582   04ea :   _signed16_from_byte:
6583                    ; Last argument is sitting in W; save into argument variable
6584 04ea 00bd          movwf   _signed16_from_byte__number
6585                    ; delay=4294967295
6586                    ; line_number = 400
6587                    ; argument number byte
6588 0000003d = _signed16_from_byte__number equ globals___0+29
6589                    ; line_number = 401
6590                    ;  returns signed16
6591            
6592                    ; # This procedure will convert {number} into a signed16 and return it.
6593            
6594                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6595                    ; line_number = 405
6596                    ;  _signed16_a0 := 0
6597                    ;info   405, 1259
6598 04eb 01ac          clrf    _signed16_a0
6599                    ; line_number = 406
6600                    ;  _signed16_a1 := number
6601                    ;info   406, 1260
6602 04ec 083d          movf    _signed16_from_byte__number,w
6603 04ed 00ad          movwf   _signed16_a1
6604                    ; line_number = 407
6605                    ;  assemble
6606                    ;info   407, 1262
6607                    ; line_number = 408
6608                    ;info   408, 1262
6609 04ee 301f          movlw   _signed16_from_byte__0return>>1
6610                    ; line_number = 409
6611                    ;info   409, 1263
6612 04ef 24c3          call    _signed16_pointer_store
6613                    ; line_number = 410
6614                    ;info   410, 1264
6615 04f0 341f          retlw   _signed16_from_byte__0return>>1
6616            
6617            
6618                    ; delay after procedure statements=non-uniform
6619                    ; Exiting procedure with no return(s); infinite loop fail
6620   04f1 :   _signed16_from_byte__1:
6621 04f1 2cf1          goto    _signed16_from_byte__1
6622            
6623            
6624            
6625            
6626 00000042 = _signed16_from_byte2__0return equ globals___0+34
6627                    ; line_number = 413
6628                    ;info   413, 1266
6629                    ; procedure _signed16_from_byte2
6630   04f2 :   _signed16_from_byte2:
6631                    ; Last argument is sitting in W; save into argument variable
6632 04f2 00c1          movwf   _signed16_from_byte2__byte2
6633                    ; delay=4294967295
6634                    ; line_number = 414
6635                    ; argument byte1 byte
6636 00000040 = _signed16_from_byte2__byte1 equ globals___0+32
6637                    ; line_number = 415
6638                    ; argument byte2 byte
6639 00000041 = _signed16_from_byte2__byte2 equ globals___0+33
6640                    ; line_number = 416
6641                    ;  returns signed16
6642            
6643                    ; # This procedure will convert {byte1} and {byte2} into a signed16
6644                    ; # and return it.
6645            
6646                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6647                    ; line_number = 421
6648                    ;  _signed16_a0 := byte1
6649                    ;info   421, 1267
6650 04f3 0840          movf    _signed16_from_byte2__byte1,w
6651 04f4 00ac          movwf   _signed16_a0
6652                    ; line_number = 422
6653                    ;  _signed16_a1 := byte2
6654                    ;info   422, 1269
6655 04f5 0841          movf    _signed16_from_byte2__byte2,w
6656 04f6 00ad          movwf   _signed16_a1
6657                    ; line_number = 423
6658                    ;  assemble
6659                    ;info   423, 1271
6660                    ; line_number = 424
6661                    ;info   424, 1271
6662 04f7 3021          movlw   _signed16_from_byte2__0return>>1
6663                    ; line_number = 425
6664                    ;info   425, 1272
6665 04f8 24c3          call    _signed16_pointer_store
6666                    ; line_number = 426
6667                    ;info   426, 1273
6668 04f9 3421          retlw   _signed16_from_byte2__0return>>1
6669            
6670            
6671                    ; delay after procedure statements=non-uniform
6672                    ; Exiting procedure with no return(s); infinite loop fail
6673   04fa :   _signed16_from_byte2__1:
6674 04fa 2cfa          goto    _signed16_from_byte2__1
6675            
6676            
6677            
6678            
6679                    ; line_number = 429
6680                    ;info   429, 1275
6681                    ; procedure _signed16_to_byte
6682   04fb :   _signed16_to_byte:
6683                    ; line_number = 430
6684                    ; argument number signed16
6685 00000044 = _signed16_to_byte__number equ globals___0+36
6686                    ; line_number = 431
6687                    ;  returns byte
6688            
6689                    ; # This procedure will convert {number} into a 8-bit integer and return it.
6690            
6691                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6692                    ; line_number = 435
6693                    ;  assemble
6694                    ;info   435, 1275
6695                    ; # Get the argument stored into the signed16 "A" register:
6696                    ; line_number = 437
6697                    ;info   437, 1275
6698 04fb 3022          movlw   _signed16_to_byte__number>>1
6699                    ; line_number = 438
6700                    ;info   438, 1276
6701 04fc 2438          call    _signed16_pointer_load
6702                    ; line_number = 439
6703                    ; return _signed16_a1 start
6704                    ; line_number = 439
6705                    ;info   439, 1277
6706 04fd 082d          movf    _signed16_a1,w
6707 04fe 0008          return  
6708                    ; line_number = 439
6709                    ; return _signed16_a1 done
6710            
6711            
6712                    ; delay after procedure statements=non-uniform
6713            
6714            
6715            
6716            
6717                    ; line_number = 442
6718                    ;info   442, 1279
6719                    ; procedure _signed16_byte_high
6720   04ff :   _signed16_byte_high:
6721                    ; line_number = 443
6722                    ; argument number signed16
6723 00000046 = _signed16_byte_high__number equ globals___0+38
6724                    ; line_number = 444
6725                    ;  returns byte
6726            
6727                    ; # This procedure will return the high 8 bits of {number}.
6728            
6729                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6730                    ; line_number = 448
6731                    ;  assemble
6732                    ;info   448, 1279
6733                    ; # Get the argument stored into the signed16 "A" register:
6734                    ; line_number = 450
6735                    ;info   450, 1279
6736 04ff 3023          movlw   _signed16_byte_high__number>>1
6737                    ; line_number = 451
6738                    ;info   451, 1280
6739 0500 2438          call    _signed16_pointer_load
6740                    ; line_number = 452
6741                    ; return _signed16_a0 start
6742                    ; line_number = 452
6743                    ;info   452, 1281
6744 0501 082c          movf    _signed16_a0,w
6745 0502 0008          return  
6746                    ; line_number = 452
6747                    ; return _signed16_a0 done
6748            
6749            
6750                    ; delay after procedure statements=non-uniform
6751            
6752            
6753            
6754            
6755                    ; line_number = 455
6756                    ;info   455, 1283
6757                    ; procedure _signed16_byte_low
6758   0503 :   _signed16_byte_low:
6759                    ; line_number = 456
6760                    ; argument number signed16
6761 00000048 = _signed16_byte_low__number equ globals___0+40
6762                    ; line_number = 457
6763                    ;  returns byte
6764            
6765                    ; # This procedure will return the low 8 bits of {number}.
6766            
6767                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6768                    ; line_number = 461
6769                    ;  assemble
6770                    ;info   461, 1283
6771                    ; # Get the argument stored into the signed16 "A" register:
6772                    ; line_number = 463
6773                    ;info   463, 1283
6774 0503 3024          movlw   _signed16_byte_low__number>>1
6775                    ; line_number = 464
6776                    ;info   464, 1284
6777 0504 2438          call    _signed16_pointer_load
6778                    ; line_number = 465
6779                    ; return _signed16_a1 start
6780                    ; line_number = 465
6781                    ;info   465, 1285
6782 0505 082d          movf    _signed16_a1,w
6783 0506 0008          return  
6784                    ; line_number = 465
6785                    ; return _signed16_a1 done
6786            
6787            
6788                    ; delay after procedure statements=non-uniform
6789            
6790            
6791            
6792            
6793                    ; line_number = 468
6794                    ;info   468, 1287
6795                    ; procedure _signed16_equals
6796   0507 :   _signed16_equals:
6797                    ; arguments_none
6798                    ; line_number = 470
6799                    ;  returns_nothing
6800            
6801                    ; # This procedure will set the Z bit if register "A" is zero.
6802            
6803                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6804                    ; line_number = 474
6805                    ;  assemble
6806                    ;info   474, 1287
6807                    ; line_number = 475
6808                    ;info   475, 1287
6809 0507 082c          movf    _signed16_a0,w
6810                    ; line_number = 476
6811                    ;info   476, 1288
6812 0508 042d          iorwf   _signed16_a1,w
6813                    ; # Return is implicit
6814            
6815            
6816                    ; delay after procedure statements=non-uniform
6817                    ; Implied return
6818 0509 3400          retlw   0
6819            
6820            
6821            
6822            
6823                    ; line_number = 480
6824                    ;info   480, 1290
6825                    ; procedure _signed16_not_equal
6826   050a :   _signed16_not_equal:
6827                    ; arguments_none
6828                    ; line_number = 482
6829                    ;  returns_nothing
6830            
6831                    ; # This procedure will set the Z bit if register "A" is non-zero.
6832            
6833                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6834                    ; line_number = 486
6835                    ;  assemble
6836                    ;info   486, 1290
6837                    ; line_number = 487
6838                    ;info   487, 1290
6839 050a 082c          movf    _signed16_a0,w
6840                    ; line_number = 488
6841                    ;info   488, 1291
6842 050b 042d          iorwf   _signed16_a1,w
6843                    ; line_number = 489
6844                    ; if _z start
6845                    ;info   489, 1292
6846                    ; =>bit_code_emit@symbol(): sym=_z
6847                    ; No 1TEST: true.size=2 false.size=0
6848                    ; No 2TEST: true.size=2 false.size=0
6849                    ; 1GOTO: Single test with GOTO
6850 050c 1d03          btfss   _z___byte, _z___bit
6851 050d 2d10          goto    _signed16_not_equal__1
6852                    ; line_number = 490
6853                    ; _z := _false
6854                    ;info   490, 1294
6855 050e 1103          bcf     _z___byte, _z___bit
6856                    ; line_number = 491
6857                    ;  return start
6858                    ; line_number = 491
6859                    ;info   491, 1295
6860 050f 3400          retlw   0
6861                    ; line_number = 491
6862                    ;  return done
6863                    ; Recombine size1 = 0 || size2 = 0
6864   0510 :   _signed16_not_equal__1:
6865                    ; line_number = 489
6866                    ; if _z done
6867                    ; line_number = 492
6868                    ; _z := _true
6869                    ;info   492, 1296
6870 0510 1503          bsf     _z___byte, _z___bit
6871                    ; # Return is implicit
6872            
6873            
6874                    ; delay after procedure statements=non-uniform
6875                    ; Implied return
6876 0511 3400          retlw   0
6877            
6878            
6879            
6880            
6881                    ; line_number = 496
6882                    ;info   496, 1298
6883                    ; procedure _signed16_less_than
6884   0512 :   _signed16_less_than:
6885                    ; arguments_none
6886                    ; line_number = 498
6887                    ;  returns_nothing
6888            
6889                    ; # This procedure will set the Z bit if register "A" is non-zero and
6890                    ; # positive.
6891            
6892                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6893                    ; line_number = 503
6894                    ;  _z := _false
6895                    ;info   503, 1298
6896 0512 1103          bcf     _z___byte, _z___bit
6897                    ; line_number = 504
6898                    ;  if _signed16_a0@7 start
6899                    ;info   504, 1299
6900 0000002c = _signed16_less_than__select__1___byte equ _signed16_a0
6901 00000007 = _signed16_less_than__select__1___bit equ 7
6902                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than__select__1
6903                    ; 1TEST: Single test with code in skip slot
6904 0513 1bac          btfsc   _signed16_less_than__select__1___byte, _signed16_less_than__select__1___bit
6905                    ; line_number = 505
6906                    ; _z := _true
6907                    ;info   505, 1300
6908 0514 1503          bsf     _z___byte, _z___bit
6909                    ; Recombine size1 = 0 || size2 = 0
6910                    ; line_number = 504
6911                    ;  if _signed16_a0@7 done
6912                    ; # Return is implicit
6913            
6914            
6915                    ; delay after procedure statements=non-uniform
6916                    ; Implied return
6917 0515 3400          retlw   0
6918            
6919            
6920            
6921            
6922                    ; line_number = 509
6923                    ;info   509, 1302
6924                    ; procedure _signed16_less_than_or_equal
6925   0516 :   _signed16_less_than_or_equal:
6926                    ; arguments_none
6927                    ; line_number = 511
6928                    ;  returns_nothing
6929            
6930                    ; # This procedure will set the Z bit if register "A" is zero or positive.
6931            
6932                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6933                    ; line_number = 515
6934                    ;  assemble
6935                    ;info   515, 1302
6936                    ; line_number = 516
6937                    ;info   516, 1302
6938 0516 082d          movf    _signed16_a1,w
6939                    ; line_number = 517
6940                    ;info   517, 1303
6941 0517 042c          iorwf   _signed16_a0,w
6942                    ; line_number = 518
6943                    ; if _z start
6944                    ;info   518, 1304
6945                    ; =>bit_code_emit@symbol(): sym=_z
6946                    ; 1TEST: Single test with code in skip slot
6947 0518 1903          btfsc   _z___byte, _z___bit
6948                    ; line_number = 519
6949                    ; return start
6950                    ; line_number = 519
6951                    ;info   519, 1305
6952 0519 3400          retlw   0
6953                    ; line_number = 519
6954                    ; return done
6955                    ; Recombine size1 = 0 || size2 = 0
6956                    ; line_number = 518
6957                    ; if _z done
6958                    ; # _z == _false
6959                    ; line_number = 521
6960                    ;  if _signed16_a0@7 start
6961                    ;info   521, 1306
6962 0000002c = _signed16_less_than_or_equal__select__1___byte equ _signed16_a0
6963 00000007 = _signed16_less_than_or_equal__select__1___bit equ 7
6964                    ; =>bit_code_emit@symbol(): sym=_signed16_less_than_or_equal__select__1
6965                    ; 1TEST: Single test with code in skip slot
6966 051a 1bac          btfsc   _signed16_less_than_or_equal__select__1___byte, _signed16_less_than_or_equal__select__1___bit
6967                    ; line_number = 522
6968                    ; _z := _true
6969                    ;info   522, 1307
6970 051b 1503          bsf     _z___byte, _z___bit
6971                    ; Recombine size1 = 0 || size2 = 0
6972                    ; line_number = 521
6973                    ;  if _signed16_a0@7 done
6974                    ; # Return is implicit
6975            
6976            
6977                    ; delay after procedure statements=non-uniform
6978                    ; Implied return
6979 051c 3400          retlw   0
6980            
6981            
6982            
6983            
6984                    ; line_number = 526
6985                    ;info   526, 1309
6986                    ; procedure _signed16_greater_than
6987   051d :   _signed16_greater_than:
6988                    ; arguments_none
6989                    ; line_number = 528
6990                    ;  returns_nothing
6991            
6992                    ; # This procedure will set the Z bit if register "A" is non-zero and
6993                    ; # positive.
6994            
6995                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
6996                    ; line_number = 533
6997                    ;  assemble
6998                    ;info   533, 1309
6999                    ; line_number = 534
7000                    ;info   534, 1309
7001 051d 082c          movf    _signed16_a0,w
7002                    ; line_number = 535
7003                    ;info   535, 1310
7004 051e 042d          iorwf   _signed16_a1,w
7005                    ; line_number = 536
7006                    ; if _z start
7007                    ;info   536, 1311
7008                    ; =>bit_code_emit@symbol(): sym=_z
7009                    ; No 1TEST: true.size=2 false.size=0
7010                    ; No 2TEST: true.size=2 false.size=0
7011                    ; 1GOTO: Single test with GOTO
7012 051f 1d03          btfss   _z___byte, _z___bit
7013 0520 2d23          goto    _signed16_greater_than__1
7014                    ; line_number = 537
7015                    ; _z := _false
7016                    ;info   537, 1313
7017 0521 1103          bcf     _z___byte, _z___bit
7018                    ; line_number = 538
7019                    ;  return     start
7020                    ; line_number = 538
7021                    ;info   538, 1314
7022 0522 3400          retlw   0
7023                    ; line_number = 538
7024                    ;  return     done
7025                    ; Recombine size1 = 0 || size2 = 0
7026   0523 :   _signed16_greater_than__1:
7027                    ; line_number = 536
7028                    ; if _z done
7029                    ; # _z == _false
7030                    ; line_number = 540
7031                    ;  if !(_signed16_a0@7) start
7032                    ;info   540, 1315
7033 0000002c = _signed16_greater_than__select__2___byte equ _signed16_a0
7034 00000007 = _signed16_greater_than__select__2___bit equ 7
7035                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than__select__2
7036                    ; 1TEST: Single test with code in skip slot
7037 0523 1fac          btfss   _signed16_greater_than__select__2___byte, _signed16_greater_than__select__2___bit
7038                    ; line_number = 541
7039                    ; _z := _true
7040                    ;info   541, 1316
7041 0524 1503          bsf     _z___byte, _z___bit
7042                    ; Recombine size1 = 0 || size2 = 0
7043                    ; line_number = 540
7044                    ;  if !(_signed16_a0@7) done
7045                    ; # Return is implicit:
7046            
7047            
7048                    ; delay after procedure statements=non-uniform
7049                    ; Implied return
7050 0525 3400          retlw   0
7051            
7052            
7053            
7054            
7055                    ; line_number = 545
7056                    ;info   545, 1318
7057                    ; procedure _signed16_greater_than_or_equal
7058   0526 :   _signed16_greater_than_or_equal:
7059                    ; arguments_none
7060                    ; line_number = 547
7061                    ;  returns_nothing
7062            
7063                    ; # This procedure will set the Z bit if register "A" is zero or positive.
7064            
7065                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
7066                    ; line_number = 551
7067                    ;  _z := _true
7068                    ;info   551, 1318
7069 0526 1503          bsf     _z___byte, _z___bit
7070                    ; line_number = 552
7071                    ;  if _signed16_a0@7 start
7072                    ;info   552, 1319
7073 0000002c = _signed16_greater_than_or_equal__select__1___byte equ _signed16_a0
7074 00000007 = _signed16_greater_than_or_equal__select__1___bit equ 7
7075                    ; =>bit_code_emit@symbol(): sym=_signed16_greater_than_or_equal__select__1
7076                    ; 1TEST: Single test with code in skip slot
7077 0527 1bac          btfsc   _signed16_greater_than_or_equal__select__1___byte, _signed16_greater_than_or_equal__select__1___bit
7078                    ; line_number = 553
7079                    ; _z := _false
7080                    ;info   553, 1320
7081 0528 1103          bcf     _z___byte, _z___bit
7082                    ; Recombine size1 = 0 || size2 = 0
7083                    ; line_number = 552
7084                    ;  if _signed16_a0@7 done
7085                    ; # Return is implicit:
7086            
7087            
7088                    ; delay after procedure statements=non-uniform
7089                    ; Implied return
7090 0529 3400          retlw   0
7091            
7092            
7093            
7094            
7095                    ; line_number = 578
7096                    ;info   578, 1322
7097                    ; procedure _signed16_divide_raw
7098   052a :   _signed16_divide_raw:
7099                    ; arguments_none
7100                    ; line_number = 580
7101                    ;  returns_nothing
7102                    ; line_number = 581
7103                    ;  return_suppress
7104            
7105                    ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
7106                    ; line_number = 583
7107                    ;  assemble
7108                    ;info   583, 1322
7109                    ; line_number = 584
7110                    ;info   584, 1322
7111 052a 2556          call    _signed16_divide_s_sign
7112            
7113                    ; #Initialize:
7114                    ; line_number = 587
7115                    ;info   587, 1323
7116 052b 3010          movlw   16
7117                    ; line_number = 588
7118                    ;info   588, 1324
7119 052c 00b5          movwf   _signed16_count
7120                    ; line_number = 589
7121                    ;info   589, 1325
7122 052d 082c          movf    _signed16_a0,w
7123                    ; line_number = 590
7124                    ;info   590, 1326
7125 052e 00b3          movwf   _signed16_temp0
7126                    ; line_number = 591
7127                    ;info   591, 1327
7128 052f 082d          movf    _signed16_a1,w
7129                    ; line_number = 592
7130                    ;info   592, 1328
7131 0530 00b2          movwf   _signed16_temp1
7132                    ; line_number = 593
7133                    ;info   593, 1329
7134 0531 01ac          clrf    _signed16_a0
7135                    ; line_number = 594
7136                    ;info   594, 1330
7137 0532 01ad          clrf    _signed16_a1
7138                    ; line_number = 595
7139                    ;info   595, 1331
7140 0533 01b1          clrf    _signed16_rem0
7141                    ; line_number = 596
7142                    ;info   596, 1332
7143 0534 01b0          clrf    _signed16_rem1
7144                    ; # Loop 16 times usinge {_signed16_count}:
7145                    ; line_number = 598
7146   0535 :   _signed16_divide_dloop:
7147                    ; line_number = 599
7148                    ;info   599, 1333
7149 0535 1003          bcf     _c___byte, _c___bit
7150                    ; line_number = 600
7151                    ;info   600, 1334
7152 0536 0db2          rlf     _signed16_temp1,f
7153                    ; line_number = 601
7154                    ;info   601, 1335
7155 0537 0db3          rlf     _signed16_temp0,f
7156                    ; line_number = 602
7157                    ;info   602, 1336
7158 0538 0db0          rlf     _signed16_rem1,f
7159                    ; line_number = 603
7160                    ;info   603, 1337
7161 0539 0db1          rlf     _signed16_rem0,f
7162                    ; line_number = 604
7163                    ;info   604, 1338
7164 053a 082e          movf    _signed16_b0,w
7165                    ; line_number = 605
7166                    ;info   605, 1339
7167 053b 0231          subwf   _signed16_rem0,w
7168                    ; line_number = 606
7169                    ;info   606, 1340
7170 053c 1d03          btfss   _z___byte, _z___bit
7171                    ; line_number = 607
7172                    ;info   607, 1341
7173 053d 2d40          goto    _signed16_divide_no_check
7174                    ; line_number = 608
7175                    ;info   608, 1342
7176 053e 082f          movf    _signed16_b1,w
7177                    ; line_number = 609
7178                    ;info   609, 1343
7179 053f 0230          subwf   _signed16_rem1,w
7180                    ; line_number = 610
7181   0540 :   _signed16_divide_no_check:
7182                    ; line_number = 611
7183                    ;info   611, 1344
7184 0540 1c03          btfss   _c___byte, _c___bit
7185                    ; line_number = 612
7186                    ;info   612, 1345
7187 0541 2d49          goto    _signed16_divide_no_go
7188                    ; line_number = 613
7189                    ;info   613, 1346
7190 0542 082f          movf    _signed16_b1,w
7191                    ; line_number = 614
7192                    ;info   614, 1347
7193 0543 02b0          subwf   _signed16_rem1,f
7194                    ; line_number = 615
7195                    ;info   615, 1348
7196 0544 1c03          btfss   _c___byte, _c___bit
7197                    ; line_number = 616
7198                    ;info   616, 1349
7199 0545 03b1          decf    _signed16_rem0,f
7200                    ; line_number = 617
7201                    ;info   617, 1350
7202 0546 082e          movf    _signed16_b0,w
7203                    ; line_number = 618
7204                    ;info   618, 1351
7205 0547 02b1          subwf   _signed16_rem0,f
7206                    ; line_number = 619
7207                    ;info   619, 1352
7208 0548 1403          bsf     _c___byte, _c___bit
7209                    ; line_number = 620
7210   0549 :   _signed16_divide_no_go:
7211                    ; line_number = 621
7212                    ;info   621, 1353
7213 0549 0dad          rlf     _signed16_a1,f
7214                    ; line_number = 622
7215                    ;info   622, 1354
7216 054a 0dac          rlf     _signed16_a0,f
7217                    ; line_number = 623
7218                    ;info   623, 1355
7219 054b 0bb5          decfsz  _signed16_count,f
7220                    ; line_number = 624
7221                    ;info   624, 1356
7222 054c 2d35          goto    _signed16_divide_dloop
7223            
7224                    ; line_number = 626
7225                    ;info   626, 1357
7226 054d 1fb4          btfss   _signed16_sign, 7
7227                    ; line_number = 627
7228                    ;info   627, 1358
7229 054e 3400          retlw   0
7230                    ; line_number = 628
7231                    ;info   628, 1359
7232 054f 2d50          goto    _signed16_divide_neg_b
7233            
7234                    ; line_number = 630
7235   0550 :   _signed16_divide_neg_b:
7236                    ; line_number = 631
7237                    ;info   631, 1360
7238 0550 09af          comf    _signed16_b1,f
7239                    ; line_number = 632
7240                    ;info   632, 1361
7241 0551 0aaf          incf    _signed16_b1,f
7242                    ; line_number = 633
7243                    ;info   633, 1362
7244 0552 1903          btfsc   _z___byte, _z___bit
7245                    ; line_number = 634
7246                    ;info   634, 1363
7247 0553 03ae          decf    _signed16_b0,f
7248                    ; line_number = 635
7249                    ;info   635, 1364
7250 0554 09ae          comf    _signed16_b0,f
7251                    ; line_number = 636
7252                    ;info   636, 1365
7253 0555 3400          retlw   0
7254            
7255                    ; line_number = 638
7256   0556 :   _signed16_divide_s_sign:
7257                    ; line_number = 639
7258                    ;info   639, 1366
7259 0556 082e          movf    _signed16_b0,w
7260                    ; line_number = 640
7261                    ;info   640, 1367
7262 0557 062c          xorwf   _signed16_a0,w
7263                    ; line_number = 641
7264                    ;info   641, 1368
7265 0558 00b4          movwf   _signed16_sign
7266                    ; line_number = 642
7267                    ;info   642, 1369
7268 0559 1fac          btfss   _signed16_a0, 7
7269                    ; line_number = 643
7270                    ;info   643, 1370
7271 055a 2d60          goto    _signed16_divide_check_a
7272            
7273                    ; line_number = 645
7274                    ;info   645, 1371
7275 055b 09ad          comf    _signed16_a1,f
7276                    ; line_number = 646
7277                    ;info   646, 1372
7278 055c 0aad          incf    _signed16_a1,f
7279                    ; line_number = 647
7280                    ;info   647, 1373
7281 055d 1903          btfsc   _z___byte, _z___bit
7282                    ; line_number = 648
7283                    ;info   648, 1374
7284 055e 03ac          decf    _signed16_a0,f
7285                    ; line_number = 649
7286                    ;info   649, 1375
7287 055f 09ac          comf    _signed16_a0,f
7288            
7289                    ; line_number = 651
7290   0560 :   _signed16_divide_check_a:
7291                    ; line_number = 652
7292                    ;info   652, 1376
7293 0560 1fae          btfss   _signed16_b0, 7
7294                    ; line_number = 653
7295                    ;info   653, 1377
7296 0561 3400          retlw   0
7297                    ; line_number = 654
7298                    ;info   654, 1378
7299 0562 2d50          goto    _signed16_divide_neg_b
7300            
7301                    ; delay after procedure statements=non-uniform
7302                    ; Return instruction suppressed by 'return_suppress'
7303            
7304            
7305            
7306            
7307                    ; Code bank 1; Start address: 2048; End address: 4095
7308   0800 :           org     2048
7309                    ; Code bank 2; Start address: 4096; End address: 6143
7310   1000 :           org     4096
7311                    ; Code bank 3; Start address: 6144; End address: 8191
7312   1800 :           org     6144
7313                    ; Configuration bits
7314                    ; address = 0x2007, fill = 0x400
7315                    ; cp = off (0x3030)
7316                    ; debug = off (0x800)
7317                    ; wrt = off (0x0)
7318                    ; cpd = off (0x100)
7319                    ; lvp = off (0x0)
7320                    ; boden = off (0x0)
7321                    ; pwrte = off (0x8)
7322                    ; wdte = off (0x0)
7323                    ; fosc = hs (0x2)
7324                    ; 15674 = 0x3d3a
7325   3d3a =           __config 15674
7326                    ; Define start addresses for data regions
7327                    ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
7328                    ; Region="globals___0" Address=32" Size=80 Bytes=61 Bits=4 Available=18
7329                    ; Region="globals___1" Address=160" Size=80 Bytes=78 Bits=0 Available=2
7330                    ; Region="globals___2" Address=272" Size=96 Bytes=0 Bits=0 Available=96
7331                    ; Region="globals___3" Address=400" Size=112 Bytes=0 Bits=0 Available=112
7332                    end
