Ssheven: A modern SSH client for Mac OS 7-9
github.com
github.com
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)
I'm writing this comment from the LC III using w3m over ssh :)
I think my own LC III has either 12MB or 20MB.
Edit: I think I started to reply before your edit. Retro68 sounds amazing!
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)
- 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.
> Rather than run a bunch of Ethernet cables all over the place I put little Ethernet to Wifi bridge adapters on them. Works great.
That's genius, thanks for the tip.
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.
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. :-)
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.
It just went from fiddly and non-working to braindead easy once I downgraded to 2.x
:shrug:
That, by itself alone, would have been amazing.
I don't miss the lack of memory protection of classic Mac OS, but I do miss everything else.
I also think the OS, technically, was preemptive multitasking, but ran all ‘normal’ code in a single preemptive task (https://groups.google.com/g/comp.sys.mac.programmer.help/c/f...)
I also vaguely remember the kernel had some memory protection enabled.
Of course, almost none of that mattered for typical user-space programs.
Was it common for applications to reach directly into kernel memory instead of using proper APIs?
I think you can emulate 9.2 just fine, but it's been a while since I played with this things.
there's full design for a box and a floppy label that I've made for the upcoming 1.0 release
https://www.screensaversplanet.com/screensavers/after-dark-f...
Seems to work fine on Windows 10, just not across multiple screens
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.
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)
[0] The web is good, actually. It sucks, but it's also pretty good.
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? Is it because of specialized encryption hardware or sheer brute force?
Or is it just this implementation that's slow?
I used telnet back in the 68k days.
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.
for interactive use, compared to rendering to the display and pushing the packet out the crypto overhead is going to be minuscule
my 2014 laptop (on battery, no hardware acceleration):
sign verify sign/s verify/s
rsa 4096 bits 0.006200s 0.000096s 161.3 10468.9
(not to mention everyone's using ec these days, which is quite a bit faster) 1984 - Cray X-MP (expensive!) 800 MFLOPS
1989 - Intel 486 @ 33 MHz 3
1993 - Pentium @ 60 MHz 10
1997 - Pentium II @ 233 MHz 200
2000 - Pentium III @ 1000 MHz 2000
2004 - Pentium 4 @ 2800 MHz 5650
2007 - Core Quad @ 2400 MHz 38400
2009 - Core i7-950 @ 3100 MHz 92820
2013 - Apple A7 (smartphone) 115000
2020 - Apple M1 2844000
A FP calculation that takes 1 second on an Apple M1 will take 11 hours on the original Pentium, approximately. Hope that gives some perspective.and that's the expensive operation (done once per connection)
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.
https://www.folklore.org/StoryView.py?project=Macintosh&stor...
https://www.folklore.org/StoryView.py?project=Macintosh&stor...
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)
(and yes, I saw the deleted post)
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 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!
How is it at all comparable to a relatively state of the art 2014 laptop?
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.
TLDR to the TLDR: Get off my lawn.
[1] https://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common...
[2] https://en.wikipedia.org/wiki/Power_Mac_G5
[3] https://software.intel.com/content/www/us/en/develop/article...
[4] https://www.amazon.com/Acer-C720P-2666-Chromebook-11-6-Inch-...
[5] https://ark.intel.com/content/www/us/en/ark/products/75608/i...
[6] https://www.cpubenchmark.net/compare/Intel-Celeron-2955U-vs-...
[7] https://www.phoronix.com/scan.php?page=news_item&px=PowerMac...
[8] https://en.wikipedia.org/wiki/Macintosh_Performa
[9] https://en.wikipedia.org/wiki/System_7
I'm totally sure the RSA operations are using the AES instructions
> Try using your old 2003-era system to generate keys again and tell us how fun it is.
generating (fresh) rsa keys? you don't do that on connection to a SSH server
as for what actually happens on connect, 2004 laptop: 33 signatures/second and 2200 verifications/second (+DH/ECDH)
the RSA operation (verifying the server's host key) took a total of 0.0005s
even my raspberry pi 1 can do 240 4096-bit verifications/s and several thousand ECDH's/second
and I have yet to see a SSH server with 4096-bit host keys
tldr: even old computers are fast (and data > supposition)
The Rpi? For FFS, an Rpi B+, a PSP, or a 2003 Athlon XP could emulate a System7 era Mac with a Quadra setup without a single slowdown.
I told you to get off my lawn.
I suggest reading up on how the SSH protocol works
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.
If any, current gens with Electron crap are doing it far worse. Far, far worse.
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
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.
This tool is relying on libssh2 for its SSH implementation core. chacha20-poly1305 and ed25519 are both extensions and are not included.
As for encryption, can you use a preshared key instead of public key?
blitting from a buffer onto the screen is, indeed, pretty fast, I've been experimenting with it and have some ideas for speeding things up
And what’s with the downvotes? You’re talking about exploring Classic MacOS on an rPi not the subject of the OP.
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'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.
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 Apple created TrueType, and it is the biggest feature of System 7 that I never see anyone talk about: https://en.wikipedia.org/wiki/TrueType
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:
https://en.wikipedia.org/wiki/Multiple_master_fonts
https://atadistance.net/2016/09/20/truetype-gx-model-lives-o...
https://tidbits.com/1994/09/26/preliminary-practical-primer-...
---
e: "magazine page" is what always comes to mind because it makes me think of the Diehard GameFAN story:
http://www.hardcoregaming101.net/gamefan/GameFAN.htm
"he calls the layout artist (which was probably Jacob Riskin or George Weising at the time), 'my trusty [Macintosh] Quadra operator'. What an assface."
"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."
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.
Other than that, great work.