Stories
Slash Boxes
Comments

SoylentNews is people

posted by chromas on Thursday May 24 2018, @12:02PM   Printer-friendly
from the classical-sauce dept.

Thomas Knoll, a PhD student in computer vision at the University of Michigan, had written a program in 1987 to display and modify digital images. His brother John, working at the movie visual effects company Industrial Light & Magic, found it useful for editing photos, but it wasn’t intended to be a product. Thomas said, “We developed it originally for our own personal use…it was a lot a fun to do.”

Gradually the program, called “Display”, became more sophisticated. In the summer of 1988 they realized that it indeed could be a credible commercial product. They renamed it “Photoshop” and began to search for a company to distribute it. About 200 copies of version 0.87 were bundled by slide scanner manufacturer Barneyscan as “Barneyscan XP”.

The fate of Photoshop was sealed when Adobe, encouraged by its art director Russell Brown, decided to buy a license to distribute an enhanced version of Photoshop. The deal was finalized in April 1989, and version 1.0 started shipping early in 1990.

Over the next ten years, more than 3 million copies of Photoshop were sold.

That first version of Photoshop was written primarily in Pascal for the Apple Macintosh, with some machine language for the underlying Motorola 68000 microprocessor where execution efficiency was important. It wasn’t the effort of a huge team. Thomas said, “For version 1, I was the only engineer, and for version 2, we had two engineers.” While Thomas worked on the base application program, John wrote many of the image-processing plug-ins.

With the permission of Adobe Systems Inc., the Computer History Museum is pleased to make available, for non-commercial use, the source code to the 1990 version 1.0.1 of Photoshop. All the code is here with the exception of the MacApp applications library that was licensed from Apple. There are 179 files in the zipped folder, comprising about 128,000 lines of mostly uncommented but well-structured code. By line count, about 75% of the code is in Pascal, about 15% is in 68000 assembler language, and the rest is data of various sorts.

Download Photoshop version 1.0.1 Source Code


Original Submission

