From: arthur@turing.ac.uk (Arthur van Hoff)
Newsgroups: comp.lang.postscript
Subject: PDB 2.1.1 -- ANSI-C to PostScript compiler
Date: 26 Jan 93 18:50:49 GMT
Organization: The Turing Institute Ltd., Glasgow, Scotland


Hi PostScript Hackers,

PdB version 2.1.1 (ANSI-C to PostScript compiler) is now available
via anonymous ftp from the following sites:
	src.doc.ic.ac.uk (146.169.2.1)	in computing/vendor/turing.com
	ftp.uu.net (192.48.96.9)	in graphics/NeWS
	turing.com (192.133.90.28) 	in pub (very slow link)

The following files:
	pdb2.1.1-README		-- this message
	pdb2.1.1-sun4.tar.Z	-- SPARC binaries and NeWS headers
	pdb2.1.1-rs6000.tar.Z	-- RS6000 binaries

There is no more need to write PostScript! Start using PdB right now!
PdB is an optimizing compiler to compile ANSI-C (like) code into Adobe
compatible PostScript. It includes executables, examples and many 
useful header files.

New features since version 2.1 are:
- GhostScript compatible
- NeWS support is now optional

The release of version 2.1.1 includes:
- Binaries for Sun SPARC station and IBM RS6000
- Produces PostScript level I
- Include files for Abobe PostScript level I
- Plenty of examples
- Compiler test suite
- Reference manual (PostScript)
- UNIX manual pages (nroff)

NeWS support in version 2.1.1 for SPARC stations:
- Include files for NeWS upto version 3.1
- Include files for TNT upto version 3.1
- Support NeWS classing in a C++ manner
- Support for CPS OpenWindows upto version 3.1
- NeWS/OpenWindows test suite

Below are some examples of PdB code together with the
PostScript produced by the compiler.

Have fun,

	Arthur van Hoff
	pdb@turing.com

################################
Code to draw a star shape in PdB
################################

#include <graphics.h>
 
void starpath(int ang)
{
        int i;
 
        newpath();
        moveto(100,100);
        for (i = 1 ; i <= (int)(360 / ang) ; i++) {
                rotate(180 + ang);
                rlineto(100,0);
        }
        setgray(0);
        stroke();
}

########################
Verbatim Compiler output
########################

/starpath {
  % int --
  newpath 100 100 moveto 1 360 2 index div cvi exch sub 1 add 0 max {
    dup 180 add rotate 100 0 rlineto
  } repeat
  pop 0 setgray stroke
} def

###########################
Code for bubble-sort in PdB
###########################

#include <postscript.h>
 
/******************************************************
 * Bubble sort (page 66)
 * From: Algorithms + Data Structures = Programs
 *       Nicklaus Wirth
 */
 
void bubblesort(int *a)
{
        int i, j;
 
        for (i = length(a)-1 ; i > 1 ; i--)
                for (j = 0 ; j < i ; j++)
                        if (a[j] > a[j+1]) {
                                int x = a[j+1];
                                a[j+1] = a[j];
                                a[j] = x;
                        }
}

########################
Verbatim Compiler output
########################

/bubblesort {
  % int * --
  dup length 1 sub -1 2 {
    0 1 3 -1 roll 1 sub {
      2 copy get 2 index 2 index 1 add get gt {
        2 copy 1 add get 2 index 2 index 1 add 4 index 4 index get put
        2 index 3 1 roll put
      } {pop} ifelse
    } for
  } for
  pop
} def

--

	Arthur van Hoff 
	The Turing Institute Limited
	36 North Hanover Street, 
	G1 2AD Glasgow, Scotland

	Tel: +44 41 552 8858 or +44 41 552 6400
	Fax: +44 41 552 2985
	Email: arthur@turing.com

	The opinions expressed in this message are not 
	necessarily those of The Turing Institute Limited.