For Your Inspection: Source Code For Photoshop 1.0
gbooch writes "With the permission of Adobe Systems, the Computer History Museum has made available the source code for Photoshop version 1.0.1, comprising about 128,000 lines of code within 179 files, most of which is in Pascal, the remainder in 68000 assembly language. This the kind of code I aspire to write. The Computer History Museum has earlier made available the source code to MacPaint."
I'll just compile and run it to see.
Well, it doesn't seem to show anythALL HAIL STEVE JOBS! STEVE JOBS IS MY MASTER!
503 Service Unavailable
No server is available to handle this request.
At least they still have servers available to tell us that they don't have servers available.
Better known as 318230.
Here, I'll post it here to save you time:
503 Service Unavailable
No server is available to handle this request.
Not sure what language that's in.
Do you have ESP?
Turbo Pascal was pretty much the first decent IDE for Windows AFAIR.
Korma: Good
Photoshop 1 was only available on a Mac. I remember receiving the first "public beta" (Photoshop 0.9) some time in 1990 or so and it was awesome - jawdroppping awesome...
In any case, you would use MPW (Macintosh Programmer's Workshop) those days, which I think is still one of the best team-development tools. And the language-of-choice (well, in fact, nearly the only choice) for developing on a Mac at those days was Pascal + Assembler.
So, it makes sense that this code is Pascal.
Hopefully the Gimp folks can make some use of this.
Some kind soul put up this mirror on GitHub.
Any sufficiently advanced bug is indistinguishable from a feature.
No. Photoshop was long ago rewritten into C++. That's not to say that some of the current code might not have some basis on the original code, but it's doubtful it's that much.
Has anybody run it in a 68k Mac emulator? It would be interesting to see a performance comparison between modern PhotoShop running natively and version 1 running on an emulator.
The world is made by those who show up for the job.
Actually it's pretty close (UCSD dialect) until you get to the OBJECT keyword. Apple made full use of their Memory Manager for Object Pascal, which had a linear address space and supported relocatable objects, while Borland had a horrible memory allocator and was stuck with the 80x86 real-mode memory model and 640k limit. So they implemented "Object Pascal" as some kind of horrible C++ish hack. It was really and truly awful compared to the Object Pascal that Apple had already produced, though I hear they filed down some of the worst warts by the time of Delphi.
Oddly, this code didn't make use of the Pascal UNIT system for its own code, instead using multiple levels of include files, with the main code for a unit in "foo.inc1.p". This was probably done to make it work well with makefiles. Back in the day it took long enough to compile that you really didn't want to re-compile anything you didn't have to, and if you did things the "proper" way, code and headers would be in the same file, causing a lot of unnecessary recompilation.
#naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
I love tapioca!