File indexing completed on 2024-05-19 15:23:13

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight.asm-dsp56k</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Motorola DSP56k) - Theme (Breeze Light)"/>
0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
0007 <span style="color:#898887;">* initialization</span>
0008 <span style="color:#644a9b;">n</span>       <span style="font-weight:bold;">equ</span>   <span style="color:#b08000;">20</span>
0009 <span style="color:#644a9b;">start</span>   <span style="font-weight:bold;">equ</span>   <span style="color:#b08000;">$40</span>
0010 <span style="color:#644a9b;">wddr</span>    <span style="font-weight:bold;">equ</span>   <span style="color:#b08000;">$0</span>
0011 <span style="color:#644a9b;">cddr</span>    <span style="font-weight:bold;">equ</span>   <span style="color:#b08000;">$0</span>
0012 <span style="color:#644a9b;">input</span>   <span style="font-weight:bold;">equ</span>   <span style="color:#b08000;">$ffe0</span>
0013 <span style="color:#644a9b;">output</span>  <span style="font-weight:bold;">equ</span>   <span style="color:#b08000;">$ffe1</span>
0014 <span style="color:#898887;">;</span>
0015         <span style="font-weight:bold;">org</span>   <span style="color:#006e28;font-weight:bold;">p:</span>start
0016         <span style="font-weight:bold;">move</span>  <span style="color:#aa5500;">#</span><span style="color:#644a9b;">wddr</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">r0</span>  <span style="color:#898887;">;r0 ¬ samples</span>
0017         <span style="font-weight:bold;">move</span>  <span style="color:#aa5500;">#</span><span style="color:#644a9b;">cddr</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">r4</span>  <span style="color:#898887;">;r1 ¬ coefficients</span>
0018         <span style="font-weight:bold;">move</span>  <span style="color:#aa5500;">#</span><span style="color:#644a9b;">n</span><span style="color:#ca60ca;">-</span><span style="color:#aa5500;">1</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">m0</span>   <span style="color:#898887;">;set modulo arithmetic</span>
0019         <span style="font-weight:bold;">move</span>  <span style="color:#0057ae;">m0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">m4</span>     <span style="color:#898887;">;for the 2 circular buffers</span>
0020 <span style="color:#898887;">;</span>
0021         <span style="font-weight:bold;">opt</span>   cc
0022 <span style="color:#898887;">;       filter loop :8+(n-1) cycles</span>
0023 
0024         <span style="font-weight:bold;">movep</span> <span style="color:#006e28;font-weight:bold;">y:</span>input<span style="color:#ca60ca;">,</span><span style="color:#006e28;font-weight:bold;">x:</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r0</span><span style="color:#ca60ca;">)</span>              <span style="color:#898887;">;input sample in memory</span>
0025         <span style="font-weight:bold;">clr</span>   <span style="color:#0057ae;">a</span>                <span style="color:#006e28;font-weight:bold;">x:</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r0</span><span style="color:#ca60ca;">)+</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">x0</span>  <span style="color:#006e28;font-weight:bold;">y:</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r4</span><span style="color:#ca60ca;">)+</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">y0</span>
0026         <span style="font-weight:bold;">rep</span>   <span style="color:#aa5500;">#</span><span style="color:#644a9b;">n</span><span style="color:#ca60ca;">-</span><span style="color:#aa5500;">1</span>
0027         <span style="font-weight:bold;">mac</span>   <span style="color:#0057ae;">x0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">y0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">a</span>          <span style="color:#006e28;font-weight:bold;">x:</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r0</span><span style="color:#ca60ca;">)+</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">x0</span>  <span style="color:#006e28;font-weight:bold;">y:</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r4</span><span style="color:#ca60ca;">)+</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">y0</span>
0028         <span style="font-weight:bold;">macr</span>  <span style="color:#0057ae;">x0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">x0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">a</span>          <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r0</span><span style="color:#ca60ca;">)-</span>
0029 
0030         <span style="font-weight:bold;">movep</span> <span style="color:#0057ae;">a</span><span style="color:#ca60ca;">,</span><span style="color:#006e28;font-weight:bold;">y:</span>output                   <span style="color:#898887;">;output filtered sample</span>
0031 
0032 <span style="color:#644a9b;">fftr2a</span> <span style="font-weight:bold;">macro</span> points<span style="color:#ca60ca;">,</span>data<span style="color:#ca60ca;">,</span>coef
0033 <span style="color:#644a9b;">fftr2a</span><span style="color:#ca60ca;">:</span> <span style="font-weight:bold;">ident</span> <span style="color:#b08000;">1</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">1</span>
0034 
0035         <span style="font-weight:bold;">move</span> <span style="color:#aa5500;">#</span><span style="color:#644a9b;">points</span><span style="color:#ca60ca;">/</span><span style="color:#aa5500;">2</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">n0</span>  <span style="color:#898887;">;initialize butterflies per group</span>
0036         <span style="font-weight:bold;">move</span> <span style="color:#aa5500;">#1</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">n2</span>         <span style="color:#898887;">;initialize groups per pass</span>
0037         <span style="font-weight:bold;">move</span> <span style="color:#aa5500;">#</span><span style="color:#644a9b;">points</span><span style="color:#ca60ca;">/</span><span style="color:#aa5500;">4</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">n6</span>  <span style="color:#898887;">;initialize C pointer offset</span>
0038         <span style="font-weight:bold;">move</span> <span style="color:#aa5500;">#</span><span style="color:#ca60ca;">-</span><span style="color:#aa5500;">1</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">m0</span>        <span style="color:#898887;">;initialize A and B address modifiers</span>
0039         <span style="font-weight:bold;">move</span> <span style="color:#0057ae;">m0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">m1</span>         <span style="color:#898887;">;for linear addressing</span>
0040         <span style="font-weight:bold;">move</span> <span style="color:#0057ae;">m0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">m4</span>
0041         <span style="font-weight:bold;">move</span> <span style="color:#0057ae;">m0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">m5</span>
0042         <span style="font-weight:bold;">move</span> <span style="color:#aa5500;">#0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">m6</span>         <span style="color:#898887;">;initialize C address modifier for</span>
0043                            <span style="color:#898887;">;reverse carry (bit-reversed) addressing</span>
0044 
0045         <span style="font-weight:bold;">do</span>   <span style="color:#aa5500;">#</span><span style="color:#644a9b;font-weight:bold;">@cvi</span> <span style="color:#ca60ca;">(</span><span style="color:#644a9b;font-weight:bold;">@log</span><span style="color:#ca60ca;">(</span>points<span style="color:#ca60ca;">)/</span><span style="color:#644a9b;font-weight:bold;">@log</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">)+</span><span style="color:#b08000;">0.5</span><span style="color:#ca60ca;">)</span><span style="color:#ca60ca;">,</span>_end_pass
0046         <span style="font-weight:bold;">move</span> <span style="color:#aa5500;">#</span><span style="color:#644a9b;">data</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">r0</span>       <span style="color:#898887;">;initialize A input pointer</span>
0047         <span style="font-weight:bold;">move</span> <span style="color:#0057ae;">r0</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">r4</span>          <span style="color:#898887;">;initialize A output pointer</span>
0048 
0049 <span style="color:#644a9b;">_end_bfy</span>
0050         <span style="font-weight:bold;">move</span> <span style="color:#0057ae;">a</span><span style="color:#ca60ca;">,</span><span style="color:#006e28;font-weight:bold;">x:</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r5</span><span style="color:#ca60ca;">)+</span><span style="color:#0057ae;">n5</span> <span style="color:#006e28;font-weight:bold;">y:</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">r1</span><span style="color:#ca60ca;">)+</span><span style="color:#0057ae;">n1</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">y1</span>
0051 
0052 <span style="color:#644a9b;">end_cell</span>
0053         <span style="font-weight:bold;">rnd</span> <span style="color:#0057ae;">a</span>
0054         <span style="font-weight:bold;">movep</span> <span style="color:#aa5500;">#0</span><span style="color:#ca60ca;">,</span><span style="color:#006e28;font-weight:bold;">x:</span><span style="color:#b08000;">$fffe</span>
0055         <span style="font-weight:bold;">dc</span> <span style="color:#644a9b;font-weight:bold;">@sin</span><span style="color:#ca60ca;">(</span><span style="color:#644a9b;font-weight:bold;">@cvf</span><span style="color:#ca60ca;">(</span>count<span style="color:#ca60ca;">)*</span>freq<span style="color:#ca60ca;">)</span>
0056         <span style="font-weight:bold;">move</span> <span style="color:#aa5500;">#</span><span style="color:#644a9b;">twiddle</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">r2</span>
0057 
0058         <span style="font-weight:bold;">MOVE</span> <span style="color:#006e28;font-weight:bold;">L:</span><span style="color:#aa5500;">&lt;$1</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">A</span>
0059         <span style="font-weight:bold;">SUB</span> <span style="color:#0057ae;">X</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">A</span> <span style="color:#006e28;font-weight:bold;">L:</span><span style="color:#aa5500;">&lt;$3</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">B</span>
0060 
0061  <span style="font-weight:bold;">bad_label</span>
0062  <span style="color:#644a9b;">good_label</span><span style="color:#ca60ca;">:</span>
0063 </pre></body></html>