I am trying to implement a FM synthesis operator with feedback using a phase accumulator in C. In Tomisawa, an original patent , the phase accumulator getting into the adder for both negative and positive indices, from -2 ^ (n-1} in the phase of the sine wave from -pi to 2 ^ (n-1) in the pi phase. For simplicity, for example, I would use a phase accumulator that takes into account only positive values, using the upper bytes of an unused 32-bit integer as an index in the search for the sine table.
I experimented with this, and unfortunately, I cannot get the algorithm to generate the expected results when using feedback. Adding the sine wave output to the phase battery should result in a sawtooth waveform, but I cannot figure out how to properly add the sine wave output (which is a 16-bit int signature) for an unsigned phase battery to create it. Any suggestions would be appreciated.
Edit:
Some refinements, probably in order. Here are some diagrams from the original Tomisawa:


When both a phase battery and a sinusoidal signal are signed, the algorithm is simple enough to implement. The phase battery starts at -1 and runs up to 1, and the sine wave output is also between -1 and 1. In Python, the algorithm looks something like this to generate 1000 samples:
table = [] feedback = 0.25 accumulator = -1 for i in xrange(1000): output = math.sin(math.pi*(accumulator + feedback*output) table[i] = output accumulator += 0.005 if accumulator > 1: accumulator = -1
Which creates an output that looks like this:

I am trying to adapt this algorithm to C. In C for computational efficiency, I would like the phase battery to be a 32-bit unsigned integer rather than a signed integer. Thus, I can use the first two bits of the high byte of the battery as a quadrant index, and the second high byte as an index in an array of 256 16-bit sine values for a sine table of size 1024. How:
XXXXXXQQ.IIIIIIII.XXXXXXXX.XXXXXXXX ^^ ^^^^^^^^ quadrant index
My problem is that it is difficult for me to adapt the FM algorithm as indicated for an unsigned phase battery. If the phase storage device is an unsigned 32-bit int, and the output of the sinusoidal table is a 16-bit integer (signed or unsigned), then how can I adapt the algorithm, as shown in the patent, and the above Python code to work with this format, and make the same exit?