Lisa source code released

casperes1996

Power User
Posts
185
Reaction score
171
I came here right when I finished downloading the code. Went to see if a thread existed, fully expecting I would be creating it, but Cmaier as always is fast to create threads for all the fun things ;)

I've had my first peak through a few things, but want to investigate a lot more. Took me a while to realise that a lot of this was Pascal. Not really a language I've touched before (though my brother has), so I sat there like "It's not COBOL.... It's not ALGOL... Fortran it is definitely not... Those comments are ML style, but it ain't ML", haha. Took quite a while to realise.

Also pretty much all files end in .unix.txt; I'm guessing this was appended during a conversion to Unix-style line endings or something? Any other ideas?

It would also be nice if someone can decipher the abbreviations. There might be explainers in some of these files - There's good descriptions in many of them of how things work it seems.
 

casperes1996

Power User
Posts
185
Reaction score
171

I hear the f-word is in there at least a dozen times.

I grepped, and I only see it 10 times :p Two of which are in binary files, and a lot of the others are in writeln strings, so it would actually be written to a user-visible console if there was heap corruptions as "heap big f*-ups #" where the # is a number (different versions exist)
None of the instances are in "bad" ways. I mean it can be argued it's always unprofessional, but it seems to always be used in a way to say "code is in a bad state if we land here" or similar, not like "I f* hate this" or similar which I have also seen in the wild in some codebases.
 

Cmaier

Site Master
Staff Member
Site Donor
Posts
5,326
Reaction score
8,516
I came here right when I finished downloading the code. Went to see if a thread existed, fully expecting I would be creating it, but Cmaier as always is fast to create threads for all the fun things ;)

I've had my first peak through a few things, but want to investigate a lot more. Took me a while to realise that a lot of this was Pascal. Not really a language I've touched before (though my brother has), so I sat there like "It's not COBOL.... It's not ALGOL... Fortran it is definitely not... Those comments are ML style, but it ain't ML", haha. Took quite a while to realise.

Also pretty much all files end in .unix.txt; I'm guessing this was appended during a conversion to Unix-style line endings or something? Any other ideas?

It would also be nice if someone can decipher the abbreviations. There might be explainers in some of these files - There's good descriptions in many of them of how things work it seems.

Pascal was the second language I learned, after Basic (if you don’t count TMS9900 assembly). Turbo Pascal was the first compiler I used, and I recall using it as late as 1988 or 1989 when I had to write a program to simulate gravitational motion for some freshman college class. Around that time I started learning C with Turbo C, but if I recall correctly it didn’t have a lot of libraries and I don’t think you could do anything other than console I/O in those early versions, but I may be misremembering.

Anyway, Pascal was very commonly used by OS-folks in those days.

As for .Unix.txt that had to be the translation process.
 

lizkat

Watching March roll out real winter
Posts
7,341
Reaction score
15,163
Location
Catskill Mountains

I hear the f-word is in there at least a dozen times.

Hah, maybe in some comment left by someone who was "... still waiting..." for specs on a stub that never got called and so it never got coded and no one ever noticed. We found stuff like that once in a brokerage back office project we were revisiting as contract employees. Actually it was the c-word and also referred to some client-side manager and a specs delay.

A colleague and I took the source listing to our own project manager. She said yeah ok just take that part of the comment out so they don't think it was us... and look for any more stuff like that while you're at it, because that, uh... person... still heads up the group using these apps.
 

casperes1996

Power User
Posts
185
Reaction score
171
Pascal was the second language I learned, after Basic (if you don’t count TMS9900 assembly). Turbo Pascal was the first compiler I used, and I recall using it as late as 1988 or 1989 when I had to write a program to simulate gravitational motion for some freshman college class. Around that time I started learning C with Turbo C, but if I recall correctly it didn’t have a lot of libraries and I don’t think you could do anything other than console I/O in those early versions, but I may be misremembering.

