Slashdot Mirror


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."

13 of 176 comments (clear)

  1. What's this weird hidden splash file in MacPaint? by Anonymous Coward · · Score: 5, Funny

    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!

  2. No server available by Dan+East · · Score: 5, Funny

    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.
    1. Re:No server available by hcs_$reboot · · Score: 4, Funny

      For the sake of consistency, they use the same servers they originally had to deliver photoshop 1.0.1

      --
      Slashdot, fix the reply notifications... You won't get away with it...
  3. Actually it's just one text file by Trailer+Trash · · Score: 4, Funny

    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.

  4. Re:Pascal ? by biodata · · Score: 4, Informative

    Turbo Pascal was pretty much the first decent IDE for Windows AFAIR.

    --
    Korma: Good
  5. Re:Pascal ? by ImdatS · · Score: 5, Informative

    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.

  6. Gimp by Stele · · Score: 4, Funny

    Hopefully the Gimp folks can make some use of this.

    1. Re:Gimp by ssam · · Score: 4, Funny

      unless there is a clear licence allowing them to use the code, they would probably be wise not to look at it at all.

  7. Re:Still Down by AmIAnAi · · Score: 5, Informative

    Some kind soul put up this mirror on GitHub.

    --
    Any sufficiently advanced bug is indistinguishable from a feature.
  8. Re:How much of this is still in use? by Lunix+Nutcase · · Score: 4, Informative

    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.

  9. Run in emulator by jbeaupre · · Score: 5, Funny

    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.
  10. Re:Pascal ? by Megane · · Score: 4, Informative

    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; }
  11. Re:Aspirations by DJCouchyCouch · · Score: 4, Insightful

    I love tapioca!