code: protected int /* reg12 */output___T() {
  		int /* reg24 */msb = ((ring_mod != 0) ? accumulator
  				^ sync_source.accumulator : accumulator) & 0x800000;
  		return (((msb != 0) ? ~accumulator : accumulator) >> 11) & 0xfff;
  	}
docs: Triangle: The upper 12 bits of the accumulator are used. The MSB is used
  to create the falling edge of the triangle by inverting the lower 11
  bits. The MSB is thrown away and the lower 11 bits are left-shifted (half
  the resolution, full amplitude). Ring modulation substitutes the MSB with
  MSB EOR sync_source MSB.
  
  @return triangle