<?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>x68000 &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/x68000/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Fri, 21 Jun 2024 16:16:47 +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>x68000 DooM confirmed to work on real hardware!</title>
		<link>https://virtuallyfun.com/2016/10/14/x68000-doom-confirmed-to-work-on-real-hardware/</link>
					<comments>https://virtuallyfun.com/2016/10/14/x68000-doom-confirmed-to-work-on-real-hardware/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 14 Oct 2016 11:26:21 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[Japan]]></category>
		<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=6495</guid>

					<description><![CDATA[Really, all the hard work was byÂ neko68k, I just mashed enough old GCC to get something to do something. The twitter stream about it is here, along with a blog post here.]]></description>
										<content:encoded><![CDATA[<p><iframe src="https://www.youtube.com/embed/TzLKMP9yiOc" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Really, all the hard work was byÂ neko68k, I just mashed enough old GCC to get something to do something.</p>
<p><a href="https://twitter.com/pipixvi/status/785991914306674688">The twitter stream about it is here</a>, <a href="http://www.pipitan.com/sb/sb.cgi?eid=3619">along with a blog post here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2016/10/14/x68000-doom-confirmed-to-work-on-real-hardware/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Porting DooM to the x68000</title>
		<link>https://virtuallyfun.com/2016/09/11/porting-doom-to-the-x68000/</link>
					<comments>https://virtuallyfun.com/2016/09/11/porting-doom-to-the-x68000/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 11 Sep 2016 02:43:24 +0000</pubDate>
				<category><![CDATA[68000]]></category>
		<category><![CDATA[68020]]></category>
		<category><![CDATA[68030]]></category>
		<category><![CDATA[cross compiler]]></category>
		<category><![CDATA[doom]]></category>
		<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=6396</guid>

					<description><![CDATA[Getting started DooM is without a doubt one of the most popular PC games of all time. Â And thanks to it being written in C is also an incredibly portable game. Â One platform that mysteriously was lacking DooM was the &#8230; <a href="https://virtuallyfun.com/2016/09/11/porting-doom-to-the-x68000/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<h1>Getting started</h1>
<p>DooM is without a doubt one of the most popular PC games of all time. Â And thanks to it being written in C is also an incredibly portable game. Â One platform that mysteriously was lacking DooM was the SHARP x68000.</p>
<p>After a bored day of playing with the source to <a href="https://virtuallyfun.com/2016/08/29/marikos-x68000-gcc-1-42-on-windows/">Mariko&#8217;s GCC 1.42 / 1.30 that targets the x68000</a>, I thought I would take a stab at trying to compile DooM. Â Since I&#8217;m using such an ancient version of GCC the first stumbling block is that DooM is FULL of C++ style comments, which older K&amp;R &amp; ansi based compilers of the late 1980&#8217;s simply cannot handle. Â So the first phase was to convert all the comments.</p>
<p>In order to convert the comments, I came across this great tool, <a href="https://sourceforge.net/projects/uncrustify/">uncrustify</a>. Â The pain is that it doesn&#8217;t seem to take wildcards, but you can use make to have it do your work for you, or just a batch file&#8230;</p>
<p style="padding-left: 30px;"><code>uncrustify.exe --replace -c 1.cfg cl_main.h</code></p>
<p>you get the idea.</p>
<p>The key thing is the configuration file that tells uncrustify what to do. Â To convert C++ comments to C is quite simply:</p>
<p style="padding-left: 30px;">cmt_cpp_to_c = true</p>
<p>And away we go. Â Having learned the <a href="https://virtuallyfun.com/2015/06/02/porting-quake-ii-to-ms-dos-pt1/">&#8216;null&#8217; lesson of Quake 2</a> the hard way, I started out with a working copy from Windows, via <a href="https://virtuallyfun.com/2016/05/06/gcc-1-40-on-windows/">GCC 1.40 for Windows/RSXNT</a>. Â I figured that by having a &#8216;known good&#8217; build with the a very close compiler level would be a good start as I don&#8217;t want to fight too much with the compiler. Â After it was running with minimal changes, it was time to start the real fun.</p>
<h2>Starting the actual port aka platform issues</h2>
<p>The first error I hit was:</p>
<p style="padding-left: 30px;">Error: Couldn&#8217;t realloc lumpinfo</p>
<p>For some reason the SHARP/Hudson LIBC has issues doing a realloc. Â I have no idea why. Â Over onÂ <a href="http://nfggames.com/">nfggames</a>Â Neko68k had mentioned that he had a disk image with a working version of GCC, that uses different includes/libraries that was able to get further. Â I wasted some time by trying to bypass the Sharp LIBC malloc function by calling the HumanOS&#8217;s malloc directly which did get further but ran into issues when switching from usermode to supervisor mode to directly access the hardware. Â Once when he shared his disk image, I was able to see how his GCC setup worked, and more importantly linked, so I could alter the GCC cross compiler I was using, and get much further in terms of progress. Â I could then get from failing malloc to this:</p>
<div id="attachment_6397" style="width: 836px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-6397" class="size-full wp-image-6397" src="https://virtuallyfun.com/wp-content/uploads/2016/09/doom-on-x68000-crashing.png" alt="startup errors" width="826" height="651" /><p id="caption-attachment-6397" class="wp-caption-text">startup errors</p></div>
<p>And from there after trying different assemblers, flags, and all kinds of other things we could finally get null DooM running on the x68000 via 68030 emulation on XM6 TypeG.</p>
<div id="attachment_6398" style="width: 836px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-6398" class="size-full wp-image-6398" src="https://virtuallyfun.com/wp-content/uploads/2016/09/NULL-DooM-running-on-XM6-TypeG.png" alt="null DooM running on the x68000" width="826" height="651" /><p id="caption-attachment-6398" class="wp-caption-text">null DooM running on the x68000</p></div>
<h4>DooM comes to life</h4>
<p>From there, Neko68k was able to do something amazing, add in system support! Â Which to be honest would have taken me forever to do, I was more impressed that I was even able to get the null version running, but Neko68k blew me away with this:</p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/WHrFUizISPs" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>There is no correct palette setup at this point, there is all kinds of issues but you can see the startup logo being painted!</p>
<p>Then with a lot of improvements, and an added keyboard driver it was starting to look like DooM!</p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/GpD0ucnUIkI" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>And then Neko68k had a major breakthrough with the video, timer and keyboard, and we now have a playable port!</p>
<h5>Issues while cross compiling</h5>
<p>Around this time I had noticed that when I built a cross compiled version the video for me was garbled. Â After some investigating it turns out that m_swap was not being compiled correctly but rather the endian order was being reversed!</p>
<p style="padding-left: 30px;">Â .dc.l $00000000,$40f00000</p>
<p>instead of:</p>
<p style="padding-left: 30px;">.dc.l $40f00000,$00000000</p>
<p>I tried re-building, re-configuring my host setup, and I still had the same issue. Â I tried downloading GCC 1.42 and building an i386 SYSV to AT&amp;T 3b1 cross compiler as it too is 68000 based, and I got the same issue. Â Maybe it&#8217;s a bug in GCC 1.x cross compilers? Â I don&#8217;t know, but since the procedure is small enough, it was easier to just have the native GCC produce an assembly version which I just assemble and link without issue.</p>
<p>Behold! DooM on the x68030!</p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/gcVwe-8OouI" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Yes, there is no audio, but wow it&#8217;s playable! Â I do need to map the keyboard better in the emulator, but the key layout in the source is fine.</p>
<h6>Downloads</h6>
<p>For anyone who cares you can follow more of the porting adventure here:</p>
<p><a href="http://nfggames.com/forum2/index.php?topic=6140.0">http://nfggames.com/forum2/index.php?topic=6140.0</a></p>
<p>Source &amp; binaries are here:</p>
<p><a href="https://sourceforge.net/projects/x68000-doom/">https://sourceforge.net/projects/x68000-doom/</a></p>
<p>And my cross compiler toolchain is here:</p>
<p><a href="https://sourceforge.net/projects/gcc-1-30-x68000/">https://sourceforge.net/projects/gcc-1-30-x68000/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2016/09/11/porting-doom-to-the-x68000/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>x68000 sharp C compiler &#038; floating point</title>
		<link>https://virtuallyfun.com/2016/08/30/x68000-sharp-c-compiler-floating-point/</link>
					<comments>https://virtuallyfun.com/2016/08/30/x68000-sharp-c-compiler-floating-point/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 29 Aug 2016 18:13:59 +0000</pubDate>
				<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=6380</guid>

					<description><![CDATA[Undefined symbol(s) in SRAND.O __SRAND Undefined symbol(s) in ECVT.O __ECVT Undefined symbol(s) in FCVT.O __FCVT I finally figured out what these are from.. Â The Sharp/Hudson floating point libraries. Link withÂ FLOATEML.L, and the problem is solved. DOH! Â Now to build libgcc.a &#8230; <a href="https://virtuallyfun.com/2016/08/30/x68000-sharp-c-compiler-floating-point/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p style="padding-left: 30px;">Undefined symbol(s) in SRAND.O<br />
__SRAND</p>
<p style="padding-left: 30px;">Undefined symbol(s) in ECVT.O<br />
__ECVT</p>
<p style="padding-left: 30px;">Undefined symbol(s) in FCVT.O<br />
__FCVT</p>
<p>I finally figured out what these are from.. Â The Sharp/Hudson floating point libraries. Link withÂ FLOATEML.L, and the problem is solved.</p>
<p>DOH! Â Now to build libgcc.a without GCC &#8230;.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2016/08/30/x68000-sharp-c-compiler-floating-point/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mariko&#8217;s x68000 GCC 1.42 on Windows</title>
		<link>https://virtuallyfun.com/2016/08/29/marikos-x68000-gcc-1-42-on-windows/</link>
					<comments>https://virtuallyfun.com/2016/08/29/marikos-x68000-gcc-1-42-on-windows/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 29 Aug 2016 07:08:37 +0000</pubDate>
				<category><![CDATA[68000]]></category>
		<category><![CDATA[cross compiler]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=6378</guid>

					<description><![CDATA[Yes, I probably need a better hobby. D:\proj\142\gcc-1.42_x68000&#62;gccnew.exe -v -c x.c gcc version 1.30 Tool#2(X680x0) hcpp.exe -v -undef -D__GNUC__ -Dmc68000 -Dhuman68k -DHUMAN68K -DMARIKO_CC -Dmariko_cc -D__mc68000__ -D__human68k__ -D__HUMAN68K__ -D__MARIKO_CC__ -D__mariko_cc__ x.c C:\Users\jason\AppData\Local\Temp\x.cpp GNU CPP version 1.30 Tool#2(X680x0) hcc1.exe C:\Users\jason\AppData\Local\Temp\x.cpp -quiet -dumpbase &#8230; <a href="https://virtuallyfun.com/2016/08/29/marikos-x68000-gcc-1-42-on-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Yes, I probably need a better hobby.</p>
<blockquote><p>D:\proj\142\gcc-1.42_x68000&gt;gccnew.exe -v -c x.c<br />
gcc version 1.30 Tool#2(X680x0)<br />
hcpp.exe -v -undef -D__GNUC__ -Dmc68000 -Dhuman68k -DHUMAN68K -DMARIKO_CC -Dmariko_cc -D__mc68000__ -D__human68k__ -D__HUMAN68K__ -D__MARIKO_CC__ -D__mariko_cc__ x.c C:\Users\jason\AppData\Local\Temp\x.cpp<br />
GNU CPP version 1.30 Tool#2(X680x0)<br />
hcc1.exe C:\Users\jason\AppData\Local\Temp\x.cpp -quiet -dumpbase x.c -fhuman -version -o C:\Users\jason\AppData\Local\Temp\x.s<br />
GNU C version 1.30 Tool#2(X680x0) (HAS Ver 3.XX syntax)<br />
compiled by GNU C version 5.1.0.<br />
default target switches:<br />
x.c: 5: Message:Ã¬â”¼Ã´KÃ«â•—Ã©â•Ã¬sÃ©Ï†Ã©Î©Ã©â”€Ã©Ã³Ã©â–„Ã©â•£Ã©Â±<br />
run68 has.x -e -w -u -i . C:\Users\jason\AppData\Local\Temp\x.s -o x.o<br />
D:\proj\142\gcc-1.42_x68000&gt;run68 ..\hlkb\hlk301.x x.o CLIB.L<br />
D:\proj\142\gcc-1.42_x68000&gt;run68 x<br />
Hello x68000 from GCC 1.30 Tool#2(X680x0)!<br />
D:\proj\142\gcc-1.42_x68000&gt;ver</p>
<p>Microsoft Windows [Version 10.0.10586]</p></blockquote>
<p>I&#8217;ve gotten the compiler to build natively as a win32, however the assembler &amp; linker are x68000 programs that I run via <a href="https://sourceforge.net/projects/run68/">run68</a>. Â libgcc.a is missing so there is no floating point support at all. Â I have to figure out how to generate it. Â Right now it&#8217;s using theÂ SHARP/Hudson libraries on theÂ <a href="http://retropc.net/x68000/software/sharp/xc21/">C Compiler PRO-68K ver2.1 disks</a>.</p>
<p>I don&#8217;t think this will be of value to anyone, but for the hell of it, you can download my incredibly rough port here.</p>
<p><a href="http://vpsland.superglobalmegacorp.com/install/x68000/gcc142_x68000.7z"><del>gcc142_x68000.7z</del></a> You really want this one instead: <a href="https://sourceforge.net/projects/gcc-1-30-x68000/">gcc-1-30-x68000</a></p>
<p>Linking doesn&#8217;t work by default, so you have to manually link, as what I did above.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2016/08/29/marikos-x68000-gcc-1-42-on-windows/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>So this could have gone better</title>
		<link>https://virtuallyfun.com/2016/06/16/so-this-could-have-gone-better/</link>
					<comments>https://virtuallyfun.com/2016/06/16/so-this-could-have-gone-better/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 16 Jun 2016 14:38:03 +0000</pubDate>
				<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=6265</guid>

					<description><![CDATA[I guess the bad power supplies really are quite bad. So now I have a project instead of something to do something. Â I guess it doesn&#8217;t matter, I don&#8217;t have a keyboard, video cable, diskettes or anything.]]></description>
										<content:encoded><![CDATA[<p><iframe loading="lazy" src="https://www.youtube.com/embed/t_FsrXIbQwE" width="420" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>I guess the bad power supplies really are quite bad.</p>
<p>So now I have a project instead of something to do something. Â I guess it doesn&#8217;t matter, I don&#8217;t have a keyboard, video cable, diskettes or anything.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2016/06/16/so-this-could-have-gone-better/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Xkeropi v0.65</title>
		<link>https://virtuallyfun.com/2016/06/06/xkeropi-v0-65/</link>
					<comments>https://virtuallyfun.com/2016/06/06/xkeropi-v0-65/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 06 Jun 2016 14:14:31 +0000</pubDate>
				<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=6232</guid>

					<description><![CDATA[Sigh so much I wanted to do with this&#8230;. It&#8217;s a x68000 emulator. Â What made me jump was looking was the license on github: /* * Copyright (c) 2003 NONAKA Kimihiro * All rights reserved. * * Redistribution and use &#8230; <a href="https://virtuallyfun.com/2016/06/06/xkeropi-v0-65/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Sigh so much I wanted to do with this&#8230;.</p>
<div id="attachment_6236" style="width: 783px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2016/06/keropi-splash.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6236" class="size-full wp-image-6236" src="https://virtuallyfun.com/wp-content/uploads/2016/06/keropi-splash.png" alt="Splash frog" width="773" height="583" /></a><p id="caption-attachment-6236" class="wp-caption-text">Splash frog</p></div>
<div id="attachment_6233" style="width: 653px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2016/06/xKeropi-v0.65-running-on-24bit-display.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6233" class="size-full wp-image-6233" src="https://virtuallyfun.com/wp-content/uploads/2016/06/xKeropi-v0.65-running-on-24bit-display.png" alt="Keropi on the wrong bit depth" width="643" height="580" /></a><p id="caption-attachment-6233" class="wp-caption-text">Keropi on the wrong bit depth</p></div>
<p>It&#8217;s a x68000 emulator. Â What made me jump was looking was <a href="https://github.com/nonakap/xkeropi/blob/master/COPYING">the license on github</a>:</p>
<p style="padding-left: 30px;">/*<br />
* Copyright (c) 2003 NONAKA Kimihiro<br />
* All rights reserved.<br />
*<br />
* Redistribution and use in source and binary forms, with or without<br />
* modification, are permitted provided that the following conditions<br />
* are met:<br />
* 1. Redistributions of source code must retain the above copyright<br />
* notice, this list of conditions and the following disclaimer.<br />
* 2. Redistributions in binary form must reproduce the above copyright<br />
* notice, this list of conditions and the following disclaimer in the<br />
* documentation and/or other materials provided with the distribution.<br />
* 3. All advertising materials mentioning features or use of this software<br />
* must display the following acknowledgment:<br />
* This product includes software developed by NONAKA Kimihiro.<br />
* 4. The name of the author may not be used to endorse or promote products<br />
* derived from this software without specific prior written permission.<br />
*<br />
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR &#8220;AS IS&#8221; AND ANY EXPRESS OR<br />
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES<br />
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.<br />
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,<br />
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT<br />
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,<br />
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT<br />
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />
*/</p>
<p>Which is the normal BSD license&#8230; But the other <a href="http://www.zophar.net/x68000/keropi-winx68k-.html">v0.65 source code</a>Â makes no mention. Â Oh well, I guess it&#8217;s really not BSD licensed then? Â I need to keep banging on system16 anyways&#8230;</p>
<p>But in this case the graphics are for GTK of all things, and are hard coded to only run on 15/16bit displays. Â SO by removing the requirement I got it to display something. Â Also the <a href="http://www.retropc.net/x68000/software/sharp/x68bios/index.htm">IPL roms</a> need to be in $HOME/.keropi . Â It plays <a href="http://www.emulatronia.com/reportajes/x68000/x68-rtype.htm">R-Type</a>Â well enough, but at the same time so does MAME.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2016/06/06/xkeropi-v0-65/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NetHack 1.3d on the x68000</title>
		<link>https://virtuallyfun.com/2014/12/23/nethack-1-3d-on-the-x68000/</link>
					<comments>https://virtuallyfun.com/2014/12/23/nethack-1-3d-on-the-x68000/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 22 Dec 2014 17:22:04 +0000</pubDate>
				<category><![CDATA[68000]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[nethack]]></category>
		<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=4897</guid>

					<description><![CDATA[Ok, I know&#8230; why? But it&#8217;s more of a why not! So I figured since I&#8217;ve had major issues trying to get DOOM to run, I&#8217;d try something bigger, like NetHack. Â I figured its a good fit, it&#8217;s all ASCII &#8230; <a href="https://virtuallyfun.com/2014/12/23/nethack-1-3d-on-the-x68000/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Ok, I know&#8230; why? But it&#8217;s more of a why not!</p>
<div id="attachment_4898" style="width: 850px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2014/12/nethack-on-x68000.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4898" class="size-full wp-image-4898" src="https://virtuallyfun.com/wp-content/uploads/2014/12/nethack-on-x68000.png" alt="NetHack" width="840" height="657" /></a><p id="caption-attachment-4898" class="wp-caption-text">NetHack</p></div>
<p>So I figured since I&#8217;ve had major issues trying to get DOOM to run, I&#8217;d try something bigger, like NetHack. Â I figured its a good fit, it&#8217;s all ASCII based anyways, so how complicated can it be?</p>
<p>Actually it turned out to not be that complicated. Â Thankfully having both run68&#8217;s source and NetHack source I was able to adapt enough of the system stuff to get it running. I decided to use <a href="http://sha-bang.de/nethack.html">this build of NetHack 1.3d</a> that has been updated to compile with modern compilers, since the <a href="https://virtuallyfun.com/?p=4769">cross tools use GCC 4.6.2</a>. Â <a href="http://nethackwiki.com/wiki/NetHack_1.3d">NetHack 1.3d</a> synchronized PC hack, and UNIX based NetHack enough that I could start to build under MS-DOS, and then re-target it, as Human68k and MS-DOS share a lot of features (although Human68k has support for tasks, and shared memory. Â It&#8217;s more like OS/2 although no memory protection&#8230; ).</p>
<p>I&#8217;ve gotten it to the point where you can save, load and quit. Â Oddly enough the ANSI support in Human68k isn&#8217;t as good as <a href="http://adoxa.altervista.org/ansicon/">ansicon</a> so it actually runs better on run68.</p>
<p>So my next step will be to figure out more of the console controls on Human68k, and remove the ANSI support.</p>
<p>Ideally I&#8217;d love to figure out how to talk to the sound drivers on the x68000. Â Add some music. Maybe sound effects, and graphics?</p>
<p>So for anyone who cares, <a href="http://vpsland.superglobalmegacorp.com/install/x68000/nethack13dr-x68000.7z">my source directory, binaries and a xm6 disk image is all here</a>. I&#8217;ve seen in the cvs tree on sourceforge that run68 has some support for BSD. Â That&#8217;d be another interesting thing to add, common exe&#8217;s between windows/linux. Â But console access first!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2014/12/23/nethack-1-3d-on-the-x68000/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Tracking down the InfoTaskForce from 1987.</title>
		<link>https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/</link>
					<comments>https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 15 Dec 2014 04:55:58 +0000</pubDate>
				<category><![CDATA[68000]]></category>
		<category><![CDATA[cross compiler]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[Infocom]]></category>
		<category><![CDATA[syscall emulation]]></category>
		<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=4879</guid>

					<description><![CDATA[So like all zork obsessed people (I really should get help or something), I was trying to build a z-machine interpreter for the x68000, using Lydux&#8217;sÂ cross GCC compiler. Â And it was honestly looking like a LOT of work in the &#8230; <a href="https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>So like all zork obsessed people (I really should get help or something), I was trying to build a z-machine interpreter for the x68000, using <a href="https://github.com/Lydux">Lydux&#8217;s</a>Â <a href="https://virtuallyfun.com/?p=4769">cross GCC compiler</a>. Â And it was honestly looking like a LOT of work in the IO department. Â Thinking that the older versions were more simpler, I went looking for the oldest open Z-machine,Â called the &#8220;The InfoTaskForce Infocom interpreter&#8221;, released by theÂ <a href="http://en.wikipedia.org/wiki/InfoTaskForce">InfoTaskForce</a>. Â Unfortunately I can only find version 4.01 searching for the source code. Â Which still looks too complicated. Â But looking the history file, the project started back in 1987. Â So with that to go on a new google search got me this:</p>
<p style="padding-left: 30px;"><a href="http://www.planetemu.net/rom/tandy-radio-shack-trs-80-model-1/infocom-adventure-executor-source-files-1987-infotaskforce-c">Infocom Adventure Executor Source Files (1987)(InfoTaskForce)[C].zip</a></p>
<p>From an TRS-80 dump of all things. Â I don&#8217;t know what version this is other than the brief copyright mention:</p>
<p style="padding-left: 30px;">/* (C)opyright 1987 InfoTaskforce. */</p>
<p>All of the files are dated 4/12/2001 so they obviously aren&#8217;t original.Â And the version string is:</p>
<p style="padding-left: 30px;">echo ( &#8220;Interpreter: C Version 1.0\n&#8221; ) ;</p>
<p>So assuming this is correct, from the 4.01 history file:</p>
<p style="padding-left: 30px;">REV_E &#8211; June 25, 1987.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p style="padding-left: 30px;">REV_E is the first major overhaul to the interpreter.</p>
<p style="padding-left: 30px;">* The source is now significantly lint free.</p>
<p style="padding-left: 30px;">* TERMCAP support has now been added [#define TERMCAP option].</p>
<p style="padding-left: 30px;">* Screen paging and word wrap has been added, along with a new<br />
command line option which disables screen paging (-p).</p>
<p style="padding-left: 30px;">* Random number generator seeding using time () added [#define<br />
TIMESEED option].</p>
<p style="padding-left: 30px;">* Attributes in the object list are listed as bits.</p>
<p style="padding-left: 30px;">* A debuging version can now be produced as an inbuilt options<br />
[#define DEBUG option].</p>
<p style="padding-left: 30px;">* The coded requirement that 25k is always free in the system can<br />
now be removed [#define ALLOCALL option].</p>
<p style="padding-left: 30px;">* A new command line option was added to print the object/room list<br />
as a tree (-r).</p>
<p style="padding-left: 30px;">* interp.c has been re-written to improve efficiency [large<br />
switches have been replaced with arrays of pointers to funcions].</p>
<p style="padding-left: 30px;">There are now 14 machines on the porting list:</p>
<p style="padding-left: 30px;">Machine C Compiler Operational Porting details</p>
<p style="padding-left: 30px;">128K Apple<br />
Macintosh Aztec C Version 1.06F 18/05/87</p>
<p style="padding-left: 30px;">128K Apple<br />
Macintosh Lightspeed C 2.01 29/05/87 Use &#8220;rb&#8221; &amp; &#8220;wb&#8221; in all fopen()s</p>
<p style="padding-left: 30px;">IBM PC/AT Microsoft C 4 30/05/87 Link with binmode.obj</p>
<p style="padding-left: 30px;">DEC VAX 11/780 UNIX V7 cc 01/06/87</p>
<p style="padding-left: 30px;">HP-9000 HP-UX cc 02/06/87</p>
<p style="padding-left: 30px;">gould cc 03/06/87</p>
<p style="padding-left: 30px;">Amiga Aztec C 04/06/87</p>
<p style="padding-left: 30px;">Pyramid 9810 cc 04/06/87</p>
<p style="padding-left: 30px;">Pyramid 90x cc 04/06/87</p>
<p style="padding-left: 30px;">Osiris cc 05/06/87</p>
<p style="padding-left: 30px;">DEC PDP-11/? UNIX V? cc 07/06/87 EXTENSIVE<br />
mods to fix problems with signed chars.</p>
<p style="padding-left: 30px;">VAX VMS cc 16/06/87 Add #define<br />
times ttmes to fix multiply defined symbol problem. [infocom.h]</p>
<p style="padding-left: 30px;">Version 1.00 &#8211; August 17, 1987.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p style="padding-left: 30px;">The REV_C interpreter of June 2, 1987 was officially archived as<br />
Version 1.00 on August 17, 1987.</p>
<p>So this means it&#8217;s very 16bit &amp; 32bit friendly, especially on BIG endian machines like the 68000 processor.</p>
<p>Luckily this older version is pretty trivial to compile, and get running. Â But I was over thinking the build process and decided to strip the executable as GCC would kick out a 500kb file, which objcopy would extract a 81kb executable. Â Stripping it brought the size down to a 50kb executable but it wouldn&#8217;t run in either xm6 or run68. Â I ended up going in circles for a while trying to find fault in what is broken where until I manually compiled the interpreter, and omitted the strip step and suddenly had a working interpreter.</p>
<p>Now there is one issue, saving doesn&#8217;t work. Â Something in the libc is having issues using fopen with a file to write. Â Reading works perfectly fine though. Â So to fix it, I went ahead and redid the save feature to use the HumanOS native _open/_write/_close functions and I&#8217;m able to now save &amp; restore a game.</p>
<p style="padding-left: 30px;">D:\proj\run68\test&gt;run68.exe infocom.X minizork.z3<br />
MINI-ZORK I: The Great Underground Empire<br />
Copyright (c) 1988 Infocom, Inc. All rights reserved.<br />
ZORK is a registered trademark of Infocom, Inc.<br />
Release 34 / Serial number 871124</p>
<p style="padding-left: 30px;">West of House<br />
You are standing in an open field west of a white house, with a boarded front<br />
door. You could circle the house to the north or south.<br />
There is a small mailbox here.</p>
<p style="padding-left: 30px;">West of House Score: 0/0<br />
&gt;restore<br />
Filename: mz1.sav<br />
Ok.</p>
<p style="padding-left: 30px;">Living Room Score: 10/19<br />
&gt;inventory<br />
You have:<br />
A nasty knife<br />
A rope<br />
A sword<br />
A brass lantern (providing light)<br />
A brown sack<br />
A glass bottle<br />
The glass bottle contains:<br />
A quantity of water<br />
A leaflet</p>
<p style="padding-left: 30px;">Living Room Score: 10/20<br />
&gt;</p>
<p>In this process I&#8217;ve also managed to build run68, and verified that it&#8217;s operating correctly, as both run68 and XM6 both failed to write to a file with fopen, and both work using the native calls.</p>
<div id="attachment_4882" style="width: 850px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2014/12/planetfall-on-x68000a.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4882" class="size-full wp-image-4882" src="https://virtuallyfun.com/wp-content/uploads/2014/12/planetfall-on-x68000a.png" alt="Planetfall on a x68000" width="840" height="657" /></a><p id="caption-attachment-4882" class="wp-caption-text">Planetfall on a x68000</p></div>
<p>I&#8217;m sure most people won&#8217;t care but I think it&#8217;s great having the ability to run a GCC generated C program in a relatively small interpreter.</p>
<p>If anyone cares, <a href="http://vpsland.superglobalmegacorp.com/install/x68000/run68-infocom-gcc-x68000dev.win32.7z">here is my updated cross compiler + run68 source along with tweaked Info Task Force 1.0 source</a>. Â Or a <a href="http://vpsland.superglobalmegacorp.com/install/x68000/infocom.xdf.7z">disk image</a> that XM6 can boot up, and run some demo programs from Infocom of ages ago.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2014/12/15/tracking-down-the-infotaskforce-from-1987/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Run68 Human-68k emulator</title>
		<link>https://virtuallyfun.com/2014/12/01/run68-human-68k-emulator/</link>
					<comments>https://virtuallyfun.com/2014/12/01/run68-human-68k-emulator/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 30 Nov 2014 16:06:15 +0000</pubDate>
				<category><![CDATA[68000]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=4792</guid>

					<description><![CDATA[I found this one by accident, but it&#8217;s more like DOSBox in that it runs 68000 executables with an emulated processor and emulated OS.  No SHARP ROMs or HumanOS diskettes needed.  It&#8217;s strictly text mode, but it&#8217;s enough to run &#8230; <a href="https://virtuallyfun.com/2014/12/01/run68-human-68k-emulator/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>I found this one by accident, but it&#8217;s more like DOSBox in that it runs 68000 executables with an emulated processor and emulated OS.  No SHARP ROMs or HumanOS diskettes needed.  It&#8217;s strictly text mode, but it&#8217;s enough to run executables produced by <a href="https://virtuallyfun.com/?p=4769">GCC</a>.</p>
<div id="attachment_4793" style="width: 687px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2014/12/run68.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4793" class="size-full wp-image-4793" src="https://virtuallyfun.com/wp-content/uploads/2014/12/run68.png" alt="Hello!" width="677" height="342" /></a><p id="caption-attachment-4793" class="wp-caption-text">Hello!</p></div>
<p>The project is over on <a href="https://sourceforge.net/projects/run68/">sourceforge</a>, and unlike any other x68000 project this one is GPL&#8217;d.  The <a href="https://sourceforge.net/p/run68/code/HEAD/tarball?path=/trunk">source code</a> is remarkably tiny so I&#8217;d say for anyone looking for a way to sneak some C into something this may be an interesting &#8216;door&#8217;..</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2014/12/01/run68-human-68k-emulator/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cross compiling to the Sharp x68000</title>
		<link>https://virtuallyfun.com/2014/11/18/cross-compiling-to-the-sharp-x68000/</link>
					<comments>https://virtuallyfun.com/2014/11/18/cross-compiling-to-the-sharp-x68000/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 18 Nov 2014 09:01:59 +0000</pubDate>
				<category><![CDATA[68000]]></category>
		<category><![CDATA[cross compiler]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[x68000]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=4769</guid>

					<description><![CDATA[While looking for some stuff on the x68000, I came across this package Lydux, which features GCC setup as a cross compiler from either Windows or Linux to Human68k. So I downloaded the Windows version, set it up according to &#8230; <a href="https://virtuallyfun.com/2014/11/18/cross-compiling-to-the-sharp-x68000/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>While looking for some stuff on the x68000, I came across this package <a href="https://github.com/Lydux">Lydux</a>, which features GCC setup as a cross compiler from either Windows or Linux to <a href="http://en.wikipedia.org/wiki/Human68k">Human68k</a>.</p>
<p>So I downloaded the Windows version, set it up <a href="http://nfggames.com/forum2/index.php?topic=4850.0">according to this guide</a>, and set on trying to build a simple EXE. Â I did installÂ CodeBlocks, but I ran into a problem while trying to build a running executable. Â For some reason objcopy doesn&#8217;t work correctly unless it is in verbose mode. Â I found that by accident, but much to my surprise it does work!</p>
<div id="attachment_4770" style="width: 850px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2014/11/gcc-hello-world-on-x68000.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4770" class="size-full wp-image-4770" src="https://virtuallyfun.com/wp-content/uploads/2014/11/gcc-hello-world-on-x68000.png" alt="Hello World cross compiled from Windows to the x68000" width="840" height="657" /></a><p id="caption-attachment-4770" class="wp-caption-text">Hello World cross compiled from Windows to the x68000</p></div>
<p>In the script for CodeBlocks, changing</p>
<p style="padding-left: 30px;">oc_x = _T(&#8220;human68k-objcopy -O xfile $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).X&#8221;);</p>
<p>to</p>
<p style="padding-left: 30px;">oc_x = _T(&#8220;human68k-objcopy -v -O xfile $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).X&#8221;);</p>
<p>did the trick, and now it&#8217;ll generate working executables.</p>
<p>I&#8217;ve found the emulator XM6 TypeG version 3.13 L21 the easiest to deal with as it has English translated menu&#8217;s and lets you mount a folder on your PC as a virtual drive. Â This makes loading cross compiled stuff much easier.</p>
<p>Since finding this stuff is getting harder and harder, and that most of the xm6 forked emulators are closed source, I thought I&#8217;d at least upload what I&#8217;ve been able to find. Â It&#8217;s a shame the 68030 stuff is closed off, but there isn&#8217;t anything I can do about that. Â Apparently there was some feud between some dev groups. Â I&#8217;m not really sure as it seems.</p>
<p><a href="http://vpsland.superglobalmegacorp.com/old/install/x68000/x68000-gcc-cross.7z">All my work on this is here</a>.</p>
<div id="attachment_4771" style="width: 364px" class="wp-caption aligncenter"><a href="https://virtuallyfun.com/wp-content/uploads/2014/11/windrv-settings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4771" class="size-full wp-image-4771" src="https://virtuallyfun.com/wp-content/uploads/2014/11/windrv-settings.png" alt="WindrvXM settings" width="354" height="411" /></a><p id="caption-attachment-4771" class="wp-caption-text">WindrvXM settings</p></div>
<p>Be sure to set the shared directory under Tools -&gt; Options to be able to map a shared directory. Â In the disks sub directory there is aÂ HUMAN302 disk image which contains the needed device driver to map into the directory. Â You can run either the 68000 or 68030 model depending on what you like more. Â If you have no emulated SCSI or SASI disk, the shared directory will appear as your &#8216;c&#8217; drive. Â And as always the keyboard will be mapped to a Japanese keyboard, so that is why the : * = keys seem in the wrong place.</p>
<p>On the OS X front I went ahead and built a cross compiler. Â I ran into this fun error building GCC on OS X:</p>
<p style="padding-left: 30px;">Makefile:142: ../.././gcc/libgcc.mvars: No such file or directory</p>
<p>So yeah it turns out you really should configure/compile gcc in a separate directory from the source. Bad old habits die hard. Anyways <a href="http://vpsland.superglobalmegacorp.com/old/install/OS%20X%20x86/human68k-gcc-OSX-10.10.7z">my tool chain is here</a>. I&#8217;m running 10.10 so I&#8217;m not sure about older versions of OS X.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2014/11/18/cross-compiling-to-the-sharp-x68000/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
