After 40 Years, Adobe Releases PostScript Source V0.10 For Posterity

Celebrating their 40th anniversary, Adobe released the source code of PostScript v0.10 to the Computer History Museum. But before you ask, we tried and it won’t compile with GCC out of the box – it’s missing at least except.h, but we’d bet you can hack around it with a little dedication.

PostScript is the precursor to PDF, and at the time it was revolutionary. Coming out of Xerox’s PARC, the idea was to create device- and resolution-independent documents where all the characters, symbols, and graphics are described by their shapes instead of bitmaps. PostScript’s secret sauce was in how it went back to a pixel-based representation for end use on monitors or printers. It’s no exaggeration to say that this ended up revolutionizing the print industry, and it makes sense in the CHM’s collection.

Still, on the trade-secret front, you shouldn’t get too excited. Apparently the code released here only includes a first-draft version of Adobe’s font hinting algos, as evidenced by the early version number. Nonetheless, you’re free to dig into pretty readable C. For instance, vm.c contains the virtual machine that implements PostScript’s almost Forth-like language.

Of course, if you’d just like to mess around with PostScript, downloading a modern open-source interpreter like GhostScript probably makes a lot more sense. Even so, it’s fun to see the original codebase where it all started.

28 thoughts on “After 40 Years, Adobe Releases PostScript Source V0.10 For Posterity

    1. Still got a framed AST TurboLaser motherboard with it’s PS v47 EEPROMs on my wall. Coming from creating bitmapped fonts to the wonder of PostScript was amazing and the software I wrote to generate shop ticketing made the company I worked for a fortune. Happy days.

  1. Interpress was the language that was developed at PARC. John Warnock was aware of it, and it is similar in format and function.

    It is forth like, with the RPN, and is easy to use.

    PDF is a relative of postscript.

    1. As did a friend of mine. Both in his academic papers and for fun.
      Certainly beats making ZX Spectrum loacding screens pixel by pixel in BASIC (which I did, for money, in the mid 80s)

    1. I wrote the software for my senior thesis (network analysis) in Postscript. The university mainframe was less capable than the shiny new postscript printer, and cost actual money to use. The printer cost nothing to use, and in the wee hours, I could get several uninterrupted hours of use. IBM5150 with dual floppies was the UI. The 5150 wasn’t even in the running, as it was ALL real math.

    2. Indeed, you can do some truly amazing things in postscript. Save the following to a *.ps file and let your jaw drop when you see the result…

      %!OPS-1.0
      %%Creator: HAYAKAWA,Takashi (h-takasi@isea.is.titech.ac.jp)
      /p/floor/S/add/A/copy/n/exch/i/index/J/ifelse/r/roll/e/sqrt/H{count 2 idiv exch
      repeat}def/q/gt/h/exp/t/and/C/neg/T/dup/Y/pop/d/mul/w/div/s/cvi/R/rlineto{load
      def}H/c(j1idj2id42rd)/G(140N7)/Q(31C85d4)/B(V0R0VRVC0R)/K(WCVW)/U(4C577d7)300
      T translate/I(3STinTinTinY)/l(993dC99Cc96raN)/k(X&E9!&1!J)/Z(blxC1SdC9n5dh)/j
      (43r)/O(Y43d9rE3IaN96r63rvx2dcaN)/z(&93r6IQO2Z4o3AQYaNlxS2w!)/N(3A3Axe1nwc)/W
      270 def/L(1i2A00053r45hNvQXz&vUX&UOvQXzFJ!FJ!J)/D(cjS5o32rS4oS3o)/v(6A)/b(7o)
      /F(&vGYx4oGbxSd0nq&3IGbxSGY4Ixwca3AlvvUkbQkdbGYx4ofwnw!&vlx2w13wSb8Z4wS!J!)/X
      (4I3Ax52r8Ia3A3Ax65rTdCS4iw5o5IxnwTTd32rCST0q&eCST0q&D1!&EYE0!J!&EYEY0!J0q)/V
      3 def/x(jd5o32rd4odSS)/a(1CD)/E(YYY)/o(1r)/f(nY9wn7wpSps1t1S){[n{( )T 0 4 3 r
      put T(/)q{T(9)q{cvn}{s}J}{($)q{[}{]}J}J cvx}forall]cvx def}H K{K{L setgray
      moveto B fill}for Y}for showpage

      Back in the days, I wrote some postscript code to produce inlay paper for music cassettes with songs recorded from the radio which automatically scaled the text to maximum size without breaking/cropping.

      1. Postscript is also an interesting language in that it let you decide if you want early or late (default) binding.

        GS>/avg1 { add 2 div } bind def % early binding
        GS>/avg2 { add 2 div } def % late binding
        GS>/div { mul } def % override div function

        GS>5 15 avg1 % using div as it was when avg1 was defined
        GSpstack
        10
        GSpop

        GS>5 15 avg2 % using div as it is when avg2 is used
        GSpstack
        40
        GSpop

  2. Just be aware that the license it’s released under is incredibly cursed — no redistribution, no commercial use, etc. It’s basically Look But Don’t Touch and means that it’d be exceptionally hard to do anything useful with the code (and if you’re actually working on anything Postscript related it would be advised not to look at it at all).

    https://computerhistory.org/blogs/deluxepaint-computer-history-museum-software-license-agreement/

  3. One of the funniest things is Warnock claimed to have never seen Forth, but Postscript is nearly identical with the names of operations changed. And he was surrounded by Forth and was walking distance from where the Silicon Valley Forth Users Group met in one of HP’s buildings, and Mountain View Press, the primary publisher of Forth books and the FIG publication Forth Dimensions, and implementations with source on floppy disk for basically everything.

    And of course OpenBoot/OpenFirmware was happening at SUN nearly next door to Adobe.

  4. I remember when Adobe products weren’t overpriced bloated performance hogs. They made some great stuff that made life a lot easier that other software houses just haven’t replicated in parallel. I believe they switched to the “subscription” model for a while, too – not a fan of that.

  5. I think it’s truly great that Adobe finally released their first PostScript interpreter. Kudos! Yeah, I’ve worked with companies to get them to release copyrighted materials, and I am familiar with corporate lawyers rarely wanting to actually open source even vintage tech. In this case, what good would a commercial license do anyone? Unless you actually care about the software history, there are alternatives. BTW… Much to my surprise, there is a MAME emulation environment for old laser printer firmware. Anyway, I look forward to a compilable GitHub entry. From memory, I don’t think ANSI C existed 40 years ago.

  6. Hi. Just one note: in respect to print, PDF is inferior to postscript since it don’t have the commands for duplex and paper selection. Industrial printing still uses postscript.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.