<?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>MS-DOS &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/ms-dos/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Wed, 19 Mar 2025 20:05:59 +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>Building MS-DOS 4.00 under OS/2 2.x</title>
		<link>https://virtuallyfun.com/2024/06/10/building-ms-dos-4-00-under-os-2-2-x/</link>
					<comments>https://virtuallyfun.com/2024/06/10/building-ms-dos-4-00-under-os-2-2-x/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 10 Jun 2024 10:05:00 +0000</pubDate>
				<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[OS/2]]></category>
		<category><![CDATA[OS/2 2.0]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14517</guid>

					<description><![CDATA[Now that we&#8217;ve moved beyond the initial shockwave of the MS-DOS 4.00 source code dump, I thought it was time to try to pull off the ultimate trick of the time, building under OS/2 and using the exciting feature of &#8230; <a href="https://virtuallyfun.com/2024/06/10/building-ms-dos-4-00-under-os-2-2-x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://archive.org/details/dos4_os2" target="_blank" rel="noreferrer noopener"><img fetchpriority="high" decoding="async" width="642" height="507" src="https://virtuallyfun.com/wp-content/uploads/2024/06/building-dos4-from-os2.png" alt="" class="wp-image-14518" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/building-dos4-from-os2.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/06/building-dos4-from-os2-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/building-dos4-from-os2-380x300.png 380w" sizes="(max-width: 642px) 100vw, 642px" /></a><figcaption class="wp-element-caption">Building &amp; Booting DOS on OS/2!</figcaption></figure>



<p class="wp-block-paragraph">Now that we&#8217;ve moved beyond the initial shockwave of the MS-DOS 4.00 source code dump, I thought it was time to try to pull off the ultimate trick of the time, building under OS/2 and using the exciting feature of the time &#8220;DOS from Drive A:&#8221;  Long before VMware / Virtual PC for the PC OS/2 took Intel&#8217;s 80386&#8217;s hardware virtualization mode, &#8220;v86 mode&#8221; to the logical conclusion allowing you to boot native MS-DOS under OS/2.  Sadly, the old 1989-1991 OS/2 betas do not include this feature.  Although I have to wonder if it did exist and just wasn&#8217;t publicly available.</p>



<p class="wp-block-paragraph">Many of the programs used to build MS-DOS are off the shelf, the MASM assembler, Microsoft C 5.1, and its associated tools are just retail versions.  To change things up, I did use the 386MASM assembler just to see if it maintained MASM 5.1 compatibility.  And it does.  The only gotcha is that all the tools are *NOT* marked Presentation Manager compatible, so launching them from a window opens a full screen session.  Very annoying!</p>



<figure class="wp-block-image size-full"><img decoding="async" width="722" height="427" src="https://virtuallyfun.com/wp-content/uploads/2024/06/exehdr-altering-cl.png" alt="" class="wp-image-14519" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/exehdr-altering-cl.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/06/exehdr-altering-cl-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/exehdr-altering-cl-500x296.png 500w" sizes="(max-width: 722px) 100vw, 722px" /><figcaption class="wp-element-caption">exehdr</figcaption></figure>



<p class="wp-block-paragraph">I&#8217;m guessing the fix is in a toolkit?  Either way, in Microsoft C 6.0, the utility exehdr lets us modify an OS/2 executable so it&#8217;ll now be WINDOWCOMPAT.  So at least it &#8216;feels&#8217; better now.</p>



<p class="wp-block-paragraph">One thing is for sure, building DOS under OS/2 is a lot more enjoyable than doing a native build as you can minimize the build task, although the MS-DOS only programs do pop up when it generates text indexes &amp; tables.  But you do retain some control of your machine during the build, which is great!  Although E is a terrible editor for source code, and the one in 6.78 has a nasty bug where it&#8217;ll truncate large files.  Were people really using text mode editors for everything back then?  I guess i like the fonts of the GUI, despite having used machines of the era.</p>



<p class="wp-block-paragraph">Otherwise, the end result is the same, you get a build of DOS 4.</p>



<p class="wp-block-paragraph">I went ahead and tried to build using 6.78 and no doubt compiling DOS is an absolute torture test.  So far, the DOS Box has locked OS/2 once, and PM Shell has crashed once as well.</p>



<p class="wp-block-paragraph">I altered the Makefiles to use &#8216;rm&#8217; instead of the built in &#8216;del&#8217; command, because if you try to delete a file that doesn&#8217;t exist, del returns an error, which then triggers an end to the NMAKE process.  Very annoying!  However, the &#8216;rm&#8217; included in Microsoft C 5.1 doesn&#8217;t suffer the same defect.  Using 86Box with an 83Mhz Pentium OverDrive it took about 18 minutes to build DOS-4.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="704" height="492" src="https://virtuallyfun.com/wp-content/uploads/2024/06/builddos4-os2-6.78.gif" alt="" class="wp-image-14521"/><figcaption class="wp-element-caption">Building DOS 4 on OS/2 6.78</figcaption></figure>



<p class="wp-block-paragraph">I did capture the video and converted it to a GIF so you can quickly see the reboot &amp; the UI crashing.  FUN!</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2024/06/dos4-built-from-os2-678.png"><img loading="lazy" decoding="async" width="722" height="427" src="https://virtuallyfun.com/wp-content/uploads/2024/06/dos4-built-from-os2-678.png" alt="" class="wp-image-14522" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/dos4-built-from-os2-678.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/06/dos4-built-from-os2-678-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/dos4-built-from-os2-678-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a><figcaption class="wp-element-caption">Compiled under OS/2</figcaption></figure>



<p class="wp-block-paragraph">And it even boots!</p>



<p class="wp-block-paragraph">For anyone interested I&#8217;ve put <a href="https://archive.org/details/dos4_os2" target="_blank" rel="noreferrer noopener">zips on archive.org</a> that can be extracted under OS/2.  I also made a pkzip disk set incase loading a 6MB zip file is an issue.</p>



<p class="wp-block-paragraph"><a href="https://archive.org/details/dos4_os2">Building MS-DOS 4.00 under OS/2 2.x : neozeede : Free Download, Borrow, and Streaming : Internet Archive</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/06/10/building-ms-dos-4-00-under-os-2-2-x/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Compiling MS-DOS 4.0 from DOS 4.0, on a PS/2!</title>
		<link>https://virtuallyfun.com/2024/04/28/compiling-ms-dos-4-0-from-dos-4-0-on-a-ps-2/</link>
					<comments>https://virtuallyfun.com/2024/04/28/compiling-ms-dos-4-0-from-dos-4-0-on-a-ps-2/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 28 Apr 2024 01:02:24 +0000</pubDate>
				<category><![CDATA[80386]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[PS/2]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14409</guid>

					<description><![CDATA[have patience. It does work. Even booting from the SPOCK SCSI CARD which all the other DOS4 images all failed. The best way for a native build is the zip in the releases. Release Now can boot from hard disk! &#8230; <a href="https://virtuallyfun.com/2024/04/28/compiling-ms-dos-4-0-from-dos-4-0-on-a-ps-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/04/IMG_2074-scaled.webp" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="768" height="1024" src="/wp-content/uploads/2024/04/IMG_2074-768x1024.webp" alt="" class="wp-image-14410" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/IMG_2074-768x1024.webp 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/IMG_2074-225x300.webp 225w, https://virtuallyfun.com/wp-content/uploads/2024/04/IMG_2074-1152x1536.webp 1152w, https://virtuallyfun.com/wp-content/uploads/2024/04/IMG_2074-1536x2048.webp 1536w, https://virtuallyfun.com/wp-content/uploads/2024/04/IMG_2074-scaled.webp 1920w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></figure>



<p class="wp-block-paragraph">have patience.  It does work. Even booting from the SPOCK SCSI CARD which all the other DOS4 images all failed.</p>



<p class="wp-block-paragraph">The best way for a native build is the zip in the releases.</p>



<p class="wp-block-paragraph"><a href="https://github.com/neozeed/dos400/releases/tag/v_0.2">Release Now can boot from hard disk! · neozeed/dos400 (github.com)</a></p>



<p class="wp-block-paragraph">With a 16Mhz 80386 it took 70 minutes. I just formatted a blank image on the gotek, copied IO.SYS, MSDOS.SYS and COMMAND.COM, then rebooted. went back to the compiled DOS 4, and re-formatted the floppy as a system disk so the attributes are set. (DOS 5 lets you change system files), and yeah. It can be done!</p>



<p class="wp-block-paragraph">Let me spell out the steps, in this case I&#8217;m going to use Windows 10. I use the git from the WSL (Windows subsystem for Linux)  I have DOSBox mount c:\dos as my c: drive .  ZIP/UNZIP are Info-ZIP versions, you MUST have the Win32 native version! </p>



<pre class="wp-block-code"><code>- md \dos
- md \dos\temp
- wsl git clone <a href="https://github.com/microsoft/MS-DOS" target="_blank" rel="noreferrer noopener">https://github.com/microsoft/MS-DOS</a>
- cd MS-DOS\v4.0
- zip -r \dos\temp\src.zip src\*.*
- cd \dos
- unzip -a -LL temp\src.zip
- start dosbox
- cd \src
- edit setenv.bat to reflect the paths:
  set BAKROOT=c:
  set LIB=%BAKROOT%\src\tools\bld\lib
  set INCLUDE=%BAKROOT%\src\tools\bld\inc
  set PATH=%PATH%;%BAKROOT%\src\tools
- setenv
- nmake
it will then fail in mapper on getmsg.asm change the 3 chars to a '-'
- nmake
- cd ..
- nmake</code></pre>



<p class="wp-block-paragraph">It will then fail building select</p>



<pre class="wp-block-code"><code>- edit select2.asm
- edit usa.inf
- nmake
- cd ..
- nmake</code></pre>



<p class="wp-block-paragraph">and now it&#8217;ll be done compiling.</p>



<p class="wp-block-paragraph">continuing from dosbox, you need a 1.44mb fat formatted disk image somedos144.img . I used a dos 6.22 diskette, it needs the bootsector already in place to load io.sys/msdos.sys</p>



<pre class="wp-block-code"><code>- cd \src
- md bin
- cpy bin
- imgmount a somedos144.img -t floppy
- a:
- del *.*
- copy c:\src\bin\io.sys
- copy c:\src\bin\msdos.sys
- copy c:\src\bin\http://command.com
- boot -l a:</code></pre>



<p class="wp-block-paragraph">And now I&#8217;ve booted MS-DOS 4.00 from within DOBOX!<a href="https://twitter.com/virtuallyfun/status/1784537575539060798/photo/1"></a></p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/04/dos4-booted-within-dosbox.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="642" height="433" src="/wp-content/uploads/2024/04/dos4-booted-within-dosbox.png" alt="" class="wp-image-14415" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/dos4-booted-within-dosbox.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/dos4-booted-within-dosbox-300x202.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/dos4-booted-within-dosbox-445x300.png 445w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a></figure>



<p class="wp-block-paragraph">Also as interest to most people there is a bug in <a href="https://github.com/neozeed/dos400/commit/2edc3aeef49ebeb809212a3c63bd9994aea79785" target="_blank" rel="noreferrer noopener">msload.asm</a>, where DOS 4.0 won&#8217;t boot on a lot of machines, from VMware, Qemu and even my PS/2.  It&#8217;s a small fix to the IO.SYS initial stack being too small.  Props to <a href="https://www.os2museum.com/wp/how-not-to-release-historic-source-code/#comment-381412" target="_blank" rel="noreferrer noopener">Michal Necasek</a> for the fix!</p>



<p class="wp-block-paragraph">For further guidance here is a video spelling it all out:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Compiling MS-DOS 4.0 using DOSbox &amp; Qemu" width="584" height="438" src="https://www.youtube.com/embed/ZiT1lvXqUrQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/04/28/compiling-ms-dos-4-0-from-dos-4-0-on-a-ps-2/feed/</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
			</item>
		<item>
		<title>MZ is back, baby! &#8211; Source to MS-DOS 4.0 / European DOS / Multi-tasking DOS drivers released!</title>
		<link>https://virtuallyfun.com/2024/04/25/mz-is-back-baby-source-to-ms-dos-4-0-european-dos-multi-tasking-dos-released/</link>
					<comments>https://virtuallyfun.com/2024/04/25/mz-is-back-baby-source-to-ms-dos-4-0-european-dos-multi-tasking-dos-released/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 25 Apr 2024 20:42:29 +0000</pubDate>
				<category><![CDATA[microsoft]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[OS/2]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14394</guid>

					<description><![CDATA[I&#8217;ts MS-DOS 4.0 Internal Work #2.06 &#8211; May 23, 1984, with copyrights from both IBM &#38; Microsoft. I don&#8217;t have time to make any comment much further other than having had been listing to people in on making this happen, &#8230; <a href="https://virtuallyfun.com/2024/04/25/mz-is-back-baby-source-to-ms-dos-4-0-european-dos-multi-tasking-dos-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://github.com/microsoft/MS-DOS/commit/656c98b804c7845b1352a84f08177401caaea866" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="835" height="478" src="/wp-content/uploads/2024/04/mz-is-back.png" alt="" class="wp-image-14395" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/mz-is-back.png 835w, https://virtuallyfun.com/wp-content/uploads/2024/04/mz-is-back-300x172.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/mz-is-back-768x440.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/mz-is-back-500x286.png 500w" sizes="auto, (max-width: 835px) 100vw, 835px" /></a><figcaption class="wp-element-caption">MZ is back!</figcaption></figure>



<p class="wp-block-paragraph">I&#8217;ts MS-DOS 4.0 Internal Work #2.06 &#8211; May 23, 1984, with copyrights from both IBM &amp; Microsoft.</p>



<p class="wp-block-paragraph">I don&#8217;t have time to make any comment much further other than having had been listing to people in on making this happen, and it&#8217;s been a long struggle to make this all happen, and it&#8217;s so amazing to see their hard work make it out into the wild!</p>



<p class="wp-block-paragraph">DOS 4 is the basis of what would eventually become OS/2, just as I&#8217;m sure that it&#8217;s use of NE executables will reveal a far tighter integration with Windows, giving hints of the future that should have been!</p>



<p class="wp-block-paragraph">Hopefully, <a href="/2023/01/17/looking-back-at-ms-dos-4-00m-or-in-the-beginning-before-there-was-os-2/" target="_blank" rel="noreferrer noopener">like the LINK4 support I had stumbled onto a while back</a>, we can build more robust applications!</p>



<figure class="wp-block-image size-full"><a href="https://www.hanselman.com/blog/open-sourcing-dos-4" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="500" height="342" src="/wp-content/uploads/2024/04/clip_image002_5b6e1c02-95d8-4ee1-87af-ca53a8b0bd56.png" alt="" class="wp-image-14400" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/clip_image002_5b6e1c02-95d8-4ee1-87af-ca53a8b0bd56.png 500w, https://virtuallyfun.com/wp-content/uploads/2024/04/clip_image002_5b6e1c02-95d8-4ee1-87af-ca53a8b0bd56-300x205.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/clip_image002_5b6e1c02-95d8-4ee1-87af-ca53a8b0bd56-439x300.png 439w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Scott Hanselman</figcaption></figure>



<p class="wp-block-paragraph">** EDIT So it&#8217;s just DOS 4.00, with a lot of information on EU/MT DOS4.  There is now a blog post over on <a href="https://www.hanselman.com/blog/open-sourcing-dos-4" target="_blank" rel="noreferrer noopener">Scott Hanselman &#8211; Scott Hanselman&#8217;s Blog</a>&#8216;s talking about the details of this release!</p>



<p class="wp-block-paragraph">Credit goes to <a href="https://starfrost.net/blog/001-mdos4-part-1/" target="_blank" rel="noreferrer noopener">starfrost</a>, this was nearly a year in the works!</p>



<p class="wp-block-paragraph">*** EDIT it&#8217;s now live over on <a href="https://cloudblogs.microsoft.com/opensource/2024/04/25/open-sourcing-ms-dos-4-0/">cloudblogs.microsoft.com</a>, <a href="https://cloudblogs.microsoft.com/opensource/2024/04/25/open-sourcing-ms-dos-4-0/">Open sourcing MS-DOS 4.0</a></p>



<p class="wp-block-paragraph">Ive been able to bulid it from source, and I put up the changes on github (really minor changes)</p>



<p class="wp-block-paragraph"><a href="https://github.com/neozeed/dos400">neozeed/dos400: Microsoft DOS 4.00 (github.com)</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/04/25/mz-is-back-baby-source-to-ms-dos-4-0-european-dos-multi-tasking-dos-released/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Adding the missing part of DoomNew &#8211; audio</title>
		<link>https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/</link>
					<comments>https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 15 Apr 2024 18:11:57 +0000</pubDate>
				<category><![CDATA[audio]]></category>
		<category><![CDATA[doom]]></category>
		<category><![CDATA[DPMI]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[Watcom C++]]></category>
		<category><![CDATA[zeeDoom]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14250</guid>

					<description><![CDATA[DoomNew, is a rather ambitious project by Maraakate, to attempt to revert the old linuxdoom-1.10 to something more akin to what shipped for DooM 1.9 using Hexen/Heretic source code to fill in many of the blanks in a very Jurassic &#8230; <a href="https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://doomwiki.org/wiki/DoomNew" target="_blank" rel="noreferrer noopener">DoomNew</a>, is a rather ambitious project by <em><a href="http://dk.toastednet.org/index.html" target="_blank" rel="noreferrer noopener">Maraakate</a></em>, to attempt to revert the old linuxdoom-1.10 to something more akin to what shipped for DooM 1.9 using Hexen/Heretic source code to fill in many of the blanks in a very Jurassic Park like manipulation of it&#8217;s DNA (source code).  It&#8217;s great and gives you a very cool MS-DOS based engine using the original Watcom tools.  But there is always the one catch, which is that it relies on the original sound library, <a href="https://doomwiki.org/wiki/DMX" target="_blank" rel="noreferrer noopener">DMX</a>.</p>



<p class="wp-block-paragraph">And unfortunately, nobody has been able to <a href="https://www.doomworld.com/forum/post/821608" target="_blank" rel="noreferrer noopener">get ahold of Paul Radek</a> to see if he&#8217;d be okay with any kind of open-source license.  So, sadly DMX has been a long-standing stumbling block for that &#8216;authentic&#8217; super vanilla DOS DooM.</p>



<h2 class="wp-block-heading">Enter the Raptor</h2>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://store.steampowered.com/app/358360/Raptor_Call_of_the_Shadows_1994_Classic_Edition/" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="240" height="149" src="/wp-content/uploads/2024/04/raptor-demo1.gif" alt="" class="wp-image-14251" style="width:612px;height:auto"/></a><figcaption class="wp-element-caption">Raptor: Call of the Shadows</figcaption></figure>
</div>


<p class="wp-block-paragraph">Fast forward to a few days ago, and I come across <a href="https://github.com/skynettx/dosraptor/tree/master">dosraptor</a> on github.  I had a copy of this back in the day, it was bundled on CD-ROM or something.  I am absolutely terrible at games like this, but I did remember this one being incredibly fluid, and fun despite me having no skill.  Raptor was written by <a href="https://www.mking.com/index.html" target="_blank" rel="noreferrer noopener">Scott Host</a>, and it&#8217;s still on sale over on <a href="https://store.steampowered.com/app/358360/Raptor_Call_of_the_Shadows_1994_Classic_Edition/" target="_blank" rel="noreferrer noopener">steam</a>!  The source had been cleaned up with help from <a href="https://github.com/skynettx" target="_blank" rel="noreferrer noopener">skynettx</a>, <a href="https://github.com/nukeykt" target="_blank" rel="noreferrer noopener">nukeykt </a>and <a href="https://github.com/NY00123" target="_blank" rel="noreferrer noopener">NY00123</a>.</p>



<p class="wp-block-paragraph">I went ahead and <a href="https://store.steampowered.com/app/358360/Raptor_Call_of_the_Shadows_1994_Classic_Edition/">built it from source</a>, and in no time I was up and running.  I found Watcom 9.5 was the best path to go with.  I even made a &#8216;<a href="https://github.com/neozeed/dosraptor/releases" target="_blank" rel="noreferrer noopener">release</a>&#8216; for those who don&#8217;t want the joy of building from source, and of course picked up a copy on both steam and his site.  While building the source code, and looking at the directory tree that&#8217;s when I noticed apodmx:</p>



<pre class="wp-block-preformatted">This is a DMX sound library wrapper, which is powered by the<br>Apogee Sound System, the latter being written by Jim Dose for<br>3D Realms. When used together, they form a replacement for DMX.<br><br>The DMX wrapper was written by <a href="https://github.com/nukeykt">Nuke.YKT</a> for <a href="https://github.com/nukeykt/pcdoom">PCDoom</a>, a DOS port<br>of id Software's Doom title from the 90s.<br><br>It also includes the mus2mid converter, contributed by <a href="http://benryves.com">Ben Ryves</a> for<br><a href="https://soulsphere.org/">Simon Howard</a>'s Chocolate Doom port, as well as the PC Speaker frequency table, dumped by Gez from a DOOM2.EXE file and later also added to Chocolate Doom.<br><br>A few years later, this wrapper was modified by <a href="https://github.com/NY00123">NY00123</a>; Mostly to be built as a standalone library, while removing dependencies on game code.</pre>



<p class="wp-block-paragraph">So it turns out that Raptor used DMX, just like DooM!</p>



<p class="wp-block-paragraph">Well, isn&#8217;t that incredible!</p>



<p class="wp-block-paragraph">Now the first question I had, was apodmx a direct drop-in replacement for DMX?  Well basically, yes!  Let&#8217;s check out the Adlib driver!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="682" height="529" src="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1.png" alt="" class="wp-image-15220" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1.png 682w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1-300x233.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1-387x300.png 387w" sizes="auto, (max-width: 682px) 100vw, 682px" /><figcaption class="wp-element-caption">I think I legit got DMCA&#8217;d over the DooM intro</figcaption></figure>



<p class="wp-block-paragraph">The Apogee Sound System is softer, and not quite the same as DMX, but compared to nothing I&#8217;m more than happy with it.  The AdLib is kind of a weird card to drive, and I guess it&#8217;s not to surprising that there is such a variance.  </p>



<h2 class="wp-block-heading">How about a Roland Sound Canvas?</h2>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://github.com/nukeykt/Nuked-SC55" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="240" height="87" src="/wp-content/uploads/2024/04/sound-canvas.gif" alt="" class="wp-image-14264" style="width:623px;height:auto"/></a><figcaption class="wp-element-caption">Nuked-SC55: Roland SC-55 emulation</figcaption></figure>
</div>


<p class="wp-block-paragraph">Sadly, mine is inaccessible, but thanks to <a href="https://github.com/nukeykt">nukeykt</a> there is <a href="https://github.com/nukeykt/Nuked-SC55" target="_blank" rel="noreferrer noopener">the Nuked-SC55: Roland SC-55 series emulation</a>.  I had to setup the MidiLoop as expected, and configure DosBox for the Loop and now I have a virtual Sound Canvas.  So let&#8217;s see how the two engines deal with a common instrument!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="645" height="232" src="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2.png" alt="" class="wp-image-15222" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2.png 645w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2-300x108.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2-500x180.png 500w" sizes="auto, (max-width: 645px) 100vw, 645px" /><figcaption class="wp-element-caption">I think this got DMCA&#8217;d</figcaption></figure>



<p class="wp-block-paragraph">Pretty cool, if I do say so myself.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://github.com/neozeed/doomnew-for-dos/releases/tag/apogee_snd" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="240" height="149" src="/wp-content/uploads/2024/04/322240103-9c3eef88-466f-4a5e-b555-1d0b870bc946.gif" alt="" class="wp-image-14268" style="width:628px;height:auto"/></a><figcaption class="wp-element-caption">ZeeDooM</figcaption></figure>
</div>


<p class="wp-block-paragraph">I&#8217;ve uploaded my modifications to <a href="https://github.com/neozeed/doomnew-for-dos" target="_blank" rel="noreferrer noopener">github</a>, along with a <a href="https://github.com/neozeed/doomnew-for-dos/releases/tag/apogee_snd" target="_blank" rel="noreferrer noopener">copy of that old ZeeDooM</a> I had slapped together ages ago.  I&#8217;d taken the <a href="https://www.doomworld.com/forum/topic/72509-more-goodies-from-romero-doomed-source-maps-graphics/" target="_blank" rel="noreferrer noopener">map source code from Romero</a>, and the graphical/audio resources from <a href="https://github.com/freedoom" target="_blank" rel="noreferrer noopener">Freedoom</a> and slapped them together.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>New version of the MS-DOS Player</title>
		<link>https://virtuallyfun.com/2024/02/16/new-version-of-the-ms-dos-player/</link>
					<comments>https://virtuallyfun.com/2024/02/16/new-version-of-the-ms-dos-player/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 16 Feb 2024 10:05:00 +0000</pubDate>
				<category><![CDATA[80286]]></category>
		<category><![CDATA[80386]]></category>
		<category><![CDATA[i386]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13960</guid>

					<description><![CDATA[And it&#8217;s a big update on takeda-toshiya.my.coocan.jp! From&#160;cracyc&#160;and&#160;roytam&#8217;s&#160;fork, I have incorporated a correction.These include file access using FCB and fixing exceptions around the FPU of the MAME version of the i386 core.In addition, the DAA/DAS/AAA/AAS/AAM/AAD instructions of the MAME version &#8230; <a href="https://virtuallyfun.com/2024/02/16/new-version-of-the-ms-dos-player/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">And it&#8217;s a big update on <a href="http://takeda-toshiya.my.coocan.jp/msdos/" target="_blank" rel="noreferrer noopener">takeda-toshiya.my.coocan.jp</a>!</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">From&nbsp;<a href="https://github.com/cracyc/msdos-player">cracyc</a>&nbsp;and&nbsp;<a href="https://github.com/roytam1/msdos-player">roytam&#8217;s</a>&nbsp;fork, I have incorporated a correction.<br>These include file access using FCB and fixing exceptions around the FPU of the MAME version of the i386 core.<br>In addition, the DAA/DAS/AAA/AAS/AAM/AAD instructions of the MAME version of the i386 core have been modified based on the DOSBox implementation.<br>With the Pentium 4 version, the testi386.exe is the same as the real thing.</p>



<p class="wp-block-paragraph">The I386 core of NP21/W has been updated to equivalent to ver0.86 rev92 beta2.<br>Also, fixed the build time warning so that it does not appear.</p>



<p class="wp-block-paragraph">Improved checking when accessing environment variables, referencing incorrect environment tables.<br>Recent builds have resolved an issue that prevented testi386.exe from working.<br>Improved the efficiency of memory access handling.<br>Basic memory, extended memory, and reserved areas (such as VRAM) can be accessed in that order with a small number of conditional branches.<br>The processing speed may be slightly increased.</p>
<cite><a href="http://takeda-toshiya.my.coocan.jp/msdos/">MS-DOS Player for Win32-x64 Mystery WIP Page (coocan.jp)</a></cite></blockquote>



<p class="wp-block-paragraph">Takeda has been very busy indeed!</p>



<p class="wp-block-paragraph">I don&#8217;t want to complain or anything, I&#8217;m very thankful for the tool. It&#8217;s just so amazing.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="395" height="152" src="/wp-content/uploads/2024/02/msdos-player-console-size-change-crash.png" alt="" class="wp-image-13961" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/msdos-player-console-size-change-crash.png 395w, https://virtuallyfun.com/wp-content/uploads/2024/02/msdos-player-console-size-change-crash-300x115.png 300w" sizes="auto, (max-width: 395px) 100vw, 395px" /></figure>
</div>


<p class="wp-block-paragraph"> but on my Windows 10 install I have so many issues relating to the font/screen changes, that I just made an incredibly lame fork, and commented out those changes, <a href="https://github.com/neozeed/msdos-player_" target="_blank" rel="noreferrer noopener">msdos-player_</a>.  I stumbled onto the issue by accident by redirecting stdout/stderr, and compiling stuff ran fine, but as soon as it started to mess with the console it&#8217;d just crash.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/02/building-TREK-using-msdos-player-as-the-magic-glue.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="979" height="512" src="/wp-content/uploads/2024/02/building-TREK-using-msdos-player-as-the-magic-glue.png" alt="" class="wp-image-13962" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/building-TREK-using-msdos-player-as-the-magic-glue.png 979w, https://virtuallyfun.com/wp-content/uploads/2024/02/building-TREK-using-msdos-player-as-the-magic-glue-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/02/building-TREK-using-msdos-player-as-the-magic-glue-768x402.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/02/building-TREK-using-msdos-player-as-the-magic-glue-500x261.png 500w" sizes="auto, (max-width: 979px) 100vw, 979px" /></a><figcaption class="wp-element-caption">No console changes, no crashes.</figcaption></figure>



<p class="wp-block-paragraph">OK so you can run some basic stuff like compilers, but what about ORACLE?!</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/02/oracle-5-on-msdos-player.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="979" height="512" src="/wp-content/uploads/2024/02/oracle-5-on-msdos-player.png" alt="" class="wp-image-13968" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/oracle-5-on-msdos-player.png 979w, https://virtuallyfun.com/wp-content/uploads/2024/02/oracle-5-on-msdos-player-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/02/oracle-5-on-msdos-player-768x402.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/02/oracle-5-on-msdos-player-500x261.png 500w" sizes="auto, (max-width: 979px) 100vw, 979px" /></a><figcaption class="wp-element-caption">Oracle 5!</figcaption></figure>



<p class="wp-block-paragraph">I did have to subst a drive, as I didn&#8217;t feel like dealing with paths and stuff, I had extracted it from <a href="https://archive.org/details/oracle-51c-qemu" target="_blank" rel="noreferrer noopener">oracle-51c-qemu</a>, and modified the autoexec &amp; config.ora and yeah, using the 386 or better emulation it just worked!  Sadly there is no network part of the install, although there is a SDK so I guess there ought to be a way to proxy queries.</p>



<p class="wp-block-paragraph">OK, but how about something even more complicated?!  <strong><span style="text-decoration: underline;">NETWARE</span></strong>!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="432" src="/wp-content/uploads/2024/02/netware-on-msdos-player.png" alt="" class="wp-image-13970" srcset="https://virtuallyfun.com/wp-content/uploads/2024/02/netware-on-msdos-player.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/02/netware-on-msdos-player-300x202.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/02/netware-on-msdos-player-446x300.png 446w" sizes="auto, (max-width: 642px) 100vw, 642px" /><figcaption class="wp-element-caption">Netware 3.12 on MS-DOS Player</figcaption></figure>



<p class="wp-block-paragraph">Obviously there is no ISA MFM/IDE disks in MS-DOS Player, but the server loaded!</p>



<p class="wp-block-paragraph">Needless to say this update is just <strong><em>GREAT</em></strong>!</p>



<p class="wp-block-paragraph"> I&#8217;d say try the one hosted on Takeda&#8217;s site!  It&#8217;ll almost certainly work fine for you.  Otherwise I guess try mine.  Or not.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/02/16/new-version-of-the-ms-dos-player/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Phar Lap&#8217;s 286/DOS-Extender: why nobody used it for games</title>
		<link>https://virtuallyfun.com/2024/01/29/phar-laps-286-dos-extender-why-nobody-used-it-for-games/</link>
					<comments>https://virtuallyfun.com/2024/01/29/phar-laps-286-dos-extender-why-nobody-used-it-for-games/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 29 Jan 2024 02:24:57 +0000</pubDate>
				<category><![CDATA[80286]]></category>
		<category><![CDATA[80386]]></category>
		<category><![CDATA[dos extenders]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[PS/2]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13822</guid>

					<description><![CDATA[Your&#160;scientists were so preoccupied with whether or not they could, they didn&#8217;t stop to think if they should. -Ian Malcolm Ever since I got my first 286 board way back in the early 90&#8217;s (1990? 1991?) I have been intrigued &#8230; <a href="https://virtuallyfun.com/2024/01/29/phar-laps-286-dos-extender-why-nobody-used-it-for-games/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Your&nbsp;scientists were so preoccupied with whether or not they could, they didn&#8217;t stop to think if they should.<a href="https://www.quotes.net/signup.php"></a></p>
<cite>-Ian Malcolm</cite></blockquote>



<p class="wp-block-paragraph">Ever since I got my first 286 board way back in the early 90&#8217;s (1990? 1991?) I have been intrigued by the whole protected mode of operation.  Unfortunately, in the era the required tools were way out of my reach, and of course were not available at retail.  But now I live in the future where I have all the parts!  Let&#8217;s look at the needed parts</p>



<ul class="wp-block-list">
<li><a href="/wp-content/uploads/2024/01/8a6aef24-8339-4513-9310-89132e07851e.jpeg" target="_blank" rel="noreferrer noopener">IBM PS/2 model 60</a></li>



<li><a href="https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502.jpg" target="_blank" rel="noreferrer noopener">Microsoft C 6.00a</a></li>



<li><a href="/wp-content/uploads/2024/01/pharlap-286-1.jpg" target="_blank" rel="noreferrer noopener">Phar Lap 286|DOS-Extender</a></li>



<li>Space Quest II</li>
</ul>



<p class="wp-block-paragraph">I have to once more again thank <a href="https://www.patreon.com/virtuallyfun">my patrons</a>, and people tolerating the google ads as it made all the difference in being able to buy all this stuff.  And now is as good a time as any other to put it all together.</p>



<p class="wp-block-paragraph">I stumbled upon this repo on <a href="https://sourceforge.net/projects/sarien/" target="_blank" rel="noreferrer noopener">sourceforge, Sarien</a>.  It included a Turbo C++ port, which is pretty exciting!  So, this became my goal, get Sarien running on Phar Lap 286.</p>



<figure class="wp-block-image size-full"><a href="https://archive.org/details/microsoft_c_600-3.5disks" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="902" height="540" src="/wp-content/uploads/2024/01/installing-c-600-for-sarien.png" alt="" class="wp-image-13823" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/installing-c-600-for-sarien.png 902w, https://virtuallyfun.com/wp-content/uploads/2024/01/installing-c-600-for-sarien-300x180.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/installing-c-600-for-sarien-768x460.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/installing-c-600-for-sarien-500x300.png 500w" sizes="auto, (max-width: 902px) 100vw, 902px" /></a><figcaption class="wp-element-caption">Installing Microsoft C 6.0a</figcaption></figure>



<p class="wp-block-paragraph">Installing Microsoft C requires you to pick and choose both hosting, targeting environments, along with what the preferred libraries are.  In the business we call this foreshadowing as this can be such a giant PITA.  At least virtual machines are fast, plentiful, and cheap.  In addition I had been using <a href="http://takeda-toshiya.my.coocan.jp/msdos/index.html" target="_blank" rel="noreferrer noopener">MS-DOS player</a> to host the tools on Windows 11.  This of course proved weird later.</p>



<p class="wp-block-paragraph">The first step was getting it running on MS-DOS using Microsoft C 6.0a.  This was actually pretty easy, the hard part was working out the makefile, as some files don&#8217;t compile with optimisations.  And overall, the project doesn&#8217;t seem to work with /Ox at all.  I haven&#8217;t spent enough time mixing and matching settings to find what actually doesn&#8217;t work, but I&#8217;m in a hurry, and /Os seems to work just fine.</p>



<p class="wp-block-paragraph">In no time I had both the CGA &amp; VGA drivers up and running and verified working on my PS/2.  Great!</p>



<p class="wp-block-paragraph">Now comes the fun, getting it ready to run on Pharlap.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/01/pharlap-286-C-beyond-640k.jpg"><img loading="lazy" decoding="async" width="760" height="1024" src="/wp-content/uploads/2024/01/pharlap-286-C-beyond-640k-760x1024.jpg" alt="" class="wp-image-13824" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/pharlap-286-C-beyond-640k-760x1024.jpg 760w, https://virtuallyfun.com/wp-content/uploads/2024/01/pharlap-286-C-beyond-640k-223x300.jpg 223w, https://virtuallyfun.com/wp-content/uploads/2024/01/pharlap-286-C-beyond-640k-768x1035.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/pharlap-286-C-beyond-640k-1140x1536.jpg 1140w, https://virtuallyfun.com/wp-content/uploads/2024/01/pharlap-286-C-beyond-640k.jpg 1187w" sizes="auto, (max-width: 760px) 100vw, 760px" /></a><figcaption class="wp-element-caption">The magic!</figcaption></figure>



<p class="wp-block-paragraph">Phar Lap&#8217;s 286|DOS-Extender is pure magic.  A DOS extender is a special program that can load a protected mode program into memory on a 286 or better computer and run it.  At it&#8217;s heart, it can proxy MS-DOS functionality from protected mode to real mode, allowing you to use a lot of methodology and code from traditional real mode code.  Phar Lap, goes beyond that by providing a pseudo OS/2 1.2 environment on MS-DOS, including advanced features like DLL&#8217;s, and being able to use ALL the RAM in your computer.  Of course on the 286 there is a massive caveat:</p>



<p class="wp-block-paragraph">The 286 has no built-in function for switching from protected mode to real mode.  This makes programs that rely a LOT on MS-DOS potentially very slow.  You can absolutely feel the difference between the real mode and the protected mode version of Sarien.</p>



<p class="wp-block-paragraph">Phar Lap does include a test program, swtest which can benchmark the switching methods, so let&#8217;s run it and get some scores.</p>



<pre class="wp-block-code"><code>Switch code version = 1.14
BIOS signature: BA66CC86
BIOS date: 02/13/87

Machine ID = 0, A20 method = PS2, Reset method = Standard
Starting test for Switch Mode 3 (SLOW) ... Test complete.
Avg switch time (usecs): To prot = 34, To real = 101, Total = 135
Min switch time (usecs): To prot = 32, To real = 98, Total = 130
Max switch time (usecs): To prot = 35, To real = 103, Total = 138

Machine ID = 0, A20 method = PS2, Reset method = Standard
Starting test for Switch Mode 2 (AT) ... Test complete.
Avg switch time (usecs): To prot = 34, To real = 86, Total = 120
Min switch time (usecs): To prot = 33, To real = 83, Total = 116
Max switch time (usecs): To prot = 36, To real = 88, Total = 124

Machine ID = 0, A20 method = PS2, Reset method = Standard
Starting test for Switch Mode 1 (SURE) ... Test complete.
Avg switch time (usecs): To prot = 34, To real = 70, Total = 104
Min switch time (usecs): To prot = 32, To real = 68, Total = 100
Max switch time (usecs): To prot = 35, To real = 72, Total = 107
</code></pre>



<p class="wp-block-paragraph">For those of you wondering what the timing is like on a 386, here is my 16Mhz PS/2 Model 80 board (now with fully 32bit memory)</p>



<pre class="wp-block-code"><code>Switch code version = 1.14
BIOS signature: 039D2DB4
BIOS date: 03/30/87

Machine ID = 0, A20 method = PS2, Reset method = Standard
Starting test for Switch Mode 5 (386) ... Test complete.
Avg switch time (usecs): To prot = 31, To real = 22, Total = 53
Min switch time (usecs): To prot = 30, To real = 20, Total = 50
Max switch time (usecs): To prot = 32, To real = 23, Total = 55</code></pre>



<p class="wp-block-paragraph">I&#8217;m honestly surprised the 286 switches from protected back to real so quickly!  Although as you can see from the 386 timings it&#8217;s significantly faster than the 286.</p>



<p class="wp-block-paragraph">Here is a quick video, real mode on the left, protected mode on the right.  Yes I need to get a VGA capture card. Sorry.</p>



<figure class="wp-block-video"><video controls src="/wp-content/uploads/2024/01/sar-20.mp4"></video><figcaption class="wp-element-caption">Real mode on the left, Protected on the right. Running on the 386</figcaption></figure>



<p class="wp-block-paragraph">Being a DOS extender it does have built in functions for things like hooking interrupts like this:</p>



<pre class="wp-block-code"><code>    /* install our new timer tick routine */
    DosSetPassToProtVec(IRQ0, (PIHANDLER)new_prot_timer_tick,
        &amp;old_prot_timer_tick, &amp;old_real_timer_tick);</code></pre>



<p class="wp-block-paragraph">Unlike some kind of OS/2 method which would involve creating a thread and or timers.</p>



<p class="wp-block-paragraph">Setting video modes via the video BIOS is also supported, using the built in int86 style calls:</p>



<pre class="wp-block-code"><code>    memset(&amp;r,0x0,sizeof(r));
    r.h.ah = 0;
    r.h.al = 3;
    int86(0x10, &amp;r, &amp;r);</code></pre>



<p class="wp-block-paragraph">Using pointers into things like video ram do require &#8216;asking for permission&#8217; but it&#8217;s not too involved:</p>



<pre class="wp-block-code"><code>    int rseg;
  /* Get PM pointer to text screen */
    DosMapRealSeg(0xb800,4000,&amp;rseg);
    textptr=MAKEP(rseg,0);</code></pre>



<p class="wp-block-paragraph">with the segment mapped, and a pointer to the segment, and now I can read/write directly into video RAM!</p>



<pre class="wp-block-code"><code>  /* save text screen */
    memcpy(textbuf,textptr,4000);</code></pre>



<p class="wp-block-paragraph">Just like that!</p>



<p class="wp-block-paragraph">I&#8217;m not sure what I screwed up on the VGA graphics, as it doesn&#8217;t work correctly, but oddly enough CGA does work.</p>



<p class="wp-block-paragraph">And now this is where everything goes off the rails.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="434" src="/wp-content/uploads/2024/01/sairen-running-on-emulation-1024x434.jpg" alt="" class="wp-image-13826" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-running-on-emulation-1024x434.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-running-on-emulation-300x127.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-running-on-emulation-768x326.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-running-on-emulation-500x212.jpg 500w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-running-on-emulation.jpg 1125w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Sairen running on Qemu &amp; DOSbox</figcaption></figure>



<p class="wp-block-paragraph">It ran fine on emulation.  So all excited I fired up the PS/2 and&#8230;.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/01/sarien-crash-on-ps2-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="/wp-content/uploads/2024/01/sarien-crash-on-ps2-1024x768.jpg" alt="" class="wp-image-13827" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/sarien-crash-on-ps2-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2024/01/sarien-crash-on-ps2-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/sarien-crash-on-ps2-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/sarien-crash-on-ps2-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2024/01/sarien-crash-on-ps2-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2024/01/sarien-crash-on-ps2-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">General protection fault</figcaption></figure>



<p class="wp-block-paragraph">This lead me to more fun in how on earth to debug this.  Of course Phar Lap 286 version 2.5 requires me to have Microsoft C/C++ 7.0.  I shamelessly <a href="https://www.pcjs.org/" target="_blank" rel="noreferrer noopener">downloaded a disk set from pcjs.org</a>.  You actually need to install it, to copy out the files required:</p>



<ul class="wp-block-list">
<li>28/05/1991 05:37 pm 47,216 CFIG286.EXE</li>



<li>26/11/1991 11:19 am 13,531 GORUN286.EXE</li>



<li>19/03/1992 04:00 am 42,720 shw0.dll</li>



<li>19/03/1992 04:00 am 105,039 eew0cxx.dll</li>



<li>19/03/1992 04:00 am 410,112 cvw4.exe</li>



<li>19/03/1992 04:00 am 91,118 eew0can.dll</li>



<li>19/03/1992 04:00 am 74,400 emw0w0.dll</li>



<li>03/08/1992 09:34 pm 2,649 INT33.DLL</li>



<li>03/08/1992 09:40 pm 2,718 MSG.DLL</li>



<li>03/08/1992 09:40 pm 1,702 NAMPIPES.DLL</li>



<li>03/08/1992 09:42 pm 2,073 NLS.DLL</li>



<li>03/08/1992 09:43 pm 5,184 PTRACE.DLL</li>



<li>03/08/1992 09:45 pm 2,320 SESMGR.DLL</li>



<li>03/08/1992 09:50 pm 1,508 WIN87EM.DLL</li>



<li>05/08/1992 12:04 am 3,100 KEYBOARD.DLL</li>



<li>05/08/1992 06:33 pm 270 TOOLHELP.DLL</li>



<li>14/08/1992 07:38 pm 7,891 KERNEL.DLL</li>



<li>14/08/1992 09:40 pm 14,545 USER.DLL</li>



<li>09/09/1992 10:59 pm 209,922 RUN286.EXE</li>



<li>09/09/1992 10:59 pm 229,046 RUN286D.EXE</li>



<li>14/09/1992 11:01 pm 14,024 TLW0LOC.DLL</li>



<li>17/09/1992 07:26 pm 34,152 CVP7.EXE</li>
</ul>



<p class="wp-block-paragraph">While CVP7 does come with Phar Lap, you have to run it via run286.  As you may have noticed there is a mixture of OS/2 and Windows DLL&#8217;s in here, as at this point CodeView was a Windows protected mode debugger.  The divorce was in full swing, and Microsoft C/C++ 7.0 had amputated the majority of OS/2 support.  I&#8217;m sure all this is in the manuals, <a href="https://virtuallyfun.com/2021/05/17/a-weird-ebay-interlude-on-the-way-to-extending-dos/" target="_blank" rel="noreferrer noopener">however all I have is disk images</a>.  There was no C 6.0a supported hosted debugger.  Maybe it&#8217;s in the v1/v2 of Phar Lap 286, but I only have 2.5.  There is version 3 files on the internet but I wanted to stick to 2.5.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/01/codeview-fail-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="/wp-content/uploads/2024/01/codeview-fail-1024x768.jpg" alt="" class="wp-image-13829" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/codeview-fail-1024x768.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2024/01/codeview-fail-300x225.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/codeview-fail-768x576.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/codeview-fail-1536x1152.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2024/01/codeview-fail-2048x1536.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2024/01/codeview-fail-400x300.jpg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Exception #13</figcaption></figure>



<p class="wp-block-paragraph">And this is all I got.  Yes, I did recompile with &#8216;/Od /Zi&#8217; along with using cvpack on the executable.  Yes, after copying the source to the PS/2 I was able to see the source line mapping, but it immediately jumps to assembly and GP Faults.  All this is fine, but IT RUNS UNDER EMULATION.</p>



<p class="wp-block-paragraph">What is going on?!</p>



<p class="wp-block-paragraph">I asked around on discord, and found someone willing to test on their 286.  It also crashed.  I tried VMware and .. it crashed too!  So did 86box!  Ok now we&#8217;re going somewhere!</p>



<p class="wp-block-paragraph">Since I had been using MS-DOS player to run the tools, I had an issue with the linker in C 6.0a crashing, so I tried the one from C/C++ 7.  It also didn&#8217;t work. I tried the one from Visual C++ 1.5.  It also failed.  Almost giving up on the entire thing, since I had copied the source code to the PS/2, I tried something really silly, I compiled it using the /qc or QuickC flag.  I wasn&#8217;t too worried about sizes as again I&#8217;m going to run in protected mode.  It took some 20-30 minutes to compile, as 10Mhz machines are not the best for building software in this modern age.  Much to my surprise it actually ran.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/01/sairen-286-running-on-ps2-scaled.jpg" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="768" height="1024" src="/wp-content/uploads/2024/01/sairen-286-running-on-ps2-768x1024.jpg" alt="" class="wp-image-13831" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-ps2-768x1024.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-ps2-225x300.jpg 225w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-ps2-1152x1536.jpg 1152w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-ps2-1536x2048.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-ps2-scaled.jpg 1920w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a><figcaption class="wp-element-caption">First run!</figcaption></figure>



<p class="wp-block-paragraph">This was kind of shocking as I&#8217;m not sure what I screwed up to not get this to work, but it worked!  I went ahead and changed the build to not use QuickC, but rebuild with /Os (Optimize for space).  It took about an hour.  And it too worked. </p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/01/sairen-286-running-on-vmware-os2.png"><img loading="lazy" decoding="async" width="633" height="482" src="/wp-content/uploads/2024/01/sairen-286-running-on-vmware-os2.png" alt="" class="wp-image-13833" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-vmware-os2.png 633w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-vmware-os2-300x228.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/sairen-286-running-on-vmware-os2-394x300.png 394w" sizes="auto, (max-width: 633px) 100vw, 633px" /></a><figcaption class="wp-element-caption">Phar Lap 286 running on OS/2 2.00 on VMware</figcaption></figure>



<p class="wp-block-paragraph">Shockingly it runs!  I&#8217;m not sure what on earth is up with the linking.  I did find it easier to just rebuild on Qemu since it can easily map into my source directory and copy everything over and re-build very quickly.</p>



<p class="wp-block-paragraph">Later I did try copying over compiled objects built using the MS-DOS Player, and linked them natively, and they ran fine.</p>



<p class="wp-block-paragraph">What is it with the LINK?!</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/01/86box-with-sairen-staker.png"><img loading="lazy" decoding="async" width="802" height="252" src="/wp-content/uploads/2024/01/86box-with-sairen-staker.png" alt="" class="wp-image-13835" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/86box-with-sairen-staker.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/01/86box-with-sairen-staker-300x94.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/86box-with-sairen-staker-768x241.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/86box-with-sairen-staker-500x157.png 500w" sizes="auto, (max-width: 802px) 100vw, 802px" /></a><figcaption class="wp-element-caption">It all fits!  Stacker rules!</figcaption></figure>



<p class="wp-block-paragraph">One weird thing on 86box is my pre-built machine I was using has a 5 1/4&#8243; 1.2Mb floppy for the A: drive.  It&#8217;s too small to fit MS-DOS, the game data and Phar Lap 286 all on there.  Although Stacker to the rescue and it fits!</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/01/loading-a-game.png"><img loading="lazy" decoding="async" width="631" height="405" src="/wp-content/uploads/2024/01/loading-a-game.png" alt="" class="wp-image-13834" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/loading-a-game.png 631w, https://virtuallyfun.com/wp-content/uploads/2024/01/loading-a-game-300x193.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/loading-a-game-467x300.png 467w" sizes="auto, (max-width: 631px) 100vw, 631px" /></a><figcaption class="wp-element-caption">It can save and even load those saves!</figcaption></figure>



<p class="wp-block-paragraph">I removed a lot of Unix quality of life, to make it more MS-DOS dumping everything in the same directory so you can save &amp; load games. </p>



<p class="wp-block-paragraph">Assuming anyone is interested in this at all, I have <a href="https://github.com/neozeed/sarien286" target="_blank" rel="noreferrer noopener">the source up on github</a>.  I&#8217;ll follow up with some performance videos showing how much slower real vs protected mode is, along with some binaries/demos.  A <a href="https://cdn.discordapp.com/attachments/712491207917568053/1201354868770754691/dos6-122.img?ex=65c983e8&amp;is=65b70ee8&amp;hm=b5c3b86dfcf091a69b6861d5c850a9099b545e969b799cf839327ab7215c4069&amp;">5 1/4&#8243; floppy disk image can be downloaded here for any suitable emulator</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/01/29/phar-laps-286-dos-extender-why-nobody-used-it-for-games/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title>Too many hard disks?  The smiley face boot crash</title>
		<link>https://virtuallyfun.com/2024/01/22/too-many-hard-disks-the-smiley-face-boot-crash/</link>
					<comments>https://virtuallyfun.com/2024/01/22/too-many-hard-disks-the-smiley-face-boot-crash/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 22 Jan 2024 12:42:59 +0000</pubDate>
				<category><![CDATA[80286]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[PS/2]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13813</guid>

					<description><![CDATA[I&#8217;d never seen this one before, but attempting to boot up PC-DOS 4.00 or 4.01 on my PS/2 model 60, with 7 virtual disks attached, all I get is a single smiley/happy face, ASCII 1 &#8216;☺&#8217; on boot. MS-DOS 5.00 &#8230; <a href="https://virtuallyfun.com/2024/01/22/too-many-hard-disks-the-smiley-face-boot-crash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/01/IMG_0538-scaled.jpeg"><img loading="lazy" decoding="async" width="1024" height="768" src="/wp-content/uploads/2024/01/IMG_0538-1024x768.jpeg" alt="smiley face crash" class="wp-image-13812" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0538-1024x768.jpeg 1024w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0538-300x225.jpeg 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0538-768x576.jpeg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0538-1536x1152.jpeg 1536w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0538-2048x1536.jpeg 2048w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0538-400x300.jpeg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/263a.png" alt="☺" class="wp-smiley" style="height: 1em; max-height: 1em;" />on boot</figcaption></figure>



<p class="wp-block-paragraph">I&#8217;d never seen this one before, but attempting to boot up <a href="https://winworldpc.com/download/0af03268-2c59-11e9-9b71-fa163e9022f0" target="_blank" rel="noreferrer noopener">PC-DOS 4.00</a> or <a href="https://winworldpc.com/download/95f1b03b-2c5c-11e9-9b71-fa163e9022f0" target="_blank" rel="noreferrer noopener">4.01</a> on my PS/2 model 60, with 7 virtual disks attached, all I get is a single smiley/happy face, ASCII 1 &#8216;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/263a.png" alt="☺" class="wp-smiley" style="height: 1em; max-height: 1em;" />&#8217; on boot.</p>



<p class="wp-block-paragraph">MS-DOS 5.00 doesn&#8217;t care.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/01/IMG_0546-scaled.jpeg"><img loading="lazy" decoding="async" width="1024" height="768" src="/wp-content/uploads/2024/01/IMG_0546-1024x768.jpeg" alt="all my SCSI virtual disks" class="wp-image-13811" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0546-1024x768.jpeg 1024w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0546-300x225.jpeg 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0546-768x576.jpeg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0546-1536x1152.jpeg 1536w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0546-2048x1536.jpeg 2048w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0546-400x300.jpeg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">too many disks!</figcaption></figure>



<p class="wp-block-paragraph">While trying the <a href="https://archive.org/details/apricot-dos-4-win30" target="_blank" rel="noreferrer noopener">Apricot MS-DOS 4 set I got on eBay</a>, it boots from floppy disks, crashes trying to boot from the hard disk, and trying to run fdisk just causes a divide by zero error.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/01/IMG_0607-scaled.jpeg"><img loading="lazy" decoding="async" width="1024" height="768" src="/wp-content/uploads/2024/01/IMG_0607-1024x768.jpeg" alt="run-time error R6003
- integer divide by 0" class="wp-image-13818" srcset="https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0607-1024x768.jpeg 1024w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0607-300x225.jpeg 300w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0607-768x576.jpeg 768w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0607-1536x1152.jpeg 1536w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0607-2048x1536.jpeg 2048w, https://virtuallyfun.com/wp-content/uploads/2024/01/IMG_0607-400x300.jpeg 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">&#8211; integer divide by 0</figcaption></figure>



<pre class="wp-block-code"><code>run-time error R6003
- integer divide by 0</code></pre>



<p class="wp-block-paragraph">I&#8217;m a bit reluctant to rip the whole machine apart as SD card extension cables don&#8217;t work for me which is even more annoying.  Didn&#8217;t people buy big machines and put in a LOT of disks to just run MS-DOS?  Even a Netware server still requires MS-DOS to boot.</p>



<p class="wp-block-paragraph">Is my 286 just too weird?!</p>



<p class="wp-block-paragraph">I&#8217;m not sure if it&#8217;s worth following up, but it is perplexing.  Maybe I need to rename all my disks, and stick with whatever was actually selling in 1987.  And sadly that means not fully loading it out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/01/22/too-many-hard-disks-the-smiley-face-boot-crash/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>86 DOS Version 0.11 found!</title>
		<link>https://virtuallyfun.com/2023/12/30/86-dos-version-0-11-found/</link>
					<comments>https://virtuallyfun.com/2023/12/30/86-dos-version-0-11-found/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sat, 30 Dec 2023 05:44:54 +0000</pubDate>
				<category><![CDATA[8086]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[SIMH]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13627</guid>

					<description><![CDATA[As of this moment, this is the oldest version of 86-DOS surviving in the wild. The prior version was 0.34. You can download a disk image over on archive.org. Thanks to F15sim for providing the uploads! Getting this running was &#8230; <a href="https://virtuallyfun.com/2023/12/30/86-dos-version-0-11-found/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://archive.org/details/86-dos-version-0.1-c-serial-11-original-disk"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2023/12/86-DOS-Version-0.1-C-Serial-11-ORIGINAL-DISK.jpg" alt="" class="wp-image-13628" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/86-DOS-Version-0.1-C-Serial-11-ORIGINAL-DISK.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/12/86-DOS-Version-0.1-C-Serial-11-ORIGINAL-DISK-300x300.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/12/86-DOS-Version-0.1-C-Serial-11-ORIGINAL-DISK-150x150.jpg 150w, https://virtuallyfun.com/wp-content/uploads/2023/12/86-DOS-Version-0.1-C-Serial-11-ORIGINAL-DISK-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">86-DOS on archive.org</figcaption></figure>



<p class="wp-block-paragraph">As of this moment, this is the oldest version of 86-DOS surviving in the wild.  The <a href="https://archive.org/details/86-dos-v-0.34-221-81-02-20">prior version was 0.34</a>.  You can download a <a href="https://archive.org/details/86-dos-version-0.1-c-serial-11-original-disk">disk image over on archive.org</a>.  Thanks to <a href="https://archive.org/details/@f15sim">F15sim </a>for providing the uploads!</p>



<p class="wp-block-paragraph">Getting this running was a little involved as I first had to build <a href="https://github.com/open-simh/simh">open-simh</a>, I just used the Windows Subsystem for Linux (WSL) to build the altairz80 emulator.  With the emulator built, you&#8217;ll need the BIOS 86mon.bin from schorn.ch as <a href="https://schorn.ch/cpm/zip/86dos.zip">86dos.zip</a>.  In the archive you&#8217;ll find 86-DOS 1.0 in the zip file.  Simply editing the file 86dos and specifying the 0.11 download (I renamed it as it&#8217;s too long and too many spaces!) and you&#8217;ll be able to run 86-DOS.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2023/12/dos-011.png"><img loading="lazy" decoding="async" width="979" height="512" src="https://virtuallyfun.com/wp-content/uploads/2023/12/dos-011.png" alt="" class="wp-image-13629" srcset="https://virtuallyfun.com/wp-content/uploads/2023/12/dos-011.png 979w, https://virtuallyfun.com/wp-content/uploads/2023/12/dos-011-300x157.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/12/dos-011-768x402.png 768w, https://virtuallyfun.com/wp-content/uploads/2023/12/dos-011-500x261.png 500w" sizes="auto, (max-width: 979px) 100vw, 979px" /></a><figcaption class="wp-element-caption">86-DOS booting up on open-simh</figcaption></figure>



<p class="wp-block-paragraph">There isn&#8217;t much on the diskette:</p>



<ul class="wp-block-list">
<li>COMMAND COM</li>



<li>RDCPM COM</li>



<li>HEX2BIN COM</li>



<li>ASM COM</li>



<li>TRANS COM</li>



<li>SYS COM</li>



<li>EDLIN COM</li>



<li>CHESS COM</li>



<li>CHESS DOC</li>
</ul>



<p class="wp-block-paragraph">There is a simple chess game, although I&#8217;m not much of a player..</p>



<pre class="wp-block-code"><code>A:chess

Choose your color (W/B): W
Ply depth (1-6): 1
E2-E4
e7 e5</code></pre>



<p class="wp-block-paragraph">There is no source code in this disk image, but there is some stuff on <a href="https://archive.org/details/86-dos-v-0.34-221-81-02-20">the 0.34 image</a>.</p>



<p class="wp-block-paragraph">Just a quick post in that middle of the night.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/12/30/86-dos-version-0-11-found/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Building MS-DOS 2.11</title>
		<link>https://virtuallyfun.com/2023/08/06/building-ms-dos-2-11/</link>
					<comments>https://virtuallyfun.com/2023/08/06/building-ms-dos-2-11/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 06 Aug 2023 17:15:29 +0000</pubDate>
				<category><![CDATA[assembly]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=13114</guid>

					<description><![CDATA[I thought I&#8217;d slap together some github thing with MS-DOS 2.11 that&#8217;s been made buildable thanks to a whole host of other smart people. The default stuff out there expects you to build it under MS-DOS using the long obsoleted &#8230; <a href="https://virtuallyfun.com/2023/08/06/building-ms-dos-2-11/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="https://virtuallyfun.com/wp-content/uploads/2023/08/dos-211-built-and-booted.png" alt="" class="wp-image-13115" srcset="https://virtuallyfun.com/wp-content/uploads/2023/08/dos-211-built-and-booted.png 722w, https://virtuallyfun.com/wp-content/uploads/2023/08/dos-211-built-and-booted-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2023/08/dos-211-built-and-booted-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">I thought I&#8217;d slap together some github thing with MS-DOS 2.11 that&#8217;s been made buildable thanks to a whole host of other smart people.  The default stuff out there expects you to build it under MS-DOS using the long obsoleted &#8216;append&#8217; utility which can add directories to a search path.  Instead I created a bunch of makefiles that take advantage of <a rel="noreferrer noopener" href="http://takeda-toshiya.my.coocan.jp/msdos/" target="_blank">MS-DOS Player</a>, and let you build from Windows.</p>



<p class="wp-block-paragraph"><a href="https://github.com/neozeed/dos211">dos211: just the MS-DOS 2.11 sources, I re-aranged stuff and made it (slightly) easier to rebuild on Windows. (github.com)</a></p>



<p class="wp-block-paragraph">building should be somewhat straightforward, assuming you have the ms-dos player in your path.  JUST MAKE SURE YOU UNZIP as TEXT mode.  If you are getting a million errors you probably have them in github&#8217;s favourite unix mode.</p>



<pre class="wp-block-code"><code>D:\temp\dos211-main\bios>..\tools\make
msdos ..\tools\masm ibmbio.asm ibmbio.obj NUL NUL
The Microsoft MACRO Assembler , Version 1.25
 Copyright (C) Microsoft Corp 1981,82,83


Warning Severe
Errors  Errors
0       0
msdos ..\tools\masm sysimes.asm sysimes.obj NUL NUL
The Microsoft MACRO Assembler , Version 1.25
 Copyright (C) Microsoft Corp 1981,82,83


Warning Severe
Errors  Errors
0       0
msdos ..\tools\masm sysinit.asm sysinit.obj NUL NUL
The Microsoft MACRO Assembler , Version 1.25
 Copyright (C) Microsoft Corp 1981,82,83

DOSSYM in Pass 2

Warning Severe
Errors  Errors
0       0
msdos ..\tools\LINK IBMBIO+SYSINIT+SYSIMES;

   Microsoft Object Linker V2.00
(C) Copyright 1982 by Microsoft Inc.

Warning: No STACK segment

There was 1 error detected.
msdos ..\tools\exe2bin.exe IBMBIO IBMBIO.COM &lt; 70.TXT
Fix-ups needed - base segment (hex): 70
del -f ibmbio.obj    sysimes.obj   sysinit.obj ibmbio.exe

D:\temp\dos211-main\bios></code></pre>



<p class="wp-block-paragraph">As an example building the bios by running make.  For the impatiend you can download <a rel="noreferrer noopener" href="https://github.com/neozeed/dos211/releases/download/v1_0_0/dos211.zip" target="_blank">dos211.zip</a>, which includes a bootable 360kb disk image, and a 32Mb vmdk!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/08/06/building-ms-dos-2-11/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bill Nye, the Microsoft C 6 guy</title>
		<link>https://virtuallyfun.com/2023/07/05/bill-nye-the-microsoft-c-6-guy/</link>
					<comments>https://virtuallyfun.com/2023/07/05/bill-nye-the-microsoft-c-6-guy/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 05 Jul 2023 12:00:19 +0000</pubDate>
				<category><![CDATA[microsoft]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[OS/2]]></category>
		<category><![CDATA[OS/2 1.2]]></category>
		<category><![CDATA[videos]]></category>
		<guid isPermaLink="false">http://virtuallyfun.com/?p=12948</guid>

					<description><![CDATA[So, a while back I had found this up on eBay. As much as I&#8217;m trying not to buy old stuff I just couldn&#8217;t resist. And the price was just too good, I&#8217;d just have to forego going out to &#8230; <a href="https://virtuallyfun.com/2023/07/05/bill-nye-the-microsoft-c-6-guy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://archive.org/details/microsoft_c_600-3.5disks"><img loading="lazy" decoding="async" width="1024" height="960" src="https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502-1024x960.jpg" alt="" class="wp-image-12949" srcset="https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502-1024x960.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502-300x281.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502-768x720.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502-1536x1440.jpg 1536w, https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502-2048x1920.jpg 2048w, https://virtuallyfun.com/wp-content/uploads/2023/07/IMG_6502-320x300.jpg 320w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">So, a while back I had found this up on eBay.  As much as I&#8217;m trying not to buy old stuff I just couldn&#8217;t resist.  And the price was just too good, I&#8217;d just have to forego going out to dinner for a week.  </p>



<p class="wp-block-paragraph">While looking around for something on Microsoft C, I stumbled upon <a rel="noreferrer noopener" href="https://www.youtube.com/watch?v=dirjtPAlZPM" target="_blank">this promo video for Microsoft C 6</a>. Naturally I had to share it!</p>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/dirjtPAlZPM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<p class="wp-block-paragraph">I had been using it to mess around with a poorly <a rel="noreferrer noopener" href="https://github.com/neozeed/hack-1.03" target="_blank">ported Hack 1.03</a>, although I haven&#8217;t done much with that in a while.</p>



<p class="wp-block-paragraph">One thing is for sure, that the old MS-DOS memory limits were becoming more and more of an issue.  Sadly, they didn&#8217;t include the <a rel="noreferrer noopener" href="https://archive.org/details/QuickCforWindows/" target="_blank">QuickC for Windows</a> product which had the benefit of building in protected mode for access to far more memory, nor did they include any DOS Extender to even allow larger runtime access.  Obviously you were expected to run this under MSOS/2 1.2 in this era.  Although targeting OS/2 protected mode allowed easier integration with PharLap&#8217;s 286 based DOS Extender.</p>



<p class="wp-block-paragraph">Since this was the OS/2 era, the <a rel="noreferrer noopener" href="https://archive.org/details/winsdk-30-damaged" target="_blank">Windows 3.0 SDK</a> was a separate product.</p>



<p class="wp-block-paragraph">There was another release, the <a href="https://archive.org/details/Microsoft_c_60ax" target="_blank" rel="noreferrer noopener">6.00ax version</a> which included a DOS Extender, allowing the compiler to access 16MB of ram, as reported <a href="https://virtuallyfun.com/wp-content/uploads/2023/07/microsoft-c-and-windows-sdk-12.png" target="_blank" rel="noreferrer noopener">in this leaflet</a> in a combined Microsoft C &amp; Windows 3.0 SDK package.</p>



<p class="wp-block-paragraph">The followup Microsoft C/C++ 7.0 addressed many of these shortcomings, but of course famously removed targeting OS/2.  There was a later update that at least provided OS/2 compiled version of the binaries allowing you to run it under OS/2. I never tried to see if it could be paired with the OS/2 SDK, and manually made to generate OS/2 executables.  I suspect not.</p>



<p class="wp-block-paragraph">The larger thing is that Microsoft C 386 remained a &#8216;hidden&#8217; product on Xenix, and the 32bit OS/2 and NTOS/2 betas.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/07/05/bill-nye-the-microsoft-c-6-guy/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
