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) 2000-2005 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                      ; buffer = 'picbrain11'
38                      ; line_number = 9
39                      ; library _pic16f876 entered
40              
41                      ; # Copyright (c) 2004 by Wayne C. Gramlich
42                      ; # All rights reserved.
43              
44                      ; buffer = '_pic16f876'
45                      ; line_number = 6
46                      ; processor pic16f876
47                      ; line_number = 7
48                      ; configure_address 0x2007
49                      ; line_number = 8
50                      ;  configure_fill 0x0400
51                      ; line_number = 9
52                      ;  configure_option cp: off = 0x3030
53                      ; line_number = 10
54                      ;  configure_option cp: quarter = 0x2020
55                      ; line_number = 11
56                      ;  configure_option cp: half = 0x1010
57                      ; line_number = 12
58                      ;  configure_option cp: on = 0x0000
59                      ; line_number = 13
60                      ;  configure_option debug: on = 0x000
61                      ; line_number = 14
62                      ;  configure_option debug: off = 0x800
63                      ; line_number = 15
64                      ;  configure_option wrt: on = 0x200
65                      ; line_number = 16
66                      ;  configure_option wrt: off = 0x000
67                      ; line_number = 17
68                      ;  configure_option cpd: on = 0x000
69                      ; line_number = 18
70                      ;  configure_option cpd: off = 0x100
71                      ; line_number = 19
72                      ;  configure_option lvp: on = 0x80
73                      ; line_number = 20
74                      ;  configure_option lvp: off = 0x00
75                      ; line_number = 21
76                      ;  configure_option boden: on = 0x40
77                      ; line_number = 22
78                      ;  configure_option boden: off = 0x00
79                      ; line_number = 23
80                      ;  configure_option pwrte: on = 0
81                      ; line_number = 24
82                      ;  configure_option pwrte: off = 8
83                      ; line_number = 25
84                      ;  configure_option wdte: on = 4
85                      ; line_number = 26
86                      ;  configure_option wdte: off = 0
87                      ; line_number = 27
88                      ;  configure_option fosc: rc = 3
89                      ; line_number = 28
90                      ;  configure_option fosc: hs = 2
91                      ; line_number = 29
92                      ;  configure_option fosc: xt = 1
93                      ; line_number = 30
94                      ;  configure_option fosc: lp = 0
95                      ; line_number = 31
96                      ;  code_bank 0x0 : 0x7ff
97                      ; line_number = 32
98                      ;  code_bank 0x800 : 0xfff
99                      ; line_number = 33
100                     ;  code_bank 0x1000 : 0x17ff
101                     ; line_number = 34
102                     ;  code_bank 0x1800 : 0x1fff
103                     ; line_number = 35
104                     ;  data_bank 0x0 : 0x7f
105                     ; line_number = 36
106                     ;  data_bank 0x80 : 0xff
107                     ; line_number = 37
108                     ;  data_bank 0x100 : 0x17f
109                     ; line_number = 38
110                     ;  data_bank 0x180 : 0x1ff
111                     ; line_number = 39
112                     ;  global_region 0x20 : 0x6f
113                     ; line_number = 40
114                     ;  global_region 0xa0 : 0xef
115                     ; line_number = 41
116                     ;  global_region 0x110 : 0x16f
117                     ; line_number = 42
118                     ;  global_region 0x190 : 0x1ff
119                     ; line_number = 43
120                     ;  shared_region 0x70 : 0x7f
121                     ; line_number = 44
122                     ;  interrupts_possible
123                     ; line_number = 45
124                     ;  packages pdip = 28
125                     ; line_number = 46
126                     ;  pin mclr, vpp, thv, mclr_unused
127                     ; line_number = 47
128                     ; pin_bindings pdip = 1
129                     ; line_number = 48
130                     ; pin ra0_in, ra0_out, an0, ra0_unused
131                     ; line_number = 49
132                     ; pin_bindings pdip = 2
133                     ; line_number = 50
134                     ;  bind_to _porta@0
135                     ; line_number = 51
136                     ;  or_if ra0_in _trisa 1
137                     ; line_number = 52
138                     ;  or_if ra0_in _adcon1 7
139                     ; line_number = 53
140                     ;  or_if ra0_in _adcon0 0
141                     ; line_number = 54
142                     ;  or_if ra0_out _trisa 0
143                     ; line_number = 55
144                     ;  or_if ra0_out _adcon1 7
145                     ; line_number = 56
146                     ;  or_if ra0_out _adcon0 0
147                     ; line_number = 57
148                     ; pin ra1_in, ra1_out, an1, ra1_unused
149                     ; line_number = 58
150                     ; pin_bindings pdip = 3
151                     ; line_number = 59
152                     ;  bind_to _porta@1
153                     ; line_number = 60
154                     ;  or_if ra1_in _trisa 2
155                     ; line_number = 61
156                     ;  or_if ra1_in _adcon1 7
157                     ; line_number = 62
158                     ;  or_if ra1_in _adcon0 0
159                     ; line_number = 63
160                     ;  or_if ra1_out _trisa 0
161                     ; line_number = 64
162                     ;  or_if ra1_out _adcon1 7
163                     ; line_number = 65
164                     ;  or_if ra1_out _adcon0 0
165                     ; line_number = 66
166                     ; pin ra2_in, ra2_out, an2, vref_minus, ra2_unused
167                     ; line_number = 67
168                     ; pin_bindings pdip = 4
169                     ; line_number = 68
170                     ;  bind_to _porta@2
171                     ; line_number = 69
172                     ;  or_if ra2_in _trisa 4
173                     ; line_number = 70
174                     ;  or_if ra2_in _adcon1 7
175                     ; line_number = 71
176                     ;  or_if ra2_in _adcon0 0
177                     ; line_number = 72
178                     ;  or_if ra2_out _trisa 0
179                     ; line_number = 73
180                     ;  or_if ra2_out _adcon1 7
181                     ; line_number = 74
182                     ;  or_if ra2_out _adcon0 0
183                     ; line_number = 75
184                     ; pin ra3_in, ra3_out, an3, vrev_plus, ra3_unused
185                     ; line_number = 76
186                     ; pin_bindings pdip = 5
187                     ; line_number = 77
188                     ;  bind_to _porta@3
189                     ; line_number = 78
190                     ;  or_if ra3_in _trisa 8
191                     ; line_number = 79
192                     ;  or_if ra3_in _adcon1 7
193                     ; line_number = 80
194                     ;  or_if ra3_in _adcon0 0
195                     ; line_number = 81
196                     ;  or_if ra3_out _trisa 0
197                     ; line_number = 82
198                     ;  or_if ra3_out _adcon1 7
199                     ; line_number = 83
200                     ;  or_if ra3_out _adcon0 0
201                     ; line_number = 84
202                     ; pin ra4_in, ra4_out, t0cki, ra4_unused
203                     ; line_number = 85
204                     ; pin_bindings pdip = 6
205                     ; line_number = 86
206                     ;  bind_to _porta@4
207                     ; line_number = 87
208                     ;  or_if ra4_in _trisa 16
209                     ; line_number = 88
210                     ;  or_if ra4_in _adcon1 7
211                     ; line_number = 89
212                     ;  or_if ra4_in _adcon0 0
213                     ; line_number = 90
214                     ;  or_if ra4_out _trisa 0
215                     ; line_number = 91
216                     ;  or_if ra4_out _adcon1 7
217                     ; line_number = 92
218                     ;  or_if ra4_out _adcon0 0
219                     ; line_number = 93
220                     ; pin ra5_in, ra5_out, an4, ra5_unused
221                     ; line_number = 94
222                     ; pin_bindings pdip = 7
223                     ; line_number = 95
224                     ;  bind_to _porta@5
225                     ; line_number = 96
226                     ;  or_if ra5_in _trisa 32
227                     ; line_number = 97
228                     ;  or_if ra5_in _adcon1 7
229                     ; line_number = 98
230                     ;  or_if ra5_in _adcon1 0
231                     ; line_number = 99
232                     ;  or_if ra5_out _trisa 0
233                     ; line_number = 100
234                     ;  or_if ra5_out _adcon1 7
235                     ; line_number = 101
236                     ;  or_if ra5_out _adcon0 0
237                     ; line_number = 102
238                     ; pin vss, ground
239                     ; line_number = 103
240                     ; pin_bindings pdip = 8
241                     ; line_number = 104
242                     ; pin osc1, clkin
243                     ; line_number = 105
244                     ; pin_bindings pdip = 9
245                     ; line_number = 106
246                     ; pin osc2, clkout
247                     ; line_number = 107
248                     ; pin_bindings pdip = 10
249                     ; line_number = 108
250                     ; pin rc0_in, rc0_out, t1oso, t1cki, rc0_unused
251                     ; line_number = 109
252                     ; pin_bindings pdip = 11
253                     ; line_number = 110
254                     ;  bind_to _portc@0
255                     ; line_number = 111
256                     ;  or_if rc0_in _trisc 1
257                     ; line_number = 112
258                     ;  or_if rc0_in _adcon1 7
259                     ; line_number = 113
260                     ;  or_if rc0_in _adcon0 0
261                     ; line_number = 114
262                     ;  or_if rc0_out _trisc 0
263                     ; line_number = 115
264                     ;  or_if rc0_out _adcon1 7
265                     ; line_number = 116
266                     ;  or_if rc0_out _adcon0 0
267                     ; line_number = 117
268                     ; pin rc1_in, rc1_out, t1osi, ccp2, rc1_unused
269                     ; line_number = 118
270                     ; pin_bindings pdip = 12
271                     ; line_number = 119
272                     ;  bind_to _portc@1
273                     ; line_number = 120
274                     ;  or_if rc1_in _trisc 2
275                     ; line_number = 121
276                     ;  or_if rc1_in _adcon1 7
277                     ; line_number = 122
278                     ;  or_if rc1_in _adcon0 0
279                     ; line_number = 123
280                     ;  or_if rc1_out _trisc 0
281                     ; line_number = 124
282                     ;  or_if rc1_out _adcon1 7
283                     ; line_number = 125
284                     ;  or_if rc1_out _adcon0 0
285                     ; line_number = 126
286                     ; pin rc2_in, rc2_out, ccp1, rc2_unused
287                     ; line_number = 127
288                     ; pin_bindings pdip = 13
289                     ; line_number = 128
290                     ;  bind_to _portc@2
291                     ; line_number = 129
292                     ;  or_if rc2_in _trisc 4
293                     ; line_number = 130
294                     ;  or_if rc2_in _adcon1 7
295                     ; line_number = 131
296                     ;  or_if rc2_in _adcon0 0
297                     ; line_number = 132
298                     ;  or_if rc2_out _trisc 0
299                     ; line_number = 133
300                     ;  or_if rc2_out _adcon1 7
301                     ; line_number = 134
302                     ;  or_if rc2_out _adcon0 0
303                     ; line_number = 135
304                     ; pin rc3_in, rc3_out, sck, scl, rc3_unused
305                     ; line_number = 136
306                     ; pin_bindings pdip = 14
307                     ; line_number = 137
308                     ;  bind_to _portc@3
309                     ; line_number = 138
310                     ;  or_if rc3_in _trisc 8
311                     ; line_number = 139
312                     ;  or_if rc3_in _adcon1 7
313                     ; line_number = 140
314                     ;  or_if rc3_in _adcon0 0
315                     ; line_number = 141
316                     ;  or_if rc3_out _trisc 0
317                     ; line_number = 142
318                     ;  or_if rc3_out _adcon1 7
319                     ; line_number = 143
320                     ;  or_if rc3_out _adcon0 0
321                     ; line_number = 144
322                     ; pin rc4_in, rc4_out, sdi, sda, rc4_unused
323                     ; line_number = 145
324                     ; pin_bindings pdip = 15
325                     ; line_number = 146
326                     ;  bind_to _portc@4
327                     ; line_number = 147
328                     ;  or_if rc4_in _trisc 16
329                     ; line_number = 148
330                     ;  or_if rc4_in _adcon1 7
331                     ; line_number = 149
332                     ;  or_if rc4_in _adcon0 0
333                     ; line_number = 150
334                     ;  or_if rc4_out _trisc 0
335                     ; line_number = 151
336                     ;  or_if rc4_out _adcon1 7
337                     ; line_number = 152
338                     ;  or_if rc4_out _adcon0 0
339                     ; line_number = 153
340                     ; pin rc5_in, rc5_out, sdo, rc5_unused
341                     ; line_number = 154
342                     ; pin_bindings pdip = 16
343                     ; line_number = 155
344                     ;  bind_to _portc@5
345                     ; line_number = 156
346                     ;  or_if rc5_in _trisc 32
347                     ; line_number = 157
348                     ;  or_if rc5_in _adcon1 7
349                     ; line_number = 158
350                     ;  or_if rc5_in _adcon0 0
351                     ; line_number = 159
352                     ;  or_if rc5_out _trisc 0
353                     ; line_number = 160
354                     ;  or_if rc5_out _adcon1 7
355                     ; line_number = 161
356                     ;  or_if rc5_out _adcon0 0
357                     ; line_number = 162
358                     ; pin rc6_in, rc6_out, tx, ck, rc6_unused
359                     ; line_number = 163
360                     ; pin_bindings pdip = 17
361                     ; line_number = 164
362                     ;  bind_to _portc@6
363                     ; line_number = 165
364                     ;  or_if rc6_in _trisc 64
365                     ; line_number = 166
366                     ;  or_if rc6_in _adcon1 7
367                     ; line_number = 167
368                     ;  or_if rc6_in _adcon0 0
369                     ; line_number = 168
370                     ;  or_if rc6_out _trisc 0
371                     ; line_number = 169
372                     ;  or_if rc6_out _adcon1 7
373                     ; line_number = 170
374                     ;  or_if rc6_out _adcon0 0
375                     ; line_number = 171
376                     ;  or_if tx _trisc 0
377                     ; line_number = 172
378                     ;  or_if tx _adcon1 7
379                     ; line_number = 173
380                     ;  or_if tx _adcon0 0
381                     ; line_number = 174
382                     ; pin rc7_in, rc7_out, rx, dt, rc7_unused
383                     ; line_number = 175
384                     ; pin_bindings pdip = 18
385                     ; line_number = 176
386                     ;  bind_to _portc@7
387                     ; line_number = 177
388                     ;  or_if rc7_in _trisc 128
389                     ; line_number = 178
390                     ;  or_if rc7_in _adcon1 7
391                     ; line_number = 179
392                     ;  or_if rc7_in _adcon0 0
393                     ; line_number = 180
394                     ;  or_if rx _trisc 128
395                     ; line_number = 181
396                     ;  or_if rx _adcon1 7
397                     ; line_number = 182
398                     ;  or_if rx _adcon0 0
399                     ; line_number = 183
400                     ;  or_if rc7_out _trisc 0
401                     ; line_number = 184
402                     ;  or_if rc7_out _adcon1 7
403                     ; line_number = 185
404                     ;  or_if rc7_out _adcon0 0
405                     ; line_number = 186
406                     ; pin vss2, ground2
407                     ; line_number = 187
408                     ; pin_bindings pdip = 19
409                     ; line_number = 188
410                     ; pin vdd, power_supply
411                     ; line_number = 189
412                     ; pin_bindings pdip = 20
413                     ; line_number = 190
414                     ; pin rb0_in, rb0_out, int, rb0_unused
415                     ; line_number = 191
416                     ; pin_bindings pdip = 21
417                     ; line_number = 192
418                     ;  bind_to _portb@0
419                     ; line_number = 193
420                     ;  or_if rb0_in _trisb 1
421                     ; line_number = 194
422                     ;  or_if rb0_in _adcon1 7
423                     ; line_number = 195
424                     ;  or_if rb0_in _adcon0 0
425                     ; line_number = 196
426                     ;  or_if rb0_out _trisb 0
427                     ; line_number = 197
428                     ;  or_if rb0_out _adcon1 7
429                     ; line_number = 198
430                     ;  or_if rb0_out _adcon0 0
431                     ; line_number = 199
432                     ; pin rb1_in, rb1_out, rb1_unused
433                     ; line_number = 200
434                     ; pin_bindings pdip = 22
435                     ; line_number = 201
436                     ;  bind_to _portb@1
437                     ; line_number = 202
438                     ;  or_if rb1_in _trisb 2
439                     ; line_number = 203
440                     ;  or_if rb1_in _adcon1 7
441                     ; line_number = 204
442                     ;  or_if rb1_in _adcon0 0
443                     ; line_number = 205
444                     ;  or_if rb1_out _trisb 0
445                     ; line_number = 206
446                     ;  or_if rb1_out _adcon1 7
447                     ; line_number = 207
448                     ;  or_if rb1_out _adcon0 0
449                     ; line_number = 208
450                     ; pin rb2_in, rb2_out, rb2_unused
451                     ; line_number = 209
452                     ; pin_bindings pdip = 23
453                     ; line_number = 210
454                     ;  bind_to _portb@2
455                     ; line_number = 211
456                     ;  or_if rb2_in _trisb 4
457                     ; line_number = 212
458                     ;  or_if rb2_in _adcon1 7
459                     ; line_number = 213
460                     ;  or_if rb2_in _adcon0 0
461                     ; line_number = 214
462                     ;  or_if rb2_out _trisb 0
463                     ; line_number = 215
464                     ;  or_if rb2_out _adcon1 7
465                     ; line_number = 216
466                     ;  or_if rb2_out _adcon0 0
467                     ; line_number = 217
468                     ; pin rb3_in, rb3_out, pgm, rb3_unused
469                     ; line_number = 218
470                     ; pin_bindings pdip = 24
471                     ; line_number = 219
472                     ;  bind_to _portb@3
473                     ; line_number = 220
474                     ;  or_if rb3_in _trisb 8
475                     ; line_number = 221
476                     ;  or_if rb3_in _adcon1 7
477                     ; line_number = 222
478                     ;  or_if rb3_out _trisb 0
479                     ; line_number = 223
480                     ;  or_if rb3_out _adcon1 7
481                     ; line_number = 224
482                     ; pin rb4_in, rb4_out, rb4_unused
483                     ; line_number = 225
484                     ; pin_bindings pdip = 25
485                     ; line_number = 226
486                     ;  bind_to _portb@4
487                     ; line_number = 227
488                     ;  or_if rb4_in _trisb 16
489                     ; line_number = 228
490                     ;  or_if rb4_in _adcon1 7
491                     ; line_number = 229
492                     ;  or_if rb4_in _adcon0 0
493                     ; line_number = 230
494                     ;  or_if rb4_out _trisb 0
495                     ; line_number = 231
496                     ;  or_if rb4_out _adcon1 7
497                     ; line_number = 232
498                     ;  or_if rb4_out _adcon0 0
499                     ; line_number = 233
500                     ; pin rb5_in, rb5_out, rb5_unused
501                     ; line_number = 234
502                     ; pin_bindings pdip = 26
503                     ; line_number = 235
504                     ;  bind_to _portb@5
505                     ; line_number = 236
506                     ;  or_if rb5_in _trisb 32
507                     ; line_number = 237
508                     ;  or_if rb5_in _adcon1 7
509                     ; line_number = 238
510                     ;  or_if rb5_in _adcon0 0
511                     ; line_number = 239
512                     ;  or_if rb5_out _trisb 0
513                     ; line_number = 240
514                     ;  or_if rb5_out _adcon1 7
515                     ; line_number = 241
516                     ;  or_if rb5_out _adcon0 0
517                     ; line_number = 242
518                     ; pin rb6_in, rb6_out, pgc, rb6_unused
519                     ; line_number = 243
520                     ; pin_bindings pdip = 27
521                     ; line_number = 244
522                     ;  bind_to _portb@6
523                     ; line_number = 245
524                     ;  or_if rb6_in _trisb 64
525                     ; line_number = 246
526                     ;  or_if rb6_in _adcon1 7
527                     ; line_number = 247
528                     ;  or_if rb6_in _adcon0 0
529                     ; line_number = 248
530                     ;  or_if rb6_out _trisb 0
531                     ; line_number = 249
532                     ;  or_if rb6_out _adcon1 7
533                     ; line_number = 250
534                     ;  or_if rb6_out _adcon0 0
535                     ; line_number = 251
536                     ; pin rb7_in, rb7_out, pgd, rb7_unused
537                     ; line_number = 252
538                     ; pin_bindings pdip = 28
539                     ; line_number = 253
540                     ;  bind_to _portb@7
541                     ; line_number = 254
542                     ;  or_if rb7_in _trisb 128
543                     ; line_number = 255
544                     ;  or_if rb7_in _adcon1 7
545                     ; line_number = 256
546                     ;  or_if rb7_in _adcon0 0
547                     ; line_number = 257
548                     ;  or_if rb7_out _trisb 0
549                     ; line_number = 258
550                     ;  or_if rb7_out _adcon1 7
551                     ; line_number = 259
552                     ;  or_if rb7_out _adcon0 0
553             
554             
555                     ; # Register and pin definitions:
556             
557                     ; line_number = 266
558                     ; library _pic16f87x entered
559             
560                     ; # Copyright (c) 2004 by Wayne C. Gramlich
561                     ; # All rights reserved.
562             
563                     ; # Common declarations for PIC16F87x series microcontrollers:
564             
565                     ; # Register and pin definitions:
566             
567                     ; # Bank 0:
568             
569                     ; buffer = '_pic16f87x'
570                     ; line_number = 12
571                     ; register _indf = 
572  00000000 = _indf equ 0
573             
574                     ; line_number = 14
575                     ; register _tmr0 = 
576  00000001 = _tmr0 equ 1
577             
578                     ; line_number = 16
579                     ; register _pcl = 
580  00000002 = _pcl equ 2
581             
582                     ; line_number = 18
583                     ; register _status = 
584  00000003 = _status equ 3
585                     ; line_number = 19
586                     ; bind _irp = _status@7
587  00000003 = _irp___byte equ _status
588  00000007 = _irp___bit equ 7
589                     ; line_number = 20
590                     ; bind _rp1 = _status@6
591  00000003 = _rp1___byte equ _status
592  00000006 = _rp1___bit equ 6
593                     ; line_number = 21
594                     ; bind _rp0 = _status@5
595  00000003 = _rp0___byte equ _status
596  00000005 = _rp0___bit equ 5
597                     ; line_number = 22
598                     ; bind _to = _status@4
599  00000003 = _to___byte equ _status
600  00000004 = _to___bit equ 4
601                     ; line_number = 23
602                     ; bind _pd = _status@3
603  00000003 = _pd___byte equ _status
604  00000003 = _pd___bit equ 3
605                     ; line_number = 24
606                     ; bind _z = _status@2
607  00000003 = _z___byte equ _status
608  00000002 = _z___bit equ 2
609                     ; line_number = 25
610                     ; bind _dc = _status@1
611  00000003 = _dc___byte equ _status
612  00000001 = _dc___bit equ 1
613             
614                     ; line_number = 27
615                     ; register _fsr = 
616  00000004 = _fsr equ 4
617             
618                     ; line_number = 29
619                     ; register _porta = 
620  00000005 = _porta equ 5
621             
622                     ; line_number = 31
623                     ; register _portb = 
624  00000006 = _portb equ 6
625             
626                     ; line_number = 33
627                     ; register _portc = 
628  00000007 = _portc equ 7
629             
630                     ; line_number = 35
631                     ; register _pclath = 
632  0000000a = _pclath equ 10
633             
634                     ; line_number = 37
635                     ; register _intcon = 
636  0000000b = _intcon equ 11
637                     ; line_number = 38
638                     ; bind _gie = _intcon@7
639  0000000b = _gie___byte equ _intcon
640  00000007 = _gie___bit equ 7
641                     ; line_number = 39
642                     ; bind _peie = _intcon@6
643  0000000b = _peie___byte equ _intcon
644  00000006 = _peie___bit equ 6
645                     ; line_number = 40
646                     ; bind _t0ie = _intcon@5
647  0000000b = _t0ie___byte equ _intcon
648  00000005 = _t0ie___bit equ 5
649                     ; line_number = 41
650                     ; bind _inte = _intcon@4
651  0000000b = _inte___byte equ _intcon
652  00000004 = _inte___bit equ 4
653                     ; line_number = 42
654                     ; bind _rbie = _intcon@3
655  0000000b = _rbie___byte equ _intcon
656  00000003 = _rbie___bit equ 3
657                     ; line_number = 43
658                     ; bind _t0if = _intcon@2
659  0000000b = _t0if___byte equ _intcon
660  00000002 = _t0if___bit equ 2
661                     ; line_number = 44
662                     ; bind _intf = _intcon@1
663  0000000b = _intf___byte equ _intcon
664  00000001 = _intf___bit equ 1
665                     ; line_number = 45
666                     ; bind _rbf = _intcon@0
667  0000000b = _rbf___byte equ _intcon
668  00000000 = _rbf___bit equ 0
669             
670                     ; line_number = 47
671                     ; register _pir1 = 
672  0000000c = _pir1 equ 12
673                     ; line_number = 48
674                     ; bind _pspif = _pir1@7
675  0000000c = _pspif___byte equ _pir1
676  00000007 = _pspif___bit equ 7
677                     ; line_number = 49
678                     ; bind _adif = _pir1@6
679  0000000c = _adif___byte equ _pir1
680  00000006 = _adif___bit equ 6
681                     ; line_number = 50
682                     ; bind _rcif = _pir1@5
683  0000000c = _rcif___byte equ _pir1
684  00000005 = _rcif___bit equ 5
685                     ; line_number = 51
686                     ; bind _txif = _pir1@4
687  0000000c = _txif___byte equ _pir1
688  00000004 = _txif___bit equ 4
689                     ; line_number = 52
690                     ; bind _sspif = _pir1@3
691  0000000c = _sspif___byte equ _pir1
692  00000003 = _sspif___bit equ 3
693                     ; line_number = 53
694                     ; bind _ccpif = _pir1@2
695  0000000c = _ccpif___byte equ _pir1
696  00000002 = _ccpif___bit equ 2
697                     ; line_number = 54
698                     ; bind _tmr2if = _pir1@1
699  0000000c = _tmr2if___byte equ _pir1
700  00000001 = _tmr2if___bit equ 1
701                     ; line_number = 55
702                     ; bind _tmr1if = _pir1@0
703  0000000c = _tmr1if___byte equ _pir1
704  00000000 = _tmr1if___bit equ 0
705             
706                     ; line_number = 57
707                     ; register _pir2 = 
708  0000000d = _pir2 equ 13
709                     ; line_number = 58
710                     ; bind _eeif = _pir2@4
711  0000000d = _eeif___byte equ _pir2
712  00000004 = _eeif___bit equ 4
713                     ; line_number = 59
714                     ; bind _bclif = _pir2@3
715  0000000d = _bclif___byte equ _pir2
716  00000003 = _bclif___bit equ 3
717                     ; line_number = 60
718                     ; bind _ccp2if = _pir2@0
719  0000000d = _ccp2if___byte equ _pir2
720  00000000 = _ccp2if___bit equ 0
721             
722                     ; line_number = 62
723                     ; register _tmr1l = 
724  0000000e = _tmr1l equ 14
725             
726                     ; line_number = 64
727                     ; register _tmr1h = 
728  0000000f = _tmr1h equ 15
729             
730                     ; line_number = 66
731                     ; register _t1con = 
732  00000010 = _t1con equ 16
733                     ; line_number = 67
734                     ; bind _t1ckps1 = _t1con@5
735  00000010 = _t1ckps1___byte equ _t1con
736  00000005 = _t1ckps1___bit equ 5
737                     ; line_number = 68
738                     ; bind _t1ckps0 = _t1con@4
739  00000010 = _t1ckps0___byte equ _t1con
740  00000004 = _t1ckps0___bit equ 4
741                     ; line_number = 69
742                     ; bind _t1oscen = _t1con@3
743  00000010 = _t1oscen___byte equ _t1con
744  00000003 = _t1oscen___bit equ 3
745                     ; line_number = 70
746                     ; bind _t1sync = _t1con@2
747  00000010 = _t1sync___byte equ _t1con
748  00000002 = _t1sync___bit equ 2
749                     ; line_number = 71
750                     ; bind _tmr1cs = _t1con@1
751  00000010 = _tmr1cs___byte equ _t1con
752  00000001 = _tmr1cs___bit equ 1
753                     ; line_number = 72
754                     ; bind _tmr1on = _t1con@0
755  00000010 = _tmr1on___byte equ _t1con
756  00000000 = _tmr1on___bit equ 0
757             
758                     ; line_number = 74
759                     ; register _tmr2 = 
760  00000011 = _tmr2 equ 17
761             
762                     ; line_number = 76
763                     ; register _t2con = 
764  00000012 = _t2con equ 18
765                     ; line_number = 77
766                     ; bind _toutps3 = _t2con@6
767  00000012 = _toutps3___byte equ _t2con
768  00000006 = _toutps3___bit equ 6
769                     ; line_number = 78
770                     ; bind _toutps2 = _t2con@5
771  00000012 = _toutps2___byte equ _t2con
772  00000005 = _toutps2___bit equ 5
773                     ; line_number = 79
774                     ; bind _toutps1 = _t2con@4
775  00000012 = _toutps1___byte equ _t2con
776  00000004 = _toutps1___bit equ 4
777                     ; line_number = 80
778                     ; bind _toutps0 = _t2con@3
779  00000012 = _toutps0___byte equ _t2con
780  00000003 = _toutps0___bit equ 3
781                     ; line_number = 81
782                     ; bind _tmr2on = _t2con@2
783  00000012 = _tmr2on___byte equ _t2con
784  00000002 = _tmr2on___bit equ 2
785                     ; line_number = 82
786                     ; bind _t2ckps1 = _t2con@1
787  00000012 = _t2ckps1___byte equ _t2con
788  00000001 = _t2ckps1___bit equ 1
789                     ; line_number = 83
790                     ; bind _t2ckps0 = _t2con@0
791  00000012 = _t2ckps0___byte equ _t2con
792  00000000 = _t2ckps0___bit equ 0
793             
794                     ; line_number = 85
795                     ; register _sspbuf = 
796  00000013 = _sspbuf equ 19
797             
798                     ; line_number = 87
799                     ; register _sspcon = 
800  00000014 = _sspcon equ 20
801                     ; line_number = 88
802                     ; bind _wcol = _sspcon@7
803  00000014 = _wcol___byte equ _sspcon
804  00000007 = _wcol___bit equ 7
805                     ; line_number = 89
806                     ; bind _sspov = _sspcon@6
807  00000014 = _sspov___byte equ _sspcon
808  00000006 = _sspov___bit equ 6
809                     ; line_number = 90
810                     ; bind _sspen = _sspcon@5
811  00000014 = _sspen___byte equ _sspcon
812  00000005 = _sspen___bit equ 5
813                     ; line_number = 91
814                     ; bind _ckp = _sspcon@4
815  00000014 = _ckp___byte equ _sspcon
816  00000004 = _ckp___bit equ 4
817                     ; line_number = 92
818                     ; bind _sspm3 = _sspcon@3
819  00000014 = _sspm3___byte equ _sspcon
820  00000003 = _sspm3___bit equ 3
821                     ; line_number = 93
822                     ; bind _sspm2 = _sspcon@2
823  00000014 = _sspm2___byte equ _sspcon
824  00000002 = _sspm2___bit equ 2
825                     ; line_number = 94
826                     ; bind _sspm1 = _sspcon@1
827  00000014 = _sspm1___byte equ _sspcon
828  00000001 = _sspm1___bit equ 1
829                     ; line_number = 95
830                     ; bind _sspm0 = _sspcon@0
831  00000014 = _sspm0___byte equ _sspcon
832  00000000 = _sspm0___bit equ 0
833             
834                     ; line_number = 97
835                     ; register _ccpr1l = 
836  00000015 = _ccpr1l equ 21
837             
838                     ; line_number = 99
839                     ; register _ccpr1h = 
840  00000016 = _ccpr1h equ 22
841             
842                     ; line_number = 101
843                     ; register _ccp1con = 
844  00000017 = _ccp1con equ 23
845                     ; line_number = 102
846                     ; bind _ccp1x = _ccp1con@5
847  00000017 = _ccp1x___byte equ _ccp1con
848  00000005 = _ccp1x___bit equ 5
849                     ; line_number = 103
850                     ; bind _ccp1y = _ccp1con@4
851  00000017 = _ccp1y___byte equ _ccp1con
852  00000004 = _ccp1y___bit equ 4
853                     ; line_number = 104
854                     ; bind _ccp1m3 = _ccp1con@3
855  00000017 = _ccp1m3___byte equ _ccp1con
856  00000003 = _ccp1m3___bit equ 3
857                     ; line_number = 105
858                     ; bind _ccp1m2 = _ccp1con@2
859  00000017 = _ccp1m2___byte equ _ccp1con
860  00000002 = _ccp1m2___bit equ 2
861                     ; line_number = 106
862                     ; bind _ccp1m1 = _ccp1con@1
863  00000017 = _ccp1m1___byte equ _ccp1con
864  00000001 = _ccp1m1___bit equ 1
865                     ; line_number = 107
866                     ; bind _ccp1m0 = _ccp1con@0
867  00000017 = _ccp1m0___byte equ _ccp1con
868  00000000 = _ccp1m0___bit equ 0
869             
870                     ; line_number = 109
871                     ; register _rcsta = 
872  00000018 = _rcsta equ 24
873                     ; line_number = 110
874                     ; bind _spen = _rcsta@7
875  00000018 = _spen___byte equ _rcsta
876  00000007 = _spen___bit equ 7
877                     ; line_number = 111
878                     ; bind _rx9 = _rcsta@6
879  00000018 = _rx9___byte equ _rcsta
880  00000006 = _rx9___bit equ 6
881                     ; line_number = 112
882                     ; bind _sren = _rcsta@5
883  00000018 = _sren___byte equ _rcsta
884  00000005 = _sren___bit equ 5
885                     ; line_number = 113
886                     ; bind _cren = _rcsta@4
887  00000018 = _cren___byte equ _rcsta
888  00000004 = _cren___bit equ 4
889                     ; line_number = 114
890                     ; bind _adden = _rcsta@3
891  00000018 = _adden___byte equ _rcsta
892  00000003 = _adden___bit equ 3
893                     ; line_number = 115
894                     ; bind _ferr = _rcsta@2
895  00000018 = _ferr___byte equ _rcsta
896  00000002 = _ferr___bit equ 2
897                     ; line_number = 116
898                     ; bind _oerr = _rcsta@1
899  00000018 = _oerr___byte equ _rcsta
900  00000001 = _oerr___bit equ 1
901                     ; line_number = 117
902                     ; bind _rx9d = _rcsta@0
903  00000018 = _rx9d___byte equ _rcsta
904  00000000 = _rx9d___bit equ 0
905             
906                     ; line_number = 119
907                     ; register _txreg = 
908  00000019 = _txreg equ 25
909             
910                     ; line_number = 121
911                     ; register _rcreg = 
912  0000001a = _rcreg equ 26
913             
914                     ; line_number = 123
915                     ; register _ccpr2l = 
916  0000001b = _ccpr2l equ 27
917             
918                     ; line_number = 125
919                     ; register _ccpr2h = 
920  0000001c = _ccpr2h equ 28
921             
922                     ; line_number = 127
923                     ; register _ccp2con = 
924  0000001d = _ccp2con equ 29
925                     ; line_number = 128
926                     ; bind _ccp2x = _ccp2con@5
927  0000001d = _ccp2x___byte equ _ccp2con
928  00000005 = _ccp2x___bit equ 5
929                     ; line_number = 129
930                     ; bind _ccp2y = _ccp2con@4
931  0000001d = _ccp2y___byte equ _ccp2con
932  00000004 = _ccp2y___bit equ 4
933                     ; line_number = 130
934                     ; bind _ccp2m3 = _ccp2con@3
935  0000001d = _ccp2m3___byte equ _ccp2con
936  00000003 = _ccp2m3___bit equ 3
937                     ; line_number = 131
938                     ; bind _ccp2m2 = _ccp2con@2
939  0000001d = _ccp2m2___byte equ _ccp2con
940  00000002 = _ccp2m2___bit equ 2
941                     ; line_number = 132
942                     ; bind _ccp2m1 = _ccp2con@1
943  0000001d = _ccp2m1___byte equ _ccp2con
944  00000001 = _ccp2m1___bit equ 1
945                     ; line_number = 133
946                     ; bind _ccp2m0 = _ccp2con@0
947  0000001d = _ccp2m0___byte equ _ccp2con
948  00000000 = _ccp2m0___bit equ 0
949             
950                     ; line_number = 135
951                     ; register _adresh = 
952  0000001e = _adresh equ 30
953             
954                     ; line_number = 137
955                     ; register _adcon0 = 
956  0000001f = _adcon0 equ 31
957                     ; line_number = 138
958                     ; bind _adcs1 = _adcon0@7
959  0000001f = _adcs1___byte equ _adcon0
960  00000007 = _adcs1___bit equ 7
961                     ; line_number = 139
962                     ; bind _adcs0 = _adcon0@6
963  0000001f = _adcs0___byte equ _adcon0
964  00000006 = _adcs0___bit equ 6
965                     ; line_number = 140
966                     ; bind _chs2 = _adcon0@5
967  0000001f = _chs2___byte equ _adcon0
968  00000005 = _chs2___bit equ 5
969                     ; line_number = 141
970                     ; bind _chs1 = _adcon0@4
971  0000001f = _chs1___byte equ _adcon0
972  00000004 = _chs1___bit equ 4
973                     ; line_number = 142
974                     ; bind _chs0 = _adcon0@3
975  0000001f = _chs0___byte equ _adcon0
976  00000003 = _chs0___bit equ 3
977                     ; line_number = 143
978                     ; bind _go_done = _adcon0@2
979  0000001f = _go_done___byte equ _adcon0
980  00000002 = _go_done___bit equ 2
981                     ; line_number = 144
982                     ; bind _adon = _adcon0@0
983  0000001f = _adon___byte equ _adcon0
984  00000000 = _adon___bit equ 0
985             
986                     ; # Bank 1:
987             
988                     ; line_number = 148
989                     ; register _option_reg = 
990  00000081 = _option_reg equ 129
991                     ; line_number = 149
992                     ; bind _rbpu = _option_reg@7
993  00000081 = _rbpu___byte equ _option_reg
994  00000007 = _rbpu___bit equ 7
995                     ; line_number = 150
996                     ; bind _intedg = _option_reg@6
997  00000081 = _intedg___byte equ _option_reg
998  00000006 = _intedg___bit equ 6
999                     ; line_number = 151
1000                    ; bind _t0cs = _option_reg@5
1001 00000081 = _t0cs___byte equ _option_reg
1002 00000005 = _t0cs___bit equ 5
1003                    ; line_number = 152
1004                    ; bind _t0se = _option_reg@4
1005 00000081 = _t0se___byte equ _option_reg
1006 00000004 = _t0se___bit equ 4
1007                    ; line_number = 153
1008                    ; bind _psa = _option_reg@3
1009 00000081 = _psa___byte equ _option_reg
1010 00000003 = _psa___bit equ 3
1011                    ; line_number = 154
1012                    ; bind _ps2 = _option_reg@2
1013 00000081 = _ps2___byte equ _option_reg
1014 00000002 = _ps2___bit equ 2
1015                    ; line_number = 155
1016                    ; bind _ps1 = _option_reg@1
1017 00000081 = _ps1___byte equ _option_reg
1018 00000001 = _ps1___bit equ 1
1019                    ; line_number = 156
1020                    ; bind _ps0 = _option_reg@0
1021 00000081 = _ps0___byte equ _option_reg
1022 00000000 = _ps0___bit equ 0
1023            
1024                    ; line_number = 158
1025                    ; register _trisa = 
1026 00000085 = _trisa equ 133
1027            
1028                    ; line_number = 160
1029                    ; register _trisb = 
1030 00000086 = _trisb equ 134
1031            
1032                    ; line_number = 162
1033                    ; register _trisc = 
1034 00000087 = _trisc equ 135
1035            
1036                    ; line_number = 164
1037                    ; register _pie1 = 
1038 0000008c = _pie1 equ 140
1039                    ; line_number = 165
1040                    ; bind _pspie = _pie1@7
1041 0000008c = _pspie___byte equ _pie1
1042 00000007 = _pspie___bit equ 7
1043                    ; line_number = 166
1044                    ; bind _adie = _pie1@6
1045 0000008c = _adie___byte equ _pie1
1046 00000006 = _adie___bit equ 6
1047                    ; line_number = 167
1048                    ; bind _rcie = _pie1@5
1049 0000008c = _rcie___byte equ _pie1
1050 00000005 = _rcie___bit equ 5
1051                    ; line_number = 168
1052                    ; bind _txie = _pie1@4
1053 0000008c = _txie___byte equ _pie1
1054 00000004 = _txie___bit equ 4
1055                    ; line_number = 169
1056                    ; bind _sspie = _pie1@3
1057 0000008c = _sspie___byte equ _pie1
1058 00000003 = _sspie___bit equ 3
1059                    ; line_number = 170
1060                    ; bind _ccp1ie = _pie1@2
1061 0000008c = _ccp1ie___byte equ _pie1
1062 00000002 = _ccp1ie___bit equ 2
1063                    ; line_number = 171
1064                    ; bind _tmr2ie = _pie1@1
1065 0000008c = _tmr2ie___byte equ _pie1
1066 00000001 = _tmr2ie___bit equ 1
1067                    ; line_number = 172
1068                    ; bind _tmr1ie = _pie1@0
1069 0000008c = _tmr1ie___byte equ _pie1
1070 00000000 = _tmr1ie___bit equ 0
1071            
1072                    ; line_number = 174
1073                    ; register _pie2 = 
1074 0000008d = _pie2 equ 141
1075                    ; line_number = 175
1076                    ; bind _eeie = _pie2@4
1077 0000008d = _eeie___byte equ _pie2
1078 00000004 = _eeie___bit equ 4
1079                    ; line_number = 176
1080                    ; bind _bcie = _pie2@3
1081 0000008d = _bcie___byte equ _pie2
1082 00000003 = _bcie___bit equ 3
1083                    ; line_number = 177
1084                    ; bind _ccp2ie = _pie2@0
1085 0000008d = _ccp2ie___byte equ _pie2
1086 00000000 = _ccp2ie___bit equ 0
1087            
1088                    ; line_number = 179
1089                    ; register _pcon = 
1090 0000008e = _pcon equ 142
1091                    ; line_number = 180
1092                    ; bind _por = _pcon@1
1093 0000008e = _por___byte equ _pcon
1094 00000001 = _por___bit equ 1
1095                    ; line_number = 181
1096                    ; bind _bor = _pcon@0
1097 0000008e = _bor___byte equ _pcon
1098 00000000 = _bor___bit equ 0
1099            
1100                    ; line_number = 183
1101                    ; register _sspcon2 = 
1102 00000091 = _sspcon2 equ 145
1103                    ; line_number = 184
1104                    ; bind _gcen = _sspcon2@7
1105 00000091 = _gcen___byte equ _sspcon2
1106 00000007 = _gcen___bit equ 7
1107                    ; line_number = 185
1108                    ; bind _ackstat = _sspcon2@6
1109 00000091 = _ackstat___byte equ _sspcon2
1110 00000006 = _ackstat___bit equ 6
1111                    ; line_number = 186
1112                    ; bind _ackdt = _sspcon2@5
1113 00000091 = _ackdt___byte equ _sspcon2
1114 00000005 = _ackdt___bit equ 5
1115                    ; line_number = 187
1116                    ; bind _acken = _sspcon2@4
1117 00000091 = _acken___byte equ _sspcon2
1118 00000004 = _acken___bit equ 4
1119                    ; line_number = 188
1120                    ; bind _rcen = _sspcon2@3
1121 00000091 = _rcen___byte equ _sspcon2
1122 00000003 = _rcen___bit equ 3
1123                    ; line_number = 189
1124                    ; bind _pen = _sspcon2@2
1125 00000091 = _pen___byte equ _sspcon2
1126 00000002 = _pen___bit equ 2
1127                    ; line_number = 190
1128                    ; bind _rsen = _sspcon2@1
1129 00000091 = _rsen___byte equ _sspcon2
1130 00000001 = _rsen___bit equ 1
1131                    ; line_number = 191
1132                    ; bind _sen = _sspcon2@0
1133 00000091 = _sen___byte equ _sspcon2
1134 00000000 = _sen___bit equ 0
1135            
1136                    ; line_number = 193
1137                    ; register _pr2 = 
1138 00000092 = _pr2 equ 146
1139            
1140                    ; line_number = 195
1141                    ; register _sspadd = 
1142 00000093 = _sspadd equ 147
1143            
1144                    ; line_number = 197
1145                    ; register _sspstat = 
1146 00000094 = _sspstat equ 148
1147                    ; line_number = 198
1148                    ; bind _smp = _sspstat@7
1149 00000094 = _smp___byte equ _sspstat
1150 00000007 = _smp___bit equ 7
1151                    ; line_number = 199
1152                    ; bind _cke = _sspstat@6
1153 00000094 = _cke___byte equ _sspstat
1154 00000006 = _cke___bit equ 6
1155                    ; line_number = 200
1156                    ; bind _da = _sspstat@5
1157 00000094 = _da___byte equ _sspstat
1158 00000005 = _da___bit equ 5
1159                    ; line_number = 201
1160                    ; bind _p = _sspstat@4
1161 00000094 = _p___byte equ _sspstat
1162 00000004 = _p___bit equ 4
1163                    ; line_number = 202
1164                    ; bind _s = _sspstat@3
1165 00000094 = _s___byte equ _sspstat
1166 00000003 = _s___bit equ 3
1167                    ; line_number = 203
1168                    ; bind _rw = _sspstat@2
1169 00000094 = _rw___byte equ _sspstat
1170 00000002 = _rw___bit equ 2
1171                    ; line_number = 204
1172                    ; bind _ua = _sspstat@1
1173 00000094 = _ua___byte equ _sspstat
1174 00000001 = _ua___bit equ 1
1175                    ; line_number = 205
1176                    ; bind _bf = _sspstat@0
1177 00000094 = _bf___byte equ _sspstat
1178 00000000 = _bf___bit equ 0
1179            
1180                    ; line_number = 207
1181                    ; register _txsta = 
1182 00000098 = _txsta equ 152
1183                    ; line_number = 208
1184                    ; bind _csrc = _txsta@7
1185 00000098 = _csrc___byte equ _txsta
1186 00000007 = _csrc___bit equ 7
1187                    ; line_number = 209
1188                    ; bind _tx9 = _txsta@6
1189 00000098 = _tx9___byte equ _txsta
1190 00000006 = _tx9___bit equ 6
1191                    ; line_number = 210
1192                    ; bind _txen = _txsta@5
1193 00000098 = _txen___byte equ _txsta
1194 00000005 = _txen___bit equ 5
1195                    ; line_number = 211
1196                    ; bind _sync = _txsta@4
1197 00000098 = _sync___byte equ _txsta
1198 00000004 = _sync___bit equ 4
1199                    ; line_number = 212
1200                    ; bind _brgh = _txsta@2
1201 00000098 = _brgh___byte equ _txsta
1202 00000002 = _brgh___bit equ 2
1203                    ; line_number = 213
1204                    ; bind _trmt = _txsta@1
1205 00000098 = _trmt___byte equ _txsta
1206 00000001 = _trmt___bit equ 1
1207                    ; line_number = 214
1208                    ; bind _tx9d = _txsta@0
1209 00000098 = _tx9d___byte equ _txsta
1210 00000000 = _tx9d___bit equ 0
1211            
1212                    ; line_number = 216
1213                    ; register _spbrg = 
1214 00000099 = _spbrg equ 153
1215            
1216                    ; line_number = 218
1217                    ; register _adresl = 
1218 0000009e = _adresl equ 158
1219            
1220                    ; line_number = 220
1221                    ; register _adcon1 = 
1222 0000009f = _adcon1 equ 159
1223                    ; line_number = 221
1224                    ; bind _adfm = _adcon1@7
1225 0000009f = _adfm___byte equ _adcon1
1226 00000007 = _adfm___bit equ 7
1227                    ; line_number = 222
1228                    ; bind _pcfg3 = _adcon1@3
1229 0000009f = _pcfg3___byte equ _adcon1
1230 00000003 = _pcfg3___bit equ 3
1231                    ; line_number = 223
1232                    ; bind _pcfg2 = _adcon1@2
1233 0000009f = _pcfg2___byte equ _adcon1
1234 00000002 = _pcfg2___bit equ 2
1235                    ; line_number = 224
1236                    ; bind _pcfg1 = _adcon1@1
1237 0000009f = _pcfg1___byte equ _adcon1
1238 00000001 = _pcfg1___bit equ 1
1239                    ; line_number = 225
1240                    ; bind _pcfg0 = _adcon1@0
1241 0000009f = _pcfg0___byte equ _adcon1
1242 00000000 = _pcfg0___bit equ 0
1243            
1244                    ; # Bank 2:
1245            
1246                    ; line_number = 229
1247                    ; register _eedata = 
1248 0000010c = _eedata equ 268
1249            
1250                    ; line_number = 231
1251                    ; register _eeadr = 
1252 0000010d = _eeadr equ 269
1253            
1254                    ; line_number = 233
1255                    ; register _eedath = 
1256 0000010e = _eedath equ 270
1257            
1258                    ; line_number = 235
1259                    ; register _eeadrh = 
1260 0000010f = _eeadrh equ 271
1261            
1262                    ; # Bank 3:
1263            
1264                    ; line_number = 239
1265                    ; register _eecon1 = 
1266 0000018c = _eecon1 equ 396
1267                    ; line_number = 240
1268                    ; bind _eepgd = _eecon1@7
1269 0000018c = _eepgd___byte equ _eecon1
1270 00000007 = _eepgd___bit equ 7
1271                    ; line_number = 241
1272                    ; bind _wrerr = _eecon1@3
1273 0000018c = _wrerr___byte equ _eecon1
1274 00000003 = _wrerr___bit equ 3
1275                    ; line_number = 242
1276                    ; bind _wren = _eecon1@2
1277 0000018c = _wren___byte equ _eecon1
1278 00000002 = _wren___bit equ 2
1279                    ; line_number = 243
1280                    ; bind _wr = _eecon1@1
1281 0000018c = _wr___byte equ _eecon1
1282 00000001 = _wr___bit equ 1
1283                    ; line_number = 244
1284                    ; bind _rd = _eecon1@0
1285 0000018c = _rd___byte equ _eecon1
1286 00000000 = _rd___bit equ 0
1287            
1288                    ; line_number = 246
1289                    ; register _eecon2 = 
1290 0000018d = _eecon2 equ 397
1291            
1292            
1293                    ; buffer = '_pic16f876'
1294                    ; line_number = 266
1295                    ; library _pic16f87x exited
1296            
1297            
1298                    ; buffer = 'picbrain11'
1299                    ; line_number = 9
1300                    ; library _pic16f876 exited
1301                    ; line_number = 10
1302                    ; library clock20mhz entered
1303                    ; # Copyright (c) 2004 by Wayne C. Gramlich
1304                    ; # All rights reserved.
1305            
1306                    ; # This library defines the contstants {clock_rate}, {instruction_rate},
1307                    ; # and {clocks_per_instruction}.
1308            
1309                    ; # Define processor constants:
1310                    ; buffer = 'clock20mhz'
1311                    ; line_number = 9
1312                    ; constant clock_rate = 20000000
1313 01312d00 = clock_rate equ 20000000
1314                    ; line_number = 10
1315                    ; constant clocks_per_instruction = 4
1316 00000004 = clocks_per_instruction equ 4
1317                    ; line_number = 11
1318                    ; constant instruction_rate = clock_rate / clocks_per_instruction
1319 004c4b40 = instruction_rate equ 5000000
1320            
1321            
1322                    ; buffer = 'picbrain11'
1323                    ; line_number = 10
1324                    ; library clock20mhz exited
1325            
1326            
1327                    ; # Port and pin definitions:
1328            
1329                    ; line_number = 16
1330                    ; constant a_reg = 0
1331 00000000 = a_reg equ 0
1332                    ; line_number = 17
1333                    ; constant b_reg = 1
1334 00000001 = b_reg equ 1
1335                    ; line_number = 18
1336                    ; constant c_reg = 2
1337 00000002 = c_reg equ 2
1338            
1339                    ; line_number = 20
1340                    ; constant n1 = 0
1341 00000000 = n1 equ 0
1342                    ; line_number = 21
1343                    ; constant n1_reg = b_reg
1344 00000001 = n1_reg equ 1
1345            
1346                    ; line_number = 23
1347                    ; constant n2 = 1
1348 00000001 = n2 equ 1
1349                    ; line_number = 24
1350                    ; constant n2_reg = a_reg
1351 00000000 = n2_reg equ 0
1352            
1353                    ; line_number = 26
1354                    ; constant n3 = 2
1355 00000002 = n3 equ 2
1356                    ; line_number = 27
1357                    ; constant n3_reg = b_reg
1358 00000001 = n3_reg equ 1
1359            
1360                    ; line_number = 29
1361                    ; constant n4 = 3
1362 00000003 = n4 equ 3
1363                    ; line_number = 30
1364                    ; constant n4_reg = a_reg
1365 00000000 = n4_reg equ 0
1366            
1367                    ; line_number = 32
1368                    ; constant n5 = 4
1369 00000004 = n5 equ 4
1370                    ; line_number = 33
1371                    ; constant n5_reg = b_reg
1372 00000001 = n5_reg equ 1
1373            
1374                    ; line_number = 35
1375                    ; constant n6 = 5
1376 00000005 = n6 equ 5
1377                    ; line_number = 36
1378                    ; constant n6_reg = a_reg
1379 00000000 = n6_reg equ 0
1380            
1381                    ; line_number = 38
1382                    ; constant n7 = 6
1383 00000006 = n7 equ 6
1384                    ; line_number = 39
1385                    ; constant n7_reg = b_reg
1386 00000001 = n7_reg equ 1
1387            
1388                    ; line_number = 41
1389                    ; constant n8 = 7
1390 00000007 = n8 equ 7
1391                    ; line_number = 42
1392                    ; constant n8_reg = c_reg
1393 00000002 = n8_reg equ 2
1394            
1395                    ; line_number = 44
1396                    ; constant n9 = 8
1397 00000008 = n9 equ 8
1398                    ; line_number = 45
1399                    ; constant n9_reg = c_reg
1400 00000002 = n9_reg equ 2
1401            
1402                    ; line_number = 47
1403                    ; constant n10 = 9
1404 00000009 = n10 equ 9
1405                    ; line_number = 48
1406                    ; constant n10_reg = c_reg
1407 00000002 = n10_reg equ 2
1408            
1409                    ; line_number = 50
1410                    ; constant n11 = 10
1411 0000000a = n11 equ 10
1412                    ; line_number = 51
1413                    ; constant n11_reg = c_reg
1414 00000002 = n11_reg equ 2
1415            
1416                    ; line_number = 53
1417                    ; constant n_none = 11
1418 0000000b = n_none equ 11
1419            
1420                    ; # Port definitions:
1421            
1422                    ; line_number = 57
1423                    ; package pdip
1424                    ; line_number = 58
1425                    ; pin 1 = mclr
1426                    ; line_number = 59
1427                    ;  pin 2 = ra0_in, name = n2in, bit = n2in_bit, mask = n2in_mask
1428 00000005 = n2in___byte equ _porta
1429 00000000 = n2in___bit equ 0
1430 00000000 = n2in_bit equ 0
1431 00000001 = n2in_mask equ 1
1432                    ; line_number = 60
1433                    ;  pin 3 = ra1_out, name = n2out, bit = n2out_bit, mask = n2out_mask
1434 00000005 = n2out___byte equ _porta
1435 00000001 = n2out___bit equ 1
1436 00000001 = n2out_bit equ 1
1437 00000002 = n2out_mask equ 2
1438                    ; line_number = 61
1439                    ;  pin 4 = ra2_in, name = n4in, bit = n4in_bit, mask = n4in_mask
1440 00000005 = n4in___byte equ _porta
1441 00000002 = n4in___bit equ 2
1442 00000002 = n4in_bit equ 2
1443 00000004 = n4in_mask equ 4
1444                    ; line_number = 62
1445                    ;  pin 5 = ra3_out, name = n4out, bit = n4out_bit, mask = n4out_mask
1446 00000005 = n4out___byte equ _porta
1447 00000003 = n4out___bit equ 3
1448 00000003 = n4out_bit equ 3
1449 00000008 = n4out_mask equ 8
1450                    ; line_number = 63
1451                    ;  pin 6 = ra4_in, name = n6in, bit = n6in_bit, mask = n6in_mask
1452 00000005 = n6in___byte equ _porta
1453 00000004 = n6in___bit equ 4
1454 00000004 = n6in_bit equ 4
1455 00000010 = n6in_mask equ 16
1456                    ; line_number = 64
1457                    ;  pin 7 = ra5_out, name = n6out, bit = n6_out_bit, mask = n6out_mask
1458 00000005 = n6out___byte equ _porta
1459 00000005 = n6out___bit equ 5
1460 00000005 = n6_out_bit equ 5
1461 00000020 = n6out_mask equ 32
1462                    ; line_number = 65
1463                    ;  pin 8 = ground
1464                    ; line_number = 66
1465                    ;  pin 9 = osc1
1466                    ; line_number = 67
1467                    ;  pin 10 = osc2
1468                    ; line_number = 68
1469                    ;  pin 11 = rc0_in, name = n9in, bit = n9in_bit, mask = n9in_mask
1470 00000007 = n9in___byte equ _portc
1471 00000000 = n9in___bit equ 0
1472 00000000 = n9in_bit equ 0
1473 00000001 = n9in_mask equ 1
1474                    ; line_number = 69
1475                    ;  pin 12 = rc1_out, name = n9out, bit = n9out_bit, mask = n9out_mask
1476 00000007 = n9out___byte equ _portc
1477 00000001 = n9out___bit equ 1
1478 00000001 = n9out_bit equ 1
1479 00000002 = n9out_mask equ 2
1480                    ; line_number = 70
1481                    ;  pin 13 = rc2_in, name = n8in, bit = n8in_bit, mask = n8in_mask
1482 00000007 = n8in___byte equ _portc
1483 00000002 = n8in___bit equ 2
1484 00000002 = n8in_bit equ 2
1485 00000004 = n8in_mask equ 4
1486                    ; line_number = 71
1487                    ;  pin 14 = rc3_in, name = n10in, bit = n10in_bit, mask = n10in_mask
1488 00000007 = n10in___byte equ _portc
1489 00000003 = n10in___bit equ 3
1490 00000003 = n10in_bit equ 3
1491 00000008 = n10in_mask equ 8
1492                    ; line_number = 72
1493                    ;  pin 15 = rc4_out, name = n10out, bit = n10out_bit, mask = n10out_mask
1494 00000007 = n10out___byte equ _portc
1495 00000004 = n10out___bit equ 4
1496 00000004 = n10out_bit equ 4
1497 00000010 = n10out_mask equ 16
1498                    ; line_number = 73
1499                    ;  pin 16 = rc5_out, name = n8out, bit = n8out_bit, mask = n8out_mask
1500 00000007 = n8out___byte equ _portc
1501 00000005 = n8out___bit equ 5
1502 00000005 = n8out_bit equ 5
1503 00000020 = n8out_mask equ 32
1504                    ; line_number = 74
1505                    ;  pin 17 = rc6_out, name = n11out, bit = n11out_bit, mask = n11out_mask
1506 00000007 = n11out___byte equ _portc
1507 00000006 = n11out___bit equ 6
1508 00000006 = n11out_bit equ 6
1509 00000040 = n11out_mask equ 64
1510                    ; line_number = 75
1511                    ;  pin 18 = rc7_in, name = n11in, bit = n11in_bit, mask = n11in_mask
1512 00000007 = n11in___byte equ _portc
1513 00000007 = n11in___bit equ 7
1514 00000007 = n11in_bit equ 7
1515 00000080 = n11in_mask equ 128
1516                    ; line_number = 76
1517                    ;  pin 19 = ground2
1518                    ; line_number = 77
1519                    ;  pin 20 = power_supply
1520                    ; line_number = 78
1521                    ;  pin 21 = rb0_in, name = n7in, bit = n7in_bit, mask = n7in_mask
1522 00000006 = n7in___byte equ _portb
1523 00000000 = n7in___bit equ 0
1524 00000000 = n7in_bit equ 0
1525 00000001 = n7in_mask equ 1
1526                    ; line_number = 79
1527                    ;  pin 22 = rb1_out, name = n7out, bit = n7_out_bit, mask = n7out_mask
1528 00000006 = n7out___byte equ _portb
1529 00000001 = n7out___bit equ 1
1530 00000001 = n7_out_bit equ 1
1531 00000002 = n7out_mask equ 2
1532                    ; line_number = 80
1533                    ;  pin 23 = rb2_in, name = n5in, bit = n5in_bit, mask = n5in_mask
1534 00000006 = n5in___byte equ _portb
1535 00000002 = n5in___bit equ 2
1536 00000002 = n5in_bit equ 2
1537 00000004 = n5in_mask equ 4
1538                    ; line_number = 81
1539                    ;  pin 24 = rb3_out, name = n5out, bit = n5out_bit, mask = n5out_mask
1540 00000006 = n5out___byte equ _portb
1541 00000003 = n5out___bit equ 3
1542 00000003 = n5out_bit equ 3
1543 00000008 = n5out_mask equ 8
1544                    ; line_number = 82
1545                    ;  pin 25 = rb4_in, name = n3in, bit = n3in_bit, mask = n3in_mask
1546 00000006 = n3in___byte equ _portb
1547 00000004 = n3in___bit equ 4
1548 00000004 = n3in_bit equ 4
1549 00000010 = n3in_mask equ 16
1550                    ; line_number = 83
1551                    ;  pin 26 = rb5_out, name = n3out, bit = n3out_bit, mask = n3out_mask
1552 00000006 = n3out___byte equ _portb
1553 00000005 = n3out___bit equ 5
1554 00000005 = n3out_bit equ 5
1555 00000020 = n3out_mask equ 32
1556                    ; line_number = 84
1557                    ;  pin 27 = rb6_in, name = n1in, bit = n1in_bit, mask = n1in_mask
1558 00000006 = n1in___byte equ _portb
1559 00000006 = n1in___bit equ 6
1560 00000006 = n1in_bit equ 6
1561 00000040 = n1in_mask equ 64
1562                    ; line_number = 85
1563                    ;  pin 28 = rb7_out, name = n1out, bit = n1out_bit, mask = n1out_mask
1564 00000006 = n1out___byte equ _portb
1565 00000007 = n1out___bit equ 7
1566 00000007 = n1out_bit equ 7
1567 00000080 = n1out_mask equ 128
1568            
1569                    ; # The tether is expected on connector N1:
1570                    ; #constant tether_socket = n1
1571                    ; line_number = 89
1572                    ; constant tether_socket = n1
1573 00000000 = tether_socket equ 0
1574            
1575                    ; # Some general constants:
1576                    ; line_number = 92
1577                    ; constant ascii_mask = 0x7f
1578 0000007f = ascii_mask equ 127
1579                    ; line_number = 93
1580                    ; constant tab = 8
1581 00000008 = tab equ 8
1582                    ; line_number = 94
1583                    ; constant line_feed = 10
1584 0000000a = line_feed equ 10
1585                    ; line_number = 95
1586                    ; constant carriage_return = 13
1587 0000000d = carriage_return equ 13
1588                    ; line_number = 96
1589                    ; constant space = 32
1590 00000020 = space equ 32
1591                    ; line_number = 97
1592                    ; constant register_mask = 0x7f
1593 0000007f = register_mask equ 127
1594            
1595                    ; # Stome timing constants:
1596                    ; line_number = 100
1597                    ; constant baud_rate = 2400
1598 00000960 = baud_rate equ 2400
1599                    ; line_number = 101
1600                    ; constant instructions_per_bit = instruction_rate / baud_rate
1601 00000823 = instructions_per_bit equ 2083
1602                    ; line_number = 102
1603                    ; constant delays_per_bit = 3
1604 00000003 = delays_per_bit equ 3
1605                    ; line_number = 103
1606                    ; constant instructions_per_delay = instructions_per_bit / delays_per_bit
1607 000002b6 = instructions_per_delay equ 694
1608                    ; line_number = 104
1609                    ; constant extra_delay_instructions = 8
1610 00000008 = extra_delay_instructions equ 8
1611                    ; line_number = 105
1612                    ; constant extra_bit_instructions = extra_delay_instructions * delays_per_bit
1613 00000018 = extra_bit_instructions equ 24
1614                    ; line_number = 106
1615                    ; constant delay_instructions = instructions_per_delay - extra_delay_instructions
1616 000002ae = delay_instructions equ 686
1617            
1618                    ; # The null pulse that comes back from a clock pulse command is supposed to be
1619                    ; # exactly 9 bits long.  9 bits at 2400 baud is 9/2400 = 3.75mS.  The number
1620                    ; # iterations through the loop is 3.75mS / (number of instructions per iteration.)
1621                    ; line_number = 111
1622                    ; constant nine_bits_instructions = (clock_rate * 9) / (4 * baud_rate)
1623 0000493e = nine_bits_instructions equ 18750
1624                    ; line_number = 112
1625                    ; constant instructions_per_iteration = 13
1626 0000000d = instructions_per_iteration equ 13
1627                    ; line_number = 113
1628                    ; constant iterations_for_nine_bits = nine_bits_instructions / instructions_per_iteration
1629 000005a2 = iterations_for_nine_bits equ 1442
1630                    ; line_number = 114
1631                    ; constant iterations_high = iterations_for_nine_bits / 256
1632 00000005 = iterations_high equ 5
1633                    ; line_number = 115
1634                    ; constant iterations_low = iterations_for_nine_bits - (iterations_high * 256)
1635 000000a2 = iterations_low equ 162
1636            
1637                    ; line_number = 117
1638                    ; origin 0
1639   0000 :           org     0
1640            
1641            
1642                    ; line_number = 121
1643                    ; procedure start
1644   0000 :   start:
1645                    ; arguments_none
1646                    ; line_number = 123
1647                    ;  returns_nothing
1648            
1649                    ; # This procedure will transfer control to the boot loader {main}.
1650            
1651                    ; before procedure statements delay=non-uniform, bit states=(data:01=>01 code:00=>00)
1652                    ; line_number = 127
1653                    ;  call main()
1654 0000 158a          bsf     __cb0___byte, __cb0___bit
1655 0001 160a          bsf     __cb1___byte, __cb1___bit
1656 0002 1283          bcf     __rp0___byte, __rp0___bit
1657 0003 2300          call    main
1658            
1659            
1660                    ; delay after procedure statements=non-uniform
1661 0004 1683          bsf     __rp0___byte, __rp0___bit
1662                    ; Implied return
1663 0005 118a          bcf     __cb0___byte, __cb0___bit
1664 0006 120a          bcf     __cb1___byte, __cb1___bit
1665 0007 3400          retlw   0
1666            
1667            
1668            
1669            
1670                    ; line_number = 130
1671                    ; constant program_origin = 8
1672 00000008 = program_origin equ 8
1673                    ; line_number = 131
1674                    ; origin program_origin
1675   0008 :           org     8
1676            
1677                    ; line_number = 133
1678                    ; procedure program
1679   0008 :   program:
1680                    ; arguments_none
1681                    ; line_number = 135
1682                    ;  returns_nothing
1683            
1684                    ; # Dummy program that does nothing:
1685            
1686                    ; line_number = 139
1687                    ;  local index byte
1688 000000a0 = program__index equ globals___1
1689            
1690                    ; before procedure statements delay=non-uniform, bit states=(data:01=>01 code:00=>00)
1691                    ; line_number = 141
1692                    ;  index := 1
1693 0008 3001          movlw   1
1694 0009 00a0          movwf   program__index
1695                    ; line_number = 142
1696                    ;  loop_exactly message.size start
1697 000000a1 = program__1 equ globals___1+1
1698 000a 3021          movlw   33
1699 000b 00a1          movwf   program__1
1700   000c :   program__2:
1701                    ; line_number = 143
1702                    ; call put_character(message[index])
1703 000c 0820          movf    program__index,w
1704 000d 2020          call    message
1705 000e 158a          bsf     __cb0___byte, __cb0___bit
1706 000f 160a          bsf     __cb1___byte, __cb1___bit
1707 0010 1283          bcf     __rp0___byte, __rp0___bit
1708 0011 26ce          call    put_character
1709                    ; line_number = 144
1710                    ;  index := index + 1
1711 0012 1683          bsf     __rp0___byte, __rp0___bit
1712 0013 0aa0          incf    program__index,f
1713            
1714                    ; line_number = 142
1715                    ;  loop_exactly message.size wrap-up
1716 0014 0ba1          decfsz  program__1,f
1717 0015 118a          bcf     __cb0___byte, __cb0___bit
1718 0016 120a          bcf     __cb1___byte, __cb1___bit
1719 0017 280c          goto    program__2
1720                    ; line_number = 142
1721                    ;  loop_exactly message.size done
1722                    ; line_number = 146
1723                    ; call main()
1724 0018 158a          bsf     __cb0___byte, __cb0___bit
1725 0019 160a          bsf     __cb1___byte, __cb1___bit
1726 001a 1283          bcf     __rp0___byte, __rp0___bit
1727 001b 2300          call    main
1728            
1729            
1730                    ; delay after procedure statements=non-uniform
1731 001c 1683          bsf     __rp0___byte, __rp0___bit
1732                    ; Implied return
1733 001d 118a          bcf     __cb0___byte, __cb0___bit
1734 001e 120a          bcf     __cb1___byte, __cb1___bit
1735 001f 3400          retlw   0
1736            
1737            
1738            
1739            
1740                    ; line_number = 149
1741                    ; string message = "You need to download a program!\cr,lf\" start
1742                    ; message = 'You need to download a program!\13,10\'
1743   0020 :   message:
1744                    ; Temporarily save index into FSR
1745 0020 0084          movwf   __fsr
1746                    ; Initialize PCLATH to point to this code page
1747 0021 3000          movlw   message___base>>8
1748 0022 008a          movwf   __pclath
1749                    ; Restore index from FSR
1750 0023 0804          movf    __fsr,w
1751 0024 3e26          addlw   message___base
1752                    ; Index to the correct return value
1753 0025 0082          movwf   __pcl
1754                    ; page_group 33
1755   0026 :   message___base:
1756 0026 3459          retlw   89
1757 0027 346f          retlw   111
1758 0028 3475          retlw   117
1759 0029 3420          retlw   32
1760 002a 346e          retlw   110
1761 002b 3465          retlw   101
1762 002c 3465          retlw   101
1763 002d 3464          retlw   100
1764 002e 3420          retlw   32
1765 002f 3474          retlw   116
1766 0030 346f          retlw   111
1767 0031 3420          retlw   32
1768 0032 3464          retlw   100
1769 0033 346f          retlw   111
1770 0034 3477          retlw   119
1771 0035 346e          retlw   110
1772 0036 346c          retlw   108
1773 0037 346f          retlw   111
1774 0038 3461          retlw   97
1775 0039 3464          retlw   100
1776 003a 3420          retlw   32
1777 003b 3461          retlw   97
1778 003c 3420          retlw   32
1779 003d 3470          retlw   112
1780 003e 3472          retlw   114
1781 003f 346f          retlw   111
1782 0040 3467          retlw   103
1783 0041 3472          retlw   114
1784 0042 3461          retlw   97
1785 0043 346d          retlw   109
1786 0044 3421          retlw   33
1787 0045 340d          retlw   13
1788 0046 340a          retlw   10
1789                    ; line_number = 149
1790                    ; string message = "You need to download a program!\cr,lf\" start
1791            
1792                    ; line_number = 152
1793                    ; constant buffer_size = 8
1794 00000008 = buffer_size equ 8
1795                    ; line_number = 153
1796                    ; global buffer_highs[buffer_size] array[byte]
1797 00000110 = buffer_highs equ globals___2
1798                    ; line_number = 154
1799                    ; global buffer_lows[buffer_size] array[byte]
1800 00000118 = buffer_lows equ globals___2+8
1801            
1802                    ; line_number = 156
1803                    ; constant boot_loader_origin = 0x1b00
1804 00001b00 = boot_loader_origin equ 6912
1805                    ; line_number = 157
1806                    ; constant boot_loader_origin_high = boot_loader_origin >> 8
1807 0000001b = boot_loader_origin_high equ 27
1808                    ; line_number = 158
1809                    ; origin boot_loader_origin
1810                    ; Code bank 1; Start address: 2048; End address: 4095
1811   0800 :           org     2048
1812                    ; Code bank 2; Start address: 4096; End address: 6143
1813   1000 :           org     4096
1814                    ; Code bank 3; Start address: 6144; End address: 8191
1815   1800 :           org     6144
1816   1b00 :           org     6912
1817            
1818                    ; line_number = 161
1819                    ; register_array bank01[256] = 0
1820 00000000 = bank01 equ 0
1821                    ; line_number = 162
1822                    ; register_array bank23[256] = 0x100
1823 00000100 = bank23 equ 256
1824                    ; line_number = 163
1825                    ; register_array ports[3] = 5
1826 00000005 = ports equ 5
1827            
1828                    ; line_number = 165
1829                    ; constant id_reset = 0xfd
1830 000000fd = id_reset equ 253
1831                    ; line_number = 166
1832                    ; constant id_next = 0xfc
1833 000000fc = id_next equ 252
1834            
1835                    ; # Global variables:
1836            
1837                    ; # In general, I don't like gobal error registers, but for this
1838                    ; # application, I think a global one works best:
1839                    ; line_number = 172
1840                    ; global ok bit
1841 0000006f = ok___byte equ globals___0+79
1842 00000000 = ok___bit equ 0
1843                    ; line_number = 173
1844                    ; global have_carriage_return bit
1845 0000006f = have_carriage_return___byte equ globals___0+79
1846 00000001 = have_carriage_return___bit equ 1
1847            
1848                    ; # I/O registers:
1849                    ; line_number = 176
1850                    ; global in_mask byte
1851 00000020 = in_mask equ globals___0
1852                    ; line_number = 177
1853                    ; global in_out_register byte
1854 00000021 = in_out_register equ globals___0+1
1855                    ; line_number = 178
1856                    ; global out_mask byte
1857 00000022 = out_mask equ globals___0+2
1858                    ; line_number = 179
1859                    ; global receiving bit
1860 0000006f = receiving___byte equ globals___0+79
1861 00000002 = receiving___bit equ 2
1862            
1863                    ; line_number = 181
1864                    ; global sleep_count byte
1865 00000023 = sleep_count equ globals___0+3
1866            
1867                    ; line_number = 183
1868                    ; procedure main
1869   1b00 :   main:
1870                    ; Initialize some registers
1871 1b00 019f          clrf    _adcon0
1872 1b01 3007          movlw   7
1873 1b02 1683          bsf     __rp0___byte, __rp0___bit
1874 1b03 009f          movwf   _adcon1
1875 1b04 3015          movlw   21
1876 1b05 0085          movwf   _trisa
1877 1b06 3055          movlw   85
1878 1b07 0086          movwf   _trisb
1879 1b08 308d          movlw   141
1880 1b09 0087          movwf   _trisc
1881                    ; arguments_none
1882                    ; line_number = 185
1883                    ;  returns_nothing
1884            
1885                    ; line_number = 187
1886                    ;  local address_high byte
1887 00000024 = main__address_high equ globals___0+4
1888                    ; line_number = 188
1889                    ;  local address_low byte
1890 00000025 = main__address_low equ globals___0+5
1891                    ; line_number = 189
1892                    ;  local block_index byte
1893 00000026 = main__block_index equ globals___0+6
1894                    ; line_number = 190
1895                    ;  local buffer_index byte
1896 00000027 = main__buffer_index equ globals___0+7
1897                    ; line_number = 191
1898                    ;  local buffer_size byte
1899 00000028 = main__buffer_size equ globals___0+8
1900                    ; line_number = 192
1901                    ;  local byte byte
1902 00000029 = main__byte equ globals___0+9
1903                    ; line_number = 193
1904                    ;  local check_sum byte
1905 0000002a = main__check_sum equ globals___0+10
1906                    ; line_number = 194
1907                    ;  local chr byte
1908 0000002b = main__chr equ globals___0+11
1909                    ; line_number = 195
1910                    ;  local command byte
1911 0000002c = main__command equ globals___0+12
1912                    ; line_number = 196
1913                    ;  local count byte
1914 0000002d = main__count equ globals___0+13
1915                    ; line_number = 197
1916                    ;  local errors byte
1917 0000002e = main__errors equ globals___0+14
1918                    ; line_number = 198
1919                    ;  local error_high byte
1920 0000002f = main__error_high equ globals___0+15
1921                    ; line_number = 199
1922                    ;  local error_low byte
1923 00000030 = main__error_low equ globals___0+16
1924                    ; line_number = 200
1925                    ;  local index byte
1926 00000031 = main__index equ globals___0+17
1927                    ; line_number = 201
1928                    ;  local length byte
1929 00000032 = main__length equ globals___0+18
1930                    ; line_number = 202
1931                    ;  local more bit
1932 0000006f = main__more___byte equ globals___0+79
1933 00000003 = main__more___bit equ 3
1934                    ; line_number = 203
1935                    ;  local return1 byte
1936 00000033 = main__return1 equ globals___0+19
1937                    ; line_number = 204
1938                    ;  local return2 byte
1939 00000034 = main__return2 equ globals___0+20
1940                    ; line_number = 205
1941                    ;  local socket byte
1942 00000035 = main__socket equ globals___0+21
1943                    ; line_number = 206
1944                    ;  local type byte
1945 00000036 = main__type equ globals___0+22
1946            
1947                    ; # Turn of general interrupts:
1948                    ; before procedure statements delay=non-uniform, bit states=(data:00=>01 code:11=>11)
1949                    ; line_number = 209
1950                    ;  _gie := 0
1951 1b0a 138b          bcf     _gie___byte, _gie___bit
1952            
1953                    ; # Initilize serial port:
1954            
1955                    ; # Do Baud Rate selection and asynch. serial port enable:
1956                    ; # Prescaler = low:
1957                    ; line_number = 215
1958                    ;  _brgh := 1
1959 1b0b 1518          bsf     _brgh___byte, _brgh___bit
1960                    ; # Baud rate = 19200 Baud:
1961                    ; line_number = 217
1962                    ;  _spbrg := 64
1963 1b0c 3040          movlw   64
1964 1b0d 0099          movwf   _spbrg
1965                    ; # Asynchronous mode:
1966                    ; line_number = 219
1967                    ;  _sync := 0
1968 1b0e 1218          bcf     _sync___byte, _sync___bit
1969                    ; # Serial port enable:
1970                    ; line_number = 221
1971                    ;  _spen := 1
1972 1b0f 1283          bcf     __rp0___byte, __rp0___bit
1973 1b10 1798          bsf     _spen___byte, _spen___bit
1974                    ; line_number = 222
1975                    ;  _txif := 0
1976 1b11 120c          bcf     _txif___byte, _txif___bit
1977            
1978                    ; # Enable the transmitter:
1979                    ; # 8-bit mode:
1980                    ; line_number = 226
1981                    ;  _tx9 := 0
1982 1b12 1683          bsf     __rp0___byte, __rp0___bit
1983 1b13 1318          bcf     _tx9___byte, _tx9___bit
1984                    ; # Enable transmitter:
1985                    ; line_number = 228
1986                    ;  _txen := 1
1987 1b14 1698          bsf     _txen___byte, _txen___bit
1988            
1989                    ; # Enable the receiver:
1990                    ; # 8-bit mode:
1991                    ; line_number = 232
1992                    ;  _rx9 := 0
1993 1b15 1283          bcf     __rp0___byte, __rp0___bit
1994 1b16 1318          bcf     _rx9___byte, _rx9___bit
1995                    ; # Disable address:
1996                    ; line_number = 234
1997                    ;  _adden := 0
1998 1b17 1198          bcf     _adden___byte, _adden___bit
1999                    ; # Continuous receive enable:
2000                    ; line_number = 236
2001                    ;  _cren := 1
2002 1b18 1618          bsf     _cren___byte, _cren___bit
2003                    ; # Serial receive enable:
2004                    ; line_number = 238
2005                    ;  _sren := 1
2006 1b19 1698          bsf     _sren___byte, _sren___bit
2007            
2008                    ; # Initialize all of the serial outs:
2009                    ; line_number = 241
2010                    ;  n1out := 1
2011 1b1a 1786          bsf     n1out___byte, n1out___bit
2012                    ; line_number = 242
2013                    ;  n2out := 1
2014 1b1b 1485          bsf     n2out___byte, n2out___bit
2015                    ; line_number = 243
2016                    ;  n3out := 1
2017 1b1c 1686          bsf     n3out___byte, n3out___bit
2018                    ; line_number = 244
2019                    ;  n4out := 1
2020 1b1d 1585          bsf     n4out___byte, n4out___bit
2021                    ; line_number = 245
2022                    ;  n5out := 1
2023 1b1e 1586          bsf     n5out___byte, n5out___bit
2024                    ; line_number = 246
2025                    ;  n6out := 1
2026 1b1f 1685          bsf     n6out___byte, n6out___bit
2027                    ; line_number = 247
2028                    ;  n7out := 1
2029 1b20 1486          bsf     n7out___byte, n7out___bit
2030                    ; line_number = 248
2031                    ;  n8out := 1
2032 1b21 1687          bsf     n8out___byte, n8out___bit
2033                    ; line_number = 249
2034                    ;  n9out := 1
2035 1b22 1487          bsf     n9out___byte, n9out___bit
2036                    ; line_number = 250
2037                    ;  n10out := 1
2038 1b23 1607          bsf     n10out___byte, n10out___bit
2039            
2040                    ; #call put_character('H')
2041                    ; #call put_character('i')
2042                    ; #call put_character('!')
2043                    ; #call put_character('\r\')
2044                    ; #call put_character('\n\')
2045            
2046                    ; # Print out a hello message:
2047                    ; line_number = 259
2048                    ;  index := 0
2049 1b24 3000          movlw   0
2050 1b25 00b1          movwf   main__index
2051                    ; line_number = 260
2052                    ;  while index < hello.size start
2053   1b26 :   main__1:
2054 1b26 300d          movlw   13
2055 1b27 0231          subwf   main__index,w
2056                    ; =>bit_code_emit@symbol(): sym=__c
2057                    ; CASE: true.size=0 && false.size>1
2058 1b28 1803          btfsc   __c___byte, __c___bit
2059 1b29 2b2f          goto    main__2
2060                    ; line_number = 261
2061                    ; call put_character(hello[index])
2062 1b2a 0831          movf    main__index,w
2063 1b2b 272f          call    hello
2064 1b2c 26ce          call    put_character
2065                    ; line_number = 262
2066                    ;  index := index + 1
2067 1b2d 0ab1          incf    main__index,f
2068            
2069 1b2e 2b26          goto    main__1
2070   1b2f :   main__2:
2071                    ; Recombine size1 = 0 || size2 = 0
2072                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
2073                    ; line_number = 260
2074                    ;  while index < hello.size done
2075                    ; line_number = 264
2076                    ; if seconds_sleep(60) start
2077 1b2f 303c          movlw   60
2078 1b30 26f3          call    seconds_sleep
2079                    ; =>bit_code_emit@symbol(): sym=seconds_sleep__0return
2080                    ; CASE: true_code.size = 0 && false_code.size > 1
2081 1b31 1eef          btfss   seconds_sleep__0return___byte, seconds_sleep__0return___bit
2082 1b32 2b35          goto    main__3
2083                    ; line_number = 265
2084                    ; call put_crlf()
2085 1b33 26d8          call    put_crlf
2086            
2087                    ; line_number = 267
2088                    ;  call execute()
2089 1b34 25ac          call    execute
2090            
2091                    ; Recombine size1 = 0 || size2 = 0
2092   1b35 :   main__3:
2093                    ; <=bit_code_emit@symbol; sym=seconds_sleep__0return (data:00=>00 code:11=>11)
2094                    ; line_number = 264
2095                    ; if seconds_sleep(60) done
2096                    ; #FIXME: What is this?
2097                    ; #call put_byte(0x11, n10)
2098                    ; #call put_byte(0xa0, n10)
2099            
2100                    ; line_number = 273
2101                    ;  socket := n1
2102 1b35 01b5          clrf    main__socket
2103                    ; line_number = 274
2104                    ;  errors := 0
2105 1b36 3000          movlw   0
2106 1b37 00ae          movwf   main__errors
2107            
2108                    ; # Command loop:
2109                    ; #call put_crlf()
2110                    ; line_number = 278
2111                    ;  loop_forever start
2112   1b38 :   main__4:
2113                    ; # Output a prompt:
2114                    ; line_number = 280
2115                    ;  call put_character('>')
2116 1b38 303e          movlw   62
2117 1b39 26ce          call    put_character
2118            
2119                    ; # Go fetch a command character:
2120                    ; line_number = 283
2121                    ;  have_carriage_return := 0
2122 1b3a 10ef          bcf     have_carriage_return___byte, have_carriage_return___bit
2123                    ; line_number = 284
2124                    ;  ok := 1
2125 1b3b 146f          bsf     ok___byte, ok___bit
2126                    ; line_number = 285
2127                    ;  command := get_character()
2128 1b3c 2626          call    get_character
2129 1b3d 00ac          movwf   main__command
2130            
2131                    ; # Dispatch on command character:
2132                    ; line_number = 288
2133                    ;  if command = 'C' start
2134                    ; Left minus Right
2135 1b3e 30bd          movlw   189
2136 1b3f 072c          addwf   main__command,w
2137                    ; =>bit_code_emit@symbol(): sym=__z
2138                    ; CASE: true_code_size > 1 && false_code_size > 1
2139 1b40 1d03          btfss   __z___byte, __z___bit
2140 1b41 2b4c          goto    main__66
2141                    ; line_number = 289
2142                    ; byte := get_hex_byte()
2143 1b42 264c          call    get_hex_byte
2144 1b43 00a9          movwf   main__byte
2145                    ; line_number = 290
2146                    ;  if get_carriage_return() start
2147 1b44 2616          call    get_carriage_return
2148                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2149                    ; CASE: true_code.size = 0 && false_code.size > 1
2150 1b45 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2151 1b46 2b4b          goto    main__65
2152                    ; line_number = 291
2153                    ; call clock_adjust(byte, socket)
2154 1b47 0829          movf    main__byte,w
2155 1b48 00c0          movwf   clock_adjust__adjust
2156 1b49 0835          movf    main__socket,w
2157 1b4a 250e          call    clock_adjust
2158                    ; Recombine size1 = 0 || size2 = 0
2159   1b4b :   main__65:
2160                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2161                    ; line_number = 290
2162                    ;  if get_carriage_return() done
2163 1b4b 2d0d          goto    main__67
2164   1b4c :   main__66:
2165                    ; line_number = 292
2166                    ; Left minus Right
2167 1b4c 30bb          movlw   187
2168 1b4d 072c          addwf   main__command,w
2169                    ; =>bit_code_emit@symbol(): sym=__z
2170                    ; CASE: true_code_size > 1 && false_code_size > 1
2171 1b4e 1d03          btfss   __z___byte, __z___bit
2172 1b4f 2b75          goto    main__63
2173                    ; # Examine data memory command:
2174                    ; line_number = 294
2175                    ;  address_high := get_hex_byte()
2176 1b50 264c          call    get_hex_byte
2177 1b51 00a4          movwf   main__address_high
2178                    ; line_number = 295
2179                    ;  address_low := get_hex_byte()
2180 1b52 264c          call    get_hex_byte
2181 1b53 00a5          movwf   main__address_low
2182                    ; line_number = 296
2183                    ;  count := get_hex_byte()
2184 1b54 264c          call    get_hex_byte
2185 1b55 00ad          movwf   main__count
2186                    ; line_number = 297
2187                    ;  if get_carriage_return() start
2188 1b56 2616          call    get_carriage_return
2189                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2190                    ; CASE: true_code.size = 0 && false_code.size > 1
2191 1b57 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2192 1b58 2b74          goto    main__62
2193                    ; line_number = 298
2194                    ; loop_exactly count start
2195 00000065 = main__58 equ globals___0+69
2196 1b59 082d          movf    main__count,w
2197 1b5a 00e5          movwf   main__58
2198   1b5b :   main__59:
2199                    ; line_number = 299
2200                    ; if address_high = 0 start
2201                    ; Left minus Right
2202 1b5b 0824          movf    main__address_high,w
2203                    ; =>bit_code_emit@symbol(): sym=__z
2204                    ; CASE: true_code_size > 1 && false_code_size > 1
2205 1b5c 1d03          btfss   __z___byte, __z___bit
2206 1b5d 2b65          goto    main__60
2207                    ; line_number = 300
2208                    ; byte := bank01[address_low]
2209 1b5e 0825          movf    main__address_low,w
2210 1b5f 3e00          addlw   bank01
2211 1b60 0084          movwf   __fsr
2212 1b61 1383          bcf     __irp___byte, __irp___bit
2213 1b62 0800          movf    __indf,w
2214 1b63 00a9          movwf   main__byte
2215 1b64 2b6b          goto    main__61
2216   1b65 :   main__60:
2217                    ; line_number = 302
2218                    ; byte := bank23[address_low]
2219 1b65 0825          movf    main__address_low,w
2220 1b66 3e00          addlw   bank23
2221 1b67 0084          movwf   __fsr
2222 1b68 1783          bsf     __irp___byte, __irp___bit
2223 1b69 0800          movf    __indf,w
2224 1b6a 00a9          movwf   main__byte
2225   1b6b :   main__61:
2226                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
2227                    ; line_number = 299
2228                    ; if address_high = 0 done
2229                    ; line_number = 303
2230                    ; call put_hex_byte(byte)
2231 1b6b 0829          movf    main__byte,w
2232 1b6c 26dd          call    put_hex_byte
2233                    ; line_number = 304
2234                    ;  call put_space()
2235 1b6d 26f0          call    put_space
2236                    ; line_number = 305
2237                    ;  address_low := address_low + 1
2238 1b6e 0aa5          incf    main__address_low,f
2239                    ; line_number = 306
2240                    ;  if _z start
2241                    ; =>bit_code_emit@symbol(): sym=_z
2242                    ; CASE: True.size=1 False.size=0
2243 1b6f 1903          btfsc   _z___byte, _z___bit
2244                    ; line_number = 307
2245                    ; address_high := address_high + 1
2246 1b70 0aa4          incf    main__address_high,f
2247                    ; Recombine size1 = 0 || size2 = 0
2248                    ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
2249                    ; line_number = 306
2250                    ;  if _z done
2251                    ; line_number = 298
2252                    ; loop_exactly count wrap-up
2253 1b71 0be5          decfsz  main__58,f
2254 1b72 2b5b          goto    main__59
2255                    ; line_number = 298
2256                    ; loop_exactly count done
2257                    ; line_number = 308
2258                    ; call put_crlf()
2259 1b73 26d8          call    put_crlf
2260                    ; Recombine size1 = 0 || size2 = 0
2261   1b74 :   main__62:
2262                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2263                    ; line_number = 297
2264                    ;  if get_carriage_return() done
2265 1b74 2d0d          goto    main__64
2266   1b75 :   main__63:
2267                    ; line_number = 309
2268                    ; Left minus Right
2269 1b75 30b9          movlw   185
2270 1b76 072c          addwf   main__command,w
2271                    ; =>bit_code_emit@symbol(): sym=__z
2272                    ; CASE: true.size=1 false.size>1; no GOTO
2273 1b77 1d03          btfss   __z___byte, __z___bit
2274 1b78 2b7b          goto    main__56
2275                    ; # Goto command:
2276                    ; line_number = 311
2277                    ;  call goto_command()
2278 1b79 25b1          call    goto_command
2279 1b7a 2d0d          goto    main__57
2280   1b7b :   main__56:
2281                    ; line_number = 312
2282                    ; Left minus Right
2283 1b7b 30b7          movlw   183
2284 1b7c 072c          addwf   main__command,w
2285                    ; =>bit_code_emit@symbol(): sym=__z
2286                    ; CASE: true_code_size > 1 && false_code_size > 1
2287 1b7d 1d03          btfss   __z___byte, __z___bit
2288 1b7e 2b91          goto    main__54
2289                    ; line_number = 313
2290                    ; if get_carriage_return() start
2291 1b7f 2616          call    get_carriage_return
2292                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2293                    ; CASE: true_code.size = 0 && false_code.size > 1
2294 1b80 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2295 1b81 2b90          goto    main__53
2296                    ; line_number = 314
2297                    ; call put_byte(id_reset, socket)
2298 1b82 30fd          movlw   253
2299 1b83 00d8          movwf   put_byte__character
2300 1b84 0835          movf    main__socket,w
2301 1b85 267b          call    put_byte
2302                    ; line_number = 315
2303                    ;  call id8(socket)
2304 1b86 0835          movf    main__socket,w
2305 1b87 25bd          call    id8
2306                    ; line_number = 316
2307                    ;  call id8(socket)
2308 1b88 0835          movf    main__socket,w
2309 1b89 25bd          call    id8
2310                    ; line_number = 317
2311                    ;  call id8(socket)
2312 1b8a 0835          movf    main__socket,w
2313 1b8b 25bd          call    id8
2314                    ; line_number = 318
2315                    ;  call id_string(socket)
2316 1b8c 0835          movf    main__socket,w
2317 1b8d 25ca          call    id_string
2318                    ; line_number = 319
2319                    ;  call id_string(socket)
2320 1b8e 0835          movf    main__socket,w
2321 1b8f 25ca          call    id_string
2322                    ; Recombine size1 = 0 || size2 = 0
2323   1b90 :   main__53:
2324                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2325                    ; line_number = 313
2326                    ; if get_carriage_return() done
2327 1b90 2d0d          goto    main__55
2328   1b91 :   main__54:
2329                    ; line_number = 320
2330                    ; Left minus Right
2331 1b91 30b5          movlw   181
2332 1b92 072c          addwf   main__command,w
2333                    ; =>bit_code_emit@symbol(): sym=__z
2334                    ; CASE: true_code_size > 1 && false_code_size > 1
2335 1b93 1d03          btfss   __z___byte, __z___bit
2336 1b94 2ba6          goto    main__51
2337                    ; line_number = 321
2338                    ; byte := get_hex_nibble()
2339 1b95 2654          call    get_hex_nibble
2340 1b96 00a9          movwf   main__byte
2341                    ; line_number = 322
2342                    ;  if byte = 0 || byte > 10 start
2343                    ; Left minus Right
2344 1b97 0829          movf    main__byte,w
2345                    ; =>bit_code_emit@symbol(): sym=__z
2346                    ; CASE: true.size=1 false.size>1; true=GOTO
2347 1b98 1903          btfsc   __z___byte, __z___bit
2348 1b99 2b9f          goto    main__49
2349                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2350 1b9a 300a          movlw   10
2351 1b9b 0229          subwf   main__byte,w
2352 1b9c 1903          btfsc   __z___byte, __z___bit
2353 1b9d 1003          bcf     __c___byte, __c___bit
2354                    ; =>bit_code_emit@symbol(): sym=__c
2355                    ; CASE: True.size=1 False.size=0
2356 1b9e 1803          btfsc   __c___byte, __c___bit
2357   1b9f :   main__49:
2358                    ; line_number = 323
2359                    ; ok := 0
2360 1b9f 106f          bcf     ok___byte, ok___bit
2361                    ; Recombine size1 = 0 || size2 = 0
2362                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
2363                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
2364                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
2365                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
2366                    ; line_number = 322
2367                    ;  if byte = 0 || byte > 10 done
2368                    ; line_number = 324
2369                    ; if get_carriage_return() start
2370 1ba0 2616          call    get_carriage_return
2371                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2372                    ; CASE: true_code.size = 0 && false_code.size > 1
2373 1ba1 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2374 1ba2 2ba5          goto    main__50
2375                    ; line_number = 325
2376                    ; socket := byte - 1
2377 1ba3 0329          decf    main__byte,w
2378 1ba4 00b5          movwf   main__socket
2379                    ; Recombine size1 = 0 || size2 = 0
2380   1ba5 :   main__50:
2381                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2382                    ; line_number = 324
2383                    ; if get_carriage_return() done
2384 1ba5 2d0d          goto    main__52
2385   1ba6 :   main__51:
2386                    ; line_number = 326
2387                    ; Left minus Right
2388 1ba6 30b0          movlw   176
2389 1ba7 072c          addwf   main__command,w
2390                    ; =>bit_code_emit@symbol(): sym=__z
2391                    ; CASE: true_code_size > 1 && false_code_size > 1
2392 1ba8 1d03          btfss   __z___byte, __z___bit
2393 1ba9 2bdf          goto    main__47
2394                    ; # Print a page of memory:
2395                    ; line_number = 328
2396                    ;  _eeadrh := get_hex_byte()
2397 1baa 264c          call    get_hex_byte
2398 1bab 1703          bsf     __rp1___byte, __rp1___bit
2399 1bac 008f          movwf   _eeadrh
2400                    ; line_number = 329
2401                    ;  if get_carriage_return() start
2402 1bad 1303          bcf     __rp1___byte, __rp1___bit
2403 1bae 2616          call    get_carriage_return
2404                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2405                    ; CASE: true_code.size = 0 && false_code.size > 1
2406 1baf 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2407 1bb0 2bde          goto    main__46
2408                    ; line_number = 330
2409                    ; index := 0
2410 1bb1 3000          movlw   0
2411 1bb2 00b1          movwf   main__index
2412                    ; line_number = 331
2413                    ;  more := 1
2414 1bb3 15ef          bsf     main__more___byte, main__more___bit
2415                    ; line_number = 332
2416                    ;  while more start
2417   1bb4 :   main__43:
2418                    ; =>bit_code_emit@symbol(): sym=main__more
2419                    ; CASE: true_code.size = 0 && false_code.size > 1
2420 1bb4 1def          btfss   main__more___byte, main__more___bit
2421 1bb5 2bde          goto    main__45
2422                    ; line_number = 333
2423                    ; if index & 7 = 0 start
2424                    ; Left minus Right
2425 1bb6 3007          movlw   7
2426 1bb7 0531          andwf   main__index,w
2427                    ; =>bit_code_emit@symbol(): sym=__z
2428 1bb8 1703          bsf     __rp1___byte, __rp1___bit
2429                    ; CASE: true_code.size = 0 && false_code.size > 1
2430 1bb9 1d03          btfss   __z___byte, __z___bit
2431 1bba 2bc2          goto    main__44
2432                    ; # Display the address:
2433                    ; line_number = 335
2434                    ;  call put_hex_byte(_eeadrh)
2435 1bbb 080f          movf    _eeadrh,w
2436 1bbc 1303          bcf     __rp1___byte, __rp1___bit
2437 1bbd 26dd          call    put_hex_byte
2438                    ; line_number = 336
2439                    ;  call put_hex_byte(index)
2440 1bbe 0831          movf    main__index,w
2441 1bbf 26dd          call    put_hex_byte
2442                    ; line_number = 337
2443                    ;  call put_character(':')
2444 1bc0 303a          movlw   58
2445 1bc1 26ce          call    put_character
2446            
2447                    ; Recombine size1 = 0 || size2 = 0
2448   1bc2 :   main__44:
2449                    ; <=bit_code_emit@symbol; sym=__z (data:00=>?0 code:11=>11)
2450                    ; line_number = 333
2451                    ; if index & 7 = 0 done
2452                    ; # Read the word:
2453                    ; line_number = 340
2454                    ;  _eeadr := index
2455 1bc2 1303          bcf     __rp1___byte, __rp1___bit
2456 1bc3 0831          movf    main__index,w
2457 1bc4 1703          bsf     __rp1___byte, __rp1___bit
2458 1bc5 008d          movwf   _eeadr
2459                    ; line_number = 341
2460                    ;  _eepgd := 1
2461 1bc6 1683          bsf     __rp0___byte, __rp0___bit
2462 1bc7 178c          bsf     _eepgd___byte, _eepgd___bit
2463                    ; line_number = 342
2464                    ;  _rd := 1
2465 1bc8 140c          bsf     _rd___byte, _rd___bit
2466                    ; # The next two instructions are *ignored*:
2467                    ; line_number = 344
2468                    ;  assemble
2469                    ; line_number = 345
2470 1bc9 0000          nop     
2471                    ; line_number = 346
2472 1bca 0000          nop     
2473            
2474                    ; # Display the word:
2475                    ; line_number = 349
2476                    ;  call put_space()
2477 1bcb 1283          bcf     __rp0___byte, __rp0___bit
2478 1bcc 1303          bcf     __rp1___byte, __rp1___bit
2479 1bcd 26f0          call    put_space
2480                    ; line_number = 350
2481                    ;  call put_hex_byte(_eedath)
2482 1bce 1703          bsf     __rp1___byte, __rp1___bit
2483 1bcf 080e          movf    _eedath,w
2484 1bd0 1303          bcf     __rp1___byte, __rp1___bit
2485 1bd1 26dd          call    put_hex_byte
2486                    ; line_number = 351
2487                    ;  call put_hex_byte(_eedata)
2488 1bd2 1703          bsf     __rp1___byte, __rp1___bit
2489 1bd3 080c          movf    _eedata,w
2490 1bd4 1303          bcf     __rp1___byte, __rp1___bit
2491 1bd5 26dd          call    put_hex_byte
2492            
2493                    ; # Bump to next address in page:
2494                    ; line_number = 354
2495                    ;  index := index + 1
2496 1bd6 0ab1          incf    main__index,f
2497                    ; line_number = 355
2498                    ;  if _z start
2499                    ; =>bit_code_emit@symbol(): sym=_z
2500                    ; CASE: True.size=1 False.size=0
2501 1bd7 1903          btfsc   _z___byte, _z___bit
2502                    ; line_number = 356
2503                    ; more := 0
2504 1bd8 11ef          bcf     main__more___byte, main__more___bit
2505                    ; Recombine size1 = 0 || size2 = 0
2506                    ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
2507                    ; line_number = 355
2508                    ;  if _z done
2509                    ; line_number = 357
2510                    ; if index & 7 = 0 start
2511                    ; Left minus Right
2512 1bd9 3007          movlw   7
2513 1bda 0531          andwf   main__index,w
2514                    ; =>bit_code_emit@symbol(): sym=__z
2515                    ; CASE: True.size=1 False.size=0
2516 1bdb 1903          btfsc   __z___byte, __z___bit
2517                    ; line_number = 358
2518                    ; call put_crlf()
2519 1bdc 26d8          call    put_crlf
2520                    ; Recombine size1 = 0 || size2 = 0
2521                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
2522                    ; line_number = 357
2523                    ; if index & 7 = 0 done
2524 1bdd 2bb4          goto    main__43
2525                    ; Recombine size1 = 0 || size2 = 0
2526   1bde :   main__45:
2527                    ; <=bit_code_emit@symbol; sym=main__more (data:00=>00 code:11=>11)
2528                    ; line_number = 332
2529                    ;  while more done
2530                    ; Recombine size1 = 0 || size2 = 0
2531   1bde :   main__46:
2532                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2533                    ; line_number = 329
2534                    ;  if get_carriage_return() done
2535 1bde 2d0d          goto    main__48
2536   1bdf :   main__47:
2537                    ; line_number = 359
2538                    ; Left minus Right
2539 1bdf 30ae          movlw   174
2540 1be0 072c          addwf   main__command,w
2541                    ; =>bit_code_emit@symbol(): sym=__z
2542                    ; CASE: true_code_size > 1 && false_code_size > 1
2543 1be1 1d03          btfss   __z___byte, __z___bit
2544 1be2 2bf9          goto    main__41
2545                    ; # Send a command to a RoboBrick:
2546                    ; line_number = 361
2547                    ;  byte := get_hex_byte()
2548 1be3 264c          call    get_hex_byte
2549 1be4 00a9          movwf   main__byte
2550                    ; line_number = 362
2551                    ;  if get_carriage_return() start
2552 1be5 2616          call    get_carriage_return
2553                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2554                    ; CASE: true_code.size = 0 && false_code.size > 1
2555 1be6 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2556 1be7 2bf8          goto    main__40
2557                    ; line_number = 363
2558                    ; call put_byte(byte, socket)
2559 1be8 0829          movf    main__byte,w
2560 1be9 00d8          movwf   put_byte__character
2561 1bea 0835          movf    main__socket,w
2562 1beb 267b          call    put_byte
2563                    ; line_number = 364
2564                    ;  return1 := get_byte(socket)
2565 1bec 0835          movf    main__socket,w
2566 1bed 25dc          call    get_byte
2567 1bee 00b3          movwf   main__return1
2568                    ; line_number = 365
2569                    ;  return2 := get_byte(socket)
2570 1bef 0835          movf    main__socket,w
2571 1bf0 25dc          call    get_byte
2572 1bf1 00b4          movwf   main__return2
2573                    ; line_number = 366
2574                    ;  call put_hex_byte(return1)
2575 1bf2 0833          movf    main__return1,w
2576 1bf3 26dd          call    put_hex_byte
2577                    ; line_number = 367
2578                    ;  call put_space()
2579 1bf4 26f0          call    put_space
2580                    ; line_number = 368
2581                    ;  call put_hex_byte(return2)
2582 1bf5 0834          movf    main__return2,w
2583 1bf6 26dd          call    put_hex_byte
2584                    ; line_number = 369
2585                    ;  call put_crlf()
2586 1bf7 26d8          call    put_crlf
2587                    ; Recombine size1 = 0 || size2 = 0
2588   1bf8 :   main__40:
2589                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2590                    ; line_number = 362
2591                    ;  if get_carriage_return() done
2592 1bf8 2d0d          goto    main__42
2593   1bf9 :   main__41:
2594                    ; line_number = 370
2595                    ; Left minus Right
2596 1bf9 30ad          movlw   173
2597 1bfa 072c          addwf   main__command,w
2598                    ; =>bit_code_emit@symbol(): sym=__z
2599                    ; CASE: true_code_size > 1 && false_code_size > 1
2600 1bfb 1d03          btfss   __z___byte, __z___bit
2601 1bfc 2c17          goto    main__38
2602                    ; # Store data memory command:
2603                    ; line_number = 372
2604                    ;  address_high := get_hex_byte()
2605 1bfd 264c          call    get_hex_byte
2606 1bfe 00a4          movwf   main__address_high
2607                    ; line_number = 373
2608                    ;  address_low := get_hex_byte()
2609 1bff 264c          call    get_hex_byte
2610 1c00 00a5          movwf   main__address_low
2611                    ; line_number = 374
2612                    ;  byte := get_hex_byte()
2613 1c01 264c          call    get_hex_byte
2614 1c02 00a9          movwf   main__byte
2615                    ; line_number = 375
2616                    ;  if get_carriage_return() start
2617 1c03 2616          call    get_carriage_return
2618                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2619                    ; CASE: true_code.size = 0 && false_code.size > 1
2620 1c04 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2621 1c05 2c16          goto    main__37
2622                    ; line_number = 376
2623                    ; if address_high = 0 start
2624                    ; Left minus Right
2625 1c06 0824          movf    main__address_high,w
2626                    ; =>bit_code_emit@symbol(): sym=__z
2627                    ; CASE: true_code_size > 1 && false_code_size > 1
2628 1c07 1d03          btfss   __z___byte, __z___bit
2629 1c08 2c10          goto    main__35
2630                    ; line_number = 377
2631                    ; bank01[address_low] := byte
2632                    ; index_fsr_first
2633 1c09 0825          movf    main__address_low,w
2634 1c0a 3e00          addlw   bank01
2635 1c0b 0084          movwf   __fsr
2636 1c0c 1383          bcf     __irp___byte, __irp___bit
2637 1c0d 0829          movf    main__byte,w
2638 1c0e 0080          movwf   __indf
2639 1c0f 2c16          goto    main__36
2640   1c10 :   main__35:
2641                    ; line_number = 379
2642                    ; bank23[address_low] := byte
2643                    ; index_fsr_first
2644 1c10 0825          movf    main__address_low,w
2645 1c11 3e00          addlw   bank23
2646 1c12 0084          movwf   __fsr
2647 1c13 1783          bsf     __irp___byte, __irp___bit
2648 1c14 0829          movf    main__byte,w
2649 1c15 0080          movwf   __indf
2650   1c16 :   main__36:
2651                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
2652                    ; line_number = 376
2653                    ; if address_high = 0 done
2654                    ; Recombine size1 = 0 || size2 = 0
2655   1c16 :   main__37:
2656                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2657                    ; line_number = 375
2658                    ;  if get_carriage_return() done
2659 1c16 2d0d          goto    main__39
2660   1c17 :   main__38:
2661                    ; line_number = 380
2662                    ; Left minus Right
2663 1c17 30ac          movlw   172
2664 1c18 072c          addwf   main__command,w
2665                    ; =>bit_code_emit@symbol(): sym=__z
2666                    ; CASE: true_code_size > 1 && false_code_size > 1
2667 1c19 1d03          btfss   __z___byte, __z___bit
2668 1c1a 2c21          goto    main__33
2669                    ; line_number = 381
2670                    ; loop_forever start
2671   1c1b :   main__32:
2672                    ; line_number = 382
2673                    ; call put_byte('U', n2)
2674 1c1b 3055          movlw   85
2675 1c1c 00d8          movwf   put_byte__character
2676 1c1d 3001          movlw   1
2677 1c1e 267b          call    put_byte
2678                    ; line_number = 381
2679                    ; loop_forever wrap-up
2680 1c1f 2c1b          goto    main__32
2681                    ; line_number = 381
2682                    ; loop_forever done
2683 1c20 2d0d          goto    main__34
2684   1c21 :   main__33:
2685                    ; line_number = 383
2686                    ; Left minus Right
2687 1c21 30aa          movlw   170
2688 1c22 072c          addwf   main__command,w
2689                    ; =>bit_code_emit@symbol(): sym=__z
2690                    ; CASE: true_code_size > 1 && false_code_size > 1
2691 1c23 1d03          btfss   __z___byte, __z___bit
2692 1c24 2c30          goto    main__30
2693                    ; line_number = 384
2694                    ; if get_carriage_return() start
2695 1c25 2616          call    get_carriage_return
2696                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2697                    ; CASE: true_code.size = 0 && false_code.size > 1
2698 1c26 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2699 1c27 2c2f          goto    main__29
2700                    ; line_number = 385
2701                    ; call put_character('1')
2702 1c28 3031          movlw   49
2703 1c29 26ce          call    put_character
2704                    ; line_number = 386
2705                    ;  call put_character('.')
2706 1c2a 302e          movlw   46
2707 1c2b 26ce          call    put_character
2708                    ; line_number = 387
2709                    ;  call put_character('0')
2710 1c2c 3030          movlw   48
2711 1c2d 26ce          call    put_character
2712                    ; line_number = 388
2713                    ;  call put_crlf()
2714 1c2e 26d8          call    put_crlf
2715                    ; Recombine size1 = 0 || size2 = 0
2716   1c2f :   main__29:
2717                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2718                    ; line_number = 384
2719                    ; if get_carriage_return() done
2720 1c2f 2d0d          goto    main__31
2721   1c30 :   main__30:
2722                    ; line_number = 389
2723                    ; Left minus Right
2724 1c30 30a8          movlw   168
2725 1c31 072c          addwf   main__command,w
2726                    ; =>bit_code_emit@symbol(): sym=__z
2727                    ; CASE: true_code_size > 1 && false_code_size > 1
2728 1c32 1d03          btfss   __z___byte, __z___bit
2729 1c33 2c38          goto    main__27
2730                    ; line_number = 390
2731                    ; if get_carriage_return() start
2732 1c34 2616          call    get_carriage_return
2733                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2734                    ; CASE: True.size=1 False.size=0
2735 1c35 1a6f          btfsc   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2736                    ; line_number = 391
2737                    ; call execute()
2738 1c36 25ac          call    execute
2739                    ; Recombine size1 = 0 || size2 = 0
2740                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
2741                    ; line_number = 390
2742                    ; if get_carriage_return() done
2743 1c37 2d0d          goto    main__28
2744   1c38 :   main__27:
2745                    ; line_number = 392
2746                    ; Left minus Right
2747 1c38 30c6          movlw   198
2748 1c39 072c          addwf   main__command,w
2749                    ; =>bit_code_emit@symbol(): sym=__z
2750                    ; CASE: true_code_size > 1 && false_code_size > 1
2751 1c3a 1d03          btfss   __z___byte, __z___bit
2752 1c3b 2d05          goto    main__25
2753                    ; # Hex command:
2754                    ; line_number = 394
2755                    ;  check_sum := 0
2756 1c3c 3000          movlw   0
2757 1c3d 00aa          movwf   main__check_sum
2758                    ; line_number = 395
2759                    ;  length := get_hex_byte()
2760 1c3e 264c          call    get_hex_byte
2761 1c3f 00b2          movwf   main__length
2762                    ; line_number = 396
2763                    ;  check_sum := check_sum + length
2764 1c40 0832          movf    main__length,w
2765 1c41 07aa          addwf   main__check_sum,f
2766                    ; line_number = 397
2767                    ;  address_high := get_hex_byte()
2768 1c42 264c          call    get_hex_byte
2769 1c43 00a4          movwf   main__address_high
2770                    ; line_number = 398
2771                    ;  check_sum := check_sum + address_high
2772 1c44 0824          movf    main__address_high,w
2773 1c45 07aa          addwf   main__check_sum,f
2774                    ; line_number = 399
2775                    ;  address_low := get_hex_byte()
2776 1c46 264c          call    get_hex_byte
2777 1c47 00a5          movwf   main__address_low
2778                    ; line_number = 400
2779                    ;  check_sum := check_sum + address_low
2780 1c48 0825          movf    main__address_low,w
2781 1c49 07aa          addwf   main__check_sum,f
2782                    ; line_number = 401
2783                    ;  type := get_hex_byte()
2784 1c4a 264c          call    get_hex_byte
2785 1c4b 00b6          movwf   main__type
2786                    ; line_number = 402
2787                    ;  check_sum := check_sum + type
2788 1c4c 0836          movf    main__type,w
2789 1c4d 07aa          addwf   main__check_sum,f
2790                    ; line_number = 403
2791                    ;  index := 0
2792 1c4e 3000          movlw   0
2793 1c4f 00b1          movwf   main__index
2794                    ; line_number = 404
2795                    ;  buffer_size := length >> 1
2796 1c50 0c32          rrf     main__length,w
2797 1c51 00a8          movwf   main__buffer_size
2798 1c52 13a8          bcf     main__buffer_size, 7
2799                    ; line_number = 405
2800                    ;  while index < buffer_size start
2801   1c53 :   main__6:
2802 1c53 0828          movf    main__buffer_size,w
2803 1c54 0231          subwf   main__index,w
2804                    ; =>bit_code_emit@symbol(): sym=__c
2805                    ; CASE: true.size=0 && false.size>1
2806 1c55 1803          btfsc   __c___byte, __c___bit
2807 1c56 2c6d          goto    main__7
2808                    ; line_number = 406
2809                    ; byte := get_hex_byte()
2810 1c57 264c          call    get_hex_byte
2811 1c58 00a9          movwf   main__byte
2812                    ; line_number = 407
2813                    ;  check_sum := check_sum + byte
2814 1c59 0829          movf    main__byte,w
2815 1c5a 07aa          addwf   main__check_sum,f
2816                    ; line_number = 408
2817                    ;  buffer_lows[index] := byte
2818                    ; index_fsr_first
2819 1c5b 0831          movf    main__index,w
2820 1c5c 3e18          addlw   buffer_lows
2821 1c5d 0084          movwf   __fsr
2822 1c5e 1783          bsf     __irp___byte, __irp___bit
2823 1c5f 0829          movf    main__byte,w
2824 1c60 0080          movwf   __indf
2825                    ; line_number = 409
2826                    ;  byte := get_hex_byte()
2827 1c61 264c          call    get_hex_byte
2828 1c62 00a9          movwf   main__byte
2829                    ; line_number = 410
2830                    ;  check_sum := check_sum + byte
2831 1c63 0829          movf    main__byte,w
2832 1c64 07aa          addwf   main__check_sum,f
2833                    ; line_number = 411
2834                    ;  buffer_highs[index] := byte
2835                    ; index_fsr_first
2836 1c65 0831          movf    main__index,w
2837 1c66 3e10          addlw   buffer_highs
2838 1c67 0084          movwf   __fsr
2839 1c68 1783          bsf     __irp___byte, __irp___bit
2840 1c69 0829          movf    main__byte,w
2841 1c6a 0080          movwf   __indf
2842                    ; line_number = 412
2843                    ;  index := index + 1
2844 1c6b 0ab1          incf    main__index,f
2845 1c6c 2c53          goto    main__6
2846   1c6d :   main__7:
2847                    ; Recombine size1 = 0 || size2 = 0
2848                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
2849                    ; line_number = 405
2850                    ;  while index < buffer_size done
2851                    ; line_number = 413
2852                    ; check_sum := check_sum + get_hex_byte()
2853 00000065 = main__8 equ globals___0+69
2854 1c6d 082a          movf    main__check_sum,w
2855 1c6e 00e5          movwf   main__8
2856 1c6f 264c          call    get_hex_byte
2857 1c70 0765          addwf   main__8,w
2858 1c71 00aa          movwf   main__check_sum
2859                    ; line_number = 414
2860                    ;  if get_carriage_return() start
2861 1c72 2616          call    get_carriage_return
2862                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
2863                    ; CASE: true_code.size = 0 && false_code.size > 1
2864 1c73 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
2865 1c74 2d04          goto    main__24
2866                    ; # Command completed without error:
2867            
2868                    ; # For debugging only:
2869                    ; #call put_character('L')
2870                    ; #call put_hex_byte(length)
2871                    ; #call put_space()
2872            
2873                    ; #call put_character('A')
2874                    ; #call put_hex_byte(address_high)
2875                    ; #call put_hex_byte(address_low)
2876                    ; #call put_space()
2877            
2878                    ; #call put_character('T')
2879                    ; #call put_hex_byte(type)
2880                    ; #call put_space()
2881            
2882                    ; #index := 0
2883                    ; #buffer_size := length >> 1
2884                    ; #while index < buffer_size
2885                    ; #    call put_character('[')
2886                    ; #    call put_hex_nibble(index)
2887                    ; #    call put_character(']')
2888                    ; #    call put_hex_byte(buffer_highs[index])
2889                    ; #    call put_hex_byte(buffer_lows[index])
2890                    ; #    call put_space()
2891                    ; #    index := index + 1		
2892            
2893                    ; #call put_character('C')
2894                    ; #call put_hex_byte(check_sum)
2895                    ; #call put_crlf()
2896            
2897                    ; line_number = 446
2898                    ;  if check_sum = 0 start
2899                    ; Left minus Right
2900 1c75 082a          movf    main__check_sum,w
2901                    ; =>bit_code_emit@symbol(): sym=__z
2902                    ; CASE: true_code_size > 1 && false_code_size > 1
2903 1c76 1d03          btfss   __z___byte, __z___bit
2904 1c77 2cfa          goto    main__22
2905                    ; # Check sum is cool:
2906                    ; # Address is off by a factor of 2:
2907                    ; line_number = 449
2908                    ;  address_low := address_low >> 1
2909                    ; Assignment of variable to self (no code needed)
2910 1c78 0ca5          rrf     main__address_low,f
2911 1c79 13a5          bcf     main__address_low, 7
2912                    ; line_number = 450
2913                    ;  if address_high@0 start
2914 00000024 = main__select__10___byte equ main__address_high
2915 00000000 = main__select__10___bit equ 0
2916                    ; =>bit_code_emit@symbol(): sym=main__select__10
2917                    ; CASE: True.size=1 False.size=0
2918 1c7a 1824          btfsc   main__select__10___byte, main__select__10___bit
2919                    ; line_number = 451
2920                    ; address_low@7 := 1
2921 00000025 = main__select__9___byte equ main__address_low
2922 00000007 = main__select__9___bit equ 7
2923 1c7b 17a5          bsf     main__select__9___byte, main__select__9___bit
2924                    ; Recombine size1 = 0 || size2 = 0
2925                    ; <=bit_code_emit@symbol; sym=main__select__10 (data:00=>00 code:11=>11)
2926                    ; line_number = 450
2927                    ;  if address_high@0 done
2928                    ; line_number = 452
2929                    ; address_high := address_high >> 1
2930                    ; Assignment of variable to self (no code needed)
2931 1c7c 0ca4          rrf     main__address_high,f
2932 1c7d 13a4          bcf     main__address_high, 7
2933            
2934                    ; #call put_character('X')
2935                    ; #call put_hex_byte(address_high)
2936                    ; #call put_hex_byte(address_low)
2937                    ; #call put_space()
2938            
2939                    ; # Only write data into "safe" pages:
2940                    ; line_number = 460
2941                    ;  if type = 1 start
2942                    ; Left minus Right
2943 1c7e 0336          decf    main__type,w
2944                    ; =>bit_code_emit@symbol(): sym=__z
2945                    ; CASE: true_code_size > 1 && false_code_size > 1
2946 1c7f 1d03          btfss   __z___byte, __z___bit
2947 1c80 2c94          goto    main__20
2948                    ; line_number = 461
2949                    ; if errors != 0 start
2950                    ; Left minus Right
2951 1c81 082e          movf    main__errors,w
2952                    ; =>bit_code_emit@symbol(): sym=__z
2953                    ; CASE: true.size=0 && false.size>1
2954 1c82 1903          btfsc   __z___byte, __z___bit
2955 1c83 2c93          goto    main__19
2956                    ; line_number = 462
2957                    ; call put_character('E')
2958 1c84 3045          movlw   69
2959 1c85 26ce          call    put_character
2960                    ; line_number = 463
2961                    ;  call put_character('r')
2962 1c86 3072          movlw   114
2963 1c87 26ce          call    put_character
2964                    ; line_number = 464
2965                    ;  call put_character('r')
2966 1c88 3072          movlw   114
2967 1c89 26ce          call    put_character
2968                    ; line_number = 465
2969                    ;  call put_character('@')
2970 1c8a 3040          movlw   64
2971 1c8b 26ce          call    put_character
2972                    ; line_number = 466
2973                    ;  call put_hex_byte(error_high)
2974 1c8c 082f          movf    main__error_high,w
2975 1c8d 26dd          call    put_hex_byte
2976                    ; line_number = 467
2977                    ;  call put_hex_byte(error_low)
2978 1c8e 0830          movf    main__error_low,w
2979 1c8f 26dd          call    put_hex_byte
2980                    ; line_number = 468
2981                    ;  call put_crlf()
2982 1c90 26d8          call    put_crlf
2983                    ; line_number = 469
2984                    ;  errors := 0
2985 1c91 3000          movlw   0
2986 1c92 00ae          movwf   main__errors
2987   1c93 :   main__19:
2988                    ; Recombine size1 = 0 || size2 = 0
2989                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
2990                    ; line_number = 461
2991                    ; if errors != 0 done
2992 1c93 2cf9          goto    main__21
2993   1c94 :   main__20:
2994                    ; line_number = 470
2995                    ; Left minus Right
2996 1c94 0836          movf    main__type,w
2997                    ; =>bit_code_emit@symbol(): sym=__z
2998                    ; CASE: true_code.size = 0 && false_code.size > 1
2999 1c95 1d03          btfss   __z___byte, __z___bit
3000 1c96 2cf9          goto    main__18
3001                    ; line_number = 473
3002                    ; Left minus Right
3003 1c97 0824          movf    main__address_high,w
3004                    ; =>bit_code_emit@symbol(): sym=__z
3005                    ; CASE: true.size>1 false.size=1; false=GOTO
3006 1c98 1d03          btfss   __z___byte, __z___bit
3007 1c99 2c9e          goto    main__16
3008                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3009                    ; Left minus Right
3010 1c9a 30fc          movlw   252
3011 1c9b 0525          andwf   main__address_low,w
3012                    ; =>bit_code_emit@symbol(): sym=__z
3013                    ; CASE: true.size=0 && false.size>1
3014 1c9c 1903          btfsc   __z___byte, __z___bit
3015 1c9d 2cf9          goto    main__17
3016   1c9e :   main__16:
3017                    ; line_number = 478
3018 1c9e 301b          movlw   27
3019 1c9f 0224          subwf   main__address_high,w
3020                    ; =>bit_code_emit@symbol(): sym=__c
3021                    ; CASE: true.size=0 && false.size>1
3022 1ca0 1803          btfsc   __c___byte, __c___bit
3023 1ca1 2cf9          goto    main__15
3024                    ; # Write data until the buffer is empty:
3025                    ; #call put_character('@')
3026                    ; line_number = 481
3027                    ;  ok := 1
3028 1ca2 146f          bsf     ok___byte, ok___bit
3029                    ; line_number = 482
3030                    ;  index := 0
3031 1ca3 3000          movlw   0
3032 1ca4 00b1          movwf   main__index
3033                    ; line_number = 483
3034                    ;  loop_exactly buffer_size start
3035 00000065 = main__11 equ globals___0+69
3036 1ca5 0828          movf    main__buffer_size,w
3037 1ca6 00e5          movwf   main__11
3038   1ca7 :   main__12:
3039                    ; # Write the instruction into flash:
3040                    ; #call put_character('&')
3041                    ; line_number = 486
3042                    ;  _eeadrh := address_high
3043 1ca7 0824          movf    main__address_high,w
3044 1ca8 1703          bsf     __rp1___byte, __rp1___bit
3045 1ca9 008f          movwf   _eeadrh
3046                    ; line_number = 487
3047                    ;  _eeadr := address_low
3048 1caa 1303          bcf     __rp1___byte, __rp1___bit
3049 1cab 0825          movf    main__address_low,w
3050 1cac 1703          bsf     __rp1___byte, __rp1___bit
3051 1cad 008d          movwf   _eeadr
3052                    ; line_number = 488
3053                    ;  _eedath := buffer_highs[index]
3054 1cae 1303          bcf     __rp1___byte, __rp1___bit
3055 1caf 0831          movf    main__index,w
3056 1cb0 3e10          addlw   buffer_highs
3057 1cb1 0084          movwf   __fsr
3058 1cb2 1783          bsf     __irp___byte, __irp___bit
3059 1cb3 0800          movf    __indf,w
3060 1cb4 1703          bsf     __rp1___byte, __rp1___bit
3061 1cb5 008e          movwf   _eedath
3062                    ; line_number = 489
3063                    ;  _eedata := buffer_lows[index]
3064 1cb6 1303          bcf     __rp1___byte, __rp1___bit
3065 1cb7 0831          movf    main__index,w
3066 1cb8 3e18          addlw   buffer_lows
3067 1cb9 0084          movwf   __fsr
3068 1cba 1783          bsf     __irp___byte, __irp___bit
3069 1cbb 0800          movf    __indf,w
3070 1cbc 1703          bsf     __rp1___byte, __rp1___bit
3071 1cbd 008c          movwf   _eedata
3072                    ; line_number = 490
3073                    ;  _eepgd := 1
3074 1cbe 1683          bsf     __rp0___byte, __rp0___bit
3075 1cbf 178c          bsf     _eepgd___byte, _eepgd___bit
3076                    ; line_number = 491
3077                    ;  _wren := 1
3078 1cc0 150c          bsf     _wren___byte, _wren___bit
3079                    ; line_number = 492
3080                    ;  _eecon2 := 0x55
3081 1cc1 3055          movlw   85
3082 1cc2 008d          movwf   _eecon2
3083                    ; line_number = 493
3084                    ;  _eecon2 := 0xaa
3085 1cc3 30aa          movlw   170
3086 1cc4 008d          movwf   _eecon2
3087                    ; line_number = 494
3088                    ;  _wr := 1
3089 1cc5 148c          bsf     _wr___byte, _wr___bit
3090                    ; # The next two instructions must be nop's:
3091                    ; line_number = 496
3092                    ;  assemble
3093                    ; line_number = 497
3094 1cc6 0000          nop     
3095                    ; Statement 0 of 2 delay = 29
3096                    ; line_number = 498
3097 1cc7 0000          nop     
3098                    ; Statement 1 of 2 delay = 30
3099                    ; line_number = 499
3100                    ; _wren := 0
3101 1cc8 110c          bcf     _wren___byte, _wren___bit
3102            
3103                    ; # Verify that the data was written successfully:
3104                    ; line_number = 502
3105                    ;  _eepgd := 1
3106 1cc9 178c          bsf     _eepgd___byte, _eepgd___bit
3107                    ; line_number = 503
3108                    ;  _rd := 1
3109 1cca 140c          bsf     _rd___byte, _rd___bit
3110                    ; # The next two instructions must be nop's:
3111                    ; line_number = 505
3112                    ;  assemble
3113                    ; line_number = 506
3114 1ccb 0000          nop     
3115                    ; Statement 0 of 2 delay = 31
3116                    ; line_number = 507
3117 1ccc 0000          nop     
3118                    ; Statement 1 of 2 delay = 32
3119                    ; line_number = 508
3120                    ; if buffer_highs[index] != _eedath start
3121                    ; Right minus Left
3122 1ccd 1283          bcf     __rp0___byte, __rp0___bit
3123 1cce 1303          bcf     __rp1___byte, __rp1___bit
3124 1ccf 0831          movf    main__index,w
3125 1cd0 3e10          addlw   buffer_highs
3126 1cd1 0084          movwf   __fsr
3127 1cd2 1783          bsf     __irp___byte, __irp___bit
3128 1cd3 0800          movf    __indf,w
3129 1cd4 1703          bsf     __rp1___byte, __rp1___bit
3130 1cd5 020e          subwf   _eedath,w
3131                    ; =>bit_code_emit@symbol(): sym=__z
3132                    ; CASE: true.size=0 && false.size>1
3133 1cd6 1903          btfsc   __z___byte, __z___bit
3134 1cd7 2ce0          goto    main__13
3135                    ; #call put_character('=')
3136                    ; line_number = 510
3137                    ;  error_high := _eeadrh
3138 1cd8 080f          movf    _eeadrh,w
3139 1cd9 1303          bcf     __rp1___byte, __rp1___bit
3140 1cda 00af          movwf   main__error_high
3141                    ; line_number = 511
3142                    ;  error_low := _eeadr
3143 1cdb 1703          bsf     __rp1___byte, __rp1___bit
3144 1cdc 080d          movf    _eeadr,w
3145 1cdd 1303          bcf     __rp1___byte, __rp1___bit
3146 1cde 00b0          movwf   main__error_low
3147                    ; line_number = 512
3148                    ;  errors := errors + 1
3149 1cdf 0aae          incf    main__errors,f
3150   1ce0 :   main__13:
3151                    ; Recombine size1 = 0 || size2 = 0
3152                    ; <=bit_code_emit@symbol; sym=__z (data:00=>?0 code:11=>11)
3153                    ; line_number = 508
3154                    ; if buffer_highs[index] != _eedath done
3155                    ; line_number = 513
3156                    ; if buffer_lows[index] != _eedata start
3157                    ; Right minus Left
3158 1ce0 1303          bcf     __rp1___byte, __rp1___bit
3159 1ce1 0831          movf    main__index,w
3160 1ce2 3e18          addlw   buffer_lows
3161 1ce3 0084          movwf   __fsr
3162 1ce4 1783          bsf     __irp___byte, __irp___bit
3163 1ce5 0800          movf    __indf,w
3164 1ce6 1703          bsf     __rp1___byte, __rp1___bit
3165 1ce7 020c          subwf   _eedata,w
3166                    ; =>bit_code_emit@symbol(): sym=__z
3167                    ; CASE: true.size=0 && false.size>1
3168 1ce8 1903          btfsc   __z___byte, __z___bit
3169 1ce9 2cf2          goto    main__14
3170                    ; #call put_character('+')
3171                    ; line_number = 515
3172                    ;  error_high := _eeadrh
3173 1cea 080f          movf    _eeadrh,w
3174 1ceb 1303          bcf     __rp1___byte, __rp1___bit
3175 1cec 00af          movwf   main__error_high
3176                    ; line_number = 516
3177                    ;  error_low := _eeadr
3178 1ced 1703          bsf     __rp1___byte, __rp1___bit
3179 1cee 080d          movf    _eeadr,w
3180 1cef 1303          bcf     __rp1___byte, __rp1___bit
3181 1cf0 00b0          movwf   main__error_low
3182                    ; line_number = 517
3183                    ;  errors := errors + 1
3184 1cf1 0aae          incf    main__errors,f
3185            
3186   1cf2 :   main__14:
3187                    ; Recombine size1 = 0 || size2 = 0
3188                    ; <=bit_code_emit@symbol; sym=__z (data:00=>?0 code:11=>11)
3189                    ; line_number = 513
3190                    ; if buffer_lows[index] != _eedata done
3191                    ; # Increment the address:
3192                    ; line_number = 520
3193                    ;  address_low := address_low + 1
3194 1cf2 1303          bcf     __rp1___byte, __rp1___bit
3195 1cf3 0aa5          incf    main__address_low,f
3196                    ; line_number = 521
3197                    ;  if _z start
3198                    ; =>bit_code_emit@symbol(): sym=_z
3199                    ; CASE: True.size=1 False.size=0
3200 1cf4 1903          btfsc   _z___byte, _z___bit
3201                    ; line_number = 522
3202                    ; address_high := address_high + 1
3203 1cf5 0aa4          incf    main__address_high,f
3204                    ; Recombine size1 = 0 || size2 = 0
3205                    ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
3206                    ; line_number = 521
3207                    ;  if _z done
3208                    ; line_number = 523
3209                    ; index := index + 1
3210 1cf6 0ab1          incf    main__index,f
3211                    ; line_number = 483
3212                    ;  loop_exactly buffer_size wrap-up
3213 1cf7 0be5          decfsz  main__11,f
3214 1cf8 2ca7          goto    main__12
3215                    ; line_number = 483
3216                    ;  loop_exactly buffer_size done
3217   1cf9 :   main__15:
3218                    ; Recombine size1 = 0 || size2 = 0
3219                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
3220   1cf9 :   main__17:
3221                    ; # Trying to modify first 4 words of flash;
3222                    ; # This is not allowed:
3223                    ; #call put_character('^')
3224                    ; line_number = 477
3225                    ;  do_nothing
3226                    ; Recombine code1_bit_states != code2_bit_states
3227                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3228                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
3229                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
3230                    ; Recombine code1_bit_states != code2_bit_states
3231                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3232                    ; Recombine code1_bit_states != code2_bit_states
3233   1cf9 :   main__18:
3234                    ; #call put_character('_')
3235                    ; line_number = 472
3236                    ;  do_nothing
3237                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3238   1cf9 :   main__21:
3239                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3240                    ; line_number = 460
3241                    ;  if type = 1 done
3242 1cf9 2d04          goto    main__23
3243   1cfa :   main__22:
3244                    ; line_number = 525
3245                    ; errors := errors + 1
3246 1cfa 0aae          incf    main__errors,f
3247                    ; line_number = 526
3248                    ;  call put_character('c')
3249 1cfb 3063          movlw   99
3250 1cfc 26ce          call    put_character
3251                    ; line_number = 527
3252                    ;  call put_character('s')
3253 1cfd 3073          movlw   115
3254 1cfe 26ce          call    put_character
3255                    ; line_number = 528
3256                    ;  call put_character('=')
3257 1cff 303d          movlw   61
3258 1d00 26ce          call    put_character
3259                    ; line_number = 529
3260                    ;  call put_hex_byte(check_sum)
3261 1d01 082a          movf    main__check_sum,w
3262 1d02 26dd          call    put_hex_byte
3263                    ; line_number = 530
3264                    ;  call put_crlf()
3265 1d03 26d8          call    put_crlf
3266   1d04 :   main__23:
3267                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3268                    ; line_number = 446
3269                    ;  if check_sum = 0 done
3270                    ; Recombine size1 = 0 || size2 = 0
3271   1d04 :   main__24:
3272                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
3273                    ; line_number = 414
3274                    ;  if get_carriage_return() done
3275 1d04 2d0d          goto    main__26
3276   1d05 :   main__25:
3277                    ; line_number = 531
3278                    ; Left minus Right
3279 1d05 30f3          movlw   243
3280 1d06 072c          addwf   main__command,w
3281                    ; =>bit_code_emit@symbol(): sym=__z
3282                    ; CASE: true.size=0 && false.size>1
3283 1d07 1903          btfsc   __z___byte, __z___bit
3284 1d08 2d0d          goto    main__5
3285                    ; # Unrecognized command:
3286                    ; line_number = 536
3287                    ;  call get_carriage_return()
3288 1d09 2616          call    get_carriage_return
3289                    ; line_number = 537
3290                    ;  call put_character('?')
3291 1d0a 303f          movlw   63
3292 1d0b 26ce          call    put_character
3293                    ; line_number = 538
3294                    ;  call put_crlf()
3295 1d0c 26d8          call    put_crlf
3296            
3297            
3298   1d0d :   main__5:
3299                    ; # Empty command:ain11
3300                    ; line_number = 533
3301                    ;  do_nothing
3302                    ; Recombine code1_bit_states != code2_bit_states
3303                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3304   1d0d :   main__26:
3305                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3306   1d0d :   main__28:
3307                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3308   1d0d :   main__31:
3309                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3310   1d0d :   main__34:
3311                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3312   1d0d :   main__39:
3313                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3314   1d0d :   main__42:
3315                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3316   1d0d :   main__48:
3317                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3318   1d0d :   main__52:
3319                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3320   1d0d :   main__55:
3321                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3322   1d0d :   main__57:
3323                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3324   1d0d :   main__64:
3325                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3326   1d0d :   main__67:
3327                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3328                    ; line_number = 288
3329                    ;  if command = 'C' done
3330                    ; line_number = 278
3331                    ;  loop_forever wrap-up
3332 1d0d 2b38          goto    main__4
3333                    ; line_number = 278
3334                    ;  loop_forever done
3335                    ; delay after procedure statements=non-uniform
3336            
3337            
3338            
3339            
3340                    ; line_number = 541
3341                    ; procedure clock_adjust
3342   1d0e :   clock_adjust:
3343                    ; Last argument is sitting in W; save into argument variable
3344 1d0e 00c1          movwf   clock_adjust__socket
3345                    ; delay=4294967295
3346                    ; line_number = 542
3347                    ; argument adjust byte
3348 00000040 = clock_adjust__adjust equ globals___0+32
3349                    ; line_number = 543
3350                    ; argument socket byte
3351 00000041 = clock_adjust__socket equ globals___0+33
3352                    ; line_number = 544
3353                    ;  returns_nothing
3354            
3355                    ; # This procedure will adjust the clock to the slave.
3356            
3357                    ; line_number = 548
3358                    ;  local command byte
3359 00000037 = clock_adjust__command equ globals___0+23
3360                    ; line_number = 549
3361                    ;  local count byte
3362 00000038 = clock_adjust__count equ globals___0+24
3363                    ; line_number = 550
3364                    ;  local error byte
3365 00000039 = clock_adjust__error equ globals___0+25
3366                    ; line_number = 551
3367                    ;  local error_minimum byte
3368 0000003a = clock_adjust__error_minimum equ globals___0+26
3369                    ; line_number = 552
3370                    ;  local high byte
3371 0000003b = clock_adjust__high equ globals___0+27
3372                    ; line_number = 553
3373                    ;  local in_mask byte
3374 0000003c = clock_adjust__in_mask equ globals___0+28
3375                    ; line_number = 554
3376                    ;  local in_out_register byte
3377 0000003d = clock_adjust__in_out_register equ globals___0+29
3378                    ; line_number = 555
3379                    ;  local low byte
3380 0000003e = clock_adjust__low equ globals___0+30
3381                    ; line_number = 556
3382                    ;  local target byte
3383 0000003f = clock_adjust__target equ globals___0+31
3384            
3385                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
3386                    ; line_number = 558
3387                    ;  target := iterations_low - adjust
3388 1d0f 0940          comf    clock_adjust__adjust,w
3389 1d10 3ea3          addlw   163
3390 1d11 00bf          movwf   clock_adjust__target
3391                    ; line_number = 559
3392                    ;  count := 2
3393 1d12 3002          movlw   2
3394 1d13 00b8          movwf   clock_adjust__count
3395                    ; line_number = 560
3396                    ;  error := 0xff
3397 1d14 30ff          movlw   255
3398 1d15 00b9          movwf   clock_adjust__error
3399                    ; line_number = 561
3400                    ;  error_minimum := 0xf0
3401 1d16 30f0          movlw   240
3402 1d17 00ba          movwf   clock_adjust__error_minimum
3403            
3404                    ; # Print out the target:
3405                    ; line_number = 564
3406                    ;  call put_character('T')
3407 1d18 3054          movlw   84
3408 1d19 26ce          call    put_character
3409                    ; line_number = 565
3410                    ;  call put_hex_byte(iterations_high)
3411 1d1a 3005          movlw   5
3412 1d1b 26dd          call    put_hex_byte
3413                    ; line_number = 566
3414                    ;  call put_hex_byte(target)
3415 1d1c 083f          movf    clock_adjust__target,w
3416 1d1d 26dd          call    put_hex_byte
3417                    ; line_number = 567
3418                    ;  call put_crlf()
3419 1d1e 26d8          call    put_crlf
3420            
3421                    ; line_number = 569
3422                    ;  loop_forever start
3423   1d1f :   clock_adjust__1:
3424                    ; # Print out the clock value:
3425                    ; line_number = 571
3426                    ;  call put_character('C')
3427 1d1f 3043          movlw   67
3428 1d20 26ce          call    put_character
3429                    ; line_number = 572
3430                    ;  call put_byte(0xfa, socket)
3431 1d21 30fa          movlw   250
3432 1d22 00d8          movwf   put_byte__character
3433 1d23 0841          movf    clock_adjust__socket,w
3434 1d24 267b          call    put_byte
3435                    ; line_number = 573
3436                    ;  call put_hex_byte(get_byte(socket))
3437 1d25 0841          movf    clock_adjust__socket,w
3438 1d26 25dc          call    get_byte
3439 1d27 26dd          call    put_hex_byte
3440                    ; line_number = 574
3441                    ;  call put_space()
3442 1d28 26f0          call    put_space
3443            
3444                    ; line_number = 576
3445                    ;  in_mask := in_masks(socket)
3446 1d29 0841          movf    clock_adjust__socket,w
3447 1d2a 2754          call    in_masks
3448 1d2b 00bc          movwf   clock_adjust__in_mask
3449                    ; line_number = 577
3450                    ;  in_out_register := in_out_registers(socket)
3451 1d2c 0841          movf    clock_adjust__socket,w
3452 1d2d 2742          call    in_out_registers
3453 1d2e 00bd          movwf   clock_adjust__in_out_register
3454            
3455                    ; # Ask for a timing byte:
3456                    ; line_number = 580
3457                    ;  call put_byte(0xfb, socket)
3458 1d2f 30fb          movlw   251
3459 1d30 00d8          movwf   put_byte__character
3460 1d31 0841          movf    clock_adjust__socket,w
3461 1d32 267b          call    put_byte
3462            
3463                    ; # Nasty:
3464                    ; line_number = 583
3465                    ;  low := 0
3466 1d33 3000          movlw   0
3467 1d34 00be          movwf   clock_adjust__low
3468                    ; line_number = 584
3469                    ;  high := 0
3470 1d35 3000          movlw   0
3471 1d36 00bb          movwf   clock_adjust__high
3472                    ; line_number = 585
3473                    ;  while ports[in_out_register] & in_mask != 0 start
3474   1d37 :   clock_adjust__2:
3475                    ; Left minus Right
3476 1d37 083d          movf    clock_adjust__in_out_register,w
3477 1d38 3e05          addlw   ports
3478 1d39 0084          movwf   __fsr
3479 1d3a 1383          bcf     __irp___byte, __irp___bit
3480 1d3b 0800          movf    __indf,w
3481 1d3c 053c          andwf   clock_adjust__in_mask,w
3482                    ; =>bit_code_emit@symbol(): sym=__z
3483                    ; CASE: true_code.size=0 && false_code.size=1
3484 1d3d 1d03          btfss   __z___byte, __z___bit
3485                    ; true.size=0 false_size=1 false=GOTO
3486 1d3e 2d37          goto    clock_adjust__2
3487                    ; Recombine size1 = 0 || size2 = 0
3488                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3489                    ; line_number = 585
3490                    ;  while ports[in_out_register] & in_mask != 0 done
3491                    ; line_number = 587
3492                    ; while ports[in_out_register] & in_mask = 0 start
3493   1d3f :   clock_adjust__3:
3494                    ; Left minus Right
3495 1d3f 083d          movf    clock_adjust__in_out_register,w
3496 1d40 3e05          addlw   ports
3497 1d41 0084          movwf   __fsr
3498 1d42 1383          bcf     __irp___byte, __irp___bit
3499 1d43 0800          movf    __indf,w
3500 1d44 053c          andwf   clock_adjust__in_mask,w
3501                    ; =>bit_code_emit@symbol(): sym=__z
3502                    ; CASE: true_code.size = 0 && false_code.size > 1
3503 1d45 1d03          btfss   __z___byte, __z___bit
3504 1d46 2d4b          goto    clock_adjust__4
3505                    ; line_number = 588
3506                    ; low := low + 1
3507 1d47 0abe          incf    clock_adjust__low,f
3508                    ; line_number = 589
3509                    ;  if _z start
3510                    ; =>bit_code_emit@symbol(): sym=_z
3511                    ; CASE: True.size=1 False.size=0
3512 1d48 1903          btfsc   _z___byte, _z___bit
3513                    ; line_number = 590
3514                    ; high := high + 1
3515 1d49 0abb          incf    clock_adjust__high,f
3516            
3517                    ; Recombine size1 = 0 || size2 = 0
3518                    ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
3519                    ; line_number = 589
3520                    ;  if _z done
3521 1d4a 2d3f          goto    clock_adjust__3
3522                    ; Recombine size1 = 0 || size2 = 0
3523   1d4b :   clock_adjust__4:
3524                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3525                    ; line_number = 587
3526                    ; while ports[in_out_register] & in_mask = 0 done
3527                    ; # Print out high and low:
3528                    ; line_number = 593
3529                    ;  call put_character('H')
3530 1d4b 3048          movlw   72
3531 1d4c 26ce          call    put_character
3532                    ; line_number = 594
3533                    ;  call put_hex_byte(high)
3534 1d4d 083b          movf    clock_adjust__high,w
3535 1d4e 26dd          call    put_hex_byte
3536                    ; line_number = 595
3537                    ;  call put_space()
3538 1d4f 26f0          call    put_space
3539                    ; line_number = 596
3540                    ;  call put_character('L')
3541 1d50 304c          movlw   76
3542 1d51 26ce          call    put_character
3543                    ; line_number = 597
3544                    ;  call put_hex_byte(low)
3545 1d52 083e          movf    clock_adjust__low,w
3546 1d53 26dd          call    put_hex_byte
3547                    ; line_number = 598
3548                    ;  call put_space()
3549 1d54 26f0          call    put_space
3550            
3551                    ; # Now think about adjusting clock.
3552                    ; line_number = 601
3553                    ;  if high > iterations_high start
3554 1d55 3005          movlw   5
3555 1d56 023b          subwf   clock_adjust__high,w
3556 1d57 1903          btfsc   __z___byte, __z___bit
3557 1d58 1003          bcf     __c___byte, __c___bit
3558                    ; =>bit_code_emit@symbol(): sym=__c
3559                    ; CASE: true_code_size > 1 && false_code_size > 1
3560 1d59 1c03          btfss   __c___byte, __c___bit
3561 1d5a 2d61          goto    clock_adjust__11
3562                    ; # Clock pulse is too long; slave clock is too slow:
3563                    ; line_number = 603
3564                    ;  command := 0xf9
3565 1d5b 30f9          movlw   249
3566 1d5c 00b7          movwf   clock_adjust__command
3567                    ; line_number = 604
3568                    ;  error := high - target
3569 1d5d 083f          movf    clock_adjust__target,w
3570 1d5e 023b          subwf   clock_adjust__high,w
3571 1d5f 00b9          movwf   clock_adjust__error
3572                    ; Recombine code1_bit_states != code2_bit_states
3573 1d60 2d87          goto    clock_adjust__12
3574   1d61 :   clock_adjust__11:
3575                    ; line_number = 605
3576 1d61 3005          movlw   5
3577 1d62 023b          subwf   clock_adjust__high,w
3578                    ; =>bit_code_emit@symbol(): sym=__c
3579                    ; CASE: true_code_size > 1 && false_code_size > 1
3580 1d63 1c03          btfss   __c___byte, __c___bit
3581 1d64 2d82          goto    clock_adjust__9
3582                    ; # The high 8-bits are equal:
3583                    ; line_number = 611
3584                    ;  if low > target start
3585 1d65 083f          movf    clock_adjust__target,w
3586 1d66 023e          subwf   clock_adjust__low,w
3587 1d67 1903          btfsc   __z___byte, __z___bit
3588 1d68 1003          bcf     __c___byte, __c___bit
3589                    ; =>bit_code_emit@symbol(): sym=__c
3590                    ; CASE: true_code_size > 1 && false_code_size > 1
3591 1d69 1c03          btfss   __c___byte, __c___bit
3592 1d6a 2d71          goto    clock_adjust__7
3593                    ; # Clock pulse is too long; slave clock is too slow:
3594                    ; line_number = 613
3595                    ;  command := 0xf9
3596 1d6b 30f9          movlw   249
3597 1d6c 00b7          movwf   clock_adjust__command
3598                    ; line_number = 614
3599                    ;  error := low - target
3600 1d6d 083f          movf    clock_adjust__target,w
3601 1d6e 023e          subwf   clock_adjust__low,w
3602 1d6f 00b9          movwf   clock_adjust__error
3603                    ; Recombine code1_bit_states != code2_bit_states
3604 1d70 2d81          goto    clock_adjust__8
3605   1d71 :   clock_adjust__7:
3606                    ; line_number = 615
3607 1d71 083f          movf    clock_adjust__target,w
3608 1d72 023e          subwf   clock_adjust__low,w
3609                    ; =>bit_code_emit@symbol(): sym=__c
3610                    ; CASE: true_code_size > 1 && false_code_size > 1
3611 1d73 1c03          btfss   __c___byte, __c___bit
3612 1d74 2d7c          goto    clock_adjust__5
3613                    ; # Exact match; we are done:
3614                    ; line_number = 621
3615                    ;  command := 0
3616 1d75 3000          movlw   0
3617 1d76 00b7          movwf   clock_adjust__command
3618                    ; line_number = 622
3619                    ;  error := 0
3620 1d77 3000          movlw   0
3621 1d78 00b9          movwf   clock_adjust__error
3622                    ; line_number = 623
3623                    ;  error_minimum := 0
3624 1d79 3000          movlw   0
3625 1d7a 00ba          movwf   clock_adjust__error_minimum
3626            
3627 1d7b 2d81          goto    clock_adjust__6
3628   1d7c :   clock_adjust__5:
3629                    ; # Clock pulse is too short; slave clock is too fast:
3630                    ; line_number = 617
3631                    ;  command := 0xf8
3632 1d7c 30f8          movlw   248
3633 1d7d 00b7          movwf   clock_adjust__command
3634                    ; line_number = 618
3635                    ;  error := target - low
3636 1d7e 083e          movf    clock_adjust__low,w
3637 1d7f 023f          subwf   clock_adjust__target,w
3638 1d80 00b9          movwf   clock_adjust__error
3639   1d81 :   clock_adjust__6:
3640                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
3641   1d81 :   clock_adjust__8:
3642                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
3643                    ; line_number = 611
3644                    ;  if low > target done
3645                    ; Recombine code1_bit_states != code2_bit_states
3646 1d81 2d87          goto    clock_adjust__10
3647   1d82 :   clock_adjust__9:
3648                    ; # Clock pulse is too short; slave clock is too fast:
3649                    ; line_number = 607
3650                    ;  command := 0xf8
3651 1d82 30f8          movlw   248
3652 1d83 00b7          movwf   clock_adjust__command
3653                    ; line_number = 608
3654                    ;  error := target - high
3655 1d84 083b          movf    clock_adjust__high,w
3656 1d85 023f          subwf   clock_adjust__target,w
3657 1d86 00b9          movwf   clock_adjust__error
3658   1d87 :   clock_adjust__10:
3659                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
3660   1d87 :   clock_adjust__12:
3661                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
3662                    ; line_number = 601
3663                    ;  if high > iterations_high done
3664                    ; # Print out the error and error minimum:
3665                    ; line_number = 626
3666                    ;  call put_character('E')
3667 1d87 3045          movlw   69
3668 1d88 26ce          call    put_character
3669                    ; line_number = 627
3670                    ;  call put_hex_byte(error)
3671 1d89 0839          movf    clock_adjust__error,w
3672 1d8a 26dd          call    put_hex_byte
3673                    ; line_number = 628
3674                    ;  call put_space()
3675 1d8b 26f0          call    put_space
3676                    ; line_number = 629
3677                    ;  call put_character('M')
3678 1d8c 304d          movlw   77
3679 1d8d 26ce          call    put_character
3680                    ; line_number = 630
3681                    ;  call put_hex_byte(error_minimum)
3682 1d8e 083a          movf    clock_adjust__error_minimum,w
3683 1d8f 26dd          call    put_hex_byte
3684                    ; line_number = 631
3685                    ;  call put_space()
3686 1d90 26f0          call    put_space
3687            
3688                    ; line_number = 633
3689                    ;  if error = error_minimum start
3690                    ; Left minus Right
3691 1d91 083a          movf    clock_adjust__error_minimum,w
3692 1d92 0239          subwf   clock_adjust__error,w
3693                    ; =>bit_code_emit@symbol(): sym=__z
3694                    ; CASE: true_code_size > 1 && false_code_size > 1
3695 1d93 1d03          btfss   __z___byte, __z___bit
3696 1d94 2d98          goto    clock_adjust__16
3697                    ; line_number = 634
3698                    ; call put_crlf()
3699 1d95 26d8          call    put_crlf
3700                    ; line_number = 635
3701                    ;  return start
3702                    ; line_number = 635
3703 1d96 3400          retlw   0
3704                    ; line_number = 635
3705                    ;  return done
3706 1d97 2da6          goto    clock_adjust__17
3707   1d98 :   clock_adjust__16:
3708                    ; line_number = 636
3709 1d98 083a          movf    clock_adjust__error_minimum,w
3710 1d99 0239          subwf   clock_adjust__error,w
3711                    ; =>bit_code_emit@symbol(): sym=__c
3712                    ; CASE: true_code_size > 1 && false_code_size > 1
3713 1d9a 1c03          btfss   __c___byte, __c___bit
3714 1d9b 2da3          goto    clock_adjust__14
3715                    ; line_number = 640
3716                    ; count := count - 1
3717 1d9c 03b8          decf    clock_adjust__count,f
3718                    ; line_number = 641
3719                    ;  if _z start
3720                    ; =>bit_code_emit@symbol(): sym=_z
3721                    ; CASE: true_code.size = 0 && false_code.size > 1
3722 1d9d 1d03          btfss   _z___byte, _z___bit
3723 1d9e 2da2          goto    clock_adjust__13
3724                    ; line_number = 642
3725                    ; error_minimum := error_minimum + 1
3726 1d9f 0aba          incf    clock_adjust__error_minimum,f
3727                    ; line_number = 643
3728                    ;  count := 2
3729 1da0 3002          movlw   2
3730 1da1 00b8          movwf   clock_adjust__count
3731            
3732                    ; Recombine size1 = 0 || size2 = 0
3733   1da2 :   clock_adjust__13:
3734                    ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
3735                    ; line_number = 641
3736                    ;  if _z done
3737                    ; Recombine code1_bit_states != code2_bit_states
3738 1da2 2da6          goto    clock_adjust__15
3739   1da3 :   clock_adjust__14:
3740                    ; line_number = 637
3741                    ; error_minimum := error
3742 1da3 0839          movf    clock_adjust__error,w
3743 1da4 00ba          movwf   clock_adjust__error_minimum
3744                    ; line_number = 638
3745                    ;  error := error + 1
3746 1da5 0ab9          incf    clock_adjust__error,f
3747   1da6 :   clock_adjust__15:
3748                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
3749   1da6 :   clock_adjust__17:
3750                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3751                    ; line_number = 633
3752                    ;  if error = error_minimum done
3753                    ; # Now adjust the clock:
3754                    ; line_number = 646
3755                    ;  call put_byte(command, socket)
3756 1da6 0837          movf    clock_adjust__command,w
3757 1da7 00d8          movwf   put_byte__character
3758 1da8 0841          movf    clock_adjust__socket,w
3759 1da9 267b          call    put_byte
3760            
3761                    ; line_number = 648
3762                    ;  call put_crlf()
3763 1daa 26d8          call    put_crlf
3764            
3765            
3766                    ; line_number = 569
3767                    ;  loop_forever wrap-up
3768 1dab 2d1f          goto    clock_adjust__1
3769                    ; line_number = 569
3770                    ;  loop_forever done
3771                    ; delay after procedure statements=non-uniform
3772            
3773            
3774            
3775            
3776                    ; line_number = 651
3777                    ; procedure execute
3778   1dac :   execute:
3779                    ; arguments_none
3780                    ; line_number = 653
3781                    ;  returns_nothing
3782            
3783                    ; # This procedure will transfer control to location program_origin.
3784            
3785                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
3786                    ; line_number = 657
3787                    ;  _pclath := 0
3788 1dac 3000          movlw   0
3789 1dad 008a          movwf   _pclath
3790                    ; line_number = 658
3791                    ;  _pcl := program_origin
3792 1dae 3008          movlw   8
3793 1daf 0082          movwf   _pcl
3794            
3795            
3796                    ; delay after procedure statements=non-uniform
3797                    ; Implied return
3798 1db0 3400          retlw   0
3799            
3800            
3801            
3802            
3803                    ; line_number = 661
3804                    ; procedure goto_command
3805   1db1 :   goto_command:
3806                    ; arguments_none
3807                    ; line_number = 663
3808                    ;  returns_nothing
3809            
3810                    ; line_number = 665
3811                    ;  local address_low byte
3812 00000042 = goto_command__address_low equ globals___0+34
3813                    ; line_number = 666
3814                    ;  local address_high byte
3815 00000043 = goto_command__address_high equ globals___0+35
3816            
3817                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
3818                    ; line_number = 668
3819                    ;  address_high := get_hex_byte()
3820 1db1 264c          call    get_hex_byte
3821 1db2 00c3          movwf   goto_command__address_high
3822                    ; line_number = 669
3823                    ;  address_low := get_hex_byte()
3824 1db3 264c          call    get_hex_byte
3825 1db4 00c2          movwf   goto_command__address_low
3826                    ; line_number = 670
3827                    ;  if get_carriage_return() start
3828 1db5 2616          call    get_carriage_return
3829                    ; =>bit_code_emit@symbol(): sym=get_carriage_return__0return
3830                    ; CASE: true_code.size = 0 && false_code.size > 1
3831 1db6 1e6f          btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
3832 1db7 2dbc          goto    goto_command__1
3833                    ; line_number = 671
3834                    ; _pclath := address_high
3835 1db8 0843          movf    goto_command__address_high,w
3836 1db9 008a          movwf   _pclath
3837                    ; line_number = 672
3838                    ;  _pcl := address_low
3839 1dba 0842          movf    goto_command__address_low,w
3840 1dbb 0082          movwf   _pcl
3841            
3842            
3843                    ; Recombine size1 = 0 || size2 = 0
3844   1dbc :   goto_command__1:
3845                    ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
3846                    ; line_number = 670
3847                    ;  if get_carriage_return() done
3848                    ; delay after procedure statements=non-uniform
3849                    ; Implied return
3850 1dbc 3400          retlw   0
3851            
3852            
3853            
3854            
3855                    ; # The `id' procedures are below:
3856            
3857                    ; line_number = 677
3858                    ; procedure id8
3859   1dbd :   id8:
3860                    ; Last argument is sitting in W; save into argument variable
3861 1dbd 00c5          movwf   id8__socket
3862                    ; delay=4294967295
3863                    ; line_number = 678
3864                    ; argument socket byte
3865 00000045 = id8__socket equ globals___0+37
3866                    ; line_number = 679
3867                    ;  returns_nothing
3868            
3869                    ; # This procedure will print out 8 bytes of id:
3870            
3871                    ; line_number = 683
3872                    ;  local count byte
3873 00000044 = id8__count equ globals___0+36
3874            
3875                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
3876                    ; line_number = 685
3877                    ;  loop_exactly 8 start
3878 00000066 = id8__1 equ globals___0+70
3879 1dbe 3008          movlw   8
3880 1dbf 00e6          movwf   id8__1
3881   1dc0 :   id8__2:
3882                    ; line_number = 686
3883                    ; call put_hex_byte(put_get_byte(id_next, socket))
3884 1dc0 30fc          movlw   252
3885 1dc1 00d0          movwf   put_get_byte__command
3886 1dc2 0845          movf    id8__socket,w
3887 1dc3 2673          call    put_get_byte
3888 1dc4 26dd          call    put_hex_byte
3889                    ; line_number = 687
3890                    ;  call put_space()
3891 1dc5 26f0          call    put_space
3892                    ; line_number = 685
3893                    ;  loop_exactly 8 wrap-up
3894 1dc6 0be6          decfsz  id8__1,f
3895 1dc7 2dc0          goto    id8__2
3896                    ; line_number = 685
3897                    ;  loop_exactly 8 done
3898                    ; line_number = 688
3899                    ; call put_crlf()
3900 1dc8 26d8          call    put_crlf
3901            
3902            
3903                    ; delay after procedure statements=non-uniform
3904                    ; Implied return
3905 1dc9 3400          retlw   0
3906            
3907            
3908            
3909            
3910                    ; line_number = 691
3911                    ; procedure id_string
3912   1dca :   id_string:
3913                    ; Last argument is sitting in W; save into argument variable
3914 1dca 00c7          movwf   id_string__socket
3915                    ; delay=4294967295
3916                    ; line_number = 692
3917                    ; argument socket byte
3918 00000047 = id_string__socket equ globals___0+39
3919                    ; line_number = 693
3920                    ;  returns_nothing
3921            
3922                    ; # This procedure will print out a string from the id:
3923            
3924                    ; line_number = 697
3925                    ;  local size byte
3926 00000046 = id_string__size equ globals___0+38
3927            
3928                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
3929                    ; line_number = 699
3930                    ;  size := put_get_byte(id_next, socket)
3931 1dcb 30fc          movlw   252
3932 1dcc 00d0          movwf   put_get_byte__command
3933 1dcd 0847          movf    id_string__socket,w
3934 1dce 2673          call    put_get_byte
3935 1dcf 00c6          movwf   id_string__size
3936                    ; line_number = 700
3937                    ;  while size != 0 start
3938   1dd0 :   id_string__1:
3939                    ; Left minus Right
3940 1dd0 0846          movf    id_string__size,w
3941                    ; =>bit_code_emit@symbol(): sym=__z
3942                    ; CASE: true.size=0 && false.size>1
3943 1dd1 1903          btfsc   __z___byte, __z___bit
3944 1dd2 2dda          goto    id_string__2
3945                    ; line_number = 701
3946                    ; call put_character(put_get_byte(id_next, socket))
3947 1dd3 30fc          movlw   252
3948 1dd4 00d0          movwf   put_get_byte__command
3949 1dd5 0847          movf    id_string__socket,w
3950 1dd6 2673          call    put_get_byte
3951 1dd7 26ce          call    put_character
3952                    ; line_number = 702
3953                    ;  size := size - 1
3954 1dd8 03c6          decf    id_string__size,f
3955 1dd9 2dd0          goto    id_string__1
3956   1dda :   id_string__2:
3957                    ; Recombine size1 = 0 || size2 = 0
3958                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
3959                    ; line_number = 700
3960                    ;  while size != 0 done
3961                    ; line_number = 703
3962                    ; call put_crlf()
3963 1dda 26d8          call    put_crlf
3964            
3965            
3966                    ; delay after procedure statements=non-uniform
3967                    ; Implied return
3968 1ddb 3400          retlw   0
3969            
3970            
3971            
3972            
3973                    ; # The `get' procedures are below:
3974            
3975                    ; line_number = 708
3976                    ; procedure get_byte
3977   1ddc :   get_byte:
3978                    ; Last argument is sitting in W; save into argument variable
3979 1ddc 00cc          movwf   get_byte__socket
3980                    ; delay=4294967295
3981                    ; line_number = 709
3982                    ; argument socket byte
3983 0000004c = get_byte__socket equ globals___0+44
3984                    ; line_number = 710
3985                    ;  returns byte
3986            
3987                    ; # This procedure will get a byte from the currently selected
3988                    ; # input.  If no byte is received in a reasonable amount of
3989                    ; # time, 0xfc is returned.
3990            
3991                    ; line_number = 716
3992                    ;  local counter byte
3993 00000048 = get_byte__counter equ globals___0+40
3994                    ; line_number = 717
3995                    ;  local character byte
3996 00000049 = get_byte__character equ globals___0+41
3997                    ; line_number = 718
3998                    ;  local in_mask byte
3999 0000004a = get_byte__in_mask equ globals___0+42
4000                    ; line_number = 719
4001                    ;  local in_out_register byte
4002 0000004b = get_byte__in_out_register equ globals___0+43
4003            
4004                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4005                    ; line_number = 721
4006                    ;  in_out_register := in_out_registers(socket)
4007 1ddd 084c          movf    get_byte__socket,w
4008 1dde 2742          call    in_out_registers
4009 1ddf 00cb          movwf   get_byte__in_out_register
4010                    ; line_number = 722
4011                    ;  in_mask := in_masks(socket)
4012 1de0 084c          movf    get_byte__socket,w
4013 1de1 2754          call    in_masks
4014 1de2 00ca          movwf   get_byte__in_mask
4015            
4016                    ; line_number = 724
4017                    ;  receiving := 1
4018 1de3 156f          bsf     receiving___byte, receiving___bit
4019                    ; line_number = 725
4020                    ;  loop_exactly 255 start
4021 00000067 = get_byte__1 equ globals___0+71
4022 1de4 30ff          movlw   255
4023 1de5 00e7          movwf   get_byte__1
4024   1de6 :   get_byte__2:
4025                    ; line_number = 726
4026                    ; if ports[in_out_register] & in_mask = 0 start
4027                    ; Left minus Right
4028 1de6 084b          movf    get_byte__in_out_register,w
4029 1de7 3e05          addlw   ports
4030 1de8 0084          movwf   __fsr
4031 1de9 1383          bcf     __irp___byte, __irp___bit
4032 1dea 0800          movf    __indf,w
4033 1deb 054a          andwf   get_byte__in_mask,w
4034                    ; =>bit_code_emit@symbol(): sym=__z
4035                    ; CASE: true_code.size = 0 && false_code.size > 1
4036 1dec 1d03          btfss   __z___byte, __z___bit
4037 1ded 2e12          goto    get_byte__9
4038                    ; # We got a start bit:
4039                    ; line_number = 728
4040                    ;  call delay()
4041 1dee 2727          call    delay
4042                    ; line_number = 729
4043                    ;  call delay()
4044 1def 2727          call    delay
4045                    ; line_number = 730
4046                    ;  call delay()
4047 1df0 2727          call    delay
4048            
4049                    ; # 2 Instructions for loop_exactly initialization:
4050                    ; line_number = 733
4051                    ;  delay extra_bit_instructions - 2 start
4052                    ; Delay expression evaluates to 22
4053                    ; # Sample 1/3 of bit into each character:
4054                    ; line_number = 735
4055                    ;  character := 0
4056                    ; Delay at assignment is 0
4057 1df1 3000          movlw   0
4058 1df2 00c9          movwf   get_byte__character
4059            
4060                    ; Delay 20 cycles
4061                    ; Delay loop takes 5 * 4 = 20 cycles
4062 1df3 3005          movlw   5
4063   1df4 :   get_byte__3:
4064 1df4 3eff          addlw   255
4065 1df5 1d03          btfss   __z___byte, __z___bit
4066 1df6 2df4          goto    get_byte__3
4067                    ; line_number = 733
4068                    ;  delay extra_bit_instructions - 2 done
4069                    ; line_number = 737
4070                    ; loop_exactly 8 start
4071 00000068 = get_byte__4 equ globals___0+72
4072 1df7 3008          movlw   8
4073 1df8 00e8          movwf   get_byte__4
4074   1df9 :   get_byte__5:
4075                    ; line_number = 738
4076                    ; call delay()
4077 1df9 2727          call    delay
4078                    ; # 3 Instructions for loop overhead:
4079                    ; line_number = 740
4080                    ;  delay extra_bit_instructions - 3 start
4081                    ; Delay expression evaluates to 21
4082                    ; line_number = 741
4083                    ; character := character >> 1
4084                    ; Delay at assignment is 0
4085                    ; Assignment of variable to self (no code needed)
4086 1dfa 0cc9          rrf     get_byte__character,f
4087 1dfb 13c9          bcf     get_byte__character, 7
4088                    ; line_number = 742
4089                    ;  if ports[in_out_register] & in_mask != 0 start
4090                    ; Delay at if is 2
4091                    ; Left minus Right
4092 1dfc 084b          movf    get_byte__in_out_register,w
4093 1dfd 3e05          addlw   ports
4094 1dfe 0084          movwf   __fsr
4095 1dff 1383          bcf     __irp___byte, __irp___bit
4096 1e00 0800          movf    __indf,w
4097 1e01 054a          andwf   get_byte__in_mask,w
4098                    ; =>bit_code_emit@symbol(): sym=__z
4099                    ; CASE: true_code.size=0 && false_code.size=1
4100 1e02 1d03          btfss   __z___byte, __z___bit
4101                    ; line_number = 743
4102                    ; character@7 := 1
4103                    ; Delay at assignment is 0
4104 00000049 = get_byte__select__6___byte equ get_byte__character
4105 00000007 = get_byte__select__6___bit equ 7
4106 1e03 17c9          bsf     get_byte__select__6___byte, get_byte__select__6___bit
4107                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
4108                    ; Uniform delay broke in relation_code_emit
4109                    ; if final true delay=1 false delay=0 code delay=10
4110                    ; line_number = 742
4111                    ;  if ports[in_out_register] & in_mask != 0 done
4112                    ; Delay 11 cycles
4113                    ; Delay loop takes 2 * 4 = 8 cycles
4114 1e04 3002          movlw   2
4115   1e05 :   get_byte__7:
4116 1e05 3eff          addlw   255
4117 1e06 1d03          btfss   __z___byte, __z___bit
4118 1e07 2e05          goto    get_byte__7
4119 1e08 2e09          goto    get_byte__8
4120   1e09 :   get_byte__8:
4121 1e09 0000          nop     
4122                    ; line_number = 740
4123                    ;  delay extra_bit_instructions - 3 done
4124                    ; line_number = 744
4125                    ; call delay()
4126 1e0a 2727          call    delay
4127                    ; line_number = 745
4128                    ;  call delay()
4129 1e0b 2727          call    delay
4130            
4131                    ; line_number = 737
4132                    ; loop_exactly 8 wrap-up
4133 1e0c 0be8          decfsz  get_byte__4,f
4134 1e0d 2df9          goto    get_byte__5
4135                    ; line_number = 737
4136                    ; loop_exactly 8 done
4137                    ; # Now sleep through 2/3's of the stop bit:
4138                    ; line_number = 748
4139                    ;  call delay()
4140 1e0e 2727          call    delay
4141                    ; line_number = 749
4142                    ;  call delay()
4143 1e0f 2727          call    delay
4144                    ; line_number = 750
4145                    ;  return character start
4146                    ; line_number = 750
4147 1e10 0849          movf    get_byte__character,w
4148 1e11 0008          return  
4149                    ; line_number = 750
4150                    ;  return character done
4151                    ; Recombine size1 = 0 || size2 = 0
4152   1e12 :   get_byte__9:
4153                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
4154                    ; line_number = 726
4155                    ; if ports[in_out_register] & in_mask = 0 done
4156                    ; line_number = 751
4157                    ; call delay()
4158 1e12 2727          call    delay
4159                    ; line_number = 725
4160                    ;  loop_exactly 255 wrap-up
4161 1e13 0be7          decfsz  get_byte__1,f
4162 1e14 2de6          goto    get_byte__2
4163                    ; line_number = 725
4164                    ;  loop_exactly 255 done
4165                    ; line_number = 752
4166                    ; return 0xfc start
4167                    ; line_number = 752
4168 1e15 34fc          retlw   252
4169                    ; line_number = 752
4170                    ; return 0xfc done
4171            
4172            
4173                    ; delay after procedure statements=non-uniform
4174            
4175            
4176            
4177            
4178 0000006f = get_carriage_return__0return___byte equ globals___0+79
4179 00000004 = get_carriage_return__0return___bit equ 4
4180                    ; line_number = 755
4181                    ; procedure get_carriage_return
4182   1e16 :   get_carriage_return:
4183                    ; arguments_none
4184                    ; line_number = 757
4185                    ;  returns bit
4186            
4187                    ; # This procedure will verify that the next character is
4188                    ; # a carriage return.  If the next character is a carriage
4189                    ; # return a 1 is returned.  Otherwise, characters are read
4190                    ; # until a carriage return is encountered and 0 is returned.
4191                    ; # If any errors occurred (i.e. ok = 0), a "?" followed by
4192                    ; # carriage-return line-feed is returned.
4193            
4194                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4195                    ; line_number = 766
4196                    ;  while get_character() != carriage_return start
4197   1e16 :   get_carriage_return__1:
4198                    ; Left minus Right
4199 1e16 2626          call    get_character
4200 1e17 3ef3          addlw   243
4201                    ; =>bit_code_emit@symbol(): sym=__z
4202                    ; CASE: true.size=0 && false.size>1
4203 1e18 1903          btfsc   __z___byte, __z___bit
4204 1e19 2e1c          goto    get_carriage_return__2
4205                    ; line_number = 767
4206                    ; ok := 0
4207 1e1a 106f          bcf     ok___byte, ok___bit
4208 1e1b 2e16          goto    get_carriage_return__1
4209   1e1c :   get_carriage_return__2:
4210                    ; Recombine size1 = 0 || size2 = 0
4211                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
4212                    ; line_number = 766
4213                    ;  while get_character() != carriage_return done
4214                    ; line_number = 768
4215                    ; have_carriage_return := 0
4216 1e1c 10ef          bcf     have_carriage_return___byte, have_carriage_return___bit
4217                    ; line_number = 769
4218                    ;  if ok start
4219                    ; =>bit_code_emit@symbol(): sym=ok
4220                    ; CASE: true_code.size = 0 && false_code.size > 1
4221 1e1d 1c6f          btfss   ok___byte, ok___bit
4222 1e1e 2e21          goto    get_carriage_return__3
4223                    ; line_number = 770
4224                    ; return 1 start
4225                    ; line_number = 770
4226 1e1f 166f          bsf     get_carriage_return__0return___byte, get_carriage_return__0return___bit
4227 1e20 0008          return  
4228                    ; line_number = 770
4229                    ; return 1 done
4230                    ; Recombine size1 = 0 || size2 = 0
4231   1e21 :   get_carriage_return__3:
4232                    ; <=bit_code_emit@symbol; sym=ok (data:00=>00 code:11=>11)
4233                    ; line_number = 769
4234                    ;  if ok done
4235                    ; line_number = 771
4236                    ; call put_character('?')
4237 1e21 303f          movlw   63
4238 1e22 26ce          call    put_character
4239                    ; line_number = 772
4240                    ;  call put_crlf()
4241 1e23 26d8          call    put_crlf
4242                    ; line_number = 773
4243                    ;  return 0 start
4244                    ; line_number = 773
4245 1e24 126f          bcf     get_carriage_return__0return___byte, get_carriage_return__0return___bit
4246 1e25 0008          return  
4247                    ; line_number = 773
4248                    ;  return 0 done
4249            
4250            
4251                    ; delay after procedure statements=non-uniform
4252            
4253            
4254            
4255            
4256                    ; line_number = 776
4257                    ; procedure get_character
4258   1e26 :   get_character:
4259                    ; arguments_none
4260                    ; line_number = 778
4261                    ;  returns byte
4262            
4263                    ; # This procedure will get the next character from the UART.
4264            
4265                    ; line_number = 782
4266                    ;  local character byte
4267 0000004d = get_character__character equ globals___0+45
4268                    ; line_number = 783
4269                    ;  local pir1_copy byte
4270 0000004e = get_character__pir1_copy equ globals___0+46
4271            
4272                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4273                    ; line_number = 785
4274                    ;  if have_carriage_return start
4275                    ; =>bit_code_emit@symbol(): sym=have_carriage_return
4276                    ; CASE: True.size=1 False.size=0
4277 1e26 18ef          btfsc   have_carriage_return___byte, have_carriage_return___bit
4278                    ; line_number = 786
4279                    ; return carriage_return start
4280                    ; line_number = 786
4281 1e27 340d          retlw   13
4282                    ; line_number = 786
4283                    ; return carriage_return done
4284            
4285                    ; Recombine size1 = 0 || size2 = 0
4286                    ; <=bit_code_emit@symbol; sym=have_carriage_return (data:00=>00 code:11=>11)
4287                    ; line_number = 785
4288                    ;  if have_carriage_return done
4289                    ; # FIXME:  Compiler can't bit test outside of the current data bank!!!
4290                    ; # So read the entire register into a temporary and test second.
4291            
4292                    ; # Read characters until something other than a space is typed in:
4293                    ; line_number = 792
4294                    ;  character := space
4295 1e28 3020          movlw   32
4296 1e29 00cd          movwf   get_character__character
4297                    ; line_number = 793
4298                    ;  while character = space start
4299   1e2a :   get_character__1:
4300                    ; Left minus Right
4301 1e2a 30e0          movlw   224
4302 1e2b 074d          addwf   get_character__character,w
4303                    ; =>bit_code_emit@symbol(): sym=__z
4304                    ; CASE: true_code.size = 0 && false_code.size > 1
4305 1e2c 1d03          btfss   __z___byte, __z___bit
4306 1e2d 2e37          goto    get_character__6
4307                    ; line_number = 794
4308                    ; pir1_copy@5 := 0
4309 0000004e = get_character__select__2___byte equ get_character__pir1_copy
4310 00000005 = get_character__select__2___bit equ 5
4311 1e2e 12ce          bcf     get_character__select__2___byte, get_character__select__2___bit
4312                    ; line_number = 795
4313                    ;  while !(pir1_copy@5) start
4314   1e2f :   get_character__3:
4315 0000004e = get_character__select__4___byte equ get_character__pir1_copy
4316 00000005 = get_character__select__4___bit equ 5
4317                    ; =>bit_code_emit@symbol(): sym=get_character__select__4
4318                    ; CASE: true.size=0 && false.size>1
4319 1e2f 1ace          btfsc   get_character__select__4___byte, get_character__select__4___bit
4320 1e30 2e34          goto    get_character__5
4321                    ; # Wait for character:
4322                    ; line_number = 797
4323                    ;  pir1_copy := _pir1
4324 1e31 080c          movf    _pir1,w
4325 1e32 00ce          movwf   get_character__pir1_copy
4326 1e33 2e2f          goto    get_character__3
4327   1e34 :   get_character__5:
4328                    ; Recombine size1 = 0 || size2 = 0
4329                    ; <=bit_code_emit@symbol; sym=get_character__select__4 (data:00=>00 code:11=>11)
4330                    ; line_number = 795
4331                    ;  while !(pir1_copy@5) done
4332                    ; line_number = 798
4333                    ; character := _rcreg
4334 1e34 081a          movf    _rcreg,w
4335 1e35 00cd          movwf   get_character__character
4336            
4337 1e36 2e2a          goto    get_character__1
4338                    ; Recombine size1 = 0 || size2 = 0
4339   1e37 :   get_character__6:
4340                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
4341                    ; line_number = 793
4342                    ;  while character = space done
4343                    ; # Convert to upper case:
4344                    ; line_number = 801
4345                    ;  if 'a' <= character && character <= 'z' start
4346 1e37 3061          movlw   97
4347 1e38 024d          subwf   get_character__character,w
4348                    ; =>bit_code_emit@symbol(): sym=__c
4349                    ; CASE: true.size>1 false.size=1; false=GOTO
4350 1e39 1c03          btfss   __c___byte, __c___bit
4351 1e3a 2e43          goto    get_character__7
4352                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4353 1e3b 307a          movlw   122
4354 1e3c 024d          subwf   get_character__character,w
4355 1e3d 1903          btfsc   __z___byte, __z___bit
4356 1e3e 1003          bcf     __c___byte, __c___bit
4357                    ; =>bit_code_emit@symbol(): sym=__c
4358                    ; CASE: true.size=0 && false.size>1
4359 1e3f 1803          btfsc   __c___byte, __c___bit
4360 1e40 2e43          goto    get_character__8
4361                    ; line_number = 802
4362                    ; character := character - 'a' + 'A'
4363 1e41 30e0          movlw   224
4364 1e42 07cd          addwf   get_character__character,f
4365            
4366   1e43 :   get_character__8:
4367   1e43 :   get_character__7:
4368                    ; Recombine code1_bit_states != code2_bit_states
4369                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
4370                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4371                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
4372                    ; Recombine code1_bit_states != code2_bit_states
4373                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
4374                    ; line_number = 801
4375                    ;  if 'a' <= character && character <= 'z' done
4376                    ; # Carriage returns "stick" until get_carriage_return() is called:
4377                    ; line_number = 805
4378                    ;  if character = carriage_return start
4379                    ; Left minus Right
4380 1e43 30f3          movlw   243
4381 1e44 074d          addwf   get_character__character,w
4382                    ; =>bit_code_emit@symbol(): sym=__z
4383                    ; CASE: true_code.size = 0 && false_code.size > 1
4384 1e45 1d03          btfss   __z___byte, __z___bit
4385 1e46 2e4a          goto    get_character__9
4386                    ; line_number = 806
4387                    ; call put_character(line_feed)
4388 1e47 300a          movlw   10
4389 1e48 26ce          call    put_character
4390                    ; line_number = 807
4391                    ;  have_carriage_return := 1
4392 1e49 14ef          bsf     have_carriage_return___byte, have_carriage_return___bit
4393                    ; Recombine size1 = 0 || size2 = 0
4394   1e4a :   get_character__9:
4395                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
4396                    ; line_number = 805
4397                    ;  if character = carriage_return done
4398                    ; line_number = 808
4399                    ; return character start
4400                    ; line_number = 808
4401 1e4a 084d          movf    get_character__character,w
4402 1e4b 0008          return  
4403                    ; line_number = 808
4404                    ; return character done
4405            
4406            
4407                    ; delay after procedure statements=non-uniform
4408            
4409            
4410            
4411            
4412                    ; line_number = 811
4413                    ; procedure get_hex_byte
4414   1e4c :   get_hex_byte:
4415                    ; arguments_none
4416                    ; line_number = 813
4417                    ;  returns byte
4418            
4419                    ; # This procedure will read one hexadecimal byte:
4420            
4421                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4422                    ; line_number = 817
4423                    ;  return (get_hex_nibble() << 4) | get_hex_nibble() start
4424                    ; line_number = 817
4425 00000069 = get_hex_byte__1 equ globals___0+73
4426 1e4c 2654          call    get_hex_nibble
4427 1e4d 00e9          movwf   get_hex_byte__1
4428 1e4e 0ee9          swapf   get_hex_byte__1,f
4429 1e4f 30f0          movlw   240
4430 1e50 05e9          andwf   get_hex_byte__1,f
4431 1e51 2654          call    get_hex_nibble
4432 1e52 0469          iorwf   get_hex_byte__1,w
4433 1e53 0008          return  
4434                    ; line_number = 817
4435                    ;  return (get_hex_nibble() << 4) | get_hex_nibble() done
4436            
4437            
4438                    ; delay after procedure statements=non-uniform
4439            
4440            
4441            
4442            
4443                    ; line_number = 820
4444                    ; procedure get_hex_nibble
4445   1e54 :   get_hex_nibble:
4446                    ; arguments_none
4447                    ; line_number = 822
4448                    ;  returns byte
4449            
4450                    ; # This procedure will get and return one hexadecimal digit worth
4451                    ; # of number.
4452            
4453                    ; line_number = 827
4454                    ;  local character byte
4455 0000004f = get_hex_nibble__character equ globals___0+47
4456            
4457                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4458                    ; line_number = 829
4459                    ;  character := get_character()
4460 1e54 2626          call    get_character
4461 1e55 00cf          movwf   get_hex_nibble__character
4462                    ; line_number = 830
4463                    ;  if '0' <= character && character <= '9' start
4464 1e56 3030          movlw   48
4465 1e57 024f          subwf   get_hex_nibble__character,w
4466                    ; =>bit_code_emit@symbol(): sym=__c
4467                    ; CASE: true.size>1 false.size=1; false=GOTO
4468 1e58 1c03          btfss   __c___byte, __c___bit
4469 1e59 2e60          goto    get_hex_nibble__3
4470                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4471 1e5a 3039          movlw   57
4472 1e5b 024f          subwf   get_hex_nibble__character,w
4473 1e5c 1903          btfsc   __z___byte, __z___bit
4474 1e5d 1003          bcf     __c___byte, __c___bit
4475                    ; =>bit_code_emit@symbol(): sym=__c
4476                    ; CASE: true_code_size > 1 && false_code_size > 1
4477 1e5e 1c03          btfss   __c___byte, __c___bit
4478 1e5f 2e6e          goto    get_hex_nibble__4
4479   1e60 :   get_hex_nibble__3:
4480                    ; line_number = 832
4481 1e60 3041          movlw   65
4482 1e61 024f          subwf   get_hex_nibble__character,w
4483                    ; =>bit_code_emit@symbol(): sym=__c
4484                    ; CASE: true.size>1 false.size=1; false=GOTO
4485 1e62 1c03          btfss   __c___byte, __c___bit
4486 1e63 2e6d          goto    get_hex_nibble__1
4487                    ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4488 1e64 3046          movlw   70
4489 1e65 024f          subwf   get_hex_nibble__character,w
4490 1e66 1903          btfsc   __z___byte, __z___bit
4491 1e67 1003          bcf     __c___byte, __c___bit
4492                    ; =>bit_code_emit@symbol(): sym=__c
4493                    ; CASE: true.size=0 && false.size>1
4494 1e68 1803          btfsc   __c___byte, __c___bit
4495 1e69 2e6d          goto    get_hex_nibble__2
4496                    ; line_number = 833
4497                    ; return character - 'A' + 10 start
4498                    ; line_number = 833
4499 1e6a 30c9          movlw   201
4500 1e6b 074f          addwf   get_hex_nibble__character,w
4501 1e6c 0008          return  
4502                    ; line_number = 833
4503                    ; return character - 'A' + 10 done
4504   1e6d :   get_hex_nibble__2:
4505   1e6d :   get_hex_nibble__1:
4506                    ; Recombine code1_bit_states != code2_bit_states
4507                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
4508                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4509                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
4510                    ; Recombine code1_bit_states != code2_bit_states
4511                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
4512                    ; Recombine code1_bit_states != code2_bit_states
4513 1e6d 2e71          goto    get_hex_nibble__5
4514   1e6e :   get_hex_nibble__4:
4515                    ; line_number = 831
4516                    ; return character - '0' start
4517                    ; line_number = 831
4518 1e6e 30d0          movlw   208
4519 1e6f 074f          addwf   get_hex_nibble__character,w
4520 1e70 0008          return  
4521                    ; line_number = 831
4522                    ; return character - '0' done
4523   1e71 :   get_hex_nibble__5:
4524                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
4525                    ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
4526                    ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
4527                    ; Recombine code1_bit_states != code2_bit_states
4528                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
4529                    ; line_number = 830
4530                    ;  if '0' <= character && character <= '9' done
4531                    ; line_number = 834
4532                    ; ok := 0
4533 1e71 106f          bcf     ok___byte, ok___bit
4534                    ; line_number = 835
4535                    ;  return 0 start
4536                    ; line_number = 835
4537 1e72 3400          retlw   0
4538                    ; line_number = 835
4539                    ;  return 0 done
4540            
4541            
4542                    ; delay after procedure statements=non-uniform
4543            
4544            
4545            
4546            
4547                    ; # The `put' procedures:
4548            
4549                    ; line_number = 840
4550                    ; procedure put_get_byte
4551   1e73 :   put_get_byte:
4552                    ; Last argument is sitting in W; save into argument variable
4553 1e73 00d1          movwf   put_get_byte__socket
4554                    ; delay=4294967295
4555                    ; line_number = 841
4556                    ; argument command byte
4557 00000050 = put_get_byte__command equ globals___0+48
4558                    ; line_number = 842
4559                    ; argument socket byte
4560 00000051 = put_get_byte__socket equ globals___0+49
4561                    ; line_number = 843
4562                    ;  returns byte
4563            
4564                    ; # This procedure will output {command} to {socket} and wait
4565                    ; # for a response which is subseuently returned.
4566            
4567                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4568                    ; line_number = 848
4569                    ;  call put_byte(command, socket)
4570 1e74 0850          movf    put_get_byte__command,w
4571 1e75 00d8          movwf   put_byte__character
4572 1e76 0851          movf    put_get_byte__socket,w
4573 1e77 267b          call    put_byte
4574                    ; line_number = 849
4575                    ;  return get_byte(socket) start
4576                    ; line_number = 849
4577 1e78 0851          movf    put_get_byte__socket,w
4578 1e79 25dc          call    get_byte
4579 1e7a 0008          return  
4580                    ; line_number = 849
4581                    ;  return get_byte(socket) done
4582            
4583            
4584                    ; delay after procedure statements=non-uniform
4585            
4586            
4587            
4588            
4589                    ; line_number = 852
4590                    ; procedure put_byte
4591   1e7b :   put_byte:
4592                    ; Last argument is sitting in W; save into argument variable
4593 1e7b 00d9          movwf   put_byte__socket
4594                    ; delay=4294967295
4595                    ; line_number = 853
4596                    ; argument character byte
4597 00000058 = put_byte__character equ globals___0+56
4598                    ; line_number = 854
4599                    ; argument socket byte
4600 00000059 = put_byte__socket equ globals___0+57
4601                    ; line_number = 855
4602                    ;  returns_nothing
4603            
4604                    ; # This procedure will send {character} out to {socket}.
4605            
4606                    ; line_number = 859
4607                    ;  local counter byte
4608 00000052 = put_byte__counter equ globals___0+50
4609                    ; line_number = 860
4610                    ;  local one byte
4611 00000053 = put_byte__one equ globals___0+51
4612                    ; line_number = 861
4613                    ;  local port byte
4614 00000054 = put_byte__port equ globals___0+52
4615                    ; line_number = 862
4616                    ;  local zero byte
4617 00000055 = put_byte__zero equ globals___0+53
4618            
4619                    ; line_number = 864
4620                    ;  local in_out_register byte
4621 00000056 = put_byte__in_out_register equ globals___0+54
4622                    ; line_number = 865
4623                    ;  local out_mask byte
4624 00000057 = put_byte__out_mask equ globals___0+55
4625            
4626                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4627                    ; line_number = 867
4628                    ;  in_out_register := in_out_registers(socket)
4629 1e7c 0859          movf    put_byte__socket,w
4630 1e7d 2742          call    in_out_registers
4631 1e7e 00d6          movwf   put_byte__in_out_register
4632                    ; line_number = 868
4633                    ;  out_mask := out_masks(socket)
4634 1e7f 0859          movf    put_byte__socket,w
4635 1e80 2766          call    out_masks
4636 1e81 00d7          movwf   put_byte__out_mask
4637                    ; line_number = 869
4638                    ;  port := ports[in_out_register]
4639 1e82 0856          movf    put_byte__in_out_register,w
4640 1e83 3e05          addlw   ports
4641 1e84 0084          movwf   __fsr
4642 1e85 1383          bcf     __irp___byte, __irp___bit
4643 1e86 0800          movf    __indf,w
4644 1e87 00d4          movwf   put_byte__port
4645                    ; line_number = 870
4646                    ;  one := port | out_mask
4647 1e88 0854          movf    put_byte__port,w
4648 1e89 0457          iorwf   put_byte__out_mask,w
4649 1e8a 00d3          movwf   put_byte__one
4650                    ; line_number = 871
4651                    ;  zero := port & (out_mask ^ 0xff)
4652 1e8b 30ff          movlw   255
4653 1e8c 0657          xorwf   put_byte__out_mask,w
4654 1e8d 0554          andwf   put_byte__port,w
4655 1e8e 00d5          movwf   put_byte__zero
4656            
4657                    ; # If we were last receiving some characters, let's delay by 2/3 bit
4658                    ; # to make sure there is adequate turn-around:
4659                    ; line_number = 875
4660                    ;  if receiving start
4661                    ; =>bit_code_emit@symbol(): sym=receiving
4662                    ; CASE: true_code.size = 0 && false_code.size > 1
4663 1e8f 1d6f          btfss   receiving___byte, receiving___bit
4664 1e90 2e94          goto    put_byte__1
4665                    ; line_number = 876
4666                    ; receiving := 0
4667 1e91 116f          bcf     receiving___byte, receiving___bit
4668                    ; line_number = 877
4669                    ;  call delay()
4670 1e92 2727          call    delay
4671                    ; line_number = 878
4672                    ;  call delay()
4673 1e93 2727          call    delay
4674            
4675                    ; Recombine size1 = 0 || size2 = 0
4676   1e94 :   put_byte__1:
4677                    ; <=bit_code_emit@symbol; sym=receiving (data:00=>00 code:11=>11)
4678                    ; line_number = 875
4679                    ;  if receiving done
4680                    ; # Do start bit:
4681                    ; line_number = 881
4682                    ;  delay extra_bit_instructions - 2 start
4683                    ; Delay expression evaluates to 22
4684                    ; line_number = 882
4685                    ; ports[in_out_register] := zero
4686                    ; Delay at assignment is 0
4687                    ; index_fsr_first
4688 1e94 0856          movf    put_byte__in_out_register,w
4689 1e95 3e05          addlw   ports
4690 1e96 0084          movwf   __fsr
4691 1e97 1383          bcf     __irp___byte, __irp___bit
4692 1e98 0855          movf    put_byte__zero,w
4693 1e99 0080          movwf   __indf
4694                    ; Delay 16 cycles
4695                    ; Delay loop takes 4 * 4 = 16 cycles
4696 1e9a 3004          movlw   4
4697   1e9b :   put_byte__2:
4698 1e9b 3eff          addlw   255
4699 1e9c 1d03          btfss   __z___byte, __z___bit
4700 1e9d 2e9b          goto    put_byte__2
4701                    ; line_number = 881
4702                    ;  delay extra_bit_instructions - 2 done
4703                    ; line_number = 883
4704                    ; call delay()
4705 1e9e 2727          call    delay
4706                    ; line_number = 884
4707                    ;  call delay()
4708 1e9f 2727          call    delay
4709                    ; line_number = 885
4710                    ;  call delay()
4711 1ea0 2727          call    delay
4712                    ; # "- 2" is for two bytes of loop set up:
4713            
4714                    ; # Do next 8 bits:
4715                    ; line_number = 889
4716                    ;  loop_exactly 8 start
4717 0000006a = put_byte__3 equ globals___0+74
4718 1ea1 3008          movlw   8
4719 1ea2 00ea          movwf   put_byte__3
4720   1ea3 :   put_byte__4:
4721                    ; # 3 cycles for goto at end of loop
4722                    ; line_number = 891
4723                    ;  delay extra_bit_instructions - 3 start
4724                    ; Delay expression evaluates to 21
4725                    ; line_number = 892
4726                    ; port := ports[in_out_register]
4727                    ; Delay at assignment is 0
4728 1ea3 0856          movf    put_byte__in_out_register,w
4729 1ea4 3e05          addlw   ports
4730 1ea5 0084          movwf   __fsr
4731 1ea6 1383          bcf     __irp___byte, __irp___bit
4732 1ea7 0800          movf    __indf,w
4733 1ea8 00d4          movwf   put_byte__port
4734                    ; line_number = 893
4735                    ;  if character@0 start
4736                    ; Delay at if is 6
4737 00000058 = put_byte__select__5___byte equ put_byte__character
4738 00000000 = put_byte__select__5___bit equ 0
4739                    ; =>bit_code_emit@symbol(): sym=put_byte__select__5
4740                    ; CASE: true_code_size > 1 && false_code_size > 1
4741 1ea9 1c58          btfss   put_byte__select__5___byte, put_byte__select__5___bit
4742 1eaa 2eae          goto    put_byte__6
4743                    ; # Send a mark (1):
4744                    ; line_number = 895
4745                    ;  port := one
4746                    ; Delay at assignment is 0
4747 1eab 0853          movf    put_byte__one,w
4748 1eac 00d4          movwf   put_byte__port
4749 1ead 2eb1          goto    put_byte__7
4750   1eae :   put_byte__6:
4751                    ; # Send a space (0):
4752                    ; line_number = 898
4753                    ;  port := zero
4754                    ; Delay at assignment is 0
4755 1eae 0855          movf    put_byte__zero,w
4756 1eaf 00d4          movwf   put_byte__port
4757 1eb0 0000          nop     
4758   1eb1 :   put_byte__7:
4759                    ; <=bit_code_emit@symbol; sym=put_byte__select__5 (data:00=>00 code:11=>11)
4760                    ; if final true delay=2 false delay=2 code delay=12
4761                    ; line_number = 893
4762                    ;  if character@0 done
4763                    ; line_number = 899
4764                    ; ports[in_out_register] := port
4765                    ; Delay at assignment is 12
4766                    ; index_fsr_first
4767 1eb1 0856          movf    put_byte__in_out_register,w
4768 1eb2 3e05          addlw   ports
4769 1eb3 0084          movwf   __fsr
4770 1eb4 1383          bcf     __irp___byte, __irp___bit
4771 1eb5 0854          movf    put_byte__port,w
4772 1eb6 0080          movwf   __indf
4773                    ; line_number = 900
4774                    ;  character := character >> 1
4775                    ; Delay at assignment is 18
4776                    ; Assignment of variable to self (no code needed)
4777 1eb7 0cd8          rrf     put_byte__character,f
4778 1eb8 13d8          bcf     put_byte__character, 7
4779                    ; Delay 1 cycles
4780 1eb9 0000          nop     
4781                    ; line_number = 891
4782                    ;  delay extra_bit_instructions - 3 done
4783                    ; line_number = 901
4784                    ; call delay()
4785 1eba 2727          call    delay
4786                    ; line_number = 902
4787                    ;  call delay()
4788 1ebb 2727          call    delay
4789                    ; line_number = 903
4790                    ;  call delay()
4791 1ebc 2727          call    delay
4792            
4793                    ; line_number = 889
4794                    ;  loop_exactly 8 wrap-up
4795 1ebd 0bea          decfsz  put_byte__3,f
4796 1ebe 2ea3          goto    put_byte__4
4797                    ; line_number = 889
4798                    ;  loop_exactly 8 done
4799                    ; # Now do stop bit:
4800                    ; line_number = 906
4801                    ;  delay extra_bit_instructions start
4802                    ; Delay expression evaluates to 24
4803                    ; line_number = 907
4804                    ; ports[in_out_register] := one
4805                    ; Delay at assignment is 0
4806                    ; index_fsr_first
4807 1ebf 0856          movf    put_byte__in_out_register,w
4808 1ec0 3e05          addlw   ports
4809 1ec1 0084          movwf   __fsr
4810 1ec2 1383          bcf     __irp___byte, __irp___bit
4811 1ec3 0853          movf    put_byte__one,w
4812 1ec4 0080          movwf   __indf
4813                    ; Delay 18 cycles
4814                    ; Delay loop takes 4 * 4 = 16 cycles
4815 1ec5 3004          movlw   4
4816   1ec6 :   put_byte__8:
4817 1ec6 3eff          addlw   255
4818 1ec7 1d03          btfss   __z___byte, __z___bit
4819 1ec8 2ec6          goto    put_byte__8
4820 1ec9 2eca          goto    put_byte__9
4821   1eca :   put_byte__9:
4822                    ; line_number = 906
4823                    ;  delay extra_bit_instructions done
4824                    ; line_number = 908
4825                    ; call delay()
4826 1eca 2727          call    delay
4827                    ; line_number = 909
4828                    ;  call delay()
4829 1ecb 2727          call    delay
4830                    ; line_number = 910
4831                    ;  call delay()
4832 1ecc 2727          call    delay
4833            
4834            
4835                    ; delay after procedure statements=non-uniform
4836                    ; Implied return
4837 1ecd 3400          retlw   0
4838            
4839            
4840            
4841            
4842                    ; line_number = 913
4843                    ; procedure put_character
4844   1ece :   put_character:
4845                    ; Last argument is sitting in W; save into argument variable
4846 1ece 00db          movwf   put_character__character
4847                    ; delay=4294967295
4848                    ; line_number = 914
4849                    ; argument character byte
4850 0000005b = put_character__character equ globals___0+59
4851                    ; line_number = 915
4852                    ;  returns_nothing
4853            
4854                    ; # This procedure will send {character} out to TX-pin of port C.
4855            
4856                    ; line_number = 919
4857                    ;  local pir1_copy byte
4858 0000005a = put_character__pir1_copy equ globals___0+58
4859            
4860                    ; #FIXME: The compiler chokes on a bit test in another page!!!
4861                    ; # For now may a local copy and test locally:
4862                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4863                    ; line_number = 923
4864                    ;  pir1_copy@4 := 0
4865 0000005a = put_character__select__1___byte equ put_character__pir1_copy
4866 00000004 = put_character__select__1___bit equ 4
4867 1ecf 125a          bcf     put_character__select__1___byte, put_character__select__1___bit
4868                    ; line_number = 924
4869                    ;  while !(pir1_copy@4) start
4870   1ed0 :   put_character__2:
4871 0000005a = put_character__select__3___byte equ put_character__pir1_copy
4872 00000004 = put_character__select__3___bit equ 4
4873                    ; =>bit_code_emit@symbol(): sym=put_character__select__3
4874                    ; CASE: true.size=0 && false.size>1
4875 1ed0 1a5a          btfsc   put_character__select__3___byte, put_character__select__3___bit
4876 1ed1 2ed5          goto    put_character__4
4877                    ; # Wait for transmit buffer to empty.
4878                    ; line_number = 926
4879                    ;  pir1_copy := _pir1
4880 1ed2 080c          movf    _pir1,w
4881 1ed3 00da          movwf   put_character__pir1_copy
4882            
4883 1ed4 2ed0          goto    put_character__2
4884   1ed5 :   put_character__4:
4885                    ; Recombine size1 = 0 || size2 = 0
4886                    ; <=bit_code_emit@symbol; sym=put_character__select__3 (data:00=>00 code:11=>11)
4887                    ; line_number = 924
4888                    ;  while !(pir1_copy@4) done
4889                    ; # Send the character:
4890                    ; line_number = 929
4891                    ;  _txreg := character
4892 1ed5 085b          movf    put_character__character,w
4893 1ed6 0099          movwf   _txreg
4894            
4895            
4896                    ; delay after procedure statements=non-uniform
4897                    ; Implied return
4898 1ed7 3400          retlw   0
4899            
4900            
4901            
4902            
4903                    ; line_number = 932
4904                    ; procedure put_crlf
4905   1ed8 :   put_crlf:
4906                    ; arguments_none
4907                    ; line_number = 934
4908                    ;  returns_nothing
4909            
4910                    ; # This procedure will output a carriage-return line-feed.
4911            
4912                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4913                    ; line_number = 938
4914                    ;  call put_character(carriage_return)
4915 1ed8 300d          movlw   13
4916 1ed9 26ce          call    put_character
4917                    ; line_number = 939
4918                    ;  call put_character(line_feed)
4919 1eda 300a          movlw   10
4920 1edb 26ce          call    put_character
4921            
4922            
4923                    ; delay after procedure statements=non-uniform
4924                    ; Implied return
4925 1edc 3400          retlw   0
4926            
4927            
4928            
4929            
4930                    ; line_number = 942
4931                    ; procedure put_hex_byte
4932   1edd :   put_hex_byte:
4933                    ; Last argument is sitting in W; save into argument variable
4934 1edd 00dc          movwf   put_hex_byte__byte
4935                    ; delay=4294967295
4936                    ; line_number = 943
4937                    ; argument byte byte
4938 0000005c = put_hex_byte__byte equ globals___0+60
4939                    ; line_number = 944
4940                    ;  returns_nothing
4941            
4942                    ; # This procedure will output {byte} as two hexadecimal digits.
4943            
4944                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4945                    ; line_number = 948
4946                    ;  call put_hex_nibble(byte >> 4)
4947 0000006b = put_hex_byte__1 equ globals___0+75
4948 1ede 0e5c          swapf   put_hex_byte__byte,w
4949 1edf 390f          andlw   15
4950 1ee0 26e5          call    put_hex_nibble
4951                    ; line_number = 949
4952                    ;  call put_hex_nibble(byte & 15)
4953 1ee1 300f          movlw   15
4954 1ee2 055c          andwf   put_hex_byte__byte,w
4955 1ee3 26e5          call    put_hex_nibble
4956            
4957            
4958                    ; delay after procedure statements=non-uniform
4959                    ; Implied return
4960 1ee4 3400          retlw   0
4961            
4962            
4963            
4964            
4965                    ; line_number = 952
4966                    ; procedure put_hex_nibble
4967   1ee5 :   put_hex_nibble:
4968                    ; Last argument is sitting in W; save into argument variable
4969 1ee5 00dd          movwf   put_hex_nibble__nibble
4970                    ; delay=4294967295
4971                    ; line_number = 953
4972                    ; argument nibble byte
4973 0000005d = put_hex_nibble__nibble equ globals___0+61
4974                    ; line_number = 954
4975                    ;  returns_nothing
4976            
4977                    ; # This procedure will output {nibble} as a hexadecimal digit.
4978            
4979                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
4980                    ; line_number = 958
4981                    ;  if nibble < 10 start
4982 1ee6 300a          movlw   10
4983 1ee7 025d          subwf   put_hex_nibble__nibble,w
4984                    ; =>bit_code_emit@symbol(): sym=__c
4985                    ; CASE: true_size=1 && false_size=1
4986 1ee8 1803          btfsc   __c___byte, __c___bit
4987                    ; line_number = 961
4988                    ; nibble := nibble + 'A' - 10
4989 1ee9 3037          movlw   55
4990 1eea 1c03          btfss   __c___byte, __c___bit
4991                    ; line_number = 959
4992                    ; nibble := nibble + '0'
4993 1eeb 3030          movlw   48
4994 1eec 07dd          addwf   put_hex_nibble__nibble,f
4995                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
4996                    ; line_number = 958
4997                    ;  if nibble < 10 done
4998                    ; line_number = 962
4999                    ; call put_character(nibble)
5000 1eed 085d          movf    put_hex_nibble__nibble,w
5001 1eee 26ce          call    put_character
5002            
5003            
5004                    ; delay after procedure statements=non-uniform
5005                    ; Implied return
5006 1eef 3400          retlw   0
5007            
5008            
5009            
5010            
5011                    ; line_number = 965
5012                    ; procedure put_space
5013   1ef0 :   put_space:
5014                    ; arguments_none
5015                    ; line_number = 967
5016                    ;  returns_nothing
5017            
5018                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
5019                    ; line_number = 969
5020                    ;  call put_character(space)
5021 1ef0 3020          movlw   32
5022 1ef1 26ce          call    put_character
5023            
5024            
5025                    ; delay after procedure statements=non-uniform
5026                    ; Implied return
5027 1ef2 3400          retlw   0
5028            
5029            
5030            
5031            
5032                    ; # Sleep routines:
5033            
5034 0000006f = seconds_sleep__0return___byte equ globals___0+79
5035 00000005 = seconds_sleep__0return___bit equ 5
5036                    ; line_number = 974
5037                    ; procedure seconds_sleep
5038   1ef3 :   seconds_sleep:
5039                    ; Last argument is sitting in W; save into argument variable
5040 1ef3 00df          movwf   seconds_sleep__seconds
5041                    ; delay=4294967295
5042                    ; line_number = 975
5043                    ; argument seconds byte
5044 0000005f = seconds_sleep__seconds equ globals___0+63
5045                    ; line_number = 976
5046                    ;  returns bit
5047            
5048                    ; # This procedure will sleep for the specified number of seconds.
5049            
5050                    ; line_number = 980
5051                    ;  local count byte
5052 0000005e = seconds_sleep__count equ globals___0+62
5053            
5054                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
5055                    ; line_number = 982
5056                    ;  count := 0
5057 1ef4 3000          movlw   0
5058 1ef5 00de          movwf   seconds_sleep__count
5059                    ; line_number = 983
5060                    ;  loop_exactly seconds start
5061 0000006c = seconds_sleep__1 equ globals___0+76
5062 1ef6 085f          movf    seconds_sleep__seconds,w
5063 1ef7 00ec          movwf   seconds_sleep__1
5064   1ef8 :   seconds_sleep__2:
5065                    ; line_number = 984
5066                    ; call put_hex_byte(count)
5067 1ef8 085e          movf    seconds_sleep__count,w
5068 1ef9 26dd          call    put_hex_byte
5069                    ; line_number = 985
5070                    ;  call put_space()
5071 1efa 26f0          call    put_space
5072                    ; line_number = 986
5073                    ;  if second_sleep() start
5074 1efb 270b          call    second_sleep
5075                    ; =>bit_code_emit@symbol(): sym=second_sleep__0return
5076                    ; CASE: true_code.size = 0 && false_code.size > 1
5077 1efc 1f6f          btfss   second_sleep__0return___byte, second_sleep__0return___bit
5078 1efd 2f06          goto    seconds_sleep__4
5079                    ; line_number = 987
5080                    ; if sleep_count < 10 start
5081 1efe 300a          movlw   10
5082 1eff 0223          subwf   sleep_count,w
5083                    ; =>bit_code_emit@symbol(): sym=__c
5084                    ; CASE: true.size=0 && false.size>1
5085 1f00 1803          btfsc   __c___byte, __c___bit
5086 1f01 2f04          goto    seconds_sleep__3
5087                    ; line_number = 988
5088                    ; return 1 start
5089                    ; line_number = 988
5090 1f02 16ef          bsf     seconds_sleep__0return___byte, seconds_sleep__0return___bit
5091 1f03 0008          return  
5092                    ; line_number = 988
5093                    ; return 1 done
5094   1f04 :   seconds_sleep__3:
5095                    ; Recombine size1 = 0 || size2 = 0
5096                    ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
5097                    ; line_number = 987
5098                    ; if sleep_count < 10 done
5099                    ; line_number = 989
5100                    ; return 0 start
5101                    ; line_number = 989
5102 1f04 12ef          bcf     seconds_sleep__0return___byte, seconds_sleep__0return___bit
5103 1f05 0008          return  
5104                    ; line_number = 989
5105                    ; return 0 done
5106                    ; Recombine size1 = 0 || size2 = 0
5107   1f06 :   seconds_sleep__4:
5108                    ; <=bit_code_emit@symbol; sym=second_sleep__0return (data:00=>00 code:11=>11)
5109                    ; line_number = 986
5110                    ;  if second_sleep() done
5111                    ; line_number = 990
5112                    ; count := count + 1
5113 1f06 0ade          incf    seconds_sleep__count,f
5114                    ; line_number = 983
5115                    ;  loop_exactly seconds wrap-up
5116 1f07 0bec          decfsz  seconds_sleep__1,f
5117 1f08 2ef8          goto    seconds_sleep__2
5118                    ; line_number = 983
5119                    ;  loop_exactly seconds done
5120                    ; line_number = 991
5121                    ; return 1 start
5122                    ; line_number = 991
5123 1f09 16ef          bsf     seconds_sleep__0return___byte, seconds_sleep__0return___bit
5124 1f0a 0008          return  
5125                    ; line_number = 991
5126                    ; return 1 done
5127            
5128            
5129                    ; delay after procedure statements=non-uniform
5130            
5131            
5132            
5133            
5134 0000006f = second_sleep__0return___byte equ globals___0+79
5135 00000006 = second_sleep__0return___bit equ 6
5136                    ; line_number = 994
5137                    ; procedure second_sleep
5138   1f0b :   second_sleep:
5139                    ; arguments_none
5140                    ; line_number = 996
5141                    ;  returns bit
5142            
5143                    ; # This procedure will sleep for one second.
5144            
5145                    ; line_number = 1000
5146                    ;  local count1 byte
5147 00000060 = second_sleep__count1 equ globals___0+64
5148                    ; line_number = 1001
5149                    ;  local count2 byte
5150 00000061 = second_sleep__count2 equ globals___0+65
5151            
5152                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
5153                    ; line_number = 1003
5154                    ;  _rcif := 0
5155 1f0b 128c          bcf     _rcif___byte, _rcif___bit
5156                    ; line_number = 1004
5157                    ;  _rcreg := 0
5158 1f0c 3000          movlw   0
5159 1f0d 009a          movwf   _rcreg
5160                    ; line_number = 1005
5161                    ;  loop_exactly 100 start
5162 0000006d = second_sleep__1 equ globals___0+77
5163 1f0e 3064          movlw   100
5164 1f0f 00ed          movwf   second_sleep__1
5165   1f10 :   second_sleep__2:
5166                    ; line_number = 1006
5167                    ; loop_exactly 100 start
5168 0000006e = second_sleep__3 equ globals___0+78
5169 1f10 3064          movlw   100
5170 1f11 00ee          movwf   second_sleep__3
5171   1f12 :   second_sleep__4:
5172                    ; line_number = 1007
5173                    ; delay 500 start
5174                    ; Delay expression evaluates to 500
5175                    ; line_number = 1008
5176                    ; if _rcif start
5177                    ; Delay at if is 0
5178                    ; =>bit_code_emit@symbol(): sym=_rcif
5179                    ; CASE: true_code.size = 0 && false_code.size > 1
5180 1f12 1a8c          btfsc   _rcif___byte, _rcif___bit
5181 1f13 2f16          goto    second_sleep__5
5182                    ; Delay 2 cycles
5183 1f14 2f15          goto    second_sleep__7
5184   1f15 :   second_sleep__7:
5185 1f15 2f18          goto    second_sleep__6
5186   1f16 :   second_sleep__5:
5187                    ; line_number = 1009
5188                    ; return 1 start
5189                    ; line_number = 1009
5190                    ; Delay at expression return is 0
5191 1f16 176f          bsf     second_sleep__0return___byte, second_sleep__0return___bit
5192 1f17 0008          return  
5193                    ; line_number = 1009
5194                    ; return 1 done
5195   1f18 :   second_sleep__6:
5196                    ; <=bit_code_emit@symbol; sym=_rcif (data:00=>00 code:11=>11)
5197                    ; if final true delay=3 false delay=0 code delay=6
5198                    ; line_number = 1008
5199                    ; if _rcif done
5200                    ; line_number = 1010
5201                    ; if sleep_count != 255 start
5202                    ; Delay at if is 6
5203                    ; Left minus Right
5204 1f18 0a23          incf    sleep_count,w
5205                    ; =>bit_code_emit@symbol(): sym=__z
5206                    ; CASE: true_code.size=0 && false_code.size=1
5207 1f19 1d03          btfss   __z___byte, __z___bit
5208                    ; line_number = 1011
5209                    ; sleep_count := sleep_count + 1
5210                    ; Delay at assignment is 0
5211 1f1a 0aa3          incf    sleep_count,f
5212                    ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
5213                    ; Uniform delay broke in relation_code_emit
5214                    ; if final true delay=1 false delay=0 code delay=9
5215                    ; line_number = 1010
5216                    ; if sleep_count != 255 done
5217                    ; Delay 491 cycles
5218                    ; Delay loop takes 122 * 4 = 488 cycles
5219 1f1b 307a          movlw   122
5220   1f1c :   second_sleep__8:
5221 1f1c 3eff          addlw   255
5222 1f1d 1d03          btfss   __z___byte, __z___bit
5223 1f1e 2f1c          goto    second_sleep__8
5224 1f1f 2f20          goto    second_sleep__9
5225   1f20 :   second_sleep__9:
5226 1f20 0000          nop     
5227                    ; line_number = 1007
5228                    ; delay 500 done
5229                    ; line_number = 1006
5230                    ; loop_exactly 100 wrap-up
5231 1f21 0bee          decfsz  second_sleep__3,f
5232 1f22 2f12          goto    second_sleep__4
5233                    ; line_number = 1006
5234                    ; loop_exactly 100 done
5235                    ; line_number = 1005
5236                    ;  loop_exactly 100 wrap-up
5237 1f23 0bed          decfsz  second_sleep__1,f
5238 1f24 2f10          goto    second_sleep__2
5239                    ; line_number = 1005
5240                    ;  loop_exactly 100 done
5241                    ; line_number = 1012
5242                    ; return 0 start
5243                    ; line_number = 1012
5244 1f25 136f          bcf     second_sleep__0return___byte, second_sleep__0return___bit
5245 1f26 0008          return  
5246                    ; line_number = 1012
5247                    ; return 0 done
5248            
5249            
5250                    ; delay after procedure statements=non-uniform
5251            
5252            
5253            
5254            
5255                    ; line_number = 1015
5256                    ; procedure delay
5257   1f27 :   delay:
5258                    ; arguments_none
5259                    ; line_number = 1017
5260                    ;  returns_nothing
5261                    ; line_number = 1018
5262                    ;  exact_delay delay_instructions
5263            
5264                    ; # Delay 1/3 of a bit:
5265            
5266                    ; # Kick the dog:
5267                    ; before procedure statements delay=0, bit states=(data:00=>00 code:11=>11)
5268                    ; line_number = 1023
5269                    ;  watch_dog_reset done
5270                    ; Delay at watch_dog_reset is 0
5271 1f27 0064          clrwdt  
5272            
5273            
5274                    ; delay after procedure statements=1
5275                    ; Delay 683 cycles
5276                    ; Delay loop takes 170 * 4 = 680 cycles
5277 1f28 30aa          movlw   170
5278   1f29 :   delay__1:
5279 1f29 3eff          addlw   255
5280 1f2a 1d03          btfss   __z___byte, __z___bit
5281 1f2b 2f29          goto    delay__1
5282 1f2c 2f2d          goto    delay__2
5283   1f2d :   delay__2:
5284 1f2d 0000          nop     
5285                    ; Implied return
5286 1f2e 3400          retlw   0
5287                    ; Final delay = 686
5288            
5289            
5290            
5291            
5292                    ; line_number = 1026
5293                    ; string hello = "PICBrain11D\cr,lf\" start
5294                    ; hello = 'PICBrain11D\13,10\'
5295   1f2f :   hello:
5296                    ; Temporarily save index into FSR
5297 1f2f 0084          movwf   __fsr
5298                    ; Initialize PCLATH to point to this code page
5299 1f30 301f          movlw   hello___base>>8
5300 1f31 008a          movwf   __pclath
5301                    ; Restore index from FSR
5302 1f32 0804          movf    __fsr,w
5303 1f33 3e35          addlw   hello___base
5304                    ; Index to the correct return value
5305 1f34 0082          movwf   __pcl
5306                    ; page_group 13
5307   1f35 :   hello___base:
5308 1f35 3450          retlw   80
5309 1f36 3449          retlw   73
5310 1f37 3443          retlw   67
5311 1f38 3442          retlw   66
5312 1f39 3472          retlw   114
5313 1f3a 3461          retlw   97
5314 1f3b 3469          retlw   105
5315 1f3c 346e          retlw   110
5316 1f3d 3431          retlw   49
5317 1f3e 3431          retlw   49
5318 1f3f 3444          retlw   68
5319 1f40 340d          retlw   13
5320 1f41 340a          retlw   10
5321                    ; line_number = 1026
5322                    ; string hello = "PICBrain11D\cr,lf\" start
5323            
5324                    ; line_number = 1028
5325                    ; procedure in_out_registers
5326   1f42 :   in_out_registers:
5327                    ; Last argument is sitting in W; save into argument variable
5328 1f42 00e2          movwf   in_out_registers__socket
5329                    ; delay=4294967295
5330                    ; line_number = 1029
5331                    ; argument socket byte
5332 00000062 = in_out_registers__socket equ globals___0+66
5333                    ; line_number = 1030
5334                    ;  returns byte
5335            
5336                    ; # This procedure will return the register number to access for {socket}.
5337            
5338                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
5339                    ; line_number = 1034
5340                    ;  switch socket start
5341 1f43 301f          movlw   in_out_registers__12>>8
5342 1f44 008a          movwf   __pclath
5343 1f45 0862          movf    in_out_registers__socket,w
5344 1f46 3e48          addlw   in_out_registers__12
5345 1f47 0082          movwf   __pcl
5346                    ; page_group 11
5347   1f48 :   in_out_registers__12:
5348                    ; line_number = 1036
5349                    ; return n1_reg start
5350                    ; line_number = 1036
5351 1f48 3401          retlw   1
5352                    ; line_number = 1036
5353                    ; return n1_reg done
5354                    ; line_number = 1038
5355                    ; return n2_reg start
5356                    ; line_number = 1038
5357 1f49 3400          retlw   0
5358                    ; line_number = 1038
5359                    ; return n2_reg done
5360                    ; line_number = 1040
5361                    ; return n3_reg start
5362                    ; line_number = 1040
5363 1f4a 3401          retlw   1
5364                    ; line_number = 1040
5365                    ; return n3_reg done
5366                    ; line_number = 1042
5367                    ; return n4_reg start
5368                    ; line_number = 1042
5369 1f4b 3400          retlw   0
5370                    ; line_number = 1042
5371                    ; return n4_reg done
5372                    ; line_number = 1044
5373                    ; return n5_reg start
5374                    ; line_number = 1044
5375 1f4c 3401          retlw   1
5376                    ; line_number = 1044
5377                    ; return n5_reg done
5378                    ; line_number = 1046
5379                    ; return n6_reg start
5380                    ; line_number = 1046
5381 1f4d 3400          retlw   0
5382                    ; line_number = 1046
5383                    ; return n6_reg done
5384                    ; line_number = 1048
5385                    ; return n7_reg start
5386                    ; line_number = 1048
5387 1f4e 3401          retlw   1
5388                    ; line_number = 1048
5389                    ; return n7_reg done
5390                    ; line_number = 1050
5391                    ; return n8_reg start
5392                    ; line_number = 1050
5393 1f4f 3402          retlw   2
5394                    ; line_number = 1050
5395                    ; return n8_reg done
5396                    ; line_number = 1052
5397                    ; return n9_reg start
5398                    ; line_number = 1052
5399 1f50 3402          retlw   2
5400                    ; line_number = 1052
5401                    ; return n9_reg done
5402                    ; line_number = 1054
5403                    ; return n10_reg start
5404                    ; line_number = 1054
5405 1f51 3402          retlw   2
5406                    ; line_number = 1054
5407                    ; return n10_reg done
5408                    ; line_number = 1056
5409                    ; return n11_reg start
5410                    ; line_number = 1056
5411 1f52 3402          retlw   2
5412                    ; line_number = 1056
5413                    ; return n11_reg done
5414   1f53 :   in_out_registers__13:
5415                    ; line_number = 1034
5416                    ;  switch socket done
5417                    ; line_number = 1057
5418                    ; return n_none start
5419                    ; line_number = 1057
5420 1f53 340b          retlw   11
5421                    ; line_number = 1057
5422                    ; return n_none done
5423            
5424            
5425                    ; delay after procedure statements=non-uniform
5426            
5427            
5428            
5429            
5430                    ; line_number = 1060
5431                    ; procedure in_masks
5432   1f54 :   in_masks:
5433                    ; Last argument is sitting in W; save into argument variable
5434 1f54 00e3          movwf   in_masks__socket
5435                    ; delay=4294967295
5436                    ; line_number = 1061
5437                    ; argument socket byte
5438 00000063 = in_masks__socket equ globals___0+67
5439                    ; line_number = 1062
5440                    ;  returns byte
5441            
5442                    ; # This procedure will return the input mask for {socket}.
5443            
5444                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
5445                    ; line_number = 1066
5446                    ;  switch socket start
5447 1f55 301f          movlw   in_masks__12>>8
5448 1f56 008a          movwf   __pclath
5449 1f57 0863          movf    in_masks__socket,w
5450 1f58 3e5a          addlw   in_masks__12
5451 1f59 0082          movwf   __pcl
5452                    ; page_group 11
5453   1f5a :   in_masks__12:
5454                    ; line_number = 1068
5455                    ; return n1in_mask start
5456                    ; line_number = 1068
5457 1f5a 3440          retlw   64
5458                    ; line_number = 1068
5459                    ; return n1in_mask done
5460                    ; line_number = 1070
5461                    ; return n2in_mask start
5462                    ; line_number = 1070
5463 1f5b 3401          retlw   1
5464                    ; line_number = 1070
5465                    ; return n2in_mask done
5466                    ; line_number = 1072
5467                    ; return n3in_mask start
5468                    ; line_number = 1072
5469 1f5c 3410          retlw   16
5470                    ; line_number = 1072
5471                    ; return n3in_mask done
5472                    ; line_number = 1074
5473                    ; return n4in_mask start
5474                    ; line_number = 1074
5475 1f5d 3404          retlw   4
5476                    ; line_number = 1074
5477                    ; return n4in_mask done
5478                    ; line_number = 1076
5479                    ; return n5in_mask start
5480                    ; line_number = 1076
5481 1f5e 3404          retlw   4
5482                    ; line_number = 1076
5483                    ; return n5in_mask done
5484                    ; line_number = 1078
5485                    ; return n6in_mask start
5486                    ; line_number = 1078
5487 1f5f 3410          retlw   16
5488                    ; line_number = 1078
5489                    ; return n6in_mask done
5490                    ; line_number = 1080
5491                    ; return n7in_mask start
5492                    ; line_number = 1080
5493 1f60 3401          retlw   1
5494                    ; line_number = 1080
5495                    ; return n7in_mask done
5496                    ; line_number = 1082
5497                    ; return n8in_mask start
5498                    ; line_number = 1082
5499 1f61 3404          retlw   4
5500                    ; line_number = 1082
5501                    ; return n8in_mask done
5502                    ; line_number = 1084
5503                    ; return n9in_mask start
5504                    ; line_number = 1084
5505 1f62 3401          retlw   1
5506                    ; line_number = 1084
5507                    ; return n9in_mask done
5508                    ; line_number = 1086
5509                    ; return n10in_mask start
5510                    ; line_number = 1086
5511 1f63 3408          retlw   8
5512                    ; line_number = 1086
5513                    ; return n10in_mask done
5514                    ; line_number = 1088
5515                    ; return n11in_mask start
5516                    ; line_number = 1088
5517 1f64 3480          retlw   128
5518                    ; line_number = 1088
5519                    ; return n11in_mask done
5520   1f65 :   in_masks__13:
5521                    ; line_number = 1066
5522                    ;  switch socket done
5523                    ; line_number = 1089
5524                    ; return 0 start
5525                    ; line_number = 1089
5526 1f65 3400          retlw   0
5527                    ; line_number = 1089
5528                    ; return 0 done
5529            
5530            
5531                    ; delay after procedure statements=non-uniform
5532            
5533            
5534            
5535            
5536                    ; line_number = 1092
5537                    ; procedure out_masks
5538   1f66 :   out_masks:
5539                    ; Last argument is sitting in W; save into argument variable
5540 1f66 00e4          movwf   out_masks__socket
5541                    ; delay=4294967295
5542                    ; line_number = 1093
5543                    ; argument socket byte
5544 00000064 = out_masks__socket equ globals___0+68
5545                    ; line_number = 1094
5546                    ;  returns byte
5547            
5548                    ; # This procedure will return the output mask for {socket}.
5549            
5550                    ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
5551                    ; line_number = 1098
5552                    ;  switch socket start
5553 1f67 301f          movlw   out_masks__12>>8
5554 1f68 008a          movwf   __pclath
5555 1f69 0864          movf    out_masks__socket,w
5556 1f6a 3e6c          addlw   out_masks__12
5557 1f6b 0082          movwf   __pcl
5558                    ; page_group 11
5559   1f6c :   out_masks__12:
5560                    ; line_number = 1100
5561                    ; return n1out_mask start
5562                    ; line_number = 1100
5563 1f6c 3480          retlw   128
5564                    ; line_number = 1100
5565                    ; return n1out_mask done
5566                    ; line_number = 1102
5567                    ; return n2out_mask start
5568                    ; line_number = 1102
5569 1f6d 3402          retlw   2
5570                    ; line_number = 1102
5571                    ; return n2out_mask done
5572                    ; line_number = 1104
5573                    ; return n3out_mask start
5574                    ; line_number = 1104
5575 1f6e 3420          retlw   32
5576                    ; line_number = 1104
5577                    ; return n3out_mask done
5578                    ; line_number = 1106
5579                    ; return n4out_mask start
5580                    ; line_number = 1106
5581 1f6f 3408          retlw   8
5582                    ; line_number = 1106
5583                    ; return n4out_mask done
5584                    ; line_number = 1108
5585                    ; return n5out_mask start
5586                    ; line_number = 1108
5587 1f70 3408          retlw   8
5588                    ; line_number = 1108
5589                    ; return n5out_mask done
5590                    ; line_number = 1110
5591                    ; return n6out_mask start
5592                    ; line_number = 1110
5593 1f71 3420          retlw   32
5594                    ; line_number = 1110
5595                    ; return n6out_mask done
5596                    ; line_number = 1112
5597                    ; return n7out_mask start
5598                    ; line_number = 1112
5599 1f72 3402          retlw   2
5600                    ; line_number = 1112
5601                    ; return n7out_mask done
5602                    ; line_number = 1114
5603                    ; return n8out_mask start
5604                    ; line_number = 1114
5605 1f73 3420          retlw   32
5606                    ; line_number = 1114
5607                    ; return n8out_mask done
5608                    ; line_number = 1116
5609                    ; return n9out_mask start
5610                    ; line_number = 1116
5611 1f74 3402          retlw   2
5612                    ; line_number = 1116
5613                    ; return n9out_mask done
5614                    ; line_number = 1118
5615                    ; return n10out_mask start
5616                    ; line_number = 1118
5617 1f75 3410          retlw   16
5618                    ; line_number = 1118
5619                    ; return n10out_mask done
5620                    ; line_number = 1120
5621                    ; return n11out_mask start
5622                    ; line_number = 1120
5623 1f76 3440          retlw   64
5624                    ; line_number = 1120
5625                    ; return n11out_mask done
5626   1f77 :   out_masks__13:
5627                    ; line_number = 1098
5628                    ;  switch socket done
5629                    ; line_number = 1121
5630                    ; return 0 start
5631                    ; line_number = 1121
5632 1f77 3400          retlw   0
5633                    ; line_number = 1121
5634                    ; return 0 done
5635            
5636            
5637                    ; delay after procedure statements=non-uniform
5638            
5639            
5640            
5641            
5642            
5643                    ; Configuration bits
5644                    ; address = 0x2007, fill = 0x400
5645                    ; cp = off (0x3030)
5646                    ; debug = off (0x800)
5647                    ; wrt = on (0x200)
5648                    ; cpd = off (0x100)
5649                    ; lvp = off (0x0)
5650                    ; boden = off (0x0)
5651                    ; pwrte = off (0x8)
5652                    ; wdte = off (0x0)
5653                    ; fosc = hs (0x2)
5654                    ; 16186 = 0x3f3a
5655   3f3a =           __config 16186
5656                    ; Define start addresses for data regions
5657                    ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
5658                    ; Region="globals___0" Address=32" Size=80 Bytes=79 Bits=7 Available=0
5659                    ; Region="globals___1" Address=160" Size=80 Bytes=2 Bits=0 Available=78
5660                    ; Region="globals___2" Address=272" Size=96 Bytes=16 Bits=0 Available=80
5661                    ; Region="globals___3" Address=400" Size=112 Bytes=0 Bits=0 Available=112
5662                    end
