Hacker News new | past | comments | ask | show | jobs | submit login
Previous: NeXT computer hardware emulator (alternative-system.com)
153 points by ingve on Feb 5, 2019 | hide | past | favorite | 25 comments



Missed an opportunity to render it like this: prEvious

On a more serious note, what's the difference between a project like this and virtualization? Is there one? Once this is completed, could it be run in virtualization software, or is it not that kind of thing?


Emulation replicates the hardware of the machine being emulated in as many details as are necessary to run the program, while with virtualization, the guest OS runs directly on the host hardware, with hardware and software barricades that allow it to run simultaneously with the host OS (VT-d and VT-x are the host CPU features required).

Virtualization doesn’t work when the guest OS was built to be run on a different architecture, which is often the case for retro computing projects.

See https://stackoverflow.com/questions/6044978/full-emulation-v...


Virtualization doesn’t require VT-x or VT-d, those are just performance enhancement mechanisms for virtualization on 80386-derived CPUs. Most other 32-bit and 64-bit CPU architectures have supported virtualization reasonably well from the start. The biggest popularizer of the technique was the IBM System/360.

For a microprocessor example, the Motorola 68000 almost supported virtualization, and the 68010 corrected the one flaw—insufficient exception context to restart an instruction—that prevented it. That’s why even though the personal computer market didn’t touch it, workstations migrated to 68010 as soon as it was available.

Of course there are a variety of ways to make virtualization easier on the implementer and more efficient to use. Intel’s enhancements really shine there. But they’re not required, just useful.


would you agree that emulation can be put as a subset of virtualization, as the terms are used today?


Emulation and virtualization are two very different concepts.

Every OS you virtualize must be supported by the base processor in the hardware. That is not so in an emulation, where another architecture can be supported.

See the differences between qemu and virtualbox.


This is in contradiction to eschaton, and I agree with GP in this regard: pass-thru of CPU instructions to host hardware is just an optimization, not a defining feature of virtualization. There were VM hosts before processors supported this, and back then I think that virtualization == emulation.


Excellent, thank you! This really clears it up.

One of the comments on the top answer added an example that unlocked it for me intuitively: “in VMWare you can have a virtualized CD drive which is connected to the real physical CD drive, or you can have an emulated CD drive that is backed by an ISO image on the host.”

Virtualization = sharing real hardware.

Emulation = software pretending to be real hardware.


This site seems to be out of date: the current development site seems to be https://sourceforge.net/projects/previous/ while https://bytecellar.com/2018/04/25/bbsing-on-a-virtual-next-c... seems to have some relevant links too.

How does the experience of running NeXTStep or OpenStep in Previous compare to that of running x86 OpenStep or NeXTStep https://www.youtube.com/watch?v=Rz2nPJGx4Qg on x86 hardware, on an old x86 box as in https://www.youtube.com/watch?v=Rz2nPJGx4Qg or on a modern x86 system?


It is similar if you can get it to run on x86, but NextStep/OpenStep on Intel was notoriously picky about hardware, supporting only a tiny number of video and networking cards. Even virtualization doesn't work that well -- I tried VirtualBox for OpenStep X86 a few years ago and never got the networking to work, and was stuck with subpar VESA graphics.


I have had a tough time emulating even OpenStep on x86, excited to see NeXT attempt to be run semi-natively. It is still one of my favourite architectures and members of the home server farm. Looking forward to seeing where this ends up.


Previous has been around a while already, and works well. It emulates "Black Hardware" (Cube, I think.), and will run even very early versions of NeXTstep. You should give it a try!


I know next to nothing about this space, but I'm curious whether the cheekiness of the name is worth the confusion it inevitably brings (as a fan of generally cheeky things).


You might be surprised. The core of the MacOS is nextstep (thus the reason that modern MacOS system functions begin with the prefix "ns") and even the software development tools will feel familiar to modern XCode users. There is a lot of elegant refinement in modern MacOS, but the bones of it are solidly NeXT.


Based on, yes, but since OSX 10.0 it's been diverging from what was the 1990s era NeXT. The core OSX team up to v10.5 or so was basically the same people who wrote the NeXT OS, and were acqui-hired.

Apple bought NeXT pretty much for their IP and software. By the time they were acquired NeXT had been out of the hardware manufacturing business for many years.


I get a kick out of the bon mot that NeXT acquired Apple for -$429 milion dollars.


Makes sense. MacOS X 10.4 was the best version I’ve ever used.


I know NeXT to nothing about this space, too.


The name 'NeXT Computer'? Blame Steve Jobs...


I use it and wrote a bit about it here. It’s pretty slick when I’m not looking to fire up one of my NEXTSTEP systems.

https://bytecellar.com/2018/04/25/bbsing-on-a-virtual-next-c...


Worked great when I used it to run NEXTSTEP 3.3 last year. Development still seems to be ongoing, which means the source code still builds!


So does this include the OS as well, or is it just an emulated hardware box that paves the way to then install NEXTSTEP on?


The latter -- it emulates the hardware of various NeXT workstations and you need to install the OS from scratch, or at least find a hard drive image of an install. Both are around if you search, although not distributed with the emulator for obvious reasons. Once you get it working it is quite nice and nostalgic for those who used NeXTStep back in the day.



Iterator<T> almost implemented


I thought it would be named PReV.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: