%%HP: T(3)A(R)F(.); @ @ @ GENERATOR SIGNALU @ List ENVGNRT(Prog function); @ List ENVGNRT(List args); \<< ENVNORM @ {args} OBJ\-> @ 4. "WE" 2. 64. \<< \>> DROP @ "WE" 2. 64. \<< \>> @ Priznak "N" IF DUP @ "WE" "WE" 2. 64. \<< \>> "N" @ "N" "WE" "WE" 2. 64. \<< \>> POS @ 0.|1. "WE" 2. 64. \<< \>> THEN @ "WE" 2. 64. \<< \>> @ Bez prepoctu nezavisle promenne na radiany 1. @ 1. "WE" 2. 64. \<< \>> ELSE @ "WE" 2. 64. \<< \>> @ S prepoctem PICK3 @ 64. "WE" 2. 64. \<< \>> \pi @ \pi 64. "WE" 2. 64. \<< \>> / @ 64/\pi "WE" 2. 64. \<< \>> 2. @ 2. 64/\pi "WE" 2. 64. \<< \>> / @ 64/2\pi "WE" 2. 64. \<< \>> INV @ 2\pi/64 "WE" 2. 64. \<< \>> \->NUM @ 10.1859 "WE" 2. 64. \<< \>> END @ Priznak "P" SWAP @ "WE" 10.1859 2. 64. \<< \>> "P" @ "P" "WE" 10.1859 2. 64. \<< \>> POS @ paste 10.1859 2. 64. \<< \>> 0. @ vidx paste factor repeat period func \-> func period repeat factor paste vidx \<< period @ 64. 'repeat' @ 'repe 64. STO* 0. @ 0. repeat @ 128. 0. 1. @ 1. 128. 0. - @ 127. 0. @ Vypoctene vzorky signalu jsou ponechavany na stacku... START factor @ 10.1859 vidx @ 0. 10.1859 * @ xval func EVAL @ yval 'vidx' @ 'vidx' yval INCR @ 1. yval IF paste @ 1. 1. yval THEN @ 1. yval IF period @ 64. 1. yval \>= @ 0. yval THEN @ yval 0. @ 0. yval 'vidx' @ 'vidx' 0. yval STO @ yval END ELSE DROP @ yval END NEXT @ y[128] y[127] ... y[1] @ ...jsou-li vsechny, ulozi se do objektu List repeat @ 128. y[128] y[127] ... y[1] \->LIST @ {yval} \>> \>>