oh hey everyone, author here, ssheven is still beta quality, so I wasn't really posting about it anywhere yet, but it's usable and has the core functionality working ok
I plan to do a writeup about it, and the experience of developing for old macs, once I finish the 1.0 release
edit: btw, this is my first project for the classic Mac OS, I hope to inspire others to also jump in, retro68 is a very usable toolchain (big thanks to Wolfgang Thaller/autc04)
LC III is a real sleeper. It's much better than the previous in the series. The case is great to work with, it's small, runs cool (if you replace the hard drive it should be no problem to remove the fan), and is faster than any compact. And it takes the 36MB RAM.
Sorry for posting it before you were ready! I just thought it was really cool, and I thought getting you some more eyeshare might be useful in helping you find more folks wanting to work on it.
it's no problem, the killer feature (that it works at all, and can connect to modern servers with default configs) is solid, and more people using it will help flush out bugs
This is so cool. I've been wanting to pick up an older mac for the sole purpose of doing some programming on classic MacOS myself. I actually have a Macintosh SE, but it's a bit too underpowered for my tastes. Anyway, I was hoping you might be willing to share what your development environment looks like. Language, editor, etc. Thanks!
Edit: I think I started to reply before your edit. Retro68 sounds amazing!
if you want to go period-appropriate, you can run Macintosh Programmer's Workshop or CodeWarrior natively
I use retro68 on linux, which is a modern GCC toolchain, so it's just like developing any other C/C++ (well, without some nice debugging tools, and with the added complexity of the mac OS resource stuff)
Cool project! I installed it onto my SE/30 with 16 megs of RAM. The machine is mostly a museum piece but its neat to be able to connect to modern systems from it.
I’d love to hear more about retro68, your experience finding documentation for the various APIs. Stackoverlow didn’t exist when these APIs were in use.
Oh wow, thank you for this. :) I was just restoring an iMac G3, the Flower Power edition, and ran into more trouble than I expected trying to transfer data via a USB flash drive. Filesystems that Mac OS 9 should support were either not mounting properly or causing errors during file transfer when formatted on a modern Apple or Linux system (exFAT was the only one I could get to work for some reason). I’ve been casually looking around for some sort of NAS solution that would be compatible with older versions of Mac OS, but with native scp I can just download files from a Linux box (perhaps a dedicated Raspberry Pi) and skip right to the fun part: exploring all of the weird, cool and charming software and games from this era. So cool!
For classic macs with ethernet ports, the simplest method I have found is to host a basic FTP server on another computer (e.g. you can set one up easily enough on a Raspberry Pi) and use an Ftp client such as Fetch on the mac side. I use this method to get files to and from my LC III, which also functions as a bridge baby to the really old macs via the Appletalk serial port.
This is what I do, and it works pretty well if a little cumbersome at times. I have a little museum I've built in my office during the pandemic that consists of:
- SE/30
- Docked Duo 280c
- 7100/80
- PowerComputing PT Pro 250
- NeXT TurboStation
My primary Linux workstation is where I browse for old software and download it, then I get at stuff from the vintage Macs via FTP using either Interarchy or Fetch.
Rather than run a bunch of Ethernet cables all over the place I put little Ethernet to Wifi bridge adapters on them. Works great.
I had a next slab in the 00s but I had to get rid of it because of space. Recently, I had a Pentium 3 random machine and I finally managed to install OpenStep 4.2 on it. The trick is to find the absolute latest patch to have the VESA driver so you can have color.
If you are curious about NeXT, I highly recommend finding a random intel pc from the 90s and installing the intel NeXTStep versions or OpenStep.
Just unrelenting hunting on Craigslist, eBay, and Facebook Marketplace. I think I got the PTPro on Craigslist.
I actually have a PowerCenter 150 slim-profile Desktop (and a spare Sonnet G3 400/1M CPU upgrade for it) that's currently in storage. I haven't decided if I should try to find a good home for it yet. The PowerTower Pro replaced it in my office collection because I wanted a box I could cram full of esoteric tech:
- Formac Proformance 3 (3DLabs Permedia3)
- 12MB 3Dfx Voodoo2
- OrangePC 660 w/ K6-III
- Digidesign Audiomedia III
- ATTO Dual UltraSCSI
- Sonnet Encore G4 800/1M CPU (which is both cool and also finicky as all get out)
It's got one PCI slot left which I want to plop another Voodoo2 into for a vintage SLI setup.
All that said, both my SE/30 and my 7100 are packed to the gills with even weirder toys. :-)
Well, mostly I just like the novelty. I have a Radius Rocket 33 (68040) and an OrangePC 290 (Cyrix 5x86) in my 7100/80. It's kinda fun to play with a classic Mac a PPC Mac and a classic PC all in one box. I finally got them to run DOOM II bots against each other.
The OrangePC 660 has an NVIDIA RIVA 128 on it, so I use it to play with old CAD/CAM software sometimes and it's kind of fun (similar to the 7100) to fire up some cross-platform games (e.g. Myth TFL/II, Quake 1/2, etc. and get the Mac side playing against the PC side).
At the end of the day it's all just technological novelty and esoteria, of course.
Or, if you want to do it in the other direction (sometimes this is more convenient), NCSA Telnet for the Mac has a built-in FTP server. I use this to upload files to the Power Mac 7300 directly from this Raptor Talos II.
You have to run the 2.x series to interoperate with older "classic" Macs. Nearly everything these days packages the 3.x series and thus only works with more recent OS X clients.
That is true for AFP over AppleTalk, yes. Netatalk3 only supports AFP over TCP, but that's fine as far back as System 7 using AppleShare Workstation with MacTCP. System 7.6 and later can use AppleShare Client 3.8.8 with OpenTransport: https://web.archive.org/web/20110418060150/https://support.a...
It's not the protocols that are entirely the problem. It's the authentication mechanisms that also create limitations. I had zero luck getting my 6.0.8 thru 8.6 installs to connect to Netatalk hosts on either my FreeNAS box or my Ubuntu 20.10 workstation until I manually built and installed the old 2.x tree.
FWIW I've had no trouble connecting to the built-in install of netatalk 3.1.8 on my Synology NAS from MacOS 8.1. I can't remember if I had to tweak the config or not.
It's been a few years so I don't remember if I ran into any difficulties or what options I may have changed from default, but I've definitely used it with my Quadra v(._. )v https://i.imgur.com/yjGGN9k.jpg
I genuinely think it fits right in. Apple always had a good aesthetic, even when everything was beige and rectangular. I did a giant chunk of my school work on Claris Works, before I discovered latex. Happy memories.
That aesthetic was widespread throughout the PC universe in the 90s as well. I remember having a giant clip-art library that came on a whole bunch of CDs, and actually came with a catalog book to leaf through. A lot of it looked like that. Another example is Microsoft's clipart library, (in)famous for its images of the "screen bean" guy.
Mac OS 9 has virtual memory (it uses virtual address translation and it can swap pages to disk), but it still has a single address space that is shared between every application.
This is an issue for SheepShaver (limited to 9.0.4 because 9.1 and up require the MMU as you say), but not QEMU, which emulates the MMU and thus runs 9.2 just fine.
No, after 8.6 the system featured a micro kernel on which the old OS ran atop. I think you could opt in for better stability, but I'm not sure. But most of the OS and apps still ran on the same shared memory space with cooperative multitasking, meaning a single app could (and did) bring the whole system down.
I think you can emulate 9.2 just fine, but it's been a while since I played with this things.
I still flick between After Dark (or at least, an After Dark clone) and the old windows 95 maze screensaver on my work machine. I get a lot of positive comments from people in the office that spot it and talk about how they miss those old screensavers.
Funny, to me this machine as described is a monster. My brain still registers a 68040 as a powerful processor. My Atari ST ran a full GUI in 8mhz and 512K of RAM (+192KB of ROM) on a 68000. The original Mac had 128MB onboard RAM. GEOS on a C64 runs a convincing GUI in under 64K... on a 6502!
My first PC was a 50mhz 486 with 8MB RAM, and I ran X11 + various things (netscape, xemacs, etc.) on it without a whole lot of issues.
the GUI code for the earliest macs was absolutely a great feat of engineering
by getting my hands dirty with the system, I'm impressed by the way things were designed for the wimpiest processors (and also getting a lot of insight into the flaws of the OS that were exposed as machines became more powerful)
With the exception of (high-resolution) video, I still do much the same things I did on my computer 20 years ago. Most of it involves fetching and sending text over the internet. It's a little prettier now, the protocols are more advanced, and (crucially) it's a lot easier to develop and distribute applications[0], but in the abstract sense there's absolutely nothing new and nothing older machines couldn't handle given the right set of protocols - i.e. less JSON, less downloading raw application source code and expecting to run them in less than 100ms.
[0] The web is good, actually. It sucks, but it's also pretty good.
The faster the hardware gets, the more software becomes inefficient. Unfortunately, hardware hasn't become much faster outside of niche cases (massively parallel vector computations etc.) for the past decade or so.
Efficiency isn't limited to execution speed. Memory protection is efficiency, even if it has cost in execution speed. Better abstractions make it possible to write more complex programs, at the cost of some execution speed.
I've programmed on very slow hardware in the past, and the only thing I miss from those days is my hairline.
> Is modern encryption a challenge to those old machines?
Ooooooh yeah. It's got some serious overhead on single core systems several-hundred-megahertz systems without the instructions that are used to accelerate encryption these days. AES is what modern CPUs use to help with that. It wasn't until Power7+ before encryption was accelerated on that class of CPUs. The latest Mac to use Power CPUs was discontinued 6 years before that.
Once you have authenticated each other and agree to a nice symmetric cipher and exchange the keys for that, yes. Bytes, even kilobytes per second. But note the "once you have authenticated". Public key crypto is brutal number crunching and takes minutes to hours on systems of the 80s, and some noticeable seconds even in the late 90s. I think that's why something like RSA-4096 was not just universally adopted 30 years ago. It was too expensive to compute for casual use.
Since you mention EC, it uses floating point. Good ol' FLOPS is not a wholly useless metric there. The first commercial processor sold with a floating point unit integrated was the 486 in 1989. Some rough, unsourced numbers:
I am making the same mistake that the other poster did, in assuming too much background familiarity. Those are 90s chips. This software runs on machines from the late 1980s. The trend scales further back as it does forward. Five years is always a long time in computer performance.
The 486, the slowest chip on my list blasts the early Macs (which this software runs on) out of the water by 100x. I went and researched it and the the 68882 FPU at 25 MHz is about 0.25 MFLOPS: http://www.faqs.org/faqs/motorola/68k-chips-faq/
Stunning, but that is the difference between 1985 and 1989 technology.
The first Macs were 8 MHz 68000 chips. The GUI was still very responsive. The menus popped down and Quickdraw (the graphics library) properly handled arbitrarily shaped overlapping windows. There was a demo with a round window and windows in the background updated perfectly. Bill Atkinson invented the Regions data structure (and the rest of Quickdraw) that allowed among other things, background windows graphics calls to be clipped to arbitrary combinations of foreground windows super efficiently. Atkinson is one of the greats.
> I am making the same mistake that the other poster did, in assuming too much background familiarity. Those are 90s chips. This software runs on machines from the late 1980s. The trend scales further back as it does forward.
my point was on interactive use (i.e. using AES or ChaCha)
you are the one that diverted the topic towards RSA-4096 (which no-one uses), moving the goalposts (twice)
Yep. AES will run fine on any of these machines. These machines are in practice still sort of usable with SSH, with some patience for login depending on protocol.
I deleted the post because I was a bit too aggressive, but apparently the damage was done. I apologize for lecturing you like a prat.
It just occurred to me while reading this comment that people born after Intel CPUs mostly leveled out perfwise are probably peers now. That realization came hard, it came fast, and I wasn’t ready to live with that knowledge by a long shot.
It was a long, long road to your 2014 laptop, friend. There was a time when division was a luxury, and desperate folk offered their firstborn for forbidden tricks to compute inverse square root. Elliptic curve, you say? You mean floating point math? Whoo-ee!
Power7+ came out in 2012 which was the first gen of Power CPUs to include AES acceleration. [1]
The most powerful Power Macs with non Intel CPUs were discontinued in 2006. (G5, released 2003.) [2]
Your laptop from 2014 was already running at LEAST a 64bit CPU and likely has AES instructions as they were introduced in 2010 [3]
So even if your laptop from 2014 onward didn't include AES instructions like some Intel Atom/Celeron/Pentium models... (Acer C720P Chromebook, for example came out in 2014 and has a Intel Celeron 2955U [4] and [5]) It was still an architecture that is/was ELEVEN YEARS NEWER. A Celeron 2955U is roughly equivalent in performance to a Core 2 Duo E4700 or an AMD Athlon 64 x2 5200+ ... which is still quite ahead of a PowerMac G5. [6] and [7]
TLDR: Time marches on and along with cpu improvements come instructions and other benefits not immediately visible to the end user.
Try using your old 2003-era system to generate keys again and tell us how fun it is. Bonus if you try it on a Pre-2000 era Performa Mac as a user typically had with SystemOS 7, 8 and 9. Those ran at 16 to 66mhz. [8]
For reference, SystemOS 7 came out in 1991. [9] OS8 came out in 1997. [10] And OS9 came out in 1999. [11]
The CPUs inside the Performa Macs running System 7, OS8 and OS9, at best, can be compared to the 486s on the Intel side. Not even Pentium level. This places the architecture at LEAST a dozen architecture generations behind what you're generating keys on. This means if the CPUs we're looking at here were aged up, your laptop is starting first or second grade while the actual CPUs of the time are now finishing their masters' degrees with a kid or two on the way.
Rather than naively using your extremely modern in comparison 'crappy laptop' cpu as a reference point, perhaps you should use something more typical from the time these OSes were considered relevant.
You must be young. The gap between 1989 and 1999 in computer terms is inmense, far more than the gap between 2010 and 2020. You could emulate a 1989 m68k Mac/Amiga on a Pentium 3 from 1999, for example with BasiliskII/UAE.
Performance increase did not stop; smaller, better designs. The exponential is just a bit lower.
We don't realize it, just as someone using a text terminal may have not realised it between 1985 and 1995, if every response after a key press was already instant.
For typical GUI interfaces, tasks like tossing video data around, and so on, computers became approximately inifinitely fast sometime c. 2005 - 2010.
It's the encryption. For Crypto Ancienne, it may take 20 or more seconds for a cacheless 25MHz '030 to do a local TLS 1.2 transaction, and that's with skipping a whole bunch of steps. Pretty much anything under 40MHz will have timeouts because most servers won't wait.
For reference, using modern ssh to connect to a 15 MHz m68030 Mac LC II with 16 bit memory bus takes literally just under ten minutes (NetBSD 9 to NetBSD 9). An LC III+ with 33 MHz, 32 bit bus m68030 takes a little over 3 minutes.
the crypto code actually has some 68020 assembly (credit to the mbedtls devs), it could probably be made faster, but I would need to sharpen my assembly skills a lot
doing the initial key exchange before timeout is barely possible for a 68030 at 16MHz, takes the better part of a minute!
of course, on the later PPC machines it's a complete non-issue
> Is modern encryption a challenge to those old machines?
I've used modern encryption/mac routines on small embedded micro's and they seem reasonably efficient. Couple of operations per byte. They have to be fast because they are used for decrypting stuff like streaming video. I think an exception is password hashing algorithms which are slow by design.
That said some of the older algorithms are really inefficient. Hundreds of ops per byte.
Depends in part on the cipher suite. For software implementations, the current generation of chacha20-poly1305 and ed25519 are tolerable. But earlier generation ciphers were designed with hardware acceleration in mind.
This tool is relying on libssh2 for its SSH implementation core. chacha20-poly1305 and ed25519 are both extensions and are not included.
Yes, modern SSH is a challenge even on the fastest 486-class machines, which are very roughly comparable to this 68030. Takes several seconds to complete a connection.
For real. I’ve tried porting several modern UI libraries to classic Mac, such as Nuklear, uGUI, and a couple of others. And I’ve succeeded in getting them working, but as soon as you start doing something with text, they fall on their face. Just having a text input is nearly impossible on an 8MHz 68000!
This is amazing. I am going to try running this on a Raspberry Pi emulating System 7, and relive the hours I spent logging in to remote machines back in the dial-up days.
This is perfect! Just replaced the battery in my SE/30 and will have to try this as soon as I find an ethernet solution. There are PDS ethernet cards but they're rare and expensive, or SCSI-ethernet adaptors but they're slow.
i believe that before OSX, the OS itself had no terminal/shell/command prompt, and I suspect Macs were very rarely used for development back then; it was only with Unix-based OSX that it became hugely popular.
Who WAS Apple's customer base during the classic MacOS era?
I remember Apple II's dominating when I was in school back in the 1980's. Then in the 1990's when I was in college, all I remember seeing anywhere were PC's. DOS and then Windows for the masses, and this new thing called Slackware Linux for many of us in the CS department.
In the 2000's I started hearing about Macs, but only for creative domains like Photoshop or video editing. Then the Intel CPU switch happened, and today I'm on a MacBook just like pretty much every other programmer I know.
What was Apple's "niche", and who was their "base", back in the 1990's?
They were big in education-- student computers in elementary and middle school for me (basically, about 1992-2000) were basically 100% Macs. It wasn't until high school that Windows boxes started showing up in classrooms and computer labs.
They've also always had a decent base in the creative space-- Photoshop 1.0 being a Mac app had a big impact. Scully's mismanagement of the company meant a lot of people dumped the company in the mid-1990s, though; Jobs' return, the OSX transition, and the Intel switch were all necessary to bring the Mac division back up to where it is today.
As one of those customers back then: lots of QuarkXPress and Photoshop. Upgrading from a 7100 to a Sawtooth G4 was a dream come true. It was still running 9.2 when I left that office.
It used to be really hard to get printer output to look the same on the page as what you saw on the screen, and the small details matter when people are laying out a complicated magazine (or whatever) page and need text to flow around images and other design elements. There was a whole Adobe-vs-everyone battle over things like outline (as opposed to bitmap) font technology since they controlled the standard for PostScript fonts as used by printers like LaserWriter: https://en.wikipedia.org/wiki/PostScript_fonts#Type_1
Then still lots of back and forth over things like Adobe's multi-master fonts vs TrueType GX which despite being part of the "failed" QuickDraw GX actually lives on in OpenType today:
"he calls the layout artist (which was probably Jacob Riskin or George Weising at the time), 'my trusty [Macintosh] Quadra operator'. What an assface."
For publishing, color management was also a huge thing - at the time Apple's ColorSync [1993] was vital to getting your display, local proof printer, and the printing press all color calibrated together. Adobe developed a Windows version but it was never as well-integrated/supported.
"The MPW Shell command language was based on the Unix csh language, but was extended to support the main features of the Macintosh GUI. It had simple commands to create menus, dialogs (prompts), and new shell windows. The cursor could be controlled, and MPW scripts or tools could easily be attached to a menu item. Command key shortcuts could be specified. Window size and location could be controlled. These features were popular in commercial production environments, where complicated build and packaging processes were all controlled by elaborate scripts."
There was some kind of command prompt you could bring up with some really obscure combination of keypresses. I remember encountering it on System 7 and MacOS 8. I never did figure out what could be done with it
You're thinking of the debugger - the default Microbug that was built-in was pretty much only useful for printing or writing memory (or typing G FINDER into it, causing the front app to crash and bringing you back to the Finder if the app was hung).
Macsbug[0] which was an optional install was much more feature-rich, but it was still just a debugger and not actually a command line environment.
Classic MacOS had also ExperLisp, Procycon Common Lisp, MacScheme plus two embedded Lisp Machines as NuBUS boards: TI MicroExplorer and the Symbolics MacIvory.
That's correct. There was A/UX which was a unix that ran the mac finder and MachTen which was a posix implementation for classic mac os you could launch like an app, but it wasn't until os x that it shipped with Terminal.app
I plan to do a writeup about it, and the experience of developing for old macs, once I finish the 1.0 release
edit: btw, this is my first project for the classic Mac OS, I hope to inspire others to also jump in, retro68 is a very usable toolchain (big thanks to Wolfgang Thaller/autc04)