6 ms·
MacRelix – Unix-like features for classic Mac OS
- system7rocks 2y agoI remember seeing multiple kinds of options like this for MacOS over the years, including some attempts to port tools or create different environments within MacOS. Like: https://macintoshgarden.org/apps/mac06 https://macintoshgarden.org/apps/mac06 Or MachTen: https://macintoshgarden.org/apps/professional-machten-68k https://macintoshgarden.org/apps/professional-machten-68k Or Mac Minix: https://macintoshgarden.org/apps/macminix-15 https://macintoshgarden.org/apps/macminix-15 Really fun and wild stuff. Curious how MacRelix relates or differs.
- azinman2 2y agoIt doesn’t really go into what all it can do
- HumanProtractor 2y agoYeah, could use a readme for sure.
- Lammy 2y agoAside from the fun of having a CLI on a Mac, I also use it to dump the ROMs from my machines. e: it also comes with Git (among other utilities) which might make it worth it to some people for that alone.
- azinman2 2y agoHow does it run git? Is there some kind of posix layer? What utilities does it come with?
- Lammy 2y agoHere's a screenshot for you, fresh from my PowerBook G3: https://i.imgur.com/zmFJy5l.png https://i.imgur.com/zmFJy5l.png
- flembat 2y agoI had forgotten how strange it was to see a terminal in OSX, a huge step sideways, I won't say backwards as it has its uses, but that was also the nasty green screen world I thought we had escaped from...
- philistine 2y agoYeah, when I was younger and a neophyte, I thought it was idiotic that Mac OS X had a command line. Now that I’ve switched to Mac and that I’ve learned how to use it, I wouldn’t move to a platform without strong Unix roots. So what I guess I’m saying is I wouldn’t use Windows.
- fsiefken 2y agowsl with directory tree integration is also good, or cmd.exe with native gnu tools and additional binaries.
- philistine 2y agoIt sounds so ... clumsy.
- pjmlp 2y agoYeah, even though I routinely use a mix of CLI and REPL environments, I also don't get the fetish to use computers as I was doing back in 1990 in MS-DOS and Xenix. One of the appeals of Amiga was to only dive into the Amiga DOS shell if I really needed to.
- sedatk 2y agoYeah. I even checked screenshots and all they show is a $ prompt.
- cat_plus_plus 2y agoYou can also install MPW (Macintosh Programmer's Workshop) and access a pretty decent command line environment via official Apple software.
- jjuran 2y agoMPW was actually one of the inspirations for MacRelix, in a backhanded sort of way: https://www.metamage.com/text/relix/origins.html https://www.metamage.com/text/relix/origins.html I still use MPW's ToolServer for running the Metrowerks build tools, but sadly it's no longer available as an official download from Apple.
- memsom 2y agoQuestion - looking at the code quickly, I see stuff about MWCC and Metrowerks object file format - is your tool chain in some way generating Metwowerks compatible object files? BeOS PowerPC uses the same compiler so you got me excited!
- jjuran 2y agoYes and no. The MacRelix toolchain does, in a very trivial sense, generate Metrowerks-compatible object files, because mwcc is ultimately a wrapper around the Metrowerks-proprietary MWC68K and MWCPPC tools that run in MPW. I reverse-engineered enough of the .o header format so that MacRelix's ar and ld could retrieve architecture and runtime information from a static library instead of making the caller provide it via a switch. Separately, I've been writing post-linkers that patch or rewrite the Metrowerks-provided startup code in 68K code resources. The next step on this path might be writing my own compatible linker.
- memsom 2y agoI'll come find you on Github, but I'd certainly be interested in getting involved in a Metrowerks compatible linker. The BeOS toolchain suffers from being so old that nothing modern compiles anymore and so this combined with other projects might make a replacement more viable. Because BeOS PowerPC uses PEF as the linker and a load of the support code is in the form of object code (they pretend to be static libs, but they are just object files) and as the API is in C++ and uses whatever the MW standard mangling was, replacing the linker without the object file format is not really viable.
- totetsu 2y agoThis makes me wonder.. Are there any quirky whimsical or nostalgic but still functional desktop OS out there.. Like the fantasy console PICO-8, but for Desktop applications?
- nxobject 2y agoNothing's stopping you from making classic MacOS that OS – infinitemac.org is a tremendous website full of emulators with a large software collection and drag and drop file transfer! It has very good ergonomics if you just want to play around with it, throw some software you downloaded on to it, etc. When coding for the very early Mac, you just targeted a B&W 512x384 display. The Macintosh Toolbox is a bit verbose, though.
- snovymgodym 2y agoThere's this https://www.haiku-os.org/ https://www.haiku-os.org/
- rcarmo 2y agoHaiku lost the plot as far as I'm concerned when they didn't even try to support the Raspberry Pi as a target (where it would have been incredibly awesome). Right now the RISCv port is usable, but a lot of momentum was lost to the gods of fully open hardware...
- cylinder714 2y agoLooks like they're working on it: https://www.haiku-os.org/guides/building/compiling-arm64/ https://www.haiku-os.org/guides/building/compiling-arm64/
- rcarmo 2y agoThey have been working on ARM64, but avoided touching the Pi.
- Kehvarl 2y ago
- nolan879 2y agoI wonder if there would be a way to adapt this to also use MacTCP instead of OpenTransport.
- gelstudios 2y agoCurious, what does someone gain with MacTCP? I'm not familiar with the space, but a casual glance (not an assessment!) suggests that OpenTransport was standard-ish from system 7.6 onwards. Does it boil down to compatibility with older hardware?
- retrac 2y agoDifferent software. They had different APIs from the programmer perspective. MacTCP was older and was based on Berkeley sockets (I think with some BSD code in the implementation?) and was somewhat primitive. OpenTransport was fully multithreaded and based on SysV UNIX streams. Technically much superior. It has partial MacTCP API support for older apps but some programs demanded real MacTCP to work properly. I think Mac was the only place that really used Streams widely. Mac network programming in the OpenTransport days was alien from a Unix perspective. OS X now uses sockets like everyone does these days. Going off memory here it has been a long long time.
- jjuran 2y agoAt the very least, MacTCP supports System 6 and the 68000; Open Transport is incompatible with both. (I seem to recall there's a version of OT you can use with System 7 Pro, a.k.a. System 7.1.1.)
- jjuran 2y agoYes, MacTCP support is absolutely doable. It's a question of free time and priorities.
- Astraco 2y agoA installation guide would be great. I'm trying to install it and I don't know what to do with the mbin file. When click on it says something about connectfour application missing.
- lampiaio 2y agoThe mbin file can be opened with StuffIt Expander, it contains the installer application.
- Astraco 2y agoStuffit extract the installer but it doesn't do anything, I don't know what I'm missing.
- Lammy 2y agoI was also using Stuffit (5.5) originally, but I just gave it a try with good ol' standalone MacBinaryⅢ and that worked too. It should go like this: https://imgur.com/a/YKd4Zvs https://imgur.com/a/YKd4Zvs (first three screenshots) Once it says Done you can trash the installer. There will be a new folder in the same location as the installer, and within that folder you can run `MacRelix`. The last two screenshots are me using the `sbin/upgrade` script from within the first Relix flavor to fetch a second Relix flavor.
- Astraco 2y agoThank you. I was finally able to install it, I think my setup is to blame for all the issues. I think I wasn't able to open the .mbin because I downloaded it on Linux before moving it to the emulator, and it missed some information in the process. Downloaded it inside the emulator using iCab, and after several tries (probably because networking on my emulator doesn't work properly) was able to open it on StuffIt 5 and decompress the .gz during the installation.
- kalleboo 2y agombin most likely refers to "MacBinary" (a format used to preserve the Mac resource fork when a file is passed around online/on non-Mac file systems)
- ianai 2y agoMakes me wonder. What would it take for Mac the tech to have this sort of feel/appeal again? Would a full wintel+nvidia gpu daughterboard move any needles? Or something oddball and hardware like the lamp imac, idk. Basically, computing nowadays feels very well baked and staid at times. Stuff like a unixy subsystem feels experimental in ways computing hasn't in decades.
- gattilorenz 2y agoI don't think the last decade has been completely uninteresting. ARM Macs with unified memory, and on the software side WSL on Windows (maybe even Proton, although Wine has been a thing for more than two decades now) felt experimental enough for a while. Sure, nothing as crazy as running Unix on an Apple ][ (http://web.archive.org/web/20230122214955/http://www.gno.org/gno/ http://web.archive.org/web/20230122214955/http://www.gno.org...)
- rbanffy 2y ago> Makes me wonder. What would it take for Mac the tech to have this sort of feel/appeal again? We tend to forget that, but Macs are the last standing members of the Unix workstation family, and quite good ones at that.
- fleeno 2y agoThis! I've probably said it here before, but Apple won the Unix workstation wars in the most awesome way possible. You can now buy an insanely powerful RISC Unix workstation at the mall! How awesome is that?
- rbanffy 2y agoNeXT acquiring Apple for less than one Steve Jobs (receiving about $400 million as change) was nothing short of brilliant. They got their great OS, attached it to their own bespoke hardware, focused the product line, and now they pretty much rule the world.
- Tevo 2y agoNot entirely on topic, but it is such a pleasant touch to see the titles for the properties displayed before the shell all lining up just by word choice alone. I've seen people who pad out code comments like that; it has this rather capricious, sculpture-like feeling to it.
- jjuran 2y agoAuthor of MacRelix (and system-info) here. I'm delighted that you've noticed and appreciate this. :-)
- lampiaio 2y agoOut of curiosity, how is MacRelix able to detect even under what emulator the system is running on?
- jjuran 2y agoIt's mostly checking Gestalt() and scanning the unit table for specific graphics drivers, occasionally peeking in low memory. (My own v68k core identifies itself through undefined CCR bits in the CHK instruction.) Have a look at tools/mac/system-info/system-info.cc and mac/libs/mac-sys-utils/mac_sys/has/virtualization.hh in the metamage_1 repository.
- cancerhacker 2y agoPoking through it - it looks like it might include Perl, but no idea about what level of Perl-Unix-ism it might support. But I didn’t enjoy rereading ye old Perl implementation with Tolkien references [1] to give a feel for what the source file is about. [1] https://github.com/jjuran/metamage_1/blob/4d1a24875036fee1287c8519313610380f6c86d0/contrib/perl-5.6.1/perl/hv.c#L10 https://github.com/jjuran/metamage_1/blob/4d1a24875036fee128...
- Lammy 2y agoIt does include Perl, though quite an old version: https://i.imgur.com/ySMhy3o.png https://i.imgur.com/ySMhy3o.png (my screenshot) This is the same version that was available as “MacPerl” back in The Day https://macintoshgarden.org/apps/macperl-561 https://macintoshgarden.org/apps/macperl-561
- RodgerTheGreat 2y agoDoesn't look like there's an Awk included, which is a real shame.
- jjuran 2y agoThe Perl interpreter is v5.6.1, though strictly speaking it's miniperl, not perl — there's no support for XS (i.e. native-compiled) modules. Unlike MacPerl, it supports system(), exec(), and backticks in the Unixy way you'd expect. In fact, the program that packages up a MacRelix archive is a Perl script running in MacRelix. I guess we'll just have to disagree about the Tolkien references. :-)
- brynet 2y agoQuite some years ago I did a bit of digital archeology and put the 68k MacMinix 1.5 release source on GitHub, sadly the original file dates weren't preserved in the distribution image. They were archived using tar(1) to dump the files to a floppy disk on a PowerBook 150 running MacMinix. I don't know why I did that. :-) https://github.com/macminix/MacMinix https://github.com/macminix/MacMinix
- deleted 2y ago[deleted]
- buserror 2y agoAahhh, I still have my set of floppies for MacMinix! I ran than on a Powerbook 140 back then, it was quite cool! This predates Linux by quite a bit, having any way to have a shell on MacOS back then was incredible.
- Lammy 2y agoFor a change of pace from the `68k` and `os9` flavors already shown, here's MacRelix's Carbon (`osx`) flavor running successfully in Mac OS X Public Beta: https://i.imgur.com/9S5lE2a.png https://i.imgur.com/9S5lE2a.png This is not something any reasonable user would ever do but I was impressed at its versatility. For the ultimate janky-Carbon-environment test I will have to try it in the Mac OS X Developer Previews, but PB was the earliest that would run on the hardware I was using. I do have all the necessary hardware since DP1 calls out wanting specifically either a Beige G3 or a Blue G3, and I ♡ PowerMac1,1 and have like three of them lol
- peterbmarks 2y agoReminds me of Idris from Whitesmiths. https://en.wikipedia.org/wiki/Idris_(operating_system) https://en.wikipedia.org/wiki/Idris_(operating_system)
- sharikous 2y agoWhy does it need an internet connection?
- jjuran 2y agoMacRelix has an `upgrade` command that will check for and fetch a new version of itself. The installer is merely a stripped-down, single-file build of MacRelix with just enough tools to run the installer script, including `upgrade`.
- Lammy 2y agoI do wish there was a periodic side-loadable “full” release since I usually run my old Macs with no network connection at all. I didn’t feel like setting up open WiFi or WEP WiFi (same thing amirite) for my PowerBook so to install it I had my ThinkPad running internet connection sharing, connected through two patch cables and an old PowerConnect switch since I couldn’t find a crossover cable.
- ukasya 2y agoGibram
- crims0n 2y agoThis is timely, in the middle of restoring a Mac Classic - looks like something fun for it to do.
- whartung 2y agoBack in the day, the Aztec C development environment provided a "shell" experience for development. Essentially, you coded in vi, you used make, had the basic shell commands (notably ls, cat, mv, cp). I can't speak to it much deeper than that. I used it for some time, but I had no Unix experience, so I can't say what was missing. I'm sure, today, if I tried to work on it like a would a normal Unix environment, even a limited one, I would run smack into some deficiency. For example, I doubt you can shell out in vi, something that is bread and butter in my toolbox and workflow. But, it was a very early (1985) "Unix on Mac" experience.
- atommclain 2y agoYou don't happen to have access to Aztec C for the classic 68k? I (and others) have been trying to track down a copy for some time. There appears to be one on Macintosh garden, but that is for ms-dos.
- whartung 2y agoHonestly I probably got rid of my final box of ancient Mac 3.5" floppies in my last move 5 years ago. Can't say I actually had Aztec C at the time, but it wouldn't have surprised me one way or the other. Short answer, no I no longer have access to it any longer. I used to run it on my basement upgraded, 512K Mac with 2 400K drives. Spent real money on it. I think it was $499 at the time. Maybe less, it was certainly no Turbo Pascal that's for sure.
- atommclain 2y agoAh thanks for sharing your memories, seems like computing was so much more expensive compared to now. I enjoy playing around with an old Mac Plus and a modern emulated HD20 drive. Eventually like to use it as a terminal, but really I just enjoy playing with an older retro computer that has a pretty clear lineage to my daily modern computer.
- whartung 2y ago
- VonGuard 2y agoThe fellow who does this is an absolute class individual. Definitely support this project!