<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Community: Message List</title>
    <link>http://line6.com/support/index.jspa?view=discussions</link>
    <description>Most recent forum messages</description>
    <language>en</language>
    <pubDate>Tue, 12 Feb 2013 14:05:10 GMT</pubDate>
    <generator>Jive SBS 4.5.7.0 (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2013-02-12T14:05:10Z</dc:date>
    <dc:language>en</dc:language>
    <item>
      <title>Re: Simple Multiplication Question</title>
      <link>http://line6.com/support/message/410518?tstart=0#410518</link>
      <description>&lt;!-- [DocumentBodyStart:3d7987c8-32c4-4a57-b51e-49840147bbfc] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Dear cheezor,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;reviewing your code was not that easy. I can ee the timer checking the accumulator content for zero but not the influence on the audio signal. Anyways there are two other possibilities to mute the signal by flipping a bit:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;1.) Flip the sign bit, this is corresponding the guard bits in accumulator a2 correspinding to bit 23 in the operand registers. Be careful not to change bit 47 in the accumulator since this is _not_ the sign bit - this is inherent in the accumulator guard bits.&lt;/p&gt;&lt;p&gt;The result is the same as moving -1.0 to any of those registers. Afterwards the polarity should be inverted in the accumulator by the 'neg a' instruction. Note that writing ~1.0 = 0.9999998 to a register is done by flipping _all_ bits except the sign bit, but maybe the right polarity of the output signal isn't an issue for your application. &lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;2.) Use the flipped bit to control writing 0.9999998 or 0.0000000 corresponding to 1.0 and 0.0 correspondingly. This is really annoying but the DSP can handle control istructions much worse than a microcontroller. Code branches are relatively unusual in DSP algorithms compared to the tight MAC loops this architecture was designed for. It is possible to code conditional code execution but this is more nasty than on ARM or even 8051. We can have conditional code execution but only for BRxx and Jxx (or BRSxx and JSxx for subroutines) where xx is corersponding to the status register flag settings combinations.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;In each case have a try with the Symphony Studio simulator for first. Small items like this can be observed conveniently by changing the register numbering formats from fractional, interger and hexadecimal on the fly.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Have fun checking the DSP563xx architecture with the simulator,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:3d7987c8-32c4-4a57-b51e-49840147bbfc] --&gt;</description>
      <pubDate>Tue, 12 Feb 2013 14:05:10 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/410518?tstart=0#410518</guid>
      <dc:date>2013-02-12T14:05:10Z</dc:date>
      <clearspace:dateToText>3 months, 1 week ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Simple Multiplication Question</title>
      <link>http://line6.com/support/message/410061?tstart=0#410061</link>
      <description>&lt;!-- [DocumentBodyStart:29cea966-7661-40ad-bb0c-5344af6b0a79] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Hi Cheesor,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;you're right, the problem lies in the number format of the DSP. Your 'counter' increments the least significant bit in the accumulator. The DSP fractional numbering format uses the MSB (most significant bit) as sign bit with the weighting -2^0 = -1.0 The following bits are weighted by the factors 2^-1 (1/2), 2^-2 (1/4) and so on. Doing a multiplication by the timer 'content' caused the input sample multiplied by 2^-24 if you copy (move) the register content a0 to one of the operand registers in advance. Just moving the incremented accumulator causes to copy the content of the accumulator a1 which is zero unless you incremented the counter 2^24 times.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;So the phenomenon is clear to me, the result yields zero (000000) or an even _very_ small negative number FFFFFF (-2^-23, to calculate this is left as an exercise to the reader, just follow the rule given above :-)).&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;So in your case branching (i.e. muting the signal corresponding to the flag setting) is the only option I can see for the moment.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;If you give a concise description of the problem you intend to solve I could probably help more.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:29cea966-7661-40ad-bb0c-5344af6b0a79] --&gt;</description>
      <pubDate>Thu, 07 Feb 2013 20:12:47 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/410061?tstart=0#410061</guid>
      <dc:date>2013-02-07T20:12:47Z</dc:date>
      <clearspace:dateToText>3 months, 2 weeks ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Delay effect</title>
      <link>http://line6.com/support/message/372666?tstart=0#372666</link>
      <description>&lt;!-- [DocumentBodyStart:cffe2573-b066-47f8-8ebf-c17bf26d6192] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Hi Mike,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;now I've checked my 'homebrewn' modulo and removed some bugs. The following code is to be tested by the simulator:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;; Assembler directives&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;bufstart&amp;#160; equ $1000&lt;/p&gt;&lt;p&gt;delay&amp;#160;&amp;#160;&amp;#160;&amp;#160; equ $000F&lt;/p&gt;&lt;p&gt;bufend&amp;#160;&amp;#160;&amp;#160; equ bufstart+delay&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; org p:$0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; Look for proper code memory base address on real silicon&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;; This code goes to initialization&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; move #bufstart,r1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; Here the pointer to the arbitrary length modulo buffer is placed.&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; The restrictive rules for modulo addressing are no longer valid...&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; move #$FFFFFF,m1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; ..since we use the linear addressing mode&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;; This code goes to main loop&lt;/p&gt;&lt;p&gt;loop&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;; Get input value to x0 in advance - this code isn't listed here!&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move x:(r1),x1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; read sample out of delay buffer&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move x0,x:(r1)+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; write new input sample to delay line&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;; all the following is buffer management overhead - get your modulo addressing by hand.&lt;/p&gt;&lt;p&gt;; Anyway this isn't too much overhead compared to the strong modulo addressing rules!&amp;#160; &lt;/p&gt;&lt;p&gt;; We just check if the pointer r1 has reached the 'modulo' buffer end &lt;/p&gt;&lt;p&gt;; - if so, we just reset it to the original address location&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move #bufend,x1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; get buffer end address&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move r1,a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; get the current delay line address for test if modulo buffer end is reached now&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; cmp&amp;#160; x1,a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; see if pointer has reached the buffer end address &lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; - essentially the comparison (cmp) is a subtraction by x1 of a&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; jne&amp;#160; noreset&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; if not, do not reset pointer - check if the result is not equal (ne). &lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; If not so don't reset the pointer by jumping over the next instruction.&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move #bufstart,r1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; if so, reset pointer to #bufstart&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;noreset&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160; loop&lt;/p&gt;&lt;p&gt;; more code goes here&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:cffe2573-b066-47f8-8ebf-c17bf26d6192] --&gt;</description>
      <pubDate>Sat, 28 Apr 2012 07:50:50 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/372666?tstart=0#372666</guid>
      <dc:date>2012-04-28T07:50:50Z</dc:date>
      <clearspace:dateToText>1 year, 4 weeks ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Delay effect</title>
      <link>http://line6.com/support/message/372095?tstart=0#372095</link>
      <description>&lt;!-- [DocumentBodyStart:1ef43e7c-8c73-46af-9aa2-b4587c938a7d] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Hi Mike,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;the short answer is: yes, its possible. The long answer: its not that easy. You can't take benefit of the AGU directly since you cant't use the modifier registers for modulo adressing as you said since they are limited to 15-bit word length. I thought about that for a minute and got this simple idea:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;1.) Use linear adressing - set the modifier to $xxFFFF&lt;/p&gt;&lt;p&gt;2.) You have to create your own modulo buffer. To do so you have to manage the pointer administration overhead by yourself - the classic approach. &lt;/p&gt;&lt;p&gt;3.) You can use a single pointer (any Rx corresponding to the Mx modifier) and read an old sample before overwriting it by the actual one.&lt;/p&gt;&lt;p&gt;4.) After each read/write procedure, increment the pointer and check if it has reached the end position (delay offset) for your delay buffer depth.&lt;/p&gt;&lt;p&gt;5.) If so reset the pointer to the original address&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Here an idea for a code snippet (not tested)&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;bufstart&amp;#160; equ $1000&lt;/p&gt;&lt;p&gt;delay&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; equ $FFFF&lt;/p&gt;&lt;p&gt;bufend&amp;#160;&amp;#160;&amp;#160; equ (bufstart + delay)&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; org x;&lt;/p&gt;&lt;p&gt;test&amp;#160;&amp;#160;&amp;#160;&amp;#160; ds 1&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; org p:&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; initialization&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; move #bufstart,r1&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; move #$FFFFFF,m1&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; ; this goes to loop&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;&lt;p&gt;; get input value to x0&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move x:(r1),x1&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; read sample out of delay buffer&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move x0,x(r1)+&amp;#160;&amp;#160;&amp;#160; ; write input sample to delay line&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;; all the following is buffer management overhead - get your modulo addressing by hand.&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move #bufend,x1 ; get buffer end address&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move r1,a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; get the current delay line address for test&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; cmp&amp;#160; x1,a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; see if pointer has reached the buffer end address - essentially the comparison (cmp) is a subtraction by x1 of a&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; brpl&amp;#160;&amp;#160; noreset&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; if not, do not reset pointer - check if the result is positiv (pl). If so don't reset the pointer. &lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; You may also try brnz (branch is not zero) to match the buffer end point more exactly&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; move #bufstart,r1 ; if yes, set pointer to #bufstart&lt;/p&gt;&lt;p&gt;noreset&lt;/p&gt;&lt;p&gt;...&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; more code goes here&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Please give feedback if you could solve the problem. A good idea might be to check the code using the simulator. I will do so soon...&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Best regards&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:1ef43e7c-8c73-46af-9aa2-b4587c938a7d] --&gt;</description>
      <pubDate>Tue, 24 Apr 2012 20:00:50 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/372095?tstart=0#372095</guid>
      <dc:date>2012-04-24T20:00:50Z</dc:date>
      <clearspace:dateToText>1 year, 1 month ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: How do I get my ToneCore Development Kit working on Windows 7?</title>
      <link>http://line6.com/support/message/356288?tstart=0#356288</link>
      <description>&lt;!-- [DocumentBodyStart:d98f70cf-5217-4a46-b23d-147d3c12539e] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;I had a trial on my side using Windows 7 32-bit. This works like XP even without a virtual machine. The issue is just running 64-bit.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;If I run it in the compatibility mode "Windows XP Service Pack 2" (as administrator) I get an error message "You need Windows XP with Service Pack 2 or Windows Vista to run this installation", without compatibility mode I get the message "62-bit version of Windwos are not supported for the moment. Please use a 32-bit version of Windows". Nice help. Sorry to say, I couldn't solve this issue. Recompiling for 64-bit and adding 64-bit drivers on the Line6 side will definitively help. &lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:d98f70cf-5217-4a46-b23d-147d3c12539e] --&gt;</description>
      <pubDate>Thu, 16 Feb 2012 18:05:05 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/356288?tstart=0#356288</guid>
      <dc:date>2012-02-16T18:05:05Z</dc:date>
      <clearspace:dateToText>1 year, 3 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: How do I get my ToneCore Development Kit working on Windows 7?</title>
      <link>http://line6.com/support/message/354987?tstart=0#354987</link>
      <description>&lt;!-- [DocumentBodyStart:fcd8d90a-553e-4c73-a5a5-5efae8833288] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Hi Swidmark,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;TCDK isn't supported on 64-bit Windows systems - neither Windows 7 nor Vista. I had a try on my side with both Windows 7 versions - sorry, it cant be installed using 64-bit. Probably they had to rewrite the drivers. Downgrade to 32-bit to run TCDK please without any issues.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Best regards&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:fcd8d90a-553e-4c73-a5a5-5efae8833288] --&gt;</description>
      <pubDate>Sat, 11 Feb 2012 05:45:02 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/354987?tstart=0#354987</guid>
      <dc:date>2012-02-11T05:45:02Z</dc:date>
      <clearspace:dateToText>1 year, 3 months ago</clearspace:dateToText>
      <clearspace:replyCount>1</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Tonecore DSP P:ROM library functions?</title>
      <link>http://line6.com/support/message/196287?tstart=0#196287</link>
      <description>&lt;!-- [DocumentBodyStart:4b62d136-d582-4bfa-8cb2-fbaae141b323] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Hi Mike,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;as far as I could read the documents Freescale only provides the API, not the sources - at least I don't have any.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;If you like to do sample processing you better write your own code with the help of the application notes that are available. I do not remember the block size, anyway the code didn't fit the purpose of professional audio application much - this is more on surround processing and subwoofer management.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;If you read the PPP documentation you can obtain your own opinion on this...&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Best regards&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:4b62d136-d582-4bfa-8cb2-fbaae141b323] --&gt;</description>
      <pubDate>Mon, 01 Nov 2010 17:31:15 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/196287?tstart=0#196287</guid>
      <dc:date>2010-11-01T17:31:15Z</dc:date>
      <clearspace:dateToText>2 years, 6 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Tonecore DSP P:ROM library functions?</title>
      <link>http://line6.com/support/message/195876?tstart=0#195876</link>
      <description>&lt;!-- [DocumentBodyStart:e3298dac-d1ff-464b-8f3c-3f39d58d23a4] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Hi,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;addresses p:$ff1000 to p:$ff3000 indeed contain an internal ROM that is user accessable, see the memory maps on page 3-6 in the DSP56364 user manual. There's also a special bootstrap mode (Mode A) to jump to address p:$ff1000 end execte the code from here.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;The program ROM contains the Motorola post processing phase (PPP) DSP algorithms. The basic software contains delay managers, volume managers, sound field processing (stereo processing), graphic equalization, tone control and auxiliary channel mixdown. For Dolby and/or DTS licensees also decoder variants are available.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Anyway the PPP arcitecture is useless if you want to design audio effects or use the DSP563xx for professional audio applications. I too this into consideration and read all the PPP documentation I was provided with by my local Freescale FAE. The reasons for this is that the PPP arcitecture is designed for DVD decoder and automitive audio applications. PPP uses bock signal processing by 'round robin' scheduling slots to the individual PPP processes. This causes signal latencies that are not acceptable for a guitar effect or any other audio application where the musician can monitor his own signal. For the two said applications the DSP56364 was designed for this is of no concern.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;The PPP architecture can be used to design consumer equipment for these target markets without DSP programming - you can just use the DSP like an ASIC (application specific integrated circuit). Fortunately all DSP56xxx can be used as programmable DSPs as we do for the ToneCore. Sidenote: in the old days with the DSP56002 there were a sine wave and A-law/&amp;#181;-law logarithmic quantizer (this is for speech coding) tables available. I made use of the sine wave table then.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Best regards&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:e3298dac-d1ff-464b-8f3c-3f39d58d23a4] --&gt;</description>
      <pubDate>Sun, 31 Oct 2010 06:59:30 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/195876?tstart=0#195876</guid>
      <dc:date>2010-10-31T06:59:30Z</dc:date>
      <clearspace:dateToText>2 years, 6 months ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: 8031/shi_receive in Filter Example?</title>
      <link>http://line6.com/support/message/154206?tstart=0#154206</link>
      <description>&lt;!-- [DocumentBodyStart:4bbd75ba-4db7-42c3-992a-369fa813d6d7] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Hi,&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;on the other end of the SPI interface is not an 8031 but a freescale HC08. Anyway the Bcc instruction is the conditional branch where 'cs' is indeed 'carry bit set'. The code is not for an 8031 but for the Freescale DSP563xx.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Have a look here &lt;/span&gt;&lt;a class="jive-link-external-small" href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=DSP56364&amp;amp;nodeId=0127955654&amp;amp;fpsp=1&amp;amp;tab=Documentation_Tab" target="_blank"&gt;http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=DSP56364&amp;amp;nodeId=0127955654&amp;amp;fpsp=1&amp;amp;tab=Documentation_Tab&lt;/a&gt;&lt;span&gt; to p. 13-18 for the Bcc instruction and to p. 12-23 for the condition flags.&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;There is indeed a track that the original SPI communication had and 8031 on the other end. I write some comments in between the assembler lines to give some addl. information even if I didn't write the code.&lt;/p&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;shi_receive&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; movep&amp;#160;&amp;#160; x:M_HRX,x:HostCommand&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; Get word from 8031.&lt;br/&gt;; The M_HRX register has received a word from the 8031. This has triggered the SPI interrupt that called the ISR.&lt;br/&gt;; The received word is written to the HostCommand variable.&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; movep&amp;#160;&amp;#160; #000000,x:M_HTX&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; Assert HREQ* pin for 8031.&lt;br/&gt;; Writing to the M_HTX register asserts the HREQ pin. &lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btst&amp;#160;&amp;#160;&amp;#160; #0,x:HostCommand&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; $000001 = Write 1 DSP word to X:mem.&lt;br/&gt;; Bit 0 in the HostCommand variable is tested. The protocol is defined for $000001 to write one DSP word to the X memory.&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bcs&amp;#160;&amp;#160;&amp;#160;&amp;#160; DoWriteCommand&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ;&lt;br/&gt;; If the C flag is set then the write command to SPI is executed.&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btst&amp;#160;&amp;#160;&amp;#160; #3,x:HostCommand&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; $000008 = Send word to the 8031.&lt;br/&gt;&lt;/code&gt;&lt;code class="jive-code"&gt;; Bit 0 in the HostCommand variable is tested. &lt;/code&gt;&lt;br/&gt;&lt;code class="jive-code"&gt;; The protocol is defined for $000008 to read one DSP word to the X memory.&lt;br/&gt;&lt;/code&gt;&lt;code class="jive-code"&gt;&lt;/code&gt;&lt;code class="jive-code"&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bcs&amp;#160;&amp;#160;&amp;#160;&amp;#160; DoReadCommand&amp;#160;&amp;#160; &lt;br/&gt;&lt;/code&gt;&lt;code class="jive-code"&gt;; If the C flag is set then the read command from SPI is executed.&lt;/code&gt; &lt;br/&gt;&lt;code class="jive-code"&gt;&lt;/code&gt;&lt;code class="jive-code"&gt;&lt;br/&gt;&lt;/code&gt;Please have a look to the uC (HC08) code to understand the entire communication.&lt;br/&gt;&lt;br/&gt;in publicVariables.h you find:&lt;br/&gt;&lt;br/&gt;/* These are the commands for the DSP communication */&lt;br/&gt;#define&amp;#160;&amp;#160; CMD_READ_FROM_DSP&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0x08&lt;br/&gt;#define&amp;#160;&amp;#160; CMD_WRITE_TO_DSP&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0x01&lt;br/&gt;&lt;br/&gt;These constants are used in the functions in DSP.c:&lt;br/&gt;&lt;br/&gt;static void vfnDSP_StateTx(void)&lt;br/&gt;...&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (DSP_HREQ_READY)&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; vfnSPI_SendWord(CMD_WRITE_TO_DSP);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; u8TxState = TX_STATE_ADDR;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br/&gt;...&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;and &lt;br/&gt;&lt;br/&gt;static void vfnDSP_StateRx(void)&lt;br/&gt;{&lt;br/&gt;...&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (DSP_HREQ_READY)&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; vfnSPI_SendWord(CMD_READ_FROM_DSP);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; u8RxState = RX_STATE_ADDR;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br/&gt;...&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/pre&gt;&lt;p&gt;regards&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:4bbd75ba-4db7-42c3-992a-369fa813d6d7] --&gt;</description>
      <pubDate>Fri, 11 Jun 2010 17:44:28 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/154206?tstart=0#154206</guid>
      <dc:date>2010-06-11T17:44:28Z</dc:date>
      <clearspace:dateToText>2 years, 11 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Using Symphony Studio to debug on-target?</title>
      <link>http://line6.com/support/message/126127?tstart=0#126127</link>
      <description>&lt;!-- [DocumentBodyStart:ebf0ae5a-fd1b-4738-a2bb-48da0951fcec] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;There's no code on the pedal from anyone else than me. I'm just following Angelo's recommendation to locate a bug in my own program. All other codes I can load into the ToneCore pedal are available as source code. So why worry?&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Best regards&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Christian&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:ebf0ae5a-fd1b-4738-a2bb-48da0951fcec] --&gt;</description>
      <pubDate>Sat, 06 Mar 2010 06:51:53 GMT</pubDate>
      <author>support@line6.com</author>
      <guid>http://line6.com/support/message/126127?tstart=0#126127</guid>
      <dc:date>2010-03-06T06:51:53Z</dc:date>
      <clearspace:dateToText>3 years, 2 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
  </channel>
</rss>

