<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xenix &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/xenix/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Mon, 08 Jan 2024 13:46:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Fun with Windows ePDK NT 3.1 build 196 &#038; Some Xenix fun!</title>
		<link>https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/</link>
					<comments>https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 01 Jun 2023 10:24:11 +0000</pubDate>
				<category><![CDATA[cross compiler]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[Win32s]]></category>
		<category><![CDATA[Windows NT 3.1]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=12733</guid>

					<description><![CDATA[I&#8217;m not sure if I covered the Windows NT 3.1 build 196 before. First the most obvious is that as of this moment it&#8217;s the earliest version of Windows NT available. So let&#8217;s do some obligatory scratch of the surface. &#8230; <a href="https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I&#8217;m not sure if I covered the Windows <a rel="noreferrer noopener" href="https://archive.org/details/windows-nt-3.1-build-196" data-type="URL" data-id="https://archive.org/details/windows-nt-3.1-build-196" target="_blank">NT 3.1 build 196 before</a>. First the most obvious is that as of this moment it&#8217;s the earliest version of Windows NT available.</p>



<figure class="wp-block-image size-full"><a href="https://archive.org/details/windows-nt-3.1-build-196"><img fetchpriority="high" decoding="async" width="1000" height="1000" src="https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc.jpg" alt="" class="wp-image-12734" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc.jpg 1000w, https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc-300x300.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc-150x150.jpg 150w, https://virtuallyfun.com/wp-content/uploads/2023/06/WindowsNT196Disc-768x768.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></a></figure>



<p class="wp-block-paragraph">So let&#8217;s do some obligatory scratch of the surface. Like all the other 1991 pre-releases there really is just a text mode setup install script. Choosing the lesser amount of pain, I went with a MS-DOS hosted install.  However, using MS-DOS 6.22 resulted in a broken dual boot system.  But we live in the era of virtual machines, so it really doesn&#8217;t matter.  I&#8217;m using <a rel="noreferrer noopener" href="https://archive.org/details/qemu-14.0-rc2-i386" target="_blank">Qemu 0.14-rc2</a>, something that is &#8216;era correct&#8217; for when the first avalanche broke on early Windows NT pre-releases.  I&#8217;ve had issues with more modern versions of Qemu, and I felt that if we&#8217;re using vintage software may as well go in all the way.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner.png"><img decoding="async" width="722" height="457" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner.png" alt="" class="wp-image-12736" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner.png 722w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner-300x190.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-boot-banner-474x300.png 474w" sizes="(max-width: 722px) 100vw, 722px" /></a></figure>



<p class="wp-block-paragraph">The boot loader identifies itself as being 1990 vintage.  Pretty sure it doesn&#8217;t mean anything, but we haven&#8217;t been blessed with the &#8220;blue screen&#8221; of ARC yet.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen.png"><img decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen.png" alt="" class="wp-image-12738" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-login-screen-376x300.png 376w" sizes="(max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">The login screen and desktop have a very strong Windows 3.1 beta feel to them.  And that would land this where it was, Windows was such a big seller that Maritz had been trying to convince Gates &amp; Balmer to &#8216;switch to the Windows horse&#8217; in the spring/summer of 1990, culminating in Gate&#8217;s July decision to walk away from NT/OS2 and rebrand the new OS as Windows NT.  Oddly enough it was Balmer who was in favour of OS/2 &amp; IBM. (<em>Showstopper 89-90</em>)</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop.png"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop.png" alt="" class="wp-image-12739" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-desktop-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">At first glance the opening window isn&#8217;t all that interesting.  It&#8217;s just very. Windows.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi.png"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi.png" alt="" class="wp-image-12744" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-reversi-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">Rest assured <a rel="noreferrer noopener" href="https://youtu.be/DgJS2tQPGKQ?t=35" target="_blank">Reversi</a>, of course made the this Win32 cut.  And it&#8217;s full of weird easter eggs, oddly enough in the OS/2 surviving bits.</p>



<pre class="wp-block-code"><code>type OS2LDR.DOS
OS2LDR 01.00.01
by KeithMo 01/08/91</code></pre>



<p class="wp-block-paragraph">On the <a rel="noreferrer noopener" href="https://discord.gg/HMwevcN" target="_blank">Discord</a> there had been a big discussion about early NT executable formats, and the whole COFF vs ECOFF vs PE/PEI. I had tried to hunt down the specific version of GCC I used ages to to build a so called <a rel="noreferrer noopener" href="https://virtuallyfun.com/2016/12/09/gcc-windows-nt-dec-alpha/" target="_blank">Dec Alpha GCC cross compiler</a>, but the short version is that it didn&#8217;t work as we don&#8217;t have any assembler/linker for anything GNU targets.  There had been a <a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">cygwin port </a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">a</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">n</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">d</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank"> </a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">a</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">n</a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank"> </a><a rel="noreferrer noopener" href="https://archive.org/details/gcc-alpha-b19-src.tar" target="_blank">OpenNT on Alpha</a>, but all that is lost to the winds, minus what few scraps I had saved.  I did try building some cross tools to elf hoping to just objcopy out the data and get linkable objects, but that didn&#8217;t work either.</p>



<p class="wp-block-paragraph">So I though this was a perfect opportunity to take a look at this early pre-release version of NT, and although I do know that you have to convert your objects into something the &#8216;COFF&#8217; linker will accept:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196.png"><img loading="lazy" decoding="async" width="642" height="106" src="https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196.png" alt="" class="wp-image-12745" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196-300x50.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/building-the-simple-text-mode-app-on-196-500x83.png 500w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">And I never really paid that much attention to the object files.  I do know that you can link them with <a rel="noreferrer noopener" href="https://virtuallyfun.com/2021/05/11/continuing-with-ancient-microsoft-c-linkers/" target="_blank">Link386 for OS/2</a>, but the NT object files themselves report:</p>



<pre class="wp-block-code"><code>wsl file SIMPLE.OBJ
SIMPLE.OBJ: Intel 80386 COFF object file, not stripped, 4 sections, symbol offset=0x102, 20 symbols, created Thu Jun  1 14:13:50 2023, 1st section name ".text"</code></pre>



<p class="wp-block-paragraph">Well, now that is interesting.  And of course the COFF thing reminded me of Xenix!  And sure enough ages ago I had found the source to a modified version of <a rel="noreferrer noopener" href="https://github.com/neozeed/gas-1.38-xenix-" target="_blank">GNU GAS that outputs COFF</a>.  Once more again this is an indication that all 386 roads in Microsoft really did originate with Xenix.  It&#8217;s too bad there never was a Windows/386 on Xenix/386.  What an incredible OS that would have been!  There must be some incredible stories from the tool teams that worked on Microsoft C/386 along with other projects.  Oddly enough they never get anywhere near as much exposure as Office or OS.</p>



<p class="wp-block-paragraph">Now this is fun, but nothing takes in these ancient COFF objects, do they?  I tried to run LINK 1.0 from <a href="https://virtuallyfun.com/2011/04/04/win32s-version-tour/" target="_blank" rel="noreferrer noopener">Win32s SDK</a> and surprisingly it didn&#8217;t complain about the object, rather, it auto converted it in memory:</p>



<pre class="wp-block-code"><code>Microsoft (R) 32-Bit Executable Linker Version 1.00
Copyright (C) Microsoft Corp 1992-93. All rights reserved.

SIMPLE.OBJ : warning LNK4016: unresolved external symbol "__chkstk"
LINK : warning LNK4016: unresolved external symbol "_mainCRTStartup"
SIMPLE.OBJ : warning LNK4016: unresolved external symbol "_printf"
SIMPLE.exe : error LNK1120: 3 unresolved externals</code></pre>



<p class="wp-block-paragraph">Does this mean that if I give it some libraries it will actually link?</p>



<pre class="wp-block-code"><code>LINK.EXE SIMPLE.OBJ /SUBSYSTEM:CONSOLE /MACHINE:i386 -entry:mainCRTStartup -out:simple.exe libc.lib kernel32.lib
Microsoft (R) 32-Bit Executable Linker Version 1.00
Copyright (C) Microsoft Corp 1992-93. All rights reserved.


C:\temp\nt196\x\dec\x&gt;simple
Win32, it's happenin'!</code></pre>



<p class="wp-block-paragraph">This was. VERY unexpected.</p>



<p class="wp-block-paragraph">So I had this crazy idea, what if the Xenix assembler could in fact build objects that are also compaible in this manner?  I used the <a rel="noreferrer noopener" href="https://sourceforge.net/projects/linux011/" target="_blank">a.out GCC / Linux porting tools</a> I had built so I could compile Linux on Windows NT using the vintage tools as a starting point.  I guess I should also add that when people always say &#8216;use newer version of THING&#8217; this is how you miss out on old stuff like this.  If I had been obsessed with using modern tools and modern operating systems, I&#8217;d have missed out on this Xenix filled window.</p>



<p class="wp-block-paragraph">I took the gcc driver &amp; the cc1 compiler from 1.40 and the c pre-processor from 2.5.8 as it can understand C++ comments.  First I manually compiled the &#8216;simple&#8217; example to assembly:</p>



<pre class="wp-block-code"><code>gcc -v -nostdinc -I/xenixnt/h -S SIMPLE.c -O simple.S
gcc version 1.40
 cpp -nostdinc -v -I/xenixnt/h -undef -D__GNUC__ -Dunix -Di386 -D__unix__ -D__i386__ -D__OPTIMIZE__ SIMPLE.c C:/Users/jsteve/AppData/Local/Temp/cca2_048.cpp
GNU CPP version 2.5.8 (80386, BSD syntax)
#include "..." search starts here:
#include &lt;...&gt; search starts here:
 /xenixnt/h
End of search list.
 cc1 C:/Users/jsteve/AppData/Local/Temp/cca2_048.cpp -quiet -dumpbase SIMPLE.c -O -version -o SIMPLE.s
GNU C version 1.40 (80386, BSD syntax) compiled by GNU C version 5.1.0.
default target switches: -m80387
 cpp -nostdinc -v -I/xenixnt/h -undef -D__GNUC__ -$ -Dunix -Di386 -D__unix__ -D__i386__ -D__OPTIMIZE__ simple.S C:/Users/jsteve/AppData/Local/Temp/cca2_048.s
GNU CPP version 2.5.8 (80386, BSD syntax)
#include "..." search starts here:
#include &lt;...&gt; search starts here:
 /xenixnt/h
End of search list.</code></pre>



<p class="wp-block-paragraph">Which gave me the following assembly:</p>



<pre class="wp-block-code"><code>        .file   "SIMPLE.c"
gcc_compiled.:
.text
LC0:
        .ascii "Win32, it's happenin'!\0"
        .align 2
.globl _main
_main:
        pushl %ebp
        movl %esp,%ebp
        pushl $LC0
        call _printf
        leave
        ret
</code></pre>



<p class="wp-block-paragraph">Now to assemble with the GAS Xenix assembler</p>



<pre class="wp-block-code"><code>C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;ax386 SIMPLE.s -o SIMPLE.obj

C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;wsl file SIMPLE.obj
SIMPLE.obj: 8086 relocatable (Microsoft), "SIMPLE.c", 1st record data length 10, 2nd record type 0x88, 2nd record data length 11</code></pre>



<p class="wp-block-paragraph">Not quite the same.  But it does closer resemble the output from the OS/2 bound versions of the Pre-Rease compilers:</p>



<pre class="wp-block-code"><code>file EMPTY.OBJ
EMPTY.OBJ: 8086 relocatable (Microsoft), "empty.c", 1st record data length 9, 2nd record type 0x88, 2nd record data length 7</code></pre>



<p class="wp-block-paragraph">So will it link?!</p>



<pre class="wp-block-code"><code>C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;LINK.EXE SIMPLE.OBJ /SUBSYSTEM:CONSOLE /MACHINE:i386 -entry:mainCRTStartup -out:simple.exe libc.lib kernel32.lib
Microsoft (R) 32-Bit Incremental Linker Version 2.50
Copyright (C) Microsoft Corp 1992-94. All rights reserved.

SIMPLE.OBJ : warning LNK4033: converting object format from OMF to COFF

C:\temp\nt196\files\MSTOOLS\SAMPLES\SIMPLE&gt;simple
Win32, it's happenin'!</code></pre>



<p class="wp-block-paragraph">Well now this is interesting!  LONG before MinGW, or the <a rel="noreferrer noopener" href="https://virtuallyfun.com/2014/09/26/did-you-know-that-gcc-used-to-support-windows-nt/" target="_blank">GCC port to Windows NT</a>, it turns out that in fact GCC could target Windows NT the entire time!</p>



<p class="wp-block-paragraph">So the next thing to do is something not as trivial, like <a rel="noreferrer noopener" href="https://www.acme.com/software/phoon/" target="_blank">phoon</a>.</p>



<p class="wp-block-paragraph">I setup some quick script to pre-process, compile, assemble and then try to link, but as this one uses floating point, disaster struck:</p>



<pre class="wp-block-code"><code>phoon.obj : error LNK2001: unresolved external symbol "___fixdfsi"
astro.obj : error LNK2001: unresolved external symbol "___fixdfsi"
phoon.exe : error LNK1120: 1 unresolved externals</code></pre>



<p class="wp-block-paragraph">Now ages ago while messgin with old GCC &amp; DooM I also had weird math calls not working.  In the end I ended up extracting them from libgcc builds, so I thought I&#8217;d try the libgcc built during the GCC 2.6.3 on NT adventure.</p>



<pre class="wp-block-code"><code>link /NODEFAULTLIB:libc.lib /NODEFAULTLIB:OLDNAMES.LIB -out:phoon.exe astro.obj date_p.obj phoon.obj -entry:mainCRTStartup libgcc1.lib LIBC.LIB KERNEL32.LIB
Microsoft (R) 32-Bit Incremental Linker Version 2.50
Copyright (C) Microsoft Corp 1992-94. All rights reserved.</code></pre>



<p class="wp-block-paragraph">And of course:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="979" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt.png" alt="" class="wp-image-12748" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt.png 979w, https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt-768x402.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/phoon-gcc-on-nt-500x261.png 500w" sizes="auto, (max-width: 979px) 100vw, 979px" /></figure>
</div>


<p class="wp-block-paragraph">To try to make the steps make a little more sense, and to allow for some higher level of automation I made a Makefile:</p>



<pre class="wp-block-code"><code>CC=gcc
CC1=cc1
AS=ax386
CPP=cpp


CFLAGS= -O
CPPFLAGS= -lang-c-c++-comments -nostdinc -I/xenixnt/h

OBJ =   astro.obj \
date_p.obj \
phoon.obj

LIBS = libgcc1.lib LIBC.LIB KERNEL32.LIB

phoon.exe: $(OBJ)
        link -out:phoon.exe $(OBJ) -entry:mainCRTStartup $(LIBS)

%.obj: %.c
        $(CPP) $(CPPFLAGS) $&lt; $*.i
        $(CC1) $*.i -quiet $(CFLAGS) -version -o $*.S
        $(AS) $*.S -o $*.obj


clean:
        del $(OBJ) *.i *.S phoon.exe</code></pre>



<p class="wp-block-paragraph">I&#8217;m sure there is better ways to do this, but it breaks the compile up to it&#8217;s individual parts:</p>



<p class="wp-block-paragraph">Run the pre-processor to allow // in the comments, C++ hadn&#8217;t been the default thing back when GCC 1.40 was a thing.  Also path it to the headers, in this case I&#8217;m using the ones from NT 196.  Trying to link with the 196 libraries gave me this:</p>



<pre class="wp-block-code"><code>C:\xenixnt\demos\phoon&gt;link /NODEFAULTLIB:LIBC.LIB /NODEFAULTLIB:OLDNAMES.LIB -out:phoon.exe astro.obj date_p.obj phoon.obj -entry:mainCRTStartup base.lib wincrt.lib ntdll.lib \xenixnt\lib\libgcc1.lib
Microsoft (R) 32-Bit Incremental Linker Version 2.50
Copyright (C) Microsoft Corp 1992-94. All rights reserved.

wincrt.lib(maincrt0.obj) : warning LNK4078: multiple ".data" sections found with different attributes (40000040)
astro.obj : error LNK2001: unresolved external symbol "_asin"
astro.obj : error LNK2001: unresolved external symbol "_atan"
astro.obj : error LNK2001: unresolved external symbol "_atan2"
phoon.obj : error LNK2001: unresolved external symbol "_cos"
astro.obj : error LNK2001: unresolved external symbol "_cos"
astro.obj : error LNK2001: unresolved external symbol "_floor"
astro.obj : error LNK2001: unresolved external symbol "_sin"
phoon.obj : error LNK2001: unresolved external symbol "_sqrt"
astro.obj : error LNK2001: unresolved external symbol "_sqrt"
astro.obj : error LNK2001: unresolved external symbol "_tan"
phoon.exe : error LNK1120: 8 unresolved externals</code></pre>



<p class="wp-block-paragraph">Which is not surprising as there is no FPU/Floating point math support in 196. I tried the December 1991 Pre-Release, but it failed for other reasons:</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle.png"><img loading="lazy" decoding="async" width="968" height="364" src="https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle.png" alt="" class="wp-image-12750" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle.png 968w, https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle-300x113.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle-768x289.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/06/missing-CloseConsoleHandle-500x188.png 500w" sizes="auto, (max-width: 968px) 100vw, 968px" /></a></figure>



<p class="wp-block-paragraph">I did copy over BASE.DLL BASERTL.DLL CSR.DLL DBGDLL.DLL as it wanted, but despite the symbol being in the DLL it didn&#8217;t load.</p>



<p class="wp-block-paragraph">So that&#8217;s why I&#8217;m using the libraries from the <a href="https://virtuallyfun.com/2011/04/04/win32s-version-tour/" target="_blank" rel="noreferrer noopener">Win32s SDK</a>.</p>



<p class="wp-block-paragraph">Okay, so far now we have GCC 1.40 compiling to an old Xenix GAS assembler, and linking with Microsoft link from Visual C++ 1.0/2.0 era.  The next step is to see if we can just link the objects under 196, and get a running EXE!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib.png" alt="" class="wp-image-12742" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-running-GCC-compiled-fib-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">I have this tiny fibonacci example program, so with it compiled &amp; assembled by GCC &amp; GAS, I did the final link under 196, and YES it runs!</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom.png"><img loading="lazy" decoding="async" width="642" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom.png" alt="" class="wp-image-12751" srcset="https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom.png 642w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom-300x239.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/06/Windows-NT-196-linking-and-running-GCC-compiled-infocom-376x300.png 376w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">I then built the <a rel="noreferrer noopener" href="https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/" target="_blank">&#8217;87 InfoTaskForce</a>, <a rel="noreferrer noopener" href="https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/" target="_blank">Infocom interpreter</a>, and it was just a simple link, and it&#8217;s running!</p>



<p class="wp-block-paragraph">Possible things to do?  GCC should be able to build itself, so it should be possible to build GCC and link that on 196 or December 1991, and get a native version of GCC on NT.  The other possibility is to get newer versions of GCC (cc1 drop in replacements) to build for Xenix and / or OS/2.  Obviously this Xenix linker is the gateway to older 386 Microsoft based products!</p>



<p class="wp-block-paragraph">For those interested in such things, I&#8217;ve uploaded all of this to <a href="https://archive.org/details/windows-nt-196-linking-and-running-gcc" target="_blank" rel="noreferrer noopener">archive.org here: windows-nt-196-linking-and-running-gcc</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/06/01/fun-with-windows-epdk-nt-3-1-build-196-some-xenix-fun/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>zeeDooM Xenix!</title>
		<link>https://virtuallyfun.com/2021/10/26/zeedoom-xenix/</link>
					<comments>https://virtuallyfun.com/2021/10/26/zeedoom-xenix/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 26 Oct 2021 06:02:47 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[Xenix]]></category>
		<category><![CDATA[zeeDoom]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11519</guid>

					<description><![CDATA[So a few months ago, gattilorenz had told me he managed to work out how to do direct video under Xenix, and was able to get DooM running! He made the source available, and I meant to do something back &#8230; <a href="https://virtuallyfun.com/2021/10/26/zeedoom-xenix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">So a few months ago, <a href="https://github.com/gattilorenz">gattilorenz</a> had told me he managed to work out how to do direct video under Xenix, and was able to get DooM running!  He made <a href="https://github.com/gattilorenz/Xenix-doom" target="_blank" rel="noreferrer noopener">the source available</a>, and I meant to do something back then, but I must have gotten distracted.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="642" height="432" src="https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash.png" alt="" class="wp-image-11520" srcset="https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash.png 642w, https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash-300x202.png 300w, https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash-446x300.png 446w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure></div>



<p class="wp-block-paragraph">So I went ahead and added the <a rel="noreferrer noopener" href="/wordpress/2018/01/02/zeedoom-updated-to-use-latest-freedoom-assets/" target="_blank">zeeDooM thing</a> I had been working on a while ago which is a combination of the <a rel="noreferrer noopener" href="/wordpress/2018/01/01/putting-the-2015-romero-doom-level-release-to-use/" target="_blank">John Romero released maps</a>, and the <a rel="noreferrer noopener" href="/wordpress/2018/01/02/zeedoom-updated-to-use-latest-freedoom-assets/" target="_blank">FreeDoom assets</a>.  So it&#8217;s not 100% the released version, it just looks that way.</p>



<p class="wp-block-paragraph">I&#8217;ve gone ahead and created a qemu disk image (if you convert it, it does run on VMware, so probably far more 386 capable emulators than I can imagine), along with an old Qemu exe for some <a rel="noreferrer noopener" href="https://archive.org/details/zeeDooM" target="_blank">stand alone fun on archive.org</a>.</p>



<p class="wp-block-paragraph">There is no sound, nor music.  I should look closer one day, and see if I can drive some direct music to an Adlib since it&#8217;s just IO ports, and maybe grab all the direct sound code from <a rel="noreferrer noopener" href="https://github.com/viti95/FastDoom" target="_blank">viti95&#8217;s FastDoom</a>?</p>



<p class="wp-block-paragraph">Anyways, it&#8217;s zeeDooM!.. on Xenix!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2021/10/26/zeedoom-xenix/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Installing SCO Unix 4.2, part 3: LBA disks</title>
		<link>https://virtuallyfun.com/2021/07/15/installing-sco-unix-4-2-part-3-lba-disks/</link>
					<comments>https://virtuallyfun.com/2021/07/15/installing-sco-unix-4-2-part-3-lba-disks/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 15 Jul 2021 00:34:20 +0000</pubDate>
				<category><![CDATA[guest post]]></category>
		<category><![CDATA[openserver]]></category>
		<category><![CDATA[SCO Unix]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11198</guid>

					<description><![CDATA[This is a guest post by Friggigatto In the previous post we managed to install a Compaq-branded version of SCO Open Desktop. One of the recommendations was to use a small hard drive and avoid LBA, since SCO Unix does &#8230; <a href="https://virtuallyfun.com/2021/07/15/installing-sco-unix-4-2-part-3-lba-disks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This is a guest post by Friggigatto</em></p>



<p class="wp-block-paragraph"><a rel="noreferrer noopener" href="https://virtuallyfun.com/wordpress/2021/07/14/installing-sco-unix-4-2-part-2-the-devsys/" target="_blank">In the previous post</a> we managed to install a Compaq-branded version of SCO Open Desktop. One of the recommendations was to use a small hard drive and avoid LBA, since SCO Unix does not recognize it.</p>



<p class="wp-block-paragraph">It turns out, however, that SLS UOD429A, the bootdisk + patch that we used in the first post of this series to install ODT, also adds LBA support (as found out onÂ <a href="https://www.aplawrence.com/FAQ_scotec9eide_old.html" target="_blank" rel="noreferrer noopener">A.P. Lawrence&#8217;s excellent website</a>).</p>



<p class="wp-block-paragraph">Apart from enabling you to fully use larger disks (youÂ canÂ install on a disk larger than 2048 cylinders, as long as you set its size to 2048 cyls during installation; you are of course going to &#8220;waste&#8221; a lot of space), LBA is more convenient if you want to have a large root partition, since the root partition has to be entirely in the first 1024 cyls.</p>



<p class="wp-block-paragraph">So of course I tried repeating the installation of the Compaq version by booting off UOD429A, inserting the N2 from SCO ODT, and&#8230; I quickly found out that it would not recognize the CD as a valid installation media. Annoying.</p>



<p class="wp-block-paragraph">Eventually I found out that the N1 disk from Compaq has a ramdrive compressed in the kernel, from where the initial installation script is run, while the rest of the files (mostly installscript) are on the CD itself.</p>



<p class="wp-block-paragraph">The fix was, in the end, relatively simple. All I needed to do was mounting the N2 floppy in the VM I had created before, copying &#8220;N2.Z&#8221; on my harddrive. I then uncompress-ed it, extracted it (it&#8217;s a regular tar file), and replaced the installation script with the one provided on Compaq&#8217;s CD. Then, the reverse process can be done: recreate the &#8220;N2&#8221; tar file, compress it, and copy it in the mounted N2 disk. If you don&#8217;t want to go through the same process again,Â <a href="https://virtuallyfun.com/Friggigatto/n2+compaq_script.7z" target="_blank" rel="noreferrer noopener">you can download the </a><a href="https://virtuallyfun.com/Friggigatto/n2+compaq_script.7z" target="_blank" rel="noreferrer noopener">patched </a><a href="https://virtuallyfun.com/Friggigatto/n2+compaq_script.7z" target="_blank" rel="noreferrer noopener">disk</a>.</p>



<p class="wp-block-paragraph">The installation process is then simple: boot off UOD429A, insert the updated N2 disk when requested, and proceed with the rest of the installation as usual.</p>



<p class="wp-block-paragraph">This way I managed to install SCO Unix on a TI TravelMate 6050, alongside DOS and Windows 95. It took a bit of trial and error (readingÂ <a rel="noreferrer noopener" href="https://www.scosales.com/ta/kb/104527.html" target="_blank">SCO technical support documents</a>Â was, again, very helpful), but in the end this is more or less what I did:</p>



<ol class="wp-block-list"><li>install Unix as LBA with a ~20mb DOS partition</li><li>hide DOS partition &amp; create a new one as primary active partition</li><li>install Win95 on that</li><li>install boot manager (I used Paragon&#8217;s Boot Magic) on first DOS partition (the hidden one)</li></ol>



<p class="wp-block-paragraph">Steps 1 and 2 were done in 86box, after creating a disk with the same cylinders, heads and sectors found in the BIOS of my TravelMate (using the LBA setting in the BIOS of both laptop and emulated machine, of course). After installing DOS and SCO Unix (I&#8217;m not sure anymore in which order), I copied the Win95 installation files on the new partition and finished the installation process on the laptop, after dd-ing the image to the CF card I&#8217;m using as hard drive.</p>



<p class="wp-block-paragraph">After configuring Boot Magic (and creating a custom background and icon), now I&#8217;m greeted with this every time I boot up the laptop:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="763" src="https://virtuallyfun.com/wp-content/uploads/2021/07/bootmagic-1024x763.jpg" alt="" class="wp-image-11199" srcset="https://virtuallyfun.com/wp-content/uploads/2021/07/bootmagic-1024x763.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2021/07/bootmagic-300x224.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2021/07/bootmagic-768x572.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2021/07/bootmagic-403x300.jpg 403w, https://virtuallyfun.com/wp-content/uploads/2021/07/bootmagic.jpg 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p class="wp-block-paragraph">Since Windows 95 is installed in a FAT16 partition, I can mount it or access it via dosls/doscp inside SCO Unix too, which is convenient for sharing files (I tried installing a 3Com 3C589 PCMCIA card directly in Unix, sinceÂ <a href="ftp://ftp.sco.com/pub/AHS/3.0/sco/3.4/135/llidoc.Z" target="_blank" rel="noreferrer noopener">according to the docs</a>Â it&#8217;s supported; unfortunately, theÂ <a href="ftp://ftp.sco.com/pub/AHS/3.0/sco/3.4/135/lli.Z" target="_blank" rel="noreferrer noopener">provided drivers</a>Â only work with IBM PCMCIA controllers).</p>



<h1 class="wp-block-heading">SCO Unix software</h1>



<p class="wp-block-paragraph">A large collection of ports for SCO Unix can be found atÂ <a href="ftp://ftp://ftp.celestial.com/pub/sco-ports/unix/" target="_blank" rel="noreferrer noopener">ftp.celestial.com</a>, but it&#8217;s faster to use the ISO with all the ports I uploaded onÂ <a href="https://archive.org/details/celestial-ftp-ports-for-unix" target="_blank" rel="noreferrer noopener">archive.org</a>.<br>To mount the CD with lowercase filenames, run #mount -rf HS /dev/cd0 /mnt</p>



<p class="wp-block-paragraph">It&#8217;s worth noting that, before using the CD, we need to install it with mkdev cdrom (yes, even if we did install the whole system from a CD). In the process we will be asked whether we want a CD-ROM/TAPE device, which can be used to install more components for the system (CD-ROM/TAPE is the format used by the setup CD), and if we want to add to the kernel ISO9660 support, which of course we need. As usual,Â <a href="https://www.scosales.com/ta/kb/103844.html" target="_blank" rel="noreferrer noopener">SCO documentation</a>Â has a lot of information about this.</p>



<p class="wp-block-paragraph">Gzip is included in the Celestial ports, but I also managed to compileÂ <a href="https://virtuallyfun.com/Friggigatto/bzip2-0.1pl2.tar.gz" target="_blank" rel="noreferrer noopener">an early version of bzip2</a>Â (<a href="https://virtuallyfun.com/Friggigatto/bzip2-sco4.2-bin.gz" target="_blank" rel="noreferrer noopener">here is the binary</a>). If you compile it yourself use gcc, the code will be faster. The provided Makefile undefines __STDC__; gcc sets the flag and this creates problems at linking time, resulting in a call to a missing &#8220;__unlink&#8221; function.</p>



<h1 class="wp-block-heading">Bonus content: recovery disks</h1>



<p class="wp-block-paragraph">In the process of getting more familiar with the installation process of SCO Unix, I realized I could benefit from having a set of spare bootdisks that would allow me to mount the hard drive and modify files at will (including after the first part of the installation process). So,Â <a href="https://virtuallyfun.com/Friggigatto/SCO%20Unix%20recovery%20disks.7z" target="_blank" rel="noreferrer noopener">I created them</a>, using a ramdrive + compressed disk (similar to what SCO&#8217;s install process does, but also the boot floppy of Windows 98) to pack as many utilities as possible on a single disk.While I was at it,Â <a href="https://virtuallyfun.com/Friggigatto/Xenix%20recovery%20disk.7z" target="_blank" rel="noreferrer noopener">I did the same for Xenix 386</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2021/07/15/installing-sco-unix-4-2-part-3-lba-disks/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Bill Gates on the future of Xenix</title>
		<link>https://virtuallyfun.com/2020/01/08/bill-gates-on-the-future-of-xenix/</link>
					<comments>https://virtuallyfun.com/2020/01/08/bill-gates-on-the-future-of-xenix/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 10:26:32 +0000</pubDate>
				<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=10014</guid>

					<description><![CDATA[I bet most would never imagine an article like this. And yes, it&#8217;s really Bill Gates on the cover. And yes the lead story is about Xenix. Really. And can you imagine what magazine would have such a glowing photo &#8230; <a href="https://virtuallyfun.com/2020/01/08/bill-gates-on-the-future-of-xenix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="706" height="799" src="https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix.jpg" alt="" class="wp-image-10015" srcset="https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix.jpg 706w, https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix-265x300.jpg 265w" sizes="auto, (max-width: 706px) 100vw, 706px" /></figure></div>



<p class="wp-block-paragraph">I bet most would never imagine an article like this.  And yes, it&#8217;s really Bill Gates on the cover.  And yes the lead story is about Xenix.  Really.</p>



<p class="wp-block-paragraph">And can you imagine what magazine would have such a glowing photo shoot of Gates?  I almost wonder if anyone can imagine which one it would be?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="599" src="https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix-interior-1024x599.jpg" alt="" class="wp-image-10016" srcset="https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix-interior-1024x599.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix-interior-300x176.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix-interior-768x449.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix-interior-500x293.jpg 500w, https://virtuallyfun.com/wp-content/uploads/2020/01/Bill-Gates-on-the-future-of-Xenix-interior.jpg 1470w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The main point of course is binary compatibility between x86 distros, and killer apps.  Of course not quite in that terminology but it&#8217;s there.  Even in 1985 the hints of the far superior 80386 was being actively talked up, and the promise of a Xenix for the 386 as well.</p>



<p class="wp-block-paragraph">And the magazine?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="261" src="https://virtuallyfun.com/wp-content/uploads/2020/01/UnixWorld-banner-1024x261.jpg" alt="" class="wp-image-10017" srcset="https://virtuallyfun.com/wp-content/uploads/2020/01/UnixWorld-banner-1024x261.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2020/01/UnixWorld-banner-300x76.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2020/01/UnixWorld-banner-768x196.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2020/01/UnixWorld-banner-500x127.jpg 500w, https://virtuallyfun.com/wp-content/uploads/2020/01/UnixWorld-banner.jpg 1314w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Yeah it&#8217;s Unix World.  <a href="https://archive.org/details/Unix_World_Vol02_10.pdf/page/n21">Volume 1, issue 5</a>.</p>



<p class="wp-block-paragraph">A bunch of early issues found their way onto <a href="https://archive.org/search.php?query=Unix%20World">archive.org</a>, and it&#8217;s great stuff going over the old ads for SUN, HP, and all the old vendors, the articles wondering what will the future of BSD be, and Bill Gates on Xenix.</p>



<p class="wp-block-paragraph">I know this will be a great score for all my Xenix fans!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2020/01/08/bill-gates-on-the-future-of-xenix/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Virtual Xenix &#038; the internet pt 2</title>
		<link>https://virtuallyfun.com/2019/01/15/virtual-xenix-the-internet-pt-2/</link>
					<comments>https://virtuallyfun.com/2019/01/15/virtual-xenix-the-internet-pt-2/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 15 Jan 2019 12:34:41 +0000</pubDate>
				<category><![CDATA[80386]]></category>
		<category><![CDATA[i386]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9178</guid>

					<description><![CDATA[So retrohun is doing their blog thing on github of all things, and the latest entry, is of course Xenix tales. As mentioned in comments on this blog &#38; other places they found another driver for Xenix TCP/IP! Going back &#8230; <a href="https://virtuallyfun.com/2019/01/15/virtual-xenix-the-internet-pt-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">So <a href="https://github.com/retrohun">retrohun</a> is doing their blog thing on github of all things, and the latest entry, is of course <a href="https://github.com/retrohun/blog/tree/master/dt/xenixtales">Xenix tales</a>.  As mentioned in comments on this blog &amp; other places they found another driver for Xenix TCP/IP!</p>



<p class="wp-block-paragraph">Going back years ago, the tiny NIC driver support for the elderly Microsoft/SCO Xenix 386 v2 included 3COMA/B/C and SLIP.  However it&#8217;s been recently unearthed that D-Link had drivers for their DE-100 &amp; DE-200 models, and as it happens the DE-200 is a NE-2000 compatible card!</p>



<p class="wp-block-paragraph">That means that Qemu can install/run Xenix, and it can get onto the internet* (there is a catch, there is always a catch).</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="722" height="427" src="https://virtuallyfun.com/wp-content/uploads/2019/01/Install-Xenix-DLINK-NE2000.png" alt="" class="wp-image-9179" srcset="https://virtuallyfun.com/wp-content/uploads/2019/01/Install-Xenix-DLINK-NE2000.png 722w, https://virtuallyfun.com/wp-content/uploads/2019/01/Install-Xenix-DLINK-NE2000-300x177.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure></div>



<p class="wp-block-paragraph">You can download the driver either from <a href="https://github.com/retrohun/blog/blob/master/dt/xenixtales/de200.img.gz">github</a> or <a href="https://vpsland.superglobalmegacorp.com/install/xenix/de200.img.gz">my password protected mirror</a>.  Simply untar the floppy under Xenix (tar -xvf /dev/fd0) and do the install via &#8216;mkdev dlnk&#8217;</p>



<p class="wp-block-paragraph">Setting up the driver is&#8230; tedious.  Much like the system itself.  <del>I found Qemu 0.90 works great, and is crazy fast (in part to GCC 3) even though Qemu 0.9&#8217;s floppy emulation isn&#8217;t good enough to install or read disks</del>. With all the updates to Qemu 3.1 use that, it&#8217;ll read the disks, and allow for networking.</p>



<p class="wp-block-paragraph">To give some idea of speed I ran the age old <a href="https://vpsland.superglobalmegacorp.com/install/dhrystone.c">Dhrystone</a> test, compiled by GCC 1.37.1 and scored the following:</p>



<p class="wp-block-paragraph"><em>Dhrystone(1.1) time for 5000000 passes = 8<br> This machine benchmarks at 625000 dhrystones/second</em></p>



<p class="wp-block-paragraph">When compared to the SGI Indy&#8217;s 133Mhz R4600SC score of 194,000 @ 50000 loops that makes my Xeon W3565 322 times faster, under Qemu 0.90!  And that&#8217;s under Windows!</p>



<p class="wp-block-paragraph">Setting up the commandline/launching is pretty much this:</p>



<p class="wp-block-paragraph"><em>qemu.exe -L pc-bios  -m 16 -net nic,model=ne2k_isa -net user -redir tcp:42323::23 -hda ..\xenix.vmdk<br> added SLIRP<br> adding a [GenuineIntelC] family 5 model 4 stepping 3 CPU<br> added 16 megabytes of RAM<br> trying to load video rom pc-bios/vgabios-cirrus.bin<br> added parallel port 0x378 7<br> added NE2000(isa) 0x320 10<br> pci_piix3_ide_init PIIX3 IDE<br> ide_init2 [0] s-&gt;cylinders 203 s-&gt;heads 16 s-&gt;sectors 63<br> ide_init2 [1] s-&gt;cylinders 0 s-&gt;heads 0 s-&gt;sectors 0<br> ide_init2 [0] s-&gt;cylinders 2 s-&gt;heads 16 s-&gt;sectors 63<br> ide_init2 [1] s-&gt;cylinders 0 s-&gt;heads 0 s-&gt;sectors 0<br> added PS/2 keyboard<br> added PS/2 mouse<br> added Floppy Controller 0x3f0 irq 6 dma 2<br>   Bus  0, device   0, function 0:<br>     Host bridge: PCI device 8086:1237<br>   Bus  0, device   1, function 0:<br>     ISA bridge: PCI device 8086:7000<br>   Bus  0, device   1, function 1:<br>     IDE controller: PCI device 8086:7010<br>       BAR4: I/O at 0xffffffff [0x000e].<br>   Bus  0, device   1, function 3:<br>     Class 0680: PCI device 8086:7113<br>       IRQ 0.<br>   Bus  0, device   2, function 0:<br>     VGA controller: PCI device 1013:00b8<br>       BAR0: 32 bit memory at 0xffffffff [0x01fffffe].<br>       BAR1: 32 bit memory at 0xffffffff [0x00000ffe].</em></p>



<p class="wp-block-paragraph">In the file /etc/tcp the default installation does a terrible job of setting up the NIC.  I changed the ifconfig line to this:</p>



<p class="wp-block-paragraph"><em>ifconfig dlink0 10.0.2.15 -trailers broadcast 10.0.2.255 netmask 255.255.255.0</em></p>



<p class="wp-block-paragraph">Which at least brings it up a bit better.  I added in a gratuitous ping also in the startup script to build the arp for the gateway.</p>



<p class="wp-block-paragraph"><em>ping 10.0.2.2 32 1</em></p>



<p class="wp-block-paragraph">Which brings us to the next point, the routing command is broken after loading the D-Link driver.  I tried all the available TCP/IP drivers for Xenix (1.1.3.f 1.2.0e).</p>



<p class="wp-block-paragraph"><em># route add default 10.0.2.2 1<br> add net default: gateway 10.0.2.2 flags 0x3: No such device or address</em></p>



<p class="wp-block-paragraph">So no dice there.  And yes, for SLIP/no interfaces the route command works as expected, just not with the DLINK driver.</p>



<p class="wp-block-paragraph">However local connections from the host machine do work, so yes, you can telnet into the VM!</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="979" height="512" src="https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-telnet-login.png" alt="" class="wp-image-9181" srcset="https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-telnet-login.png 979w, https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-telnet-login-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-telnet-login-768x402.png 768w" sizes="auto, (max-width: 979px) 100vw, 979px" /><figcaption>Welcome to 1990!<br></figcaption></figure>



<p class="wp-block-paragraph">This makes using Xenix far more usable say for managing files, control/compiling etc.</p>



<p class="wp-block-paragraph">For you die hard IRC fans, all is not lost, you can simply run a local proxy (See: <a href="https://virtuallyfun.com/wordpress/2018/01/18/teaching-an-old-irc-dog-some-new-tricks/">Teaching an old IRC dog some new tricks</a>) on your host machine, and point the irc client to 10.0.2.2</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="105" src="https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-IRC-1024x105.png" alt="" class="wp-image-9180" srcset="https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-IRC.png 1024w, https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-IRC-300x31.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/01/Xenix-IRC-768x79.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>IRCII on Xenix/Qemu</figcaption></figure>



<p class="wp-block-paragraph">So there you go, all 20 Xenix fans out there!  Not only a way to get back online, but to do it in SPEED!</p>



<p class="wp-block-paragraph">Thanks to Mark for pointing out that there has been tremendous progress with version 3.1 of Qemu, and it&#8217;s TCG user speed is up to the 0.90 levels of speed (at least with dhrystone/Xenix), and it just takes a little (lot) of massaging to get up and running with Xenix with the right flags:</p>



<p class="wp-block-paragraph"><em>qemu-system-i386.exe -net none -L . -m 16 -hda xenix.vmdk -device ne2k_isa,mac=00:2e:3c:92:11:01,netdev=lan,irq=10,iobase=0x320 -netdev user,id=lan,hostfwd=tcp::42323-:23</em></p>



<p class="wp-block-paragraph">This is based off my old post, <a href="https://virtuallyfun.com/wordpress/2017/04/14/running-netware-3-12-qemu-kvm-2-8-0/">Running Netware 3.12 on Qemu / KVM 2.8.0</a> although with a few more flags to assert the user mode tcp redirect.</p>



<p class="wp-block-paragraph">I&#8217;m using  <a href="https://qemu.weilnetz.de/w64/">Stefan Weil&#8217;s build of the x64 native i386 Qemu</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/01/15/virtual-xenix-the-internet-pt-2/feed/</wfw:commentRss>
			<slash:comments>24</slash:comments>
		
		
			</item>
		<item>
		<title>Microsoft XENIX 286 BASIC Compiler</title>
		<link>https://virtuallyfun.com/2018/10/30/microsoft-xenix-286-basic-compiler/</link>
					<comments>https://virtuallyfun.com/2018/10/30/microsoft-xenix-286-basic-compiler/#comments</comments>
		
		<dc:creator><![CDATA[tenox]]></dc:creator>
		<pubDate>Tue, 30 Oct 2018 06:21:49 +0000</pubDate>
				<category><![CDATA[80286]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9033</guid>

					<description><![CDATA[(This is a guest post by Antoni Sawicki aka Tenox) I have recently acquired this artifact: It&#8217;s the Microsoft BASIC compiler for XENIX 286 Operating System. Compiler as opposed to just BASIC interpreter, it can produce executable a.out files, similar &#8230; <a href="https://virtuallyfun.com/2018/10/30/microsoft-xenix-286-basic-compiler/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>(This is a guest post by Antoni Sawicki aka Tenox)</em></p>



<p class="wp-block-paragraph">I have recently acquired this artifact:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="435" height="456" src="https://virtuallyfun.com/wp-content/uploads/2018/10/msxenixbasic-box.jpg" alt="" class="wp-image-9034" srcset="https://virtuallyfun.com/wp-content/uploads/2018/10/msxenixbasic-box.jpg 435w, https://virtuallyfun.com/wp-content/uploads/2018/10/msxenixbasic-box-286x300.jpg 286w" sizes="auto, (max-width: 435px) 100vw, 435px" /></figure>



<p class="wp-block-paragraph">It&#8217;s the Microsoft BASIC compiler for XENIX 286 Operating System. Compiler as opposed to just BASIC interpreter, it can produce executable <em>a.out</em> files, similar to C compiler for example.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">Carefully removed the shrink wrap. Inside were couple of 5.25&#8243; floppies, registration card and a manual:</p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="768" src="https://virtuallyfun.com/wp-content/uploads/2018/10/disks.jpg" alt="" class="wp-image-9035" srcset="https://virtuallyfun.com/wp-content/uploads/2018/10/disks.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2018/10/disks-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2018/10/disks-768x576.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Interestingly the 32 year old disks read just fine on a first attempt. I need to start backing up important files to 5.25&#8243; floppy disks as they seem to outlast everything else.</p>



<p class="wp-block-paragraph">Thanks to efforts of Michal Necasek from OS/2 Museum now you can run Microsoft XENIX 286 in <a href="http://www.os2museum.com/wp/ibm-xenix-two-steps-forward/">Virtual Box</a>.&nbsp;</p>



<p class="wp-block-paragraph">The disks can be installed in to XENIX running on Vbox following a few simple steps:</p>



<p class="wp-block-paragraph"><em>tar xvf /dev/fd0</em><br><em>./msinstall /dev/fd0</em></p>



<p class="wp-block-paragraph">Upon installation you invoke the compiler like this:</p>



<p class="wp-block-paragraph"><em>bascom demo.bas</em><br><em>./a.out</em></p>



<p class="wp-block-paragraph">And it produced an a.out executable which worked perfectly fine.</p>



<p class="wp-block-paragraph">It&#8217;s fun to write BASIC code in <em>vi</em> editor, which I just realized I never done before.</p>



<p class="wp-block-paragraph">Curiously the compiler also worked on the brand spanking new Xenix 2018, or rather I should call itÂ <em>Open Server 6</em>, which you can download <a href="http://tenox.pdp-11.ru/os/sco/" data-type="URL" data-id="http://tenox.pdp-11.ru/os/sco/">here</a>.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="824" height="579" src="https://virtuallyfun.com/wp-content/uploads/2018/10/msxenixbasic-odt.png" alt="" class="wp-image-9037" srcset="https://virtuallyfun.com/wp-content/uploads/2018/10/msxenixbasic-odt.png 824w, https://virtuallyfun.com/wp-content/uploads/2018/10/msxenixbasic-odt-300x211.png 300w, https://virtuallyfun.com/wp-content/uploads/2018/10/msxenixbasic-odt-768x540.png 768w" sizes="auto, (max-width: 824px) 100vw, 824px" /></figure>



<p class="wp-block-paragraph">The BASIC compiler is available for download from <a href="http://tenox.pdp-11.ru/os/xenix/apps/MS-Basic-for-Xenix.tar.gz" data-type="URL" data-id="http://tenox.pdp-11.ru/os/xenix/apps/MS-Basic-for-Xenix.tar.gz">my archive</a>Â along with the <a href="http://tenox.pdp-11.ru/os/xenix/microsoft/Documentation/Microsoft_XENIX_286_BASIC_Compiler.pdf" data-type="URL" data-id="http://tenox.pdp-11.ru/os/xenix/microsoft/Documentation/Microsoft_XENIX_286_BASIC_Compiler.pdf">manual in pdf</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2018/10/30/microsoft-xenix-286-basic-compiler/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Not that I hang out on IRC anymore</title>
		<link>https://virtuallyfun.com/2014/05/30/not-that-i-hang-out-on-irc-anymore/</link>
					<comments>https://virtuallyfun.com/2014/05/30/not-that-i-hang-out-on-irc-anymore/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 30 May 2014 09:36:46 +0000</pubDate>
				<category><![CDATA[irc]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=4211</guid>

					<description><![CDATA[But a &#8216;fixed&#8217; version for Xenix was requested. Apparently lots of IRC servers have slightly changed their syntax, which prevents ircII-4.4 from working. It&#8217;s a simple fix. In server.c, the the last line of the procedure login_to_serverÂ should be: send_to_server(&#8220;USER %s &#8230; <a href="https://virtuallyfun.com/2014/05/30/not-that-i-hang-out-on-irc-anymore/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>But a &#8216;fixed&#8217; version for Xenix was requested.</p>
<p>Apparently lots of IRC servers have slightly changed their syntax, which prevents ircII-4.4 from working.</p>
<p>It&#8217;s a simple fix.</p>
<p>In server.c, the the last line of the procedure <span style="color: #222222;">login_to_server</span>Â should be:</p>
<p style="padding-left: 30px;"><span style="color: #222222;">send_to_server(&#8220;USER %s 8 * : %s&#8221;, username,realname);</span></p>
<p>That&#8217;s it!</p>
<p><div id="attachment_4212" style="width: 966px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2014/05/ircii-on-xenix.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4212" class="size-full wp-image-4212" src="https://virtuallyfun.com/wp-content/uploads/2014/05/ircii-on-xenix.png" alt="ircII-4.4 on Xenix 2.3.4" width="956" height="743" /></a><p id="caption-attachment-4212" class="wp-caption-text">ircII-4.4 on Xenix 2.3.4</p></div></p>
<p>For Xenix users, you can download the <a href="http://vpsland.superglobalmegacorp.com/install/xenix/ircII-4.4-fixed-xenix-binary.tar.Z">binary tar here</a>.</p>
<p>As for how you&#8217;ll get it working, well&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2014/05/30/not-that-i-hang-out-on-irc-anymore/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Virtual Xenix &#038; the internet</title>
		<link>https://virtuallyfun.com/2013/12/09/virtual-xenix-the-internet/</link>
					<comments>https://virtuallyfun.com/2013/12/09/virtual-xenix-the-internet/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 09 Dec 2013 08:06:43 +0000</pubDate>
				<category><![CDATA[i386]]></category>
		<category><![CDATA[MESS]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=3656</guid>

					<description><![CDATA[This is probably the most significant Xenix post I&#8217;ve made since the old days when I managed to get Xenix running in Qemu all those years ago. What has long been a frustration with the beleaguered Xenix community is that &#8230; <a href="https://virtuallyfun.com/2013/12/09/virtual-xenix-the-internet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>This is probably the most significant Xenix post I&#8217;ve made since the old days when I managed to get Xenix running in Qemu all those years ago.</p>
<p><div id="attachment_3657" style="width: 655px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2013/12/Screen-Shot-2013-12-09-at-3.48.10-PM.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3657" class="size-full wp-image-3657" alt="3com network card" src="https://virtuallyfun.com/wp-content/uploads/2013/12/Screen-Shot-2013-12-09-at-3.48.10-PM.png" width="645" height="503" /></a><p id="caption-attachment-3657" class="wp-caption-text">3comB network card</p></div></p>
<p>What has long been a frustration with the beleaguered Xenix community is that although there was a TCP/IP package for Xenix (and a much required streams package&#8230;) it only worked with a handful of ethernet cards. Â And all of them were early 3com&#8217;s. Â While the world was using NE2000&#8217;s on just about everything, the most common ethernet board Xenix would talk to was the 3c503, which is getting harder and harder to find as the years go on by.</p>
<p>But right now none of this matters.</p>
<p>I was looking at this <a href="http://www.mess.org/howto/apollo">article on setting up Apollo Domain UNIX</a>, on MESS. Â And apparently it will do networking! Â Which is cool, so I poke around MESS, and what do I see? <a href="http://mamedev.org/source/src/mess/machine/3c503.c.html">3c503.c</a>. Could it be true?</p>
<p>Now I ended up having to download the source to mame 0.151<a href="http://emumovies.com/aarongiles/releases/mame0151s.zip">Â (mame0151s.zip</a>) and building it on OS X. Â Of course remembering to alter the makefile to include the &#8216;USE_NETWORK=1&#8217; statement, and build for Mess. Â And just as it looks like something out of SIMH, Mess makes use of libpcap which means that you are *unable* to send/receive on the host computer. (<a href="http://vpsland.superglobalmegacorp.com/install/xenix/mess-OSX-for-Xenix.7z">OS X</a> &amp; <a href="http://vpsland.superglobalmegacorp.com/install/xenix/mess-win32-pcap.7z">Win32</a> binaries). Â And of course you&#8217;ll need a <a href="http://www.emunews.eu/mess-bioses/">ROM</a>Â &amp; <a href="http://vetusware.com/download/Xenix%202.3.4/?id=4317">Xenix</a> diskettes.</p>
<p>Installing Xenix is pretty straightforward as long as you know your system key, and how to navigate the mess UI without rebooting mess or exiting by mistake (scrolllock on the PC, function/Delete on OS X).</p>
<p>First create a hard disk, and as always it should be ~500MB max.</p>
<p>chdman.exe createhd -o xenix.chd -chs 1015,16,63<br />
chdman &#8211; MAME Compressed Hunks of Data (CHD) manager 0.149u1 (Aug 10 2013)<br />
Output CHD: xenix.chd<br />
Compression: none<br />
Cylinders: 1015<br />
Heads: 16<br />
Sectors: 63<br />
Bytes/sector: 512<br />
Sectors/hunk: 8<br />
Logical size: 523,837,440</p>
<p>then with the disk in hand, I just setup a 486 like this:</p>
<p>./mess64 <a href="http://www.emunews.eu/files/mess0.144/at486.zip">at486</a> -harddisk1 xenix.chd -isa2 3c503 -ramsize 8388608Â -floppydisk1 xenix/n1.vfd</p>
<p>Naturally you&#8217;ll need to setup the CMOS, for your memory size, and the hard disk. Â The BIOS I&#8217;m using didn&#8217;t autodetect the IDE drive, but it doesn&#8217;t matter as I know it&#8217;s characteristics as I created it.</p>
<p>From there Xenix was a pretty straight forward deal. Â Mess has good floppy drive emulation so it just worked. Â Adding TCP-IP was just as involved, and all went well. Â When it came time to install TCP &amp; the network driver, remember to use thinnet, as the thicknet transceiver isn&#8217;t connected (as it would seem). Â The 3c503 is softset, so I went with IRQ 5, port 0x300, and thinnet, and it works fine for me!</p>
<p><div id="attachment_3658" style="width: 650px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2013/12/mess-xenix-networking.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3658" class="size-large wp-image-3658" alt="mess xenix networking" src="https://virtuallyfun.com/wp-content/uploads/2013/12/mess-xenix-networking-1024x518.png" width="640" height="323" /></a><p id="caption-attachment-3658" class="wp-caption-text">Xenix TCP/IP in action, inside of MESS!</p></div></p>
<p>Remember you will not be able to attach to it from your computer. Â Instead you must attach from another computer.</p>
<p>Also MESS tries to emulate true to hardware so it&#8217;ll be just as slow on MESS as it was on the real hardware. Â I suppose you could go with the <a href="http://www.emunews.eu/files/mess0.144/at386.zip">at386</a> driver, but yeah it&#8217;ll be slow. Â The current at586 driver has issues booting from the hard disk, and I didn&#8217;t mess with it too much as Xenix is known to have issues with some Pentium systems.</p>
<p>Although I think the next place for adventure is the emulated <a href="http://mamedev.org/source/src/mess/machine/isa_aha1542.c.html">Adaptec 1542C</a><a href="http://forums.bannister.org/ubbthreads.php?ubb=showflat&amp;Number=76488&amp;PHPSESSID=81749cf0e9ca18434fb067b820a3a659">F</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2013/12/09/virtual-xenix-the-internet/feed/</wfw:commentRss>
			<slash:comments>41</slash:comments>
		
		
			</item>
		<item>
		<title>Hack 1.0.3 for Xenix (i386)</title>
		<link>https://virtuallyfun.com/2012/07/16/hack-1-0-3-for-xenix-i386/</link>
					<comments>https://virtuallyfun.com/2012/07/16/hack-1-0-3-for-xenix-i386/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 16 Jul 2012 17:25:18 +0000</pubDate>
				<category><![CDATA[gcc]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=2204</guid>

					<description><![CDATA[I figured that since I could build hack for some ancient 4BSD flavors that I should be able to build hack for good old fashioned Xenix. And it all seems to work as it should! I used the source from &#8230; <a href="https://virtuallyfun.com/2012/07/16/hack-1-0-3-for-xenix-i386/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><div id="attachment_2205" style="width: 310px" class="wp-caption alignleft"><a href="https://virtuallyfun.com/wp-content/uploads/2012/07/hack-1.0.3.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2205" class="size-medium wp-image-2205" title="hack 1.0.3" src="https://virtuallyfun.com/wp-content/uploads/2012/07/hack-1.0.3-300x140.png" alt="" width="300" height="140" /></a><p id="caption-attachment-2205" class="wp-caption-text">Hack</p></div></p>
<p>I figured that since I could build hack for some ancient 4BSD flavors that I should be able to build hack for good old fashioned Xenix.</p>
<p>And it all seems to work as it should!</p>
<p>I used the source from <a href="http://homepages.cwi.nl/~aeb/games/hack/hack.html">here</a>, and only had to do a few small modifications to get it to compile and run on Xenix via GCC 1.37.1 .</p>
<p>You can download my <a href="http://vpsland.superglobalmegacorp.com/install/xenix/hack-1.0.3-xenix-i386.tgz">binary</a>, and <a href="http://vpsland.superglobalmegacorp.com/install/xenix/hack-1.0.3-source.tgz">source</a> mods.</p>
<p>I&#8217;ve managed to keep this instance of Xenix up for 19 hours, I was thinking about doing some kind of public access to this system, but I don&#8217;t know if people would even beÂ vaguelyÂ interested..</p>
<p>But if you want access, I can set you up.</p>
<p>Although all that is of interest is &#8216;dungeon&#8217;, fortune, hack, robots, and ircII &#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2012/07/16/hack-1-0-3-for-xenix-i386/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>ircII-4.4 on Xenix</title>
		<link>https://virtuallyfun.com/2012/07/09/ircii-4-4-on-xenix/</link>
					<comments>https://virtuallyfun.com/2012/07/09/ircii-4-4-on-xenix/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 10 Jul 2012 01:46:01 +0000</pubDate>
				<category><![CDATA[Xenix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=2173</guid>

					<description><![CDATA[Building this was.. . Involved, but I finally got it to link! Oh happy days! But then disaster struck! Not enough parameters? And the worst thing is that I got this error EVERYWHERE&#8230; Googling this has become useless as everyone &#8230; <a href="https://virtuallyfun.com/2012/07/09/ircii-4-4-on-xenix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Building this was.. . Involved, but I finally got it to link! Oh happy days! But then disaster struck!</p>
<p><div id="attachment_2174" style="width: 670px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2012/07/not-enough-para.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2174" class="size-full wp-image-2174" title="not enough para" src="https://virtuallyfun.com/wp-content/uploads/2012/07/not-enough-para.png" alt="" width="660" height="342" /></a><p id="caption-attachment-2174" class="wp-caption-text">USER Not enough parameters</p></div></p>
<p>Not enough parameters? And the worst thing is that I got this error EVERYWHERE&#8230; Googling this has become useless as everyone just says google it, so google made all that turn into a negative feedback loop! Or even useful advice like &#8216;upgrade your client, LOL&#8217;, but after going through an hour of `fun` getting this to run on Xenix I wasn&#8217;t going to try a new version of the source just yet.</p>
<p>Going through the source, looking for the USER command and where its used and found this:</p>
<p><em>send_to_server(&#8220;USER %s %s %s :%s&#8221;, username,</em><br />
<em> (send_umode &amp;&amp; *send_umode) ? send_umode : hostname,</em><br />
<em> server_list[server].name, realname);</em></p>
<p>Which looks nice, but according to <a href="http://oreilly.com/pub/h/1963">this</a> as a reference, it doesn&#8217;t have enough parameters! So I figured I&#8217;d change it to something more like this!</p>
<p>send_to_server(&#8220;USER %s 8 * : %s&#8221;, username,realname);</p>
<p><div id="attachment_2175" style="width: 670px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2012/07/xenix-irc-2.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2175" class="size-full wp-image-2175" title="xenix irc 2" src="https://virtuallyfun.com/wp-content/uploads/2012/07/xenix-irc-2.png" alt="" width="660" height="342" /></a><p id="caption-attachment-2175" class="wp-caption-text">this is a bug free client. honest</p></div></p>
<p>And as you can see, it works! Â Even the version string reports Xenix!</p>
<p>If anyone cares, you can download the binary <a href="http://vpsland.superglobalmegacorp.com/install/xenix/ircII-4.4-xenix.tar.7z">here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2012/07/09/ircii-4-4-on-xenix/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