Anyway, Pascal was very commonly used by OS-folks in those days.
Yeah. My brother (who's an accountant and just did some programming for fun a long while back, never seriously) used Delphi and thus Apple's dialect of Pascal, I believe it was called Object Pascal. I knew of its popularity but I had just never really come across it much so it took a while for it to cross my mind when I first looked at the code that, likely due to file extensions, cloc and scc both deemed to be entirely "plain text".
As for .Unix.txt that had to be the translation process.
Yeah that's what I figured too
 

casperes1996

Power User
Posts
185
Reaction score
171
Hah, maybe in some comment left by someone who was "... still waiting..." for specs on a stub that never got called and so it never got coded and no one ever noticed. We found stuff like that once in a brokerage back office project we were revisiting as contract employees. Actually it was the c-word and also referred to some client-side manager and a specs delay.

Nah. It's things like "check that a pointer given to the kernel by userspace points to valid memory it's allowed to touch, if the pointer is f*'ed error" (not verbatim quote, extended for wider context.
 

Citysnaps

Elite Member
Staff Member
Site Donor
Posts
3,693
Reaction score
8,993
Main Camera
iPhone
Another popular version of Pascal in that timeframe was Lightspeed Pascal by THINK Technologies, and then later acquired/released by Symantec.
 

lizkat

Watching March roll out real winter
Posts
7,341
Reaction score
15,163
Location
Catskill Mountains
Nah. It's things like "check that a pointer given to the kernel by userspace points to valid memory it's allowed to touch, if the pointer is f*'ed error" (not verbatim quote, extended for wider context.

Heh yeah that's how code should be annotated. Stuff we had to fix didn't always offer that many clues to what was going on and it was real spaghetti code too. We ended up inserting some console writes while debugging some transaction processing errors, and kept those remarks civil and succinct. But... I can't swear we didn't leave a few choice critiques as commentary on some of the original code. You learn something on every project. On that one I learned some days are longer than others.
 

Yoused

up
Posts
5,621
Reaction score
8,938
Location
knee deep in the road apples of the 4 horsemen
Another popular version of Pascal in that timeframe was Lightspeed Pascal by THINK Technologies, and then later acquired/released by Symantec.

Oh, I have things to say about that.

When I got my first Mac 512Ke, I was kind of unwealthy and could not afford programming tools. But then I discovered this little grey plastic thing stuck into the vent grill at the bottom of the machine, which turned out to be the reset and interrupt switches. The interrupt switch got me into the machine, and I had the Inside Macintosh books that let me understand what I was looking at. For entertainment, I started programming work from there and eventually got up to writing a tiny application that let me do simple hex machine code programming.

After a few years, I had the money to actually buy that Pascal. Which was kind of awkward, going from ML to a HLL. Old habits are hard to break. But, at some point, I went and looked at the object code from that. It was just awful. To a tight-budget ML programmer, it looked terribly antioptimal. I guess I can see why it was popular, getting the job done (Pascal protocols were used by classic Mac OS), but if a Mac app was slow, that Pascal was most likely why.

Of course, later I fooled around with XCode, and that compiler was GigaParsecs beyond Think Pascal. You could write verbose C in XCode and do a debug run, look at a value at a breakpoint and discover that you could not look at that value because the compiler had obfuscated it away in the process of condensing 4 lines of C into just 3 instructions. In the early '90s, I could write really good, lean machine code, but these days, a decent compiler is better rather than worse than a machine-level programmer.
 

jbailey

Power User
Posts
170
Reaction score
187
When I got my first Mac 512Ke, I was kind of unwealthy and could not afford programming tools. But then I discovered this little grey plastic thing stuck into the vent grill at the bottom of the machine, which turned out to be the reset and interrupt switches. The interrupt switch got me into the machine, and I had the Inside Macintosh books that let me understand what I was looking at. For entertainment, I started programming work from there and eventually got up to writing a tiny application that let me do simple hex machine code programming.
I tried a couple of cheap development tools for my original Fat Mac (Mac 512k). There was a Pascal compiler called TML Pascal that as far as I could tell only generated invalid object code. Even a simple hello world would usually just crash. I had better luck with a Forth environment called MacForth(?). It had issues too but at least I could create working software.

Once I had Apple’s MPW environment and Think Pascal it got better but early Mac programming was hit or miss.

Edit: Officially you were supposed to buy a Lisa and use that for development. I didn’t have $5000 or whatever the Lisa cost so that was a non-starter.
 

Citysnaps

Elite Member
Staff Member
Site Donor
Posts
3,693
Reaction score
8,993
Main Camera
iPhone
Oh, I have things to say about that.

That's a great story!

I also owned a Mac of that vintage (the one with a SCSI port - IIRC, a Fat Mac) and played around with Lightspeed Pascal. It was mostly out of curiosity as I was a hardware/systems engineer. But occasionally had to write some software to support hardware I was developing at work. Looking back… I pretty much sucked at writing decent (and supportable) code.

I eventually “graduated” :) to Zedcor’s ZBasic (which later became FutureBasic). What was great there was also a one person company that wrote a bunch of graphic user interface calls that one could use to write and compile solid apps with nice user interfaces in Basic without a lot of fuss. And…I no longer needed the Inside Macintosh books. :) I actually developed a commercial program with those tools and sold a few.
 

Cmaier

Site Master
Staff Member
Site Donor
Posts
5,326
Reaction score
8,516
You guys must have been rich.

First time I touched a mac was in Exponential’s lab.
 

Citysnaps

