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 by Wayne C. Gramlich 31 ; # All rights reserved. 32 33 ; buffer = 'midimotor2' 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 = 'midimotor2' 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 = 'midimotor2' 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 = 'midimotor2' 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 = ra4_in, name=io1, mask=io1_mask, bit=io1_bit 1626 00000005 = io1___byte equ _porta 1627 00000004 = io1___bit equ 4 1628 00000010 = io1_mask equ 16 1629 00000004 = io1_bit equ 4 1630 ; line_number = 19 1631 ; pin 4 = ra3_nc, name=nc1 1632 00000005 = nc1___byte equ _porta 1633 00000003 = nc1___bit equ 3 1634 ; line_number = 20 1635 ; pin 5 = rx, name=rx, bit=rx_bit 1636 00000007 = rx___byte equ _portc 1637 00000005 = rx___bit equ 5 1638 00000005 = rx_bit equ 5 1639 ; line_number = 21 1640 ; pin 6 = tx, name=tx, bit=tx_bit 1641 00000007 = tx___byte equ _portc 1642 00000004 = tx___bit equ 4 1643 00000004 = tx_bit equ 4 1644 ; line_number = 22 1645 ; pin 7 = rc3_in, name=io7, mask=io7_mask, bit=io7_bit 1646 00000007 = io7___byte equ _portc 1647 00000003 = io7___bit equ 3 1648 00000008 = io7_mask equ 8 1649 00000003 = io7_bit equ 3 1650 ; line_number = 23 1651 ; pin 8 = rc2_in, name=io6, mask=io6_mask, bit=io6_bit 1652 00000007 = io6___byte equ _portc 1653 00000002 = io6___bit equ 2 1654 00000004 = io6_mask equ 4 1655 00000002 = io6_bit equ 2 1656 ; line_number = 24 1657 ; pin 9 = rc1_in, name=io5, mask=io5_mask, bit=io5_bit 1658 00000007 = io5___byte equ _portc 1659 00000001 = io5___bit equ 1 1660 00000002 = io5_mask equ 2 1661 00000001 = io5_bit equ 1 1662 ; line_number = 25 1663 ; pin 10 = rc0_in, name=io4, mask=io4_mask, bit=io4_bit 1664 00000007 = io4___byte equ _portc 1665 00000000 = io4___bit equ 0 1666 00000001 = io4_mask equ 1 1667 00000000 = io4_bit equ 0 1668 ; line_number = 26 1669 ; pin 11 = ra2_in, name=io3, mask=io3_mask, bit=io3_bit 1670 00000005 = io3___byte equ _porta 1671 00000002 = io3___bit equ 2 1672 00000004 = io3_mask equ 4 1673 00000002 = io3_bit equ 2 1674 ; line_number = 27 1675 ; pin 12 = ra1_in, name=io2, mask=io2_mask, bit=io2_bit 1676 00000005 = io2___byte equ _porta 1677 00000001 = io2___bit equ 1 1678 00000002 = io2_mask equ 2 1679 00000001 = io2_bit equ 1 1680 ; line_number = 28 1681 ; pin 13 = ra0_in, name=io0, mask=io0_mask, bit=io0_bit 1682 00000005 = io0___byte equ _porta 1683 00000000 = io0___bit equ 0 1684 00000001 = io0_mask equ 1 1685 00000000 = io0_bit equ 0 1686 ; line_number = 29 1687 ; pin 14 = ground 1688 1689 ; line_number = 31 1690 ; global module_address byte 1691 00000023 = module_address equ globals___0+3 1692 ; line_number = 32 1693 ; global echo_discard bit 1694 0000006f = echo_discard___byte equ globals___0+79 1695 00000000 = echo_discard___bit equ 0 1696 ; line_number = 33 1697 ; global rx9d bit 1698 0000006f = rx9d___byte equ globals___0+79 1699 00000001 = rx9d___bit equ 1 1700 ; line_number = 34 1701 ; global id_index byte 1702 00000024 = id_index equ globals___0+4 1703 1704 ; line_number = 36 1705 ; origin 0 1706 0000 : org 0 1707 1708 ; line_number = 38 1709 ;info 38, 0 1710 ; procedure main 1711 0000 : main: 1712 ; Initialize some registers 1713 0000 019f clrf _adcon0 1714 0001 1683 bsf __rp0___byte, __rp0___bit 1715 0002 0191 clrf _ansel 1716 0003 3007 movlw 7 1717 0004 1283 bcf __rp0___byte, __rp0___bit 1718 0005 0099 movwf _cmcon0 1719 0006 303f movlw 63 1720 0007 1683 bsf __rp0___byte, __rp0___bit 1721 0008 0085 movwf _trisa 1722 0009 303f movlw 63 1723 000a 0087 movwf _trisc 1724 ; arguments_none 1725 ; line_number = 40 1726 ; returns_nothing 1727 1728 ; line_number = 42 1729 ; local command byte 1730 00000025 = main__command equ globals___0+5 1731 ; line_number = 43 1732 ; local transmit bit 1733 0000006f = main__transmit___byte equ globals___0+79 1734 00000002 = main__transmit___bit equ 2 1735 ; line_number = 44 1736 ; local result byte 1737 00000026 = main__result equ globals___0+6 1738 ; line_number = 45 1739 ; local mode byte 1740 00000027 = main__mode equ globals___0+7 1741 1742 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX) 1743 ; line_number = 47 1744 ; module_address := 2 1745 ;info 47, 11 1746 000b 3002 movlw 2 1747 000c 1283 bcf __rp0___byte, __rp0___bit 1748 000d 00a3 movwf module_address 1749 ; line_number = 48 1750 ; echo_discard := _true 1751 ;info 48, 14 1752 000e 146f bsf echo_discard___byte, echo_discard___bit 1753 1754 ; # Warm up the UART: 1755 ; line_number = 51 1756 ; _trisc@5 := _true 1757 ;info 51, 15 1758 00000087 = main__select__1___byte equ _trisc 1759 00000005 = main__select__1___bit equ 5 1760 000f 1683 bsf __rp0___byte, __rp0___bit 1761 0010 1687 bsf main__select__1___byte, main__select__1___bit 1762 ; line_number = 52 1763 ; _trisc@4 := _true 1764 ;info 52, 17 1765 00000087 = main__select__2___byte equ _trisc 1766 00000004 = main__select__2___bit equ 4 1767 0011 1607 bsf main__select__2___byte, main__select__2___bit 1768 1769 ; line_number = 54 1770 ; _txsta := 0 1771 ;info 54, 18 1772 0012 1283 bcf __rp0___byte, __rp0___bit 1773 0013 0196 clrf _txsta 1774 ; line_number = 55 1775 ; _tx9 := _true 1776 ;info 55, 20 1777 0014 1716 bsf _tx9___byte, _tx9___bit 1778 ; #_tx9 := _false 1779 ; line_number = 57 1780 ; _txen := _true 1781 ;info 57, 21 1782 0015 1696 bsf _txen___byte, _txen___bit 1783 ; line_number = 58 1784 ; _brgh := _true 1785 ;info 58, 22 1786 0016 1516 bsf _brgh___byte, _brgh___bit 1787 1788 ; line_number = 60 1789 ; _rcsta := 0 1790 ;info 60, 23 1791 0017 0197 clrf _rcsta 1792 ; line_number = 61 1793 ; _spen := _true 1794 ;info 61, 24 1795 0018 1797 bsf _spen___byte, _spen___bit 1796 ; line_number = 62 1797 ; _rx9 := _true 1798 ;info 62, 25 1799 0019 1717 bsf _rx9___byte, _rx9___bit 1800 ; #_rx9 := _false 1801 ; line_number = 64 1802 ; _cren := _true 1803 ;info 64, 26 1804 001a 1617 bsf _cren___byte, _cren___bit 1805 ; #_adden := _true 1806 ; line_number = 66 1807 ; _adden := _false 1808 ;info 66, 27 1809 001b 1197 bcf _adden___byte, _adden___bit 1810 1811 ; line_number = 68 1812 ; _baudctl := 0 1813 ;info 68, 28 1814 001c 0191 clrf _baudctl 1815 ; line_number = 69 1816 ; _brg16 := _true 1817 ;info 69, 29 1818 001d 1591 bsf _brg16___byte, _brg16___bit 1819 ; line_number = 70 1820 ; mode := 0 1821 ;info 70, 30 1822 001e 01a7 clrf main__mode 1823 ; line_number = 71 1824 ; id_index := 0 1825 ;info 71, 31 1826 001f 01a4 clrf id_index 1827 1828 ; #_spbrg := _eusart_19200_low 1829 ; #_spbrgh := _eusart_19200_high 1830 ; #_spbrg := _eusart_115200_low 1831 ; #_spbrgh := _eusart_115200_high 1832 ; #_spbrg := _eusart_230400_low 1833 ; #_spbrgh := _eusart_230400_high 1834 ; #_spbrg := _eusart_406800_low 1835 ; #_spbrgh := _eusart_406800_high 1836 ; line_number = 81 1837 ; _spbrg := _eusart_625000_low 1838 ;info 81, 32 1839 0020 3007 movlw 7 1840 0021 0093 movwf _spbrg 1841 ; line_number = 82 1842 ; _spbrgh := _eusart_625000_high 1843 ;info 82, 34 1844 0022 0192 clrf _spbrgh 1845 ; #_spbrg := _eusart_833333_low 1846 ; #_spbrgh := _eusart_833333_high 1847 1848 ; line_number = 86 1849 ; loop_forever start 1850 0023 : main__3: 1851 ; #command := _uart_byte_get() 1852 ; line_number = 88 1853 ; transmit := _false 1854 ;info 88, 35 1855 0023 116f bcf main__transmit___byte, main__transmit___bit 1856 ; line_number = 89 1857 ; rx9d := _false 1858 ;info 89, 36 1859 0024 10ef bcf rx9d___byte, rx9d___bit 1860 ; line_number = 90 1861 ; while !_rcif start 1862 0025 : main__4: 1863 ;info 90, 37 1864 ; =>bit_code_emit@symbol(): sym=_rcif 1865 ; 1TEST: Single test with code in skip slot 1866 0025 1e8c btfss _rcif___byte, _rcif___bit 1867 ; line_number = 91 1868 ; do_nothing 1869 ;info 91, 38 1870 0026 2825 goto main__4 1871 ; Recombine size1 = 0 || size2 = 0 1872 ; line_number = 90 1873 ; while !_rcif done 1874 ; line_number = 92 1875 ; if _rx9d start 1876 ;info 92, 39 1877 ; =>bit_code_emit@symbol(): sym=_rx9d 1878 ; 1TEST: Single test with code in skip slot 1879 0027 1817 btfsc _rx9d___byte, _rx9d___bit 1880 ; line_number = 93 1881 ; rx9d := _true 1882 ;info 93, 40 1883 0028 14ef bsf rx9d___byte, rx9d___bit 1884 ; Recombine size1 = 0 || size2 = 0 1885 ; line_number = 92 1886 ; if _rx9d done 1887 ; line_number = 94 1888 ; command := _rcreg 1889 ;info 94, 41 1890 0029 0814 movf _rcreg,w 1891 002a 00a5 movwf main__command 1892 1893 ; line_number = 96 1894 ; if rx9d start 1895 ;info 96, 43 1896 ; =>bit_code_emit@symbol(): sym=rx9d 1897 ; No 1TEST: true.size=11 false.size=178 1898 ; No 2TEST: true.size=11 false.size=178 1899 ; 2GOTO: Single test with two GOTO's 1900 002b 1cef btfss rx9d___byte, rx9d___bit 1901 002c 2839 goto main__48 1902 ; # We have an address bit: 1903 ; line_number = 98 1904 ; if command = module_address start 1905 ;info 98, 45 1906 ; Left minus Right 1907 002d 0823 movf module_address,w 1908 002e 0225 subwf main__command,w 1909 ; =>bit_code_emit@symbol(): sym=__z 1910 ; No 1TEST: true.size=4 false.size=1 1911 ; No 2TEST: true.size=4 false.size=1 1912 ; 2GOTO: Single test with two GOTO's 1913 002f 1d03 btfss __z___byte, __z___bit 1914 0030 2836 goto main__46 1915 ; # We have a match: 1916 ; line_number = 100 1917 ; _adden := _false 1918 ;info 100, 49 1919 0031 1197 bcf _adden___byte, _adden___bit 1920 ; line_number = 101 1921 ; result := 0x5a 1922 ;info 101, 50 1923 0032 305a movlw 90 1924 0033 00a6 movwf main__result 1925 ; line_number = 102 1926 ; transmit := _true 1927 ;info 102, 52 1928 0034 156f bsf main__transmit___byte, main__transmit___bit 1929 0035 2837 goto main__47 1930 ; 2GOTO: Starting code 2 1931 0036 : main__46: 1932 ; # We need to disable non-address reception: 1933 ; line_number = 105 1934 ; _adden := _true 1935 ;info 105, 54 1936 0036 1597 bsf _adden___byte, _adden___bit 1937 0037 : main__47: 1938 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1939 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1940 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 1941 ; line_number = 98 1942 ; if command = module_address done 1943 ; line_number = 106 1944 ; mode := 0 1945 ;info 106, 55 1946 0037 01a7 clrf main__mode 1947 0038 28eb goto main__49 1948 ; 2GOTO: Starting code 2 1949 0039 : main__48: 1950 ; # We have a command: 1951 ; line_number = 109 1952 ; switch mode start 1953 ;info 109, 57 1954 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 1955 0039 3000 movlw main__44>>8 1956 003a 008a movwf __pclath 1957 003b 0827 movf main__mode,w 1958 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 1959 003c 3e3e addlw main__44 1960 003d 0082 movwf __pcl 1961 ; page_group 4 1962 003e : main__44: 1963 003e 2842 goto main__40 1964 003f 28d8 goto main__41 1965 0040 28df goto main__42 1966 0041 28e6 goto main__43 1967 ; line_number = 110 1968 ; case 0 1969 0042 : main__40: 1970 ; # Basic instruction decoding: 1971 ; line_number = 112 1972 ; switch command >> 6 start 1973 ;info 112, 66 1974 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 1975 0042 3000 movlw main__37>>8 1976 0043 008a movwf __pclath 1977 00000036 = main__38 equ globals___0+22 1978 0044 0e25 swapf main__command,w 1979 0045 00b6 movwf main__38 1980 0046 0cb6 rrf main__38,f 1981 0047 0c36 rrf main__38,w 1982 0048 3903 andlw 3 1983 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 1984 0049 3e4b addlw main__37 1985 004a 0082 movwf __pcl 1986 ; page_group 4 1987 004b : main__37: 1988 004b 284f goto main__35 1989 004c 28d7 goto main__39 1990 004d 28d7 goto main__39 1991 004e 28a5 goto main__36 1992 ; line_number = 113 1993 ; case 0 1994 004f : main__35: 1995 ; # 00xx xxxx: 1996 ; line_number = 115 1997 ; switch (command >> 3) & 7 start 1998 ;info 115, 79 1999 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2000 ; line_number = 116 2001 ; case_maximum 7 2002 004f 3000 movlw main__21>>8 2003 0050 008a movwf __pclath 2004 00000036 = main__22 equ globals___0+22 2005 0051 0c25 rrf main__command,w 2006 0052 00b6 movwf main__22 2007 0053 0cb6 rrf main__22,f 2008 0054 0c36 rrf main__22,w 2009 0055 3907 andlw 7 2010 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2011 0056 3e58 addlw main__21 2012 0057 0082 movwf __pcl 2013 ; page_group 8 2014 0058 : main__21: 2015 0058 2860 goto main__16 2016 0059 28a4 goto main__23 2017 005a 288a goto main__17 2018 005b 288b goto main__18 2019 005c 288c goto main__19 2020 005d 288c goto main__19 2021 005e 2897 goto main__20 2022 005f 2897 goto main__20 2023 ; line_number = 117 2024 ; case 0 2025 0060 : main__16: 2026 ; # 0000 0xxx: 2027 ; line_number = 119 2028 ; switch command & 7 start 2029 ;info 119, 96 2030 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2031 ; line_number = 147 2032 ; case_maximum 7 2033 0060 3000 movlw main__11>>8 2034 0061 008a movwf __pclath 2035 0062 3007 movlw 7 2036 0063 0525 andwf main__command,w 2037 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2038 0064 3e66 addlw main__11 2039 0065 0082 movwf __pcl 2040 ; page_group 8 2041 0066 : main__11: 2042 0066 286e goto main__5 2043 0067 2872 goto main__6 2044 0068 2878 goto main__7 2045 0069 287c goto main__8 2046 006a 2881 goto main__9 2047 006b 2885 goto main__10 2048 006c 2889 goto main__12 2049 006d 2889 goto main__12 2050 ; line_number = 120 2051 ; case 0 2052 006e : main__5: 2053 ; # 0000 0000 (Digital8_Read): 2054 ; line_number = 122 2055 ; result := digital_read() 2056 ;info 122, 110 2057 006e 2141 call digital_read 2058 006f 00a6 movwf main__result 2059 ; line_number = 123 2060 ; transmit := _true 2061 ;info 123, 112 2062 0070 156f bsf main__transmit___byte, main__transmit___bit 2063 0071 2889 goto main__12 2064 ; line_number = 124 2065 ; case 1 2066 0072 : main__6: 2067 ; # 0000 0001 (Digital8_Write): 2068 ; line_number = 126 2069 ; result := digital_read() 2070 ;info 126, 114 2071 0072 2141 call digital_read 2072 0073 00a6 movwf main__result 2073 ; line_number = 127 2074 ; transmit := _true 2075 ;info 127, 116 2076 0074 156f bsf main__transmit___byte, main__transmit___bit 2077 ; line_number = 128 2078 ; mode := 1 2079 ;info 128, 117 2080 0075 3001 movlw 1 2081 0076 00a7 movwf main__mode 2082 0077 2889 goto main__12 2083 ; line_number = 129 2084 ; case 2 2085 0078 : main__7: 2086 ; # 0000 0010 (Direction_Read): 2087 ; line_number = 131 2088 ; result := direction_read() 2089 ;info 131, 120 2090 0078 2170 call direction_read 2091 0079 00a6 movwf main__result 2092 ; line_number = 132 2093 ; transmit := _true 2094 ;info 132, 122 2095 007a 156f bsf main__transmit___byte, main__transmit___bit 2096 007b 2889 goto main__12 2097 ; line_number = 133 2098 ; case 3 2099 007c : main__8: 2100 ; # 0000 0011 (Direction_Set): 2101 ; line_number = 135 2102 ; mode := 2 2103 ;info 135, 124 2104 007c 3002 movlw 2 2105 007d 00a7 movwf main__mode 2106 ; line_number = 136 2107 ; result := 0 2108 ;info 136, 126 2109 007e 01a6 clrf main__result 2110 ; line_number = 137 2111 ; transmit := _true 2112 ;info 137, 127 2113 007f 156f bsf main__transmit___byte, main__transmit___bit 2114 0080 2889 goto main__12 2115 ; line_number = 138 2116 ; case 4 2117 0081 : main__9: 2118 ; # 0000 0100 (Analog_Read): 2119 ; line_number = 140 2120 ; result := analog_read() 2121 ;info 140, 129 2122 0081 211a call analog_read 2123 0082 00a6 movwf main__result 2124 ; line_number = 141 2125 ; transmit := _true 2126 ;info 141, 131 2127 0083 156f bsf main__transmit___byte, main__transmit___bit 2128 0084 2889 goto main__12 2129 ; line_number = 142 2130 ; case 5 2131 0085 : main__10: 2132 ; # 0000 0100 (Analog_Set): 2133 ; line_number = 144 2134 ; mode := 3 2135 ;info 144, 133 2136 0085 3003 movlw 3 2137 0086 00a7 movwf main__mode 2138 ; line_number = 145 2139 ; result := 0 2140 ;info 145, 135 2141 0087 01a6 clrf main__result 2142 ; line_number = 146 2143 ; transmit := _true 2144 ;info 146, 136 2145 0088 156f bsf main__transmit___byte, main__transmit___bit 2146 0089 : main__12: 2147 ; line_number = 119 2148 ; switch command & 7 done 2149 0089 28a4 goto main__23 2150 ; line_number = 148 2151 ; case 2 2152 008a : main__17: 2153 ; # 0001 0ccc (Analog8_Read): 2154 ; line_number = 150 2155 ; do_nothing 2156 ;info 150, 138 2157 008a 28a4 goto main__23 2158 ; line_number = 151 2159 ; case 3 2160 008b : main__18: 2161 ; # 0001 1ccc (Analog10_Read): 2162 ; line_number = 153 2163 ; do_nothing 2164 ;info 153, 139 2165 008b 28a4 goto main__23 2166 ; line_number = 154 2167 ; case 4, 5 2168 008c : main__19: 2169 ; # 0010 dddd (Low_Set): 2170 ; line_number = 156 2171 ; result := digital_read() 2172 ;info 156, 140 2173 008c 2141 call digital_read 2174 008d 00a6 movwf main__result 2175 ; line_number = 157 2176 ; transmit := _true 2177 ;info 157, 142 2178 008e 156f bsf main__transmit___byte, main__transmit___bit 2179 ; line_number = 158 2180 ; call digital_set(result & 0xf0 | command & 0xf) 2181 ;info 158, 143 2182 00000036 = main__13 equ globals___0+22 2183 008f 30f0 movlw 240 2184 0090 0526 andwf main__result,w 2185 0091 00b6 movwf main__13 2186 0092 300f movlw 15 2187 0093 0525 andwf main__command,w 2188 0094 0436 iorwf main__13,w 2189 0095 2158 call digital_set 2190 0096 28a4 goto main__23 2191 ; line_number = 159 2192 ; case 6, 7 2193 0097 : main__20: 2194 ; # 0011 dddd (High_Set): 2195 ; line_number = 161 2196 ; result := digital_read() 2197 ;info 161, 151 2198 0097 2141 call digital_read 2199 0098 00a6 movwf main__result 2200 ; line_number = 162 2201 ; transmit := _true 2202 ;info 162, 153 2203 0099 156f bsf main__transmit___byte, main__transmit___bit 2204 ; line_number = 163 2205 ; call digital_set(result & 0xf | (command & 0xf) << 4) 2206 ;info 163, 154 2207 00000036 = main__14 equ globals___0+22 2208 009a 300f movlw 15 2209 009b 0526 andwf main__result,w 2210 009c 00b6 movwf main__14 2211 00000037 = main__15 equ globals___0+23 2212 009d 300f movlw 15 2213 009e 0525 andwf main__command,w 2214 009f 00b7 movwf main__15 2215 00a0 0eb7 swapf main__15,f 2216 00a1 39f0 andlw 240 2217 00a2 0436 iorwf main__14,w 2218 00a3 2158 call digital_set 2219 00a4 : main__23: 2220 ; line_number = 115 2221 ; switch (command >> 3) & 7 done 2222 00a4 28d7 goto main__39 2223 ; line_number = 164 2224 ; case 3 2225 00a5 : main__36: 2226 ; # 11xx xxxx: 2227 ; line_number = 166 2228 ; switch (command >> 3) & 7 start 2229 ;info 166, 165 2230 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2231 00a5 3000 movlw main__32>>8 2232 00a6 008a movwf __pclath 2233 00000036 = main__33 equ globals___0+22 2234 00a7 0c25 rrf main__command,w 2235 00a8 00b6 movwf main__33 2236 00a9 0cb6 rrf main__33,f 2237 00aa 0c36 rrf main__33,w 2238 00ab 3907 andlw 7 2239 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2240 00ac 3eae addlw main__32 2241 00ad 0082 movwf __pcl 2242 ; page_group 8 2243 00ae : main__32: 2244 00ae 28d7 goto main__34 2245 00af 28d7 goto main__34 2246 00b0 28d7 goto main__34 2247 00b1 28d7 goto main__34 2248 00b2 28d7 goto main__34 2249 00b3 28d7 goto main__34 2250 00b4 28d7 goto main__34 2251 00b5 28b6 goto main__31 2252 ; line_number = 167 2253 ; case 7 2254 00b6 : main__31: 2255 ; # 1111 1xxx: 2256 ; line_number = 169 2257 ; switch command & 7 start 2258 ;info 169, 182 2259 ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0 2260 00b6 3000 movlw main__29>>8 2261 00b7 008a movwf __pclath 2262 00b8 3007 movlw 7 2263 00b9 0525 andwf main__command,w 2264 ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX) 2265 00ba 3ebc addlw main__29 2266 00bb 0082 movwf __pcl 2267 ; page_group 8 2268 00bc : main__29: 2269 00bc 28d7 goto main__30 2270 00bd 28d7 goto main__30 2271 00be 28d7 goto main__30 2272 00bf 28d7 goto main__30 2273 00c0 28c4 goto main__25 2274 00c1 28c5 goto main__26 2275 00c2 28d0 goto main__27 2276 00c3 28d4 goto main__28 2277 ; line_number = 170 2278 ; case 4 2279 00c4 : main__25: 2280 ; # 1111 1100 (Address_Set) 2281 00c4 28d7 goto main__30 2282 ; line_number = 172 2283 ; case 5 2284 00c5 : main__26: 2285 ; # 1111 1101 (Id_Next) 2286 ; line_number = 174 2287 ; transmit := _true 2288 ;info 174, 197 2289 00c5 156f bsf main__transmit___byte, main__transmit___bit 2290 ; line_number = 175 2291 ; result := 0 2292 ;info 175, 198 2293 00c6 01a6 clrf main__result 2294 ; line_number = 176 2295 ; if id_index < id.size start 2296 ;info 176, 199 2297 00c7 301a movlw 26 2298 00c8 0224 subwf id_index,w 2299 ; =>bit_code_emit@symbol(): sym=__c 2300 ; No 1TEST: true.size=0 false.size=4 2301 ; No 2TEST: true.size=0 false.size=4 2302 ; 1GOTO: Single test with GOTO 2303 00c9 1803 btfsc __c___byte, __c___bit 2304 00ca 28cf goto main__24 2305 ; line_number = 177 2306 ; result := id[id_index] 2307 ;info 177, 203 2308 00cb 0824 movf id_index,w 2309 00cc 20f1 call id 2310 00cd 00a6 movwf main__result 2311 ; line_number = 178 2312 ; id_index := id_index + 1 2313 ;info 178, 206 2314 00ce 0aa4 incf id_index,f 2315 00cf : main__24: 2316 ; Recombine size1 = 0 || size2 = 0 2317 ; line_number = 176 2318 ; if id_index < id.size done 2319 ; #result := id_index 2320 00cf 28d7 goto main__30 2321 ; line_number = 180 2322 ; case 6 2323 00d0 : main__27: 2324 ; # 1111 1110 (Id_Start) 2325 ; line_number = 182 2326 ; id_index := 0 2327 ;info 182, 208 2328 00d0 01a4 clrf id_index 2329 ; line_number = 183 2330 ; result := 0 2331 ;info 183, 209 2332 00d1 01a6 clrf main__result 2333 ; line_number = 184 2334 ; transmit := _true 2335 ;info 184, 210 2336 00d2 156f bsf main__transmit___byte, main__transmit___bit 2337 00d3 28d7 goto main__30 2338 ; line_number = 185 2339 ; case 7 2340 00d4 : main__28: 2341 ; # 1111 1111 (Deselect): 2342 ; line_number = 187 2343 ; result := 0 2344 ;info 187, 212 2345 00d4 01a6 clrf main__result 2346 ; line_number = 188 2347 ; transmit := _true 2348 ;info 188, 213 2349 00d5 156f bsf main__transmit___byte, main__transmit___bit 2350 ; line_number = 189 2351 ; _adden := _true 2352 ;info 189, 214 2353 00d6 1597 bsf _adden___byte, _adden___bit 2354 00d7 : main__30: 2355 ; line_number = 169 2356 ; switch command & 7 done 2357 00d7 : main__34: 2358 ; line_number = 166 2359 ; switch (command >> 3) & 7 done 2360 00d7 : main__39: 2361 ; line_number = 112 2362 ; switch command >> 6 done 2363 00d7 28eb goto main__45 2364 ; line_number = 190 2365 ; case 1 2366 00d8 : main__41: 2367 ; # Digital8Write 2368 ; line_number = 192 2369 ; call digital_set(command) 2370 ;info 192, 216 2371 00d8 0825 movf main__command,w 2372 00d9 2158 call digital_set 2373 ; line_number = 193 2374 ; result := digital_read() 2375 ;info 193, 218 2376 00da 2141 call digital_read 2377 00db 00a6 movwf main__result 2378 ; line_number = 194 2379 ; transmit := _true 2380 ;info 194, 220 2381 00dc 156f bsf main__transmit___byte, main__transmit___bit 2382 ; line_number = 195 2383 ; mode := 0 2384 ;info 195, 221 2385 00dd 01a7 clrf main__mode 2386 00de 28eb goto main__45 2387 ; line_number = 196 2388 ; case 2 2389 00df : main__42: 2390 ; # Direction_Set: 2391 ; line_number = 198 2392 ; call direction_set(command) 2393 ;info 198, 223 2394 00df 0825 movf main__command,w 2395 00e0 218b call direction_set 2396 ; line_number = 199 2397 ; result := command 2398 ;info 199, 225 2399 00e1 0825 movf main__command,w 2400 00e2 00a6 movwf main__result 2401 ; line_number = 200 2402 ; transmit := _true 2403 ;info 200, 227 2404 00e3 156f bsf main__transmit___byte, main__transmit___bit 2405 ; line_number = 201 2406 ; mode := 0 2407 ;info 201, 228 2408 00e4 01a7 clrf main__mode 2409 00e5 28eb goto main__45 2410 ; line_number = 202 2411 ; case 3 2412 00e6 : main__43: 2413 ; # Analog_Set: 2414 ; line_number = 204 2415 ; call analog_set(command) 2416 ;info 204, 230 2417 00e6 0825 movf main__command,w 2418 00e7 212f call analog_set 2419 ; line_number = 205 2420 ; result := 0 2421 ;info 205, 232 2422 00e8 01a6 clrf main__result 2423 ; line_number = 206 2424 ; transmit := _true 2425 ;info 206, 233 2426 00e9 156f bsf main__transmit___byte, main__transmit___bit 2427 ; line_number = 207 2428 ; mode := 0 2429 ;info 207, 234 2430 00ea 01a7 clrf main__mode 2431 2432 00eb : main__45: 2433 ; line_number = 109 2434 ; switch mode done 2435 00eb : main__49: 2436 ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2437 ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2438 ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX) 2439 ; line_number = 96 2440 ; if rx9d done 2441 ; #loop_exactly 10 2442 ; # delay 200 2443 ; # do_nothing 2444 2445 ; line_number = 213 2446 ; if transmit start 2447 ;info 213, 235 2448 ; =>bit_code_emit@symbol(): sym=main__transmit 2449 ; No 1TEST: true.size=3 false.size=0 2450 ; No 2TEST: true.size=3 false.size=0 2451 ; 1GOTO: Single test with GOTO 2452 00eb 1d6f btfss main__transmit___byte, main__transmit___bit 2453 00ec 28f0 goto main__50 2454 ; line_number = 214 2455 ; call _uart_byte_put(result) 2456 ;info 214, 237 2457 00ed 0826 movf main__result,w 2458 00ee 21d7 call _uart_byte_put 2459 2460 ; # Dispose of echoed command in buffer: 2461 ; line_number = 217 2462 ; call _uart_byte_get() 2463 ;info 217, 239 2464 00ef 21b8 call _uart_byte_get 2465 2466 2467 ; Recombine size1 = 0 || size2 = 0 2468 00f0 : main__50: 2469 ; line_number = 213 2470 ; if transmit done 2471 ; line_number = 86 2472 ; loop_forever wrap-up 2473 00f0 2823 goto main__3 2474 ; line_number = 86 2475 ; loop_forever done 2476 ; delay after procedure statements=non-uniform 2477 2478 2479 2480 2481 ; line_number = 220 2482 ; string id = "\16,0,3,1,3,12\Midimotor2-A\7\Gramson" start 2483 ; id = '\16,0,3,1,3,12\Midimotor2-A\7\Gramson' 2484 00f1 : id: 2485 ; Temporarily save index into FSR 2486 00f1 0084 movwf __fsr 2487 ; Initialize PCLATH to point to this code page 2488 00f2 3001 movlw id___base>>8 2489 00f3 008a movwf __pclath 2490 ; Restore index from FSR 2491 00f4 0804 movf __fsr,w 2492 00f5 3e00 addlw id___base 2493 ; Index to the correct return value 2494 00f6 0082 movwf __pcl 2495 ; page_group 26 2496 ; Add 9 NOP's until start of new page 2497 00f7 0000 nop 2498 00f8 0000 nop 2499 00f9 0000 nop 2500 00fa 0000 nop 2501 00fb 0000 nop 2502 00fc 0000 nop 2503 00fd 0000 nop 2504 00fe 0000 nop 2505 00ff 0000 nop 2506 0100 : id___base: 2507 0100 3410 retlw 16 2508 0101 3400 retlw 0 2509 0102 3403 retlw 3 2510 0103 3401 retlw 1 2511 0104 3403 retlw 3 2512 0105 340c retlw 12 2513 0106 344d retlw 77 2514 0107 3469 retlw 105 2515 0108 3464 retlw 100 2516 0109 3469 retlw 105 2517 010a 346d retlw 109 2518 010b 346f retlw 111 2519 010c 3474 retlw 116 2520 010d 346f retlw 111 2521 010e 3472 retlw 114 2522 010f 3432 retlw 50 2523 0110 342d retlw 45 2524 0111 3441 retlw 65 2525 0112 3407 retlw 7 2526 0113 3447 retlw 71 2527 0114 3472 retlw 114 2528 0115 3461 retlw 97 2529 0116 346d retlw 109 2530 0117 3473 retlw 115 2531 0118 346f retlw 111 2532 0119 346e retlw 110 2533 ; line_number = 220 2534 ; string id = "\16,0,3,1,3,12\Midimotor2-A\7\Gramson" start 2535 2536 ; line_number = 222 2537 ;info 222, 282 2538 ; procedure analog_read 2539 011a : analog_read: 2540 ; arguments_none 2541 ; line_number = 224 2542 ; returns byte 2543 2544 ; # This procedure will return the analog selection bits. 2545 2546 ; line_number = 228 2547 ; local analog byte 2548 00000028 = analog_read__analog equ globals___0+8 2549 2550 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2551 ; line_number = 230 2552 ; analog := 0 2553 ;info 230, 282 2554 011a 01a8 clrf analog_read__analog 2555 ; line_number = 231 2556 ; if _ansel@0 start 2557 ;info 231, 283 2558 00000091 = analog_read__select__2___byte equ _ansel 2559 00000000 = analog_read__select__2___bit equ 0 2560 ; =>bit_code_emit@symbol(): sym=analog_read__select__2 2561 ; 1TEST: Single test with code in skip slot 2562 011b 1683 bsf __rp0___byte, __rp0___bit 2563 011c 1811 btfsc analog_read__select__2___byte, analog_read__select__2___bit 2564 ; line_number = 232 2565 ; analog@0 := _true 2566 ;info 232, 285 2567 00000028 = analog_read__select__1___byte equ analog_read__analog 2568 00000000 = analog_read__select__1___bit equ 0 2569 011d 1428 bsf analog_read__select__1___byte, analog_read__select__1___bit 2570 ; Recombine size1 = 0 || size2 = 0 2571 ; line_number = 231 2572 ; if _ansel@0 done 2573 ; line_number = 233 2574 ; if _ansel@1 start 2575 ;info 233, 286 2576 00000091 = analog_read__select__4___byte equ _ansel 2577 00000001 = analog_read__select__4___bit equ 1 2578 ; =>bit_code_emit@symbol(): sym=analog_read__select__4 2579 ; 1TEST: Single test with code in skip slot 2580 011e 1891 btfsc analog_read__select__4___byte, analog_read__select__4___bit 2581 ; line_number = 234 2582 ; analog@1 := _true 2583 ;info 234, 287 2584 00000028 = analog_read__select__3___byte equ analog_read__analog 2585 00000001 = analog_read__select__3___bit equ 1 2586 011f 14a8 bsf analog_read__select__3___byte, analog_read__select__3___bit 2587 ; Recombine size1 = 0 || size2 = 0 2588 ; line_number = 233 2589 ; if _ansel@1 done 2590 ; line_number = 235 2591 ; if _ansel@2 start 2592 ;info 235, 288 2593 00000091 = analog_read__select__6___byte equ _ansel 2594 00000002 = analog_read__select__6___bit equ 2 2595 ; =>bit_code_emit@symbol(): sym=analog_read__select__6 2596 ; 1TEST: Single test with code in skip slot 2597 0120 1911 btfsc analog_read__select__6___byte, analog_read__select__6___bit 2598 ; line_number = 236 2599 ; analog@2 := _true 2600 ;info 236, 289 2601 00000028 = analog_read__select__5___byte equ analog_read__analog 2602 00000002 = analog_read__select__5___bit equ 2 2603 0121 1528 bsf analog_read__select__5___byte, analog_read__select__5___bit 2604 ; Recombine size1 = 0 || size2 = 0 2605 ; line_number = 235 2606 ; if _ansel@2 done 2607 ; line_number = 237 2608 ; if _ansel@3 start 2609 ;info 237, 290 2610 00000091 = analog_read__select__8___byte equ _ansel 2611 00000003 = analog_read__select__8___bit equ 3 2612 ; =>bit_code_emit@symbol(): sym=analog_read__select__8 2613 ; 1TEST: Single test with code in skip slot 2614 0122 1991 btfsc analog_read__select__8___byte, analog_read__select__8___bit 2615 ; line_number = 238 2616 ; analog@3 := _true 2617 ;info 238, 291 2618 00000028 = analog_read__select__7___byte equ analog_read__analog 2619 00000003 = analog_read__select__7___bit equ 3 2620 0123 15a8 bsf analog_read__select__7___byte, analog_read__select__7___bit 2621 ; Recombine size1 = 0 || size2 = 0 2622 ; line_number = 237 2623 ; if _ansel@3 done 2624 ; line_number = 239 2625 ; if _ansel@4 start 2626 ;info 239, 292 2627 00000091 = analog_read__select__10___byte equ _ansel 2628 00000004 = analog_read__select__10___bit equ 4 2629 ; =>bit_code_emit@symbol(): sym=analog_read__select__10 2630 ; 1TEST: Single test with code in skip slot 2631 0124 1a11 btfsc analog_read__select__10___byte, analog_read__select__10___bit 2632 ; line_number = 240 2633 ; analog@4 := _true 2634 ;info 240, 293 2635 00000028 = analog_read__select__9___byte equ analog_read__analog 2636 00000004 = analog_read__select__9___bit equ 4 2637 0125 1628 bsf analog_read__select__9___byte, analog_read__select__9___bit 2638 ; Recombine size1 = 0 || size2 = 0 2639 ; line_number = 239 2640 ; if _ansel@4 done 2641 ; line_number = 241 2642 ; if _ansel@5 start 2643 ;info 241, 294 2644 00000091 = analog_read__select__12___byte equ _ansel 2645 00000005 = analog_read__select__12___bit equ 5 2646 ; =>bit_code_emit@symbol(): sym=analog_read__select__12 2647 ; 1TEST: Single test with code in skip slot 2648 0126 1a91 btfsc analog_read__select__12___byte, analog_read__select__12___bit 2649 ; line_number = 242 2650 ; analog@5 := _true 2651 ;info 242, 295 2652 00000028 = analog_read__select__11___byte equ analog_read__analog 2653 00000005 = analog_read__select__11___bit equ 5 2654 0127 16a8 bsf analog_read__select__11___byte, analog_read__select__11___bit 2655 ; Recombine size1 = 0 || size2 = 0 2656 ; line_number = 241 2657 ; if _ansel@5 done 2658 ; line_number = 243 2659 ; if _ansel@6 start 2660 ;info 243, 296 2661 00000091 = analog_read__select__14___byte equ _ansel 2662 00000006 = analog_read__select__14___bit equ 6 2663 ; =>bit_code_emit@symbol(): sym=analog_read__select__14 2664 ; 1TEST: Single test with code in skip slot 2665 0128 1b11 btfsc analog_read__select__14___byte, analog_read__select__14___bit 2666 ; line_number = 244 2667 ; analog@6 := _true 2668 ;info 244, 297 2669 00000028 = analog_read__select__13___byte equ analog_read__analog 2670 00000006 = analog_read__select__13___bit equ 6 2671 0129 1728 bsf analog_read__select__13___byte, analog_read__select__13___bit 2672 ; Recombine size1 = 0 || size2 = 0 2673 ; line_number = 243 2674 ; if _ansel@6 done 2675 ; line_number = 245 2676 ; if _ansel@7 start 2677 ;info 245, 298 2678 00000091 = analog_read__select__16___byte equ _ansel 2679 00000007 = analog_read__select__16___bit equ 7 2680 ; =>bit_code_emit@symbol(): sym=analog_read__select__16 2681 ; 1TEST: Single test with code in skip slot 2682 012a 1b91 btfsc analog_read__select__16___byte, analog_read__select__16___bit 2683 ; line_number = 246 2684 ; analog@7 := _true 2685 ;info 246, 299 2686 00000028 = analog_read__select__15___byte equ analog_read__analog 2687 00000007 = analog_read__select__15___bit equ 7 2688 012b 17a8 bsf analog_read__select__15___byte, analog_read__select__15___bit 2689 ; Recombine size1 = 0 || size2 = 0 2690 ; line_number = 245 2691 ; if _ansel@7 done 2692 ; line_number = 247 2693 ; return analog start 2694 ; line_number = 247 2695 ;info 247, 300 2696 012c 1283 bcf __rp0___byte, __rp0___bit 2697 012d 0828 movf analog_read__analog,w 2698 012e 0008 return 2699 ; line_number = 247 2700 ; return analog done 2701 2702 2703 ; delay after procedure statements=non-uniform 2704 2705 2706 2707 2708 ; line_number = 250 2709 ;info 250, 303 2710 ; procedure analog_set 2711 012f : analog_set: 2712 ; Last argument is sitting in W; save into argument variable 2713 012f 00a9 movwf analog_set__analog 2714 ; delay=4294967295 2715 ; line_number = 251 2716 ; argument analog byte 2717 00000029 = analog_set__analog equ globals___0+9 2718 ; line_number = 252 2719 ; returns_nothing 2720 2721 ; # This procedure will set the analog inputs to be equal to {analog}. 2722 2723 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2724 ; line_number = 256 2725 ; if analog@0 start 2726 ;info 256, 304 2727 00000029 = analog_set__select__2___byte equ analog_set__analog 2728 00000000 = analog_set__select__2___bit equ 0 2729 ; =>bit_code_emit@symbol(): sym=analog_set__select__2 2730 ; 1TEST: Single test with code in skip slot 2731 0130 1829 btfsc analog_set__select__2___byte, analog_set__select__2___bit 2732 ; line_number = 257 2733 ; _ansel@0 := _true 2734 ;info 257, 305 2735 00000091 = analog_set__select__1___byte equ _ansel 2736 00000000 = analog_set__select__1___bit equ 0 2737 0131 1411 bsf analog_set__select__1___byte, analog_set__select__1___bit 2738 ; Recombine size1 = 0 || size2 = 0 2739 ; line_number = 256 2740 ; if analog@0 done 2741 ; line_number = 258 2742 ; if analog@1 start 2743 ;info 258, 306 2744 00000029 = analog_set__select__4___byte equ analog_set__analog 2745 00000001 = analog_set__select__4___bit equ 1 2746 ; =>bit_code_emit@symbol(): sym=analog_set__select__4 2747 ; 1TEST: Single test with code in skip slot 2748 0132 18a9 btfsc analog_set__select__4___byte, analog_set__select__4___bit 2749 ; line_number = 259 2750 ; _ansel@1 := _true 2751 ;info 259, 307 2752 00000091 = analog_set__select__3___byte equ _ansel 2753 00000001 = analog_set__select__3___bit equ 1 2754 0133 1491 bsf analog_set__select__3___byte, analog_set__select__3___bit 2755 ; Recombine size1 = 0 || size2 = 0 2756 ; line_number = 258 2757 ; if analog@1 done 2758 ; line_number = 260 2759 ; if analog@2 start 2760 ;info 260, 308 2761 00000029 = analog_set__select__6___byte equ analog_set__analog 2762 00000002 = analog_set__select__6___bit equ 2 2763 ; =>bit_code_emit@symbol(): sym=analog_set__select__6 2764 ; 1TEST: Single test with code in skip slot 2765 0134 1929 btfsc analog_set__select__6___byte, analog_set__select__6___bit 2766 ; line_number = 261 2767 ; _ansel@2 := _true 2768 ;info 261, 309 2769 00000091 = analog_set__select__5___byte equ _ansel 2770 00000002 = analog_set__select__5___bit equ 2 2771 0135 1511 bsf analog_set__select__5___byte, analog_set__select__5___bit 2772 ; Recombine size1 = 0 || size2 = 0 2773 ; line_number = 260 2774 ; if analog@2 done 2775 ; line_number = 262 2776 ; if analog@3 start 2777 ;info 262, 310 2778 00000029 = analog_set__select__8___byte equ analog_set__analog 2779 00000003 = analog_set__select__8___bit equ 3 2780 ; =>bit_code_emit@symbol(): sym=analog_set__select__8 2781 ; 1TEST: Single test with code in skip slot 2782 0136 19a9 btfsc analog_set__select__8___byte, analog_set__select__8___bit 2783 ; line_number = 263 2784 ; _ansel@3 := _true 2785 ;info 263, 311 2786 00000091 = analog_set__select__7___byte equ _ansel 2787 00000003 = analog_set__select__7___bit equ 3 2788 0137 1591 bsf analog_set__select__7___byte, analog_set__select__7___bit 2789 ; Recombine size1 = 0 || size2 = 0 2790 ; line_number = 262 2791 ; if analog@3 done 2792 ; line_number = 264 2793 ; if analog@4 start 2794 ;info 264, 312 2795 00000029 = analog_set__select__10___byte equ analog_set__analog 2796 00000004 = analog_set__select__10___bit equ 4 2797 ; =>bit_code_emit@symbol(): sym=analog_set__select__10 2798 ; 1TEST: Single test with code in skip slot 2799 0138 1a29 btfsc analog_set__select__10___byte, analog_set__select__10___bit 2800 ; line_number = 265 2801 ; _ansel@4 := _true 2802 ;info 265, 313 2803 00000091 = analog_set__select__9___byte equ _ansel 2804 00000004 = analog_set__select__9___bit equ 4 2805 0139 1611 bsf analog_set__select__9___byte, analog_set__select__9___bit 2806 ; Recombine size1 = 0 || size2 = 0 2807 ; line_number = 264 2808 ; if analog@4 done 2809 ; line_number = 266 2810 ; if analog@5 start 2811 ;info 266, 314 2812 00000029 = analog_set__select__12___byte equ analog_set__analog 2813 00000005 = analog_set__select__12___bit equ 5 2814 ; =>bit_code_emit@symbol(): sym=analog_set__select__12 2815 ; 1TEST: Single test with code in skip slot 2816 013a 1aa9 btfsc analog_set__select__12___byte, analog_set__select__12___bit 2817 ; line_number = 267 2818 ; _ansel@5 := _true 2819 ;info 267, 315 2820 00000091 = analog_set__select__11___byte equ _ansel 2821 00000005 = analog_set__select__11___bit equ 5 2822 013b 1691 bsf analog_set__select__11___byte, analog_set__select__11___bit 2823 ; Recombine size1 = 0 || size2 = 0 2824 ; line_number = 266 2825 ; if analog@5 done 2826 ; line_number = 268 2827 ; if analog@6 start 2828 ;info 268, 316 2829 00000029 = analog_set__select__14___byte equ analog_set__analog 2830 00000006 = analog_set__select__14___bit equ 6 2831 ; =>bit_code_emit@symbol(): sym=analog_set__select__14 2832 ; 1TEST: Single test with code in skip slot 2833 013c 1b29 btfsc analog_set__select__14___byte, analog_set__select__14___bit 2834 ; line_number = 269 2835 ; _ansel@6 := _true 2836 ;info 269, 317 2837 00000091 = analog_set__select__13___byte equ _ansel 2838 00000006 = analog_set__select__13___bit equ 6 2839 013d 1711 bsf analog_set__select__13___byte, analog_set__select__13___bit 2840 ; Recombine size1 = 0 || size2 = 0 2841 ; line_number = 268 2842 ; if analog@6 done 2843 ; line_number = 270 2844 ; if analog@7 start 2845 ;info 270, 318 2846 00000029 = analog_set__select__16___byte equ analog_set__analog 2847 00000007 = analog_set__select__16___bit equ 7 2848 ; =>bit_code_emit@symbol(): sym=analog_set__select__16 2849 ; 1TEST: Single test with code in skip slot 2850 013e 1ba9 btfsc analog_set__select__16___byte, analog_set__select__16___bit 2851 ; line_number = 271 2852 ; _ansel@7 := _true 2853 ;info 271, 319 2854 00000091 = analog_set__select__15___byte equ _ansel 2855 00000007 = analog_set__select__15___bit equ 7 2856 013f 1791 bsf analog_set__select__15___byte, analog_set__select__15___bit 2857 2858 2859 ; Recombine size1 = 0 || size2 = 0 2860 ; line_number = 270 2861 ; if analog@7 done 2862 ; delay after procedure statements=non-uniform 2863 ; Implied return 2864 0140 3400 retlw 0 2865 2866 2867 2868 2869 ; line_number = 274 2870 ;info 274, 321 2871 ; procedure digital_read 2872 0141 : digital_read: 2873 ; arguments_none 2874 ; line_number = 276 2875 ; returns byte 2876 2877 ; # This procedure will return the digital bits corresponding to 2878 ; # the 8 digital data inputs. 2879 2880 ; line_number = 281 2881 ; local ra byte 2882 0000002a = digital_read__ra equ globals___0+10 2883 ; line_number = 282 2884 ; local rc byte 2885 0000002b = digital_read__rc equ globals___0+11 2886 ; line_number = 283 2887 ; local digital byte 2888 0000002c = digital_read__digital equ globals___0+12 2889 2890 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 2891 ; line_number = 285 2892 ; ra := _porta 2893 ;info 285, 321 2894 0141 0805 movf _porta,w 2895 0142 00aa movwf digital_read__ra 2896 ; line_number = 286 2897 ; rc := _portc 2898 ;info 286, 323 2899 0143 0807 movf _portc,w 2900 0144 00ab movwf digital_read__rc 2901 ; line_number = 287 2902 ; digital := 0 2903 ;info 287, 325 2904 0145 01ac clrf digital_read__digital 2905 2906 ; line_number = 289 2907 ; if ra@io0_bit start 2908 ;info 289, 326 2909 0000002a = digital_read__select__2___byte equ digital_read__ra 2910 00000000 = digital_read__select__2___bit equ 0 2911 ; =>bit_code_emit@symbol(): sym=digital_read__select__2 2912 ; 1TEST: Single test with code in skip slot 2913 0146 182a btfsc digital_read__select__2___byte, digital_read__select__2___bit 2914 ; line_number = 290 2915 ; digital@0 := _true 2916 ;info 290, 327 2917 0000002c = digital_read__select__1___byte equ digital_read__digital 2918 00000000 = digital_read__select__1___bit equ 0 2919 0147 142c bsf digital_read__select__1___byte, digital_read__select__1___bit 2920 ; Recombine size1 = 0 || size2 = 0 2921 ; line_number = 289 2922 ; if ra@io0_bit done 2923 ; line_number = 291 2924 ; if ra@io1_bit start 2925 ;info 291, 328 2926 0000002a = digital_read__select__4___byte equ digital_read__ra 2927 00000004 = digital_read__select__4___bit equ 4 2928 ; =>bit_code_emit@symbol(): sym=digital_read__select__4 2929 ; 1TEST: Single test with code in skip slot 2930 0148 1a2a btfsc digital_read__select__4___byte, digital_read__select__4___bit 2931 ; line_number = 292 2932 ; digital@1 := _true 2933 ;info 292, 329 2934 0000002c = digital_read__select__3___byte equ digital_read__digital 2935 00000001 = digital_read__select__3___bit equ 1 2936 0149 14ac bsf digital_read__select__3___byte, digital_read__select__3___bit 2937 ; Recombine size1 = 0 || size2 = 0 2938 ; line_number = 291 2939 ; if ra@io1_bit done 2940 ; line_number = 293 2941 ; if ra@io2_bit start 2942 ;info 293, 330 2943 0000002a = digital_read__select__6___byte equ digital_read__ra 2944 00000001 = digital_read__select__6___bit equ 1 2945 ; =>bit_code_emit@symbol(): sym=digital_read__select__6 2946 ; 1TEST: Single test with code in skip slot 2947 014a 18aa btfsc digital_read__select__6___byte, digital_read__select__6___bit 2948 ; line_number = 294 2949 ; digital@2 := _true 2950 ;info 294, 331 2951 0000002c = digital_read__select__5___byte equ digital_read__digital 2952 00000002 = digital_read__select__5___bit equ 2 2953 014b 152c bsf digital_read__select__5___byte, digital_read__select__5___bit 2954 ; Recombine size1 = 0 || size2 = 0 2955 ; line_number = 293 2956 ; if ra@io2_bit done 2957 ; line_number = 295 2958 ; if ra@io3_bit start 2959 ;info 295, 332 2960 0000002a = digital_read__select__8___byte equ digital_read__ra 2961 00000002 = digital_read__select__8___bit equ 2 2962 ; =>bit_code_emit@symbol(): sym=digital_read__select__8 2963 ; 1TEST: Single test with code in skip slot 2964 014c 192a btfsc digital_read__select__8___byte, digital_read__select__8___bit 2965 ; line_number = 296 2966 ; digital@3 := _true 2967 ;info 296, 333 2968 0000002c = digital_read__select__7___byte equ digital_read__digital 2969 00000003 = digital_read__select__7___bit equ 3 2970 014d 15ac bsf digital_read__select__7___byte, digital_read__select__7___bit 2971 ; Recombine size1 = 0 || size2 = 0 2972 ; line_number = 295 2973 ; if ra@io3_bit done 2974 ; line_number = 297 2975 ; if rc@io4_bit start 2976 ;info 297, 334 2977 0000002b = digital_read__select__10___byte equ digital_read__rc 2978 00000000 = digital_read__select__10___bit equ 0 2979 ; =>bit_code_emit@symbol(): sym=digital_read__select__10 2980 ; 1TEST: Single test with code in skip slot 2981 014e 182b btfsc digital_read__select__10___byte, digital_read__select__10___bit 2982 ; line_number = 298 2983 ; digital@4 := _true 2984 ;info 298, 335 2985 0000002c = digital_read__select__9___byte equ digital_read__digital 2986 00000004 = digital_read__select__9___bit equ 4 2987 014f 162c bsf digital_read__select__9___byte, digital_read__select__9___bit 2988 ; Recombine size1 = 0 || size2 = 0 2989 ; line_number = 297 2990 ; if rc@io4_bit done 2991 ; line_number = 299 2992 ; if rc@io5_bit start 2993 ;info 299, 336 2994 0000002b = digital_read__select__12___byte equ digital_read__rc 2995 00000001 = digital_read__select__12___bit equ 1 2996 ; =>bit_code_emit@symbol(): sym=digital_read__select__12 2997 ; 1TEST: Single test with code in skip slot 2998 0150 18ab btfsc digital_read__select__12___byte, digital_read__select__12___bit 2999 ; line_number = 300 3000 ; digital@5 := _true 3001 ;info 300, 337 3002 0000002c = digital_read__select__11___byte equ digital_read__digital 3003 00000005 = digital_read__select__11___bit equ 5 3004 0151 16ac bsf digital_read__select__11___byte, digital_read__select__11___bit 3005 ; Recombine size1 = 0 || size2 = 0 3006 ; line_number = 299 3007 ; if rc@io5_bit done 3008 ; line_number = 301 3009 ; if rc@io6_bit start 3010 ;info 301, 338 3011 0000002b = digital_read__select__14___byte equ digital_read__rc 3012 00000002 = digital_read__select__14___bit equ 2 3013 ; =>bit_code_emit@symbol(): sym=digital_read__select__14 3014 ; 1TEST: Single test with code in skip slot 3015 0152 192b btfsc digital_read__select__14___byte, digital_read__select__14___bit 3016 ; line_number = 302 3017 ; digital@6 := _true 3018 ;info 302, 339 3019 0000002c = digital_read__select__13___byte equ digital_read__digital 3020 00000006 = digital_read__select__13___bit equ 6 3021 0153 172c bsf digital_read__select__13___byte, digital_read__select__13___bit 3022 ; Recombine size1 = 0 || size2 = 0 3023 ; line_number = 301 3024 ; if rc@io6_bit done 3025 ; line_number = 303 3026 ; if rc@io7_bit start 3027 ;info 303, 340 3028 0000002b = digital_read__select__16___byte equ digital_read__rc 3029 00000003 = digital_read__select__16___bit equ 3 3030 ; =>bit_code_emit@symbol(): sym=digital_read__select__16 3031 ; 1TEST: Single test with code in skip slot 3032 0154 19ab btfsc digital_read__select__16___byte, digital_read__select__16___bit 3033 ; line_number = 304 3034 ; digital@7 := _true 3035 ;info 304, 341 3036 0000002c = digital_read__select__15___byte equ digital_read__digital 3037 00000007 = digital_read__select__15___bit equ 7 3038 0155 17ac bsf digital_read__select__15___byte, digital_read__select__15___bit 3039 ; Recombine size1 = 0 || size2 = 0 3040 ; line_number = 303 3041 ; if rc@io7_bit done 3042 ; line_number = 305 3043 ; return digital start 3044 ; line_number = 305 3045 ;info 305, 342 3046 0156 082c movf digital_read__digital,w 3047 0157 0008 return 3048 ; line_number = 305 3049 ; return digital done 3050 3051 3052 ; delay after procedure statements=non-uniform 3053 3054 3055 3056 3057 ; line_number = 308 3058 ;info 308, 344 3059 ; procedure digital_set 3060 0158 : digital_set: 3061 ; Last argument is sitting in W; save into argument variable 3062 0158 00af movwf digital_set__digital 3063 ; delay=4294967295 3064 ; line_number = 309 3065 ; argument digital byte 3066 0000002f = digital_set__digital equ globals___0+15 3067 ; line_number = 310 3068 ; returns_nothing 3069 3070 ; # This procedure will set the digital outputs to be equal to {digital}. 3071 3072 ; line_number = 314 3073 ; local ra byte 3074 0000002d = digital_set__ra equ globals___0+13 3075 ; line_number = 315 3076 ; local rc byte 3077 0000002e = digital_set__rc equ globals___0+14 3078 3079 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3080 ; line_number = 317 3081 ; ra := 0 3082 ;info 317, 345 3083 0159 01ad clrf digital_set__ra 3084 ; line_number = 318 3085 ; rc := 0 3086 ;info 318, 346 3087 015a 01ae clrf digital_set__rc 3088 ; line_number = 319 3089 ; if digital@0 start 3090 ;info 319, 347 3091 0000002f = digital_set__select__2___byte equ digital_set__digital 3092 00000000 = digital_set__select__2___bit equ 0 3093 ; =>bit_code_emit@symbol(): sym=digital_set__select__2 3094 ; 1TEST: Single test with code in skip slot 3095 015b 182f btfsc digital_set__select__2___byte, digital_set__select__2___bit 3096 ; line_number = 320 3097 ; ra@io0_bit := _true 3098 ;info 320, 348 3099 0000002d = digital_set__select__1___byte equ digital_set__ra 3100 00000000 = digital_set__select__1___bit equ 0 3101 015c 142d bsf digital_set__select__1___byte, digital_set__select__1___bit 3102 ; Recombine size1 = 0 || size2 = 0 3103 ; line_number = 319 3104 ; if digital@0 done 3105 ; line_number = 321 3106 ; if digital@1 start 3107 ;info 321, 349 3108 0000002f = digital_set__select__4___byte equ digital_set__digital 3109 00000001 = digital_set__select__4___bit equ 1 3110 ; =>bit_code_emit@symbol(): sym=digital_set__select__4 3111 ; 1TEST: Single test with code in skip slot 3112 015d 18af btfsc digital_set__select__4___byte, digital_set__select__4___bit 3113 ; line_number = 322 3114 ; ra@io1_bit := _true 3115 ;info 322, 350 3116 0000002d = digital_set__select__3___byte equ digital_set__ra 3117 00000004 = digital_set__select__3___bit equ 4 3118 015e 162d bsf digital_set__select__3___byte, digital_set__select__3___bit 3119 ; Recombine size1 = 0 || size2 = 0 3120 ; line_number = 321 3121 ; if digital@1 done 3122 ; line_number = 323 3123 ; if digital@2 start 3124 ;info 323, 351 3125 0000002f = digital_set__select__6___byte equ digital_set__digital 3126 00000002 = digital_set__select__6___bit equ 2 3127 ; =>bit_code_emit@symbol(): sym=digital_set__select__6 3128 ; 1TEST: Single test with code in skip slot 3129 015f 192f btfsc digital_set__select__6___byte, digital_set__select__6___bit 3130 ; line_number = 324 3131 ; ra@io2_bit := _true 3132 ;info 324, 352 3133 0000002d = digital_set__select__5___byte equ digital_set__ra 3134 00000001 = digital_set__select__5___bit equ 1 3135 0160 14ad bsf digital_set__select__5___byte, digital_set__select__5___bit 3136 ; Recombine size1 = 0 || size2 = 0 3137 ; line_number = 323 3138 ; if digital@2 done 3139 ; line_number = 325 3140 ; if digital@3 start 3141 ;info 325, 353 3142 0000002f = digital_set__select__8___byte equ digital_set__digital 3143 00000003 = digital_set__select__8___bit equ 3 3144 ; =>bit_code_emit@symbol(): sym=digital_set__select__8 3145 ; 1TEST: Single test with code in skip slot 3146 0161 19af btfsc digital_set__select__8___byte, digital_set__select__8___bit 3147 ; line_number = 326 3148 ; ra@io3_bit := _true 3149 ;info 326, 354 3150 0000002d = digital_set__select__7___byte equ digital_set__ra 3151 00000002 = digital_set__select__7___bit equ 2 3152 0162 152d bsf digital_set__select__7___byte, digital_set__select__7___bit 3153 ; Recombine size1 = 0 || size2 = 0 3154 ; line_number = 325 3155 ; if digital@3 done 3156 ; line_number = 327 3157 ; if digital@4 start 3158 ;info 327, 355 3159 0000002f = digital_set__select__10___byte equ digital_set__digital 3160 00000004 = digital_set__select__10___bit equ 4 3161 ; =>bit_code_emit@symbol(): sym=digital_set__select__10 3162 ; 1TEST: Single test with code in skip slot 3163 0163 1a2f btfsc digital_set__select__10___byte, digital_set__select__10___bit 3164 ; line_number = 328 3165 ; rc@io4_bit := _true 3166 ;info 328, 356 3167 0000002e = digital_set__select__9___byte equ digital_set__rc 3168 00000000 = digital_set__select__9___bit equ 0 3169 0164 142e bsf digital_set__select__9___byte, digital_set__select__9___bit 3170 ; Recombine size1 = 0 || size2 = 0 3171 ; line_number = 327 3172 ; if digital@4 done 3173 ; line_number = 329 3174 ; if digital@5 start 3175 ;info 329, 357 3176 0000002f = digital_set__select__12___byte equ digital_set__digital 3177 00000005 = digital_set__select__12___bit equ 5 3178 ; =>bit_code_emit@symbol(): sym=digital_set__select__12 3179 ; 1TEST: Single test with code in skip slot 3180 0165 1aaf btfsc digital_set__select__12___byte, digital_set__select__12___bit 3181 ; line_number = 330 3182 ; rc@io5_bit := _true 3183 ;info 330, 358 3184 0000002e = digital_set__select__11___byte equ digital_set__rc 3185 00000001 = digital_set__select__11___bit equ 1 3186 0166 14ae bsf digital_set__select__11___byte, digital_set__select__11___bit 3187 ; Recombine size1 = 0 || size2 = 0 3188 ; line_number = 329 3189 ; if digital@5 done 3190 ; line_number = 331 3191 ; if digital@6 start 3192 ;info 331, 359 3193 0000002f = digital_set__select__14___byte equ digital_set__digital 3194 00000006 = digital_set__select__14___bit equ 6 3195 ; =>bit_code_emit@symbol(): sym=digital_set__select__14 3196 ; 1TEST: Single test with code in skip slot 3197 0167 1b2f btfsc digital_set__select__14___byte, digital_set__select__14___bit 3198 ; line_number = 332 3199 ; rc@io6_bit := _true 3200 ;info 332, 360 3201 0000002e = digital_set__select__13___byte equ digital_set__rc 3202 00000002 = digital_set__select__13___bit equ 2 3203 0168 152e bsf digital_set__select__13___byte, digital_set__select__13___bit 3204 ; Recombine size1 = 0 || size2 = 0 3205 ; line_number = 331 3206 ; if digital@6 done 3207 ; line_number = 333 3208 ; if digital@7 start 3209 ;info 333, 361 3210 0000002f = digital_set__select__16___byte equ digital_set__digital 3211 00000007 = digital_set__select__16___bit equ 7 3212 ; =>bit_code_emit@symbol(): sym=digital_set__select__16 3213 ; 1TEST: Single test with code in skip slot 3214 0169 1baf btfsc digital_set__select__16___byte, digital_set__select__16___bit 3215 ; line_number = 334 3216 ; rc@io7_bit := _true 3217 ;info 334, 362 3218 0000002e = digital_set__select__15___byte equ digital_set__rc 3219 00000003 = digital_set__select__15___bit equ 3 3220 016a 15ae bsf digital_set__select__15___byte, digital_set__select__15___bit 3221 ; Recombine size1 = 0 || size2 = 0 3222 ; line_number = 333 3223 ; if digital@7 done 3224 ; line_number = 335 3225 ; _porta := ra 3226 ;info 335, 363 3227 016b 082d movf digital_set__ra,w 3228 016c 0085 movwf _porta 3229 ; line_number = 336 3230 ; _portc := rc 3231 ;info 336, 365 3232 016d 082e movf digital_set__rc,w 3233 016e 0087 movwf _portc 3234 3235 3236 ; delay after procedure statements=non-uniform 3237 ; Implied return 3238 016f 3400 retlw 0 3239 3240 3241 3242 3243 ; line_number = 339 3244 ;info 339, 368 3245 ; procedure direction_read 3246 0170 : direction_read: 3247 ; arguments_none 3248 ; line_number = 341 3249 ; returns byte 3250 3251 ; # This procedure will return the digital bits corresponding to 3252 ; # the 8 digital data inputs. 3253 3254 ; line_number = 346 3255 ; local trisa byte 3256 00000030 = direction_read__trisa equ globals___0+16 3257 ; line_number = 347 3258 ; local trisc byte 3259 00000031 = direction_read__trisc equ globals___0+17 3260 ; line_number = 348 3261 ; local direction byte 3262 00000032 = direction_read__direction equ globals___0+18 3263 3264 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3265 ; line_number = 350 3266 ; direction := 0 3267 ;info 350, 368 3268 0170 01b2 clrf direction_read__direction 3269 ; # Get all data into data bank 0: 3270 ; line_number = 352 3271 ; trisa := _trisa 3272 ;info 352, 369 3273 0171 1683 bsf __rp0___byte, __rp0___bit 3274 0172 0805 movf _trisa,w 3275 0173 1283 bcf __rp0___byte, __rp0___bit 3276 0174 00b0 movwf direction_read__trisa 3277 ; line_number = 353 3278 ; trisc := _trisc 3279 ;info 353, 373 3280 0175 1683 bsf __rp0___byte, __rp0___bit 3281 0176 0807 movf _trisc,w 3282 0177 1283 bcf __rp0___byte, __rp0___bit 3283 0178 00b1 movwf direction_read__trisc 3284 3285 ; line_number = 355 3286 ; if trisa@io0_bit start 3287 ;info 355, 377 3288 00000030 = direction_read__select__2___byte equ direction_read__trisa 3289 00000000 = direction_read__select__2___bit equ 0 3290 ; =>bit_code_emit@symbol(): sym=direction_read__select__2 3291 ; 1TEST: Single test with code in skip slot 3292 0179 1830 btfsc direction_read__select__2___byte, direction_read__select__2___bit 3293 ; line_number = 356 3294 ; direction@0 := _true 3295 ;info 356, 378 3296 00000032 = direction_read__select__1___byte equ direction_read__direction 3297 00000000 = direction_read__select__1___bit equ 0 3298 017a 1432 bsf direction_read__select__1___byte, direction_read__select__1___bit 3299 ; Recombine size1 = 0 || size2 = 0 3300 ; line_number = 355 3301 ; if trisa@io0_bit done 3302 ; line_number = 357 3303 ; if trisa@io1_bit start 3304 ;info 357, 379 3305 00000030 = direction_read__select__4___byte equ direction_read__trisa 3306 00000004 = direction_read__select__4___bit equ 4 3307 ; =>bit_code_emit@symbol(): sym=direction_read__select__4 3308 ; 1TEST: Single test with code in skip slot 3309 017b 1a30 btfsc direction_read__select__4___byte, direction_read__select__4___bit 3310 ; line_number = 358 3311 ; direction@1 := _true 3312 ;info 358, 380 3313 00000032 = direction_read__select__3___byte equ direction_read__direction 3314 00000001 = direction_read__select__3___bit equ 1 3315 017c 14b2 bsf direction_read__select__3___byte, direction_read__select__3___bit 3316 ; Recombine size1 = 0 || size2 = 0 3317 ; line_number = 357 3318 ; if trisa@io1_bit done 3319 ; line_number = 359 3320 ; if trisa@io2_bit start 3321 ;info 359, 381 3322 00000030 = direction_read__select__6___byte equ direction_read__trisa 3323 00000001 = direction_read__select__6___bit equ 1 3324 ; =>bit_code_emit@symbol(): sym=direction_read__select__6 3325 ; 1TEST: Single test with code in skip slot 3326 017d 18b0 btfsc direction_read__select__6___byte, direction_read__select__6___bit 3327 ; line_number = 360 3328 ; direction@2 := _true 3329 ;info 360, 382 3330 00000032 = direction_read__select__5___byte equ direction_read__direction 3331 00000002 = direction_read__select__5___bit equ 2 3332 017e 1532 bsf direction_read__select__5___byte, direction_read__select__5___bit 3333 ; Recombine size1 = 0 || size2 = 0 3334 ; line_number = 359 3335 ; if trisa@io2_bit done 3336 ; line_number = 361 3337 ; if trisa@io3_bit start 3338 ;info 361, 383 3339 00000030 = direction_read__select__8___byte equ direction_read__trisa 3340 00000002 = direction_read__select__8___bit equ 2 3341 ; =>bit_code_emit@symbol(): sym=direction_read__select__8 3342 ; 1TEST: Single test with code in skip slot 3343 017f 1930 btfsc direction_read__select__8___byte, direction_read__select__8___bit 3344 ; line_number = 362 3345 ; direction@3 := _true 3346 ;info 362, 384 3347 00000032 = direction_read__select__7___byte equ direction_read__direction 3348 00000003 = direction_read__select__7___bit equ 3 3349 0180 15b2 bsf direction_read__select__7___byte, direction_read__select__7___bit 3350 ; Recombine size1 = 0 || size2 = 0 3351 ; line_number = 361 3352 ; if trisa@io3_bit done 3353 ; line_number = 363 3354 ; if trisc@io4_bit start 3355 ;info 363, 385 3356 00000031 = direction_read__select__10___byte equ direction_read__trisc 3357 00000000 = direction_read__select__10___bit equ 0 3358 ; =>bit_code_emit@symbol(): sym=direction_read__select__10 3359 ; 1TEST: Single test with code in skip slot 3360 0181 1831 btfsc direction_read__select__10___byte, direction_read__select__10___bit 3361 ; line_number = 364 3362 ; direction@4 := _true 3363 ;info 364, 386 3364 00000032 = direction_read__select__9___byte equ direction_read__direction 3365 00000004 = direction_read__select__9___bit equ 4 3366 0182 1632 bsf direction_read__select__9___byte, direction_read__select__9___bit 3367 ; Recombine size1 = 0 || size2 = 0 3368 ; line_number = 363 3369 ; if trisc@io4_bit done 3370 ; line_number = 365 3371 ; if trisc@io5_bit start 3372 ;info 365, 387 3373 00000031 = direction_read__select__12___byte equ direction_read__trisc 3374 00000001 = direction_read__select__12___bit equ 1 3375 ; =>bit_code_emit@symbol(): sym=direction_read__select__12 3376 ; 1TEST: Single test with code in skip slot 3377 0183 18b1 btfsc direction_read__select__12___byte, direction_read__select__12___bit 3378 ; line_number = 366 3379 ; direction@5 := _true 3380 ;info 366, 388 3381 00000032 = direction_read__select__11___byte equ direction_read__direction 3382 00000005 = direction_read__select__11___bit equ 5 3383 0184 16b2 bsf direction_read__select__11___byte, direction_read__select__11___bit 3384 ; Recombine size1 = 0 || size2 = 0 3385 ; line_number = 365 3386 ; if trisc@io5_bit done 3387 ; line_number = 367 3388 ; if trisc@io6_bit start 3389 ;info 367, 389 3390 00000031 = direction_read__select__14___byte equ direction_read__trisc 3391 00000002 = direction_read__select__14___bit equ 2 3392 ; =>bit_code_emit@symbol(): sym=direction_read__select__14 3393 ; 1TEST: Single test with code in skip slot 3394 0185 1931 btfsc direction_read__select__14___byte, direction_read__select__14___bit 3395 ; line_number = 368 3396 ; direction@6 := _true 3397 ;info 368, 390 3398 00000032 = direction_read__select__13___byte equ direction_read__direction 3399 00000006 = direction_read__select__13___bit equ 6 3400 0186 1732 bsf direction_read__select__13___byte, direction_read__select__13___bit 3401 ; Recombine size1 = 0 || size2 = 0 3402 ; line_number = 367 3403 ; if trisc@io6_bit done 3404 ; line_number = 369 3405 ; if trisc@io7_bit start 3406 ;info 369, 391 3407 00000031 = direction_read__select__16___byte equ direction_read__trisc 3408 00000003 = direction_read__select__16___bit equ 3 3409 ; =>bit_code_emit@symbol(): sym=direction_read__select__16 3410 ; 1TEST: Single test with code in skip slot 3411 0187 19b1 btfsc direction_read__select__16___byte, direction_read__select__16___bit 3412 ; line_number = 370 3413 ; direction@7 := _true 3414 ;info 370, 392 3415 00000032 = direction_read__select__15___byte equ direction_read__direction 3416 00000007 = direction_read__select__15___bit equ 7 3417 0188 17b2 bsf direction_read__select__15___byte, direction_read__select__15___bit 3418 ; Recombine size1 = 0 || size2 = 0 3419 ; line_number = 369 3420 ; if trisc@io7_bit done 3421 ; line_number = 371 3422 ; return direction start 3423 ; line_number = 371 3424 ;info 371, 393 3425 0189 0832 movf direction_read__direction,w 3426 018a 0008 return 3427 ; line_number = 371 3428 ; return direction done 3429 3430 3431 ; delay after procedure statements=non-uniform 3432 3433 3434 3435 3436 ; line_number = 374 3437 ;info 374, 395 3438 ; procedure direction_set 3439 018b : direction_set: 3440 ; Last argument is sitting in W; save into argument variable 3441 018b 00b5 movwf direction_set__direction 3442 ; delay=4294967295 3443 ; line_number = 375 3444 ; argument direction byte 3445 00000035 = direction_set__direction equ globals___0+21 3446 ; line_number = 376 3447 ; returns_nothing 3448 3449 ; # This procedure will set the direction outputs to be equal to {direction}. 3450 3451 ; line_number = 380 3452 ; local trisa byte 3453 00000033 = direction_set__trisa equ globals___0+19 3454 ; line_number = 381 3455 ; local trisc byte 3456 00000034 = direction_set__trisc equ globals___0+20 3457 3458 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3459 ; line_number = 383 3460 ; trisa := 0xc0 3461 ;info 383, 396 3462 018c 30c0 movlw 192 3463 018d 00b3 movwf direction_set__trisa 3464 ; line_number = 384 3465 ; trisc := 0xc0 3466 ;info 384, 398 3467 018e 30c0 movlw 192 3468 018f 00b4 movwf direction_set__trisc 3469 ; line_number = 385 3470 ; if direction@0 start 3471 ;info 385, 400 3472 00000035 = direction_set__select__2___byte equ direction_set__direction 3473 00000000 = direction_set__select__2___bit equ 0 3474 ; =>bit_code_emit@symbol(): sym=direction_set__select__2 3475 ; 1TEST: Single test with code in skip slot 3476 0190 1835 btfsc direction_set__select__2___byte, direction_set__select__2___bit 3477 ; line_number = 386 3478 ; trisa@io0_bit := _true 3479 ;info 386, 401 3480 00000033 = direction_set__select__1___byte equ direction_set__trisa 3481 00000000 = direction_set__select__1___bit equ 0 3482 0191 1433 bsf direction_set__select__1___byte, direction_set__select__1___bit 3483 ; Recombine size1 = 0 || size2 = 0 3484 ; line_number = 385 3485 ; if direction@0 done 3486 ; line_number = 387 3487 ; if direction@1 start 3488 ;info 387, 402 3489 00000035 = direction_set__select__4___byte equ direction_set__direction 3490 00000001 = direction_set__select__4___bit equ 1 3491 ; =>bit_code_emit@symbol(): sym=direction_set__select__4 3492 ; 1TEST: Single test with code in skip slot 3493 0192 18b5 btfsc direction_set__select__4___byte, direction_set__select__4___bit 3494 ; line_number = 388 3495 ; trisa@io1_bit := _true 3496 ;info 388, 403 3497 00000033 = direction_set__select__3___byte equ direction_set__trisa 3498 00000004 = direction_set__select__3___bit equ 4 3499 0193 1633 bsf direction_set__select__3___byte, direction_set__select__3___bit 3500 ; Recombine size1 = 0 || size2 = 0 3501 ; line_number = 387 3502 ; if direction@1 done 3503 ; line_number = 389 3504 ; if direction@2 start 3505 ;info 389, 404 3506 00000035 = direction_set__select__6___byte equ direction_set__direction 3507 00000002 = direction_set__select__6___bit equ 2 3508 ; =>bit_code_emit@symbol(): sym=direction_set__select__6 3509 ; 1TEST: Single test with code in skip slot 3510 0194 1935 btfsc direction_set__select__6___byte, direction_set__select__6___bit 3511 ; line_number = 390 3512 ; trisa@io2_bit := _true 3513 ;info 390, 405 3514 00000033 = direction_set__select__5___byte equ direction_set__trisa 3515 00000001 = direction_set__select__5___bit equ 1 3516 0195 14b3 bsf direction_set__select__5___byte, direction_set__select__5___bit 3517 ; Recombine size1 = 0 || size2 = 0 3518 ; line_number = 389 3519 ; if direction@2 done 3520 ; line_number = 391 3521 ; if direction@3 start 3522 ;info 391, 406 3523 00000035 = direction_set__select__8___byte equ direction_set__direction 3524 00000003 = direction_set__select__8___bit equ 3 3525 ; =>bit_code_emit@symbol(): sym=direction_set__select__8 3526 ; 1TEST: Single test with code in skip slot 3527 0196 19b5 btfsc direction_set__select__8___byte, direction_set__select__8___bit 3528 ; line_number = 392 3529 ; trisa@io3_bit := _true 3530 ;info 392, 407 3531 00000033 = direction_set__select__7___byte equ direction_set__trisa 3532 00000002 = direction_set__select__7___bit equ 2 3533 0197 1533 bsf direction_set__select__7___byte, direction_set__select__7___bit 3534 ; Recombine size1 = 0 || size2 = 0 3535 ; line_number = 391 3536 ; if direction@3 done 3537 ; line_number = 393 3538 ; if direction@4 start 3539 ;info 393, 408 3540 00000035 = direction_set__select__10___byte equ direction_set__direction 3541 00000004 = direction_set__select__10___bit equ 4 3542 ; =>bit_code_emit@symbol(): sym=direction_set__select__10 3543 ; 1TEST: Single test with code in skip slot 3544 0198 1a35 btfsc direction_set__select__10___byte, direction_set__select__10___bit 3545 ; line_number = 394 3546 ; trisc@io4_bit := _true 3547 ;info 394, 409 3548 00000034 = direction_set__select__9___byte equ direction_set__trisc 3549 00000000 = direction_set__select__9___bit equ 0 3550 0199 1434 bsf direction_set__select__9___byte, direction_set__select__9___bit 3551 ; Recombine size1 = 0 || size2 = 0 3552 ; line_number = 393 3553 ; if direction@4 done 3554 ; line_number = 395 3555 ; if direction@5 start 3556 ;info 395, 410 3557 00000035 = direction_set__select__12___byte equ direction_set__direction 3558 00000005 = direction_set__select__12___bit equ 5 3559 ; =>bit_code_emit@symbol(): sym=direction_set__select__12 3560 ; 1TEST: Single test with code in skip slot 3561 019a 1ab5 btfsc direction_set__select__12___byte, direction_set__select__12___bit 3562 ; line_number = 396 3563 ; trisc@io5_bit := _true 3564 ;info 396, 411 3565 00000034 = direction_set__select__11___byte equ direction_set__trisc 3566 00000001 = direction_set__select__11___bit equ 1 3567 019b 14b4 bsf direction_set__select__11___byte, direction_set__select__11___bit 3568 ; Recombine size1 = 0 || size2 = 0 3569 ; line_number = 395 3570 ; if direction@5 done 3571 ; line_number = 397 3572 ; if direction@6 start 3573 ;info 397, 412 3574 00000035 = direction_set__select__14___byte equ direction_set__direction 3575 00000006 = direction_set__select__14___bit equ 6 3576 ; =>bit_code_emit@symbol(): sym=direction_set__select__14 3577 ; 1TEST: Single test with code in skip slot 3578 019c 1b35 btfsc direction_set__select__14___byte, direction_set__select__14___bit 3579 ; line_number = 398 3580 ; trisc@io6_bit := _true 3581 ;info 398, 413 3582 00000034 = direction_set__select__13___byte equ direction_set__trisc 3583 00000002 = direction_set__select__13___bit equ 2 3584 019d 1534 bsf direction_set__select__13___byte, direction_set__select__13___bit 3585 ; Recombine size1 = 0 || size2 = 0 3586 ; line_number = 397 3587 ; if direction@6 done 3588 ; line_number = 399 3589 ; if direction@7 start 3590 ;info 399, 414 3591 00000035 = direction_set__select__16___byte equ direction_set__direction 3592 00000007 = direction_set__select__16___bit equ 7 3593 ; =>bit_code_emit@symbol(): sym=direction_set__select__16 3594 ; 1TEST: Single test with code in skip slot 3595 019e 1bb5 btfsc direction_set__select__16___byte, direction_set__select__16___bit 3596 ; line_number = 400 3597 ; trisc@io7_bit := _true 3598 ;info 400, 415 3599 00000034 = direction_set__select__15___byte equ direction_set__trisc 3600 00000003 = direction_set__select__15___bit equ 3 3601 019f 15b4 bsf direction_set__select__15___byte, direction_set__select__15___bit 3602 ; Recombine size1 = 0 || size2 = 0 3603 ; line_number = 399 3604 ; if direction@7 done 3605 ; line_number = 401 3606 ; trisc@rx_bit := _true 3607 ;info 401, 416 3608 00000034 = direction_set__select__17___byte equ direction_set__trisc 3609 00000005 = direction_set__select__17___bit equ 5 3610 01a0 16b4 bsf direction_set__select__17___byte, direction_set__select__17___bit 3611 ; line_number = 402 3612 ; trisc@tx_bit := _true 3613 ;info 402, 417 3614 00000034 = direction_set__select__18___byte equ direction_set__trisc 3615 00000004 = direction_set__select__18___bit equ 4 3616 01a1 1634 bsf direction_set__select__18___byte, direction_set__select__18___bit 3617 ; line_number = 403 3618 ; _trisa := trisa 3619 ;info 403, 418 3620 01a2 0833 movf direction_set__trisa,w 3621 01a3 1683 bsf __rp0___byte, __rp0___bit 3622 01a4 0085 movwf _trisa 3623 ; line_number = 404 3624 ; _trisc := trisc 3625 ;info 404, 421 3626 01a5 1283 bcf __rp0___byte, __rp0___bit 3627 01a6 0834 movf direction_set__trisc,w 3628 01a7 1683 bsf __rp0___byte, __rp0___bit 3629 01a8 0087 movwf _trisc 3630 3631 3632 ; delay after procedure statements=non-uniform 3633 01a9 1283 bcf __rp0___byte, __rp0___bit 3634 ; Implied return 3635 01aa 3400 retlw 0 3636 3637 3638 3639 3640 ; #procedure byte_put 3641 ; # argument response byte 3642 ; # returns_nothing 3643 ; # 3644 ; # # This procedure will send {response} back to the requestor. 3645 ; # 3646 ; # echo_discard := _true 3647 ; # while !_txif 3648 ; # do_nothing 3649 ; # _tx9d := _false 3650 ; # _txreg := response 3651 ; # 3652 ; # 3653 ; #procedure byte_get 3654 ; # arguments_none 3655 ; # returns byte 3656 ; # 3657 ; # # This procedure returns the next byte from the bus that is 3658 ; # # directed to this module. This procedure handles all address 3659 ; # # change (9th bit set) commands that come in. Thus, any byte 3660 ; # # returned from this procedure is a command byte that is directed 3661 ; # # at this module. 3662 ; # 3663 ; # local address byte 3664 ; # 3665 ; # # Keep processing bytes until we've got a command byte for us: 3666 ; # loop_forever 3667 ; # # Wait for a 9-bit "byte": 3668 ; # while !_rcif 3669 ; # do_nothing 3670 ; # if _rx9d 3671 ; # # We have an address byte; read the address: 3672 ; # if _rcreg = module_address 3673 ; # # We have been selected; start receiving all bytes: 3674 ; # _adden := _false 3675 ; # # Send a null byte to indicate that we alive and well: 3676 ; # _tx9d := _false 3677 ; # _txreg := 0 3678 ; # echo_discard := _true 3679 ; # else 3680 ; # # We have a command or echo byte: 3681 ; # if echo_discard 3682 ; # # We have an echo: 3683 ; # echo_discard := _false 3684 ; # _fsr := _rcreg 3685 ; # else 3686 ; # # We have a real command: 3687 ; # return _rcreg 3688 3689 3690 ; Appending 7 delayed procedures to code bank 0 3691 ; buffer = '_uart' 3692 ; line_number = 7 3693 ;info 7, 427 3694 ; procedure _uart_byte_safe_get 3695 01ab : _uart_byte_safe_get: 3696 ; arguments_none 3697 ; line_number = 9 3698 ; returns byte 3699 3700 ; # This procedure will the next byte from UART. If no byte 3701 ; # received in a reasonable time, 0xfc is returned. 3702 3703 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3704 ; line_number = 14 3705 ; loop_exactly 255 start 3706 ;info 14, 427 3707 00000038 = _uart_byte_safe_get__1 equ globals___0+24 3708 01ab 30ff movlw 255 3709 01ac 00b8 movwf _uart_byte_safe_get__1 3710 01ad : _uart_byte_safe_get__2: 3711 ; line_number = 15 3712 ; loop_exactly 255 start 3713 ;info 15, 429 3714 00000039 = _uart_byte_safe_get__3 equ globals___0+25 3715 01ad 30ff movlw 255 3716 01ae 00b9 movwf _uart_byte_safe_get__3 3717 01af : _uart_byte_safe_get__4: 3718 ; line_number = 16 3719 ; if _rcif start 3720 ;info 16, 431 3721 ; =>bit_code_emit@symbol(): sym=_rcif 3722 ; No 1TEST: true.size=2 false.size=0 3723 ; No 2TEST: true.size=2 false.size=0 3724 ; 1GOTO: Single test with GOTO 3725 01af 1e8c btfss _rcif___byte, _rcif___bit 3726 01b0 29b3 goto _uart_byte_safe_get__5 3727 ; line_number = 17 3728 ; return _rcreg start 3729 ; line_number = 17 3730 ;info 17, 433 3731 01b1 0814 movf _rcreg,w 3732 01b2 0008 return 3733 ; line_number = 17 3734 ; return _rcreg done 3735 ; Recombine size1 = 0 || size2 = 0 3736 01b3 : _uart_byte_safe_get__5: 3737 ; line_number = 16 3738 ; if _rcif done 3739 ; line_number = 15 3740 ; loop_exactly 255 wrap-up 3741 01b3 0bb9 decfsz _uart_byte_safe_get__3,f 3742 01b4 29af goto _uart_byte_safe_get__4 3743 ; line_number = 15 3744 ; loop_exactly 255 done 3745 ; line_number = 14 3746 ; loop_exactly 255 wrap-up 3747 01b5 0bb8 decfsz _uart_byte_safe_get__1,f 3748 01b6 29ad goto _uart_byte_safe_get__2 3749 ; line_number = 14 3750 ; loop_exactly 255 done 3751 ; line_number = 18 3752 ; return 0xfc start 3753 ; line_number = 18 3754 ;info 18, 439 3755 01b7 34fc retlw 252 3756 ; line_number = 18 3757 ; return 0xfc done 3758 3759 3760 ; delay after procedure statements=non-uniform 3761 3762 3763 3764 3765 ; line_number = 21 3766 ;info 21, 440 3767 ; procedure _uart_byte_get 3768 01b8 : _uart_byte_get: 3769 ; arguments_none 3770 ; line_number = 23 3771 ; returns byte 3772 3773 ; # This procedure will return the next byte from the UART. 3774 3775 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3776 ; line_number = 27 3777 ; while !_rcif start 3778 01b8 : _uart_byte_get__1: 3779 ;info 27, 440 3780 ; =>bit_code_emit@symbol(): sym=_rcif 3781 ; 1TEST: Single test with code in skip slot 3782 01b8 1e8c btfss _rcif___byte, _rcif___bit 3783 ; line_number = 28 3784 ; do_nothing 3785 ;info 28, 441 3786 01b9 29b8 goto _uart_byte_get__1 3787 ; Recombine size1 = 0 || size2 = 0 3788 ; line_number = 27 3789 ; while !_rcif done 3790 ; line_number = 29 3791 ; return _rcreg start 3792 ; line_number = 29 3793 ;info 29, 442 3794 01ba 0814 movf _rcreg,w 3795 01bb 0008 return 3796 ; line_number = 29 3797 ; return _rcreg done 3798 3799 3800 ; delay after procedure statements=non-uniform 3801 3802 3803 3804 3805 ; line_number = 32 3806 ;info 32, 444 3807 ; procedure _uart_hex_put 3808 01bc : _uart_hex_put: 3809 ; Last argument is sitting in W; save into argument variable 3810 01bc 00a0 movwf _uart_hex_put__value 3811 ; delay=4294967295 3812 ; line_number = 33 3813 ; argument value byte 3814 00000020 = _uart_hex_put__value equ globals___0 3815 ; line_number = 34 3816 ; returns_nothing 3817 3818 ; # This procedure will output {value} to the UART as a 2-digit 3819 ; # hexadecimal number. 3820 3821 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3822 ; line_number = 39 3823 ; call _uart_nibble_put(value >> 4) 3824 ;info 39, 445 3825 0000003a = _uart_hex_put__1 equ globals___0+26 3826 01bd 0e20 swapf _uart_hex_put__value,w 3827 01be 390f andlw 15 3828 01bf 21c4 call _uart_nibble_put 3829 ; line_number = 40 3830 ; call _uart_nibble_put(value & 0xf) 3831 ;info 40, 448 3832 01c0 300f movlw 15 3833 01c1 0520 andwf _uart_hex_put__value,w 3834 01c2 21c4 call _uart_nibble_put 3835 3836 3837 ; delay after procedure statements=non-uniform 3838 ; Implied return 3839 01c3 3400 retlw 0 3840 3841 3842 3843 3844 ; line_number = 43 3845 ;info 43, 452 3846 ; procedure _uart_nibble_put 3847 01c4 : _uart_nibble_put: 3848 ; Last argument is sitting in W; save into argument variable 3849 01c4 00a1 movwf _uart_nibble_put__nibble 3850 ; delay=4294967295 3851 ; line_number = 44 3852 ; argument nibble byte 3853 00000021 = _uart_nibble_put__nibble equ globals___0+1 3854 ; line_number = 45 3855 ; returns_nothing 3856 3857 ; # This procedure will output {value} to UART as a 1 digit 3858 ; # hexadecimal number. 3859 3860 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3861 ; line_number = 50 3862 ; if nibble < 10 start 3863 ;info 50, 453 3864 01c5 300a movlw 10 3865 01c6 0221 subwf _uart_nibble_put__nibble,w 3866 ; =>bit_code_emit@symbol(): sym=__c 3867 ; No 1TEST: true.size=1 false.size=1 3868 ; 2TEST: two tests with code in both delay slots 3869 01c7 1803 btfsc __c___byte, __c___bit 3870 ; line_number = 53 3871 ; nibble := nibble - 10 + 'A' 3872 ;info 53, 456 3873 01c8 3037 movlw 55 3874 01c9 1c03 btfss __c___byte, __c___bit 3875 ; line_number = 51 3876 ; nibble := nibble + '0' 3877 ;info 51, 458 3878 01ca 3030 movlw 48 3879 01cb 07a1 addwf _uart_nibble_put__nibble,f 3880 ; line_number = 50 3881 ; if nibble < 10 done 3882 ; line_number = 54 3883 ; call _uart_byte_put(nibble) 3884 ;info 54, 460 3885 01cc 0821 movf _uart_nibble_put__nibble,w 3886 01cd 21d7 call _uart_byte_put 3887 3888 3889 ; delay after procedure statements=non-uniform 3890 ; Implied return 3891 01ce 3400 retlw 0 3892 3893 3894 3895 3896 ; line_number = 57 3897 ;info 57, 463 3898 ; procedure _uart_space_put 3899 01cf : _uart_space_put: 3900 ; arguments_none 3901 ; line_number = 59 3902 ; returns_nothing 3903 3904 ; # This procedure will output a space to the UART. 3905 3906 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3907 ; line_number = 63 3908 ; call _uart_byte_put(' ') 3909 ;info 63, 463 3910 01cf 3020 movlw 32 3911 01d0 21d7 call _uart_byte_put 3912 3913 3914 ; delay after procedure statements=non-uniform 3915 ; Implied return 3916 01d1 3400 retlw 0 3917 3918 3919 3920 3921 ; line_number = 66 3922 ;info 66, 466 3923 ; procedure _uart_crlf_put 3924 01d2 : _uart_crlf_put: 3925 ; arguments_none 3926 ; line_number = 68 3927 ; returns_nothing 3928 3929 ; # This procedure will output a carriage return line feed sequecne to 3930 ; # the UART. 3931 3932 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3933 ; line_number = 73 3934 ; call _uart_byte_put('\cr\') 3935 ;info 73, 466 3936 01d2 300d movlw 13 3937 01d3 21d7 call _uart_byte_put 3938 ; line_number = 74 3939 ; call _uart_byte_put('\lf\') 3940 ;info 74, 468 3941 01d4 300a movlw 10 3942 01d5 21d7 call _uart_byte_put 3943 3944 3945 ; delay after procedure statements=non-uniform 3946 ; Implied return 3947 01d6 3400 retlw 0 3948 3949 3950 3951 3952 ; line_number = 77 3953 ;info 77, 471 3954 ; procedure _uart_byte_put 3955 01d7 : _uart_byte_put: 3956 ; Last argument is sitting in W; save into argument variable 3957 01d7 00a2 movwf _uart_byte_put__byte 3958 ; delay=4294967295 3959 ; line_number = 78 3960 ; argument byte byte 3961 00000022 = _uart_byte_put__byte equ globals___0+2 3962 ; line_number = 79 3963 ; returns_nothing 3964 3965 ; # This procedure will send {byte} out using to the UART. 3966 3967 ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX) 3968 ; line_number = 83 3969 ; while !_txif start 3970 01d8 : _uart_byte_put__1: 3971 ;info 83, 472 3972 ; =>bit_code_emit@symbol(): sym=_txif 3973 ; 1TEST: Single test with code in skip slot 3974 01d8 1c8c btfss _txif___byte, _txif___bit 3975 ; line_number = 84 3976 ; do_nothing 3977 ;info 84, 473 3978 01d9 29d8 goto _uart_byte_put__1 3979 ; Recombine size1 = 0 || size2 = 0 3980 ; line_number = 83 3981 ; while !_txif done 3982 ; line_number = 85 3983 ; _txreg := byte 3984 ;info 85, 474 3985 01da 0822 movf _uart_byte_put__byte,w 3986 01db 0095 movwf _txreg 3987 3988 3989 ; delay after procedure statements=non-uniform 3990 ; Implied return 3991 01dc 3400 retlw 0 3992 3993 3994 3995 3996 ; Configuration bits 3997 ; address = 0x2007, fill = 0x3000 3998 ; fcmen = off (0x0) 3999 ; ieso = off (0x0) 4000 ; boden = off (0x0) 4001 ; cpd = off (0x80) 4002 ; cp = off (0x40) 4003 ; mclre = off (0x0) 4004 ; pwrte = off (0x10) 4005 ; wdte = off (0x0) 4006 ; fosc = hs (0x2) 4007 ; 12498 = 0x30d2 4008 30d2 = __config 12498 4009 ; Define start addresses for data regions 4010 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 4011 ; Region="globals___0" Address=32" Size=80 Bytes=27 Bits=3 Available=52 4012 ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80 4013 ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80 4014 ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16 4015 end