13 ms·
Lisa Source Code Release
- mch82 4y agoWhat hardware can this run on?
- lproven 4y agoThe Lisa emulator. https://lisa.sunder.net/ https://lisa.sunder.net/
- _boffin_ 4y agoThanks for posting this. awesome article.
- msie 4y agoI'm still learning Swift (forever) and looking at the source code I wonder if Swift is getting too complicated to read now. I'm having a hard time reading simple snippets of Swift but the Lisa source code seems so comforting to read in comparison. Anyways, I'll soldier on.
- JKCalhoun 4y agoI know what you mean regarding Swift. In recent decades different languages have introduced interesting patterns, interesting notations. Swift seems to have adopted about all of them. I have been told by teammates that I don't write "Swifty" Swift code, instead writing something more like an "Objective-Swift" style. Oh, and they say that like it's a bad thing.
- kitsunesoba 4y ago> I have been told by teammates that I don't write "Swifty" Swift code, instead writing something more like an "Objective-Swift" style. Oh, and they say that like it's a bad thing Depending on what they mean by this, I agree that it can be a bad thing. Years ago, in the days when Swift was still pretty green (around 2.x or 3.x) I knew someone who liked to try to write "Objective-C in Swift" — that is, they'd try to ignore the type system and optionality entirely, with lots of forced casts, forced unwraps, shipping data around in [String:Any] dictionaries, etc… constant fighting with the compiler that made SourceKit very unhappy and crashy and the app we were working on more crash-prone than it would've been had it been written in Objective-C. On the other hand, if it's just a more verbose style that favors clarity and avoids e.g. unnamed closure arguments and breaks more out into well named variables and functions, I don't see anything wrong with that at all and in fact have been leaning further in that direction as time goes on.
- JKCalhoun 4y agoHa ha, yeah no I would never force a cast, I always unwrap optionals... As an example, I was slow to adopt guard statements generally, preferring to strictly use them only for parameter checking (thus only at the top of functions). Then there are crazy ways that case statements can be used in a switch that I still don't understand.
- deleted 4y ago[deleted]
- NegativeLatency 4y agoDownloaded the code and I'm not really sure what I'm looking at. What language is this, and how would someone build/load it?
- octetta 4y agoThe files I've looked at are Pascal (the article talks about Apple's object-oriented varient). I suspect there's 68000 assembly language there too, but I'm just getting started.
- GrumpyNl 4y agoUnder the OS section, there are some files with assembler in it.
- LastTrain 4y agoI see assembly and pascal files. According to this[0] article, the development was done on Apple II's and Mac development was done on Lisa! [0] https://macgui.com/news/article.php?t=518 https://macgui.com/news/article.php?t=518
- snewman 4y agoI can confirm this regarding Mac development. I was part of the team that built FullPaint (https://en.wikipedia.org/wiki/FullPaint https://en.wikipedia.org/wiki/FullPaint) back in 1985. We had just a few Lisas to work with, and they were considered sacred. Testing code required copying it onto a floppy disk and popping it into a Mac. We probably would have been a lot more productive if any of us had ever heard the words "unit test". (We were a young team, everyone in their early 20s or even late teens.)
- jchw 4y agoOh, how I wish I could've been involved in the halcyon days of the computer industry. I'm sure it's all rosey looking from the perspective of someone who wasn't there, but the scrappy young development teams, humble small organizations, mail-order software, and general naive optimism of the preceding era seems like it was so much fun. Probably very challenging, and I'm sure frustrating, but I can only imagine the satisfaction of having worked on the Macintosh and breaking so much new ground. I was born in time to experience the internet when it was a lot more fun and experimental, which I definitely am grateful for. I hope there are more "moments" like this in the future, though I can't help but feel they're mostly over when it comes to computers and technology. Things just can't stay scrappy and experimental forever.
- cmrdporcupine 4y agoYay! Finally! Thanks so much for this. Have been excited about this for years since the original announcement. Had today's date bookmarked, and was browsing around your twitter etc earlier looking to see if this had happened. Can't wait to look inside.
- fexecve 4y ago> You may not and you agree not to: > publish benchmarking results about the Apple Software or your use of it Damn, there goes my Apple Lisa vs Amiga comparison video! I was going to get so many YouTube views! Meh, maybe I'll make it anyway. So sue me! > the Apple Software may not be exported or re-exported (a) into any U.S. embargoed countries I'm sure keeping Iran from getting this valuable software from 1983, which runs on a completely dead CPU architecture that Linux doesn't even support anymore, is very important! (But seriously, as a license geek, and not a lawyer, the wording of this license is really interesting. It seems to have completely different disclaimers than you usually see in open-source licenses...)
- cmrdporcupine 4y ago> completely dead CPU architecture Hey, take that back! 68k/ColdFire ISA is actually pretty well supported these days by compilers. Better than it was a few years ago. There are 68k backends for both GCC (again) and LLVM (maybe not as active). It's probably the best supported "retro" architecture at this point. Rest of your points are valid though ;-)
- monocasa 4y agoThe LLVM code is fairly active for a retro arch. It just got accepted into mainline less than a couple years ago. I remember it because the m68k folk are pretty active about maintaining support for their arch in the Linux kernel, and for a while the lack of m68k support in LLVM (and therefore the lack of m68k support in Rust) was seen as a potential blocker for mainline Rust support in the kernel.
- easton 4y agoI’m guessing, although I don’t know, that they probably had an academic license laying around for another product that they cleaned up for this. A “it’s our source, you can use it for fun but not for money” license. Microsoft has shared source licenses for academics/bigcos that need to see the source for Windows or whatever.
- 4y ago
- programd 4y agoLovely bit of history, but I laughed out loud at this bit of legal WTF in the license agreement you must agree to before downloading the software: "You may not and you agree not to: ...publish benchmarking results about the Apple Software or your use of it" Perhaps 40 years later Apple is still embarassed about the performance of the Lisa? So, maybe somebody here can emulate a Lisa and run Geekbench :)
- deleted 4y ago[deleted]
- fsckboy 4y ago"False!" - Dwight Schrute >FTFA: a majority of personal computer users interacted with their machines via command-line interfaces...in which users had to type arcane commands to control their computers. ARCANE!?!? you say!?!?! https://en.wiktionary.org/wiki/arcane arcane: 1. Understood by only a few. the majority of personal computer users (your words, not mine) did understand them, in fact it was the defining feature of personal computer users 2. (by extension) Obscure, mysterious. 3. Requiring secret or mysterious knowledge to understand. the commands were well documented and did what the documentation said 4. Extremely old (e.g. interpretation or knowledge), and possibly irrelevant. not old, it was newly invented, current state-of-the-art, and nothing but relevant to the tasks at hand, they were the only way to accomplish the tasks at hand, and nary a byte of the command line lacked morphologic or semantic significance The serious point I'm trying to make is, young and up-and-coming programmers who are learning textual programming languages (more or less the definition of a computer programmer at present) should not be scared off from learning command lines. They're very powerful, and not that obscure or hard. Unix had/has a feature that can be confusing, which is the command line is first processed according to the rules of the shell, and then it is reprocessed according to the rules of the app you are invoking, making command lines be a subtle mix of several languages at a time (by analogy, a bit like html+javascript+css). You need to learn how this works, despite being confusing it is the innovation necessary for unlocking the power of shells.
- wmf 4y agoArcane by today's standards I guess. Also, many people in those days never consulted the docs and just memorized commands without understanding them so they probably felt arcane.
- fsckboy 4y agothe average person doesn't understand the ancient notation used for calculus; that doesn't make "calculus" arcane; and the article was writing in the past tense your point about those who copypasta-ed command incantations is reasonable, but they did get them from people who knew how to write them and conditions (like situational pathnames or dangerousness of side effects) are sufficiently variable to limit the scope of this style's applicability
- jonpalmisc 4y agoNo email form: https://d1yx3ys82bpsa0.cloudfront.net/source/lisa-source.zip?submissionGuid=beee6a2f-2987-4f09-83a3-eeebdc4c196e https://d1yx3ys82bpsa0.cloudfront.net/source/lisa-source.zip...
- IncRnd 4y agoI didn't turn on JS for the form to be shown, either.
- deleted 4y ago[deleted]
- flohofwoe 4y agoI can't believe they make you sign a fekking license agreement to access 40 years old source code (in a long dead language on top). That's so typical Apple.
- deleted 4y ago[deleted]
- cmrdporcupine 4y agoYeah I actually haven't downloaded this yet, despite being eager to look, because I actually wonder if I should be cross-checking my employment agreement with my current employer to make sure I wouldn't be violating any clauses in either document! Highly unlikely, but still, jeez.
- cube00 4y agoA license agreement and they want your full name and email. Pass. (Yes I know you can lie but my point is they are asking for this)
- purututu 4y ago[flagged]
- abbbi 4y agoallways good do see :-) grep -ri fuck . ./Lisa_Source/Lisa_Toolkit/TK Sources 4/LIBUT-UUNIVTEXT2.TEXT.unix.txt: HALT; {Die rather than fuck up} grep: ./Lisa_Source/Lisa_Toolkit/TK Sources 4/LIBUT-UUNIVTEXT2.TEXT: binary file matches grep: ./Lisa_Source/Lisa_Toolkit/TK3/TK-ALERT.OBJ: binary file matches ./Lisa_Source/LISA_OS/APIN/APIN-OFFICE.TEXT.unix.txt: fucked up if he bails out or doesn't ever select a disk} ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-SCANCODE.TEXT.unix.txt: valid position, thus we don't fuck with pscantable^[scanid]^ until ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-SCANCODE.TEXT.unix.txt: valid position, thus we don't fuck with pscantable^[scanid]^ until ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-SCANCODE.TEXT.unix.txt: valid position, thus we don't fuck with pscantable^[scanid]^ until ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-LMSCAN.TEXT.unix.txt: badCheckPoint = 3424; { check point info is fucked }{##} ./Lisa_Source/LISA_OS/Linkmaps and Misc. 3.0/TKALERT.TEXT.unix.txt: if not fcheckhz(hz,i) then writeln('heap big fuckup 1'); ./Lisa_Source/LISA_OS/Linkmaps and Misc. 3.0/TKALERT.TEXT.unix.txt: if not fcheckhz(hz,i) then writeln('heap big fuckup 2');
- deleted 4y ago[deleted]
- HeckFeck 4y agoVery neat code and somewhat legible for a non-Pascal speaker. Curiously, it doesn't credit authors in the headers as I've seen in sources from the same period. I also wonder how much of the core OS code made it into Macintosh System 1. Also, nice styling here: http://revontulet.org/2023/01/19/lisadesk.png http://revontulet.org/2023/01/19/lisadesk.png. They didn't have to do ASCII art in the comments but they did!
- cmrdporcupine 4y agoSome of it does (credit authors) some of it doesn't. Some has changelog entries, some single author (e.g. Bill Atkinson's stuff), some nothing.
- dhosek 4y agoPascal was designed to be a legible language. It eschews brevity for clarity, e.g., preferring BEGIN…END over {…} and tends to avoid footguns, although I remember writing a significant program in Pascal back in the 80s where I really wanted to be able to pass a function in to another function and was bummed that there was no way to do so (or at least not in Pascal/VS in 1987). Even though I’ve not written a line of Pascal since 1991 or maybe 1992, I still have no difficulty reading and understanding Pascal code when I find myself looking to see how, e.g., TeX manages some task.
- kps 4y ago> Also, nice styling here: http://revontulet.org/2023/01/19/lisadesk.png http://revontulet.org/2023/01/19/lisadesk.png. That site blocks my ISP.
- diskzero 4y agoThe QuickDraw code (LISA_OS/LIBS/LIBQD) is just glorious. While reading it, I am overcome by the creative genius of Bill Atkinson. [1]. Bill went on to become quite accomplished at cooking lunch for the team at General Magic. [2] [1] https://en.wikipedia.org/wiki/Bill_Atkinson https://en.wikipedia.org/wiki/Bill_Atkinson [2] https://en.wikipedia.org/wiki/General_Magic https://en.wikipedia.org/wiki/General_Magic
- pwdisswordfish9 4y agoThe QuickDraw source code has been available for some time: <https://news.ycombinator.com/item?id=2285569 https://news.ycombinator.com/item?id=2285569> Submitted several times to HN since then. Most recently: <https://news.ycombinator.com/item?id=16519132 https://news.ycombinator.com/item?id=16519132>
- TradingPlaces 4y agoOh, yes. >{ RoundRect Routines }
- bluedino 4y agoOne of the great stories: In early 1982, the Lisa software team was trying to buckle down for the big push to ship the software within the next six months. Some of the managers decided that it would be a good idea to track the progress of each individual engineer in terms of the amount of code that they wrote from week to week. They devised a form that each engineer was required to submit every Friday, which included a field for the number of lines of code that were written that week. Bill Atkinson, the author of Quickdraw and the main user interface designer, who was by far the most important Lisa implementer, thought that lines of code was a silly measure of software productivity. He thought his goal was to write as small and fast a program as possible, and that the lines of code metric only encouraged writing sloppy, bloated, broken code. He recently was working on optimizing Quickdraw's region calculation machinery, and had completely rewritten the region engine using a simpler, more general algorithm which, after some tweaking, made region operations almost six times faster. As a by-product, the rewrite also saved around 2,000 lines of code. He was just putting the finishing touches on the optimization when it was time to fill out the management form for the first time. When he got to the lines of code part, he thought about it for a second, and then wrote in the number: -2000. I'm not sure how the managers reacted to that, but I do know that after a couple more weeks, they stopped asking Bill to fill out the form, and he gladly complied. https://www.folklore.org/StoryView.py?project=Macintosh&story=Negative_2000_Lines_Of_Code.txt&sortOrder=Sort+by+Date&characters=Bill+Atkinson https://www.folklore.org/StoryView.py?project=Macintosh&stor...
- musicale 4y agoThis is fantastic. Wasn't the original Lisa source code famously lost by Apple?
- deaddodo 4y agoNo? I think you're mixing up the fact that they were supposed to release this almost half a decade ago and so random blogs conjectured that it was lost.
- musicale 4y agoThat is not what I was referring to at all. I seem to recall hearing or reading that Apple apparently lost the original GM source code for core Lisa software, because the backup tapes were corrupted or unreadable; fortunately a contractor had taken home and retained a profile drive with an alpha version of the source code, but the final/GM version was lost to the sands of time. (As always, backups are only good if you can actually read them and restore from them.) However, if the CHM source code is in fact 3.1 GM (as it seems like it might be?) perhaps this story is inaccurate, or perhaps it was recovered somehow. It would be interesting to see if the source code is complete and an entire working Lisa environment could be built from it. It would be interesting to hear from someone with firsthand knowledge.
- sedatk 4y agoThe source code of an entire operating system with applications of its time is just 6MB. Think about it. 30 years from now, Windows OS source code will feel like that, we'll download its zip in seconds and browse it. It'll feel miniscule. Linux too. Everything will feel so small after the AI Revolution of 2049, which will increase our code writing speed orders of magnitude, will write instant code for a device driver for a hardware by probing its input/output models based on your expectations from the device, even if the device doesn't support it, such as using a printer to measure ambient temperature by observing fluctuations in the ink capacity sensor. It'll figure that out on its own. Printers will have ceased to exist by then, of course, because of the great AI war against HP due to their cruel experiments on printers over decades to make them fail at unexpected times in order to maximize profits. We'll never be able to comprehend how the humans of 2022 were able to do anything with computers at all.
- arthurcolle 4y agoIn the future every application and its dependencies with all be 1PB binary ckpt blobs of some strange loop convnets served to us with ads over Neuralink Plug Pro via $1K a month subscription service with holo Elon standouts on our Twitter Platinum WristBand Ultra+ The future is dark
- safety1st 4y agoPretty sure I'll still be running Linux on my PC with my phone on silent in a drawer somewhere and won't have heard about any of this bunkum and balderdash
- xattt 4y agoThe same way there’s a minority pining for the days of OS X 10.4 to 10.6, there will be a group touting that iOS Xa was the last good OS. Assuming Apple would have adopted a Roman hexadecimal system for their numbering scheme.
- cube00 4y agoI look at retiring developers and wonder how they built Windows applications with no internet access, MSDN on CD-ROM and Petzold's books. The next generation will look at me with their AI tools and wonder how I built anything with primitive internet searches and StackOverflow.
- thelazydogsback 4y agoI remember walking into the Computer Factory in Grand Central station in NYC and playing with the Lisa. (Later I did some Smalltalk on the Lisa and the Techtronix.) I still remember the layout ca. 1979-83 like it was yesterday - on the right side when you walked in was a separate room with some kind of P-Code machine which was the "business mini". The Lisa and later the Mac were set up on a table on the right, and the Apple][ in the back. In the center were the Kaypro, and some other CP/M machines, and the Commodore Pets (the OG chicket keyboard version and the green-screen one w/the real keyboard) (incl. some IEE-488? accessories), the Sol II, and then the gfx show-offs (making my TRS-80 jealous), the CompuColor II and Exidy Sorcerer. The other wall had the printers - the Anderson-Jacobson daisywheel printer, an adapter w/solenoids to turn your Selectric typewriter into a printer, a few 9-pin matrix printes like the IDS Paper Tiger (right before the Epson MX-80 took over) Good times. Sigh...
- kytazo 4y agoIronically > Macintosh competed with Lisa and ultimately became the favored computer for its lower price and open software ecosystem
- lproven 4y agoIt's not ironic at all. The Mac originated as a cut-down Lisa. It's not some ironic competitor. It was a later machine, built on the back of lessons learned from the Lisa's failure. A lot of desirable stuff was lost: multitasking, app development in a high-level language (and a type-safe one at that!), expansion slots etc. And less desirable stuff: the template-oriented template and creator paradigm. Radical, innovative, but confusing. The Mac went with a much simpler, more conventional, documents-and-apps model, in the traditional CP/M and DOS style.
- Someone 4y agoI think the templates were a brilliant idea. They made somewhat of a comeback on the Mac and didn’t get huge traction, but still have remnants in current MacOS with its stationary pads (a poor implementation, and the Finder doesn’t even change the icon of a file when it is turned into a stationary pad)
- lproven 4y ago* stationery But you're right. :-)
- mrcwinn 4y agoOof, emotions. My uncle took receipt of a Lisa in the 80s but didn't have much use for it, so he gave it to our family. Lisa was my first computer. I used to use LisaDraw as a very primitive city builder: rectangles with circles to represent cars; boxes for buildings. I'd use the arrow keys to move things around. I can remember seeing the Lisa redraw pixels, top to bottom, as I pressed the keys. By the time I moved on to my first Mac (Performa 638CD with SoftFPU installed), I learned more about Apple and understood the Lisa to be a failure in the market, but it will always hold a special place. I assume this is Pascal and I can't really follow it very well, but it's quite a special thing to read the inline comments written by engineers who paved the way for me and inspired me. Writing this many, many years later on a 16" MacBook Pro with M1 Max.
- sgu999 4y ago> I used to use LisaDraw as a very primitive city builder: rectangles with circles to represent cars; boxes for buildings. Oooh you just reminded me that I used to do the same a decade later on my dad's Macintosh. Can kids have fun with super basic toys on computers these days? Or are they too used to seeing more advanced things on screens to even be interested?
- somat 4y agoMy nephew(5 years old) loves text-to-speach software. He likes to type in wierd stuff and then starts laughing, And that makes me start to laugh, we have a lot of fun with it. I still think the best gift you can give to a young child is a big cardboard box.
- melagonster 4y agoyes, turtle can't attract people when tought python.
- HarHarVeryFunny 4y ago"Took receipt of" ?! I wonder when in the 80's this was ? At launch in 1983 the Lisa cost $10,000 (about $50,000 in 2023 dollars)... Not exactly the sort of thing one casually gets handed!
- mch82 4y agoLink to the actual source code download page: https://info.computerhistory.org/apple-lisa-code https://info.computerhistory.org/apple-lisa-code Released under APPLE ACADEMIC LICENSE AGREEMENT Lisa OS Software version 3.1
- begoon 4y agoWhat Pascal compiler did Apple use to build all that? Looks like Turbo/Borland Pascal but I'm not sure that it existed in that time or/and was ported to 6502.
- pavlov 4y agoThe Lisa used the Motorola 68000, not the 6502. Turbo Pascal didn't exist yet. The leading Pascal of the early-1980s era was UCSD Pascal [1] but it used a cross-platform bytecode approach which wasn't very fast and wouldn't have been suitable for the Lisa. I suspect Apple built their own 68k Pascal compiler? But I'm sure someone on HN knows the actual facts. [1] https://en.wikipedia.org/wiki/UCSD_Pascal https://en.wikipedia.org/wiki/UCSD_Pascal
- shdon 4y agoProbably Apple Pascal which existed for the Apple II and Apple III, with a later implementation for the Lisa itself (which then got the name Lisa Pascal).
- pjmlp 4y agoClascal, which eventually grew to become Object Pascal. Turbo Pascal came much later, and Borland would adopt UCSD units in Turbo Pascal 4, and Apple's Object Pascal on Turbo Pascal 5.5, then its OOP capabilities grew from there based on what was happening on C++, influenced by Borland's work on their C++ compilers.
- HarHarVeryFunny 4y agoActually Turbo Pascal and the Apple Lisa were both released in 1983, although of course Clascal (which I never heard of until this thread) must have existed earlier to be used to develop Lisa.
- pjmlp 4y agoHere http://www.bitsavers.org/pdf/apple/lisa/toolkit_3.0/ http://www.bitsavers.org/pdf/apple/lisa/toolkit_3.0/
- peepee1982 4y agoMan, I wish beige was still an option when buying a new desktop computer these days. I know I hated that color when I was a teenager, but it just looks so nice to me now. Like it would be a perfect fit for a bland old boho styled apartment.
- hulitu 4y ago> Man, I wish beige was still an option when buying a new desktop computer these days. Oh those grandpas. We evolved. Now everything is black: computer cases, power supplies, motherboards, keykoards, mouses, RAM modules, even the GUI^w UX. /s
- begoon 4y agoReleasing to public the sources of the old software, especially from platforms which are gone, is very cool! I would die to see the original sources of Norton Commander 3.0 written by John Socha. They say, he used "an ortodox" (back in the day) approach of C and assembler mashup, which not many programmers used that time, and "real programmers" always wrote in assembler :-)
- phendrenad2 4y agoNow the question is: Can I build a LISA in 2023? I know a lot of the parts are common with the Macintosh, but being an earlier model, maybe it has fewer custom ASICs? I can hope?
- nintendo1889 4y agoThe A/UX 0.7 source code has been floating around for awhile. If you search emule for 'various operating system source', you will find it in a (700 mb, I think) archive that also has NextStep, SunOS, Ultrix, and some other sources.
- bitsavers 4y agohttps://computerhistory.org/blog/apple-lisa-still-more-to-uncover/ https://computerhistory.org/blog/apple-lisa-still-more-to-un...