3 ms·
> These were 16 bit machines with either no or extremely limited (286) MMUs; just how many processes were you going to be multitasking with your 512K of MMU-les
by MrRadar 8y ago
> These were 16 bit machines with either no or extremely limited (286) MMUs; just how many processes were you going to be multitasking with your 512K of MMU-less RAM?
It's frankly amazing that Microsoft ever managed to get Windows to run on 5150-class machines (which were allowed to have as little as 256 KiB of RAM per the minimum requirements). While the Macintosh had half that much RAM (128 KiB) it had the luxury of storing most of its system and graphics code in ROM. On the PC all the code for Windows had to reside in memory, with an elaborate system to swap code in and out of RAM as needed with absolutely no hardware memory management support. Raymond Chen's Old New Thing blog has some interesting reading on the topic of 16-bit Windows memory management:
1. GlobalAlloc vs LocalAlloc: https://blogs.msdn.microsoft.com/oldnewthing/20041101-00/?p=37433/ https://blogs.msdn.microsoft.com/oldnewthing/20041101-00/?p=...
1a. 4-part series on the history of GlobalAlloc: https://blogs.msdn.microsoft.com/oldnewthing/20041104-00/?p=37393 https://blogs.msdn.microsoft.com/oldnewthing/20041104-00/?p=... https://blogs.msdn.microsoft.com/oldnewthing/20041105-00/?p=37383 https://blogs.msdn.microsoft.com/oldnewthing/20041105-00/?p=... https://blogs.msdn.microsoft.com/oldnewthing/20041108-00/?p=37363 https://blogs.msdn.microsoft.com/oldnewthing/20041108-00/?p=... https://blogs.msdn.microsoft.com/oldnewthing/20041109-00/?p=37353 https://blogs.msdn.microsoft.com/oldnewthing/20041109-00/?p=...
2. Walking the stack in Win16: https://blogs.msdn.microsoft.com/oldnewthing/20110316-00/?p=11203/ https://blogs.msdn.microsoft.com/oldnewthing/20110316-00/?p=...
3. Fixing up pointers to discarded code segments: https://blogs.msdn.microsoft.com/oldnewthing/20120622-00/?p=7303/ https://blogs.msdn.microsoft.com/oldnewthing/20120622-00/?p=...
4. MakeProcInstance: https://blogs.msdn.microsoft.com/oldnewthing/20080207-00/?p=23533/ https://blogs.msdn.microsoft.com/oldnewthing/20080207-00/?p=...
5. 16-bit x86 calling conventions: https://blogs.msdn.microsoft.com/oldnewthing/20040102-00/?p=41213/ https://blogs.msdn.microsoft.com/oldnewthing/20040102-00/?p=... (Note that 16-bit Windows used the Pascal calling convention to save 3 bytes per function call, which according to a comment on that blog post allowed it to be shipped on one fewer floppy disk compared to the C calling convention.)
- topspin 8y ago> (which were allowed to have as little as 256 KiB of RAM per the minimum requirements). That's the L2 cache of an Ivy Bridge CPU. I remember finding an old laptop that I somehow ended up with in some box: Windows 3.1 with a TCP stack in 8 MiB of RAM. That's the L3 cache of an Ivy Bridge CPU.
- pjc50 8y agoI still have my Toshiba Libretto 30, which also has 8MB RAM and dual-booted Windows 95 or Red Hat. It could run the Opera browser fairly well.
- IntelMiner 8y agoI've got a Libretto 110 which I managed to coax into playing 480P MPEG-2 video a couple years back https://www.youtube.com/watch?v=weIHmm3ZTQ0 https://www.youtube.com/watch?v=weIHmm3ZTQ0 It might not sound impressive today. But back then, playing full screen video on a PC usually required an "MPEG accelerator card" (Excuse the awful recording quality, all I had was a mediocre phone at the time)
- acqq 8y agoThe CP/M computers had 64 KB addressable. That's the total of the data+instruction L1 cache on each core. I've used WordStar on a machine with 64 KB addressable, which was as WSIWYG word processor as possible on the text monitor with 80x25 characters. It showed you all the possible actions in each step too -- what even today so many programs don't manage to do. If I remember it didn't keep the whole program in the RAM at once, but had its own swapping mechanism. I've also used a Turbo Pascal there, which was even on such a machine amazingly fast. By default the compilation was directly to memory, no waiting on any disk.