1 radix dec 2 ; Code bank 0; Start address: 0; End address: 4095 3 0000 : org 0 4 5 ; Define start addresses for data regions 6 00000070 = shared___globals equ 112 7 00000020 = globals___0 equ 32 8 000000a0 = globals___1 equ 160 9 00000120 = globals___2 equ 288 10 00000000 = __indf equ 0 11 00000002 = __pcl equ 2 12 00000003 = __status equ 3 13 00000004 = __fsr equ 4 14 00000003 = __c___byte equ 3 15 00000000 = __c___bit equ 0 16 00000003 = __z___byte equ 3 17 00000002 = __z___bit equ 2 18 00000003 = __rp0___byte equ 3 19 00000005 = __rp0___bit equ 5 20 00000003 = __rp1___byte equ 3 21 00000006 = __rp1___bit equ 6 22 00000003 = __irp___byte equ 3 23 00000007 = __irp___bit equ 7 24 0000000a = __pclath equ 10 25 0000000a = __cb0___byte equ 10 26 00000003 = __cb0___bit equ 3 27 0000000a = __cb1___byte equ 10 28 00000004 = __cb1___bit equ 4 29 30 ; # Copyright (c) 2005-2006 by Wayne C. Gramlich 31 ; # All rights reserved. 32 33 ; buffer = 'host' 34 ; line_number = 6 35 ; library _pic16f688 entered 36 37 ; # Copyright (c) 2004-2006 by Wayne C. Gramlich 38 ; # All rights reserved. 39 40 ; buffer = '_pic16f688' 41 ; line_number = 6 42 ; processor pic16f688 43 ; line_number = 7 44 ; configure_address 0x2007 45 ; line_number = 8 46 ; configure_fill 0x3000 47 ; line_number = 9 48 ; configure_option fcmen: on = 0x800 49 ; line_number = 10 50 ; configure_option fcmen: off = 0x000 51 ; line_number = 11 52 ; configure_option ieso: on = 0x400 53 ; line_number = 12 54 ; configure_option ieso: off = 0x000 55 ; line_number = 13 56 ; configure_option boden: on = 0x300 57 ; line_number = 14 58 ; configure_option boden: partial = 0x200 59 ; line_number = 15 60 ; configure_option boden: sboden = 0x100 61 ; line_number = 16 62 ; configure_option boden: off = 0x000 63 ; line_number = 17 64 ; configure_option cpd: on = 0x00 65 ; line_number = 18 66 ; configure_option cpd: off = 0x80 67 ; line_number = 19 68 ; configure_option cp: on = 0x00 69 ; line_number = 20 70 ; configure_option cp: off = 0x40 71 ; line_number = 21 72 ; configure_option mclre: on = 0x20 73 ; line_number = 22 74 ; configure_option mclre: off = 0x00 75 ; line_number = 23 76 ; configure_option pwrte: on = 0x00 77 ; line_number = 24 78 ; configure_option pwrte: off = 0x10 79 ; line_number = 25 80 ; configure_option wdte: on = 8 81 ; line_number = 26 82 ; configure_option wdte: off = 0 83 ; line_number = 27 84 ; configure_option fosc: rc_clk = 7 85 ; line_number = 28 86 ; configure_option fosc: rc_no_clk = 6 87 ; line_number = 29 88 ; configure_option fosc: int_clk = 5 89 ; line_number = 30 90 ; configure_option fosc: int_no_clk = 4 91 ; line_number = 31 92 ; configure_option fosc: ec = 3 93 ; line_number = 32 94 ; configure_option fosc: hs = 2 95 ; line_number = 33 96 ; configure_option fosc: xt = 1 97 ; line_number = 34 98 ; configure_option fosc: lp = 0 99 100 ; line_number = 36 101 ; code_bank 0x0 : 0xfff 102 ; line_number = 37 103 ; data_bank 0x0 : 0x7f 104 ; line_number = 38 105 ; data_bank 0x80 : 0xff 106 ; line_number = 39 107 ; data_bank 0x100 : 0x17f 108 ; line_number = 40 109 ; data_bank 0x180 : 0x1ff 110 111 ; line_number = 42 112 ; global_region 0x20 : 0x6f 113 ; line_number = 43 114 ; icd2_global_region 0x20 : 0x6f 115 116 ; line_number = 45 117 ; global_region 0xa0 : 0xef 118 ; line_number = 46 119 ; icd2_global_region 0xa0 : 0xef 120 121 ; line_number = 48 122 ; global_region 0x120 : 0x16f 123 ; line_number = 49 124 ; icd2_global_region 0x120 : 0x164 125 126 ; line_number = 51 127 ; shared_region 0x70 : 0x7f 128 ; line_number = 52 129 ; icd2_shared_region 0x71 : 0x7f 130 131 ; line_number = 54 132 ; interrupts_possible 133 ; line_number = 55 134 ; packages pdip=14, soic=14, tssop=14 135 ; line_number = 56 136 ; pin vdd, power_supply 137 ; line_number = 57 138 ; pin_bindings pdip=1, soic=1, tssop=1 139 ; line_number = 58 140 ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin 141 ; line_number = 59 142 ; pin_bindings pdip=2, soic=2, tssop=2 143 ; line_number = 60 144 ; bind_to _porta@5 145 ; line_number = 61 146 ; or_if ra5_in _trisa 32 147 ; line_number = 62 148 ; or_if ra5_nc _trisa 32 149 ; line_number = 63 150 ; or_if ra5_out _trisa 0 151 ; line_number = 64 152 ; or_if osc1 _trisa 32 153 ; line_number = 65 154 ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout 155 ; line_number = 66 156 ; pin_bindings pdip=3, soic=3, tssop=3 157 ; line_number = 67 158 ; bind_to _porta@4 159 ; line_number = 68 160 ; or_if ra4_in _trisa 16 161 ; line_number = 69 162 ; or_if ra4_nc _trisa 16 163 ; line_number = 70 164 ; or_if ra4_out _trisa 0 165 ; line_number = 71 166 ; or_if an3 _trisa 16 167 ; line_number = 72 168 ; or_if osc2 _trisa 16 169 ; line_number = 73 170 ; or_if ra4_in _ansel 0 171 ; line_number = 74 172 ; or_if ra4_out _ansel 0 173 ; line_number = 75 174 ; or_if an3 _ansel 8 175 ; line_number = 76 176 ; or_if ra4_in _adcon0 0 177 ; line_number = 77 178 ; or_if ra4_out _adcon0 0 179 ; line_number = 78 180 ; or_if an3 _adcon0 1 181 ; line_number = 79 182 ; pin ra3_in, ra3_nc, mclr, vpp 183 ; line_number = 80 184 ; pin_bindings pdip=4, soic=4, tssop=4 185 ; line_number = 81 186 ; bind_to _porta@3 187 ; line_number = 82 188 ; or_if ra3_in _trisa 8 189 ; line_number = 83 190 ; or_if ra3_nc _trisa 8 191 ; line_number = 84 192 ; pin rc5_in, rc5_nc, rc5_out, rx, dt 193 ; line_number = 85 194 ; pin_bindings pdip=5, soic=5, tssop=5 195 ; line_number = 86 196 ; bind_to _portc@5 197 ; line_number = 87 198 ; or_if rc5_in _trisc 32 199 ; line_number = 88 200 ; or_if rc5_nc _trisc 32 201 ; line_number = 89 202 ; or_if rc5_out _trisc 0 203 ; line_number = 90 204 ; or_if rx _trisc 32 205 ; line_number = 91 206 ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck 207 ; line_number = 92 208 ; pin_bindings pdip=6, soic=6, tssop=6 209 ; line_number = 93 210 ; bind_to _portc@4 211 ; line_number = 94 212 ; or_if rc4_in _trisc 16 213 ; line_number = 95 214 ; or_if rc4_nc _trisc 16 215 ; line_number = 96 216 ; or_if rc4_out _trisc 0 217 ; # The UART documentation says TX must be marked as in input: 218 ; line_number = 98 219 ; or_if tx _trisc 16 220 ; line_number = 99 221 ; pin rc3_in, rc3_nc, rc3_out, an7 222 ; line_number = 100 223 ; pin_bindings pdip=7, soic=7, tssop=7 224 ; line_number = 101 225 ; bind_to _portc@3 226 ; line_number = 102 227 ; or_if rc3_in _trisc 8 228 ; line_number = 103 229 ; or_if rc3_nc _trisc 8 230 ; line_number = 104 231 ; or_if rc3_out _trisc 0 232 ; line_number = 105 233 ; or_if an7 _trisc 8 234 ; line_number = 106 235 ; or_if rc3_in _ansel 0 236 ; line_number = 107 237 ; or_if rc3_out _ansel 0 238 ; line_number = 108 239 ; or_if an7 _ansel 128 240 ; line_number = 109 241 ; or_if rc3_in _adcon0 0 242 ; line_number = 110 243 ; or_if rc3_out _adcon0 0 244 ; line_number = 111 245 ; or_if an7 _adcon0 1 246 ; line_number = 112 247 ; pin rc2_in, rc2_nc, rc2_out, an6 248 ; line_number = 113 249 ; pin_bindings pdip=8, soic=8, tssop=8 250 ; line_number = 114 251 ; bind_to _portc@2 252 ; line_number = 115 253 ; or_if rc2_in _trisc 4 254 ; line_number = 116 255 ; or_if rc2_nc _trisc 4 256 ; line_number = 117 257 ; or_if rc2_out _trisc 0 258 ; line_number = 118 259 ; or_if an6 _trisc 4 260 ; line_number = 119 261 ; or_if rc2_in _ansel 0 262 ; line_number = 120 263 ; or_if rc2_out _ansel 0 264 ; line_number = 121 265 ; or_if an6 _ansel 64 266 ; line_number = 122 267 ; or_if rc2_in _adcon0 0 268 ; line_number = 123 269 ; or_if rc2_out _adcon0 0 270 ; line_number = 124 271 ; or_if an6 _adcon0 1 272 ; line_number = 125 273 ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus 274 ; line_number = 126 275 ; pin_bindings pdip=9, soic=9, tssop=9 276 ; line_number = 127 277 ; bind_to _portc@1 278 ; line_number = 128 279 ; or_if rc1_in _trisc 2 280 ; line_number = 129 281 ; or_if rc1_nc _trisc 2 282 ; line_number = 130 283 ; or_if rc1_out _trisc 0 284 ; line_number = 131 285 ; or_if rc1_in _cmcon0 7 286 ; line_number = 132 287 ; or_if rc1_out _cmcon0 7 288 ; line_number = 133 289 ; or_if an5 _trisc 2 290 ; line_number = 134 291 ; or_if rc1_in _ansel 0 292 ; line_number = 135 293 ; or_if rc1_out _ansel 0 294 ; line_number = 136 295 ; or_if an5 _ansel 32 296 ; line_number = 137 297 ; or_if rc1_in _adcon0 0 298 ; line_number = 138 299 ; or_if rc1_out _adcon0 0 300 ; line_number = 139 301 ; or_if an5 _adcon0 1 302 ; line_number = 140 303 ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus 304 ; line_number = 141 305 ; pin_bindings pdip=10, soic=10, tssop=10 306 ; line_number = 142 307 ; bind_to _portc@0 308 ; line_number = 143 309 ; or_if rc0_in _trisc 1 310 ; line_number = 144 311 ; or_if rc0_nc _trisc 1 312 ; line_number = 145 313 ; or_if rc0_out _trisc 0 314 ; line_number = 146 315 ; or_if rc0_in _cmcon0 7 316 ; line_number = 147 317 ; or_if rc0_out _cmcon0 7 318 ; line_number = 148 319 ; or_if an4 _trisc 1 320 ; line_number = 149 321 ; or_if rc0_in _ansel 0 322 ; line_number = 150 323 ; or_if rc0_out _ansel 0 324 ; line_number = 151 325 ; or_if an4 _ansel 16 326 ; line_number = 152 327 ; or_if rc0_in _adcon0 0 328 ; line_number = 153 329 ; or_if rc0_out _adcon0 0 330 ; line_number = 154 331 ; or_if an4 _adcon0 1 332 ; line_number = 155 333 ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int 334 ; line_number = 156 335 ; pin_bindings pdip=11, soic=11, tssop=11 336 ; line_number = 157 337 ; bind_to _porta@2 338 ; line_number = 158 339 ; or_if ra2_in _trisa 4 340 ; line_number = 159 341 ; or_if ra2_nc _trisa 4 342 ; line_number = 160 343 ; or_if ra2_out _trisa 0 344 ; line_number = 161 345 ; or_if an2 _trisa 4 346 ; line_number = 162 347 ; or_if ra2_in _ansel 0 348 ; line_number = 163 349 ; or_if ra2_out _ansel 0 350 ; line_number = 164 351 ; or_if an2 _ansel 4 352 ; line_number = 165 353 ; or_if ra2_in _adcon0 0 354 ; line_number = 166 355 ; or_if ra2_out _adcon0 0 356 ; line_number = 167 357 ; or_if an2 _adcon0 1 358 ; line_number = 168 359 ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk 360 ; line_number = 169 361 ; pin_bindings pdip=12, soic=12, tssop=12 362 ; line_number = 170 363 ; bind_to _porta@1 364 ; line_number = 171 365 ; or_if ra1_in _trisa 2 366 ; line_number = 172 367 ; or_if ra1_nc _trisa 2 368 ; line_number = 173 369 ; or_if ra1_out _trisa 0 370 ; line_number = 174 371 ; or_if ra1_in _cmcon0 7 372 ; line_number = 175 373 ; or_if ra1_out _cmcon0 7 374 ; line_number = 176 375 ; or_if an1 _trisa 2 376 ; line_number = 177 377 ; or_if vref _trisa 2 378 ; line_number = 178 379 ; or_if ra1_in _ansel 0 380 ; line_number = 179 381 ; or_if ra1_out _ansel 0 382 ; line_number = 180 383 ; or_if an1 _ansel 2 384 ; line_number = 181 385 ; or_if vref _ansel 2 386 ; line_number = 182 387 ; or_if ra1_in _adcon0 0 388 ; line_number = 183 389 ; or_if ra1_out _adcon0 0 390 ; line_number = 184 391 ; or_if an1 _adcon0 1 # Turn on _addon 392 ; line_number = 185 393 ; or_if vref _adcon0 1 # Turn on _addon 394 ; line_number = 186 395 ; or_if vref _adcon0 64 # Turn of _vcfg 396 ; line_number = 187 397 ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu 398 ; line_number = 188 399 ; pin_bindings pdip=13, soic=13, tssop=13 400 ; line_number = 189 401 ; bind_to _porta@0 402 ; line_number = 190 403 ; or_if ra0_in _trisa 1 404 ; line_number = 191 405 ; or_if ra0_nc _trisa 1 406 ; line_number = 192 407 ; or_if ra0_out _trisa 0 408 ; line_number = 193 409 ; or_if ra0_in _cmcon0 7 410 ; line_number = 194 411 ; or_if ra0_out _cmcon0 7 412 ; line_number = 195 413 ; or_if an0 _trisa 1 414 ; line_number = 196 415 ; or_if ra0_in _ansel 0 416 ; line_number = 197 417 ; or_if ra0_out _ansel 0 418 ; line_number = 198 419 ; or_if an0 _ansel 1 420 ; line_number = 199 421 ; or_if ra0_in _adcon0 0 422 ; line_number = 200 423 ; or_if ra0_out _adcon0 0 424 ; line_number = 201 425 ; or_if an0 _adcon0 1 426 ; line_number = 202 427 ; pin vss, ground 428 ; line_number = 203 429 ; pin_bindings pdip=14, soic=14, tssop=14 430 431 ; line_number = 205 432 ; library _standard entered 433 434 ; # Copyright (c) 2006 by Wayne C. Gramlich 435 ; # All rights reserved. 436 437 ; # Standard definition for uCL: 438 439 ; buffer = '_standard' 440 ; line_number = 8 441 ; constant _true = (1 = 1) 442 00000001 = _true equ 1 443 ; line_number = 9 444 ; constant _false = (0 != 0) 445 00000000 = _false equ 0 446 447 448 ; buffer = '_pic16f688' 449 ; line_number = 205 450 ; library _standard exited 451 452 453 ; # Register/bit bindings: 454 455 ; # Databank 0 (0x0 - 0x7f): 456 457 ; line_number = 216 458 ; register _indf = 459 00000000 = _indf equ 0 460 461 ; line_number = 218 462 ; register _tmr0 = 463 00000001 = _tmr0 equ 1 464 465 ; line_number = 220 466 ; register _pcl = 467 00000002 = _pcl equ 2 468 469 ; line_number = 222 470 ; register _status = 471 00000003 = _status equ 3 472 ; line_number = 223 473 ; bind _irp = _status@7 474 00000003 = _irp___byte equ _status 475 00000007 = _irp___bit equ 7 476 ; line_number = 224 477 ; bind _rp1 = _status@5 478 00000003 = _rp1___byte equ _status 479 00000005 = _rp1___bit equ 5 480 ; line_number = 225 481 ; bind _rp0 = _status@5 482 00000003 = _rp0___byte equ _status 483 00000005 = _rp0___bit equ 5 484 ; line_number = 226 485 ; bind _to = _status@4 486 00000003 = _to___byte equ _status 487 00000004 = _to___bit equ 4 488 ; line_number = 227 489 ; bind _pd = _status@3 490 00000003 = _pd___byte equ _status 491 00000003 = _pd___bit equ 3 492 ; line_number = 228 493 ; bind _z = _status@2 494 00000003 = _z___byte equ _status 495 00000002 = _z___bit equ 2 496 ; line_number = 229 497 ; bind _dc = _status@1 498 00000003 = _dc___byte equ _status 499 00000001 = _dc___bit equ 1 500 ; line_number = 230 501 ; bind _c = _status@0 502 00000003 = _c___byte equ _status 503 00000000 = _c___bit equ 0 504 505 ; line_number = 232 506 ; register _fsr = 507 00000004 = _fsr equ 4 508 509 ; line_number = 234 510 ; register _porta = 511 00000005 = _porta equ 5 512 ; line_number = 235 513 ; register _ra = 514 00000005 = _ra equ 5 515 ; line_number = 236 516 ; bind _ra5 = _porta@5 517 00000005 = _ra5___byte equ _porta 518 00000005 = _ra5___bit equ 5 519 ; line_number = 237 520 ; bind _ra4 = _porta@4 521 00000005 = _ra4___byte equ _porta 522 00000004 = _ra4___bit equ 4 523 ; line_number = 238 524 ; bind _ra3 = _porta@3 525 00000005 = _ra3___byte equ _porta 526 00000003 = _ra3___bit equ 3 527 ; line_number = 239 528 ; bind _ra2 = _porta@2 529 00000005 = _ra2___byte equ _porta 530 00000002 = _ra2___bit equ 2 531 ; line_number = 240 532 ; bind _ra1 = _porta@1 533 00000005 = _ra1___byte equ _porta 534 00000001 = _ra1___bit equ 1 535 ; line_number = 241 536 ; bind _ra0 = _porta@0 537 00000005 = _ra0___byte equ _porta 538 00000000 = _ra0___bit equ 0 539 540 ; line_number = 243 541 ; register _portc = 542 00000007 = _portc equ 7 543 ; line_number = 244 544 ; register _rc = 545 00000007 = _rc equ 7 546 ; line_number = 245 547 ; bind _rc5 = _portc@5 548 00000007 = _rc5___byte equ _portc 549 00000005 = _rc5___bit equ 5 550 ; line_number = 246 551 ; bind _rc4 = _portc@4 552 00000007 = _rc4___byte equ _portc 553 00000004 = _rc4___bit equ 4 554 ; line_number = 247 555 ; bind _rc3 = _portc@3 556 00000007 = _rc3___byte equ _portc 557 00000003 = _rc3___bit equ 3 558 ; line_number = 248 559 ; bind _rc2 = _portc@2 560 00000007 = _rc2___byte equ _portc 561 00000002 = _rc2___bit equ 2 562 ; line_number = 249 563 ; bind _rc1 = _portc@1 564 00000007 = _rc1___byte equ _portc 565 00000001 = _rc1___bit equ 1 566 ; line_number = 250 567 ; bind _rc0 = _portc@0 568 00000007 = _rc0___byte equ _portc 569 00000000 = _rc0___bit equ 0 570 571 ; line_number = 252 572 ; register _pclath = 573 0000000a = _pclath equ 10 574 575 ; line_number = 254 576 ; register _intcon = 577 0000000b = _intcon equ 11 578 ; line_number = 255 579 ; bind _gie = _intcon@7 580 0000000b = _gie___byte equ _intcon 581 00000007 = _gie___bit equ 7 582 ; line_number = 256 583 ; bind _peie = _intcon@6 584 0000000b = _peie___byte equ _intcon 585 00000006 = _peie___bit equ 6 586 ; line_number = 257 587 ; bind _t0ie = _intcon@5 588 0000000b = _t0ie___byte equ _intcon 589 00000005 = _t0ie___bit equ 5 590 ; line_number = 258 591 ; bind _inte = _intcon@4 592 0000000b = _inte___byte equ _intcon 593 00000004 = _inte___bit equ 4 594 ; line_number = 259 595 ; bind _raie = _intcon@3 596 0000000b = _raie___byte equ _intcon 597 00000003 = _raie___bit equ 3 598 ; line_number = 260 599 ; bind _t0if = _intcon@2 600 0000000b = _t0if___byte equ _intcon 601 00000002 = _t0if___bit equ 2 602 ; line_number = 261 603 ; bind _intf = _intcon@1 604 0000000b = _intf___byte equ _intcon 605 00000001 = _intf___bit equ 1 606 ; line_number = 262 607 ; bind _raif = _intcon@0 608 0000000b = _raif___byte equ _intcon 609 00000000 = _raif___bit equ 0 610 611 ; line_number = 264 612 ; register _pir1 = 613 0000000c = _pir1 equ 12 614 ; line_number = 265 615 ; bind _eeif = _pir1@7 616 0000000c = _eeif___byte equ _pir1 617 00000007 = _eeif___bit equ 7 618 ; line_number = 266 619 ; bind _adif = _pir1@6 620 0000000c = _adif___byte equ _pir1 621 00000006 = _adif___bit equ 6 622 ; line_number = 267 623 ; bind _rcif = _pir1@5 624 0000000c = _rcif___byte equ _pir1 625 00000005 = _rcif___bit equ 5 626 ; line_number = 268 627 ; bind _c2if = _pir1@4 628 0000000c = _c2if___byte equ _pir1 629 00000004 = _c2if___bit equ 4 630 ; line_number = 269 631 ; bind _c1if = _pir1@3 632 0000000c = _c1if___byte equ _pir1 633 00000003 = _c1if___bit equ 3 634 ; line_number = 270 635 ; bind _osfif = _pir1@2 636 0000000c = _osfif___byte equ _pir1 637 00000002 = _osfif___bit equ 2 638 ; line_number = 271 639 ; bind _txif = _pir1@1 640 0000000c = _txif___byte equ _pir1 641 00000001 = _txif___bit equ 1 642 ; line_number = 272 643 ; bind _tmr1if = _pir1@0 644 0000000c = _tmr1if___byte equ _pir1 645 00000000 = _tmr1if___bit equ 0 646 647 ; line_number = 274 648 ; register _tmr1l = 649 0000000e = _tmr1l equ 14 650 651 ; line_number = 276 652 ; register _tmr1h = 653 0000000f = _tmr1h equ 15 654 655 ; line_number = 278 656 ; register _t1con = 657 00000010 = _t1con equ 16 658 ; line_number = 279 659 ; bind t1ginv = _t1con@7 660 00000010 = t1ginv___byte equ _t1con 661 00000007 = t1ginv___bit equ 7 662 ; line_number = 280 663 ; bind _tmr1ge = _t1con@6 664 00000010 = _tmr1ge___byte equ _t1con 665 00000006 = _tmr1ge___bit equ 6 666 ; line_number = 281 667 ; bind _t1ckps1 = _t1con@5 668 00000010 = _t1ckps1___byte equ _t1con 669 00000005 = _t1ckps1___bit equ 5 670 ; line_number = 282 671 ; bind _t1ckps0 = _t1con@4 672 00000010 = _t1ckps0___byte equ _t1con 673 00000004 = _t1ckps0___bit equ 4 674 ; line_number = 283 675 ; bind _t1oscen = _t1con@3 676 00000010 = _t1oscen___byte equ _t1con 677 00000003 = _t1oscen___bit equ 3 678 ; line_number = 284 679 ; bind _t1sync = _t1con@2 680 00000010 = _t1sync___byte equ _t1con 681 00000002 = _t1sync___bit equ 2 682 ; line_number = 285 683 ; bind _tmr1cs = _t1con@1 684 00000010 = _tmr1cs___byte equ _t1con 685 00000001 = _tmr1cs___bit equ 1 686 ; line_number = 286 687 ; bind _tmr1on = _t1con@0 688 00000010 = _tmr1on___byte equ _t1con 689 00000000 = _tmr1on___bit equ 0 690 691 ; line_number = 288 692 ; register _baudctl = 693 00000011 = _baudctl equ 17 694 ; line_number = 289 695 ; bind _abdovf = _baudctl@7 696 00000011 = _abdovf___byte equ _baudctl 697 00000007 = _abdovf___bit equ 7 698 ; line_number = 290 699 ; bind _rcidl = _baudctl@6 700 00000011 = _rcidl___byte equ _baudctl 701 00000006 = _rcidl___bit equ 6 702 ; line_number = 291 703 ; bind _sckp = _baudctl@4 704 00000011 = _sckp___byte equ _baudctl 705 00000004 = _sckp___bit equ 4 706 ; line_number = 292 707 ; bind _brg16 = _baudctl@3 708 00000011 = _brg16___byte equ _baudctl 709 00000003 = _brg16___bit equ 3 710 ; line_number = 293 711 ; bind _wue = _baudctl@1 712 00000011 = _wue___byte equ _baudctl 713 00000001 = _wue___bit equ 1 714 ; line_number = 294 715 ; bind _abden = _baudctl@0 716 00000011 = _abden___byte equ _baudctl 717 00000000 = _abden___bit equ 0 718 719 ; line_number = 296 720 ; register _spbrgh = 721 00000012 = _spbrgh equ 18 722 723 ; line_number = 298 724 ; register _spbrg = 725 00000013 = _spbrg equ 19 726 727 ; line_number = 300 728 ; register _rcreg = 729 00000014 = _rcreg equ 20 730 731 ; line_number = 302 732 ; register _txreg = 733 00000015 = _txreg equ 21 734 735 ; line_number = 304 736 ; register _txsta = 737 00000016 = _txsta equ 22 738 ; line_number = 305 739 ; bind _csrc = _txsta@7 740 00000016 = _csrc___byte equ _txsta 741 00000007 = _csrc___bit equ 7 742 ; line_number = 306 743 ; bind _tx9 = _txsta@6 744 00000016 = _tx9___byte equ _txsta 745 00000006 = _tx9___bit equ 6 746 ; line_number = 307 747 ; bind _txen = _txsta@5 748 00000016 = _txen___byte equ _txsta 749 00000005 = _txen___bit equ 5 750 ; line_number = 308 751 ; bind _sync = _txsta@4 752 00000016 = _sync___byte equ _txsta 753 00000004 = _sync___bit equ 4 754 ; line_number = 309 755 ; bind _sendb = _txsta@3 756 00000016 = _sendb___byte equ _txsta 757 00000003 = _sendb___bit equ 3 758 ; line_number = 310 759 ; bind _brgh = _txsta@2 760 00000016 = _brgh___byte equ _txsta 761 00000002 = _brgh___bit equ 2 762 ; line_number = 311 763 ; bind _trmt = _txsta@1 764 00000016 = _trmt___byte equ _txsta 765 00000001 = _trmt___bit equ 1 766 ; line_number = 312 767 ; bind _tx9d = _txsta@0 768 00000016 = _tx9d___byte equ _txsta 769 00000000 = _tx9d___bit equ 0 770 771 ; line_number = 314 772 ; register _rcsta = 773 00000017 = _rcsta equ 23 774 ; line_number = 315 775 ; bind _spen = _rcsta@7 776 00000017 = _spen___byte equ _rcsta 777 00000007 = _spen___bit equ 7 778 ; line_number = 316 779 ; bind _rx9 = _rcsta@6 780 00000017 = _rx9___byte equ _rcsta 781 00000006 = _rx9___bit equ 6 782 ; line_number = 317 783 ; bind _sren = _rcsta@5 784 00000017 = _sren___byte equ _rcsta 785 00000005 = _sren___bit equ 5 786 ; line_number = 318 787 ; bind _cren = _rcsta@4 788 00000017 = _cren___byte equ _rcsta 789 00000004 = _cren___bit equ 4 790 ; line_number = 319 791 ; bind _adden = _rcsta@3 792 00000017 = _adden___byte equ _rcsta 793 00000003 = _adden___bit equ 3 794 ; line_number = 320 795 ; bind _ferr = _rcsta@2 796 00000017 = _ferr___byte equ _rcsta 797 00000002 = _ferr___bit equ 2 798 ; line_number = 321 799 ; bind _oerr = _rcsta@1 800 00000017 = _oerr___byte equ _rcsta 801 00000001 = _oerr___bit equ 1 802 ; line_number = 322 803 ; bind _rx9d = _rcsta@0 804 00000017 = _rx9d___byte equ _rcsta 805 00000000 = _rx9d___bit equ 0 806 807 ; line_number = 324 808 ; register _wdtcon = 809 00000018 = _wdtcon equ 24 810 ; line_number = 325 811 ; bind _wdtps3 = _wdtcon@4 812 00000018 = _wdtps3___byte equ _wdtcon 813 00000004 = _wdtps3___bit equ 4 814 ; line_number = 326 815 ; bind _wdtps2 = _wdtcon@3 816 00000018 = _wdtps2___byte equ _wdtcon 817 00000003 = _wdtps2___bit equ 3 818 ; line_number = 327 819 ; bind _wdtps1 = _wdtcon@2 820 00000018 = _wdtps1___byte equ _wdtcon 821 00000002 = _wdtps1___bit equ 2 822 ; line_number = 328 823 ; bind _wdtps0 = _wdtcon@1 824 00000018 = _wdtps0___byte equ _wdtcon 825 00000001 = _wdtps0___bit equ 1 826 ; line_number = 329 827 ; bind _swdten = _wdtcon@0 828 00000018 = _swdten___byte equ _wdtcon 829 00000000 = _swdten___bit equ 0 830 831 ; line_number = 331 832 ; register _cmcon0 = 833 00000019 = _cmcon0 equ 25 834 ; line_number = 332 835 ; bind _c1out = _cmcon0@7 836 00000019 = _c1out___byte equ _cmcon0 837 00000007 = _c1out___bit equ 7 838 ; line_number = 333 839 ; bind _c2out = _cmcon0@6 840 00000019 = _c2out___byte equ _cmcon0 841 00000006 = _c2out___bit equ 6 842 ; line_number = 334 843 ; bind _c1inv = _cmcon0@5 844 00000019 = _c1inv___byte equ _cmcon0 845 00000005 = _c1inv___bit equ 5 846 ; line_number = 335 847 ; bind _c2inv = _cmcon0@4 848 00000019 = _c2inv___byte equ _cmcon0 849 00000004 = _c2inv___bit equ 4 850 ; line_number = 336 851 ; bind _cis = _cmcon0@3 852 00000019 = _cis___byte equ _cmcon0 853 00000003 = _cis___bit equ 3 854 ; line_number = 337 855 ; bind _cm2 = _cmcon0@2 856 00000019 = _cm2___byte equ _cmcon0 857 00000002 = _cm2___bit equ 2 858 ; line_number = 338 859 ; bind _cm1 = _cmcon0@1 860 00000019 = _cm1___byte equ _cmcon0 861 00000001 = _cm1___bit equ 1 862 ; line_number = 339 863 ; bind _cm0 = _cmcon0@0 864 00000019 = _cm0___byte equ _cmcon0 865 00000000 = _cm0___bit equ 0 866 867 ; line_number = 341 868 ; register _cmcon1 = 869 0000001a = _cmcon1 equ 26 870 ; line_number = 342 871 ; bind _t1gss = _cmcon1@0 872 0000001a = _t1gss___byte equ _cmcon1 873 00000000 = _t1gss___bit equ 0 874 ; line_number = 343 875 ; bind _c2sync = _cmcon1@1 876 0000001a = _c2sync___byte equ _cmcon1 877 00000001 = _c2sync___bit equ 1 878 879 ; line_number = 345 880 ; register _adresh = 881 0000001e = _adresh equ 30 882 883 ; line_number = 347 884 ; register _adcon0 = 885 0000001f = _adcon0 equ 31 886 ; line_number = 348 887 ; bind _adfm = _adcon0@7 888 0000001f = _adfm___byte equ _adcon0 889 00000007 = _adfm___bit equ 7 890 ; line_number = 349 891 ; bind _vcfg = _adcon0@6 892 0000001f = _vcfg___byte equ _adcon0 893 00000006 = _vcfg___bit equ 6 894 ; line_number = 350 895 ; bind _chs2 = _adcon0@4 896 0000001f = _chs2___byte equ _adcon0 897 00000004 = _chs2___bit equ 4 898 ; line_number = 351 899 ; bind _chs1 = _adcon0@3 900 0000001f = _chs1___byte equ _adcon0 901 00000003 = _chs1___bit equ 3 902 ; line_number = 352 903 ; bind _chs0 = _adcon0@2 904 0000001f = _chs0___byte equ _adcon0 905 00000002 = _chs0___bit equ 2 906 ; line_number = 353 907 ; bind _go = _adcon0@1 908 0000001f = _go___byte equ _adcon0 909 00000001 = _go___bit equ 1 910 ; line_number = 354 911 ; bind _adon = _adcon0@0 912 0000001f = _adon___byte equ _adcon0 913 00000000 = _adon___bit equ 0 914 915 ; # Data bank 1 (0x80-0xff): 916 917 ; line_number = 358 918 ; register _option_reg = 919 00000081 = _option_reg equ 129 920 ; line_number = 359 921 ; bind _rapu = _option_reg@7 922 00000081 = _rapu___byte equ _option_reg 923 00000007 = _rapu___bit equ 7 924 ; line_number = 360 925 ; bind _intedg = _option_reg@6 926 00000081 = _intedg___byte equ _option_reg 927 00000006 = _intedg___bit equ 6 928 ; line_number = 361 929 ; bind _t0cs = _option_reg@5 930 00000081 = _t0cs___byte equ _option_reg 931 00000005 = _t0cs___bit equ 5 932 ; line_number = 362 933 ; bind _t0se = _option_reg@4 934 00000081 = _t0se___byte equ _option_reg 935 00000004 = _t0se___bit equ 4 936 ; line_number = 363 937 ; bind _psa = _option_reg@3 938 00000081 = _psa___byte equ _option_reg 939 00000003 = _psa___bit equ 3 940 ; line_number = 364 941 ; bind _ps2 = _option_reg@2 942 00000081 = _ps2___byte equ _option_reg 943 00000002 = _ps2___bit equ 2 944 ; line_number = 365 945 ; bind _ps1 = _option_reg@1 946 00000081 = _ps1___byte equ _option_reg 947 00000001 = _ps1___bit equ 1 948 ; line_number = 366 949 ; bind _ps0 = _option_reg@0 950 00000081 = _ps0___byte equ _option_reg 951 00000000 = _ps0___bit equ 0 952 953 ; line_number = 368 954 ; register _trisa = 955 00000085 = _trisa equ 133 956 ; line_number = 369 957 ; bind _trisa5 = _trisa@5 958 00000085 = _trisa5___byte equ _trisa 959 00000005 = _trisa5___bit equ 5 960 ; line_number = 370 961 ; bind _trisa4 = _trisa@4 962 00000085 = _trisa4___byte equ _trisa 963 00000004 = _trisa4___bit equ 4 964 ; line_number = 371 965 ; bind _trisa3 = _trisa@3 966 00000085 = _trisa3___byte equ _trisa 967 00000003 = _trisa3___bit equ 3 968 ; line_number = 372 969 ; bind _trisa2 = _trisa@2 970 00000085 = _trisa2___byte equ _trisa 971 00000002 = _trisa2___bit equ 2 972 ; line_number = 373 973 ; bind _trisa1 = _trisa@1 974 00000085 = _trisa1___byte equ _trisa 975 00000001 = _trisa1___bit equ 1 976 ; line_number = 374 977 ; bind _trisa0 = _trisa@0 978 00000085 = _trisa0___byte equ _trisa 979 00000000 = _trisa0___bit equ 0 980 981 ; line_number = 376 982 ; register _trisc = 983 00000087 = _trisc equ 135 984 ; line_number = 377 985 ; bind _trisc5 = _trisc@5 986 00000087 = _trisc5___byte equ _trisc 987 00000005 = _trisc5___bit equ 5 988 ; line_number = 378 989 ; bind _trisc4 = _trisc@4 990 00000087 = _trisc4___byte equ _trisc 991 00000004 = _trisc4___bit equ 4 992 ; line_number = 379 993 ; bind _trisc3 = _trisc@3 994 00000087 = _trisc3___byte equ _trisc 995 00000003 = _trisc3___bit equ 3 996 ; line_number = 380 997 ; bind _trisc2 = _trisc@2 998 00000087 = _trisc2___byte equ _trisc 999 00000002 = _trisc2___bit equ 2 1000 ; line_number = 381 1001 ; bind _trisc1 = _trisc@1 1002 00000087 = _trisc1___byte equ _trisc 1003 00000001 = _trisc1___bit equ 1 1004 ; line_number = 382 1005 ; bind _trisc0 = _trisc@0 1006 00000087 = _trisc0___byte equ _trisc 1007 00000000 = _trisc0___bit equ 0 1008 1009 ; line_number = 384 1010 ; register _pie1 = 1011 0000008c = _pie1 equ 140 1012 ; line_number = 385 1013 ; bind _eeie = _pie1@7 1014 0000008c = _eeie___byte equ _pie1 1015 00000007 = _eeie___bit equ 7 1016 ; line_number = 386 1017 ; bind _adie = _pie1@6 1018 0000008c = _adie___byte equ _pie1 1019 00000006 = _adie___bit equ 6 1020 ; line_number = 387 1021 ; bind _rcie = _pie1@5 1022 0000008c = _rcie___byte equ _pie1 1023 00000005 = _rcie___bit equ 5 1024 ; line_number = 388 1025 ; bind _c2ie = _pie1@4 1026 0000008c = _c2ie___byte equ _pie1 1027 00000004 = _c2ie___bit equ 4 1028 ; line_number = 389 1029 ; bind _c1ie = _pie1@3 1030 0000008c = _c1ie___byte equ _pie1 1031 00000003 = _c1ie___bit equ 3 1032 ; line_number = 390 1033 ; bind _osfie = _pie1@2 1034 0000008c = _osfie___byte equ _pie1 1035 00000002 = _osfie___bit equ 2 1036 ; line_number = 391 1037 ; bind _txie = _pie1@1 1038 0000008c = _txie___byte equ _pie1 1039 00000001 = _txie___bit equ 1 1040 ; line_number = 392 1041 ; bind _tmr1ie = _pie1@0 1042 0000008c = _tmr1ie___byte equ _pie1 1043 00000000 = _tmr1ie___bit equ 0 1044 1045 ; line_number = 394 1046 ; register _pcon = 1047 0000008e = _pcon equ 142 1048 ; line_number = 395 1049 ; bind _ulpwue = _pcon@5 1050 0000008e = _ulpwue___byte equ _pcon 1051 00000005 = _ulpwue___bit equ 5 1052 ; line_number = 396 1053 ; bind _sboden = _pcon@4 1054 0000008e = _sboden___byte equ _pcon 1055 00000004 = _sboden___bit equ 4 1056 ; line_number = 397 1057 ; bind _por = _pcon@1 1058 0000008e = _por___byte equ _pcon 1059 00000001 = _por___bit equ 1 1060 ; line_number = 398 1061 ; bind _bod = _pcon@0 1062 0000008e = _bod___byte equ _pcon 1063 00000000 = _bod___bit equ 0 1064 1065 ; line_number = 400 1066 ; register _osccon = 1067 0000008f = _osccon equ 143 1068 ; line_number = 401 1069 ; bind _ircf2 = _osccon@6 1070 0000008f = _ircf2___byte equ _osccon 1071 00000006 = _ircf2___bit equ 6 1072 ; line_number = 402 1073 ; bind _ircf1 = _osccon@5 1074 0000008f = _ircf1___byte equ _osccon 1075 00000005 = _ircf1___bit equ 5 1076 ; line_number = 403 1077 ; bind _ircf0 = _osccon@4 1078 0000008f = _ircf0___byte equ _osccon 1079 00000004 = _ircf0___bit equ 4 1080 ; line_number = 404 1081 ; bind _osts = _osccon@3 1082 0000008f = _osts___byte equ _osccon 1083 00000003 = _osts___bit equ 3 1084 ; line_number = 405 1085 ; bind _hts = _osccon@2 1086 0000008f = _hts___byte equ _osccon 1087 00000002 = _hts___bit equ 2 1088 ; line_number = 406 1089 ; bind _lts = _osccon@3 1090 0000008f = _lts___byte equ _osccon 1091 00000003 = _lts___bit equ 3 1092 ; line_number = 407 1093 ; bind _scs = _osccon@2 1094 0000008f = _scs___byte equ _osccon 1095 00000002 = _scs___bit equ 2 1096 1097 ; line_number = 409 1098 ; register _osctune = 1099 00000090 = _osctune equ 144 1100 ; line_number = 410 1101 ; bind _tun4 = _osctune@4 1102 00000090 = _tun4___byte equ _osctune 1103 00000004 = _tun4___bit equ 4 1104 ; line_number = 411 1105 ; bind _tun3 = _osctune@3 1106 00000090 = _tun3___byte equ _osctune 1107 00000003 = _tun3___bit equ 3 1108 ; line_number = 412 1109 ; bind _tun2 = _osctune@2 1110 00000090 = _tun2___byte equ _osctune 1111 00000002 = _tun2___bit equ 2 1112 ; line_number = 413 1113 ; bind _tun1 = _osctune@1 1114 00000090 = _tun1___byte equ _osctune 1115 00000001 = _tun1___bit equ 1 1116 ; line_number = 414 1117 ; bind _tun0 = _osctune@0 1118 00000090 = _tun0___byte equ _osctune 1119 00000000 = _tun0___bit equ 0 1120 ; line_number = 415 1121 ; constant _osccal_lsb = 1 1122 00000001 = _osccal_lsb equ 1 1123 1124 ; line_number = 417 1125 ; register _ansel = 1126 00000091 = _ansel equ 145 1127 ; line_number = 418 1128 ; bind _ans7 = _ansel@7 1129 00000091 = _ans7___byte equ _ansel 1130 00000007 = _ans7___bit equ 7 1131 ; line_number = 419 1132 ; bind _ans6 = _ansel@6 1133 00000091 = _ans6___byte equ _ansel 1134 00000006 = _ans6___bit equ 6 1135 ; line_number = 420 1136 ; bind _ans5 = _ansel@5 1137 00000091 = _ans5___byte equ _ansel 1138 00000005 = _ans5___bit equ 5 1139 ; line_number = 421 1140 ; bind _ans4 = _ansel@4 1141 00000091 = _ans4___byte equ _ansel 1142 00000004 = _ans4___bit equ 4 1143 ; line_number = 422 1144 ; bind _ans3 = _ansel@3 1145 00000091 = _ans3___byte equ _ansel 1146 00000003 = _ans3___bit equ 3 1147 ; line_number = 423 1148 ; bind _ans2 = _ansel@2 1149 00000091 = _ans2___byte equ _ansel 1150 00000002 = _ans2___bit equ 2 1151 ; line_number = 424 1152 ; bind _ans1 = _ansel@1 1153 00000091 = _ans1___byte equ _ansel 1154 00000001 = _ans1___bit equ 1 1155 ; line_number = 425 1156 ; bind _ans0 = _ansel@0 1157 00000091 = _ans0___byte equ _ansel 1158 00000000 = _ans0___bit equ 0 1159 1160 ; line_number = 427 1161 ; register _wpua = 1162 00000095 = _wpua equ 149 1163 ; line_number = 428 1164 ; bind _wpua5 = _wpua@5 1165 00000095 = _wpua5___byte equ _wpua 1166 00000005 = _wpua5___bit equ 5 1167 ; line_number = 429 1168 ; bind _wpua4 = _wpua@4 1169 00000095 = _wpua4___byte equ _wpua 1170 00000004 = _wpua4___bit equ 4 1171 ; line_number = 430 1172 ; bind _wpua2 = _wpua@2 1173 00000095 = _wpua2___byte equ _wpua 1174 00000002 = _wpua2___bit equ 2 1175 ; line_number = 431 1176 ; bind _wpua1 = _wpua@1 1177 00000095 = _wpua1___byte equ _wpua 1178 00000001 = _wpua1___bit equ 1 1179 ; line_number = 432 1180 ; bind _wpua0 = _wpua@0 1181 00000095 = _wpua0___byte equ _wpua 1182 00000000 = _wpua0___bit equ 0 1183 1184 ; line_number = 434 1185 ; register _ioca = 1186 00000096 = _ioca equ 150 1187 ; line_number = 435 1188 ; bind _ioca5 = _ioca@5 1189 00000096 = _ioca5___byte equ _ioca 1190 00000005 = _ioca5___bit equ 5 1191 ; line_number = 436 1192 ; bind _ioca4 = _ioca@4 1193 00000096 = _ioca4___byte equ _ioca 1194 00000004 = _ioca4___bit equ 4 1195 ; line_number = 437 1196 ; bind _ioca3 = _ioca@3 1197 00000096 = _ioca3___byte equ _ioca 1198 00000003 = _ioca3___bit equ 3 1199 ; line_number = 438 1200 ; bind _ioca2 = _ioca@2 1201 00000096 = _ioca2___byte equ _ioca 1202 00000002 = _ioca2___bit equ 2 1203 ; line_number = 439 1204 ; bind _ioca1 = _ioca@1 1205 00000096 = _ioca1___byte equ _ioca 1206 00000001 = _ioca1___bit equ 1 1207 ; line_number = 440 1208 ; bind _ioca0 = _ioca@0 1209 00000096 = _ioca0___byte equ _ioca 1210 00000000 = _ioca0___bit equ 0 1211 1212 ; line_number = 442 1213 ; register _eedath = 1214 00000097 = _eedath equ 151 1215 1216 ; line_number = 444 1217 ; register _eeadrh = 1218 00000098 = _eeadrh equ 152 1219 1220 ; line_number = 446 1221 ; register _vrcon = 1222 00000099 = _vrcon equ 153 1223 ; line_number = 447 1224 ; bind _vren = _vrcon@7 1225 00000099 = _vren___byte equ _vrcon 1226 00000007 = _vren___bit equ 7 1227 ; line_number = 448 1228 ; bind _vrr = _vrcon@5 1229 00000099 = _vrr___byte equ _vrcon 1230 00000005 = _vrr___bit equ 5 1231 ; line_number = 449 1232 ; bind _vr3 = _vrcon@3 1233 00000099 = _vr3___byte equ _vrcon 1234 00000003 = _vr3___bit equ 3 1235 ; line_number = 450 1236 ; bind _vr2 = _vrcon@2 1237 00000099 = _vr2___byte equ _vrcon 1238 00000002 = _vr2___bit equ 2 1239 ; line_number = 451 1240 ; bind _vr1 = _vrcon@1 1241 00000099 = _vr1___byte equ _vrcon 1242 00000001 = _vr1___bit equ 1 1243 ; line_number = 452 1244 ; bind _vr0 = _vrcon@0 1245 00000099 = _vr0___byte equ _vrcon 1246 00000000 = _vr0___bit equ 0 1247 1248 ; line_number = 454 1249 ; register _eedat = 1250 0000009a = _eedat equ 154 1251 ; line_number = 455 1252 ; bind _eedat7 = _eedat@7 1253 0000009a = _eedat7___byte equ _eedat 1254 00000007 = _eedat7___bit equ 7 1255 ; line_number = 456 1256 ; bind _eedat6 = _eedat@6 1257 0000009a = _eedat6___byte equ _eedat 1258 00000006 = _eedat6___bit equ 6 1259 ; line_number = 457 1260 ; bind _eedat5 = _eedat@5 1261 0000009a = _eedat5___byte equ _eedat 1262 00000005 = _eedat5___bit equ 5 1263 ; line_number = 458 1264 ; bind _eedat4 = _eedat@4 1265 0000009a = _eedat4___byte equ _eedat 1266 00000004 = _eedat4___bit equ 4 1267 ; line_number = 459 1268 ; bind _eedat3 = _eedat@3 1269 0000009a = _eedat3___byte equ _eedat 1270 00000003 = _eedat3___bit equ 3 1271 ; line_number = 460 1272 ; bind _eedat2 = _eedat@2 1273 0000009a = _eedat2___byte equ _eedat 1274 00000002 = _eedat2___bit equ 2 1275 ; line_number = 461 1276 ; bind _eedat1 = _eedat@1 1277 0000009a = _eedat1___byte equ _eedat 1278 00000001 = _eedat1___bit equ 1 1279 ; line_number = 462 1280 ; bind _eedat0 = _eedat@0 1281 0000009a = _eedat0___byte equ _eedat 1282 00000000 = _eedat0___bit equ 0 1283 1284 ; line_number = 464 1285 ; register _eeadr = 1286 0000009b = _eeadr equ 155 1287 ; line_number = 465 1288 ; bind _eeadr7 = _eeadr@7 1289 0000009b = _eeadr7___byte equ _eeadr 1290 00000007 = _eeadr7___bit equ 7 1291 ; line_number = 466 1292 ; bind _eeadr6 = _eeadr@6 1293 0000009b = _eeadr6___byte equ _eeadr 1294 00000006 = _eeadr6___bit equ 6 1295 ; line_number = 467 1296 ; bind _eeadr5 = _eeadr@5 1297 0000009b = _eeadr5___byte equ _eeadr 1298 00000005 = _eeadr5___bit equ 5 1299 ; line_number = 468 1300 ; bind _eeadr4 = _eeadr@4 1301 0000009b = _eeadr4___byte equ _eeadr 1302 00000004 = _eeadr4___bit equ 4 1303 ; line_number = 469 1304 ; bind _eeadr3 = _eeadr@3 1305 0000009b = _eeadr3___byte equ _eeadr 1306 00000003 = _eeadr3___bit equ 3 1307 ; line_number = 470 1308 ; bind _eeadr2 = _eeadr@2 1309 0000009b = _eeadr2___byte equ _eeadr 1310 00000002 = _eeadr2___bit equ 2 1311 ; line_number = 471 1312 ; bind _eeadr1 = _eeadr@1 1313 0000009b = _eeadr1___byte equ _eeadr 1314 00000001 = _eeadr1___bit equ 1 1315 ; line_number = 472 1316 ; bind _eeadr0 = _eeadr@0 1317 0000009b = _eeadr0___byte equ _eeadr 1318 00000000 = _eeadr0___bit equ 0 1319 1320 ; line_number = 474 1321 ; register _eecon1 = 1322 0000009c = _eecon1 equ 156 1323 ; line_number = 475 1324 ; bind _eepgd = _eecon1@7 1325 0000009c = _eepgd___byte equ _eecon1 1326 00000007 = _eepgd___bit equ 7 1327 ; line_number = 476 1328 ; bind _wrerr = _eecon1@3 1329 0000009c = _wrerr___byte equ _eecon1 1330 00000003 = _wrerr___bit equ 3 1331 ; line_number = 477 1332 ; bind _wren = _eecon1@2 1333 0000009c = _wren___byte equ _eecon1 1334 00000002 = _wren___bit equ 2 1335 ; line_number = 478 1336 ; bind _wr = _eecon1@1 1337 0000009c = _wr___byte equ _eecon1 1338 00000001 = _wr___bit equ 1 1339 ; line_number = 479 1340 ; bind _rd = _eecon1@0 1341 0000009c = _rd___byte equ _eecon1 1342 00000000 = _rd___bit equ 0 1343 1344 ; line_number = 481 1345 ; register _eecon2 = 1346 0000009d = _eecon2 equ 157 1347 1348 ; line_number = 483 1349 ; register _adresl = 1350 0000009e = _adresl equ 158 1351 1352 ; line_number = 485 1353 ; register _adcon1 = 1354 0000009f = _adcon1 equ 159 1355 ; line_number = 486 1356 ; bind _adcs2 = _adcon1@6 1357 0000009f = _adcs2___byte equ _adcon1 1358 00000006 = _adcs2___bit equ 6 1359 ; line_number = 487 1360 ; bind _adcs1 = _adcon1@5 1361 0000009f = _adcs1___byte equ _adcon1 1362 00000005 = _adcs1___bit equ 5 1363 ; line_number = 488 1364 ; bind _adcs0 = _adcon1@4 1365 0000009f = _adcs0___byte equ _adcon1 1366 00000004 = _adcs0___bit equ 4 1367 1368 ; # Data Bank 2 (0x100 - 0x17f): 1369 1370 ; buffer = 'host' 1371 ; line_number = 6 1372 ; library _pic16f688 exited 1373 ; line_number = 7 1374 ; library clock20mhz entered 1375 ; # Copyright (c) 2004 by Wayne C. Gramlich 1376 ; # All rights reserved. 1377 1378 ; # This library defines the contstants {clock_rate}, {instruction_rate}, 1379 ; # and {clocks_per_instruction}. 1380 1381 ; # Define processor constants: 1382 ; buffer = 'clock20mhz' 1383 ; line_number = 9 1384 ; constant clock_rate = 20000000 1385 01312d00 = clock_rate equ 20000000 1386 ; line_number = 10 1387 ; constant clocks_per_instruction = 4 1388 00000004 = clocks_per_instruction equ 4 1389 ; line_number = 11 1390 ; constant instruction_rate = clock_rate / clocks_per_instruction 1391 004c4b40 = instruction_rate equ 5000000 1392 1393 1394 ; buffer = 'host' 1395 ; line_number = 7 1396 ; library clock20mhz exited 1397 ; line_number = 8 1398 ; library _uart entered 1399 ; # Copyright (c) 2004 by Wayne C. Gramlich. 1400 ; # All rights reserved. 1401 1402 ; # This library contains some procedures for accessing the UART. 1403 1404 ; Delaying code generation for procedure _uart_byte_safe_get 1405 ; Delaying code generation for procedure _uart_byte_get 1406 ; Delaying code generation for procedure _uart_hex_put 1407 ; Delaying code generation for procedure _uart_nibble_put 1408 ; Delaying code generation for procedure _uart_space_put 1409 ; Delaying code generation for procedure _uart_crlf_put 1410 ; Delaying code generation for procedure _uart_byte_put 1411 1412 ; line_number = 8 1413 ; library _uart exited 1414 ; line_number = 9 1415 ; constant _eusart_clock = clock_rate 1416 01312d00 = _eusart_clock equ 20000000 1417 ; line_number = 10 1418 ; constant _eusart_factor = 4 1419 00000004 = _eusart_factor equ 4 1420 ; line_number = 11 1421 ; library _eusart entered 1422 1423 ; # Copyright (c) 2005 by Wayne C. Gramlich 1424 ; # All rights reserved. 1425 1426 ; # This library contains a bunch of definitions for the Enhanced Universal 1427 ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available 1428 ; # on many of the PIC microcontrollers. 1429 1430 ; # In order to use this module you have to get two constants defined 1431 ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}. 1432 ; # {_eusart_clock} should be set to the frequency oscillator for the chip. 1433 ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether 1434 ; # the {_brg16} and {_brgh} bits are set. Use the table below to select: 1435 ; # 1436 ; # _{brg16} {_brgh} _{eusart_factor} 1437 ; # 0 0 64 1438 ; # 0 1 16 1439 ; # 1 0 16 1440 ; # 1 1 4 1441 1442 ; # 2400 baud: 1443 ; buffer = '_eusart' 1444 ; line_number = 23 1445 ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1 1446 00000822 = _eusart_2400 equ 2082 1447 ; line_number = 24 1448 ; constant _eusart_2400_low = _eusart_2400 & 0xff 1449 00000022 = _eusart_2400_low equ 34 1450 ; line_number = 25 1451 ; constant _eusart_2400_high = _eusart_2400 >> 8 1452 00000008 = _eusart_2400_high equ 8 1453 ; line_number = 26 1454 ; constant _eusart_2400_index = 0 1455 00000000 = _eusart_2400_index equ 0 1456 ; # 4800 baud: 1457 ; line_number = 28 1458 ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1 1459 00000410 = _eusart_4800 equ 1040 1460 ; line_number = 29 1461 ; constant _eusart_4800_low = _eusart_4800 & 0xff 1462 00000010 = _eusart_4800_low equ 16 1463 ; line_number = 30 1464 ; constant _eusart_4800_high = _eusart_4800 >> 8 1465 00000004 = _eusart_4800_high equ 4 1466 ; line_number = 31 1467 ; constant _eusart_4800_index = 1 1468 00000001 = _eusart_4800_index equ 1 1469 ; # 9600 baud: 1470 ; line_number = 33 1471 ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1 1472 00000207 = _eusart_9600 equ 519 1473 ; line_number = 34 1474 ; constant _eusart_9600_low = _eusart_9600 & 0xff 1475 00000007 = _eusart_9600_low equ 7 1476 ; line_number = 35 1477 ; constant _eusart_9600_high = _eusart_9600 >> 8 1478 00000002 = _eusart_9600_high equ 2 1479 ; line_number = 36 1480 ; constant _eusart_9600_index = 2 1481 00000002 = _eusart_9600_index equ 2 1482 ; # 19200 baud: 1483 ; line_number = 38 1484 ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1 1485 00000103 = _eusart_19200 equ 259 1486 ; line_number = 39 1487 ; constant _eusart_19200_low = _eusart_19200 & 0xff 1488 00000003 = _eusart_19200_low equ 3 1489 ; line_number = 40 1490 ; constant _eusart_19200_high = _eusart_19200 >> 8 1491 00000001 = _eusart_19200_high equ 1 1492 ; line_number = 41 1493 ; constant _eusart_19200_index = 3 1494 00000003 = _eusart_19200_index equ 3 1495 ; # 38400 baud: 1496 ; line_number = 43 1497 ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1 1498 00000081 = _eusart_38400 equ 129 1499 ; line_number = 44 1500 ; constant _eusart_38400_low = _eusart_38400 & 0xff 1501 00000081 = _eusart_38400_low equ 129 1502 ; line_number = 45 1503 ; constant _eusart_38400_high = _eusart_38400 >> 8 1504 00000000 = _eusart_38400_high equ 0 1505 ; line_number = 46 1506 ; constant _eusart_38400_index = 4 1507 00000004 = _eusart_38400_index equ 4 1508 ; # 57600 baud: 1509 ; line_number = 48 1510 ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1 1511 00000055 = _eusart_57600 equ 85 1512 ; line_number = 49 1513 ; constant _eusart_57600_low = _eusart_57600 & 0xff 1514 00000055 = _eusart_57600_low equ 85 1515 ; line_number = 50 1516 ; constant _eusart_57600_high = _eusart_57600 >> 8 1517 00000000 = _eusart_57600_high equ 0 1518 ; line_number = 51 1519 ; constant _eusart_57600_index = 5 1520 00000005 = _eusart_57600_index equ 5 1521 ; # 115200 baud: 1522 ; line_number = 53 1523 ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1 1524 0000002a = _eusart_115200 equ 42 1525 ; line_number = 54 1526 ; constant _eusart_115200_low = _eusart_115200 & 0xff 1527 0000002a = _eusart_115200_low equ 42 1528 ; line_number = 55 1529 ; constant _eusart_115200_high = _eusart_115200 >> 8 1530 00000000 = _eusart_115200_high equ 0 1531 ; line_number = 56 1532 ; constant _eusart_115200_index = 6 1533 00000006 = _eusart_115200_index equ 6 1534 ; # 203400 baud: 1535 ; line_number = 58 1536 ; constant _eusart_230400 = (_eusart_clock / (230400 * _eusart_factor)) - 1 1537 00000014 = _eusart_230400 equ 20 1538 ; line_number = 59 1539 ; constant _eusart_230400_low = _eusart_230400 & 0xff 1540 00000014 = _eusart_230400_low equ 20 1541 ; line_number = 60 1542 ; constant _eusart_230400_high = _eusart_230400 >> 8 1543 00000000 = _eusart_230400_high equ 0 1544 ; line_number = 61 1545 ; constant _eusart_230400_index = 7 1546 00000007 = _eusart_230400_index equ 7 1547 ; # 406800 baud: 1548 ; line_number = 63 1549 ; constant _eusart_406800 = (_eusart_clock / (406800 * _eusart_factor)) - 1 1550 0000000b = _eusart_406800 equ 11 1551 ; line_number = 64 1552 ; constant _eusart_406800_low = _eusart_406800 & 0xff 1553 0000000b = _eusart_406800_low equ 11 1554 ; line_number = 65 1555 ; constant _eusart_406800_high = _eusart_406800 >> 8 1556 00000000 = _eusart_406800_high equ 0 1557 ; line_number = 66 1558 ; constant _eusart_406800_index = 8 1559 00000008 = _eusart_406800_index equ 8 1560 ; # 500000 baud: 1561 ; line_number = 68 1562 ; constant _eusart_500000 = (_eusart_clock / (500000 * _eusart_factor)) - 1 1563 00000009 = _eusart_500000 equ 9 1564 ; line_number = 69 1565 ; constant _eusart_500000_low = _eusart_500000 & 0xff 1566 00000009 = _eusart_500000_low equ 9 1567 ; line_number = 70 1568 ; constant _eusart_500000_high = _eusart_500000 >> 8 1569 00000000 = _eusart_500000_high equ 0 1570 ; line_number = 71 1571 ; constant _eusart_500000_index = 8 1572 00000008 = _eusart_500000_index equ 8 1573 ; # 62500 baud: 1574 ; line_number = 73 1575 ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1 1576 00000007 = _eusart_625000 equ 7 1577 ; line_number = 74 1578 ; constant _eusart_625000_low = _eusart_625000 & 0xff 1579 00000007 = _eusart_625000_low equ 7 1580 ; line_number = 75 1581 ; constant _eusart_625000_high = _eusart_625000 >> 8 1582 00000000 = _eusart_625000_high equ 0 1583 ; line_number = 76 1584 ; constant _eusart_625000_index = 9 1585 00000009 = _eusart_625000_index equ 9 1586 ; # 833333 baud: 1587 ; line_number = 78 1588 ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1 1589 00000005 = _eusart_833333 equ 5 1590 ; line_number = 79 1591 ; constant _eusart_833333_low = _eusart_833333 & 0xff 1592 00000005 = _eusart_833333_low equ 5 1593 ; line_number = 80 1594 ; constant _eusart_833333_high = _eusart_833333 >> 8 1595 00000000 = _eusart_833333_high equ 0 1596 ; line_number = 81 1597 ; constant _eusart_833333_index = 10 1598 0000000a = _eusart_833333_index equ 10 1599 ; # 1000000 baud (1MHz): 1600 ; line_number = 83 1601 ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1 1602 00000004 = _eusart_1000000 equ 4 1603 ; line_number = 84 1604 ; constant _eusart_1000000_low = _eusart_1000000 & 0xff 1605 00000004 = _eusart_1000000_low equ 4 1606 ; line_number = 85 1607 ; constant _eusart_1000000_high = _eusart_1000000 >> 8 1608 00000000 = _eusart_1000000_high equ 0 1609 ; line_number = 86 1610 ; constant _eusart_1000000_index = 11 1611 0000000b = _eusart_1000000_index equ 11 1612 1613 ; buffer = 'host' 1614 ; line_number = 11 1615 ; library _eusart exited 1616 1617 1618 ; line_number = 15 1619 ; package pdip 1620 ; line_number = 16 1621 ; pin 1 = power_supply 1622 ; line_number = 17 1623 ; pin 2 = osc1 1624 ; line_number = 18 1625 ; pin 3 = osc2 1626 ; line_number = 19 1627 ; pin 4 = ra3_in, name=dtr 1628 00000005 = dtr___byte equ _porta 1629 00000003 = dtr___bit equ 3 1630 ; line_number = 20 1631 ; pin 5 = rx, name=rx 1632 00000007 = rx___byte equ _portc 1633 00000005 = rx___bit equ 5 1634 ; line_number = 21 1635 ; pin 6 = tx, name=tx 1636 00000007 = tx___byte equ _portc 1637 00000004 = tx___bit equ 4 1638 ; line_number = 22 1639 ; pin 7 = rc3_out, name=p3 1640 00000007 = p3___byte equ _portc 1641 00000003 = p3___bit equ 3 1642 ; line_number = 23 1643 ; pin 8 = rc2_out, name=p2 1644 00000007 = p2___byte equ _portc 1645 00000002 = p2___bit equ 2 1646 ; line_number = 24 1647 ; pin 9 = rc1_in, name=p1 1648 00000007 = p1___byte equ _portc 1649 00000001 = p1___bit equ 1 1650 ; line_number = 25 1651 ; pin 10 = rc0_in, name=p0 1652 00000007 = p0___byte equ _portc 1653 00000000 = p0___bit equ 0 1654 ; line_number = 26 1655 ; pin 11 = ra2_out, name=p6 1656 00000005 = p6___byte equ _porta 1657 00000002 = p6___bit equ 2 1658 ; line_number = 27 1659 ; pin 12 = ra1_in, name=p5 1660 00000005 = p5___byte equ _porta 1661 00000001 = p5___bit equ 1 1662 ; line_number = 28 1663 ; pin 13 = ra0_out, name=p4 1664 00000005 = p4___byte equ _porta 1665 00000000 = p4___bit equ 0 1666 ; line_number = 29 1667 ; pin 14 = ground 1668 1669 ; line_number = 31 1670 ; global error bit 1671 0000006f = error___byte equ globals___0+79 1672 00000000 = error___bit equ 0 1673 ; line_number = 32 1674 ; global end_of_line bit 1675 0000006f = end_of_line___byte equ globals___0+79 1676 00000001 = end_of_line___bit equ 1 1677 ; line_number = 33 1678 ; global hex_high byte 1679 00000023 = hex_high equ globals___0+3 1680 ; line_number = 34 1681 ; global hex_low byte 1682 00000024 = hex_low equ globals___0+4 1683 ; line_number = 35 1684 ; global bus_shift byte 1685 00000025 = bus_shift equ globals___0+5 1686 ; line_number = 36 1687 ; global time_out bit 1688 0000006f = time_out___byte equ globals___0+79 1689 00000002 = time_out___bit equ 2 1690 ; line_number = 37 1691 ; global bus_msb bit 1692 0000006f = bus_msb___byte equ globals___0+79 1693 00000003 = bus_msb___bit equ 3 1694 1695 ; line_number = 39 1696 ;info 39, 0 1697 ; procedure main 1698 0000 : main: 1699 ; Initialize some registers 1700 0000 019f clrf _adcon0 1701 0001 1683 bsf __rp0___byte, __rp0___bit 1702 0002 0191 clrf _ansel 1703 0003 3007 movlw 7 1704 0004 1283 bcf __rp0___byte, __rp0___bit 1705 0005 0099 movwf _cmcon0 1706 0006 303a movlw 58 1707 0007 1683 bsf __rp0___byte, __rp0___bit 1708 0008 0085 movwf _trisa 1709 0009 3033 movlw 51 1710 000a 0087 movwf _trisc 1711 ; arguments_none 1712 ; line_number = 41 1713 ; returns_nothing 1714 1715 ; # This is the main procdure that initializes the the microcontroller 1716 ; # and waits for commands from the host. 1717 1718 ; line_number = 46 1719 ; local bit9 bit 1720 0000006f = main__bit9___byte equ globals___0+79 1721 00000004 = main__bit9___bit equ 4 1722 ; line_number = 47 1723 ; local command byte 1724 00000026 = main__command equ globals___0+6 1725 ; line_number = 48 1726 ; local id byte 1727 00000027 = main__id equ globals___0+7 1728 ; #local index byte 1729 ; line_number = 50 1730 ; local low byte 1731 00000028 = main__low equ globals___0+8 1732 ; line_number = 51 1733 ; local node byte 1734 00000029 = main__node equ globals___0+9 1735 ; line_number = 52 1736 ; local page byte 1737 0000002a = main__page equ globals___0+10 1738 ; line_number = 53 1739 ; local receive byte 1740 0000002b = main__receive equ globals___0+11 1741 ; line_number = 54 1742 ; local row byte 1743 0000002c = main__row equ globals___0+12 1744 ; line_number = 55 1745 ; local send byte 1746 0000002d = main__send equ globals___0+13 1747 ; line_number = 56 1748 ; local value byte 1749 0000002e = main__value equ globals___0+14 1750 1751 ; #loop_forever 1752 ; # p2 := _true 1753 ; # p2 := _false 1754 1755 ; # Warm up the EUSART: 1756 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX) 1757 ; line_number = 63 1758 ; _trisc@5 := _true 1759 ;info 63, 11 1760 00000087 = main__select__1___byte equ _trisc 1761 00000005 = main__select__1___bit equ 5 1762 000b 1687 bsf main__select__1___byte, main__select__1___bit 1763 ; line_number = 64 1764 ; _trisc@4 := _true 1765 ;info 64, 12 1766 00000087 = main__select__2___byte equ _trisc 1767 00000004 = main__select__2___bit equ 4 1768 000c 1607 bsf main__select__2___byte, main__select__2___bit 1769 1770 ; line_number = 66 1771 ; _txsta := 0 1772 ;info 66, 13 1773 000d 1283 bcf __rp0___byte, __rp0___bit 1774 000e 0196 clrf _txsta 1775 ; line_number = 67 1776 ; _tx9 := _false 1777 ;info 67, 15 1778 000f 1316 bcf _tx9___byte, _tx9___bit 1779 ; line_number = 68 1780 ; _txen := _true 1781 ;info 68, 16 1782 0010 1696 bsf _txen___byte, _txen___bit 1783 ; line_number = 69 1784 ; _brgh := _true 1785 ;info 69, 17 1786 0011 1516 bsf _brgh___byte, _brgh___bit 1787 1788 ; line_number = 71 1789 ; _rcsta := 0 1790 ;info 71, 18 1791 0012 0197 clrf _rcsta 1792 ; line_number = 72 1793 ; _spen := _true 1794 ;info 72, 19 1795 0013 1797 bsf _spen___byte, _spen___bit 1796 ; line_number = 73 1797 ; _rx9 := _false 1798 ;info 73, 20 1799 0014 1317 bcf _rx9___byte, _rx9___bit 1800 ; line_number = 74 1801 ; _cren := _true 1802 ;info 74, 21 1803 0015 1617 bsf _cren___byte, _cren___bit 1804 ; line_number = 75 1805 ; _adden := _true 1806 ;info 75, 22 1807 0016 1597 bsf _adden___byte, _adden___bit 1808 1809 ; line_number = 77 1810 ; _baudctl := 0 1811 ;info 77, 23 1812 0017 0191 clrf _baudctl 1813 ; line_number = 78 1814 ; _brg16 := _true 1815 ;info 78, 24 1816 0018 1591 bsf _brg16___byte, _brg16___bit 1817 1818 ; line_number = 80 1819 ; _spbrg := _eusart_19200_low 1820 ;info 80, 25 1821 0019 3003 movlw 3 1822 001a 0093 movwf _spbrg 1823 ; line_number = 81 1824 ; _spbrgh := _eusart_19200_high 1825 ;info 81, 27 1826 001b 3001 movlw 1 1827 001c 0092 movwf _spbrgh 1828 ; #_spbrg := _eusart_115200_low 1829 ; #_spbrgh := _eusart_115200_high 1830 ; #_spbrg := _eusart_230400_low 1831 ; #_spbrgh := _eusart_230400_high 1832 1833 ; # For debugging only -- just output a stream of 'U': 1834 ; #loop_forever 1835 ; # loop_exactly 255 1836 ; # delay 600 1837 ; # do_nothing 1838 ; # call _uart_byte_put('U') 1839 1840 ; # For debugging only -- Double echo: 1841 ; #loop_forever 1842 ; # # Wait for command: 1843 ; # command := _uart_byte_get() 1844 ; # call _uart_byte_put(command) 1845 ; # call _uart_byte_put(command) 1846 1847 ; # Process commands: 1848 ; line_number = 102 1849 ; loop_forever start 1850 001d : main__3: 1851 ; # Wait for command: 1852 ; line_number = 104 1853 ; error := _false 1854 ;info 104, 29 1855 001d 106f bcf error___byte, error___bit 1856 ; line_number = 105 1857 ; end_of_line := _false 1858 ;info 105, 30 1859 001e 10ef bcf end_of_line___byte, end_of_line___bit 1860 1861 ; # Fetch a command letter from the user: 1862 ; #command := character_get() 1863 ; line_number = 109 1864 ; command := _uart_byte_get() 1865 ;info 109, 31 1866 001f 22c4 call _uart_byte_get 1867 0020 00a6 movwf main__command 1868 ; line_number = 110 1869 ; if command & 0x80 = 0 start 1870 ;info 110, 33 1871 ; Left minus Right 1872 0021 3080 movlw 128 1873 0022 0526 andwf main__command,w 1874 ; =>bit_code_emit@symbol(): sym=__z 1875 ; No 1TEST: true.size=346 false.size=40 1876 ; No 2TEST: true.size=346 false.size=40 1877 ; 2GOTO: Single test with two GOTO's 1878 0023 1d03 btfss __z___byte, __z___bit 1879 0024 2982 goto main__86 1880 ; # ASCII mode command: 1881 1882 ; # Echo the character: 1883 ; line_number = 114 1884 ; call _uart_byte_put(command) 1885 ;info 114, 37 1886 0025 0826 movf main__command,w 1887 0026 22e3 call _uart_byte_put 1888 1889 ; # Convert it to upper case: 1890 ; line_number = 117 1891 ; if 'a' <= command && command <= 'z' start 1892 ;info 117, 39 1893 0027 3061 movlw 97 1894 0028 0226 subwf main__command,w 1895 ; =>bit_code_emit@symbol(): sym=__c 1896 ; No 1TEST: true.size=8 false.size=1 1897 ; No 2TEST: true.size=8 false.size=1 1898 ; 2GOTO: Single test with two GOTO's 1899 0029 1c03 btfss __c___byte, __c___bit 1900 002a 2833 goto main__14 1901 ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 1902 002b 307a movlw 122 1903 002c 0226 subwf main__command,w 1904 002d 1903 btfsc __z___byte, __z___bit 1905 002e 1003 bcf __c___byte, __c___bit 1906 ; =>bit_code_emit@symbol(): sym=__c 1907 ; No 1TEST: true.size=0 false.size=2 1908 ; No 2TEST: true.size=0 false.size=2 1909 ; 1GOTO: Single test with GOTO 1910 002f 1803 btfsc __c___byte, __c___bit 1911 0030 2833 goto main__15 1912 ; line_number = 118 1913 ; command := command + ('A' - 'a') 1914 ;info 118, 49 1915 0031 30e0 movlw 224 1916 0032 07a6 addwf main__command,f 1917 1918 0033 : main__15: 1919 0033 : main__14: 1920 ; Recombine code1_bit_states != code2_bit_states 1921 ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 1922 ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295 1923 ; Recombine code1_bit_states != code2_bit_states 1924 ; 2GOTO: No goto needed; true= false=main__14 true_size=8 false_size=1 1925 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1926 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 1927 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1928 ; line_number = 117 1929 ; if 'a' <= command && command <= 'z' done 1930 ; # Dispatch on command letter: 1931 ; line_number = 121 1932 ; if command = 'A' start 1933 ;info 121, 51 1934 ; Left minus Right 1935 0033 30bf movlw 191 1936 0034 0726 addwf main__command,w 1937 ; =>bit_code_emit@symbol(): sym=__z 1938 ; No 1TEST: true.size=13 false.size=312 1939 ; No 2TEST: true.size=13 false.size=312 1940 ; 2GOTO: Single test with two GOTO's 1941 0035 1d03 btfss __z___byte, __z___bit 1942 0036 2845 goto main__84 1943 ; # Set address: 1944 ; line_number = 123 1945 ; id := hex_byte_get() 1946 ;info 123, 55 1947 0037 225e call hex_byte_get 1948 0038 00a7 movwf main__id 1949 ; line_number = 124 1950 ; node := hex_byte_get() 1951 ;info 124, 57 1952 0039 225e call hex_byte_get 1953 003a 00a9 movwf main__node 1954 ; line_number = 125 1955 ; if end_of_line_get() start 1956 ;info 125, 59 1957 003b 2241 call end_of_line_get 1958 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 1959 ; No 1TEST: true.size=6 false.size=0 1960 ; No 2TEST: true.size=6 false.size=0 1961 ; 1GOTO: Single test with GOTO 1962 003c 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 1963 003d 2844 goto main__83 1964 ; line_number = 126 1965 ; call _uart_hex_put(id) 1966 ;info 126, 62 1967 003e 0827 movf main__id,w 1968 003f 22c8 call _uart_hex_put 1969 ; line_number = 127 1970 ; call _uart_space_put() 1971 ;info 127, 64 1972 0040 22db call _uart_space_put 1973 ; line_number = 128 1974 ; call _uart_hex_put(node) 1975 ;info 128, 65 1976 0041 0829 movf main__node,w 1977 0042 22c8 call _uart_hex_put 1978 ; line_number = 129 1979 ; call _uart_crlf_put() 1980 ;info 129, 67 1981 0043 22de call _uart_crlf_put 1982 ; Recombine size1 = 0 || size2 = 0 1983 0044 : main__83: 1984 ; line_number = 125 1985 ; if end_of_line_get() done 1986 0044 297f goto main__85 1987 ; 2GOTO: Starting code 2 1988 0045 : main__84: 1989 ; line_number = 130 1990 ;info 130, 69 1991 ; Left minus Right 1992 0045 30be movlw 190 1993 0046 0726 addwf main__command,w 1994 ; =>bit_code_emit@symbol(): sym=__z 1995 ; No 1TEST: true.size=8 false.size=299 1996 ; No 2TEST: true.size=8 false.size=299 1997 ; 2GOTO: Single test with two GOTO's 1998 0047 1d03 btfss __z___byte, __z___bit 1999 0048 2852 goto main__81 2000 ; line_number = 131 2001 ; value := hex_byte_get() 2002 ;info 131, 73 2003 0049 225e call hex_byte_get 2004 004a 00ae movwf main__value 2005 ; line_number = 132 2006 ; if end_of_line_get() start 2007 ;info 132, 75 2008 004b 2241 call end_of_line_get 2009 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2010 ; No 1TEST: true.size=3 false.size=0 2011 ; No 2TEST: true.size=3 false.size=0 2012 ; 1GOTO: Single test with GOTO 2013 004c 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2014 004d 2851 goto main__80 2015 ; line_number = 133 2016 ; call _uart_hex_put(value) 2017 ;info 133, 78 2018 004e 082e movf main__value,w 2019 004f 22c8 call _uart_hex_put 2020 ; line_number = 134 2021 ; call _uart_crlf_put() 2022 ;info 134, 80 2023 0050 22de call _uart_crlf_put 2024 ; Recombine size1 = 0 || size2 = 0 2025 0051 : main__80: 2026 ; line_number = 132 2027 ; if end_of_line_get() done 2028 0051 297f goto main__82 2029 ; 2GOTO: Starting code 2 2030 0052 : main__81: 2031 ; line_number = 135 2032 ;info 135, 82 2033 ; Left minus Right 2034 0052 30bd movlw 189 2035 0053 0726 addwf main__command,w 2036 ; =>bit_code_emit@symbol(): sym=__z 2037 ; No 1TEST: true.size=3 false.size=291 2038 ; No 2TEST: true.size=3 false.size=291 2039 ; 2GOTO: Single test with two GOTO's 2040 0054 1d03 btfss __z___byte, __z___bit 2041 0055 285a goto main__78 2042 ; # Clear bus: 2043 ; line_number = 137 2044 ; if end_of_line_get() start 2045 ;info 137, 86 2046 0056 2241 call end_of_line_get 2047 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2048 ; 1TEST: Single test with code in skip slot 2049 0057 1aef btfsc end_of_line_get__0return___byte, end_of_line_get__0return___bit 2050 ; line_number = 138 2051 ; call _uart_crlf_put() 2052 ;info 138, 88 2053 0058 22de call _uart_crlf_put 2054 ; Recombine size1 = 0 || size2 = 0 2055 ; line_number = 137 2056 ; if end_of_line_get() done 2057 0059 297f goto main__79 2058 ; 2GOTO: Starting code 2 2059 005a : main__78: 2060 ; line_number = 139 2061 ;info 139, 90 2062 ; Left minus Right 2063 005a 30bc movlw 188 2064 005b 0726 addwf main__command,w 2065 ; =>bit_code_emit@symbol(): sym=__z 2066 ; No 1TEST: true.size=20 false.size=266 2067 ; No 2TEST: true.size=20 false.size=266 2068 ; 2GOTO: Single test with two GOTO's 2069 005c 1d03 btfss __z___byte, __z___bit 2070 005d 2873 goto main__76 2071 ; # Deselect: 2072 ; line_number = 141 2073 ; if end_of_line_get() start 2074 ;info 141, 94 2075 005e 2241 call end_of_line_get 2076 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2077 ; No 1TEST: true.size=17 false.size=0 2078 ; No 2TEST: true.size=17 false.size=0 2079 ; 1GOTO: Single test with GOTO 2080 005f 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2081 0060 2872 goto main__75 2082 ; line_number = 142 2083 ; call _uart_crlf_put() 2084 ;info 142, 97 2085 0061 22de call _uart_crlf_put 2086 ; line_number = 143 2087 ; call bus_byte_send(0xff) 2088 ;info 143, 98 2089 0062 30ff movlw 255 2090 0063 21e0 call bus_byte_send 2091 ; line_number = 144 2092 ; value := bus_byte_receive() 2093 ;info 144, 100 2094 0064 21fe call bus_byte_receive 2095 0065 00ae movwf main__value 2096 ; line_number = 145 2097 ; if time_out start 2098 ;info 145, 102 2099 ; =>bit_code_emit@symbol(): sym=time_out 2100 ; No 1TEST: true.size=2 false.size=6 2101 ; No 2TEST: true.size=2 false.size=6 2102 ; 2GOTO: Single test with two GOTO's 2103 0066 1d6f btfss time_out___byte, time_out___bit 2104 0067 286b goto main__73 2105 ; line_number = 146 2106 ; call _uart_byte_put('@') 2107 ;info 146, 104 2108 0068 3040 movlw 64 2109 0069 22e3 call _uart_byte_put 2110 006a 2871 goto main__74 2111 ; 2GOTO: Starting code 2 2112 006b : main__73: 2113 ; line_number = 148 2114 ; if bus_msb start 2115 ;info 148, 107 2116 ; =>bit_code_emit@symbol(): sym=bus_msb 2117 ; No 1TEST: true.size=2 false.size=0 2118 ; No 2TEST: true.size=2 false.size=0 2119 ; 1GOTO: Single test with GOTO 2120 006b 1def btfss bus_msb___byte, bus_msb___bit 2121 006c 286f goto main__72 2122 ; line_number = 149 2123 ; call _uart_byte_put('1') 2124 ;info 149, 109 2125 006d 3031 movlw 49 2126 006e 22e3 call _uart_byte_put 2127 ; Recombine size1 = 0 || size2 = 0 2128 006f : main__72: 2129 ; line_number = 148 2130 ; if bus_msb done 2131 ; line_number = 150 2132 ; call _uart_hex_put(value) 2133 ;info 150, 111 2134 006f 082e movf main__value,w 2135 0070 22c8 call _uart_hex_put 2136 0071 : main__74: 2137 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2138 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2139 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2140 ; line_number = 145 2141 ; if time_out done 2142 ; line_number = 151 2143 ; call _uart_crlf_put() 2144 ;info 151, 113 2145 0071 22de call _uart_crlf_put 2146 ; Recombine size1 = 0 || size2 = 0 2147 0072 : main__75: 2148 ; line_number = 141 2149 ; if end_of_line_get() done 2150 0072 297f goto main__77 2151 ; 2GOTO: Starting code 2 2152 0073 : main__76: 2153 ; line_number = 152 2154 ;info 152, 115 2155 ; Left minus Right 2156 0073 30ba movlw 186 2157 0074 0726 addwf main__command,w 2158 ; =>bit_code_emit@symbol(): sym=__z 2159 ; No 1TEST: true.size=18 false.size=243 2160 ; No 2TEST: true.size=18 false.size=243 2161 ; 2GOTO: Single test with two GOTO's 2162 0075 1d03 btfss __z___byte, __z___bit 2163 0076 288a goto main__70 2164 ; # Flush buffer 2165 ; line_number = 154 2166 ; if end_of_line_get() start 2167 ;info 154, 119 2168 0077 2241 call end_of_line_get 2169 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2170 ; No 1TEST: true.size=15 false.size=0 2171 ; No 2TEST: true.size=15 false.size=0 2172 ; 1GOTO: Single test with GOTO 2173 0078 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2174 0079 2889 goto main__69 2175 ; line_number = 155 2176 ; time_out := _false 2177 ;info 155, 122 2178 007a 116f bcf time_out___byte, time_out___bit 2179 ; line_number = 156 2180 ; while !time_out start 2181 007b : main__65: 2182 ;info 156, 123 2183 ; =>bit_code_emit@symbol(): sym=time_out 2184 ; No 1TEST: true.size=0 false.size=11 2185 ; No 2TEST: true.size=0 false.size=11 2186 ; 1GOTO: Single test with GOTO 2187 007b 196f btfsc time_out___byte, time_out___bit 2188 007c 2888 goto main__68 2189 ; line_number = 157 2190 ; value := bus_byte_receive() 2191 ;info 157, 125 2192 007d 21fe call bus_byte_receive 2193 007e 00ae movwf main__value 2194 ; line_number = 158 2195 ; call _uart_space_put() 2196 ;info 158, 127 2197 007f 22db call _uart_space_put 2198 ; line_number = 159 2199 ; if time_out start 2200 ;info 159, 128 2201 ; =>bit_code_emit@symbol(): sym=time_out 2202 ; No 1TEST: true.size=2 false.size=2 2203 ; No 2TEST: true.size=2 false.size=2 2204 ; 2GOTO: Single test with two GOTO's 2205 0080 1d6f btfss time_out___byte, time_out___bit 2206 0081 2885 goto main__66 2207 ; line_number = 160 2208 ; call _uart_byte_put('@') 2209 ;info 160, 130 2210 0082 3040 movlw 64 2211 0083 22e3 call _uart_byte_put 2212 0084 2887 goto main__67 2213 ; 2GOTO: Starting code 2 2214 0085 : main__66: 2215 ; line_number = 162 2216 ; call _uart_hex_put(value) 2217 ;info 162, 133 2218 0085 082e movf main__value,w 2219 0086 22c8 call _uart_hex_put 2220 0087 : main__67: 2221 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2222 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2223 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2224 ; line_number = 159 2225 ; if time_out done 2226 0087 287b goto main__65 2227 0088 : main__68: 2228 ; Recombine size1 = 0 || size2 = 0 2229 ; line_number = 156 2230 ; while !time_out done 2231 ; line_number = 163 2232 ; call _uart_crlf_put() 2233 ;info 163, 136 2234 0088 22de call _uart_crlf_put 2235 ; Recombine size1 = 0 || size2 = 0 2236 0089 : main__69: 2237 ; line_number = 154 2238 ; if end_of_line_get() done 2239 0089 297f goto main__71 2240 ; 2GOTO: Starting code 2 2241 008a : main__70: 2242 ; line_number = 164 2243 ;info 164, 138 2244 ; Left minus Right 2245 008a 30b7 movlw 183 2246 008b 0726 addwf main__command,w 2247 ; =>bit_code_emit@symbol(): sym=__z 2248 ; No 1TEST: true.size=3 false.size=235 2249 ; No 2TEST: true.size=3 false.size=235 2250 ; 2GOTO: Single test with two GOTO's 2251 008c 1d03 btfss __z___byte, __z___bit 2252 008d 2892 goto main__63 2253 ; # Identify: 2254 ; line_number = 166 2255 ; if end_of_line_get() start 2256 ;info 166, 142 2257 008e 2241 call end_of_line_get 2258 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2259 ; 1TEST: Single test with code in skip slot 2260 008f 1aef btfsc end_of_line_get__0return___byte, end_of_line_get__0return___bit 2261 ; line_number = 167 2262 ; call id_dump() 2263 ;info 167, 144 2264 0090 21af call id_dump 2265 ; Recombine size1 = 0 || size2 = 0 2266 ; line_number = 166 2267 ; if end_of_line_get() done 2268 0091 297f goto main__64 2269 ; 2GOTO: Starting code 2 2270 0092 : main__63: 2271 ; line_number = 168 2272 ;info 168, 146 2273 ; Left minus Right 2274 0092 30b6 movlw 182 2275 0093 0726 addwf main__command,w 2276 ; =>bit_code_emit@symbol(): sym=__z 2277 ; No 1TEST: true.size=9 false.size=221 2278 ; No 2TEST: true.size=9 false.size=221 2279 ; 2GOTO: Single test with two GOTO's 2280 0094 1d03 btfss __z___byte, __z___bit 2281 0095 28a0 goto main__61 2282 ; # Jump: 2283 ; line_number = 170 2284 ; call hex_word_get() 2285 ;info 170, 150 2286 0096 2261 call hex_word_get 2287 ; line_number = 171 2288 ; if end_of_line_get() start 2289 ;info 171, 151 2290 0097 2241 call end_of_line_get 2291 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2292 ; No 1TEST: true.size=5 false.size=0 2293 ; No 2TEST: true.size=5 false.size=0 2294 ; 1GOTO: Single test with GOTO 2295 0098 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2296 0099 289f goto main__60 2297 ; line_number = 172 2298 ; call _uart_hex_put(hex_high) 2299 ;info 172, 154 2300 009a 0823 movf hex_high,w 2301 009b 22c8 call _uart_hex_put 2302 ; line_number = 173 2303 ; call _uart_hex_put(hex_low) 2304 ;info 173, 156 2305 009c 0824 movf hex_low,w 2306 009d 22c8 call _uart_hex_put 2307 ; line_number = 174 2308 ; call _uart_crlf_put() 2309 ;info 174, 158 2310 009e 22de call _uart_crlf_put 2311 ; Recombine size1 = 0 || size2 = 0 2312 009f : main__60: 2313 ; line_number = 171 2314 ; if end_of_line_get() done 2315 009f 297f goto main__62 2316 ; 2GOTO: Starting code 2 2317 00a0 : main__61: 2318 ; line_number = 175 2319 ;info 175, 160 2320 ; Left minus Right 2321 00a0 30b0 movlw 176 2322 00a1 0726 addwf main__command,w 2323 ; =>bit_code_emit@symbol(): sym=__z 2324 ; No 1TEST: true.size=60 false.size=156 2325 ; No 2TEST: true.size=60 false.size=156 2326 ; 2GOTO: Single test with two GOTO's 2327 00a2 1d03 btfss __z___byte, __z___bit 2328 00a3 28e3 goto main__58 2329 ; # Print a page of program memory: 2330 ; line_number = 177 2331 ; page := hex_byte_get() 2332 ;info 177, 164 2333 00a4 225e call hex_byte_get 2334 00a5 00aa movwf main__page 2335 ; line_number = 178 2336 ; if end_of_line_get() start 2337 ;info 178, 166 2338 00a6 2241 call end_of_line_get 2339 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2340 ; No 1TEST: true.size=55 false.size=0 2341 ; No 2TEST: true.size=55 false.size=0 2342 ; 1GOTO: Single test with GOTO 2343 00a7 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2344 00a8 28e2 goto main__57 2345 ; line_number = 179 2346 ; row := 0 2347 ;info 179, 169 2348 00a9 01ac clrf main__row 2349 ; line_number = 180 2350 ; low := 0 2351 ;info 180, 170 2352 00aa 01a8 clrf main__low 2353 ; line_number = 181 2354 ; while row < 16 start 2355 00ab : main__49: 2356 ;info 181, 171 2357 00ab 3010 movlw 16 2358 00ac 022c subwf main__row,w 2359 ; =>bit_code_emit@symbol(): sym=__c 2360 ; No 1TEST: true.size=0 false.size=49 2361 ; No 2TEST: true.size=0 false.size=49 2362 ; 1GOTO: Single test with GOTO 2363 00ad 1803 btfsc __c___byte, __c___bit 2364 00ae 28e2 goto main__56 2365 ; line_number = 182 2366 ; call _uart_hex_put(page) 2367 ;info 182, 175 2368 00af 082a movf main__page,w 2369 00b0 22c8 call _uart_hex_put 2370 ; line_number = 183 2371 ; call _uart_hex_put(low) 2372 ;info 183, 177 2373 00b1 0828 movf main__low,w 2374 00b2 22c8 call _uart_hex_put 2375 ; line_number = 184 2376 ; call _uart_byte_put(':') 2377 ;info 184, 179 2378 00b3 303a movlw 58 2379 00b4 22e3 call _uart_byte_put 2380 2381 ; # Set address: 2382 ; line_number = 187 2383 ; call bus_byte_send(0) 2384 ;info 187, 181 2385 00b5 3000 movlw 0 2386 00b6 21e0 call bus_byte_send 2387 ; line_number = 188 2388 ; call bus_byte_receive() 2389 ;info 188, 183 2390 00b7 21fe call bus_byte_receive 2391 2392 ; line_number = 190 2393 ; call bus_byte_send(page) 2394 ;info 190, 184 2395 00b8 082a movf main__page,w 2396 00b9 21e0 call bus_byte_send 2397 ; line_number = 191 2398 ; call bus_byte_receive() 2399 ;info 191, 186 2400 00ba 21fe call bus_byte_receive 2401 2402 ; line_number = 193 2403 ; call bus_byte_send(low) 2404 ;info 193, 187 2405 00bb 0828 movf main__low,w 2406 00bc 21e0 call bus_byte_send 2407 ; line_number = 194 2408 ; call bus_byte_receive() 2409 ;info 194, 189 2410 00bd 21fe call bus_byte_receive 2411 2412 ; # Read the ack byte: 2413 ; line_number = 197 2414 ; call bus_byte_receive() 2415 ;info 197, 190 2416 00be 21fe call bus_byte_receive 2417 2418 ; # Read out 8 words: 2419 ; line_number = 200 2420 ; call bus_byte_send(1) 2421 ;info 200, 191 2422 00bf 3001 movlw 1 2423 00c0 21e0 call bus_byte_send 2424 ; line_number = 201 2425 ; call bus_byte_receive() 2426 ;info 201, 193 2427 00c1 21fe call bus_byte_receive 2428 2429 ; line_number = 203 2430 ; call bus_byte_send(8) 2431 ;info 203, 194 2432 00c2 3008 movlw 8 2433 00c3 21e0 call bus_byte_send 2434 ; line_number = 204 2435 ; call bus_byte_receive() 2436 ;info 204, 196 2437 00c4 21fe call bus_byte_receive 2438 ; line_number = 205 2439 ; loop_exactly 8 start 2440 ;info 205, 197 2441 00000039 = main__50 equ globals___0+25 2442 00c5 3008 movlw 8 2443 00c6 00b9 movwf main__50 2444 00c7 : main__51: 2445 ; line_number = 206 2446 ; value := bus_byte_receive() 2447 ;info 206, 199 2448 00c7 21fe call bus_byte_receive 2449 00c8 00ae movwf main__value 2450 ; line_number = 207 2451 ; call _uart_space_put() 2452 ;info 207, 201 2453 00c9 22db call _uart_space_put 2454 ; line_number = 208 2455 ; if time_out start 2456 ;info 208, 202 2457 ; =>bit_code_emit@symbol(): sym=time_out 2458 ; No 1TEST: true.size=2 false.size=2 2459 ; No 2TEST: true.size=2 false.size=2 2460 ; 2GOTO: Single test with two GOTO's 2461 00ca 1d6f btfss time_out___byte, time_out___bit 2462 00cb 28cf goto main__52 2463 ; line_number = 209 2464 ; call _uart_byte_put('@') 2465 ;info 209, 204 2466 00cc 3040 movlw 64 2467 00cd 22e3 call _uart_byte_put 2468 00ce 28d1 goto main__53 2469 ; 2GOTO: Starting code 2 2470 00cf : main__52: 2471 ; line_number = 211 2472 ; call _uart_hex_put(value) 2473 ;info 211, 207 2474 00cf 082e movf main__value,w 2475 00d0 22c8 call _uart_hex_put 2476 00d1 : main__53: 2477 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2478 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2479 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2480 ; line_number = 208 2481 ; if time_out done 2482 ; line_number = 212 2483 ; value := bus_byte_receive() 2484 ;info 212, 209 2485 00d1 21fe call bus_byte_receive 2486 00d2 00ae movwf main__value 2487 ; line_number = 213 2488 ; if time_out start 2489 ;info 213, 211 2490 ; =>bit_code_emit@symbol(): sym=time_out 2491 ; No 1TEST: true.size=2 false.size=2 2492 ; No 2TEST: true.size=2 false.size=2 2493 ; 2GOTO: Single test with two GOTO's 2494 00d3 1d6f btfss time_out___byte, time_out___bit 2495 00d4 28d8 goto main__54 2496 ; line_number = 214 2497 ; call _uart_byte_put('@') 2498 ;info 214, 213 2499 00d5 3040 movlw 64 2500 00d6 22e3 call _uart_byte_put 2501 00d7 28da goto main__55 2502 ; 2GOTO: Starting code 2 2503 00d8 : main__54: 2504 ; line_number = 216 2505 ; call _uart_hex_put(value) 2506 ;info 216, 216 2507 00d8 082e movf main__value,w 2508 00d9 22c8 call _uart_hex_put 2509 2510 00da : main__55: 2511 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2512 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2513 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2514 ; line_number = 213 2515 ; if time_out done 2516 ; line_number = 205 2517 ; loop_exactly 8 wrap-up 2518 00da 0bb9 decfsz main__50,f 2519 00db 28c7 goto main__51 2520 ; line_number = 205 2521 ; loop_exactly 8 done 2522 ; # Read the ack byte: 2523 ; line_number = 219 2524 ; call bus_byte_receive() 2525 ;info 219, 220 2526 00dc 21fe call bus_byte_receive 2527 2528 ; line_number = 221 2529 ; call _uart_crlf_put() 2530 ;info 221, 221 2531 00dd 22de call _uart_crlf_put 2532 ; line_number = 222 2533 ; row := row + 1 2534 ;info 222, 222 2535 00de 0aac incf main__row,f 2536 ; line_number = 223 2537 ; low := low + 8 2538 ;info 223, 223 2539 00df 3008 movlw 8 2540 00e0 07a8 addwf main__low,f 2541 00e1 28ab goto main__49 2542 00e2 : main__56: 2543 ; Recombine size1 = 0 || size2 = 0 2544 ; line_number = 181 2545 ; while row < 16 done 2546 ; Recombine size1 = 0 || size2 = 0 2547 00e2 : main__57: 2548 ; line_number = 178 2549 ; if end_of_line_get() done 2550 00e2 297f goto main__59 2551 ; 2GOTO: Starting code 2 2552 00e3 : main__58: 2553 ; line_number = 224 2554 ;info 224, 227 2555 ; Left minus Right 2556 00e3 30ae movlw 174 2557 00e4 0726 addwf main__command,w 2558 ; =>bit_code_emit@symbol(): sym=__z 2559 ; No 1TEST: true.size=9 false.size=142 2560 ; No 2TEST: true.size=9 false.size=142 2561 ; 2GOTO: Single test with two GOTO's 2562 00e5 1d03 btfss __z___byte, __z___bit 2563 00e6 28f1 goto main__47 2564 ; # Read: 2565 ; line_number = 226 2566 ; call hex_word_get() 2567 ;info 226, 231 2568 00e7 2261 call hex_word_get 2569 ; line_number = 227 2570 ; if end_of_line_get() start 2571 ;info 227, 232 2572 00e8 2241 call end_of_line_get 2573 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2574 ; No 1TEST: true.size=5 false.size=0 2575 ; No 2TEST: true.size=5 false.size=0 2576 ; 1GOTO: Single test with GOTO 2577 00e9 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2578 00ea 28f0 goto main__46 2579 ; line_number = 228 2580 ; call _uart_hex_put(hex_high) 2581 ;info 228, 235 2582 00eb 0823 movf hex_high,w 2583 00ec 22c8 call _uart_hex_put 2584 ; line_number = 229 2585 ; call _uart_hex_put(hex_low) 2586 ;info 229, 237 2587 00ed 0824 movf hex_low,w 2588 00ee 22c8 call _uart_hex_put 2589 ; line_number = 230 2590 ; call _uart_crlf_put() 2591 ;info 230, 239 2592 00ef 22de call _uart_crlf_put 2593 ; Recombine size1 = 0 || size2 = 0 2594 00f0 : main__46: 2595 ; line_number = 227 2596 ; if end_of_line_get() done 2597 00f0 297f goto main__48 2598 ; 2GOTO: Starting code 2 2599 00f1 : main__47: 2600 ; line_number = 231 2601 ;info 231, 241 2602 ; Left minus Right 2603 00f1 30ad movlw 173 2604 00f2 0726 addwf main__command,w 2605 ; =>bit_code_emit@symbol(): sym=__z 2606 ; No 1TEST: true.size=36 false.size=101 2607 ; No 2TEST: true.size=36 false.size=101 2608 ; 2GOTO: Single test with two GOTO's 2609 00f3 1d03 btfss __z___byte, __z___bit 2610 00f4 291a goto main__44 2611 ; # Select: 2612 ; line_number = 233 2613 ; node := hex_byte_get() 2614 ;info 233, 245 2615 00f5 225e call hex_byte_get 2616 00f6 00a9 movwf main__node 2617 ; line_number = 234 2618 ; if end_of_line_get() start 2619 ;info 234, 247 2620 00f7 2241 call end_of_line_get 2621 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2622 ; No 1TEST: true.size=31 false.size=0 2623 ; No 2TEST: true.size=31 false.size=0 2624 ; 1GOTO: Single test with GOTO 2625 00f8 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2626 00f9 2919 goto main__43 2627 ; line_number = 235 2628 ; call _uart_crlf_put() 2629 ;info 235, 250 2630 00fa 22de call _uart_crlf_put 2631 ; line_number = 236 2632 ; call bus_select_send(node) 2633 ;info 236, 251 2634 00fb 0829 movf main__node,w 2635 00fc 21ef call bus_select_send 2636 ; line_number = 237 2637 ; value := bus_byte_receive() 2638 ;info 237, 253 2639 00fd 21fe call bus_byte_receive 2640 00fe 00ae movwf main__value 2641 ; line_number = 238 2642 ; if time_out start 2643 ;info 238, 255 2644 ; =>bit_code_emit@symbol(): sym=time_out 2645 ; No 1TEST: true.size=2 false.size=2 2646 ; No 2TEST: true.size=2 false.size=2 2647 ; 2GOTO: Single test with two GOTO's 2648 00ff 1d6f btfss time_out___byte, time_out___bit 2649 0100 2904 goto main__37 2650 ; line_number = 239 2651 ; call _uart_byte_put('@') 2652 ;info 239, 257 2653 0101 3040 movlw 64 2654 0102 22e3 call _uart_byte_put 2655 0103 2906 goto main__38 2656 ; 2GOTO: Starting code 2 2657 0104 : main__37: 2658 ; line_number = 241 2659 ; call _uart_hex_put(value) 2660 ;info 241, 260 2661 0104 082e movf main__value,w 2662 0105 22c8 call _uart_hex_put 2663 0106 : main__38: 2664 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2665 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2666 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2667 ; line_number = 238 2668 ; if time_out done 2669 ; line_number = 242 2670 ; value := bus_byte_receive() 2671 ;info 242, 262 2672 0106 21fe call bus_byte_receive 2673 0107 00ae movwf main__value 2674 ; line_number = 243 2675 ; if time_out start 2676 ;info 243, 264 2677 ; =>bit_code_emit@symbol(): sym=time_out 2678 ; No 1TEST: true.size=2 false.size=2 2679 ; No 2TEST: true.size=2 false.size=2 2680 ; 2GOTO: Single test with two GOTO's 2681 0108 1d6f btfss time_out___byte, time_out___bit 2682 0109 290d goto main__39 2683 ; line_number = 244 2684 ; call _uart_byte_put('@') 2685 ;info 244, 266 2686 010a 3040 movlw 64 2687 010b 22e3 call _uart_byte_put 2688 010c 290f goto main__40 2689 ; 2GOTO: Starting code 2 2690 010d : main__39: 2691 ; line_number = 246 2692 ; call _uart_hex_put(value) 2693 ;info 246, 269 2694 010d 082e movf main__value,w 2695 010e 22c8 call _uart_hex_put 2696 010f : main__40: 2697 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2698 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2699 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2700 ; line_number = 243 2701 ; if time_out done 2702 ; line_number = 247 2703 ; value := bus_byte_receive() 2704 ;info 247, 271 2705 010f 21fe call bus_byte_receive 2706 0110 00ae movwf main__value 2707 ; line_number = 248 2708 ; if time_out start 2709 ;info 248, 273 2710 ; =>bit_code_emit@symbol(): sym=time_out 2711 ; No 1TEST: true.size=2 false.size=2 2712 ; No 2TEST: true.size=2 false.size=2 2713 ; 2GOTO: Single test with two GOTO's 2714 0111 1d6f btfss time_out___byte, time_out___bit 2715 0112 2916 goto main__41 2716 ; line_number = 249 2717 ; call _uart_byte_put('@') 2718 ;info 249, 275 2719 0113 3040 movlw 64 2720 0114 22e3 call _uart_byte_put 2721 0115 2918 goto main__42 2722 ; 2GOTO: Starting code 2 2723 0116 : main__41: 2724 ; line_number = 251 2725 ; call _uart_hex_put(value) 2726 ;info 251, 278 2727 0116 082e movf main__value,w 2728 0117 22c8 call _uart_hex_put 2729 0118 : main__42: 2730 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2731 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2732 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2733 ; line_number = 248 2734 ; if time_out done 2735 ; line_number = 252 2736 ; call _uart_crlf_put() 2737 ;info 252, 280 2738 0118 22de call _uart_crlf_put 2739 ; Recombine size1 = 0 || size2 = 0 2740 0119 : main__43: 2741 ; line_number = 234 2742 ; if end_of_line_get() done 2743 0119 297f goto main__45 2744 ; 2GOTO: Starting code 2 2745 011a : main__44: 2746 ; line_number = 253 2747 ;info 253, 282 2748 ; Left minus Right 2749 011a 30a9 movlw 169 2750 011b 0726 addwf main__command,w 2751 ; =>bit_code_emit@symbol(): sym=__z 2752 ; No 1TEST: true.size=13 false.size=83 2753 ; No 2TEST: true.size=13 false.size=83 2754 ; 2GOTO: Single test with two GOTO's 2755 011c 1d03 btfss __z___byte, __z___bit 2756 011d 292c goto main__35 2757 ; # Write: 2758 ; line_number = 255 2759 ; call hex_word_get() 2760 ;info 255, 286 2761 011e 2261 call hex_word_get 2762 ; line_number = 256 2763 ; value := hex_byte_get() 2764 ;info 256, 287 2765 011f 225e call hex_byte_get 2766 0120 00ae movwf main__value 2767 ; line_number = 257 2768 ; if end_of_line_get() start 2769 ;info 257, 289 2770 0121 2241 call end_of_line_get 2771 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2772 ; No 1TEST: true.size=7 false.size=0 2773 ; No 2TEST: true.size=7 false.size=0 2774 ; 1GOTO: Single test with GOTO 2775 0122 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2776 0123 292b goto main__34 2777 ; line_number = 258 2778 ; call _uart_hex_put(hex_high) 2779 ;info 258, 292 2780 0124 0823 movf hex_high,w 2781 0125 22c8 call _uart_hex_put 2782 ; line_number = 259 2783 ; call _uart_hex_put(hex_low) 2784 ;info 259, 294 2785 0126 0824 movf hex_low,w 2786 0127 22c8 call _uart_hex_put 2787 ; line_number = 260 2788 ; call _uart_hex_put(value) 2789 ;info 260, 296 2790 0128 082e movf main__value,w 2791 0129 22c8 call _uart_hex_put 2792 ; line_number = 261 2793 ; call _uart_crlf_put() 2794 ;info 261, 298 2795 012a 22de call _uart_crlf_put 2796 ; Recombine size1 = 0 || size2 = 0 2797 012b : main__34: 2798 ; line_number = 257 2799 ; if end_of_line_get() done 2800 012b 297f goto main__36 2801 ; 2GOTO: Starting code 2 2802 012c : main__35: 2803 ; line_number = 262 2804 ;info 262, 300 2805 ; Left minus Right 2806 012c 30a8 movlw 168 2807 012d 0726 addwf main__command,w 2808 ; =>bit_code_emit@symbol(): sym=__z 2809 ; No 1TEST: true.size=35 false.size=43 2810 ; No 2TEST: true.size=35 false.size=43 2811 ; 2GOTO: Single test with two GOTO's 2812 012e 1d03 btfss __z___byte, __z___bit 2813 012f 2954 goto main__32 2814 ; # Transmit: 2815 ; line_number = 264 2816 ; value := hex_byte_get() 2817 ;info 264, 304 2818 0130 225e call hex_byte_get 2819 0131 00ae movwf main__value 2820 ; line_number = 265 2821 ; if end_of_line_get() start 2822 ;info 265, 306 2823 0132 2241 call end_of_line_get 2824 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2825 ; No 1TEST: true.size=30 false.size=0 2826 ; No 2TEST: true.size=30 false.size=0 2827 ; 1GOTO: Single test with GOTO 2828 0133 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2829 0134 2953 goto main__31 2830 ; #call _uart_hex_put(value) 2831 ; #call _uart_crlf_put() 2832 ; line_number = 268 2833 ; call bus_byte_send(value) 2834 ;info 268, 309 2835 0135 082e movf main__value,w 2836 0136 21e0 call bus_byte_send 2837 2838 ; line_number = 270 2839 ; value := bus_byte_receive() 2840 ;info 270, 311 2841 0137 21fe call bus_byte_receive 2842 0138 00ae movwf main__value 2843 ; line_number = 271 2844 ; if time_out start 2845 ;info 271, 313 2846 ; =>bit_code_emit@symbol(): sym=time_out 2847 ; No 1TEST: true.size=2 false.size=2 2848 ; No 2TEST: true.size=2 false.size=2 2849 ; 2GOTO: Single test with two GOTO's 2850 0139 1d6f btfss time_out___byte, time_out___bit 2851 013a 293e goto main__25 2852 ; line_number = 272 2853 ; call _uart_byte_put('@') 2854 ;info 272, 315 2855 013b 3040 movlw 64 2856 013c 22e3 call _uart_byte_put 2857 013d 2940 goto main__26 2858 ; 2GOTO: Starting code 2 2859 013e : main__25: 2860 ; line_number = 274 2861 ; call _uart_hex_put(value) 2862 ;info 274, 318 2863 013e 082e movf main__value,w 2864 013f 22c8 call _uart_hex_put 2865 2866 0140 : main__26: 2867 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2868 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2869 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2870 ; line_number = 271 2871 ; if time_out done 2872 ; line_number = 276 2873 ; value := bus_byte_receive() 2874 ;info 276, 320 2875 0140 21fe call bus_byte_receive 2876 0141 00ae movwf main__value 2877 ; line_number = 277 2878 ; if time_out start 2879 ;info 277, 322 2880 ; =>bit_code_emit@symbol(): sym=time_out 2881 ; No 1TEST: true.size=2 false.size=2 2882 ; No 2TEST: true.size=2 false.size=2 2883 ; 2GOTO: Single test with two GOTO's 2884 0142 1d6f btfss time_out___byte, time_out___bit 2885 0143 2947 goto main__27 2886 ; line_number = 278 2887 ; call _uart_byte_put('@') 2888 ;info 278, 324 2889 0144 3040 movlw 64 2890 0145 22e3 call _uart_byte_put 2891 0146 2949 goto main__28 2892 ; 2GOTO: Starting code 2 2893 0147 : main__27: 2894 ; line_number = 280 2895 ; call _uart_hex_put(value) 2896 ;info 280, 327 2897 0147 082e movf main__value,w 2898 0148 22c8 call _uart_hex_put 2899 2900 0149 : main__28: 2901 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2902 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2903 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2904 ; line_number = 277 2905 ; if time_out done 2906 ; line_number = 282 2907 ; value := bus_byte_receive() 2908 ;info 282, 329 2909 0149 21fe call bus_byte_receive 2910 014a 00ae movwf main__value 2911 ; line_number = 283 2912 ; if time_out start 2913 ;info 283, 331 2914 ; =>bit_code_emit@symbol(): sym=time_out 2915 ; No 1TEST: true.size=2 false.size=2 2916 ; No 2TEST: true.size=2 false.size=2 2917 ; 2GOTO: Single test with two GOTO's 2918 014b 1d6f btfss time_out___byte, time_out___bit 2919 014c 2950 goto main__29 2920 ; line_number = 284 2921 ; call _uart_byte_put('@') 2922 ;info 284, 333 2923 014d 3040 movlw 64 2924 014e 22e3 call _uart_byte_put 2925 014f 2952 goto main__30 2926 ; 2GOTO: Starting code 2 2927 0150 : main__29: 2928 ; line_number = 286 2929 ; call _uart_hex_put(value) 2930 ;info 286, 336 2931 0150 082e movf main__value,w 2932 0151 22c8 call _uart_hex_put 2933 2934 0152 : main__30: 2935 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2936 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2937 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2938 ; line_number = 283 2939 ; if time_out done 2940 ; line_number = 288 2941 ; call _uart_crlf_put() 2942 ;info 288, 338 2943 0152 22de call _uart_crlf_put 2944 ; Recombine size1 = 0 || size2 = 0 2945 0153 : main__31: 2946 ; line_number = 265 2947 ; if end_of_line_get() done 2948 0153 297f goto main__33 2949 ; 2GOTO: Starting code 2 2950 0154 : main__32: 2951 ; line_number = 289 2952 ;info 289, 340 2953 ; Left minus Right 2954 0154 30a6 movlw 166 2955 0155 0726 addwf main__command,w 2956 ; =>bit_code_emit@symbol(): sym=__z 2957 ; No 1TEST: true.size=23 false.size=15 2958 ; No 2TEST: true.size=23 false.size=15 2959 ; 2GOTO: Single test with two GOTO's 2960 0156 1d03 btfss __z___byte, __z___bit 2961 0157 2970 goto main__23 2962 ; # Sweep bus looking for modules: 2963 ; line_number = 291 2964 ; if end_of_line_get() start 2965 ;info 291, 344 2966 0158 2241 call end_of_line_get 2967 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 2968 ; No 1TEST: true.size=20 false.size=0 2969 ; No 2TEST: true.size=20 false.size=0 2970 ; 1GOTO: Single test with GOTO 2971 0159 1eef btfss end_of_line_get__0return___byte, end_of_line_get__0return___bit 2972 015a 296f goto main__22 2973 ; line_number = 292 2974 ; node := 1 2975 ;info 292, 347 2976 015b 3001 movlw 1 2977 015c 00a9 movwf main__node 2978 ; line_number = 293 2979 ; while node != 0 start 2980 015d : main__19: 2981 ;info 293, 349 2982 ; Left minus Right 2983 015d 0829 movf main__node,w 2984 ; =>bit_code_emit@symbol(): sym=__z 2985 ; No 1TEST: true.size=0 false.size=15 2986 ; No 2TEST: true.size=0 false.size=15 2987 ; 1GOTO: Single test with GOTO 2988 015e 1903 btfsc __z___byte, __z___bit 2989 015f 296f goto main__21 2990 ; line_number = 294 2991 ; call bus_select_send(node) 2992 ;info 294, 352 2993 0160 0829 movf main__node,w 2994 0161 21ef call bus_select_send 2995 ; line_number = 295 2996 ; value := bus_byte_receive() 2997 ;info 295, 354 2998 0162 21fe call bus_byte_receive 2999 0163 00ae movwf main__value 3000 ; line_number = 296 3001 ; value := bus_byte_receive() 3002 ;info 296, 356 3003 0164 21fe call bus_byte_receive 3004 0165 00ae movwf main__value 3005 ; line_number = 297 3006 ; if !time_out start 3007 ;info 297, 358 3008 ; =>bit_code_emit@symbol(): sym=time_out 3009 ; No 1TEST: true.size=0 false.size=5 3010 ; No 2TEST: true.size=0 false.size=5 3011 ; 1GOTO: Single test with GOTO 3012 0166 196f btfsc time_out___byte, time_out___bit 3013 0167 296d goto main__20 3014 ; line_number = 298 3015 ; call _uart_hex_put(node) 3016 ;info 298, 360 3017 0168 0829 movf main__node,w 3018 0169 22c8 call _uart_hex_put 3019 ; line_number = 299 3020 ; call _uart_byte_put(':') 3021 ;info 299, 362 3022 016a 303a movlw 58 3023 016b 22e3 call _uart_byte_put 3024 ; line_number = 300 3025 ; call id_dump() 3026 ;info 300, 364 3027 016c 21af call id_dump 3028 016d : main__20: 3029 ; Recombine size1 = 0 || size2 = 0 3030 ; line_number = 297 3031 ; if !time_out done 3032 ; line_number = 301 3033 ; node := node + 1 3034 ;info 301, 365 3035 016d 0aa9 incf main__node,f 3036 016e 295d goto main__19 3037 016f : main__21: 3038 ; Recombine size1 = 0 || size2 = 0 3039 ; line_number = 293 3040 ; while node != 0 done 3041 ; Recombine size1 = 0 || size2 = 0 3042 016f : main__22: 3043 ; line_number = 291 3044 ; if end_of_line_get() done 3045 016f 297f goto main__24 3046 ; 2GOTO: Starting code 2 3047 0170 : main__23: 3048 ; line_number = 302 3049 ;info 302, 368 3050 ; Left minus Right 3051 0170 30c6 movlw 198 3052 0171 0726 addwf main__command,w 3053 ; =>bit_code_emit@symbol(): sym=__z 3054 ; No 1TEST: true.size=3 false.size=7 3055 ; No 2TEST: true.size=3 false.size=7 3056 ; 2GOTO: Single test with two GOTO's 3057 0172 1d03 btfss __z___byte, __z___bit 3058 0173 2978 goto main__17 3059 ; # Hex: 3060 ; line_number = 304 3061 ; if end_of_line_get() start 3062 ;info 304, 372 3063 0174 2241 call end_of_line_get 3064 ; =>bit_code_emit@symbol(): sym=end_of_line_get__0return 3065 ; 1TEST: Single test with code in skip slot 3066 0175 1aef btfsc end_of_line_get__0return___byte, end_of_line_get__0return___bit 3067 ; line_number = 305 3068 ; call _uart_crlf_put() 3069 ;info 305, 374 3070 0176 22de call _uart_crlf_put 3071 ; Recombine size1 = 0 || size2 = 0 3072 ; line_number = 304 3073 ; if end_of_line_get() done 3074 0177 297f goto main__18 3075 ; 2GOTO: Starting code 2 3076 0178 : main__17: 3077 ; line_number = 306 3078 ;info 306, 376 3079 ; Left minus Right 3080 0178 30f3 movlw 243 3081 0179 0726 addwf main__command,w 3082 ; =>bit_code_emit@symbol(): sym=__z 3083 ; No 1TEST: true.size=0 false.size=3 3084 ; No 2TEST: true.size=0 false.size=3 3085 ; 1GOTO: Single test with GOTO 3086 017a 1903 btfsc __z___byte, __z___bit 3087 017b 297f goto main__16 3088 ; # Illegal command: 3089 ; line_number = 311 3090 ; call _uart_byte_put('?') 3091 ;info 311, 380 3092 017c 303f movlw 63 3093 017d 22e3 call _uart_byte_put 3094 ; line_number = 312 3095 ; call _uart_crlf_put() 3096 ;info 312, 382 3097 017e 22de call _uart_crlf_put 3098 3099 017f : main__16: 3100 ; # Blank line: 3101 ; line_number = 308 3102 ; do_nothing 3103 ;info 308, 383 3104 ; Recombine code1_bit_states != code2_bit_states 3105 017f : main__18: 3106 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3107 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3108 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3109 017f : main__24: 3110 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3111 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3112 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3113 017f : main__33: 3114 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3115 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3116 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3117 017f : main__36: 3118 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3119 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3120 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3121 017f : main__45: 3122 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3123 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3124 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3125 017f : main__48: 3126 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3127 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3128 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3129 017f : main__59: 3130 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3131 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3132 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3133 017f : main__62: 3134 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3135 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3136 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3137 017f : main__64: 3138 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3139 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3140 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3141 017f : main__71: 3142 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3143 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3144 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3145 017f : main__77: 3146 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3147 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3148 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3149 017f : main__79: 3150 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3151 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3152 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3153 017f : main__82: 3154 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3155 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3156 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3157 017f : main__85: 3158 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3159 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3160 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3161 ; line_number = 121 3162 ; if command = 'A' done 3163 ; # Provide a prompt: 3164 ; line_number = 315 3165 ; call _uart_byte_put('>') 3166 ;info 315, 383 3167 017f 303e movlw 62 3168 0180 22e3 call _uart_byte_put 3169 0181 29ae goto main__87 3170 ; 2GOTO: Starting code 2 3171 0182 : main__86: 3172 ; # Binary mode command: 3173 ; line_number = 318 3174 ; send := (command >> 3) & 7 3175 ;info 318, 386 3176 00000039 = main__4 equ globals___0+25 3177 0182 0c26 rrf main__command,w 3178 0183 00b9 movwf main__4 3179 0184 0cb9 rrf main__4,f 3180 0185 0c39 rrf main__4,w 3181 0186 3907 andlw 7 3182 0187 00ad movwf main__send 3183 ; line_number = 319 3184 ; receive := command & 7 3185 ;info 319, 392 3186 0188 3007 movlw 7 3187 0189 0526 andwf main__command,w 3188 018a 00ab movwf main__receive 3189 ; line_number = 320 3190 ; bit9 := _false 3191 ;info 320, 395 3192 018b 126f bcf main__bit9___byte, main__bit9___bit 3193 ; line_number = 321 3194 ; if command@6 start 3195 ;info 321, 396 3196 00000026 = main__select__5___byte equ main__command 3197 00000006 = main__select__5___bit equ 6 3198 ; =>bit_code_emit@symbol(): sym=main__select__5 3199 ; 1TEST: Single test with code in skip slot 3200 018c 1b26 btfsc main__select__5___byte, main__select__5___bit 3201 ; line_number = 322 3202 ; bit9 := _true 3203 ;info 322, 397 3204 018d 166f bsf main__bit9___byte, main__bit9___bit 3205 ; Recombine size1 = 0 || size2 = 0 3206 ; line_number = 321 3207 ; if command@6 done 3208 ; line_number = 323 3209 ; if send != 0 start 3210 ;info 323, 398 3211 ; Left minus Right 3212 018e 082d movf main__send,w 3213 ; =>bit_code_emit@symbol(): sym=__z 3214 ; No 1TEST: true.size=0 false.size=13 3215 ; No 2TEST: true.size=0 false.size=13 3216 ; 1GOTO: Single test with GOTO 3217 018f 1903 btfsc __z___byte, __z___bit 3218 0190 29a0 goto main__10 3219 ; line_number = 324 3220 ; loop_exactly send start 3221 ;info 324, 401 3222 00000039 = main__6 equ globals___0+25 3223 0191 082d movf main__send,w 3224 0192 00b9 movwf main__6 3225 0193 : main__7: 3226 ; line_number = 325 3227 ; command := _uart_byte_get() 3228 ;info 325, 403 3229 0193 22c4 call _uart_byte_get 3230 0194 00a6 movwf main__command 3231 ; line_number = 326 3232 ; if bit9 start 3233 ;info 326, 405 3234 ; =>bit_code_emit@symbol(): sym=main__bit9 3235 ; No 1TEST: true.size=3 false.size=2 3236 ; No 2TEST: true.size=3 false.size=2 3237 ; 2GOTO: Single test with two GOTO's 3238 0195 1e6f btfss main__bit9___byte, main__bit9___bit 3239 0196 299b goto main__8 3240 ; line_number = 327 3241 ; bit9 := _false 3242 ;info 327, 407 3243 0197 126f bcf main__bit9___byte, main__bit9___bit 3244 ; line_number = 328 3245 ; call bus_select_send(command) 3246 ;info 328, 408 3247 0198 0826 movf main__command,w 3248 0199 21ef call bus_select_send 3249 019a 299d goto main__9 3250 ; 2GOTO: Starting code 2 3251 019b : main__8: 3252 ; line_number = 330 3253 ; call bus_byte_send(command) 3254 ;info 330, 411 3255 019b 0826 movf main__command,w 3256 019c 21e0 call bus_byte_send 3257 019d : main__9: 3258 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3259 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3260 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3261 ; line_number = 326 3262 ; if bit9 done 3263 ; line_number = 331 3264 ; call bus_byte_receive() 3265 ;info 331, 413 3266 019d 21fe call bus_byte_receive 3267 ; line_number = 324 3268 ; loop_exactly send wrap-up 3269 019e 0bb9 decfsz main__6,f 3270 019f 2993 goto main__7 3271 ; line_number = 324 3272 ; loop_exactly send done 3273 01a0 : main__10: 3274 ; Recombine size1 = 0 || size2 = 0 3275 ; line_number = 323 3276 ; if send != 0 done 3277 ; line_number = 332 3278 ; if receive != 0 start 3279 ;info 332, 416 3280 ; Left minus Right 3281 01a0 082b movf main__receive,w 3282 ; =>bit_code_emit@symbol(): sym=__z 3283 ; No 1TEST: true.size=0 false.size=9 3284 ; No 2TEST: true.size=0 false.size=9 3285 ; 1GOTO: Single test with GOTO 3286 01a1 1903 btfsc __z___byte, __z___bit 3287 01a2 29ae goto main__13 3288 ; #index := 0 3289 ; line_number = 334 3290 ; loop_exactly receive start 3291 ;info 334, 419 3292 00000039 = main__11 equ globals___0+25 3293 01a3 082b movf main__receive,w 3294 01a4 00b9 movwf main__11 3295 01a5 : main__12: 3296 ; line_number = 335 3297 ; command := bus_byte_receive() 3298 ;info 335, 421 3299 01a5 21fe call bus_byte_receive 3300 01a6 00a6 movwf main__command 3301 ; line_number = 336 3302 ; if time_out start 3303 ;info 336, 423 3304 ; =>bit_code_emit@symbol(): sym=time_out 3305 ; No 1TEST: true.size=1 false.size=1 3306 ; 2TEST: two tests with code in both delay slots 3307 01a7 196f btfsc time_out___byte, time_out___bit 3308 ; line_number = 337 3309 ; call _uart_byte_put(0xfc) 3310 ;info 337, 424 3311 01a8 30fc movlw 252 3312 01a9 1d6f btfss time_out___byte, time_out___bit 3313 ; line_number = 339 3314 ; call _uart_byte_put(command) 3315 ;info 339, 426 3316 01aa 0826 movf main__command,w 3317 01ab 22e3 call _uart_byte_put 3318 ; line_number = 336 3319 ; if time_out done 3320 ; #call _uart_byte_put(0x40 | index) 3321 ; #index := (index + 1) & 0x3f 3322 3323 3324 ; line_number = 334 3325 ; loop_exactly receive wrap-up 3326 01ac 0bb9 decfsz main__11,f 3327 01ad 29a5 goto main__12 3328 ; line_number = 334 3329 ; loop_exactly receive done 3330 01ae : main__13: 3331 ; Recombine size1 = 0 || size2 = 0 3332 ; line_number = 332 3333 ; if receive != 0 done 3334 01ae : main__87: 3335 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3336 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3337 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3338 ; line_number = 110 3339 ; if command & 0x80 = 0 done 3340 ; line_number = 102 3341 ; loop_forever wrap-up 3342 01ae 281d goto main__3 3343 ; line_number = 102 3344 ; loop_forever done 3345 ; delay after procedure statements=non-uniform 3346 3347 3348 3349 3350 ; line_number = 344 3351 ;info 344, 431 3352 ; procedure id_dump 3353 01af : id_dump: 3354 ; arguments_none 3355 ; line_number = 346 3356 ; returns_nothing 3357 3358 ; # This procedure will print out the id information for the 3359 ; # currently selected module. 3360 3361 ; line_number = 351 3362 ; local value byte 3363 0000002f = id_dump__value equ globals___0+15 3364 3365 ; # Reset the id index: 3366 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3367 ; line_number = 354 3368 ; value := bus_byte_send_receive(0xfe) 3369 ;info 354, 431 3370 01af 30fe movlw 254 3371 01b0 21da call bus_byte_send_receive 3372 01b1 00af movwf id_dump__value 3373 3374 ; # Read the fixed part: 3375 ; line_number = 357 3376 ; loop_exactly 5 start 3377 ;info 357, 434 3378 0000003a = id_dump__1 equ globals___0+26 3379 01b2 3005 movlw 5 3380 01b3 00ba movwf id_dump__1 3381 01b4 : id_dump__2: 3382 ; line_number = 358 3383 ; value := bus_byte_send_receive(0xfd) 3384 ;info 358, 436 3385 01b4 30fd movlw 253 3386 01b5 21da call bus_byte_send_receive 3387 01b6 00af movwf id_dump__value 3388 ; line_number = 359 3389 ; call _uart_hex_put(value) 3390 ;info 359, 439 3391 01b7 082f movf id_dump__value,w 3392 01b8 22c8 call _uart_hex_put 3393 ; line_number = 360 3394 ; call _uart_space_put() 3395 ;info 360, 441 3396 01b9 22db call _uart_space_put 3397 3398 3399 ; line_number = 357 3400 ; loop_exactly 5 wrap-up 3401 01ba 0bba decfsz id_dump__1,f 3402 01bb 29b4 goto id_dump__2 3403 ; line_number = 357 3404 ; loop_exactly 5 done 3405 ; # Dump the name string: 3406 ; line_number = 364 3407 ; if value & 2 != 0 start 3408 ;info 364, 444 3409 ; Left minus Right 3410 01bc 3002 movlw 2 3411 01bd 052f andwf id_dump__value,w 3412 ; =>bit_code_emit@symbol(): sym=__z 3413 ; 1TEST: Single test with code in skip slot 3414 01be 1d03 btfss __z___byte, __z___bit 3415 ; line_number = 365 3416 ; call string_dump() 3417 ;info 365, 447 3418 01bf 21c6 call string_dump 3419 3420 ; Recombine size1 = 0 || size2 = 0 3421 ; line_number = 364 3422 ; if value & 2 != 0 done 3423 ; # Dump the vendor string: 3424 ; line_number = 368 3425 ; if value & 1 != 0 start 3426 ;info 368, 448 3427 ; Left minus Right 3428 01c0 3001 movlw 1 3429 01c1 052f andwf id_dump__value,w 3430 ; =>bit_code_emit@symbol(): sym=__z 3431 ; 1TEST: Single test with code in skip slot 3432 01c2 1d03 btfss __z___byte, __z___bit 3433 ; line_number = 369 3434 ; call string_dump() 3435 ;info 369, 451 3436 01c3 21c6 call string_dump 3437 3438 ; Recombine size1 = 0 || size2 = 0 3439 ; line_number = 368 3440 ; if value & 1 != 0 done 3441 ; line_number = 371 3442 ; call _uart_crlf_put() 3443 ;info 371, 452 3444 01c4 22de call _uart_crlf_put 3445 3446 3447 ; delay after procedure statements=non-uniform 3448 ; Implied return 3449 01c5 3400 retlw 0 3450 3451 3452 3453 3454 ; line_number = 374 3455 ;info 374, 454 3456 ; procedure string_dump 3457 01c6 : string_dump: 3458 ; arguments_none 3459 ; line_number = 376 3460 ; returns_nothing 3461 3462 ; # This procedure will dump a string from the id information. 3463 3464 ; line_number = 380 3465 ; local length byte 3466 00000030 = string_dump__length equ globals___0+16 3467 3468 ; # We have a vendor string; now read the length: 3469 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3470 ; line_number = 383 3471 ; call _uart_space_put() 3472 ;info 383, 454 3473 01c6 22db call _uart_space_put 3474 ; line_number = 384 3475 ; length := bus_byte_send_receive(0xfd) 3476 ;info 384, 455 3477 01c7 30fd movlw 253 3478 01c8 21da call bus_byte_send_receive 3479 01c9 00b0 movwf string_dump__length 3480 ; line_number = 385 3481 ; call _uart_hex_put(length) 3482 ;info 385, 458 3483 01ca 0830 movf string_dump__length,w 3484 01cb 22c8 call _uart_hex_put 3485 ; line_number = 386 3486 ; call _uart_byte_put(':') 3487 ;info 386, 460 3488 01cc 303a movlw 58 3489 01cd 22e3 call _uart_byte_put 3490 3491 ; # Print out the vendor string: 3492 ; line_number = 389 3493 ; call _uart_byte_put('"') 3494 ;info 389, 462 3495 01ce 3022 movlw 34 3496 01cf 22e3 call _uart_byte_put 3497 ; line_number = 390 3498 ; loop_exactly length start 3499 ;info 390, 464 3500 0000003b = string_dump__1 equ globals___0+27 3501 01d0 0830 movf string_dump__length,w 3502 01d1 00bb movwf string_dump__1 3503 01d2 : string_dump__2: 3504 ; line_number = 391 3505 ; call _uart_byte_put(bus_byte_send_receive(0xfd)) 3506 ;info 391, 466 3507 01d2 30fd movlw 253 3508 01d3 21da call bus_byte_send_receive 3509 01d4 22e3 call _uart_byte_put 3510 ; line_number = 390 3511 ; loop_exactly length wrap-up 3512 01d5 0bbb decfsz string_dump__1,f 3513 01d6 29d2 goto string_dump__2 3514 ; line_number = 390 3515 ; loop_exactly length done 3516 ; line_number = 392 3517 ; call _uart_byte_put('"') 3518 ;info 392, 471 3519 01d7 3022 movlw 34 3520 01d8 22e3 call _uart_byte_put 3521 3522 3523 ; delay after procedure statements=non-uniform 3524 ; Implied return 3525 01d9 3400 retlw 0 3526 3527 3528 3529 3530 ; line_number = 395 3531 ;info 395, 474 3532 ; procedure bus_byte_send_receive 3533 01da : bus_byte_send_receive: 3534 ; Last argument is sitting in W; save into argument variable 3535 01da 00b1 movwf bus_byte_send_receive__value 3536 ; delay=4294967295 3537 ; line_number = 396 3538 ; argument value byte 3539 00000031 = bus_byte_send_receive__value equ globals___0+17 3540 ; line_number = 397 3541 ; returns byte 3542 3543 ; # This procedure will send {value} to the currently selected module 3544 ; # and return the response. 3545 3546 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3547 ; line_number = 402 3548 ; call bus_byte_send(value) 3549 ;info 402, 475 3550 01db 0831 movf bus_byte_send_receive__value,w 3551 01dc 21e0 call bus_byte_send 3552 ; line_number = 403 3553 ; call bus_byte_receive() 3554 ;info 403, 477 3555 01dd 21fe call bus_byte_receive 3556 ; line_number = 404 3557 ; return bus_byte_receive() start 3558 ; line_number = 404 3559 ;info 404, 478 3560 01de 21fe call bus_byte_receive 3561 01df 0008 return 3562 ; line_number = 404 3563 ; return bus_byte_receive() done 3564 3565 3566 ; delay after procedure statements=non-uniform 3567 3568 3569 3570 3571 ; line_number = 407 3572 ;info 407, 480 3573 ; procedure bus_byte_send 3574 01e0 : bus_byte_send: 3575 ; Last argument is sitting in W; save into argument variable 3576 01e0 00b2 movwf bus_byte_send__value 3577 ; delay=4294967295 3578 ; line_number = 408 3579 ; argument value byte 3580 00000032 = bus_byte_send__value equ globals___0+18 3581 ; line_number = 409 3582 ; returns_nothing 3583 3584 ; # This procedure will cause a {value} byte to be sent to the bus. 3585 3586 ; #call _uart_byte_put('{') 3587 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3588 ; line_number = 414 3589 ; loop_exactly 4 start 3590 ;info 414, 481 3591 0000003c = bus_byte_send__1 equ globals___0+28 3592 01e1 3004 movlw 4 3593 01e2 00bc movwf bus_byte_send__1 3594 01e3 : bus_byte_send__2: 3595 ; line_number = 415 3596 ; call shift2(value & 3) 3597 ;info 415, 483 3598 01e3 3003 movlw 3 3599 01e4 0532 andwf bus_byte_send__value,w 3600 01e5 2218 call shift2 3601 ; line_number = 416 3602 ; value := value >> 2 3603 ;info 416, 486 3604 ; Assignment of variable to self (no code needed) 3605 01e6 0cb2 rrf bus_byte_send__value,f 3606 01e7 0cb2 rrf bus_byte_send__value,f 3607 01e8 303f movlw 63 3608 01e9 05b2 andwf bus_byte_send__value,f 3609 ; line_number = 414 3610 ; loop_exactly 4 wrap-up 3611 01ea 0bbc decfsz bus_byte_send__1,f 3612 01eb 29e3 goto bus_byte_send__2 3613 ; line_number = 414 3614 ; loop_exactly 4 done 3615 ; line_number = 417 3616 ; call shift2(4) 3617 ;info 417, 492 3618 01ec 3004 movlw 4 3619 01ed 2218 call shift2 3620 ; #call _uart_byte_put('}') 3621 3622 3623 ; delay after procedure statements=non-uniform 3624 ; Implied return 3625 01ee 3400 retlw 0 3626 3627 3628 3629 3630 ; line_number = 421 3631 ;info 421, 495 3632 ; procedure bus_select_send 3633 01ef : bus_select_send: 3634 ; Last argument is sitting in W; save into argument variable 3635 01ef 00b3 movwf bus_select_send__node 3636 ; delay=4294967295 3637 ; line_number = 422 3638 ; argument node byte 3639 00000033 = bus_select_send__node equ globals___0+19 3640 ; line_number = 423 3641 ; returns_nothing 3642 3643 ; # This procedure will cause a {node} select byte to be sent. 3644 3645 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3646 ; line_number = 427 3647 ; loop_exactly 4 start 3648 ;info 427, 496 3649 0000003d = bus_select_send__1 equ globals___0+29 3650 01f0 3004 movlw 4 3651 01f1 00bd movwf bus_select_send__1 3652 01f2 : bus_select_send__2: 3653 ; line_number = 428 3654 ; call shift2(node & 3) 3655 ;info 428, 498 3656 01f2 3003 movlw 3 3657 01f3 0533 andwf bus_select_send__node,w 3658 01f4 2218 call shift2 3659 ; line_number = 429 3660 ; node := node >> 2 3661 ;info 429, 501 3662 ; Assignment of variable to self (no code needed) 3663 01f5 0cb3 rrf bus_select_send__node,f 3664 01f6 0cb3 rrf bus_select_send__node,f 3665 01f7 303f movlw 63 3666 01f8 05b3 andwf bus_select_send__node,f 3667 ; line_number = 427 3668 ; loop_exactly 4 wrap-up 3669 01f9 0bbd decfsz bus_select_send__1,f 3670 01fa 29f2 goto bus_select_send__2 3671 ; line_number = 427 3672 ; loop_exactly 4 done 3673 ; line_number = 430 3674 ; call shift2(5) 3675 ;info 430, 507 3676 01fb 3005 movlw 5 3677 01fc 2218 call shift2 3678 3679 3680 ; delay after procedure statements=non-uniform 3681 ; Implied return 3682 01fd 3400 retlw 0 3683 3684 3685 3686 3687 ; line_number = 433 3688 ;info 433, 510 3689 ; procedure bus_byte_receive 3690 01fe : bus_byte_receive: 3691 ; arguments_none 3692 ; line_number = 435 3693 ; returns byte 3694 3695 ; # This procedure receive a byte from the bus processor. 3696 ; # {time_out} is set if no byte is received in a reasonable 3697 ; # amount of time. 3698 3699 ; #call _uart_byte_put('[') 3700 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3701 ; line_number = 442 3702 ; time_out := _false 3703 ;info 442, 510 3704 01fe 116f bcf time_out___byte, time_out___bit 3705 ; # Where does 15*20 come from? This seems to be the minimum 3706 ; # timeout that works with programming a PIC16F876. 3707 ; line_number = 445 3708 ; loop_exactly 15 start 3709 ;info 445, 511 3710 0000003e = bus_byte_receive__1 equ globals___0+30 3711 01ff 300f movlw 15 3712 0200 00be movwf bus_byte_receive__1 3713 0201 : bus_byte_receive__2: 3714 ; line_number = 446 3715 ; loop_exactly 20 start 3716 ;info 446, 513 3717 0000003f = bus_byte_receive__3 equ globals___0+31 3718 0201 3014 movlw 20 3719 0202 00bf movwf bus_byte_receive__3 3720 0203 : bus_byte_receive__4: 3721 ; line_number = 447 3722 ; call shift2(6) 3723 ;info 447, 515 3724 0203 3006 movlw 6 3725 0204 2218 call shift2 3726 ; line_number = 448 3727 ; if !(bus_shift@1) start 3728 ;info 448, 517 3729 00000025 = bus_byte_receive__select__8___byte equ bus_shift 3730 00000001 = bus_byte_receive__select__8___bit equ 1 3731 ; =>bit_code_emit@symbol(): sym=bus_byte_receive__select__8 3732 ; No 1TEST: true.size=0 false.size=9 3733 ; No 2TEST: true.size=0 false.size=9 3734 ; 1GOTO: Single test with GOTO 3735 0205 18a5 btfsc bus_byte_receive__select__8___byte, bus_byte_receive__select__8___bit 3736 0206 2a12 goto bus_byte_receive__9 3737 ; # We got one: 3738 ; line_number = 450 3739 ; bus_msb := _false 3740 ;info 450, 519 3741 0207 11ef bcf bus_msb___byte, bus_msb___bit 3742 ; line_number = 451 3743 ; if bus_shift@0 start 3744 ;info 451, 520 3745 00000025 = bus_byte_receive__select__5___byte equ bus_shift 3746 00000000 = bus_byte_receive__select__5___bit equ 0 3747 ; =>bit_code_emit@symbol(): sym=bus_byte_receive__select__5 3748 ; 1TEST: Single test with code in skip slot 3749 0208 1825 btfsc bus_byte_receive__select__5___byte, bus_byte_receive__select__5___bit 3750 ; line_number = 452 3751 ; bus_msb := _true 3752 ;info 452, 521 3753 0209 15ef bsf bus_msb___byte, bus_msb___bit 3754 ; Recombine size1 = 0 || size2 = 0 3755 ; line_number = 451 3756 ; if bus_shift@0 done 3757 ; line_number = 453 3758 ; loop_exactly 4 start 3759 ;info 453, 522 3760 00000040 = bus_byte_receive__6 equ globals___0+32 3761 020a 3004 movlw 4 3762 020b 00c0 movwf bus_byte_receive__6 3763 020c : bus_byte_receive__7: 3764 ; line_number = 454 3765 ; call shift2(0) 3766 ;info 454, 524 3767 020c 3000 movlw 0 3768 020d 2218 call shift2 3769 ; line_number = 453 3770 ; loop_exactly 4 wrap-up 3771 020e 0bc0 decfsz bus_byte_receive__6,f 3772 020f 2a0c goto bus_byte_receive__7 3773 ; line_number = 453 3774 ; loop_exactly 4 done 3775 ; #call _uart_byte_put(']') 3776 ; line_number = 456 3777 ; return bus_shift start 3778 ; line_number = 456 3779 ;info 456, 528 3780 0210 0825 movf bus_shift,w 3781 0211 0008 return 3782 ; line_number = 456 3783 ; return bus_shift done 3784 0212 : bus_byte_receive__9: 3785 ; Recombine size1 = 0 || size2 = 0 3786 ; line_number = 448 3787 ; if !(bus_shift@1) done 3788 ; line_number = 446 3789 ; loop_exactly 20 wrap-up 3790 0212 0bbf decfsz bus_byte_receive__3,f 3791 0213 2a03 goto bus_byte_receive__4 3792 ; line_number = 446 3793 ; loop_exactly 20 done 3794 ; line_number = 445 3795 ; loop_exactly 15 wrap-up 3796 0214 0bbe decfsz bus_byte_receive__1,f 3797 0215 2a01 goto bus_byte_receive__2 3798 ; line_number = 445 3799 ; loop_exactly 15 done 3800 ; line_number = 457 3801 ; time_out := _true 3802 ;info 457, 534 3803 0216 156f bsf time_out___byte, time_out___bit 3804 ; #call _uart_byte_put(']') 3805 ; line_number = 459 3806 ; return 0 start 3807 ; line_number = 459 3808 ;info 459, 535 3809 0217 3400 retlw 0 3810 ; line_number = 459 3811 ; return 0 done 3812 3813 3814 ; delay after procedure statements=non-uniform 3815 3816 3817 3818 3819 ; line_number = 462 3820 ;info 462, 536 3821 ; procedure shift2 3822 0218 : shift2: 3823 ; Last argument is sitting in W; save into argument variable 3824 0218 00b4 movwf shift2__value 3825 ; delay=4294967295 3826 ; line_number = 463 3827 ; argument value byte 3828 00000034 = shift2__value equ globals___0+20 3829 ; line_number = 464 3830 ; returns_nothing 3831 3832 ; # This procedure will cause 3 bits to be sent to the bus processor 3833 ; # and 2 bits returned from the bus processor into {bus_shift}. 3834 3835 ; #call _uart_byte_put('<') 3836 3837 ; # Set the 3 bits to send up. The two lower bits are data and 3838 ; # the 3rd bit is STROBE. 3839 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3840 ; line_number = 473 3841 ; p4 := _false 3842 ;info 473, 537 3843 0219 1005 bcf p4___byte, p4___bit 3844 ; line_number = 474 3845 ; p3 := _false 3846 ;info 474, 538 3847 021a 1187 bcf p3___byte, p3___bit 3848 ; line_number = 475 3849 ; p2 := _false 3850 ;info 475, 539 3851 021b 1107 bcf p2___byte, p2___bit 3852 3853 ; line_number = 477 3854 ; if value@2 start 3855 ;info 477, 540 3856 00000034 = shift2__select__1___byte equ shift2__value 3857 00000002 = shift2__select__1___bit equ 2 3858 ; =>bit_code_emit@symbol(): sym=shift2__select__1 3859 ; 1TEST: Single test with code in skip slot 3860 021c 1934 btfsc shift2__select__1___byte, shift2__select__1___bit 3861 ; line_number = 478 3862 ; p4 := _true 3863 ;info 478, 541 3864 021d 1405 bsf p4___byte, p4___bit 3865 ; Recombine size1 = 0 || size2 = 0 3866 ; line_number = 477 3867 ; if value@2 done 3868 ; # call _uart_byte_put('1') 3869 ; #else 3870 ; # call _uart_byte_put('0') 3871 ; line_number = 482 3872 ; if value@1 start 3873 ;info 482, 542 3874 00000034 = shift2__select__2___byte equ shift2__value 3875 00000001 = shift2__select__2___bit equ 1 3876 ; =>bit_code_emit@symbol(): sym=shift2__select__2 3877 ; 1TEST: Single test with code in skip slot 3878 021e 18b4 btfsc shift2__select__2___byte, shift2__select__2___bit 3879 ; line_number = 483 3880 ; p3 := _true 3881 ;info 483, 543 3882 021f 1587 bsf p3___byte, p3___bit 3883 ; Recombine size1 = 0 || size2 = 0 3884 ; line_number = 482 3885 ; if value@1 done 3886 ; # call _uart_byte_put('1') 3887 ; #else 3888 ; # call _uart_byte_put('0') 3889 ; line_number = 487 3890 ; if value@0 start 3891 ;info 487, 544 3892 00000034 = shift2__select__3___byte equ shift2__value 3893 00000000 = shift2__select__3___bit equ 0 3894 ; =>bit_code_emit@symbol(): sym=shift2__select__3 3895 ; 1TEST: Single test with code in skip slot 3896 0220 1834 btfsc shift2__select__3___byte, shift2__select__3___bit 3897 ; line_number = 488 3898 ; p2 := _true 3899 ;info 488, 545 3900 0221 1507 bsf p2___byte, p2___bit 3901 ; Recombine size1 = 0 || size2 = 0 3902 ; line_number = 487 3903 ; if value@0 done 3904 ; # call _uart_byte_put('1') 3905 ; #else 3906 ; # call _uart_byte_put('0') 3907 3908 ; # Let the bus processor know that we have some data: 3909 ; line_number = 494 3910 ; if p6 start 3911 ;info 494, 546 3912 ; =>bit_code_emit@symbol(): sym=p6 3913 ; No 1TEST: true.size=3 false.size=3 3914 ; No 2TEST: true.size=3 false.size=3 3915 ; 2GOTO: Single test with two GOTO's 3916 0222 1d05 btfss p6___byte, p6___bit 3917 0223 2a28 goto shift2__6 3918 ; #call _uart_byte_put('L') 3919 ; line_number = 496 3920 ; p6 := _false 3921 ;info 496, 548 3922 0224 1105 bcf p6___byte, p6___bit 3923 ; # Wait until the bus processor has a response. 3924 ; line_number = 498 3925 ; while p5 start 3926 0225 : shift2__5: 3927 ;info 498, 549 3928 ; =>bit_code_emit@symbol(): sym=p5 3929 ; 1TEST: Single test with code in skip slot 3930 0225 1885 btfsc p5___byte, p5___bit 3931 ; line_number = 499 3932 ; do_nothing 3933 ;info 499, 550 3934 0226 2a25 goto shift2__5 3935 ; Recombine size1 = 0 || size2 = 0 3936 ; line_number = 498 3937 ; while p5 done 3938 0227 2a2b goto shift2__7 3939 ; 2GOTO: Starting code 2 3940 0228 : shift2__6: 3941 ; #call _uart_byte_put('H') 3942 ; line_number = 502 3943 ; p6 := _true 3944 ;info 502, 552 3945 0228 1505 bsf p6___byte, p6___bit 3946 ; # Wait until the bus processor has a response. 3947 ; line_number = 504 3948 ; while !p5 start 3949 0229 : shift2__4: 3950 ;info 504, 553 3951 ; =>bit_code_emit@symbol(): sym=p5 3952 ; 1TEST: Single test with code in skip slot 3953 0229 1c85 btfss p5___byte, p5___bit 3954 ; line_number = 505 3955 ; do_nothing 3956 ;info 505, 554 3957 3958 022a 2a29 goto shift2__4 3959 ; Recombine size1 = 0 || size2 = 0 3960 ; line_number = 504 3961 ; while !p5 done 3962 022b : shift2__7: 3963 ; 2GOTO: code1 final bitstates:(data:X0=cu=>X0 code:XX=cc=>XX) 3964 ; 2GOTO: code2 final bitstates:(data:X0=cu=>X0 code:XX=cc=>XX) 3965 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 3966 ; line_number = 494 3967 ; if p6 done 3968 ; # The bus processor has a response. Now grab the data. 3969 ; line_number = 508 3970 ; bus_shift := bus_shift << 2 3971 ;info 508, 555 3972 ; Assignment of variable to self (no code needed) 3973 022b 0da5 rlf bus_shift,f 3974 022c 0da5 rlf bus_shift,f 3975 022d 30fc movlw 252 3976 022e 05a5 andwf bus_shift,f 3977 ; line_number = 509 3978 ; if p1 start 3979 ;info 509, 559 3980 ; =>bit_code_emit@symbol(): sym=p1 3981 ; 1TEST: Single test with code in skip slot 3982 022f 1887 btfsc p1___byte, p1___bit 3983 ; line_number = 510 3984 ; bus_shift@1 := _true 3985 ;info 510, 560 3986 00000025 = shift2__select__8___byte equ bus_shift 3987 00000001 = shift2__select__8___bit equ 1 3988 0230 14a5 bsf shift2__select__8___byte, shift2__select__8___bit 3989 ; Recombine size1 = 0 || size2 = 0 3990 ; line_number = 509 3991 ; if p1 done 3992 ; # call _uart_byte_put('1') 3993 ; #else 3994 ; # call _uart_byte_put('0') 3995 ; line_number = 514 3996 ; if p0 start 3997 ;info 514, 561 3998 ; =>bit_code_emit@symbol(): sym=p0 3999 ; 1TEST: Single test with code in skip slot 4000 0231 1807 btfsc p0___byte, p0___bit 4001 ; line_number = 515 4002 ; bus_shift@0 := _true 4003 ;info 515, 562 4004 00000025 = shift2__select__9___byte equ bus_shift 4005 00000000 = shift2__select__9___bit equ 0 4006 0232 1425 bsf shift2__select__9___byte, shift2__select__9___bit 4007 ; Recombine size1 = 0 || size2 = 0 4008 ; line_number = 514 4009 ; if p0 done 4010 ; # call _uart_byte_put('1') 4011 ; #else 4012 ; # call _uart_byte_put('0') 4013 4014 ; #call _uart_byte_put('>') 4015 4016 4017 ; delay after procedure statements=non-uniform 4018 ; Implied return 4019 0233 3400 retlw 0 4020 4021 4022 4023 4024 ; line_number = 523 4025 ;info 523, 564 4026 ; procedure character_get 4027 0234 : character_get: 4028 ; arguments_none 4029 ; line_number = 525 4030 ; returns byte 4031 4032 ; # This procedure will get a character from the user and echo it. 4033 ; # If the user types '\r\', an extra line feed is output and 4034 ; # the global {end_of_line} bit is set. 4035 4036 ; line_number = 531 4037 ; local character byte 4038 00000035 = character_get__character equ globals___0+21 4039 4040 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4041 ; line_number = 533 4042 ; character := _uart_byte_get() 4043 ;info 533, 564 4044 0234 22c4 call _uart_byte_get 4045 0235 00b5 movwf character_get__character 4046 ; line_number = 534 4047 ; call _uart_byte_put(character) 4048 ;info 534, 566 4049 0236 0835 movf character_get__character,w 4050 0237 22e3 call _uart_byte_put 4051 ; line_number = 535 4052 ; if character = '\r\' start 4053 ;info 535, 568 4054 ; Left minus Right 4055 0238 30f3 movlw 243 4056 0239 0735 addwf character_get__character,w 4057 ; =>bit_code_emit@symbol(): sym=__z 4058 ; No 1TEST: true.size=3 false.size=0 4059 ; No 2TEST: true.size=3 false.size=0 4060 ; 1GOTO: Single test with GOTO 4061 023a 1d03 btfss __z___byte, __z___bit 4062 023b 2a3f goto character_get__1 4063 ; line_number = 536 4064 ; end_of_line := _true 4065 ;info 536, 572 4066 023c 14ef bsf end_of_line___byte, end_of_line___bit 4067 ; line_number = 537 4068 ; call _uart_byte_put('\n\') 4069 ;info 537, 573 4070 023d 300a movlw 10 4071 023e 22e3 call _uart_byte_put 4072 ; Recombine size1 = 0 || size2 = 0 4073 023f : character_get__1: 4074 ; line_number = 535 4075 ; if character = '\r\' done 4076 ; line_number = 538 4077 ; return character start 4078 ; line_number = 538 4079 ;info 538, 575 4080 023f 0835 movf character_get__character,w 4081 0240 0008 return 4082 ; line_number = 538 4083 ; return character done 4084 4085 4086 ; delay after procedure statements=non-uniform 4087 4088 4089 4090 4091 0000006f = end_of_line_get__0return___byte equ globals___0+79 4092 00000005 = end_of_line_get__0return___bit equ 5 4093 ; line_number = 541 4094 ;info 541, 577 4095 ; procedure end_of_line_get 4096 0241 : end_of_line_get: 4097 ; arguments_none 4098 ; line_number = 543 4099 ; returns bit 4100 4101 ; # This procedure will return 1 if end of line has been reached 4102 ; # without error; otherwise 0 is returned and an error exclamation 4103 ; # point ('!') is output. 4104 4105 ; line_number = 549 4106 ; local character byte 4107 00000036 = end_of_line_get__character equ globals___0+22 4108 4109 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4110 ; line_number = 551 4111 ; if error start 4112 ;info 551, 577 4113 ; =>bit_code_emit@symbol(): sym=error 4114 ; No 1TEST: true.size=2 false.size=0 4115 ; No 2TEST: true.size=2 false.size=0 4116 ; 1GOTO: Single test with GOTO 4117 0241 1c6f btfss error___byte, error___bit 4118 0242 2a45 goto end_of_line_get__1 4119 ; line_number = 552 4120 ; return 0 start 4121 ; line_number = 552 4122 ;info 552, 579 4123 0243 12ef bcf end_of_line_get__0return___byte, end_of_line_get__0return___bit 4124 0244 0008 return 4125 ; line_number = 552 4126 ; return 0 done 4127 ; Recombine size1 = 0 || size2 = 0 4128 0245 : end_of_line_get__1: 4129 ; line_number = 551 4130 ; if error done 4131 ; line_number = 553 4132 ; while !end_of_line start 4133 0245 : end_of_line_get__2: 4134 ;info 553, 581 4135 ; =>bit_code_emit@symbol(): sym=end_of_line 4136 ; No 1TEST: true.size=0 false.size=21 4137 ; No 2TEST: true.size=0 false.size=21 4138 ; 1GOTO: Single test with GOTO 4139 0245 18ef btfsc end_of_line___byte, end_of_line___bit 4140 0246 2a5c goto end_of_line_get__5 4141 ; line_number = 554 4142 ; character := character_get() 4143 ;info 554, 583 4144 0247 2234 call character_get 4145 0248 00b6 movwf end_of_line_get__character 4146 ; line_number = 555 4147 ; if character != '\r\' && character != '\t\' && character != ' ' start 4148 ;info 555, 585 4149 ; Left minus Right 4150 0249 30f3 movlw 243 4151 024a 0736 addwf end_of_line_get__character,w 4152 ; =>bit_code_emit@symbol(): sym=__z 4153 ; No 1TEST: true.size=1 false.size=14 4154 ; No 2TEST: true.size=1 false.size=14 4155 ; 2GOTO: Single test with two GOTO's 4156 024b 1903 btfsc __z___byte, __z___bit 4157 024c 2a5b goto end_of_line_get__3 4158 ; Recombine code1_bit_states != code2_bit_states 4159 ; Recombine code1_bit_states != code2_bit_states 4160 ; Left minus Right 4161 024d 30f7 movlw 247 4162 024e 0736 addwf end_of_line_get__character,w 4163 ; =>bit_code_emit@symbol(): sym=__z 4164 ; No 1TEST: true.size=1 false.size=10 4165 ; No 2TEST: true.size=1 false.size=10 4166 ; 2GOTO: Single test with two GOTO's 4167 024f 1903 btfsc __z___byte, __z___bit 4168 0250 2a5b goto end_of_line_get__3 4169 ; Recombine code1_bit_states != code2_bit_states 4170 ; &&||: index=2 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4171 ; Left minus Right 4172 0251 30e0 movlw 224 4173 0252 0736 addwf end_of_line_get__character,w 4174 ; =>bit_code_emit@symbol(): sym=__z 4175 ; No 1TEST: true.size=0 false.size=6 4176 ; No 2TEST: true.size=0 false.size=6 4177 ; 1GOTO: Single test with GOTO 4178 0253 1903 btfsc __z___byte, __z___bit 4179 0254 2a5b goto end_of_line_get__4 4180 ; line_number = 556 4181 ; error := _true 4182 ;info 556, 597 4183 0255 146f bsf error___byte, error___bit 4184 ; line_number = 557 4185 ; call _uart_byte_put('!') 4186 ;info 557, 598 4187 0256 3021 movlw 33 4188 0257 22e3 call _uart_byte_put 4189 ; line_number = 558 4190 ; call _uart_crlf_put() 4191 ;info 558, 600 4192 0258 22de call _uart_crlf_put 4193 ; line_number = 559 4194 ; return 0 start 4195 ; line_number = 559 4196 ;info 559, 601 4197 0259 12ef bcf end_of_line_get__0return___byte, end_of_line_get__0return___bit 4198 025a 0008 return 4199 ; line_number = 559 4200 ; return 0 done 4201 025b : end_of_line_get__4: 4202 025b : end_of_line_get__3: 4203 ; Recombine code1_bit_states != code2_bit_states 4204 ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4205 ; &&||:: index=1 new_delay=4294967295 goto_delay=4294967295 4206 ; 2GOTO: No goto needed; true=end_of_line_get__3 false= true_size=1 false_size=10 4207 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4208 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4209 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4210 ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4211 ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295 4212 ; 2GOTO: No goto needed; true=end_of_line_get__3 false= true_size=1 false_size=14 4213 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4214 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4215 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4216 ; line_number = 555 4217 ; if character != '\r\' && character != '\t\' && character != ' ' done 4218 025b 2a45 goto end_of_line_get__2 4219 025c : end_of_line_get__5: 4220 ; Recombine size1 = 0 || size2 = 0 4221 ; line_number = 553 4222 ; while !end_of_line done 4223 ; line_number = 560 4224 ; return 1 start 4225 ; line_number = 560 4226 ;info 560, 604 4227 025c 16ef bsf end_of_line_get__0return___byte, end_of_line_get__0return___bit 4228 025d 0008 return 4229 ; line_number = 560 4230 ; return 1 done 4231 4232 4233 ; delay after procedure statements=non-uniform 4234 4235 4236 4237 4238 ; line_number = 563 4239 ;info 563, 606 4240 ; procedure hex_byte_get 4241 025e : hex_byte_get: 4242 ; arguments_none 4243 ; line_number = 565 4244 ; returns byte 4245 4246 ; # This procedure will get a hex byte from the user. Zero, one or 4247 ; # more spaces and tabs may preceed the hex byte. 4248 4249 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4250 ; line_number = 570 4251 ; call hex_word_get() 4252 ;info 570, 606 4253 025e 2261 call hex_word_get 4254 ; line_number = 571 4255 ; return hex_low start 4256 ; line_number = 571 4257 ;info 571, 607 4258 025f 0824 movf hex_low,w 4259 0260 0008 return 4260 ; line_number = 571 4261 ; return hex_low done 4262 4263 4264 ; delay after procedure statements=non-uniform 4265 4266 4267 4268 4269 ; line_number = 574 4270 ;info 574, 609 4271 ; procedure hex_word_get 4272 0261 : hex_word_get: 4273 ; arguments_none 4274 ; line_number = 576 4275 ; returns_nothing 4276 4277 ; # This procedure will get a 16-bit hexadecimal value and return 4278 ; # the result in {hex_high} and {hex_low}. 4279 4280 ; line_number = 581 4281 ; local character byte 4282 00000037 = hex_word_get__character equ globals___0+23 4283 ; line_number = 582 4284 ; local digit byte 4285 00000038 = hex_word_get__digit equ globals___0+24 4286 4287 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4288 ; line_number = 584 4289 ; hex_high := 0 4290 ;info 584, 609 4291 0261 01a3 clrf hex_high 4292 ; line_number = 585 4293 ; hex_low := 0 4294 ;info 585, 610 4295 0262 01a4 clrf hex_low 4296 ; line_number = 586 4297 ; character := ' ' 4298 ;info 586, 611 4299 0263 3020 movlw 32 4300 0264 00b7 movwf hex_word_get__character 4301 ; line_number = 587 4302 ; if !end_of_line start 4303 ;info 587, 613 4304 ; =>bit_code_emit@symbol(): sym=end_of_line 4305 ; No 1TEST: true.size=0 false.size=79 4306 ; No 2TEST: true.size=0 false.size=79 4307 ; 1GOTO: Single test with GOTO 4308 0265 18ef btfsc end_of_line___byte, end_of_line___bit 4309 0266 2ab6 goto hex_word_get__18 4310 ; line_number = 588 4311 ; while character = ' ' || character = '\t\' start 4312 0267 : hex_word_get__1: 4313 ;info 588, 615 4314 ; Left minus Right 4315 0267 30e0 movlw 224 4316 0268 0737 addwf hex_word_get__character,w 4317 ; =>bit_code_emit@symbol(): sym=__z 4318 ; No 1TEST: true.size=1 false.size=7 4319 ; No 2TEST: true.size=1 false.size=7 4320 ; 2GOTO: Single test with two GOTO's 4321 0269 1903 btfsc __z___byte, __z___bit 4322 026a 2a6f goto hex_word_get__2 4323 ; Recombine code1_bit_states != code2_bit_states 4324 ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4325 ; Left minus Right 4326 026b 30f7 movlw 247 4327 026c 0737 addwf hex_word_get__character,w 4328 ; =>bit_code_emit@symbol(): sym=__z 4329 ; No 1TEST: true.size=3 false.size=0 4330 ; No 2TEST: true.size=3 false.size=0 4331 ; 1GOTO: Single test with GOTO 4332 026d 1d03 btfss __z___byte, __z___bit 4333 026e 2a72 goto hex_word_get__3 4334 026f : hex_word_get__2: 4335 ; line_number = 589 4336 ; character := character_get() 4337 ;info 589, 623 4338 026f 2234 call character_get 4339 0270 00b7 movwf hex_word_get__character 4340 4341 0271 2a67 goto hex_word_get__1 4342 ; Recombine size1 = 0 || size2 = 0 4343 0272 : hex_word_get__3: 4344 ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4345 ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295 4346 ; 2GOTO: No goto needed; true=hex_word_get__2 false= true_size=1 false_size=7 4347 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4348 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4349 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4350 ; line_number = 588 4351 ; while character = ' ' || character = '\t\' done 4352 ; line_number = 591 4353 ; loop_forever start 4354 0272 : hex_word_get__4: 4355 ; line_number = 592 4356 ; if '0' <= character && character <= '9' start 4357 ;info 592, 626 4358 0272 3030 movlw 48 4359 0273 0237 subwf hex_word_get__character,w 4360 ; =>bit_code_emit@symbol(): sym=__c 4361 ; No 1TEST: true.size=49 false.size=1 4362 ; No 2TEST: true.size=49 false.size=1 4363 ; 2GOTO: Single test with two GOTO's 4364 0274 1c03 btfss __c___byte, __c___bit 4365 0275 2a7c goto hex_word_get__12 4366 ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4367 0276 3039 movlw 57 4368 0277 0237 subwf hex_word_get__character,w 4369 0278 1903 btfsc __z___byte, __z___bit 4370 0279 1003 bcf __c___byte, __c___bit 4371 ; =>bit_code_emit@symbol(): sym=__c 4372 ; No 1TEST: true.size=39 false.size=3 4373 ; No 2TEST: true.size=39 false.size=3 4374 ; 2GOTO: Single test with two GOTO's 4375 027a 1c03 btfss __c___byte, __c___bit 4376 027b 2aa4 goto hex_word_get__13 4377 027c : hex_word_get__12: 4378 ; line_number = 594 4379 ;info 594, 636 4380 027c 3041 movlw 65 4381 027d 0237 subwf hex_word_get__character,w 4382 ; =>bit_code_emit@symbol(): sym=__c 4383 ; No 1TEST: true.size=35 false.size=1 4384 ; No 2TEST: true.size=35 false.size=1 4385 ; 2GOTO: Single test with two GOTO's 4386 027e 1c03 btfss __c___byte, __c___bit 4387 027f 2a86 goto hex_word_get__9 4388 ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4389 0280 3046 movlw 70 4390 0281 0237 subwf hex_word_get__character,w 4391 0282 1903 btfsc __z___byte, __z___bit 4392 0283 1003 bcf __c___byte, __c___bit 4393 ; =>bit_code_emit@symbol(): sym=__c 4394 ; No 1TEST: true.size=25 false.size=3 4395 ; No 2TEST: true.size=25 false.size=3 4396 ; 2GOTO: Single test with two GOTO's 4397 0284 1c03 btfss __c___byte, __c___bit 4398 0285 2aa0 goto hex_word_get__10 4399 0286 : hex_word_get__9: 4400 ; line_number = 596 4401 ;info 596, 646 4402 0286 3061 movlw 97 4403 0287 0237 subwf hex_word_get__character,w 4404 ; =>bit_code_emit@symbol(): sym=__c 4405 ; No 1TEST: true.size=21 false.size=1 4406 ; No 2TEST: true.size=21 false.size=1 4407 ; 2GOTO: Single test with two GOTO's 4408 0288 1c03 btfss __c___byte, __c___bit 4409 0289 2a90 goto hex_word_get__6 4410 ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4411 028a 3066 movlw 102 4412 028b 0237 subwf hex_word_get__character,w 4413 028c 1903 btfsc __z___byte, __z___bit 4414 028d 1003 bcf __c___byte, __c___bit 4415 ; =>bit_code_emit@symbol(): sym=__c 4416 ; No 1TEST: true.size=11 false.size=3 4417 ; No 2TEST: true.size=11 false.size=3 4418 ; 2GOTO: Single test with two GOTO's 4419 028e 1c03 btfss __c___byte, __c___bit 4420 028f 2a9c goto hex_word_get__7 4421 0290 : hex_word_get__6: 4422 ; line_number = 598 4423 ;info 598, 656 4424 ; Left minus Right 4425 0290 30e0 movlw 224 4426 0291 0737 addwf hex_word_get__character,w 4427 ; =>bit_code_emit@symbol(): sym=__z 4428 ; No 1TEST: true.size=1 false.size=7 4429 ; No 2TEST: true.size=1 false.size=7 4430 ; 2GOTO: Single test with two GOTO's 4431 0292 1903 btfsc __z___byte, __z___bit 4432 0293 2a9a goto hex_word_get__5 4433 ; Recombine code1_bit_states != code2_bit_states 4434 ; Recombine code1_bit_states != code2_bit_states 4435 ; Left minus Right 4436 0294 30f7 movlw 247 4437 0295 0737 addwf hex_word_get__character,w 4438 ; =>bit_code_emit@symbol(): sym=__z 4439 ; No 1TEST: true.size=1 false.size=3 4440 ; No 2TEST: true.size=1 false.size=3 4441 ; 2GOTO: Single test with two GOTO's 4442 0296 1903 btfsc __z___byte, __z___bit 4443 0297 2a9a goto hex_word_get__5 4444 ; Recombine code1_bit_states != code2_bit_states 4445 ; &&||: index=2 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4446 ; =>bit_code_emit@symbol(): sym=end_of_line 4447 ; 1TEST: Single test with code in skip slot 4448 0298 1cef btfss end_of_line___byte, end_of_line___bit 4449 ; line_number = 601 4450 ; error := _true 4451 ;info 601, 665 4452 0299 146f bsf error___byte, error___bit 4453 ; line_number = 602 4454 ; return start 4455 ; line_number = 602 4456 ;info 602, 666 4457 029a : hex_word_get__5: 4458 ; line_number = 599 4459 ; return start 4460 ; line_number = 599 4461 ;info 599, 666 4462 029a 3400 retlw 0 4463 ; line_number = 599 4464 ; return done 4465 ; line_number = 602 4466 ; return done 4467 ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4468 ; &&||:: index=1 new_delay=4294967295 goto_delay=4294967295 4469 ; 2GOTO: No goto needed; true=hex_word_get__5 false= true_size=1 false_size=3 4470 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4471 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4472 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4473 ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4474 ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295 4475 ; 2GOTO: No goto needed; true=hex_word_get__5 false= true_size=1 false_size=7 4476 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4477 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4478 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4479 029b 2a9f goto hex_word_get__8 4480 ; 2GOTO: Starting code 2 4481 029c : hex_word_get__7: 4482 ; line_number = 597 4483 ; digit := character + (10 - 'a') 4484 ;info 597, 668 4485 029c 30a9 movlw 169 4486 029d 0737 addwf hex_word_get__character,w 4487 029e 00b8 movwf hex_word_get__digit 4488 029f : hex_word_get__8: 4489 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4490 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4491 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4492 ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4493 ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295 4494 ; Recombine code1_bit_states != code2_bit_states 4495 ; 2GOTO: No goto needed; true= false=hex_word_get__6 true_size=21 false_size=1 4496 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4497 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4498 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4499 029f 2aa3 goto hex_word_get__11 4500 ; 2GOTO: Starting code 2 4501 02a0 : hex_word_get__10: 4502 ; line_number = 595 4503 ; digit := character + (10 - 'A') 4504 ;info 595, 672 4505 02a0 30c9 movlw 201 4506 02a1 0737 addwf hex_word_get__character,w 4507 02a2 00b8 movwf hex_word_get__digit 4508 02a3 : hex_word_get__11: 4509 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4510 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4511 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4512 ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4513 ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295 4514 ; Recombine code1_bit_states != code2_bit_states 4515 ; 2GOTO: No goto needed; true= false=hex_word_get__9 true_size=35 false_size=1 4516 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4517 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4518 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4519 02a3 2aa7 goto hex_word_get__14 4520 ; 2GOTO: Starting code 2 4521 02a4 : hex_word_get__13: 4522 ; line_number = 593 4523 ; digit := character - '0' 4524 ;info 593, 676 4525 02a4 30d0 movlw 208 4526 02a5 0737 addwf hex_word_get__character,w 4527 02a6 00b8 movwf hex_word_get__digit 4528 02a7 : hex_word_get__14: 4529 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4530 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4531 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4532 ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295 4533 ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295 4534 ; Recombine code1_bit_states != code2_bit_states 4535 ; 2GOTO: No goto needed; true= false=hex_word_get__12 true_size=49 false_size=1 4536 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4537 ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX) 4538 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 4539 ; line_number = 592 4540 ; if '0' <= character && character <= '9' done 4541 ; line_number = 603 4542 ; hex_high := (hex_high << 4) | (hex_low >> 4) 4543 ;info 603, 679 4544 00000041 = hex_word_get__15 equ globals___0+33 4545 02a7 0e23 swapf hex_high,w 4546 02a8 00c1 movwf hex_word_get__15 4547 02a9 30f0 movlw 240 4548 02aa 05c1 andwf hex_word_get__15,f 4549 00000042 = hex_word_get__16 equ globals___0+34 4550 02ab 0e24 swapf hex_low,w 4551 02ac 390f andlw 15 4552 02ad 0441 iorwf hex_word_get__15,w 4553 02ae 00a3 movwf hex_high 4554 ; line_number = 604 4555 ; hex_low := (hex_low << 4) | digit 4556 ;info 604, 687 4557 00000042 = hex_word_get__17 equ globals___0+34 4558 02af 0e24 swapf hex_low,w 4559 02b0 39f0 andlw 240 4560 02b1 0438 iorwf hex_word_get__digit,w 4561 02b2 00a4 movwf hex_low 4562 ; line_number = 605 4563 ; character := character_get() 4564 ;info 605, 691 4565 02b3 2234 call character_get 4566 02b4 00b7 movwf hex_word_get__character 4567 4568 ; line_number = 591 4569 ; loop_forever wrap-up 4570 02b5 2a72 goto hex_word_get__4 4571 ; line_number = 591 4572 ; loop_forever done 4573 02b6 : hex_word_get__18: 4574 ; Recombine size1 = 0 || size2 = 0 4575 ; line_number = 587 4576 ; if !end_of_line done 4577 ; delay after procedure statements=non-uniform 4578 ; Implied return 4579 02b6 3400 retlw 0 4580 4581 4582 4583 4584 4585 ; Appending 7 delayed procedures to code bank 0 4586 ; buffer = '_uart' 4587 ; line_number = 7 4588 ;info 7, 695 4589 ; procedure _uart_byte_safe_get 4590 02b7 : _uart_byte_safe_get: 4591 ; arguments_none 4592 ; line_number = 9 4593 ; returns byte 4594 4595 ; # This procedure will the next byte from UART. If no byte 4596 ; # received in a reasonable time, 0xfc is returned. 4597 4598 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4599 ; line_number = 14 4600 ; loop_exactly 255 start 4601 ;info 14, 695 4602 00000043 = _uart_byte_safe_get__1 equ globals___0+35 4603 02b7 30ff movlw 255 4604 02b8 00c3 movwf _uart_byte_safe_get__1 4605 02b9 : _uart_byte_safe_get__2: 4606 ; line_number = 15 4607 ; loop_exactly 255 start 4608 ;info 15, 697 4609 00000044 = _uart_byte_safe_get__3 equ globals___0+36 4610 02b9 30ff movlw 255 4611 02ba 00c4 movwf _uart_byte_safe_get__3 4612 02bb : _uart_byte_safe_get__4: 4613 ; line_number = 16 4614 ; if _rcif start 4615 ;info 16, 699 4616 ; =>bit_code_emit@symbol(): sym=_rcif 4617 ; No 1TEST: true.size=2 false.size=0 4618 ; No 2TEST: true.size=2 false.size=0 4619 ; 1GOTO: Single test with GOTO 4620 02bb 1e8c btfss _rcif___byte, _rcif___bit 4621 02bc 2abf goto _uart_byte_safe_get__5 4622 ; line_number = 17 4623 ; return _rcreg start 4624 ; line_number = 17 4625 ;info 17, 701 4626 02bd 0814 movf _rcreg,w 4627 02be 0008 return 4628 ; line_number = 17 4629 ; return _rcreg done 4630 ; Recombine size1 = 0 || size2 = 0 4631 02bf : _uart_byte_safe_get__5: 4632 ; line_number = 16 4633 ; if _rcif done 4634 ; line_number = 15 4635 ; loop_exactly 255 wrap-up 4636 02bf 0bc4 decfsz _uart_byte_safe_get__3,f 4637 02c0 2abb goto _uart_byte_safe_get__4 4638 ; line_number = 15 4639 ; loop_exactly 255 done 4640 ; line_number = 14 4641 ; loop_exactly 255 wrap-up 4642 02c1 0bc3 decfsz _uart_byte_safe_get__1,f 4643 02c2 2ab9 goto _uart_byte_safe_get__2 4644 ; line_number = 14 4645 ; loop_exactly 255 done 4646 ; line_number = 18 4647 ; return 0xfc start 4648 ; line_number = 18 4649 ;info 18, 707 4650 02c3 34fc retlw 252 4651 ; line_number = 18 4652 ; return 0xfc done 4653 4654 4655 ; delay after procedure statements=non-uniform 4656 4657 4658 4659 4660 ; line_number = 21 4661 ;info 21, 708 4662 ; procedure _uart_byte_get 4663 02c4 : _uart_byte_get: 4664 ; arguments_none 4665 ; line_number = 23 4666 ; returns byte 4667 4668 ; # This procedure will return the next byte from the UART. 4669 4670 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4671 ; line_number = 27 4672 ; while !_rcif start 4673 02c4 : _uart_byte_get__1: 4674 ;info 27, 708 4675 ; =>bit_code_emit@symbol(): sym=_rcif 4676 ; 1TEST: Single test with code in skip slot 4677 02c4 1e8c btfss _rcif___byte, _rcif___bit 4678 ; line_number = 28 4679 ; do_nothing 4680 ;info 28, 709 4681 02c5 2ac4 goto _uart_byte_get__1 4682 ; Recombine size1 = 0 || size2 = 0 4683 ; line_number = 27 4684 ; while !_rcif done 4685 ; line_number = 29 4686 ; return _rcreg start 4687 ; line_number = 29 4688 ;info 29, 710 4689 02c6 0814 movf _rcreg,w 4690 02c7 0008 return 4691 ; line_number = 29 4692 ; return _rcreg done 4693 4694 4695 ; delay after procedure statements=non-uniform 4696 4697 4698 4699 4700 ; line_number = 32 4701 ;info 32, 712 4702 ; procedure _uart_hex_put 4703 02c8 : _uart_hex_put: 4704 ; Last argument is sitting in W; save into argument variable 4705 02c8 00a0 movwf _uart_hex_put__value 4706 ; delay=4294967295 4707 ; line_number = 33 4708 ; argument value byte 4709 00000020 = _uart_hex_put__value equ globals___0 4710 ; line_number = 34 4711 ; returns_nothing 4712 4713 ; # This procedure will output {value} to the UART as a 2-digit 4714 ; # hexadecimal number. 4715 4716 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4717 ; line_number = 39 4718 ; call _uart_nibble_put(value >> 4) 4719 ;info 39, 713 4720 00000045 = _uart_hex_put__1 equ globals___0+37 4721 02c9 0e20 swapf _uart_hex_put__value,w 4722 02ca 390f andlw 15 4723 02cb 22d0 call _uart_nibble_put 4724 ; line_number = 40 4725 ; call _uart_nibble_put(value & 0xf) 4726 ;info 40, 716 4727 02cc 300f movlw 15 4728 02cd 0520 andwf _uart_hex_put__value,w 4729 02ce 22d0 call _uart_nibble_put 4730 4731 4732 ; delay after procedure statements=non-uniform 4733 ; Implied return 4734 02cf 3400 retlw 0 4735 4736 4737 4738 4739 ; line_number = 43 4740 ;info 43, 720 4741 ; procedure _uart_nibble_put 4742 02d0 : _uart_nibble_put: 4743 ; Last argument is sitting in W; save into argument variable 4744 02d0 00a1 movwf _uart_nibble_put__nibble 4745 ; delay=4294967295 4746 ; line_number = 44 4747 ; argument nibble byte 4748 00000021 = _uart_nibble_put__nibble equ globals___0+1 4749 ; line_number = 45 4750 ; returns_nothing 4751 4752 ; # This procedure will output {value} to UART as a 1 digit 4753 ; # hexadecimal number. 4754 4755 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4756 ; line_number = 50 4757 ; if nibble < 10 start 4758 ;info 50, 721 4759 02d1 300a movlw 10 4760 02d2 0221 subwf _uart_nibble_put__nibble,w 4761 ; =>bit_code_emit@symbol(): sym=__c 4762 ; No 1TEST: true.size=1 false.size=1 4763 ; 2TEST: two tests with code in both delay slots 4764 02d3 1803 btfsc __c___byte, __c___bit 4765 ; line_number = 53 4766 ; nibble := nibble - 10 + 'A' 4767 ;info 53, 724 4768 02d4 3037 movlw 55 4769 02d5 1c03 btfss __c___byte, __c___bit 4770 ; line_number = 51 4771 ; nibble := nibble + '0' 4772 ;info 51, 726 4773 02d6 3030 movlw 48 4774 02d7 07a1 addwf _uart_nibble_put__nibble,f 4775 ; line_number = 50 4776 ; if nibble < 10 done 4777 ; line_number = 54 4778 ; call _uart_byte_put(nibble) 4779 ;info 54, 728 4780 02d8 0821 movf _uart_nibble_put__nibble,w 4781 02d9 22e3 call _uart_byte_put 4782 4783 4784 ; delay after procedure statements=non-uniform 4785 ; Implied return 4786 02da 3400 retlw 0 4787 4788 4789 4790 4791 ; line_number = 57 4792 ;info 57, 731 4793 ; procedure _uart_space_put 4794 02db : _uart_space_put: 4795 ; arguments_none 4796 ; line_number = 59 4797 ; returns_nothing 4798 4799 ; # This procedure will output a space to the UART. 4800 4801 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4802 ; line_number = 63 4803 ; call _uart_byte_put(' ') 4804 ;info 63, 731 4805 02db 3020 movlw 32 4806 02dc 22e3 call _uart_byte_put 4807 4808 4809 ; delay after procedure statements=non-uniform 4810 ; Implied return 4811 02dd 3400 retlw 0 4812 4813 4814 4815 4816 ; line_number = 66 4817 ;info 66, 734 4818 ; procedure _uart_crlf_put 4819 02de : _uart_crlf_put: 4820 ; arguments_none 4821 ; line_number = 68 4822 ; returns_nothing 4823 4824 ; # This procedure will output a carriage return line feed sequecne to 4825 ; # the UART. 4826 4827 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4828 ; line_number = 73 4829 ; call _uart_byte_put('\cr\') 4830 ;info 73, 734 4831 02de 300d movlw 13 4832 02df 22e3 call _uart_byte_put 4833 ; line_number = 74 4834 ; call _uart_byte_put('\lf\') 4835 ;info 74, 736 4836 02e0 300a movlw 10 4837 02e1 22e3 call _uart_byte_put 4838 4839 4840 ; delay after procedure statements=non-uniform 4841 ; Implied return 4842 02e2 3400 retlw 0 4843 4844 4845 4846 4847 ; line_number = 77 4848 ;info 77, 739 4849 ; procedure _uart_byte_put 4850 02e3 : _uart_byte_put: 4851 ; Last argument is sitting in W; save into argument variable 4852 02e3 00a2 movwf _uart_byte_put__byte 4853 ; delay=4294967295 4854 ; line_number = 78 4855 ; argument byte byte 4856 00000022 = _uart_byte_put__byte equ globals___0+2 4857 ; line_number = 79 4858 ; returns_nothing 4859 4860 ; # This procedure will send {byte} out using to the UART. 4861 4862 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 4863 ; line_number = 83 4864 ; while !_txif start 4865 02e4 : _uart_byte_put__1: 4866 ;info 83, 740 4867 ; =>bit_code_emit@symbol(): sym=_txif 4868 ; 1TEST: Single test with code in skip slot 4869 02e4 1c8c btfss _txif___byte, _txif___bit 4870 ; line_number = 84 4871 ; do_nothing 4872 ;info 84, 741 4873 02e5 2ae4 goto _uart_byte_put__1 4874 ; Recombine size1 = 0 || size2 = 0 4875 ; line_number = 83 4876 ; while !_txif done 4877 ; line_number = 85 4878 ; _txreg := byte 4879 ;info 85, 742 4880 02e6 0822 movf _uart_byte_put__byte,w 4881 02e7 0095 movwf _txreg 4882 4883 4884 ; delay after procedure statements=non-uniform 4885 ; Implied return 4886 02e8 3400 retlw 0 4887 4888 4889 4890 4891 ; Configuration bits 4892 ; address = 0x2007, fill = 0x3000 4893 ; fcmen = off (0x0) 4894 ; ieso = off (0x0) 4895 ; boden = off (0x0) 4896 ; cpd = off (0x80) 4897 ; cp = off (0x40) 4898 ; mclre = off (0x0) 4899 ; pwrte = off (0x10) 4900 ; wdte = off (0x0) 4901 ; fosc = hs (0x2) 4902 ; 12498 = 0x30d2 4903 30d2 = __config 12498 4904 ; Define start addresses for data regions 4905 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 4906 ; Region="globals___0" Address=32" Size=80 Bytes=38 Bits=6 Available=41 4907 ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80 4908 ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80 4909 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 4910 end