\documentstyle{report}
\pagestyle{empty}
\begin{document}
\vspace{50mm}
\begin{description}
\item[Megabyte] At least one megabyte of directly addressable
random-access memory.
\item[Megapixel] A bitmapped display with 1 million displayed dots.
\item[MIPS] A processor with the same performance as a DEC VAX11/780.
Approximately 1 million user instructions per second.
\item[Personal] It may be multitasking, but it should be designed to be
used by one person `sitting in front of it'. It should not be a server.
\item[Networking] But it should be designed to communicate with other
machines and share data with them.
\end{description}
\clearpage
\vspace{1in}
\begin{center}
{\bf Typical Business Microcomputer from 1979\\}
\end{center}
\begin{tabbing}
\hspace{1in}\=\hspace{1.5in}\=\\
\>{\bf CPU}\>Zilog Z80, 4MHz\\
\>{\bf Memory}\>64Kbytes\\ 
\>{\bf Disks}\>2 off 8 inch floppies.\\
\>{\bf Display}\>80 * 24 text-only serial terminal.\\
\end{tabbing}
\vspace{1in}
\begin{center}
{\bf PERQ -- The first workstation\\}
\end{center}
\begin{tabbing}
\hspace{1in}\=\hspace{1.5in}\=\\
\>{\bf CPU}\>Custom designed 20 bit CPU, 1MIPS\\
\>{\bf Memory}\>256Kbytes -- 2 Mbytes\\
\>{\bf Disks}\>1 off 8" floppy,\\ 
\>\>1 off 12Mbyte or 24Mbyte Hard disk \\
\>{\bf Display}\>768*1024 pixel bitmapped display\\
\end{tabbing}
\clearpage
\vspace{2in}
\begin{verbatim}
for Y:=0 to (height-1) do
  for X:=0 to (width-1) do
    dest[X+destX,Y+destY]:=Op(src[X+srcX,Y+srcY],dest[X+destX,Y+destY]);
\end{verbatim}
\clearpage
\begin{verbatim}
write:  loc(BusWrite), data:= not tos,pop; {get data from caller}
          {It is easier to transmit the inverted data, hence the not here}
        bitcnt:=10; {8 bits to send}
        outimg:=0,iob(linkout); {and set up port image register}
        call(busdelay);
        data,goto(wrnext); {Set bytesign to bit 7 of the input data}
wrloop: data:=data+data; {shift data left 1 bit, set bytesign to next bit}
wrnext: if bytesign goto(wrzero);
        outimg:=outimg or sdaoutmask,iob(linkout); {if it's 1, set SDA
high}
wrzero: call(busdelay);
        call(sclhigh); {Pulse SCL to clock in the next bit}
        call(busdelay);
        outimg:=outimg and not scloutmask,iob(linkout);
        call(busdelay);
        outimg:=outimg and not sdaoutmask,iob(linkout); {set SDA low
again}
        call(busdelay);
        bitcnt:=bitcnt-1; {Decrement bit count}
        if neq goto(wrloop); {and round again}
        outimg:=outimg or sdaoutmask,iob(linkout);
          {set SDA high, ready for acknowledge pulse}
        call(sclhigh); {set SCL high}
        ackp:=0,iob(linkin); {and read acknowledge bit}
        iod and sdainmask;
        if eql goto(noack); {Set ackp register to ack bit}
        ackp:=1;
noack:  outimg:=outimg and not scloutmask,iob(linkout); {set SCL then SDA
low}

        call(busdelay);
        outimg:=outimg and not sdaoutmask,iob(linkout);
        call(busdelay);
        tos:=ackp,push,nextinst(0); {return acknowledge status to caller}
\end{verbatim}
\clearpage
\vspace{2in}
\begin{center}
{\Large \bf Internet Resources for the PERQ\\}
\end{center}
\vspace{1in}
\begin{description}
\item[Usenet Newsgroup :] alt.sys.perq
\item[WWW page :] http://www.access.digex.net/~rdd/PERQ.html
\item[ftp site :] ftp://ftp.digex.net/pub/access/rdd/perq/
\item[PERQ fanatics Mailing List :] perq-fanatics @ xenon.che.ilstu.edu
\item[Mailing list membership, etc :] perq-fanatics-request @ 
xenon.che.ilstu.edu
\end{description}
\end{document}

