Talk:XENIX
Contents
Recent updates
Notes: I listed the languages in alphabetical order, except for 'C' as this is always a given for UNIX/xenix/linux/GNU systems.
I will research and add the release dates for as much as I can find.
I added links for references, I added architectures, and I will add a list of both distribution repositories, and running emulators and VMs. ( one click runs. )
How would Microsoft have gotten the first version of XENIX to run on a PDP-11, i.e. what was their development machine/OS? PDP-11/RSTS-e? I am wildly guessing, as besides the Zilog 8k, this architecture PDP-11, which seems to be a specialty around here, I have never used. ForOldHack (talk) 22:02, 9 March 2019 (CET)
- There's a lot of PDP-11 hardware stuff documented, because I have a particular interest in them - I used them extensively at the start of my career. DEC software is not covered much, as we didn't use it - just Unix, which I have been covering.
- I have no idea what uSloth would have used for a PDP-11 port - did they really do one? They'd have needed a C compiler, and that would have been a lot of work (unless they used an existing one - maybe they brought up V7 on a PDP-11)? Jnc (talk) 15:25, 10 March 2019 (CET)
- They used a PDP-11 for a vast amount of their development, because the POS known as DOS could not do it, and they had a cross compiler on the PDP-11 for x68.
- "1981: MS's Bob Greenberg ports PDP-11 v7 (from HCR or AT&T?) to Codata Z8000" http://www.softpanorama.org/People/Torvalds/Finland_period/xenix_microsoft_shortlived_love_affair_with_unix.shtml
- The history was unconceiling itself rather slowly, in leaps and bounds
- Apprently they used a PDP-11 to develop Xenix, and then soon switched to it, and used it for everything until they kluged together NT server, and even then ... I bet they still have a few things running in emulation... ForOldHack (talk) 07:45, 11 March 2019
- They used a PDP-11 for a vast amount of their development, because the POS known as DOS could not do it, and they had a cross compiler on the PDP-11 for x68.
Humor
"where it still languishes today." This will remain as homage to the spirit of this wiki. ForOldHack (talk) 07:40, 11 March 2019
Version info project
Here is a bunch of version information: "Having previously appointed myself SCO Director of Acronyms
http://www.cruzio.com/sco/ and keeper of the mysterious OSR5 BTLD naming conventions, I'll now declare myself MOSCOVA (Minister Of SCO Version Archaeology) and prepare a list of the last known versions of various dead SCO products, and the secret incantations necessary to determine if one really has that version. Please consider this a chain letter and forward it to any likely conspirators with useful information. The last person in the chain gets stuck with turning this into a TA. ForOldHack (ForOldHack) 05:20, 6 December 2020
Version info:
SCO has many ways of identifying products and displaying version information. Some of them actually agree.
1. Read the disk, tape or cd label. 2. tar tvf /dev/install | grep "#rel" 3. swconfig 4. grep "^#rel=" /etc/perms/* 5. uname -a (old Xenix 286 only) 6. uname -X | grep -y "rel" (OS only)
I suggest: cd /etc/perms grep "^#rel=" * | tr ":" "\011" and: swconfig to get a shopping list.
If you have floppy images that are not easily identified, try:
strings image_file | grep "rel=" to extract the "custom" info line. If the image is compressed, run: zcat imagefile.Z | strings | grep "rel="
There are also various names for the same products. For example:
xnx296a, UFN and prd=xos are all the same. Obtaining serial number information, and identifying cd roms without proper labels, will be covered separately.
( If you enjoy headaches, read xnx296a https://www.scosales.com/ta/kb/103396.html
XENIX 286 ONLY
Name Last Version Incantation
SCO Xenix 286 2.3.2 uname -a DevSys 286 2.2.1 grep "^#rel=" /etc/perms/devsys CGI 286 grep "^#rel=" /etc/perms/cgi Text Processing System grep "^#rel=" /etc/perms/text Eroff 2.0 VP/IX 286 MultiView 286 Man Pages Games 2.2.2 grep "^#rel=" /etc/perms/games Fox (dbase 2 clone)
MSBASIC 5.41 Appears on startup screen. MultiPlan 3.00N MS Word 3.0
XENIX 386 ONLY
SCO Xenix 386 2.3.4 uname -X | grep -y "rel" Tandy Xenix 386 Unisys Xenix 386 DevSys 386 2.3.0 grep "^#rel=" /etc/perms/devsys Text Processing Sys Man Pages 2.2.0 ???? grep "^#rel=" /etc/perms/man Games TCP/IP 1.2.0 grep "^#rel=" /etc/perms/tcprt Streams runtime 1.0.0c grep "^#rel=" /etc/perms/streamsrt Xenix-Net UniPATH SNA-3270 Xsight for Xenix 2.0.0 Xsight for DOS 2.0.0 Xsight 386 complete 5.0.0 SCO Office Portfolio 2.0.1 SCO Manager 2.1 Multiview Runtime 1.6 ???? SCO Professional 2.1 grep "^#rel=" /etc/perms/pro SCO Lyrix 6.1 Integra 1.1.1 Foxbase+ 2.1.2 Appears on startup screen. HCR/SCO C++ 3.0.0 SCO C++ 3.1.0 SCO Accell VP/IX 1.2.0 grep "^#rel=" /etc/perms/vpix MS Word 3.0 ImageBuilder MasterPlan Statistician Eroff 3.0 MS C 3.0 MS Basic Interpreter 5.41 Appears on startup. MS Basic Compiler MS Pascal Compiler MS Fortran Compiler 3.0 LPI-Fortran 3.20.00 LPI-Basic LPI-Cobol LPI-Pascal LPI-PL/I LPI-RPG II LPI-Debug SCO PHIGS 1.0.0
UNIX (ODT) ONLY SCO Open Desktop
SCO Unix 3.2v4.2 uname -X | grep -y "rel" TCP/IP 1.2.1 LLI 3.4.0 DevSys 3.2.4.2 TCP/IP Dev Sys 1.2.1 Games 3.2.2 NFS Sys 1.1.1d NFS Dev Sys 1.1.1c Xsight 386 4.0.0 Xsight 386 Dev 4.0.0
Third Party
JTAPE for Xenix 386 2.55 grep "^#rel=" /etc/perms/jt JTAPE for Unix 3.2 2.6 grep "^#rel=" /etc/perms/jt (No JTAPE available for 286 or OSR5)."
ForOldHack (ForOldHack) 05:20, 6 December 2020
Capitalization
All the contemporary uSloth material pictured in various sources always spells it with caps - "XENIX". Which is a problem, because various practitioners using it back then spelled it 'Xenix', and that form is common/usual now. I'm not going to fix anything, but places that use "XENIX" are correct, so it's probably best not to 'fix' them. Jnc (talk) 14:42, 24 November 2022 (CET)
History Errors
I have found a lot of history, most of which the definitive sources are just plain wrong:
"V7 (7/79) also gave rise to several Unix ports: the 32-bit implementations as well as XENIX2, a Microsoft-Santa Cruz Operation collaboration, which was the first Unix implementation for the Intel 8086 chip (XENIX1 was based on V6). V7 also gave rise to Unix for the Z8000 and 68000 chips." -P Salus. pg 168. "A Quarter Century of UNIX."
https://wiki.tuhs.org/lib/exe/fetch.php?media=publications:qcu.pdf
Unix version 7, was the first 32bit implementation on a VAX, and Bill Joy added virtual memory over the Christmas break. It is unknown whether that HCR or Microsoft ever got a hold of the Tape-2 from Ken Thompson.
XENIX2? Xenix-11 was the HCR port that Microsoft paid for them to do, to get both UNIX running on their PDP-11, and to add as much pollute and dilute ( their first attempt ), of BSD, and not much more than that and a name change. The Santa Cruz connection came later, first as consultants, then a whipping boys for all the poor work by MS.
The first implementation on the Intel 8086 chip, ( not the 8088 ), was by Intel. Xenix-1(286)(1984) was after Xenix-11 (PDP-11), the 68000 ports were to RS TRS-80 Model 16, Sirtek M68000 card, The IBM 9000, and Sun-2s, ( Microsoft Internal use ), The Apple Lisa 2 and Fortune 32:16. ( the manuals were little more than V7 line printer pages, with little to reflect the actual underlying changes. ). The Z8000 port was so rare, that no archive exists, although there were announcements, there was no documented shipping/running/manual. ForOldHack (ForOldHack) 07:37, 20 April 2023 (CET)
The documented history of Xenix-11, Xenix-1, Xenix-3, and SCO System V, Xenix 386, 286 and 8086.
in Brief:
Platform Release PDP-11 Xenix-11. This is what the Living Computer Museum supposedly has a tape of, and that someone got from HCR a few days earlier. 286* Intel Xenix-1.0 This is what Microsoft shipped in Oct 1984, (c) 1984, only to have an IBM Deal announced two months later. M68000 Xenix-3 This was the most popular Xenix version with Radio Shacks TRS 80IIb. 286, 86 SCO System V 286, 386, Microchannel SCO System V.2
** This is the skeleton of the article re-write **
If this seems confusing? Hold on to your seats, it gets hugely confusing.
The list of Xenix ports:
Unix System 7 -> Microsoft paid HCR, Montreal, CA to port Unix System 7 to their PDP-11 machine. 1978~1981 Vaporware - used internally on PDP-11s for email, and to try and get the portable C compiler to output Intel Binaries.
It exists as a brochure, and maybe a mag tape at LCNM+L? but until its read, its unknown. I would bet its only the HCR port with the name change.
1981 Xenix-11 (for DEC PDP and VAX ) was announced, but since the VAX already had UNIX, no one was interested, except for one tiny vendor who, instead of getting Xenix-11 from Microsoft, got it from HCR.
1982-02-02 Intel i80286 Introduced. ( This CPU and architecture was the great hope for multi-user systems, but it turned out to be "brain-dead" -Bill G. )
Everything Happened at once, in 1984. Intel shipped ( Xenix for 330 [Intel i80286], Radio Shack shipped[M68000], IBM Announced: IBM Xenix 1.0 [ IBM AT ] ( even though the IBM S9000 had both SO:OS and Xenix-3, Based on System-III)
Next up was Unix System III, which was for Xenix-1, and Xenix-3, 3.2, 3.5 ( This was for the 68000 chips, and the Intel-SBC-286)
For the Fortune 31:16: "Fortune Operating System (FOR: PRO) is based on UNIX version 7, with additional utilities from the University of California at Berkeley 4.1 UNIX, and the Bell Laboratories UNIX System 3[ III ]. " http://bitsavers.org/pdf/fortuneSystems/service/1001240-05_Fortune_32-16_Field_Service_Manual_Apr1987.pdf
Which the description sounds exactly line Xenix-1 [ System
then Unix System V, which was the 286, and 8088 port for the IBM AT and the IBM PC, with SCO's name on it, which was the basis for IBM Xenix 1.0, [Unix System V + BSD Utilities ]
and then followed by Unix System V.2 Which was the basis for IBM Xenix 2.0, and SCO System V Xenix 3.2.3.
"Is Unix big-endian or little endian? In the SAS System, the following platforms are considered big endian: IBM mainframe, HP-UX, AIX, Solaris, and Macintosh. The following platforms are considered little endian: VAX/VMS, AXP/VMS, Digital UNIX, Intel ABI, OS/2, and Windows." However... Intel spilled the beans about Intel's compiler:
"Xenix 286 Installation and Configuration - Release notes: Nov-84 "The original C compiler supported by XENIX 86 and XENIX 286 was developed by Dennis Ritchie at Bell Laboratories. It was originally designed in 1973 around the PDP 11/44 architecture. In the late 1970's and early 1980's, the compiler was modified to support Intel's iAPX 8086 microprocessor. With the first release of this compiler, Microsoft Corporation chose to support the same 32-bit ordering supported under the Ritchie compiler. Meanwhile, with the design of the 8087 Fast Floating Point microprocessor, Intel also standardized a 32-bit ordering for the iAPX 8086 architecture. Intel, however, chose the same byte ordering that Digital Equipment Corporation selected for its VAX family of computers. Consequently, Microsoft 32-bit ordering is incompatible with the Intel 8087, 287, and 386 processors' 32-bit ordering."
"For the iAPX 8087 and 287 components to correctly interpret long values, the C compiler must perform a sequence of manipulations. For example, in order to provide support for the 8087 math component, the compiler generates instructions to swap the low word (bytes 0 and 1) with the high word (bytes 2 and 3). The 8087 then is able to operate on the representation it expects. Once the 8087 has completed an operation on a 32-bit value, the two words are swapped back. In 1983, Microsoft and Intel were involved in the design of two strategically important projects. Microsoft was developing a new state-of-the-art compiler construction tool and a new C compiler for XENIX 286. At the same time, Intel began a project to support the Universal Development Interface (UDI) and translators .., for XENIX 286. During the development period, the two companies discovered the incompatibility. After careful analysis, they decided that Microsoft would make the data representation of 32-bit values compatible with the Intel architecture."
Microsoft-C was little-endian and Intel was big-endian or really, The DEC VAX was Byte order 3412 ( i.e. Word 2, followed by word 1), and intel was 1234 ( word 1 followed by word 2) , but Microsoft's C compiler for Xenix was 3412, until at least June of 1986, when the 386 came out, which most unfortunately, hampers the performance of Xenix on the i80286 and the i8086, and the i8088. On the Motorola when upgraded to a 68020, there is a barrel shifter which can change the byte ordering in 1 cycle, so Motorola, never cared about the byte ordering. "The data section performs all data operations, such as immediate data value moves . It also contains the barrel shifter, which performs one-cycle shifts of any amount on data." ForOldHack (ForOldHack) 07:37, 22 April 2023 (CET)
- The barrel shifter is irrelevant, the issue is the order of short-words in a long-word; switching them around involves plain moves.
- In general, ordering of bytes within words is a function of the instruction set architecture; i.e. it is built into the hardware on machines that implement that ISA. Compilers generally have no choice but to use the byte ordering that is native to the ISA.
- The original C compiler for the 8086 was a bit of an exception to that; the 8086 ISA didn't support long-words at all - so in that case, the compiler writers did get to make a choice. Unfortunately, they made the wrong one - they went with the screwy PDP-11 one (which is half big-endian - for the short-words within long-words, and half little-endian - for the bytes within short-words.) Jnc (talk) 00:55, 23 October 2023 (CEST)
PDP-11 versions
The list entry "ran on a LSI-11/34" is confused; there is no such thing as an "LSI-11/34". This might refer to a PDP-11/34 (which IIRC was used at one point for XENIX work at uSloth) or a PDP-11/23, which is almost identical, programming-wise, to a PDP-11/34. (To the point that it was pretty trivial to move V6 UNIX from the PDP-11/40 on which it ran natively, which is also very similar to these two, to the 11-23: see Running UNIX V6 on an -11/23) Jnc (talk) 23:15, 18 July 2024 (CEST)