Advent of Computing - Episode 149 - IDRIS Is Not UNIX

Episode Date: January 5, 2025

This episode we are taking a trip back to UNIX world. We're looking at IDRIS, the first clone of UNIX. It was supposed to be highly compatible, but use no code from Bell Labs. IDRIS ran on everything ...from the Intel 8080 up to the IBM System/370. There was even a version that could run MS-DOS programs. Sound too good to be true? Well, that may be the case. Selected Sources: https://archive.org/details/aquartercenturyofunixpeterh.salus_201910/page/n196/mode/1up - A Quarter Century of UNIX https://github.com/hansake/Whitesmiths-Idris-OS - Co-Idris disk images and executables

Transcript
Discussion (0)
Starting point is 00:00:00 Whitesmiths Limited of New York were the first to market a look-alike Unix for the LSI 11, which users could run without obtaining a license from Bell. Here is a short description of their Idris system from the Spring 1980 issue of the Whitesmith Software Catalog. Quote, The LSI 11 Idris operating system is a multiprocess resident operating system for the DEC-LSI-11 microcomputer. It supports file systems compatible with Unix v6 operating system and accepts Unix system calls except ptrace. The system includes an assembler, loader, text editor, command interpreter shell,
Starting point is 00:00:42 librarian, and sufficient additional utilities to permit the development and maintenance of new programs that operate under the system. On an LSI 11 with 60 kilobytes of memory and sufficient secondary storage, the system enables the PDP 11 compiler from Whitesmiths Ltd to replicate itself and the operating system which is predominantly written in C." Welcome back to Advent of Computing. I'm your host, Sean Haas, and this is episode 149, Idris is NOT Unix. And that's right, we're in for another unix episode at least kinda let me explain
Starting point is 00:01:29 That quote from the opening is from a 1981 article in an ACM newsletter The article is simply titled unix on a micro and it's kind of cursed now. I mean that with all due respect I really like this article. It's just weird. The premise is simple. It's a quick survey of different ways to run Unix, you know, on a microcomputer. That sounds pretty boring, yeah? Well, if you remember the Xenics episode that I ran about six months ago, then you know, at least you have an idea of what we're in for.
Starting point is 00:02:05 In 1981, Unix didn't really do microprocessors. The state of hardware just wasn't quite up to the task, not yet at least. I actually ran into this article when I was working on that Xenix episode, and since then, it's been sticking in the back of my head. One reason for that is that way back in the day I went through a bit of a Unix phase. It was just as I was getting really into computers. I was comfortable with my old hand-me-down DOS machine and had just gotten my hands on some kind of Pentium. A friend's family was throwing the thing out, so I decided to help them out, save them a trip to the dump, you know.
Starting point is 00:02:42 Very considerate, if I do say so myself. I had read in some textbook or something about this thing called Unix, and I was immediately fascinated. I would eventually get a copy of Linux format and get into the Nix world, but that wasn't Unix. Ever since then, the idea of Unix on small hardware has fascinated me, and here's this paper that's right at the start of that phenomenon. What makes Unix on a Micro so neat is that it's full of vaporware, bad information, and
Starting point is 00:03:13 disappointment. It straight up mentions that one Unix was about to be released, and then the company went bankrupt and so it never came out, but it does exist somewhere, I'm sure. I don't think the paper is even proofread, there's a bunch of spelling errors and grammar errors all throughout it. You may call me a trash man because I love this kind of garbage. I love this kind of weird gossip. My initial plan was to pick out three of these unixes that were particularly interesting and cover them grab bag style. I even had the three picked out. But as soon as I started researching, I ran into an issue. I got stuck on the first Unix. It turns
Starting point is 00:03:53 out that even footnotes can carry some weight. This episode, I'm going in blind and learning everything I can about just one of these strange micro-Uniqs likes. The topic for today is Idris, what's purported to be the first clone of Unix. There's no end goal here, no real lesson to learn. Let's just have some fun digging into some strange and perhaps improbable software. I'm gonna be frank here. At first I thought Idris was another example of vaporware. That's one of the reasons that it really hooked me. All of the service level details make Idris sound fake, make it sound like a hoax.
Starting point is 00:04:37 It was a Unix compatible and written in C. It ran on a dozen different platforms from the PC to the Vax, the Mac to IBM's System 370 mainframes. There was a version that was just a DOS executable that could also run DOS programs. There was a version for the Atari ST that came on a ROM cart. To top things off, the first photo I ran into, and the only photo I have ran into that shows anything purporting to be Idris, is a tiny low res picture of Unix running on an Atari computer. That sounds, quite frankly, fake. It sounds like vaporware, or some story that was made up for a good laugh.
Starting point is 00:05:23 I think the biggest red flag for me is the list of platforms. There's no way that's real, right? Well, dear listener, Idris is very much real. You can even find archival software. I've even been able to run Idris on my very own computer. It's sitting on the floor next to me. I'd turn it on, but it would bleed into the microphone. So what's sitting on the floor next to me. I turn it on but it would bleed into the microphone. So what's going on? Well, let me warn you, the details get even more unbelievable in spots.
Starting point is 00:05:55 The story of Idris should sound somewhat familiar to long-time listeners. It's another Unix clone that grows out of a company making a CD compiler. Everything starts with the founding of a company called Whitesmiths. The company was formed by Mark Krieger, Gabriel Pham, and PJ Plager in... probably 1978. I say probably 78 because I don't have a direct primary source here. There's some later recollections that say 78, but they're much later. Copyright and trademark records all set a date in the early 80s, but there are interviews and ads from 1979. I'm settling on 78 because that's when their first product was launched and that just
Starting point is 00:06:41 makes the most sense with the chronology. This kind of confusion isn't too strange. The start date of a lot of old computer companies can be hard to nail down. I found this especially true with software companies. My personal theory is it's because writing code is easy and coming up with ideas is easy, but paperwork is a little more time-consuming. Sadly, we know almost nothing about Krieger and FAM in this period. Krieger would eventually leave the company to work at UniPress. When it comes to Plager, however, we actually have a lot of good information. I'm going to be using Plager as my point of view character here, but that doesn't necessarily mean he was the most important person at the company.
Starting point is 00:07:27 But that doesn't necessarily mean he was the most important person at the company. It's just that we have actual information on Plager. Prior to Whitesmiths, he worked at, drumroll please, Bell Labs. So he's coming direct from the heart of Unix territory. Specifically, he was hired by Bell in 1969. According to tradition, that's the year that Unix was born. It's literally the start of the Unix epoch. So, Plager is in the epicenter of the phenomenon. At least, it seems that way if you just look at his resume. In an interview for the book, A Quarter Century of Unix, Plager explains that he was more on the periphery.
Starting point is 00:08:05 He spent his first few years at Bell wandering between labs and projects. By 74, he settled into the Murray Hill office, where the authors of eunuchs lived and worked. This is where Plager struck up a friendship with Brian Kernigan. As he put it, quote, Brian and I were really very good at drinking coffee and shooting the bull several times a day, end quote. That's a pretty classic style of office friendship any salary worker will be instantly familiar with. Kernigan ends up becoming a crucial figure in the spread of the C programming language and Unix. In 1978, he co-authors a little book called
Starting point is 00:08:45 The C Programming Language with Dennis Ritchie. This is usually just called KNRC, named after the author's initials. It's also the first book on the new language and becomes the first rough standard for C. Kernigan is also a big figure in the development of Unix. As always, C and Unix are tied at the hip. He develops Auck, a string processing tool that's the wonder and bane of many Unix programmers, even into the modern day. According to some traditions, Kernigan came up with the name Unix itself, and may be responsible for the popularity of the Hello World program.
Starting point is 00:09:27 In short, he's a big deal. He's also how Plager gets connected to the Unix world. It sounds like Plager and Kernigan became fast friends because, in short order, they co-authored a book. That book, The Elements of Programming Style, was published in 1974. This is something of a style guide for programmers with classic elements of hacker humor. It teaches such lessons as, quote, make sure special cases are truly special and 10.0 times 0.1 is hardly ever 1.0. What's interesting is that despite coming from inside the walls of Bell Labs, the elements
Starting point is 00:10:08 of programming style makes no mention of the C programming language. The book uses Fortran as its example language. C had yet to hit it big on the outside. It wouldn't make much sense to publish a book about programming style that uses a language only a handful of programmers really knew. In this same time period, 74-75, Plager may have worked on the C compiler. Now this is a little speculative. He at least learned and worked with the language while at Bell.
Starting point is 00:10:41 I haven't found a direct claim by Plager, but he implies that he got some compiler experience at Bell. I haven't found a direct claim by Plager, but he implies that he got some compiler experience at Bell. But his time at the lab was drawing short. As he put it, quote, I felt that I didn't have a future there and that I'd better move on before they asked me to move on, end quote. He'd get a job lecturing about programming for a few years. That worked for a time, but wasn't really what he wanted to do. He wanted to get back to Unix. He wanted to get back to software. In 1978, Plager started doing some contract work under a company called Yordon.
Starting point is 00:11:17 At this gig, he ends up, under contract, writing a C compiler. This is also where he meets Krieger and Fam. This phase though doesn't last very long. Before 78 is out, the trio bails and forms Whitesmiths. Their first office was an apartment in New York City, and that's the setting for many stories from Whitesmiths early days. Before we go on, I should explain the name. Krieger explains it like this in an interview with Infoworld. This is also the only interview we have with Krieger. Quote, it was made up by Bill Plager.
Starting point is 00:11:53 The name Whitesmiths was viewed as the opposite of Blacksmiths. A blacksmith worked in hard goods and a whitesmith worked in soft goods, a la software. We also discovered that Wh whitesmiths in the Middle Ages were the tin and silver workers, the workers in fine products." You gotta love that kind of stuff, right? That's a pretty classic hacker-style joke, and a little bit groan-worthy, perhaps. But at the same time, the cleverness has frustrated me to no end, since whitesmiths are a real thing, and show up in the historical record, it can be a little hard to search for sources about the company.
Starting point is 00:12:36 Now, the core business plan for whitesmiths all revolved around C. By 78, the language had broken containment. Folk knew about C and they wanted to start using it. But that was tricky in this period. Unix came with a C compiler, but Unix at the time only supported a few platforms, namely the PDP-11 and Interdata-8. That's not a big spread. But actually getting a copy of Unix was a bit of a strange process. The licensing process was a shifting target, and not everyone could license Unix. The C compiler that Plager wrote at Yordon was actually one company's attempt to get
Starting point is 00:13:19 around the Unix issue. To quote again from a quarter century of Unix, I worked around the clock for a week. It wasn't the greatest compiler in the world, but it was adequate. And along the way I learned where the market was, because people would come to me and say, we don't want all that Unix stuff, we just want C." Unix and C were tied at the hip, and not everyone liked that. Hiring a contractor to write a C compiler, that may sound a little heavy handed, but I think that should give us an idea of how desperate some
Starting point is 00:13:51 companies were. When WhiteSmiths started up, their main business plan was, accordingly, to make a fully commercial C compiler. They wanted to bring a compiler to market that could be bought off the shelf, like any other software, one that would exist outside the Unix ecosystem. That, however, had its own issues. For one, C wasn't actually standardized yet. ANSI-C, the first official standard, isn't pinned until 1989. As such, any C compiler was going to be a little non-standard. C itself is a very simple language. You don't need a whole lot of a standard to tell you how to place curly braces and how pointers work. But that's only part of the equation. C as an application language relies on a set of libraries, a set of standardized libraries. These provide support for things like printing to the screen, loading files, string processing,
Starting point is 00:14:51 and any kind of system call you might want to make. That's sometimes called libc, the C standard library. Early versions of whitesmith compilers have a bit of a reputation for using strange, non-standard names for their libc functions. You won't find the classic printf, for instance. I bring this up because when you poke around for accounts of these compilers, you will mainly find this complaint even once their compilers switch to using standardized names. Complaints aside, Whitesmiths actually gets their first customers fairly quickly, yet again proving that the market was ready for C without Unix. Plager gives this fun description of the sale, quote,
Starting point is 00:15:36 They said, we see you're doing C compilers. We're in the market for one. Can you come down to Philadelphia? But I said, no, I'm too busy. You want to talk, you come here. And they did. They sent three people up to New York and we sat in this little apartment on West 79th Street and we told them what we're planning. And they said, we want what you've got. We want everything you say you're gonna do for the next three years." End quote. This is while Weitzman's first C compiler is still under development, yet within a few months, they would deliver, initially for the PDP-11. But the great thing about C is that it's meant to be portable, and since Whitesmith's C was separate from
Starting point is 00:16:19 Unix, it could be ported pretty quickly. By 1980, the company offered a compiler for the PDP-11, the Intel 8080, the DEC VAX, and the Motorola 68000. That's running the gamut from 8-bit processors to 32-bit mini-computer. What's neat is that in this lineup were a number of cross-compilers. Plytemps sold a compiler that ran on the PDP-11 but would output binaries for the 8080. Who would want that? Well, in a word, businesses. This let software houses work using a PDP-11 then ship software for microcomputers. You could use a more sophisticated environment for development but still sell programs to CPM users.
Starting point is 00:17:07 This ended up working as a business plan fairly well. In 1980, Krieger estimated they had sold between 225 and 250 licenses. It's hard to estimate revenue from that, since those were licenses for a whole pile of different products. But we know that their CPM version of the compiler sold for around $600 in 1980, which is just under $2500 after inflation, so there's some good money here. But, dear listener, Whitesmiths wasn't a one-trick act, and we know that Unix and C are tied at the hip. You see, this compiler was just the opening act for a much larger project. We glossed over an important point a little earlier. In 1978, there was still resistance to Unix. Why was that? Why weren't nerds the world over ready to embrace the Unix future?
Starting point is 00:18:05 How could they be so deluded? Well, porting and licensing were two main issues, as I mentioned. Unix was written in C, so it was portable in theory. In practice, early versions of Unix didn't really like to move around. Licensing was also restricted to universities and research outfits. Even then, a license could be pretty expensive. Unix just wasn't really commercialized. It also lacked a certain maturity.
Starting point is 00:18:32 That's a buzzword you hear a lot around computing, and it's one that's kind of hard to quantify. Eventually, as a language or operating system or computer ages and grows, it hits this stage where things just click. Stuff works. There's enough support that you don't need to jump ship to solve problems. There's enough software that you can really get comfortable.
Starting point is 00:18:56 There's enough experience around that you can actually learn the system. You can hire someone who's, say, a Unix sys admin. In the 70s, Unix wasn't quite there yet. It was still missing a lot of the features that we know and love today. A big shift happened at the end of the decade. To quote, the advent of version 7 in 1979 brought new attention to Unix. Many of the previous rough spots had disappeared. The maximum file size had grown to 1 gigabyte, and a standard I.O. library had been introduced. During this period, microcomputers running Unix appeared, and Unix lookalikes such as
Starting point is 00:19:36 Whitesmith's Idris and Mark Williams' Coherent emerged." David Friedler in Unix in the Marketplace for Byte Magazine. So what was so great about this new version of Unix? The file system bump was one thing, but that's small potatoes in the grand scheme. Many have said that v7 is when Unix becomes Unix, when it becomes recognizable. It's when C's STDIO library is first introduced, which has such hits as printf, all file handling routines, and even introduces null to the language. malloc is also introduced, the now familiar memory allocation call. Environmental variables show up for the
Starting point is 00:20:25 first time. So does the Boren shell, which is still the default interface for most Unix-like systems. That includes your favorite Linux distro. Another huge change, and perhaps the most consequential, was that v7 Unix shipped with a new C compiler. It was called PCC, the Portable C Compiler. As the name suggests, this new compiler was designed specifically to be portable. All machine-dependent code was minimized and packaged together. That way, parting the compiler was as easy as rewriting one or two files. In turn, this made V7 Unix itself more portable, since Unix had
Starting point is 00:21:08 to be compiled from C. This all combined to form a snowball kind of effect. Unix could now be ported to more platforms more easily. That meant more people could be exposed to Unix. In turn, that meant more software could be written for Unix, which would make Unix a more enticing platform. More people would get experience with Unix. The final piece is that Bell Labs started to promote Unix and started to publish documentation and articles about Unix. You can actually get user and programmer manuals now. This was a mature ecosystem.
Starting point is 00:21:43 This is what maturity looks like, and this is how Unix starts to really pick up steam. Then how does this open up doors for clones? That gets into the complex realm of Bell and their antitrust dealings. Bell was subject to a number of court rulings that prevented them from selling anything unrelated to telecom stuff. They had to be a phone company, or else. That's why Bell could never directly sell Unix. They could license it in a number of circumstances, but not sell it directly. We saw one way this worked a few months ago when we were discussing Microsoft Xenics.
Starting point is 00:22:23 In that case, Microsoft acquired a license to the Unix source code. Microsoft then turned around, worked up a binary distribution, and sold that on to other companies that would actually sell disks. It's layers on layers. In practice, not everyone could work up such an agreement. As Plager explains in A Quarter Century of Unix, quote, I really wanted to sell Unix. I spent some time talking to the Bell lawyers before I realized that, because of the consent decree, they just weren't gonna do it. Marketing was a dirty word, a dangerous dirty word, and I had to decide whether I wanted to fight to sell Unix or whether I just bite the bullet and
Starting point is 00:23:03 knock it off. It wasn't an easy decision. My goal was to fill the lower niche." This would have been around 78 or 79, the same time frame where V7 was being finalized and released. Also, incidentally, the same time that Microsoft was negotiating their own license agreement. Companies could, in some cases, get license agreements. Institutions could make their own distributions of Unix or use existing ones like BSD. But when it came to the smaller end of the market, small offices and home users, there wasn't really an easy way to get access to Unix.
Starting point is 00:23:42 Plager wanted to fill that gap. It's worth noting here that licensed Unixes, like Zenix, wouldn't hit shelves until the early 80s. These distributions did target microcomputers, but in most cases had severely limited feature sets. The PC version of Zenix, for instance, couldn't do memory protection or multitasking. So even if you waited around for a thoroughbred version of Unix, it may not have been that useful. That means that the big value proposition was availability. So while Whitesmith was slowly accruing customers for their C compiler, they started up another project. That project was called Idris. I seem to remember reading that it was named after some Persian god, but I can't find that exact statement now, and I also can't find a Persian god that
Starting point is 00:24:37 matches that name. Inspiration aside, this was planned to be a fully functional and cross-platform clone of Unix. But what exactly is meant by Unix compatible here? That gets complicated really quick. First off, we aren't talking binary compatibility. You couldn't take an executable compiled under Unix v6 and move it over to an Idris machine and just run it. I mean, first there's the simple fact that Idris ran on different computers than Unix did. And second, there's the
Starting point is 00:25:12 fact that addresses and system calls wouldn't line up. Instead, you could take source code written for Unix and compile it under Idris. Of course, that would be done using Whitesmith's C compiler, which, as we discussed, had some pitfalls. Not all library functions lined up exactly, but that's not really a knock in this period. The standards around that were changing quickly as Unix was growing, so I don't think there would have been a perfect solution here. In practice, that meant that Unix programs would need a little touch-up before compiling for Idris. This was further complicated. Idris started development just before v7 hit the scene. As such, all the initial compatibility features of Idris were built to match
Starting point is 00:26:01 Unix v6. That could lead to some more practical issues with to match Unix v6. That could lead to some more practical issues with migrating Unix code to Idris. However, in general, Idris worked the same way as Unix. There are some huge caveats there, but we'll get to that eventually. Idris had an equivalent set of system calls. It used memory in a near-identical way. Idris could read and write the same file systems as Unix. If your disk drive's lined up, then you could write a floppy from a Unix machine and read it under Idris. Files are also handled the same way, and you have all the
Starting point is 00:26:38 superficial things like a similar shell and commands with the same names. Then, what was the difference? That gets to some really interesting and really weird little details. First, let's start with memory. If you remember the Xenics episode, you probably know where I'm going. Unix has very few hard and fast system requirements. One of those is that it requires a memory management unit or MMU. That's a circuit that's used for memory protection and virtual memory. It's what keeps processes from touching each other, and it can be used to trick processes into thinking they're running in their very own isolated chunk of memory. Unix also uses the MMU so it can load programs anywhere in memory. This is a neat sleight of hand. You can configure an MMU to map a so-called
Starting point is 00:27:32 logical address of memory to some physical location inside your chips. When Unix loads a program, it allocates some memory for the program. That can be anywhere. Then it sets up the MMU to expose the start of memory in that address as zero. That way a program can be loaded anywhere without issues with pointers or addressing. That's pretty fundamental to how Unix works. This means that traditionally Unix cannot run on computers without MMUs. The IBM PC doesn't have an MMU.
Starting point is 00:28:08 PC Zenix got around this by crippling Unix. It can't protect memory, it can't load multiple programs, it can't swap. It's missing a lot of Unix. In general, ports of Unix to these smaller platforms have some kind of compromises to get around the MMU issue. Idris, on the other hand, doesn't contain a single line of Unix code. It doesn't have to have the same pitfalls. Idris was able to operate either with or without an MMU. One of the reasons for this is that the first platform Whitesmiths targeted was one of the smaller
Starting point is 00:28:44 PDP-11 models that did not have a memory management unit. So then, how does Idris operate without that circuit? Things are a little vague, but we have a general idea. Documentation calls it a quote emulated MMU or a software MMU. Now, I don't know how it does protection, but I do know how it handles very primitive virtual memory. Normally, every time you reference an address, the MMU will map that request over to a physical place in memory. So, if you ask for address 0, the MMU goes to its little table and passes you over to some other address. This is all done at runtime, while the program itself is being executed.
Starting point is 00:29:31 Idris does that mapping, that address swapping trick, on load time. That means that when Idris loads a program, it looks through the binary file and replaces any references to addresses with some magic mapped address. Idris itself finds, using software, every time you ask for something like address 0 and rewrites it to reference some other address. That will work. It's a little finicky, but it will function. The issue is that once you modify that program, it can't easily be moved
Starting point is 00:30:05 to another location. Idris is rewriting all the addresses to match some load address. That's not truly relocatable, but that's how Idris is able to work on smaller machines. On its own, that's quirky and neat. But check this out. Idris was also a real-time operating system. Now, I know that probably doesn't hit very hard for most of you. The short story is, that's weird. Unix isn't real-time. Most operating systems aren't real-time. It's actually pretty hard to be real-time. So, what's up with that? to be real-time. So, what's up with that? First, let me cover the basics. Real-time is one of those phrases that's been reused for a few different things over the history of computing. In this period and in this context, real-time means a very specific type of process scheduling.
Starting point is 00:31:00 In a real-time system, operations are guaranteed to either run at a specific time or run in a specific amount of time. This is often handled using events. You'll set up certain tasks to be executed after some event occurs. Say you need to check a bus for a signal every 100 milliseconds. You set your system clock to generate an event every 100 milliseconds. You set your system clock to generate an event every 100 milliseconds, then you tell the operating system to run your bus checker whenever that event fires. That's often complemented with very predictably timed operations. You might know that that
Starting point is 00:31:36 task will take 10 time chunks to run. Real-time systems are meant for things like industrial machines, think factory equipment, communication systems, anything with very tight and predictable timing constraints. This is in contrast, in most ways, to more user-oriented machines. Unix is a time-shared environment. It doesn't really care that much about timing, more about splitting resources relatively fairly between processes and users. Idris is interesting because it could work as both a real-time and more traditional time-shared system. To quote from one volume of Unix World, Idris uses a, quote, hybrid scheduler, which provides
Starting point is 00:32:23 the benefit of event and priority-driven schedulers by establishing a priority between processes' priority and the time quantum to which it is allocated, Idris can adjust priorities as these time quantums expire. A built-in mechanism ensures a kind of fairness relative to how long a given job must wait in order to run." That is to say, Idris had a very sophisticated process management system. It implemented something similar to Unix's process system, plus expansions for real-time processing. That's not only unusual, that's fairly complicated. All of this was paired with highly portable code. The fact that Idris was written
Starting point is 00:33:06 in up-to-date C, that Whitesmith's C compiler was portable, and that it didn't need an MMU, meant Idris could run on just about anything that ticked. They started with the PDP-11 and LSI-11, the microchipped version of the same computer. This was followed up with a version for the Intel 8080 and Zilog Z80, then the Motorola 68000, DECVAX, and Intel 8086. That spread meant that Idris ran on just about any hardware you wanted. I've also seen it stated that Idris ran on IBM System 370 mainframes, but I don't know if I believe that. I haven't seen any sources to back that up. In that lineup, the Intel chips stand out to me.
Starting point is 00:33:52 The 8080 because of its tiny size, and the 8086 because of the PC, or the 8088 if you wanna pick nits. The PC part we'll get back to. As for the 8080 claim, we know very little here. After that time, claim it was able to run on any quote, bank-switched 8080 or Z80. One of the issues with 8-bit computers is their memory space. To be clear, it's very small. Bank switching was one way to access larger amounts of RAM. The idea of an 8-bit Unix is also wild to behold, but there's just so little information
Starting point is 00:34:31 here. We will find that that's the case with many of the ports of Idris. The 68000 port is also worth mentioning for a few reasons. Firstly is the fact that that chip shows up in the Apple Macintosh and Atari ST. It ends up being well positioned for the home. And secondly, because the 68000 is used in many early Unix workstations. Here I'm talking about things like Sun's workstation, or the NeXTcube, SGI machines, the list is actually pretty large.
Starting point is 00:35:03 These were all computers meant for heavy use in offices that all ran some type of Unix. So it's interesting to see that Idris would also be compatible with that type of computer. That's just about all the finer details that matter, which means I can introduce a bit of a complication to Whitesmith's business plan. The goal of Idris was to be a cheap way to get Unix on a computer. How cheap? Well, that depended on the platform and the package.
Starting point is 00:35:35 Idris could ship as a minimal install, with a C compiler, with added tools, and even all the way up to source code. The cheapest versions were around $500, with some distributions bumped up to $1000. You could license source code, but that was much more expensive. If we were in 1978, that would be a really good deal. Licensing Unix from Bell came at various costs over the years, but the number that I usually see quoted is $20,000. That's a pretty rough estimate, but I think it's clear to see that Idris was a very good value proposition. Idris was also the first clone to market, so it was well positioned to be a real winner.
Starting point is 00:36:19 So what's the complication here? Well, we've already seen one, Xenix. There were actually a number of officially licensed Unix distributions that show up in the very early 80s. Xenix is a bit of an odd duck here due to Microsoft's business model at the time. They prefer to license Xenix to computer manufacturers, so the fee would be wrapped up in a larger bundle. The prices I've seen quoted are between 500 and 800 so it's in the same ballpark as Idris. There were a number of other official Unixes in that same sub $1,000 price range. Then there's the matter of Mark Williams Coherent, another Unix clone made at a dietary supplement company. This was another 100% Unix-free Unix system.
Starting point is 00:37:12 It offered similar compatibility features. It ran on microcomputers. It came out in 1980 and cost around $500. The point is Idris hit the market just before competition emerged. There are a number of reasonable options all at a similar price point, all with similar features. That's a recipe for a tough time. To win out in this kind of market you usually need some differentiating factor, something that sets you apart from the competition. But when it comes to compatible systems, that gets tricky.
Starting point is 00:37:46 The whole reason to buy a Unix compatible system is to run Unix software. You just want Unix. Everything has a C compiler, runs some text editor, and can execute your favorite version of Fortune. You can't shake things up too much, or you risk breaking compatibility. This may be one of the reasons that Idris goes the real-time route. It sounds like early versions of the operating system already had some real-time features, but as it matured, more features were added.
Starting point is 00:38:17 Idris became more and more real-time-ish in order to court a market niche. At least, that's my reading from the very few sources I have to work with. I want to spend the rest of the episode looking at a few particularly strange expressions of Idris. This is, I think, the other way that quitesmiths try to make Idris stand out. But before I go on, I want to drop in a story. This is one of those little tangents that I think is worth the time. You see, paired programming may have been invented during the development of Idris. Plager is often credited as the creator of paired programming, much to the chagrin of many a
Starting point is 00:38:58 practitioner. The concept here is simple. Two heads are better than one. In paired programming, you sit down two programmers in front of one screen. One programmer drives, actually typing. The other shoulder-surfes. They watch and critique. When the driver gets sick of this arrangement, the programmers switch chairs. When done well, this can be a pretty sweet setup. It's a way to collaborate, in real time, on tasks that can't be broken up into separate units. You can bring double the experience to a challenge. And, if there's an imbalance of experience, it can serve as a way to help train the less experienced programmer.
Starting point is 00:39:38 That is, assuming communication is clear and respectful, paired programming can just as easily end in some impromptu bare-knuckle boxing. You may choose to avoid pairing on Monday mornings, specifically. The story of pairing comes to us from The People Wear Papers by Larry Constantine. Quote, It took P.J. Plager, though, to really teach me about the benefits of visibility. Shortly after he starred at Whitesmiths Limited, I visited him at their New York quote-unquote headquarters, a small apartment in Manhattan.
Starting point is 00:40:15 Somewhere off in one of the rooms, there lurked a mini-computer. Stuffed in a closet in order to keep the clatter down was a printer. And around what should have been the living room were scattered several terminals. At each terminal were two programmers." According to Plager, this practice not only increased productivity, but actually saved Whitesmith's money. The code that came out of these pairs was better quality. So, when we're talking about Idris, don't just imagine some programmers working in an apartment in New York. Also imagine that they're working in teams.
Starting point is 00:40:56 One of the reasons I'm drawn to these weird Unixes is because they always defy expectations in some way. Coherent is interesting to me because it's a total clean room style implementation. Bell was even considering suing Mark Williams company over Coherent, but their own tests proved that it didn't use a single line of Unix's source code. Xenix is interesting because of how it handled small platforms. Sure, it compromised a lot of crucial features, but it was Unix, and it did work on an IBM PC. You just have to stretch your definitions of work a little.
Starting point is 00:41:34 I hope I've already shown why Idris is interesting. If I haven't convinced you, then don't worry, I still have a trick or two up my sleeve. Idris ran on just about everything that included Microsoft DOS and Mac OS. That's right, there was a version of Idris that ran as an application. This I think is the wackiest side of the system. Why is this so wacky? Simply put, operating systems don't really play along with each other. When you run an operating system, it gets full control of the computer. In fact, it has to have that.
Starting point is 00:42:11 The whole job of an operating system is to allocate resources to running processes and manage computer hardware. You can't really have two operating systems competing for the same hardware. That just doesn't really make sense. Now there are ways to make this happen. One common approach is to use an emulator. This will present a fake computer that you can run some other operating system on. In this setup you have a host operating system, whatever's running on the real computer, and then a guest, the operating system that's trapped in your little emulation cage.
Starting point is 00:42:47 There are some very sophisticated ways to do this going all the way back to the mainframe days. IBM famously had an entire system just for pulling this trick. Today we commonly use things like Docker or VMware to do the same thing. But that's all big and modern stuff. And all this relies on tricking the guest into thinking it's running alone on a computer. That's not the case for these guest versions of Idris. I'm going to kick things off with the DOS version, since that's the best preserved. In fact, we have full documentation and disk images for this. I've even been playing around with this version of Idris.
Starting point is 00:43:27 The program is called Co-Idris. Once installed, you can boot into DOS as usual. Then you type Idris and boom! You're in the Unix world! You can quickly switch between DOS and Idris. You can even run DOS software from inside Idris itself. And this is all happening on an Intel 8088 processor. That, dear listener, shouldn't be going on. That's weird. This is the kind of thing that I wish I could have experienced as a teenager.
Starting point is 00:43:59 I was actually able to get Doom running under co-Idris via DOS. It's, I don't know what else to say. This is cool software. And the use case here, at least I think, is relatively clear. Sometimes you need to use two different operating systems. I've had to do this before professionally. One time I had to write a program for Windows, but all of my tools ran on Linux. I have friends that have done app development on Windows targeting
Starting point is 00:44:26 iOS and Android. In all those cases, you're not only being very professional, but you also need access to multiple operating systems. Co-Idris would let you do something like write DOS software using Unix tooling. That's actually something I do routinely. I'll write DOS programs using Linux. It's a real treat because Unix-like systems have really good programming tools. I'm sure there are more mundane reasons to do this setup also. Maybe you just have to run Lotus 1, 2, 3, but also have access to some specific networking tool. Whatever the case, co-idris could have been a very, very powerful office
Starting point is 00:45:06 tool. So, how does it work? What's going on here? Well, it's not emulation. Nothing so simple. My understanding of Co-Idris is being stitched together here from a number of sources, its documentation, a 1984 PC Magazine article, some gossip in the talk tab of a Wikipedia article, and my own experience playing around with the platform. I know, how's that for a bibliography? First of all, you can set up co-idris in a few ways. You can make an entire hard drive partition for idris to use. In that case, I think you might be able to boot right into
Starting point is 00:45:45 Idris, but that's not the primary use case for this setup. If you go the partition route, you can actually have a nice isolated space for Idris to work with. You can even set up a swap partition, which is a Unix trick used to increase its effective memory. So, that's something I wasn't expecting, but Idris can actually swap on a PC. The other option is to use a disk image. At least that's what I'd call it. The documentation literally just calls it a quote-unquote large file. Very technical stuff here. It's just a file that acts kind of like a disk drive. When co-idris is set up like this,
Starting point is 00:46:27 the image is mounted as a drive. That may sound exotic, but Unix actually has the tooling to do this already. You can take a disk drive, copy all its contents into an image file, and then mount that file as a disk. In fact, that's exactly how co-idris is doing this. When you start co-idris, you specify a path to mount as the root file system. That can be a partition, a disk drive, or just a file. That disk, be it partition or image, has all of idris installed on it. That's where Unix lives. The DOS program, idris.com, is just 46 kilobytes. That's simply not big enough for a whole Unix install. So what I think is going on is that the DOS side simply kicks things off. It loads the disk image and starts executing Idris
Starting point is 00:47:20 from that image. At that point, execution is handed over to Idris completely. This is possible because DOS is dead simple. First of all, DOS offers no protection of any sort. A program simply takes over the whole computer at any time it feels like. That's how programs normally function under DOS. They're loaded to a set memory location and DOS just jumps there. You can run DOS programs from co-address because the requirements to run DOS programs are also very low. DOS provides almost no runtime support, like being honest here, many programs just ignore the fact that DOS even exists. The runtime support that is there is handled by interrupt calls, which DOS sets up when it boots.
Starting point is 00:48:11 Co-idris just leaves those in place. Then it can pretty simply execute a DOS program. Returning to DOS is, similarly, a simple affair. When a normal DOS program wants to exit, it just calls up an interrupt routine to say, hey, I'm done. The routine then tries to load command.com off the boot disk. Basically, whenever you go back to DOS, it reloads most of itself into memory. Co-IDRIS does that sleight of hand. The state of IDRIS is kept on the disk image or partition and DOS boots right back up. The final trick is multitasking.
Starting point is 00:48:48 I mentioned earlier that Idris did some strange things to multitask on systems without MMUs. Well, for co-Idris at least, it uses a more simple trick. The compiler that ships with co-Idris is set up to generate code using only relative addressing. That is, the final machine code doesn't reference any address by number. All addresses are referenced by offset within the program. That way, a program can easily be relocated. Thus, you can have multiple programs loaded at once.
Starting point is 00:49:21 Simple. That's it, and it works. Co-idris on its own should be freaky enough to turn your head, but there's more. Whitesmiths just keeps on giving. But to be clear, Co-idris is the best documented and preserved of these oddities. From here out, we're entering the realm of mystery. The next stop on our tour is Mac Idris. This one we know almost nothing about, but we do have a few articles and a little speculation to go off of.
Starting point is 00:49:53 Mac Idris, all one word, ran as an application under macOS. It used the same disk image mechanism we saw with Co-Idris. I would also suspect that it does the exact same image mounting trick here. One funny thing is that Mac Idris is a bit of a latecomer. It's released by Whitesmith's Australian branch in 1989, and that's right, they had an overseas concern by that point. By 89, the Mac had entered a weird phase. It already supported simple multitasking using the multi-finder. That let you switch between Mac programs. And well, Mac Idris is just a program that runs on your Mac.
Starting point is 00:50:36 So you could swap between a running Unix program and a normal Mac program. Imagine switching between Photoshop and Vi. That's gotta have been slick. The late start also means there was competition. In 1988, Apple announced AUX, their own licensed port of Unix. The issue here is that AUX was purebred, so it needed an MMU to operate. Not all Macintoshes had that chip, so there was still space for smaller versions of Unix. That's where Mac Idris shined. It was able to run on hardware as limited as a Mac Plus and Mac SE. But that's about all
Starting point is 00:51:17 we know. We don't have disk images, we don't have screenshots, we don't have manuals. There may be disks still out there. This is something that if it ever surfaced, would be really, really cool to see in action. The final oddity and mystery that I'd like to present is Idris for the Atari ST. Now I was just going to say this existed, but in the 11th hour, I actually found a trove of documents to work off. There were two big articles in Computer Shopper in 1988 that talked all about Idris on the ST.
Starting point is 00:51:53 This was one of the first mysteries about Idris that I ran into when I started working on the episode. The Wikipedia article for Idris is, well, I love Wikipedia, but it's lacking in many regards. Its sources are all broken links. It doesn't cite much, but it has one photo. It's this very low resolution image of something running on an Atari ST. The caption says it's running Idris and X windows, which might be a little hard to believe. The only other information is that it booted off a ROM cart, and it was ported by a third party. That's it. We don't even get a name for the product. This is the kind of hazy digital memory that really gets me excited. I want a cartridge
Starting point is 00:52:39 I can plug in that plays Unix. So here's the scoop. This did exist, but we have scant information. ST Idris, which I've decided to call it for lack of an official name, was a standalone operating system. It wasn't a guest like MAC Idris or CoIdris. It was ported to the ST by Computer Tools International. Whitesmiths already had a version of Idris that worked on the 68000 processor, the very chip inside the ST. Computer Tools took that existing port, wrote custom device drivers, and bundled it up for the Atari machine. From everything
Starting point is 00:53:17 I've read, it sounds like once you booted it up, you were in a very standard Idris setup. At least, as standard as you can call Idris. It did multitasking, multiple users, and even did the whole MMU emulation trick. As for X Windows, well, that's the mystery. One of the articles in Computer Shopper is actually dedicated just to talking about X. That would make you think that, yeah, actually, ST Idris shipped with a graphical interface. We even have that blurry photo, right? Well, not so fast.
Starting point is 00:53:50 In the middle of the article we get this nugget. Quote, an X-Windows package will most likely be packaged with the Atari distributed release of Idris. If not, it's very likely several enterprising programmers will make their own ports." So uh, what, did ST Idris have X windows? I have no idea. All the later mentions of the operating system are just that, mentions. There are no more in-depth articles for me to work off of. All we have is a grainy photo of an ST running something that looks kind of like X. It has a
Starting point is 00:54:30 little X cursor but I don't know what software it's running. It says Idris but I can find nothing else about the photo. And we have this one article that says Idris may have shipped with the software so who's to say? This is one of those things that could very well just remain a strange little mystery. Alright, that does it for our look into Idris. This is one of those times where I feel confident in saying this episode is fully comprehensive. Anything I've glossed over or missed is either a very technical detail or something we simply don't have information on. One of the only avenues I didn't go down was the whole real-time application of Idris. And I know, I know, any Idris heads out there are probably up in arms by this point. The fact of the matter is I ran into a lot of articles saying that Idris was great for embedded in real-time applications,
Starting point is 00:55:31 but didn't mention what those applications were. I think that's just another symptom of this style of poor preservation. One thing that still blows me away is just how poorly preserved Idris is. still blows me away is just how poorly preserved Idris is. Co-Idris is fully preserved with disk images and documentation, and we have disk images for one version of 68,000 Idris. But that's it. That is all the software we have. That's wild to me for a product that ran on so many different computers, had so many different versions, and survived all the way into the 1990s. I think that Idris shows off the true nature of Unix, even though it is a clone. It's small, scrappy, and could run on just about anything. At least, that's the modern view of Unix.
Starting point is 00:56:18 What makes the story so much more compelling to me is that at the time Idris emerged, the late 70s, Unix hadn't quite gained that reputation. It was still small and scrappy, yes, but was still locked on a few platforms. It was hiding out, by and large, inside Bell Labs. Unix was just starting to take hold of the wider world as Idris hit the scene. So it's really cool to see the best parts of Unix reflected in this strange software. Okay, so the final word is that you can actually
Starting point is 00:56:51 use Idris today. I did mention I've been playing around with co-Idris. Well, after some testing, it turns out to be very easy to run. I'll link to a GitHub where all the files are available. Co-Idris is nice enough that you can actually run it in DOSBox. I've personally been running it on my beautiful IBM PS2 model 25. I've finally reached my goal of Unix on an 8086. That said, the environment is pretty rough.
Starting point is 00:57:23 The text editor sucks, it doesn't seem to want to mount DOS images, and it's a little slow on real period hardware. But hey, that won't stop me from having fun with it. Thanks for listening to Abjent of Computing. Before I clock out here, I have a few announcements that I should have done earlier, but I'll do them now. I usually make good by the end. First is, I currently have a poll running on Patreon
Starting point is 00:57:49 for the next bonus episode. So if you want your voice to be heard, or you want to get that bonus episode, you can head over to my Patreon page. I'm also going to be speaking at the Intelligent Speech Conference on February 8th. You can get tickets for that at IntelligentSpeechOnline.com. And then the next weekend, President's Day weekend in the states, I'm going to be going down to VCF SoCal to speak,
Starting point is 00:58:14 maybe do a panel, and definitely mill around the convention all weekend. You can find information about that event at VCFSoCal.com. In the meantime, I'll be back in two weeks with the next piece of Computing's past. You can find links to everything over at AdjunctiveComputing.com that includes the Patreon for the next bonus episode. I think the rough plan is sometime this month, but we'll see how prep for all the other events affects my timeline. Until next time, have a great rest of your day.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.