MacPaint Source Code Released to Museum
gbooch writes "The Computer History Museum, located in Mountain View, California, is not only a museum of hardware but also a museum of software. Today, with the permission of Apple, the Museum has made available the original source code of MacPaint.
MacPaint was written by Bill Atkinson, a member of the original Macintosh development team. Originally called MacSketch, he based it on his earlier LisaSketch (also called SketchPad) for the Apple Lisa computer. Bill started work on the Macintosh version in early 1983. "
It's open source now? ;-)
Hopefully this starts a trend where companies release their source to the world once they're done with it.
Once Hypercard is open source then the world will be complete.
Oh wow, I still remember the first time I saw MacPaint-- there was nothing like it. Bill Atkinson did a superb job, shoehorning all those features so they could run in 128K of RAM.
He just barely made it-- I remember trying to find how much memory my desk accessory could use while MacPaint was running, and when you did a "print preview", the available RAM went down to like 1800 bytes! Yikes!
; FUNCTION Monkey: BOOLEAN;
TST MonkeyLives
Funcy monkey.
I have released my HDOS, CP/M, and MS-DOS product source code from the 1980s; there were a few other software packages I sold back then, but I no longer have readable floppies with enough bits of source to release them.
Funny how Macs now lack the equivalent of MacPaint.
The copyright notice included says, "This Material is Copyright © 1984 Apple Inc. and is made available only for non-commercial use."
Pretty sure that would preclude it from being used for anything except academic study. Certainly it would not be allowed to be contributed to any GPL projects.
The problem with this is that Apple was so innovative that they can infringe patents for ideas that other large companies came up with years later.
It has been mentioned a few times here in /., but http://folklore.org/ has a great collection of short stories about MacPaint. Worth the reading for every geek out there
Truly. That program was a major milestone for computers. With QuickDraw, no less.
Last missing point is the whole Mac OS rom, the early System and including the Finder. That would be amazing...
--fred
or some early parts of it (download on the same page). That seems even more interesting to me.
"I'm a Genius!"*
*Not an actual Genius
I've looked at the source and it shows many good programming traits, like variable and procedure naming that makes sense, separation of concerns (each procedure is short and does only one or two things; and it's procedural), etc. The code is very easy to follow. It shows that good programming is more about the programmer than the programming language.
Without cryptic comments like 1750 ; RIP JSB the source code is not very entertaining.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
I remember watching a NerdTV interview with Andy Hertzfeld which made mention of MacPaint. Now I've done a search, I've found the transcript of Andy's interview on the web. I'll quote the section I was thinking of:
[...] an older guy got up and said he thought MacPaint was probably the best program ever written. Was it possible for him to see the source code? It turns out the person asking the question was Don Knuth [...]
Sounds like Bill Atkinson can cite you and Knuth as fans :)
;
;
; Wrist Test - see if user is gripping left front
; edge of mouse as this will cause drawing
; performance to drop-off
FUNCTION WristTest : Boolean;
Uncanny eh!?
AT&ROFLMAO
Here are direct links to downloads (not slashdotted at time of posting):
MacPaint http://s3data.computerhistory.org/102658076_macpaint_acc.zip
QuickDraw http://s3data.computerhistory.org/102658076_quickdraw_acc.zip
Yay me! ^^
Yes, a bit later I even saw a separate release of this monkey thing: you would launch your app, then launch the monkey, and thousands of clicks were hitting the screen. (seeing this the first time was atrocious ;-)
When the worst that happened was that sooner or later a given serie of click would trigger a quit command, you were safe :-)
(and indeed, at that time, the UI was so simple, with ALL command accessible via single one-step menus, that from a quality insurance point of view, I think it did look a reasonable test...)
Herve S.
:-D :=/
I remember, while MacPaint was black & white, there already were alternative print kits with colors (for the Apple ImageWriter printer, yes I'm 50 years old), and you could install a separate printer pilot that would translate fill-in patterns into colors on the printer.
hum. It may well have been MacDraw patterns in fact
Herve S.
Pascal and C are both members of the Algol family, and both provide a fairly primitive model of the computer to the programmer (flat address space, basic structure, but no higher-order functions, and so on). You can automatically translate between the two. The Pascal compiler does some extra type checking, but there's very little semantic difference between the two languages. The biggest difference is an implementation issue (not specified by either language): their early implementations passed parameters in opposite orders. Pascal pushes them onto the stack left to right, C does right to left. The Pascal approach is easier to generate code for - run the code to generate the argument, push the result, repeat - but has the disadvantage that it makes variadic functions impossible.
In comparison to things like Smalltalk on the Alto, or Lisp on various Lisp machines, they are almost the same language. Java has more in common with Smalltalk than C - the only thing it gets from C is a subset of its syntax.
I am TheRaven on Soylent News
It helped that Apple used a UCSD variant of the language, which was a lot more practical to use than "standard" Pascal. The most important thing was "units", which let you break up programs into modules with separate header files. They later implemented Object Pascal, which made use of the Macintosh Memory Manager's ability for relocatable memory objects (handles).
Then Borland goes and (IMHO with two college students over a summer break) re-implements it in a C++ sort of way for TP6 because their memory allocator was crap, due in large part to the 8088's segmented memory model and the infamous 640k limit. After having used proper Object Pascal (TML's version, as MPW was too expensive for me at the time), I was shocked that they would make such a poor imitation. It is no surprise that Next and then 90's Apple went with the Smalltalk-inspired Objective C over C++.
#naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
Although the initial version of Quickdraw had color support, it was really primitive and (IIRC) only supported a total of 8 colors. However, due to the way that a printer worked by intercepting Quickdraw callbacks, it's no surprise that a printer driver could identify Mac Draw fill patterns and translate those to colors.
It wouldn't have been possible in Mac Paint, though, because everything was flattened to a plain bitmap.
#naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
Just because YOU can't conceive of a use for 10-year-old binary without source code doesn't mean others can't.
With an old binary we can at least run the program enough to create requirements suitable for reconstructing and improving the program. I've heard much of "MULE" and other great programs past, and my reflex is a desire to run them to grok their behavior and subsequently write a new take thereon. Having the source is valuable, but lacks decades of development in the art. I could write a clone of MacPaint or VisiCalc or other classics easy enough, and do so better using modern coding techniques, if only I can run the program enough.
Likewise, while source is valuable for parsing old data files, given enough data in that format I can deduce the content and write a parser from scratch.
Oh sure having the source helps, but lack thereof does not render the binary useless.
Can we get a "-1 Wrong" moderation option?
It wont run on an iphone - its in pascal. Emulation or non-native/transpiled programs are forbidden, i heard.
> The Lisa was never sold!
Ah, I think what the writer was trying to say was that the disks were the old Apple ][ / Lisa dual-sided 5 1/4 inch drives, which were the original drives intended for the Mac.
They actually did a small production run of those, for internal use, so there were Lisas and Macs with 5 1/4 inch drives, and a lot of development software was on those style of floppies.
...is for Apple to revive the venerable MacPaint brand and release an image editing program based on CoreImage. Could be part of iLife, could be a developer sample code project, but either way, the Mac really should ship with a way for any user to take full advantage of all the investment Apple put into that framework.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
If you diagrammed the sentence, you would find out that the "that had never been released to the world" refers back to "a flavor of the old Lisa" which many would take to mean a variant. It's easy to believe that not all Lisa variants were released to the world.
He just needs to implement QuickDraw for the TI-89. (yikes!)
“Common sense is not so common.” — Voltaire
..and "computer chronicles" had a segment about some add-on (graphics adapter + monitor?) so you could see the color graphics. That is, on the orig b&w Macs.
If the copyright has expired, the source code is not private any more, it's public domain.
Build a man a fire, he's warm for one night. Set him on fire, and he's warm for the rest of his life.
As far as I know, all versions of Mac System (i.e. the operating system, not yet called "Mac OS" in these days) before v7 have been written almost completely in Pascal. Of course, there may have been contained many portions of Assembler (a.k.a. "assembly") code as well.
Starting with System 7, the Mac operating system had been re-coded in C with most applications were following soon.
Walter.
P.S. Bill Atkinson, author of MacPaint, later created the HyperCard environment, which included a subset of MacPaint as a graphics module. As to graphics, HyperCard contained a fully scriptable MacPaint, with HyperTalk (written by Dan Winkler) as script language.
http://en.wikipedia.org/wiki/HyperCard
http://en.wikipedia.org/wiki/HyperTalk
... When are you going to release the source for that Gorillas game??.... ... ...oh, wait....
For "The Art of Computer Programming", according to the article. What was he planning on doing? Converting it to his pseudo-assembly language MIX? As far as I know, Knuth has never used a high level language in his AoCP, although obviously he knows how to program in them (early versions of TeX were in Pascal, and now they are in C)
... by Thorsten Lemke (Lemkesoft):
http://www.lemkesoft.com/content/188/graphicconverter.html
What's especially great with this software:
Thorsten is still supporting Mac OS Classic (i.e. Mac OS 9 running natively) users by providing specific versions of GraphicConverter for their OS.
Mac OS X being supported too, of course.
Walter.
In high res - 6 colors - black, white, blue, orange, green, purple. But two adjacent bytes were either blue/orange or green/purple depending on the high bit for the first byte, as I recall.....
I still pronounce the root beer as Hi-Res.
How in the world does "I can hear it now..." followed by your fantasy imaginings of things that no one actually posted constitute "valid criticism" of Apple, who in this case did nothing other than release the source code of 27 year old software for the general public to play with?
I wouldn't go so far as to call it hate, but there's something going on behind your post beyond criticism. It comes across as a bit pathological.
You mean besides Paintbrush?
Paintbrush is a simple [and free] paint program for Mac OS X, reminiscent of Microsoft Paint and Apple’s own now-defunct MacPaint. It provides users with a means to make simple images quickly, something which has been noticeably absent from the Mac for years.
http://paintbrush.sourceforge.net/
And there are other equally FREE alternatives Seashore (GIMP-based) or Pixen 3.