Microchip Technology PIC18 LITE Macro Assembler V1.44 build -154322312 Tue Feb 27 10:27:03 2018 Microchip Technology Omniscient Code Generator v1.44 (Free mode) build 201709140600 1 processor 18F45K22 2 fnconf rparam,??,?,0 3 opt pw 120 4 opt lm 5 psect cinit,global,reloc=2,class=CODE,delta=1 6 psect bssBANK0,global,class=BANK0,space=1,delta=1,lowdata,noexec 7 psect cstackBANK0,global,class=BANK0,space=1,delta=1,noexec 8 psect cstackCOMRAM,global,class=COMRAM,space=1,delta=1,noexec 9 psect text0,global,reloc=2,class=CODE,delta=1 10 psect text1,global,reloc=2,class=CODE,delta=1 11 psect text2,global,reloc=2,class=CODE,delta=1 12 psect text3,global,reloc=2,class=CODE,delta=1 13 psect text4,global,reloc=2,class=CODE,delta=1,group=1 14 psect text5,global,reloc=2,class=CODE,delta=1,inline 15 psect text6,global,reloc=2,class=CODE,delta=1 16 psect text7,global,reloc=2,class=CODE,delta=1 17 psect text8,global,reloc=2,class=CODE,delta=1 18 psect text9,global,reloc=2,class=CODE,delta=1 19 psect intcode,global,reloc=2,class=CODE,delta=1 20 psect intsave_regs,global,class=BIGRAM,space=1,delta=1,noexec 21 psect rparam,global,class=COMRAM,space=1,delta=1,noexec 22 psect temp,global,ovrld,common,class=COMRAM,space=1,delta=1 23 0000 24 ; Version 1.44 25 ; Generated 14/09/2017 GMT 26 ; 27 ; Copyright © 2017, Microchip Technology Inc. and its subsidiaries ("Microchip") 28 ; All rights reserved. 29 ; 30 ; This software is developed by Microchip Technology Inc. and its subsidiaries ("Microch + ip"). 31 ; 32 ; Redistribution and use in source and binary forms, with or without modification, are 33 ; permitted provided that the following conditions are met: 34 ; 35 ; 1. Redistributions of source code must retain the above copyright notice, this lis + t of 36 ; conditions and the following disclaimer. 37 ; 38 ; 2. Redistributions in binary form must reproduce the above copyright notice, this + list 39 ; of conditions and the following disclaimer in the documentation and/or other 40 ; materials provided with the distribution. 41 ; 42 ; 3. Microchip's name may not be used to endorse or promote products derived from th + is 43 ; software without specific prior written permission. 44 ; 45 ; THIS SOFTWARE IS PROVIDED BY MICROCHIP "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 46 ; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS F + OR 47 ; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MICROCHIP BE LIABLE FOR ANY DIRECT, INDIREC + T, 48 ; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO 49 ; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS; OR BUSINESS 50 ; INTERRUPTION) HOWSOEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST + RICT 51 ; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE U + SE OF 52 ; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 53 ; 54 ; 55 ; Code-generator required, PIC18F45K22 Definitions 56 ; 57 ; SFR Addresses 58 0000 _ANSELD set 3899 59 0000 _ANSELC set 3898 60 0000 _ANSELB set 3897 61 0000 _ANSELA set 3896 62 0000 _RC1REG set 4014 63 0000 _TX2REG set 3955 64 0000 _TX1REG set 4013 65 0000 _BAUDCON2bits set 3952 66 0000 _SPBRGH2 set 3958 67 0000 _SPBRG2 set 3957 68 0000 _RCSTA2bits set 3953 69 0000 _TXSTA2bits set 3954 70 0000 _TRISCbits set 3988 71 0000 _BAUDCON1bits set 4024 72 0000 _SPBRGH1 set 4016 73 0000 _SPBRG1 set 4015 74 0000 _RCSTA1bits set 4011 75 0000 _TXSTA1bits set 4012 76 0000 _PIE1bits set 3997 77 0000 _T2CONbits set 4026 78 0000 _PR2 set 4027 79 0000 _TRISDbits set 3989 80 0000 _TRISB set 3987 81 0000 _TRISA set 3986 82 0000 _OSCCONbits set 4051 83 0000 _OSCTUNEbits set 3995 84 0000 _INTCONbits set 4082 85 0000 _PORTAbits set 3968 86 0000 _PORTB set 3969 87 0000 _PORTA set 3968 88 0000 _PIR1bits set 3998 89 0000 _PORTDbits set 3971 90 0000 _RC1IF set 31989 91 0000 _TX2IF set 32036 92 0000 _TX1IF set 31988 93 94 ; #config settings 95 0000 96 psect cinit 97 00061C __pcinit: 98 opt stack 0 99 00061C start_initialization: 100 opt stack 0 101 00061C __initialization: 102 opt stack 0 103 104 ; Clear objects allocated to BANK0 (66 bytes) 105 00061C EE00 F060 lfsr 0,__pbssBANK0 106 000620 0E42 movlw 66 107 000622 clear_0: 108 000622 6AEE clrf postinc0,c 109 000624 06E8 decf wreg,f,c 110 000626 E1FD bnz clear_0 111 000628 end_of_initialization: 112 opt stack 0 113 000628 __end_of__initialization: 114 opt stack 0 115 000628 9034 bcf int$flags,0,c ;clear compiler interrupt flag (level 1) 116 00062A 9234 bcf int$flags,1,c ;clear compiler interrupt flag (level 2) 117 00062C 0E00 movlw low (__Lmediumconst shr (0+16)) 118 00062E 6EF8 movwf tblptru,c 119 000630 0100 movlb 0 120 000632 EFAB F001 goto _main ;jump to C main() function 121 tblptru equ 0xFF8 122 postinc0 equ 0xFEE 123 wreg equ 0xFE8 124 125 psect bssBANK0 126 000060 __pbssBANK0: 127 opt stack 0 128 000060 _keypresses: 129 opt stack 0 130 000060 ds 2 131 000062 _keys_data: 132 opt stack 0 133 000062 ds 64 134 tblptru equ 0xFF8 135 postinc0 equ 0xFEE 136 wreg equ 0xFE8 137 138 psect cstackBANK0 139 0000A2 __pcstackBANK0: 140 opt stack 0 141 0000A2 midi_note_on@pkt: 142 opt stack 0 143 144 ; 2 bytes @ 0x0 145 0000A2 ds 2 146 0000A4 midi_note_on@channel: 147 opt stack 0 148 149 ; 2 bytes @ 0x2 150 0000A4 ds 2 151 0000A6 midi_note_on@note: 152 opt stack 0 153 154 ; 1 bytes @ 0x4 155 0000A6 ds 1 156 0000A7 midi_note_on@velocity: 157 opt stack 0 158 159 ; 1 bytes @ 0x5 160 0000A7 ds 1 161 0000A8 ??_main: 162 163 ; 1 bytes @ 0x6 164 0000A8 ds 5 165 0000AD main@i: 166 opt stack 0 167 168 ; 2 bytes @ 0xB 169 0000AD ds 2 170 0000AF main@message: 171 opt stack 0 172 173 ; 7 bytes @ 0xD 174 0000AF ds 7 175 tblptru equ 0xFF8 176 postinc0 equ 0xFEE 177 wreg equ 0xFE8 178 179 psect cstackCOMRAM 180 000001 __pcstackCOMRAM: 181 opt stack 0 182 000001 ??_isr: 183 000001 184 ; 1 bytes @ 0x0 185 000001 ds 36 186 000025 isr@data_a: 187 opt stack 0 188 189 ; 1 bytes @ 0x24 190 000025 ds 1 191 000026 isr@data_b: 192 opt stack 0 193 194 ; 1 bytes @ 0x25 195 000026 ds 1 196 000027 _isr$595: 197 opt stack 0 198 199 ; 1 bytes @ 0x26 200 000027 ds 1 201 000028 _isr$596: 202 opt stack 0 203 204 ; 1 bytes @ 0x27 205 000028 ds 1 206 000029 _isr$605: 207 opt stack 0 208 209 ; 1 bytes @ 0x28 210 000029 ds 1 211 00002A isr@i: 212 opt stack 0 213 214 ; 1 bytes @ 0x29 215 00002A ds 1 216 00002B eusart2_putch@c: 217 opt stack 0 218 00002B midi_set_status@pkt: 219 opt stack 0 220 00002B midi_set_channel@pkt: 221 opt stack 0 222 00002B memset@p1: 223 opt stack 0 224 225 ; 2 bytes @ 0x2A 226 00002B ds 1 227 00002C eusart_write_midi@pkt: 228 opt stack 0 229 230 ; 2 bytes @ 0x2B 231 00002C ds 1 232 00002D midi_set_status@status: 233 opt stack 0 234 00002D midi_set_channel@channel: 235 opt stack 0 236 00002D memset@c: 237 opt stack 0 238 239 ; 2 bytes @ 0x2C 240 00002D ds 1 241 00002E ??_eusart_write_midi: 242 00002E ??_midi_set_status: 243 244 ; 1 bytes @ 0x2D 245 00002E ds 1 246 00002F ??_midi_set_channel: 247 00002F memset@n: 248 opt stack 0 249 250 ; 2 bytes @ 0x2E 251 00002F ds 1 252 000030 eusart_write_midi@length: 253 opt stack 0 254 255 ; 2 bytes @ 0x2F 256 000030 ds 1 257 000031 memset@p: 258 opt stack 0 259 260 ; 2 bytes @ 0x30 261 000031 ds 1 262 000032 eusart_write_midi@data: 263 opt stack 0 264 265 ; 2 bytes @ 0x31 266 000032 ds 2 267 tblptru equ 0xFF8 268 postinc0 equ 0xFEE 269 wreg equ 0xFE8 270 271 ;; 272 ;;Main: autosize = 0, tempsize = 5, incstack = 0, save=0 273 ;; 274 ;; *************** function _main ***************** 275 ;; Defined at: 276 ;; line 215 in file "main.c" 277 ;; Parameters: Size Location Type 278 ;; None 279 ;; Auto vars: Size Location Type 280 ;; message 7 13[BANK0 ] struct . 281 ;; i 2 11[BANK0 ] unsigned int 282 ;; Return value: Size Location Type 283 ;; 1 wreg void 284 ;; Registers used: 285 ;; wreg, fsr2l, fsr2h, status,2, status,0, cstack 286 ;; Tracked objects: 287 ;; On entry : 0/0 288 ;; On exit : 0/0 289 ;; Unchanged: 0/0 290 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 291 ;; Params: 0 0 0 0 0 0 0 292 ;; Locals: 0 9 0 0 0 0 0 293 ;; Temps: 0 5 0 0 0 0 0 294 ;; Totals: 0 14 0 0 0 0 0 295 ;;Total ram usage: 14 bytes 296 ;; Hardware stack levels required when called: 3 297 ;; This function calls: 298 ;; _eusart_write_midi 299 ;; _init_hw 300 ;; _memset 301 ;; _midi_note_on 302 ;; This function is called by: 303 ;; Startup code after reset 304 ;; This function uses a non-reentrant model 305 ;; 306 307 psect text0 308 000356 __ptext0: 309 opt stack 0 310 000356 _main: 311 opt stack 28 312 313 ;main.c: 217: unsigned i; 314 ;main.c: 218: midi_message_t message; 315 ;main.c: 221: init_hw(); 316 317 ;incstack = 0 318 000356 EC86 F002 call _init_hw ;wreg free 319 320 ;main.c: 224: memset(keys_data, 0, sizeof(keys_data)); 321 00035A 0E62 movlw low _keys_data 322 00035C 6E2B movwf memset@p1,c 323 00035E 0E00 movlw high _keys_data 324 000360 6E2C movwf memset@p1+1,c 325 000362 0E00 movlw 0 326 000364 6E2E movwf memset@c+1,c 327 000366 0E00 movlw 0 328 000368 6E2D movwf memset@c,c 329 00036A 0E00 movlw 0 330 00036C 6E30 movwf memset@n+1,c 331 00036E 0E40 movlw 64 332 000370 6E2F movwf memset@n,c 333 000372 ECB7 F002 call _memset ;wreg free 334 335 ;main.c: 226: (INTCONbits.GIE = 1); 336 000376 8EF2 bsf intcon,7,c ;volatile 337 338 ;main.c: 229: PORTDbits.RD1 = 0; 339 000378 9283 bcf 3971,1,c ;volatile 340 341 ;main.c: 232: midi_note_on(&message, 0x0, 0x3C, 0x7F); 342 00037A 0EAF movlw low main@message 343 00037C 0100 movlb 0 ; () banked 344 00037E 6FA2 movwf midi_note_on@pkt& (0+255),b 345 000380 0E00 movlw high main@message 346 000382 6FA3 movwf (midi_note_on@pkt+1)& (0+255),b 347 000384 0E00 movlw 0 348 000386 6FA5 movwf (midi_note_on@channel+1)& (0+255),b 349 000388 0E00 movlw 0 350 00038A 6FA4 movwf midi_note_on@channel& (0+255),b 351 00038C 0E3C movlw 60 352 00038E 6FA6 movwf midi_note_on@note& (0+255),b 353 000390 0E7F movlw 127 354 000392 6FA7 movwf midi_note_on@velocity& (0+255),b 355 000394 EC53 F002 call _midi_note_on ;wreg free 356 000398 l1202: 357 358 ;main.c: 237: for (i = 0; i < 16; i++) { 359 000398 0E00 movlw 0 360 00039A 0100 movlb 0 ; () banked 361 00039C 6FAE movwf (main@i+1)& (0+255),b 362 00039E 0E00 movlw 0 363 0003A0 6FAD movwf main@i& (0+255),b 364 0003A2 l1204: 365 366 ; BSR set to: 0 367 0003A2 51AE movf (main@i+1)& (0+255),w,b 368 0003A4 E1F9 bnz l1202 369 0003A6 0E10 movlw 16 370 0003A8 5DAD subwf main@i& (0+255),w,b 371 0003AA B0D8 btfsc status,0,c 372 0003AC D7F5 goto l76 373 374 ; BSR set to: 0 375 ;main.c: 238: if (keypresses & (1< main@message(7), 477 ;; channel 2 2[BANK0 ] unsigned int 478 ;; note 1 4[BANK0 ] enum E31 479 ;; velocity 1 5[BANK0 ] unsigned char 480 ;; Auto vars: Size Location Type 481 ;; None 482 ;; Return value: Size Location Type 483 ;; 2 0[BANK0 ] int 484 ;; Registers used: 485 ;; wreg, fsr2l, fsr2h, status,2, status,0, cstack 486 ;; Tracked objects: 487 ;; On entry : 0/0 488 ;; On exit : 0/0 489 ;; Unchanged: 0/0 490 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 491 ;; Params: 0 6 0 0 0 0 0 492 ;; Locals: 0 0 0 0 0 0 0 493 ;; Temps: 0 0 0 0 0 0 0 494 ;; Totals: 0 6 0 0 0 0 0 495 ;;Total ram usage: 6 bytes 496 ;; Hardware stack levels used: 1 497 ;; Hardware stack levels required when called: 2 498 ;; This function calls: 499 ;; _midi_set_channel 500 ;; _midi_set_status 501 ;; This function is called by: 502 ;; _main 503 ;; This function uses a non-reentrant model 504 ;; 505 506 psect text1 507 0004A6 __ptext1: 508 opt stack 0 509 0004A6 _midi_note_on: 510 opt stack 28 511 512 ;midi.c: 64: if (pkt == (0)) { 513 514 ; BSR set to: 0 515 ;incstack = 0 516 0004A6 0100 movlb 0 ; () banked 517 0004A8 51A2 movf midi_note_on@pkt& (0+255),w,b 518 0004AA 11A3 iorwf (midi_note_on@pkt+1)& (0+255),w,b 519 0004AC B4D8 btfsc status,2,c 520 0004AE 0012 return 521 522 ; BSR set to: 0 523 ;midi.c: 66: } 524 ;midi.c: 74: midi_set_status(pkt, NOTE_ON); 525 526 ; BSR set to: 0 527 528 ; BSR set to: 0 529 ;midi.c: 65: return -1; 530 ; Return value of _midi_note_on is never used 531 0004B0 C0A2 F02B movff midi_note_on@pkt,midi_set_status@pkt 532 0004B4 C0A3 F02C movff midi_note_on@pkt+1,midi_set_status@pkt+1 533 0004B8 0E08 movlw 8 534 0004BA 6E2D movwf midi_set_status@status,c 535 0004BC ECE0 F002 call _midi_set_status ;wreg free 536 537 ;midi.c: 75: midi_set_channel(pkt, channel); 538 0004C0 C0A2 F02B movff midi_note_on@pkt,midi_set_channel@pkt 539 0004C4 C0A3 F02C movff midi_note_on@pkt+1,midi_set_channel@pkt+1 540 0004C8 C0A4 F02D movff midi_note_on@channel,midi_set_channel@channel 541 0004CC C0A5 F02E movff midi_note_on@channel+1,midi_set_channel@channel+1 542 0004D0 ECCD F002 call _midi_set_channel ;wreg free 543 544 ;midi.c: 77: pkt->data[0] = note; 545 0004D4 0100 movlb 0 ; () banked 546 0004D6 EE20 F003 lfsr 2,3 547 0004DA 51A2 movf midi_note_on@pkt& (0+255),w,b 548 0004DC 26D9 addwf fsr2l,f,c 549 0004DE 51A3 movf (midi_note_on@pkt+1)& (0+255),w,b 550 0004E0 22DA addwfc fsr2h,f,c 551 0004E2 C0A6 FFDF movff midi_note_on@note,indf2 552 553 ; BSR set to: 0 554 ;midi.c: 78: pkt->data[1] = velocity; 555 0004E6 EE20 F004 lfsr 2,4 556 0004EA 51A2 movf midi_note_on@pkt& (0+255),w,b 557 0004EC 26D9 addwf fsr2l,f,c 558 0004EE 51A3 movf (midi_note_on@pkt+1)& (0+255),w,b 559 0004F0 22DA addwfc fsr2h,f,c 560 0004F2 C0A7 FFDF movff midi_note_on@velocity,indf2 561 562 ; BSR set to: 0 563 ;midi.c: 81: pkt->data_size = 2; 564 0004F6 EE20 F001 lfsr 2,1 565 0004FA 51A2 movf midi_note_on@pkt& (0+255),w,b 566 0004FC 26D9 addwf fsr2l,f,c 567 0004FE 51A3 movf (midi_note_on@pkt+1)& (0+255),w,b 568 000500 22DA addwfc fsr2h,f,c 569 000502 0E02 movlw 2 570 000504 6EDE movwf postinc2,c 571 000506 0E00 movlw 0 572 000508 6EDD movwf postdec2,c 573 00050A 0012 return 574 00050C __end_of_midi_note_on: 575 opt stack 0 576 tblptru equ 0xFF8 577 intcon equ 0xFF2 578 postinc0 equ 0xFEE 579 wreg equ 0xFE8 580 indf2 equ 0xFDF 581 postinc2 equ 0xFDE 582 postdec2 equ 0xFDD 583 fsr2h equ 0xFDA 584 fsr2l equ 0xFD9 585 status equ 0xFD8 586 587 ;; *************** function _midi_set_status ***************** 588 ;; Defined at: 589 ;; line 40 in file "midi.c" 590 ;; Parameters: Size Location Type 591 ;; pkt 2 42[COMRAM] PTR struct . 592 ;; -> main@message(7), 593 ;; status 1 44[COMRAM] enum E40 594 ;; Auto vars: Size Location Type 595 ;; None 596 ;; Return value: Size Location Type 597 ;; 2 42[COMRAM] int 598 ;; Registers used: 599 ;; wreg, fsr2l, fsr2h, status,2, status,0 600 ;; Tracked objects: 601 ;; On entry : 0/0 602 ;; On exit : 0/0 603 ;; Unchanged: 0/0 604 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 605 ;; Params: 3 0 0 0 0 0 0 606 ;; Locals: 0 0 0 0 0 0 0 607 ;; Temps: 1 0 0 0 0 0 0 608 ;; Totals: 4 0 0 0 0 0 0 609 ;;Total ram usage: 4 bytes 610 ;; Hardware stack levels used: 1 611 ;; Hardware stack levels required when called: 1 612 ;; This function calls: 613 ;; Nothing 614 ;; This function is called by: 615 ;; _midi_note_on 616 ;; _midi_note_off 617 ;; This function uses a non-reentrant model 618 ;; 619 620 psect text2 621 0005C0 __ptext2: 622 opt stack 0 623 0005C0 _midi_set_status: 624 opt stack 28 625 626 ;midi.c: 42: if (pkt == (0)) { 627 628 ; BSR set to: 0 629 ;incstack = 0 630 0005C0 502B movf midi_set_status@pkt,w,c 631 0005C2 102C iorwf midi_set_status@pkt+1,w,c 632 0005C4 B4D8 btfsc status,2,c 633 0005C6 0012 return 634 635 ;midi.c: 44: } 636 ;midi.c: 46: pkt->status = status & 0x0F; 637 638 ;midi.c: 43: return -1; 639 ; Return value of _midi_set_status is never used 640 0005C8 C02D F02E movff midi_set_status@status,??_midi_set_status 641 0005CC 0E0F movlw 15 642 0005CE 162E andwf ??_midi_set_status,f,c 643 0005D0 C02B FFD9 movff midi_set_status@pkt,fsr2l 644 0005D4 C02C FFDA movff midi_set_status@pkt+1,fsr2h 645 0005D8 50DF movf indf2,w,c 646 0005DA 182E xorwf ??_midi_set_status,w,c 647 0005DC 0BF0 andlw -16 648 0005DE 182E xorwf ??_midi_set_status,w,c 649 0005E0 6EDF movwf indf2,c 650 0005E2 0012 return 651 0005E4 __end_of_midi_set_status: 652 opt stack 0 653 tblptru equ 0xFF8 654 intcon equ 0xFF2 655 postinc0 equ 0xFEE 656 wreg equ 0xFE8 657 indf2 equ 0xFDF 658 postinc2 equ 0xFDE 659 postdec2 equ 0xFDD 660 fsr2h equ 0xFDA 661 fsr2l equ 0xFD9 662 status equ 0xFD8 663 664 ;; *************** function _midi_set_channel ***************** 665 ;; Defined at: 666 ;; line 51 in file "midi.c" 667 ;; Parameters: Size Location Type 668 ;; pkt 2 42[COMRAM] PTR struct . 669 ;; -> main@message(7), 670 ;; channel 2 44[COMRAM] unsigned int 671 ;; Auto vars: Size Location Type 672 ;; None 673 ;; Return value: Size Location Type 674 ;; 2 42[COMRAM] int 675 ;; Registers used: 676 ;; wreg, fsr2l, fsr2h, status,2, status,0 677 ;; Tracked objects: 678 ;; On entry : 0/0 679 ;; On exit : 0/0 680 ;; Unchanged: 0/0 681 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 682 ;; Params: 4 0 0 0 0 0 0 683 ;; Locals: 0 0 0 0 0 0 0 684 ;; Temps: 1 0 0 0 0 0 0 685 ;; Totals: 5 0 0 0 0 0 0 686 ;;Total ram usage: 5 bytes 687 ;; Hardware stack levels used: 1 688 ;; Hardware stack levels required when called: 1 689 ;; This function calls: 690 ;; Nothing 691 ;; This function is called by: 692 ;; _midi_note_on 693 ;; _midi_note_off 694 ;; This function uses a non-reentrant model 695 ;; 696 697 psect text3 698 00059A __ptext3: 699 opt stack 0 700 00059A _midi_set_channel: 701 opt stack 28 702 703 ;midi.c: 53: if (pkt == (0)) { 704 705 ;incstack = 0 706 00059A 502B movf midi_set_channel@pkt,w,c 707 00059C 102C iorwf midi_set_channel@pkt+1,w,c 708 00059E B4D8 btfsc status,2,c 709 0005A0 0012 return 710 711 ;midi.c: 55: } 712 ;midi.c: 57: pkt->channel = channel & 0x0F; 713 714 ;midi.c: 54: return -1; 715 ; Return value of _midi_set_channel is never used 716 0005A2 C02D F02F movff midi_set_channel@channel,??_midi_set_channel 717 0005A6 0E0F movlw 15 718 0005A8 162F andwf ??_midi_set_channel,f,c 719 0005AA C02B FFD9 movff midi_set_channel@pkt,fsr2l 720 0005AE C02C FFDA movff midi_set_channel@pkt+1,fsr2h 721 0005B2 3A2F swapf ??_midi_set_channel,f,c 722 0005B4 50DF movf indf2,w,c 723 0005B6 182F xorwf ??_midi_set_channel,w,c 724 0005B8 0B0F andlw -241 725 0005BA 182F xorwf ??_midi_set_channel,w,c 726 0005BC 6EDF movwf indf2,c 727 0005BE 0012 return 728 0005C0 __end_of_midi_set_channel: 729 opt stack 0 730 tblptru equ 0xFF8 731 intcon equ 0xFF2 732 postinc0 equ 0xFEE 733 wreg equ 0xFE8 734 indf2 equ 0xFDF 735 postinc2 equ 0xFDE 736 postdec2 equ 0xFDD 737 fsr2h equ 0xFDA 738 fsr2l equ 0xFD9 739 status equ 0xFD8 740 741 ;; *************** function _memset ***************** 742 ;; Defined at: 743 ;; line 8 in file "C:\Program Files\Microchip\xc8\v1.44\sources\common\memset.c" 744 ;; Parameters: Size Location Type 745 ;; p1 2 42[COMRAM] PTR void 746 ;; -> keys_data(64), 747 ;; c 2 44[COMRAM] int 748 ;; n 2 46[COMRAM] unsigned int 749 ;; Auto vars: Size Location Type 750 ;; p 2 48[COMRAM] PTR unsigned char 751 ;; -> keys_data(64), 752 ;; Return value: Size Location Type 753 ;; 2 42[COMRAM] PTR void 754 ;; Registers used: 755 ;; wreg, fsr2l, fsr2h, status,2, status,0 756 ;; Tracked objects: 757 ;; On entry : 0/0 758 ;; On exit : 0/0 759 ;; Unchanged: 0/0 760 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 761 ;; Params: 6 0 0 0 0 0 0 762 ;; Locals: 2 0 0 0 0 0 0 763 ;; Temps: 0 0 0 0 0 0 0 764 ;; Totals: 8 0 0 0 0 0 0 765 ;;Total ram usage: 8 bytes 766 ;; Hardware stack levels used: 1 767 ;; Hardware stack levels required when called: 1 768 ;; This function calls: 769 ;; Nothing 770 ;; This function is called by: 771 ;; _main 772 ;; This function uses a non-reentrant model 773 ;; 774 775 psect text4 776 00056E __ptext4: 777 opt stack 0 778 00056E _memset: 779 opt stack 29 780 781 ;incstack = 0 782 00056E C02B F031 movff memset@p1,memset@p 783 000572 C02C F032 movff memset@p1+1,memset@p+1 784 000576 D008 goto l596 785 000578 l1110: 786 000578 C031 FFD9 movff memset@p,fsr2l 787 00057C C032 FFDA movff memset@p+1,fsr2h 788 000580 C02D FFDF movff memset@c,indf2 789 000584 4A31 infsnz memset@p,f,c 790 000586 2A32 incf memset@p+1,f,c 791 000588 l596: 792 000588 062F decf memset@n,f,c 793 00058A A0D8 btfss status,0,c 794 00058C 0630 decf memset@n+1,f,c 795 00058E 282F incf memset@n,w,c 796 000590 E1F3 bnz l1110 797 000592 2830 incf memset@n+1,w,c 798 000594 B4D8 btfsc status,2,c 799 000596 0012 return 800 000598 D7EF goto l597 801 00059A __end_of_memset: 802 opt stack 0 803 tblptru equ 0xFF8 804 intcon equ 0xFF2 805 postinc0 equ 0xFEE 806 wreg equ 0xFE8 807 indf2 equ 0xFDF 808 postinc2 equ 0xFDE 809 postdec2 equ 0xFDD 810 fsr2h equ 0xFDA 811 fsr2l equ 0xFD9 812 status equ 0xFD8 813 814 ;; *************** function _init_hw ***************** 815 ;; Defined at: 816 ;; line 150 in file "main.c" 817 ;; Parameters: Size Location Type 818 ;; None 819 ;; Auto vars: Size Location Type 820 ;; None 821 ;; Return value: Size Location Type 822 ;; 1 wreg void 823 ;; Registers used: 824 ;; wreg, status,2, cstack 825 ;; Tracked objects: 826 ;; On entry : 0/0 827 ;; On exit : 0/0 828 ;; Unchanged: 0/0 829 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 830 ;; Params: 0 0 0 0 0 0 0 831 ;; Locals: 0 0 0 0 0 0 0 832 ;; Temps: 0 0 0 0 0 0 0 833 ;; Totals: 0 0 0 0 0 0 0 834 ;;Total ram usage: 0 bytes 835 ;; Hardware stack levels used: 1 836 ;; Hardware stack levels required when called: 2 837 ;; This function calls: 838 ;; _eusart1_init 839 ;; _eusart2_init 840 ;; This function is called by: 841 ;; _main 842 ;; This function uses a non-reentrant model 843 ;; 844 845 psect text5 846 00050C __ptext5: 847 opt stack 0 848 00050C _init_hw: 849 opt stack 28 850 851 ;main.c: 152: (INTCONbits.GIE = 0); 852 853 ;incstack = 0 854 00050C 9EF2 bcf intcon,7,c ;volatile 855 856 ;main.c: 156: OSCTUNEbits.PLLEN = 1; 857 00050E 8C9B bsf 3995,6,c ;volatile 858 859 ;main.c: 158: OSCTUNEbits.TUN = 0b011111; 860 000510 809B bsf 3995,0,c ;volatile 861 000512 829B bsf 3995,1,c ;volatile 862 000514 849B bsf 3995,2,c ;volatile 863 000516 869B bsf 3995,3,c ;volatile 864 000518 889B bsf 3995,4,c ;volatile 865 00051A 9A9B bcf 3995,5,c ;volatile 866 867 ;main.c: 160: OSCCONbits.IRCF = 0b111; 868 00051C 88D3 bsf 4051,4,c ;volatile 869 00051E 8AD3 bsf 4051,5,c ;volatile 870 000520 8CD3 bsf 4051,6,c ;volatile 871 872 ;main.c: 162: OSCCONbits.SCS = 0b00; 873 000522 0EFC movlw -4 874 000524 16D3 andwf 4051,f,c ;volatile 875 876 ;main.c: 166: ANSELA = 0x00; 877 000526 0E00 movlw 0 878 000528 010F movlb 15 ; () banked 879 00052A 6F38 movwf 56,b ;volatile 880 881 ;main.c: 167: ANSELB = 0x00; 882 00052C 0E00 movlw 0 883 00052E 6F39 movwf 57,b ;volatile 884 885 ;main.c: 168: ANSELC = 0x00; 886 000530 0E00 movlw 0 887 000532 6F3A movwf 58,b ;volatile 888 889 ;main.c: 169: ANSELD = 0x00; 890 000534 0E00 movlw 0 891 000536 6F3B movwf 59,b ;volatile 892 893 ; BSR set to: 15 894 ;main.c: 172: TRISA = 0xFF; 895 000538 6892 setf 3986,c ;volatile 896 897 ; BSR set to: 15 898 ;main.c: 173: TRISB = 0xFF; 899 00053A 6893 setf 3987,c ;volatile 900 901 ; BSR set to: 15 902 ;main.c: 176: TRISDbits.TRISD1 = 0; 903 00053C 9295 bcf 3989,1,c ;volatile 904 905 ; BSR set to: 15 906 ;main.c: 177: TRISDbits.TRISD2 = 0; 907 00053E 9495 bcf 3989,2,c ;volatile 908 909 ; BSR set to: 15 910 ;main.c: 178: TRISDbits.TRISD3 = 0; 911 000540 9695 bcf 3989,3,c ;volatile 912 913 ; BSR set to: 15 914 ;main.c: 179: TRISDbits.TRISD4 = 0; 915 000542 9895 bcf 3989,4,c ;volatile 916 917 ; BSR set to: 15 918 ;main.c: 182: PORTDbits.RD1 = 1; 919 000544 8283 bsf 3971,1,c ;volatile 920 921 ; BSR set to: 15 922 ;main.c: 184: PORTDbits.RD2 = 0; 923 000546 9483 bcf 3971,2,c ;volatile 924 925 ; BSR set to: 15 926 ;main.c: 186: PORTDbits.RD3 = 1; 927 000548 8683 bsf 3971,3,c ;volatile 928 929 ; BSR set to: 15 930 ;main.c: 188: PORTDbits.RD4 = 0; 931 00054A 9883 bcf 3971,4,c ;volatile 932 933 ;main.c: 193: PR2 = 128; 934 00054C 0E80 movlw 128 935 00054E 6EBB movwf 4027,c ;volatile 936 937 ;main.c: 195: T2CONbits.T2OUTPS = 0b0001; 938 000550 50BA movf 4026,w,c ;volatile 939 000552 0B87 andlw -121 940 000554 0908 iorlw 8 941 000556 6EBA movwf 4026,c ;volatile 942 943 ;main.c: 197: T2CONbits.T2CKPS = 0b11; 944 000558 0E03 movlw 3 945 00055A 12BA iorwf 4026,f,c ;volatile 946 947 ; BSR set to: 15 948 ;main.c: 199: T2CONbits.TMR2ON = 1; 949 00055C 84BA bsf 4026,2,c ;volatile 950 951 ; BSR set to: 15 952 ;main.c: 202: PIE1bits.TMR2IE = 1; 953 00055E 829D bsf 3997,1,c ;volatile 954 955 ; BSR set to: 15 956 ;main.c: 203: PIR1bits.TMR2IF = 0; 957 000560 929E bcf 3998,1,c ;volatile 958 959 ; BSR set to: 15 960 ;main.c: 206: INTCONbits.PEIE = 1; 961 000562 8CF2 bsf intcon,6,c ;volatile 962 963 ; BSR set to: 15 964 ;main.c: 209: eusart1_init(); 965 000564 EC00 F003 call _eusart1_init ;wreg free 966 967 ;main.c: 210: eusart2_init(); 968 000568 ECF2 F002 call _eusart2_init ;wreg free 969 00056C 0012 return ;funcret 970 00056E __end_of_init_hw: 971 opt stack 0 972 tblptru equ 0xFF8 973 intcon equ 0xFF2 974 postinc0 equ 0xFEE 975 wreg equ 0xFE8 976 indf2 equ 0xFDF 977 postinc2 equ 0xFDE 978 postdec2 equ 0xFDD 979 fsr2h equ 0xFDA 980 fsr2l equ 0xFD9 981 status equ 0xFD8 982 983 ;; *************** function _eusart2_init ***************** 984 ;; Defined at: 985 ;; line 25 in file "rs232.c" 986 ;; Parameters: Size Location Type 987 ;; None 988 ;; Auto vars: Size Location Type 989 ;; None 990 ;; Return value: Size Location Type 991 ;; 1 wreg void 992 ;; Registers used: 993 ;; wreg, status,2 994 ;; Tracked objects: 995 ;; On entry : 0/0 996 ;; On exit : 0/0 997 ;; Unchanged: 0/0 998 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 999 ;; Params: 0 0 0 0 0 0 0 1000 ;; Locals: 0 0 0 0 0 0 0 1001 ;; Temps: 0 0 0 0 0 0 0 1002 ;; Totals: 0 0 0 0 0 0 0 1003 ;;Total ram usage: 0 bytes 1004 ;; Hardware stack levels used: 1 1005 ;; Hardware stack levels required when called: 1 1006 ;; This function calls: 1007 ;; Nothing 1008 ;; This function is called by: 1009 ;; _init_hw 1010 ;; This function uses a non-reentrant model 1011 ;; 1012 1013 psect text6 1014 0005E4 __ptext6: 1015 opt stack 0 1016 0005E4 _eusart2_init: 1017 opt stack 28 1018 1019 ;rs232.c: 28: TXSTA2bits.SYNC = 0; 1020 1021 ;incstack = 0 1022 0005E4 9872 bcf 3954,4,c ;volatile 1023 1024 ;rs232.c: 29: TXSTA2bits.TX9 = 0; 1025 0005E6 9C72 bcf 3954,6,c ;volatile 1026 1027 ;rs232.c: 32: RCSTA2bits.SPEN = 1; 1028 0005E8 8E71 bsf 3953,7,c ;volatile 1029 1030 ;rs232.c: 33: SPBRG2 = 31; 1031 0005EA 0E1F movlw 31 1032 0005EC 6E75 movwf 3957,c ;volatile 1033 1034 ;rs232.c: 34: SPBRGH2 = 0; 1035 0005EE 0E00 movlw 0 1036 0005F0 6E76 movwf 3958,c ;volatile 1037 1038 ;rs232.c: 35: TXSTA2bits.BRGH = 0; 1039 0005F2 9472 bcf 3954,2,c ;volatile 1040 1041 ;rs232.c: 36: BAUDCON2bits.BRG16 = 0; 1042 0005F4 9670 bcf 3952,3,c ;volatile 1043 1044 ;rs232.c: 39: TRISDbits.TRISD7 = 1; 1045 0005F6 8E95 bsf 3989,7,c ;volatile 1046 1047 ;rs232.c: 40: TRISDbits.TRISD6 = 1; 1048 0005F8 8C95 bsf 3989,6,c ;volatile 1049 1050 ;rs232.c: 42: RCSTA2bits.CREN = 1; 1051 0005FA 8871 bsf 3953,4,c ;volatile 1052 1053 ;rs232.c: 43: TXSTA2bits.TXEN = 1; 1054 0005FC 8A72 bsf 3954,5,c ;volatile 1055 0005FE 0012 return ;funcret 1056 000600 __end_of_eusart2_init: 1057 opt stack 0 1058 tblptru equ 0xFF8 1059 intcon equ 0xFF2 1060 postinc0 equ 0xFEE 1061 wreg equ 0xFE8 1062 indf2 equ 0xFDF 1063 postinc2 equ 0xFDE 1064 postdec2 equ 0xFDD 1065 fsr2h equ 0xFDA 1066 fsr2l equ 0xFD9 1067 status equ 0xFD8 1068 1069 ;; *************** function _eusart1_init ***************** 1070 ;; Defined at: 1071 ;; line 4 in file "rs232.c" 1072 ;; Parameters: Size Location Type 1073 ;; None 1074 ;; Auto vars: Size Location Type 1075 ;; None 1076 ;; Return value: Size Location Type 1077 ;; 1 wreg void 1078 ;; Registers used: 1079 ;; wreg, status,2 1080 ;; Tracked objects: 1081 ;; On entry : 0/0 1082 ;; On exit : 0/0 1083 ;; Unchanged: 0/0 1084 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 1085 ;; Params: 0 0 0 0 0 0 0 1086 ;; Locals: 0 0 0 0 0 0 0 1087 ;; Temps: 0 0 0 0 0 0 0 1088 ;; Totals: 0 0 0 0 0 0 0 1089 ;;Total ram usage: 0 bytes 1090 ;; Hardware stack levels used: 1 1091 ;; Hardware stack levels required when called: 1 1092 ;; This function calls: 1093 ;; Nothing 1094 ;; This function is called by: 1095 ;; _init_hw 1096 ;; This function uses a non-reentrant model 1097 ;; 1098 1099 psect text7 1100 000600 __ptext7: 1101 opt stack 0 1102 000600 _eusart1_init: 1103 opt stack 28 1104 1105 ;rs232.c: 7: TXSTA1bits.SYNC = 0; 1106 1107 ;incstack = 0 1108 000600 98AC bcf 4012,4,c ;volatile 1109 1110 ;rs232.c: 8: TXSTA1bits.TX9 = 0; 1111 000602 9CAC bcf 4012,6,c ;volatile 1112 1113 ;rs232.c: 11: RCSTA1bits.SPEN = 1; 1114 000604 8EAB bsf 4011,7,c ;volatile 1115 1116 ;rs232.c: 12: SPBRG1 = 31; 1117 000606 0E1F movlw 31 1118 000608 6EAF movwf 4015,c ;volatile 1119 1120 ;rs232.c: 13: SPBRGH1 = 0; 1121 00060A 0E00 movlw 0 1122 00060C 6EB0 movwf 4016,c ;volatile 1123 1124 ;rs232.c: 14: TXSTA1bits.BRGH = 0; 1125 00060E 94AC bcf 4012,2,c ;volatile 1126 1127 ;rs232.c: 15: BAUDCON1bits.BRG16 = 0; 1128 000610 96B8 bcf 4024,3,c ;volatile 1129 1130 ;rs232.c: 18: TRISCbits.TRISC7 = 1; 1131 000612 8E94 bsf 3988,7,c ;volatile 1132 1133 ;rs232.c: 19: TRISCbits.TRISC6 = 1; 1134 000614 8C94 bsf 3988,6,c ;volatile 1135 1136 ;rs232.c: 21: RCSTA1bits.CREN = 1; 1137 000616 88AB bsf 4011,4,c ;volatile 1138 1139 ;rs232.c: 22: TXSTA1bits.TXEN = 1; 1140 000618 8AAC bsf 4012,5,c ;volatile 1141 00061A 0012 return ;funcret 1142 00061C __end_of_eusart1_init: 1143 opt stack 0 1144 tblptru equ 0xFF8 1145 intcon equ 0xFF2 1146 postinc0 equ 0xFEE 1147 wreg equ 0xFE8 1148 indf2 equ 0xFDF 1149 postinc2 equ 0xFDE 1150 postdec2 equ 0xFDD 1151 fsr2h equ 0xFDA 1152 fsr2l equ 0xFD9 1153 status equ 0xFD8 1154 1155 ;; *************** function _eusart_write_midi ***************** 1156 ;; Defined at: 1157 ;; line 261 in file "main.c" 1158 ;; Parameters: Size Location Type 1159 ;; pkt 2 43[COMRAM] PTR const struct . 1160 ;; -> main@message(7), 1161 ;; Auto vars: Size Location Type 1162 ;; data 2 49[COMRAM] PTR unsigned char 1163 ;; -> message.data(4), main@message(7), 1164 ;; length 2 47[COMRAM] unsigned int 1165 ;; Return value: Size Location Type 1166 ;; 2 43[COMRAM] int 1167 ;; Registers used: 1168 ;; wreg, fsr2l, fsr2h, status,2, status,0, cstack 1169 ;; Tracked objects: 1170 ;; On entry : 0/0 1171 ;; On exit : 0/0 1172 ;; Unchanged: 0/0 1173 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 1174 ;; Params: 2 0 0 0 0 0 0 1175 ;; Locals: 4 0 0 0 0 0 0 1176 ;; Temps: 2 0 0 0 0 0 0 1177 ;; Totals: 8 0 0 0 0 0 0 1178 ;;Total ram usage: 8 bytes 1179 ;; Hardware stack levels used: 1 1180 ;; Hardware stack levels required when called: 2 1181 ;; This function calls: 1182 ;; _eusart2_putch 1183 ;; This function is called by: 1184 ;; _main 1185 ;; This function uses a non-reentrant model 1186 ;; 1187 1188 psect text8 1189 000432 __ptext8: 1190 opt stack 0 1191 000432 _eusart_write_midi: 1192 opt stack 28 1193 1194 ;main.c: 263: size_t length; 1195 ;main.c: 264: uint8_t *data; 1196 ;main.c: 266: if (pkt == (0)) { 1197 1198 ;incstack = 0 1199 000432 502C movf eusart_write_midi@pkt,w,c 1200 000434 102D iorwf eusart_write_midi@pkt+1,w,c 1201 000436 B4D8 btfsc status,2,c 1202 000438 0012 return 1203 1204 ;main.c: 268: } 1205 ;main.c: 270: length = pkt->data_size; 1206 1207 ;main.c: 267: return -1; 1208 ; Return value of _eusart_write_midi is never used 1209 00043A EE20 F001 lfsr 2,1 1210 00043E 502C movf eusart_write_midi@pkt,w,c 1211 000440 26D9 addwf fsr2l,f,c 1212 000442 502D movf eusart_write_midi@pkt+1,w,c 1213 000444 22DA addwfc fsr2h,f,c 1214 000446 CFDE F030 movff postinc2,eusart_write_midi@length 1215 00044A CFDD F031 movff postdec2,eusart_write_midi@length+1 1216 1217 ;main.c: 271: data = (uint8_t *) pkt->data; 1218 00044E 0E03 movlw 3 1219 000450 242C addwf eusart_write_midi@pkt,w,c 1220 000452 6E32 movwf eusart_write_midi@data,c 1221 000454 0E00 movlw 0 1222 000456 202D addwfc eusart_write_midi@pkt+1,w,c 1223 000458 6E33 movwf eusart_write_midi@data+1,c 1224 1225 ;main.c: 273: eusart2_putch((char)((pkt->status << 4) | pkt->channel)); 1226 00045A C02C FFD9 movff eusart_write_midi@pkt,fsr2l 1227 00045E C02D FFDA movff eusart_write_midi@pkt+1,fsr2h 1228 000462 38DF swapf indf2,w,c 1229 000464 0B0F andlw 15 1230 000466 6E2E movwf ??_eusart_write_midi& (0+255),c 1231 000468 C02C FFD9 movff eusart_write_midi@pkt,fsr2l 1232 00046C C02D FFDA movff eusart_write_midi@pkt+1,fsr2h 1233 000470 50DF movf indf2,w,c 1234 000472 0B0F andlw 15 1235 000474 6E2F movwf (??_eusart_write_midi+1)& (0+255),c 1236 000476 382F swapf ??_eusart_write_midi+1,w,c 1237 000478 0BF0 andlw 240 1238 00047A 102E iorwf ??_eusart_write_midi,w,c 1239 00047C EC1B F003 call _eusart2_putch 1240 1241 ;main.c: 275: while (length--) { 1242 000480 D009 goto l87 1243 000482 l1140: 1244 1245 ;main.c: 276: eusart2_putch((char) *(data++)); 1246 000482 C032 FFD9 movff eusart_write_midi@data,fsr2l 1247 000486 C033 FFDA movff eusart_write_midi@data+1,fsr2h 1248 00048A 50DF movf indf2,w,c 1249 00048C EC1B F003 call _eusart2_putch 1250 000490 4A32 infsnz eusart_write_midi@data,f,c 1251 000492 2A33 incf eusart_write_midi@data+1,f,c 1252 000494 l87: 1253 000494 0630 decf eusart_write_midi@length,f,c 1254 000496 A0D8 btfss status,0,c 1255 000498 0631 decf eusart_write_midi@length+1,f,c 1256 00049A 2830 incf eusart_write_midi@length,w,c 1257 00049C E1F2 bnz l1140 1258 00049E 2831 incf eusart_write_midi@length+1,w,c 1259 0004A0 B4D8 btfsc status,2,c 1260 0004A2 0012 return 1261 0004A4 D7EE goto l88 1262 0004A6 __end_of_eusart_write_midi: 1263 opt stack 0 1264 tblptru equ 0xFF8 1265 intcon equ 0xFF2 1266 postinc0 equ 0xFEE 1267 wreg equ 0xFE8 1268 indf2 equ 0xFDF 1269 postinc2 equ 0xFDE 1270 postdec2 equ 0xFDD 1271 fsr2h equ 0xFDA 1272 fsr2l equ 0xFD9 1273 status equ 0xFD8 1274 1275 ;; *************** function _eusart2_putch ***************** 1276 ;; Defined at: 1277 ;; line 52 in file "rs232.c" 1278 ;; Parameters: Size Location Type 1279 ;; c 1 wreg unsigned char 1280 ;; Auto vars: Size Location Type 1281 ;; c 1 42[COMRAM] unsigned char 1282 ;; Return value: Size Location Type 1283 ;; 1 wreg void 1284 ;; Registers used: 1285 ;; wreg 1286 ;; Tracked objects: 1287 ;; On entry : 0/0 1288 ;; On exit : 0/0 1289 ;; Unchanged: 0/0 1290 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 1291 ;; Params: 0 0 0 0 0 0 0 1292 ;; Locals: 1 0 0 0 0 0 0 1293 ;; Temps: 0 0 0 0 0 0 0 1294 ;; Totals: 1 0 0 0 0 0 0 1295 ;;Total ram usage: 1 bytes 1296 ;; Hardware stack levels used: 1 1297 ;; Hardware stack levels required when called: 1 1298 ;; This function calls: 1299 ;; Nothing 1300 ;; This function is called by: 1301 ;; _eusart_write_midi 1302 ;; This function uses a non-reentrant model 1303 ;; 1304 1305 psect text9 1306 000636 __ptext9: 1307 opt stack 0 1308 000636 _eusart2_putch: 1309 opt stack 28 1310 1311 ;incstack = 0 1312 ;eusart2_putch@c stored from wreg 1313 000636 6E2B movwf eusart2_putch@c,c 1314 000638 1315 ;rs232.c: 54: while (!TX2IF); 1316 000638 A8A4 btfss 4004,4,c ;volatile 1317 00063A D7FE goto l1052 1318 1319 ;rs232.c: 55: TX2REG = c; 1320 00063C C02B FF73 movff eusart2_putch@c,3955 ;volatile 1321 000640 0012 return ;funcret 1322 000642 __end_of_eusart2_putch: 1323 opt stack 0 1324 tblptru equ 0xFF8 1325 intcon equ 0xFF2 1326 postinc0 equ 0xFEE 1327 wreg equ 0xFE8 1328 indf2 equ 0xFDF 1329 postinc2 equ 0xFDE 1330 postdec2 equ 0xFDD 1331 fsr2h equ 0xFDA 1332 fsr2l equ 0xFD9 1333 status equ 0xFD8 1334 1335 ;; *************** function _isr ***************** 1336 ;; Defined at: 1337 ;; line 113 in file "main.c" 1338 ;; Parameters: Size Location Type 1339 ;; None 1340 ;; Auto vars: Size Location Type 1341 ;; i 1 41[COMRAM] unsigned char 1342 ;; data_b 1 37[COMRAM] unsigned char 1343 ;; data_a 1 36[COMRAM] unsigned char 1344 ;; Return value: Size Location Type 1345 ;; 1 wreg void 1346 ;; Registers used: 1347 ;; wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh 1348 ;; Tracked objects: 1349 ;; On entry : 0/0 1350 ;; On exit : 0/0 1351 ;; Unchanged: 0/0 1352 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 1353 ;; Params: 0 0 0 0 0 0 0 1354 ;; Locals: 6 0 0 0 0 0 0 1355 ;; Temps: 36 0 0 0 0 0 0 1356 ;; Totals: 42 0 0 0 0 0 0 1357 ;;Total ram usage: 42 bytes 1358 ;; Hardware stack levels used: 1 1359 ;; This function calls: 1360 ;; Nothing 1361 ;; This function is called by: 1362 ;; Interrupt level 2 1363 ;; This function uses a non-reentrant model 1364 ;; 1365 1366 psect intcode 1367 000008 __pintcode: 1368 opt stack 0 1369 000008 _isr: 1370 opt stack 28 1371 1372 ;incstack = 0 1373 000008 8234 bsf btemp,1,c ;set compiler interrupt flag (level 2) 1374 00000A CFFA F013 movff pclath,??_isr+18 1375 00000E CFFB F014 movff pclatu,??_isr+19 1376 000012 CFE9 F015 movff fsr0l,??_isr+20 1377 000016 CFEA F016 movff fsr0h,??_isr+21 1378 00001A CFE1 F017 movff fsr1l,??_isr+22 1379 00001E CFE2 F018 movff fsr1h,??_isr+23 1380 000022 CFD9 F019 movff fsr2l,??_isr+24 1381 000026 CFDA F01A movff fsr2h,??_isr+25 1382 00002A CFF3 F01B movff prodl,??_isr+26 1383 00002E CFF4 F01C movff prodh,??_isr+27 1384 000032 CFF6 F01D movff tblptrl,??_isr+28 1385 000036 CFF7 F01E movff tblptrh,??_isr+29 1386 00003A CFF8 F01F movff tblptru,??_isr+30 1387 00003E CFF5 F020 movff tablat,??_isr+31 1388 000042 C034 F021 movff btemp,??_isr+32 1389 000046 C035 F022 movff btemp+1,??_isr+33 1390 00004A C036 F023 movff btemp+2,??_isr+34 1391 00004E C037 F024 movff btemp+3,??_isr+35 1392 1393 ;main.c: 115: unsigned char i, data_a, data_b; 1394 ;main.c: 117: PORTDbits.RD3 = 0; 1395 000052 9683 bcf 3971,3,c ;volatile 1396 1397 ;main.c: 119: if (PIR1bits.TMR2IF) { 1398 000054 A29E btfss 3998,1,c ;volatile 1399 000056 D156 goto i2l59 1400 1401 ;main.c: 120: data_a = PORTA; 1402 000058 CF80 F025 movff 3968,isr@data_a ;volatile 1403 1404 ;main.c: 121: data_b = PORTB; 1405 00005C CF81 F026 movff 3969,isr@data_b ;volatile 1406 1407 ;main.c: 122: i = 7; 1408 000060 0E07 movlw 7 1409 000062 6E2A movwf isr@i,c 1410 000064 1411 ;main.c: 125: keys_data[i] = (keys_data[i] << 1) | ((data_a >> i) & 0x01); 1412 000064 502A movf isr@i,w,c 1413 000066 0D04 mullw 4 1414 000068 0E62 movlw low _keys_data 1415 00006A 24F3 addwf prodl,w,c 1416 00006C 6ED9 movwf fsr2l,c 1417 00006E 0E00 movlw high _keys_data 1418 000070 20F4 addwfc prodh,w,c 1419 000072 6EDA movwf fsr2h,c 1420 000074 CFDE F001 movff postinc2,??_isr 1421 000078 CFDE F002 movff postinc2,??_isr+1 1422 00007C CFDE F003 movff postinc2,??_isr+2 1423 000080 CFDE F004 movff postinc2,??_isr+3 1424 000084 90D8 bcf status,0,c 1425 000086 3401 rlcf ??_isr,w,c 1426 000088 6E05 movwf (??_isr+4)& (0+255),c 1427 00008A 3402 rlcf ??_isr+1,w,c 1428 00008C 6E06 movwf (??_isr+5)& (0+255),c 1429 00008E 3403 rlcf ??_isr+2,w,c 1430 000090 6E07 movwf (??_isr+6)& (0+255),c 1431 000092 3404 rlcf ??_isr+3,w,c 1432 000094 6E08 movwf (??_isr+7)& (0+255),c 1433 000096 C02A F009 movff isr@i,??_isr+8 1434 00009A C025 F00A movff isr@data_a,??_isr+9 1435 00009E 2A09 incf ??_isr+8,f,c 1436 0000A0 D002 goto i2u38_44 1437 0000A2 i2u38_45: 1438 0000A2 90D8 bcf status,0,c 1439 0000A4 320A rrcf ??_isr+9,f,c 1440 0000A6 i2u38_44: 1441 0000A6 2E09 decfsz ??_isr+8,f,c 1442 0000A8 D7FC goto i2u38_45 1443 0000AA 0E01 movlw 1 1444 0000AC 160A andwf ??_isr+9,f,c 1445 0000AE 500A movf ??_isr+9,w,c 1446 0000B0 1005 iorwf ??_isr+4,w,c 1447 0000B2 6E0B movwf (??_isr+10)& (0+255),c 1448 0000B4 5006 movf ??_isr+5,w,c 1449 0000B6 6E0C movwf (??_isr+11)& (0+255),c 1450 0000B8 5007 movf ??_isr+6,w,c 1451 0000BA 6E0D movwf (??_isr+12)& (0+255),c 1452 0000BC 5008 movf ??_isr+7,w,c 1453 0000BE 6E0E movwf (??_isr+13)& (0+255),c 1454 0000C0 502A movf isr@i,w,c 1455 0000C2 0D04 mullw 4 1456 0000C4 0E62 movlw low _keys_data 1457 0000C6 24F3 addwf prodl,w,c 1458 0000C8 6ED9 movwf fsr2l,c 1459 0000CA 0E00 movlw high _keys_data 1460 0000CC 20F4 addwfc prodh,w,c 1461 0000CE 6EDA movwf fsr2h,c 1462 0000D0 C00B FFDE movff ??_isr+10,postinc2 1463 0000D4 C00C FFDE movff ??_isr+11,postinc2 1464 0000D8 C00D FFDE movff ??_isr+12,postinc2 1465 0000DC C00E FFDE movff ??_isr+13,postinc2 1466 1467 ;main.c: 126: keys_data[i + 8] = (keys_data[i + 8] << 1) | ((data_b >> i) & 0x01); 1468 0000E0 502A movf isr@i,w,c 1469 0000E2 6E01 movwf ??_isr& (0+255),c 1470 0000E4 6A02 clrf (??_isr+1)& (0+255),c 1471 0000E6 90D8 bcf status,0,c 1472 0000E8 3601 rlcf ??_isr,f,c 1473 0000EA 3602 rlcf ??_isr+1,f,c 1474 0000EC 90D8 bcf status,0,c 1475 0000EE 3601 rlcf ??_isr,f,c 1476 0000F0 3602 rlcf ??_isr+1,f,c 1477 0000F2 0E20 movlw 32 1478 0000F4 2601 addwf ??_isr,f,c 1479 0000F6 0E00 movlw 0 1480 0000F8 2202 addwfc ??_isr+1,f,c 1481 0000FA 0E62 movlw low _keys_data 1482 0000FC 2401 addwf ??_isr,w,c 1483 0000FE 6ED9 movwf fsr2l,c 1484 000100 0E00 movlw high _keys_data 1485 000102 2002 addwfc ??_isr+1,w,c 1486 000104 6EDA movwf fsr2h,c 1487 000106 CFDE F003 movff postinc2,??_isr+2 1488 00010A CFDE F004 movff postinc2,??_isr+3 1489 00010E CFDE F005 movff postinc2,??_isr+4 1490 000112 CFDE F006 movff postinc2,??_isr+5 1491 000116 90D8 bcf status,0,c 1492 000118 3403 rlcf ??_isr+2,w,c 1493 00011A 6E07 movwf (??_isr+6)& (0+255),c 1494 00011C 3404 rlcf ??_isr+3,w,c 1495 00011E 6E08 movwf (??_isr+7)& (0+255),c 1496 000120 3405 rlcf ??_isr+4,w,c 1497 000122 6E09 movwf (??_isr+8)& (0+255),c 1498 000124 3406 rlcf ??_isr+5,w,c 1499 000126 6E0A movwf (??_isr+9)& (0+255),c 1500 000128 C02A F00B movff isr@i,??_isr+10 1501 00012C C026 F00C movff isr@data_b,??_isr+11 1502 000130 2A0B incf ??_isr+10,f,c 1503 000132 D002 goto i2u39_44 1504 000134 i2u39_45: 1505 000134 90D8 bcf status,0,c 1506 000136 320C rrcf ??_isr+11,f,c 1507 000138 i2u39_44: 1508 000138 2E0B decfsz ??_isr+10,f,c 1509 00013A D7FC goto i2u39_45 1510 00013C 0E01 movlw 1 1511 00013E 160C andwf ??_isr+11,f,c 1512 000140 500C movf ??_isr+11,w,c 1513 000142 1007 iorwf ??_isr+6,w,c 1514 000144 6E0D movwf (??_isr+12)& (0+255),c 1515 000146 5008 movf ??_isr+7,w,c 1516 000148 6E0E movwf (??_isr+13)& (0+255),c 1517 00014A 5009 movf ??_isr+8,w,c 1518 00014C 6E0F movwf (??_isr+14)& (0+255),c 1519 00014E 500A movf ??_isr+9,w,c 1520 000150 6E10 movwf (??_isr+15)& (0+255),c 1521 000152 502A movf isr@i,w,c 1522 000154 6E11 movwf (??_isr+16)& (0+255),c 1523 000156 6A12 clrf (??_isr+17)& (0+255),c 1524 000158 90D8 bcf status,0,c 1525 00015A 3611 rlcf ??_isr+16,f,c 1526 00015C 3612 rlcf ??_isr+17,f,c 1527 00015E 90D8 bcf status,0,c 1528 000160 3611 rlcf ??_isr+16,f,c 1529 000162 3612 rlcf ??_isr+17,f,c 1530 000164 0E20 movlw 32 1531 000166 2611 addwf ??_isr+16,f,c 1532 000168 0E00 movlw 0 1533 00016A 2212 addwfc ??_isr+17,f,c 1534 00016C 0E62 movlw low _keys_data 1535 00016E 2411 addwf ??_isr+16,w,c 1536 000170 6ED9 movwf fsr2l,c 1537 000172 0E00 movlw high _keys_data 1538 000174 2012 addwfc ??_isr+17,w,c 1539 000176 6EDA movwf fsr2h,c 1540 000178 C00D FFDE movff ??_isr+12,postinc2 1541 00017C C00E FFDE movff ??_isr+13,postinc2 1542 000180 C00F FFDE movff ??_isr+14,postinc2 1543 000184 C010 FFDE movff ??_isr+15,postinc2 1544 1545 ;main.c: 131: keypresses |= (keys_data[i] && !(keys_data[i] & 0xFFFFFF00))< keys_data(BANK0[64]), memset@p PTR unsigned char size(2) Largest target is 64 -> keys_data(BANK0[64]), midi_note_on@pkt PTR struct . size(2) Largest target is 7 -> main@message(BANK0[7]), midi_set_channel@pkt PTR struct . size(2) Largest target is 7 -> main@message(BANK0[7]), midi_set_status@pkt PTR struct . size(2) Largest target is 7 -> main@message(BANK0[7]), eusart_write_midi@data PTR unsigned char size(2) Largest target is 7 -> message.data(COMRAM[4]), main@message(BANK0[7]), eusart_write_midi@pkt PTR const struct . size(2) Largest target is 7 -> main@message(BANK0[7]), sp__memset PTR void size(2) Largest target is 64 -> keys_data(BANK0[64]), Critical Paths under _main in COMRAM _main->_eusart_write_midi _midi_note_on->_midi_set_channel _eusart_write_midi->_eusart2_putch Critical Paths under _isr in COMRAM None. Critical Paths under _main in BANK0 _main->_midi_note_on Critical Paths under _isr in BANK0 None. Critical Paths under _main in BANK1 None. Critical Paths under _isr in BANK1 None. Critical Paths under _main in BANK2 None. Critical Paths under _isr in BANK2 None. Critical Paths under _main in BANK3 None. Critical Paths under _isr in BANK3 None. Critical Paths under _main in BANK4 None. Critical Paths under _isr in BANK4 None. Critical Paths under _main in BANK5 None. Critical Paths under _isr in BANK5 None. Call Graph Tables: --------------------------------------------------------------------------------- (Depth) Function Calls Base Space Used Autos Params Refs --------------------------------------------------------------------------------- (0) _main 14 14 0 2013 6 BANK0 14 14 0 _eusart_write_midi _init_hw _memset _midi_note_on --------------------------------------------------------------------------------- (1) _midi_note_on 6 0 6 1242 0 BANK0 6 0 6 _midi_set_channel _midi_set_status --------------------------------------------------------------------------------- (2) _midi_set_status 4 1 3 370 42 COMRAM 4 1 3 --------------------------------------------------------------------------------- (2) _midi_set_channel 5 1 4 370 42 COMRAM 5 1 4 --------------------------------------------------------------------------------- (1) _memset 8 2 6 324 42 COMRAM 8 2 6 --------------------------------------------------------------------------------- (1) _init_hw 0 0 0 0 _eusart1_init _eusart2_init --------------------------------------------------------------------------------- (2) _eusart2_init 0 0 0 0 --------------------------------------------------------------------------------- (2) _eusart1_init 0 0 0 0 --------------------------------------------------------------------------------- (1) _eusart_write_midi 8 6 2 255 43 COMRAM 8 6 2 _eusart2_putch --------------------------------------------------------------------------------- (2) _eusart2_putch 1 1 0 22 42 COMRAM 1 1 0 --------------------------------------------------------------------------------- Estimated maximum stack depth 2 --------------------------------------------------------------------------------- (Depth) Function Calls Base Space Used Autos Params Refs --------------------------------------------------------------------------------- (3) _isr 42 42 0 405 0 COMRAM 42 42 0 --------------------------------------------------------------------------------- Estimated maximum stack depth 3 --------------------------------------------------------------------------------- Call Graph Graphs: _main (ROOT) _eusart_write_midi _eusart2_putch _init_hw _eusart1_init _eusart2_init _memset _midi_note_on _midi_set_channel _midi_set_status _isr (ROOT) Address spaces: Name Size Autos Total Cost Usage BIGRAM 5FF 0 0 16 0.0% EEDATA 100 0 0 0 0.0% BITBANK5 100 0 0 14 0.0% BANK5 100 0 0 15 0.0% BITBANK4 100 0 0 12 0.0% BANK4 100 0 0 13 0.0% BITBANK3 100 0 0 10 0.0% BANK3 100 0 0 11 0.0% BITBANK2 100 0 0 7 0.0% BANK2 100 0 0 8 0.0% BITBANK1 100 0 0 5 0.0% BANK1 100 0 0 6 0.0% BITBANK0 A0 0 0 3 0.0% BANK0 A0 14 56 4 53.8% BITCOMRAM 5E 0 0 0 0.0% COMRAM 5E 33 33 1 54.3% BITSFR_1 0 0 0 200 0.0% SFR_1 0 0 0 200 0.0% BITSFR 0 0 0 200 0.0% SFR 0 0 0 200 0.0% STACK 0 0 0 2 0.0% NULL 0 0 0 0 0.0% ABS 0 0 89 9 0.0% DATA 0 0 89 17 0.0% CODE 0 0 0 0 0.0% Microchip Technology PIC18 Macro Assembler V1.44 build -154322312 Symbol Table Tue Feb 27 10:27:03 2018 l76 0398 l87 0494 l79 042C l88 0482 __CFG_CP0$OFF 000000 __CFG_CP1$OFF 000000 __CFG_CP2$OFF 000000 __CFG_CP3$OFF 000000 __CFG_LVP$ON 000000 l596 0588 l597 0578 __CFG_CPB$OFF 000000 _PR2 000FBB __CFG_CPD$OFF 000000 u524 03C4 u525 03BE u544 0416 u545 0410 u577 03F4 _isr 0008 prod 000FF3 wreg 000FE8 _TXSTA1bits 000FAC _TXSTA2bits 000F72 l1110 0578 l1202 0398 l1052 0638 l1140 0482 l1204 03A2 ?_isr 0001 i2l60 0064 i2l62 01E0 i2l64 0286 i2l59 0304 i2l67 02F8 main@message 00AF _main 0356 midi_note_on@channel 00A4 fsr0h 000FEA fsr1h 000FE2 fsr2h 000FDA fsr0l 000FE9 indf2 000FDF fsr1l 000FE1 fsr2l 000FD9 btemp 0034 __CFG_BORV$190 000000 isr@i 002A prodh 000FF4 prodl 000FF3 start 0352 __CFG_IESO$OFF 000000 midi_note_on@pkt 00A2 ___param_bank 000000 ??_isr 0001 _BAUDCON1bits 000FB8 _BAUDCON2bits 000F70 ?_main 0001 _RC1IF 007CF5 __CFG_WDTEN$ON 000000 _TX1IF 007CF4 _TX2IF 007D24 _PORTA 000F80 _PORTB 000F81 _TRISA 000F92 _TRISB 000F93 __CFG_WRT0$OFF 000000 __CFG_WRT1$OFF 000000 __CFG_WRT2$OFF 000000 __CFG_WRT3$OFF 000000 __CFG_EBTR0$OFF 000000 __CFG_FCMEN$OFF 000000 __CFG_EBTR1$OFF 000000 __CFG_EBTR2$OFF 000000 __CFG_EBTR3$OFF 000000 __CFG_WRTB$OFF 000000 __CFG_WRTC$OFF 000000 __CFG_WRTD$OFF 000000 __CFG_EBTRB$OFF 000000 __end_of_init_hw 056E __CFG_MCLRE$EXTMCLR 000000 main@i 00AD pclath 000FFA tablat 000FF5 _eusart_write_midi 0432 __end_of_midi_set_status 05E4 status 000FD8 wtemp6 0035 __CFG_HFOFST$ON 000000 ?_eusart_write_midi 002C __CFG_PBADEN$ON 000000 eusart_write_midi@length 0030 __initialization 061C midi_note_on@note 00A6 __end_of_main 0432 ??_eusart_write_midi 002E midi_note_on@velocity 00A7 ??_main 00A8 ?_midi_note_on 00A2 __activetblptr 000002 __CFG_PLLCFG$ON 000000 __end_of_eusart_write_midi 04A6 _ANSELA 000F38 _ANSELB 000F39 _ANSELC 000F3A _ANSELD 000F3B _RC1REG 000FAE _SPBRG1 000FAF _SPBRG2 000F75 _TX1REG 000FAD _TX2REG 000F73 ?_eusart1_init 0001 ?_eusart2_init 0001 __CFG_XINST$OFF 000000 __CFG_STVREN$ON 000000 __end_of_midi_set_channel 05C0 _memset 056E clear_0 0622 midi_set_status@status 002D ??_midi_note_on 0030 __size_of_eusart2_putch 000C ??_init_hw 002B tblptrh 000FF7 tblptrl 000FF6 tblptru 000FF8 __accesstop 0060 __end_of__initialization 0628 ?_midi_set_status 002B ??_eusart1_init 002B ??_eusart2_init 002B ___rparam_used 000001 __pcstackCOMRAM 0001 __size_of_eusart_write_midi 0074 __pbssBANK0 0060 _eusart2_putch 0636 __CFG_CCP2MX$PORTC1 000000 __CFG_CCP3MX$PORTB5 000000 ?_memset 002B i2u42_44 01F4 i2u50_45 0300 i2u42_45 01EE i2u50_46 0302 i2u45_44 029E i2u45_45 0298 i2u38_44 00A6 i2u38_45 00A2 i2u39_44 0138 i2u47_45 02BC i2u39_45 0134 i2u47_47 02BE _SPBRGH1 000FB0 _SPBRGH2 000F76 ?_eusart2_putch 0001 __end_of_midi_note_on 050C eusart_write_midi@pkt 002C __CFG_PWRTEN$OFF 000000 __Hparam 0000 __Lparam 0000 __pcinit 061C _isr$605 0029 _isr$595 0027 _isr$596 0028 __size_of_memset 002C __ramtop 0600 __ptext0 0356 __ptext1 04A6 __ptext2 05C0 __ptext3 059A __ptext4 056E __ptext5 050C __ptext6 05E4 __ptext7 0600 __ptext8 0432 __ptext9 0636 __end_of_eusart1_init 061C __end_of_eusart2_init 0600 _T2CONbits 000FBA _init_hw 050C __size_of_isr 034A _keypresses 0060 end_of_initialization 0628 memset@c 002D memset@n 002F memset@p 0031 __Lmediumconst 0000 postdec2 000FDD postinc0 000FEE postinc2 000FDE ?_midi_set_channel 002B _PORTAbits 000F80 _PORTDbits 000F83 ??_midi_set_channel 002F __CFG_FOSC$INTIO7 000000 _TRISCbits 000F94 _TRISDbits 000F95 ??_eusart2_putch 002B midi_set_channel@channel 002D __end_of_memset 059A start_initialization 061C __end_of_isr 0352 __size_of_midi_note_on 0066 __size_of_midi_set_status 0024 __size_of_eusart1_init 001C __size_of_eusart2_init 001C ??_memset 0031 _midi_note_on 04A6 __pcstackBANK0 00A2 midi_set_status@pkt 002B _eusart1_init 0600 _eusart2_init 05E4 __pintcode 0008 __CFG_PRICLKEN$ON 000000 ?_init_hw 0001 _keys_data 0062 _PIE1bits 000F9D _PIR1bits 000F9E __CFG_WDTPS$32768 000000 ??_midi_set_status 002E __size_of_midi_set_channel 0026 eusart_write_midi@data 0032 isr@data_a 0025 isr@data_b 0026 __Hrparam 0000 __Lrparam 0000 __CFG_BOREN$SBORDIS 000000 __CFG_P2BMX$PORTD2 000000 eusart2_putch@c 002B __size_of_init_hw 0062 __end_of_eusart2_putch 0642 __size_of_main 00DC int$flags 0034 _OSCTUNEbits 000F9B _INTCONbits 000FF2 memset@p1 002B midi_set_channel@pkt 002B intlevel2 0000 _RCSTA1bits 000FAB _RCSTA2bits 000F71 _OSCCONbits 000FD3 __CFG_T3CMX$PORTC0 000000 _midi_set_channel 059A _midi_set_status 05C0