====== pick ======
In ANS ist ''0 PICK'' aquivalent zu ''DUP'' (gforth).
''PICK'' wird gewöhnlich low level codiert. Das Beispiel in high level forth zeigt das Verhalten des Stack. 
\ pick nth item from stack. top of stack is x0 befor n was placed there.
: pick  ( n -- xn ) 
  1+ cells sp@ + @ ;
In gforth wächst der Stack nach unten in Richtung absteigender Adressen um je eine cell pro item. Die älteren items haben daher die höhere Adresse.
screenshot:
66 55 44 33 22 11 00  ok
drop sp@ . .s 21028840 <6> 66 55 44 33 22 11  ok
drop sp@ . .s 21028844 <5> 66 55 44 33 22  ok
drop sp@ . .s 21028848 <4> 66 55 44 33  ok
drop sp@ . .s 21028852 <3> 66 55 44  ok
drop sp@ . .s 21028856 <2> 66 55  ok
drop sp@ . .s 21028860 <1> 66  ok
drop sp@ . .s 21028864 <0>  ok
drop sp@ . .s 
*the terminal*:63: Stack underflow
drop sp@ . .s
^^^^
Backtrace:
In Forth79 war ''1 PICK'' aquivalent zu ''DUP'' (MVP-Forth). 
Es waren 8-bit Maschinen, das Forthwort war 16 Bit breit, daher genügte immer ''2*'' statt ''cells''.
\ pick nth item from stack. top of stack is x1 befor n was placed there.
: pick  ( n -- xn ) 
  dup 1 < abort" PICK ARGUMENT < 1"
  2* sp@ + @ ;
----
Zum ausprobieren:
:  dup ( x0-- x0 x0 ) 0 pick ;
: 2dup ( x1 x0 -- x1 x0 x1 x0 ) 1 pick 1 pick ;
: 3dup ( x2 x1 x0 -- x2 x1 x0 x2 x1 x0 ) 2 pick 2 pick 2 pick ;
\ usw.