Elite Member
Staff Member
Site Donor
Posts
3,693
Reaction score
8,993
Main Camera
iPhone
You guys must have been rich.

First time I touched a mac was in Exponential’s lab.

My company at that time (ESL Inc.) had an arrangement with Apple, and employees got a pretty substantial discount. As time went on we used a lot of more advanced Macs in systems ESL developed and delivered to customers.

Altogether, it turned out to be a win-win for everyone.

Also...years later after Jobs was canned at Apple and started Next, ESL and Next had a formal agreement to collaborate on programs and systems using Next's computer. Jobs came to ESL and spoke to a large group of employees in the company cafeteria.
 
Last edited:

Cmaier

Site Master
Staff Member
Site Donor
Posts
5,326
Reaction score
8,516
My company at that time (ESL Inc.) had an arrangement with Apple, and employees got a pretty substantial discount. As time went on we used a lot of more advanced Macs in systems ESL developed and delivered to customers.

Altogether, it turned out to be a win-win for everyone.

Also...years later after Jobs was canned at Apple and started Next, ESL and Next had a formal agreement to collaborate on programs and systems using Next's computer. Jobs came to ESL and spoke to a large group of employees in the company cafeteria.
My roommate in grad school had a NeXT cube. I was so jealous.
 

Yoused

up
Posts
5,621
Reaction score
8,938
Location
knee deep in the road apples of the 4 horsemen
I also owned a Mac of that vintage (the one with a SCSI port - IIRC, a Fat Mac)
The 512Ke had the bigger ROM, so it worked pretty well. The guy that sold it to me threw in an external 400K floppy, which saved me a bit of pain, but, damn, that thing sounded like a garbage truck. Later, I got a DayStar board that clipped onto the CPU (but I had to solder on a holder because the clip got flaky) to give me 4 SIMM slots and SCSI – essentially turning it into a Mac Plus. Once I had enough RAM in it, it was practical to run MultiFinder and I could have more than one program open at a time. Also, the hard drive (88Mb removable) made life a bit easier.

I actually still have it out in the garage, and it still boots (I think), but the keyboard is dead. The signatures are still inside the case, though.
 

lizkat

Watching March roll out real winter
Posts
7,341
Reaction score
15,163
Location
Catskill Mountains
I tried a couple of cheap development tools for my original Fat Mac (Mac 512k). There was a Pascal compiler called TML Pascal that as far as I could tell only generated invalid object code. Even a simple hello world would usually just crash. I had better luck with a Forth environment called MacForth(?). It had p issues too but at least I could create working software.

Once I had Apple’s MPW environment and Think Pascal it got better but early Mac programming was hit or miss.

Edit: Officially you were supposed to buy a Lisa and use that for development. I didn’t have $5000 or whatever the Lisa cost so that was a non-starter.

More like $10k, no? Almost $30k in today's money. But my nephew found an old LIsa in a dumpster outside a Syracuse University campus building once sometime in the 90s after the school had cleaned out a bunch of old stuff from their storerooms... so he snagged it and not having room for it in the place he was sharing, he showed up at my place one weekend and more or less comandeered a worktable in my sewing studio for the thing to sit on.

I had been thrilled to own a 512k Mac back in 1985 but couldn't imagine how anyone could have scraped together the dough to buy a Lisa... and then so many years later, one was parked in my house!

Unfortunately at the time I was up to my eyeballs working remotely and supporting both the LA and NYC offices of the company I worked for, so... sad to say I never got to mess around with that Lisa-on-loan. Eventually my nephew reclaimed it and I always meant to ask him what he did with it. Now I'm reminded of those days, and I'm going to ask him about it.
 

Citysnaps

Elite Member
Staff Member
Site Donor
Posts
3,693
Reaction score
8,993
Main Camera
iPhone
My roommate in grad school had a NeXT cube. I was so jealous.

Way back then, on our own time while we were employed at ESL, a friend and I developed a PC-based signal processing accelerator board based on AT&T's brand new DSP-32C floating point signal processing chip. It was the only DSP chip that was floating point based at the time. I did the hardware, my friend wrote a bunch of signal processing routines (FFTs, digital filtering, etc) that could be called from a user's program.

On a lark, we wrote a letter to Jobs making a pitch to make a similar product for the Next Cube (don't remember if it had a buss, or would need to be external). Through his secretary we snagged a meeting with Jobs at Next when they were located in the Palo Alto hills.

I was on a business trip at the time, so my friend met with Jobs and kicked around some ideas. Apparently he seemed interested wanting to get in scientific/government markets. But ultimately it never went anywhere. Have a feeling Jobs came to the conclusion it was something they could do internally. Which was likely very true.
 
Top Bottom
1 2