🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.postscript
Article #1149

Postscript <-> eexec conversion programs

#1149
From: Carsten Wiethoff
Date: Tue, 03 Oct 1989 12:58
122 lines
3352 bytes
Hi!

For all who have missed my description of the eexec-algorithm some
time ago (or who were not able to make a program from it ;-) I post
two little C-programs that convert postscript to eexec format and
vice versa.
ps2eexec.c is especially useful to convert machine code using the cexec
operator to eexec format.

BTW it might be interesting to know that this algorithm (using different
initial values) is used in the Adobe font format as well. So if these rumours
about Adobe publishing their font format are true, we should see a similar thing
from Adobe soon.

This is ps2eexec.c:
----------------------------------- cut here ----------------------------
/* Quickie to convert postscript from stdin to eexec format on stdout */

#include <stdio.h>

static unsigned short buffer = 0xd971;
static unsigned long startup = 0x00000000; /* or whatever you want */

main()
{
  unsigned char input;
  unsigned char output;
  int init = 4;
  int i;
  int result;

  printf("%08x",startup);
  for (i=0;i<4;++i)
    {
      input = (startup >> ((3-i)*8));
      buffer = (input + buffer) * 0xce6d + 0x58bf;
    }  

  for(;;)
    {
      for (i=0;i<(32-init);++i)
	{
	  result = getchar();
	  if (result == EOF)
	    break;
	  output = (input ^ (buffer>>8));
	  buffer = (output + buffer) * 0xce6d + 0x58bf;
	  printf("%02x",output);
	}
      init = 0;
      printf("\n");
      if (input == EOF)
	break;
    }
}
----------------------------- cut here ----------------------------------

This is eexec2ps.c:
------------------------------ cut here ----------------------------------

/* Quickie to convert eexec format from stdin to postscript on stdout */

#include <stdio.h>

/* Written by Carsten Wiethoff 1989 */
/* You may do what you want with this code, 
   as long as this notice stays in it */

static unsigned short buffer = 0xd971;

main()
{
  unsigned int input;
  char output;
  int ignore = 4;
  int result;

  do
    {
      result = scanf(" %2x",&input);
      if ( (result == EOF) || (result == 0) )
	break;
      output = input ^ (buffer>>8);
      buffer = (input + buffer) * 0xce6d + 0x58bf;
      if ( ignore > 0 ) 
	{
	  ignore--;
	}
      else
	{
	  printf("%c",output);
	}
    } while (1);
}
      
-------------------------------- cut here --------------------------------      





				Carsten Wiethoff
				c/o Frank Kardel

				Friedrich-Alexander Universitaet
				Erlangen-Nuernberg
				
				CS Department IMMD IV
				Martensstrasse 1
				D-8520 Erlangen
				---------------
				West Germany

Voice: +49/(0)9131/85-7908
E-mail: cnwietho@immd4.informatik.uni-erlangen.de

Private:                        Carsten Wiethoff
				Untere Karlstr.7
				D-8520 Erlangen
				West Germany

				Tel.: +49/(0)9131/29136
Technical Details
Message-ID: <524@medusa.informatik.uni-erlangen.de>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!usc!bloom-beacon!eru!luth!sunic!mcsun!unido!fauern!immd4.informatik.uni-erlangen.de!cnwietho

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!usc!bloom-beacon!eru!luth!sunic!mcsun!unido!fauern!immd4.informatik.uni-erlangen.de!cnwietho
From: cnwietho@immd4.informatik.uni-erlangen.de (Carsten Wiethoff)
Newsgroups: comp.lang.postscript
Subject: Postscript <-> eexec conversion programs
Message-ID: <524@medusa.informatik.uni-erlangen.de>
Date: 3 Oct 89 12:58:53 GMT
Reply-To: cnwietho@medusa.UUCP ()
Organization: CSD., University of Erlangen, W - Germany
Lines: 122