% Content-encoding: UTF-8
\documentclass[ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage{multicol,babel}
\setcounter{secnumdepth}{0}
\setcounter{tocdepth}{0}

\begin{document}
\renewcommand{\figurename}{Tabelle}

\title{Kleine Helfer:$\!$ Dump, modulo base und mit Lineal}
\ifx\shorttitle\undefined\else
\shorttitle{DUMP mit Lineal}
\fi
\author{Adolf Krüger, Michael Kalus}
\maketitle

Das Wort dump listet Werte aus dem RAM auf. Beginnend bei der Startadresse holt es aufsteigend Byte für Byte aus dem Speicher und zeigt diese zeilenweise an. Vor jeder Zeile wird die Adresse angegeben, von der die Bytes stammen. Daneben wird dieselbe Bytefolge in ASCII-Zeichen wiedergegeben. 

\begin{multicols}{2}

So hat es sich eingebürgert. Nützlich finde ich die Darstellung der Werte passend zur verwendeten Zahlenbasis, wie sie in der Uservariablen base abgelegt ist. Und die Länge der Zeile ist dabei modulo base, das erleichtert die Orientierung. Ein Lineal über der Liste nummeriert die Position der Zelle. Es wird immer mindestens eine ganze Zeile angezeigt. Gewöhnlich belasse ich solche tools wie dump nicht in der Applikation, aber sie werden bei der Entwicklung benötigt und vorübergehend dazugeladen. Darum hat es sich bei mir eingebürgert, solch ein tool am Stück zu codieren, um nicht Gefahr zu laufen, die einzelnen Teile zu verlieren oder inkompatible Teile zu laden. Drum hier der Code unfaktorisiert als Modul. 

\end{multicols}

\vfill

\begin{quote}
\begin{listing}{1}
: dump ( addr n -- )
  cr cell 2* spaces
  over
  \ print a ruler
  base @ 0  do  i over + base @ mod cell .r  loop   2 spaces 
  base @ 0  do  i over + base @ mod    1 .r  loop   drop  
  \ dump bytes
  0 ?do  cr dup 0 cell 2* d.r space
         \ print line of bytes
         base @ 0 do  i over + c@ cell .r loop 
         space 
         \ print same bytes in ascii again
         base @ 0 do  i over + c@ 
           $7F and dup $20 < if  drop $2E then emit 
         loop 
         key?  if leave then 
         base @ +  
  base  @ +loop 
  cr drop ; 
\end{listing}
\end{quote}

\vfill

\begin{center}
\includegraphics[width=0.8\textwidth]{2009-03/rulerdump}
\end{center}

\vfill

\section{Links}
\url{http://www.forth-ev.de/wiki/doku.php/words:dump}



\end{document}
