\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 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}