;----------------------------------------------------------- ; ; Pitch Tracer : September 1998 ; ; MIDI = 1ch : Note Event ; ; Input : smoothed wave <-- TIOCB-2 ; Envelope <-- AN-0 ; ;----------------------------------------------------------- ;##### Port Defines ##### smr .equ h'0fffb0 brr .equ h'0fffb1 scr .equ h'0fffb2 tdr .equ h'0fffb3 ssr .equ h'0fffb4 rdr .equ h'0fffb5 pbddr .equ h'0fffd4 pbdr .equ h'0fffd6 addrah .equ h'0fffe0 addrbh .equ h'0fffe2 addrch .equ h'0fffe4 addrdh .equ h'0fffe6 adcsr .equ h'0fffe8 adcr .equ h'0fffe9 iprb .equ h'0ffff8 tstr .equ h'0fff60 tsnc .equ h'0fff61 tmdr .equ h'0fff62 tfcr .equ h'0fff63 toer .equ h'0fff90 tocr .equ h'0fff91 TCR2 .equ h'0fff78 TIOR2 .equ h'0fff79 TIER2 .equ h'0fff7A TSR2 .equ h'0fff7B TCNT2 .equ h'0fff7C GRA2 .equ h'0fff7E GRB2 .equ h'0fff80 dadr0 .equ h'0fffdc dadr1 .equ h'0fffdd dacr .equ h'0fffde dastcr .equ h'0fff5c ;##### Vector Defines ##### .section vector,data,locate=h'000000 .data.l start ;##### Work RAM Data Defines ##### .section ram,data,locate=h'0fef10 timer1 .res.w 1 timer2 .res.w 1 timer3 .res.w 1 tx_top .res.w 1 tx_end .res.w 1 ad_data .res.b 8 counter .res.b 1 led .res.b 1 .org h'0ff800 tx_fifo .res.b 1024 ;***** Constant Table Defines ***** .section rom,data,locate=h'001000 table_p: .data 113,113,112,112,111,111,111,110,110,109,109,108,108,108,107,107 ; Data 020 - 02F .data 106,106,106,105,105,105,104,104,104,103,103,103,103,102,102,102 ; Data 030 - 03F .data 101,101,101,101,100,100,100,100,99,99,99,99,99,98,98,98 ; Data 040 - 04F .data 98,97,97,97,97,97,96,96,96,96,96,95,95,95,95,95 ; Data 050 - 05F .data 94,94,94,94,94,94,93,93,93,93,93,93,92,92,92,92 ; Data 060 - 06F .data 92,92,91,91,91,91,91,91,91,90,90,90,90,90,90,90 ; Data 070 - 07F .data 89,89,89,89,89,89,89,89,88,88,88,88,88,88,88,88 ; Data 080 - 08F .data 87,87,87,87,87,87,87,87,87,86,86,86,86,86,86,86 ; Data 090 - 09F .data 86,86,85,85,85,85,85,85,85,85,85,84,84,84,84,84 ; Data 0A0 - 0AF .data 84,84,84,84,84,83,83,83,83,83,83,83,83,83,83,83 ; Data 0B0 - 0BF .data 82,82,82,82,82,82,82,82,82,82,82,82,81,81,81,81 ; Data 0C0 - 0CF .data 81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,80 ; Data 0D0 - 0DF .data 80,80,80,80,79,79,79,79,79,79,79,79,79,79,79,79 ; Data 0E0 - 0EF .data 79,79,78,78,78,78,78,78,78,78,78,78,78,78,78,78 ; Data 0F0 - 0FF .data 77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77 ; Data 100 - 10F .data 76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76 ; Data 110 - 11F .data 75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75 ; Data 120 - 12F .data 75,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74 ; Data 130 - 13F .data 74,74,74,73,73,73,73,73,73,73,73,73,73,73,73,73 ; Data 140 - 14F .data 73,73,73,73,73,73,72,72,72,72,72,72,72,72,72,72 ; Data 150 - 15F .data 72,72,72,72,72,72,72,72,72,72,71,71,71,71,71,71 ; Data 160 - 16F .data 71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71 ; Data 170 - 17F .data 70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70 ; Data 180 - 18F .data 70,70,70,70,70,70,70,69,69,69,69,69,69,69,69,69 ; Data 190 - 19F .data 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,68 ; Data 1A0 - 1AF .data 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68 ; Data 1B0 - 1BF .data 68,68,68,68,68,68,68,68,67,67,67,67,67,67,67,67 ; Data 1C0 - 1CF .data 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67 ; Data 1D0 - 1DF .data 67,67,67,67,66,66,66,66,66,66,66,66,66,66,66,66 ; Data 1E0 - 1EF .data 66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66 ; Data 1F0 - 1FF .data 65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65 ; Data 200 - 20F .data 65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,64 ; Data 210 - 21F .data 64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64 ; Data 220 - 22F .data 64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,63 ; Data 230 - 23F .data 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63 ; Data 240 - 24F .data 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63 ; Data 250 - 25F .data 63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62 ; Data 260 - 26F .data 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62 ; Data 270 - 27F .data 62,62,62,62,62,61,61,61,61,61,61,61,61,61,61,61 ; Data 280 - 28F .data 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61 ; Data 290 - 29F .data 61,61,61,61,61,61,61,61,61,61,61,61,60,60,60,60 ; Data 2A0 - 2AF .data 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60 ; Data 2B0 - 2BF .data 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60 ; Data 2C0 - 2CF .data 60,60,60,60,59,59,59,59,59,59,59,59,59,59,59,59 ; Data 2D0 - 2DF .data 59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59 ; Data 2E0 - 2EF .data 59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,58 ; Data 2F0 - 2FF .data 58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58 ; Data 300 - 30F .data 58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58 ; Data 310 - 31F .data 58,58,58,58,58,58,58,58,58,58,58,58,58,57,57,57 ; Data 320 - 32F .data 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57 ; Data 330 - 33F .data 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57 ; Data 340 - 34F .data 57,57,57,57,57,57,57,57,57,57,57,57,57,56,56,56 ; Data 350 - 35F .data 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56 ; Data 360 - 36F .data 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56 ; Data 370 - 37F .data 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56 ; Data 380 - 38F .data 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55 ; Data 390 - 39F .data 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55 ; Data 3A0 - 3AF .data 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55 ; Data 3B0 - 3BF .data 55,55,55,55,55,55,55,54,54,54,54,54,54,54,54,54 ; Data 3C0 - 3CF .data 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54 ; Data 3D0 - 3DF .data 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54 ; Data 3E0 - 3EF .data 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54 ; Data 3F0 - 3FF .data 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53 ; Data 400 - 40F .data 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53 ; Data 410 - 41F .data 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53 ; Data 420 - 42F .data 53,53,53,53,53,53,53,53,53,53,53,53,53,52,52,52 ; Data 430 - 43F .data 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52 ; Data 440 - 44F .data 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52 ; Data 450 - 45F .data 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52 ; Data 460 - 46F .data 52,52,52,52,52,52,52,52,52,52,52,52,52,51,51,51 ; Data 470 - 47F .data 51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51 ; Data 480 - 48F .data 51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51 ; Data 490 - 49F .data 51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51 ; Data 4A0 - 4AF .data 51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51 ; Data 4B0 - 4BF .data 51,51,50,50,50,50,50,50,50,50,50,50,50,50,50,50 ; Data 4C0 - 4CF .data 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50 ; Data 4D0 - 4DF .data 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50 ; Data 4E0 - 4EF .data 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50 ; Data 4F0 - 4FF .data 50,50,50,50,50,50,50,50,50,50,49,49,49,49,49,49 ; Data 500 - 50F .data 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49 ; Data 510 - 51F .data 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49 ; Data 520 - 52F .data 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49 ; Data 530 - 53F .data 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49 ; Data 540 - 54F .data 49,49,49,49,49,49,49,48,48,48,48,48,48,48,48,48 ; Data 550 - 55F .data 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48 ; Data 560 - 56F .data 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48 ; Data 570 - 57F .data 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48 ; Data 580 - 58F .data 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48 ; Data 590 - 59F .data 48,48,48,48,48,48,48,48,47,47,47,47,47,47,47,47 ; Data 5A0 - 5AF .data 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47 ; Data 5B0 - 5BF .data 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47 ; Data 5C0 - 5CF .data 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47 ; Data 5D0 - 5DF .data 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47 ; Data 5E0 - 5EF .data 47,47,47,47,47,47,47,47,47,47,47,47,47,47,46,46 ; Data 5F0 - 5FF .data 46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46 ; Data 600 - 60F .data 46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46 ; Data 610 - 61F .data 46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46 ; Data 620 - 62F .data 46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46 ; Data 630 - 63F .data 46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46 ; Data 640 - 64F .data 46,46,46,46,46,46,46,46,46,45,45,45,45,45,45,45 ; Data 650 - 65F .data 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45 ; Data 660 - 66F .data 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45 ; Data 670 - 67F .data 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45 ; Data 680 - 68F .data 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45 ; Data 690 - 69F .data 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45 ; Data 6A0 - 6AF .data 45,45,45,45,45,45,45,45,45,45,44,44,44,44,44,44 ; Data 6B0 - 6BF .data 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44 ; Data 6C0 - 6CF .data 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44 ; Data 6D0 - 6DF .data 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44 ; Data 6E0 - 6EF .data 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44 ; Data 6F0 - 6FF .data 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44 ; Data 700 - 70F .data 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44 ; Data 710 - 71F .data 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43 ; Data 720 - 72F .data 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43 ; Data 730 - 73F .data 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43 ; Data 740 - 74F .data 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43 ; Data 750 - 75F .data 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43 ; Data 760 - 76F .data 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43 ; Data 770 - 77F .data 43,43,43,43,43,43,43,43,43,43,43,43,43,42,42,42 ; Data 780 - 78F .data 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42 ; Data 790 - 79F .data 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42 ; Data 7A0 - 7AF .data 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42 ; Data 7B0 - 7BF .data 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42 ; Data 7C0 - 7CF .data 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42 ; Data 7D0 - 7DF .data 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42 ; Data 7E0 - 7EF .data 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42 ; Data 7F0 - 7FF .data 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 ; Data 800 - 80F .data 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 ; Data 810 - 81F .data 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 ; Data 820 - 82F .data 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 ; Data 830 - 83F .data 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 ; Data 840 - 84F .data 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 ; Data 850 - 85F .data 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41 ; Data 860 - 86F .data 41,41,41,41,41,41,41,41,41,40,40,40,40,40,40,40 ; Data 870 - 87F .data 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40 ; Data 880 - 88F .data 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40 ; Data 890 - 89F .data 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40 ; Data 8A0 - 8AF .data 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40 ; Data 8B0 - 8BF .data 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40 ; Data 8C0 - 8CF .data 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40 ; Data 8D0 - 8DF .data 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40 ; Data 8E0 - 8EF .data 40,40,40,40,40,40,40,40,40,40,39,39,39,39,39,39 ; Data 8F0 - 8FF .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 900 - 90F .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 910 - 91F .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 920 - 92F .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 930 - 93F .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 940 - 94F .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 950 - 95F .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 960 - 96F .data 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39 ; Data 970 - 97F .data 39,39,39,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 980 - 98F .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 990 - 99F .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 9A0 - 9AF .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 9B0 - 9BF .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 9C0 - 9CF .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 9D0 - 9DF .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 9E0 - 9EF .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data 9F0 - 9FF .data 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38 ; Data A00 - A0F .data 38,38,38,38,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A10 - A1F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A20 - A2F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A30 - A3F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A40 - A4F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A50 - A5F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A60 - A6F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A70 - A7F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A80 - A8F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37 ; Data A90 - A9F .data 37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,36 ; Data AA0 - AAF .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data AB0 - ABF .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data AC0 - ACF .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data AD0 - ADF .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data AE0 - AEF .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data AF0 - AFF .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data B00 - B0F .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data B10 - B1F .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data B20 - B2F .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data B30 - B3F .data 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 ; Data B40 - B4F .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data B50 - B5F .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data B60 - B6F .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data B70 - B7F .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data B80 - B8F .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data B90 - B9F .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data BA0 - BAF .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data BB0 - BBF .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data BC0 - BCF .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data BD0 - BDF .data 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35 ; Data BE0 - BEF .data 35,35,35,35,35,35,35,35,35,35,35,35,34,34,34,34 ; Data BF0 - BFF .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C00 - C0F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C10 - C1F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C20 - C2F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C30 - C3F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C40 - C4F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C50 - C5F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C60 - C6F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C70 - C7F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C80 - C8F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data C90 - C9F .data 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34 ; Data CA0 - CAF .data 34,34,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data CB0 - CBF .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data CC0 - CCF .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data CD0 - CDF .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data CE0 - CEF .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data CF0 - CFF .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data D00 - D0F .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data D10 - D1F .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data D20 - D2F .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data D30 - D3F .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data D40 - D4F .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data D50 - D5F .data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33 ; Data D60 - D6F .data 33,33,33,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data D70 - D7F .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data D80 - D8F .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data D90 - D9F .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data DA0 - DAF .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data DB0 - DBF .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data DC0 - DCF .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data DD0 - DDF .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data DE0 - DEF .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data DF0 - DFF .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data E00 - E0F .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data E10 - E1F .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data E20 - E2F .data 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ; Data E30 - E3F .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data E40 - E4F .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data E50 - E5F .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data E60 - E6F .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data E70 - E7F .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data E80 - E8F .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data E90 - E9F .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data EA0 - EAF .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data EB0 - EBF .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data EC0 - ECF .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data ED0 - EDF .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data EE0 - EEF .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data EF0 - EFF .data 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31 ; Data F00 - F0F .data 31,31,31,31,31,31,31,31,31,31,30,30,30,30,30,30 ; Data F10 - F1F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F20 - F2F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F30 - F3F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F40 - F4F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F50 - F5F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F60 - F6F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F70 - F7F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F80 - F8F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data F90 - F9F .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data FA0 - FAF .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data FB0 - FBF .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data FC0 - FCF .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data FD0 - FDF .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data FE0 - FEF .data 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30 ; Data FF0 - FFF ;***** Reset --> Initialize --> Main Loop ***** .section program,code,locate=h'002000 start: mov.l #h'0fff0f,er7 ; stack pointer set mov.l #h'0fef10,er2 mov.w #h'0fe0,r1 mov.b #0,r0l _ram_clear: mov.b r0l,@er2 inc.l #1,er2 dec.w #1,r1 bne _ram_clear jsr @sci0_init ; SCI0 initialize mov.b #b'00001000,r0l mov.b r0l,@adcsr ; A/D setting bclr.b #7,@adcr ; TRGE = 0 mov.b #b'11111111,r0l mov.b r0l,@pbddr ; set : Port[B] all output jsr @wait_500msec bset.b #5,@adcsr ; A/D start ! mov.b #b'01110000,r0l ; tx/rx start ! mov.b r0l,@scr mov.b #b'01000011,r0l ; Initialize TCR2 mov.b r0l,@TCR2 ; clock= 2MHz mov.b #b'01000100,r0l ; Initialize TIOR2 mov.b r0l,@TIOR2 ; bset #2,@tstr ; Start ITU ch2 loop: jsr @ad_check jsr @timer_check jsr @tx_midi_check jmp @loop ;***** SCI init, MIDI Transmit Routines ***** sci0_init: mov.b #b'00000000,r0l mov.b r0l,@scr mov.b #b'00000000,r0l mov.b r0l,@smr mov.b #15,r0l mov.b r0l,@brr mov.w #500,r0 _sci0_wait: dec.w #1,r0 bne _sci0_wait mov.b @ssr,r0l ; (dummy read) mov.b #0,r0l mov.b r0l,@ssr rts ;***** Timer / Counter Routines ***** wait_500msec: mov.l #500,er1 _wait_1: jsr @wait_1msec sub.l #1,er1 bne _wait_1 rts wait_1msec: mov.l #2048,er2 _wait_2: sub.l #1,er2 bne _wait_2 rts timer_check: mov.w @timer1,r1 inc.w #1,r1 mov.w r1,@timer1 beq _timer_1 rts _timer_1: mov.w @timer2,r1 inc.w #1,r1 mov.w r1,@timer2 cmp.w #80,r1 bne _timer_2 mov.w #0,r1 mov.w r1,@timer2 _timer_2: mov.b @counter,r0l inc.b r0l mov.b r0l,@counter mov.b @led,r0l bnot #7,r0l mov.b r0l,@led mov.b r0l,@pbdr ; write to Port[B] rts tx_midi_check: mov.w @tx_top,r1 mov.w @tx_end,r6 cmp.w r1,r6 bne _tx_exist rts _tx_exist: btst #7,@ssr ; test TRDE bne _tx_seq rts _tx_seq: mov.w #0,e6 mov.b @(tx_fifo,er6),r0l mov.b r0l,@tdr bclr #7,@ssr ; Transmit ! inc.w #1,r6 bclr #2,r6h mov.w r6,@tx_end rts tx_fifo_set: mov.w @tx_top,r6 mov.w #0,e6 mov.b r0h,@(tx_fifo,er6) ; transmit data = [r0h] inc.w #1,r6 bclr #2,r6h mov.w r6,@tx_top rts ;***** A/D Check Routine ***** ad_check: mov.w @timer3,r1 inc.w #1,r1 mov.w r1,@timer3 cmp.w #2000,r1 beq _ad_in rts _ad_in: mov.w #0,r1 mov.w r1,@timer3 btst.b #7,@adcsr ; A/D conv end ? bne _ad_go rts _ad_go: mov.b @addrah,r3h ; Get A/D data bclr.b #7,@adcsr ; ADF clear mov.b #0,r0l mov.b r0l,r4l ; [r4l] = Data channel mov.b r0l,@adcsr ; A/D setting bset.b #3,@adcsr ; speed bset.b #5,@adcsr ; A/D start ! extu.w r4 extu.l er4 shlr.b r3h ; R3H = now mov.b r3h,@(ad_data,er4) ; now -> old cmp.b #64,r3h ; > 2.5V ? bpl _ad_ok rts _ad_ok: mov.w @GRB2,r2 cmp.w #44444,r2 ; < 45Hz ? bcs _ad_next rts _ad_next: cmp.w #1333,r2 ; >1500Hz ? bhi _ad_pass rts _ad_pass: mov.w #4095,r3 extu.l er3 mulxu.w r2,er3 ; r2 * er3 --> er3 mov.w #43252,r4 divxu.w r4,er3 ; er3 / r4 --> er3 mov.w #0,e3 and.b #b'00001111,r3h mov.b @(table_p,er3),r5h inc.b r5h mov.b #h'90,r0h jsr @tx_fifo_set mov.b r5h,r0h jsr @tx_fifo_set mov.b #h'64,r0h jsr @tx_fifo_set mov.b r5h,r0h jsr @tx_fifo_set mov.b #h'00,r0h jsr @tx_fifo_set rts .end