The saddest part about this is that it's the opposite of what Apple originally stood for. With the Apple II line, Apple released schematics and extraordinarily detailed technical reference manuals. Everything about the inner workings of those computers was an open book. Their motherboards were covered in chip sockets so you could replace nearly every component, and peripheral cards could be slotted in at will. It was a hobbyist's dream computer.
Granted, computers have changed a lot in the intervening years, but it still makes me sad to compare what Apple was to what Apple became.
The Apple II was the Woz Apple. Woz basically has to threaten to walk out, and leave the company without a products, to get Jobs to allow the Apple II to have expansion ports.
The Mac etc is what Jobs wanted. A sealed beige box that only did what Jobs envisioned it to do (produce a GUI and look good).
And yet variants of the Apple II kept outselling the Mac all the way until the II was unceremoniously dropped.
To me making use of _nix but writing their own UI layer suggests that the _nix side was just a convenient way to get the base layer of the OS basically for free.
This in much the same way as Linux use used just about everywhere these days, hiding behind a myriad of custom UIs.
> And yet variants of the Apple II kept outselling the Mac all the way until the II was unceremoniously dropped
Although that was mostly due to price, not expandability (the Mac II with all its slots and RAM expandability was introduced 6 years before the Apple IIe was discontinued)
Apple's hardware is largely a combination of other companies products. So if you want the schematics for your CPU, GPU, RAM, Display etc ask Intel, Nvidia/AMD, SanDisk, LG.
If you want upgradeable hardware then buy the Mac Pro since it was the model designed for that purpose. Otherwise you need to understand that upgradeability comes at the expense of thickness and weight since those clips/sockets take up valuable space. And people that want upgradeability simply aren't Apple's market. Go buy something else instead.
The current “Tash Can” Mac Pro is not really upgradable. It has proprietary GPU and SSD interfaces and no other PCI slots.
You might be able to purchase a replacement SSD for someone like OWC or upgrade to the higher spec Apple sourced GPU if you bought a low end model but Apple is not expecting you to do this.
You can update the RAM or use external thunderbolt peripherals but that’s a long way from the older “cheese grater” Mac Pro.
If I was to guess I would say that this deliberate removal of upgrade path is actually about design for reliability.
If you remove the upgrades you remove the chance of static damage or use of faulty parts. Also the case is easier to manufacture and more robust because it’s less complex.
I think that’s the real reason the SSD is now soldered in the current MacBook Pro but it’s just a guess.
If they didn't solder the SSD you could buy their smallest one and then drop in a huge SSD at 1/4 the price apple would charge for the upgraded storage. Apple systems are very expensive for the base model but where they REALLY tax you is anything with upgraded specs.
I'm part-way through my implementation of an x86_64 experimental OS and had to address all the issues you're facing right now. I didn't really document my process, but the code to get everything booted into x64 mode is there, including setting up the TSS.
Neat thanks! I will check it out. It's really the context switching itself that's the trickiest part, I think. Or all of it. To me, it feels exactly like when I was learning about interrupts: while I was doing it, it was so tough... but as soon as I got something working, it made perfect sense and I wondered why I found it so hard in the first place.
One resource I found myself consulting over and over again was the Intel Architecture Software Development manuals (https://software.intel.com/en-us/articles/intel-sdm). They're huge and obviously a bit dry, but they had about 90% of what I needed to know about x86 memory architecture and interrupts.
I included some other resources I consulted in the README. The OSDev wiki (http://wiki.osdev.org/Main_Page) is also good, although I found some of it to be dated or incorrect.
Good luck on developing your OS. Even though I'm not finished, it's been an extraordinarily valuable and educational process.
Yeah, I probably need to just take a weekend day and actually read rather than skim and look for secondary sources. The OSDev wiki's pages on this particular topic are all kind of okay, but often aren't talking about long mode, only protected mode, or only have bits and pieces.
Thank you! Good luck with finishing yours, as though these things are ever finished :)
Granted, computers have changed a lot in the intervening years, but it still makes me sad to compare what Apple was to what Apple became.