This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1)
  • (Score: 5, Funny) by c0lo on Thursday May 24 2018, @12:21PM (7 children)

    by c0lo (156) Subscriber Badge on Thursday May 24 2018, @12:21PM (#683508) Journal

    What do you mean Pascal?
    Not Rust? Not even Go-lang?
    Must be ported to node.js at once!

    (grin)

    --
    https://www.youtube.com/watch?v=aoFiw2jMy-0 https://soylentnews.org/~MichaelDavidCrawford
    • (Score: 3, Funny) by DavePolaschek on Thursday May 24 2018, @12:58PM (4 children)

      by DavePolaschek (6129) on Thursday May 24 2018, @12:58PM (#683524) Homepage Journal

      If a guy were to go digging, he could discover a copy of node.js within Photoshop.

      :-|

      • (Score: 2) by c0lo on Thursday May 24 2018, @02:14PM

        by c0lo (156) Subscriber Badge on Thursday May 24 2018, @02:14PM (#683550) Journal

        Almost sure thing. But is hard to get digging into the (creative) cloud

        --
        https://www.youtube.com/watch?v=aoFiw2jMy-0 https://soylentnews.org/~MichaelDavidCrawford
      • (Score: 4, Funny) by DannyB on Thursday May 24 2018, @02:25PM (2 children)

        by DannyB (5839) Subscriber Badge on Thursday May 24 2018, @02:25PM (#683553) Journal

        That's about as believable as a fright simulator buried in Excel.

        --
        People today are educated enough to repeat what they are taught but not to question what they are taught.
        • (Score: 2, Funny) by Anonymous Coward on Thursday May 24 2018, @04:42PM

          by Anonymous Coward on Thursday May 24 2018, @04:42PM (#683614)

          It looks like you're looking for scary things, would you like help?

        • (Score: 5, Funny) by DeathMonkey on Thursday May 24 2018, @07:10PM

          by DeathMonkey (1380) on Thursday May 24 2018, @07:10PM (#683681) Journal

          That's about as believable as a fright simulator buried in Excel.

          We're talking about Excel.. That fright is 100% genuine, not simulated.

    • (Score: 2) by RamiK on Thursday May 24 2018, @06:10PM (1 child)

      by RamiK (1813) on Thursday May 24 2018, @06:10PM (#683654)

      1. Compile it to webasm.
      2. Host it on an ad-driven site.
      3. Profit.

      --
      compiling...
  • (Score: 0) by Anonymous Coward on Thursday May 24 2018, @12:41PM

    by Anonymous Coward on Thursday May 24 2018, @12:41PM (#683516)

    "using graph;"
    the simpler, saner days when coding graphics was so much more intuitive.
    now, at a minimum, I have to learn the intricacies of VTK to get something working (ok, maybe mayavi is somewhat reasonable).

  • (Score: 3, Informative) by JoeMerchant on Thursday May 24 2018, @12:45PM

    by JoeMerchant (3937) on Thursday May 24 2018, @12:45PM (#683518)
  • (Score: 0) by Anonymous Coward on Thursday May 24 2018, @12:47PM (7 children)

    by Anonymous Coward on Thursday May 24 2018, @12:47PM (#683519)

    In my 4th decade as a professional, covering half a dozen languages, Pascal easily wins by SLOC. I've gradually reduced the amount of code I write over the years. Management and reasons

    • (Score: 3, Funny) by c0lo on Thursday May 24 2018, @12:52PM

      by c0lo (156) Subscriber Badge on Thursday May 24 2018, @12:52PM (#683521) Journal

      I've gradually reduced the amount of code I write over the years.

      Me too. I learned C.

      --
      https://www.youtube.com/watch?v=aoFiw2jMy-0 https://soylentnews.org/~MichaelDavidCrawford
    • (Score: 1, Interesting) by Anonymous Coward on Thursday May 24 2018, @12:52PM (3 children)

      by Anonymous Coward on Thursday May 24 2018, @12:52PM (#683522)

      Turbo Pascal for DOS ( version 7 ) was my favorite. Never did too much with Delphi though.

      • (Score: 0) by Anonymous Coward on Thursday May 24 2018, @02:31PM (1 child)

        by Anonymous Coward on Thursday May 24 2018, @02:31PM (#683558)

        I've never seen Delphi (or Moula II).

        I was given a turbo Pascal disc with the database toolbox and an afternoon to create a database system for a nonprofit organization. This was about a month after I'd learned C and only knowing BASIC and asm before that. So I learned Pascal (and what a database was) all in the same day. It was barely different than C other than the syntax, begin/ed...{/}.

        • (Score: 0) by Anonymous Coward on Thursday May 24 2018, @05:39PM

          by Anonymous Coward on Thursday May 24 2018, @05:39PM (#683641)

          [I found that it is] barely different from C.

      • (Score: 5, Interesting) by DannyB on Thursday May 24 2018, @02:44PM

        by DannyB (5839) Subscriber Badge on Thursday May 24 2018, @02:44PM (#683562) Journal

        Yep. TP7 stands out as excellent.

        About 1993, we had some code written in the p-System from the 1980's. Quite a bit. The p-System had all but disappeared. We could no longer even find who to continue paying annual licensing fees to. We were using a product from a Canadian company called "the datalex bubble" which let you run the entire p-System OS within an MS-DOS executable. Neat. But moving files into and out of p-System volumes to DOS files was a major pain point.

        So I got TP7. I wrote some command line tools that I dubbed "pTools". This was a collection of several commands, including PCOPY.EXE, PKRUNCH.EXE and others. You could use a syntax like:

        PKRUNCH.EXE C:\foo\somevol.vol

        This would do the p-System "Krunch" operation (eg, squish all files toward the beginning of the volume, leaving all free space at the end of the volume) from the DOS command line. And it was WAY faster than doing this operation within the actual p-System. My PKRUNCH.EXE, and all other tools in pTools were built on a common TP7 library I wrote which used large buffers on "modern" DOS machines that had upwards of several MEGABYTES!!! of memory or more!

        The tools would interpret paths with backslashes as DOS path syntax, up to a "vol" file which was a p-System volume. You would then continue the pathname syntax using colons to delve into "sub volumes" (eg dot-SVOL files) that contained volumes within volumes. So a command like:

        PKRUNCH.EXE C:\foo\somevol.vol:*

        would krunch all of the subsidiary volumes.

        Or I could copy a deeply embedded p-System TEXT file out to DOS:

        PCOPY.EXE C:\foo\somevol.vol:subvol1.svol:myfile.text C:\myfile.txt

        I greatly enjoyed working in TP7's DOS based edit-compile environment. As a Mac (classic) guy, I appreciated the "text ui" with a mouse. File, Edit, etc pull down menus. Text windows. Dialog boxes, etc.

        I found Delphi very interesting. But never did much with it myself. I was looking for cross platform as the holy grail. 56% of our customer base was Mac, but with a growing MS Windows customer base. I eventually ended up in Java after trying many alternatives.

        TP7 stands out as one of my favorite experiences. Along with Macintosh Common Lisp, and before that Mac Perl Lisp, and XLisp from about 1986 to 1993. Six years of Lisp was a profound joy.

        --
        People today are educated enough to repeat what they are taught but not to question what they are taught.
    • (Score: 0) by Anonymous Coward on Thursday May 24 2018, @01:52PM (1 child)

      by Anonymous Coward on Thursday May 24 2018, @01:52PM (#683538)

      and reasons

      Declining eyesight? I notice a lot of older coders doing more management when their eyes take the Presbyopia turn.

      • (Score: 0) by Anonymous Coward on Thursday May 24 2018, @08:14PM

        by Anonymous Coward on Thursday May 24 2018, @08:14PM (#683728)

        No, not so much management as technical advisor on multiple company wide projects and general problem solving/mentoring

  • (Score: 5, Informative) by SomeGuy on Thursday May 24 2018, @12:48PM (4 children)

    by SomeGuy (5632) on Thursday May 24 2018, @12:48PM (#683520)

    While it is always good to point it out to those who have not seen it before, this was released back in 2013. It might help to link to the main article rather than the download page: http://www.computerhistory.org/atchm/adobe-photoshop-source-code/ [computerhistory.org]

    • (Score: 1, Insightful) by Anonymous Coward on Thursday May 24 2018, @01:31PM (3 children)

      by Anonymous Coward on Thursday May 24 2018, @01:31PM (#683536)

      The download page also requires JS because plain HTML forms are apparently too hard to concoct in the present year. Nonwithstanding, the file can be downloaded without clicking any of the buttons because it's exposed in the page source.

      • (Score: 2) by JoeMerchant on Thursday May 24 2018, @01:57PM

        by JoeMerchant (3937) on Thursday May 24 2018, @01:57PM (#683541)

        page also requires JS

        Blame Google, they optimized JS execution in Chrome - accelerating the scripted web tsunami.

        --
        🌻🌻 [google.com]
      • (Score: 2) by meustrus on Thursday May 24 2018, @04:33PM (1 child)

        by meustrus (4961) on Thursday May 24 2018, @04:33PM (#683606)

        Have you worked with plain HTML forms? They are actively hostile to interacting with REST APIs. Which would be less surprising if REST weren't part of the original design goals for HTTP.

        Not that I agree with requiring JS. But that's because I like graceful degradation and smaller file sizes, which are not things most developers ever have a reason to even discover as worthy goals.

        --
        If there isn't at least one reference or primary source, it's not +1 Informative. Maybe the underused +1 Interesting?
        • (Score: 1, Informative) by Anonymous Coward on Thursday May 24 2018, @04:48PM

          by Anonymous Coward on Thursday May 24 2018, @04:48PM (#683617)

          I have, a plenty, and I still do. There's no reason whatsoever why submitting a form that will be validated server side anyway (I hope so at least) be done with jQuery without offering the fallback of a standard input type=submit button.

          Hell, I've used greasemonkey to forcefully add such a button to a bunch of forms and they work fine without any of that gunk. People are just lazy and incompetent.

  • (Score: 2) by goodie on Thursday May 24 2018, @02:03PM (6 children)

    by goodie (1877) on Thursday May 24 2018, @02:03PM (#683544) Journal

    The first programming language I learned (ok, TP to be exact). My first job was programming in Delphi so that helped quite a bit. Say what you want but fuck programming was more intuitive back then... No web crap to add on top of everything. Delphi had really great 3rd party components you could buy as well (DevEx etc.) that really made your applications shine for customers.

    Good times...

    • (Score: 3, Insightful) by Anonymous Coward on Thursday May 24 2018, @04:48PM (1 child)

      by Anonymous Coward on Thursday May 24 2018, @04:48PM (#683616)

      Everything was more intuitive before the Year 2000. Whenever I need to test something quickly I still have number of old tools handy such as QBasic when I don't want to write 1000 lines of code and add 3 libraries just to draw a line to the screen to visualize something. Got a copy of Open Watcom for that too when QBasic is too slow, and Visual Basic 6 when I need something on windows quick and easy (And not slow/bloated like .NET). Works good enough in Wine too if I'm in pinch.

      It's always nice to see how things back then didn't need a whole bunch of hand holding like we have today to get tasks done. They also didn't need these "Beautiful" UX designs from a bunch of losers in California who drink too much coffee and wear plaid clothing 24/7. It's times like this that make realize how much the "Modern" web was a mistake. Screw it, let's all go back to the way it was back when we had BBSes.

      • (Score: 3, Insightful) by goodie on Thursday May 24 2018, @04:54PM

        by goodie (1877) on Thursday May 24 2018, @04:54PM (#683620) Journal

        The worst thing for me is that the premise of all that web crap "multiplatform" or "WORE" is a fallacy. At the end of the day, you have to customize. Might not be for the OS, but it may be for the browser/device. It's kinda sad that a lot of the time spent in dev is spent re-writing stuff to work with the latest trendy framework that adds 0.2% benefits for 25% extra crap/bloat/maintenance headaches...

    • (Score: 4, Interesting) by Arik on Thursday May 24 2018, @04:48PM (2 children)

      by Arik (4543) on Thursday May 24 2018, @04:48PM (#683618) Journal
      I had TP too, got it so I could work on assignments at home. Not perfect for the task, since it sometimes let me get away with stuff that the 'real' pascal compiler wouldn't, but it did the job. I never really used it for anything else though.

      Zmud had a pascal-ish scripting language that I used the heck out of though. IIRC not only was the internal scripting language pascal-ish but I think the whole thing was written in Delphi too.

      But now I've made Pascal sound dead. It's still in wide use and active development.

      Particularly in form of https://en.wikipedia.org/wiki/Object_Pascal
      not just for Mac: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Supported_Target_Platforms
      --
      If laughter is the best medicine, who are the best doctors?
      • (Score: 3, Informative) by dry on Friday May 25 2018, @04:56AM (1 child)

        by dry (223) on Friday May 25 2018, @04:56AM (#683890) Journal

        Better to refer to Free Pascal, which seems to be compatible with various historic pascals including Object Pascal. Turbo Pascal and Delphi. It also seems to target lots of OSes and architectures.

        Free Pascal is a 32, 64 and 16 bit professional Pascal compiler. It can target many processor architectures: Intel x86 (including 8086), AMD64/x86-64, PowerPC, PowerPC64, SPARC, ARM, AArch64, MIPS and the JVM. Supported operating systems include Linux, FreeBSD, Haiku, Mac OS X/iOS/iPhoneSimulator/Darwin, DOS (16 and 32 bit), Win32, Win64, WinCE, OS/2, MorphOS, Nintendo GBA, Nintendo DS, Nintendo Wii, Android, AIX and AROS. Additionally, support for the Motorola 68k architecture is available in the development versions.

        https://www.freepascal.org/ [freepascal.org]
        https://en.wikipedia.org/wiki/Free_Pascal [wikipedia.org]

        • (Score: 2) by Arik on Friday May 25 2018, @05:39AM

          by Arik (4543) on Friday May 25 2018, @05:39AM (#683903) Journal
          It is mentioned in the object pascal article, but you're right, it deserved more prominent mention.
          --
          If laughter is the best medicine, who are the best doctors?
    • (Score: 2) by wonkey_monkey on Thursday May 24 2018, @05:45PM

      by wonkey_monkey (279) on Thursday May 24 2018, @05:45PM (#683643) Homepage

      My first job was programming

      ...binary load lifters. And they're not much bigger than two meters.

      --
      systemd is Roko's Basilisk
  • (Score: 2) by Rich on Thursday May 24 2018, @05:05PM

    by Rich (945) on Thursday May 24 2018, @05:05PM (#683623) Journal

    MacApp 2 was a surprisingly clean framework. Not bad at all for the first attempt at creating one.

    I happen to sit on a MacApp 3 like framework to which I own all the rights. It was clean-room engineered from client calls and documentation (with improvements) when a customer of mine decided that it was way more efficient to re-create the framework (about 50 kLOC) than to re-create all their vertical market applications (about 1000 kLOC) when Apple dropped it to force developers to Cocoa. Interesting story on its own, it has to run 24/7 in regulated environments, runs all the way from Harmony (7.6 (!, not 10.7.6) ) to High Sierra (10.13) and I eventually wrote a multilingual view editor (WorldScript (!, in the 2010s), Unicode only for import/export) for it, that, unlike IcePick, does not crash.

    Anyway, enough tales of lore, buggers that it wasn't MacApp 2 I had to do. Or I would've given compiling PS1 a try. On Lightspeed Pascal. :)

  • (Score: 3, Touché) by opinionated_science on Thursday May 24 2018, @09:19PM

    by opinionated_science (4031) on Thursday May 24 2018, @09:19PM (#683764)

    a version that will run on linux /s

  • (Score: 3, Interesting) by PartTimeZombie on Thursday May 24 2018, @11:35PM

    by PartTimeZombie (4827) on Thursday May 24 2018, @11:35PM (#683807)

    I became a Photoshop user in about 1992 on (I think) an Apple IIc.

    It was bloody awful. I was a Photolithographer, and the idea was that we could retouch pics and do colour correction quicker and easier than using film separations, but we couldn't and it wasn't.

    Frankly, if I wasn't restarting the Mac due it locking completely I was restarting Photoshop after it crashed.

    It was not really until about 1994 (or so, memory is a bit vague to be honest) that digital systems could really compete with manually editing film.

    Of course in no time at all every kid leaving high school wanted to be a "graphic designer" and the wages slumped to almost nothing, so I got the hell out altogether.

  • (Score: -1, Troll) by Anonymous Coward on Friday May 25 2018, @03:58AM

    by Anonymous Coward on Friday May 25 2018, @03:58AM (#683879)

    Maybe this code could be used to help the GIMP devs get their act together. Even today, GIMP still doesn't have CMYK :(

(1)