%%HP: T(3)A(R)F(.);
@ @ @  DETEKCE ZMEN V ZADANI
@ Real [List] Binary ENVXCHG(List args);
\<<
    DUP			@	{args}	{args}
    SIZE		@	oidx	{args}
    # 0h		@	#0h	oidx	{args}
    \-> optidx optbit
    \<<
      DUP		@	{args}	{args}
      optidx		@	oidx	{args}	{args}
      GET		@	'W'	{args}
      \->STR		@	"W"	{args}
      ENVOPTS		@	#4h	"W"	{args}
      UNROT		@	"W"	{args}	#4h
      optidx		@	oidx	"W"	{args}	#4h
      SWAP		@	"W"	oidx	{args}	#4h
      PUT		@	{args}	#4h
      'ARGUMS'		@	'ARGUM	{args}	#4h
      DUP		@	'ARGUM	'ARGUM	{args}	#4h
@ Pokud jsou zadne minule argumenty...
      IF
        VTYPE		@	5.	'ARGUM	{args}	#4h
        5.		@	5.	5.	'ARGUM	{args}	#4h
        ==		@	1.	'ARGUM	{args}	#4h
      THEN		@	'ARGUM	{args}	#4h
@ ...jsou nacteny a zpracovany
        DUP		@	'ARGUM	'ARGUM	{args}	#4h
        RCL		@	{oval}	'ARGUM	{args}	#4h
        optidx		@	oidx	{oval}	'ARGUM	{args}	#4h
        DUP2		@	oidx	{oval}	oidx	{oval}	'ARGUM	{args}	#4h
        GET		@	"WE	oidx	{oval}	'ARGUM	{args}	#4h
        ENVOPTS		@	#Ch	"WE"	oidx	{oval}	'VALU	{args}	#4h
        NIP		@	#Ch	oidx	{oval}	'VALU	{args}	#4h
        DUP		@	#Ch	#Ch	oidx	{oval}	'VALU	{args}	#4h
        # Ch		@	#Ch	#Ch	#Ch	oidx	{oval}	'VALU	{args}	#4h
        AND		@	#Ch	#Ch	oidx	{oval}	'VALU	{args}	#4h
        'optbit'	@	'optbi	#Ch	#Ch	oidx	{oval}	'VALU	{args}	#4h
        STO		@	#Ch	oidx	{oval}	'VALU	{args}	#4h
@ Kontrolni soucet pouze pro options "P" a "N"
        # 3h		@	#3h	#Ch	oidx	{oval}	'VALU	{args}	#4h
        AND		@	#0h	oidx	{oval}	'VALU	{args}	#4h
        PUT		@	{oval}	'VALU	{args}	#4h
        BYTES		@	123.	#E12Dh	'ARGUM	{args}	#4h
        2.		@	2.	123.	#E12Dh	'ARGUM	{args}	#4h
        \->LIST		@	{ockv}	'ARGUM	{args}	#4h
      ELSE
@ Nejsou zadne minule argumenty
        { }		@	{ockv}	'ARGUM	{args}	#4h
      END
      PICK3		@	{args}	{ockv}	'ARGUM	{args}	#4h
      ROT		@	'ARGUM	{args}	{ockv}	{args}	#4h
      STO		@	{ockv}	{args}	#4h
@ Zpracovani aktualnich argimentu
      UNROT		@	{args}	#4h	{ockv}
      optidx		@	oidx	{args}	#4h	{ockv}
      PICK3		@	#4h	oidx	{args}	#4h	{ockv}
@ Kontrolni soucet pouze pro options "P" a "N"
      # 3h		@	#3h	#4h	oidx	{args}	#4h	{ockv}
      AND		@	#0h	oidx	{args}	#4h	{ockv}
      PUT		@	{nval}	#4h	{ockv}
      BYTES		@	123.	#E12Dh	#4h	{ockv}
      2.		@	2.	123.	#E12Dh	#4h	{ockv}
      \->LIST		@	{nckv}	#4h	{ockv}
      ROT		@	{ockv}	{nckv}	#4h
      SAME NOT		@	1.|0.	#4h
@ Kontrolni soucty porovnany, jeste priznaky "W" a "E"
      OVER		@	#4h	1.|0.	#4h
      # Ch		@	#Ch	#4h	1.|0.	#4h
      AND		@	#0h	1.|0.	#4h
      optbit		@	#Ch	#0h	1.|0.	#4h
    \>>
    OVER		@	#0h	#Ch	#0h	1.|0.	#4h
    XOR			@	#Ch	#0h	1.|0.	#4h
    AND			@	#0h	1.|0.	#4h
    B\->R 		@	0.	1.|0.	#4h
@ Zmenilo se neco?
    IF
      OR		@	1.|0.	#4h
    THEN		@	#4h
      ARGUMS		@	{args}	#4h
      1.		@	1.	{args}	#4h
    ELSE		@	#4h
      0.		@	0.	#4h
    END
\>>
