1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
|
Microchip Technology PIC18 LITE Macro Assembler V1.44 build -154322312
Fri Mar 02 09:57:11 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 smallconst,global,reloc=2,class=SMALLCONST,delta=1,noexec
6 psect cinit,global,reloc=2,class=CODE,delta=1
7 psect bssBANK0,global,class=BANK0,space=1,delta=1,lowdata,noexec
8 psect cstackBANK0,global,class=BANK0,space=1,delta=1,noexec
9 psect cstackCOMRAM,global,class=COMRAM,space=1,delta=1,noexec
10 psect text0,global,reloc=2,class=CODE,delta=1
11 psect text1,global,reloc=2,class=CODE,delta=1
12 psect text2,global,reloc=2,class=CODE,delta=1
13 psect text3,global,reloc=2,class=CODE,delta=1
14 psect text4,global,reloc=2,class=CODE,delta=1,group=1
15 psect text5,global,reloc=2,class=CODE,delta=1,inline
16 psect text6,global,reloc=2,class=CODE,delta=1
17 psect text7,global,reloc=2,class=CODE,delta=1
18 psect text8,global,reloc=2,class=CODE,delta=1
19 psect text9,global,reloc=2,class=CODE,delta=1
20 psect intcode,global,reloc=2,class=CODE,delta=1
21 psect intsave_regs,global,class=BIGRAM,space=1,delta=1,noexec
22 psect rparam,global,class=COMRAM,space=1,delta=1,noexec
23 psect temp,global,ovrld,common,class=COMRAM,space=1,delta=1
24 0000
25 ; Version 1.44
26 ; Generated 14/09/2017 GMT
27 ;
28 ; Copyright © 2017, Microchip Technology Inc. and its subsidiaries ("Microchip")
29 ; All rights reserved.
30 ;
31 ; This software is developed by Microchip Technology Inc. and its subsidiaries ("Microch
+ ip").
32 ;
33 ; Redistribution and use in source and binary forms, with or without modification, are
34 ; permitted provided that the following conditions are met:
35 ;
36 ; 1. Redistributions of source code must retain the above copyright notice, this lis
+ t of
37 ; conditions and the following disclaimer.
38 ;
39 ; 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list
40 ; of conditions and the following disclaimer in the documentation and/or other
41 ; materials provided with the distribution.
42 ;
43 ; 3. Microchip's name may not be used to endorse or promote products derived from th
+ is
44 ; software without specific prior written permission.
45 ;
46 ; THIS SOFTWARE IS PROVIDED BY MICROCHIP "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
47 ; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS F
+ OR
48 ; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MICROCHIP BE LIABLE FOR ANY DIRECT, INDIREC
+ T,
49 ; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO
50 ; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS; OR BUSINESS
51 ; INTERRUPTION) HOWSOEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST
+ RICT
52 ; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE U
+ SE OF
53 ; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54 ;
55 ;
56 ; Code-generator required, PIC18F45K22 Definitions
57 ;
58 ; SFR Addresses
59 0000
60 psect smallconst
61 000600 __psmallconst:
62 opt stack 0
63 000600 00 db 0
64 000601 _midi_notes_steps_table:
65 opt stack 0
66 000601 0024 dw 36
67 000603 0026 dw 38
68 000605 0028 dw 40
69 000607 0029 dw 41
70 000609 002B dw 43
71 00060B 002D dw 45
72 00060D 002F dw 47
73 00060F 0030 dw 48
74 000611 0032 dw 50
75 000613 0034 dw 52
76 000615 0035 dw 53
77 000617 0037 dw 55
78 000619 0039 dw 57
79 00061B 003E dw 62
80 00061D 003C dw 60
81 00061F 003B dw 59
82 000621 0040 dw 64
83 000623 0041 dw 65
84 000625 0043 dw 67
85 000627 0045 dw 69
86 000629 0047 dw 71
87 00062B __end_of_midi_notes_steps_table:
88 opt stack 0
89 0000 _ANSELD set 3899
90 0000 _ANSELC set 3898
91 0000 _ANSELB set 3897
92 0000 _ANSELA set 3896
93 0000 _RC1REG set 4014
94 0000 _TX2REG set 3955
95 0000 _TX1REG set 4013
96 0000 _TRISDbits set 3989
97 0000 _BAUDCON2bits set 3952
98 0000 _SPBRGH2 set 3958
99 0000 _SPBRG2 set 3957
100 0000 _RCSTA2bits set 3953
101 0000 _TXSTA2bits set 3954
102 0000 _TRISCbits set 3988
103 0000 _BAUDCON1bits set 4024
104 0000 _SPBRGH1 set 4016
105 0000 _SPBRG1 set 4015
106 0000 _RCSTA1bits set 4011
107 0000 _TXSTA1bits set 4012
108 0000 _PIE1bits set 3997
109 0000 _T2CONbits set 4026
110 0000 _PR2 set 4027
111 0000 _TRISB set 3987
112 0000 _TRISA set 3986
113 0000 _OSCCONbits set 4051
114 0000 _OSCTUNEbits set 3995
115 0000 _INTCONbits set 4082
116 0000 _PORTB set 3969
117 0000 _PORTA set 3968
118 0000 _PIR1bits set 3998
119 0000 _RC1IF set 31989
120 0000 _TX2IF set 32036
121 0000 _TX1IF set 31988
122
123 ; #config settings
124 00062B 00 db 0 ; dummy byte at the end
125 0000
126 psect cinit
127 000938 __pcinit:
128 opt stack 0
129 000938 start_initialization:
130 opt stack 0
131 000938 __initialization:
132 opt stack 0
133
134 ; Clear objects allocated to BANK0 (66 bytes)
135 000938 EE00 F060 lfsr 0,__pbssBANK0
136 00093C 0E42 movlw 66
137 00093E clear_0:
138 00093E 6AEE clrf postinc0,c
139 000940 06E8 decf wreg,f,c
140 000942 E1FD bnz clear_0
141 000944 end_of_initialization:
142 opt stack 0
143 000944 __end_of__initialization:
144 opt stack 0
145 000944 9035 bcf int$flags,0,c ;clear compiler interrupt flag (level 1)
146 000946 9235 bcf int$flags,1,c ;clear compiler interrupt flag (level 2)
147 000948 0E00 movlw low (__Lmediumconst shr (0+16))
148 00094A 6EF8 movwf tblptru,c
149 00094C 0100 movlb 0
150 00094E EF16 F003 goto _main ;jump to C main() function
151 tblptru equ 0xFF8
152 postinc0 equ 0xFEE
153 wreg equ 0xFE8
154
155 psect bssBANK0
156 000060 __pbssBANK0:
157 opt stack 0
158 000060 _keypresses:
159 opt stack 0
160 000060 ds 2
161 000062 _keys_data:
162 opt stack 0
163 000062 ds 64
164 tblptru equ 0xFF8
165 postinc0 equ 0xFEE
166 wreg equ 0xFE8
167
168 psect cstackBANK0
169 0000A2 __pcstackBANK0:
170 opt stack 0
171 0000A2 ??_main:
172
173 ; 1 bytes @ 0x0
174 0000A2 ds 5
175 0000A7 main@conf_message:
176 opt stack 0
177
178 ; 7 bytes @ 0x5
179 0000A7 ds 7
180 0000AE main@i:
181 opt stack 0
182
183 ; 2 bytes @ 0xC
184 0000AE ds 2
185 0000B0 main@message:
186 opt stack 0
187
188 ; 7 bytes @ 0xE
189 0000B0 ds 7
190 tblptru equ 0xFF8
191 postinc0 equ 0xFEE
192 wreg equ 0xFE8
193
194 psect cstackCOMRAM
195 000001 __pcstackCOMRAM:
196 opt stack 0
197 000001 ??_isr:
198 000001
199 ; 1 bytes @ 0x0
200 000001 ds 36
201 000025 isr@data_a:
202 opt stack 0
203
204 ; 1 bytes @ 0x24
205 000025 ds 1
206 000026 isr@data_b:
207 opt stack 0
208
209 ; 1 bytes @ 0x25
210 000026 ds 1
211 000027 _isr$304:
212 opt stack 0
213
214 ; 1 bytes @ 0x26
215 000027 ds 1
216 000028 _isr$305:
217 opt stack 0
218
219 ; 1 bytes @ 0x27
220 000028 ds 1
221 000029 isr@i:
222 opt stack 0
223
224 ; 1 bytes @ 0x28
225 000029 ds 1
226 00002A eusart2_putch@c:
227 opt stack 0
228 00002A midi_set_status@pkt:
229 opt stack 0
230 00002A midi_set_channel@pkt:
231 opt stack 0
232 00002A memset@p1:
233 opt stack 0
234
235 ; 2 bytes @ 0x29
236 00002A ds 1
237 00002B eusart_write_midi@pkt:
238 opt stack 0
239
240 ; 2 bytes @ 0x2A
241 00002B ds 1
242 00002C midi_set_status@status:
243 opt stack 0
244 00002C midi_set_channel@channel:
245 opt stack 0
246 00002C memset@c:
247 opt stack 0
248
249 ; 2 bytes @ 0x2B
250 00002C ds 1
251 00002D ??_eusart_write_midi:
252 00002D ??_midi_set_status:
253
254 ; 1 bytes @ 0x2C
255 00002D ds 1
256 00002E ??_midi_set_channel:
257 00002E memset@n:
258 opt stack 0
259
260 ; 2 bytes @ 0x2D
261 00002E ds 1
262 00002F eusart_write_midi@length:
263 opt stack 0
264 00002F midi_note_on@pkt:
265 opt stack 0
266
267 ; 2 bytes @ 0x2E
268 00002F ds 1
269 000030 memset@p:
270 opt stack 0
271
272 ; 2 bytes @ 0x2F
273 000030 ds 1
274 000031 eusart_write_midi@data:
275 opt stack 0
276 000031 midi_note_on@channel:
277 opt stack 0
278
279 ; 2 bytes @ 0x30
280 000031 ds 2
281 000033 midi_note_on@note:
282 opt stack 0
283
284 ; 1 bytes @ 0x32
285 000033 ds 1
286 000034 midi_note_on@velocity:
287 opt stack 0
288
289 ; 1 bytes @ 0x33
290 000034 ds 1
291 000035 tblptru equ 0xFF8
292 postinc0 equ 0xFEE
293 wreg equ 0xFE8
294
295 ; 1 bytes @ 0x34
296 ;;
297 ;;Main: autosize = 0, tempsize = 5, incstack = 0, save=0
298 ;;
299 ;; *************** function _main *****************
300 ;; Defined at:
301 ;; line 221 in file "main.c"
302 ;; Parameters: Size Location Type
303 ;; None
304 ;; Auto vars: Size Location Type
305 ;; message 7 14[BANK0 ] struct .
306 ;; conf_message 7 5[BANK0 ] struct .
307 ;; i 2 12[BANK0 ] unsigned int
308 ;; Return value: Size Location Type
309 ;; 1 wreg void
310 ;; Registers used:
311 ;; wreg, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, cstack
312 ;; Tracked objects:
313 ;; On entry : 0/0
314 ;; On exit : 0/0
315 ;; Unchanged: 0/0
316 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
317 ;; Params: 0 0 0 0 0 0 0
318 ;; Locals: 0 16 0 0 0 0 0
319 ;; Temps: 0 5 0 0 0 0 0
320 ;; Totals: 0 21 0 0 0 0 0
321 ;;Total ram usage: 21 bytes
322 ;; Hardware stack levels required when called: 3
323 ;; This function calls:
324 ;; _eusart_write_midi
325 ;; _init_hw
326 ;; _memset
327 ;; _midi_note_on
328 ;; This function is called by:
329 ;; Startup code after reset
330 ;; This function uses a non-reentrant model
331 ;;
332
333 psect text0
334 00062C __ptext0:
335 opt stack 0
336 00062C _main:
337 opt stack 28
338
339 ;main.c: 223: unsigned i;
340 ;main.c: 224: midi_message_t conf_message, message;
341 ;main.c: 227: init_hw();
342
343 ;incstack = 0
344 00062C EC1C F004 call _init_hw ;wreg free
345
346 ;main.c: 230: memset(keys_data, 0, sizeof(keys_data));
347 000630 0E62 movlw low _keys_data
348 000632 6E2A movwf memset@p1,c
349 000634 0E00 movlw high _keys_data
350 000636 6E2B movwf memset@p1+1,c
351 000638 0E00 movlw 0
352 00063A 6E2D movwf memset@c+1,c
353 00063C 0E00 movlw 0
354 00063E 6E2C movwf memset@c,c
355 000640 0E00 movlw 0
356 000642 6E2F movwf memset@n+1,c
357 000644 0E40 movlw 64
358 000646 6E2E movwf memset@n,c
359 000648 EC45 F004 call _memset ;wreg free
360
361 ;main.c: 232: (INTCONbits.GIE = 1);
362 00064C 8EF2 bsf intcon,7,c ;volatile
363
364 ;main.c: 239: conf_message.status = PROGRAM_CHANGE;
365 00064E 0100 movlb 0 ; () banked
366 000650 51A7 movf main@conf_message& (0+255),w,b
367 000652 0BF0 andlw -16
368 000654 090C iorlw 12
369 000656 6FA7 movwf main@conf_message& (0+255),b
370
371 ; BSR set to: 0
372 ;main.c: 240: conf_message.channel = 0;
373 000658 99A7 bcf main@conf_message& (0+255),4,b
374 00065A 9BA7 bcf main@conf_message& (0+255),5,b
375 00065C 9DA7 bcf main@conf_message& (0+255),6,b
376 00065E 9FA7 bcf main@conf_message& (0+255),7,b
377
378 ; BSR set to: 0
379 ;main.c: 241: conf_message.data[0] = 9;
380 000660 0E09 movlw 9
381 000662 6FAA movwf (main@conf_message+3)& (0+255),b
382
383 ; BSR set to: 0
384 ;main.c: 242: conf_message.data_size = 1;
385 000664 0E00 movlw 0
386 000666 6FA9 movwf (main@conf_message+2)& (0+255),b
387 000668 0E01 movlw 1
388 00066A 6FA8 movwf (main@conf_message+1)& (0+255),b
389
390 ; BSR set to: 0
391 ;main.c: 244: midi_note_on(&message, 0, midi_notes_steps_table[0], 127);
392 00066C 0EB0 movlw low main@message
393 00066E 6E2F movwf midi_note_on@pkt,c
394 000670 0E00 movlw high main@message
395 000672 6E30 movwf midi_note_on@pkt+1,c
396 000674 0E00 movlw 0
397 000676 6E32 movwf midi_note_on@channel+1,c
398 000678 0E00 movlw 0
399 00067A 6E31 movwf midi_note_on@channel,c
400 00067C 0E01 movlw low _midi_notes_steps_table
401 00067E 6EF6 movwf tblptrl,c
402 000680 if 1 ;There is more than 1 active tblptr byte
403 000680 0E06 movlw high _midi_notes_steps_table
404 000682 6EF7 movwf tblptrh,c
405 000684 endif
406 000684 if 0 ;There are less than 3 active tblptr bytes
407 000684 endif
408 000684 0008 tblrd *
409 000686 CFF5 F033 movff tablat,midi_note_on@note
410 00068A 0E7F movlw 127
411 00068C 6E34 movwf midi_note_on@velocity,c
412 00068E ECEB F003 call _midi_note_on ;wreg free
413
414 ;main.c: 246: _delay((unsigned long)((500)*(64000000/4000.0)));
415 000692 0E29 movlw 41
416 000694 0100 movlb 0 ; () banked
417 000696 6FA3 movwf (??_main+1)& (0+255),b
418 000698 0E96 movlw 150
419 00069A 6FA2 movwf ??_main& (0+255),b
420 00069C 0E7F movlw 127
421 00069E u497:
422 00069E 2EE8 decfsz wreg,f,c
423 0006A0 D7FE bra u497
424 0006A2 2FA2 decfsz ??_main& (0+255),f,b
425 0006A4 D7FC bra u497
426 0006A6 2FA3 decfsz (??_main+1)& (0+255),f,b
427 0006A8 D7FA bra u497
428
429 ;main.c: 247: eusart_write_midi(&conf_message);
430 0006AA 0EA7 movlw low main@conf_message
431 0006AC 6E2B movwf eusart_write_midi@pkt,c
432 0006AE 0E00 movlw high main@conf_message
433 0006B0 6E2C movwf eusart_write_midi@pkt+1,c
434 0006B2 ECB1 F003 call _eusart_write_midi ;wreg free
435 0006B6 l1158:
436
437 ;main.c: 252: for (i = 0; i < 16; i++) {
438 0006B6 0E00 movlw 0
439 0006B8 0100 movlb 0 ; () banked
440 0006BA 6FAF movwf (main@i+1)& (0+255),b
441 0006BC 0E00 movlw 0
442 0006BE 6FAE movwf main@i& (0+255),b
443 0006C0 l1160:
444
445 ; BSR set to: 0
446 0006C0 51AF movf (main@i+1)& (0+255),w,b
447 0006C2 E1F9 bnz l1158
448 0006C4 0E10 movlw 16
449 0006C6 5DAE subwf main@i& (0+255),w,b
450 0006C8 B0D8 btfsc status,0,c
451 0006CA D7F5 goto l70
452
453 ; BSR set to: 0
454 ;main.c: 253: if (keypresses & (1<<i)) {
455
456 ; BSR set to: 0
457
458 ; BSR set to: 0
459 0006CC C0AE F0A2 movff main@i,??_main
460 0006D0 0E01 movlw 1
461 0006D2 6FA3 movwf (??_main+1)& (0+255),b
462 0006D4 0E00 movlw 0
463 0006D6 6FA4 movwf (??_main+2)& (0+255),b
464 0006D8 2BA2 incf ??_main& (0+255),f,b
465 0006DA D003 goto u444
466 0006DC u445:
467 0006DC 90D8 bcf status,0,c
468 0006DE 37A3 rlcf (??_main+1)& (0+255),f,b
469 0006E0 37A4 rlcf (??_main+2)& (0+255),f,b
470 0006E2 u444:
471 0006E2 2FA2 decfsz ??_main& (0+255),f,b
472 0006E4 D7FB goto u445
473 0006E6 0100 movlb 0 ; () banked
474 0006E8 5160 movf _keypresses& (0+255),w,b ;volatile
475 0006EA 17A3 andwf (??_main+1)& (0+255),f,b
476 0006EC 5161 movf (_keypresses+1)& (0+255),w,b ;volatile
477 0006EE 17A4 andwf (??_main+2)& (0+255),f,b
478 0006F0 51A3 movf (??_main+1)& (0+255),w,b
479 0006F2 11A4 iorwf (??_main+2)& (0+255),w,b
480 0006F4 B4D8 btfsc status,2,c
481 0006F6 D032 goto l73
482
483 ; BSR set to: 0
484 ;main.c: 256: message.data[0] = midi_notes_steps_table[i];
485 0006F8 90D8 bcf status,0,c
486 0006FA 35AE rlcf main@i& (0+255),w,b
487 0006FC 6EF6 movwf tblptrl,c
488 0006FE 35AF rlcf (main@i+1)& (0+255),w,b
489 000700 6EF7 movwf tblptrh,c
490 000702 0E01 movlw low _midi_notes_steps_table
491 000704 26F6 addwf tblptrl,f,c
492 000706 0E06 movlw high _midi_notes_steps_table
493 000708 22F7 addwfc tblptrh,f,c
494 00070A if 0 ;There are less than 3 active tblptr bytes
495 00070A endif
496 00070A 0008 tblrd *
497 00070C CFF5 F0B3 movff tablat,main@message+3
498
499 ; BSR set to: 0
500 ;main.c: 259: eusart_write_midi(&message);
501 000710 0EB0 movlw low main@message
502 000712 6E2B movwf eusart_write_midi@pkt,c
503 000714 0E00 movlw high main@message
504 000716 6E2C movwf eusart_write_midi@pkt+1,c
505 000718 ECB1 F003 call _eusart_write_midi ;wreg free
506
507 ;main.c: 266: _delay((unsigned long)((10)*(64000000/4000.0)));
508 00071C 0ED0 movlw 208
509 00071E 0100 movlb 0 ; () banked
510 000720 6FA2 movwf ??_main& (0+255),b
511 000722 0EC9 movlw 201
512 000724 u507:
513 000724 2EE8 decfsz wreg,f,c
514 000726 D7FE bra u507
515 000728 2FA2 decfsz ??_main& (0+255),f,b
516 00072A D7FC bra u507
517 00072C D000 nop2
518
519 ;main.c: 269: keypresses &= ~(1<<i);
520 00072E C0AE F0A2 movff main@i,??_main
521 000732 0E01 movlw 1
522 000734 0100 movlb 0 ; () banked
523 000736 6FA3 movwf (??_main+1)& (0+255),b
524 000738 0E00 movlw 0
525 00073A 6FA4 movwf (??_main+2)& (0+255),b
526 00073C 2BA2 incf ??_main& (0+255),f,b
527 00073E D003 goto u464
528 000740 u465:
529 000740 90D8 bcf status,0,c
530 000742 37A3 rlcf (??_main+1)& (0+255),f,b
531 000744 37A4 rlcf (??_main+2)& (0+255),f,b
532 000746 u464:
533 000746 2FA2 decfsz ??_main& (0+255),f,b
534 000748 D7FB goto u465
535 00074A 0100 movlb 0 ; () banked
536 00074C 1DA3 comf (??_main+1)& (0+255),w,b
537 00074E 6FA5 movwf (??_main+3)& (0+255),b
538 000750 1DA4 comf (??_main+2)& (0+255),w,b
539 000752 6FA6 movwf (??_main+4)& (0+255),b
540 000754 51A5 movf (??_main+3)& (0+255),w,b
541 000756 1760 andwf _keypresses& (0+255),f,b ;volatile
542 000758 51A6 movf (??_main+4)& (0+255),w,b
543 00075A 1761 andwf (_keypresses+1)& (0+255),f,b ;volatile
544 00075C l73:
545
546 ; BSR set to: 0
547
548 ; BSR set to: 0
549 00075C 4BAE infsnz main@i& (0+255),f,b
550 00075E 2BAF incf (main@i+1)& (0+255),f,b
551 000760 D7AF goto l1160
552 000762 __end_of_main:
553 opt stack 0
554 tblptru equ 0xFF8
555 tblptrh equ 0xFF7
556 tblptrl equ 0xFF6
557 tablat equ 0xFF5
558 intcon equ 0xFF2
559 postinc0 equ 0xFEE
560 wreg equ 0xFE8
561 status equ 0xFD8
562
563 ;; *************** function _midi_note_on *****************
564 ;; Defined at:
565 ;; line 62 in file "midi.c"
566 ;; Parameters: Size Location Type
567 ;; pkt 2 46[COMRAM] PTR struct .
568 ;; -> main@message(7),
569 ;; channel 2 48[COMRAM] unsigned int
570 ;; note 1 50[COMRAM] enum E31
571 ;; velocity 1 51[COMRAM] unsigned char
572 ;; Auto vars: Size Location Type
573 ;; None
574 ;; Return value: Size Location Type
575 ;; 2 46[COMRAM] int
576 ;; Registers used:
577 ;; wreg, fsr2l, fsr2h, status,2, status,0, cstack
578 ;; Tracked objects:
579 ;; On entry : 0/0
580 ;; On exit : 0/0
581 ;; Unchanged: 0/0
582 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
583 ;; Params: 6 0 0 0 0 0 0
584 ;; Locals: 0 0 0 0 0 0 0
585 ;; Temps: 0 0 0 0 0 0 0
586 ;; Totals: 6 0 0 0 0 0 0
587 ;;Total ram usage: 6 bytes
588 ;; Hardware stack levels used: 1
589 ;; Hardware stack levels required when called: 2
590 ;; This function calls:
591 ;; _midi_set_channel
592 ;; _midi_set_status
593 ;; This function is called by:
594 ;; _main
595 ;; This function uses a non-reentrant model
596 ;;
597
598 psect text1
599 0007D6 __ptext1:
600 opt stack 0
601 0007D6 _midi_note_on:
602 opt stack 28
603
604 ;midi.c: 64: if (pkt == (0)) {
605
606 ; BSR set to: 0
607 ;incstack = 0
608 0007D6 502F movf midi_note_on@pkt,w,c
609 0007D8 1030 iorwf midi_note_on@pkt+1,w,c
610 0007DA B4D8 btfsc status,2,c
611 0007DC 0012 return
612
613 ;midi.c: 66: }
614 ;midi.c: 74: midi_set_status(pkt, NOTE_ON);
615
616 ;midi.c: 65: return -1;
617 ; Return value of _midi_note_on is never used
618 0007DE C02F F02A movff midi_note_on@pkt,midi_set_status@pkt
619 0007E2 C030 F02B movff midi_note_on@pkt+1,midi_set_status@pkt+1
620 0007E6 0E09 movlw 9
621 0007E8 6E2C movwf midi_set_status@status,c
622 0007EA EC6E F004 call _midi_set_status ;wreg free
623
624 ;midi.c: 75: midi_set_channel(pkt, channel);
625 0007EE C02F F02A movff midi_note_on@pkt,midi_set_channel@pkt
626 0007F2 C030 F02B movff midi_note_on@pkt+1,midi_set_channel@pkt+1
627 0007F6 C031 F02C movff midi_note_on@channel,midi_set_channel@channel
628 0007FA C032 F02D movff midi_note_on@channel+1,midi_set_channel@channel+1
629 0007FE EC5B F004 call _midi_set_channel ;wreg free
630
631 ;midi.c: 77: pkt->data[0] = note;
632 000802 EE20 F003 lfsr 2,3
633 000806 502F movf midi_note_on@pkt,w,c
634 000808 26D9 addwf fsr2l,f,c
635 00080A 5030 movf midi_note_on@pkt+1,w,c
636 00080C 22DA addwfc fsr2h,f,c
637 00080E C033 FFDF movff midi_note_on@note,indf2
638
639 ;midi.c: 78: pkt->data[1] = velocity;
640 000812 EE20 F004 lfsr 2,4
641 000816 502F movf midi_note_on@pkt,w,c
642 000818 26D9 addwf fsr2l,f,c
643 00081A 5030 movf midi_note_on@pkt+1,w,c
644 00081C 22DA addwfc fsr2h,f,c
645 00081E C034 FFDF movff midi_note_on@velocity,indf2
646
647 ;midi.c: 81: pkt->data_size = 2;
648 000822 EE20 F001 lfsr 2,1
649 000826 502F movf midi_note_on@pkt,w,c
650 000828 26D9 addwf fsr2l,f,c
651 00082A 5030 movf midi_note_on@pkt+1,w,c
652 00082C 22DA addwfc fsr2h,f,c
653 00082E 0E02 movlw 2
654 000830 6EDE movwf postinc2,c
655 000832 0E00 movlw 0
656 000834 6EDD movwf postdec2,c
657 000836 0012 return
658 000838 __end_of_midi_note_on:
659 opt stack 0
660 tblptru equ 0xFF8
661 tblptrh equ 0xFF7
662 tblptrl equ 0xFF6
663 tablat equ 0xFF5
664 intcon equ 0xFF2
665 postinc0 equ 0xFEE
666 wreg equ 0xFE8
667 indf2 equ 0xFDF
668 postinc2 equ 0xFDE
669 postdec2 equ 0xFDD
670 fsr2h equ 0xFDA
671 fsr2l equ 0xFD9
672 status equ 0xFD8
673
674 ;; *************** function _midi_set_status *****************
675 ;; Defined at:
676 ;; line 40 in file "midi.c"
677 ;; Parameters: Size Location Type
678 ;; pkt 2 41[COMRAM] PTR struct .
679 ;; -> main@message(7),
680 ;; status 1 43[COMRAM] enum E40
681 ;; Auto vars: Size Location Type
682 ;; None
683 ;; Return value: Size Location Type
684 ;; 2 41[COMRAM] int
685 ;; Registers used:
686 ;; wreg, fsr2l, fsr2h, status,2, status,0
687 ;; Tracked objects:
688 ;; On entry : 0/0
689 ;; On exit : 0/0
690 ;; Unchanged: 0/0
691 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
692 ;; Params: 3 0 0 0 0 0 0
693 ;; Locals: 0 0 0 0 0 0 0
694 ;; Temps: 1 0 0 0 0 0 0
695 ;; Totals: 4 0 0 0 0 0 0
696 ;;Total ram usage: 4 bytes
697 ;; Hardware stack levels used: 1
698 ;; Hardware stack levels required when called: 1
699 ;; This function calls:
700 ;; Nothing
701 ;; This function is called by:
702 ;; _midi_note_on
703 ;; _midi_note_off
704 ;; This function uses a non-reentrant model
705 ;;
706
707 psect text2
708 0008DC __ptext2:
709 opt stack 0
710 0008DC _midi_set_status:
711 opt stack 28
712
713 ;midi.c: 42: if (pkt == (0)) {
714
715 ;incstack = 0
716 0008DC 502A movf midi_set_status@pkt,w,c
717 0008DE 102B iorwf midi_set_status@pkt+1,w,c
718 0008E0 B4D8 btfsc status,2,c
719 0008E2 0012 return
720
721 ;midi.c: 44: }
722 ;midi.c: 46: pkt->status = status & 0x0F;
723
724 ;midi.c: 43: return -1;
725 ; Return value of _midi_set_status is never used
726 0008E4 C02C F02D movff midi_set_status@status,??_midi_set_status
727 0008E8 0E0F movlw 15
728 0008EA 162D andwf ??_midi_set_status,f,c
729 0008EC C02A FFD9 movff midi_set_status@pkt,fsr2l
730 0008F0 C02B FFDA movff midi_set_status@pkt+1,fsr2h
731 0008F4 50DF movf indf2,w,c
732 0008F6 182D xorwf ??_midi_set_status,w,c
733 0008F8 0BF0 andlw -16
734 0008FA 182D xorwf ??_midi_set_status,w,c
735 0008FC 6EDF movwf indf2,c
736 0008FE 0012 return
737 000900 __end_of_midi_set_status:
738 opt stack 0
739 tblptru equ 0xFF8
740 tblptrh equ 0xFF7
741 tblptrl equ 0xFF6
742 tablat equ 0xFF5
743 intcon equ 0xFF2
744 postinc0 equ 0xFEE
745 wreg equ 0xFE8
746 indf2 equ 0xFDF
747 postinc2 equ 0xFDE
748 postdec2 equ 0xFDD
749 fsr2h equ 0xFDA
750 fsr2l equ 0xFD9
751 status equ 0xFD8
752
753 ;; *************** function _midi_set_channel *****************
754 ;; Defined at:
755 ;; line 51 in file "midi.c"
756 ;; Parameters: Size Location Type
757 ;; pkt 2 41[COMRAM] PTR struct .
758 ;; -> main@message(7),
759 ;; channel 2 43[COMRAM] unsigned int
760 ;; Auto vars: Size Location Type
761 ;; None
762 ;; Return value: Size Location Type
763 ;; 2 41[COMRAM] int
764 ;; Registers used:
765 ;; wreg, fsr2l, fsr2h, status,2, status,0
766 ;; Tracked objects:
767 ;; On entry : 0/0
768 ;; On exit : 0/0
769 ;; Unchanged: 0/0
770 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
771 ;; Params: 4 0 0 0 0 0 0
772 ;; Locals: 0 0 0 0 0 0 0
773 ;; Temps: 1 0 0 0 0 0 0
774 ;; Totals: 5 0 0 0 0 0 0
775 ;;Total ram usage: 5 bytes
776 ;; Hardware stack levels used: 1
777 ;; Hardware stack levels required when called: 1
778 ;; This function calls:
779 ;; Nothing
780 ;; This function is called by:
781 ;; _midi_note_on
782 ;; _midi_note_off
783 ;; This function uses a non-reentrant model
784 ;;
785
786 psect text3
787 0008B6 __ptext3:
788 opt stack 0
789 0008B6 _midi_set_channel:
790 opt stack 28
791
792 ;midi.c: 53: if (pkt == (0)) {
793
794 ;incstack = 0
795 0008B6 502A movf midi_set_channel@pkt,w,c
796 0008B8 102B iorwf midi_set_channel@pkt+1,w,c
797 0008BA B4D8 btfsc status,2,c
798 0008BC 0012 return
799
800 ;midi.c: 55: }
801 ;midi.c: 57: pkt->channel = channel & 0x0F;
802
803 ;midi.c: 54: return -1;
804 ; Return value of _midi_set_channel is never used
805 0008BE C02C F02E movff midi_set_channel@channel,??_midi_set_channel
806 0008C2 0E0F movlw 15
807 0008C4 162E andwf ??_midi_set_channel,f,c
808 0008C6 C02A FFD9 movff midi_set_channel@pkt,fsr2l
809 0008CA C02B FFDA movff midi_set_channel@pkt+1,fsr2h
810 0008CE 3A2E swapf ??_midi_set_channel,f,c
811 0008D0 50DF movf indf2,w,c
812 0008D2 182E xorwf ??_midi_set_channel,w,c
813 0008D4 0B0F andlw -241
814 0008D6 182E xorwf ??_midi_set_channel,w,c
815 0008D8 6EDF movwf indf2,c
816 0008DA 0012 return
817 0008DC __end_of_midi_set_channel:
818 opt stack 0
819 tblptru equ 0xFF8
820 tblptrh equ 0xFF7
821 tblptrl equ 0xFF6
822 tablat equ 0xFF5
823 intcon equ 0xFF2
824 postinc0 equ 0xFEE
825 wreg equ 0xFE8
826 indf2 equ 0xFDF
827 postinc2 equ 0xFDE
828 postdec2 equ 0xFDD
829 fsr2h equ 0xFDA
830 fsr2l equ 0xFD9
831 status equ 0xFD8
832
833 ;; *************** function _memset *****************
834 ;; Defined at:
835 ;; line 8 in file "C:\Program Files\Microchip\xc8\v1.44\sources\common\memset.c"
836 ;; Parameters: Size Location Type
837 ;; p1 2 41[COMRAM] PTR void
838 ;; -> keys_data(64),
839 ;; c 2 43[COMRAM] int
840 ;; n 2 45[COMRAM] unsigned int
841 ;; Auto vars: Size Location Type
842 ;; p 2 47[COMRAM] PTR unsigned char
843 ;; -> keys_data(64),
844 ;; Return value: Size Location Type
845 ;; 2 41[COMRAM] PTR void
846 ;; Registers used:
847 ;; wreg, fsr2l, fsr2h, status,2, status,0
848 ;; Tracked objects:
849 ;; On entry : 0/0
850 ;; On exit : 0/0
851 ;; Unchanged: 0/0
852 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
853 ;; Params: 6 0 0 0 0 0 0
854 ;; Locals: 2 0 0 0 0 0 0
855 ;; Temps: 0 0 0 0 0 0 0
856 ;; Totals: 8 0 0 0 0 0 0
857 ;;Total ram usage: 8 bytes
858 ;; Hardware stack levels used: 1
859 ;; Hardware stack levels required when called: 1
860 ;; This function calls:
861 ;; Nothing
862 ;; This function is called by:
863 ;; _main
864 ;; This function uses a non-reentrant model
865 ;;
866
867 psect text4
868 00088A __ptext4:
869 opt stack 0
870 00088A _memset:
871 opt stack 29
872
873 ;incstack = 0
874 00088A C02A F030 movff memset@p1,memset@p
875 00088E C02B F031 movff memset@p1+1,memset@p+1
876 000892 D008 goto l592
877 000894 l1070:
878 000894 C030 FFD9 movff memset@p,fsr2l
879 000898 C031 FFDA movff memset@p+1,fsr2h
880 00089C C02C FFDF movff memset@c,indf2
881 0008A0 4A30 infsnz memset@p,f,c
882 0008A2 2A31 incf memset@p+1,f,c
883 0008A4 l592:
884 0008A4 062E decf memset@n,f,c
885 0008A6 A0D8 btfss status,0,c
886 0008A8 062F decf memset@n+1,f,c
887 0008AA 282E incf memset@n,w,c
888 0008AC E1F3 bnz l1070
889 0008AE 282F incf memset@n+1,w,c
890 0008B0 B4D8 btfsc status,2,c
891 0008B2 0012 return
892 0008B4 D7EF goto l593
893 0008B6 __end_of_memset:
894 opt stack 0
895 tblptru equ 0xFF8
896 tblptrh equ 0xFF7
897 tblptrl equ 0xFF6
898 tablat equ 0xFF5
899 intcon equ 0xFF2
900 postinc0 equ 0xFEE
901 wreg equ 0xFE8
902 indf2 equ 0xFDF
903 postinc2 equ 0xFDE
904 postdec2 equ 0xFDD
905 fsr2h equ 0xFDA
906 fsr2l equ 0xFD9
907 status equ 0xFD8
908
909 ;; *************** function _init_hw *****************
910 ;; Defined at:
911 ;; line 156 in file "main.c"
912 ;; Parameters: Size Location Type
913 ;; None
914 ;; Auto vars: Size Location Type
915 ;; None
916 ;; Return value: Size Location Type
917 ;; 1 wreg void
918 ;; Registers used:
919 ;; wreg, status,2, cstack
920 ;; Tracked objects:
921 ;; On entry : 0/0
922 ;; On exit : 0/0
923 ;; Unchanged: 0/0
924 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
925 ;; Params: 0 0 0 0 0 0 0
926 ;; Locals: 0 0 0 0 0 0 0
927 ;; Temps: 0 0 0 0 0 0 0
928 ;; Totals: 0 0 0 0 0 0 0
929 ;;Total ram usage: 0 bytes
930 ;; Hardware stack levels used: 1
931 ;; Hardware stack levels required when called: 2
932 ;; This function calls:
933 ;; _eusart1_init
934 ;; _eusart2_init
935 ;; This function is called by:
936 ;; _main
937 ;; This function uses a non-reentrant model
938 ;;
939
940 psect text5
941 000838 __ptext5:
942 opt stack 0
943 000838 _init_hw:
944 opt stack 28
945
946 ;main.c: 158: (INTCONbits.GIE = 0);
947
948 ;incstack = 0
949 000838 9EF2 bcf intcon,7,c ;volatile
950
951 ;main.c: 162: OSCTUNEbits.PLLEN = 1;
952 00083A 8C9B bsf 3995,6,c ;volatile
953
954 ;main.c: 164: OSCTUNEbits.TUN = 0b011111;
955 00083C 809B bsf 3995,0,c ;volatile
956 00083E 829B bsf 3995,1,c ;volatile
957 000840 849B bsf 3995,2,c ;volatile
958 000842 869B bsf 3995,3,c ;volatile
959 000844 889B bsf 3995,4,c ;volatile
960 000846 9A9B bcf 3995,5,c ;volatile
961
962 ;main.c: 166: OSCCONbits.IRCF = 0b111;
963 000848 88D3 bsf 4051,4,c ;volatile
964 00084A 8AD3 bsf 4051,5,c ;volatile
965 00084C 8CD3 bsf 4051,6,c ;volatile
966
967 ;main.c: 168: OSCCONbits.SCS = 0b00;
968 00084E 0EFC movlw -4
969 000850 16D3 andwf 4051,f,c ;volatile
970
971 ;main.c: 172: ANSELA = 0x00;
972 000852 0E00 movlw 0
973 000854 010F movlb 15 ; () banked
974 000856 6F38 movwf 56,b ;volatile
975
976 ;main.c: 173: ANSELB = 0x00;
977 000858 0E00 movlw 0
978 00085A 6F39 movwf 57,b ;volatile
979
980 ;main.c: 174: ANSELC = 0x00;
981 00085C 0E00 movlw 0
982 00085E 6F3A movwf 58,b ;volatile
983
984 ;main.c: 175: ANSELD = 0x00;
985 000860 0E00 movlw 0
986 000862 6F3B movwf 59,b ;volatile
987
988 ; BSR set to: 15
989 ;main.c: 178: TRISA = 0xFF;
990 000864 6892 setf 3986,c ;volatile
991
992 ; BSR set to: 15
993 ;main.c: 179: TRISB = 0xFF;
994 000866 6893 setf 3987,c ;volatile
995
996 ;main.c: 199: PR2 = 128;
997 000868 0E80 movlw 128
998 00086A 6EBB movwf 4027,c ;volatile
999
1000 ;main.c: 201: T2CONbits.T2OUTPS = 0b0001;
1001 00086C 50BA movf 4026,w,c ;volatile
1002 00086E 0B87 andlw -121
1003 000870 0908 iorlw 8
1004 000872 6EBA movwf 4026,c ;volatile
1005
1006 ;main.c: 203: T2CONbits.T2CKPS = 0b11;
1007 000874 0E03 movlw 3
1008 000876 12BA iorwf 4026,f,c ;volatile
1009
1010 ; BSR set to: 15
1011 ;main.c: 205: T2CONbits.TMR2ON = 1;
1012 000878 84BA bsf 4026,2,c ;volatile
1013
1014 ; BSR set to: 15
1015 ;main.c: 208: PIE1bits.TMR2IE = 1;
1016 00087A 829D bsf 3997,1,c ;volatile
1017
1018 ; BSR set to: 15
1019 ;main.c: 209: PIR1bits.TMR2IF = 0;
1020 00087C 929E bcf 3998,1,c ;volatile
1021
1022 ; BSR set to: 15
1023 ;main.c: 212: INTCONbits.PEIE = 1;
1024 00087E 8CF2 bsf intcon,6,c ;volatile
1025
1026 ; BSR set to: 15
1027 ;main.c: 215: eusart1_init();
1028 000880 EC8E F004 call _eusart1_init ;wreg free
1029
1030 ;main.c: 216: eusart2_init();
1031 000884 EC80 F004 call _eusart2_init ;wreg free
1032 000888 0012 return ;funcret
1033 00088A __end_of_init_hw:
1034 opt stack 0
1035 tblptru equ 0xFF8
1036 tblptrh equ 0xFF7
1037 tblptrl equ 0xFF6
1038 tablat equ 0xFF5
1039 intcon equ 0xFF2
1040 postinc0 equ 0xFEE
1041 wreg equ 0xFE8
1042 indf2 equ 0xFDF
1043 postinc2 equ 0xFDE
1044 postdec2 equ 0xFDD
1045 fsr2h equ 0xFDA
1046 fsr2l equ 0xFD9
1047 status equ 0xFD8
1048
1049 ;; *************** function _eusart2_init *****************
1050 ;; Defined at:
1051 ;; line 25 in file "rs232.c"
1052 ;; Parameters: Size Location Type
1053 ;; None
1054 ;; Auto vars: Size Location Type
1055 ;; None
1056 ;; Return value: Size Location Type
1057 ;; 1 wreg void
1058 ;; Registers used:
1059 ;; wreg, status,2
1060 ;; Tracked objects:
1061 ;; On entry : 0/0
1062 ;; On exit : 0/0
1063 ;; Unchanged: 0/0
1064 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
1065 ;; Params: 0 0 0 0 0 0 0
1066 ;; Locals: 0 0 0 0 0 0 0
1067 ;; Temps: 0 0 0 0 0 0 0
1068 ;; Totals: 0 0 0 0 0 0 0
1069 ;;Total ram usage: 0 bytes
1070 ;; Hardware stack levels used: 1
1071 ;; Hardware stack levels required when called: 1
1072 ;; This function calls:
1073 ;; Nothing
1074 ;; This function is called by:
1075 ;; _init_hw
1076 ;; This function uses a non-reentrant model
1077 ;;
1078
1079 psect text6
1080 000900 __ptext6:
1081 opt stack 0
1082 000900 _eusart2_init:
1083 opt stack 28
1084
1085 ;rs232.c: 28: TXSTA2bits.SYNC = 0;
1086
1087 ;incstack = 0
1088 000900 9872 bcf 3954,4,c ;volatile
1089
1090 ;rs232.c: 29: TXSTA2bits.TX9 = 0;
1091 000902 9C72 bcf 3954,6,c ;volatile
1092
1093 ;rs232.c: 32: RCSTA2bits.SPEN = 1;
1094 000904 8E71 bsf 3953,7,c ;volatile
1095
1096 ;rs232.c: 33: SPBRG2 = 31;
1097 000906 0E1F movlw 31
1098 000908 6E75 movwf 3957,c ;volatile
1099
1100 ;rs232.c: 35: SPBRGH2 = 0;
1101 00090A 0E00 movlw 0
1102 00090C 6E76 movwf 3958,c ;volatile
1103
1104 ;rs232.c: 36: TXSTA2bits.BRGH = 0;
1105 00090E 9472 bcf 3954,2,c ;volatile
1106
1107 ;rs232.c: 37: BAUDCON2bits.BRG16 = 0;
1108 000910 9670 bcf 3952,3,c ;volatile
1109
1110 ;rs232.c: 40: TRISDbits.TRISD7 = 1;
1111 000912 8E95 bsf 3989,7,c ;volatile
1112
1113 ;rs232.c: 41: TRISDbits.TRISD6 = 1;
1114 000914 8C95 bsf 3989,6,c ;volatile
1115
1116 ;rs232.c: 43: RCSTA2bits.CREN = 1;
1117 000916 8871 bsf 3953,4,c ;volatile
1118
1119 ;rs232.c: 44: TXSTA2bits.TXEN = 1;
1120 000918 8A72 bsf 3954,5,c ;volatile
1121 00091A 0012 return ;funcret
1122 00091C __end_of_eusart2_init:
1123 opt stack 0
1124 tblptru equ 0xFF8
1125 tblptrh equ 0xFF7
1126 tblptrl equ 0xFF6
1127 tablat equ 0xFF5
1128 intcon equ 0xFF2
1129 postinc0 equ 0xFEE
1130 wreg equ 0xFE8
1131 indf2 equ 0xFDF
1132 postinc2 equ 0xFDE
1133 postdec2 equ 0xFDD
1134 fsr2h equ 0xFDA
1135 fsr2l equ 0xFD9
1136 status equ 0xFD8
1137
1138 ;; *************** function _eusart1_init *****************
1139 ;; Defined at:
1140 ;; line 4 in file "rs232.c"
1141 ;; Parameters: Size Location Type
1142 ;; None
1143 ;; Auto vars: Size Location Type
1144 ;; None
1145 ;; Return value: Size Location Type
1146 ;; 1 wreg void
1147 ;; Registers used:
1148 ;; wreg, status,2
1149 ;; Tracked objects:
1150 ;; On entry : 0/0
1151 ;; On exit : 0/0
1152 ;; Unchanged: 0/0
1153 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
1154 ;; Params: 0 0 0 0 0 0 0
1155 ;; Locals: 0 0 0 0 0 0 0
1156 ;; Temps: 0 0 0 0 0 0 0
1157 ;; Totals: 0 0 0 0 0 0 0
1158 ;;Total ram usage: 0 bytes
1159 ;; Hardware stack levels used: 1
1160 ;; Hardware stack levels required when called: 1
1161 ;; This function calls:
1162 ;; Nothing
1163 ;; This function is called by:
1164 ;; _init_hw
1165 ;; This function uses a non-reentrant model
1166 ;;
1167
1168 psect text7
1169 00091C __ptext7:
1170 opt stack 0
1171 00091C _eusart1_init:
1172 opt stack 28
1173
1174 ;rs232.c: 7: TXSTA1bits.SYNC = 0;
1175
1176 ;incstack = 0
1177 00091C 98AC bcf 4012,4,c ;volatile
1178
1179 ;rs232.c: 8: TXSTA1bits.TX9 = 0;
1180 00091E 9CAC bcf 4012,6,c ;volatile
1181
1182 ;rs232.c: 11: RCSTA1bits.SPEN = 1;
1183 000920 8EAB bsf 4011,7,c ;volatile
1184
1185 ;rs232.c: 12: SPBRG1 = 31;
1186 000922 0E1F movlw 31
1187 000924 6EAF movwf 4015,c ;volatile
1188
1189 ;rs232.c: 13: SPBRGH1 = 0;
1190 000926 0E00 movlw 0
1191 000928 6EB0 movwf 4016,c ;volatile
1192
1193 ;rs232.c: 14: TXSTA1bits.BRGH = 0;
1194 00092A 94AC bcf 4012,2,c ;volatile
1195
1196 ;rs232.c: 15: BAUDCON1bits.BRG16 = 0;
1197 00092C 96B8 bcf 4024,3,c ;volatile
1198
1199 ;rs232.c: 18: TRISCbits.TRISC7 = 1;
1200 00092E 8E94 bsf 3988,7,c ;volatile
1201
1202 ;rs232.c: 19: TRISCbits.TRISC6 = 1;
1203 000930 8C94 bsf 3988,6,c ;volatile
1204
1205 ;rs232.c: 21: RCSTA1bits.CREN = 1;
1206 000932 88AB bsf 4011,4,c ;volatile
1207
1208 ;rs232.c: 22: TXSTA1bits.TXEN = 1;
1209 000934 8AAC bsf 4012,5,c ;volatile
1210 000936 0012 return ;funcret
1211 000938 __end_of_eusart1_init:
1212 opt stack 0
1213 tblptru equ 0xFF8
1214 tblptrh equ 0xFF7
1215 tblptrl equ 0xFF6
1216 tablat equ 0xFF5
1217 intcon equ 0xFF2
1218 postinc0 equ 0xFEE
1219 wreg equ 0xFE8
1220 indf2 equ 0xFDF
1221 postinc2 equ 0xFDE
1222 postdec2 equ 0xFDD
1223 fsr2h equ 0xFDA
1224 fsr2l equ 0xFD9
1225 status equ 0xFD8
1226
1227 ;; *************** function _eusart_write_midi *****************
1228 ;; Defined at:
1229 ;; line 276 in file "main.c"
1230 ;; Parameters: Size Location Type
1231 ;; pkt 2 42[COMRAM] PTR const struct .
1232 ;; -> main@message(7), main@conf_message(7),
1233 ;; Auto vars: Size Location Type
1234 ;; data 2 48[COMRAM] PTR unsigned char
1235 ;; -> message.data(4), main@message(7), conf_message.data(4), main@conf_message(7),
1236 ;; length 2 46[COMRAM] unsigned int
1237 ;; Return value: Size Location Type
1238 ;; 2 42[COMRAM] int
1239 ;; Registers used:
1240 ;; wreg, fsr2l, fsr2h, status,2, status,0, cstack
1241 ;; Tracked objects:
1242 ;; On entry : 0/0
1243 ;; On exit : 0/0
1244 ;; Unchanged: 0/0
1245 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
1246 ;; Params: 2 0 0 0 0 0 0
1247 ;; Locals: 4 0 0 0 0 0 0
1248 ;; Temps: 2 0 0 0 0 0 0
1249 ;; Totals: 8 0 0 0 0 0 0
1250 ;;Total ram usage: 8 bytes
1251 ;; Hardware stack levels used: 1
1252 ;; Hardware stack levels required when called: 2
1253 ;; This function calls:
1254 ;; _eusart2_putch
1255 ;; This function is called by:
1256 ;; _main
1257 ;; This function uses a non-reentrant model
1258 ;;
1259
1260 psect text8
1261 000762 __ptext8:
1262 opt stack 0
1263 000762 _eusart_write_midi:
1264 opt stack 28
1265
1266 ;main.c: 278: size_t length;
1267 ;main.c: 279: uint8_t *data;
1268 ;main.c: 281: if (pkt == (0)) {
1269
1270 ;incstack = 0
1271 000762 502B movf eusart_write_midi@pkt,w,c
1272 000764 102C iorwf eusart_write_midi@pkt+1,w,c
1273 000766 B4D8 btfsc status,2,c
1274 000768 0012 return
1275
1276 ;main.c: 283: }
1277 ;main.c: 285: length = pkt->data_size;
1278
1279 ;main.c: 282: return -1;
1280 ; Return value of _eusart_write_midi is never used
1281 00076A EE20 F001 lfsr 2,1
1282 00076E 502B movf eusart_write_midi@pkt,w,c
1283 000770 26D9 addwf fsr2l,f,c
1284 000772 502C movf eusart_write_midi@pkt+1,w,c
1285 000774 22DA addwfc fsr2h,f,c
1286 000776 CFDE F02F movff postinc2,eusart_write_midi@length
1287 00077A CFDD F030 movff postdec2,eusart_write_midi@length+1
1288
1289 ;main.c: 286: data = (uint8_t *) pkt->data;
1290 00077E 0E03 movlw 3
1291 000780 242B addwf eusart_write_midi@pkt,w,c
1292 000782 6E31 movwf eusart_write_midi@data,c
1293 000784 0E00 movlw 0
1294 000786 202C addwfc eusart_write_midi@pkt+1,w,c
1295 000788 6E32 movwf eusart_write_midi@data+1,c
1296
1297 ;main.c: 288: eusart2_putch((char)((pkt->status << 4) | pkt->channel));
1298 00078A C02B FFD9 movff eusart_write_midi@pkt,fsr2l
1299 00078E C02C FFDA movff eusart_write_midi@pkt+1,fsr2h
1300 000792 38DF swapf indf2,w,c
1301 000794 0B0F andlw 15
1302 000796 6E2D movwf ??_eusart_write_midi& (0+255),c
1303 000798 C02B FFD9 movff eusart_write_midi@pkt,fsr2l
1304 00079C C02C FFDA movff eusart_write_midi@pkt+1,fsr2h
1305 0007A0 50DF movf indf2,w,c
1306 0007A2 0B0F andlw 15
1307 0007A4 6E2E movwf (??_eusart_write_midi+1)& (0+255),c
1308 0007A6 382E swapf ??_eusart_write_midi+1,w,c
1309 0007A8 0BF0 andlw 240
1310 0007AA 102D iorwf ??_eusart_write_midi,w,c
1311 0007AC ECA9 F004 call _eusart2_putch
1312
1313 ;main.c: 290: while (length--) {
1314 0007B0 D009 goto l81
1315 0007B2 l1100:
1316
1317 ;main.c: 291: eusart2_putch((char) *(data++));
1318 0007B2 C031 FFD9 movff eusart_write_midi@data,fsr2l
1319 0007B6 C032 FFDA movff eusart_write_midi@data+1,fsr2h
1320 0007BA 50DF movf indf2,w,c
1321 0007BC ECA9 F004 call _eusart2_putch
1322 0007C0 4A31 infsnz eusart_write_midi@data,f,c
1323 0007C2 2A32 incf eusart_write_midi@data+1,f,c
1324 0007C4 l81:
1325 0007C4 062F decf eusart_write_midi@length,f,c
1326 0007C6 A0D8 btfss status,0,c
1327 0007C8 0630 decf eusart_write_midi@length+1,f,c
1328 0007CA 282F incf eusart_write_midi@length,w,c
1329 0007CC E1F2 bnz l1100
1330 0007CE 2830 incf eusart_write_midi@length+1,w,c
1331 0007D0 B4D8 btfsc status,2,c
1332 0007D2 0012 return
1333 0007D4 D7EE goto l82
1334 0007D6 __end_of_eusart_write_midi:
1335 opt stack 0
1336 tblptru equ 0xFF8
1337 tblptrh equ 0xFF7
1338 tblptrl equ 0xFF6
1339 tablat equ 0xFF5
1340 intcon equ 0xFF2
1341 postinc0 equ 0xFEE
1342 wreg equ 0xFE8
1343 indf2 equ 0xFDF
1344 postinc2 equ 0xFDE
1345 postdec2 equ 0xFDD
1346 fsr2h equ 0xFDA
1347 fsr2l equ 0xFD9
1348 status equ 0xFD8
1349
1350 ;; *************** function _eusart2_putch *****************
1351 ;; Defined at:
1352 ;; line 53 in file "rs232.c"
1353 ;; Parameters: Size Location Type
1354 ;; c 1 wreg unsigned char
1355 ;; Auto vars: Size Location Type
1356 ;; c 1 41[COMRAM] unsigned char
1357 ;; Return value: Size Location Type
1358 ;; 1 wreg void
1359 ;; Registers used:
1360 ;; wreg
1361 ;; Tracked objects:
1362 ;; On entry : 0/0
1363 ;; On exit : 0/0
1364 ;; Unchanged: 0/0
1365 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
1366 ;; Params: 0 0 0 0 0 0 0
1367 ;; Locals: 1 0 0 0 0 0 0
1368 ;; Temps: 0 0 0 0 0 0 0
1369 ;; Totals: 1 0 0 0 0 0 0
1370 ;;Total ram usage: 1 bytes
1371 ;; Hardware stack levels used: 1
1372 ;; Hardware stack levels required when called: 1
1373 ;; This function calls:
1374 ;; Nothing
1375 ;; This function is called by:
1376 ;; _eusart_write_midi
1377 ;; This function uses a non-reentrant model
1378 ;;
1379
1380 psect text9
1381 000952 __ptext9:
1382 opt stack 0
1383 000952 _eusart2_putch:
1384 opt stack 28
1385
1386 ;incstack = 0
1387 ;eusart2_putch@c stored from wreg
1388 000952 6E2A movwf eusart2_putch@c,c
1389 000954
1390 ;rs232.c: 55: while (!TX2IF);
1391 000954 A8A4 btfss 4004,4,c ;volatile
1392 000956 D7FE goto l1028
1393
1394 ;rs232.c: 56: TX2REG = c;
1395 000958 C02A FF73 movff eusart2_putch@c,3955 ;volatile
1396 00095C 0012 return ;funcret
1397 00095E __end_of_eusart2_putch:
1398 opt stack 0
1399 tblptru equ 0xFF8
1400 tblptrh equ 0xFF7
1401 tblptrl equ 0xFF6
1402 tablat equ 0xFF5
1403 intcon equ 0xFF2
1404 postinc0 equ 0xFEE
1405 wreg equ 0xFE8
1406 indf2 equ 0xFDF
1407 postinc2 equ 0xFDE
1408 postdec2 equ 0xFDD
1409 fsr2h equ 0xFDA
1410 fsr2l equ 0xFD9
1411 status equ 0xFD8
1412
1413 ;; *************** function _isr *****************
1414 ;; Defined at:
1415 ;; line 114 in file "main.c"
1416 ;; Parameters: Size Location Type
1417 ;; None
1418 ;; Auto vars: Size Location Type
1419 ;; i 1 40[COMRAM] unsigned char
1420 ;; data_b 1 37[COMRAM] unsigned char
1421 ;; data_a 1 36[COMRAM] unsigned char
1422 ;; Return value: Size Location Type
1423 ;; 1 wreg void
1424 ;; Registers used:
1425 ;; wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh
1426 ;; Tracked objects:
1427 ;; On entry : 0/0
1428 ;; On exit : 0/0
1429 ;; Unchanged: 0/0
1430 ;; Data sizes: COMRAM BANK0 BANK1 BANK2 BANK3 BANK4 BANK5
1431 ;; Params: 0 0 0 0 0 0 0
1432 ;; Locals: 5 0 0 0 0 0 0
1433 ;; Temps: 36 0 0 0 0 0 0
1434 ;; Totals: 41 0 0 0 0 0 0
1435 ;;Total ram usage: 41 bytes
1436 ;; Hardware stack levels used: 1
1437 ;; This function calls:
1438 ;; Nothing
1439 ;; This function is called by:
1440 ;; Interrupt level 2
1441 ;; This function uses a non-reentrant model
1442 ;;
1443
1444 psect intcode
1445 000008 __pintcode:
1446 opt stack 0
1447 000008 _isr:
1448 opt stack 28
1449
1450 ;incstack = 0
1451 000008 8235 bsf btemp,1,c ;set compiler interrupt flag (level 2)
1452 00000A CFFA F013 movff pclath,??_isr+18
1453 00000E CFFB F014 movff pclatu,??_isr+19
1454 000012 CFE9 F015 movff fsr0l,??_isr+20
1455 000016 CFEA F016 movff fsr0h,??_isr+21
1456 00001A CFE1 F017 movff fsr1l,??_isr+22
1457 00001E CFE2 F018 movff fsr1h,??_isr+23
1458 000022 CFD9 F019 movff fsr2l,??_isr+24
1459 000026 CFDA F01A movff fsr2h,??_isr+25
1460 00002A CFF3 F01B movff prodl,??_isr+26
1461 00002E CFF4 F01C movff prodh,??_isr+27
1462 000032 CFF6 F01D movff tblptrl,??_isr+28
1463 000036 CFF7 F01E movff tblptrh,??_isr+29
1464 00003A CFF8 F01F movff tblptru,??_isr+30
1465 00003E CFF5 F020 movff tablat,??_isr+31
1466 000042 C035 F021 movff btemp,??_isr+32
1467 000046 C036 F022 movff btemp+1,??_isr+33
1468 00004A C037 F023 movff btemp+2,??_isr+34
1469 00004E C038 F024 movff btemp+3,??_isr+35
1470
1471 ;main.c: 116: unsigned char i, data_a, data_b;
1472 ;main.c: 122: if (PIR1bits.TMR2IF) {
1473 000052 A29E btfss 3998,1,c ;volatile
1474 000054 D12F goto i2l55
1475
1476 ;main.c: 123: data_a = PORTA;
1477 000056 CF80 F025 movff 3968,isr@data_a ;volatile
1478
1479 ;main.c: 124: data_b = PORTB;
1480 00005A CF81 F026 movff 3969,isr@data_b ;volatile
1481
1482 ;main.c: 126: i = 7;
1483 00005E 0E07 movlw 7
1484 000060 6E29 movwf isr@i,c
1485 000062
1486 ;main.c: 129: keys_data[i] = (keys_data[i] << 1) | ((data_a >> i) & 0x01);
1487 000062 5029 movf isr@i,w,c
1488 000064 0D04 mullw 4
1489 000066 0E62 movlw low _keys_data
1490 000068 24F3 addwf prodl,w,c
1491 00006A 6ED9 movwf fsr2l,c
1492 00006C 0E00 movlw high _keys_data
1493 00006E 20F4 addwfc prodh,w,c
1494 000070 6EDA movwf fsr2h,c
1495 000072 CFDE F001 movff postinc2,??_isr
1496 000076 CFDE F002 movff postinc2,??_isr+1
1497 00007A CFDE F003 movff postinc2,??_isr+2
1498 00007E CFDE F004 movff postinc2,??_isr+3
1499 000082 90D8 bcf status,0,c
1500 000084 3401 rlcf ??_isr,w,c
1501 000086 6E05 movwf (??_isr+4)& (0+255),c
1502 000088 3402 rlcf ??_isr+1,w,c
1503 00008A 6E06 movwf (??_isr+5)& (0+255),c
1504 00008C 3403 rlcf ??_isr+2,w,c
1505 00008E 6E07 movwf (??_isr+6)& (0+255),c
1506 000090 3404 rlcf ??_isr+3,w,c
1507 000092 6E08 movwf (??_isr+7)& (0+255),c
1508 000094 C029 F009 movff isr@i,??_isr+8
1509 000098 C025 F00A movff isr@data_a,??_isr+9
1510 00009C 2A09 incf ??_isr+8,f,c
1511 00009E D002 goto i2u34_44
1512 0000A0 i2u34_45:
1513 0000A0 90D8 bcf status,0,c
1514 0000A2 320A rrcf ??_isr+9,f,c
1515 0000A4 i2u34_44:
1516 0000A4 2E09 decfsz ??_isr+8,f,c
1517 0000A6 D7FC goto i2u34_45
1518 0000A8 0E01 movlw 1
1519 0000AA 160A andwf ??_isr+9,f,c
1520 0000AC 500A movf ??_isr+9,w,c
1521 0000AE 1005 iorwf ??_isr+4,w,c
1522 0000B0 6E0B movwf (??_isr+10)& (0+255),c
1523 0000B2 5006 movf ??_isr+5,w,c
1524 0000B4 6E0C movwf (??_isr+11)& (0+255),c
1525 0000B6 5007 movf ??_isr+6,w,c
1526 0000B8 6E0D movwf (??_isr+12)& (0+255),c
1527 0000BA 5008 movf ??_isr+7,w,c
1528 0000BC 6E0E movwf (??_isr+13)& (0+255),c
1529 0000BE 5029 movf isr@i,w,c
1530 0000C0 0D04 mullw 4
1531 0000C2 0E62 movlw low _keys_data
1532 0000C4 24F3 addwf prodl,w,c
1533 0000C6 6ED9 movwf fsr2l,c
1534 0000C8 0E00 movlw high _keys_data
1535 0000CA 20F4 addwfc prodh,w,c
1536 0000CC 6EDA movwf fsr2h,c
1537 0000CE C00B FFDE movff ??_isr+10,postinc2
1538 0000D2 C00C FFDE movff ??_isr+11,postinc2
1539 0000D6 C00D FFDE movff ??_isr+12,postinc2
1540 0000DA C00E FFDE movff ??_isr+13,postinc2
1541
1542 ;main.c: 130: keys_data[i + 8] = (keys_data[i + 8] << 1) | ((data_b >> i) & 0x01);
1543 0000DE 5029 movf isr@i,w,c
1544 0000E0 6E01 movwf ??_isr& (0+255),c
1545 0000E2 6A02 clrf (??_isr+1)& (0+255),c
1546 0000E4 90D8 bcf status,0,c
1547 0000E6 3601 rlcf ??_isr,f,c
1548 0000E8 3602 rlcf ??_isr+1,f,c
1549 0000EA 90D8 bcf status,0,c
1550 0000EC 3601 rlcf ??_isr,f,c
1551 0000EE 3602 rlcf ??_isr+1,f,c
1552 0000F0 0E20 movlw 32
1553 0000F2 2601 addwf ??_isr,f,c
1554 0000F4 0E00 movlw 0
1555 0000F6 2202 addwfc ??_isr+1,f,c
1556 0000F8 0E62 movlw low _keys_data
1557 0000FA 2401 addwf ??_isr,w,c
1558 0000FC 6ED9 movwf fsr2l,c
1559 0000FE 0E00 movlw high _keys_data
1560 000100 2002 addwfc ??_isr+1,w,c
1561 000102 6EDA movwf fsr2h,c
1562 000104 CFDE F003 movff postinc2,??_isr+2
1563 000108 CFDE F004 movff postinc2,??_isr+3
1564 00010C CFDE F005 movff postinc2,??_isr+4
1565 000110 CFDE F006 movff postinc2,??_isr+5
1566 000114 90D8 bcf status,0,c
1567 000116 3403 rlcf ??_isr+2,w,c
1568 000118 6E07 movwf (??_isr+6)& (0+255),c
1569 00011A 3404 rlcf ??_isr+3,w,c
1570 00011C 6E08 movwf (??_isr+7)& (0+255),c
1571 00011E 3405 rlcf ??_isr+4,w,c
1572 000120 6E09 movwf (??_isr+8)& (0+255),c
1573 000122 3406 rlcf ??_isr+5,w,c
1574 000124 6E0A movwf (??_isr+9)& (0+255),c
1575 000126 C029 F00B movff isr@i,??_isr+10
1576 00012A C026 F00C movff isr@data_b,??_isr+11
1577 00012E 2A0B incf ??_isr+10,f,c
1578 000130 D002 goto i2u35_44
1579 000132 i2u35_45:
1580 000132 90D8 bcf status,0,c
1581 000134 320C rrcf ??_isr+11,f,c
1582 000136 i2u35_44:
1583 000136 2E0B decfsz ??_isr+10,f,c
1584 000138 D7FC goto i2u35_45
1585 00013A 0E01 movlw 1
1586 00013C 160C andwf ??_isr+11,f,c
1587 00013E 500C movf ??_isr+11,w,c
1588 000140 1007 iorwf ??_isr+6,w,c
1589 000142 6E0D movwf (??_isr+12)& (0+255),c
1590 000144 5008 movf ??_isr+7,w,c
1591 000146 6E0E movwf (??_isr+13)& (0+255),c
1592 000148 5009 movf ??_isr+8,w,c
1593 00014A 6E0F movwf (??_isr+14)& (0+255),c
1594 00014C 500A movf ??_isr+9,w,c
1595 00014E 6E10 movwf (??_isr+15)& (0+255),c
1596 000150 5029 movf isr@i,w,c
1597 000152 6E11 movwf (??_isr+16)& (0+255),c
1598 000154 6A12 clrf (??_isr+17)& (0+255),c
1599 000156 90D8 bcf status,0,c
1600 000158 3611 rlcf ??_isr+16,f,c
1601 00015A 3612 rlcf ??_isr+17,f,c
1602 00015C 90D8 bcf status,0,c
1603 00015E 3611 rlcf ??_isr+16,f,c
1604 000160 3612 rlcf ??_isr+17,f,c
1605 000162 0E20 movlw 32
1606 000164 2611 addwf ??_isr+16,f,c
1607 000166 0E00 movlw 0
1608 000168 2212 addwfc ??_isr+17,f,c
1609 00016A 0E62 movlw low _keys_data
1610 00016C 2411 addwf ??_isr+16,w,c
1611 00016E 6ED9 movwf fsr2l,c
1612 000170 0E00 movlw high _keys_data
1613 000172 2012 addwfc ??_isr+17,w,c
1614 000174 6EDA movwf fsr2h,c
1615 000176 C00D FFDE movff ??_isr+12,postinc2
1616 00017A C00E FFDE movff ??_isr+13,postinc2
1617 00017E C00F FFDE movff ??_isr+14,postinc2
1618 000182 C010 FFDE movff ??_isr+15,postinc2
1619
1620 ;main.c: 135: keypresses |= (keys_data[i] && !(keys_data[i] & 0xFFFFFF00))<<i;
1621 000186 0E00 movlw 0
1622 000188 6E27 movwf _isr$304,c
1623 00018A 5029 movf isr@i,w,c
1624 00018C 0D04 mullw 4
1625 00018E 0E62 movlw low _keys_data
1626 000190 24F3 addwf prodl,w,c
1627 000192 6ED9 movwf fsr2l,c
1628 000194 0E00 movlw high _keys_data
1629 000196 20F4 addwfc prodh,w,c
1630 000198 6EDA movwf fsr2h,c
1631 00019A 50DE movf postinc2,w,c
1632 00019C 10DE iorwf postinc2,w,c
1633 00019E 10DE iorwf postinc2,w,c
1634 0001A0 10DE iorwf postinc2,w,c
1635 0001A2 B4D8 btfsc status,2,c
1636 0001A4 D01C goto i2l58
1637 0001A6 5029 movf isr@i,w,c
1638 0001A8 0D04 mullw 4
1639 0001AA 0E62 movlw low _keys_data
1640 0001AC 24F3 addwf prodl,w,c
1641 0001AE 6ED9 movwf fsr2l,c
1642 0001B0 0E00 movlw high _keys_data
1643 0001B2 20F4 addwfc prodh,w,c
1644 0001B4 6EDA movwf fsr2h,c
1645 0001B6 0E00 movlw 0
1646 0001B8 14DE andwf postinc2,w,c
1647 0001BA 6E01 movwf ??_isr& (0+255),c
1648 0001BC 0EFF movlw 255
1649 0001BE 14DE andwf postinc2,w,c
1650 0001C0 6E02 movwf (??_isr+1)& (0+255),c
1651 0001C2 0EFF movlw 255
1652 0001C4 14DE andwf postinc2,w,c
1653 0001C6 6E03 movwf (??_isr+2)& (0+255),c
1654 0001C8 0EFF movlw 255
1655 0001CA 14DE andwf postinc2,w,c
1656 0001CC 6E04 movwf (??_isr+3)& (0+255),c
1657 0001CE 5001 movf ??_isr,w,c
1658 0001D0 1002 iorwf ??_isr+1,w,c
1659 0001D2 1003 iorwf ??_isr+2,w,c
1660 0001D4 1004 iorwf ??_isr+3,w,c
1661 0001D6 A4D8 btfss status,2,c
1662 0001D8 D002 goto i2l58
1663 0001DA 0E01 movlw 1
1664 0001DC 6E27 movwf _isr$304,c
1665 0001DE i2l58:
1666 0001DE C029 F001 movff isr@i,??_isr
1667 0001E2 5027 movf _isr$304,w,c
1668 0001E4 6E02 movwf (??_isr+1)& (0+255),c
1669 0001E6 6A03 clrf (??_isr+2)& (0+255),c
1670 0001E8 2A01 incf ??_isr,f,c
1671 0001EA D003 goto i2u38_44
1672 0001EC i2u38_45:
1673 0001EC 90D8 bcf status,0,c
1674 0001EE 3602 rlcf ??_isr+1,f,c
1675 0001F0 3603 rlcf ??_isr+2,f,c
1676 0001F2 i2u38_44:
1677 0001F2 2E01 decfsz ??_isr,f,c
1678 0001F4 D7FB goto i2u38_45
1679 0001F6 5002 movf ??_isr+1,w,c
1680 0001F8 0100 movlb 0 ; () banked
1681 0001FA 1360 iorwf _keypresses& (0+255),f,b ;volatile
1682 0001FC 5003 movf ??_isr+2,w,c
1683 0001FE 1361 iorwf (_keypresses+1)& (0+255),f,b ;volatile
1684
1685 ; BSR set to: 0
1686 ;main.c: 136: keypresses |= (keys_data[i + 8] && !(keys_data[i + 8] & 0xFFFFFF00))<<(i +
+ 8);
1687 000200 0E00 movlw 0
1688 000202 6E28 movwf _isr$305,c
1689
1690 ; BSR set to: 0
1691 000204 5029 movf isr@i,w,c
1692 000206 6E01 movwf ??_isr& (0+255),c
1693 000208 6A02 clrf (??_isr+1)& (0+255),c
1694 00020A 90D8 bcf status,0,c
1695 00020C 3601 rlcf ??_isr,f,c
1696 00020E 3602 rlcf ??_isr+1,f,c
1697 000210 90D8 bcf status,0,c
1698 000212 3601 rlcf ??_isr,f,c
1699 000214 3602 rlcf ??_isr+1,f,c
1700 000216 0E20 movlw 32
1701 000218 2601 addwf ??_isr,f,c
1702 00021A 0E00 movlw 0
1703 00021C 2202 addwfc ??_isr+1,f,c
1704 00021E 0E62 movlw low _keys_data
1705 000220 2401 addwf ??_isr,w,c
1706 000222 6ED9 movwf fsr2l,c
1707 000224 0E00 movlw high _keys_data
1708 000226 2002 addwfc ??_isr+1,w,c
1709 000228 6EDA movwf fsr2h,c
1710 00022A 50DE movf postinc2,w,c
1711 00022C 10DE iorwf postinc2,w,c
1712 00022E 10DE iorwf postinc2,w,c
1713 000230 10DE iorwf postinc2,w,c
1714 000232 B4D8 btfsc status,2,c
1715 000234 D027 goto i2l60
1716
1717 ; BSR set to: 0
1718 000236 5029 movf isr@i,w,c
1719 000238 6E01 movwf ??_isr& (0+255),c
1720 00023A 6A02 clrf (??_isr+1)& (0+255),c
1721 00023C 90D8 bcf status,0,c
1722 00023E 3601 rlcf ??_isr,f,c
1723 000240 3602 rlcf ??_isr+1,f,c
1724 000242 90D8 bcf status,0,c
1725 000244 3601 rlcf ??_isr,f,c
1726 000246 3602 rlcf ??_isr+1,f,c
1727 000248 0E20 movlw 32
1728 00024A 2601 addwf ??_isr,f,c
1729 00024C 0E00 movlw 0
1730 00024E 2202 addwfc ??_isr+1,f,c
1731 000250 0E62 movlw low _keys_data
1732 000252 2401 addwf ??_isr,w,c
1733 000254 6ED9 movwf fsr2l,c
1734 000256 0E00 movlw high _keys_data
1735 000258 2002 addwfc ??_isr+1,w,c
1736 00025A 6EDA movwf fsr2h,c
1737 00025C 0E00 movlw 0
1738 00025E 14DE andwf postinc2,w,c
1739 000260 6E03 movwf (??_isr+2)& (0+255),c
1740 000262 0EFF movlw 255
1741 000264 14DE andwf postinc2,w,c
1742 000266 6E04 movwf (??_isr+3)& (0+255),c
1743 000268 0EFF movlw 255
1744 00026A 14DE andwf postinc2,w,c
1745 00026C 6E05 movwf (??_isr+4)& (0+255),c
1746 00026E 0EFF movlw 255
1747 000270 14DE andwf postinc2,w,c
1748 000272 6E06 movwf (??_isr+5)& (0+255),c
1749 000274 5003 movf ??_isr+2,w,c
1750 000276 1004 iorwf ??_isr+3,w,c
1751 000278 1005 iorwf ??_isr+4,w,c
1752 00027A 1006 iorwf ??_isr+5,w,c
1753 00027C A4D8 btfss status,2,c
1754 00027E D002 goto i2l60
1755
1756 ; BSR set to: 0
1757 000280 0E01 movlw 1
1758 000282 6E28 movwf _isr$305,c
1759 000284 i2l60:
1760
1761 ; BSR set to: 0
1762
1763 ; BSR set to: 0
1764 000284 C029 F001 movff isr@i,??_isr
1765 000288 0E08 movlw 8
1766 00028A 2601 addwf ??_isr,f,c
1767 00028C 5028 movf _isr$305,w,c
1768 00028E 6E02 movwf (??_isr+1)& (0+255),c
1769 000290 6A03 clrf (??_isr+2)& (0+255),c
1770 000292 2A01 incf ??_isr,f,c
1771 000294 D003 goto i2u41_44
1772 000296 i2u41_45:
1773 000296 90D8 bcf status,0,c
1774 000298 3602 rlcf ??_isr+1,f,c
1775 00029A 3603 rlcf ??_isr+2,f,c
1776 00029C i2u41_44:
1777 00029C 2E01 decfsz ??_isr,f,c
1778 00029E D7FB goto i2u41_45
1779 0002A0 5002 movf ??_isr+1,w,c
1780 0002A2 0100 movlb 0 ; () banked
1781 0002A4 1360 iorwf _keypresses& (0+255),f,b ;volatile
1782 0002A6 5003 movf ??_isr+2,w,c
1783 0002A8 1361 iorwf (_keypresses+1)& (0+255),f,b ;volatile
1784
1785 ; BSR set to: 0
1786 ;main.c: 138: } while (i--);
1787 0002AA 0629 decf isr@i,f,c
1788 0002AC 2829 incf isr@i,w,c
1789 0002AE A4D8 btfss status,2,c
1790 0002B0 D6D8 goto i2l56
1791
1792 ; BSR set to: 0
1793 ;main.c: 147: PIR1bits.TMR2IF = 0;
1794 0002B2 929E bcf 3998,1,c ;volatile
1795 0002B4 i2l55:
1796
1797 ; BSR set to: 0
1798 0002B4 C024 F038 movff ??_isr+35,btemp+3
1799 0002B8 C023 F037 movff ??_isr+34,btemp+2
1800 0002BC C022 F036 movff ??_isr+33,btemp+1
1801 0002C0 C021 F035 movff ??_isr+32,btemp
1802 0002C4 C020 FFF5 movff ??_isr+31,tablat
1803 0002C8 C01F FFF8 movff ??_isr+30,tblptru
1804 0002CC C01E FFF7 movff ??_isr+29,tblptrh
1805 0002D0 C01D FFF6 movff ??_isr+28,tblptrl
1806 0002D4 C01C FFF4 movff ??_isr+27,prodh
1807 0002D8 C01B FFF3 movff ??_isr+26,prodl
1808 0002DC C01A FFDA movff ??_isr+25,fsr2h
1809 0002E0 C019 FFD9 movff ??_isr+24,fsr2l
1810 0002E4 C018 FFE2 movff ??_isr+23,fsr1h
1811 0002E8 C017 FFE1 movff ??_isr+22,fsr1l
1812 0002EC C016 FFEA movff ??_isr+21,fsr0h
1813 0002F0 C015 FFE9 movff ??_isr+20,fsr0l
1814 0002F4 C014 FFFB movff ??_isr+19,pclatu
1815 0002F8 C013 FFFA movff ??_isr+18,pclath
1816 0002FC 9235 bcf btemp,1,c ;clear compiler interrupt flag (level 2)
1817 0002FE 0011 retfie f
1818 000300 __end_of_isr:
1819 opt stack 0
1820 pclatu equ 0xFFB
1821 pclath equ 0xFFA
1822 tblptru equ 0xFF8
1823 tblptrh equ 0xFF7
1824 tblptrl equ 0xFF6
1825 tablat equ 0xFF5
1826 prodh equ 0xFF4
1827 prodl equ 0xFF3
1828 intcon equ 0xFF2
1829 postinc0 equ 0xFEE
1830 fsr0h equ 0xFEA
1831 fsr0l equ 0xFE9
1832 wreg equ 0xFE8
1833 fsr1h equ 0xFE2
1834 fsr1l equ 0xFE1
1835 indf2 equ 0xFDF
1836 postinc2 equ 0xFDE
1837 postdec2 equ 0xFDD
1838 fsr2h equ 0xFDA
1839 fsr2l equ 0xFD9
1840 status equ 0xFD8
1841 pclatu equ 0xFFB
1842 pclath equ 0xFFA
1843 tblptru equ 0xFF8
1844 tblptrh equ 0xFF7
1845 tblptrl equ 0xFF6
1846 tablat equ 0xFF5
1847 prodh equ 0xFF4
1848 prodl equ 0xFF3
1849 intcon equ 0xFF2
1850 postinc0 equ 0xFEE
1851 fsr0h equ 0xFEA
1852 fsr0l equ 0xFE9
1853 wreg equ 0xFE8
1854 fsr1h equ 0xFE2
1855 fsr1l equ 0xFE1
1856 indf2 equ 0xFDF
1857 postinc2 equ 0xFDE
1858 postdec2 equ 0xFDD
1859 fsr2h equ 0xFDA
1860 fsr2l equ 0xFD9
1861 status equ 0xFD8
1862
1863 psect rparam
1864 0000 pclatu equ 0xFFB
1865 pclath equ 0xFFA
1866 tblptru equ 0xFF8
1867 tblptrh equ 0xFF7
1868 tblptrl equ 0xFF6
1869 tablat equ 0xFF5
1870 prodh equ 0xFF4
1871 prodl equ 0xFF3
1872 intcon equ 0xFF2
1873 postinc0 equ 0xFEE
1874 fsr0h equ 0xFEA
1875 fsr0l equ 0xFE9
1876 wreg equ 0xFE8
1877 fsr1h equ 0xFE2
1878 fsr1l equ 0xFE1
1879 indf2 equ 0xFDF
1880 postinc2 equ 0xFDE
1881 postdec2 equ 0xFDD
1882 fsr2h equ 0xFDA
1883 fsr2l equ 0xFD9
1884 status equ 0xFD8
1885
1886 psect temp
1887 000035 btemp:
1888 opt stack 0
1889 000035 ds 1
1890 0000 int$flags set btemp
1891 0000 wtemp6 set btemp+1
1892 pclatu equ 0xFFB
1893 pclath equ 0xFFA
1894 tblptru equ 0xFF8
1895 tblptrh equ 0xFF7
1896 tblptrl equ 0xFF6
1897 tablat equ 0xFF5
1898 prodh equ 0xFF4
1899 prodl equ 0xFF3
1900 intcon equ 0xFF2
1901 postinc0 equ 0xFEE
1902 fsr0h equ 0xFEA
1903 fsr0l equ 0xFE9
1904 wreg equ 0xFE8
1905 fsr1h equ 0xFE2
1906 fsr1l equ 0xFE1
1907 indf2 equ 0xFDF
1908 postinc2 equ 0xFDE
1909 postdec2 equ 0xFDD
1910 fsr2h equ 0xFDA
1911 fsr2l equ 0xFD9
1912 status equ 0xFD8
Data Sizes:
Strings 0
Constant 42
Data 0
BSS 66
Persistent 0
Stack 0
Auto Spaces:
Space Size Autos Used
COMRAM 94 52 52
BANK0 160 21 87
BANK1 256 0 0
BANK2 256 0 0
BANK3 256 0 0
BANK4 256 0 0
BANK5 256 0 0
Pointer List with Targets:
memset@p1 PTR void size(2) Largest target is 64
-> 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]), conf_message.data(COMRAM[4]), main@conf_message(BANK0[7]),
eusart_write_midi@pkt PTR const struct . size(2) Largest target is 7
-> main@message(BANK0[7]), main@conf_message(BANK0[7]),
sp__memset PTR void size(2) Largest target is 64
-> keys_data(BANK0[64]),
Critical Paths under _main in COMRAM
_main->_midi_note_on
_midi_note_on->_midi_set_channel
_eusart_write_midi->_eusart2_putch
Critical Paths under _isr in COMRAM
None.
Critical Paths under _main in BANK0
None.
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 21 21 0 2165
0 BANK0 21 21 0
_eusart_write_midi
_init_hw
_memset
_midi_note_on
---------------------------------------------------------------------------------
(1) _midi_note_on 6 0 6 1242
46 COMRAM 6 0 6
_midi_set_channel
_midi_set_status
---------------------------------------------------------------------------------
(2) _midi_set_status 4 1 3 370
41 COMRAM 4 1 3
---------------------------------------------------------------------------------
(2) _midi_set_channel 5 1 4 370
41 COMRAM 5 1 4
---------------------------------------------------------------------------------
(1) _memset 8 2 6 324
41 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 331
42 COMRAM 8 6 2
_eusart2_putch
---------------------------------------------------------------------------------
(2) _eusart2_putch 1 1 0 22
41 COMRAM 1 1 0
---------------------------------------------------------------------------------
Estimated maximum stack depth 2
---------------------------------------------------------------------------------
(Depth) Function Calls Base Space Used Autos Params Refs
---------------------------------------------------------------------------------
(3) _isr 41 41 0 381
0 COMRAM 41 41 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 15 57 4 54.4%
BITCOMRAM 5E 0 0 0 0.0%
COMRAM 5E 34 34 1 55.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 8B 9 0.0%
DATA 0 0 8B 17 0.0%
CODE 0 0 0 0 0.0%
Microchip Technology PIC18 Macro Assembler V1.44 build -154322312
Symbol Table Fri Mar 02 09:57:11 2018
l70 06B6 l81 07C4 l73 075C
l82 07B2 __CFG_CP0$OFF 000000 __CFG_CP1$OFF 000000
__CFG_CP2$OFF 000000 __CFG_CP3$OFF 000000 __CFG_LVP$ON 000000
l592 08A4 l593 0894 __CFG_CPB$OFF 000000
_PR2 000FBB __CFG_CPD$OFF 000000 u507 0724
u444 06E2 u445 06DC u464 0746
u465 0740 u497 069E _isr 0008
prod 000FF3 wreg 000FE8 _TXSTA1bits 000FAC
_TXSTA2bits 000F72 l1100 07B2 l1028 0954
l1070 0894 l1160 06C0 l1158 06B6
?_isr 0001 i2l60 0284 i2l55 02B4
i2l56 0062 i2l58 01DE main@message 00B0
_main 062C midi_note_on@channel 0031 fsr0h 000FEA
fsr1h 000FE2 fsr2h 000FDA fsr0l 000FE9
indf2 000FDF fsr1l 000FE1 fsr2l 000FD9
btemp 0035 __CFG_BORV$190 000000 isr@i 0029
prodh 000FF4 prodl 000FF3 start 0300
__CFG_IESO$OFF 000000 midi_note_on@pkt 002F ___param_bank 000000
??_isr 0001 _BAUDCON1bits 000FB8 _BAUDCON2bits 000F70
?_main 0001 _RC1IF 007CF5 _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 088A __CFG_MCLRE$EXTMCLR 000000 main@i 00AE
pclath 000FFA tablat 000FF5 _eusart_write_midi 0762
__end_of_midi_set_status 0900 status 000FD8 wtemp6 0036
__CFG_HFOFST$ON 000000 ?_eusart_write_midi 002B __CFG_PBADEN$ON 000000
eusart_write_midi@length 002F __initialization 0938 midi_note_on@note 0033
__end_of_main 0762 ??_eusart_write_midi 002D midi_note_on@velocity 0034
??_main 00A2 ?_midi_note_on 002F __activetblptr 000002
__CFG_PLLCFG$ON 000000 __end_of_eusart_write_midi 07D6 _ANSELA 000F38
_ANSELB 000F39 _ANSELC 000F3A _ANSELD 000F3B
_RC1REG 000FAE __CFG_WDTEN$OFF 000000 _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 08DC _memset 088A
clear_0 093E midi_set_status@status 002C ??_midi_note_on 0035
__size_of_eusart2_putch 000C ??_init_hw 002A __mediumconst 0000
tblptrh 000FF7 tblptrl 000FF6 tblptru 000FF8
__accesstop 0060 __end_of__initialization 0944 ?_midi_set_status 002A
??_eusart1_init 002A ??_eusart2_init 002A ___rparam_used 000001
__pcstackCOMRAM 0001 __size_of_eusart_write_midi 0074 __pbssBANK0 0060
main@conf_message 00A7 _eusart2_putch 0952 __CFG_CCP2MX$PORTC1 000000
__CFG_CCP3MX$PORTB5 000000 ?_memset 002A i2u41_44 029C
i2u41_45 0296 i2u34_44 00A4 i2u34_45 00A0
i2u35_44 0136 i2u35_45 0132 i2u38_44 01F2
i2u38_45 01EC _SPBRGH1 000FB0 _SPBRGH2 000F76
?_eusart2_putch 0001 __end_of_midi_note_on 0838 eusart_write_midi@pkt 002B
__CFG_PWRTEN$OFF 000000 __Hparam 0000 __Lparam 0000
__psmallconst 0600 __pcinit 0938 _isr$304 0027
_isr$305 0028 __size_of_memset 002C __ramtop 0600
__ptext0 062C __ptext1 07D6 __ptext2 08DC
__ptext3 08B6 __ptext4 088A __ptext5 0838
__ptext6 0900 __ptext7 091C __ptext8 0762
__ptext9 0952 __end_of_eusart1_init 0938 __end_of_eusart2_init 091C
_T2CONbits 000FBA _init_hw 0838 __size_of_isr 02F8
_keypresses 0060 end_of_initialization 0944 _midi_notes_steps_table 0601
memset@c 002C memset@n 002E memset@p 0030
__Lmediumconst 0000 postdec2 000FDD postinc0 000FEE
postinc2 000FDE ?_midi_set_channel 002A ??_midi_set_channel 002E
_TRISCbits 000F94 _TRISDbits 000F95 ??_eusart2_putch 002A
midi_set_channel@channel 002C __end_of_memset 08B6 start_initialization 0938
__end_of_isr 0300 __size_of_midi_note_on 0062 __size_of_midi_set_status 0024
__size_of_eusart1_init 001C __size_of_eusart2_init 001C ??_memset 0030
_midi_note_on 07D6 __pcstackBANK0 00A2 midi_set_status@pkt 002A
_eusart1_init 091C _eusart2_init 0900 __pintcode 0008
__CFG_PRICLKEN$ON 000000 __smallconst 0600 ?_init_hw 0001
_keys_data 0062 _PIE1bits 000F9D _PIR1bits 000F9E
__CFG_WDTPS$32768 000000 ??_midi_set_status 002D __end_of_midi_notes_steps_table 062B
__size_of_midi_set_channel 0026 eusart_write_midi@data 0031 isr@data_a 0025
isr@data_b 0026 __Hrparam 0000 __Lrparam 0000
__CFG_BOREN$SBORDIS 000000 __CFG_P2BMX$PORTD2 000000 eusart2_putch@c 002A
__size_of_init_hw 0052 __end_of_eusart2_putch 095E __size_of_main 0136
int$flags 0035 _OSCTUNEbits 000F9B _INTCONbits 000FF2
memset@p1 002A midi_set_channel@pkt 002A intlevel2 0000
_RCSTA1bits 000FAB _RCSTA2bits 000F71 _OSCCONbits 000FD3
__CFG_T3CMX$PORTC0 000000 _midi_set_channel 08B6 __CFG_FOSC$INTIO67 000000
_midi_set_status 08DC
|