Le pire c'est que certaines instructions comme MUL sont accepte par l'assembleur parce qu'elle sont "for future revisions" qui n'existeront jamais et le résultat c'est que ton code s'exécute mais fait des choses bizarres.. J'ai passé un certain temps là dessus pour rien...

Enfin le coup de "pas d'adressage indirect" est chiant, même si on peu via des instructions faites pour le SMC

MOVS > Move Source
MOVI > Move Instruction
MOVD > Movz Destination
Une instruction est un mot de 32 bit, la mémoire interne du cog est adressée en mot de 32bit, et les champs source et destination sont commun à toutes les instructions, et ces 3 instructions sont là pour spécialement modifier ces champs dans une instruction à une adresse donnée. Seul probleme le Propeller à un pipeline, petit: une instruction, mais il en a un, donc après du SMC il faut au moins une instruction entre le MOVx et l'instruction modifié pour qu'elle soit correctement lu....

Et pour faire un accès indirect ben pas le choix on faut éditer le champ source ou destination d'une instruction normale.....

Mais c'était fort interessant a faire, le code d'origine est assez tortueux ceci dit, je n'en ai pas encore compris tout le mécanisme, sur la fonction G, je suis sur de "note" et "x", mais ce que j'ai appelé "octave" etait juste un guess a force de tester le bousin, mais j'ai l'impression que c'est un poil plus compliqué que ca..
note n'est pas exactement la note a jouer car suivant l'état de i, la note va etre choisie entre les deux rampes, mais c'est bel et bien le choix de la note.
X est en fait l'element qui va définir la forme d'onde finale, le canal 1 est carré parce que x est toujours égal a 1, mais dans le cadre des 3 autres canaux, c'est un peu plus compilé parce que plus le temps passe plus le canal sera quelque proche d'une dent de scie, en commençant par du carré, et plus le temps passe plus on ajoute des paliers.
Mais octave est utilisé pour diviser la valeur récupéré par la note tiré de la rampe (note multiplié par i au passage...

)
En fait fait interessant, le fait de multiplier par i genere un signal en dent de scie qui va etre apres limité par "x" (et 3) et tranformé a un signal carré
C'est simple et super compliqué a la fois

Edit: Correction d'auto carottes