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.
A bit surprised it wasn’t written in flash.
I get the joke, but they bought Flash.
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.
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.
Precursor to the unholy mess that is PDF?
Now Nextstep and NeWS can get their mojo back.
They should have done everyone a favor and released the source for Illustrator, since they abandoned it in a bug-riddled state 10 years ago or more.
Pathetic.
O RLY? I still use Illustrator even today to design wheatpastes XDDD
So? Nobody said you couldn’t use a stupidly crippled tool to do stuff.
I’d be happy with the source code to FreeHand. Granted, I’ve heard the code is an unholy mess, but I’m sure the open source community could fix it (eventually).
I used to LOVE freehand. I was so sad when I was forced to switch to Illustrator. :(
Back in the ‘80s I used to write straight postscript. It was a fun language to use.
Don Lancaster was a real enthusiast and added graphics to his writings by creating them with Postscript.
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)
Dudes, programming in postscript was truly astonishing.
I did some report generation in the past (almost 25 year ago) using program’crafted postcript files that still works!
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.
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.
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
If you want to know about PostScript, ask Don Lancaster.
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/
Yeah, it’s a weird license all right. I assume it was whatever Adobe needed to get it done — and they’re not exactly open-source friendly. (Understatement of the year award nomination!)
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.
forth in Poscript is a great idea, but dictionary only with 256 element is a big mistage ever
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.
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.
Just read the EULA. Apparently uploading to GitHub won’t be allowed. This might put up a bit of a roadblock to folks who want to collaborate on getting it compiled and working. Too bad stuff is missing. Sigh…
Don Lancaster would be in his prime on this – that’s if he hasn’t turned to flobbydust at this stage?
His website is still up, but does he live – last update 4th December 2022, but are these automated? >> https://www.tinaja.com/
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.