• Please review our updated Terms and Rules here

Coherent Use

Minix 2.0 will run on a 286 and has tcp/ip support, so it’s probably a better bet than Coherent (on 286 it has the same Small model memory restriction), but I can’t say I’ve actually done anything with Minix beyond booting it a few times.
Minix 2 is the most modern UNIX for 286 systems and works quite well. However, I was surprised how smooth Xenix 286 worked on it, so Coherent may be interesting to try. (Although I've lost my appetite for the pre-ANSI C world by now.)

Minix is also limited to tiny (64K) and small ("split I&D", 64K + 64K) memory models. Some variants of Xenix supported medium (multiple code segments) as well, but I'm not aware of any 16-bit UNIX system with support for multiple data segments.

On a 386+, both the tiny and small models allow using all memory, so I would be surprised to find 64K restrictions (when using a 32-bit kernel, compiler and runtime).

It matters if you're trying to inject executable code into your process.
Injecting code into your process is not supported by standard C. If you want to write system-specific code, you might as well use a few lines of assembly to get the type of pointer you want. But you'll be on your own no matter what.
 
I don't know why @Trixter hasn't weighed in on this thread yet. He worked at MWC and on Coherent, after all.

I also don't understand why importance is being placed on running Coherent on a 286.

I have a 386-25 with 4-MB of RAM on it. I planned to use that 386 as the platform for UNIX like environment. Since Coherent is unstable would BSD work on a 386 as described?

Clearly the target machine is a 386 and Coherent 4.x runs in full 386 mode. (Gone is any 64K limits on programs.) This was already mentioned here:

The copyright is 1982-1992, and there are two Coherent editions: Coherent-286 and Coherent-386.

Any idea what happened to his site? It up and vanished. Disappointed to see that, but I have not heard anything (hardly means anything, not that I'm in any kind of loop). But he had a very nice CP/M site.

As far as Udo Munk's site disappearing is concerned, this has happened before:

https://comp.os.cpm.narkive.com/oczsP8gq/unix4fun-mirror-site-online

It appears "Udo Munk's" site was actually being hosted by Tilmann Reh (Isn't he a member here?) and so the site's fate seemed to be in Reh's hands. All other links I've checked that he posted going to this domain are also broken. Maybe he's not connected to autometer.de anymore.

I didn't realize that this side wasn't available any more. On https://web.archive.org/web/20240115133441/https://www.autometer.de/unix4fun/coherent/ we can see what was there.

An older copy of his site is also on bitsavers:

http://bitsavers.org/bits/unix4fun/
 
I also don't understand why importance is being placed on running Coherent on a 286.
There are not many options for 286-class machines. As soon as you target a 386, you've got a lot of objectively better options. OP isn't tied to Coherent specifically.
 
As soon as you target a 386, you've got a lot of objectively better options
Indeed. If you can run Coherent 4.x, for the 386, may as well move up to a BSD or early Linux.

But there are few multi-user OSes for the 286 that I know about.

I don't know how Coherent 3.x compared to Xenix.
 
There are not many options for 286-class machines. As soon as you target a 386, you've got a lot of objectively better options. OP isn't tied to Coherent specifically.

Indeed. If you can run Coherent 4.x, for the 386, may as well move up to a BSD or early Linux.

Okay, I was aware of the lack of 286 options and, therefore, that makes sense. But, since the OP IS targetting a 386, I don't see why talking about a 286 was relevant. Is it because no target CPU was mentioned at first?
 
Regarding Trixter, I think he's been ill. He posted on his YouTube site that he was ill and wouldn't be available for a while. I wish him well in his recovery.

Great discussions regarding Coherent. I had a professor at my university who had Coherent running his 386 some 30 years ago. His advice to me since I was in the process of learning to program in C, was to stand up Coherent on a 386. The only 386 that I had at that time was a an SX with only 1 MB RAM. At that time, I didn't think it was enough but I didn't know about the 64KB limit either. If 4-MB is not enough I could use Extended Memory card; I have one made by AST.
 
I have a 386-25 with 4-MB of RAM on it. I planned to use that 386 as the platform for UNIX like environment. Since Coherent is unstable would BSD work on a 386 as described?
With 4 MB RAM I don't see any BSD you can run in that 386 machine. FreeBSD 2.1 released in 1995 required a minimum of 5 MB ( https://www.freebsd.org/releases/2.1R/notes/ ), and older versions are not really usable.

With 4 MB RAM you can run some old Linux based on the 1.2 kernel branch, like Slackware 3.0. It will be very limited in functionality, but that should work.
 
But, since the OP IS targetting a 386, I don't see why talking about a 286 was relevant.
Well, to be fair, they asked about running Coherent on a vintage machine. I didn't even know that Coherent had a 386 version, I was only familiar with the 286.

"Unix on 286 for $99" was the elevator pitch for Coherent back in the day.

Maybe Coherent for 386 can run comfortably in 4MB.

I know back in the day (early 90's) when I was looking, I was interested in Unix platform. A 33Mhz 386 running (I think) Interactive Unix was comparable in price to a NeXTStation (education discount), so picking the NS was a no brainer. It required 8M, ran much better in 20M, but it had the (very nice) graphic display. It probably would have run fine on 8M without the display. NS was a Mach kernel with BSD userland.
 
Well, to be fair, they asked about running Coherent on a vintage machine. I didn't even know that Coherent had a 386 version, I was only familiar with the 286.

That explains it. Thanks. Amazing all the little updates that can be missed as the industry races by us all.

"Unix on 286 for $99" was the elevator pitch for Coherent back in the day.

That would make it hard to notice Coherent was later updated to 386 protected mode. Considering that MWC didn't even mention the 386 version in the 1991 manual, it appears that the 386 version was only available for the last 3 years they were in business at most. Not a lot of time to make a marketing dent, especially when Linux is starting up around this same time.

Maybe Coherent for 386 can run comfortably in 4MB.

Well, according to the 1992 manual, it can run in as little as 1 MB with 10MB hard disk space. So 4MB will probably allow for comfortable use, I'm guessing. And, of course, they say more RAM and more disk space is preferred.
 
I honestly don't know why 4MB wouldn't work for these older systems. With 1MB of memory, thats up to 16 64k processes (minus the kernel of course). For the time, I mean, that's a lot! Obviously more if the processes don't use a full 64k.

I mean, honestly, you have the core kernel (virtual memory, task switching, etc.), a few drivers (disk, serial, network) and...that's it!

I can see how adding a video subsystem can add to the memory requirement. But, it's not like the userland was particularly sophisticated.

vi is, honestly, pretty simple. The early shells weren't super needy either. There's something to be said about, say, the csh keeping track of command history -- that adds up after awhile, I don't know how much of that was manually paged from disk. But, you know, again, with virtual memory, memory equals speed, not necessarily functionality. Paging costs performance, and thrashing is Bad, but it Works.

Coherent 286 (and I don't know, I'm just s'posing) probably did not have virtual memory, but did have swap. Swap and virtual memory are not the same. They're related, but not the same. Swap probably swapped out the entire idle process to make space, rather than just however many pages were needed. That's the key difference. Crude, but functional. The tiny/small segment based memory model allowed processes to be freely (for assorted values if "freely") moved about in memory, facilitating swapping.

386 gave us Real Virtual Memory, and that changed a lot of things.

Of course then there was the apocryphal "EMACs -- Eight Megs and Constantly Swapping", and yea, it was a beast. So, you know, "don't do that".
 
Well, according to the 1992 manual, it can run in as little as 1 MB with 10MB hard disk space.
The Minix manual points out that on a 286, the user will have a hard time using 4 MB RAM, even after adding a generous second-level disk cache - not without being heavily multi-user, at least. In 16-bit UNIX, the process heap is hard-limited to 64K (minus data, bss and stack), so processes are unable to allocate large amounts of memory. Therefore, tools must be small. Coherent never had time to properly bloat them when going to the 386, so it will probably do fine there as well.

vi is, honestly, pretty simple. The early shells weren't super needy either.
Well, vi is approximately the largest program shipped in the base systems. I tried to compile it for PC/IX, and did not succeed; in Xenix, it's one of very few medium-model programs. The shell is also quite large and the main reason for sharing pure code segments in early UNIX.

The thing with 386 UNIX is that suddenly, complex applications became possible - handling larger amounts of data, keeping more state. That's where the memory requirement went up a lot.

Coherent 286 (and I don't know, I'm just s'posing) probably did not have virtual memory, but did have swap.
Both segmentation and paging are forms of virtual memory. Both OS/2 1.x and Windows in Real and Standard Mode used segmentation extensively. The PDP-11 was much more limited, so UNIX did not rely on any virtual memory support. Swapping can be implemented without hardware support, even on a Z80.
 
The Coherent documentation was very clear and well written; look up a tool you use such as "awk" for instance. Worth reading even now, in my opinion.
 
Well, vi is approximately the largest program shipped in the base systems. I tried to compile it for PC/IX, and did not succeed; in Xenix, it's one of very few medium-model programs. The shell is also quite large and the main reason for sharing pure code segments in early UNIX.

The thing with 386 UNIX is that suddenly, complex applications became possible - handling larger amounts of data, keeping more state. That's where the memory requirement went up a lot.

I found out something that makes me have to update the previous post regarding system requirements for Coherent 4.x.

After doing a little more looking into Coherent's latest releases, I noticed that "system requirements" are not listed all in one place. While the base system requires 1 MB minimum of RAM, you'll need at least 4MB if you want to use X Windows. I'm guessing X windows is probably the largest program MWC provided for Coherent. It will only run in black & white with 4 MB and requires 8 MB to run in color. 16 MB is recommended. You would also need 25 MB of disk space.
 
Yea, X Windows being RAM hungry doesn't surprise me at all.

NeXTStep ran in 8MB (with a Display PostScript based window server O.O), but it wouldn't do much.

I still marvel that when the Rasperry Pi came out with, what, 256MB? It was tight on memory.
 
Yea, X Windows being RAM hungry doesn't surprise me at all.

NeXTStep ran in 8MB (with a Display PostScript based window server O.O), but it wouldn't do much.

I still marvel that when the Rasperry Pi came out with, what, 256MB? It was tight on memory.
I think the old MGR window manager ran on Coherent, which used very little memory compared to X.
 
Back
Top