%%HP: T(3)A(R)F(.);
@ @ @  VSTUPNI BOD VYPOCTU A ZOBRAZENI
\<<
@ Event. smazani R0, R1, R2
  0.			@ znacka
  {R0 R1 R2 GdB}
  1.
  \<<
    IF { 0. 28. } OVER VTYPE POS
    THEN		@ je-li to typ REAL nebo INT...
      IF DUP RCL 0. >	@ ...a je ve spravnem rozsahu...
      THEN		@ ...nebude se mazat
        DUP RCL I\->R SWAP STO
      END
    END
  \>>
  DOLIST
  IF DUP TYPE 0. \=/	@ neni-li to znacka, ale LIST...
  THEN
    PURGE		@ ...smazat
  END
  DROP			@ znacka
@ Typ potenciometru
  IF 'GdB' VTYPE 0. <	@ neexistuje-li...
  THEN
    \<< \>>			@ ...bude prubeh linearni
    { COEFB COEFA } PURGE
  ELSE
    \<< COEFB * 1. + LOG COEFA * \>>
    GdB 20. / DUP ALOG	@ [dB] --> Gain
    1. - 'COEFB' STO
    INV  'COEFA' STO
  END
  'POS2VAL' STO
@ Event. nastaveni R0
  IF 'R0' VTYPE 0. <	@ neexistuje-li...
  THEN
    1. 'R0' STO		@ ...nastavit na 1.
  END
@ Spolecne hodnoty PPAR A TPAR
  (0., 0.) (1., 1.) PDIM
  {0. .05 0. 2. 0. TAB} 'TPAR' STO
@ Smazat predchozi a vykreslit osy
  ERASE
  {0.1 0.2}
  ATICK
  DRAX
@ Prubeh bez R1, R2
  RCLF			@ uschovat FLAGS
  # 5 RES		@ vykreslovat jen kazdy 5. pixel
  -31 SF		@ nespojovat krivku
  'POS2VAL(X)' STEQ
  DRAW
@ Prubeh s R1, R2
  0. RES		@ vykreslovat vse...
  -31 CF		@ ...a spojite
  'CALCVAL(X)' STEQ
  DRAW
  STOF			@ obnovit FLAGS
@ Hodnoty odporu
    {R0 R1 R2}
    1.
    \<<
      IF DUP VTYPE 0. \>=	@ existuje-li promenna
      THEN
        DUP		@	'R1'	'R1'
        \->STR 2. OVER SIZE 1. - SUB "=" +
        SWAP		@	'R1'	"R1="
        RCL		@	470.	"R1="
        \<-trim EVAL	@	470	"R1="
        \->STR		@	"470"	"R1="
        +		@	"R1=470"
        \<-v2g EVAL
      ELSE
        DROP
      END
    \>>
    78.			@ \<-ypos
@ @ @  Prevod text.retezce na GROB a pridani do PICT
@ void \<-v2g(String text);
    \<<
      80 FC?		@	0.|1.	"R0=470."
      DUP		@	0.|1.	0.|1.	"R0=470."
      NOT		@	1.|0.	0.|1.	"R0=470."
      DUP		@	1.|0.	1.|0.	0.|1.	"R0=470."
      +			@	2.|0.	0.|1.	"R0=470."
      8.		@	8.	2.|0.	0.|1.	"R0=470."
      +			@	10.|8.	0.|1.	"R0=470."
      '\<-ypos' SWAP	@	10.|8.	'\<-ypos'	0.|1.	"R0=470."
      STO-		@	0.|1.	"R0=470."
      \->GROB		@	grob
      PICT		@	pict	grob
      OVER SIZE DROP	@	#width	pict	grob
      NEG #131d +	@	#xpos	pict	grob
      \<-ypos R\->B 2. 	@	2.	#ypos	#xpos	pict	grob
      \->LIST		@	{#x #y}	pict	grob
      ROT		@	grob	{#x #y}	pict
      GOR
    \>>
@ @ @  Eventualni odstraneni koncoveho znaku '.'
@ Integer \<-trim(Real);
    \<<
      IFERR R\->I
      THEN
      END
    \>>
    \-> \<-ypos \<-v2g \<-trim
    \<<
      DOLIST
      IF 'GdB' VTYPE 0. \>=
      THEN		@ je to logaritmicky prubeh
        "G=" GdB	@	50.	"G="
        \<-trim EVAL	@	50	"G="
        \->STR		@	"50"	"G="
        + "dB" +	@	"G=50dB"
        \<-v2g EVAL
      END
    \>>
@ Pockat na klavesu
  0
  IFERR
    WAIT
  THEN
  END
  DROP
\>>
