13 ms·
MicroMac, a Macintosh for under £5
- riffic 2y agoone of these running system 7 would be a delight, seeing that's probably where the classic Mac OS hit its peak.
- rcarmo 2y agoYou can do that comfortably on a "normal" Rasbperry Pi - I have a bunch of resources for that here: https://taoofmac.com/space/emulation https://taoofmac.com/space/emulation
- xixixao 2y agoI was hoping this was a super cheap hackintosh running modern macOS. Is that even possible these days?
- MenhirMike 2y ago> Is that even possible these days? It still kinda is as long as macOS supports Intel, but the writing is on the wall: https://news.ycombinator.com/item?id=39728146 https://news.ycombinator.com/item?id=39728146
- deleted 2y ago[deleted]
- Moto7451 2y agoYes. The biggest limiting factor for “cheap” is building around a CPU with a supported GPU. A second hand RX 4xx/5xx series card is a good pick if you can’t find a chip with supported iGPU.
- vessenes 2y agoI’m asking out of genuine curiosity - what are the reasons you’d want that, other than a fun project? There’s so much hardware integration in the stack of a modern Mac that it would feel a little hard for me to even say a hackintosh was a Mac. Anyways, curious what you have in mind.
- carlosjobim 2y agoI see posts every day of people successfully hackintoshing various PCs. It's a great operating system. And it has all the software that the free alternatives lack. If I couldn't afford the hardware I would definitely get a hackintosh. One weekend of suffering to get it working, vs a lifetime of suffering with Linux.
- ornornor 2y agoI ran a hackintosh as my main machine for a while. It’s not set and forget, every macOS update is a weekend long endeavor.
- carlosjobim 2y agoIf you insist on updating. I've been more than fine staying 3-4 OS versions behind – on original machines that support the updates.
- rcarmo 2y agoHoly cow. I took a stab at hacking vMac to run on an ESP32 and gave up (it’s been done on some models, but not on the one I had handy), but this is several levels above and beyond. I take off my metaphorical hat to you, sir.
- JKCalhoun 2y agoI ran Mini vMac on a Raspberry Pi and got a decent looking Mac clone. https://imgur.com/gallery/raspberry-pi-running-mini-vmac-custom-bent-acrylic-case-XgnGYH9 https://imgur.com/gallery/raspberry-pi-running-mini-vmac-cus...
- MenhirMike 2y agoI was considering doing something like that for an Amiga, running AmigaOS 3.2. It's a cute idea, especially once you 3D print a shell that looks like the original (shrunken down). I do think that the lack of an old school floppy drive means that something is kinda missing from the experience, but I do like the idea of having a machine dedicated to running this instead of just firing up an emulator on my existing desktop PC. (Edit: And I love how this MicroMac project isn't just "running Linux and an existing emulator" but actually trying to go lower level, essentially the RP2040 acting as a 68k)
- hammyhavoc 2y agoNeed CRT too for the authentic experience.
- rbanffy 2y agoWe need doubly-curved OLED screens. We can already do Trinitron (cylindrical) ones with the flexible displays we have. It is an interesting problem, though. I noticed in Disney's Loki, they used a combination of VFX and lenses on top of flat panels to give the impression they were using CRTs (notably in their ADM-3 lookalikes). For a 9~14" CRT it'd be a fairly large lens that would need to be optically connected to the panel below (so not to have internal reflections).
- numpad0 2y agoCan't it be done with a DLP device? CRT was X-ray projection device with phosphor paint applied inside to convert the rays to visible light.
- habi 2y agoCRTs were emitting an electron beam to draw images on a phosphorescent screen, not emitting X-rays: https://en.wikipedia.org/wiki/Cathode-ray_tube https://en.wikipedia.org/wiki/Cathode-ray_tube Blasting X-rays through a screen to the face of an observer would not have been a good idea…
- dannyobrien 2y agoI had a Saturday job at a computer shop when the Mac came out, and we got one as a demo. I remember just staring at the genius of those rounded corners in the corners of the screen, and thinking how beautiful it was that they'd thought of that.
- petemc_ 2y agoIn case you haven't read it - https://folklore.org/Round_Rects_Are_Everywhere.html https://folklore.org/Round_Rects_Are_Everywhere.html
- jakey_bakey 2y agoThis is brilliant, thanks!
- efreak 2y agoDesktop browser might be smoothing things over here, but I tried to load this on my android tablet and had to add www to get the domain to resolve.
- rbanffy 2y agoOn my first actual job, we did that with Apple II software. You don't only lose the corners, but you need to lose a whole column of pixels to make the rounded corner work on a checkered background.
- aerioux 2y agomirror as it looks like the blog is getting overloaded: https://archive.ph/NXWOm https://archive.ph/NXWOm
- stavros 2y agoThanks, I thought the slowness was because of my phone and was about to order a new one.
- jimbobthrowawy 2y agoVery nice finding a random VGA cable on the road. Happened to me once or twice, but never when I wanted one of them.
- justinator 2y agoThrift store?
- TacticalCoder 2y agoI often see those at flea markets / garage sales, sometimes by the metric ton (OK, exaggerating a bit).
- opan 2y agoThat was the highlight of the story for me.
- str3wer 2y agoare they that hard to find in your country? for me it's way more likely to find a VGA cable around than an HDMI when i need it
- kreelman 2y agoVery neat. I so wanted a Mac back in the day... It is amazing what can be done now with modern micro controllers. Thanks for writing it all up.
- bmacho 2y ago> The day I started soldering it together I needed a VGA connector. I had a DB15 but wanted it for another project, and felt bad about cutting up a VGA cable. But when I took a walk at lunchtime, no shitting you, I passed some street cables. I had a VGA cable – the rust helps with the janky aesthetic. Sometimes this happens.
- icehawk 2y ago> Everyone loves MacPaint. Maybe you love MacPaint, and have noticed I’ve deftly avoided mentioning it. Okay, FINE: To be honest, I'd bet Bill Atkinson knew every trick in the book and used many for making MacPaint work in the original constraints provided. I'm not sure that's a fair fight for the author.
- novagameco 2y agoBut it's not a Macintosh; it's a Raspberry Pi emulating a Macintosh
- firewolf34 2y agoHow are these people finding VGA cables in the street :S I needed like 10 or so VGA cables recently for an art installation and asked everyone I could and nobody had any lying around... I ended up having to buy new ones which seems a shame considering how many are thrown away!
- brcmthrowaway 2y agoI hope your art installation didnt involve CRT monitors?
- dec0dedab0de 2y agoI hope it did
- nirav72 2y agoLot of people keep/store old cables. I personally have several hundred cables of various types collected over the years put away in couple of plastic crates. Sometimes I find them at work that are just sitting in boxes waiting to be thrown away or just extra cables that come with monitors or other devices. They come in handy for projects or when I’m tinkering with old hardware.
- JKCalhoun 2y agoGoodwill?
- ssl-3 2y agoThings come and go. :) I save at least one example of every kind of computer, RF, or AV wire, but I only keep what I deem to be current-gen for my own world. The stuff that doesn't make the cut get sold by the pound periodically at a local scrap yard after I prep them by snipping the connectors off, which generates a meaningful amount of folding cash -- enough for a coney dog and some ice cream from around the corner, anyway. (Rules vary; the scrap yard near me is very happy to buy deconnectorized insulated computer-ish cables. Some might buy them with the connectors attached. Some might not want this kind of wire at all.) I like having what I might need on-hand, but I also dislike the notion of hoarding. I try to keep it balanced. Sometimes, this bites me. I hadn't use a VGA cable for years during the last culling so they all got recycled, and then I needed one a few months ago for an old Compaq server. I found a beige HD15 cable at work that functioned well-enough, but it was a blurry mess (real VGA cables have coax inside, and this cable did not). I even ran out of bog-standard IEC computer power cords a couple of years ago and had to -- you know -- actually buy one. I never thought this would be a possibility. What happened to your own stash of VGA cables?
- dougg3 2y agoThis is a really impressive project! It was a fun read. Thanks for sharing! I like this writing style. > As an aside, I try to create a dual-target build for all my embedded projects, with a native host build for rapid prototyping/debugging I find myself doing the same thing on my embedded projects, including at my job. I actually find myself using the PC build much more frequently than the hardware for my day-to-day work now that the hardware layer is stable and tested. More people should do this!
- vectorcrumb 2y agoHow would you go about setting this up? Do you mock out low level calls or are you running some sort of emulator?
- dougg3 2y agoSorry, I somehow missed your comment until now. Didn't get any notifications. I tend to do it more like what you first said, mocking low-level calls. I typically put all hardware-specific code for one platform into its own directory. Then I can have multiple directories for different hardware implementations, like MCU #1, MCU #2, and PC. I just implement the same API in all three. It's basically just a HAL. Each build only compiles one of those directories -- the one that matches the architecture I'm building for. For example I might have a function that does an SPI transaction. On the two hardware builds it will actually communicate with the SPI peripheral in the MCU, but on the PC build it will talk to something I've written to pretend to be the SPI device. So it does take a little bit of up-front work writing code that pretends to be the various devices. In some ways you could call that an emulator, but not in the way you were asking I think. You can make it as simple or complex as you want to. You could do a full-fledged object-oriented SPI class in C++ (or "class" in C), with different class implementations for different hardware builds. Or you could just make a single function that does SPI stuff and reimplement it for each hardware build. In one case I have a Qt GUI that pretends to be the UI for the device so the PC hardware-specific code ends up providing its own main() and runs the actual shared codebase in a separate thread. So that particular codebase has a provision to rename the shared main() to not actually be main() on the PC build so it plays nicely with Qt needing to actually provide main(). One downside is you won't catch certain bugs on the PC. There have been a few bugs that slipped past because the hardware build was 32-bit but my PC build was 64-bit for example. But those errors are fairly rare. I probably should be doing the PC build as 32-bit to make it more similar anyway. Still, it wouldn't catch every little problem that might pop up on hardware. It definitely accelerates my productivity though!
- jwells89 2y agoSuper cool project. It makes me wonder what the smallest/barest SBC one could get away with for emulating the last 68k Macs or average mid-to-late 90s PPC Mac at full performance might be. Retrofitting a modernish laptop body of some sort with one of those so it would be capable of running System 7.6.1 up through Mac OS 9.x could make for a surprisingly useful "zen mode" laptop.
- marbletiles 2y agoThis is precisely what I want. 7.6 with all-day battery life in an ultralight would be heaven for me.
- rlawson 2y agoSame! Just add in an easy way to print from the emulator!
- DrNosferatu 2y agoAnd the display should be e-ink to go all the way from zen to Nirvana!
- j45 2y agoAwesome way to give kids their first computer and it can only do what it can do.
- layer8 2y agoThe VGA interface is the most impressive part to me somehow.
- cellularmitosis 2y agoYeah, that's what sets the RP2040 apart from other micros. I think of it as being analogous to the recent advent of "software-defined radio" -- the RP2040's PIO are fast enough to allow for software-defined Composite video, software-defined VGA, software-defined DVI, software-defined USB, etc etc etc.
- askvictor 2y agoWhat other micros are you talking about? STM32 can easily do it (I suspect that any ARM based micro can), and I've seen some vga libraries for ESP32. There's not much special about the RP2040 other than it's price and brand name.
- dfox 2y agoOn other typical 32b MCUs you end up doing this kind of bitbanging purely from software, while RP2040 has the PIO which is kind of programmable bitbanging accelerator. Similar hardware blocks in other MCUs are either single-purpose (think USART), or much more limited and mostly only found weird automotive parts.
- doubloon 2y agoI spent two hours trying to get hello world working on stm32 , on a pi it takes two minutes. its about barrier to entry not about quality of hardware. Same thing when Arduino came out people was saying so what its just an avr or whatever.
- wds 2y agoWhy not store emulated RAM on disk and get the full 512KB experience? Killing the drive from overuse? Surely the flash speed of the RP2040 surpasses the RAM speed of the original Mac.
- sitkack 2y agoIf only the RP2040 supported SPI PSRAM!
- str3wer 2y agowhat about a esp32-s3?
- qiqitori 2y agoThe PicoGUS uses PIO to implement a PSRAM interface in order to store 1 MB of audio sample data: https://github.com/polpo/rp2040-psram https://github.com/polpo/rp2040-psram
- sitkack 2y agoThat is cool, I'll give it a go. It could be made workable for something like a JIT or interpreter (like the MicroMac). Could it be added to the RP2040 address space and used as a native load store target? The neat thing about the ESP32 chips is you can extend their internal memory with external SPI PSRAM chips. https://cdn-shop.adafruit.com/product-files/4677/4677_esp-psram64_esp-psram64h_datasheet_en.pdf https://cdn-shop.adafruit.com/product-files/4677/4677_esp-ps...
- sitkack 2y agoUsing QSPI RAM with RP2040's SSI in read-write mode http://dmitry.gr/?r=06.%20Thoughts&proj=10.%20RomRam http://dmitry.gr/?r=06.%20Thoughts&proj=10.%20RomRam
- mistyvales 2y agoWant! Looks like fun.
- everyone 2y agoSomething like this that could run the latest macos would be amazing.. I am disgusted by having to buy a mac just so I can build to iOS. That kind of thing should be illegal.
- ido 2y agoYou can use GitHub actions to build to mac (and I assume iOS as well).
- krallja 2y agohttps://aws.amazon.com/ec2/instance-types/mac/ https://aws.amazon.com/ec2/instance-types/mac/
- antonvs 2y agoI tried that a while back. It's not a great option just for builds. It only supports dedicated instances, with a minimum lifetime of 24 hours. That means it'll cost you a minimum of about $15 to use one. In addition, you can't stop and start them. If you want to stop paying $15 - $37 per day for it, you have to delete the instance.
- bananskalshalk 2y agoI feel like this is missing a link to spritesmod[0], which might use a little bit of a bigger platform (esp32) but a functional Mac plus that fits in your palm is absurd. I would never have thought you could do what OP did, rp2040 looks way too small, amazing work! [0]: http://spritesmods.com/?art=minimacplus&page=7 http://spritesmods.com/?art=minimacplus&page=7
- rbanffy 2y agoNow I'm thinking about the creative misuse of (non-existing) technology. From the numbering scheme, the "4" in "RP2040" is log2(ram/16K). If we wanted to emulate a Lisa, we'd need 1MB of RAM, which would mean, at least, an RP2060 chip (log2(1024/16) = 6) or, more comfortably, an RP4x70 or RP2x80). Those parts, unfortunately, don't exist yet. Maybe they get inspired with their IPO and start making those parts.
- rbanffy 2y agoIt's a shame monitors don't provide 5V from pin9 of the VGA connector... Would be nice to be able to power things from the monitor connection. IIRC, SCART provides +9V.
- dfox 2y agoPin 9 is there to power the EEPROM in the monitor fromthe computer even when the monitor is turned off, so monitors providing 5V there would lead to same kind of problems as there are with DisplayPort pin 20 and cheap cables that connect this pin through (which would be correct for DP 1.0, but there are no DP 1.0 products).
- rbanffy 2y agoExactly. Back then we didn't imagine we would want to power a small dongle out of a monitor port. Sadly, when people invented HDMI, that was a lot more obvious.
- benob 2y agoHow about the same thing on a 68K emulated with an FPGA? (ok it will probably cost more than 5 pounds)
- rbanffy 2y agoUnless you want cycle-accurate interfaces, it's pointless. Software can provide more than good enough performance and be a lot more flexible at that. As microcontrollers get faster, the cycle-accurate timing becomes less relevant, as you can still match external timings with software and have the support of an RTOS to help with that.
- Wowfunhappy 2y agoWhat about power consumption? Could you have a tiny Mac which runs approximately forever on a single charge?
- rbanffy 2y agoI imagine the power consumption of the compute part would be dwarfed by the display in any case.
- Wowfunhappy 2y agoI was imagining you'd still plug it into an external display. I guess you could fairly argue that defeats the purpose of a battery, though... Although, it might be cool with e-ink, low refresh rate notwithstanding.
- rbanffy 2y agoE-ink can have better refresh rate than the LCD of a Mac Portable. And would also be readable. Would be interesting to see how the ROM deals with changes in display geometry (the Portable wasn’t 512x284) - how hard would it be to make a 1024x768 portrait Mac or some other versions that never existed.
- jdblair 2y agoI wondered if anyone had written an IWM simulator, and I didn't find one, but I did find this FPGA project: https://www.bigmessowires.com/2017/12/07/fpga-based-disk-controller-for-apple-ii/ https://www.bigmessowires.com/2017/12/07/fpga-based-disk-con...
- deleted 2y ago[deleted]
- tieze 2y agoSomewhat related, there's a MiSTer implementation of the Apple II: https://github.com/MiSTer-devel/Apple-II_MiSTer https://github.com/MiSTer-devel/Apple-II_MiSTer
- thristian 2y agoSomeone's trying to reverse-engineer the IWM, but they have not yet quite succeeded: https://www.applefritter.com/content/iwm-reverse-engineering https://www.applefritter.com/content/iwm-reverse-engineering
- jdblair 2y agoFound this in that same thread, an IWM implementation in MAME: https://github.com/mamedev/mame/blob/master/src/devices/machine/iwm.cpp https://github.com/mamedev/mame/blob/master/src/devices/mach...
- chuckadams 2y ago> (Do you find “Pico Micro Mac” doesn’t really scan? I didn’t think this taxonomy through, did I?) I think "Atto Mac" rolls off the tongue nicely.
- DrNosferatu 2y agoWhat about every computer up to the 90s for ~10€ of hardware to house inside of an existing keyboard? (or your subset of favorites)
- DrNosferatu 2y ago...or add such functionality to a USB hub ;)
- dflock 2y agoYou can do this with a Rasberry Pi 400, no problem. I have one running https://retropie.org.uk/ https://retropie.org.uk/ and it works great.
- DrNosferatu 2y agoa Rasberry Pi 400 is ~90€
- dflock 2y agoYep! Suuper nice though!
- DrNosferatu 2y agoI guess Lemmings, After Dark and The Cycles would work there?
- DrNosferatu 2y agoAlso cool would be to compile and run this emulator on a standard Raspberry Pi under a RTOS.
- niutech 2y agoWhy not base it on ESP32? You can emulate multiple OS-es, including Commodore VIC20, MS-DOS, Windows 3.0, Linux ELKS - all using FabGL: https://github.com/fdivitto/FabGL https://github.com/fdivitto/FabGL