\documentclass[a4paper]{article}

\usepackage[utf-8]{inputenc}
\usepackage{url}
\input{epsf}
\usepackage{epsfig}
\usepackage{multicol}
\usepackage{supertabular}

%\setlength{\parindent}{0cm}
%\setlength{\textwidth}{16cm}
%\setlength{\oddsidemargin}{0cm}
%\setlength{\topmargin}{-1cm}
%\setlength{\headheight}{0cm}
%\setlength{\headsep}{0cm}
%\setlength{\textheight}{25.7cm}
%\xepsbox{file}{width}
\newcommand{\xepsbox}[1]{\includegraphics[width=50mm]{2006-04/forth-tagung07/eps/#1}}
\newcommand{\meta}[1]{\mbox{$<\!\!\mathrm{#1}\!\!>$}}
\newcommand{\name}{\meta{name}}
\def\colsa{p{1cm}p{4cm}}
\def\colsb{p{2.4cm}p{4cm}}
\def\colsc{p{1.5cm}p{4cm}}

\begin{document}
%\thispagestyle{empty}
%\pagestyle{empty}

\begin{footnotesize}
\section*{\Large amforth 1.3 Referenz}

% up 0 1ms >< cmove> i! i@ i sp! sp@ rp! rp@ +! rshift lshift 1- 1+ not xor or
% and /mod 2* 2/ invert * + - 0> 0< > < 0= = 0<> <> r@ >r r> rot drop over swap
% ?dup dup c@ c! ! @ e@ e! abort execute exit noop ver interpret .s idump depth 
% rp0 sp0 compile immediate recurse ( \ user constant variable [ ] ; : does>
% create <resolve <mark >resolve >mark pause 'pause quit find word number char
% endcase endof of case +loop loop do again until repeat while begin then else
% if throw catch handler ['] ' words type itype ." digit accept . sign #> #s #
% <# hold count space cr max min abs mod / negate 'turnkey heap edp bl hex 
% decimal , allot here head dp key? 'key? key 'key emit? 'emit? emit 'emit hld pad
% tib #tib >in base state literal rx0? rx0 tx0? tx0 intvector intcounter 

\begin{multicols}{3}

\subsection*{Stack Manipulation}
\begin{tabular}{\colsa}
\verb|drop|       & \verb|( n -- )| \\
\verb|dup|        & \verb|( n -- n n )| \\
\verb|swap|       & \verb|( n1 n2 -- n2 n1)| \\
\verb|over|       & \verb|( n1 n2 -- n1 n2 n1 )| \\
\verb|rot|        & \verb|( n1 n2 n3 -- n2 n3 n1 )| \\
\verb|?dup|       & \verb/( n1 -- [ n1 n1 ] | 0 )/ \\
\verb|depth|      & \verb|( -- n )| \\
\verb|>r|         & \verb|( n -- )| \\
\verb|r>|         & \verb|( -- n )| \\
\verb|r@|         & \verb|( -- n )| \\
\end{tabular}

\subsection*{Vergleiche}
\begin{tabular}{\colsa}
\verb|>|          & \verb|( n1 n2 -- flag )| \\
\verb|<|          & \verb|( n1 n2 -- flag )| \\
\verb|=|          & \verb|( n1 n2 -- flag )| \\
\verb|<>|         & \verb|( n1 n2 -- flag)| \\
\verb|0>|         & \verb|( n1 -- flag )| \\
\verb|0<|         & \verb|( n1 -- flag )| \\
\verb|0=|         & \verb|( n -- flag )| \\
\verb|0<>|        & \verb|( n -- flag )| \\
\end{tabular}

\subsection*{Arithmetisch und logisch}
\begin{tabular}{\colsa}
\verb|*|          & \verb|( n1 n2 -- n3 )| \\
\verb|+|          & \verb|( n1 n2 -- n3 )| \\
\verb|-|          & \verb|( n1 n2 -- n3 )| \\
\verb|/|          & \verb|( u1 u2 -- u3 )| \\
\verb|/mod|       & \verb|( u1 u2 -- u3 u4 ) | \\
\verb|0|          & \verb|( -- 0 )| \\
\verb|1+|         & \verb|( n1 -- n2 )| \\
\verb|1-|         & \verb|( n1 -- n2 )| \\
\verb|2*|         & \verb|( n1 -- n2 )| \\
\verb|2/|         & \verb|( n1 -- n2 )| \\
\verb|abs|        & \verb|( n1 -- u1 )| \\
\verb|invert|     & \verb|( n1 -- n2 )| \\
\verb|lshift|     & \verb|( n1 n2 -- n3 )| \\
\verb|max|        & \verb|( n1 n2 -- u1 )| \\
\verb|min|        & \verb|( n1 n2 -- u1 )| \\
\verb|mod|        & \verb|( n1 n2 -- n3 )| \\
\verb|negate|     & \verb|( n1 -- n2 )| \\
\verb|or|         & \verb|( n1 n2 -- n3 )| \\
\verb|rshift|     & \verb|( n1 n2 -- n3 )| \\
\verb|xor|        & \verb|( n1 n2 -- n3 )| \\
\verb|and|        & \verb|( n1 n2 -- n3 )| \\
\verb|not|        & \verb|( flag1 -- flag2 )| \\
\verb|><|         & \verb|( n1 -- n2 )| \\
\end{tabular}
\medskip

\subsection*{Speicher}
\begin{tabular}{\colsa}
\verb|!|          & \verb|( n addr -- )| \\
\verb|@|          & \verb|( addr -- n )| \\
\verb|+!|         & \verb|( n addr -- )| \\
\verb|c!|         & \verb|( c addr -- )| \\
\verb|c@|         & \verb|( addr - c1 )| \\
\verb|cmove>|     & \verb|( addr-from addr-to n -- )| \\
\verb|count|      & \verb|( addr -- addr+1 n )| \\
\verb|e!|         & \verb|( n addr -- )| \\
\verb|e@|         & \verb|( addr -- n )| \\
\verb|i!|         & \verb|( n addr -- )| \\
\verb|i@|         & \verb|( addr -- n1 )| \\
\end{tabular}

\subsection*{Kontrollstrukturen}
\begin{tabular}{\colsa}
\verb|case|       & \verb|( -- 0 )| \\
\verb|do|         & \verb|( -- addr )| \\
\verb|else|       & \verb|( addr1 -- addr2 )| \\
\verb|endcase|    & \verb|( flag -- )| \\
\verb|endof|      & \verb|( addr1 -- addr2 )| \\
\verb|if|         & \verb|( x -- )| \\
\verb|loop|       & \verb|( addr -- )| \\
\verb|of|         & \verb|( -- )| \\
\verb|repeat|     & \verb|( -- )| \\
\verb|then|       & \verb|( -- )| \\
\verb|until|      & \verb|( flag -- )| \\
\verb|while|      & \verb|( flag -- )| \\
\verb|again|      & \verb|( -- )| \\
\verb|begin|      & \verb|( -- )| \\
\verb|execute|    & \verb|( xt -- )| \\
\verb|exit|       & \verb|( -- )| \\
%\verb|(+loop)|    & \verb|( n1 -- )| \\
%\verb|(?branch)|  & \verb|( flag -- )| \\
%\verb|(branch)|   & \verb|( -- )| \\
%\verb|(do)|       & \verb|( limit counter -- )| \\
%\verb|(loop)|     & \verb|( -- )| \\
%\verb|(unloop)|   & \verb|( -- )| \\
%\verb|+loop|      & \verb|( addr -- )| \\
\verb|i|          & \verb|( -- n )| \\
\verb|recurse|    & ( i*x -- j*x )\\
\end{tabular}

\subsection*{Zeichen Ein/Ausgabe}
\begin{tabular}{\colsa}
% \verb|(.")|       & \verb|( -- )| \\
\verb|cr|         & \verb|( -- )| \\
\verb|emit|       & \verb|( c -- )| \\
\verb|emit?|      & \verb|( -- flag )| \\
\verb|key|        & \verb|( -- c )| \\
\verb|key?|       & \verb|( -- flag )| \\
\verb|itype|      & \verb|( addr1 -- addr2 )| \\
\verb|space|      & \verb|( -- )| \\
\verb|type|       & \verb|( addr n -- )| \\
\verb|#tib|       & \verb|( -- addr )| \\
\verb|tib|        & \verb|( -- addr )| \\
\verb|accept|     & \verb|( addr n1 -- n2 )| \\
\verb|char| \meta{c}   & \verb|( -- c )| \\
\verb|."|  $\mathrm{text}$\verb|"|  & \verb|( -- )| \\
\verb|bl|         & \verb|( -- 32 )| \\
\end{tabular}
\medskip

\subsection*{Zahlen Ein/Ausgabe}
\begin{tabular}{\colsa}
\verb|#|          & \verb|( n1 -- n2 )| \\
\verb|#>|         & \verb|( n1 -- addr n2 )| \\
\verb|#s|         & \verb|( n1 -- 0 )| \\
\verb|<#|         & \verb|( -- )| \\
\verb|decimal|    & \verb|( -- )| \\
\verb|hex|        & \verb|( -- )| \\
\verb|hld|        & \verb|( -- addr )| \\
\verb|hold|       & \verb|( c -- )| \\
\verb|sign|       & \verb|( n -- )| \\
\verb|base|       & \verb|( -- addr )| \\
\verb|digit|      & \verb|( c base -- n flag )| \\
\verb|number|     & \verb|( addr -- n )| \\
\verb|.|          & \verb|( n -- )| \\
\end{tabular}


\subsection*{Definierende Worte}
\begin{tabular}{\colsb}
\verb|constant| \name  & \verb|( n -- )| \\
$\,\!$\phantom{\texttt{constant} }\name & \verb|( -- n )| \\
\verb|user| \name      & \verb|( n -- )| \\
$\,\!$\phantom{\texttt{user}} \name & \verb|( -- addr )| \\
\verb|variable|  \name & \verb|( -- )| \\
$\,\!$\phantom{\texttt{variable}} \name & \verb|( -- addr )| \\
\verb|create| \name    & \verb|( -- )| \\
$\,\!$\phantom{\texttt{create}} \name & \verb|( -- addr )| \\
\verb|does>|      & \verb|( -- )| \\
\verb|:| \name         & \verb|( -- )| \\
\verb|;|          & \verb|( -- )| \\
\end{tabular}

\begin{tabular}{\colsc}
% \verb|(create)|   & \verb|( addr --  )| \\
%\verb|(user)|     & \verb|( -- addr )| \\
%\verb|(variable)| & \verb|( -- addr )| \\
% \verb|(constant)| & \verb|( -- n )| \\
\verb|>mark|      & \verb|( -- addr )| \\
\verb|>resolve|   & \verb|( addr -- )| \\
\verb|throw|      & \verb|( n -- )|  \\
\verb|catch|      & \verb|( xt -- )| \\
\verb|abort|      & \verb|( nx -- )| \\
\end{tabular}

\subsection*{Wörterbuch}
\begin{tabular}{\colsc}
\verb|'| \name         & \verb|( -- xt )| \\
\verb|find|       & \verb/( addr --  addr 0 | xt flag )/ \\
\end{tabular}


\subsection*{Compiler}
\begin{tabular}{\colsc}
\verb|compile| \name   & \verb|( -- )| \\
\verb|word|       & \verb|( c -- addr )| \\
\verb|[']| \name       & \verb|( -- addr )| \\
\verb|allot|      & \verb|(n -- )| \\
\verb|immediate|  & \verb|( -- )| \\
\verb|literal| \meta{n}   & \verb|( n -- )| \\
\verb|[|          & \verb|( --  )| \\
\verb|]|          & \verb|( --  )| \\
\verb|state|      & \verb|( -- addr )| \\
\verb|,|          & \verb|( x -- )| \\
% \verb|(literal)|  & \verb|( -- n1 )| \\
\end{tabular}
\medskip

\subsection*{Systemzeiger}
\begin{tabular}{\colsc}
\verb|dp|         & \verb|( -- eaddr )| \\
\verb|edp|        & \verb|( -- eaddr )| \\
\verb|head|       & \verb|( -- eaddr )| \\
\verb|heap|       & \verb|( -- eaddr )| \\
\verb|here|       & \verb|( -- addr  )| \\
\verb|up|         & \verb|( -- addr )| \\
\verb|'turnkey|   & \verb|( -- eaddr )| \\
\verb|handler|    & \verb|( -- addr )| \\
\verb|'emit|      & \verb|( -- addr )| \\
\verb|'emit?|     & \verb|( -- addr )| \\
\verb|'key|       & \verb|( -- addr )| \\
\verb|'key?|      & \verb|( -- addr )| \\
\end{tabular}

\subsubsection*{Stacks}
\begin{tabular}{\colsc}
\verb|rp!|        & \verb|( n  -- )| \\
\verb|rp0|        & \verb|( -- addr )| \\
\verb|rp@|        & \verb|(  -- n )| \\
\verb|sp!|        & \verb|( addr -- )| \\
\verb|sp0|        & \verb|( -- addr )| \\
\verb|sp@|        & \verb|(  -- n )| \\
\end{tabular}

\subsection*{Sonstiges}
\begin{tabular}{\colsc}
\verb|noop|       & \verb|( -- )| \\
\verb|pause|      & \verb|( -- )| \\
\verb|quit|       & \verb|( -- )| \\
\verb|interpret|  & \verb|(  -- )| \\
\verb|words|      & \verb|( -- )| \\
\verb|idump|      & \verb|( addr len -- )| \\
\verb|pad|        & \verb|( -- addr )| \\
\verb|(|          & \verb|( -- )| \\
\verb|\|          & \verb|( -- )| \\
\verb|.s|         & \verb|( -- )| \\
\verb|1ms|        & \verb|(  -- )| \\
\verb|ver|        & \verb|( -- )| \\
\verb|>in|        & \verb|( -- addr )| \\
\end{tabular}

\end{multicols}
\end{footnotesize}
Die aktuelle Version von amforth findet sich jeweils unter \url{http://amforth.sourceforge.net/}.

\end{document}
 

