<?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>Robert Hurst &#187; VIC20</title>
	<atom:link href="http://robert.hurst-ri.us/tag/vic20/feed/" rel="self" type="application/rss+xml" />
	<link>http://robert.hurst-ri.us</link>
	<description>The life &#38; times of an information systems engineer</description>
	<lastBuildDate>Mon, 16 Jan 2012 19:34:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CPU Reverse Engineering: 6502</title>
		<link>http://robert.hurst-ri.us/2011/01/15/cpu-reverse-engineering-6502/</link>
		<comments>http://robert.hurst-ri.us/2011/01/15/cpu-reverse-engineering-6502/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 10:03:24 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[C64]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=934</guid>
		<description><![CDATA[A video of a wonderful presentation and ongoing project, currently reverse engineering the 6502 CPU, but the process and tools are a springboard for other chips (video, sound, i/o) and pcbs:]]></description>
			<content:encoded><![CDATA[<p>A video of a wonderful presentation and ongoing project, currently reverse engineering the 6502 CPU, but the process and tools are a springboard for other chips (video, sound, i/o) and pcbs:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/fWqBmmPQP40" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/fWqBmmPQP40"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2011/01/15/cpu-reverse-engineering-6502/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CommodoreServer</title>
		<link>http://robert.hurst-ri.us/2010/10/02/commodoreserver/</link>
		<comments>http://robert.hurst-ri.us/2010/10/02/commodoreserver/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 15:57:31 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[C64]]></category>
		<category><![CDATA[VIC20]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=859</guid>
		<description><![CDATA[Talk about retro-cool technology. This web site features a new internet modem for all Commodore 8-bit computers, for easy &#8220;Load &#38; Go&#8221; access into their online software library. And I was able to contribute to that library my very own VIC 20 collection as a floppy disk. How neat is that? This demo is fascinating [...]]]></description>
			<content:encoded><![CDATA[<p>Talk about retro-cool technology.  This web site features a new internet modem for all Commodore 8-bit computers, for easy &#8220;Load &amp; Go&#8221; access into their online software library.  And I was able to contribute to that library my very own VIC 20 collection as a floppy disk.  How neat is that?</p>
<p>This demo is fascinating to watch a C64 using their online software library in action:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="576" height="480" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/jzxWLnHvp44" /><embed type="application/x-shockwave-flash" width="576" height="480" src="http://www.youtube.com/v/jzxWLnHvp44"></embed></object></p>
<p><a href="http://www.youtube.com/watch?v=jzxWLnHvp44">C64 on Internet using the Comet64 Modem</a></p>
<p>I also purchased one of these 1541 Ultimate 2 drives, although I might not even see it this calendar year as these units are severely back-ordered:</p>
<p><a href="http://www.youtube.com/watch?v=N_HEvR6AgY0">The 1541 Ultimate 2 cartridge for the Commodore 64</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/10/02/commodoreserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atarileaf&#8217;s Video Review</title>
		<link>http://robert.hurst-ri.us/2010/07/23/atarileafs-video-review/</link>
		<comments>http://robert.hurst-ri.us/2010/07/23/atarileafs-video-review/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 12:08:01 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Pastime]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=753</guid>
		<description><![CDATA[I ran across this avid YouTube poster and retro gamer fan from Canada who was showcasing his latest find in Omega Race on the VIC 20.  Great video review, so after a few emails exchanged, I shipped a couple of cassette tapes housing my homebrew video games in Berzerk MMX, Omega Fury, and Quikman+.  Watch [...]]]></description>
			<content:encoded><![CDATA[<p>I ran across this <a title="Atarileaf" href="http://www.youtube.com/user/atarileaf" target="_blank">avid YouTube poster</a> and retro gamer fan from Canada who was showcasing his latest find in <a href="http://www.youtube.com/user/atarileaf#p/u/15/SrjwTJ3O5KM" target="_blank">Omega Race</a> on the VIC 20.  Great video review, so after a few emails exchanged, I shipped a couple of cassette tapes housing my homebrew video games in Berzerk MMX, Omega Fury, and Quikman+.  <a href="http://www.youtube.com/v/h-1ivobMp7s">Watch</a> and listen to what he has to say:</p>
<a id="wpfp_43904bc0381e27d68b75bee8f8776d4d" style="width:600px; height:400px;" class="flowplayer_container player plain"><img src="http://robert.hurst-ri.us/images/fuzzy.gif" alt="" class="splash" /><img width="83" height="83" border="0" src="RELATIVE_PATH/images/play.png" alt="" class="splash_play_button" style="top: 155px; border:0;" /></a>
<p>Cool.</p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/07/23/atarileafs-video-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retro Gamer Review</title>
		<link>http://robert.hurst-ri.us/2010/07/21/retro-gamer-review/</link>
		<comments>http://robert.hurst-ri.us/2010/07/21/retro-gamer-review/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 22:42:23 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Pastime]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=748</guid>
		<description><![CDATA[Issue #77 arrived the other day with a nice review of my homebrew game, Berzerk MMX.  I do not think I will go to such extremes getting in scanned and printed as before with the Quikman 2008 review, but I will transcribe it here because of its brevity (not that I am complaining, it was [...]]]></description>
			<content:encoded><![CDATA[<p>Issue #77 arrived the other day with a nice review of my homebrew game, <a href="http://robert.hurst-ri.us/2010/03/05/berzerk-mmx/" target="_blank">Berzerk MMX</a>.  I do not think I will go to such extremes getting in scanned and printed as before with the Quikman 2008 <a title="issue #59" href="http://robert.hurst-ri.us/blog/wp-content/uploads/2009/02/homebrew-59.jpg" target="_blank" rel="lightbox[748]">review</a>, but I will transcribe it here because of its brevity (not that I am complaining, it was as just as exciting to see the screenshots of my work in print!):</p>
<blockquote><p>Despite having some fantastic clones of classic coin-operated games, the VIC 20 has a remarkably small list of straight arcade conversions to its name, so a version of something loud and shooty like <em>Berzerk</em> was almost guaranteed to be popular here at Retro Gamer.  And since the developer is Robert Hurst, the man behind the excellent unexpanded <em>Pac-Man</em> clone <em>Quikman 2008</em>, we were pretty eager to get our hands on <em>Berzerk MMX</em>.</p>
<p>The VIC graphics are, unsurprisingly, chunkier than the original version&#8217;s but serve their purpose well, in-game sound effects are simple but again appropriate, and the action rapidly becomes frantic as the poor player-controlled humanoid fights for his life.  And while <em>Berzerk MMX</em> runs on an 8K expanded VIC 20, for the users blessed with 16K expansion there&#8217;s a second version, which ships with most of the speech from the original in place and goes even further towards replicating the arcade experience.</p>
<p>87%</p></blockquote>
<p>I could not be more pleased with that &#8212; cool!</p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/07/21/retro-gamer-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New High Score!</title>
		<link>http://robert.hurst-ri.us/2010/07/01/new-high-score/</link>
		<comments>http://robert.hurst-ri.us/2010/07/01/new-high-score/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 01:30:15 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Pastime]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=736</guid>
		<description><![CDATA[Yes, it is a rare treat to surpass my typical game-playing abilities, and today I set a personal best score at my Quikman video game.  I think it helped playing it on a real VIC 20, too, although it really should not matter.  Perhaps there is old muscle memory kicking in from squeezing the bat-handled [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, it is a rare treat to <a title="Quik Death" href="http://robert.hurst-ri.us/2009/01/01/quik-death/" target="_blank">surpass</a> my typical game-playing abilities, and today I set a personal best score at my <a title="Quikman+8k" href="http://robert.hurst-ri.us/2009/09/22/quikman-8k/" target="_blank">Quikman</a> video game.  I think it helped playing it on a real VIC 20, too, although it really should not matter.  Perhaps there is old muscle memory kicking in from squeezing the bat-handled joystick.  Or, maybe it is the smoother animation that can only come from a 13&#8243; phosphor screen, flickering away at 60hz.  Regardless, I will be extremely challenged to make it back to the 3rd key level, as shown from this camera-phone picture:</p>
<p style="text-align: center;">
<div id="attachment_738" class="wp-caption aligncenter" style="width: 370px"><a href="http://robert.hurst-ri.us/blog/wp-content/uploads/2010/07/quikman-hiscore.jpg" rel="lightbox[736]"><img class="size-medium wp-image-738 " title="Quikman hi-score" src="http://robert.hurst-ri.us/blog/wp-content/uploads/2010/07/quikman-hiscore-360x480.jpg" alt="VIC 20 screenshot" width="360" height="480" /></a><p class="wp-caption-text">VIC 20 screenshot</p></div>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/07/01/new-high-score/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running VICE</title>
		<link>http://robert.hurst-ri.us/2010/03/13/running-vice/</link>
		<comments>http://robert.hurst-ri.us/2010/03/13/running-vice/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 19:37:51 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Pastime]]></category>
		<category><![CDATA[C64]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=425</guid>
		<description><![CDATA[VICE is a conglomerate of Commodore 8-bit emulators.  For the inexperienced user looking to do some retro-gaming from those wildly popular machines from the late &#8217;70s and throughout the &#8217;80s, it can be a daunting and frustrating task to operate those &#8220;friendly&#8221; computers.  Particularly because you had varying-sized game cartridges, floppy software, cassette software, and [...]]]></description>
			<content:encoded><![CDATA[<p>VICE is a conglomerate of Commodore 8-bit emulators.  For the inexperienced user looking to do some retro-gaming from those wildly popular machines from the late &#8217;70s and throughout the &#8217;80s, it can be a daunting and frustrating task to operate those &#8220;friendly&#8221; computers.  Particularly because you had varying-sized game cartridges, floppy software, cassette software, and a ranging mix of memory expansions that can cause the most grief in booting up an old game.</p>
<p>Fear not, it&#8217;s <a title="Listen to Boray's music" href="http://listen.to/boray" target="_blank">Boray</a> to the rescue!  He provides <a title="PRG Starter" href="http://user.tninet.se/~jad615g/prgstarter/" target="_blank">a nice link</a> to a Windows utility, <strong>PRG Starter</strong>, that will deter those PRG loading blues &#8212; particularly for PET, VIC 20, and C64 BASIC programs &#8212; although there is quite a bit of logic for the more esoteric program loads, too, and for the other VICE emulated machines.</p>
<p>After permission to examine his source code, I decided I could use a simply elegant utility such as this for my Fedora desktop &#8212; after all, like Windows, GNOME offers the same customized launching feature via an associated filetype extension.  You can find the <a title="run.zip" href="http://robert.hurst-ri.us/files/linux/run.zip" target="_blank">C source archive</a> to the simple launcher dubbed <strong>run</strong>.</p>
<p>After associating filetypes, such as .prg, p00, .a0, .crt, .d64, .g64, and .rom, to launch a customized command, <strong>run</strong>, you simply double-click the Commodore 8-bit binary file and it will run the correct VICE emulator with any associated command-line options, such as memory expansion, attach as a cartridge, or boot from a floppy or tape.</p>
<p>You can even do this from the command-line.  Here are some examples (with the verbose option on):</p>
<p>$ <strong>run -v quikman2k8.prg</strong><br />
**** Commodore VIC 20 ML program ****<br />
xvic -memory none &#8220;quikman2k8.prg&#8221;</p>
<p>$ <strong>run -v berzerk-mmx+.prg </strong><br />
**** Commodore VIC 20 ML program with 16kb memory expansion ****<br />
xvic -memory all &#8220;berzerk-mmx+.prg&#8221;</p>
<p>$ <strong>run -v Super\ Zaxxon.crt</strong><br />
**** Commodore 64 game cartridge ****<br />
x64 -cartcrt &#8220;Super Zaxxon.crt&#8221;</p>
<p>And of course my favorite:</p>
<p>$ <strong>run -v mega-cart.rom</strong><br />
**** Commodore VIC 20 with Mega-Cart ****<br />
xvic -cartmega &#8220;mega-cart.rom&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/03/13/running-vice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Berzerk MMX</title>
		<link>http://robert.hurst-ri.us/2010/03/05/berzerk-mmx/</link>
		<comments>http://robert.hurst-ri.us/2010/03/05/berzerk-mmx/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 12:32:56 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Pastime]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=418</guid>
		<description><![CDATA[Today, I release another arcade classic clone for the venerable Commodore VIC 20.  This time it is based on the 1980 Stern hit, Berzerk.  It did not take a span of 24-years to complete like Quikman possessed me, just a mere couple of months between commuter rail rides and some weekend tinkering.  Still, it came [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robert.hurst-ri.us/images/berzerk-mmx-large1.jpg" target="_blank" rel="lightbox[418]"><img title="Startup screenshot" src="/images/berzerk-mmx-small1.jpg" alt="Startup screenshot" width="200" height="135" align="right" /></a>Today, I release another <a title="berzerk-mmx.zip" href="http://robert.hurst-ri.us/files/vic20/berzerk-mmx/berzerk-mmx.zip">arcade classic clone</a> for the venerable Commodore VIC 20.  This time it is based on the 1980 Stern hit, <a title="Wikipedia" href="http://en.wikipedia.org/wiki/Berzerk" target="_blank">Berzerk</a>.  It did not take a span of 24-years to complete like <a title="1984 revisited" href="http://robert.hurst-ri.us/2008/10/27/quikman-1984-revisited/" target="_blank">Quikman</a> possessed me, just a mere couple of months between commuter rail rides and some weekend tinkering.  Still, it came out pretty good because of my improved software sprite stack and floor generator.</p>
<p>And I got all of it to fit with only the minimal 8kb memory expansion required for those software sprites &#8212; with BASIC reporting only 1-byte free after LOAD.  Funny how that always makes me feel good.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/LUol3yWLvRo&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="360" src="http://www.youtube.com/v/LUol3yWLvRo&amp;hl=en&amp;fs=1" allowfullscreen="true"></embed></object><br />
<a href="http://www.youtube.com/watch?v=LUol3yWLvRo">Berzerk MMX on VIC= 20</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/03/05/berzerk-mmx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An Old Trick for a New Game for an even Older Computer</title>
		<link>http://robert.hurst-ri.us/2010/02/17/an-old-trick-for-a-new-game-for-an-even-older-computer/</link>
		<comments>http://robert.hurst-ri.us/2010/02/17/an-old-trick-for-a-new-game-for-an-even-older-computer/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 15:05:55 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Pastime]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=411</guid>
		<description><![CDATA[During the Amiga heyday in the early 1990s, I wrote a standalone BBS program called &#8216;Hack &#38; Slash&#8217;.  It was a port from an Apple ][ BASIC program, but heavily customized and enhanced using C and &#8220;modern&#8221; telecommunications and protocols for color, graphics, and sound. I thought I was really clever at the time writing [...]]]></description>
			<content:encoded><![CDATA[<p>During the Amiga heyday in the early 1990s, I wrote a standalone BBS program called &#8216;Hack &amp; Slash&#8217;.  It was a port from an Apple ][ BASIC program, but heavily customized and enhanced using C and &#8220;modern&#8221; telecommunications and protocols for color, graphics, and sound.</p>
<p>I thought I was really clever at the time writing my random dungeon level generator &#8212; it was my first practical use outside of a classroom to implement a recursive function.  Because the dungeon &#8216;walls&#8217; were probability driven, a function was needed to validate that every &#8217;tile&#8217; in the arbitrarily-sized dungeon floor was accessible by the hero.  Without this kind of validation, the hero would eventually find himself &#8216;trapped&#8217; on a floor with no means to escape.</p>
<p>The recursive function was simply invoked as chkroom(0,0), whereas the 0,0 passed were parameters to the starting point in the dungeon map matrix.  Upon entering each tile, a flag is cleared for that element in the matrix.  Next, a condition is checked if the tile to its right is accessible.  If it is, call chkroom() with +1 added to X.  If not, do the same condition checks for down, left, and up directions calling chkroom() passing values Y+1, X-1, and Y-1 respectively.</p>
<p>And at the conclusion of all this recursion, do a loop through the dungeon matrix to check if ALL of the flags had been cleared.  If any persist, do the dungeon regeneration and this validation again until it has passed.  The higher the frequency of random walls generated increases the pattern complexity of the floor, which exponentially increases the probability that the floor will not pass with an &#8216;all clear&#8217;.</p>
<p>Today, I am working on a port of an old arcade favorite, <a title="Wikipedia" href="http://en.wikipedia.org/wiki/Berzerk" target="_blank">Berzerk</a>, for the Commodore VIC 20.  The playfield for the game is a fixed 3-row by 5-column matrix for each floor.  Given that the game needs to be written using 8-bit assembler, I quickly dismissed the idea that using my C algorithm to validate a floor could be feasible.  After all, VIC 20 is a relic machine running at 1mHz and limited memory of only a few thousand bytes available for the program, graphics, and sound all the while using a 256-byte system stack.  Ah, but the challenge by it all . . .</p>
<p>Generating the random walls for each floor is a simple matter, but validating that all its &#8216;rooms&#8217; are accessible was turning out to be very problematic.  Every time I thought I could solve this puzzle using bit operators (OR, AND, XOR) to assure that its rooms and corridors could not trap the hero, I would only later stumble upon an instance where even my most elaborate of schemes failed.  This was getting a bit frustrating, pun intended.</p>
<p>So I wandered back to my dungeon floor validation and decided it was so simple of an algorithm that it may be possible to translate it to assembler and still keep it within reason of the machine&#8217;s constraints.  After some writing and whittling, the resulting code turned out perfect!  It is called by simply zero-ing the starting cell (R0) and invoking CRAWL.  Here is its listing:</p>
<pre>CRAWL:
  LDX R0
  LDA MAZE,X
  CMP #$80
  BCC @fini        ; been here?
  AND #$7F         ; clear accessible bit
  STA MAZE,X

@right:
  LSR
  BCS @down        ; right wall?
  PHA              ;++ push walls
  LDA R0
  PHA              ;++ push cell
  INC R0
  JSR CRAWL        ; explore right cell
  PLA              ;-- pop cell
  STA R0
  PLA              ;-- pop walls

@down:
  LSR
  BCS @left        ; bottom wall?
  PHA              ;++ push walls
  LDA R0
  PHA              ;++ push cell
  CLC
  ADC #5
  STA R0
  JSR CRAWL        ; explore cell below
  PLA              ;-- pop cell
  STA R0
  PLA              ;-- pop walls

@left:
  LSR
  BCS @up
  PHA              ;++ push walls
  LDA R0
  PHA              ;++ push cell
  DEC R0
  JSR CRAWL        ; explore left cell
  PLA              ;-- pop cell
  STA R0
  PLA              ;-- pop walls

@up:
  LSR
  BCS @fini        ; top wall?
  PHA              ;++ push walls
  LDA R0
  PHA              ;++ push cell
  SEC
  SBC #5
  STA R0
  JSR CRAWL        ; explore cell above
  PLA              ;-- pop cell
  STA R0
  PLA              ;-- pop walls
@fini:
  RTS</pre>
<p>This old dog is always happy to re-implement an old trick!</p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/02/17/an-old-trick-for-a-new-game-for-an-even-older-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenCBM</title>
		<link>http://robert.hurst-ri.us/2010/01/03/opencbm/</link>
		<comments>http://robert.hurst-ri.us/2010/01/03/opencbm/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 18:24:43 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Pastime]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=385</guid>
		<description><![CDATA[With it freezing and snowing today, I decided to make use of the idle time by hooking up my pristine VIC-1541 floppy disk drive to my workstation and do some file archiving to real 5-1/4&#8243; media using OpenCBM under Linux. OpenCBM provides an API library and some useful command-line tools.  The following is an example [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robert.hurst-ri.us/blog/wp-content/uploads/2010/01/dsc00626.jpg" rel="lightbox[385]"><img class="size-thumbnail wp-image-386" title="VIC-1541" src="http://robert.hurst-ri.us/blog/wp-content/uploads/2010/01/dsc00626-112x150.jpg" alt="VIC-1541 on my PC workstation" width="112" height="150" align="right" /></a>With it freezing and snowing today, I decided to make use of the idle time by hooking up my pristine <a title="Wikipedia" href="http://en.wikipedia.org/wiki/Commodore_1541" target="_blank">VIC-1541</a> floppy disk drive to <a title="Eightball Deluxe" href="http://robert.hurst-ri.us/2008/02/07/new-workstation/" target="_blank">my workstation</a> and do some file archiving to real 5-1/4&#8243; media using <a title="SourceForge" href="http://sourceforge.net/projects/opencbm/" target="_blank">OpenCBM</a> under Linux.</p>
<p>OpenCBM provides an API library and some useful command-line tools.  The following is an example of how to format and copy Commodore files to the floppy drive:</p>
<pre>$ <strong>sudo modprobe cbm</strong>

$ <strong>dmesg | tail</strong>
cbm_init: using passive (XM1541) cable (auto), irq 7
cbm: resetting devices
cbm: waiting for free bus...

$ <strong>cbmctrl detect</strong>
 8: 1540 or 1541 

$ <strong>cbmctrl command 8 "N0:VIC20 3-JAN-2010,10"</strong>
$ <strong>cbmctrl status 8</strong>
00, ok,00,00
$ <strong>cbmctrl dir 8</strong>
0 ."vic20 3-jan-2010" 10 2a
664 blocks free.
00, ok,00,00

$ <strong>cbmwrite 8 quikman+8k.prg</strong>
[Info] writing quikman+8k.prg -&gt; QUIKMAN+8K.PRG,P,W
[Info] identified a 1540 or 1541 drive
............-
[Info] 00, OK,00,00
$ <strong>cbmwrite 8 omega-fury.prg </strong>
[Info] writing omega-fury.prg -&gt; OMEGA-FURY.PRG,P,W
[Info] identified a 1540 or 1541 drive
....................\
[Info] 00, OK,00,00

$ <strong>cbmctrl dir 8</strong>
0 ."vic20 3-jan-2010" i1 2a
47   "quikman+8k.prg"   prg
76   "omega-fury.prg"   prg
541 blocks free.
00, ok,00,00</pre>
<p>Of course, I can now hook-up this drive to a real VIC 20 computer and play what&#8217;s on the diskette(s).  But for giggles, I can even use the Commodore 8-bit emulator, <a title="VICE Team" href="http://www.viceteam.org" target="_blank">VICE</a>, to test drive my floppies, for example:</p>
<pre>$ <strong>xvic -memory 8k -device8 2 +truedrive \
-keybuf 'LOAD "QUIKMAN+8K.PRG",8\0D'</strong>
...
sucessfully loaded libopencbm.so
/dev/cbm opened.
...</pre>
<div id="attachment_387" class="wp-caption aligncenter" style="width: 394px"><a href="http://robert.hurst-ri.us/blog/wp-content/uploads/2010/01/dsc00627.jpg" rel="lightbox[385]"><img class="size-medium wp-image-387  " title="VICE using real VIC-1541 floppy disk drive" src="http://robert.hurst-ri.us/blog/wp-content/uploads/2010/01/dsc00627-640x480.jpg" alt="VICE" width="384" height="288" /></a><p class="wp-caption-text">VICE 2.2 on a 24&quot; HP display</p></div>
<p>Nice!</p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2010/01/03/opencbm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mega-Cart ROM dump</title>
		<link>http://robert.hurst-ri.us/2009/12/23/mega-cart-rom-dump/</link>
		<comments>http://robert.hurst-ri.us/2009/12/23/mega-cart-rom-dump/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 20:51:43 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[VIC20]]></category>

		<guid isPermaLink="false">http://robert.hurst-ri.us/?p=364</guid>
		<description><![CDATA[A clever programmer (Daniel) created this special tool for Mega-Cart that does appropriate bank-switching and dumps the memory blocks to an IEC-based device &#8212; such as a Commodore 1581 floppy at .5mb chunks or the full 2mb dump of the cartridge to a more modern uIEC/SD device.  There were some failure issues on every attempt, [...]]]></description>
			<content:encoded><![CDATA[<p>A clever programmer (Daniel) created this special tool for <a href="http://www.mega-cart.com" target="_blank">Mega-Cart</a> that does appropriate bank-switching and dumps the memory blocks to an IEC-based device &#8212; such as a Commodore 1581 floppy at .5mb chunks or the full 2mb dump of the cartridge to a more modern uIEC/SD device.  There were some failure issues on every attempt, but interestingly enough, I could get a complete dump if I slaved the uIEC/SD off of the Commodore drive instead of directly hooking it up to the VIC 20 &#8212; guessing that it made for more tolerance during its write-phase.  The programmer had no issues with his tool using a European PAL VIC, so perhaps the American NTSC version adds to the mystery.</p>
<p>Nevertheless, I am perfectly fine with a backup dump of my Mega-Cart, to be played using the new release of <a href="http://www.viceteam.org" target="_blank">VICE</a> 2.2 which supports the <a title="Mega-Cart ROM dump" href="http://robert.hurst-ri.us/files/vic20/mega-cart.rom">2mb image</a>, <a title="Mega-Cart NvRAM dump" href="http://robert.hurst-ri.us/files/vic20/mega-cart.nv">8kb NvRAM</a>, and all the appropriate bank-switching.  Cool!!</p>
<div id="attachment_365" class="wp-caption aligncenter" style="width: 438px"><a href="http://www.youtube.com/watch?v=HsveK_EH7eM" target="_blank"><img class="size-medium wp-image-365" title="VICE running Mega-Cart" src="http://robert.hurst-ri.us/blog/wp-content/uploads/2009/12/vice-mega-cart.png" alt="VICE Mega-Cart" width="428" height="289" /></a><p class="wp-caption-text">VICE Mega-Cart</p></div>
<p><strong>xvic -cartmega mega-cart.rom -mcnvramwriteback -mcnvramfile mega-cart.nv</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://robert.hurst-ri.us/2009/12/23/mega-cart-rom-dump/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

